summaryrefslogtreecommitdiff
path: root/usergrps/uktug/baskervi/6_2
diff options
context:
space:
mode:
Diffstat (limited to 'usergrps/uktug/baskervi/6_2')
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-1.tex6
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-10.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-11.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-12.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-13.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-14.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-15.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-16.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-17.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-18.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-19.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-2.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-20.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-21.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-22.tex2
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-23.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-24.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-25.tex25
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-26.tex11
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-27.tex8
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-28.tex11
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-29.tex13
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-3.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-30.tex18
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-31.tex26
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-32.tex1
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-33.tex2
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-34.tex13
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-35.tex14
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-36.tex17
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-37.tex16
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-38.tex16
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-39.tex27
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-4.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-40.tex19
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-41.tex21
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-42.tex13
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-43.tex15
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-44.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-5.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-6.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-7.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-8.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-0-9.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-1.tex6
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-10.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-11.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-12.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-13.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-14.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-15.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-16.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-17.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-18.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-19.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-2.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-20.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-21.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-22.tex2
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-23.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-24.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-25.tex25
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-26.tex11
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-27.tex8
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-28.tex11
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-29.tex13
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-3.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-30.tex18
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-31.tex26
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-4.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-5.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-6.tex4
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-7.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-8.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/0-2-9.tex3
-rw-r--r--usergrps/uktug/baskervi/6_2/00readme19
-rw-r--r--usergrps/uktug/baskervi/6_2/9May96.tex244
-rw-r--r--usergrps/uktug/baskervi/6_2/T1mbvx.fd69
-rw-r--r--usergrps/uktug/baskervi/6_2/at.sty203
-rw-r--r--usergrps/uktug/baskervi/6_2/bask62.cls779
-rw-r--r--usergrps/uktug/baskervi/6_2/bask6_2.tex63
-rw-r--r--usergrps/uktug/baskervi/6_2/baskerv.cls674
-rw-r--r--usergrps/uktug/baskervi/6_2/baskerv.diff30
-rw-r--r--usergrps/uktug/baskervi/6_2/bits.sty24
-rw-r--r--usergrps/uktug/baskervi/6_2/bv62.lst69
-rw-r--r--usergrps/uktug/baskervi/6_2/bv62.sty38
-rw-r--r--usergrps/uktug/baskervi/6_2/bv62.sty.R21
-rw-r--r--usergrps/uktug/baskervi/6_2/bv62agm.tex9
-rw-r--r--usergrps/uktug/baskervi/6_2/bv62cd.tex45
-rw-r--r--usergrps/uktug/baskervi/6_2/bv62ed.tex61
-rw-r--r--usergrps/uktug/baskervi/6_2/bv62htm.tex653
-rw-r--r--usergrps/uktug/baskervi/6_2/bv62tor.tex536
-rw-r--r--usergrps/uktug/baskervi/6_2/changes.tex147
-rw-r--r--usergrps/uktug/baskervi/6_2/ctan-dev.tex389
-rw-r--r--usergrps/uktug/baskervi/6_2/doafter.sty114
-rw-r--r--usergrps/uktug/baskervi/6_2/doafter.tex113
-rw-r--r--usergrps/uktug/baskervi/6_2/extract.tex162
-rw-r--r--usergrps/uktug/baskervi/6_2/fancyvrb.rc265
-rw-r--r--usergrps/uktug/baskervi/6_2/faq.sty249
-rw-r--r--usergrps/uktug/baskervi/6_2/faqery/colmy96.tex111
-rw-r--r--usergrps/uktug/baskervi/6_2/faqery/dirctan.tex1141
-rw-r--r--usergrps/uktug/baskervi/6_2/faqery/filectan.tex49
-rw-r--r--usergrps/uktug/baskervi/6_2/footnote.sty194
-rw-r--r--usergrps/uktug/baskervi/6_2/glean.tex217
-rw-r--r--usergrps/uktug/baskervi/6_2/glean63.tex0
-rw-r--r--usergrps/uktug/baskervi/6_2/gpl.tex437
-rw-r--r--usergrps/uktug/baskervi/6_2/grovel.tex24
-rw-r--r--usergrps/uktug/baskervi/6_2/ht.tex598
-rw-r--r--usergrps/uktug/baskervi/6_2/htbib.tex31
-rw-r--r--usergrps/uktug/baskervi/6_2/ltour2.tex557
-rw-r--r--usergrps/uktug/baskervi/6_2/ltour3.tex0
-rw-r--r--usergrps/uktug/baskervi/6_2/mathenv.sty449
-rw-r--r--usergrps/uktug/baskervi/6_2/mflogo.sty44
-rw-r--r--usergrps/uktug/baskervi/6_2/nul.sty1
-rw-r--r--usergrps/uktug/baskervi/6_2/pstrix2.tex1091
-rw-r--r--usergrps/uktug/baskervi/6_2/recipe.tex736
-rw-r--r--usergrps/uktug/baskervi/6_2/reese.tex634
-rw-r--r--usergrps/uktug/baskervi/6_2/references.bbl24
-rw-r--r--usergrps/uktug/baskervi/6_2/references.bib44
-rw-r--r--usergrps/uktug/baskervi/6_2/relsize.sty145
-rw-r--r--usergrps/uktug/baskervi/6_2/rfbib.blg4
-rw-r--r--usergrps/uktug/baskervi/6_2/rfbib.tex6
-rw-r--r--usergrps/uktug/baskervi/6_2/sp.tex23
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr.sty153
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/boxfill.tex232
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/calc.sty150
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/changes.tex147
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/charpath.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/charpath.tex79
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/colortab.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/colortab.tex220
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/defaults.pst103
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/fancybox.sty949
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/fancyvrb.rc265
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/fancyvrb.sty1672
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/gradient.pro80
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/gradient.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/gradient.tex74
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/multido.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/multido.tex279
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/palette.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/palette.tex253
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pie-data.sh190
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/piechart.sh364
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-3d.tex691
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-code.tex135
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-coil.pro28
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-coil.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-coil.tex128
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-dots.pro107
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-node.pro203
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-node.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-node.tex1079
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-plot.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst-plot.tex643
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst2eps.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pst2eps.tex244
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pstree.rea37
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pstree.tex2280
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pstricks.con361
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pstricks.pro204
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pstricks.sty17
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pstricks.tex2554
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/pstrix2.tex1085
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/spqr.sty150
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/textpath.pro99
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/textpath.sty4
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr/textpath.tex97
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr2.sty14
-rw-r--r--usergrps/uktug/baskervi/6_2/spqr3.sty150
-rw-r--r--usergrps/uktug/baskervi/6_2/sverb.sty356
-rw-r--r--usergrps/uktug/baskervi/6_2/syntart.tex412
-rw-r--r--usergrps/uktug/baskervi/6_2/syntax.sty827
-rw-r--r--usergrps/uktug/baskervi/6_2/tblart.tex417
-rw-r--r--usergrps/uktug/baskervi/6_2/texnames.sty328
-rw-r--r--usergrps/uktug/baskervi/6_2/texpkgs-bit.eps746
-rw-r--r--usergrps/uktug/baskervi/6_2/top.tex13
-rw-r--r--usergrps/uktug/baskervi/6_2/tourwrap.tex106
-rw-r--r--usergrps/uktug/baskervi/6_2/truth.tex35
-rw-r--r--usergrps/uktug/baskervi/6_2/tub-bits.sty23
-rw-r--r--usergrps/uktug/baskervi/6_2/tugboat.def4
181 files changed, 30917 insertions, 0 deletions
diff --git a/usergrps/uktug/baskervi/6_2/0-0-1.tex b/usergrps/uktug/baskervi/6_2/0-0-1.tex
new file mode 100644
index 0000000000..69ea2abf5c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-1.tex
@@ -0,0 +1,6 @@
+\rput(1,1){\rnode{A}{Dog}}
+\rput(2,4){\rnode{B}{Cat}}
+\rput(4,2){\rnode{C}{Mouse}}
+\ncline{A}{B}
+\nccurve[linestyle=dotted]{A}{B}
+\ncarc[linestyle=dashed]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-10.tex b/usergrps/uktug/baskervi/6_2/0-0-10.tex
new file mode 100644
index 0000000000..fe7c16a8fd
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-10.tex
@@ -0,0 +1,3 @@
+\dotnode(.5,.5){A}
+\dotnode(2.5,.5){B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-11.tex b/usergrps/uktug/baskervi/6_2/0-0-11.tex
new file mode 100644
index 0000000000..d68d6c7749
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-11.tex
@@ -0,0 +1,3 @@
+\fnode(.5,.5){A}
+\fnode(2.5,.5){B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-12.tex b/usergrps/uktug/baskervi/6_2/0-0-12.tex
new file mode 100644
index 0000000000..fa0af75b75
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-12.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\dianode{A}{Cat}}
+\rput(2.5,.5){\dianode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-13.tex b/usergrps/uktug/baskervi/6_2/0-0-13.tex
new file mode 100644
index 0000000000..0bfef5b262
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-13.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-14.tex b/usergrps/uktug/baskervi/6_2/0-0-14.tex
new file mode 100644
index 0000000000..9f18369ae8
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-14.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\nccurve[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-15.tex b/usergrps/uktug/baskervi/6_2/0-0-15.tex
new file mode 100644
index 0000000000..18d65ed438
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-15.tex
@@ -0,0 +1,4 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncarc{->}{A}{B}
+\ncarc{->}{B}{A}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-16.tex b/usergrps/uktug/baskervi/6_2/0-0-16.tex
new file mode 100644
index 0000000000..ec58acbc1d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-16.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncbar{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-17.tex b/usergrps/uktug/baskervi/6_2/0-0-17.tex
new file mode 100644
index 0000000000..b13bab2e96
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-17.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiag[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-18.tex b/usergrps/uktug/baskervi/6_2/0-0-18.tex
new file mode 100644
index 0000000000..a9c99c5d8c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-18.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiagg[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-19.tex b/usergrps/uktug/baskervi/6_2/0-0-19.tex
new file mode 100644
index 0000000000..20232d6c42
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-19.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangle[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-2.tex b/usergrps/uktug/baskervi/6_2/0-0-2.tex
new file mode 100644
index 0000000000..aef223f1c3
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-2.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{Cat}}
+\rput(2.5,.5){\rnode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-20.tex b/usergrps/uktug/baskervi/6_2/0-0-20.tex
new file mode 100644
index 0000000000..326db204d8
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-20.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangles[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-21.tex b/usergrps/uktug/baskervi/6_2/0-0-21.tex
new file mode 100644
index 0000000000..6a5f4962ec
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-21.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncloop[loopsize=.25,angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-22.tex b/usergrps/uktug/baskervi/6_2/0-0-22.tex
new file mode 100644
index 0000000000..a9737aab17
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-22.tex
@@ -0,0 +1,2 @@
+\rput(1,.5){\rnode{A}{\psframebox{Cat}}}
+\nccircle{->}{A}{.5}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-23.tex b/usergrps/uktug/baskervi/6_2/0-0-23.tex
new file mode 100644
index 0000000000..a0ceea5000
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-23.tex
@@ -0,0 +1,4 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nccoil{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-24.tex b/usergrps/uktug/baskervi/6_2/0-0-24.tex
new file mode 100644
index 0000000000..99cf5d5e3e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-24.tex
@@ -0,0 +1,4 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nczigzag{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-25.tex b/usergrps/uktug/baskervi/6_2/0-0-25.tex
new file mode 100644
index 0000000000..56e2fa0d65
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-25.tex
@@ -0,0 +1,25 @@
+\newcount\CtA
+\newcount\CtB
+\newcommand{\Wheel}[3]{{%
+\pspicture(-1,-1)(1,1)
+\SpecialCoor
+\degrees[#1]
+\multido{\ia=1+1}{#1}{%
+ \CtA=\ia
+ \advance\CtA by 1
+ \CtB=#1
+ \advance\CtB by -\ia
+ \multido{\ib=\CtA+1}
+ {\CtB}{#3(1;\ia)(1;\ib)}}
+\multido{\i=1+1}{#1}{%
+ \rput(1;\i){%
+ \pscirclebox[fillstyle=solid,
+ fillcolor=white]%
+ {\footnotesize\i}}}
+\endpspicture}}
+\makebox[\columnwidth][s]{%
+\psset{unit=2cm}
+\Wheel{3}{1.8}{\psline}
+\Wheel{5}{1.8}{\psline}
+\psset{arcangle=10}
+\Wheel{12}{3}{\pcarc[linecolor=blue]}}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-26.tex b/usergrps/uktug/baskervi/6_2/0-0-26.tex
new file mode 100644
index 0000000000..02e23282b2
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-26.tex
@@ -0,0 +1,11 @@
+\begin{psmatrix}[rowsep=1.5cm]
+&City&\\
+{\tiny Shack} & House & {\Large Hotel}
+\psset{arrows=<<-}
+\ncline{1,2}{2,1}<{a}
+\ncline{1,2}{2,2}>{b}
+\ncline{1,2}{2,3}>{b}
+\psset{arrows=-,linestyle=dotted}
+\ncline{2,1}{2,2}
+\ncline{2,2}{2,3}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-27.tex b/usergrps/uktug/baskervi/6_2/0-0-27.tex
new file mode 100644
index 0000000000..8b6a657aa8
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-27.tex
@@ -0,0 +1,8 @@
+\begin{psmatrix}
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\ncline{->}{1,1}{1,2}
+\ncline{->}{1,2}{2,2}
+\ncline{->}{2,2}{2,1}
+\ncline{->}{2,1}{1,1}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-28.tex b/usergrps/uktug/baskervi/6_2/0-0-28.tex
new file mode 100644
index 0000000000..f9b7768124
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-28.tex
@@ -0,0 +1,11 @@
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle,shortput=nab}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\psset{linestyle=dotted}
+\ncline{1,1}{1,2}^{\emph{firstly}}
+\ncline{1,2}{2,2}>{\emph{next}}
+\ncline{2,2}{2,1}_{\emph{then}}
+\ncline{2,1}{1,1}<{\emph{lastly}}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-29.tex b/usergrps/uktug/baskervi/6_2/0-0-29.tex
new file mode 100644
index 0000000000..1726f6fa8e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-29.tex
@@ -0,0 +1,13 @@
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\psset{linestyle=dotted}
+\ncline{1,1}{1,2}\naput{\emph{firstly}}
+\ncline{1,2}{2,2}\naput{\emph{next}}
+\ncline{2,2}{2,1}\naput{\emph{then}}
+\ncline{2,1}{1,1}\naput{\emph{lastly}}
+\nccurve[ncurv=2,linestyle=solid,angleA=90]
+ {1,1}{2,2}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-3.tex b/usergrps/uktug/baskervi/6_2/0-0-3.tex
new file mode 100644
index 0000000000..f0bb8be4cf
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-3.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\Rnode{A}{Cat}}
+\rput(2.5,.5){\Rnode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-30.tex b/usergrps/uktug/baskervi/6_2/0-0-30.tex
new file mode 100644
index 0000000000..5d8464925a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-30.tex
@@ -0,0 +1,18 @@
+\psset{linearc=.2}
+\begin{psmatrix}[rowsep=3pt,colsep=-10pt]
+[name=A]\psframebox{requirements}\\
+&[name=B]\psframebox{design}\\
+&&[name=C]\psframebox{coding}\\
+&&&[name=D]\psframebox{testing}\\
+&&&&[name=E]\psframebox{operations}
+\psset{linearc=0,arrows=->,armA=0pt,angleB=90}
+\ncangle{A}{B}
+\ncangle{B}{C}
+\ncangle{C}{D}
+\ncangle{D}{E}
+\psset{angleB=-90,angleA=180}
+\ncangle{B}{A}
+\ncangle{C}{B}
+\ncangle{D}{C}
+\ncangle{E}{D}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-31.tex b/usergrps/uktug/baskervi/6_2/0-0-31.tex
new file mode 100644
index 0000000000..2c2925de9b
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-31.tex
@@ -0,0 +1,26 @@
+\psset{fillcolor=white,fillstyle=solid}
+\def\Show#1{\psshadowbox{#1}}
+\psset{arrows=->}
+\begin{psmatrix}
+ [mnode=r,ref=t]
+ \psframebox[linestyle=none,framesep=.75]{%
+ \psset{ref=c}
+ \begin{psmatrix}
+ [name=A]\Show{Stakeholder}
+ \end{psmatrix}
+ } &
+ [mnode=r,ref=t]
+ \psframebox[fillstyle=solid,framesep=.75,fillcolor=gray]{%
+ \psset{ref=c}
+ \rule{1cm}{0pt}
+ \begin{psmatrix}
+ [name=B]\Show{Goal} &\Show{Criteria}\\
+ \Show{Sub-goal} & \Show{Justification}
+ \ncline{1,1}{1,2}
+ \ncline{1,1}{2,2}
+ \ncline{1,1}{2,1}\tlput{Strategy}
+ \ncline{2,1}{2,2}
+ \end{psmatrix}
+ }
+\ncline[angleB=-180]{A}{B}\naput[npos=.7]{Model}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-32.tex b/usergrps/uktug/baskervi/6_2/0-0-32.tex
new file mode 100644
index 0000000000..7983bcee12
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-32.tex
@@ -0,0 +1 @@
+\pstree{\TC}{\TC\TC}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-33.tex b/usergrps/uktug/baskervi/6_2/0-0-33.tex
new file mode 100644
index 0000000000..600546fbcc
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-33.tex
@@ -0,0 +1,2 @@
+\pstree{\TC}{\pstree{\TC}{\TC \TC}
+ \pstree{\TC}{\TC \TC}}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-34.tex b/usergrps/uktug/baskervi/6_2/0-0-34.tex
new file mode 100644
index 0000000000..a3e4d846de
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-34.tex
@@ -0,0 +1,13 @@
+\pstree[nodesep=2pt,
+ levelsep=20pt]{\TR{grandfather}}
+{
+ \pstree{\TR{uncle}}{\TR{cousin}}
+ \pstree{\TR{father}}
+ {
+ \pstree{\TR{brother}}{\TR{nephew}}
+ \pstree{\TR{Me}}
+ {
+ \pstree{\TR{son}}{\TR{grandson}}
+ }
+ }
+}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-35.tex b/usergrps/uktug/baskervi/6_2/0-0-35.tex
new file mode 100644
index 0000000000..a1c5da4b2d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-35.tex
@@ -0,0 +1,14 @@
+\pstree{\Tdot}
+{
+\Tdot
+\pstree{\Tdot}
+ {
+ \pstree{\Tdot}
+ {
+ \Tdot
+ \Tdot
+ \Tdot
+ }
+ \Tdot
+ }
+}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-36.tex b/usergrps/uktug/baskervi/6_2/0-0-36.tex
new file mode 100644
index 0000000000..65abe49a86
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-36.tex
@@ -0,0 +1,17 @@
+\psset{labelsep=2pt,tnpos=a,radius=2pt}
+\pstree[treemode=R]{\TC*~{25}}
+{
+\TC*~{5}~[tnpos=r]{$L_a$}
+\taput{$a$}
+\pstree{\TC*~{20}\tbput{$b$}}
+ {
+ \pstree{\TC*~{15}\taput{$a$}}
+ {
+ \TC*~{7}~[tnpos=r]{$L_{baa}$}\taput{$a$}
+ \TC*~{5}~[tnpos=r]{$L_{bab}$}\taput{$b$}
+ \TC*~{3}~[tnpos=r]{$L_{bac}$}\tbput{$c$}
+ }
+ \TC*~{5}~[tnpos=r]{$L_{bb}$}
+ \tbput{$b$}
+ }
+}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-37.tex b/usergrps/uktug/baskervi/6_2/0-0-37.tex
new file mode 100644
index 0000000000..1de4116961
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-37.tex
@@ -0,0 +1,16 @@
+\footnotesize
+\def\psedge{\nccurve}
+\newcommand{\Female}[2][]{\TR[#1]{\emph{#2}}}
+\newcommand{\Male}[2][]{\TR[#1]{#2}}
+\psset{nodesep=2pt,angleA=90,angleB=-90,unit=.6cm}
+\pstree[treemode=U]{\Female{{\bfseries Matilde}}}{
+ \pstree{\Male{Sebastian}}{
+ \pstree{\Male[name=P]{Philip}}{\Male{Frederick}\Female{Ethel}}
+ \pstree{\Female[name=W]{Mary}}{\Male{Lionel}\Female{Agnes}}}
+ \pstree{\Female{Leonor}}{
+ \pstree{\Male[name=R]{Ra\'ul}}{\Male{Joaquim}\Female{J\'ulia}}
+ \pstree{\Female[name=A]{Am\'elia}}{\Male{Melo}\Female{Augusta}}}
+}
+\psset{doubleline=true,linestyle=dotted}
+\ncline{P}{W}\nbput{1940}
+\ncline{R}{A}\nbput{1950}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-38.tex b/usergrps/uktug/baskervi/6_2/0-0-38.tex
new file mode 100644
index 0000000000..9e9a705734
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-38.tex
@@ -0,0 +1,16 @@
+\psset{angleB=-90,arrows=->,nrot=:U}
+\def\molesworth#1{%
+ \pstree[#1]{\Tdia{ }}
+ {
+ \Tp[arrows=->,edge={\ncbar[angleA=180]}]
+ \nbput{Gabbitas}
+ {\psset{linestyle=dashed,arrows=-} \Tp }
+ \Tp[arrows=->,edge={\ncbar}]
+ \naput{Thring}
+ }
+}
+\psset{showbbox=true}
+\begin{tabular}{l}
+\molesworth{}\\[10pt]
+\molesworth{xbbl=1cm,xbbr=1cm}
+\end{tabular}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-39.tex b/usergrps/uktug/baskervi/6_2/0-0-39.tex
new file mode 100644
index 0000000000..7a6bec4ef6
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-39.tex
@@ -0,0 +1,27 @@
+\def\Item#1{\Tr[ref=l]{%
+ \psframebox[linestyle=none]{#1}}}
+\def\psedge{\ncangle}
+\psset{xbbd=1.5cm,treemode=R,
+ angleB=-180,angleA=0,levelsep=72pt}
+\pstree{\Item{langs}}{%
+ \Item{german}
+ \pstree{\Item{greek}}{%
+ \Item{hamilton-kelly}
+ \pstree{\Item{levy}}{%
+ \Item{doc}
+ \Item{src}
+ }
+ }
+ \Item{italian}
+ \pstree{\Item{portuguese}}{
+ \Item{hyphenation}
+ }
+ \pstree{\Item{turkish}}{%
+ \Item{doc}
+ \Item{hyphen}
+ \Item{inputs}
+ \Item{mf}
+ \Item{misc}
+ }
+\Item{xettex}
+}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-4.tex b/usergrps/uktug/baskervi/6_2/0-0-4.tex
new file mode 100644
index 0000000000..1ce48484b2
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-4.tex
@@ -0,0 +1,3 @@
+\pnode(.5,.5){A}
+\pnode(2.5,.5){B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-40.tex b/usergrps/uktug/baskervi/6_2/0-0-40.tex
new file mode 100644
index 0000000000..9d8c207e23
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-40.tex
@@ -0,0 +1,19 @@
+\def\XX#1{%
+ \Tr{\psframebox{\rule{0pt}{9pt}#1}}%
+}
+\def\psedge{\ncangle}
+\psset{angleB=90,angleA=-90,
+ levelsep=36pt,armB=14pt}
+\pstree{\XX{grandmother}}
+{%
+\pstree{\XX{aunt}}{\XX{cousin}}
+\pstree{\XX{mother}}
+ {
+ \pstree{\XX{sister}}{\XX{niece}}
+ \pstree{\XX{Me}}
+ {
+ \pstree{\XX{daughter}}
+ {\XX{granddaughter}}
+ }
+ }
+}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-41.tex b/usergrps/uktug/baskervi/6_2/0-0-41.tex
new file mode 100644
index 0000000000..c8a0a43c6b
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-41.tex
@@ -0,0 +1,21 @@
+\footnotesize
+\psset{nodesep=2pt}
+\def\XX#1#2{%
+ \TR{\ensuremath{#1_{\mbox{#2}}}}%
+}
+\pstree[xbbr=1.5cm]{\XX{R}{AMSU}}
+ {
+ \XX{S}{RawData}
+ \pstree{\XX{S}{combine}
+ \trput{\ensuremath{\oplus}}
+ \tlput{\ensuremath{\oplus}}}
+ {
+ \psset{linestyle=dashed}
+ \XX{R}{Modes}
+ \XX{R}{Normal}
+ \XX{R}{Vertical}
+ \XX{R}{Latched}
+ \XX{R}{Tripped}
+ }
+ \XX{S}{GenerateData}
+ }
diff --git a/usergrps/uktug/baskervi/6_2/0-0-42.tex b/usergrps/uktug/baskervi/6_2/0-0-42.tex
new file mode 100644
index 0000000000..000576b04a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-42.tex
@@ -0,0 +1,13 @@
+\psset{framearc=.2,levelsep=4cm,
+ armB=1cm,angleB=-180}
+\def\psedge{\ncangle}
+\def\TreeBox#1{\Tr{\psframebox{#1}}}
+\pstree[treemode=R]{\TreeBox{Monitor}}
+{
+ \psset{offsetA=4pt}
+ \TreeBox{Attitude Generator}
+ \naput[npos=2.5]{{\small init}}
+ \nbput[npos=2.5]{{\small stop}}
+ \psset{offsetA=-4pt}
+ \TreeBox{Normal Generator}
+}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-43.tex b/usergrps/uktug/baskervi/6_2/0-0-43.tex
new file mode 100644
index 0000000000..8f6ffedea4
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-43.tex
@@ -0,0 +1,15 @@
+\psset{arrows=->,framearc=.2}
+\def\Treebox#1{%
+ \Tr{\psframebox{#1}}
+}
+\pstree[treemode=R]
+{\Treebox{A$\rightarrow$B}}{
+\pstree{
+ \Treebox{B$\rightarrow$C}
+ }{
+ \Treebox{A$\rightarrow$D}
+\pstree[treemode=L]
+ {\Treebox{B$\rightarrow$E}}
+ {\Tn\TC[arrows=<-]}
+ }
+}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-44.tex b/usergrps/uktug/baskervi/6_2/0-0-44.tex
new file mode 100644
index 0000000000..5b03d34b99
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-44.tex
@@ -0,0 +1,4 @@
+\pstree{\Tp}{
+ \Tcircle{A}
+ \Tcircle{B}
+}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-5.tex b/usergrps/uktug/baskervi/6_2/0-0-5.tex
new file mode 100644
index 0000000000..74e328ef23
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-5.tex
@@ -0,0 +1,3 @@
+\cnode(.5,.5){.2}{A}
+\cnode(2.5,.5){.2}{B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-6.tex b/usergrps/uktug/baskervi/6_2/0-0-6.tex
new file mode 100644
index 0000000000..289fa0bb3a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-6.tex
@@ -0,0 +1,4 @@
+\psset{radius=.3}
+\Cnode(.5,.5){A}
+\Cnode(2.5,.5){B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-7.tex b/usergrps/uktug/baskervi/6_2/0-0-7.tex
new file mode 100644
index 0000000000..8f63d5c30e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-7.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\circlenode{A}{Cat}}
+\rput(2.5,.5){\circlenode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-8.tex b/usergrps/uktug/baskervi/6_2/0-0-8.tex
new file mode 100644
index 0000000000..d80235fca0
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-8.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\ovalnode{A}{Cat}}
+\rput(2.5,.5){\ovalnode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-0-9.tex b/usergrps/uktug/baskervi/6_2/0-0-9.tex
new file mode 100644
index 0000000000..aa5d57b8dc
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-0-9.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\trinode{A}{Cat}}
+\rput(2.5,.5){\trinode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-1.tex b/usergrps/uktug/baskervi/6_2/0-2-1.tex
new file mode 100644
index 0000000000..69ea2abf5c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-1.tex
@@ -0,0 +1,6 @@
+\rput(1,1){\rnode{A}{Dog}}
+\rput(2,4){\rnode{B}{Cat}}
+\rput(4,2){\rnode{C}{Mouse}}
+\ncline{A}{B}
+\nccurve[linestyle=dotted]{A}{B}
+\ncarc[linestyle=dashed]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-10.tex b/usergrps/uktug/baskervi/6_2/0-2-10.tex
new file mode 100644
index 0000000000..fe7c16a8fd
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-10.tex
@@ -0,0 +1,3 @@
+\dotnode(.5,.5){A}
+\dotnode(2.5,.5){B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-11.tex b/usergrps/uktug/baskervi/6_2/0-2-11.tex
new file mode 100644
index 0000000000..d68d6c7749
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-11.tex
@@ -0,0 +1,3 @@
+\fnode(.5,.5){A}
+\fnode(2.5,.5){B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-12.tex b/usergrps/uktug/baskervi/6_2/0-2-12.tex
new file mode 100644
index 0000000000..fa0af75b75
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-12.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\dianode{A}{Cat}}
+\rput(2.5,.5){\dianode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-13.tex b/usergrps/uktug/baskervi/6_2/0-2-13.tex
new file mode 100644
index 0000000000..0bfef5b262
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-13.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-14.tex b/usergrps/uktug/baskervi/6_2/0-2-14.tex
new file mode 100644
index 0000000000..9f18369ae8
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-14.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\nccurve[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-15.tex b/usergrps/uktug/baskervi/6_2/0-2-15.tex
new file mode 100644
index 0000000000..18d65ed438
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-15.tex
@@ -0,0 +1,4 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncarc{->}{A}{B}
+\ncarc{->}{B}{A}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-16.tex b/usergrps/uktug/baskervi/6_2/0-2-16.tex
new file mode 100644
index 0000000000..ec58acbc1d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-16.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncbar{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-17.tex b/usergrps/uktug/baskervi/6_2/0-2-17.tex
new file mode 100644
index 0000000000..b13bab2e96
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-17.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiag[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-18.tex b/usergrps/uktug/baskervi/6_2/0-2-18.tex
new file mode 100644
index 0000000000..a9c99c5d8c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-18.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiagg[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-19.tex b/usergrps/uktug/baskervi/6_2/0-2-19.tex
new file mode 100644
index 0000000000..20232d6c42
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-19.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangle[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-2.tex b/usergrps/uktug/baskervi/6_2/0-2-2.tex
new file mode 100644
index 0000000000..aef223f1c3
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-2.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{Cat}}
+\rput(2.5,.5){\rnode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-20.tex b/usergrps/uktug/baskervi/6_2/0-2-20.tex
new file mode 100644
index 0000000000..326db204d8
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-20.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangles[angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-21.tex b/usergrps/uktug/baskervi/6_2/0-2-21.tex
new file mode 100644
index 0000000000..6a5f4962ec
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-21.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncloop[loopsize=.25,angleB=180]{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-22.tex b/usergrps/uktug/baskervi/6_2/0-2-22.tex
new file mode 100644
index 0000000000..a9737aab17
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-22.tex
@@ -0,0 +1,2 @@
+\rput(1,.5){\rnode{A}{\psframebox{Cat}}}
+\nccircle{->}{A}{.5}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-23.tex b/usergrps/uktug/baskervi/6_2/0-2-23.tex
new file mode 100644
index 0000000000..a0ceea5000
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-23.tex
@@ -0,0 +1,4 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nccoil{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-24.tex b/usergrps/uktug/baskervi/6_2/0-2-24.tex
new file mode 100644
index 0000000000..99cf5d5e3e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-24.tex
@@ -0,0 +1,4 @@
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nczigzag{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-25.tex b/usergrps/uktug/baskervi/6_2/0-2-25.tex
new file mode 100644
index 0000000000..56e2fa0d65
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-25.tex
@@ -0,0 +1,25 @@
+\newcount\CtA
+\newcount\CtB
+\newcommand{\Wheel}[3]{{%
+\pspicture(-1,-1)(1,1)
+\SpecialCoor
+\degrees[#1]
+\multido{\ia=1+1}{#1}{%
+ \CtA=\ia
+ \advance\CtA by 1
+ \CtB=#1
+ \advance\CtB by -\ia
+ \multido{\ib=\CtA+1}
+ {\CtB}{#3(1;\ia)(1;\ib)}}
+\multido{\i=1+1}{#1}{%
+ \rput(1;\i){%
+ \pscirclebox[fillstyle=solid,
+ fillcolor=white]%
+ {\footnotesize\i}}}
+\endpspicture}}
+\makebox[\columnwidth][s]{%
+\psset{unit=2cm}
+\Wheel{3}{1.8}{\psline}
+\Wheel{5}{1.8}{\psline}
+\psset{arcangle=10}
+\Wheel{12}{3}{\pcarc[linecolor=blue]}}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-26.tex b/usergrps/uktug/baskervi/6_2/0-2-26.tex
new file mode 100644
index 0000000000..02e23282b2
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-26.tex
@@ -0,0 +1,11 @@
+\begin{psmatrix}[rowsep=1.5cm]
+&City&\\
+{\tiny Shack} & House & {\Large Hotel}
+\psset{arrows=<<-}
+\ncline{1,2}{2,1}<{a}
+\ncline{1,2}{2,2}>{b}
+\ncline{1,2}{2,3}>{b}
+\psset{arrows=-,linestyle=dotted}
+\ncline{2,1}{2,2}
+\ncline{2,2}{2,3}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-27.tex b/usergrps/uktug/baskervi/6_2/0-2-27.tex
new file mode 100644
index 0000000000..8b6a657aa8
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-27.tex
@@ -0,0 +1,8 @@
+\begin{psmatrix}
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\ncline{->}{1,1}{1,2}
+\ncline{->}{1,2}{2,2}
+\ncline{->}{2,2}{2,1}
+\ncline{->}{2,1}{1,1}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-28.tex b/usergrps/uktug/baskervi/6_2/0-2-28.tex
new file mode 100644
index 0000000000..f9b7768124
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-28.tex
@@ -0,0 +1,11 @@
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle,shortput=nab}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\psset{linestyle=dotted}
+\ncline{1,1}{1,2}^{\emph{firstly}}
+\ncline{1,2}{2,2}>{\emph{next}}
+\ncline{2,2}{2,1}_{\emph{then}}
+\ncline{2,1}{1,1}<{\emph{lastly}}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-29.tex b/usergrps/uktug/baskervi/6_2/0-2-29.tex
new file mode 100644
index 0000000000..1726f6fa8e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-29.tex
@@ -0,0 +1,13 @@
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\psset{linestyle=dotted}
+\ncline{1,1}{1,2}\naput{\emph{firstly}}
+\ncline{1,2}{2,2}\naput{\emph{next}}
+\ncline{2,2}{2,1}\naput{\emph{then}}
+\ncline{2,1}{1,1}\naput{\emph{lastly}}
+\nccurve[ncurv=2,linestyle=solid,angleA=90]
+ {1,1}{2,2}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-3.tex b/usergrps/uktug/baskervi/6_2/0-2-3.tex
new file mode 100644
index 0000000000..f0bb8be4cf
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-3.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\Rnode{A}{Cat}}
+\rput(2.5,.5){\Rnode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-30.tex b/usergrps/uktug/baskervi/6_2/0-2-30.tex
new file mode 100644
index 0000000000..5d8464925a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-30.tex
@@ -0,0 +1,18 @@
+\psset{linearc=.2}
+\begin{psmatrix}[rowsep=3pt,colsep=-10pt]
+[name=A]\psframebox{requirements}\\
+&[name=B]\psframebox{design}\\
+&&[name=C]\psframebox{coding}\\
+&&&[name=D]\psframebox{testing}\\
+&&&&[name=E]\psframebox{operations}
+\psset{linearc=0,arrows=->,armA=0pt,angleB=90}
+\ncangle{A}{B}
+\ncangle{B}{C}
+\ncangle{C}{D}
+\ncangle{D}{E}
+\psset{angleB=-90,angleA=180}
+\ncangle{B}{A}
+\ncangle{C}{B}
+\ncangle{D}{C}
+\ncangle{E}{D}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-31.tex b/usergrps/uktug/baskervi/6_2/0-2-31.tex
new file mode 100644
index 0000000000..2c2925de9b
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-31.tex
@@ -0,0 +1,26 @@
+\psset{fillcolor=white,fillstyle=solid}
+\def\Show#1{\psshadowbox{#1}}
+\psset{arrows=->}
+\begin{psmatrix}
+ [mnode=r,ref=t]
+ \psframebox[linestyle=none,framesep=.75]{%
+ \psset{ref=c}
+ \begin{psmatrix}
+ [name=A]\Show{Stakeholder}
+ \end{psmatrix}
+ } &
+ [mnode=r,ref=t]
+ \psframebox[fillstyle=solid,framesep=.75,fillcolor=gray]{%
+ \psset{ref=c}
+ \rule{1cm}{0pt}
+ \begin{psmatrix}
+ [name=B]\Show{Goal} &\Show{Criteria}\\
+ \Show{Sub-goal} & \Show{Justification}
+ \ncline{1,1}{1,2}
+ \ncline{1,1}{2,2}
+ \ncline{1,1}{2,1}\tlput{Strategy}
+ \ncline{2,1}{2,2}
+ \end{psmatrix}
+ }
+\ncline[angleB=-180]{A}{B}\naput[npos=.7]{Model}
+\end{psmatrix}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-4.tex b/usergrps/uktug/baskervi/6_2/0-2-4.tex
new file mode 100644
index 0000000000..1ce48484b2
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-4.tex
@@ -0,0 +1,3 @@
+\pnode(.5,.5){A}
+\pnode(2.5,.5){B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-5.tex b/usergrps/uktug/baskervi/6_2/0-2-5.tex
new file mode 100644
index 0000000000..74e328ef23
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-5.tex
@@ -0,0 +1,3 @@
+\cnode(.5,.5){.2}{A}
+\cnode(2.5,.5){.2}{B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-6.tex b/usergrps/uktug/baskervi/6_2/0-2-6.tex
new file mode 100644
index 0000000000..289fa0bb3a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-6.tex
@@ -0,0 +1,4 @@
+\psset{radius=.3}
+\Cnode(.5,.5){A}
+\Cnode(2.5,.5){B}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-7.tex b/usergrps/uktug/baskervi/6_2/0-2-7.tex
new file mode 100644
index 0000000000..8f63d5c30e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-7.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\circlenode{A}{Cat}}
+\rput(2.5,.5){\circlenode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-8.tex b/usergrps/uktug/baskervi/6_2/0-2-8.tex
new file mode 100644
index 0000000000..d80235fca0
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-8.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\ovalnode{A}{Cat}}
+\rput(2.5,.5){\ovalnode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/0-2-9.tex b/usergrps/uktug/baskervi/6_2/0-2-9.tex
new file mode 100644
index 0000000000..aa5d57b8dc
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/0-2-9.tex
@@ -0,0 +1,3 @@
+\rput(.5,.5){\trinode{A}{Cat}}
+\rput(2.5,.5){\trinode{B}{Dog}}
+\ncline{A}{B}
diff --git a/usergrps/uktug/baskervi/6_2/00readme b/usergrps/uktug/baskervi/6_2/00readme
new file mode 100644
index 0000000000..0cfed1f34d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/00readme
@@ -0,0 +1,19 @@
+This directory contains all you should need.
+
+Note that I've included a baskerv.cls, which I've hacked at to include
+Donald Arseneau's new url.sty, and one or two minor changes to match
+Barbara's way of doing things (where I like it ;-)
+
+There's a diff file, generated by:
+
+ diff baskerv.cls ../5_5/ > baskerv.diff
+
+The two Arseneau packages (url and relsize) I've included, as well as
+the odds-and-ends package (tub-bits) I wrote as I went along.
+
+I have ambitions to publish a revised version of this in TUGboat
+(17#3); among other things the revised version will probably contain a
+declaration that SHSU is no longer a CTAN.
+
+R
+
diff --git a/usergrps/uktug/baskervi/6_2/9May96.tex b/usergrps/uktug/baskervi/6_2/9May96.tex
new file mode 100644
index 0000000000..bac867c5fc
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/9May96.tex
@@ -0,0 +1,244 @@
+\documentclass[11pt,a4paper]{article}
+\title{Draft Minutes of a meeting of the UK \TeX\ Users' Group Committee
+held at LSE}
+\date{9th May, 1996}
+\setlength{\oddsidemargin}{40pt}
+\setlength{\evensidemargin}{\oddsidemargin}
+\setlength{\marginparwidth}{2\marginparwidth}
+\newcommand{\action}[1]{\marginpar{\textsf{Action: #1}}}
+\newcommand{\BV}{\textsl{Baskerville}}
+\let\pound\pounds
+\begin{document}
+\maketitle
+
+\noindent
+Present: Robin Fairbairns (in the chair), Peter Abbott, Kaveh Bazargan,
+ Malcolm Clark (Minutes Secretary), Carol Hewlett.
+There were apologies from Alan Jeffrey, David Carlisle and Sebastian Rahtz.
+
+\section{Minutes of the last meeting (25th January 1996)}
+No corrections other than trivial literals brought forward.
+
+\section{Matters arising}
+MC was presented with the Honorary Membership Certificate.
+
+Adobe Capture: apparently it would cost us a few hundred dollars. It was
+agreed to pursue this despite the cost.\action{RF} It will enable us to scan
+and make available old copies of \BV, for which we have no masters or
+sources. A likely use would be to put all back issues on CD-rom in pdf format.
+
+\section{Chairman's Report}
+RF indicated that thee was little to report, but introduced the following
+\begin{itemize}
+\item TUG: it was noted that there are intermittent problems with
+communication to TUG.
+\item GUT: the FAQ in \BV\ 5.6 has been translated into French
+and will appear in either \textsl{Lettres} or \textsl{Cahiers}. The FAQ
+was also being translated into Czech and Russian.
+\item archive: the archive is alive and well and continues
+its pre-emminent position.
+\end{itemize}
+\section{Committee Secretary's matters}
+CH had received some copies of Dante's \textsl{Kom\"odie}, which
+she circulated. It was agreed that any suitable articles might
+be used in \BV, if permission from Dante was forthcoming.\action{RF, PA}
+
+Carol will clarify the existing committee's membership details prior
+to the AGM.\action{CH}
+
+\section{Meetings}
+\begin{itemize}
+\item \textsl{Portable documents}: a high turnout, although slightly
+down on the initial Bridewell meeting. Somewhat higher costs, due
+to venue and audio-visual support, but covered by BCS electronic and multimedia
+specialist group. At least one paper from this should be forthcoming
+for publication in \BV.
+\item \textsl{\TeX\ and the Internet}: in an email message,
+DC noted that the punters who turned up seemed quite pleased with what they got.
+But he continued that since a
+large number of speakers were drawn from the committee
+it was not clear how often we can do this kind of thing. Unless we can
+put up some new faces people are not going to want to come to hear the
+same people next time. Bringing people in from outside costs money
+(except when we can count on goodwill from Elsevier.) If we could be
+sure further in advance of reasonable numbers of people coming, this
+sort of thing would be easier to finance.
+
+\item \textsl{\TeX\ and \LaTeX\ for Publishers seminar}:
+KB reported on meetings he had had with MC. It is anticipated
+that costs may be a little higher than first estimated. It was planned
+now to accommodate 18--20 people. KB was expecting to try to
+locate a date in September for the seminar.\action{KB} It was agreed that
+this should be pursued vigorously, and that it was vitally
+important to do this in a thoroughly professional manner.
+
+\item \textsl{\TeX\ for University Admin}: MC reported that this
+was in Allan Reese's hands. He would pursue it with him.\action{MC}
+
+\item \textsl{em\TeX\ and non-English \TeX}: CH noted that there
+had been some confusion over this with Anna Moraskawa.\action{CH} However it was
+agreed to continue developing this theme, subject to being able
+to find a suitable presenter (?Allan Reese). The second half of the
+meeting was discussed and it was agreed that it would be about Babel.
+Again, the necessity of finding a suitable presenter was discussed. RF and AJ
+were identified as programme organizers.\action{RF, AJ}
+
+\item \textsl{AGM and associated meeting}: confirmed that the
+meeting would be held at Warwick University on October 16th.\action{MC}
+MC noted that he would be at King's College, London by then. AJ was again
+identified as a potential programme organiser.\action{AJ} Likely topics
+suggested included Scientific Word, the Unix CD-rom (see topic~\ref{cd} below),
+Maple\slash Mathematica interface to \TeX\slash \LaTeX\dots\action{All}
+
+\item \textsl{Packages in \LaTeXe}: generally agreed that
+this should be pursued.\action{who?}
+
+\item \textsl{\dots\ and anything else}: in view of the very poor
+attendence at the recent Warwick meeting, and at the last AGM, MC
+suggested that we rethink our strategy of one-day meetings. The
+general discussion which followed included a tentative proposal
+for a two-day meeting which would include the AGM. The likely
+costings need not be very high, and it would be possible to
+have more diverse topics, or multiple themes. Since committee
+members appear to comprise the bulk of speakers for meetings, it
+would impose less burden on them. CH agreed to examine the
+constitutional implications\action{CH} since incorporation of
+the AGM could determine timings. Some enabling mechanism will
+be introduced at the AGM.
+\end{itemize}
+
+\section{Additional committee members}
+In email
+DC noted that the current comittee is not really large enough to cope with two
+or three people having other commitments at certain times. This seems
+to be inevitable in a volunteer organisation.
+He proposed that some form of concession to committee
+members might encourage wider participation. This proposal was discussed.
+There was some sympathy for this, but no clear conclusion was
+reached. A possible model was to give committee members free
+or subsidised attendance at meetings. CH\action{CH} would examine
+the constitutional aspects of this. Again, an enabling mechanism
+would, if necessary, be introduced at the AGM. Naturally, those
+availing themselves of such concessions would be expected to
+fulfill their role of committee member fully at any meeting.
+\section{Membership Enquiries}
+As a gesture of goodwill,
+it was agreed to extend free membership for this year to Ahmed Hindawi,
+in view of the difficulties he had been experiencing in arranging
+membership through the TUG office.
+
+PA suggested that we offer membership to US students by asking them
+to pay with a shiny new \$10 bill. This avoids problems of currency exchange.
+
+
+PA noted that enquiries were trickling in at about one a week.
+\section{Publicity}
+In view of the difficulty in communicating with JF, and the likelihood
+that most of the information he has is now past its sell-by date, it
+was agreed to drop this item from the agenda.
+
+It was agreed that we would have a press release\action{KB, MC}
+ for the \textsl{Publishers} seminar.
+
+\section{Membership Secretary's matters}
+\textsl{Membership statistics}: PA circulated details of current
+membership. Membership is about 42 down. PA\action{PA} will
+follow up some non-renewers who were thought to retain a significant
+\TeX\ interest.
+
+\section{Treasurer's matters}
+RF noted that the policy of the committee was to place
+services to members before the need to accumulate capital.
+
+PA recommended that there be no change to subscription levels for next
+year. This was agreed by the committee.
+It was stressed that it was of the utmost importance to
+get details of TUG's 1997 subscription rates, as early as possible.\action{RF, MC}
+
+KB pointed out that there are accounts into which foreign currency
+could be paid, without swingeing commission. PA\action{PA} agreed
+to look into this.
+\section{Baskerville}
+\begin{itemize}
+\item \textsl{Editor's report}: DC noted that
+ he was reasonably happy with the final result for \BV\ 6.1
+ although it took longer to do than he anticipated.
+He would be unable to edit a second one this year, through
+pressure of other commitments.
+
+MC had circulated most of a draft copy of \BV\ 6.2 which he was currently
+editing. He was experiencing some difficulties with production, but
+receiving assistance from RF.
+
+\item \textsl{Publisher's report}: nothing to report.
+\item \textsl{Editorship arrangements}:
+Future editions are, or will be,
+ in the hands of CH (6.3), AJ\action{RF} (6.4), PA (6.5) and
+RF (6.6).
+\end{itemize}
+
+\section{Services to members}
+\begin{itemize}
+\item \textsl{Mac CD-rom}: in order to follow this it was agreed
+that MC\action{MC} would look at the costs of a CD-rom writer for
+use with a Mac. Some useful input had been received from Andrew Trevarrow.
+\item\label{cd} \textsl{Unix CD-rom}: SPQR
+reported (via email) that
+ the CD is now called ``\TeX\ Live''. He hoped to send it for pressing on
+Friday or next Monday at the latest (i.e. 10th or 13th May); then to
+ take 200 copies to CERN
+on May 24th, and to launch on 29th. Documentation will be run
+off on a Docutech at CERN that weekend, so he will bring 200 copies back.
+
+See CTAN:\texttt{info/tdscd} for a list of files on the CD. It has ready to run
+Unix binaries for over 20 systems and a very large
+support tree of fonts, macros, documentation etc. It also contains the complete
+GUTenberg distributions for Windows, DOS and Mac.
+
+The CD bill is around \pounds1000 for 500 copies, and the documentation
+costs may be `absorbed'. It will cost around \pound1 to post.
+GUTenberg buy 200 copies immediately, NTG 50, and we lose 50 in
+freebies to poor people and review copies. That means we have 200
+copies with which to recoup \pound500.
+
+The committee recommended that the CD should be sold at \pound15 to
+members and \pound25 to non-members. Although this figure is higher
+than that suggested by SPQR, it was felt that this level was more
+in line with other comparable CDs, and that it would enable us to
+consider other CD projects at similar overall cost to our members.
+
+A further proposal was to include a voucher for (say) \pound5
+which would be redeemable against future UKTUG-produced CDs.
+\end{itemize}
+\section{Annual award for \TeX\ support}\label{cartoon}
+Agreed to approach Duane Bibby with a view to obtaining a small
+series of cartoons which can be used as awards, but which may
+also be used as promotional items (coasters, t-shirts, mugs\dots).
+RF\action{RF} will obtain details of how to contact Duane.\action{MC?}
+\section{Cartoon and/or t-shirts}
+See item \ref{cartoon} above.
+Chris Rowley has the original. It was agreed that we would produce
+a special 10th anniversary archive t-shirt based on the original
+design, in time for the Dubna meeting.\action{MC, ??}
+\section{AOB}
+\begin{itemize}
+\item \textsl{relational database}: PA asked if the group could invest in
+FileMaker Pro to enable him to maintain the membership database. KB agreed
+to send him a copy of the manual to confirm that this software was indeed
+suitable.\action{KB}
+
+\item \textsl{Dubna}: it was agreed that the committee was sympathetic to
+providing cash for a bursary fund to be used to enable suitable indigent
+\TeX ies to attend. RF noted that he had talked to Michel Goossens
+about this, but had received no formal request.
+
+It was also agreed that the committee should send a representative
+to Dubna. The short straw was eventually accepted by Robin,
+with the customary show of reluctance. The
+committee agreed this was an admirable choice and that he would be
+an excellent representative, anticipating that he would
+ promote the group and its
+activities assiduously, and expecting a suitable report
+for \BV.
+\end{itemize}
+\end{document}
diff --git a/usergrps/uktug/baskervi/6_2/T1mbvx.fd b/usergrps/uktug/baskervi/6_2/T1mbvx.fd
new file mode 100644
index 0000000000..3260c2e960
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/T1mbvx.fd
@@ -0,0 +1,69 @@
+%Filename: T1mbvx.fd
+%Created by: tex basker
+%Created using fontinst v1.504
+
+%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
+
+\ProvidesFile{T1mbvx.fd}
+ [1996/01/28 Fontinst v1.504 font definitions for T1/mbvx.]
+
+\DeclareFontFamily{T1}{mbvx}{}
+
+\DeclareFontShape{T1}{mbvx}{b}{n}{
+ <-> mbvb9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{b}{sc}{
+ <-> mbvbc9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{b}{sl}{
+ <-> mbvbo9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{b}{it}{
+ <-> mbvbi9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{sb}{n}{
+ <-> mbvs9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{sb}{sc}{
+ <-> mbvsc9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{sb}{sl}{
+ <-> mbvso9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{sb}{it}{
+ <-> mbvsi9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{m}{n}{
+ <-> mbvr9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{m}{sc}{
+ <-> mbvrc9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{m}{sl}{
+ <-> mbvro9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{m}{it}{
+ <-> mbvri9e
+}{}
+
+\DeclareFontShape{T1}{mbvx}{bx}{n}{<->ssub * mbvx/b/n}{}
+\DeclareFontShape{T1}{mbvx}{bx}{sc}{<->ssub * mbvx/b/sc}{}
+\DeclareFontShape{T1}{mbvx}{bx}{sl}{<->ssub * mbvx/b/sl}{}
+\DeclareFontShape{T1}{mbvx}{bx}{it}{<->ssub * mbvx/b/it}{}
+\DeclareFontShape{T1}{mbvx}{l}{n}{<->ssub * mbvx/m/n}{}
+\DeclareFontShape{T1}{mbvx}{l}{sc}{<->ssub * mbvx/m/sc}{}
+\DeclareFontShape{T1}{mbvx}{l}{sl}{<->ssub * mbvx/m/sl}{}
+\DeclareFontShape{T1}{mbvx}{l}{it}{<->ssub * mbvx/m/it}{}
+
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/at.sty b/usergrps/uktug/baskervi/6_2/at.sty
new file mode 100644
index 0000000000..6ec3bb6454
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/at.sty
@@ -0,0 +1,203 @@
+%%
+%% This is file `at.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% at.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE
+%%
+%% at package -- support for `@' commands'
+%% Copyright (c) 1996 Mark Wooding
+%%
+%% 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 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{at}
+ [1996/05/02 1.02 @-command support (MDW)]
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\def\atallowdigits{\let\ifat@digits\iftrue}
+\def\atdisallowdigits{\let\ifat@digits\iffalse}
+\DeclareOption{digits}{\atallowdigits}
+\DeclareOption{nodigits}{\atdisallowdigits}
+\ExecuteOptions{nodigits}
+\ProcessOptions
+\begingroup
+\catcode`\<1
+\catcode`\>2
+\catcode`\{12
+\catcode`\}12
+\gdef\at@lb<{>
+\gdef\at@rb<}>
+\gdef\at@spc< >
+\endgroup
+\def\at@test#1\then{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi%
+}
+\def\at@ifcat#1{\at@test\ifcat#1\noexpand\@let@token\then}
+\def\at@ifletter#1#2{%
+ \at@ifcat x%
+ {\at@ifletter@ii{#1}}%
+ {\at@ifcat 0%
+ {\at@ifletter@i{#1}{#2}}%
+ {#2}%
+ }%
+}
+\def\at@ifletter@i#1#2#3{%
+ \at@test\if%
+ \ifat@digits1\else0\fi%
+ \ifnum`#3<`0x\else\ifnum`#3>`9x\else1\fi\fi%
+ \then%
+ {\at@ifletter@ii{#1}{#3}}%
+ {#2#3}%
+}
+\def\at@ifletter@ii#1#2{\toks@\expandafter{\the\toks@#2}#1}
+\def\at@read@name#1{%
+ \let\at@next=#1%
+ \toks@{}%
+ \futurelet\@let@token\at@rn@i%
+}
+\def\at@rn@i{%
+ \def\@tempa{\afterassignment\at@rn@iv\let\@let@token= }%
+ \at@ifletter%
+ {\futurelet\@let@token\at@rn@iii}%
+ {\at@ifcat\bgroup%
+ {\toks@\expandafter{\at@lb}\@tempa}%
+ {\at@ifcat\egroup%
+ {\toks@\expandafter{\at@rb}\@tempa}%
+ {\at@ifcat\at@spc%
+ {\toks@{ }\@tempa}%
+ {\at@rn@ii}%
+ }%
+ }%
+ }%
+}
+\def\at@rn@ii#1{%
+ \toks@\expandafter{\string#1}%
+ \at@rn@iv%
+}
+\def\at@rn@iii{%
+ \at@ifletter%
+ {\futurelet\@let@token\at@rn@iii}%
+ {\@ifnextchar.\at@rn@iv\at@rn@iv}%
+}
+\def\at@rn@iv{%
+ \let\@let@token\relax%
+ \expandafter\at@next\csname at.\the\toks@\endcsname%
+}
+\def\at@cmdname#1{\expandafter\at@cmdname@i\string#1\@@foo}
+\def\at@cmdname@i#1.#2\@@foo{#2}
+\def\at@decode#1{%
+ \at@test\ifx#1\relax\then{%
+ \PackageError{at}{Unknown @-command `@\at@cmdname#1'}{%
+ The @-command you typed wasn't recognised, so I've ignored it.
+ }%
+ }{%
+ #1%
+ }%
+}
+\def\@at{%
+ \def\@tempa{\at@read@name\at@decode}%
+ \ifmmode\ifx\Iat\not@@defined\else%
+ \let\@tempa\Iat%
+ \fi\fi%
+ \@tempa%
+}
+\def\at@buildcmd#1#2{%
+ \expandafter\def\csname\expandafter
+ \@gobble\string#1@decode\endcsname##1{#2##1}%
+ \edef#1{%
+ \noexpand\at@read@name%
+ \expandafter\noexpand%
+ \csname\expandafter\@gobble\string#1@decode\endcsname%
+ }%
+}
+\at@buildcmd\newatcommand\newcommand
+\at@buildcmd\renewatcommand\renewcommand
+\at@buildcmd\provideatcommand\providecommand
+\at@buildcmd\atdef\def
+\at@buildcmd\atshow\show
+\def\atlet{%
+ \begingroup%
+ \@makeother\@%
+ \at@read@name\atlet@i%
+}
+\def\atlet@i#1{%
+ \def\at@temp{#1}%
+ \@ifnextchar=\atlet@ii{\atlet@ii=}%
+}
+\def\atlet@ii#1{\afterassignment\atlet@iii\global\let\at@gnext=}
+\def\atlet@iii{%
+ \if @\noexpand\at@gnext%
+ \expandafter\at@read@name\expandafter\atlet@iv%
+ \else%
+ \expandafter\endgroup%
+ \expandafter\let\at@temp= \at@gnext%
+ \fi%
+}
+\def\atlet@iv#1{%
+ \expandafter\endgroup%
+ \expandafter\let\at@temp=#1%
+}
+\def\at{\ifx\protect\@typeset@protect\else\at@protect\fi\@at}
+\def\at@protect\fi#1{%
+ \fi%
+ \ifx\protect\string%
+ \expandafter\at@protect@string%
+ \else%
+ \expandafter\at@protect@noexpand%
+ \fi%
+}
+\def\at@protect@string{@\string}
+\def\at@protect@noexpand{\noexpand\@at@ @\noexpand}
+\def\@at@#1{\at}
+\def\aton{%
+ \ifnum\catcode`\@=\active\else%
+ \edef\atoff{\catcode`\noexpand\@\the\catcode`\@}%
+ \catcode`\@\active%
+ \lccode`\~`\@%
+ \lowercase{\let~\at}%
+ \fi%
+}
+\def\atoff{\catcode`\@12}
+\let\makeatother\aton
+\AtBeginDocument{\aton}
+\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\@}
+\expandafter\def\expandafter\@sanitize\expandafter{%
+ \@sanitize\@makeother\@}
+\expandafter\chardef\csname at.@\endcsname=`\@
+\atdef*#1*{\ifmmode\mathbf{#1}\else\textbf{#1}\fi}
+\atdef/#1/{\ifmmode\mathit{#1}\else\emph{#1}\fi}
+\atlet i=\index
+\atdef I#1{#1\index{#1}}
+\endinput
+%%
+%% End of file `at.sty'.
diff --git a/usergrps/uktug/baskervi/6_2/bask62.cls b/usergrps/uktug/baskervi/6_2/bask62.cls
new file mode 100644
index 0000000000..95656b30bf
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bask62.cls
@@ -0,0 +1,779 @@
+% Baskerville.cls:
+% Adrian Clark
+% Sue Brooks
+% Sebastan Rahtz
+%
+% based on the original LaTeX ARTICLE DOCUMENT STYLE
+%
+% for LaTeX2e
+%
+% 29.5.94 added ISSN
+% 2.6.94 corrected \ukt\ macro
+% 7.6.94 centered captions
+% 15.8.94 changed editor names etc
+% 2.11.94 use Alan Jeffrey's code for paths, emails, URLs etc
+% from faq.sty
+% put PA address in mast head
+% Journals use two-sided printing.
+% 1.12.94 cleaned again for FAQ issue.
+% 6.12.94 more little fixes for FAQ issue
+% 14.3.95 parameterized date
+% 12.6.95 removed JF
+% 8.95 worked on to make HH run. color and array need to go back
+% 1996/02/06 DPC
+% Added fontmatter and submissiondates environments
+% Added \BASKed \BASKed* \BASKyear \BASKmonth
+% \BASKtitle \BASKheadparone and \BASKheadpartwo
+% commands set the `fixed' texts on the masthead.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{baskerv}[1996/02/06 v3.12 Baskerville newsletter class]
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions
+\LoadClass{article}
+\RequirePackage[noisy]{textfit}
+\RequirePackage{pifont}
+%\RequirePackage{latexsym}
+%\RequirePackage{calc}
+%\RequirePackage{ifthen}
+%\RequirePackage{longtable}
+%\RequirePackage{texnames}
+%\RequirePackage{shortvrb}
+%\DeleteShortVerb{\|}
+\let\FAQverbFamily\ttfamily
+\DeclareRobustCommand{\FAQverb}[2]{{%
+ \ifvmode\leavevmode\fi
+ \lefthyphenmin=256\setlanguage\language
+ \FAQverbFamily\hyphenchar\the\font`#1\relax
+ \def\@tempa{#2}%
+ \expandafter\@faq@strip\meaning\@tempa\@faq@strip
+ \hyphenchar\the\font\m@ne
+}\setlanguage\language}
+\def\@faq@strip#1->#2\@faq@strip{#2}
+%
+% Document markup:
+%
+\makeatother % because @ is a delimiter here, it had better have the
+ % same catcode as it will when the macro's invoked
+\def\Email|#1@#2|{\FAQverb\-{#1@}\penalty10\FAQverb\.{#2}} % email
+\makeatletter
+\def\FTP|#1|{\FAQverb\.{#1}} % FTP site
+\def\File|#1|{\FAQverb\/{#1}} % file name
+%\def\CTAN{\FAQverb\/} % CTAN path
+\def\Newsgroup|#1|{\FAQverb\.{#1}} % newsgroup
+\def\URL|#1://#2/#3|{\FAQverb\.{#1://#2/}\penalty10\FAQverb\/{#3}}
+%\def\path|#1|{\FAQverb\/{#1}} % generic path
+\renewcommand{\rmdefault}{mbvx}
+\renewcommand{\sfdefault}{cmss}
+\renewcommand{\ttdefault}{cmtt}
+\fontencoding{T1}\fontfamily{mbvx}\selectfont
+\DeclareFontShape{T1}{mbvx}{m}{sl}{<->ssub * mbvx/m/it}{}
+\RequirePackage[T1]{fontenc}
+%\RequirePackage{array}
+%\RequirePackage{shortvrb}
+\RequirePackage[dvips]{graphicx}
+%\RequirePackage[dvips]{color}
+\RequirePackage{multicol}
+%\RequirePackage{mflogo}
+%\RequirePackage{footcols}
+\newcommand\bs{{\ttfamily\upshape\char'134}}
+%\def\arraybackslash{\let\\=\@arraycr}
+%\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
+%\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+\lineskip 1\p@
+\normallineskip 1\p@
+\def\baselinestretch{1}
+\renewcommand\normalsize{%
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip 8\p@ \@plus1\p@ \@minus1\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 4\p@ \@plus3\p@
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}
+\let\@normalsize\normalsize
+\normalsize
+\renewcommand\small{%
+ \@setfontsize\small\@ixpt{10.5}%
+ \abovedisplayskip 4\p@ \@plus1\p@ \@minus1\p@
+ \abovedisplayshortskip 4\p@ \@plus1\p@
+ \belowdisplayshortskip \abovedisplayshortskip
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 2\p@ \@plus1\p@ \@minus1\p@
+ \parsep \z@
+ \itemsep 2\p@}%
+ \belowdisplayskip \abovedisplayskip
+}
+\renewcommand\footnotesize{%
+ \@setfontsize\footnotesize\@viiipt{9}%
+ \abovedisplayskip 4\p@ \@plus1\p@ \@minus1\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 1\p@ \@plus1\p@ \@minus1\p@
+ \parsep \z@
+ \itemsep 2\p@}%
+ \belowdisplayskip \abovedisplayskip
+}
+\renewcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\renewcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\renewcommand\large{\@setfontsize\large\@xipt{12}}
+\renewcommand\Large{\@setfontsize\Large\@xiipt{14}}
+\renewcommand\LARGE{\@setfontsize\LARGE\@xivpt{17}}
+\renewcommand\huge{\@setfontsize\huge\@xviipt{20}}
+\renewcommand\Huge{\@setfontsize\Huge\@xxpt{30}}
+\normalsize
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+%
+% SIDE MARGINS:
+\oddsidemargin -2.5pc \evensidemargin -2.5pc
+\marginparwidth 4pc % don't use marginal notes...
+\marginparsep 0.5pc % ...in the UK TUG newsletter
+
+% VERTICAL SPACING:
+\topmargin -3pc
+\headheight 12\p@
+\headsep 15\p@
+\topskip 10\p@
+\footskip 15\p@
+
+% DIMENSION OF TEXT:
+
+\textheight 250mm % height of text on a page (A4 paper)
+\textwidth 180mm % total width of a page
+\columnseprule 0.5\p@ % width of line in the inter-column gutter
+\columnsep 10mm % space between columns
+\tolerance 9999 % make those columns justify
+
+% FOOTNOTES:
+\footnotesep 6\p@
+\skip\footins 19.5\p@ plus 12\p@ \@minus 1\p@
+
+% FLOATS:
+\floatsep 12\p@ plus 5.5\p@ \@minus 1\p@
+\textfloatsep 15\p@ plus 4.5\p@ \@minus 3\p@
+\intextsep 12\p@ plus 5.5\p@ \@minus 2\p@
+\dblfloatsep 12\p@ plus 5.5\p@ \@minus 2\p@
+\dbltextfloatsep 15\p@ plus 4.5\p@ \@minus 3\p@
+\@fptop 0\p@ plus 0fil
+\@fpsep 12\p@ plus 0fil
+\@fpbot 0\p@ plus 3fil
+\@dblfptop 0\p@ plus 0fil
+\@dblfpsep 12\p@ plus 0fil
+\@dblfpbot 0\p@ plus 3fil
+\marginparpush 5\p@
+
+% ****************************************
+% * PARAGRAPHING *
+% ****************************************
+%
+\parindent 12\p@
+\parskip \z@ plus .1\p@
+\partopsep 0\p@ plus 1\p@
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+\clubpenalty=0
+\widowpenalty=10000
+
+% ****************************************
+% * SKIPS *
+% ****************************************
+%
+\newskip\@indentskip
+\newskip\smallindent
+\newskip\@footindent
+\newskip\@leftskip
+\@indentskip=1.25pc
+\smallindent=\parindent
+\@footindent=\smallindent
+\@leftskip=\z@
+
+
+% ****************************************
+% * SECTIONS *
+% ****************************************
+%
+\def\Section{\@startsection{newarticle}{0}{\z@}
+ {-24\p@ \@plus -12\p@ \@minus -.1\p@}
+ {12\p@ \@plus 1\p@}
+ {\raggedright\Large\bfseries}}
+\def\SSection{\@startsection{newarticle}{0}{\z@}
+ {-24\p@ \@plus -12\p@ \@minus -.1\p@}
+ {12\p@ \@plus 1\p@}
+ {\raggedright\Large\bfseries}[\@title]}
+\def\section{%\typeout{** section!}%
+\@startsection {section}{1}{\z@}
+ {-12\p@ \@plus -6\p@ \@minus -.1\p@}
+ {6\p@}
+ {\raggedright\large\bfseries}}
+\def\subsection{\@startsection{subsection}{2}{\z@}
+ {-4\p@ \@plus -2\p@ \@minus -.1\p@}
+ {0.1\p@ \@plus 2\p@}
+ {\raggedright\normalsize\itshape}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}
+ {-6\p@ \@plus -3\p@ \@minus -1\p@}
+ {0.1\p@ \@plus 2\p@}
+ {\raggedright\normalsize\it}}
+\def\paragraph{\@startsection{paragraph}{4}{\z@}
+ {12\p@ \@plus 2.25\p@ \@minus -1\p@}
+ {-0.5em}
+ {\normalsize\bfseries}}
+\def\subparagraph{\@startsection{subparagraph}{5}{\z@}
+ {12\p@ \@plus 2.25\p@ \@minus 1\p@}
+ {-0.5em}
+ {\normalsize\it}}
+\setcounter{secnumdepth}{-1}
+%
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\thesection{\Alph{section}}}
+
+% ****************************************
+% * PARTS & SECTIONS NUMBERS *
+% ****************************************
+%
+\newcounter{newarticle}
+\@newctr{section}[newarticle]
+\def\thenewarticle {\Alph{newarticle}}
+
+% ****************************************
+% * LISTS *
+% ****************************************
+%
+\leftmargini \@indentskip
+\leftmarginii 1pc
+\leftmarginiii 1pc
+\leftmarginiv 1pc
+\leftmarginv 1pc
+\leftmarginvi 1pc
+\leftmargin\leftmargini
+\labelsep 0.5em
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+%
+% label macros for Range-Left and Range-Right labels
+\def\makeRLlabel#1{\rlap{#1}\hss}
+\def\makeRRlabel#1{\hss\llap{#1}}
+%
+\def\@listI{\leftmargin\leftmargini
+ \parsep \z@
+ \topsep 2\p@ \@plus 1\p@ \@minus 1\p@
+ \itemsep \z@ \@plus .1\p@
+}
+\let\@listi\@listI
+\@listi
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 2\p@ \@plus 1\p@ \@minus 1\p@
+ \parsep \z@
+ \itemsep \z@ \@plus .1\p@
+}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 1\p@ \@plus 1\p@ \@minus 1\p@
+ \parsep \z@
+ \partopsep \z@
+ \itemsep \topsep
+}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep
+}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep
+}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep
+}
+%
+% ITEMIZE
+\def\itemize{\ifnum \@itemdepth >3 \@toodeep
+ \else \advance\@itemdepth \@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {\let\makelabel\makeRRlabel}%
+ \fi}
+\def\labelitemi{$\bullet$}
+\def\labelitemii{--}
+\def\labelitemiii{$\cdot$}
+\def\labelitemiv{*}
+%
+% ENUMERATE with optional argument to set left margin...
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep \else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \fi
+ \@ifnextchar [{\@enumeratetwo}{\@enumerateone}%
+}
+\def\@enumeratetwo[#1]{%
+ \list{\csname label\@enumctr\endcsname}%
+ {\settowidth\labelwidth{[#1]}
+ \leftmargin\labelwidth \advance\leftmargin\labelsep
+ \usecounter{\@enumctr}
+ \let\makelabel\makeRRlabel}
+}
+\def\@enumerateone{%
+ \list{\csname label\@enumctr\endcsname}%
+ {\usecounter{\@enumctr}
+ \let\makelabel\makeRRlabel}}
+%
+\def\labelenumi{\theenumi}
+\def\theenumi{\arabic{enumi}.}
+\def\labelenumii{(\theenumii)}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\theenumiii}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\theenumiv}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+% ARRAY AND TABULAR
+%
+\arraycolsep 5\p@
+\tabcolsep 6\p@
+\arrayrulewidth .5\p@
+\doublerulesep 1.5\p@
+
+% ****************************************
+% * TITLES AND ABSTRACT *
+% ****************************************
+%
+
+%% Volume Number (ie Year - 1990)
+\def\BASKvol#1{\gdef\BASK@vol{#1}}
+\BASKvol{?}
+
+%% Issue Number (ie Month/2, roughly)
+\def\BASKno#1{\gdef\BASK@no{#1}}
+\BASKno{?}
+
+% Editor, Star form for Guest editor
+\def\BASKed{\@ifstar{\BASK@ed{Guest }}{\BASK@ed{}}}
+\def\BASK@ed#1#2{\gdef\BASK@editor{#1Editor: #2}}
+\BASKed{????????}
+
+%% Year (4 digits)
+\def\BASKyear#1{\gdef\thisyear{#1}}
+\BASKyear{????}
+
+% Month (as a Word)
+\def\BASKmonth#1{\gdef\thismonth{#1}}
+\BASKmonth{?????}
+
+\def\makeBSKtitle{\par
+ \begingroup
+ \vspace*{-\headheight}%
+ \@maketitle
+ \bigskip\hrule\bigskip
+ \thispagestyle{plain}
+ \endgroup
+ \let\maketitle\relax
+ \let\@maketitle\relax
+}
+\newbox\BSKbox
+\def\@maketitle{%
+ \centerline{\BASK@titleline}%
+ \medskip
+ \hbox to \textwidth{\bfseries The Annals of the UK \TeX\ Users'
+ Group\hfill \BASK@editor\hfill Vol.~\BASK@vol\ No.~\BASK@no}%
+ \smallskip\hbox to \textwidth{\bfseries ISSN 1354--5930
+ \hfill \thismonth\ \thisyear}%
+ \medskip
+ \noindent\ignorespaces
+ \BASK@headparone\unskip\par
+ \ignorespaces\BASK@headpartwo\unskip}
+
+% The frontmatter environment should contain a sequence of article
+% environments that are run into two columns. It inserts the masthead
+% across both columns, and the table of contents at the start of
+% column one.
+\def\frontmatter{%
+ \vspace*{-1cm}% Would make more sense to incorporate this into
+ % \maketitle, but leave it like this for compat.
+ \begin{multicols}{2}[\makeBSKtitle]%
+ \tableofcontents}
+\def\endfrontmatter{%
+ \end{multicols}}
+
+
+% The Journal title command.
+% You probably only want to change this if you want to use a design-size
+% font rather than let \scaletowidth scale for some special issue.
+\def\BASKtitle#1{\gdef\BASK@titleline{#1}}
+\BASKtitle{%
+ \bfseries
+ \scaletowidth{\textwidth}{%
+ B\,a\,s\,k\,e\,r\,v\,i\,l\,l\,e}}
+
+
+% The first paragraph. Needs to be reset if a special issue used a
+% different font set.
+\def\BASKheadparone#1{\gdef\BASK@headparone{#1}}
+\BASKheadparone{%
+Articles may be submitted via electronic mail to
+\texttt{baskerville@tex.ac.uk}, or on MSDOS-compatible discs,
+to Sebastian Rahtz, Elsevier Science Ltd, The Boulevard, Langford
+Lane, Kidlington, Oxford OX5 1GB, to whom any correspondence
+concerning \BV\ should also be addressed. This \BV\ is set in Monotype
+Baskerville, with Computer Modern Typewriter for literal
+text, and printed on a Xerox Docutech. Production and distribution is
+undertaken in Cambridge by Robin Fairbairns. Back
+issues from the previous 12 months may be ordered from \ukt\ for
+\pounds2 each; earlier issues are archived on \textsc{ctan} in
+\texttt{usergrps/uktug}.}
+
+% The second paragraph.
+\def\BASKheadpartwo#1{\gdef\BASK@headpartwo{#1}}
+\BASKheadpartwo{%
+Please send \ukt\ subscriptions, and book or software orders, to
+Peter Abbott, 1 Eymore Close, Selly Oak, Birmingham B29 4LB.
+Fax/telephone: 0121 476 2159. Email
+enquiries about \ukt\ to \protect\texttt{uktug-enquiries@tex.ac.uk}.}
+
+
+\def\and{\end{tabular}\vskip 6pt\par
+ \begin{tabular}[t]{@{}l@{}}}
+%
+\def\abstract{\@abstract}
+\def\endabstract{\end{quote}}
+\def\@abstract{\subsection*{Summary}\begin{quote}}
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+\mark{{}{}}
+\gdef\@author{}
+\def\author{\@ifnextchar [{\@authortwo}{\@authorone}}
+\def\@authortwo[#1]#2{\gdef\@author{#2}\gdef\@shortauthor{#1}}
+\def\@authorone#1{\gdef\@author{#1}\gdef\@shortauthor{#1}}
+\gdef\@shortauthor{Dummy Author}
+\gdef\@title{}
+\gdef\@longtitle{}
+\def\title{\@ifnextchar [{\@titletwo}{\@titleone}}
+\def\@titletwo[#1]#2{\gdef\@title{#1}\gdef\@longtitle{#2}}
+\def\@titleone#1{\gdef\@title{#1}\gdef\@longtitle{#1}}
+\gdef\@longtitle{Dummy Title}
+
+%
+% \ps@empty defined in LATEX.TEX
+%
+\def\ps@plain{\let\@mkboth\markboth
+ \def\@oddhead{}
+ \def\@evenhead{}
+ \def\@oddfoot{\rm \hfil --\thepage--\hfil}
+ \def\@evenfoot{\rm \hfil --\thepage--\hfil}
+}
+\def\ps@headings{\let\@mkboth\markboth
+ \def\@oddhead{\hfill\emph{\@title}\hfill}
+ \def\@oddfoot{\rm \hfil --\thepage--\hfil}
+ \def\@evenhead{\it Baskerville \hfill
+ Volume \BASK@vol, Number \BASK@no}
+ \def\@evenfoot{\rm \hfil --\thepage--\hfil}
+}
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+ \def\@oddhead{\it\@shortauthor \hfill \@title}
+ \def\@oddfoot{\rm \hfil --\thepage--\hfil}
+ \def\@evenhead{\it Baskerville \hfill
+ Volume \BASK@vol, Number \BASK@no}
+ \def\@evenfoot{\rm \hfil --\thepage--\hfil}
+ \def\sectionmark##1{}
+ \def\subsectionmark##1{}}
+
+% ****************************************
+% * TABLE OF CONTENTS, ETC. *
+% ****************************************
+%
+\def\@pnumwidth{1.4pc}
+\def\@tocrmarg {2pc}
+\def\@dotsep{10}
+\setcounter{tocdepth}{0}
+%\def\tableofcontents{\@restonecolfalse
+% \if@twocolumn\@restonecoltrue\onecolumn\fi
+% \section*{Contents} \@starttoc{toc}
+% \if@restonecol\twocolumn\fi \par\vspace{12\p@}}
+\def\tableofcontents{\Section*{Contents}\@starttoc{toc}}
+\def\l@part#1#2{\addpenalty{-\@highpenalty}
+ \addvspace{2.25em \@plus 1\p@}
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ {\normalsize\rm
+ \leavevmode \hspace*{3pc}
+ #1\hfil \hbox to\@pnumwidth{\hss \ }}\par
+ \nobreak \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}\endgroup}
+\def\dotfil{%
+ \cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfil\kern\z@}
+\def\l@newarticle#1#2{\addpenalty{\@secpenalty}
+% \addvspace{1.0em \@plus 1\p@}
+ \@tempdima 1.5em % width of box holding section number
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ #1\dotfil \hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+\def\l@section{\@dottedtocline{1}{\z@}{1.5em}}
+\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\def\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+\def\listoffigures{\@restonecolfalse
+ \if@twocolumn\@restonecoltrue\onecolumn\fi
+ \section*{List of Figures\@mkboth{List of Figures}{List of Figures}}
+ \@starttoc{lof} \if@restonecol\twocolumn\fi}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\listoftables{\@restonecolfalse
+ \if@twocolumn\@restonecoltrue\onecolumn\fi
+ \section*{List of Tables\@mkboth{List of Tables}{List of Tables}}
+ \@starttoc{lot} \if@restonecol\twocolumn\fi}
+\let\l@table\l@figure
+
+% ****************************************
+% * BIBLIOGRAPHY *
+% ****************************************
+%
+\def\thebibliography#1{\section*{\refname}
+ \small
+\list
+ {\@biblabel{\arabic{enumiv}}}{\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \def\theenumiv{\arabic{enumiv}}}%
+ \def\newblock{\hskip .11em plus.33em minus.07em}%
+ \parskip\z@ \@plus .1pt\relax
+ \clubpenalty4000\widowpenalty4000\sfcode`\.=1000\relax}
+\def\refname{References}
+\def\endthebibliography{%
+ \def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
+ \endlist}
+
+\setcounter{topnumber}{2}
+\def\topfraction{.9}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.9}
+\setcounter{totalnumber}{3}
+\def\textfraction{.1}
+\def\floatpagefraction{.75}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.9}
+\def\dblfloatpagefraction{.75}
+
+\long\def\@makecaption#1#2{\vskip 6\p@
+ \setbox\@tempboxa\hbox{\small{\bfseries #1.} #2}
+ \ifdim \wd\@tempboxa >.8\hsize
+ \hbox to\hsize{%
+ \hfill\parbox{.8\hsize}{\small{\bfseries #1.} #2\par}\hfill}
+ \else
+ \hbox to\hsize{\hfill\box\@tempboxa\hfill}
+ \fi
+ \vskip 6\p@
+}
+
+
+% --- -----------------------------------------------------------------
+% --- Shorthands for non-English abbreviations and words.
+% --- -----------------------------------------------------------------
+
+\def\foreign{\em}
+\def\etc{{\foreign etc.}} % etc.
+\def\eg{{\foreign e.g.~}\ignorespaces} % e.g.
+\def\egc{{\foreign e.g.,~}\ignorespaces} % e.g.,
+\def\ie{{\foreign i.e.~}\ignorespaces} % i.e.
+\def\iec{{\foreign i.e.,~}\ignorespaces} % i.e.,
+
+% --- -----------------------------------------------------------------
+% --- Tex-related mnemonics.
+% --- -----------------------------------------------------------------
+
+
+\def\La{\protect\p@La}
+\def\p@La{L%
+ {\setbox0\hbox{T}%
+ \setbox2\vbox to\ht0{\kern.07ex\hbox{%
+ \csname S@\f@size\endcsname
+ \math@fontsfalse
+ \fontsize\sf@size\z@\selectfont
+ A}%
+ \vss}%
+ \kern-.5\wd2
+ \box2
+ }}
+\def\AllTeX{(\La)\TeX}
+\def\AmSTeX{%
+ $\mathcal{A}\kern-.1667em\lower.5ex\hbox{$\mathcal{M}$}%
+ \kern-.125em S$\TeX}
+\def\LamsTeX{$\mathcal{L}\mathcal{A}%
+\kern-.1667em\lower.5ex\hbox{$\mathcal{M}$}\kern-.125em S$\TeX}
+\def\BibTeX{{\rmfamily B\kern-.05em\textsc{i\kern-.025em b}\kern-.08em\TeX}}
+\def\INRStex{T\kern-.1667em\lower.5ex\hbox{\^E}\kern-.125emX}
+\def\JTeX{\leavevmode\hbox{\lower.5ex\hbox{J}\kern-.18em\TeX}}
+\def\LAMSTeX{L\kern -0.4 em \raise 0.3 ex \hbox {$\scriptstyle \mathcal{A}$}%
+ \kern -0.25 em \lower 0.4 ex \hbox {$\cal M$}%
+ \kern -0.1 em \hbox {$\mathcal{S}$}-\TeX}
+\def\AMSLaTeX{{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox{$\mathcal{M}$}\kern-.125em
+ $\mathcal{S}$-\LaTeX}}
+\def\AMS{{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox{$\mathcal{M}$}\kern-.125em
+ $\mathcal{S}$}}
+\def\MakeIndex{{\itshape MakeIndex}}
+\def\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC}
+\def\PiCTeX{\PiC\kern-.11em\TeX}
+% SliTeX from the SliTeX Documentation
+\def\SLiTeX{%
+ S\kern-.065em L\kern-.18em\raise.32ex\hbox{\textsc{i}}%
+ \kern-.03em\TeX}
+\let\SliTeX\SLiTeX
+\def\POBox{P.\thinspace O.~Box }
+\def\TeXhax{\TeX hax}
+\def\TeXXeT{\TeX--X\kern-.125em\lower.5ex\hbox{E}\kern-.1667emT}
+\def\TUB{\emph{TUGboat}}
+\def\DVI{\texttt{dvi}}
+\def\VF{\textsc{vf}}
+\def\BV{\emph{Baskerville}}
+\def\UKTUG{UK \TeX\ Users' Group}
+\def\ukt{{\footnotesize UK}TUG}
+\let\shortuktug\ukt
+\def\PS{\textsc{PostScript}}
+\newcommand{\payuk}{UK TeX Users' Group}
+\newcommand{\Newline}{\\[0.7\baselineskip]}
+\newcommand{\FullLine}[1]{%
+ \makebox[\linewidth][l]{#1\hrulefill}\Newline}
+\newcommand{\HalfLine}[1]{%
+ \makebox[0.5\linewidth][l]{#1\hrulefill}}
+
+\def\Dash{---}
+
+
+% --- -----------------------------------------------------------------
+% --- Additional commands.
+% --- -----------------------------------------------------------------
+
+\let\maketitle\make@articletitle
+\def\make@articletitle{\Section[\@title]{\@longtitle}}
+
+% article is for smaller articles with single-column titles.
+\def\article{%
+ \setcounter{figure}{0}%
+ \setcounter{table}{0}%
+ \Section[\@title]{\@longtitle}%
+ \let\maketitle\relax
+ \markright{\@shortauthor\hfill\@longtitle}%
+}
+%
+% Article is when the title is double column
+\def\Article{%
+ \setcounter{figure}{0}%
+ \setcounter{table}{0}%
+ \begin{multicols}{2}[\SSection{\@longtitle}]%
+ \let\maketitle\relax
+ \markright{\@shortauthor\hfill\@longtitle}%
+}
+% FAQ version of article ?
+\def\FArticle{%
+ \setcounter{figure}{0}%
+ \setcounter{table}{0}%
+ \begin{multicols}{2}[\Section*{\@longtitle}]%
+}
+\def\endarticle{\@signature
+ \gdef\@author{\mbox{}}}
+
+\def\endArticle{\@signature
+ \gdef\@author{\mbox{}}\end{multicols}%
+}
+\let\endFArticle\endArticle
+\def\newarticlemark#1{}
+
+% Use like a 4 column tabular but with no preamble argument.
+\def\submissiondates{%
+ \begin{center}%
+ \begin{tabular}{ll@{}l@{}l}
+ \BASK@subtitle{Issue}&
+ \BASK@subtitle{Submit material\\ for publication}&
+ \BASK@subtitle{Submit last-\\minute notices}&
+ \BASK@subtitle{Anticipated\\ posting date}\\[2pt]}
+\def\endsubmissiondates{%
+ \end{tabular}
+ \end{center}}
+
+
+% rotated italic head on submission dates table
+\def\BASK@subtitle#1{%
+ \kern-5pt\relax
+ \rotatebox{45}{\itshape\begin{tabular}[b]{@{}l@{}}#1\end{tabular}}}
+
+% --- Macros for cross-referencing tables and figures.
+
+\def\figref#1{Figure~\ref{#1}}
+\def\tabref#1{Table~\ref{#1}}
+
+% --- Output the attribution at the end of an article.
+\def\emptysig{}
+\def\@signature{%
+ \ifx\@author\emptysig\else
+ \begin{flushright}\begin{tabular}{@{}r@{}}\@author\end{tabular}%
+ \end{flushright}\fi}
+
+\def\signature#1{\begin{flushright}
+ \begin{tabular}{@{}r@{}}#1\end{tabular}%
+ \end{flushright}}
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+%
+\ps@headings
+\pagenumbering{arabic}
+\sloppy
+\flushbottom
+\frenchspacing
+
+%\extrarowheight2\p@
+\setlength{\multicolsep}{6\p@}
+\let\sl\it
+\newcommand{\meta}[1]{{$\langle$\itshape #1\/$\rangle$}}
+\def\Gin@extensions{.eps,.ps,.eps.gz,.ps.gz,.eps.Z,.pz,.psz}
+\def\Gin@sepdefault{.}%
+\@namedef{Gin@rule@.psz}#1{{.eps}{.bb}{`gunzip -c #1}}
+
+% no rule in footcols
+
+\def\@makecol@ftn{%
+ \vskip \skip\footins
+ \footnoterule
+ \footnotesize
+ \multicolsep\z@\relax
+ \hsize\textwidth
+ \@parboxrestore
+ % {\showoutput\batchmode\showbox\footins}%
+ \raggedcolumns
+ \bgroup \columnseprule 0\p@
+ \begin{multicols}{\the\ftn@col@number}%
+ \unvbox \footins
+ \end{multicols}%
+ \egroup
+}
+%
+% available for inter-article dinglines
+%
+\def\Dings{\nopagebreak{\footnotesize\dingline{167}}}
+%
+\@twosidetrue \@mparswitchtrue
+\endinput
+%%
+
diff --git a/usergrps/uktug/baskervi/6_2/bask6_2.tex b/usergrps/uktug/baskervi/6_2/bask6_2.tex
new file mode 100644
index 0000000000..af14223f91
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bask6_2.tex
@@ -0,0 +1,63 @@
+\listfiles
+\documentclass{baskrep}
+
+% If you don't want to use Bakerville today
+% \renewcommand{\rmdefault}{cmr}
+% \BASKtitle{\huge \let\,\hfill B\,a\,s\,k\,e\,r\,v\,i\,l\,l\,e}
+% \def\dings{\par\hrule\par}
+%\let\Dings\dings
+
+\BASKvol{6}
+\BASKno{2}
+\BASKed*{Malcolm Clark}% * for Guest editor
+\BASKyear{1996}
+\BASKmonth{April}
+\usepackage{mflogo}
+\usepackage{bits}
+\usepackage{url}
+\usepackage{tub-bits}
+\usepackage{bv62}
+\usepackage{shortvrb}
+\usepackage{typehtml}
+\usepackage{graphicx}
+\usepackage{spqr}
+\usepackage[rounded]{syntax}
+\renewcommand\textfraction{0.25}
+%
+\InputIfFileExists{fontuse.cfg}{\typeout{Using config file
+ fontuse.cfg}}{}
+%
+% Things this paper definitely needs
+\usepackage{xspace}
+\newcommand\ftp{\textsf{ftp}\xspace}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+%
+\hyphenation{gobble-dy-gook}
+
+\begin{document}
+
+\begin{frontmatter}
+\input{bv62ed}
+\end{frontmatter}
+\Dings
+\input{grovel}
+%\Dings
+{\input{ltour2}}
+%\Dings
+{\input{ctan-dev}}
+%\Dings
+{\input{bv62htm}}
+\Dings
+\input{bv62agm.tex}
+{\input{pstrix2}}
+%\Dings
+{\input{syntart}}
+\Dings
+{\input{bv62cd}}
+\Dings
+\input{glean}
+%\Dings
+%{\catcode`\<=\active \input{bv62pst}}
+%\Dings
+
+\end{document}
diff --git a/usergrps/uktug/baskervi/6_2/baskerv.cls b/usergrps/uktug/baskervi/6_2/baskerv.cls
new file mode 100644
index 0000000000..7a4e0e9e81
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/baskerv.cls
@@ -0,0 +1,674 @@
+% Baskerville.cls:
+% Adrian Clark
+% Sue Brooks
+% Sebastan Rahtz
+%
+% based on the original LaTeX ARTICLE DOCUMENT STYLE
+%
+% for LaTeX2e
+%
+\def\filedate{1995/07/30}
+\def\fileversion{3.11}
+% 29.5.94 added ISSN
+% 2.6.94 corrected \ukt\ macro
+% 7.6.94 centered captions
+% 15.8.94 changed editor names etc
+% 2.11.94 use Alan Jeffrey's code for paths, emails, URLs etc
+% from faq.sty
+% put PA address in mast head
+% Journals use two-sided printing.
+% 1.12.94 cleaned again for FAQ issue.
+% 6.12.94 more little fixes for FAQ issue
+% 14.3.95 parameterized date
+% 12.6.95 removed JF
+% 8.95 worked on to make HH run. color and array need to go back
+% 15.11.95 changed \ukt to be all one size (RF)
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{baskerv}[\filedate, Baskerville newsletter class \fileversion]
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions
+\LoadClass{article}
+\RequirePackage[T1]{fontenc}
+\RequirePackage[noisy]{textfit}
+\RequirePackage{pifont}
+\RequirePackage{latexsym}
+%\RequirePackage{calc}
+\RequirePackage{ifthen}
+\RequirePackage{longtable}
+\RequirePackage{texnames}
+%\RequirePackage{shortvrb}
+%\DeleteShortVerb{\|}
+\renewcommand{\rmdefault}{mbvx}
+\renewcommand{\sfdefault}{cmss}
+\renewcommand{\ttdefault}{cmtt}
+\fontfamily{mbvx}\selectfont
+\DeclareFontShape{T1}{mbvx}{m}{sl}{<->ssub * mbvx/m/it}{}
+\RequirePackage{t1enc}
+%\RequirePackage{array}
+\RequirePackage{shortvrb}
+\RequirePackage[dvips]{epsfig}
+%\RequirePackage[dvips]{color}
+\RequirePackage{multicol}
+\RequirePackage{mflogo}
+%\RequirePackage{footcols}
+\newcommand\bs{{\ttfamily\upshape\char'134}}
+%\def\arraybackslash{\let\\=\@arraycr}
+%\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
+%\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+\lineskip 1\p@
+\normallineskip 1\p@
+\def\baselinestretch{1}
+\renewcommand\normalsize{%
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip 8\p@ \@plus1\p@ \@minus1\p@
+ \abovedisplayshortskip \z@ \@plus3\p@
+ \belowdisplayshortskip 4\p@ \@plus3\p@
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}
+\let\@normalsize\normalsize
+\normalsize
+\renewcommand\small{%
+ \@setfontsize\small\@ixpt{10.5}%
+ \abovedisplayskip 4\p@ \@plus1\p@ \@minus1\p@
+ \abovedisplayshortskip 4\p@ \@plus1\p@
+ \belowdisplayshortskip \abovedisplayshortskip
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 2\p@ \@plus1\p@ \@minus1\p@
+ \parsep \z@
+ \itemsep 2\p@}%
+ \belowdisplayskip \abovedisplayskip
+}
+\renewcommand\footnotesize{%
+ \@setfontsize\footnotesize\@viiipt{9}%
+ \abovedisplayskip 4\p@ \@plus1\p@ \@minus1\p@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 1\p@ \@plus1\p@ \@minus1\p@
+ \parsep \z@
+ \itemsep 2\p@}%
+ \belowdisplayskip \abovedisplayskip
+}
+\renewcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\renewcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\renewcommand\large{\@setfontsize\large\@xipt{12}}
+\renewcommand\Large{\@setfontsize\Large\@xiipt{14}}
+\renewcommand\LARGE{\@setfontsize\LARGE\@xivpt{17}}
+\renewcommand\huge{\@setfontsize\huge\@xviipt{20}}
+\renewcommand\Huge{\@setfontsize\Huge\@xxpt{30}}
+\normalsize
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+%
+% SIDE MARGINS:
+\oddsidemargin -2.5pc \evensidemargin -2.5pc
+\marginparwidth 4pc % don't use marginal notes...
+\marginparsep 0.5pc % ...in the UK TUG newsletter
+
+% VERTICAL SPACING:
+\topmargin -3pc
+\headheight 12\p@
+\headsep 15\p@
+\topskip 10\p@
+\footskip 15\p@
+
+% DIMENSION OF TEXT:
+
+\textheight 250mm % height of text on a page (A4 paper)
+\textwidth 180mm % total width of a page
+\columnseprule 0.5\p@ % width of line in the inter-column gutter
+\columnsep 10mm % space between columns
+\tolerance 9999 % make those columns justify
+
+% FOOTNOTES:
+\footnotesep 6\p@
+\skip\footins 19.5\p@ plus 12\p@ \@minus 1\p@
+
+% FLOATS:
+\floatsep 12\p@ plus 5.5\p@ \@minus 1\p@
+\textfloatsep 15\p@ plus 4.5\p@ \@minus 3\p@
+\intextsep 12\p@ plus 5.5\p@ \@minus 2\p@
+\dblfloatsep 12\p@ plus 5.5\p@ \@minus 2\p@
+\dbltextfloatsep 15\p@ plus 4.5\p@ \@minus 3\p@
+\@fptop 0\p@ plus 0fil
+\@fpsep 12\p@ plus 0fil
+\@fpbot 0\p@ plus 3fil
+\@dblfptop 0\p@ plus 0fil
+\@dblfpsep 12\p@ plus 0fil
+\@dblfpbot 0\p@ plus 3fil
+\marginparpush 5\p@
+
+% ****************************************
+% * PARAGRAPHING *
+% ****************************************
+%
+\parindent 12\p@
+\parskip \z@ plus .1\p@
+\partopsep 0\p@ plus 1\p@
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+\clubpenalty=0
+\widowpenalty=10000
+
+% ****************************************
+% * SKIPS *
+% ****************************************
+%
+\newskip\@indentskip
+\newskip\smallindent
+\newskip\@footindent
+\newskip\@leftskip
+\@indentskip=1.25pc
+\smallindent=\parindent
+\@footindent=\smallindent
+\@leftskip=\z@
+
+
+% ****************************************
+% * SECTIONS *
+% ****************************************
+%
+\def\Section{\@startsection{newarticle}{0}{\z@}
+ {-24\p@ \@plus -12\p@ \@minus -.1\p@}
+ {12\p@ \@plus 1\p@}
+ {\raggedright\Large\bfseries}}
+\def\SSection{\@startsection{newarticle}{0}{\z@}
+ {-24\p@ \@plus -12\p@ \@minus -.1\p@}
+ {12\p@ \@plus 1\p@}
+ {\raggedright\Large\bfseries}[\@title]}
+\def\section{%\typeout{** section!}%
+\@startsection {section}{1}{\z@}
+ {-12\p@ \@plus -6\p@ \@minus -.1\p@}
+ {6\p@}
+ {\raggedright\large\bfseries}}
+\def\subsection{\@startsection{subsection}{2}{\z@}
+ {-4\p@ \@plus -2\p@ \@minus -.1\p@}
+ {0.1\p@ \@plus 2\p@}
+ {\raggedright\normalsize\itshape}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}
+ {-6\p@ \@plus -3\p@ \@minus -1\p@}
+ {0.1\p@ \@plus 2\p@}
+ {\raggedright\normalsize\it}}
+\def\paragraph{\@startsection{paragraph}{4}{\z@}
+ {12\p@ \@plus 2.25\p@ \@minus -1\p@}
+ {-0.5em}
+ {\normalsize\bfseries}}
+\def\subparagraph{\@startsection{subparagraph}{5}{\z@}
+ {12\p@ \@plus 2.25\p@ \@minus 1\p@}
+ {-0.5em}
+ {\normalsize\it}}
+\setcounter{secnumdepth}{-1}
+%
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\thesection{\Alph{section}}}
+
+% ****************************************
+% * PARTS & SECTIONS NUMBERS *
+% ****************************************
+%
+\newcounter{newarticle}
+\@newctr{section}[newarticle]
+\def\thenewarticle {\Alph{newarticle}}
+
+% ****************************************
+% * LISTS *
+% ****************************************
+%
+\leftmargini \@indentskip
+\leftmarginii 1pc
+\leftmarginiii 1pc
+\leftmarginiv 1pc
+\leftmarginv 1pc
+\leftmarginvi 1pc
+\leftmargin\leftmargini
+\labelsep 0.5em
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+%
+% label macros for Range-Left and Range-Right labels
+\def\makeRLlabel#1{\rlap{#1}\hss}
+\def\makeRRlabel#1{\hss\llap{#1}}
+%
+\def\@listI{\leftmargin\leftmargini
+ \parsep \z@
+ \topsep 2\p@ \@plus 1\p@ \@minus 1\p@
+ \itemsep \z@ \@plus .1\p@
+}
+\let\@listi\@listI
+\@listi
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 2\p@ \@plus 1\p@ \@minus 1\p@
+ \parsep \z@
+ \itemsep \z@ \@plus .1\p@
+}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 1\p@ \@plus 1\p@ \@minus 1\p@
+ \parsep \z@
+ \partopsep \z@
+ \itemsep \topsep
+}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep
+}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep
+}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep
+}
+%
+% ITEMIZE
+\def\itemize{\ifnum \@itemdepth >3 \@toodeep
+ \else \advance\@itemdepth \@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {\let\makelabel\makeRRlabel}%
+ \fi}
+\def\labelitemi{$\bullet$}
+\def\labelitemii{--}
+\def\labelitemiii{$\cdot$}
+\def\labelitemiv{*}
+%
+% ENUMERATE with optional argument to set left margin...
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep \else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \fi
+ \@ifnextchar [{\@enumeratetwo}{\@enumerateone}%
+}
+\def\@enumeratetwo[#1]{%
+ \list{\csname label\@enumctr\endcsname}%
+ {\settowidth\labelwidth{[#1]}
+ \leftmargin\labelwidth \advance\leftmargin\labelsep
+ \usecounter{\@enumctr}
+ \let\makelabel\makeRRlabel}
+}
+\def\@enumerateone{%
+ \list{\csname label\@enumctr\endcsname}%
+ {\usecounter{\@enumctr}
+ \let\makelabel\makeRRlabel}}
+%
+\def\labelenumi{\theenumi}
+\def\theenumi{\arabic{enumi}.}
+\def\labelenumii{(\theenumii)}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\theenumiii}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\theenumiv}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+% ARRAY AND TABULAR
+%
+\arraycolsep 5\p@
+\tabcolsep 6\p@
+\arrayrulewidth .5\p@
+\doublerulesep 1.5\p@
+
+% ****************************************
+% * TITLES AND ABSTRACT *
+% ****************************************
+%
+\def\BASKvol#1{\gdef\BASK@vol{#1}}
+\gdef\BASK@vol{?}
+\def\BASKno#1{\gdef\BASK@no{#1}}
+\gdef\BASK@no{?}
+\def\makeBSKtitle{\par
+ \begingroup
+ \vspace*{-\headheight}%
+ \@maketitle
+ \bigskip\hrule\bigskip
+ \thispagestyle{plain}
+ \endgroup
+ \let\maketitle\relax
+ \let\@maketitle\relax
+}
+\newbox\BSKbox
+\def\@maketitle{%
+\centerline{{\bfseries \scaletowidth{\textwidth}{B\,a\,s\,k\,e\,r\,v\,i\,l\,l\,e}}}
+ \medskip
+ \hbox to \textwidth{\bfseries The Annals of the UK \TeX\ Users'
+ Group\hfill Editor: Sebastian Rahtz\hfill Vol.~\BASK@vol\ No.~\BASK@no}
+ \smallskip\hbox to \textwidth{\bfseries ISSN 1354--5930
+\hfill \thismonth\ \thisyear}
+ \medskip
+ \noindent Articles may be submitted via electronic mail to
+ \texttt{baskerville@tex.ac.uk}, or on MSDOS-compatible discs,
+ to Sebastian Rahtz, Elsevier Science Ltd, The Boulevard, Langford
+Lane, Kidlington, Oxford OX5 1GB, to whom any correspondence
+concerning \BV\ should also be addressed. This \BV\ is set in Monotype
+Baskerville, with Computer Modern Typewriter for literal
+text, and printed on a Xerox Docutech. Production and distribution is
+undertaken in Cambridge by Robin Fairbairns. Back
+issues from the previous 12 months may be ordered from \ukt\ for
+\pounds2 each; earlier issues are archived on \textsc{ctan} in
+\texttt{usergrps/uktug}.
+
+Please send \ukt\ subscriptions, and book or software orders, to
+Peter Abbott, 1 Eymore Close, Selly Oak, Birmingham B29 4LB.
+Fax/telephone: 0121 476 2159. Email
+enquiries about \ukt\ to \protect\texttt{uktug-enquiries@tex.ac.uk}.
+ }
+
+\def\and{\end{tabular}\vskip 6pt\par
+ \begin{tabular}[t]{@{}l@{}}}
+%
+\def\abstract{\@abstract}
+\def\endabstract{\end{quote}}
+\def\@abstract{\subsection*{Summary}\begin{quote}}
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+\mark{{}{}}
+\gdef\@author{}
+\def\author{\@ifnextchar [{\@authortwo}{\@authorone}}
+\def\@authortwo[#1]#2{\gdef\@author{#2}\gdef\@shortauthor{#1}}
+\def\@authorone#1{\gdef\@author{#1}\gdef\@shortauthor{#1}}
+\gdef\@shortauthor{Dummy Author}
+\gdef\@title{}
+\gdef\@longtitle{}
+\def\title{\@ifnextchar [{\@titletwo}{\@titleone}}
+\def\@titletwo[#1]#2{\gdef\@title{#1}\gdef\@longtitle{#2}}
+\def\@titleone#1{\gdef\@title{#1}\gdef\@longtitle{#1}}
+\gdef\@longtitle{Dummy Title}
+
+%
+% \ps@empty defined in LATEX.TEX
+%
+\def\ps@plain{\let\@mkboth\markboth
+ \def\@oddhead{}
+ \def\@evenhead{}
+ \def\@oddfoot{\rm \hfil --\thepage--\hfil}
+ \def\@evenfoot{\rm \hfil --\thepage--\hfil}
+}
+\def\ps@headings{\let\@mkboth\markboth
+ \def\@oddhead{\hfill\emph{\@title}\hfill}
+ \def\@oddfoot{\rm \hfil --\thepage--\hfil}
+ \def\@evenhead{\it Baskerville \hfill Volume \BASK@vol, Number \BASK@no}
+ \def\@evenfoot{\rm \hfil --\thepage--\hfil}
+}
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+ \def\@oddhead{\it\@shortauthor \hfill \@title}
+ \def\@oddfoot{\rm \hfil --\thepage--\hfil}
+ \def\@evenhead{\it Baskerville \hfill Volume \BASK@vol, Number \BASK@no}
+ \def\@evenfoot{\rm \hfil --\thepage--\hfil}
+ \def\sectionmark##1{}
+ \def\subsectionmark##1{}}
+
+% ****************************************
+% * TABLE OF CONTENTS, ETC. *
+% ****************************************
+%
+\def\@pnumwidth{1.4pc}
+\def\@tocrmarg {2pc}
+\def\@dotsep{10}
+\setcounter{tocdepth}{0}
+%\def\tableofcontents{\@restonecolfalse
+% \if@twocolumn\@restonecoltrue\onecolumn\fi
+% \section*{Contents} \@starttoc{toc}
+% \if@restonecol\twocolumn\fi \par\vspace{12\p@}}
+\def\tableofcontents{\Section*{Contents}\@starttoc{toc}}
+\def\l@part#1#2{\addpenalty{-\@highpenalty}
+ \addvspace{2.25em \@plus 1\p@}
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ {\normalsize\rm
+ \leavevmode \hspace*{3pc}
+ #1\hfil \hbox to\@pnumwidth{\hss \ }}\par
+ \nobreak \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}\endgroup}
+\def\dotfil{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfil\kern\z@}
+\def\l@newarticle#1#2{\addpenalty{\@secpenalty}
+% \addvspace{1.0em \@plus 1\p@}
+ \@tempdima 1.5em % width of box holding section number
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode
+ #1\dotfil \hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+\def\l@section{\@dottedtocline{1}{\z@}{1.5em}}
+\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\def\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+\def\listoffigures{\@restonecolfalse
+ \if@twocolumn\@restonecoltrue\onecolumn\fi
+ \section*{List of Figures\@mkboth{List of Figures}{List of Figures}}
+ \@starttoc{lof} \if@restonecol\twocolumn\fi}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\listoftables{\@restonecolfalse
+ \if@twocolumn\@restonecoltrue\onecolumn\fi
+ \section*{List of Tables\@mkboth{List of Tables}{List of Tables}}
+ \@starttoc{lot} \if@restonecol\twocolumn\fi}
+\let\l@table\l@figure
+
+% ****************************************
+% * BIBLIOGRAPHY *
+% ****************************************
+%
+\def\thebibliography#1{\section*{\refname}
+ \small
+\list
+ {\@biblabel{\arabic{enumiv}}}{\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \def\theenumiv{\arabic{enumiv}}}%
+ \def\newblock{\hskip .11em plus.33em minus.07em}%
+ \parskip\z@ \@plus .1pt\relax
+ \clubpenalty4000\widowpenalty4000\sfcode`\.=1000\relax}
+\def\refname{References}
+\def\endthebibliography{%
+ \def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
+ \endlist}
+
+\setcounter{topnumber}{2}
+\def\topfraction{.9}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.9}
+\setcounter{totalnumber}{3}
+\def\textfraction{.1}
+\def\floatpagefraction{.75}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.9}
+\def\dblfloatpagefraction{.75}
+
+\long\def\@makecaption#1#2{\vskip 6\p@
+ \setbox\@tempboxa\hbox{\small{\bfseries #1.} #2}
+ \ifdim \wd\@tempboxa >.8\hsize
+ \hbox to\hsize{\hfill\parbox{.8\hsize}{\small{\bfseries #1.} #2\par}\hfill}
+ \else
+ \hbox to\hsize{\hfill\box\@tempboxa\hfill}
+ \fi
+ \vskip 6\p@
+}
+
+
+% --- -----------------------------------------------------------------
+% --- Shorthands for non-English abbreviations and words.
+% --- -----------------------------------------------------------------
+
+\def\foreign{\em}
+\def\etc{{\foreign etc.}} % etc.
+\def\eg{{\foreign e.g.~}\ignorespaces} % e.g.
+\def\egc{{\foreign e.g.,~}\ignorespaces} % e.g.,
+\def\ie{{\foreign i.e.~}\ignorespaces} % i.e.
+\def\iec{{\foreign i.e.,~}\ignorespaces} % i.e.,
+
+% --- -----------------------------------------------------------------
+% --- Tex-related mnemonics.
+% --- -----------------------------------------------------------------
+
+
+\def\La{\protect\p@La}
+\def\p@La{L%
+ {\setbox0\hbox{T}%
+ \setbox2\vbox to\ht0{\kern.07ex\hbox{%
+ \csname S@\f@size\endcsname
+ \math@fontsfalse
+ \fontsize\sf@size\z@\selectfont
+ A}%
+ \vss}%
+ \kern-.5\wd2
+ \box2
+ }}
+\def\AllTeX{(\La)\TeX}
+\def\AmSTeX{$\mathcal{A}\kern-.1667em\lower.5ex\hbox{$\mathcal{M}$}\kern-.125em S$\TeX}
+\def\LamsTeX{$\mathcal{L}\mathcal{A}%
+\kern-.1667em\lower.5ex\hbox{$\mathcal{M}$}\kern-.125em S$\TeX}
+\def\BibTeX{{\rmfamily B\kern-.05em\textsc{i\kern-.025em b}\kern-.08em\TeX}}
+\def\INRStex{T\kern-.1667em\lower.5ex\hbox{\^E}\kern-.125emX}
+\def\JTeX{\leavevmode\hbox{\lower.5ex\hbox{J}\kern-.18em\TeX}}
+\def\LAMSTeX{L\kern -0.4 em \raise 0.3 ex \hbox {$\scriptstyle \mathcal{A}$}%
+ \kern -0.25 em \lower 0.4 ex \hbox {$\cal M$}%
+ \kern -0.1 em \hbox {$\mathcal{S}$}-\TeX}
+\def\AMSLaTeX{{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox{$\mathcal{M}$}\kern-.125em
+ $\mathcal{S}$-\LaTeX}}
+\def\AMS{{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox{$\mathcal{M}$}\kern-.125em
+ $\mathcal{S}$}}
+\def\MakeIndex{{\itshape MakeIndex}}
+\def\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC}
+\def\PiCTeX{\PiC\kern-.11em\TeX}
+% SliTeX from the SliTeX Documentation
+\def\SLiTeX{S\kern-.065em L\kern-.18em\raise.32ex\hbox{\textsc{i}}\kern-.03em\TeX}
+\let\SliTeX\SLiTeX
+\def\POBox{P.\thinspace O.~Box }
+\def\TeXhax{\TeX hax}
+\def\TeXXeT{\TeX--X\kern-.125em\lower.5ex\hbox{E}\kern-.1667emT}
+\def\TUB{\textsl{TUGboat}}
+\def\DVI{\texttt{dvi}}
+\def\VF{\textsc{vf}}
+\def\BV{\emph{Baskerville}}
+\def\UKTUG{UK \TeX\ Users' Group}
+\def\ukt{UKTUG}
+\let\shortuktug\ukt
+\def\PS{\textsc{PostScript}}
+\newcommand{\payuk}{UK TeX Users' Group}
+\newcommand{\Newline}{\\[0.7\baselineskip]}
+\newcommand{\FullLine}[1]{%
+ \makebox[\linewidth][l]{#1\hrulefill}\Newline}
+\newcommand{\HalfLine}[1]{%
+ \makebox[0.5\linewidth][l]{#1\hrulefill}}
+
+\def\Dash{---}
+
+
+% --- -----------------------------------------------------------------
+% --- Additional commands.
+% --- -----------------------------------------------------------------
+
+\let\maketitle\make@articletitle
+\def\make@articletitle{\Section[\@title]{\@longtitle}}
+
+\def\article{%
+ \setcounter{figure}{0}%
+ \setcounter{table}{0}%
+ \Section[\@title]{\@longtitle}%
+ \let\maketitle\relax
+ \markright{\@shortauthor\hfill\@longtitle}%
+}
+%
+% Article is when the title is double column
+\def\Article{%
+ \setcounter{figure}{0}%
+ \setcounter{table}{0}%
+ \begin{multicols}{2}[\SSection{\@longtitle}]%
+ \let\maketitle\relax
+ \markright{\@shortauthor\hfill\@longtitle}%
+}
+% Article is when the title is double column
+\def\FArticle{%
+ \setcounter{figure}{0}%
+ \setcounter{table}{0}%
+ \begin{multicols}{2}[\Section*{\@longtitle}]%
+}
+\def\endarticle{\@signature
+ \gdef\@author{\mbox{}}}
+
+\def\endArticle{\@signature
+ \gdef\@author{\mbox{}}\end{multicols}%
+}
+\let\endFArticle\endArticle
+\def\newarticlemark#1{}
+
+% --- Macros for cross-referencing tables and figures.
+
+\def\figref#1{Figure~\ref{#1}}
+\def\tabref#1{Table~\ref{#1}}
+
+% --- Output the attribution at the end of an article.
+\def\emptysig{}
+\def\@signature{%
+ \ifx\@author\emptysig\else
+ \begin{flushright}\begin{tabular}{@{}r@{}}\@author\end{tabular}%
+ \end{flushright}\fi}
+
+\def\signature#1{\begin{flushright}
+ \begin{tabular}{@{}r@{}}#1\end{tabular}%
+ \end{flushright}}
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+%
+\ps@headings
+\pagenumbering{arabic}
+\sloppy
+\flushbottom
+\frenchspacing
+
+%\extrarowheight2\p@
+\setlength{\multicolsep}{6\p@}
+\let\sl\it
+\newcommand{\meta}[1]{{$\langle$\itshape #1\/$\rangle$}}
+\def\Gin@extensions{.eps,.ps,.eps.gz,.ps.gz,.eps.Z,.pz,.psz}
+\def\Gin@sepdefault{.}%
+\@namedef{Gin@rule@.psz}#1{{.eps}{.bb}{`gunzip -c #1}}
+
+% no rule in footcols
+
+\def\@makecol@ftn{%
+ \vskip \skip\footins
+ \footnoterule
+ \footnotesize
+ \multicolsep\z@\relax
+ \hsize\textwidth
+ \@parboxrestore
+ % {\showoutput\batchmode\showbox\footins}%
+ \raggedcolumns
+ \bgroup \columnseprule 0\p@
+ \begin{multicols}{\the\ftn@col@number}%
+ \unvbox \footins
+ \end{multicols}%
+ \egroup
+}
+%
+% available for inter-article dinglines
+%
+\def\Dings{\nopagebreak{\footnotesize\dingline{167}}}
+%
+\@twosidetrue \@mparswitchtrue
+\endinput
+%%
diff --git a/usergrps/uktug/baskervi/6_2/baskerv.diff b/usergrps/uktug/baskervi/6_2/baskerv.diff
new file mode 100644
index 0000000000..347c37101c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/baskerv.diff
@@ -0,0 +1,30 @@
+31d30
+< \RequirePackage[T1]{fontenc}
+40a40,62
+> \let\FAQverbFamily\ttfamily
+> \DeclareRobustCommand{\FAQverb}[2]{{%
+> \ifvmode\leavevmode\fi
+> \lefthyphenmin=256\setlanguage\language
+> \FAQverbFamily\hyphenchar\the\font`#1\relax
+> \def\@tempa{#2}%
+> \expandafter\@faq@strip\meaning\@tempa\@faq@strip
+> \hyphenchar\the\font\m@ne
+> }\setlanguage\language}
+> \def\@faq@strip#1->#2\@faq@strip{#2}
+> %
+> % Document markup:
+> %
+> \makeatother % because @ is a delimiter here, it had better have the
+> % same catcode as it will when the macro's invoked
+> \def\Email|#1@#2|{\FAQverb\-{#1@}\penalty10\FAQverb\.{#2}} % email
+> \makeatletter
+> \def\FTP|#1|{\FAQverb\.{#1}} % FTP site
+> \def\File|#1|{\FAQverb\/{#1}} % file name
+> \def\CTAN{\FAQverb\/} % CTAN path
+> \def\Newsgroup|#1|{\FAQverb\.{#1}} % newsgroup
+> \def\URL|#1://#2/#3|{\FAQverb\.{#1://#2/}\penalty10\FAQverb\/{#3}}
+> \def\path|#1|{\FAQverb\/{#1}} % generic path
+560c582
+< \def\TUB{\textsl{TUGboat}}
+---
+> \def\TUB{\emph{TUGboat}}
diff --git a/usergrps/uktug/baskervi/6_2/bits.sty b/usergrps/uktug/baskervi/6_2/bits.sty
new file mode 100644
index 0000000000..e7a8a73aa9
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bits.sty
@@ -0,0 +1,24 @@
+\let\FAQverbFamily\ttfamily
+\DeclareRobustCommand{\FAQverb}[2]{{%
+ \ifvmode\leavevmode\fi
+ \lefthyphenmin=256\setlanguage\language
+ \FAQverbFamily\hyphenchar\the\font`#1\relax
+ \def\@tempa{#2}%
+ \expandafter\@faq@strip\meaning\@tempa\@faq@strip
+ \hyphenchar\the\font\m@ne
+}\setlanguage\language}
+\def\@faq@strip#1->#2\@faq@strip{#2}
+%
+% Document markup:
+%
+\makeatother % because @ is a delimiter here, it had better have the
+ % same catcode as it will when the macro's invoked
+\def\Email|#1@#2|{\FAQverb\-{#1@}\penalty10\FAQverb\.{#2}} % email
+\makeatletter
+\def\FTP|#1|{\FAQverb\.{#1}} % FTP site
+\def\File|#1|{\FAQverb\/{#1}} % file name
+%\def\CTAN{\FAQverb\/} % CTAN path
+\def\Newsgroup|#1|{\FAQverb\.{#1}} % newsgroup
+%\def\URL|#1://#2/#3|{\FAQverb\.{#1://#2/}\penalty10\FAQverb\/{#3}}
+%\def\path|#1|{\FAQverb\/{#1}} % generic path
+\def\tubissue#1#2{\TUB~#1, no.~#2}
diff --git a/usergrps/uktug/baskervi/6_2/bv62.lst b/usergrps/uktug/baskervi/6_2/bv62.lst
new file mode 100644
index 0000000000..5f16c48cf0
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bv62.lst
@@ -0,0 +1,69 @@
+ *File List*
+ bask62.cls 1996/02/06 v3.12 Baskerville newsletter class
+ article.cls 1995/12/20 v1.3q Standard LaTeX document class
+ size10.clo 1995/12/20 v1.3q Standard LaTeX file (size option)
+ textfit.sty 1994/04/15
+ pifont.sty 1995/08/16 5.2 Pi font PSNFSS2e package
+ Upzd.fd
+ Upsy.fd
+ T1mbvx.fd 1996/01/28 Fontinst v1.504 font definitions for T1/mbvx.
+ fontenc.sty 1994/12/14 v1.7f Standard LaTeX package
+ T1enc.def 1994/12/14 Standard LaTeX file
+graphicx.sty 1995/12/06 v0.6h Enhanced LaTeX Graphics (DPC,SPQR)
+ keyval.sty 1995/09/21 v1.09 key=value parser (DPC)
+graphics.sty 1996/02/20 v0.7h Standard LaTeX Graphics (DPC,SPQR)
+ trig.sty 1994/10/16 v1.08 sin cos tan (DPC)
+graphics.cfg
+ dvips.def 1995/12/04 v2.14 Driver-dependant file (DPC,SPQR)
+multicol.sty 1995/10/19 v1.5l multicolumn formatting (FMi)
+ mflogo.sty 1994/05/21 1.2 Contributed LaTeX2e package
+ bits.sty
+ url.sty 1996/02/06 ver 1.1 Verb mode for urls, email addresses, and f
+ile names
+tub-bits.sty
+ relsize.sty 1995/03/15 ver 2.0
+ bv62.sty
+delarray.sty 1994/03/14 v1.01 array delimiter package (DPC)
+ array.sty 1995/11/19 v2.3d Tabular extension package (FMi)
+ hhline.sty 1994/05/23 v2.03 Table rule package (DPC)
+typehtml.sty 1996/03/28 v0.11 HTML printer (DPC)
+ exscale.sty 1995/11/27 v2.1f Standard LaTeX package exscale
+shortvrb.sty 1995/11/03 v1.9v Standard LaTeX documentation package (FMi)
+ spqr.sty
+ pstcol.sty
+pstricks.sty 1994/07/12 all pstricks tools
+pstricks.tex
+gradient.tex
+pst-plot.tex
+pst-coil.tex
+textpath.tex
+charpath.tex
+pst-node.tex
+ pst-3d.tex
+ pst2eps.tex
+ boxfill.tex
+ pstree.tex
+ multido.tex
+ color.sty 1995/12/07 v0.3l Standard LaTeX Color (DPC)
+ color.cfg
+dvipsnam.def 1995/12/04 v2.14 Driver-dependant file (DPC,SPQR)
+fancyvrb.sty 1996/01/01
+ ifthen.sty 1995/04/25 v1.0k Standard LaTeX ifthen package (DPC)
+ calc.sty 1995/04/10 v4.0c (TEST)
+longtable.sty 1996/01/31 v3.17 Multi-page Table package (DPC)
+ spqr2.sty
+ syntax.sty 1996/05/03 1.06 Syntax typesetting (MDW)
+ xspace.sty 1994/11/15 v1.03 Space after command names (DPC)
+ T1cmtt.fd 1995/12/20 v2.4f Standard LaTeX font definitions
+ T1cmss.fd 1995/12/20 v2.4f Standard LaTeX font definitions
+ bv62ed.tex
+ grovel.tex
+ ltour2.tex
+ctan-dev.tex
+texpkgs-bit.eps Graphic file (type eps)
+ bv62htm.tex
+ bv62agm.tex
+ pstrix2.tex
+ syntart.tex
+ bv62cd.tex
+ glean.tex
diff --git a/usergrps/uktug/baskervi/6_2/bv62.sty b/usergrps/uktug/baskervi/6_2/bv62.sty
new file mode 100644
index 0000000000..a137a26a82
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bv62.sty
@@ -0,0 +1,38 @@
+% For DPC's tour
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newenvironment{filedesc}{%
+ \description
+ \renewcommand\makelabel[1]{\hspace\labelsep
+ \normalfont\ttfamily ##1}}
+ {\enddescription}
+
+\let\package\textsf % as in \package{longtable} package
+\let\class\textsf
+\def\env#1{\envx#1*\relax}
+\def\envx#1*#2{%
+ \textsf{#1\ifx#2*\raise-.6ex\hbox{*}\fi}}
+
+\RequirePackage{delarray,hhline}
+
+%% For typehtml article
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage[html3,subsection*,bigint]{typehtml}
+\RequirePackage{shortvrb}
+%\MakeShortVerb{\|}
+
+
+\def\smallv{\def\verbatim@font{\normalfont\ttfamily\small}}
+
+
+\DeclareRobustCommand\acro[1]{{%
+ \ifx\@currsize\normalsize\small\else
+ \ifx\@currsize\footnotesize\tiny\else
+ \ifx\@currsize\large\normalsize\else
+ \fi\fi\fi
+ \MakeUppercase{#1}}}
+
+
+% General
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Shut up
+\setlength\vfuzz{2pt}
diff --git a/usergrps/uktug/baskervi/6_2/bv62.sty.R b/usergrps/uktug/baskervi/6_2/bv62.sty.R
new file mode 100644
index 0000000000..f0f41286fc
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bv62.sty.R
@@ -0,0 +1,21 @@
+
+% For DPC's tour
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newenvironment{filedesc}{%
+ \description
+ \renewcommand\makelabel[1]{\hspace\labelsep
+ \normalfont\ttfamily ##1}}
+ {\enddescription}
+
+\let\package\textsf % as in \package{longtable} package
+\let\class\textsf
+\def\env#1{\envx#1*\relax}
+\def\envx#1*#2{%
+ \textsf{#1\ifx#2*\raise-.6ex\hbox{*}\fi}}
+
+\RequirePackage{delarray,hhline}
+
+% General
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Shut up
+\setlength\vfuzz{2pt}
diff --git a/usergrps/uktug/baskervi/6_2/bv62agm.tex b/usergrps/uktug/baskervi/6_2/bv62agm.tex
new file mode 100644
index 0000000000..2925934c8c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bv62agm.tex
@@ -0,0 +1,9 @@
+\title{A date for your diary}
+\begin{Article}
+The Annual General Meeting of the UK \TeX\ Users Group will
+be held on October 16th at the University of Warwick. The AGM
+will include a review of new developments, including a report
+back from the TUG Dubna conference, and the chance to win
+a UK \TeX\ Archive 10th anniversary t-shirt (original and still the best!).
+%Come and offer to edit \BV\dots
+\end{Article}
diff --git a/usergrps/uktug/baskervi/6_2/bv62cd.tex b/usergrps/uktug/baskervi/6_2/bv62cd.tex
new file mode 100644
index 0000000000..78eab58e33
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bv62cd.tex
@@ -0,0 +1,45 @@
+%\usepackage{mflogo}
+\title{Plug and play CD}
+\author{Sebastian Rahtz}
+\begin{Article}
+GUTenberg and UKTUG, in collaboration with TUG and NTG, are producing
+a plug-and-play CD-ROM based on Thomas Esser's \textrm{te}\TeX{}
+distribution. It adheres to the TDS (\TeX{} Directory Structure) tree
+structure (see, for instance, TUGboat 16(4), pages 401--412).
+
+Presently Unix executables for the following platform/operating system
+combinations are included: Digital alpha-osf (2.0 and 3.2), Hewlett
+Packard hpux (9.01 and 10.01), Intel i386 bsdi2.0, freebsd (2.0.5 and
+2.1.0) netbsd (1.0 and 1.1), Intel i486 (linux and linuxaout), m68k
+(linux, linuxoldld, and nextstep3), mips (irix 5.2, 5.3 and ultrix4.4)
+IBM rs6000 (aix3.2 and aix4.1.1) Sparc Solaris (2.4 and 2.5) and Sunos
+4.1.3.
+
+As the CD-ROM uses the ISO 9660 standard, the platform-independent
+files can, in principle be read on all operating systems which are
+compatible with that format. To preserve the complete Unix/Posix file
+system information the file tree was recorded with the Rock Ridge
+extensions, so that long filenames are honoured. Some operating
+systems, most notably MS-DOS, do not support these extensions, so that
+only the ISO 9660 filenames are used, but with this limitation, the
+files are readable on all systems. At present the complete \LaTeX{}
+Dec. 1995, patch level 2 base and all contributed files are included,
+plus the most-used font families (CM, DC 1.2, TC, AMS, Euler, psnfss).
+We plan to publish an updated CD-ROM twice a year (more or less
+coordinated with new \LaTeX{} releases), and we hope to add more
+packages and fonts in the next issues.
+
+The complete source of the te\TeX{} package is included, which has the
+source of \TeX, \MF, and all the \TeX{} utilities. Documentation for
+all of the macro packages on the CD-ROM is included in DVI and PDF
+format, as well as the original source. A large fraction of the
+documentation has also been converted to HTML.
+
+The CD-ROM will be officially presented on May 29th in Nanterre
+(Paris), where GUTenberg organises a seminar on \TeX{} distributions.
+The CD will be available to members of \TeX\ user groups at \pounds15
+and to non-members at \pounds25, through the normal channels.
+
+
+\end{Article}
+
diff --git a/usergrps/uktug/baskervi/6_2/bv62ed.tex b/usergrps/uktug/baskervi/6_2/bv62ed.tex
new file mode 100644
index 0000000000..aa0b4f6fd9
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bv62ed.tex
@@ -0,0 +1,61 @@
+
+\title{Editorial}
+%\author[\mbox{}]{Malcolm Clark}
+\begin{article}
+As you will have gathered from the last edition
+of \BV, the editorship of this august organ
+now rotates around the luckless committee. Whoever
+fails to avoid our esteemed chair's eye (Robin Fairbairns
+in Ancient Mariner mode) is deemed (or doomed) to serve.
+It is a demanding , but fascinating experience.
+With the resource of the rest of the committee to call on,
+nothing is insuperable. In the longer term it will build up
+a pool of expertise which can only be to the good.
+You begin to appreciate the Rahtz' triplets even more.
+
+Sourcing material has not been difficult
+for this edition, since we are currently
+in the throes of two series -- David Carlisle's
+tour of \LaTeX, and Sebastian Rahtz' \textsf{PSTricks}
+exposition. In
+addition I had an abundance of riches
+and ended up having to pass on material. This
+does not imply that we do not continue to crave
+articles. Looking back over recent issues,
+the same faces\slash names pop up over and over
+again, although one or two contributors have
+sadly fallen by the wayside -- perhaps exhausted
+by the strain of composition.
+
+I was pleased with David Carlisle's
+other article, neatly solving
+a problem raised and discussed at last year's
+Bridewell meeting on Portable Documents -- typesetting
+from HTML documents. Robin Fairbairns' article on
+\CTAN\ is a welcome review and state of the art, together
+with some aspirations for the future. These two papers derive from the recent
+\textsl{\TeX\ and the Internet} meeting. It is unlikely
+that the group's meetings will generate enough
+material to fill these pages, so let me paraphrase what I said
+earlier: ``we need your contributions''.
+The observant will also note that committee
+members continue to generate many of the articles, but
+by way of contradiction, I'm pleased to welcome
+Mark Wooding to the pantheon of stars.
+In my darker moods, I wonder whether \BV\ is merely
+an ego trip for its writers (i.e.\ mainly the committee) and
+is unread by its intended readership -- yourselves.
+Is it wise to ask such questions?
+
+As a partial answer, let me note that
+a pleasing feature of this edition (for me) is that
+I open it (with the editorial), and close it
+(with the \textsl{Gleanings}, whose final year you may be
+relieved to know this is).
+
+I am indebted, as ever, but in particular for assistance
+with this edition to Robin Fairbairns (whose tele-presence
+was invaluable), David Carlisle and
+Sebastian Rahtz. Theirs is the glory, mine are the errors and
+misunderstandings.
+\end{article}
diff --git a/usergrps/uktug/baskervi/6_2/bv62htm.tex b/usergrps/uktug/baskervi/6_2/bv62htm.tex
new file mode 100644
index 0000000000..90eccdf8bf
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bv62htm.tex
@@ -0,0 +1,653 @@
+\MakeShortVerb{\|}
+% this needs the typehtml.sty, either from ctan or I'll send it you.
+% It is exactly the stuff from the dtx file on ctan, except the
+% examples cut down a bit to fit two column linewidth.
+
+\makeatletter
+\def\multispan{\omit\@multispan}
+\def\@multispan#1{%
+ \@multicnt#1\relax
+ \loop\ifnum\@multicnt>\@ne \sp@n\repeat}
+\def\sp@n{\span\omit\advance\@multicnt\m@ne}
+\makeatother
+
+
+\title{\textsf{typehtml}: A \LaTeX\ package to typeset HTML}
+\author{David Carlisle}
+
+\begin{Article}
+
+\section{Introduction}
+
+This package enables the processing of HTML codes. The
+\verb|\dohtml| command
+allows fragments of HTML to be placed within a \LaTeX\
+document,
+\begin{verbatim}
+\dohtml
+<html>
+html markup ...
+</html>
+\end{verbatim}
+The \verb|<html>|\ldots\verb|</html>| is \emph{required}. (It is
+anyway a good idea to have these tags in an HTML document.)
+
+The \verb|\htmlinput| command is similar, but takes a file
+name as argument. In that case the file need not necessarily start
+and end with \verb|<html>|\ldots\verb|</html>|.
+
+This package covers most of the HTML2 DTD, together with the
+mathematics extensions from HTML3.\footnote
+{The draft specification of HTML3 has expired, and the W3C group
+are currently devising a new proposed extension of HTML, so the
+mathematics typesetting part of this package may need substantial
+revision once a final specification of the HTML mathematics markup
+is agreed.}
+The rest of HTML3 may be added at a later date.
+
+Its current incarnation has not been extensively tested, having been
+thrown together during a couple of weeks in response to a
+question on \texttt{comp.text.tex} about the availability of such a
+package.
+
+The package falls into three sections. Firstly the options section
+allows a certain amount of customisation, and enabling of
+extensions. Not all these options are fully operational at present.
+Secondly comes a section that implements a kind of SGML parser. This
+is not a real conforming SGML parser (not even a close approximation
+to such a thing!) The assumption (sadly false in the anarchic WWW)
+is that any document will have been validated by a conforming SGML
+parser before it ever gets to the stage of being printed by this
+package. Finally are a set of declarations that essentially map the
+declarations of the HTML DTD into \LaTeX\ constructs.
+
+\section{Options}
+
+\subsection{HTML Level}
+The options \texttt{html2} (the default) and \texttt{html3} control the
+HTML variant supported. Using the \texttt{html3} option will use up a
+lot more memory to support the extra features, and the math entity
+(symbol) names. Against my better judgement there is also a
+\texttt{netscape} option to allow some of the non-HTML tags accepted
+by that browser.
+
+\subsection{Headings}
+The six options \texttt{chapter}, \texttt{chapter*}, \texttt{section},
+\texttt{section*}, \texttt{subsection} and \texttt{subsection*}
+determine to which \LaTeX\ sectional command the HTML element
+\texttt{h1} is mapped. (\texttt{h2}--\texttt{h6} will
+automatically follow suit.) The default is \texttt{section*}.
+
+\subsection{Double Quote Handling}
+Most HTML pages use |"| as as a quotation mark in text, for
+example:
+\begin{verbatim}
+quoted "like this" example
+\end{verbatim}
+
+This slot in the ISO latin-1 encoding is for `straight' double
+quotes. Unfortunately the Standard \TeX\ fonts in the OT1 encoding
+do not have such a character, only left and right quotes, ``like
+this''. By default this package uses the \texttt{straightquotedbl}
+option which uses the \LaTeX\ command |\textquotedbl| to render
+|"|. If used with the T1 encoded fonts |\usepackage[T1]{fontenc}|
+then the straight double quote from the current font is used. With
+OT1 fonts, the double quote is taken from the |\ttfamily| font,
+which looks \texttt{\char'042}like this\texttt{\char'042} which is fairly
+horrible, but better than the alternative which is ''like this''.
+
+The \texttt{smartquotedbl} option redefines |"| so that it produces
+alternatively an open double quote `` then a close ''. As there is a
+chance of it becoming confused, it is reset to `` at the beginning
+of every paragraph, whatever the current mode.
+
+Neither of these options affects the use of |"| as part of the SGML
+syntax to surround attribute values.
+
+In principle the package ought to have similar options dealing with
+the single quote, but there the situation is more complicated due to
+its dual use as an apostrophe, so currently the package takes no
+special precautions: all single quotes are treated as a closing
+quote/apostrophe. Also the conventions of `open' and `close' quotes
+only really apply to English. If someone wants to suggest what the
+package should do with |"| in other languages\ldots
+
+\subsection{Images}
+The default option is \texttt{imgalt} This means that all inline
+images (the HTML \texttt{img} element) are replaced by the text
+specified by the \texttt{alt} attribute, or \textsf{[image]} if no
+such attribute is specified.
+The \texttt{imggif} option\footnote{one day\dots} uses the
+\verb|\includegraphics| command so that inline images appear as
+such in the printed version.
+The \texttt{imgps} option\footnotemark[9] is similar to
+\texttt{imggif} but first replaces the extension \texttt{.gif} at
+the end of the source file name by \texttt{.ps}. This will enable
+drivers that can not include GIF files to be used, as long as the
+user keeps the image in both PostScript and Gif formats.
+
+\subsection{Hyperref}
+
+Several options control how the HTML anchor tag is treated.
+
+The default \texttt{nohyperref} option ignores \texttt{name} anchors, and
+typesets the body of \texttt{src} anchors using |\emph|.
+
+The \texttt{ftnhyperref} option is similar to \texttt{nohyperref},
+but adds a footnote showing the destination address of each link,
+as specified by the \texttt{src} attribute.
+
+If the \texttt{hyperref} option is specified, the hypertext markup
+in the HTML file will be replicated using the
+hypertext specials of the Hyper\TeX\ group. If in addition the
+\textsf{hyperref} package is loaded, the extra features of that
+package may be used, for instance producing `native PDF' specials
+for direct use by Adobe Distiller rather than producing the specials
+of the hyper\TeX\ conventions.
+
+The \texttt{dviwindo} option converts the hypertext information in
+the HTML into the |\special| conventions of Y\&Y's \emph{dviwindo}
+previewer for Microsoft Windows.
+
+\subsection{Big Integrals}
+\LaTeX\ does not treat integral signs as variable sized symbols,
+in the way that it treats delimiters such as brackets. In common
+with summation signs and a few other operators, they come in
+just two fixed sizes, a small version for inline mathematics, and a
+large version used in displays. In fact by default \LaTeX\ always
+uses the same two sizes (from the 10\,pt math extension font) even if
+the document class has been specified with a size option such as
+\texttt{12pt}, or if a size command such as |\large| has been used.
+
+The standard \textsf{exscale} package loads the math extension font
+at larger sizes if the current font size is larger than 10\,pt.
+
+The HTML3 math description explicitly states that integral signs
+should be treated like delimiters and stretch if applied to a large
+math expression. By default this package ignores this advice and
+treats integral signs in the standard way, however an option
+\texttt{bigint} does cause integral signs to `stretch' (or at least
+be taken from a suitably large font). The standard Computer Modern
+fonts use a very `sloped' integral which means that they are
+not really suitable for being stretched. Some other math fonts, for
+instance Lucida, have more vertical integral signs, and one could
+imagine in those cases making an integral sign with a `repeatable'
+vertical middle section so that it could grow to an arbitrary size, in
+the way that brackets grow.
+
+\section{Latin-1 characters}
+The SGML character entities for the ISO-Latin1 characters such as
+\texttt{\&eacute;} are recognised by this style, although as usual,
+some of them such as the Icelandic thorn character,
+\texttt{\&thorn;}, \verb|\th|, produce an error if the old `OT1'
+encoded fonts are being used. These characters will print correctly
+if `T1' encoded fonts are used, for example by declaring
+\verb|\usepackage[T1]{fontenc}|~.
+
+HTML also allows direct 8-bit input of characters according to the
+ISO-latin1 encoding, to enable this you need to enable latin-1 input
+for \LaTeX\ with a declaration such as
+\verb|\usepackage[latin1]{inputenc}|~.
+
+\section{Mathematics}
+The HTML3 \texttt{math} element is fairly well supported, including the
+\texttt{box}
+and \texttt{class} attributes. (Currently only \texttt{chem} value for class is
+supported, and as far as I can see the \texttt{box} attribute is only in the
+report, not in the DTD.) The super and subscripts are supported,
+including the shortref maps, however only the default right
+alignment is
+implemented so far. The convention described in the draft report
+for using white space to distinguish superscript positioning is
+fairly \emph{horrible}!
+
+
+The documentation that I could find on HTML3 did not include a full
+list of the entity names to be used for the symbols. This
+package currently \emph{only} defines the following entities, which
+should be enough for testing purposes at least.
+
+\begin{itemize}
+\item
+|gt| ($>$) |lt| ($<$) (Already in the HTML2 DTD)
+
+\item
+Some Greek letters.
+
+|alpha| ($\alpha$)
+|beta| ($\beta$)
+|gamma| ($\gamma$)
+|Gamma| ($\Gamma$)
+
+\item
+Integral and Sum. $\int$ grows large if the \texttt{bigint} package
+option is given.
+
+|int| ($\int$)
+|sum| ($\sum$)
+
+\item
+Braces (The delimiters (\,)[\,] also stretch as expected in the \texttt{box}
+element)
+
+|lbrace| ($\lbrace$)
+|rbrace| ($\rbrace$)
+
+\item
+A random collection of mathematical symbols:
+
+|times| ($\times$)
+|cup| ($\cup$)
+|cap| ($\cap$)
+|vee| ($\vee$)
+|wedge| ($\wedge$)
+|infty| ($\infty$)
+|oplus| ($\oplus$)
+|ominus| ($\ominus$)
+|otimes| ($\otimes$)
+
+\item
+A Minimal set of trig functions:
+
+|sin| ($\sin$)
+|cos| ($\cos$)
+|tan| ($\tan$)
+
+\item
+Also in the special context as attributes to \texttt{above} and
+\texttt{below} elements the entities:
+
+|overbrace| ($\overbrace{\quad}$)
+|underbrace| (\,\smash{$\underbrace{\quad}$}\,) and any (\TeX) math accent name.
+
+\end{itemize}
+
+\section{SGML Minimisation features}
+SGML (and hence HTML) support various minimisation features that aim
+to make it easier to enter the markup `by hand'. These features make
+the kind of `casual' attempt at parsing SGML as implemented in this
+package somewhat error prone.
+
+Two particular features are enabled in HTML. The so called \texttt{shorttag}
+feature means that the name of a tag may be omitted if it may be
+inferred from the context. Typically in HTML this is used in
+examples like
+\begin{verbatim}
+<title>A Document Title</>
+\end{verbatim}
+The end tag is shortened to |</>| and the system infers that
+\texttt{title} is the element to be closed.
+
+The second form of minimisation enabled in HTML is the \texttt{omittag}
+feature. Here a tag may be omitted altogether in certain
+circumstances.
+A typical example is the HTML list, where each list item is started
+with |<li>| but the closing |</li>| at the end of the item may be
+omitted and inferred by the following |<li>| or |</ol>| tag.
+
+This package is reasonably robust with respect to omitted
+tags. However it only makes a half hearted attempt at supporting the
+\texttt{shorttag} feature. The \texttt{title} example above would work, but nested
+elements, with multiple levels of minimised end tags will probably
+break this package.
+
+It would be possible to build a \LaTeX\ system that had full
+knowledge of the HTML (or any other) DTD and in particular the
+`content model' of every element. This would produce a more robust
+parsing system but would take longer than I was prepared to
+spend\ldots\ If you need a fully conforming SGML
+parser, it probably makes sense to use an existing one (excellent
+parsers are freely available) and then convert the output of
+the parser to a form suitable for \LaTeX. In that way all such
+concerns about SGML syntax features such as minimisation will have
+been resolved by the time \LaTeX\ sees the document.
+
+\section{Examples}
+
+
+\subsection{A section}
+This document uses the \texttt{subsection*} option.
+\begin{verbatim}
+<h1>HTML and LaTeX</h1>
+\end{verbatim}
+\dohtml
+<html>
+<h1>HTML and LaTeX</h1>
+</html>
+
+\subsection{An itemised list}
+\begin{verbatim}
+<ul>
+<li> something
+<li> something else
+</ul>
+\end{verbatim}
+\dohtml
+<html>
+<ul>
+<li> something
+<li> something else
+</ul>
+</html>
+
+\subsection{Latin1 Characters}
+\begin{verbatim}
+&eacute; &ouml;
+\end{verbatim}
+\dohtml
+<html>
+&eacute; &ouml;
+</html>
+
+\subsection{Images}
+Currently only the \texttt{alt} attribute is supported.
+\begin{verbatim}
+An image of me <img alt="DPC"
+ src="dpc.gif">
+\end{verbatim}
+\dohtml
+<html>
+This is an image of me <img alt="DPC" src="dpc.gif">
+</html>
+
+\subsection{A Form}
+\begin{verbatim}
+<form
+action=
+ "http://www.cogs/cgi-bin/ltxbugs2html"
+method=get><hr>
+You can search for all the bug reports
+about:
+<select name="category">
+ <option>AMS LaTeX</option>
+ <option>Babel</option>
+ <option>Graphics and colour</option>
+ <option>LaTeX</option>
+ <option selected>Metafont fonts</option>
+ <option>PostScript fonts</option>
+ <option>Tools</option>
+</select>
+<hr>
+</form>
+\end{verbatim}
+\dohtml
+<html>
+<form
+action="http://www.cogs.susx.ac.uk/cgi-bin/ltxbugs2html"
+method=get><hr>
+You can search for all the bug reports about: <select name="category">
+<option>AMS LaTeX</option>
+<option>Babel</option>
+<option>Graphics and colour</option>
+<option>LaTeX</option>
+<option selected>Metafont fonts</option>
+<option>PostScript fonts</option>
+<option>Tools</option>
+</select>
+<hr>
+</form>
+</html>
+
+\subsection{Styles of Mathematics}
+\begin{verbatim}
+<math>
+H_2_O + CO_2_
+</math>
+<math class=chem>
+H_2_O + CO_2_
+</math>
+<math box>
+H_2_O + CO_2_
+</math>
+<math class=chem box>
+H_2_O + CO_2_
+</math>
+\end{verbatim}
+\dohtml
+<html>
+<math>
+H_2_O + CO_2_
+</math>
+<math class=chem>
+H_2_O + CO_2_
+</math>
+<math box>
+H_2_O + CO_2_
+</math>
+<math class=chem box>
+H_2_O + CO_2_
+</math>
+</html>
+
+\subsection{Integrals}
+Stretchy integrals with the \texttt{bigint} option.
+\begin{verbatim}
+<math>
+{&int;^1^_3_<left>
+1 <over>
+{x+{1<over>x+{2<over>x+
+{3<over>x+{4<over>x}}}}}
+<right>dx}
+</math>
+\end{verbatim}
+\dohtml
+<html>
+<math>
+{&int;^1^_3_<left>
+1 <over>
+{x+{1<over>x+{2<over>x+
+{3<over>x+{4<over>x}}}}}
+<right><t>d</t> x}
+</math>
+</html>
+And the same integral with the standard integral sign.
+\begingroup
+\makeatletter
+\let\HTML@bigint\int
+\dohtml
+<html>
+<math>
+{&int;^1^_3_<left>
+1
+<over>
+{x+{1<over>x+{2<over>x+
+{3<over>x+{4<over>x}}}}}
+<right><t>d</t>x}
+</math>
+</html>
+\endgroup
+
+\subsection{Oversized delimiters}
+\begin{verbatim}
+<math>
+<box>
+ (<left>1 <atop> 2 <right>)
+</box>
+<box size=large>
+ (<left>1 <atop> 2 <right>)
+</box>
+</math>
+\end{verbatim}
+\dohtml
+<html>
+<math>
+<box>
+ (<left>1 <atop> 2 <right>)
+</box>
+<box size=large>
+ (<left>1 <atop> 2 <right>)
+</box>
+</math>
+</html>
+
+\subsection{Roots, Overbraces etc}
+\begin{verbatim}
+<math>
+<above sym=overbrace> abc </above>
+<sup>k</sup>
+&emsp;
+<root>3<of>x</root>
+<sqrt>5</sqrt>
+&emsp;
+<below sym=underline> abc </below>
+<above sym=widehat> abc </above>
+</math>
+\end{verbatim}
+\dohtml
+<html>
+<math>
+<above sym=overbrace> a bc </above>
+<sup>k</sup>
+&emsp;
+<root>3<of>x</root>
+<sqrt>5</sqrt>
+&emsp;
+<below sym=underline> abc </below>
+<above sym=widehat> abc </above>
+</math>
+</html>
+
+\subsection{Arrays}
+
+Most of the array specification is supported. Currently most of the
+effort has gone into writing the HTML parser, so currently the column
+spacing is not yet ideal, as may be seen by the following examples,
+but that is (hopefully!) a small detail that can be corrected in a
+later release.
+
+\begin{verbatim}
+<math>
+<array align=top>
+<row><item><text>col 1</text>
+ <item><text>col 2</text>
+ <item><text>col 3</text>
+ <item><text>col 4</text>
+<row><item><text>row 2</text>
+ <item> a_22_ <item>a_23_<item>a_24_
+<row><item><text>row 3</text>
+ <item rowspan=3
+ colspan=2>a_32_-a_53_
+ <item>a_34_
+<row><item><text>row 4</text>
+ <item>a_44_
+<row><item><text>row 5</text>
+ <item>a_54_
+<row><item><text>row 6</text>
+ <item align=left>al_62_
+ <item align=right>ar_63_
+ <item>a_64_
+</array>
+</math>
+\end{verbatim}
+
+\dohtml
+<html>
+<math>
+<array align=top>
+<row><item><text>col 1</text><item><text>col 2</text><item>
+<text>col 3</text><item><text>col 4</text>
+<row><item><text>row 2</text><item> a_22_ <item>a_23_<item>a_24_
+<row><item><text>row 3</text><item rowspan=3 colspan=2>
+a_32_-a_53_<item>a_34_
+<row><item><text>row 4</text><item>a_44_
+<row><item><text>row 5</text><item>a_54_
+<row><item><text>row 6</text><item align=left>
+al_62_<item align=right>ar_63_<item>a_64_
+</array>
+</math>
+</html>
+
+Repeat that element, but change the \texttt{array} attributes as follows:
+\begin{verbatim}
+<array ldelim="(" rdelim=")" labels>
+\end{verbatim}
+
+\dohtml
+<html>
+<math>
+<array ldelim="(" rdelim=")" labels>
+<row><item><text>col 1</text><item><text>col 2</text><item>
+<text>col 3</text><item><text>col 4</text>
+<row><item><text>row 2</text><item> a_22_ <item>a_23_<item>a_24_
+<row><item><text>row 3</text><item rowspan=3 colspan=2>
+a_32_-a_53_<item>a_34_
+<row><item><text>row 4</text><item>a_44_
+<row><item><text>row 5</text><item>a_54_
+<row><item><text>row 6</text><item align=left>
+al_62_<item align=right>ar_63_<item>a_64_
+</array>
+</math>
+</html>
+
+and finally an example of \texttt{colspec}
+\begin{verbatim}
+<math>
+<array colspec="R+C=L">
+<row><item>abc_11_<item>abc_12_
+ <item>abc_13_
+<row><item>a_21_<item>a_22_<item>a_23_
+<row><item>a_31_<item>a_32_<item>a_33_
+</array>
+</math>
+\end{verbatim}
+
+\dohtml
+<html>
+<math>
+<array colspec="R+C=L">
+<row><item>abc_11_<item>abc_12_<item>abc_13_
+<row><item>a_21_<item>a_22_<item>a_23_
+<row><item>a_31_<item>a_32_<item>a_33_
+</array>
+</math>
+</html>
+
+\subsection{Tables}
+HTML3 tables are not yet supported, but there is a minimal amount to
+catch simple cases.
+\def\table[#1]{\noindent\begin{minipage}\linewidth\centering}
+\def\endtable{\end{minipage}}
+
+\begin{verbatim}
+<table>
+<caption>Simple Table</caption>
+<tr><td>one <td> two
+<tr><td>a <td> b
+</table>
+\end{verbatim}
+
+\dohtml
+<html>
+<table>
+<caption>Simple Table</caption>
+<tr><td>one <td> two
+<tr><td>a <td> b
+</table>
+</html>
+
+
+\section{Concluding Remarks}
+Some parts of this package are still rather `rough'. In particular
+some of the spacing in the mathematics examples above is not perfect.
+I plan to revise the package and improve such details when (if?)
+a mathematics proposal for HTML to replace the HTML3 draft is
+published. Considering that it started off as an example just to show
+that \TeX\ is capable of processing markup languages that do not
+look like the traditional `backslash' commands, the package has proved
+surprisingly capable of handling a wide variety of `real world' HTML
+documents. Of the core HTML language the most noticeable feature not
+yet supported is graphics inclusion. I plan to support that better in
+a future release.
+
+A more difficult conceptual problem is that it is
+hard to linearise a hypertext document automatically. A typical
+`document' will consist of many HTML files interconnected by links.
+Currently one must invoke |\dohtml| or |\htmlinput| separately on each
+of these files, and manually order them into a page order for the
+typeset version. It would be nice to develop heuristics to traverse
+the HTML document and build up the linear typeset version
+automatically; however \TeX\ may not be the ideal language for writing
+a web-crawler\ldots
+
+\end{Article}
+
diff --git a/usergrps/uktug/baskervi/6_2/bv62tor.tex b/usergrps/uktug/baskervi/6_2/bv62tor.tex
new file mode 100644
index 0000000000..5b7d34dc58
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/bv62tor.tex
@@ -0,0 +1,536 @@
+
+\title{A \LaTeX\ Tour: Part 2}
+\author{David Carlisle}
+
+\begin{Article}
+
+\section{Introduction}
+In the previous article in this series I started by giving a
+description of the files in the `\package{base}' \LaTeX\ distribution.
+In part~2, I shall cover the `\package{tools}' and
+`\package{graphics}' distributions.
+These are distributed in the \File|tools| and \File|graphics|
+subdirectories of the \textsc{ctan} directory
+\path|macros/latex/packages|.
+Although these files are not part of the minimal \package{base}
+distribution they should normally be included in the \LaTeX\
+installation at any site. The \LaTeX\ book assumes that at least the
+\package{graphics} distribution is installed.
+
+The primary source for \LaTeX\ is the `\textsc{ctan}\footnote
+{\texttt{ftp.tex.ac.uk} in the UK}' network of archives, so
+if I refer to path names of files this relates to the \textsc{ctan} file
+structure. Note however that if you obtained \LaTeX\ as part of a
+`pre-packaged' \TeX\ distribution, then these files may have been
+moved (typically documentation files may be separated from \TeX\
+source files). Hopefully this will not cause any confusion.
+
+\section{The \package{Tools} Distribution}
+
+The \package{tools} distribution consists of packages written by
+individual members of the \LaTeX3 project. They are supported by the
+same mechanism as the \package{base} \LaTeX\ distribution, that is any
+problems should be reported using \File|latexbug.tex| and the \LaTeX\
+bug report database, as described last time. Note that this bug report
+system should \emph{not} be used for `contributed' packages that one
+may find in the \path|macros/latex/contrib| area of the \textsc{ctan}
+archives.
+
+\subsection{Packages Extending the \env{array} and \env{tabular}
+Environments}
+
+The first group of packages extend the functionality of the standard
+\LaTeX\ \env{array} and \env{tabular} environments. These are all
+described in Chapter~5 of \emph{The \LaTeX\ Companion}, as well of
+course as in the source `\texttt{.dtx}' files which may be processed
+by \LaTeX\ to produce typeset documentation, and optionally code
+listings.
+\begin{filedesc}
+
+\item[array]
+ Extended versions of the \env{array},
+ \env{tabular} and \env{tabular*} environments.
+ The principal advantage of
+ the versions provided by this package is that you can specify
+typesetting instructions to apply to a whole column of the table. As
+well as the usual \texttt{clr} column specifiers, one may add commands
+at the beginning of each entry with \texttt{>} and at the end of each
+entry with \texttt{<}. So a column specifier of \verb|>{\bfseries}c|
+would produce a bold, centred column of a table.
+
+The \package{array} package also provides a \verb|\newcolumntype|
+command for definining new column specifiers, in addition to the
+standard ones. This is used by some of the packages described below.
+
+\item[dcolumn]
+ Alignment on `decimal points' in tabular entries. Requires
+\package{array}. This package provides a new column specifier
+\texttt{D} which may be used to produce columns of numbers aligned on
+a decimal point `.' or some other symbol, such as `$\cdot$' or `,'.
+
+\item[delarray]
+This package requires
+the \package{array} package. It provides a mechanism for specifying
+`large delimiters' around arrays. This is most convenient for putting
+brackets around arrays that are to be aligned on their top or bottom
+row (when the `obvious' construction with \verb|\left| and
+\verb|\right| does not work). Compare the standard
+\begin{small}
+\begin{verbatim}
+\left(\begin{array}[t]{c}a\\b\end{array}\right)
+\left(\begin{array}{cc}a&b\end{array}\right)
+\end{verbatim}
+\[
+\left(\begin{array}[t]{c}a\\b\end{array}\right)
+\left(\begin{array}{cc}a&b\end{array}\right)
+\]
+with the effect produced using the \package{dcolumn} syntax.
+\begin{verbatim}
+\begin{array}[t]({c})a\\b\end{array}
+\begin{array}({cc})a&b\end{array}
+\end{verbatim}
+\[
+\begin{array}[t]({c})a\\b\end{array}
+\begin{array}({cc})a&b\end{array}
+\]
+\end{small}
+\item[hhline]
+ Finer control over horizontal rules in tables. Requires
+ \package{array}. Standard \LaTeX's \verb|\hline\hline|
+construction produces a double rule across a table, however the user
+has no control over how this rule interacts with vertical rules. Using
+the \verb|\hhline| command provided by this package, one can make
+`corners' where a double horizontal rule meets a double vertical rule,
+and other similar effects.
+
+Compare the first, standard construction with the following
+\verb|\hhline| sample:
+
+\begin{tabular}{||c|ccc||}
+\hline\hline&&&\\\hline\hline
+\end{tabular}
+\qquad
+\begin{tabular}{||c|ccc||}
+\hhline{|t:=|===:t|}&&&\\\hhline{|b:=|===:b|}
+\end{tabular}
+\item[longtable]
+ Standard \LaTeX\ tables (i.e., the \env{tabular} environment) produce
+`boxes' that can not be broken across a page. This has advantages in
+that the table can then be positioned just like a large `character'
+for instance centred by the \env{center} environment, but has the
+disadvantage that large tables need to be broken by hand to fit on the
+page. The \env{longtable} environment is essentially the same as
+\env{tabular} but produces tables that break at page boundaries, and
+has some additional commands to control `head' and `foot' lines of the
+table that are added to each page. If the \package{array} is also
+loaded, then the extra features may also be used in \env{longtable}
+column specifications. Note that \package{longtable} can deal with
+\emph{very} long tables, longer than can be stored in memory by
+\TeX\'s primitive \verb|\hline| command.
+
+The \package{longtable} package has a few quirks and features that
+mean that it is not suitable in all cases. An alternative package is
+the contributed package \package{supertab} which provides a similar
+\env{supertabular} environment.
+\item[tabularx] Defines the \env{tabularx} environment which is
+similar to \env{tabular*} but modifies column widths, not
+inter-column space, to achieve a desired table width.
+
+ One common request is to combine the features of
+\env{tabularx} with \env{longtable}, i.e., have a table across multiple
+pages, in which the widths of the `parbox' columns are calculated
+automatically. This functionality is not provided by the standard
+packages in the \package{tools} distribution, but the experimental
+package \package{ltxtable} in \path|contrib/supported/carlisle| does
+provide such an environment. (\package{ltxtable} is written by the
+same author as \package{longtable} and \package{tabularx} however
+problems with \package{ltxtable} should \emph{not} be addressed to
+the \LaTeX\ bugs system.)
+\end{filedesc}
+
+\subsection{Missing File Error Control Files.}
+Although these files (which are all generated from the same source
+file, \File|fileerr.dtx|) are distributed as part of the \LaTeX\
+distribution, they are possibly of more use when used with
+\emph{other} formats. The primitive \TeX\ behaviour if asked to input
+a non-existent file is to offer a prompt:
+\begin{small}
+\begin{verbatim}
+Please type another input file name:
+\end{verbatim}
+\end{small}
+You \emph{must} type a vaild file name to this prompt or \TeX\ just
+repeats the request. On some systems you can use a mechanism to abort
+the job (eg control-c or control-z) but there is no way to tell TeX
+to skip the input or do any other error recovery.
+
+To avoid this unpleasant loop, \LaTeX\ always checks that a file
+exists before trying to input it (unless you use the primitive
+\verb|\input filename| syntax with no \verb|{ }| around the
+argument).
+
+If you do encounter this loop using a different format, or with
+\LaTeX, by mistyping the file name on the command line, then the
+following \texttt{.tex} files provide valid filenames that you can
+easily remember which you can type to the missing file prompt. The
+actions that each of these \texttt{.tex} files takes is designed to
+mimic the actions that are possible after a \TeX\ error.
+
+\begin{filedesc}
+\item[h] Typing \texttt{h} $<$\emph{return}$>$ to the missing file
+prompt will cause \TeX\ to input \File|h.tex|, this produces a helpful
+message, and then produces the normal `error prompt' ie \texttt{?} so
+you can hit $<$\emph{return}$>$ to move on, or \texttt{x} to quit, or
+whatever.
+
+\item[s] Typing \texttt{h} $<$\emph{return}$>$ inputs \File|s.tex|
+which puts \TeX\ into `scroll mode'. This means that it will scroll
+past future errors without stopping.
+
+\item[x] Typing \texttt{h} $<$\emph{return}$>$ Causes the current
+\TeX\ run to be aborted.
+
+\item[e] The file \File|e.tex| is in fact the same as \File|x.tex| but
+allows \texttt{e} to be given as an answer to the missing file prompt
+similar to the \texttt{e} response to the error prompt (which is
+supposed to start up an editor but usually is the same as \texttt{x}).
+
+\item[\char`\ ] If the operating system allows there will also be a file
+\File|.tex| which does nothing, this will mean that just hitting
+ $<$\emph{return}$>$ in response to the missing file prompt inputs
+\File|.tex| and allows \TeX\ to proceed with the original file.
+Some operating systems object to a file with only an extension and no
+filename before the `\texttt{.}' so this option may not be available
+to you. Most \TeX\ distributions include a file \File|null.tex| which
+is also empty, so if you do not have the option of installing the file
+\File|.tex| you may type \texttt{null}~$<$\emph{return}$>$ in response
+to the missing file prompt, which will also allow \TeX\ to proceed.
+\end{filedesc}
+
+
+\subsection{Miscellaneous \package{Tools} Packages}
+\begin{filedesc}
+
+\item[afterpage]
+ Defines an \verb|\afterpage| command that saves up its argument and
+executes it after the current page (i.e., at the top of the next
+page). \LaTeX's output routine was \emph{not} designed with the idea
+that packages might want to do these kind of tricks, and so this
+package is particularly fragile. In fact it was only written as a kind
+of private joke, I noticed the comment
+``\emph{Output routines are always protected by enclosing them
+in groups, so that they do not inadvertently mess up the rest of
+\TeX}'' in the \TeX{}Book, and wanted to answer\footnote{%
+The answer incidentally is not at the top of the next page, but rather
+any of the places where the \TeX{}Book uses the magic phrase
+``\emph{exercises the page builder}''.} the question,
+``\emph{Where do you end up if you jump out of that group with
+\texttt{\string\aftergroup}?}'' despite this, judging by comments in
+\texttt{comp.text.tex}, people do seem to find the package useful\ldots
+\item[enumerate]
+ Extended version of the \env{enumerate} environment. The
+ environment is given an optional argument which controls how the
+counter is printed. For example \verb|\begin{enumerate}[a)]| would
+produce items labeled `a)' ` b)' ` c)'.
+
+\item[ftnright]
+ Place footnotes in the right hand column in two-column mode.
+ Normally \LaTeX\ places footnotes at the bottom of each
+ column. This package causes the footnotes for both columns of
+a page to be set in the
+normal text area at the end of the second column on each page.
+It currently only works with the standard two column mechanism, not
+with the mechanism of the \package{multicol} package.
+
+\item[indentfirst]
+ Indent the first paragraph of sections etc. This very small
+package just suppresses the usual \LaTeX\ mechanism which ensures that
+the first paragraph of each section is not indented.
+\item[multicol]
+Typeset text in columns (up to 10 columns per page), with the
+length of the final columns `balanced'. \BV~uses this package to
+balance the columns at the end of every article. Unlike the standard
+\verb|\twocolumn| command this package allows changing the number of
+columns part way down a page. It does have some restrictions on the
+use of floats which means that it is not suitable for all purposes.
+Also (uniquely for the files in the core \LaTeX\ distribution) this
+package has some restrictions on commercial use.
+
+\item[rawfonts]
+ Preload fonts under the old internal font names of \LaTeX\,2.09.
+ Not recomended for new packages, but may help when updating old
+ files.
+
+
+
+\item[somedefs]
+ This package is not intended to be called directly by a
+document, but may by used (via \verb|\RequirePackage|) to build a
+package in which you want the default behaviour to be to execute
+\emph{all} possible options, but that the user may execute just some
+of the options by specifying options in the \verb|\usepackage| call.
+This is used in the \package{rawfonts} package above to allow just
+some of the `old' font names to be defined rather than all of them.
+
+\item[theorem]
+ Flexible definition of `theorem-like' environments. The
+standard \verb|\newtheorem| command gives some control over the title
+and numbering of `theorem-like' declarations, but is not very
+flexible. The \package{theorem} package provides an enhanced
+declaration scheme which gives control over the fonts used in the
+heading and theorem body, and such details as whether the numbering is
+`\textbf{Theorem~1}' or `\textbf{1~Theorem}'. Recently this package
+has aquired a close cousin, the \package{amsthm} package, part of the
+`AMS-\LaTeX' collection. The AMS variant has perhaps slightly simpler
+user-syntax but is used in much the same way.
+
+\item[varioref]
+Provides \verb|\vref| and related commands. \verb|\vref| is like a
+combination of \verb|\ref| and \verb|\pageref| which produces
+references such as `Figure~2 on page~3'. However it omits the page
+number if it is on the current page, and replaces it by phrases such as
+`on the facing page' when appropriate.
+
+\item[verbatim]
+ Flexible version of \env{verbatim} environment. The standard \LaTeX\
+\env{verbatim} environment can not easily be used in the definition of
+other environments as typically the \verb|\end| of the newly defined
+environment is not recognised as such, but is treated as verbatim
+text. This package re-implements \env{verbatim} such that with some
+restrictions it can be used in other environments and commands. It
+also defines some such derived environments, for inputting and writing
+files verbatim, and for adding line numbers, and also a \env{comment}
+environment that ignores all the environment body.
+
+\item[xr]
+ The \package{xr} (e\underline{x}ternal \underline{r}eferences)
+package allows one \LaTeX\ document to access the \texttt{.aux} file of
+another. So if file \texttt{A} has a section marked with
+\verb|\label{xyz}| then file \texttt{B} may refer to that section using
+\verb|\ref{xyz}| just as if it were part of the same document. This
+requires the file \File|A.aux| created when \texttt{A} was processed
+to be still available when \texttt{B} is processed. (This package was
+originally by Jean-Pierre Drucbert, but was recoded and
+and adopted into the \package{tools} distribution.)
+
+\item[xspace]
+ One of the more common errors in \TeX documents is to use a command
+ such as \verb|\TeX| within text, but forget to follow it with
+\verb|\ | or \verb|{}|. This package defines a command
+\verb|\xspace| which may be used at the end of the definition of such
+a `text command'. It looks ahead at the next token and adds a space
+unless that token is a punctuation character.
+\end{filedesc}
+
+\subsection{Packages for Drafts and Tests}
+\begin{filedesc}
+\item[fontsmpl]
+ Package and test file for producing `font samples'. The base
+distribution contains a file \File|nfssfont.tex| that shows some small
+samples, and a character table for a given font. \File|fontsmpl.tex|
+produces a much more extensive test showing examples of all the fonts
+in a given family. If you want to devise your own similiar test suite
+you may use the \package{fontsmpl} package, following the examples in
+\File|fontsmpl.tex|.
+
+\item[layout] Defines a \verb|\layout| command that produces a half
+side `picture' of the document page settings such as
+\verb|\textwidth|, \verb|\oddsidemargin|,ldots together with a table
+of their values. This is quite useful when designing a new class file,
+as it gives a visual representation of how the various areas of the
+page for headlines, body text, marginal notes etc.\ relate to each
+other.
+\item[showkeys]
+ \LaTeX's automatic numbering and cross referencing feature is one of
+its strongest points, as it makes editing a document (and thus
+potentially changing the numbering throughout the rest of the file)
+quite painless. However one disadvantage is that when reading a
+printed draft, one sees `final' numbers rather than the symbolic names
+that are used in the source file's \verb|label| and \verb|\ref|
+command. This package makes these symbolic names, or `keys', appear in
+the
+margin\vadjust{\smash{\rlap{\kern-3pt\small\fbox{lbl}}}} in the case
+of \verb|\label|
+and \verb|\bibitem| or raised above the number, like this
+ \vbox to 0pt{\vss
+ \rlap{\vrule\raise .75em
+ \hbox{\underbar{\footnotesize\ttfamily lbl}}}}1, in the case of
+\verb|\ref| and \verb|\cite|. Some people find the raised labels above
+cross references distracting and so a package option turns them off,
+just leaving the marginal notes showing the \verb|\label| and
+\verb|\bibitem| keys.
+\end{filedesc}
+
+\section{The \package{Graphics} Distribution}
+
+\TeX\ (and the \texttt{dvi} format) is only designed to deal with
+rectangular boxes consisting or text, white space or rectangular
+rules. However it has an `escape mechanism', the \verb|\special|
+primitive command that allows processing instructions to be passed
+straight from \TeX\ (via the \texttt{dvi} file) to the `driver'
+program that is used to process (e.g., preview or print) the
+\texttt{dvi} file. \TeX\ places essentially no restrictions on what
+instructions may be passed via \verb|\special|, and so the
+possibilities are unlimited\ldots
+
+Most modern drivers can import `graphic' files of various sorts.
+Those drivers that are producing \PS\ can often do more extensive
+manipulations of the typeset text, such as scaling or rotation of the
+text, or even writing text along an arbitrary curve. Many of these
+drivers can also support colour to some extent. Unfortunately as all
+these features require that the \texttt{dvi} stores processing
+instructions for the driver, it means that the \texttt{dvi} file is
+not portable to a site that uses a different driver program. There
+have been many attempts over the years to coordinate the
+\verb|\special| syntax used by the different drivers, so that they
+would all accept a common core of processing instructions, but there
+has been notable lack of success in such efforts to date\ldots
+
+As a `next best thing' to having portability at the \texttt{dvi} level
+\LaTeX\ supplies a suite of standard graphics commands provided by the
+packages described in this section, so that at least \TeX\ source
+files should be reasonably portable. At a given site the graphics
+packages will be customised to use a suitable `back end' file that
+converts the \LaTeX\ syntax into the form required by the local
+driver. This should mean that as long as both drivers support some
+feature, such as including \PS\ graphics, a file just needs to be
+re-processed with \LaTeX\ to use the \verb|\special|s at the new site,
+the \LaTeX\ file does not need to be edited. Although this suite of
+programs was devised as part of \LaTeX, users of other \TeX\ formats,
+may use them by way of the interface available from \textsc{ctan}
+hosts in \path|macros/generic/graphics|.
+
+\subsection{Documentation}
+All the packages in this distribution are, as usual, distributed as
+documented sources in \texttt{dtx} form, however the documentation in
+these package sources is rather technical. A separate `User Guide' is
+available as \LaTeX\ source in \File|grfguide.tex| and also in
+pre-formated form in the \PS\ file \File|grfguide.ps|.
+
+The \package{color} package (which produces colours despite the
+strange spelling) and the \textsf{graphics} package are also described
+in Lamport's \LaTeX\ manual. An alternative to \File|grfguide.tex| as
+a free source of documentation is Keith Reckdahl's \emph{Using EPS
+Graphics in \LaTeXe\ Documents} distributed
+from \textsc{ctan} sites in the file \path|info/epslatex.ps|. This
+document covers the \package{graphicx} package in some depth, and also
+related contributed packages for controlling figure placement and
+captions, and the \package{psfrag} system for overlaying \LaTeX\ text
+over a \PS\ diagram.
+
+\subsection{Colour}
+
+\begin{filedesc}
+\item[color] Produce coloured effects in your document. The
+\verb|\color{red}| would make all the following text red, the similar
+\verb|\textcolor| command takes an extra argument that specifies the
+text to be coloured (by analogy with \verb|\rmfamily| and
+\verb|\textrm|).
+
+One may also produce boxes with coloured backgrounds using the
+\verb|\colorbox| command.
+
+Acurate treatment of colour is probably the feature that requires the
+most `help' from the driver program. If your dvriver was not
+specifically written to support colour then probably the
+\package{color} package will not work at all, or will be limited to
+regions of colour that fall on one page, and all the current colours
+will be `forgotten' at a page break.
+
+\item[pstcol] As described in Sebastian Rahtz' articles in \BV, the
+\package{pstricks} package of Tim~van~Zandt provides a very powerful
+interface to \PS. Unfortunately the package has some slight
+incompatibilities with the \package{color} package. If a document
+loads this \package{pstcol} package, both \package{color} and
+\package{pstricks} are loaded, and then a few internal
+\package{pstricks} functions are redefined to repair the
+incompatibility.
+\end{filedesc}
+
+\subsection{Rotation, Scaling and Graphics Inclusion}
+\begin{filedesc}
+\item[graphics] This is the core \LaTeX\ package for
+\rotatebox{15}{rotation}
+(\verb|\rotatebox|) \scalebox{3}[1]{Scaling} (\verb|\scalebox| and
+\verb|\resizebox|) of text, and the inclusion of graphics images
+(\verb|\includegraphics|). Unlike the old \LaTeX\,2.09 packages such
+as \package{psfig} the \verb|\includegraphics| command is not
+restricted to \PS\ graphics, but can include any graphics formats that
+your driver supports.
+\item[graphicx] Often when including graphics files one needs to
+specify combinations of scaling and rotation and other special
+effects. The \package{graphics} package uses standard \LaTeX\
+`positional' optional arguments which means that it is not practical
+for any command to support more than a couple of optional arguments.
+The \package{graphicx} package calls the \package{graphics} package
+internally, but offers a more powerful and friendly `named argument'
+interface in which an arbitrary number of optional keys may be set in
+one \verb|[ ]| argument. For instance to include a graphic scaled to
+half size, and rotated through 90$^\circ$ one can specify
+\begin{small}
+\begin{verbatim}
+\includegraphics[scale=.5, angle=90]{file}
+\end{verbatim}
+\end{small}
+To do the equivalent with the \package{graphics} package would require
+nested calls of \verb|\includegraphics| inside \verb|\scalebox| inside
+\verb|\rotatebox|.
+
+\item[lscape] Provides a \env{landscape} environmemt within which the
+body of every page is rotated through 90$^\circ$. The page head and
+foot are not rotated, but stay in their usual positions. It requires the
+\package{graphics} package which is used to handle the rotation.
+\item[epsfig] The obsolete \LaTeX\,2.09 did not come with a standard
+graphics package. Two popular contributed packages to include \PS\
+graphics were \package{psfig} (T.~Darrell) and \package{epsf}
+(T.~Rokicki) Sebastian Rahtz merged and extended these to produce the
+package \package{epsfig}. The \package{epsfig} package became very
+popular, especially after it was given extensive coverage in \emph{The
+\LaTeX\ Companion}. For this reason the current distribution contains
+this package called \package{epsfig} so that old documents do not
+need converting to the new system. However this \package{epsfig} is
+just a wrapper that converts the old syntax into calls to the new
+\verb|\includegraphics| commands and so should not now be used for new
+documents.
+\end{filedesc}
+
+\subsection{Driver files}
+
+As mentioned above these packages all require customisation to a
+particular driver. This may be specified either in a site
+configuration file, or
+as a package option in the document. The code for these drivers is all
+stored in `\texttt{.def}' files, so for instance the code for the
+\emph{dvips} driver (and also for \emph{xdvi} which uses the same
+\verb|\special| syntax) is stored in \File|dvips.def|. All these
+driver files are
+derived from the same source, \File|drivers.dtx|, except for the
+Textures file which is currently distributed as a separate
+\File|textures.def| contributed by Arthur Ogawa. One special
+\texttt{.def} file does not correspond to a driver,
+\File|dvipsnam.def| predefines the 60$+$ colours that are `known' to
+the \emph{dvips} driver. It may be used with other drivers as well, as
+described in the \package{color} package documentation.
+
+\subsection{Other Graphics Packages}
+
+The remaining two packages do not have code that is specific to dvi
+driver programs, and so in some sense do not really belong in the
+\package{graphics} distribution, however they are used by the
+\package{graphics} and \package{graphicx} packages. In fact the code
+of either of these packages may be extracted and used in any format
+based on plain \TeX. They do not use any \LaTeX\ specific features.
+\begin{filedesc}
+\item[keyval] The \package{graphicx} package makes use of a `named
+argument' or `key equals value' syntax as described above. The
+\package{keyval} provides a general parser for such a syntax, so this
+package is unlikely to be directly called within a document, but may
+be loaded by \verb|\RequirePackage| by any package or class file that
+needs to define commands with such a syntax.
+\item[trig] This package provides functions for calculating the
+trigonometric functions sin, cos and tan. these are used by the
+graphics package for determining the amount of space a rotated box
+will take up.
+\end{filedesc}
+
+\end{Article}
diff --git a/usergrps/uktug/baskervi/6_2/changes.tex b/usergrps/uktug/baskervi/6_2/changes.tex
new file mode 100644
index 0000000000..ceb73d350a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/changes.tex
@@ -0,0 +1,147 @@
+%% BEGIN changes.tex
+%%
+%% Changes listing for PSTricks.
+%% Run with LaTeX, with or without the NFSS.
+%%
+%% Change these for a4 paper:
+\def\paperwidth{8.5in}
+\def\paperheight{11in}
+
+\def\FileVersion{0.94-Beta}
+\def\FileDate{April 16, 1993}
+
+\documentstyle[12pt,fancybox]{article}
+
+%% PAGE PARAMETERS
+
+% Paragraphs are marked by large space rather than indentation:
+\parindent 0pt
+\parskip 6pt plus 1pt minus 1pt
+
+% No headers, 1in top margin
+\topmargin 0pt
+\headheight 0pt
+\headsep 0pt
+
+% Total bottom margin 1in, text height 9in
+\textheight 9in
+\footskip .625in
+
+% Now adjust for different paper size:
+\newdimen\mydim
+\mydim=\paperwidth
+\advance\mydim-8.5in
+\divide\mydim 2
+\advance\oddsidemargin \mydim
+\advance\evensidemargin \mydim
+\mydim=\paperheight
+\advance\mydim-11in
+\divide\mydim 2
+\advance\topmargin \mydim
+
+%% OTHER
+
+\renewcommand{\EveryVerbatimLine}[2]{}
+
+% Short meta (works in verbatim. Can't use < for other purposes.
+\catcode`\<=13 \def<#1>{{\rm\it #1\/}} % <meta> (works in verbatim)
+
+% Short verbatim.
+\catcode`\"=13
+\def"{\verb"}
+
+\catcode`\@=12 % In case I'm using AmS-LaTeX
+
+\begin{document}
+
+\begin{center}
+{\large\bf Changes listing for PSTricks}\\[6pt]
+ Version \FileVersion\\
+ \FileDate\\[6pt]
+ Timothy Van Zandt\\
+ tvz@Princeton.EDU
+\end{center}
+
+ The PSTricks package is still preliminary. The features list
+ and user interface are unlikely to change much in the short term, but
+ the internal code is not stable.
+
+\section{VERSION 0.94 (Beta)}
+
+\subsection{Incompatible changes}
+
+ \begin{enumerate}
+
+ \item "\Rnode" uses the graphics parameters "href" and "vref" to set the
+reference point, rather than having a coordinate argument.
+
+ \end{enumerate}
+
+\subsection{New features}
+
+ \begin{enumerate}
+
+ \item New graphics objects: "\pstriangle", "\psdiamond", "\psdot".
+
+ \item New box frames: "\pstribox", "\psdiabox".
+
+ \item New nodes: "\dotnode", "\dianode", "trinode".
+
+ \item Tree macros!
+
+ \item "\psmatrix": Good for math diagrams and graphs.
+
+ \item Negative nodesep and offset measure distance from center of node.
+
+ \item New node connections: "\ncbox", "\ncarcbox".
+
+ \item New node label puts: "\ncput", "\naput", "\nbput". (These replace
+"\lput", "\mput", "\aput", "\Aput", "\bput" and "\Bput", which are still
+supported.)
+
+ \item New node label puts (especially good for trees): "\thput", "\tvput",
+"\tlput", "\trput", "\taput", "\tbput". (Make "\ncline" obsolete, but this is
+still supported.)
+
+ \item "\nput", for attaching labels to nodes.
+
+ \item New arrow styles: {\catcode`\<=12 "|<->|" and "|<*->|*"}.
+
+ \item New dot styles: "diamond", "diamond*", "oplus", "ominus", "x",
+"asterisk".
+
+ \end{enumerate}
+
+\subsection{Obsolete but supported features}
+
+ \begin{enumerate}
+
+ \item "\lput", "\mput", "\aput", "\Aput", "\bput" and "\Bput".
+
+ \item "\ncline".
+
+ \end{enumerate}
+\subsection{Bug fixes}
+
+ \begin{enumerate}
+
+ \item Fixed "\ncangle" so that it would work properly with non-right angle
+values of "angleA" and "angleB".
+
+ \end{enumerate}
+
+
+\subsection{Other changes}
+
+ \begin{enumerate}
+
+ \item "\OldPsput" and "\NewPsput" are back in "pstricks.tex".
+
+ \item The <num> in "arrowsize=<dim num>", "tbarsize=<dim num>", and
+"dotsize=<dim num>" is optional (default=0).
+
+ \end{enumerate}
+
+
+\end{document}
+%% END changes.tex
diff --git a/usergrps/uktug/baskervi/6_2/ctan-dev.tex b/usergrps/uktug/baskervi/6_2/ctan-dev.tex
new file mode 100644
index 0000000000..50e364834e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/ctan-dev.tex
@@ -0,0 +1,389 @@
+
+% Things to take account of present location
+% (can all be deleted in favour of the correct bundle of packages, and
+% whatever, for journal)
+%
+\renewcommand\textfraction{0.25}
+%
+\InputIfFileExists{fontuse.cfg}{\typeout{Using config file
+ fontuse.cfg}}{}
+%
+% Things this paper definitely needs
+%\usepackage{xspace}
+\newcommand\ftpcmd{\textsf{ftp}\xspace}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+%
+\hyphenation{gobble-de-gook}
+%
+\title{\CTAN{} past and present\Dash what next?}
+\author{Robin Fairbairns}
+%\netaddress{rf@cl.cam.ac.uk}
+\begin{Article}
+
+ \section{Introduction}
+ The Comprehensive \TeX{} Archive Network (\CTAN{}) is a set of
+ `loosely consistent' archives of \TeX{} material which (together
+ with a large set of sites that mirror them) provide a single
+ (logical) point for people to acquire material for their
+ \TeX-related work. I've been a user of \CTAN{} since its inception
+ at Aston, but since the move of the Aston node to Cambridge I've
+ been involved in its management; this article derives from a talk I
+ gave at the \UKTUG{} meeting on `\TeX{} and the Internet'.
+
+% As a result, when we were
+% discussing who should talk on the topic at the \UKTUG{} `\TeX{} and
+% the Internet' meeting, for some reason everyone assumed I would
+% take the responsibility\dots
+
+ As far as \acro{UK} people are concerned, \TeX{} archiving begins
+ with the archive that Peter Abbott established at Aston back in the
+ eighties. Aston was available to people who could talk
+ coloured-book protocols over Janet.\footnote{Those protocols were
+ available to people such as myself over the public X.25 network; I
+ worked at the time in a small firm, and had European money to
+ connect to the network.}
+
+ A while after the archive was established, the UK\TeX{} mailing list
+ was started, initially as a means of propagating information about
+ the content of the archive. Volume `87' number 1 of UK\TeX{} talked
+ about accessions to the archive in the week ending 4 September 1987.
+
+ Peter's initiative was, at heart, a practical one: connection to the
+ wider Internet was a major undertaking for most people in the
+ \acro{UK}, so it made sense to collect things available `on the
+ Internet' into one place for access over Janet. Peter wrote a paper
+ about his experiences \cite{Abbott:TB10-1-59}, which he gave at
+ \acro{TUG}'89 at Stanford University. I was struck, in re-reading Peter's
+ paper, by the manpower he had to run the archive; the list of eight
+ people reads like one of the great and the good of \TeX{} in the
+ \acro{UK}.\footnote{Those on that list remark wryly about numbers of
+ cooks and quality of broth\dots}
+
+ Peter found at Stanford that the Americans were wildly jealous of
+ his achievement; at the time, whoever felt like it would establish a
+ directory or two on his or her site's \ftpcmd server to promulgate
+ their own favourite stuff. This was all very much in the spirit of
+ the ``anarchistic Internet'', but it made for a terrible to-do to
+ find any given \TeX-related item you might be looking for.
+
+% (Somewhere around that time, Don Hosek established the \texttt{ymir}
+% archive; I don't know if it was causally related to Peter's paper,
+% but it did start to offer some degree of comprehensiveness, at least
+% in macros offered.)
+
+ Whatever was its real driving force, it was after the Stanford
+ meeting that \CTAN{} appeared. George Greenwade chaired a Technical
+ Working Group on archive structures, and undertook to establish the
+ first truly comprehensive \acro{USA}n \TeX{} archive at Sam Houston
+ State University (\acro{SHSU}) in Huntsville, Texas; he reported on
+ the matter in \cite{Greenwade:TB14-3-342}. A German node was
+ established at Stuttgart, and with the advent of the \acro{JIPS}
+ service, \acro{UK} academics started to have access to the Internet,
+ and the Aston archive became a \CTAN{} node too.
+
+ The tale of Aston ended in 1994, when Peter Abbott was about to take
+ early retirement from Aston University. Since we could no longer
+ guarantee that the archive would have a protecting friend, the
+ \UKTUG{} committee\footnote{As private individuals: we don't
+ consider the archive a service offered by \UKTUG, though we claim
+ to `support' it.} sought alternative sites for it. Some obvious
+ candidates for the archive site were examined and rejected. The
+ \acro{HENSA} archive would want to split the holdings between `Unix'
+ and `\acro{PC}' sets, which do not match the structure of \CTAN's stuff
+ (\TeX{} is after all a portable program, \emph{par excellence}).
+ The national typesetting archive at Oxford couldn't offer \acro{CPU}
+ power and disc space in the required time frame. In either case,
+ management of the archive by remote `experts' could have been
+ problematic. Finally, Prof.~Roger Needham kindly agreed to a
+ proposal prepared by Sebastian Rahtz and presented to him by Martyn
+ Johnson, that Cambridge should host the archive. We completed the
+ change-over \emph{just} before Peter retired!
+
+ \section{Archive mechanisms}
+
+ I said at the start that \CTAN{} is a weakly-consistent set of
+ archives. What I mean is, that they are allowed to differ in the
+ short term, but (in principle) they will sooner or later get
+ themselves back into synchronisation. Weak consistency is a common
+ thing to find: another \TeX-related weakly consistent set is the
+ \textsf{Refdbms} archives, which maintain a set of bibliographic
+ references which can be updated anywhere with the knowledge that
+ sooner or later every instance will become a pukkah copy\Dash see,
+ for example \cite{Golding:1994}.
+
+ \CTAN{} maintains its consistency by the `archive user' sending
+ email messages to the archive users at other archives when something
+ new is installed, or something is replaced, moved or
+ deleted.\footnote{While this isn't as eccentric a proceeding as it
+ would have been in the days when I first used email, one must
+ admit it lacks a certain~\dots\ fundamental sense. I am reminded
+ of the Dilbert cartoon\Dash which I failed to save from the
+ Web\Dash where the idiot manager suggests maintaining a database
+ by email, and Dilbert and Co.~fall about at his stupidity.} The
+ receiving archive user checks that the message is from a `known'
+ source, parses it, and translates it into a one-shot mirror
+ operation. The \textsf{Perl} scripts to do all of this are
+ maintained by Rainer Sch\"opf.
+
+ That procedure deals with the `installations': when someone has
+ submitted something to the \verb|/incoming| directory of one of the
+ archives, or when one of us has something to install (for example,
+ all the updates to \LaTeXe{} itself are installed by Rainer in this
+ way).
+
+ There are still archives of the `old' sort: places where people
+ make their own bits and pieces available for general access, but
+ which don't offer a comprehensive collection. An example is Knuth's
+ (and Tom Rokicki's, among others) stuff, kept on
+ \url{labrea.stanford.edu}; there are many others, and there are
+ many things that are kept in an archive related to another
+ matter\Dash for example, the N\TeX{} implementation for Linux, lives
+ on the general Linux archive at \url{sunsite.unc.edu}
+
+ For all these things, each of the \CTAN{} nodes runs a considerable
+ mirroring operation every night. Managing that mirror operation,
+ and dealing with the installations and miscellaneous queries, takes
+ a considerable portion of a person's time. For the three \CTAN{}
+ nodes at \url|ftp.tex.ac.uk|, \url|ftp.shsu.edu| and
+ \url|ftp.dante.de|, there are three people to deal with all the
+ work (the nominal manager of \url|ftp.shsu.edu|, George Greenwade,
+ has taken no part in the work for more than a year). If the eight
+ people running Aston at the start were spoiling a broth, I think
+ it's reasonable to claim that three people for three archives are
+ perhaps a little thinly spread (despite excellent systems support
+ from Martyn Johnson at Cambridge, and a number of back-up workers
+ helping Rainer at \url|ftp.dante.de|).
+
+ \section{The archives from the users' viewpoint}
+
+ I persist in viewing the archives primarily as sources of stuff to
+ get by \ftpcmd, but the evidence suggests that they are as
+ often as not accessed via \textsf{Web} browsers.
+
+ As anonymous \ftpcmd archives, \CTAN{} nodes offer exactly the
+ same structure. A rather deep tree of directories is accessed via
+ the root \url|/tex-archive/|, and the structure of that tree is the
+ same at all nodes. If a location on \CTAN{} is quoted, such as
+ \url|macros/eplain|, the common root is assumed.
+
+ \CTAN{} stores very large numbers of individual files (for example,
+ macro packages), which is good for those who want to browse, but bad
+ for retrieving the files. Therefore, \CTAN{} provides means to
+ compress entire directories (or even directory trees) on-the-fly.
+ Suppose, for example, I want to acquire the latest version of
+ \LaTeX{} for my \acro{DOS} machine; I will (within \ftpcmd)
+ change directory to \url|tex-archive/macros/latex|, and then
+ \verb|get base.zip|. There's no file called \url|base.zip|, but there is a
+ directory \url|base|: \CTAN{} will make a \textsf{zip} archive of
+ the directory `on the fly', and return that. The archive can also make
+ \url|.tar.gz| and \url|.tar.Z| archives, but nothing specifically
+ targeted at Mac users. It's worth noting that the most frequent
+ cause of connections to \CTAN{} failing is a user's optimism about how
+ much he can pull in one go; a common one is to try and pull all of
+ the \verb|latex| tree, which gives you all the \verb|packages| and
+ (huge) \verb|contrib| sub-trees, as well as \verb|doc| and
+ \verb|unpacked| directories (which in a \verb|.zip| archive simply
+ repeat some or all of the \verb|base| directory).
+
+ As the material on \CTAN{} gradually approaches 2~Gbytes, how is the
+ poor user to find her way around? Ideally, one would like some kind
+ of advanced indexing software, but even within the rather restricted
+ compass of an \ftpcmd connection \CTAN{} can help. Each night,
+ the archive examines its own navel: it produces sorted lists of all
+ its files, and stores them in the archive itself; very often, one
+ can gain an adequate clue to the location of a file by use of the
+ command \texttt{quote site index} at the \ftpcmd prompt.\footnote{Note
+ that some \ftpcmd clients do not require the \texttt{quote}; check
+ with the documentation.} While a tool of more expressive power
+ would be nice, the clever use of the arcane `regular expressions'
+ employed can find things with some precision (see question~23 in
+ \BV~5.6).
+
+ Other means of accessing the files are:
+ \begin{itemize}
+ \item via \acro{NFS} (fine for people with lots of bandwidth to the
+ archive machine, such as sites on the SuperJanet backbone, but not
+ otherwise terribly practical)
+ \item via \textsf{gopher}; this is an entirely automatic
+ mechanism\Dash we've devoted little effort to it in Cambridge, and
+ the evidence is that it's little used
+ \item via mail: both \texttt{dante} and \texttt{shsu} offer an
+ \textsf{ftpmail} interface; mail a message containing just
+ `\texttt{help}' to \texttt{ftpmail@dante.de} (or at \texttt{shsu})
+ for details.
+ \end{itemize}
+
+ And there's the Web\dots
+
+ \begin{figure*}[tp]
+ \leavevmode
+ \centerline{\includegraphics[scale=0.75]{texpkgs-bit.eps}}
+ \caption{The start of Graham Williams' Web page}
+ \label{fig:williams-web}
+ \end{figure*}
+
+ \section{Access by \acro{WWW} interfaces}
+
+ The really big expansion of the media hype about the Internet has
+ coincided with the explosion of the Web into people's consciousness.
+ The Web is indeed a fine mechanism, particularly for those with lots
+ of bandwidth, a big screen, and strong wrists and fingers, but it's
+ nothing without information providers. Sadly, providing information
+ in a useful and attractive form proves actually to be rather tricky;
+ the manpower required to do it is not easily available to those of
+ us running \CTAN, so we tend to rely on people outside our numbers.
+
+ Norm Walsh \cite{Walsh:TB15-3-339} developed a mechanism that
+ permits access to the `normal' searching facilities of \acro{CTAN}.
+ People (particularly in the USA) speak well of it, but I've never
+ had success with it (there's \emph{never} enough bandwidth across
+ the Atlantic). The \acro{URL} is \url{http://jasper.ora.com/ctan.html},
+ and it has a series of menus for accessing the archive, as well as
+ some searching mechanisms. The information content is derived
+ automatically from directory listings of \acro{SHSU}, so that
+ (beyond the considerable effort of setting the thing up) there's
+ little day-to-day work involved.
+
+ % *NOTE* The one instance of `---' instead of \Dash in this
+ % paragraph comes from visual editing ... if the para gets
+ % reformatted, it may need changing back to \Dash
+ Another interesting mechanism is the \AllTeX{} Navigator, which
+ appears in three languages (French, English\Dash
+ \url{http://www.loria.fr/tex/english/index.html} --- and German; the
+ German portion is said not to be up to date). The range of
+ information stored is enormous (it must represent a massive
+ investment of effort); it's well worth a visit just to browse. One
+ of its services is a \acro{CGI}-script that searches the archives;
+ this is a better interface than is \texttt{quote site index}, in
+ that one can scroll or search through the information returned, but
+ it's still not terribly informative.
+
+ More promising is Graham Williams'
+ \url{ftp://cbr.dit.csiro.au/staff/gjw/www/texpkgs.html}; he is undertaking to
+ index all the macro packages on \CTAN{} to a fairly impressive level
+ of detail (somewhat like David Jones' pre-\CTAN{} index which is
+ now, sadly, no longer maintained). I've included a short extract in
+ figure~\ref{fig:williams-web}, which gives some indication; that
+ figure (though it contains some exciting flags at its top) is
+ missing the flag-links to the \CTAN{} sites themselves; by default,
+ the package location points to \path{ftp.cdrom.com}
+
+ \section{And for those with no network?}
+
+ The Internet's a grand place \dots~for those of us who are connected
+ to it. Even when I'm at home, dialling in to a \CTAN{} site, I find
+ the archive tricky (and I know the layout better than most). How
+ are the `unconnected' to survive?
+
+ The obvious solution is to dump the archive's contents to
+ \acro{CD-ROM}. This is plainly do-able (though the whole archive
+ now takes more even than two \acro{CD}s). The problem is
+ navigation: with the crazy restrictions of \acro{ISO}~9660 \acro{CD}
+ directory format, file names lose what one might call `expressive
+ power'.
+
+ The problem is addressed by the `targeted' \acro{CD}\Dash one which
+ you can use as an installation source from the word go. The first
+ of these was the \acro{NTG}'s excellent 4All\TeX{} \acro{CD} for
+ \acro{PC}s, which combines a view of how the system ought to be run
+ with a well-constructed, extensive set of backup archive material.
+ A new one, whose structure is based on the \acro{TDS} `standard' and
+ which uses the te\TeX{} implementation of \TeX{}, is being prepared
+ for release in May 1996.
+
+ \section{The future}
+
+ \CTAN{}, or something like it, will remain necessary for some time
+ to come, but none of those involved would claim that it's entirely
+ satisfactory as it stands. In particular, a `world-wide' network of
+ archives should consist of more than two European sites and one
+ barely-functioning \acro{USA}n one. Where are we on the Pacific
+ rim?; why have we only in the last year gained our first mirror in Africa?
+
+ A straightforward first step would be to make Norm Walsh's mechanism
+ available more widely; for wide usage, it should be available at all
+ CTAN sites and at a representative selection of mirrors.
+
+ However, indexing and searching mechanisms have advanced massively
+ over the last few years, and it would be nice to unleash the power
+ of (say) Digital's AltaVista engine on the contents of \CTAN{}.
+ To do this, we need some criterion for indexing; even a
+ well-documented \TeX{} file can be expected largely to consist of
+ gobbledygook, and finding the relevant stuff (in
+ \textsf{doc}-package material, in running comments, or after
+ \cs{endinput}) needs some careful heuristic work.
+
+ There is a comparable set of archives, called the \acro{CPAN}, which
+ holds \textsf{Perl}-related material (they do say that imitation is
+ the sincerest form of flattery!). The \acro{CPAN} people have
+ constructed a script that will decide for you where you
+ \emph{should} have connected your Web-browser, and sends your
+ connection off there. If you have access to a Web-browser, try
+ connecting to \url|http://www.perl.com/CPAN/|\Dash if I do it, I end
+ up at a directory at
+ \url|ftp://unix.hensa.ac.uk/mirrors/perl-CPAN//|, which is
+ physically in a different continent. This is a neat trick, and
+ we're working on something similar for \CTAN{}. The script depends
+ on your domain address, so that if you are one of those
+ tricksy sites that is (say) in \verb|.com| even though you're
+ physically located in the \acro{UK} and connected through \acro{UK}
+ service providers, you'll end up at the wrong place.
+
+ I mentioned above that there are better protocols to run what
+ \CTAN{} does. I (continue to) feel it would be nice to use some
+ protocol other than \textsf{email} to maintain our consistency, but
+ providing a complete suite of protocols (and getting it accepted!)
+ is beyond the resources I have (notably the time resources\dots).
+
+ To close, at the meeting at Warwick, I asked for suggestions. I've
+ presented all the ideas that came from the meeting; do readers have any?
+
+% \subsubsection*{Where does this fit?}
+% The first-level subdirectories of the tree are:
+% \begin{tabular}{ll}
+% biblio & bibliography manipulation \\
+% digests & \TeX{}-related publications \\
+% dviware & \acro{DVI} processors, etc. \\
+% fonts & fonts and related stuff \\
+% graphics & graphics in \TeX{} \\
+% help & \acro{FAQ}s and the like \\
+% indexing & support for index creation \\
+% info & `other' information \\
+% language & non-American language support, \\
+% & and hyphenation patterns \\
+% macros & of all sorts \\
+% support & programs for making life with \TeX{} easier \\
+% systems & implementations of \TeX{}, \\
+% & including a subdirectory \texttt{knuth}\dots \\
+% tds & the output of the \TeX{} directory structure \\
+% & Technical Working Group \\
+% tools & of use to archive maintainers \\
+% usergrps & a place for \TeX{} groups to `advertise' \\
+% web & literate programming tools
+% \end{tabular}
+
+\begin{thebibliography}{1}
+
+\bibitem{Abbott:TB10-1-59}
+Peter Abbott.
+\newblock {{{UK\TeX} and the Aston archive}}.
+\newblock {\em TUGboat}, 10(1):59--60, April 1989.
+
+\bibitem{Golding:1994}
+Richard~A. Golding, Darrell D.~E. Long, and John Wilkes.
+\newblock The {\emph{refdbms}} distributed bibliographic database system.
+\newblock In {\em Proceedings of the Winter Usenix Conference}, San Francisco,
+ CA, January 1994.
+
+\bibitem{Greenwade:TB14-3-342}
+George~D. Greenwade.
+\newblock {{The Comprehensive {\TeX} Archive Network ({\CTAN})}}.
+\newblock {\em TUGboat}, 14(3):342--351, October 1993.
+
+\bibitem{Walsh:TB15-3-339}
+Norm Walsh.
+\newblock {{A World Wide Web interface to {\CTAN}}}.
+\newblock {\em TUGboat}, 15(3):339--343, September 1994.
+
+\end{thebibliography}
+\end{Article}
diff --git a/usergrps/uktug/baskervi/6_2/doafter.sty b/usergrps/uktug/baskervi/6_2/doafter.sty
new file mode 100644
index 0000000000..cff3ceff9d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/doafter.sty
@@ -0,0 +1,114 @@
+%%
+%% This is file `doafter.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% doafter.dtx (with options: `package,latex2e')
+%%
+%% IMPORTANT NOTICE
+%%
+%% doafter package -- insert a token really after a group
+%% Copyright (c) 1996 Peter Schmitt and Mark Wooding
+%%
+%% 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 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doafter}
+ [1996/05/08 1.01 Aftergroup hacking (PS/MDW)]
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\let\@@aftergroup\aftergroup
+\def\doafter#1{%
+ \def\@tempa{\@@aftergroup#1}%
+ \afterassignment\doafter@i\let\@let@token%
+}
+\def\doafter@i{%
+ \@let@token%
+ \let\aftergroup\@my@aftergroup%
+ \@@aftergroup\@prepare@after\@tempa%
+}
+\def\ag@cnt@local{0 }
+\let\ag@cnt@global\ag@cnt@local
+\def\@my@aftergroup{%
+ \begingroup%
+ \count@\ag@cnt@local%
+ \advance\count@\@ne%
+ \xdef\ag@cnt@global{\the\count@\space}%
+ \endgroup%
+ \let\ag@cnt@local\ag@cnt@global%
+ \@@aftergroup\@after@token\@@aftergroup%
+}
+\def\@after@token{%
+ \@start@after@group%
+ \@after@token%
+}
+\def\@start@after@group{%
+ \begingroup%
+ \count@\ag@cnt@global%
+ \clubpenalty\ag@cnt@local%
+ \let\@after@token\@after@token@i%
+}
+\def\@after@token@i{%
+ \advance\count@\m@ne%
+ \ifnum\count@=\clubpenalty%
+ \global\let\ag@cnt@global\ag@cnt@local%
+ \expandafter\@after@aftertoken\expandafter\@after@all%
+ \else%
+ \expandafter\@@aftergroup%
+ \fi%
+}
+\let\@after@all\endgroup
+\def\@prepare@after{%
+ \ifx\ag@cnt@local\ag@cnt@global\else%
+ \expandafter\@prepare@after@i%
+ \fi%
+}
+\def\@prepare@after@i#1{%
+ \@start@after@group%
+ \def\@after@all{\@@aftergroup#1\endgroup}%
+}
+\def\@after@aftertoken#1{%
+ \let\bgroup\relax\let\egroup\relax%
+ \toks@{#1}%
+ \futurelet\@let@token\@after@aftertoken@i%
+}
+\def\@after@aftertoken@i{%
+ \ifcat\noexpand\@let@token{%
+ \@@aftergroup{%
+ \else\ifcat\noexpand\@let@token}%
+ \@@aftergroup}%
+ \else%
+ \def\@tempa##1{\@@aftergroup##1\the\toks@}%
+ \expandafter\expandafter\expandafter\@tempa%
+ \fi\fi%
+}
+\endinput
+%%
+%% End of file `doafter.sty'.
diff --git a/usergrps/uktug/baskervi/6_2/doafter.tex b/usergrps/uktug/baskervi/6_2/doafter.tex
new file mode 100644
index 0000000000..f4dee8ca1d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/doafter.tex
@@ -0,0 +1,113 @@
+%%
+%% This is file `doafter.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% doafter.dtx (with options: `package,plain')
+%%
+%% IMPORTANT NOTICE
+%%
+%% doafter package -- insert a token really after a group
+%% Copyright (c) 1996 Peter Schmitt and Mark Wooding
+%%
+%% 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 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\catcode`\@=11
+\let\@@aftergroup\aftergroup
+\def\doafter#1{%
+ \def\@tempa{\@@aftergroup#1}%
+ \afterassignment\doafter@i\let\@let@token%
+}
+\def\doafter@i{%
+ \@let@token%
+ \let\aftergroup\@my@aftergroup%
+ \@@aftergroup\@prepare@after\@tempa%
+}
+\def\ag@cnt@local{0 }
+\let\ag@cnt@global\ag@cnt@local
+\def\@my@aftergroup{%
+ \begingroup%
+ \count@\ag@cnt@local%
+ \advance\count@\@ne%
+ \xdef\ag@cnt@global{\the\count@\space}%
+ \endgroup%
+ \let\ag@cnt@local\ag@cnt@global%
+ \@@aftergroup\@after@token\@@aftergroup%
+}
+\def\@after@token{%
+ \@start@after@group%
+ \@after@token%
+}
+\def\@start@after@group{%
+ \begingroup%
+ \count@\ag@cnt@global%
+ \clubpenalty\ag@cnt@local%
+ \let\@after@token\@after@token@i%
+}
+\def\@after@token@i{%
+ \advance\count@\m@ne%
+ \ifnum\count@=\clubpenalty%
+ \global\let\ag@cnt@global\ag@cnt@local%
+ \expandafter\@after@aftertoken\expandafter\@after@all%
+ \else%
+ \expandafter\@@aftergroup%
+ \fi%
+}
+\let\@after@all\endgroup
+\def\@prepare@after{%
+ \ifx\ag@cnt@local\ag@cnt@global\else%
+ \expandafter\@prepare@after@i%
+ \fi%
+}
+\def\@prepare@after@i#1{%
+ \@start@after@group%
+ \def\@after@all{\@@aftergroup#1\endgroup}%
+}
+\def\@after@aftertoken#1{%
+ \let\bgroup\relax\let\egroup\relax%
+ \toks@{#1}%
+ \futurelet\@let@token\@after@aftertoken@i%
+}
+\def\@after@aftertoken@i{%
+ \ifcat\noexpand\@let@token{%
+ \@@aftergroup{%
+ \else\ifcat\noexpand\@let@token}%
+ \@@aftergroup}%
+ \else%
+ \def\@tempa##1{\@@aftergroup##1\the\toks@}%
+ \expandafter\expandafter\expandafter\@tempa%
+ \fi\fi%
+}
+\catcode`\@=12
+\endinput
+%%
+%% End of file `doafter.tex'.
diff --git a/usergrps/uktug/baskervi/6_2/extract.tex b/usergrps/uktug/baskervi/6_2/extract.tex
new file mode 100644
index 0000000000..757655d61c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/extract.tex
@@ -0,0 +1,162 @@
+%\usepackage[T1]{fontenc}
+%\usepackage{spqr}
+\input{spqr2}
+%\begin{document}
+\def\CurrentPackages{spqr,pstcol}
+\newcounter{myN}
+\setlongtables
+\author[Sebastian Rahtz]{Sebastian Rahtz\\Elsevier Science Ltd\\
+Email: \texttt{s.rahtz@elsevier.co.uk}}
+\title{An introduction to PSTricks, part 2}
+\begin{Article}
+\section{Preface}
+
+
+Let us first demonstrate the effects of these basic building blocks:
+\end{multicols}
+\begin{longtable}{l}
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{Cat}}
+\rput(2.5,.5){\rnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\Rnode{A}{Cat}}
+\rput(2.5,.5){\Rnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\pnode(.5,.5){A}
+\pnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\cnode(.5,.5){.2}{A}
+\cnode(2.5,.5){.2}{B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\psset{radius=.3}
+\Cnode(.5,.5){A}
+\Cnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\circlenode{A}{Cat}}
+\rput(2.5,.5){\circlenode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\ovalnode{A}{Cat}}
+\rput(2.5,.5){\ovalnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\trinode{A}{Cat}}
+\rput(2.5,.5){\trinode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\dotnode(.5,.5){A}
+\dotnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\fnode(.5,.5){A}
+\fnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\dianode{A}{Cat}}
+\rput(2.5,.5){\dianode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\nccurve[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncarc{->}{A}{B}
+\ncarc{->}{B}{A}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncbar{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiag[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiagg[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangle[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangles[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncloop[loopsize=.25,angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(1,.5){\rnode{A}{\psframebox{Cat}}}
+\nccircle{->}{A}{.5}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nccoil{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nczigzag{A}{B}
+\end{PSTInlineExample}
+\\
+\end{longtable}
+\begin{multicols}{2}
+
+\end{Article}
diff --git a/usergrps/uktug/baskervi/6_2/fancyvrb.rc b/usergrps/uktug/baskervi/6_2/fancyvrb.rc
new file mode 100644
index 0000000000..acbd45e99a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/fancyvrb.rc
@@ -0,0 +1,265 @@
+% Define verbatim and example environments:
+% verbatim - indented like quote environment
+% Verbatim - indented like quote environment, \small font.
+% nVerbatim - Like "Verbatim", but numbered.
+% example - code and output, side by side
+% example* - one above other
+% example** - one above other, with frames
+% Example - Rendered as PS, like original, side by side
+% Example* - Rendered as PS, one above other
+% Example** - Rendered as PS, one above other, with frames
+% Escape - Rendered as PS, with *no* verbatim text
+% GridPSExample - PSTricks (gridded) picture, like original, side by side
+% PSExample - PSTricks picture, like original, side by side
+% The example environments have the following steps in common:
+% 1. Save example verbatim to numbered example file
+% 2. Input file verbatim or EPS file
+% 3. Input again
+% All of them save their text as files in the \EXdir directory
+% (this needs a trailing / as part of the definition)
+%
+\RequirePackage{ifthen}
+\RequirePackage{graphicx}
+\RequirePackage{calc}
+%
+% variable features
+%
+\def\EXdir{}
+\def\EXprefix{}
+\def\EXclass{article}
+%
+\@ifundefined{fullwidth}{\let\fullwidth\textwidth}{}
+\@ifundefined{thechapter}{\newcounter{chapter}}{}
+%
+\newcounter{eps@counter}[section]
+\renewcommand\theeps@counter{%
+ \arabic{chapter}-\arabic{section}-\arabic{eps@counter}}
+\newcounter{side@count}
+%\newwrite\exepsfile
+%\immediate\openout\exepsfile \EXdir\jobname.expslist\relax
+
+\def\EPSinput#1{%
+\IfFileExists{\EXdir\EXprefix#1.eps}%
+ {\includegraphics{\EXdir\EXprefix#1.eps}}%
+ {\underline{\EXdir\EXprefix#1}}%
+}
+
+\def\SideBySideEx#1{%
+\trivlist\item[]%
+ \leavevmode
+ \global\advance\c@side@count by 1
+ \label{\thechapter.\theside@count}%
+ \ifthenelse{\isodd{\pageref{\thechapter.\theside@count}}}{%
+ \makebox[\fullwidth][l]{\@@Display{#1}\hspace{5mm}
+ \BVerbatimInput[fontsize=\small]{\EXdir\EXprefix\theeps@counter}}%
+ }{%
+ \makebox[\fullwidth][r]{\@@Display{#1}\hspace{5mm}
+ \BVerbatimInput[fontsize=\small]{\EXdir\EXprefix\theeps@counter}}%
+ }%
+ \endtrivlist
+}
+\newsavebox{\@display}
+\def\@@Display#1{%
+ \savebox{\@display}{%
+\begin{minipage}[b]{.5\fullwidth}#1\end{minipage}%
+}
+ \raisebox{\depth}{\usebox{\@display}}%
+}
+
+\newcommand{\BeginExample}{%
+ \multiply\topsep by 2
+ \global\advance\c@eps@counter\@ne
+ \edef\@tempa{%
+ \write\@auxout{\string
+ \newlabel{ex-\theeps@counter}{{\theeps@counter}{\noexpand\the\c@page}}}}
+ \@tempa
+ \nobreak
+ \VerbatimEnvironment
+ \catcode`\<=12
+ \begin{VerbatimOut}{\EXdir\EXprefix\theeps@counter.tex}%
+}
+\newcommand{\EndExample}{%
+ \end{VerbatimOut}%
+}
+
+\def\EndRuleExample{\vskip 7pt \hrule height 1.5pt\relax}
+
+\newif\ifgrid
+\gridfalse
+
+\def\PSExample(#1,#2)(#3,#4){%
+ \def\PictureSize{(#1,#2)(#3,#4)}%
+ \def\Write@Ex##1{}\BeginExample
+ }
+\def\endPSExample{%
+ \EndExample
+ \SideBySideEx{%
+ %\ifgrid\vskip 8pt \else\relax\fi
+ \expandafter\pspicture\PictureSize
+ \ifgrid\usergrid\else\relax\fi
+ \input{\EXdir\theeps@counter}%
+ \endpspicture
+ %\ifgrid\vskip 8pt \fi
+ }%
+}
+
+\newenvironment{GridPSExample}{\gridtrue\PSExample}{\endPSExample}
+
+\def\PSTInlineExample(#1,#2){%
+ \def\PictureSize{(-.2,-.5)(#1,#2)}%
+ \def\Write@Ex##1{}\BeginExample
+ }
+\def\endPSTInlineExample{%
+ \EndExample
+ \expandafter\pspicture\PictureSize
+ \usergrid
+ \input{\EXdir\theeps@counter}%
+ \endpspicture
+ \hspace{16pt}%
+ \BVerbatimInput[gobble=0,fontsize=\small]{\EXdir\theeps@counter}%
+}
+% side by side
+\newenvironment{example}{\def\Write@Ex##1{}\BeginExample} %
+ {\EndExample\SideBySideEx{\input{\EXdir\theeps@counter}}}
+
+% one above the other
+\newenvironment{example*}%
+ {\def\Write@Ex##1{}\BeginExample}%
+ {%
+ \EndExample
+ \VerbatimInput[gobble=0,fontsize=\small]{\EXdir\theeps@counter}%
+ \begin{center}
+ \leavevmode\input{\EXdir\theeps@counter}\par
+ \end{center}
+}
+% one above the other
+\newenvironment{numexample*}%
+ {\def\Write@Ex##1{}\BeginExample}%
+ {%
+ \EndExample
+ \VerbatimInput[gobble=0,numbers=left,
+ fontsize=\small]{\EXdir\theeps@counter}%
+ \begin{center}
+ \leavevmode\input{\EXdir\theeps@counter}\par
+ \end{center}
+}
+
+% with a frame, one above the other
+\newenvironment{example**}%
+{\def\Write@Ex##1{}\BeginExample}%
+{%
+\EndExample
+\VerbatimInput[gobble=0,fontsize=\small,
+ frame=topline,framerule=1.5pt]{\EXdir\theeps@counter}%
+\begin{center}
+\input{\EXdir\theeps@counter}
+ \EndRuleExample
+\end{center}
+}
+
+% now the ones which write stuff for an EPS file
+% for side by side examples, the text width of the separate file
+% needs to be half the normal width.
+\def\EX@extra{}
+\def\HalfWidth{%
+ \def\EX@extra{%
+ \string\makeatletter
+ \string\@tempdima\string\textwidth
+ \string\textwidth.5\string\@tempdima
+ \string\addtolength{\string\textwidth}{-6mm}
+ \string\makeatother}
+}
+\def\Setup@Escape{%
+ \edef\FancyVerbStopString{\string\end{document}}%
+ \edef\FancyVerbStartString{\string\begin{document}}%
+}
+% side by side
+\newenvironment{Example}{%
+ \HalfWidth
+ \BeginExample} %
+ {\EndExample
+\Setup@Escape
+\SideBySideEx{\EPSinput{\theeps@counter}}}
+
+% first verbatimcode, then actual example
+\newenvironment{Example*}{\BeginExample}%
+ {\EndExample
+ \Setup@Escape
+ \begin{center}\leavevmode
+ \VerbatimInput[gobble=0,fontsize=\small]{\EXdir\EXprefix\theeps@counter}%
+ \EPSinput{\theeps@counter}%
+ \end{center}%
+}
+
+% one above the other, framed
+\newenvironment{Example**}%
+{\BeginExample}%
+{%
+\EndExample
+\Setup@Escape
+ \VerbatimInput[gobble=0,fontsize=\small,
+ frame=topline,framerule=1.5pt]{\EXdir\EXprefix\theeps@counter}%
+\EPSinput{\theeps@counter}
+\EndRuleExample
+}
+
+% no verbatim text at all, just to run the thing separately
+\newenvironment{Escape}%
+{\BeginExample}%
+{%
+\EndExample
+\Setup@Escape
+\EPSinput{\theeps@counter}%
+}
+
+\def\CurrentPackages{}
+
+\def\FVE@VerbatimOut{\Write@Ex{\string\end{document}}%
+\immediate\closeout\FV@OutFile\endgroup\@esphack}
+
+\def\Write@Ex#1{%
+ \begingroup
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\immediate\write\FV@OutFile{#1}}
+ \reserved@a
+ \endgroup
+}
+
+\def\FVB@VerbatimOut#1{%
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \FV@DefineWhiteSpace
+ \def\FV@Space{\space}%
+ \FV@DefineTabOut
+ \def\FV@ProcessLine{\immediate\write\FV@OutFile}%
+ \immediate\openout\FV@OutFile #1\relax
+ \Write@Ex{\string\documentclass{\EXclass}}%
+ \Write@Ex{\string\nonstopmode}%
+ \Write@Ex{\string\usepackage{\CurrentPackages}}%
+ \Write@Ex{\string\pagestyle{empty}}%
+ \Write@Ex{\EX@extra}%
+ \Write@Ex{\string\begin{document}}%
+ \let\FV@FontScanPrep\relax
+ \FV@Scan}
+%
+% compatibility with Michel, with moreverb, and verbatim package
+%
+\def\SixPt{\fontsize{6}{7\p@}\selectfont}
+%
+% input files verbatim, numbered and unnumbered
+%
+\def\verbfile#1{\VerbatimInput[fontsize=\small]{#1}}
+\let\verbatiminput\verbfile
+\def\listinginput#1#2{\VerbatimInput[fontsize=\small,firstnumber=#1,numbers=left]{#2}}
+%
+% verbatim in various sizes
+\DefineVerbatimEnvironment{sssverbatim}{LVerbatim}{fontsize=\SixPt}
+\DefineVerbatimEnvironment{ssverbatim}{LVerbatim}{fontsize=\scriptsize}
+\DefineVerbatimEnvironment{fverbatim}{LVerbatim}{fontsize=\footnotesize}
+\DefineVerbatimEnvironment{sverbatim}{LVerbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{Verbatim}{LVerbatim}{fontsize=\normalsize}
+\DefineVerbatimEnvironment{verbatim}{LVerbatim}{fontsize=\normalsize}
+% numbered
+\DefineVerbatimEnvironment{nVerbatim}{LVerbatim}{fontsize=\small,numbers=left}
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/faq.sty b/usergrps/uktug/baskervi/6_2/faq.sty
new file mode 100644
index 0000000000..40798fc9a1
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/faq.sty
@@ -0,0 +1,249 @@
+% This is a LaTeX2e package for the UKTUG FAQ document.
+%
+\ProvidesPackage{faq}[1994/10/15 UK TUG package for TeX FAQ]
+%
+% uses production LaTeX 2e commands
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+%
+% version 0.1 RF 1994/09/26
+% 0.2 RF 1994/10/09-15
+% 0.3 RF 1994/10/16 (after suggestions from Alan Jeffrey)
+% 0.4 RF 1994/10/22
+%
+\def\fileversion{0.6}
+\def\filedate{1994/10/29}
+%
+\typeout{UK TUG FAQ macros v\fileversion, \filedate}
+%
+% what fonts are we going to typeset in?
+\InputIfFileExists{faqfont.cfg}%
+ {\typeout{FAQ -- loading font configuration file faqfont.cfg}}%
+ {\RequirePackage{times}%
+% % stretchability recommendations from psnfss2e.tex
+% \tolerance800
+% \emergencystretch2em
+% \doublehyphendemerits5000
+% \hfuzz0pt
+% \leftskip0pt minus 1pt
+% \rightskip0pt minus 1pt
+% % use cmtt for typewriter rather than Cou-beastly-rier
+ \renewcommand{\ttdefault}{cmtt}}
+%
+% general support
+%\RequirePackage{calc}
+%
+% code for handling logo font
+\RequirePackage{mflogo}
+%
+% get texnames package (as amended)
+\RequirePackage{texnames}
+%
+% ifthenelse for the undefined references
+\RequirePackage{ifthen}
+%
+% we define html only stuff using Eijkhout's package
+\RequirePackage{comment}
+\excludecomment{htmlversion}
+%
+% it proves that, for Alan's stuff, the following needs to have been
+% done _before_ we define the macros
+\RequirePackage{shortvrb}
+\MakeShortVerb{\|}
+%
+% the Baskerville and other logos
+\providecommand\BV{\emph{Baskerville}}
+\providecommand\DANTE{DANTE}
+\providecommand\MSDOS{MS-DOS}
+\providecommand\CDROM{CD-ROM}
+\providecommand\TeXXeT{\TeX-{}-X\lower.5ex\hbox{E}\kern-.1667emT\spacefactor1000 }
+\providecommand\MLTeX{ML-\TeX}
+%
+% The NTS and eTeX (and for consistency Eplain) logos
+\DeclareRobustCommand\NTS{{\the\textfont2 N}\lower.5ex\hbox
+ {\the\textfont2 T}{\the\textfont2 S}}
+\DeclareRobustCommand\eTeX{{$\varepsilon$}-\TeX}
+\DeclareRobustCommand\Eplain{Eplain}
+%
+% Other odds and ends (appear differently in TeX and http or plain
+% text
+\DeclareRobustCommand\WYSIWYG{\textsc{wysiwyg}}
+%
+% Command for doing `square one' :-}
+\newcommand\sqfbox[1]{\framebox{\makebox[\totalheight]{#1\/}}}
+%
+% 2e's LaTeX logo sets the A in scripstyle jammed up to the top of the T; it
+% also has the advantage that it's set in the same font as the
+% surrounding text. However, the esteemed bbeeton says the logo looks
+% "squidge awful" in italic text (I agree; and the same is true of its
+% behaviour in slanted text)
+%
+% So here's a version that allows for the slant of the leading L
+\DeclareRobustCommand{\LaTeX}{L%
+ {\setbox0\hbox{T}%
+ \setbox\@tempboxa\hbox{$\m@th$%
+ \csname S@\f@size\endcsname
+ \fontsize\sf@size\z@
+ \math@fontsfalse\selectfont
+ A}%
+ \@tempdima\ht0
+ \advance\@tempdima-\ht\@tempboxa
+ \@tempdima\strip@pt\fontdimen1\font\@tempdima
+ \advance\@tempdima-.36em
+ \kern\@tempdima
+ \vbox to\ht0{\box\@tempboxa
+ \vss}%
+ }%
+ \kern-.15em
+ \TeX}
+%
+% A command which sets some text in typewriter, with the hyphenchar
+% temporarily set to its first argument \FAQverb\HYPHEN{TEXT}.
+% NB: This requires no catcode hackery, so should work inside moving
+% arguments. It will, however, produce spurious spaces after CSs, and
+% won't allow brace-unmatched input. It also won't survive going into a
+% moving argument if \HYPHEN won't.
+%
+\let\FAQverbFamily\ttfamily
+\DeclareRobustCommand{\FAQverb}[2]{{%
+ \ifvmode\leavevmode\fi
+ \lefthyphenmin=256\setlanguage\language
+ \FAQverbFamily\hyphenchar\the\font`#1\relax
+ \def\@tempa{#2}%
+ \expandafter\@faq@strip\meaning\@tempa\@faq@strip
+ \hyphenchar\the\font\m@ne
+}\setlanguage\language}
+\def\@faq@strip#1->#2\@faq@strip{#2}
+%
+% Document markup:
+%
+\makeatother % because @ is a delimiter here, it had better have the
+ % same catcode as it will when the macro's invoked
+\def\Email|#1@#2|{\FAQverb\-{#1@}\penalty10\FAQverb\.{#2}} % email
+\makeatletter
+\def\FTP|#1|{\FAQverb\.{#1}} % FTP site
+\def\File|#1|{\FAQverb\/{#1}} % file name
+\def\CTAN{\FAQverb\/} % CTAN path
+\def\Newsgroup|#1|{\FAQverb\.{#1}} % newsgroup
+\def\URL|#1://#2/#3|{\FAQverb\.{#1://#2/}\penalty10\FAQverb\/{#3}}
+%
+% same game, slightly different style
+\def\ProgName|#1|{% % program name
+ {%
+ \def\FAQverbFamily{\rmfamily\mdseries\itshape}%
+ \FAQverb\_{#1}\/%
+ }%
+ }
+%
+% ISBN references
+\def\ISBN#1{\mbox{ISBN}~#1}
+%
+% have we read the CTAN references?
+\newif\ifnotreadCTAN \notreadCTANtrue
+%
+% Alan's code for CTAN references:
+%
+% define a location for a package on CTAN
+% #1 is the package name
+% #2 is the CTAN path to the thing
+% a package in a directory
+\newcommand{\CTANdirectory}[2]{\@ifundefined{ctan-#1}{%
+ \expandafter\gdef\csname ctan-#1\endcsname{#2}%
+}{%
+ \PackageWarning{faq}{Repeated definition of label: #1}%
+}}
+%
+% a package in a single file (the same appearance, but the WWW version is
+% different).
+\let\CTANfile\CTANdirectory
+%
+% Make reference to a CTAN package
+%
+% counter for the undefined references
+\newcounter{CTAN@unrefs}
+%
+% the command itself
+\DeclareRobustCommand{\CTANref}[1]{\@ifundefined{ctan-#1}{%
+ \PackageWarning{CTAN}{Undefined reference: #1}%
+ \stepcounter{CTAN@unrefs}%
+}{%
+ \edef\@tempa{\noexpand\CTAN{\csname ctan-#1\endcsname}}\@tempa
+}}
+%
+% hook for diagnosing undefined references at the end
+\AtEndDocument{\ifthenelse{\theCTAN@unrefs > 0}{%
+ \PackageWarning{CTAN}{There were \arabic{CTAN@unrefs} undefined
+ references to CTAN}%
+ }%
+ {}%
+ }
+%
+% a slight variation of description for lists of book titles
+\newcommand{\booklabel}[1]{\hspace\labelsep\normalfont\itshape #1}
+\newenvironment{booklist}{\begin{list}{}%
+ {\labelwidth\z@ \itemindent-\leftmargin \let\makelabel\booklabel}}%
+ {\end{list}}
+%
+% proglist is the same as booklist if we're using italics for program
+% names, but will need hacking otherwise
+\newenvironment{proglist}{\begin{booklist}}{\end{booklist}}
+%
+% the little bit(s) of code that's(re) going to be ignored when the
+% html is generated are enclosed by the following two commands
+\let\htmlignore\relax
+\let\endhtmlignore\relax
+%
+% A Donald Arseneau marvel:
+% \@removefromreset{FOO}{BAR} : removes counter FOO from the list of
+% counters \cl@BAR to be reset when
+% counter BAR is stepped.
+% The opposite of \@addtoreset
+\def\@removefromreset#1#2{\let\@tempb\@elt
+ \def\@tempa#1{@&#1}\expandafter\let\csname @*#1*\endcsname\@tempa
+ \def\@elt##1{\expandafter\ifx\csname @*##1*\endcsname\@tempa\else
+ \noexpand\@elt{##1}\fi}%
+ \expandafter\edef\csname cl@#2\endcsname{\csname cl@#2\endcsname}%
+ \let\@elt\@tempb
+ \expandafter\let\csname @*#1*\endcsname\@undefined}
+%
+% the question structure
+% \Question[label name]{question asked}
+% if [label name] present, the named label is assigned with \Qlabel
+\def\Question{\@ifnextchar[{\@Question}{\subsection}}
+\def\@Question[#1]#2{\subsection{#2}\Qlabel{#1}}
+%
+% now let's hack around a bit in order to make things slightly
+% prettier
+%
+% first: numbering of subsections -- doesn't include section nos, not
+% reset for each section
+\renewcommand{\thesubsection}{\arabic{subsection}}
+\@removefromreset{subsection}{section}
+%
+% second: sections `numbered' alphabetically
+\renewcommand{\thesection}{\Alph{section}}
+%
+% \Qlabel and \Qref: define and refer to labels
+\let\Qlabel\label
+\newcommand\Qref[3][see question]{#1~\ref{#3}}
+%
+% from doc package, then hacked about by yours truly
+\DeclareRobustCommand\csx[1]{\def\@tempa{#1}{\FAQverbFamily\char`\\%
+ \expandafter\@faq@strip\meaning\@tempa\@faq@strip}}
+\def\cs|#1|{\csx{#1}}
+%
+% for comments during maintenance
+\def\Q#1{\footnote{{\ttfamily QUERY: #1}}}
+%\def\Q#1{\marginpar{{\ttfamily QUERY: #1}}}
+%
+% Checking structure (null for now)
+\newcommand\checked[2]{}
+%
+% for Alan's benefit
+\newbox\@footnoteenvbox
+\newenvironment{footnoteenv}
+ {\begin{lrbox}\@footnoteenvbox\reset@font\footnotesize\ignorespaces}
+ {\end{lrbox}%
+ \footnote{\unhbox\@footnoteenvbox}}
+%
+% end of package
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/faqery/colmy96.tex b/usergrps/uktug/baskervi/6_2/faqery/colmy96.tex
new file mode 100644
index 0000000000..29a01351bc
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/faqery/colmy96.tex
@@ -0,0 +1,111 @@
+\documentclass{article}
+\usepackage{faq,bv-emu,shortvrb,multicol}
+\renewcommand\Qref[3][]{see question 89 in \BV{} 5.6}
+\MakeShortVerb\|
+\input dirctan % This may be seen
+\input filectan
+\providecommand\Article[1]{\section*{#1}}
+\begin{document}
+\begin{multicols}{2}
+\Article{The frequent supplement}
+A couple of questions answered this month.
+
+The first (on multilingual typesetting) was posed by Allan Reese; what
+we have here is merely a start towards solving the problem that
+concerns him. A comprehensive review of what makes up the Babel
+system is due in a future part of David Carlisle's \LaTeX{} tour, but
+I suspect that even so, questions remain to be answered. Do feel free
+to send them in!
+
+\Question{\upshape\bfseries 69a\quad Multilingual typesetting in \LaTeX{}}
+
+\TeX{} itself defines a mechanism to define a `language', which
+provides a hook for hyphenation patterns: each `language' (in \TeX{}'s
+sense) has its own set of hyphenation patterns.
+
+Babel, the standard multilingual package for \LaTeX{}, uses the
+primitive \TeX{} concept of `language' as part of its own concept of
+language; Babel's `language' also encompasses culturally appropriate
+typesetting rules for the language; for further details, see Babel's
+documentation.
+
+Assuming that you have a current \LaTeX{} installation, creating a
+multiple-language version from it involves three steps:
+\begin{enumerate}
+\item Install babel (\CTANref{babel}); move the |.sty| and |.ldf| files
+ somewhere appropriate. The installation also generates |hyphen.cfg|
+ and |language.dat|; these must be around when you generate the new
+ \LaTeX{} in step 3.
+\item Edit |language.dat| to record the languages whose hyphenation
+ patterns you want to support. For example, my installation's
+ version says:
+ \begin{verbatim}
+ english hyphen.tex
+ UKenglish ukhyph.tex
+ french f8hyph.tex
+ \end{verbatim}
+ (the upper-case `UK' is one of Babel's little quirks: one can also
+ call the language `british'; whatever, it's a different language as
+ far as \TeX{} is concerned).
+\item Generate a new version of \LaTeX{}, from the same |latex.ltx|,
+ etc., that came with your current installation. Since the
+ |hyphen.cfg| is `around', it will be used in preference to the
+ |hyphen.ltx| which is generated when \LaTeX{} is unpacked. The
+ \LaTeX{} format you've built will have the hyphenation patterns
+ installed.
+\end{enumerate}
+Of course, your \TeX{} has to be big enough to hold all these
+hyphenation patterns. I've not encountered problems with the
+\Package|Web2c|-based Unix installation I use at work, but the
+em\TeX{} I have on my \acro{PC} at home isn't, by default, large
+enough. Using \Package|htex386|, I increase the pattern memory by
+adding the line:
+\begin{verbatim}
+ set emtexopt=/mt25000
+\end{verbatim}
+to my |autoexec.bat|
+
+\Question{\upshape\bfseries 75a\quad Footnotes in tables}
+The standard LaTeX \footnote command doesn't work in tables; the table
+traps the footnotes and they can't escape to the bottom of the page.
+
+If your table is floating, your best bet is (unfortunately) to put the
+table in a \textsf{minipage} environment and to put the notes
+underneath the table, or to use Donald Arseneau's package
+\CTANref{threeparttable}
+
+Otherwise, if your table is not floating (it's just a
+`\textsf{tabular}' in the middle of some text), there are several
+things you can do to fix this.
+\begin{enumerate}
+\item Use \cs|footnotemark| to position the little marker
+ appropriately, and then put in \cs|footnotetext| commands to fill in
+ the text once you've closed the tabular environment. This is
+ described in Lamport's book, but it gets messy if there's more than
+ one footnote.
+\item Stick the table in a \textsf{minipage} anyway. This provides
+ all the ugliness of footnotes in a minipage with no extra effort.
+\item Use \textsf{threeparttable} (\CTANref{threeparttable}) anyway;
+ the package is intended for floating tables, and the result might
+ look odd if the table is not floating, but it will be reasonable.
+\item Use \File|tabularx| or \File|longtable| from the \LaTeX{} tools
+ distribution (\CTANref{2etools}); they're noticeably more
+ inefficient than the standard \textsf{tabular} environment, but they
+ do allow footnotes.
+\item Grab hold of \File|footnote.sty| from \acro{CTAN}, lurking in
+ \CTANref{mdwtools}
+
+ Then put your tabular environment inside a \textsf{savenotes}
+ environment. Alternatively, say \cs|makesavenoteenv{tabular}| in
+ the preamble of your document, and tables will all handle footnotes
+ correctly.
+\item Use \File|mdwtab.sty| from the same directory
+ (\CTANref{mdwtools}).
+
+ This will handle footnotes properly, and has other facilities to
+ increase the beauty of your tables. It may also cause other
+ table-related packages (not the standard `tools' ones, though) to
+ become very unhappy and stop working.
+\end{enumerate}
+\end{multicols}
+\end{document}
diff --git a/usergrps/uktug/baskervi/6_2/faqery/dirctan.tex b/usergrps/uktug/baskervi/6_2/faqery/dirctan.tex
new file mode 100644
index 0000000000..c37b4d849e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/faqery/dirctan.tex
@@ -0,0 +1,1141 @@
+%
+% declarations of significant directories on CTAN
+\CTANdirectory{2etools}{macros/latex/packages/tools}
+\CTANdirectory{386ix}{systems/unix/386ix}
+\CTANdirectory{4alltex}{systems/msdos/4alltex}
+\CTANdirectory{Acrobat}{fonts/postscript/adobe/Acrobat}
+\CTANdirectory{Alpha}{systems/vms/Alpha}
+\CTANdirectory{C++2LaTeX-1_1}{support/C++2LaTeX-1_1}
+\CTANdirectory{CJK}{language/chinese/CJK}
+\CTANdirectory{Gopher+}{tools/gopher/gopher_protocol/Gopher+}
+\CTANdirectory{GopherMoo}{tools/gopher/GopherMoo}
+\CTANdirectory{GopherTools}{tools/gopher/Unix/GopherTools/GopherTools}
+\CTANdirectory{MlTeX}{language/french/MlTeX}
+\CTANdirectory{PSlatex}{systems/vms/drivers/dvips/PSlatex}
+\CTANdirectory{RTF}{info/RTF}
+\CTANdirectory{RTF-1_06a1}{support/RTF-1_06a1}
+\CTANdirectory{TeXtelmExtel}{systems/msdos/emtex-contrib/TeXtelmExtel}
+\CTANdirectory{a4}{macros/latex/contrib/supported/a4}
+\CTANdirectory{a5booklet}{dviware/a5booklet}
+\CTANdirectory{aa}{macros/plain/contrib/springer/aa}
+\CTANdirectory{aaai}{macros/latex209/contrib/aaai}
+\CTANdirectory{aar}{macros/plain/contrib/springer/aar}
+\CTANdirectory{aasmacros}{macros/latex209/contrib/aasmacros}
+\CTANdirectory{abc2mtex}{support/abc2mtex}
+\CTANdirectory{abstr_collect}{macros/latex209/contrib/abstr_collect}
+\CTANdirectory{abstyles}{biblio/bibtex/contrib/abstyles}
+\CTANdirectory{accents}{support/accents}
+\CTANdirectory{acm}{macros/latex209/contrib/acm}
+\CTANdirectory{acorn}{systems/acorn}
+\CTANdirectory{acronym}{macros/latex/contrib/supported/acronym}
+\CTANdirectory{acs}{macros/latex209/contrib/acs}
+\CTANdirectory{actinf}{macros/plain/contrib/springer/pjour1/actinf}
+\CTANdirectory{ada}{web/ada}
+\CTANdirectory{addindex}{support/addindex}
+\CTANdirectory{address}{macros/latex209/contrib/address}
+\CTANdirectory{adjkerns}{fonts/utilities/adjkerns}
+\CTANdirectory{adobe}{fonts/postscript/adobe}
+\CTANdirectory{aexam}{macros/amstex/contrib/aexam}
+\CTANdirectory{afm-extra}{systems/vms/drivers/dvips/afm-extra}
+\CTANdirectory{afmtopl}{fonts/utilities/afmtopl}
+\CTANdirectory{agu}{macros/latex209/contrib/agu}
+\CTANdirectory{aguplus}{macros/latex209/contrib/aguplus}
+\CTANdirectory{aix3.2}{systems/unix/aix3.2}
+\CTANdirectory{aladdin}{support/ghostscript/aladdin}
+\CTANdirectory{album}{macros/latex209/contrib/album}
+\CTANdirectory{alpha}{systems/mac/support/alpha}
+\CTANdirectory{altamer}{support/ispell/languages/altamer}
+\CTANdirectory{amalog}{macros/plain/contrib/springer/pjour1/amalog}
+\CTANdirectory{american}{support/ispell/languages/american}
+\CTANdirectory{amsfonts}{fonts/ams/amsfonts}
+\CTANdirectory{amsfonts-symbols}{fonts/ams/amsfonts/sources/symbols}
+\CTANdirectory{amslatex}{fonts/ams/amslatex}
+\CTANdirectory{amslatex-primer}{info/amslatex-primer}
+\CTANdirectory{amspell}{support/amspell}
+\CTANdirectory{amstex}{fonts/ams/amstex}
+\CTANdirectory{anand}{fonts/utilities/fontinst/contrib/anand}
+\CTANdirectory{anngeo}{macros/plain/contrib/springer/pjour2/anngeo}
+\CTANdirectory{answers}{macros/latex/contrib/supported/answers}
+\CTANdirectory{aphysa}{macros/plain/contrib/springer/pjour2/aphysa}
+\CTANdirectory{aphysb}{macros/plain/contrib/springer/pjour2/aphysb}
+\CTANdirectory{apl}{fonts/apl}
+\CTANdirectory{aplweb}{web/apl/aplweb}
+\CTANdirectory{appl}{web/reduce/rweb/appl}
+\CTANdirectory{apps}{tools/gopher/Windows/apps}
+\CTANdirectory{arabtex}{language/arabtex}
+\CTANdirectory{arbeit}{macros/latex209/contrib/arbeit}
+\CTANdirectory{arc521}{tools/arc521}
+\CTANdirectory{arj}{tools/arj}
+\CTANdirectory{armenian}{fonts/armenian}
+\CTANdirectory{aro-bend}{info/aro-bend}
+\CTANdirectory{asaetr}{macros/latex209/contrib/asaetr}
+\CTANdirectory{asc2tex}{systems/msdos/asc2tex}
+\CTANdirectory{ascii}{fonts/ascii}
+\CTANdirectory{ask-examples}{tools/gopher/Unix/ask-examples}
+\CTANdirectory{astro}{fonts/astro}
+\CTANdirectory{astron}{macros/latex209/contrib/astron}
+\CTANdirectory{atari}{systems/atari}
+\CTANdirectory{atob}{tools/atob}
+\CTANdirectory{atops}{support/atops}
+\CTANdirectory{auctex}{support/auctex}
+\CTANdirectory{author-info}{fonts/ams/author-info}
+\CTANdirectory{autotab}{macros/latex209/contrib/autotab}
+\CTANdirectory{aweb}{web/ada/aweb}
+\CTANdirectory{awk}{web/spiderweb/src/awk}
+\CTANdirectory{axodraw}{graphics/axodraw}
+\CTANdirectory{babel}{macros/latex/packages/babel}
+\CTANdirectory{badge}{macros/plain/contrib/badge}
+\CTANdirectory{bakoma}{fonts/cm/ps-type1/bakoma}
+\CTANdirectory{barcodes}{fonts/barcodes}
+\CTANdirectory{bard}{fonts/bard}
+\CTANdirectory{barkom}{macros/latex209/contrib/barkom}
+\CTANdirectory{barr}{macros/generic/diagrams/barr}
+\CTANdirectory{bashkirian}{fonts/bashkirian}
+\CTANdirectory{basix}{support/basix}
+\CTANdirectory{baum}{macros/latex209/contrib/baum}
+\CTANdirectory{bbding}{fonts/bbding}
+\CTANdirectory{bbfig}{support/bbfig}
+\CTANdirectory{bbm}{fonts/cm/bbm}
+\CTANdirectory{bbold}{fonts/bbold}
+\CTANdirectory{bdfches}{fonts/chess/bdfches}
+\CTANdirectory{bdfchess}{fonts/chess/bdfchess}
+\CTANdirectory{beebe}{dviware/beebe}
+\CTANdirectory{beton}{macros/latex/contrib/supported/beton}
+\CTANdirectory{bib2dvi}{biblio/bibtex/utils/bib2dvi}
+\CTANdirectory{bibcard}{biblio/bibtex/utils/bibcard}
+\CTANdirectory{bibclean}{biblio/bibtex/utils/bibclean}
+\CTANdirectory{bibdb}{support/bibdb}
+\CTANdirectory{bibextract}{biblio/bibtex/utils/bibextract}
+\CTANdirectory{bibindex}{biblio/bibtex/utils/bibindex}
+\CTANdirectory{biblio}{info/biblio}
+\CTANdirectory{biblist}{macros/latex209/contrib/biblist}
+\CTANdirectory{bibsort}{biblio/bibtex/utils/bibsort}
+\CTANdirectory{bibtex}{support/lsedit/bibtex}
+\CTANdirectory{bibtex-doc}{biblio/bibtex/distribs/doc}
+\CTANdirectory{bibtool}{biblio/bibtex/utils/bibtool}
+\CTANdirectory{bibtools}{biblio/bibtex/utils/bibtools}
+\CTANdirectory{bibview}{biblio/bibtex/utils/bibview}
+\CTANdirectory{biemes}{macros/latex209/contrib/biemes}
+\CTANdirectory{bigsign}{macros/latex209/contrib/bigsign}
+\CTANdirectory{binhex}{tools/binhex}
+\CTANdirectory{biocyb}{macros/plain/contrib/springer/pjour2/biocyb}
+\CTANdirectory{birkhaeuser}{macros/latex209/contrib/birkhaeuser}
+\CTANdirectory{birkhahn-metafont-packed-disks}{systems/atari/birkhahn-metafont-packed-disks}
+\CTANdirectory{bit2spr}{graphics/bit2spr}
+\CTANdirectory{bitpxl}{dviware/bitpxl}
+\CTANdirectory{black}{fonts/cm/utilityfonts/black}
+\CTANdirectory{blackletter}{fonts/blackletter}
+\CTANdirectory{blocks}{macros/text1/blocks}
+\CTANdirectory{blu}{macros/blu}
+\CTANdirectory{bluesky}{systems/mac/metafont/bluesky}
+\CTANdirectory{bm2font}{graphics/bm2font}
+\CTANdirectory{bmf2gf}{language/chinese/bmf2gf}
+\CTANdirectory{bnf}{macros/latex209/contrib/bnf}
+\CTANdirectory{bold}{fonts/cm/mf-extra/bold}
+\CTANdirectory{bonus}{systems/msdos/emtex-contrib/bonus}
+\CTANdirectory{boo}{tools/boo}
+\CTANdirectory{bookform}{macros/latex209/contrib/bookform}
+\CTANdirectory{boombox-mirror}{tools/gopher/Unix/GopherTools/boombox-mirror}
+\CTANdirectory{borceux}{macros/generic/diagrams/borceux}
+\CTANdirectory{boxed}{macros/latex209/contrib/boxed}
+\CTANdirectory{boxedart}{macros/generic/boxedart}
+\CTANdirectory{bridge}{macros/plain/contrib/bridge}
+\CTANdirectory{brief}{macros/latex209/contrib/letters/brief}
+\CTANdirectory{brief_t}{support/brief_t}
+\CTANdirectory{british}{support/ispell/languages/british}
+\CTANdirectory{bruggink}{macros/latex209/contrib/bruggink}
+\CTANdirectory{bsplit}{tools/bsplit}
+\CTANdirectory{bst}{biblio/bibtex/contrib/germbib/bst}
+\CTANdirectory{btable}{macros/plain/contrib/btable}
+\CTANdirectory{btex8fmt}{macros/generic/cptex/btex8fmt}
+%\CTANdirectory{build}{fonts/metrics/build}
+\CTANdirectory{bulgeo}{macros/plain/contrib/springer/pjour2/bulgeo}
+\CTANdirectory{byte2tex}{support/foreign/byte2tex}
+\CTANdirectory{c}{web/spiderweb/src/c}
+\CTANdirectory{c++}{web/spiderweb/src/c++}
+\CTANdirectory{c2cweb}{web/c_cpp/c2cweb}
+\CTANdirectory{c2latex}{support/c2latex}
+\CTANdirectory{c_cpp}{web/c_cpp}
+\CTANdirectory{cache}{tools/gopher/Unix/gopher-gateways/techinfo/techinpher/admin/cache}
+\CTANdirectory{caesar-fonts-generic.dir}{macros/generic/caesarcm/caesar-fonts-generic.dir}
+\CTANdirectory{caesarcm}{macros/generic/caesarcm}
+\CTANdirectory{caesarcmfonts.dir}{macros/generic/caesarcm/caesarcmfonts.dir}
+\CTANdirectory{caesarcmv2.dir}{macros/generic/caesarcm/caesarcmv2.dir}
+\CTANdirectory{calendar}{macros/plain/contrib/calendar}
+\CTANdirectory{calligra}{fonts/calligra}
+\CTANdirectory{calrsfs}{macros/latex/contrib/other/calrsfs}
+\CTANdirectory{cascover}{macros/plain/contrib/cascover}
+\CTANdirectory{cassette}{macros/latex209/contrib/cassette}
+\CTANdirectory{casslbl}{macros/plain/contrib/casslbl}
+\CTANdirectory{cdvi}{dviware/cdvi}
+\CTANdirectory{cellular}{macros/plain/contrib/cellular}
+\CTANdirectory{changebar}{macros/latex209/contrib/changebar}
+\CTANdirectory{charconv}{support/charconv}
+\CTANdirectory{charter}{fonts/charter}
+\CTANdirectory{chbar}{macros/plain/contrib/chbar}
+\CTANdirectory{chbars}{macros/latex209/contrib/chbars}
+\CTANdirectory{check}{support/check}
+\CTANdirectory{checksum}{tools/checksum}
+\CTANdirectory{chemstruct}{macros/latex209/contrib/chemstruct}
+\CTANdirectory{chemtex}{macros/latex209/contrib/chemtex}
+\CTANdirectory{cheq}{fonts/cheq}
+\CTANdirectory{cherokee}{fonts/cherokee}
+\CTANdirectory{chess}{macros/latex209/contrib/chess}
+%[fonts/chess]
+\CTANdirectory{chesstools}{support/chesstools}
+\CTANdirectory{chi2tex}{support/chi2tex}
+\CTANdirectory{chinese}{language/chinese}
+\CTANdirectory{circ}{macros/generic/diagrams/circ}
+\CTANdirectory{circuit_macros}{graphics/circuit_macros}
+\CTANdirectory{cirth}{fonts/cirth}
+\CTANdirectory{citesidx}{macros/latex209/contrib/citesidx}
+\CTANdirectory{clark}{fonts/utilities/afmtopl/clark}
+\CTANdirectory{cm}{fonts/cm}
+\CTANdirectory{cmactex}{systems/mac/cmactex}
+\CTANdirectory{cmastro}{fonts/cmastro}
+\CTANdirectory{cmcyr}{fonts/cmcyr}
+\CTANdirectory{cmcyralt}{macros/latex/contrib/other/cmcyralt}
+%[fonts/cmcyralt]
+\CTANdirectory{cmfrak}{fonts/gothic/cmfrak}
+\CTANdirectory{cmoefont}{fonts/cmoefont}
+\CTANdirectory{cmoutlines}{fonts/cm/cmoutlines}
+\CTANdirectory{cmpica}{fonts/cmpica}
+\CTANdirectory{cms_help_files}{macros/text1/cms_help_files}
+\CTANdirectory{cmtest}{fonts/cm/cmtest}
+\CTANdirectory{cmttss}{fonts/cm/cmttss}
+\CTANdirectory{cnoweb}{web/c_cpp/cnoweb}
+\CTANdirectory{code}{macros/latex209/contrib/code}
+\CTANdirectory{colortex}{macros/latex209/contrib/colortex}
+\CTANdirectory{colortex.old}{macros/latex209/contrib/colortex.old}
+\CTANdirectory{comm}{tools/macutils/comm}
+\CTANdirectory{committee}{fonts/cm/utilityfonts/committee}
+\CTANdirectory{comp-fonts-FAQ}{help/comp-fonts-FAQ}
+\CTANdirectory{compact}{tools/compact}
+\CTANdirectory{comphy}{macros/plain/contrib/springer/pjour1/comphy}
+\CTANdirectory{components-of-TeX}{info/components-of-TeX}
+\CTANdirectory{compress}{tools/compress}
+\CTANdirectory{compugraphics_8600}{macros/text1/compugraphics_8600}
+\CTANdirectory{concrete}{fonts/concrete}
+\CTANdirectory{conrado}{web/noweb/contrib/conrado}
+\CTANdirectory{convert}{support/convert}
+\CTANdirectory{corrects}{macros/latex209/contrib/corrects}
+\CTANdirectory{cortex-email.dir}{language/typingtex/cortex-email.dir}
+%[fonts/courier]
+\CTANdirectory{covington}{macros/latex209/contrib/covington}
+\CTANdirectory{cpjour2}{macros/plain/contrib/springer/cpjour2}
+\CTANdirectory{cpmomu}{macros/plain/contrib/springer/cpmomu}
+\CTANdirectory{cptex}{macros/generic/cptex}
+\CTANdirectory{crc}{macros/latex209/contrib/crc}
+\CTANdirectory{cropmark}{macros/latex209/contrib/cropmark}
+\CTANdirectory{crossword}{macros/latex209/contrib/crossword}
+\CTANdirectory{crosswords}{macros/latex209/contrib/crosswords}
+\CTANdirectory{crudetype}{dviware/crudetype}
+\CTANdirectory{crw}{macros/plain/contrib/crw}
+\CTANdirectory{cs}{fonts/mathtime/cs}
+\CTANdirectory{cs-tex}{systems/atari/cs-tex}
+\CTANdirectory{ctan}{help/ctan}
+\CTANdirectory{cun}{fonts/cun}
+\CTANdirectory{curves}{macros/latex/contrib/other/curves}
+\CTANdirectory{custom-bib}{macros/latex/contrib/supported/custom-bib}
+\CTANdirectory{cwb32p10}{web/c_cpp/cwb32p10}
+\CTANdirectory{cweb}{web/c_cpp/cweb}
+\CTANdirectory{cweb-p}{web/c_cpp/cweb-p}
+\CTANdirectory{cypriote}{fonts/cypriote}
+\CTANdirectory{cyrillic}{language/cyrillic}
+\CTANdirectory{cyrit}{fonts/cyrit}
+\CTANdirectory{cyrlatex}{support/foreign/cyrlatex}
+\CTANdirectory{cyrmemo}{macros/latex209/contrib/cyrmemo}
+\CTANdirectory{cyrtug}{language/cyrtug}
+\CTANdirectory{dansk}{support/ispell/languages/dansk}
+\CTANdirectory{dante}{usergrps/dante}
+\CTANdirectory{databases}{biblio/bibtex/databases}
+\CTANdirectory{davelove}{web/noweb/contrib/davelove}
+\CTANdirectory{db2tex}{support/db2tex}
+\CTANdirectory{dbs}{graphics/tiff/contrib/dbs}
+\CTANdirectory{dbtex}{support/dbtex}
+\CTANdirectory{dc}{fonts/dc}
+\CTANdirectory{dc-latex}{language/hyphen-accent/dc-latex}
+\CTANdirectory{dc-nfss}{language/hyphen-accent/dc-nfss}
+\CTANdirectory{dc-plain}{language/hyphen-accent/dc-plain}
+\CTANdirectory{decalign}{macros/latex209/contrib/decalign}
+\CTANdirectory{deproc}{macros/latex209/contrib/deproc}
+\CTANdirectory{detex}{support/detex}
+\CTANdirectory{deutsch}{support/ispell/languages/deutsch}
+\CTANdirectory{devanagari}{language/devanagari}
+\CTANdirectory{diagram}{macros/generic/diagrams/borceux/diagram}
+\CTANdirectory{diagramf}{macros/latex209/contrib/diagramf}
+\CTANdirectory{diagrams}{macros/generic/diagrams}
+\CTANdirectory{dijkstra}{web/spiderweb/src/dijkstra}
+\CTANdirectory{dinbrief}{macros/latex209/contrib/letters/dinbrief}
+\CTANdirectory{dingbat}{fonts/dingbat}
+\CTANdirectory{directtex}{systems/mac/directtex}
+\CTANdirectory{dirkslides}{macros/latex209/contrib/dirkslides}
+\CTANdirectory{djgpp}{fonts/utilities/ps2pk/ps2pk14x/msdos/djgpp}
+\CTANdirectory{dm-latex}{language/hyphen-accent/dm-latex}
+\CTANdirectory{dm-plain}{language/hyphen-accent/dm-plain}
+\CTANdirectory{doc2sty}{language/swedish/slatex/doc2sty}
+\CTANdirectory{docu}{support/makeprog/docu}
+\CTANdirectory{document}{biblio/bibtex/contrib/germbib/document}
+\CTANdirectory{dos-dc}{systems/msdos/dos-dc}
+\CTANdirectory{dos-psfonts}{systems/msdos/emtex-fonts/psfonts}
+\CTANdirectory{dpmigcc}{systems/msdos/dpmigcc}
+\CTANdirectory{dratex}{macros/generic/dratex}
+\CTANdirectory{drawing}{graphics/drawing}
+\CTANdirectory{dropcaps}{macros/latex209/contrib/dropcaps}
+\CTANdirectory{duerer}{fonts/duerer}
+\CTANdirectory{dutch}{macros/latex209/contrib/dutch}
+\CTANdirectory{dvgt}{dviware/dvgt}
+\CTANdirectory{dvi-augsburg}{dviware/dvi-augsburg}
+\CTANdirectory{dvi2pcl}{dviware/dvi2pcl}
+\CTANdirectory{dvi2ps}{dviware/dvi2ps}
+\CTANdirectory{dvi2qms}{dviware/dvi2qms}
+\CTANdirectory{dvi2tty}{dviware/dvi2tty}
+\CTANdirectory{dvi2xx}{dviware/dvi2xx}
+\CTANdirectory{dviapollo}{dviware/dviapollo}
+\CTANdirectory{dvibit}{dviware/dvibit}
+\CTANdirectory{dvibook}{dviware/dvibook}
+\CTANdirectory{dvichk}{dviware/dvichk}
+\CTANdirectory{dvicopy}{dviware/dvicopy}
+\CTANdirectory{dvidis}{dviware/dvidis}
+\CTANdirectory{dvidjc}{dviware/dvidjc}
+\CTANdirectory{dvidoc}{dviware/dvidoc}
+\CTANdirectory{dvidvi}{dviware/dvidvi}
+\CTANdirectory{dview}{dviware/dview}
+\CTANdirectory{dviimp}{dviware/dviimp}
+\CTANdirectory{dvilj4}{systems/msdos/dviware/dvilj4}
+\CTANdirectory{dviljk}{dviware/dviljk}
+\CTANdirectory{dvimerge}{dviware/dvimerge}
+\CTANdirectory{dvimfj}{systems/msdos/emtex-contrib/dvimfj}
+\CTANdirectory{dvimswin}{dviware/dvimswin}
+\CTANdirectory{dvineclq}{systems/msdos/dviware/dvineclq}
+\CTANdirectory{dvipage}{dviware/dvipage}
+\CTANdirectory{dvipaste}{macros/lamstex/dvipaste}
+\CTANdirectory{dvipj}{dviware/dvipj}
+\CTANdirectory{dvips-pc}{systems/msdos/dviware/dvips}
+\CTANdirectory{dvips}{dviware/dvips}
+\CTANdirectory{dvipsk}{dviware/dvipsk}
+\CTANdirectory{dvis}{info/stammtisch/wuppertal/stybesch/dvis}
+\CTANdirectory{dvisun}{dviware/dvisun}
+\CTANdirectory{dvitodvi}{dviware/dvitodvi}
+\CTANdirectory{dvitool}{support/vortex/dvitool}
+\CTANdirectory{dvitops}{dviware/dvitops}
+\CTANdirectory{dvitovdu}{dviware/dvitovdu}
+\CTANdirectory{dvitty}{dviware/dvitty}
+\CTANdirectory{dvivga}{dviware/dvivga}
+\CTANdirectory{dviware}{systems/knuth/dviware}
+\CTANdirectory{dviwin}{dviware/dviwin}
+\CTANdirectory{e4t}{systems/msdos/e4t}
+\CTANdirectory{e_symbol}{macros/latex209/contrib/e_symbol}
+\CTANdirectory{easytex}{systems/msdos/easytex}
+\CTANdirectory{ebj}{macros/plain/contrib/springer/pjour2/ebj}
+\CTANdirectory{eclbip}{macros/latex209/contrib/eclbip}
+\CTANdirectory{economic}{biblio/bibtex/contrib/economic}
+\CTANdirectory{ecothe}{macros/plain/contrib/springer/pjour1/ecothe}
+\CTANdirectory{edi}{support/foreign/edi}
+\CTANdirectory{editbar}{macros/latex209/contrib/editbar}
+\CTANdirectory{edmac}{macros/plain/contrib/edmac}
+\CTANdirectory{eepic}{macros/latex209/contrib/eepic}
+\CTANdirectory{ega2mf}{fonts/utilities/ega2mf}
+\CTANdirectory{eiad}{fonts/eiad}
+\CTANdirectory{elsevier}{macros/latex209/contrib/elsevier}
+\CTANdirectory{elvish}{fonts/elvish}
+\CTANdirectory{elwell}{fonts/utilities/afmtopl/elwell}
+\CTANdirectory{eminst}{language/polish/eminst}
+\CTANdirectory{emt2tex}{systems/msdos/emtex-contrib/emt2tex}
+\CTANdirectory{emtex}{systems/msdos/emtex}
+\CTANdirectory{emtex-contrib}{systems/msdos/emtex-contrib}
+\CTANdirectory{emtex-fonts}{systems/msdos/emtex-fonts}
+\CTANdirectory{endfloat}{macros/latex/contrib/supported/endfloat}
+\CTANdirectory{english}{language/english}
+\CTANdirectory{engwar}{fonts/engwar}
+\CTANdirectory{envelope}{macros/latex209/contrib/envelope}
+\CTANdirectory{environment}{support/lsedit/environment}
+\CTANdirectory{epic}{macros/latex209/contrib/epic}
+\CTANdirectory{eplain}{macros/eplain}
+\CTANdirectory{epmtex}{systems/os2/epmtex}
+\CTANdirectory{eppstein}{macros/latex209/contrib/trees/eppstein}
+\CTANdirectory{epsfig}{macros/latex209/contrib/epsfig}
+\CTANdirectory{epson}{dviware/epson}
+\CTANdirectory{eqmark}{macros/latex209/contrib/eqmark}
+\CTANdirectory{ergotex}{systems/msdos/ergotex}
+\CTANdirectory{errata}{systems/knuth/errata}
+\CTANdirectory{eslides}{macros/latex209/contrib/eslides}
+\CTANdirectory{et}{support/et}
+\CTANdirectory{ethiopia}{language/ethiopia}
+\CTANdirectory{ethtex}{language/ethiopia/ethtex}
+\CTANdirectory{euler}{fonts/ams/amsfonts/sources/euler}
+%[macros/latex/contrib/supported/euler]
+\CTANdirectory{euro-oztex}{systems/mac/euro-oztex}
+\CTANdirectory{excalibur}{systems/mac/support/excalibur}
+\CTANdirectory{excerpt}{web/spiderweb/tools/excerpt}
+\CTANdirectory{exercise}{macros/latex209/contrib/exercise}
+\CTANdirectory{expdlist}{macros/latex/contrib/supported/expdlist}
+\CTANdirectory{extracm}{fonts/ams/amsfonts/sources/extracm}
+\CTANdirectory{fac}{macros/latex209/contrib/fac}
+\CTANdirectory{fancyheadings}{macros/latex/contrib/other/fancyheadings}
+\CTANdirectory{faq}{web/fweb/faq}
+\CTANdirectory{fax2ps}{graphics/tiff/contrib/fax2ps}
+\CTANdirectory{fc}{fonts/fc}
+\CTANdirectory{fchart}{macros/latex209/contrib/fchart}
+\CTANdirectory{feynman}{macros/latex209/contrib/feynman}
+\CTANdirectory{feynmf}{macros/latex/contrib/supported/feynmf}
+\CTANdirectory{fig2eepic}{macros/latex209/contrib/eepic/fig2eepic}
+\CTANdirectory{fig2eng}{graphics/fig2eng}
+\CTANdirectory{fig2mf}{graphics/fig2mf}
+\CTANdirectory{fig2mfpic}{graphics/fig2mfpic}
+\CTANdirectory{filehdr}{tools/filehdr}
+\CTANdirectory{fillform}{macros/latex209/contrib/fillform}
+\CTANdirectory{finder}{macros/latex209/contrib/letters/finder}
+\CTANdirectory{float}{macros/latex/contrib/supported/float}
+\CTANdirectory{floatfig}{macros/latex209/contrib/floatfig}
+\CTANdirectory{floatflt}{macros/latex/contrib/other/floatflt}
+\CTANdirectory{flow}{support/flow}
+\CTANdirectory{foiltex}{macros/foiltex}
+\CTANdirectory{fontinst}{fonts/utilities/fontinst}
+\CTANdirectory{fontname}{info/fontname}
+\CTANdirectory{fontsel}{fonts/ams/amslatex/fontsel}
+\CTANdirectory{footnpag}{macros/latex209/contrib/footnpag}
+\CTANdirectory{for_tex}{biblio/bibtex/contrib/germbib/for_tex}
+\CTANdirectory{foreign}{support/foreign}
+\CTANdirectory{format-dumper-ck}{systems/mac/support/format-dumper-ck}
+\CTANdirectory{format-dumper-cm}{systems/mac/support/format-dumper-cm}
+\CTANdirectory{francais}{support/ispell/languages/francais}
+\CTANdirectory{french}{language/french}
+\CTANdirectory{french_bst}{language/french/contrib/french_bst}
+\CTANdirectory{ftpd}{tools/ftpd}
+\CTANdirectory{ftpmail}{tools/ftpmail}
+\CTANdirectory{funnelweb}{web/funnelweb}
+\CTANdirectory{futhark}{fonts/futhark}
+\CTANdirectory{futhorc}{fonts/futhorc}
+\CTANdirectory{fweb}{web/fweb}
+\CTANdirectory{genfam}{support/genfam}
+\CTANdirectory{genindex}{macros/latex209/contrib/genindex}
+\CTANdirectory{geom}{macros/latex209/contrib/geom}
+\CTANdirectory{georgian}{fonts/georgian}
+\CTANdirectory{geralpha}{biblio/bibtex/contrib/geralpha}
+\CTANdirectory{german}{language/german}
+\CTANdirectory{german-letter}{macros/latex209/contrib/letters/german-letter}
+\CTANdirectory{germbib}{biblio/bibtex/contrib/germbib}
+\CTANdirectory{ghostscript}{support/ghostscript}
+\CTANdirectory{glasgow}{web/glasgow}
+\CTANdirectory{gletter}{macros/latex209/contrib/letters/gletter}
+\CTANdirectory{glo+idxtex}{indexing/glo+idxtex}
+\CTANdirectory{gn}{tools/gopher/Unix/gn}
+\CTANdirectory{gnuplot}{graphics/gnuplot}
+\CTANdirectory{go}{fonts/go}
+\CTANdirectory{go4ham}{tools/gopher/PC_server/hamburg/go4ham}
+\CTANdirectory{go4zgate}{tools/gopher/Unix/gopher-gateways/go4zgate}
+\CTANdirectory{gonnrp}{tools/gopher/Unix/gopher-gateways/gonnrp}
+\CTANdirectory{gopher}{tools/gopher}
+\CTANdirectory{gothic}{fonts/gothic}
+\CTANdirectory{graphbase}{support/graphbase}
+\CTANdirectory{graphics}{macros/latex/packages/graphics}
+\CTANdirectory{grasp-utils}{web/glasgow/lit2x-0.16/grasp-utils}
+\CTANdirectory{gray}{fonts/cm/utilityfonts/gray}
+\CTANdirectory{greek}{fonts/greek}
+\CTANdirectory{greektex}{fonts/greek/greektex}
+\CTANdirectory{gregory}{web/noweb/contrib/gregory}
+\CTANdirectory{gsftopk}{fonts/utilities/gsftopk}
+\CTANdirectory{gtex}{systems/msdos/gtex}
+\CTANdirectory{guidelines}{fonts/ams/author-info/guidelines}
+\CTANdirectory{gut}{usergrps/gut}
+\CTANdirectory{half}{fonts/cm/utilityfonts/half}
+\CTANdirectory{halftone}{fonts/halftone}
+\CTANdirectory{hands}{fonts/hands}
+\CTANdirectory{harvard}{macros/latex/contrib/supported/harvard}
+\CTANdirectory{harvmac}{macros/plain/contrib/harvmac}
+\CTANdirectory{hclassic}{language/hebrew/hclassic}
+\CTANdirectory{heb}{language/hebrew/heb}
+\CTANdirectory{hebrew}{language/hebrew}
+\CTANdirectory{help}{help}
+\CTANdirectory{hershey}{fonts/hershey}
+\CTANdirectory{hexbin}{tools/macutils/hexbin}
+\CTANdirectory{hge}{fonts/hge}
+\CTANdirectory{hieroglyph}{fonts/hieroglyph}
+\CTANdirectory{histyle}{macros/plain/contrib/histyle}
+\CTANdirectory{hp-deskjet}{systems/os2/drivers/hp-deskjet}
+\CTANdirectory{hp2pl}{support/hp2pl}
+\CTANdirectory{hp2tex}{support/hp2tex}
+\CTANdirectory{hp2xx}{support/hp2xx}
+\CTANdirectory{hp2xx311}{support/hp2xx/hp2xx311}
+\CTANdirectory{hpgl2ps}{graphics/hpgl2ps}
+\CTANdirectory{hptex}{macros/hptex}
+\CTANdirectory{hptomf}{support/hptomf}
+\CTANdirectory{html}{support/html}
+\CTANdirectory{html2latex}{support/html2latex}
+\CTANdirectory{htmlhelp}{info/htmlhelp}
+\CTANdirectory{hyacc-cm}{macros/generic/hyacc-cm}
+\CTANdirectory{hyper}{macros/latex/contrib/supported/hyper}
+\CTANdirectory{hyperbibtex}{biblio/bibtex/utils/hyperbibtex}
+\CTANdirectory{hyperref}{macros/latex/contrib/supported/hyperref}
+\CTANdirectory{hyphen-accent}{language/hyphen-accent}
+\CTANdirectory{hyphenation}{language/hyphenation}
+\CTANdirectory{ibmres-tex}{macros/latex209/contrib/ibmres-tex}
+\CTANdirectory{ibygrk}{fonts/greek/ibygrk}
+\CTANdirectory{icelandic}{language/icelandic}
+\CTANdirectory{iching}{fonts/iching}
+\CTANdirectory{icon}{web/noweb/icon}
+\CTANdirectory{icons}{support/icons}
+\CTANdirectory{ieee}{macros/latex209/contrib/ieee}
+\CTANdirectory{ifac}{macros/latex209/contrib/ifac}
+\CTANdirectory{ife}{macros/plain/contrib/springer/pjour2/ife}
+\CTANdirectory{ijc}{macros/latex209/contrib/ijc}
+\CTANdirectory{ijcai89}{macros/latex209/contrib/ijcai89}
+\CTANdirectory{imaketex}{support/imaketex}
+\CTANdirectory{impact}{web/systems/mac/impact}
+\CTANdirectory{independent}{web/independent}
+\CTANdirectory{indexing}{indexing}
+\CTANdirectory{indian}{language/indian}
+\CTANdirectory{info}{info}
+\CTANdirectory{info-zip}{tools/info-zip}
+\CTANdirectory{infpic}{macros/generic/infpic}
+\CTANdirectory{initex}{language/french/initex}
+\CTANdirectory{inrsdoc}{macros/inrstex/inrsdoc}
+\CTANdirectory{inrsinputs}{macros/inrstex/inrsinputs}
+\CTANdirectory{inrstex}{macros/inrstex}
+\CTANdirectory{insertplot}{macros/latex209/contrib/insertplot}
+\CTANdirectory{invmat}{macros/plain/contrib/springer/pjour1/invmat}
+\CTANdirectory{ipa}{macros/latex/contrib/other/ipa}
+\CTANdirectory{iso}{macros/latex209/contrib/iso}
+\CTANdirectory{iso-tex}{support/iso-tex}
+\CTANdirectory{iso2}{macros/latex209/contrib/iso2}
+\CTANdirectory{ispell}{support/ispell}
+\CTANdirectory{istyles}{language/polish/istyles}
+\CTANdirectory{italian}{language/italian}
+\CTANdirectory{ivd2dvi}{dviware/ivd2dvi}
+\CTANdirectory{jeep}{macros/latex209/contrib/jeep}
+\CTANdirectory{jemtex2}{systems/msdos/jemtex2}
+\CTANdirectory{jhtex}{language/korean/jhtex}
+\CTANdirectory{jmb}{macros/plain/contrib/springer/pjour1/jmb}
+\CTANdirectory{jns}{macros/plain/contrib/springer/jns}
+%[macros/latex209/contrib/springer/jnsl]
+\CTANdirectory{jonkrom}{web/noweb/contrib/jonkrom}
+\CTANdirectory{jspell}{support/jspell}
+\CTANdirectory{kaelin}{web/noweb/contrib/kaelin}
+\CTANdirectory{kalender}{usergrps/dante/kalender}
+\CTANdirectory{kamal}{support/kamal}
+\CTANdirectory{kane}{dviware/kane}
+\CTANdirectory{karta}{fonts/karta}
+\CTANdirectory{kd}{fonts/greek/kd}
+\CTANdirectory{kelem}{web/spiderweb/src/kelem}
+\CTANdirectory{kelly}{fonts/greek/kelly}
+\CTANdirectory{keyrus}{language/keyrus}
+\CTANdirectory{klassenarbeiten}{macros/latex209/contrib/klassenarbeiten}
+\CTANdirectory{klinz}{fonts/klinz}
+\CTANdirectory{kluwer}{macros/latex209/contrib/kluwer}
+\CTANdirectory{knit}{web/knit}
+\CTANdirectory{knot}{fonts/knot}
+\CTANdirectory{knuth}{systems/knuth}
+\CTANdirectory{koma-script}{macros/latex/contrib/supported/koma-script}
+\CTANdirectory{konstruk}{macros/latex209/contrib/konstruk}
+\CTANdirectory{korean}{fonts/korean}
+%[language/korean]
+\CTANdirectory{kostas}{web/noweb/contrib/kostas}
+\CTANdirectory{kyocera}{dviware/kyocera}
+\CTANdirectory{l2a}{support/l2a}
+\CTANdirectory{l2sl}{language/swedish/slatex/l2sl}
+\CTANdirectory{l2x}{support/l2x}
+\CTANdirectory{la}{fonts/la}
+\CTANdirectory{laa}{macros/latex209/contrib/springer/laa}
+\CTANdirectory{laan}{macros/generic/laan}
+\CTANdirectory{laansort}{macros/generic/laansort}
+\CTANdirectory{labelfig}{macros/latex209/contrib/labelfig}
+\CTANdirectory{labels}{macros/latex/contrib/supported/labels}
+\CTANdirectory{labtex}{macros/generic/labtex}
+\CTANdirectory{lacheck}{support/lacheck}
+\CTANdirectory{laletter}{macros/latex209/contrib/laletter}
+\CTANdirectory{lamemo}{macros/latex209/contrib/lamemo}
+\CTANdirectory{lametex}{support/lametex}
+\CTANdirectory{lamstex}{macros/lamstex}
+\CTANdirectory{language}{language}
+\CTANdirectory{larch}{web/spiderweb/src/larch}
+\CTANdirectory{laserjet}{dviware/laserjet}
+\CTANdirectory{lastpage}{macros/latex/contrib/other/lastpage}
+\CTANdirectory{latex}{fonts/latex}
+\CTANdirectory{latex-essential}{info/latex-essential}
+\CTANdirectory{latex-help-texinfo}{info/latex-help-texinfo}
+\CTANdirectory{latex209}{macros/latex209}
+\CTANdirectory{latex209-base}{macros/latex209/distribs/latex/general}
+\CTANdirectory{latex2html}{support/latex2html}
+\CTANdirectory{latex2rtf}{support/latex2rtf}
+\CTANdirectory{latexhlp}{systems/atari/latexhlp}
+\CTANdirectory{latexinfo}{macros/latex209/contrib/latexinfo}
+\CTANdirectory{latexmk}{support/latexmk}
+\CTANdirectory{latextut}{graphics/gnuplot/docs/latextut}
+\CTANdirectory{latin2}{macros/latex209/contrib/latin2}
+\CTANdirectory{layout}{macros/latex/contrib/supported/layout}
+\CTANdirectory{lecmono}{macros/plain/contrib/springer/lecmono}
+\CTANdirectory{lecproc}{macros/plain/contrib/springer/lecproc}
+\CTANdirectory{leew}{web/noweb/contrib/leew}
+\CTANdirectory{letters}{macros/latex209/contrib/letters}
+\CTANdirectory{levy}{fonts/greek/levy}
+\CTANdirectory{lexitex}{macros/latex209/contrib/lexitex}
+\CTANdirectory{lextex}{macros/plain/contrib/lextex}
+\CTANdirectory{lfonts_ams}{macros/latex209/contrib/lfonts_ams}
+\CTANdirectory{lgraph}{macros/latex209/contrib/lgraph}
+\CTANdirectory{lgrind}{support/lgrind}
+\CTANdirectory{lharc}{tools/lharc}
+\CTANdirectory{lindner-tex}{systems/atari/lindner-tex}
+\CTANdirectory{lindner-tex-packed-disks}{systems/atari/lindner-tex-packed-disks}
+\CTANdirectory{linotex}{systems/mac/linotex}
+\CTANdirectory{linux}{systems/unix/linux}
+\CTANdirectory{lit2x-0.16}{web/glasgow/lit2x-0.16}
+\CTANdirectory{literateprog}{web/literateprog}
+\CTANdirectory{litver41}{support/litver41}
+\CTANdirectory{ljmetrics}{fonts/ljmetrics}
+\CTANdirectory{ljour}{macros/latex209/contrib/springer/ljour}
+\CTANdirectory{llncs}{macros/latex209/contrib/springer/llncs}
+\CTANdirectory{lmamult}{macros/latex209/contrib/springer/lmamult}
+\CTANdirectory{ln01}{dviware/ln01}
+\CTANdirectory{ln03}{dviware/ln03}
+\CTANdirectory{localguide-sparc}{info/localguide-sparc}
+\CTANdirectory{loggates}{macros/latex209/contrib/loggates}
+\CTANdirectory{logic}{fonts/logic}
+\CTANdirectory{logo}{fonts/cm/utilityfonts/logo}
+\CTANdirectory{lollipop}{macros/lollipop}
+\CTANdirectory{lookbibtex}{biblio/bibtex/utils/lookbibtex}
+\CTANdirectory{lsedit}{support/lsedit}
+\CTANdirectory{ltx3pub}{info/ltx3pub}
+\CTANdirectory{lucida}{fonts/lucida}
+\CTANdirectory{lw35nfss}{macros/latex/packages/psnfss/lw35nfss}
+\CTANdirectory{mac}{web/systems/mac}
+\CTANdirectory{machdr}{tools/macunpack/machdr}
+\CTANdirectory{mactotex}{graphics/mactotex}
+\CTANdirectory{macunpack}{tools/macunpack}
+\CTANdirectory{macutils}{tools/macutils}
+\CTANdirectory{mailing}{macros/latex/contrib/supported/mailing}
+\CTANdirectory{make_latex}{support/make_latex}
+\CTANdirectory{makeafm.dir}{fonts/utilities/t1tools/makeafm.dir}
+\CTANdirectory{makeindex}{indexing/makeindex}
+\CTANdirectory{makeinfo}{macros/texinfo/makeinfo}
+\CTANdirectory{makeprog}{support/makeprog}
+\CTANdirectory{maketexwork}{info/maketexwork}
+\CTANdirectory{makros}{info/stammtisch/wuppertal/stybesch/makros}
+\CTANdirectory{malayalam}{language/malayalam}
+\CTANdirectory{malvern}{fonts/malvern}
+\CTANdirectory{mamath}{macros/plain/contrib/springer/mamath}
+\CTANdirectory{mangeo}{macros/plain/contrib/springer/pjour2/mangeo}
+\CTANdirectory{manpage}{macros/latex209/contrib/manpage}
+\CTANdirectory{manual}{macros/latex209/contrib/manual}
+\CTANdirectory{manualfonts}{fonts/cm/utilityfonts/manualfonts}
+\CTANdirectory{mapleweb}{web/maple/mapleweb}
+\CTANdirectory{matann}{macros/plain/contrib/springer/pjour1/matann}
+\CTANdirectory{mathematica}{macros/mathematica}
+\CTANdirectory{mathmult}{macros/plain/contrib/springer/mathmult}
+\CTANdirectory{mathpad}{support/mathpad}
+\CTANdirectory{mathsci2bibtex}{biblio/bibtex/utils/mathsci2bibtex}
+\CTANdirectory{mathsing}{macros/latex209/contrib/springer/mathsing}
+%[macros/plain/contrib/springer/mathsing]
+\CTANdirectory{mathtime}{macros/plain/contrib/mathtime}
+%[fonts/mathtime]
+\CTANdirectory{mathz}{macros/plain/contrib/springer/pjour1/mathz}
+\CTANdirectory{mcite}{macros/latex/contrib/supported/mcite}
+\CTANdirectory{mctex}{support/mctex}
+\CTANdirectory{mcvert}{tools/mcvert}
+\CTANdirectory{mdwtools}{macros/latex/contrib/supported/mdwtools}
+\CTANdirectory{megatape}{macros/latex209/contrib/megatape}
+\CTANdirectory{memo}{macros/latex209/contrib/memo}
+\CTANdirectory{memo2}{macros/latex209/contrib/memo2}
+\CTANdirectory{messtex}{support/messtex}
+\CTANdirectory{metafont}{systems/mac/metafont}
+\CTANdirectory{metapost}{graphics/metapost}
+\CTANdirectory{mewltx}{support/mewltx}
+\CTANdirectory{mex}{language/polish/mex}
+\CTANdirectory{mf-extra}{fonts/cm/mf-extra}
+\CTANdirectory{mf2ps}{fonts/utilities/mf2ps}
+\CTANdirectory{mf_optimized_kerning}{fonts/cm/mf_optimized_kerning}
+\CTANdirectory{mfbook}{fonts/cm/utilityfonts/mfbook}
+\CTANdirectory{mff-29}{fonts/utilities/mff-29}
+\CTANdirectory{mffiles}{language/telugu/mffiles}
+\CTANdirectory{mfinput}{language/arabtex/mfinput}
+\CTANdirectory{mfinputs}{macros/generic/diagrams/xypic/mfinputs}
+\CTANdirectory{mflogo}{macros/latex/contrib/supported/mflogo}
+\CTANdirectory{mfnfss}{macros/latex/packages/mfnfss}
+\CTANdirectory{mfpic}{graphics/mfpic}
+\CTANdirectory{mfware}{systems/knuth/mfware}
+\CTANdirectory{midi2tex}{support/midi2tex}
+\CTANdirectory{midnight}{macros/generic/midnight}
+\CTANdirectory{miktex}{systems/win32/miktex}
+\CTANdirectory{milstd}{macros/latex209/contrib/milstd}
+\CTANdirectory{minitoc}{macros/latex/contrib/other/minitoc}
+\CTANdirectory{minutes}{macros/latex209/contrib/minutes}
+\CTANdirectory{mipsel}{web/spiderweb/src/master/mipsel}
+\CTANdirectory{mirror}{tools/mirror}
+\CTANdirectory{mit-press}{macros/latex209/contrib/mit-press}
+\CTANdirectory{mitthesis}{macros/latex209/contrib/mitthesis}
+\CTANdirectory{mixed}{tools/macutils/mixed}
+\CTANdirectory{mma2ltx}{graphics/mma2ltx}
+\CTANdirectory{mnras}{macros/latex209/contrib/mnras}
+%[macros/plain/contrib/mnras]
+\CTANdirectory{mnu}{support/mnu}
+\CTANdirectory{models}{macros/text1/models}
+\CTANdirectory{modes}{fonts/modes}
+\CTANdirectory{moschovakis}{fonts/greek/moschovakis}
+\CTANdirectory{msdos}{systems/msdos}
+\CTANdirectory{msub}{web/glasgow/lit2x-0.16/grasp-utils/msub}
+\CTANdirectory{msx2msa}{fonts/vf-files/msx2msa}
+\CTANdirectory{msym}{fonts/msym}
+\CTANdirectory{mtex}{macros/plain/contrib/mtex}
+\CTANdirectory{mtns}{macros/latex209/contrib/mtns}
+\CTANdirectory{multido}{macros/latex209/contrib/multido}
+\CTANdirectory{multip}{macros/plain/contrib/springer/multip}
+\CTANdirectory{multpghb}{macros/plain/contrib/springer/multpghb}
+\CTANdirectory{musictex}{macros/musictex}
+\CTANdirectory{musixtex-egler}{macros/musixtex/egler}
+\CTANdirectory{musixtex-taupin}{macros/musixtex/taupin}
+\CTANdirectory{mxedruli}{fonts/georgian/mxedruli}
+\CTANdirectory{myletter}{macros/latex/contrib/supported/myletter}
+\CTANdirectory{nassflow}{macros/latex209/contrib/nassflow}
+\CTANdirectory{natbib}{macros/latex/contrib/supported/natbib}
+\CTANdirectory{nawk}{web/spiderweb/src/nawk}
+\CTANdirectory{nederlands}{support/ispell/languages/nederlands}
+\CTANdirectory{newagu}{macros/latex209/contrib/newagu}
+\CTANdirectory{newapa}{macros/latex209/contrib/newapa}
+\CTANdirectory{newsletr}{macros/plain/contrib/newsletr}
+\CTANdirectory{next}{systems/unix/next}
+\CTANdirectory{nextispell}{support/ispell/addons/nextispell}
+\CTANdirectory{nfss-addons}{macros/latex209/contrib/nfss-addons}
+\CTANdirectory{nfss-plain}{macros/plain/contrib/nfss-plain}
+\CTANdirectory{nl-brief}{macros/latex209/contrib/nl-brief}
+\CTANdirectory{norsk}{support/ispell/languages/norsk}
+\CTANdirectory{noweb}{web/noweb}
+\CTANdirectory{nt}{systems/nt}
+\CTANdirectory{ntex}{systems/unix/linux/ntex}
+\CTANdirectory{ntex01}{systems/unix/linux/ntex/ntex01}
+\CTANdirectory{ntex02}{systems/unix/linux/ntex/ntex02}
+\CTANdirectory{ntex03}{systems/unix/linux/ntex/ntex03}
+\CTANdirectory{ntex04}{systems/unix/linux/ntex/ntex04}
+\CTANdirectory{ntex05}{systems/unix/linux/ntex/ntex05}
+\CTANdirectory{ntex06}{systems/unix/linux/ntex/ntex06}
+\CTANdirectory{ntex07}{systems/unix/linux/ntex/ntex07}
+\CTANdirectory{ntex08}{systems/unix/linux/ntex/ntex08}
+\CTANdirectory{ntex09}{systems/unix/linux/ntex/ntex09}
+\CTANdirectory{ntex10}{systems/unix/linux/ntex/ntex10}
+\CTANdirectory{ntex11}{systems/unix/linux/ntex/ntex11}
+\CTANdirectory{ntex12}{systems/unix/linux/ntex/ntex12}
+\CTANdirectory{ntex13}{systems/unix/linux/ntex/ntex13}
+\CTANdirectory{ntg}{usergrps/ntg}
+\CTANdirectory{ntgclass}{macros/latex/contrib/supported/ntgclass}
+\CTANdirectory{nts-l}{digests/nts-l}
+\CTANdirectory{nummat}{macros/plain/contrib/springer/pjour1/nummat}
+\CTANdirectory{nuweb}{web/nuweb}
+\CTANdirectory{nuweb0.87b}{web/nuweb/nuweb0.87b}
+\CTANdirectory{nuweb_ami}{web/nuweb/nuweb_ami}
+\CTANdirectory{objectz}{macros/latex/contrib/supported/objectz}
+\CTANdirectory{ocr-a}{fonts/ocr-a}
+\CTANdirectory{ocr-b}{fonts/ocr-b}
+\CTANdirectory{ogfuda}{info/ogfuda}
+\CTANdirectory{ogham}{fonts/ogham}
+\CTANdirectory{ogonek}{macros/latex/contrib/other/ogonek}
+\CTANdirectory{okuda}{fonts/okuda}
+\CTANdirectory{oliver}{support/wp2latex/oliver}
+\CTANdirectory{orspek}{macros/plain/contrib/springer/pjour2/orspek}
+\CTANdirectory{os2}{systems/os2}
+\CTANdirectory{osmanian}{fonts/osmanian}
+\CTANdirectory{other}{macros/latex/contrib/other}
+\CTANdirectory{outline}{macros/latex209/contrib/outline}
+\CTANdirectory{oval}{macros/latex209/contrib/oval}
+\CTANdirectory{oz}{macros/latex209/contrib/oz}
+\CTANdirectory{oztex}{systems/mac/oztex}
+\CTANdirectory{oztex-german}{systems/mac/oztex-german}
+\CTANdirectory{packages}{macros/latex/packages}
+\CTANdirectory{packet_drivers}{tools/gopher/PC_client/packet_drivers}
+\CTANdirectory{page}{support/lametex/page}
+\CTANdirectory{pageframe}{macros/latex209/contrib/pageframe}
+\CTANdirectory{palladam}{language/tamil/palladam}
+\CTANdirectory{pandora}{fonts/pandora}
+\CTANdirectory{paper}{macros/latex209/contrib/paper}
+\CTANdirectory{paradissa}{fonts/cm/ps-type1/paradissa}
+\CTANdirectory{parc}{tools/parc}
+\CTANdirectory{amiga}{systems/amiga}
+\CTANdirectory{patches}{web/spiderweb/patches}
+\CTANdirectory{pbm2tex}{support/pbm2tex}
+\CTANdirectory{pbmtopk}{graphics/pbmtopk}
+\CTANdirectory{pcm}{macros/plain/contrib/springer/pjour2/pcm}
+\CTANdirectory{pcwritex}{support/pcwritex}
+\CTANdirectory{penelope}{web/spiderweb/src/penelope}
+\CTANdirectory{pfm2afm}{fonts/utilities/pfm2afm}
+\CTANdirectory{phonetic}{fonts/phonetic}
+\CTANdirectory{phy-bstyles}{biblio/bibtex/contrib/phy-bstyles}
+\CTANdirectory{physe}{macros/physe}
+\CTANdirectory{phyzzx}{macros/phyzzx}
+\CTANdirectory{picinpar}{macros/latex209/contrib/picinpar}
+%\CTANdirectory{picins}{macros/latex209/contrib/picins}
+\CTANdirectory{pictex}{graphics/pictex}
+\CTANdirectory{pictex-converter}{support/pictex-converter}
+\CTANdirectory{piechart}{graphics/piechart}
+\CTANdirectory{pjour1}{macros/plain/contrib/springer/pjour1}
+\CTANdirectory{pjour2}{macros/plain/contrib/springer/pjour2}
+\CTANdirectory{pkbbox}{fonts/utilities/pkbbox}
+\CTANdirectory{pkfonts}{macros/generic/diagrams/xypic/pkfonts}
+\CTANdirectory{pkzip}{tools/pkzip}
+\CTANdirectory{plain}{macros/plain}
+\CTANdirectory{plfonts}{language/polish/plfonts}
+\CTANdirectory{plncs11}{macros/plain/contrib/springer/plncs11}
+\CTANdirectory{plttopic}{support/plttopic}
+\CTANdirectory{pmtex}{systems/os2/pmtex}
+\CTANdirectory{polish}{language/polish}
+\CTANdirectory{poorman}{fonts/poorman}
+\CTANdirectory{portuguese}{language/portuguese}
+\CTANdirectory{postcard}{macros/latex209/contrib/postcard}
+\CTANdirectory{poster}{macros/generic/poster}
+\CTANdirectory{postscript}{fonts/postscript}
+\CTANdirectory{pp}{support/pp}
+\CTANdirectory{pphlp}{macros/latex209/contrib/pphlp}
+\CTANdirectory{prelim}{macros/latex209/contrib/prelim}
+\CTANdirectory{print-fine}{support/print-fine}
+\CTANdirectory{printbib}{biblio/bibtex/utils/printbib}
+\CTANdirectory{printsamples}{fonts/utilities/mf2ps/doc/printsamples}
+\CTANdirectory{probth}{macros/plain/contrib/springer/pjour1/probth}
+\CTANdirectory{program}{macros/latex209/contrib/program}
+\CTANdirectory{programs}{language/cyrillic/programs}
+\CTANdirectory{proof}{macros/latex209/contrib/proof}
+\CTANdirectory{proofs}{macros/generic/proofs}
+\CTANdirectory{ps-latex}{macros/latex209/contrib/ps-latex}
+\CTANdirectory{ps-type1}{fonts/cm/ps-type1}
+\CTANdirectory{ps-type3}{fonts/cm/ps-type3}
+\CTANdirectory{ps2mf}{fonts/utilities/ps2mf}
+\CTANdirectory{ps2pk}{fonts/utilities/ps2pk}
+\CTANdirectory{ps4mf}{systems/msdos/ps4mf}
+\CTANdirectory{psbook}{systems/msdos/dviware/psbook}
+\CTANdirectory{psbox}{macros/generic/psbox}
+\CTANdirectory{psfig}{graphics/psfig}
+\CTANdirectory{psfonts}{fonts/psfonts}
+\CTANdirectory{psfrag}{macros/latex/contrib/supported/psfrag}
+\CTANdirectory{pshop}{fonts/postscript/adobe/Applications/pshop}
+\CTANdirectory{psizzl}{macros/psizzl}
+\CTANdirectory{pslatex}{macros/latex209/contrib/pslatex}
+\CTANdirectory{psnfss}{macros/latex/packages/psnfss}
+\CTANdirectory{psnfss-addons}{macros/latex/contrib/other/psnfss-addons}
+\CTANdirectory{psprint}{dviware/psprint}
+\CTANdirectory{pstab}{support/pstab}
+\CTANdirectory{pstrees}{macros/latex209/contrib/trees/pstrees}
+\CTANdirectory{pstricks}{graphics/pstricks}
+\CTANdirectory{psutils}{support/psutils}
+\CTANdirectory{public-mf}{systems/msdos/public-mf}
+\CTANdirectory{public-tex}{systems/msdos/public-tex}
+\CTANdirectory{publications}{macros/latex209/contrib/publications}
+\CTANdirectory{punk}{fonts/punk}
+\CTANdirectory{pxlgen}{systems/msdos/pxlgen}
+\CTANdirectory{qdtexvpl}{fonts/utilities/qdtexvpl}
+\CTANdirectory{qfig}{support/qfig}
+\CTANdirectory{qms}{dviware/qms}
+\CTANdirectory{quicspool}{dviware/quicspool}
+\CTANdirectory{r2bib}{biblio/bibtex/utils/r2bib}
+\CTANdirectory{raggedright}{macros/latex209/contrib/raggedright}
+\CTANdirectory{rail}{macros/latex209/contrib/rail}
+\CTANdirectory{ransom}{fonts/ransom}
+\CTANdirectory{ras}{graphics/tiff/contrib/ras}
+\CTANdirectory{rcs}{macros/latex209/contrib/rcs}
+\CTANdirectory{realcalc}{macros/generic/realcalc}
+\CTANdirectory{recycle}{fonts/recycle}
+\CTANdirectory{redis}{language/hebrew/redis}
+\CTANdirectory{redit}{support/redit}
+\CTANdirectory{reduce}{web/reduce}
+%[web/spiderweb/src/reduce]
+\CTANdirectory{ref2bib}{biblio/bibtex/utils/ref2bib}
+\CTANdirectory{refer-tools}{biblio/bibtex/utils/refer-tools}
+\CTANdirectory{refman}{macros/latex/contrib/supported/refman}
+\CTANdirectory{relabel}{support/relabel}
+\CTANdirectory{report}{language/arabtex/report}
+\CTANdirectory{resume}{macros/latex209/contrib/resume}
+\CTANdirectory{review}{support/lsedit/review}
+\CTANdirectory{revtex}{macros/latex209/contrib/revtex}
+\CTANdirectory{rmit}{fonts/thai/rmit}
+\CTANdirectory{rnototex}{support/rnototex}
+\CTANdirectory{rotating}{macros/latex/contrib/supported/rotating}
+\CTANdirectory{rsfs}{fonts/rsfs}
+\CTANdirectory{rtf2tex}{support/rtf2tex}
+\CTANdirectory{rtf2html}{support/rtf2html}
+\CTANdirectory{rtf2latex}{support/rtf2latex}
+\CTANdirectory{rtflatex}{support/rtflatex}
+\CTANdirectory{rtfutils}{support/tex2rtf/rtfutils}
+\CTANdirectory{rumgraph}{support/rumgraph}
+\CTANdirectory{rune}{fonts/rune}
+\CTANdirectory{rus}{macros/latex209/contrib/rus}
+\CTANdirectory{rweb}{web/reduce/rweb}
+\CTANdirectory{s2latex}{support/s2latex}
+\CTANdirectory{sanskrit}{fonts/sanskrit}
+\CTANdirectory{sauter}{fonts/cm/sauter}
+\CTANdirectory{sbtex}{systems/msdos/sbtex}
+\CTANdirectory{schemetex}{support/schemetex}
+\CTANdirectory{schemeweb}{web/schemeweb}
+\CTANdirectory{schulzrinne}{macros/latex209/contrib/schulzrinne}
+\CTANdirectory{screenview}{dviware/screenview}
+\CTANdirectory{script}{macros/latex/contrib/other/script}
+\CTANdirectory{scripts}{web/glasgow/lit2x-0.16/grasp-utils/scripts}
+\CTANdirectory{scripttex}{macros/scripttex}
+\CTANdirectory{scyrillic}{language/scyrillic}
+\CTANdirectory{seetex}{dviware/seetex}
+\CTANdirectory{seminar}{macros/latex/contrib/other/seminar}
+\CTANdirectory{seminar.old}{macros/latex209/contrib/seminar.old}
+\CTANdirectory{serie}{macros/latex209/contrib/letters/serie}
+\CTANdirectory{setup}{graphics/mfpic/setup}
+\CTANdirectory{sfware}{fonts/softfonts/sfware}
+\CTANdirectory{sgi}{web/fweb/fweb-1.40/boot/unix/sgi}
+\CTANdirectory{sgml2tex}{support/sgml2tex}
+\CTANdirectory{shalom}{language/hebrew/shalom}
+\CTANdirectory{shell}{web/noweb/shell}
+\CTANdirectory{showlabels}{macros/latex/contrib/supported/showlabels}
+\CTANdirectory{siam}{macros/latex209/contrib/siam}
+\CTANdirectory{singlep}{macros/plain/contrib/springer/singlep}
+\CTANdirectory{sisisi}{systems/unix/sisisi}
+%[systems/vms/sisisi]
+\CTANdirectory{slant}{fonts/cm/utilityfonts/slant}
+\CTANdirectory{slatex}{language/swedish/slatex}
+\CTANdirectory{sml}{web/spiderweb/src/sml}
+\CTANdirectory{softfonts}{fonts/softfonts}
+\CTANdirectory{songbook}{macros/latex209/contrib/songbook}
+\CTANdirectory{southarabian}{fonts/southarabian}
+\CTANdirectory{spanish-tutorial}{info/spanish-tutorial}
+\CTANdirectory{spelchek}{support/spelchek}
+\CTANdirectory{spell}{support/spell}
+\CTANdirectory{spiderweb}{web/spiderweb}
+\CTANdirectory{springer}{macros/latex209/contrib/springer}
+%[macros/plain/contrib/springer]
+\CTANdirectory{srune}{fonts/srune}
+\CTANdirectory{ssl}{web/spiderweb/src/ssl}
+\CTANdirectory{ssqquote}{macros/latex/contrib/supported/ssqquote}
+\CTANdirectory{stammtisch}{info/stammtisch}
+\CTANdirectory{stbrief}{macros/latex209/contrib/letters/stbrief}
+\CTANdirectory{sterne}{macros/plain/contrib/springer/sterne}
+\CTANdirectory{stickers}{macros/latex209/contrib/stickers}
+\CTANdirectory{stmary}{macros/latex209/contrib/stmary}
+\CTANdirectory{stmaryrd}{fonts/stmaryrd}
+\CTANdirectory{stuffit}{tools/stuffit}
+\CTANdirectory{stybesch}{info/stammtisch/wuppertal/stybesch}
+\CTANdirectory{subeqn}{macros/latex209/contrib/subeqn}
+\CTANdirectory{subeqnarray}{macros/latex/contrib/supported/subeqnarray}
+\CTANdirectory{subfigure}{macros/latex/contrib/supported/subfigure}
+\CTANdirectory{sueterlin}{fonts/gothic/sueterlin}
+\CTANdirectory{supertabular}{macros/latex/contrib/supported/supertabular}
+\CTANdirectory{support}{support}
+\CTANdirectory{sv}{macros/latex209/contrib/sv}
+\CTANdirectory{svenska}{support/ispell/languages/svenska}
+\CTANdirectory{svlatex}{macros/latex209/contrib/svlatex}
+\CTANdirectory{sw}{macros/plain/contrib/springer/pjour2/sw}
+%[macros/plain/contrib/springer/sw]
+\CTANdirectory{swedish}{language/swedish}
+\CTANdirectory{sweet-tex}{systems/mac/sweet-tex}
+\CTANdirectory{swetex}{language/swedish/swetex}
+\CTANdirectory{syriac}{fonts/syriac}
+\CTANdirectory{systcontrolletters}{macros/latex209/contrib/systcontrolletters}
+\CTANdirectory{t1tidy}{fonts/utilities/t1tools/t1tidy}
+\CTANdirectory{t1tools}{fonts/utilities/t1tools}
+\CTANdirectory{t1utils}{fonts/utilities/t1utils}
+\CTANdirectory{tamil}{language/tamil}
+\CTANdirectory{tamueethesis}{macros/latex209/contrib/tamueethesis}
+\CTANdirectory{tape}{macros/latex209/contrib/tape}
+\CTANdirectory{tar}{tools/tar}
+\CTANdirectory{tbe}{macros/plain/contrib/tbe}
+\CTANdirectory{tca}{macros/plain/contrib/springer/pjour1/tca}
+\CTANdirectory{tcdmanual}{info/tcdmanual}
+\CTANdirectory{tde-macros}{language/swedish/slatex/tde-macros}
+\CTANdirectory{tds}{tds/draft-standard}
+\CTANdirectory{tech-erg}{macros/plain/contrib/springer/tech-erg}
+\CTANdirectory{tech-ghb}{macros/plain/contrib/springer/tech-ghb}
+\CTANdirectory{tech-std}{macros/plain/contrib/springer/tech-std}
+\CTANdirectory{tek2eepic}{support/tek2eepic}
+\CTANdirectory{telugu}{language/telugu}
+\CTANdirectory{tengtex}{macros/latex209/contrib/tengtex}
+\CTANdirectory{tengwar}{fonts/tengwar}
+\CTANdirectory{term}{graphics/gnuplot/term}
+\CTANdirectory{tesla}{macros/latex209/contrib/tesla}
+\CTANdirectory{tetex}{systems/unix/teTeX}
+\CTANdirectory{tetex-bin}{systems/unix/teTeX/distrib/binaries}
+\CTANdirectory{tex--xet}{systems/knuth/tex--xet}
+\CTANdirectory{tex-bnf}{macros/latex209/contrib/tex-bnf}
+\CTANdirectory{tex-d-l}{digests/tex-d-l}
+\CTANdirectory{tex-implementors}{digests/tex-implementors}
+\CTANdirectory{tex-install}{systems/msdos/emtex-contrib/tex-install}
+\CTANdirectory{tex-mag}{digests/tex-mag}
+\CTANdirectory{tex-primer_vms-specific}{info/tex-primer_vms-specific}
+\CTANdirectory{tex-surface}{support/tex-surface}
+\CTANdirectory{tex2mail}{support/tex2mail}
+\CTANdirectory{tex2rtf}{support/tex2rtf}
+\CTANdirectory{tex88}{digests/tex88}
+\CTANdirectory{tex8fmts}{macros/generic/cptex/tex8fmts}
+\CTANdirectory{texas}{systems/msdos/texas}
+\CTANdirectory{texbuch}{info/texbuch}
+\CTANdirectory{texcalc}{support/texcalc}
+\CTANdirectory{texchord}{macros/generic/texchord}
+\CTANdirectory{texdraw}{graphics/texdraw}
+%[systems/atari/texutils/texdraw]
+\CTANdirectory{texdvi}{support/vortex/dvitool/texdvi}
+\CTANdirectory{texed}{support/texed}
+\CTANdirectory{texfilt}{support/texfilt}
+\CTANdirectory{texgraph}{macros/inrstex/texgraph}
+\CTANdirectory{texhax}{digests/texhax}
+\CTANdirectory{texi2html}{support/texi2html}
+\CTANdirectory{texi2roff}{support/texi2roff}
+\CTANdirectory{texindex}{support/texindex}
+\CTANdirectory{texinfo}{macros/texinfo}
+\CTANdirectory{texit}{support/texit}
+\CTANdirectory{texix}{macros/text1/texix}
+\CTANdirectory{texline}{digests/texline}
+\CTANdirectory{texmenu}{systems/msdos/texmenu}
+\CTANdirectory{texmin}{systems/unix/linux/texmin}
+\CTANdirectory{texpert}{systems/msdos/texpert}
+%[systems/os2/texpert]
+\CTANdirectory{texproc}{support/texproc}
+\CTANdirectory{texshell}{systems/msdos/texshell}
+%[systems/vm-cms/texshell]
+\CTANdirectory{texsis}{macros/texsis}
+\CTANdirectory{text1}{macros/text1}
+\CTANdirectory{text2dvi}{systems/msdos/text2dvi}
+\CTANdirectory{textfit}{macros/latex/contrib/supported/textfit}
+\CTANdirectory{textmerg}{macros/latex/contrib/supported/textmerg}
+\CTANdirectory{texsgi}{dviware/texsgi}
+\CTANdirectory{textool}{dviware/textool}
+\CTANdirectory{textures}{systems/mac/textures}
+\CTANdirectory{textures_figs}{systems/mac/textures_figs}
+\CTANdirectory{textyl}{macros/latex209/contrib/textyl}
+\CTANdirectory{texutils}{systems/atari/texutils}
+\CTANdirectory{texware}{systems/knuth/texware}
+\CTANdirectory{tgrind}{support/tgrind}
+\CTANdirectory{thai}{fonts/thai}
+\CTANdirectory{theapa}{macros/latex209/contrib/theapa}
+\CTANdirectory{tib}{biblio/tib}
+\CTANdirectory{tie}{web/tie}
+\CTANdirectory{tiff}{graphics/tiff}
+\CTANdirectory{timing}{macros/latex209/contrib/timing}
+\CTANdirectory{tip}{macros/tip}
+\CTANdirectory{tksbrief}{macros/latex209/contrib/letters/tksbrief}
+\CTANdirectory{tr2latex}{support/tr2latex}
+\CTANdirectory{tr2tex}{support/tr2tex}
+\CTANdirectory{transfig}{graphics/transfig}
+\CTANdirectory{translit}{support/translit}
+\CTANdirectory{transname}{tools/macunpack/transname}
+\CTANdirectory{tree}{graphics/tree}
+\CTANdirectory{tree-dvips}{macros/latex209/contrib/trees/tree-dvips}
+\CTANdirectory{treetex}{macros/latex209/contrib/trees/treetex}
+\CTANdirectory{tree-tex}{macros/latex209/contrib/trees/tree-tex}
+\CTANdirectory{troff}{indexing/makeindex/troff}
+\CTANdirectory{troff-to-latex}{support/troff-to-latex}
+\CTANdirectory{tsipa}{fonts/tsipa}
+\CTANdirectory{tspell}{support/tspell}
+\CTANdirectory{tst}{language/french/tst}
+\CTANdirectory{ttn}{digests/ttn}
+\CTANdirectory{tug}{usergrps/tug}
+\CTANdirectory{tugboat}{digests/tugboat}
+\CTANdirectory{turing}{web/spiderweb/src/turing}
+\CTANdirectory{turing+}{web/spiderweb/src/turing+}
+\CTANdirectory{turkish}{language/turkish}
+\CTANdirectory{twcal}{fonts/twcal}
+\CTANdirectory{tweb}{web/tweb}
+\CTANdirectory{tx1}{systems/msdos/tx1}
+\CTANdirectory{txtdist}{support/txt}
+\CTANdirectory{typingtex}{language/typingtex}
+\CTANdirectory{ucthesis}{macros/latex209/contrib/ucthesis}
+\CTANdirectory{ugaritic}{fonts/ugaritic}
+\CTANdirectory{uktex}{digests/uktex}
+\CTANdirectory{uktug}{usergrps/uktug}
+\CTANdirectory{umddvi}{dviware/umddvi}
+\CTANdirectory{umlaut}{support/umlaut}
+\CTANdirectory{umlaute}{support/umlaute}
+\CTANdirectory{umrand}{macros/generic/umrand}
+\CTANdirectory{unadobe}{fonts/utilities/unadobe}
+\CTANdirectory{unarj}{tools/unarj}
+\CTANdirectory{uncompressing}{fonts/utilities/mf2ps/mf2ps/uncompressing}
+\CTANdirectory{undump}{support/undump}
+\CTANdirectory{uni_stgt}{macros/latex209/contrib/letters/uni_stgt}
+\CTANdirectory{unix}{systems/unix}
+\CTANdirectory{unixkit}{systems/unix/unixkit}
+\CTANdirectory{unixman}{macros/latex209/contrib/unixman}
+\CTANdirectory{unpack}{tools/macunpack/unpack}
+\CTANdirectory{unpacked}{macros/latex/unpacked}
+\CTANdirectory{unstuff}{tools/unstuff}
+\CTANdirectory{untex}{support/untex}
+\CTANdirectory{updates}{digests/updates}
+\CTANdirectory{urw}{fonts/urw}
+\CTANdirectory{user-guides}{macros/generic/diagrams/borceux/user-guides}
+\CTANdirectory{usergrps}{usergrps}
+\CTANdirectory{usl}{fonts/thai/usl}
+%[fonts/utopia]
+\CTANdirectory{utthesis}{macros/latex/contrib/supported/utthesis}
+\CTANdirectory{uue}{tools/uue}
+\CTANdirectory{uuencode}{tools/uuencode}
+\CTANdirectory{uw-thesis}{macros/latex209/contrib/uw-thesis}
+\CTANdirectory{va}{fonts/va}
+\CTANdirectory{vanroose}{macros/latex209/contrib/trees/vanroose}
+\CTANdirectory{vdm}{macros/latex209/contrib/vdm}
+\CTANdirectory{vecfonts}{macros/latex209/contrib/textyl/vecfonts}
+\CTANdirectory{vector}{macros/latex/contrib/supported/vector}
+\CTANdirectory{verbatim}{web/glasgow/lit2x-0.16/grasp-utils/verbatim}
+\CTANdirectory{verbtext}{macros/latex209/contrib/verbtext}
+\CTANdirectory{vertex}{macros/plain/contrib/vertex}
+\CTANdirectory{vga2mf}{systems/msdos/vga2mf}
+\CTANdirectory{vietnamese}{language/vietnamese}
+\CTANdirectory{vispeech}{language/vispeech}
+\CTANdirectory{vm-cms}{systems/vm-cms}
+\CTANdirectory{vms}{systems/vms}
+\CTANdirectory{vmspell}{support/vmspell}
+\CTANdirectory{vmsspell}{support/vmsspell}
+\CTANdirectory{vmstar}{tools/tar/vmstar}
+\CTANdirectory{vortex}{support/vortex}
+\CTANdirectory{vpltools}{fonts/utilities/vpltools}
+\CTANdirectory{vplutils}{fonts/utilities/vplutils}
+\CTANdirectory{vrb}{macros/generic/vrb}
+\CTANdirectory{vslitex}{fonts/vf-files/vslitex}
+\CTANdirectory{vtex_demo}{systems/msdos/vtex_demo}
+\CTANdirectory{vtree}{tools/vtree}
+\CTANdirectory{vtree-fix}{tools/vtree-fix}
+\CTANdirectory{vutex}{dviware/vutex}
+\CTANdirectory{vvcode}{tools/vvcode}
+\CTANdirectory{w2latex}{support/w2latex}
+\CTANdirectory{wasy}{fonts/wasy}
+\CTANdirectory{wasy2}{fonts/wasy2}
+\CTANdirectory{wasysym}{macros/latex/contrib/supported/wasysym}
+\CTANdirectory{wd2latex}{dviware/wd2latex}
+\CTANdirectory{web}{systems/knuth/web}
+\CTANdirectory{web2c}{systems/web2c}
+\CTANdirectory{webtoc}{support/makeprog/webtoc}
+\CTANdirectory{whatstex}{info/whatstex}
+\CTANdirectory{wics}{macros/latex209/contrib/springer/wics}
+\CTANdirectory{williams}{macros/latex/contrib/other/williams}
+\CTANdirectory{windex}{support/windex}
+\CTANdirectory{window}{macros/latex209/contrib/window}
+\CTANdirectory{winw2ltx}{support/winw2ltx}
+\CTANdirectory{word2tex}{support/word2tex}
+\CTANdirectory{word_tex}{support/word_tex}
+\CTANdirectory{wp2latex}{support/wp2latex}
+\CTANdirectory{wp2latex-5_1}{support/wp2latex-5_1}
+\CTANdirectory{wright}{macros/latex209/contrib/wright}
+\CTANdirectory{wsuipa}{fonts/wsuipa}
+\CTANdirectory{wuppertal}{info/stammtisch/wuppertal}
+\CTANdirectory{xarticle}{macros/latex209/contrib/xarticle}
+\CTANdirectory{xbin}{tools/xbin}
+\CTANdirectory{xdoc}{web/noweb/xdoc}
+\CTANdirectory{xdvi}{dviware/xdvi}
+\CTANdirectory{xdvik}{dviware/xdvik}
+\CTANdirectory{xenix}{systems/xenix}
+\CTANdirectory{xet}{support/xet}
+\CTANdirectory{xetal}{support/xetal}
+\CTANdirectory{xettex}{language/xettex}
+\CTANdirectory{xfig}{graphics/xfig}
+\CTANdirectory{xlatex}{support/xlatex}
+\CTANdirectory{xlharc}{tools/xlharc}
+\CTANdirectory{xtexshell}{support/xtexshell}
+\CTANdirectory{xtiff}{graphics/tiff/contrib/dbs/xtiff}
+\CTANdirectory{xv}{graphics/tiff/contrib/xv}
+\CTANdirectory{xvgopher}{tools/gopher/Unix/xvgopher}
+\CTANdirectory{xwpick}{support/xwpick}
+\CTANdirectory{xxcode}{tools/xxcode}
+\CTANdirectory{xymtex}{macros/latex209/contrib/xymtex}
+\CTANdirectory{xypic}{macros/generic/diagrams/xypic}
+\CTANdirectory{yannis}{fonts/greek/yannis}
+\CTANdirectory{yfrak}{fonts/gothic/yfrak}
+\CTANdirectory{ygoth}{fonts/gothic/ygoth}
+\CTANdirectory{yinit}{fonts/gothic/yinit}
+\CTANdirectory{yswab}{fonts/gothic/yswab}
+\CTANdirectory{ytex}{macros/ytex}
+\CTANdirectory{zaccone}{macros/latex209/contrib/zaccone}
+\CTANdirectory{zemtex}{systems/msdos/emtex-contrib/zemtex}
+\CTANdirectory{zero}{macros/latex209/contrib/zero}
+\CTANdirectory{zip}{tools/zip}
+\CTANdirectory{zoo}{tools/zoo}
+\CTANdirectory{zphysa}{macros/plain/contrib/springer/pjour2/zphysa}
+\CTANdirectory{zphysb}{macros/plain/contrib/springer/pjour2/zphysb}
+\CTANdirectory{zphysc}{macros/plain/contrib/springer/pjour2/zphysc}
+\CTANdirectory{zphysd}{macros/plain/contrib/springer/pjour2/zphysd}
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/faqery/filectan.tex b/usergrps/uktug/baskervi/6_2/faqery/filectan.tex
new file mode 100644
index 0000000000..f1f760cdca
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/faqery/filectan.tex
@@ -0,0 +1,49 @@
+%
+% interesting/useful individual files to be found on CTAN
+\CTANfile{AXPVMSTeX}{systems/vms/Alpha/tex_axp_exe.zip}
+\CTANfile{AXPVMSdvips}{systems/vms/Alpha/dvips555_axp_exe.zip}
+\CTANfile{CTAN-sites}{CTAN.sites}
+\CTANfile{CTAN-uploads}{README.uploads}% yes, it really is in the root
+\CTANfile{Excalibur-sea}{systems/mac/support/excalibur/Excalibur-20-sea.hqx}
+\CTANfile{LitProg-FAQ}{help/LitProg-FAQ}
+\CTANfile{TeX-FAQ}{help/TeX-FAQ}
+\CTANfile{TeX-index}{help/Tex-index/TeX-index}
+\CTANfile{VAXVMSTeX}{systems/vms/VAX/tex_vax_exe.zip}
+\CTANfile{VAXVMSdvips}{systems/vms/VAX/dvips555_vax_exe.zip}
+\CTANfile{VMSdvips-fonts}{systems/vms/dvips_fontsupport.zip}
+\CTANfile{VMSdvips-support}{systems/vms/dvips555_support.zip}
+\CTANfile{alltt}{macros/latex209/contrib/misc/alltt.sty}
+\CTANfile{btxmactex}{macros/eplain/btxmac.tex}
+\CTANfile{comment}{macros/latex209/contrib/misc/comment.sty}
+\CTANfile{compan-ctan}{info/companion.ctan}
+\CTANfile{doublespace}{macros/latex209/contrib/misc/doublespace.sty}
+\CTANfile{dvitype}{systems/knuth/texware/dvitype.web}
+\CTANfile{edmetrics}{systems/mac/textures/utilities/EdMetrics.sea.hqx}
+\CTANfile{epslatex}{info/epslatex.ps}
+\CTANfile{figsinlatex}{info/figsinltx.ps}
+\CTANfile{fullpage}{macros/latex209/contrib/misc/fullpage.sty}
+\CTANfile{lw35nfss-zip}{macros/latex/packages/psnfss/lw35nfss.zip}
+\CTANfile{macmakeindex}{systems/mac/macmakeindex.sit}
+\CTANfile{mathppl}{systems/unix/teTeX/updates/texmf/mathppl.sh}
+\CTANfile{mf-beginners}{info/metafont-for-beginners.tex}
+\CTANfile{mf-list}{info/metafont-list}
+\CTANfile{mil}{info/mil/mil.pdf}
+\CTANfile{modes-file}{fonts/modes/modes.mf}
+\CTANfile{morefloats}{macros/latex209/contrib/misc/morefloats.sty}
+\CTANfile{nopageno}{macros/latex/contrib/supported/carlisle/nopageno.sty}
+\CTANfile{picins}{systems/msdos/picins/picins.zip}
+\CTANfile{picins-summary}{macros/latex209/contrib/picins/picins.txt}
+\CTANfile{pk300}{fonts/cm/pk/pk300.zip}
+\CTANfile{pk300w}{fonts/cm/pk/pk300w.zip}
+\CTANfile{screensty}{macros/latex209/contrib/misc/screen.sty}
+\CTANfile{setspace}{macros/latex/contrib/supported/setspace/setspace.sty}
+\CTANfile{texinfo-macros}{macros/texinfo/texinfo.tex}
+\CTANfile{texnames}{macros/eplain/texnames.sty}
+\CTANfile{threeparttable}{macros/latex209/contrib/misc/threeparttable.sty}
+\CTANfile{ukhyph}{language/english/ukhyph.tex}
+\CTANfile{unixtexftp}{systems/unix/unixtex.ftp}
+\CTANfile{usergrps-list}{usergrps/info/usergrps.tex}
+\CTANfile{vmargin}{macros/latex/contrib/other/misc/vmargin.sty}
+\CTANfile{wrapfig}{macros/latex/contrib/other/misc/wrapfig.sty}
+\CTANfile{wujastyk-txh}{digests/texhax/txh/wujastyk.txh}
+\CTANfile{xtexcad}{systems/unix/linux/xtexcad-2.1.tar.z}
diff --git a/usergrps/uktug/baskervi/6_2/footnote.sty b/usergrps/uktug/baskervi/6_2/footnote.sty
new file mode 100644
index 0000000000..ca66a309db
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/footnote.sty
@@ -0,0 +1,194 @@
+%%
+%% This is file `footnote.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% footnote.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE
+%%
+%% footnote package -- Save footnotes around boxing environments
+%% Copyright (c) 1996 Mark Wooding
+%%
+%% 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 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{footnote}
+ [1996/05/13 1.10 Save footnotes around boxes]
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\ifx\fn@notes\@@undefined%
+ \newbox\fn@notes%
+\fi
+\newdimen\fn@width
+\let\fn@colwidth\columnwidth
+\newif\if@savingnotes
+\def\fn@startnote{%
+ \hsize\fn@colwidth%
+ \interlinepenalty\interfootnotelinepenalty%
+ \reset@font\footnotesize%
+ \floatingpenalty\@MM% Is this right???
+ \@parboxrestore%
+ \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}%
+ \color@begingroup%
+}
+\let\fn@endnote\color@endgroup
+\def\fn@fntext#1{%
+ \global\setbox\fn@notes\vbox{%
+ \unvbox\fn@notes%
+ \fn@startnote%
+ \@makefntext{%
+ \rule\z@\footnotesep%
+ \ignorespaces%
+ #1%
+ \@finalstrut\strutbox%
+ }%
+ \fn@endnote%
+ }%
+}
+\def\savenotes{%
+ \begingroup%
+ \if@savingnotes\else%
+ \@savingnotestrue%
+ \let\@footnotetext\fn@fntext%
+ \let\@mpfootnotetext\fn@fntext%
+ \fn@width\columnwidth%
+ \let\fn@colwidth\fn@width%
+ \global\setbox\fn@notes\box\voidb@x%
+ \let\fn@thempfn\thempfn%
+ \let\fn@mpfn\@mpfn%
+ \ifx\@minipagerestore\relax\let\@minipagerestore\@empty\fi%
+ \expandafter\def\expandafter\@minipagerestore\expandafter{%
+ \@minipagerestore%
+ \let\thempfn\fn@thempfn%
+ \let\@mpfn\fn@mpfn%
+ }%
+ \fi%
+}
+\def\spewnotes{%
+ \endgroup%
+ \if@savingnotes\else\ifvoid\fn@notes\else\begingroup%
+ \let\@makefntext\@empty%
+ \let\@finalstrut\@gobble%
+ \let\rule\@gobbletwo%
+ \@footnotetext{\unvbox\fn@notes}%
+ \endgroup\fi\fi%
+}
+\let\endsavenotes\spewnotes
+\def\fn@getmark#1#2{%
+ \begingroup%
+ \@ifnextchar[%
+ {\fn@getmark@i{#1}}%
+ {#1\fn@getmark@ii{#2}}%
+}
+\def\fn@getmark@i#1[#2]{%
+ \csname c@\@mpfn\endcsname#2%
+ \fn@getmark@ii%
+}
+\def\fn@getmark@ii#1{%
+ \unrestored@protected@xdef\@thefnmark{\thempfn}%
+ \endgroup%
+ #1%
+}
+\def\fn@startfntext{%
+ \setbox\z@\vbox\bgroup%
+ \fn@startnote%
+ \fn@prefntext%
+ \rule\z@\footnotesep%
+ \ignorespaces%
+}
+\def\fn@endfntext{%
+ \@finalstrut\strutbox%
+ \fn@postfntext%
+ \egroup%
+ \begingroup%
+ \let\@makefntext\@empty%
+ \let\@finalstrut\@gobble%
+ \let\rule\@gobbletwo%
+ \@footnotetext{\unvbox\z@}%
+ \endgroup%
+}
+\let\fn@latex@@footnote\footnote
+\def\fn@footnote{footnote}
+\def\footnote{%
+ \ifx\@currenvir\fn@footnote%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi%
+ {\fn@getmark{\stepcounter\@mpfn}%
+ {\leavevmode\unskip\@footnotemark\fn@startfntext}}%
+ {\fn@latex@@footnote}%
+}
+\let\endfootnote\fn@endfntext
+\def\fn@footnotetext{footnotetext}
+\let\fn@latex@@footnotetext\footnotetext
+\def\footnotetext{%
+ \ifx\@currenvir\fn@footnotetext%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi%
+ {\fn@getmark{}\fn@startfntext}%
+ {\fn@latex@@footnotetext}%
+}
+\let\endfootnotetext\endfootnote
+\long\def\@tempa#1\@@#2\@@@{\def\fn@prefntext{#1}\def\fn@postfntext{#2}}
+\expandafter\@tempa\@makefntext\@@\@@@
+\def\makesavenoteenv{\@ifnextchar[\fn@msne@ii\fn@msne@i}
+\def\fn@msne@i#1{%
+ \expandafter\let\csname msne$#1\expandafter\endcsname%
+ \csname #1\endcsname%
+ \expandafter\let\csname endmsne$#1\expandafter\endcsname%
+ \csname end#1\endcsname%
+ \fn@msne@ii[#1]{msne$#1}%
+}
+\def\fn@msne@ii[#1]#2{%
+ \expandafter\edef\csname#1\endcsname{%
+ \noexpand\savenotes%
+ \expandafter\noexpand\csname#2\endcsname%
+ }%
+ \expandafter\edef\csname end#1\endcsname{%
+ \expandafter\noexpand\csname end#2\endcsname%
+ \noexpand\expandafter%
+ \noexpand\spewnotes%
+ \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi%
+ }%
+}
+\makesavenoteenv[minipage*]{minipage}
+\let\fn@parbox\parbox
+\def\parbox{\@ifnextchar[{\fn@parbox@i{}}{\fn@parbox@ii{}}}
+\def\fn@parbox@i#1[#2]{%
+ \@ifnextchar[{\fn@parbox@i{#1[#2]}}{\fn@parbox@ii{#1[#2]}}%
+}
+\long\def\fn@parbox@ii#1#2#3{\savenotes\fn@parbox#1{#2}{#3}\spewnotes}
+\endinput
+%%
+%% End of file `footnote.sty'.
diff --git a/usergrps/uktug/baskervi/6_2/glean.tex b/usergrps/uktug/baskervi/6_2/glean.tex
new file mode 100644
index 0000000000..a5034bdeee
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/glean.tex
@@ -0,0 +1,217 @@
+\author{Malcolm Clark}
+\title{Malcolm's Gleanings}
+\begin{Article}
+\section{Hints and allegations}
+
+Have you booked your trip to Dubna yet?
+Despite my own personal reservations I'm
+sure this will turn out to be one of the
+great TUG conferences, honest. Trust me.
+The sorts of efforts which are being made to
+ensure that all the delegates are welcomed
+when they arrive in Moscow and conveyed
+to Dubna seem to indicate that this is
+going to be a very effective and friendly affair.
+Go for it. It will be something to tell your
+grandchildren about.
+
+A colleague (David Wright) recently spent a few weeks in Moscow. I asked
+him for his comments, since they may be applicable to
+those who manage to attend the conference.
+He writes:
+
+``I had a great time -- but I was lucky in having the option
+ of staying with friends who have a good flat in one of the
+ more privileged areas. I stayed for 2 nights in a student
+ house -- pretty scummy and with a bathroom replete with
+ cockroaches and a rat\slash mouse which lived behind the toilet.
+ I was there as a student however and they do look after
+ non-student guests better -- but you should be
+ prepared for pretty basic accommodation and then
+ anything better will be a pleasant surprise. This is a good
+ rule of thumb for all areas of life in the former SU.
+
+ Something you may notice is that Russians
+ have a casual approach to safety -- the only way to be if
+ you are permanently living in an environment where
+ things are fairly out of control. For visitors it is worth
+ being fairly cautious -- particularly with respect to traffic
+ which is anarchic.
+ From observation and what I have heard, emergency
+ services are rudimentary or non-existent and many
+ Russian hospitals are pretty run down -- so even with
+ good medical insurance, you might find that initial
+ treatment is tough.
+ Having said that, life becomes pretty normal after a
+ while and you can't spend your time wondering
+ whether the Metro or buses are getting the requisite
+ preventive maintenance -- they clearly aren't. You
+ could pack a geiger counter if you are
+ staying on the site of former or current reactors\dots
+
+ Transport is very good actually -- you can travel as
+ far as you like on the Metro for 1500 roubles
+ (about 5,000 roubles to the dollar, so about 20p)
+ - to do so you buy `jeton'
+ which you feed into the barrier. On buses, trams, etc
+ you can buy 10 tickets from the driver (a `knitchka'
+ \textsl{lit.} small book) for 19,000 roubles -- valid on all
+ versions (tram, trolleybus or bus) and for any length
+ of journey. To validate one for a trip you stamp it
+ in one of the coded punches in the vehicle.
+
+ An absolute must to visit is the refurbished Tretyakof
+ Gallery which is the centrepiece of Russian art -- but
+ it is worth reading a bit or getting a guide unless you
+ are the rare Westerner who knows anything about Russian
+ art. The Pushkin also currently has two exhibitions
+ (Moscow-Berlin 1900--1950 -- excellent, covering art,
+ architecture, drama, film, etc.\ \emph{and} of course the new
+ Trojan Gold (which opened the day I left).
+ An annexe to the Pushkin which holds several private
+ collections is also well worth a visit and for the really
+ art mad there is also the House of Artists near Gorki
+ Park (also a nice place to stroll in warm weather) which
+ houses an extension to the Tretyakof and numerous
+ other transient exhibitions.
+
+ The Kremlin is fairly essential (both for the churches and
+ the treasures -- which I didn't see, as I left some things for
+ another trip), but if one wants a weird experience and is
+ interested the Museum of the Revolution is it -- two of
+ us went -- paid about 30p to get in and were the only people
+ there (apart from the old ladies guarding every room). It
+ is likely to disappear at least in this form so it will soon
+ itself be history.
+
+ Other places which are worth a go are the Bolshoi Theatre
+ -- not the greatest in terms of performances but relatively
+ cheap -- best tickets about 75,000 roubles. Don't fall for the
+ ticket touts (anywhere) -- attendances by Russians have fallen
+ off greatly because most have to prioritise expenditure fairly
+ ruthlessly and the new rich have not yet matured into great
+ patrons of the arts.
+ The Conservatoire is interesting for its place in music
+ history, but by modern standards the hall is not acoustically
+ great (a bit like a school hall with pretensions). The music is
+ good and varied, though with quite a lot of more modern
+ Russian music.
+
+ For the really authentic Russian art experience, however,
+ try the theatre -- lots of them -- a very good one is the Mali
+ near the Bolshoi which has been refurbished recently. You
+ have to be prepared not to understand much so a Russian
+ version of a play you know is probably best. The \textsl{Cheek by Jowl}
+theatre company
+ were in Moscow when I was there, so if you want a Russian\slash
+ Western experience there are sometimes such options.
+
+ If you hate busy city life, try Suskova -- a preserved palace
+ in the Moscow suburbs (South East), which has an interesting
+ palace (wooden!), a lake a park, many folly\slash pavilions a
+ couple of which house glass and porcelain collections.
+ It is, though, also well worth walking round the back streets
+ of Moscow, especially near the North West quarter of the
+ inner garden ring (road). In spite of years of destruction
+ there is still quite a lot left of what must have been a
+ rather beautiful city.
+
+ Food is a problem in Moscow -- not many good places.
+ To get Russian fast food (pies basically, but don't try
+ the synthetic borsch) try the Russian Bistros.
+ For
+ a good Russian meal (100,000 roubles and upwards each)
+ there is a restaurant in the basement of one of the
+ old university building in the centre of Moscow (a bit
+ hard to find though).
+
+ Changing
+ money: you should take all your money ideally in
+ dollars (in a money belt!) and change about \$100--150
+ a time. There are many places to do this (all
+ marked `obmen valouti'). Some are pretty heavy places
+ because they are protected against frequent raids, but
+ they are ok. You should get a receipt of the transaction
+ in case you are asked to show them at the airport when
+ leaving (I wasn't). If they ask a question when you
+ hand over you money, passport and visa -- you should
+ carry both of the latter at all times -- just say `da' --
+ they are sure to be asking whether you want a receipt.
+ \emph{Very important} -- take new notes (insist at the
+ bank that they give you these) -- many exchange places
+ refuse even slightly worn/soiled notes and there is only
+ one central official exchange place where one can be
+ certain that any note will be changed. This is not a
+ fantasy: some people in our group had real problems
+ because they couldn't change some of their money.
+
+ At Sheremetevo airport expect the worst -- this is surely
+ amongst the least welcoming of all airports in the
+ world. We had a long wait at immigration (over an
+ hour) and baggage appears to come randomly off the
+ carousels. After a while it is just dumped anywhere on
+ the floor of the baggage hall. When you leave, you
+ go through customs before checking in your bags --
+ and you need to find the (unmarked) area where you get
+ and fill in a customs declaration before you join a
+ queue. In general most bureaucracy in Russia is just
+ obstructive, however, rather than really threatening\dots
+
+ Good luck.''
+\section{Urgent Newsflash: Origins of \LaTeX}
+Another correspondent (RAR) sent me this towards the
+end of March, beginning of April. It has the uncomfortable
+ring of truth to it:
+
+``U.S.\ Government Department of Defense papers released yesterday reveal
+the true source of the \LaTeX\ document preparation tool. Under the
+twenty-five year rule, hitherto secret Military Intelligence papers have
+been released into the public domain, detailing the Government
+involvement in the development of a prototype software tool.
+
+Major General Charles Schultz publicly apologised at a press meeting
+held to defuse what was described as a `tense situation' as the
+unsavoury origins of the `alleged software' were finally unearthed.
+Developed at the height of the Cold War, the prototype system was aimed
+at crippling the so-called `information net' within the Soviet high
+command. Maj.\ Gen.\ Schultz said, `We realised what would happen if an
+enemy organisation actually tried to create documents with this thing.
+Of course, it seems cold-blooded now, but you have to remember that this
+was at a time of war.' He added, `We never expected it to get out into
+general circulation'.
+
+Apparently, the software was released into a controlled environment
+under the cover of a beta-test at several academic sites in Europe and
+America. `We put in place all safety measures. However, we didn't fully
+appreciate the tenacity of academic staff in using and then illegally
+copying it into the wider environment. With hindsight, we should have
+taken a warning from the fact that they still thought Fortran was a good
+idea.'
+
+DoD boffins are rumoured to have panicked and released a beta-version of
+Emacs, the strangely popular editor-cum-operating-system in order to
+stem the spread of \LaTeX. However, Maj.\ Gen.\ Schultz declined to
+comment.''
+
+Had Schultz gone further and revealed that Unix was a similar
+escaped virus, I would have been inclined to believe this.
+Still, a close friend maintains that the CIA was the major
+sponsor of Pollock and Rothko (among other major non-figurative artists)
+in order to confuse and alarm those pesky Russkies. It all depends
+on whether you believe in the conspiracy or cock-up theory of politics.
+
+
+\section{Fonts}
+Gleanings from the Web: Adobe and Microsoft
+have made an agreement to create a new font format called OpenType which will
+combine TrueType and Type~1 into a single new font format. This new format will
+use Adobe's new font compression to create compact fonts. Details
+can be found at the following URL:
+\url{www.microsoft.com/truetype/fontpack/opentype.htm}
+
+On the other hand, there is a history of alliances like this
+being made in order to ensure that the technology is still-born.
+Don't hold your breath.
+
+
+\end{Article}
diff --git a/usergrps/uktug/baskervi/6_2/glean63.tex b/usergrps/uktug/baskervi/6_2/glean63.tex
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/glean63.tex
diff --git a/usergrps/uktug/baskervi/6_2/gpl.tex b/usergrps/uktug/baskervi/6_2/gpl.tex
new file mode 100644
index 0000000000..2fffc2d295
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/gpl.tex
@@ -0,0 +1,437 @@
+% \iffalse <meta-comment>
+%
+% gpl.tex
+%
+% The GNU General Public Licence as a LaTeX section
+%
+% (c) 1989, 1991 Free Software Foundation, Inc.
+% LaTeX markup and minor formatting changes by Mark Wooding
+%
+
+% --- Chapter heading ---
+%
+% We don't know whether this ought to be a section or a chapter. Easy.
+% We'll see if chapters are possible.
+%
+% \fi
+
+\begingroup
+\makeatletter
+
+\edef\next#1#2#3{\relax
+ \ifx\chapter\@@undefined
+ \ifx\documentclass\@notprerr#2\else#3\fi
+ \else#1\fi
+}
+
+\expandafter\endgroup\next
+{
+ \let\gpltoplevel\chapter
+ \let\gplsec\section
+ \let\gplend\endinput
+}{
+ \let\gpltoplevel\section
+ \let\gplsec\subsection
+ \let\gplend\endinput
+}{
+ \documentclass[a4paper]{article}
+ \def\gpltoplevel#1{%
+ \vspace*{1in}%
+ \hbox to\hsize{\hfil\LARGE\bfseries#1\hfil}%
+ \vspace{1in}%
+ }
+ \let\gplsec\section
+ \def\gplend{\end{document}}
+ \advance\textwidth1in
+ \advance\oddsidemargin-.5in
+ \sloppy
+ \begin{document}
+}
+
+%^^A-------------------------------------------------------------------------
+\gpltoplevel{The GNU General Public Licence}
+
+
+The following is the text of the GNU General Public Licence, under the terms
+of which this software is distrubuted.
+
+\vspace{12pt}
+
+\begin{center}
+\textbf{GNU GENERAL PUBLIC LICENSE} \\
+Version 2, June 1991
+\end{center}
+
+\begin{center}
+Copyright (C) 1989, 1991 Free Software Foundation, Inc. \\
+675 Mass Ave, Cambridge, MA 02139, USA
+
+Everyone is permitted to copy and distribute verbatim copies \\
+of this license document, but changing it is not allowed.
+\end{center}
+
+
+\gplsec{Preamble}
+
+The licenses for most software are designed to take away your freedom to
+share and change it. By contrast, the GNU General Public License is intended
+to guarantee your freedom to share and change free software---to make sure
+the software is free for all its users. This General Public License applies
+to most of the Free Software Foundation's software and to any other program
+whose authors commit to using it. (Some other Free Software Foundation
+software is covered by the GNU Library General Public License instead.) You
+can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom
+to distribute copies of free software (and charge for this service if you
+wish), that you receive source code or can get it if you want it, that you
+can change the software or use pieces of it in new free programs; and that
+you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These
+restrictions translate to certain responsibilities for you if you distribute
+copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or
+for a fee, you must give the recipients all the rights that you have. You
+must make sure that they, too, receive or can get the source code. And you
+must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software. If
+the software is modified by someone else and passed on, we want its
+recipients to know that what they have is not the original, so that any
+problems introduced by others will not reflect on the original authors'
+reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program
+proprietary. To prevent this, we have made it clear that any patent must be
+licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+
+\gplsec{Terms and conditions for copying, distribution and modification}
+
+\begin{enumerate}
+
+\makeatletter \setcounter{\@listctr}{-1} \makeatother
+
+\item [0.] This License applies to any program or other work which contains a
+ notice placed by the copyright holder saying it may be distributed
+ under the terms of this General Public License. The ``Program'',
+ below, refers to any such program or work, and a ``work based on the
+ Program'' means either the Program or any derivative work under
+ copyright law: that is to say, a work containing the Program or a
+ portion of it, either verbatim or with modifications and/or translated
+ into another language. (Hereinafter, translation is included without
+ limitation in the term ``modification''.) Each licensee is addressed
+ as ``you''.
+
+ Activities other than copying, distribution and modification are not
+ covered by this License; they are outside its scope. The act of
+ running the Program is not restricted, and the output from the Program
+ is covered only if its contents constitute a work based on the Program
+ (independent of having been made by running the Program). Whether that
+ is true depends on what the Program does.
+
+\item [1.] You may copy and distribute verbatim copies of the Program's
+ source code as you receive it, in any medium, provided that you
+ conspicuously and appropriately publish on each copy an appropriate
+ copyright notice and disclaimer of warranty; keep intact all the
+ notices that refer to this License and to the absence of any warranty;
+ and give any other recipients of the Program a copy of this License
+ along with the Program.
+
+ You may charge a fee for the physical act of transferring a copy, and
+ you may at your option offer warranty protection in exchange for a fee.
+
+\item [2.] You may modify your copy or copies of the Program or any portion
+ of it, thus forming a work based on the Program, and copy and
+ distribute such modifications or work under the terms of Section 1
+ above, provided that you also meet all of these conditions:
+
+ \begin{enumerate}
+
+ \item [(a)] You must cause the modified files to carry prominent
+ notices stating that you changed the files and the date of any
+ change.
+
+ \item [(b)] You must cause any work that you distribute or publish,
+ that in whole or in part contains or is derived from the Program
+ or any part thereof, to be licensed as a whole at no charge to
+ all third parties under the terms of this License.
+
+ \item [(c)] If the modified program normally reads commands
+ interactively when run, you must cause it, when started running
+ for such interactive use in the most ordinary way, to print or
+ display an announcement including an appropriate copyright notice
+ and a notice that there is no warranty (or else, saying that you
+ provide a warranty) and that users may redistribute the program
+ under these conditions, and telling the user how to view a copy
+ of this License. (Exception: if the Program itself is
+ interactive but does not normally print such an announcement,
+ your work based on the Program is not required to print an
+ announcement.)
+
+ \end{enumerate}
+
+ These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Program,
+ and can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works. But when you
+ distribute the same sections as part of a whole which is a work based
+ on the Program, the distribution of the whole must be on the terms of
+ this License, whose permissions for other licensees extend to the
+ entire whole, and thus to each and every part regardless of who wrote
+ it.
+
+ Thus, it is not the intent of this section to claim rights or contest
+ your rights to work written entirely by you; rather, the intent is to
+ exercise the right to control the distribution of derivative or
+ collective works based on the Program.
+
+ In addition, mere aggregation of another work not based on the Program
+ with the Program (or with a work based on the Program) on a volume of a
+ storage or distribution medium does not bring the other work under the
+ scope of this License.
+
+\item [3.] You may copy and distribute the Program (or a work based on it,
+ under Section 2) in object code or executable form under the terms of
+ Sections 1 and 2 above provided that you also do one of the following:
+
+ \begin{enumerate}
+
+ \item [(a)] Accompany it with the complete corresponding
+ machine-readable source code, which must be distributed under the
+ terms of Sections 1 and 2 above on a medium customarily used for
+ software interchange; or,
+
+ \item [(b)] Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ \item [(c)] Accompany it with the information you received as to the
+ offer to distribute corresponding source code. (This alternative
+ is allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+ \end{enumerate}
+
+ The source code for a work means the preferred form of the work for
+ making modifications to it. For an executable work, complete source
+ code means all the source code for all modules it contains, plus any
+ associated interface definition files, plus the scripts used to control
+ compilation and installation of the executable. However, as a special
+ exception, the source code distributed need not include anything that
+ is normally distributed (in either source or binary form) with the
+ major components (compiler, kernel, and so on) of the operating system
+ on which the executable runs, unless that component itself accompanies
+ the executable.
+
+ If distribution of executable or object code is made by offering access
+ to copy from a designated place, then offering equivalent access to
+ copy the source code from the same place counts as distribution of the
+ source code, even though third parties are not compelled to copy the
+ source along with the object code.
+
+\item [4.] You may not copy, modify, sublicense, or distribute the Program
+ except as expressly provided under this License. Any attempt otherwise
+ to copy, modify, sublicense or distribute the Program is void, and will
+ automatically terminate your rights under this License. However,
+ parties who have received copies, or rights, from you under this
+ License will not have their licenses terminated so long as such parties
+ remain in full compliance.
+
+\item [5.] You are not required to accept this License, since you have not
+ signed it. However, nothing else grants you permission to modify or
+ distribute the Program or its derivative works. These actions are
+ prohibited by law if you do not accept this License. Therefore, by
+ modifying or distributing the Program (or any work based on the
+ Program), you indicate your acceptance of this License to do so, and
+ all its terms and conditions for copying, distributing or modifying the
+ Program or works based on it.
+
+\item [6.] Each time you redistribute the Program (or any work based on the
+ Program), the recipient automatically receives a license from the
+ original licensor to copy, distribute or modify the Program subject to
+ these terms and conditions. You may not impose any further
+ restrictions on the recipients' exercise of the rights granted herein.
+ You are not responsible for enforcing compliance by third parties to
+ this License.
+
+\item [7.] If, as a consequence of a court judgment or allegation of patent
+ infringement or for any other reason (not limited to patent issues),
+ conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License. If you cannot
+ distribute so as to satisfy simultaneously your obligations under this
+ License and any other pertinent obligations, then as a consequence you
+ may not distribute the Program at all. For example, if a patent
+ license would not permit royalty-free redistribution of the Program by
+ all those who receive copies directly or indirectly through you, then
+ the only way you could satisfy both it and this License would be to
+ refrain entirely from distribution of the Program.
+
+ If any portion of this section is held invalid or unenforceable under
+ any particular circumstance, the balance of the section is intended to
+ apply and the section as a whole is intended to apply in other
+ circumstances.
+
+ It is not the purpose of this section to induce you to infringe any
+ patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system, which is
+ implemented by public license practices. Many people have made
+ generous contributions to the wide range of software distributed
+ through that system in reliance on consistent application of that
+ system; it is up to the author/donor to decide if he or she is willing
+ to distribute software through any other system and a licensee cannot
+ impose that choice.
+
+ This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.
+
+\item [8.] If the distribution and/or use of the Program is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Program under this License may
+ add an explicit geographical distribution limitation excluding those
+ countries, so that distribution is permitted only in or among countries
+ not thus excluded. In such case, this License incorporates the
+ limitation as if written in the body of this License.
+
+\item [9.] The Free Software Foundation may publish revised and/or new
+ versions of the General Public License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the Program
+ specifies a version number of this License which applies to it and
+ ``any later version'', you have the option of following the terms and
+ conditions either of that version or of any later version published by
+ the Free Software Foundation. If the Program does not specify a
+ version number of this License, you may choose any version ever
+ published by the Free Software Foundation.
+
+\item [10.] If you wish to incorporate parts of the Program into other free
+ programs whose distribution conditions are different, write to the
+ author to ask for permission. For software which is copyrighted by the
+ Free Software Foundation, write to the Free Software Foundation; we
+ sometimes make exceptions for this. Our decision will be guided by the
+ two goals of preserving the free status of all derivatives of our free
+ software and of promoting the sharing and reuse of software generally.
+
+\begin{center}
+NO WARRANTY
+\end{center}
+
+\bfseries
+
+\item [11.] Because the Program is licensed free of charge, there is no
+ warranty for the Program, to the extent permitted by applicable law.
+ except when otherwise stated in writing the copyright holders and/or
+ other parties provide the program ``as is'' without warranty of any
+ kind, either expressed or implied, including, but not limited to, the
+ implied warranties of merchantability and fitness for a particular
+ purpose. The entire risk as to the quality and performance of the
+ Program is with you. Should the Program prove defective, you assume
+ the cost of all necessary servicing, repair or correction.
+
+\item [12.] In no event unless required by applicable law or agreed to in
+ writing will any copyright holder, or any other party who may modify
+ and/or redistribute the program as permitted above, be liable to you
+ for damages, including any general, special, incidental or
+ consequential damages arising out of the use or inability to use the
+ program (including but not limited to loss of data or data being
+ rendered inaccurate or losses sustained by you or third parties or a
+ failure of the Program to operate with any other programs), even if
+ such holder or other party has been advised of the possibility of such
+ damages.
+
+\end{enumerate}
+
+\begin{center}
+\textbf{END OF TERMS AND CONDITIONS}
+\end{center}
+
+
+\gplsec{Appendix: How to Apply These Terms to Your New Programs}
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to
+attach them to the start of each source file to most effectively convey the
+exclusion of warranty; and each file should have at least the ``copyright''
+line and a pointer to where the full notice is found.
+
+\begin{verbatim}
+<one line to give the program's name and a brief idea of what it does.>
+Copyright (C) 19yy <name of author>
+
+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 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+\end{verbatim}
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when
+it starts in an interactive mode:
+
+\begin{verbatim}
+Gnomovision version 69, Copyright (C) 19yy name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+This is free software, and you are welcome to redistribute it
+under certain conditions; type `show c' for details.
+\end{verbatim}
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may be
+called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a ``copyright disclaimer'' for the program, if
+necessary. Here is a sample; alter the names:
+
+\begin{verbatim}
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+`Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+<signature of Ty Coon>, 1 April 1989
+Ty Coon, President of Vice
+\end{verbatim}
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+\gplend
diff --git a/usergrps/uktug/baskervi/6_2/grovel.tex b/usergrps/uktug/baskervi/6_2/grovel.tex
new file mode 100644
index 0000000000..98db26a814
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/grovel.tex
@@ -0,0 +1,24 @@
+\title{Production Problems}
+\author{Robin Fairbairns}
+\begin{Article}
+
+I had to apologise for the late production of \BV{} 5.6, which arose
+from my continuing distraction from the (several) jobs I had in hand;
+even when it had been printed, there was a delay before I was able to
+organise its posting. Because of that delay, we had to send you a
+separate mailing of the notice of Portable Documents (reprise) meeting.
+
+\BV{} 6.1, produced by David Carlisle, arrived on time, and I was able
+to get discs to the printer in reasonable time. However, the next day
+I had to leave Cambridge, and spent only one day here for the next
+week and a half. Fortunately, I was able to alert the committee to
+the need to send out a special mailing for the \TeX{} and the Internet
+meeting.
+Since they had been printed, I decided to include `my' fliers for the
+meeting with the mailing which is now, finally (4 March) in the post.
+(I'm \emph{sure} the green paper the fliers were printed on didn't look
+quite so violent when I chose it; I shan't select that colour again!)
+
+One hopes such alarums and diversions won't happen again; I apologise
+to the membership for any inconvenience.
+\end{Article}
diff --git a/usergrps/uktug/baskervi/6_2/ht.tex b/usergrps/uktug/baskervi/6_2/ht.tex
new file mode 100644
index 0000000000..16280ced08
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/ht.tex
@@ -0,0 +1,598 @@
+\MakeShortVerb{\|}
+\def\cmd#1{\texttt{\char'134#1}}
+\title{How does HTML handle mathematics?}
+\author{Malcolm Clark}
+\begin{Article}
+There is a very short answer to the question posed in
+the title: not at all. However, as an instantiation of
+SGML, we can look first at how mathematics is handled in other
+SGML DTDs; and then examine how the expired HTML3 draft
+proposed to include mathematics.
+
+The DTDs already available which are designed to
+handle mathematics include ISO\,9573 which is part of CALS, AAP (Association of
+American Publishers), ISO\,12083 and the HTML3 draft.
+The Euromath DTD might also be relevant,
+but since its status is closer to that
+of proprietary it is too awkward to consider here.
+Van Herwijnen comments on the first two, comparing them to \TeX\ and |eqn|.
+A longer and more detailed examination of the AAP, Euromath and ISO 12083 (or,
+as it was then known, ISO TR 9573) is given in Poppelier, van
+Herwijnen and Rowley (1992).
+
+Van Herwijnen provides an example from physics for the decay of a particle
+ together with representations in
+\TeX, |eqn|, ISO\,9573 and AAP.
+The equation is:
+\begin{displaymath}
+\Gamma(J/\psi\rightarrow\eta_c\gamma)
+= \frac{\alpha Q_c^2}{24}
+\left\vert A(J/\psi\rightarrow\eta_c\gamma)\right\vert^2
+\frac{m_\psi^2}{m_{\eta_c}^2}
+\left(1-\frac{m_{\eta_c}^2}{m_\psi^2}\right)^3
+\end{displaymath}
+The entire expression is to extensive to compare here, but
+the left hand side of the equation in ISO\,9573 may be
+given as
+\begin{verbatim}
+<mfn> <fname> &Gamma; <of>J/&psi; &rarr; &eta;
+<sub> c</sub> &gamma;
+\end{verbatim}
+while using the AAP dtd, it could be
+\begin{verbatim}
+<g>G<g>(<fr sol>J</><g>y</g> &ar; <g>h</g>
+<inf>c</inf>)
+\end{verbatim}
+For the sake of completeness, the |eqn| alternative is
+\begin{verbatim}
+Gamma(J/psi rarrow eta sub c gamma)
+\end{verbatim}
+Eric's comments are interesting.
+He comments that the two SGML representations are cumbersome
+and difficult to read, especially when contrasted to \TeX\ and |eqn|.
+He also rails against the obsession with representation.
+For example $\Gamma$ `means' decay width, but as far as the DTDs are
+concerned we have \texttt{\&Gamma;} and \texttt{<g>G</g>}.
+To be fair, \TeX\ and |eqn| hardly
+fare better, but at least we do know that we could have
+provided a more meaningful command. The second representation (AAP) is
+particularly unfortunate, since instead of treating the symbol
+as a symbol, it treats it as a Greek letter. Of course, Eric is deeply
+imbued with the basic notions of SGML, and would be very sensitive to this.
+
+His contention is that someone who already knew \TeX\ or |eqn| would
+have no motivation for learning or using these rather baroque alternative.
+
+There is a point to be made about the rather cumbersome nature of
+the SGML. Writing it by hand will be cumbersome, but surely no-one
+ever wants to write in this way. Structure editors are available.
+ In the \TeX\ world, Scientific Word gives a structure editor
+for \TeX\ (and \LaTeX). This is partly possible since it is possible
+to hold an equation as elements in a tree structure, so that modification
+or correction to an element can be managed quite simply, and changes can
+propagate down the tree. (Example) The same sort of thing exists within the SGML
+world. Euromath uses the Grif editor for just this, and it would
+be easy to see other similar editors, like Chamberlin's Quill maintaining
+the information. There is a question lurking whether mathematicians would
+actually like to input in this way. Just as experienced keyboarders find
+GUIs very difficult and slow to use, perhaps the same sort of
+resistance would
+be found. However, the real point is that humans should not be expected
+to write SGML. If they really must write \LaTeX, then an approach
+like Scientific Word, which could be coerced into generating a tree structure
+which could be mapped onto a DTD, is potentially more valuable.
+
+A general issue, which EvH raises implicitly, is that none of the DTDs
+offer a way of encoding meaning in a flexible way. Either the
+element is present already, or it is not. There appears
+to be no way of extending the range of elements. In the world
+of high energy physics and mathematics, this must be something
+of a straightjacket. On the other hand, the bane of many editors'
+lives is the ease with which individual authors
+can `extend' \TeX\ or \LaTeX\ by adding a few new definitions.
+
+\subsection{SGML Notations}
+If we really did have existing equations, then one way to
+handle them within SGML is through a Notation. A Notation permits
+a document to include data which is not to be parsed. It is
+therefore possible to include \TeX\ or \LaTeX\ and assume that
+at that point a convenient processor will be magicked to deal with
+it. He gives the example of the definition in a DTD:
+\begin{verbatim}
+<!NOTATION TeX SYSTEM "">
+<!NOTATION LaTeX SYSTEM "">
+<!ELEMENT Formula - 0 CDATA>
+<!ATTLIST Formula #NOTATION (TeX|LaTeX|eqn)
+ #CURRENT>
+\end{verbatim}
+which may then be used later with the |Formula| element as
+\begin{verbatim}
+<FORMULA NOTATION=TeX>
+...
+</FORMULA>
+\end{verbatim}
+
+A scheme which already maps SGML to \LaTeX\ (e.g. Flynn, 1995) would
+find this a very easy way to absorb maths, provided all the
+equations were in the same notation. The prospect of a
+\cmd{newcommand} or \cmd{def} within the Notation could be
+worrying.
+
+Although this sort of expedient is plausible, it is not entirely
+successful. One of the arguments behind the use of SGML is that it codes
+structure or meaning, rather than appearance (to echo one of Eric's points).
+\TeX\ and \LaTeX\ sometimes code meaning,
+but not in a consistent and reliable way.
+How do we extract information? If we have SGML, it is relatively
+easy to find corresponding structural elements, which may then be extracted.
+Once we start including a Notation, this chance is all but gone;
+and if we include alternative Notations (say \TeX, \LaTeX\ \emph{and} |eqn|)
+it becomes even more problematic.
+
+It is not clear to me how these Notations, or even the DTDs
+differentiate between in-line and displayed equations. I assume
+that an attribute could be included which specified the style.
+On the other hand ISO\,12083 which distinguishes between
+in line, displayed and `display formula groups' styles, through the
+use of different elements.
+
+There is perhaps a deeper question here,
+this is this, or should it be at all relevant?
+Should the author be able to specify that
+some equations are in-line and others are to be displayed?
+It should make no difference at all to the content, although
+it would make great changes to the appearance. But to deal with maths
+is to deal with appearance, to a large extent. The display seems
+to be a key issue. Since many equations are strongly two dimensional
+(as opposed to the one dimensional nature of most text), it is a key question
+whether it is reasonable to expect this aspect to be reflected in
+any linearisation.
+
+To give ISO\,12083 its due, it says ``Since there is no consensus
+on how to describe the semantics of formulas, it only describes
+the presentational or visual structure.''
+
+
+
+
+
+\section{HTML3 (expired draft)}
+HTML3 supports a |<math>| element which provides some
+capability for the inclusion
+of maths expressions. The draft does indicate that this capability is limited.
+It describes the functionality as similar to that found in ``common word
+processing packages''. In itself this may be seen as a hint of one of the driving
+forces within HTML3 -- a desire to emulate word processor functionality. For a
+language which derives initially from a high energy physics community, this is a
+modest aim. The other design aim of |<math>| in HTML3 is to be ``concise and
+comparatively easy to read''. As a rider, it is suggested that this will make
+formulae longer than \LaTeX, but shorter than EuroMath or ISO\,12083.
+
+It is stated that the maths owes ``a lot to \LaTeX's math mode''. In some cases
+it uses names for elements which are derived from \TeX/\LaTeX. Immediately a
+misconception springs up. The second paragraph of the section on maths gives
+examples of \LaTeX\ commands: namely \cmd{atop}, \cmd{choose} and \cmd{sqrt}.
+Only \cmd{sqrt} is a \LaTeX\ command. The \cmd{atop} and \cmd{choose}
+ are unrepentant \TeX. Ignoring
+for a moment the fact that there is a clear confusion between \LaTeX\ and \TeX\
+in the mind of the author of the draft (Dave Raggett),\footnote{I suspect
+this is quite a widespread misunderstanding.} there is actually a deeper problem.
+The use of an operator like \cmd{over} requires much more work on the part of a
+processor, since it is often not until the whole expression has been parsed that
+sense can be made of what is actually \cmd{over} what (see Rahtz, 1995).
+From years of teaching
+\TeX, I can confirm that the \cmd{over} command (and its buddies, \cmd{above},
+\cmd{atop}, \cmd{choose}, \cmd{brack} and \cmd{brace}) can lead to immense
+frustration and confusion.
+
+HTML3 also has an |<above>| token, but this is quite different from
+\TeX's \cmd{above}. Since
+the \TeX\ command is quite typographic, specifying the width of the line
+separating numerator and denominator, this is probably not too ambiguous. The
+function of the HTML3 tag is to allow something to be drawn above an
+expression. There is a similar |<below>| tag.
+|<above>| is a sort of numerator operator:
+\begin{verbatim}
+<math>
+<above>x+y</above>
+</math>
+\end{verbatim}
+gives something like
+\begin{displaymath}
+\overline{x+y}
+\end{displaymath}
+with the nuance that the element takes an attribute |sym| which can specify
+other symbols: |line| (the default), |cub|, |larr|, |rarr|, |hat| and |tilde| (in
+a sense |hat| and |tilde| correspond to \cmd{widehat} and \cmd{widetilde}).
+For example,
+\begin{displaymath}
+\overbrace{a+b+c}
+\end{displaymath}
+would be
+\begin{verbatim}
+<math>
+<above sym=cub>a+b+c</above>
+</math>
+\end{verbatim}
+corresponding |<below>| has the same list of possible |sym| attributes, though
+I don't immediately understand what |hat| and |tilde| would do.
+
+
+There are also some terminological surprises. |<math>| almost borrows the use of
+underscore and carat/circumflex for sub-scripts and super-scripts, except that
+they are referred to as index and exponent. The |^| and |_| are actually
+|shortref|s for |<sup>| and |<sub>|.\footnote{The notion of exponent and index
+may be welcome, since we would expect HTML to be concerned with the underlying
+content. Perhaps \TeX\ does tend to overload the idea, since a superscript may
+signify more things than just an exponent. A semantic separation
+might be a very good
+idea, but this is unlikely to be the intention, since they are
+|shortref| characters for |<sub>| and |<sup>|.} Since HTML syntax and \LaTeX\
+syntax are rather different, the ease of \LaTeX's sub- and super-scripting has
+to be abandoned. The HTML tag has to be terminated. It is unfortunate that there
+was not a way of employing an implied end tag.
+For example
+\begin{displaymath}
+a^{23}_n
+\end{displaymath}
+is given from
+\begin{verbatim}
+<math>
+a^23^_n_
+</math>
+\end{verbatim}
+
+Should you need to subscript a
+subscript, the |shortref| form cannot be used. Although |<math>| does support a
+grouping operator,
+\begin{displaymath}
+a_{b_c}
+\end{displaymath}
+is obtained from
+\begin{verbatim}
+<math>
+a<sub>b<sub>c</sub></sub>
+</math>
+\end{verbatim}
+Perhaps cleverly, superscripting an expression with a binary operator results
+in the expression being placed over the operator, like \cmd{stackrel}.
+For example
+\begin{displaymath}
+A \stackrel{\alpha'}{\longrightarrow} B \stackrel{\beta'}{\longleftarrow} C
+\end{displaymath}
+would be
+\begin{verbatim}
+<math>
+A &rarr;^&alpha;&prime;^ B &larr;^&beta;&prime;^ C
+</math>
+\end{verbatim}
+In passing note that the use of the `prime' operator is different from
+\TeX\slash \LaTeX\ use, and the use of space. I am not entirely clear about the
+use of space in |<math>|. It is certainly not ignored, as in \TeX, and
+the draft does comment on the use of different horizontal white space
+within the equation. The draft runs
+\begin{quote}
+Spacing between constants, variables and operators is determined
+automatically. Additional spacing can be inserted with entities such as
+|&thinsp;|, |&sp;| and |&quadsp;|. White space in the markup
+is used only to delimit adjacent variables or constants. You don't need
+spaces before or after binary operators or other special symbols as these
+are recognised by the HTML math tokeniser. White space can be
+useful, though, for increased legibility while authoring.
+\end{quote}
+This does imply a rather different use of space.
+This use of space does have the effect that a `prescript' can be made
+quite unambiguously simply by ensuring it is preceded by a space.
+It would imply
+a string |sin| is recognised as `some sort of function'. The string |xyz|,
+would also presumably imply `function', while in \LaTeX\ it would imply
+the three variables $x$, $y$ and $z$.
+It does leave unclear how
+\(\sin^2\theta \) and $\displaystyle\max_{i=1}^n x_i$
+would be handled with ease. If the $\sin^2\theta$ uses |<sup>|
+but the $\max_{i=1}^n x_i$ requires |<above>| and |<below>| then
+we have an interesting inconsistency.
+
+|<math>| does adopt \TeX/\LaTeX's notion of binary operators,
+and in general claims
+to reflect the assumptions of \TeX/\LaTeX. It does not however provide support
+for multi-line equations, stating that `this can be effectively handled by
+combining math with the |TABLE| element'. To me this wanders far from the basic
+concepts of SGML. However, what it appears to mean is that
+the |<array>| tag uses the same sort of syntax as |<table>|, not that
+an array uses the table tags.
+
+
+From the draft, it is anticipated that chemistry could be set from within
+the |<math>| tag. I would view this as a mistake. It may be (almost) defensible
+from within \LaTeX\ to use math structures, although the various chemistry
+packages at least try to separate the notions. It seems unfortunate that HTML3
+should not attempt something similar.\footnote{And of course this emphasises the
+inadequacy of referring to a subscript as an index and a superscript as an
+exponent. The terms are pretty meaningless for chemical notation.} An example
+might be
+\begin{verbatim}
+<math class=chem>
+Fe_2_^2+^+Cr_2_O_4_
+<math>
+\end{verbatim}
+for
+\begin{displaymath}
+\mathrm{Fe}_2^{2+}+\mathrm{Cr}^{}_2+\mathrm{O}^{}_4
+\end{displaymath}
+where the different notational style of chemistry is tackled, notably
+its use of an upright font and consistent baselines for subscripts.
+
+
+Some hints on appearance are provided: it is expected that functions
+(operators), numbers and other constants are portrayed in an upright font, and
+variables are italic. Unlike \TeX/\LaTeX, limits for integrals and summation
+signs are said to be placed directly above or below, or to the immediate right
+(depending on the symbol). Unfortunately, the draft does not indicate quite
+what this ambiguous term means. I suppose it does not mean `emulate' the
+\TeX/\LaTeX\ mode, though that is obviously plausible, and from the point of view
+of a browser author could be a reasonable path.
+
+What does it look like?
+\begin{verbatim}
+<math>
+&int;_a_^b^{f(x)<over>1+x} d x
+</math>
+\end{verbatim}
+for
+\begin{displaymath}
+\int_a^b\frac{f(x)}{1+x}dx
+\end{displaymath}
+Note that the sub- and
+super-scripts, like \TeX/\LaTeX\ also denote limits.
+
+
+Some maths accents are available: |<vec>|, |<bar>|, |<dot>|, |<ddot>|, |<hat>|
+and |<tilde>|. There are no explicit equivalents for \cmd{check}, \cmd{breve},
+\cmd{acute} and \cmd{grave}, although they could be created with |<above>|.
+
+Another borrowing from \TeX/\LaTeX\ is the notion of grouping:
+HTML3 uses a |<box>| element where \TeX/\LaTeX\ would use parentheses.
+|<box>| can be replaced by a |shortref| form of |{|
+and |}|, which greatly aids brevity and comprehension.\footnote{Should
+you need the symbols themselves, they are obtained by
+the entities \texttt{\&lcub;} and \texttt{\&rcub;}.}
+Although \TeX nically a braced group is a sort of `box',
+perhaps |<group>| might have
+been a better, though less concise term, in the context.
+It is perhaps an unfortunate choice, since `box' carries overtones for
+many \TeX\
+users. Still, it does ensure that all the power of grouping is present (fairly
+essential in view of the |<over>| element). To overload slightly, one of the
+attributes of the |<math>| element is |box|, which causes a box to be drawn
+around the formulae. The |<box>| element is used in a number of ways; it is
+used, for example with the |<left>| and |<right>| commands for delimiters which
+grow. This leads to a rather strange construction:
+\begin{verbatim}
+<math>
+f(x)=<box>(<left> 1+x <over> sin x <right>)<\box>
+</math>
+\end{verbatim}
+where |(<left>| gives a left parenthesis of appropriate size and |<right>)|
+gives the corresponding right parenthesis. It is not mandatory to have
+\emph{both} |<left>| and |<right>|. As with \TeX, it is recognised that sometimes it
+may be necessary to have a delimiter larger than `default'. |<box>| therefore
+has a |size| attribute to enable this to happen. The permitted values are
+|normal|, |medium|, |large| and |huge|. The short form cannot
+take attributes.
+
+Integrals (and other large operands which are stretchy) also need the use of
+|<left>|, without any corresponding |<right>|. For example
+\begin{verbatim}
+<math>
+<box>&int;_-&inf;_^&inf;^
+ <left> f(x,y) <over> x^2^+y^2^ </box> d x&thinsp;d y
+</math>
+\end{verbatim}
+should give
+\begin{displaymath}
+\int_{-\infty}^\infty\frac{f(x,y)}{x^2+y^2}dx\,dy
+\end{displaymath}
+
+Although |<math>| is said to recognise functions as maths entities, there is no
+list of all the entities given in the draft. However, straightforward elements
+like |<sqrt>| and |<root>| exist which work the same as their \TeX\ counterparts.
+The \LaTeX\ notation for $\root n \of x$ however is \cmd{sqrt} with an
+optional argument: |\sqrt[n]{x}|, not as HTML3:
+\begin{verbatim}
+<math>
+<root>n<of>x</root>
+</math>
+\end{verbatim}
+which is rather closer to \TeX.
+
+ What the draft terms `Greek letters' are available in a similar way to
+\TeX/\LaTeX\ as entity references (and includes omicron).
+Some control over font styles is available through |<b>| and |<t>|. The first
+emboldens, while the latter makes upright (Times?). You may even combine
+the two as |<bt>|. Note that these changes apply to variables and constants,
+and not to numbers, delimiters, operators and other symbols. An interesting
+attribute is |CLASS|, so that we could identify a vector as
+\begin{verbatim}
+<math>
+<b class=vector>a</b>=A&prime;
+</math>
+\end{verbatim}
+
+Arrays or matrices are quite verbose, but broadly similar to \LaTeX. They are
+introduced by |<array>|, while each row starts with |<row>| and each cell with
+an |<item>|. This is in line with HTML's |<table>| model. Adapting some aspects
+of \LaTeX, column definitions can be added, for example
+|coldef="CCCC"|, the default, where columns are centred. The alternatives are
+|R| and |L|. This is one of the few instances in HTML where case is vital. If the
+attributes are separated by |+|, |-| or |=| this will propagate down the array
+as a separator. For example
+\begin{verbatim}
+<array coldef="R=C+C+C">
+\end{verbatim}
+Other attributes include |ldelim| and |rdelim| to specify the right and left
+delimiters of the array or matrix. Unlike other instances where a name is used,
+the symbol itself appears to be used in this context.
+
+
+\subsection{Summary}
+
+
+I tend to think that this makes it more difficult for someone with a \LaTeX\
+background to interpret |<math>|. When two languages are quite different, there
+is rarely confusion in flipping from one to the other, but when they share
+many similarities it can be frustratingly simple to converge at all the wrong
+times. Note also that |<math>| uses the ISO entity names for symbols rather than
+the \TeX\ names. In a few cases this sows potential confusion.
+The confusion which exists within the draft between \TeX\ and \LaTeX\
+is not of itself a problem, except that people coming to HTML3, being told
+it is `like \LaTeX', will find some key differences.
+
+The main divergences are
+\begin{enumerate}
+\item the interpretation of space\label{space}
+\item need to close most SGML elements (e.g.\ |^| and |_|)
+\item |<over>|
+\item interpretation of functions (a consequence of \ref{space})
+\item entity names similar but not identical to corresponding commands
+\item use of |&prime;|
+\item missing commands
+\end{enumerate}
+
+
+\section{Future of maths in HTML}
+At this point, it may be worth considering the extent to which any maths
+expression can divorce the semantic component from the form on the page. Often
+the way equations are portrayed can assist in their interpretation. Both tables
+and maths seem to be examples where the meaning and the appearance are very
+closely intertwined. There are instances where an author changes notation in
+order to pursue an argument. One assumes that the essential meaning does not
+change between changes in notation, and that perhaps a markup system might not
+even note the change, except perhaps as an attribute.
+
+The draft document which forms the basis of this discussion
+expired about 6 months ago. Some of the new structures which
+it introduced, notably tables, form part of most browsers now,
+but mathematics didn't make it (although |<sub>| and |<sup>|, without
+|<math>| did). A recent email from Dave Raggett (to David Carlisle),
+who wrote the draft, notes that W3C
+\begin{quote}
+has set up a small working party on math, and we expect
+to publish a detailed proposal by early Summer. The March'95 spec
+will provide a starting point, but we may end up with something
+rather different.
+\end{quote}
+
+He goes on to state:
+\begin{quotation}
+The W3C math group has the goal to develop an open specification
+for HTML math that:
+\begin{itemize}
+\item[]Is suitable for teaching, and scientific publishing.
+\item[]Works with symbolic and numerical math applications
+\item[]Supports filters to/from other math formats, e.g.\ \TeX
+\item[]Is easy to learn and to edit by hand
+\item[]Is well suited to template and other math editing techniques
+\item[]Can be rendered to:
+\begin{itemize}
+\item[]graphical displays
+\item[]speech synthesisers
+\item[]plain text displays e.g.\ VT100 emulators
+\item[]print media, including braille
+\end{itemize}
+\item[]Support lengthy expressions via fold\slash unfold and
+line breaking with author control.
+\end{itemize}
+This is shaping up as the need for simple macros and declarations
+that define terms etc for use across multiple |<math>| elements,
+and parsing of |PCDATA| using ``models'' referenced by |<math>| elements.
+These models define how to interpret stuff at a level sufficient to
+support symbolic manipulation without having to make all these
+distinctions explicit in the markup itself.
+\end{quotation}
+
+This is quite a bold extrapolation from the original specification.
+Some of the suggestions seem to me to be incompatible. The inclusion of
+symbolic and numerical applications is interesting and goes far
+beyond the existing maths DTDs.
+
+The relevant W3C web page contains a reference to QED, an ambitious
+programme to build a `single, distributed, computerized
+repository that rigorously represents all important, established
+mathematical knowledge'. If this genuinely represents part of
+HTML's solution to maths, we will have some time to wait before
+a system is available.
+
+\section{Conclusion}
+It is not clear to me at present whether HTML will ever be rich enough
+to do the sorts of things which mathematicians and physicists want to do
+with maths. Of course, it could be that these are not the market at all.
+I have long argued that one of \TeX's (and \LaTeX's) major problems is
+that the population of users who benefit by it are small -- very much
+a minority. And the expansion of the use of computers has made them
+an even smaller minority. At best we are a niche market. Some of the
+simpler problems are already tackled quite conveniently by word processors,
+further eroding the niche. Why bother with mathematics at all? Is it
+really worth the effort, compared with something sexy like |<frame>|s?
+
+Having said that, it appears that Public Entities in ISO\,8879 are sufficient
+to encompass most of the symbols I have seen in \LaTeX\ and AMS\TeX. The
+potential is there. What makes this especially intriguing is that there
+is software around like Panorama from SoftQuad which is designed to
+enable any SGML document whose DTD is known to be rendered on the screen.
+Therefore for truly `heavy' applications, this seems a much better
+way to go. In fact, I would see it as an altogether better way to go.
+Browsers which could examine the |Doctype| find it on an appropriate
+server and then render would be much more flexible, and enable us to use
+existing SGML documents easily on the Web. HTML would simply be a lightweight
+DTD used because it had a lower overhead.
+
+On the other hand, browsers like Netscape Navigator
+are becoming larger, are starting
+to include `plug-ins' and be Acrobat-aware.
+If HTML3 version 2, as outlined by Raggett does support filters
+(hopefully to \LaTeX\ rather than \TeX), as well as symbolic
+manipulation (Mathematica, Maple, etc), it could be a very powerful
+tool.
+
+One last point: despite the implicit hyperlinking which has done so much
+to make the Web attractive, cross referencing is not an explicit part
+of |<math>|. \LaTeX's symbolic cross referencing is a boon, but there
+do not seem to be similar tools available in DTDs. One reason for this may
+be the one-to-one referencing of HTML, where \LaTeX\ (and other
+hypertext systems) are capable of one-to-many.
+
+\end{Article}
+
+\endinput
+\begin{bibliography}
+\bibitem{EvH} Eric van Herwijnen, 1990, Practical SGML, Kluwer Academic Publishers, 307pp.
+\bibitem{ISO9573}
+
+\bibitem{AAP}
+
+\bibitem{SandS} Joan Smith and Robert Stutely, 1988, SGML the user's guide to ISO 8879,
+Ellis Horwood, 172pp.
+
+\bibitem{Goossens} Michel Goossens and Janne Saarela, 1995, A practical
+introduction to SGML, \TUB, 16(2), p103--150.
+
+\bibitem{math} Dave Raggett, \texttt{http://www.w3.org/pub/WWW/<arkUp/html3/} Expired
+HTML3 draft.
+
+\bibitem{seb} Sebastian Rahtz, 1995, Another look at \LaTeX\ to SGML conversion,
+\TUB, 16(3), 315--324.
+
+\bibitem{Goossens2} Michel Goossens and Janne Saarela, 1995, \TeX\ to HTML and back,
+\TUB, 16(2), 174--214.
+
+\bibitem{Bryan} Martin Bryan, 1988, SGML an author's guide, Addison Wesley, 364pp.
+
+\bibitem{Chamberlin}
+
+\bibitem{Grif}
+
+\bibitem{Euromath}
+
+\bibitem{W3C} Math Markup in HTML
+http://www.w3.org/hypertext/WWW/MarkUp/Math/
diff --git a/usergrps/uktug/baskervi/6_2/htbib.tex b/usergrps/uktug/baskervi/6_2/htbib.tex
new file mode 100644
index 0000000000..0ad3f6216e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/htbib.tex
@@ -0,0 +1,31 @@
+\begin{bibliography}
+\bibitem{EvH} Eric van Herwijnen, 1990, Practical SGML, Kluwer Academic Publishers, 307pp.
+\bibitem{ISO9573}
+
+\bibitem{AAP}
+
+\bibitem{SandS} Joan Smith and Robert Stutely, 1988, SGML the user's guide to ISO 8879,
+Ellis Horwood, 172pp.
+
+\bibitem{Goossens} Michel Goossens and Janne Saarela, 1995, A practical
+introduction to SGML, \TUB, 16(2), p103--150.
+
+\bibitem{math} Dave Raggett, \texttt{http://www.w3.org/pub/WWW/<arkUp/html3/} Expired
+HTML3 draft.
+
+\bibitem{seb} Sebastian Rahtz, 1995, Another look at \LaTeX\ to SGML conversion,
+\TUB, 16(3), 315--324.
+
+\bibitem{Goossens2} Michel Goossens and Janne Saarela, 1995, \TeX\ to HTML and back,
+\TUB, 16(2), 174--214.
+
+\bibitem{Bryan} Martin Bryan, 1988, SGML an author's guide, Addison Wesley, 364pp.
+
+\bibitem{Chamberlin}
+
+\bibitem{Grif}
+
+\bibitem{Euromath}
+
+\bibitem{W3C} Math Markup in HTML
+http://www.w3.org/hypertext/WWW/MarkUp/Math/
diff --git a/usergrps/uktug/baskervi/6_2/ltour2.tex b/usergrps/uktug/baskervi/6_2/ltour2.tex
new file mode 100644
index 0000000000..8e97062d33
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/ltour2.tex
@@ -0,0 +1,557 @@
+\title[A \LaTeX\ Tour; part 2]{A
+\LaTeX\ Tour, part 2: the Tools and Graphics distributions}
+\author{David Carlisle}
+
+\begin{Article}
+
+\section{Introduction}
+In the previous article in this series I started by giving a
+description of the files in the `\package{base}' \LaTeX\ distribution.
+In part~2, I shall cover the `\package{tools}' and
+`\package{graphics}' distributions.
+These are distributed in the \File|tools| and \File|graphics|
+subdirectories of the \acro{CTAN} directory
+\path{macros/latex/packages}.
+Although these files are not part of the minimal \package{base}
+distribution they should normally be included in the \LaTeX\
+installation at any site. The \LaTeX\ book assumes that at least the
+\package{graphics} distribution is installed.
+
+The primary source for \LaTeX\ is the `\acro{CTAN}'\footnote
+{\texttt{ftp.tex.ac.uk} in the UK} network of archives, so
+if I refer to path names of files this relates to the \acro{CTAN} file
+structure. Note however that if you obtained \LaTeX\ as part of a
+`pre-packaged' \TeX\ distribution, then these files may have been
+moved (typically documentation files may be separated from \TeX\
+source files). I hope this will not cause any confusion.
+
+\section{The \package{Tools} Distribution}
+
+The \package{tools} distribution consists of packages written by
+individual members of the \LaTeX3 project. They are supported by the
+same mechanism as the \package{base} \LaTeX\ distribution, that is, any
+problems should be reported using \File|latexbug.tex| and the \LaTeX\
+bug report database, as described in part~1. Note that this bug report
+system should \emph{not} be used for `contributed' packages that one
+may find in the \path{macros/latex/contrib} area of the \acro{CTAN}
+archives.
+
+\subsection{Packages Extending the \env{array} and \env{tabular}
+Environments}
+
+The first group of packages extend the functionality of the standard
+\LaTeX\ \env{array} and \env{tabular} environments. These are all
+described in Chapter~5 of \emph{The \LaTeX\ Companion}, as well of
+course as in the source `\texttt{.dtx}' files which may be processed
+by \LaTeX\ to produce typeset documentation, and optionally code
+listings.
+\begin{filedesc}
+
+\item[array]
+ Extended versions of the \env{array},
+ \env{tabular} and \env{tabular*} environments.
+ The principal advantage of
+ the versions provided by this package is that you can specify
+typesetting instructions to apply to a whole column of the table. As
+well as the usual \texttt{clr} column specifiers, one may add commands
+at the beginning of each entry with \texttt{>} and at the end of each
+entry with \texttt{<}. So a column specifier of \verb|>{\bfseries}c|
+would produce a bold, centred column of a table.
+
+The \package{array} package also provides a \verb|\newcolumntype|
+command for defining new column specifiers, in addition to the
+standard ones. This is used by some of the packages described below.
+
+\item[dcolumn]
+ Alignment on `decimal points' in tabular entries. Requires
+\package{array}. This package provides a new column specifier
+\texttt{D} which may be used to produce columns of numbers aligned on
+a decimal point `.' or some other symbol, such as `$\cdot$' or `,'.
+
+\item[delarray]
+This package requires
+the \package{array} package. It provides a mechanism for specifying
+`large delimiters' around arrays. This is most convenient for putting
+brackets around arrays that are to be aligned on their top or bottom
+row (when the `obvious' construction with \verb|\left| and
+\verb|\right| does not work). Compare the standard
+\begin{smallv}
+\begin{verbatim}
+\left(
+\begin{array}[t]{c}a\\b\end{array}
+\right)
+\left(
+\begin{array}{cc}a&b\end{array}
+\right)
+\end{verbatim}
+\[
+\left(\begin{array}[t]{c}a\\b\end{array}\right)
+\left(\begin{array}{cc}a&b\end{array}\right)
+\]
+with the effect produced using the \package{dcolumn} syntax.
+\begin{verbatim}
+\begin{array}[t]({c})a\\b\end{array}
+\begin{array}({cc})a&b\end{array}
+\end{verbatim}
+\[
+\begin{array}[t]({c})a\\b\end{array}
+\begin{array}({cc})a&b\end{array}
+\]
+\end{smallv}
+\item[hhline]
+ Finer control over horizontal rules in tables. Requires
+ \package{array}. Standard \LaTeX's \verb|\hline\hline|
+construction produces a double rule across a table, but the user
+has no control over how this rule interacts with vertical rules. Using
+the \verb|\hhline| command provided by this package, gives
+`corners' where a double horizontal rule meets a double vertical rule,
+and other similar effects.
+
+Compare the first, standard construction with the following
+\verb|\hhline| sample:
+
+\begin{tabular}{||c|ccc||}
+\hline\hline&&&\\\hline\hline
+\end{tabular}
+\qquad
+\begin{tabular}{||c|ccc||}
+\hhline{|t:=|===:t|}&&&\\\hhline{|b:=|===:b|}
+\end{tabular}
+\item[longtable]
+ Standard \LaTeX\ tables (i.e., the \env{tabular} environment) produce
+`boxes' that cannot be broken across a page. This has advantages in
+that the table can then be positioned just like a large `character'
+(say centred by the \env{center} environment), but has the
+disadvantage that large tables need to be broken by hand to fit on the
+page. The \env{longtable} environment is essentially the same as
+\env{tabular} but produces tables that break at page boundaries, and
+has some additional commands to control `head' and `foot' lines of the
+table that are added to each page. If the \package{array} package is also
+loaded, then the extra features may also be used in \env{longtable}
+column specifications. Note that \package{longtable} can deal with
+\emph{very} long tables, longer than can be stored in memory by
+\TeX's primitive \verb|\halign| command.
+
+The \package{longtable} package has a few quirks and features that
+mean that it is not suitable in all cases. An alternative package
+(currently maintained by Johannes Braams, but as a contributed
+package, not as part of the \package{tools} distribution) is
+the package \package{supertab} which provides a similar
+\env{supertabular} environment.
+\item[tabularx] Defines the \env{tabularx} environment which is
+similar to \env{tabular*} but modifies column widths, not
+inter-column space, to achieve a desired table width.
+
+One common request is to combine the features of
+\env{tabularx} with \env{longtable}, i.e., have a table across multiple
+pages, in which the widths of the `parbox' columns are calculated
+automatically. This functionality is not provided by the standard
+packages in the \package{tools} distribution, but the experimental
+contributed package \package{ltxtable} does provide such an
+environment. (\package{ltxtable} is written by the
+same author as \package{longtable} and \package{tabularx}; however,
+problems with \package{ltxtable} should \emph{not} be addressed to
+the \LaTeX\ bugs system.) An alternative to \package{ltxtable} is
+Anil~Goel's contributed package, \package{ltablex}, a similar
+merger which is simpler to use than \package{ltxtable}, but not quite
+as powerful.
+
+\end{filedesc}
+
+\subsection{Missing File Error Control Files}
+Although these files (which are all generated from the same source
+file, \File|fileerr.dtx|) are distributed as part of the \LaTeX\
+distribution, they are possibly of more use when used with
+\emph{other} formats. The primitive \TeX\ behaviour if asked to input
+a non-existent file is to offer a prompt:
+\begin{smallv}
+\begin{verbatim}
+Please type another input file name:
+\end{verbatim}
+\end{smallv}
+You \emph{must} type a valid file name to this prompt or \TeX\ just
+repeats the request. On some systems you can use a mechanism to abort
+the job (e.g., control-C or control-Z) but there is no way to tell
+\TeX\ to skip the input or do any other error recovery.
+
+To avoid this unpleasant loop, \LaTeX\ always checks that a file
+exists before trying to input it (unless you use the primitive
+\verb|\input filename| syntax with no \verb|{ }| around the
+argument).
+
+If you do encounter this loop using a different format, or with
+\LaTeX, by mistyping the file name on the command line, then the
+following \texttt{.tex} files provide valid filenames that you can
+easily remember to type at the missing file prompt. The
+actions that each of these \texttt{.tex} files takes is designed to
+mimic the actions that are possible after a \TeX\ error.
+
+\begin{filedesc}
+\item[h] Typing \texttt{h} $\langle$\emph{return}$\rangle$ to the
+missing file prompt will cause \TeX\ to input \File|h.tex|, this
+produces a helpful message, and then produces the normal `error
+prompt' i.e.,\ \texttt{?} so you can hit
+$\langle$\emph{return}$\rangle$ to move on, or \texttt{x} to quit, or
+whatever.
+
+\item[s] Typing \texttt{s} $\langle$\emph{return}$\rangle$ inputs
+\File|s.tex| which puts \TeX\ into `scroll mode'. This means that it
+will scroll past future errors without stopping.
+
+\item[x] Typing \texttt{x} $\langle$\emph{return}$\rangle$ causes the
+current \TeX\ run to be aborted.
+
+\item[e] The file \File|e.tex| is in fact the same as \File|x.tex| but
+allows \texttt{e} to be given as an answer to the missing file prompt
+similar to the \texttt{e} response to the error prompt (which is
+supposed to start up an editor but usually is the same as \texttt{x}).
+
+\item[\char`\ ] If the operating system allows there will also be a file
+\File|.tex| which does nothing, this will mean that just hitting
+$\langle$\emph{return}$\rangle$ in response to the missing file
+prompt inputs \File|.tex| and allows \TeX\ to proceed with the
+original file.
+Some operating systems object to a file with only an extension and no
+filename before the `\texttt{.}' so this option may not be available
+to you. Most \TeX\ distributions include a file \File|null.tex| which
+is also empty, so if you do not have the option of installing the file
+\File|.tex| you may type \texttt{null}~$\langle$\emph{return}$\rangle$
+in response to the missing file prompt, which will also allow \TeX\ to
+proceed.
+\end{filedesc}
+
+
+\subsection{Miscellaneous \package{Tools} Packages}
+\begin{filedesc}
+
+\item[afterpage]
+ Defines an \verb|\afterpage| command that saves up its argument and
+executes it after the current page (i.e., at the top of the next
+page). \LaTeX's output routine was \emph{not} designed with the idea
+that packages might want to play kind of trick, so this
+package is particularly fragile. In fact it was only written as a kind
+of private joke; I noticed the comment
+``\emph{Output routines are always protected by enclosing them
+in groups, so that they do not inadvertently mess up the rest of
+\TeX}'' in the \TeX{}book, and wanted to answer\footnote{%
+The answer incidentally is not at the top of the next page, but rather
+any of the places where the \TeX{}book uses the magic phrase
+``\emph{exercises the page builder}''.} the question,
+``\emph{Where do you end up if you jump out of that group with
+\texttt{\string\aftergroup}?\/}'' Despite this, judging by reactions,
+people do seem to find the package
+useful\ldots
+\item[enumerate]
+ Extended version of the \env{enumerate} environment. The
+ environment is given an optional argument which controls how the
+counter is printed. For example \verb|\begin{enumerate}[a)]| would
+produce items labelled `a)' ` b)' ` c)'.
+
+\item[ftnright]
+ Place footnotes in the right hand column in two-column mode.
+ Normally \LaTeX\ places footnotes at the bottom of each
+ column. This package causes the footnotes for both columns of
+a page to be set in the
+normal text area at the end of the second column on each page.
+It currently works only with the standard two column mechanism, not
+with the mechanism of the \package{multicol} package.
+
+\item[indentfirst]
+ Indent the first paragraph of sections etc. This very small
+package just suppresses the usual \LaTeX\ mechanism which ensures that
+the first paragraph of each section is not indented.
+\item[multicol]
+Typeset text in columns (up to 10 columns per page), with the
+length of the final columns `balanced'. \BV~uses this package to
+balance the columns at the end of every article. Unlike the standard
+\verb|\twocolumn| command, this package allows changing the number of
+columns part way down a page. It does have some restrictions on the
+use of floats which means that it is not suitable for all purposes.
+Also (uniquely for the files in the core \LaTeX\ distribution) this
+package has special conditions on commercial use.
+
+\item[rawfonts]
+ Preload fonts under the old internal font names of \LaTeX\,2.09.
+ Not recommended for new packages, but may help when updating old
+ files.
+
+\item[somedefs]
+ This package is not intended to be called directly by a
+document, but may by used (via \verb|\RequirePackage|) to build a
+package in which you want the default behaviour to be to execute
+\emph{all} possible options, but that the user may execute just some
+of the options by specifying options in the \verb|\usepackage| call.
+This is used in the \package{rawfonts} package above to allow just
+some of the `old' font names to be defined rather than all of them.
+
+\item[theorem]
+ Flexible definition of `theorem-like' environments. The
+standard \verb|\newtheorem| command gives some control over the title
+and numbering of `theorem-like' declarations, but is not very
+flexible. The \package{theorem} package provides an enhanced
+declaration scheme which gives control over the fonts used in the
+heading and theorem body, and such details as whether the numbering is
+`\textbf{Theorem~1}' or `\textbf{1~Theorem}'. Recently this package
+has acquired a close cousin, the \package{amsthm} package, part of the
+`AMS-\LaTeX' collection. The AMS variant has perhaps slightly simpler
+user-syntax but is used in much the same way.
+
+\item[varioref]
+Provides \verb|\vref| and related commands. \verb|\vref| is like a
+combination of \verb|\ref| and \verb|\pageref| which produces
+references such as `Figure~2 on page~3'. However, it omits the page
+number if it is on the current page, and replaces it by phrases such as
+`on the facing page' when appropriate.
+
+\item[verbatim]
+ Flexible version of \env{verbatim} environment. The standard \LaTeX\
+\env{verbatim} environment can not easily be used in the definition of
+other environments as typically the \verb|\end| of the newly defined
+environment is not recognised as such, but is treated as verbatim
+text. This package re-implements \env{verbatim} such that (with some
+restrictions) it can be used in the definition of other environments
+and commands. It
+also defines some such derived environments, for inputting and writing
+files verbatim, and for adding line numbers, and also a \env{comment}
+environment that ignores all the environment body.
+
+\item[xr]
+ The \package{xr} (e\underline{x}ternal \underline{r}eferences)
+package allows one \LaTeX\ document to access the \texttt{.aux} file of
+another. So if file \texttt{fileA} has a section marked with
+\verb|\label{xyz}| then file \texttt{fileB} may refer to that section
+using \verb|\ref{xyz}| just as if it were part of the same document. This
+requires the file \File|fileA.aux| created when \texttt{fileA} was processed
+to be still available when \texttt{fileB} is processed. (This package was
+originally by Jean-Pierre Drucbert, but was recoded
+and adopted into the \package{tools} distribution.)
+
+\item[xspace]
+ One of the more common errors in \TeX\ documents is to use a command
+ such as \verb|\TeX| within text, but forget to follow it with
+\verb*|\ | or \verb|{}|. This package defines a command
+\verb|\xspace| which may be used at the end of the definition of such
+a `text command'. It looks ahead and adds a space
+unless the next token is a punctuation character.
+\end{filedesc}
+
+\subsection{Packages for Drafts and Tests}
+\begin{filedesc}
+\item[fontsmpl]
+ Package and test file for producing `font samples'. The base
+distribution contains a file \File|nfssfont.tex| that shows some small
+samples, and a character table for a given font. \File|fontsmpl.tex|
+produces a much more extensive test showing examples of all the fonts
+in a given family. If you want to devise your own similar test suite
+you may use the \package{fontsmpl} package, following the examples in
+\File|fontsmpl.tex|.
+
+\item[layout] Defines a \verb|\layout| command that produces a half
+size `picture' of the document page settings such as
+\verb|\textwidth|, \verb|\oddsidemargin|, \ldots\ together with a table
+of their values. This is quite useful when designing a new class file,
+as it gives a visual representation of how the various areas of the
+page for headlines, body text, marginal notes, etc.,\ relate to each
+other.
+\item[showkeys]
+ \LaTeX's automatic numbering and cross referencing feature is one of
+its strongest points, as it makes editing a document (and thus
+potentially changing the numbering throughout the rest of the file)
+quite painless. However, one disadvantage is that when reading a
+printed draft, one sees `final' numbers rather than the symbolic names
+that are used in the source file's \verb|\label| and \verb|\ref|
+command. This package makes these symbolic names, or `keys', appear in
+the
+margin\vadjust{\smash{\rlap{\kern-3pt\small\fbox{lbl}}}} in the case
+of \verb|\label|
+and \verb|\bibitem| or raised above the number, like this
+ \vbox to 0pt{\vss
+ \rlap{\vrule\raise .75em
+ \hbox{\underbar{\footnotesize\ttfamily lbl}}}}1, in the case of
+\verb|\ref| and \verb|\cite|. Some people find the raised labels above
+cross references distracting and so a package option turns them off,
+just leaving the marginal notes showing the \verb|\label| and
+\verb|\bibitem| keys.
+\end{filedesc}
+
+\section{The \package{Graphics} Distribution}
+
+\TeX\ (and the \texttt{dvi} format) is only designed to deal with
+rectangular boxes consisting of text, white space or rectangular
+rules. However it has an `escape mechanism', the \verb|\special|
+primitive command that allows processing instructions to be passed
+straight from \TeX\ (via the \texttt{dvi} file) to the `driver'
+program that is used to process (e.g., preview or print) the
+\texttt{dvi} file. \TeX\ places essentially no restrictions on what
+instructions may be passed via \verb|\special|, and so the
+possibilities are unlimited\ldots
+
+Most modern drivers can import `graphic' files of various sorts.
+Those drivers that are producing \PS\ can often do more extensive
+manipulations of the typeset text, such as scaling or rotation of the
+text, or even writing text along an arbitrary curve. Many of these
+drivers can also support colour to some extent. Unfortunately as all
+these features require that the \texttt{dvi} file stores processing
+instructions for the driver, it means that the \texttt{dvi} file is
+not portable to a site that uses a different driver program. There
+have been many attempts over the years to coordinate the
+\verb|\special| syntax used by the different drivers, so that they
+would all accept a common core of processing instructions, but there
+has been notable lack of success in such efforts to date\ldots
+
+As a `next best thing' to having portability at the \texttt{dvi} level,
+\LaTeX\ supplies a suite of standard graphics commands provided by the
+packages described in this section, so that at least \TeX\ source
+files should be reasonably portable. At a given site the graphics
+packages will be customised to use a suitable `back end' file that
+converts the \LaTeX\ syntax into the form required by the local
+driver. This should mean that as long as both drivers support some
+feature, such as including \PS\ graphics, a file just needs to be
+re-processed with \LaTeX\ to use the \verb|\special|s at the new site;
+the \LaTeX\ file does not need to be edited. Although this suite of
+programs was devised as part of \LaTeX, users of other \TeX\ formats
+may use them by way of the interface available from \acro{CTAN}
+hosts in \path{macros/generic/graphics}.
+
+\subsection{Documentation}
+All the packages in this distribution are, as usual, distributed as
+documented sources in \texttt{dtx} form, however the documentation in
+these package sources is rather technical. A separate `User Guide' is
+available as \LaTeX\ source in \File|grfguide.tex| and also in
+pre-formatted form in the \PS\ file \File|grfguide.ps|.
+
+The \package{color} package (which produces colours despite the
+strange spelling) and the \textsf{graphics} package are also described
+in Lamport's \LaTeX\ manual. An alternative to \File|grfguide.tex| as
+a free source of documentation is Keith Reckdahl's \emph{Using EPS
+Graphics in \LaTeXe\ Documents} distributed
+from \acro{CTAN} sites in the file \path{info/epslatex.ps}
+and published in \tubissue{17}{1--2}. This
+document covers the \package{graphicx} package in some depth, and also
+related contributed packages for controlling figure placement and
+captions, and the \package{psfrag} system for overlaying \LaTeX\ text
+over a \PS\ diagram.
+
+\subsection{Colour}
+
+\begin{filedesc}
+\item[color] Produce coloured effects in your document. The
+\verb|\color{red}| declaration would make all the following text red,
+the similar \verb|\textcolor| command takes an extra argument that
+specifies the text to be coloured (by analogy with \verb|\rmfamily|
+and \verb|\textrm|).
+
+One may also produce boxes with coloured backgrounds using the
+\verb|\colorbox| command.
+
+Accurate treatment of colour is probably the feature that requires the
+most `help' from the driver program. If your driver was not
+specifically written to support colour then probably the
+\package{color} package will not work at all, or will be limited to
+regions of colour that fall on one page, and all the current colours
+will be `forgotten' at a page break.
+
+\item[pstcol] The
+\package{pstricks} package of Tim~van~Zandt provides a very powerful
+interface to \PS. Unfortunately the package has some slight
+incompatibilities with the \package{color} package. If a document
+loads \package{pstcol}, both \package{color} and
+\package{pstricks} are loaded, and then a few internal
+\package{pstricks} functions are redefined to repair the
+incompatibility.
+\end{filedesc}
+
+\subsection{Rotation, Scaling and Graphics Inclusion}
+\begin{filedesc}
+\item[graphics] This is the core \LaTeX\ package for
+rotation
+(\verb|\rotatebox|), scaling (\verb|\scalebox| and
+\verb|\resizebox|) of text, and the inclusion of graphics images
+(\verb|\includegraphics|). Unlike the old \LaTeX\,2.09 packages such
+as \package{psfig} the \verb|\includegraphics| command is not
+restricted to \PS\ graphics, but can include any graphics formats that
+your driver supports.
+\item[graphicx] Often when including graphics files one needs to
+specify combinations of scaling and rotation and other special
+effects. The \package{graphics} package uses standard \LaTeX\
+`positional' optional arguments which means that it is not practical
+for any command to support more than a couple of optional arguments.
+The \package{graphicx} package calls the \package{graphics} package
+internally, but offers a more powerful and friendly `named argument'
+interface in which an arbitrary number of optional keys may be set in
+one \verb|[ ]| argument. For instance to include a graphic scaled to
+half size, and rotated through 90$^\circ$, one can specify
+\begin{smallv}
+\begin{verbatim}
+\includegraphics[scale=.5, angle=90]{file}
+\end{verbatim}
+\end{smallv}
+To do the equivalent with the \package{graphics} package would require
+nested calls of \verb|\includegraphics| inside \verb|\scalebox| inside
+\verb|\rotatebox|.
+
+\item[lscape] Provides a \env{landscape} environment within which the
+body of every page is rotated through 90$^\circ$. The page head and
+foot are not rotated, but stay in their usual positions. It requires the
+\package{graphics} package which is used to handle the rotation.
+\item[epsfig] The obsolete \LaTeX\,2.09 did not come with a standard
+graphics package. Two popular contributed packages to include \PS\
+graphics were \package{psfig} (T.~Darrell) and \package{epsf}
+(T.~Rokicki). Sebastian Rahtz merged and extended these to produce the
+package \package{epsfig}. The \package{epsfig} package became very
+popular, especially after it was given extensive coverage in \emph{The
+\LaTeX\ Companion}. For this reason the current distribution contains
+a package called \package{epsfig} so that old documents do not
+need converting to the new system. However this \package{epsfig} is
+just a wrapper that converts the old syntax into calls to the new
+\verb|\includegraphics| command and so should not now be used for new
+documents.
+\end{filedesc}
+
+\subsection{Driver Files}
+
+As mentioned above, these packages all require customisation to a
+particular driver. This may be specified either in a site
+configuration file, or
+as a package option in the document. The code for these drivers is all
+stored in `\texttt{.def}' files, so for instance the code for the
+\emph{dvips} driver (and also for \emph{xdvi} which uses the same
+\verb|\special| syntax) is stored in \File|dvips.def|. All these
+driver files are
+derived from the same source, \File|drivers.dtx|, except for the
+Textures file which is currently distributed as a separate
+\File|textures.def| contributed by Arthur Ogawa. One special
+\texttt{.def} file does not correspond to a driver,
+\File|dvipsnam.def| predefines the 60$+$ colours that are `known' to
+the \emph{dvips} driver. It may be used with other drivers as well, as
+described in the \package{color} package documentation.
+
+\subsection{Other Graphics Packages}
+
+The remaining two packages do not have code that is specific to dvi
+driver programs, and so in some sense do not really belong in the
+\package{graphics} distribution; they are used by the
+\package{graphics} and \package{graphicx} packages. In fact the code
+of either of these packages may be extracted and used in any format
+based on plain \TeX. They do not use any \LaTeX\ specific features.
+\begin{filedesc}
+\item[keyval] The \package{graphicx} package makes use of a `named
+argument' or `key equals value' syntax as described above.
+\package{Keyval} provides a general parser for such a syntax, so this
+package is unlikely to be directly called within a document, but may
+be loaded by \verb|\RequirePackage| by any package or class file that
+needs to define commands with such a syntax.
+\item[trig] This package provides functions for calculating the
+trigonometric functions sin, cos and tan. These are used by the
+\package{graphics} package for determining the amount of space a
+rotated box will take up.
+\end{filedesc}
+
+\section{Coming Soon}
+Part~3 of this tour will describe the files of Johannes Braams'
+\package{babel} distribution of packages for multi-lingual
+typesetting, the \package{psnfss} distribution of
+\PS\ font related packages, and \package{mfnfss} distribution of
+packages for loading `Pandora' and `Old German' fonts.
+\end{Article}
+
diff --git a/usergrps/uktug/baskervi/6_2/ltour3.tex b/usergrps/uktug/baskervi/6_2/ltour3.tex
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/ltour3.tex
diff --git a/usergrps/uktug/baskervi/6_2/mathenv.sty b/usergrps/uktug/baskervi/6_2/mathenv.sty
new file mode 100644
index 0000000000..21b749b101
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/mathenv.sty
@@ -0,0 +1,449 @@
+%%
+%% This is file `mathenv.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% mdwtab.dtx (with options: `mathenv')
+%%
+%% IMPORTANT NOTICE
+%%
+%% mdwtab package -- another rewrite of the tabular environment, etc.
+%% Copyright (c) 1996 Mark Wooding
+%%
+%% 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 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mathenv}
+ [1996/05/09 1.03 Various maths environments]
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%%
+\newif\if@fleqn
+\newif\if@leqno
+\DeclareOption{fleqn}{\@fleqntrue}
+\DeclareOption{leqno}{\@leqnotrue}
+\ProcessOptions
+\RequirePackage{mdwtab}
+\newif\if@eqalast
+\newskip\eqaopenskip
+\newskip\eqacloseskip
+\newskip\eqacolskip
+\newskip\eqainskip
+\newskip\splitleft
+\newskip\splitright
+\AtBeginDocument{%
+ \eqacloseskip\@centering%
+ \eqacolskip1.5em\@plus\@m\p@
+ \eqainskip\z@%
+ \if@fleqn%
+ \eqaopenskip\mathindent%
+ \splitleft\mathindent\relax%
+ \splitright\mathindent\@minus\mathindent\relax%
+ \else%
+ \eqaopenskip\@centering%
+ \splitleft2.5em\@minus2.5em%
+ \splitright\splitleft%
+ \fi%
+ \relax%
+}
+\def\dsp@startouter{%
+ \let\dsp@end\dsp@endouter%
+ $$%
+}
+\def\dsp@endouter{$$}
+\def\dsp@startinner{%
+ \let\dsp@end\dsp@endinner%
+ \if@fleqn\kern-\mathindent\fi%
+ \if@leqno\vtop\else\vtop\fi\bgroup%
+}
+\def\dsp@endinner{\egroup}
+\def\dsp@start{%
+ \ifmmode%
+ \ifinner\mth@err@mdsp\fi%
+ \expandafter\dsp@startinner%
+ \else%
+ \ifhmode\ifinner\mth@err@hdsp\fi\fi%
+ \expandafter\dsp@startouter%
+ \fi%
+}
+\def\dsp@tabpause{%
+ \def\tab@startpause%
+ {\penalty\postdisplaypenalty\vskip\belowdisplayskip}%
+ \def\tab@endpause%
+ {\penalty\predisplaypenalty\vskip\abovedisplayskip}%
+}
+\let\eqastyle\displaystyle
+\def\eqnarray{%
+ \eqnarray@i\eqa@eqcount%
+}
+\@namedef{eqnarray*}{\eqnarray@i{}}
+\def\eqnarray@i#1{\@ifnextchar[{\eqnarray@ii{#1}}{\eqnarray@ii{#1}[rcl]}}
+\def\eqnarray@ii#1[#2]{%
+ \stepcounter{equation}%
+ \def\@currentlabel{\p@equation\theequation}%
+ \let\eqa@oldnumber\eqa@number%
+ \def\eqa@defnumber{#1}%
+ \global\let\eqa@number\eqa@defnumber%
+ \@eqalastfalse%
+ \m@th%
+ \colset{eqnarray}%
+ \tab@initread%
+ \def\tab@tabtext{&\tabskip\z@skip}%
+ \tab@preamble{\tabskip\z@skip}%
+ \tab@readpreamble{#2@{\tabskip\eqacloseskip}}%
+ \dsp@tabpause%
+ \col@sep.5\eqainskip%
+ \everycr{}%
+ \let\\\@eqncr%
+ \dsp@start%
+ \tabskip\eqaopenskip%
+ \halign to\displaywidth\expandafter\bgroup%
+ \the\tab@preamble%
+ &&\eqa@lastcol\hb@xt@\z@{\hss##}\tabskip\z@\cr%
+}
+\def\endeqnarray{%
+ \eqa@eqnum%
+ \egroup%
+ \dsp@end%
+ \global\let\eqa@number\eqa@oldnumber%
+ \global\@ignoretrue%
+ \global\advance\c@equation\m@ne%
+}
+\expandafter\let\csname endeqnarray*\endcsname\endeqnarray
+\colpush{eqnarray}
+\coldef r{\tabcoltype{\hfil$\eqastyle}{{}$}}
+\coldef c{\tabcoltype{\hfil$\eqastyle{}}{{}$\hfil}}
+\coldef l{\tabcoltype{$\eqastyle{}}{$\hfil}}
+\coldef x{\tabcoltype{\if@fleqn\else\hfil\fi$\eqastyle}{$\hfil}}
+\collet T [tabular]T
+\coldef L{\tabcoltype{\hb@xt@2em\bgroup$\eqastyle}{$\hss\egroup}}
+\coldef :{\tabspctype{\tabskip\eqacolskip}}
+\coldef q{\tabspctype{\quad}}
+\collet > [tabular]>
+\collet < [tabular]<
+\collet * [tabular]*
+\collet @ [tabular]@
+\colpop
+\def\@eqncr{\tab@cr\eqacr@i\interdisplaylinepenalty\@M}%
+\def\eqacr@i#1#2{%
+ \eqa@eqnum%
+ \noalign{\penalty#2\vskip\jot\vskip#1}%
+}
+\if@leqno
+ \def\eqa@eqpos#1{%
+ \hb@xt@.01\p@{}\rlap{\normalfont\normalcolor\hskip-\displaywidth#1}%
+ }
+\else
+ \def\eqa@eqpos#1{\normalfont\normalcolor#1}
+\fi
+\def\eqa@eqnum{%
+ \global\let\eqa@lastcol\@eqalasttrue%
+ \eqa@eqnum@i%
+}
+\def\eqa@eqnum@i{%
+ \relax%
+ \if@eqalast%
+ \expandafter\eqa@eqnum@ii%
+ \else%
+ \expandafter\eqa@eqnum@iii%
+ \fi%
+}
+\def\eqa@eqnum@ii{%
+ \eqa@eqpos\eqa@number%
+ \global\let\eqa@number\eqa@defnumber%
+ \global\let\eqa@lastcol\eqa@@lastcol%
+ \cr%
+}
+\def\eqa@eqnum@iii{&\eqa@eqnum@i}
+\def\eqa@@lastcol{\mth@err@number\setbox\z@}
+\let\eqa@lastcol\eqa@@lastcol
+\newcommand\eqnumber[1][\eqa@eqcount]{\gdef\eqa@number{#1}}
+\def\eqa@eqcount{(\theequation)\global\advance\c@equation\@ne}
+\def\nonumber{\global\let\eqa@number\@empty}
+\def\eqnalign{\@ifnextchar[\eqnalign@i{\eqnalign@i[rcl]}}
+\def\eqnalign@i[#1]{%
+ \@ifnextchar[{\eqnalign@ii{#1}}{\eqnalign@ii{#1}[c]}%
+}
+\def\eqnalign@ii#1[#2]{%
+ \let\\\eqn@cr%
+ \colset{eqnarray}%
+ \tab@initread%
+ \def\tab@tabtext{&\tabskip\z@skip}%
+ \tabskip\z@skip%
+ \col@sep.5\eqainskip%
+ \tab@readpreamble{#1}%
+ \everycr{}%
+ \if#2t\vtop\else%
+ \if#2b\vbox\else%
+ \vcenter%
+ \fi%
+ \fi%
+ \bgroup%
+ \halign\expandafter\bgroup\the\tab@preamble\cr%
+}
+\def\endeqnalign{%
+ \crcr%
+ \egroup%
+ \egroup%
+}
+\def\eqn@cr{\tab@cr\eqn@cr@i{}{}}
+\def\eqn@cr@i#1{\cr\noalign{\vskip\jot\vskip#1}\@gobble}
+\def\eqlines{\eqnarray[x]}
+\let\endeqlines\endeqnarray
+\expandafter\edef\csname eqlines*\endcsname{%
+ \expandafter\noexpand\csname eqnarray*\endcsname[x]%
+}
+\expandafter\let\csname endeqlines*\expandafter\endcsname
+ \csname endeqnarray*\endcsname
+\def\spliteqn{%
+ \let\eqa@oldnumber\eqa@number%
+ \global\let\eqa@number\eqa@eqcount%
+ \spliteqn@i%
+}
+\@namedef{spliteqn*}{%
+ \let\eqa@oldnumber\eqa@number%
+ \gdef\eqa@number{}%
+ \spliteqn@i%
+}
+\def\endspliteqn{%
+ \hfilneg\seq@lastcr%
+ \egroup%
+ \dsp@end%
+ \global\let\eqa@number\eqa@oldnumber%
+ \global\advance\c@equation\m@ne%
+}
+\expandafter\let\csname endspliteqn*\endcsname\endspliteqn
+\def\spliteqn@i{%
+ \stepcounter{equation}%
+ \def\@currentlabel{\p@equation\theequation}%
+ \if@leqno%
+ \global\let\seq@docr\seq@eqnocr%
+ \else%
+ \global\let\seq@docr\seq@cr%
+ \fi%
+ \global\let\seq@lastcr\seq@eqnocr%
+ \dsp@start%
+ \dsp@tabpause%
+ \def\\{\seq@docr}%
+ \seq@dosplit%
+ {\hb@xt@\displaywidth{%
+ \hskip\splitleft\hfil$\displaystyle##$%
+ \hfil\hskip\splitright}}%
+ {\hfilneg}%
+}
+\def\subsplit{%
+ \let\\\seq@cr%
+ \vcenter\bgroup%
+ \seq@dosplit{\hfil\qquad$##$\qquad\hfil}{\hfilneg\hskip-2em}%
+}
+\def\endsubsplit{%
+ \hfilneg\hskip-2em\cr%
+ \egroup\egroup%
+}
+\def\seq@dosplit#1#2{%
+ \halign\bgroup%
+ #1&&\mth@err@number\setbox\z@\hbox{##}\cr%
+ #2\relax%
+}
+\def\seq@eqnocr{%
+ &\omit%
+ \hb@xt@\z@{\hss\eqa@eqpos\eqa@number}%
+ \global\let\seq@docr\seq@cr%
+ \global\let\seq@lastcr\seq@cr%
+ \seq@cr%
+}
+\def\seq@cr{\tab@cr\seq@cr@i\interdisplaylinepenalty\@M}
+\def\seq@cr@i#1#2{\cr\noalign{\penalty#2\vskip\jot\vskip#1}}
+\def\genmatrix#1#2#3#4#5{%
+ \let\mat@style#1%
+ \ifx#2\scriptstyle%
+ \let\mat@font\scriptfont%
+ \else\ifx#2\scriptscriptstyle%
+ \let\mat@font\scriptscriptfont%
+ \else%
+ \let\mat@font\textfont%
+ \fi\fi%
+ \ifx\mat@style\scriptstyle%
+ \let\mat@textsize\scriptsize%
+ \else\ifx\mat@style\scriptscriptstyle%
+ \let\mat@textsize\scriptscriptsize%
+ \else%
+ \let\mat@textsize\relax%
+ \fi\fi%
+ \def\mat@left{\bgroup\mat@style\left#4#3\vcenter\bgroup}%
+ \toks@{\egroup#3\right#5\egroup}%
+ \@tempswatrue%
+ \ifx\mat@style\displaystyle\else\ifx\mat@style\textstyle\else%
+ \@tempswafalse%
+ \setbox\z@\hbox\bgroup$%
+ \toks@\expandafter{\the\toks@$\m@th\egroup\raise.75\p@\box\z@}%
+ \fi\fi%
+ \if@tempswa\ifmmode\else%
+ $\m@th%
+ \toks@\expandafter{\the\toks@$}%
+ \fi\fi%
+ \edef\mat@right{\the\toks@}%
+ \@ifnextchar[\genmatrix@i{\genmatrix@i[[c]}%
+}
+\def\genmatrix@i[#1]{%
+ \colset{matrix}%
+ \tab@initread%
+ \setbox\z@\hbox{$\mat@style\mskip12mu$}%
+ \edef\tab@tabtext{&\kern\the\wd\z@}%
+ \tab@readpreamble{#1}%
+ \if1\ifx\mat@style\scriptstyle1\else%
+ \ifx\mat@style\scriptscriptstyle1\else0\fi\fi%
+ \baselineskip\fontdimen10\mat@font\tw@%
+ \advance\baselineskip\fontdimen12\mat@font\tw@%
+ \lineskip\thr@@\fontdimen8\mat@font\thr@@%
+ \else%
+ \baselineskip\fontdimen8\mat@font\tw@%
+ \advance\baselineskip\fontdimen11\mat@font\tw@%
+ \lineskip7\fontdimen8\mat@font\thr@@%
+ \fi%
+ \lineskiplimit\lineskip%
+ \let\\\mat@cr%
+ \tabskip\z@skip%
+ \col@sep\z@%
+ \mat@left%
+ \halign\expandafter\bgroup\the\tab@preamble\tabskip\z@skip\cr%
+ \ifx\mat@font\textfont%
+ \omit$\mat@style\mathstrut$\cr\noalign{\kern-\baselineskip}%
+ \fi%
+}
+\def\endgenmatrix{%
+ \crcr%
+ \ifx\mat@font\textfont%
+ \omit$\mat@style\mathstrut$\cr\noalign{\kern-\baselineskip}%
+ \fi%
+ \egroup%
+ \mat@right%
+}
+\def\mat@cr{\tab@cr\mat@cr@i{}{}}
+\def\mat@cr@i#1{\cr\noalign{\vskip#1}\@gobble}
+\def\newmatrix#1#2{%
+ \@namedef{#1}{\genmatrix#2}%
+ \expandafter\let\csname end#1\endcsname\endgenmatrix%
+}
+\newmatrix{matrix}{{\textstyle}{\textstyle}{\,}{.}{.}}
+\newmatrix{pmatrix}{{\textstyle}{\textstyle}{\,}{(}{)}}
+\newmatrix{dmatrix}{{\textstyle}{\textstyle}{\,}}
+\newmatrix{smatrix}{{\scriptstyle}{\scriptstyle}{}{.}{.}}
+\newmatrix{spmatrix}{{\scriptstyle}{\scriptstyle}{}{(}{)}}
+\newmatrix{sdmatrix}{{\scriptstyle}{\scriptstyle}{}}
+\newmatrix{smatrix*}{{\scriptstyle}{\textstyle}{}{.}{.}}
+\newmatrix{spmatrix*}{{\scriptstyle}{\textstyle}{}{(}{)}}
+\newmatrix{sdmatrix*}{{\scriptstyle}{\textstyle}{}}
+\def\script{%
+ \let\mat@style\scriptstyle%
+ \def\mat@left{\vcenter\bgroup}%
+ \def\mat@right{\egroup}%
+ \let\mat@font\scriptfont%
+ \let\mat@textsize\scriptsize%
+ \@ifnextchar[\genmatrix@i{\genmatrix@i[c]}%
+}
+\let\endscript\endgenmatrix
+\colpush{matrix}
+\coldef l{\tabcoltype{\kern\z@$\mat@style}{\m@th$\hfil}}
+\coldef c{\tabcoltype{\hfil$\mat@style}{\m@th$\hfil}}
+\coldef r{\tabcoltype{\hfil$\mat@style}{\m@th$}}
+\coldef T#1{\tab@aligncol{#1}{\begingroup\mat@textsize}{\endgroup}}
+\coldef {[}{%
+ \@firstoftwo{%
+ \ifnum\tab@columns=\z@%
+ \def\@tempa##1\q@delim{%
+ \tab@mkpreamble##1[##1\q@delim%
+ }%
+ \expandafter\@tempa%
+ \else%
+ \tab@setstate\tab@prestate%
+ \tab@append\tab@preamble{&}%
+ \expandafter\tab@mkpreamble%
+ \fi%
+ }%
+}
+\colpop
+\def\mdw@dots#1{\ensuremath{\mathpalette\mdw@dots@i{#1}}}
+\def\mdw@dots@i#1#2{%
+ \setbox\z@\hbox{$#1\mskip1.8mu$}%
+ \dimen@\wd\z@%
+ \setbox\z@\hbox{$#1.$}%
+ #2%
+}
+\def\vdots{%
+ \mdw@dots{\vbox{%
+ \baselineskip4\dimen@%
+ \lineskiplimit\z@%
+ \kern6\dimen@%
+ \copy\z@\copy\z@\box\z@%
+ }}%
+}
+\def\ddots{%
+ \mdw@dots{\mathinner{%
+ \mkern1mu%
+ \raise7\dimen@\vbox{\kern7\dimen@\copy\z@}%
+ \mkern2mu%
+ \raise4\dimen@\copy\z@%
+ \mkern2mu%
+ \raise\dimen@\box\z@%
+ \mkern1mu%
+ }}%
+}
+\def\cases{\left\{\,\array{@{}lTl@{}}}
+\def\endcases{\endarray\,\right.}
+\def\smcases{\left\{\smarray{@{}lTl@{}}}
+\def\endsmcases{\endsmarray\,\right.}
+\def\mth@error{\PackageError{mathenv}}
+\def\mth@err@number{%
+ \mth@error{Too many `&' characters found}{%
+ You've put too many `&' characters in an alignment^^J%
+ environment (like `eqnarray' or `spliteqn') and wandered^^J%
+ into trouble. I've gobbled the contents of that column^^J%
+ and hopefully I can recover fairly easily.%
+ }%
+}
+\def\mth@err@mdsp{%
+ \mth@error{Can't do displays in nondisplay maths mode}{%
+ You're trying to start a display environment, but you're^^J%
+ in nondisplay maths mode. The display will appear but^^J%
+ don't blame me when it looks horrible.%
+ }%
+}
+\def\mth@err@hdsp{%
+ \mth@error{Can't do displays in LR mode}{%
+ You're trying to start a display environment, but you're^^J%
+ in LR (restricted horizontal) mode. Everything will go^^J%
+ totally wrong, so your best bet is to type `X', fix the^^J%
+ mistake and start again.%
+ }%
+}
+\endinput
+%%
+%% End of file `mathenv.sty'.
diff --git a/usergrps/uktug/baskervi/6_2/mflogo.sty b/usergrps/uktug/baskervi/6_2/mflogo.sty
new file mode 100644
index 0000000000..6d8600f226
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/mflogo.sty
@@ -0,0 +1,44 @@
+%%
+%% This is file `mflogo.sty', generated on <1994/9/15>
+%% with the docstrip utility (2.2h).
+%%
+%% The original source files were:
+%%
+%% mflogo.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE:
+%% You are not allowed to distribute this file.
+%% For distribution of the original source see
+%% the copyright notice in the file mflogo.dtx .
+%%
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\def\filename{mflogo.dtx}
+\def\filedate{1994/05/21}
+\def\fileversion{1.2}
+\ProvidesPackage{mflogo}[\filedate\space\fileversion\space
+ Contributed LaTeX2e package]
+\typeout{Package: `mflogo'
+ \fileversion\space <\filedate> (Ulrik Vieth)}
+\def\logofamily{%
+ \fontencoding{U}\fontfamily{logo}\selectfont}
+\def\textlogo{\protect\ptextlogo}
+\def\ptextlogo#1{{\logofamily #1}}
+\def\MF{\textlogo{META}\-\textlogo{FONT}}
+\def\MP{\textlogo{META}\-\textlogo{POST}}
+\endinput
+%%
+%% End of file `mflogo.sty'.
diff --git a/usergrps/uktug/baskervi/6_2/nul.sty b/usergrps/uktug/baskervi/6_2/nul.sty
new file mode 100644
index 0000000000..359bec94e3
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/nul.sty
@@ -0,0 +1 @@
+%%
diff --git a/usergrps/uktug/baskervi/6_2/pstrix2.tex b/usergrps/uktug/baskervi/6_2/pstrix2.tex
new file mode 100644
index 0000000000..44192db4aa
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/pstrix2.tex
@@ -0,0 +1,1091 @@
+\newpsobject{usergrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=7pt}
+\catcode`\_=8 \catcode`\<=13
+\def\CurrentPackages{spqr,pstcol}
+\newcounter{myN}
+\setlongtables
+\author[Sebastian Rahtz]{Sebastian Rahtz\\Elsevier Science Ltd\\
+Email: \texttt{s.rahtz@elsevier.co.uk}}
+\title{An introduction to PSTricks, part 2}
+\begin{Article}
+\section{Introduction}
+In the first part of this description of \PST, we looked at
+the basic concepts of the package, a series of low-level building
+blocks, and the useful commands for dealing with text and the third
+dimension. Now it is time to look at the higher-level packages built
+in \PST, for drawing trees and graphs. There are a wide variety of
+applications, as I hope the examples show. This part of the package
+is, unfortunately, extremely rich, and readers should not be surprised
+if they find the plethora of new commands rather confusing.
+
+%---------------------------
+\section{Nodes and their connections, and trees}
+\PST\ offers sophisticated macros for setting up named nodes
+and joining them together in complicated ways, complete with labels.
+
+The nodes can be created in three ways:
+\begin{enumerate}
+\item By placing them at arbitrary coordinates
+\item By placing them on a regular grid or matrix
+\item By using higher-level tree macros
+\end{enumerate}
+The sort of effect we will create is like this:
+
+\begin{GridPSExample}(0,0)(5,5)
+\rput(1,1){\rnode{A}{Dog}}
+\rput(2,4){\rnode{B}{Cat}}
+\rput(4,2){\rnode{C}{Mouse}}
+\ncline{A}{B}
+\nccurve[linestyle=dotted]{A}{B}
+\ncarc[linestyle=dashed]{A}{B}
+\end{GridPSExample}
+
+Every node is given a symbolic name, which is used for
+node connectors (lines, curves and so on), and for node labels. The
+fact that nodes can occur \emph{anywhere} (such as in running text),
+makes it possible to use them for surprising effects like linking two
+words \rnode{n1}{one} to \rnode{n2}{another}\nccurve{n1}{n2}. When
+considering connectors, we have to distinguish between the position of
+the node they are pointing \emph{towards} (the node reference point),
+and the actual extent of the connector. Most node creators have an
+invisible box around them, which determines the end of connector lines.
+We will first list all the commands, and then give practical examples.
+
+Table~\ref{PSTnode} lists all the node creation commands and node
+connector commands, Table~\ref{PSTnodelab} lists the commands to label
+connectors and nodes, and Table~\ref{PSTnodeparm} lists the extra
+graphical parameters which apply to node connectors.
+
+%\end{multicols}
+\begin{longtable}{lH{8.5cm}}
+\caption{\protect\PST\ node drawing commands\label{PSTnode}}\\
+\hline
+\endfirsthead
+\protect\PST\ node drawing commands \emph{cont.}\\
+\hline
+\endhead
+\multicolumn{2}{l}{\bfseries\itshape Node creators}
+\\
+\PSTCom \rnode`[refpoint]'{name}{text}
+& create a node called \emph{name}, consisting of \emph{text};
+connectors point to the \emph{refpoint}
+\\
+\PSTCom \Rnode`\c~'{name}{text}
+& the same as \Lcs{rnode}, but the reference point is the middle of
+the box's baseline, plus \c~{}
+\\
+\PSTCom \pnode`\c~'{name}
+& create a node at \c, which takes up no space
+\\
+\PSTComOpt \cnode`\c~'{radius}{name}
+& create a node consisting of circle of \emph{radius}
+\\
+\PSTComOpt \Cnode`\c~'{name}
+& create a node consisting of circle, using the
+radius set by the \emph{radius} graphical parameter (it is sometimes
+useful to set the radius for many circles)
+\\
+\PSTComOpt \cnodeput`{angle}\c~'{name}{text}
+\\
+\PSTComOpt \circlenode{name}{text}
+& like \Lcs{pscirclebox}, but makes a node
+\\
+\PSTComOpt \ovalnode{name}{text}
+& like \Lcs{psovalbox}, but makes a node
+\\
+\PSTComOpt \dianode{name}{text}
+& like \Lcs{diabox}, but makes a node
+\\
+\PSTComOpt \dotnode`\c~'{name}{text}
+& like \Lcs{psdot}, but makes a node
+\\
+\PSTComOpt \fnode`\c~'{name}{text}
+& like \Lcs{psframe}, but makes a node
+\\
+\PSTComOpt \trinode{name}{text}
+& like \Lcs{tribox}, but makes a node
+\\
+[6pt]
+\multicolumn{2}{l}{\bfseries\itshape Node connectors}
+\\
+\PSTComOpt \ncline`{arrows}'{firstnode}{secondnode}
+& straight line between nodes
+\\
+\PSTComOpt \ncLine`{arrows}'{firstnode}{secondnode}
+& straight line between nodes, but labels are placed as if the line
+went right to the center of the nodes
+\\
+\PSTComOpt \ncarc`{arrows}'{firstnode}{secondnode}
+& arc between nodes; uses parameter \emph{arcangle}
+\\
+\PSTComOpt \ncdiag`{arrows}'{firstnode}{secondnode}
+& using the \emph{arm} and \emph{angle} parameters, `arms' start out
+from each node and are then joined by a line; corner shape is
+controlled by the \emph{linearc} parameter
+\\
+\PSTComOpt \ncdiagg`{arrows}'{firstnode}{secondnode}
+& as \Lcs{ncdiag}, but the second arm is not drawn
+\\
+\PSTComOpt \ncbar`{arrows}'{firstnode}{secondnode}
+& a line is drawn with arms coming off at a right angle to the nodes,
+at an angle of \emph{angleA}; the arm length is adjusted if necessary
+\\
+\PSTComOpt \ncangle`{arrows}'{firstnode}{secondnode}
+& draws a connect line \Lcs{ncdiag}, but the angle between arm A and
+the connector line is forced to a right angle
+\\
+\PSTComOpt \ncangles`{arrows}'{firstnode}{secondnode}
+& like \Lcs{ncangle}, but arm A is joined to arm B by two line
+segments that meet at a right angle
+\\
+\PSTComOpt \ncloop`{arrows}'{firstnode}{secondnode}
+& like \Lcs{ncangles} but 5 line segments are used, the second and
+forth being \emph{loopsize} long
+\\
+\PSTComOpt \nccurve`{arrows}'{firstnode}{secondnode}
+& bezier curve between nodes, using the \emph{ncurv} parameters to
+determine the control point positions
+\\
+\PSTComOpt \nccircle`{arrows}'{node}{radius}
+& draws a circle or part circle of radius \emph{radius}
+connecting the node to itself
+\\[6pt]
+\multicolumn{2}{l}{\bfseries\itshape Coil and zigzag node connectors}
+\\
+\PSTCom \nccoil`*[settings]{arrows}'{firstnode}{secondnode}
+\\
+\PSTCom \nczigzag`*[settings]{arrows}'{firstnode}{secondnode}
+\end{longtable}
+
+\begin{longtable}{llH{.4\textwidth}}
+\caption{\protect\PST\ Graphical parameters for node connectors}
+\label{PSTnodeparm}\\[1mm]
+\emph{Parameter} & \emph{Default} & \emph{Explanation}\\
+\hline
+\endfirsthead
+\protect\PST\ Graphical parameters for node connectors \emph{cont.}\\[1mm]
+\emph{Parameter} & \emph{Default} & \emph{Explanation}\\
+\hline
+\endhead
+\mbox{}\\
+\endfoot
+\Par{offset=dim} (0pt)
+& the offset of the connection point to a node\\
+\Par{nodesep=dim} (0pt)
+&the border around nodes at which connectors stop
+\\
+\Par{nodesepA=dim} (0pt)
+&the border around the first node
+\\
+\Par{nodesepB=dim} (0pt)
+&the border around the second node
+ \\
+\Par{arcangle=angle} (8)
+&in \Lcs{ncarc}, the angle between the arc and a straight line drawn between the nodes
+ \\
+\Par{angle=angle} (0)
+&the angle at which connectors hit the nodes
+ \\
+\Par{angleA=angle} (0)
+&the angle at which a connector hits the first node
+ \\
+\Par{angleB=angle} (0)
+&the angle at which a connector hits the second node
+ \\
+\Par{arm=dim} (10pt)
+&the length of the line segment where the connector joins the nodes
+ \\
+\Par{armA=dim} (10pt)
+&the length of the line segment where the connector joins the first node
+ \\
+\Par{armB=dim} (10pt)
+&the length of the line segment where the connector joins the second node
+ \\
+\Par{loopsize=dim} (1cm)
+& the length of line segments for \Lcs{ncloop}
+\\
+\Par{ncurv=num} (0.67)
+& the distance to Bezier control points in \Lcs{nccurve}; lower values
+give tighter curves; the distance from the node to the first control
+point is half \emph{ncurv} $\times$ the distance between the two end points\\
+\Par{ncurvA=num} (0.67)
+& as \emph{ncurv} but for first node only
+\\
+\Par{ncurvB=num} (0.67)
+& as \emph{ncurv} but for second node only
+\\
+\Par{boxsize=dim} (0.4cm)
+& half the width of the enclosing box of \Lcs{ncbox} and \Lcs{ncarcbox}
+\\[6pt]
+\multicolumn{3}{l}{\bfseries\itshape Parameters for node labels}\\
+\Par{ref=ref} (c)
+& sets the reference point for labels\\
+\Par{nrot=rot} (0)
+& the rotation of label text; if the angle is preceded by :, it is
+measured with respect to the connector line; the letter abbreviations
+we have already seen are available, so :U is commonly used to
+align text on the connector line\\
+\Par{npos=num} ()
+& the position along the length of the connector line where a label is
+placed; each connector line has one or more segments, and the value of
+\emph{npos}+1 determines the segment on which the label is set; the
+default values for this parameter are given in the \protect\PST\
+manual, but can also be seen in the examples below\\
+\Par{shortput=none/nab/tablr/tab} (none)
+& determines whether short codes are available for labelling
+connectors; see page~\pageref{shortput}.\\
+\Par{tpos=num} (0.5)
+& the proportion of the distance between nodes at which labels are
+placed on a connector\\
+\Par{mnode=type} (R)
+& (for matrices) the default node type; possibilities are
+R (\Lcs{Rnode}), r (\Lcs{rnode}), C (\Lcs{Cnode}), f (\Lcs{fnode}), p
+(\Lcs{pnode}), circle (\Lcs{circlenode}), oval (\Lcs{ovalnode}), dia
+(\Lcs{dianode}), tri (\Lcs{trinode}), dot (\Lcs{dotnote}), and none\\
+\Par{emnode=type} (none)
+& (for matrices) the type of node created for empty cells in a matrix\\
+\Par{name=name} ()
+& (for matrices) the name of a node; parameters like this can set in
+square brackets in the cell\\
+\Par{nodealign=true/false} (false)
+& (for matrices) whether baselines of nodes pass through the centre of
+nodes\\
+\Par{mcol=l/r/c} (c)
+& (for matrices) the alignment of a node within a matrix cell\\
+\Par{mnodesize=dim} ($-1$pt)
+& (for matrices) is positive, nodes are forced to be this size\\
+\Par{rowsep=dim} (1.5cm)
+& (for matrices) the gap between rows \\
+\Par{colsep=dim} (1.5cm)
+& (for matrices) the gap between columns \\
+\end{longtable}
+
+\begin{longtable}{lH{10cm}}
+\caption{\protect\PST\ node connection
+ labelling commands}\label{PSTnodelab}\\
+\hline
+\endfirsthead
+\protect\PST\ node connection labelling commands \emph{cont.}\\
+\hline
+\endhead
+\multicolumn{2}{l}{\bfseries\itshape Labelling based on connector length}\\
+\PSTComOpt \ncput {something}
+& place \emph{something} on the connector line\\
+\PSTComOpt \naput {something}
+& place \emph{something} above the connector line\\
+\PSTComOpt \nbput {something}
+& place \emph{something} under the connector line\\[6pt]
+\multicolumn{2}{l}{\bfseries\itshape Labelling based on distance
+between nodes}\\
+\PSTComOpt \tvput {something}
+& working on the vertical distance between nodes, place \emph{something} in the middle of the line\\
+\PSTComOpt \tlput {something}
+& working on the vertical distance between nodes, place \emph{something}
+to the left of the line\\
+\PSTComOpt \trput {something}
+& working on the vertical distance between nodes,
+place \emph{something} to the right of the line\\
+\PSTComOpt \thput{something}
+& working on the horizontal distance between nodes,
+place \emph{something} in the middle of the line\\
+\PSTComOpt \taput{something}
+& working on the horizontal distance between nodes,
+place \emph{something} above the line\\
+\PSTComOpt \tbput{something}
+& working on the horizontal distance between nodes,
+place \emph{something} below the line\\[6pt]
+\multicolumn{2}{l}{\bfseries\itshape Labelling nodes}\\
+\PSTCom`[par]'{angle}{name}{something}
+& place \emph{something} next to the node, at a distance of
+\emph{nodesep}, in the direction \emph{angle} from the centre of the node
+\end{longtable}
+%\begin{multicols}{2}
+\begin{table*}
+\caption{\protect\PST\ drawing commands comparable to node connectors}
+\label{PSTcondraw}
+\begin{tabular}{l}
+\PSTComOpt \pcline`{arrows}'\c1\c2
+\\
+\PSTComOpt \pccurve`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcarc`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcbar`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcdiag`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcangle`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcloop`{arrows}'\c1\c2
+\\
+\PSTCom \pczigzag`*[settings]{arrows}'\c1\c2
+\\
+\PSTCom \pccoil`*[settings]{arrows}'\c1\c2
+\end{tabular}
+\end{table*}
+There are several important concepts we need to bear in mind when
+looking at the myriad of node and connector commands:
+\begin{enumerate}
+\item When joining two nodes with something like a curve, the
+connectors comes in by default on the right hand side of the object
+(at 0 degrees). If we have two boxes side by side, the \emph{angleB}
+parameter has to be set to 180 if we want the connector to come into
+the second box on its left side. This may seem cumbersome at first,
+but it makes for a flexible system;
+\item the connector labelling commands all place the label
+some proportion of the way along the connector, but they distinguish
+between the distance between nodes, and the length of the line. The
+former situation applies to constructions like matrices, where we
+want the label positions to be constant, regardless of the size of the
+nodes.
+\item The node connectors are not drawn directly in \TeX, but are done
+at the PostScript level; this means that \TeX\ is not always quite
+sure how much space will be taken up by the object. Particularly when
+curving connectors are drawn, you might find that they protrude
+outside the area allowed by \TeX --- adjust by hand.
+\end{enumerate}
+\label{shortput}
+Because labelling node connectors is a very common thing to do, a
+short cut is provided to save all the \Lcs{naput} commands etc. If the
+parameter \emph{shortput} is set to \texttt{nab}, the \verb|^| is used
+instead of \Lcs{naput} and \verb|_| instead of \Lcs{nbput}. If it is
+set to \texttt{tablr}, the \verb|^| stands for \Lcs{taput},
+\verb|_| for \Lcs{tbput},
+\verb|<| for \Lcs{tlput} and
+\verb|>| for \Lcs{trput}.
+
+If all this were not enough, all the node connectors can also be used as
+ordinary drawing tools, by using the commands listed in
+Table~\ref{PSTcondraw}, where the `pc' version corresponds to the `nc'
+node connector.
+
+Let us first demonstrate the effects of these basic building blocks:
+%\end{multicols}
+\begin{longtable}{l}
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{Cat}}
+\rput(2.5,.5){\rnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\Rnode{A}{Cat}}
+\rput(2.5,.5){\Rnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\pnode(.5,.5){A}
+\pnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\cnode(.5,.5){.2}{A}
+\cnode(2.5,.5){.2}{B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\psset{radius=.3}
+\Cnode(.5,.5){A}
+\Cnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\circlenode{A}{Cat}}
+\rput(2.5,.5){\circlenode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\ovalnode{A}{Cat}}
+\rput(2.5,.5){\ovalnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\trinode{A}{Cat}}
+\rput(2.5,.5){\trinode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\dotnode(.5,.5){A}
+\dotnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\fnode(.5,.5){A}
+\fnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\dianode{A}{Cat}}
+\rput(2.5,.5){\dianode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\nccurve[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncarc{->}{A}{B}
+\ncarc{->}{B}{A}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncbar{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiag[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiagg[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangle[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangles[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncloop[loopsize=.25,angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(1,.5){\rnode{A}{\psframebox{Cat}}}
+\nccircle{->}{A}{.5}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nccoil{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nczigzag{A}{B}
+\end{PSTInlineExample}
+\\
+\end{longtable}
+%\begin{multicols}{2}
+The effect of node connectors is demonstrated in the
+following, which uses the \Lcs{multido} macro (we will look at that in
+a future article) to place objects at
+regular intervals around a circle, and join them up
+%\end{multicols}
+\begin{example*}
+\newcount\CtA
+\newcount\CtB
+\newcommand{\Wheel}[3]{{%
+\pspicture(-1,-1)(1,1)
+\SpecialCoor
+\degrees[#1]
+\multido{\ia=1+1}{#1}{%
+ \CtA=\ia
+ \advance\CtA by 1
+ \CtB=#1
+ \advance\CtB by -\ia
+ \multido{\ib=\CtA+1}
+ {\CtB}{#3(1;\ia)(1;\ib)}}
+\multido{\i=1+1}{#1}{%
+ \rput(1;\i){%
+ \pscirclebox[fillstyle=solid,
+ fillcolor=white]%
+ {\footnotesize\i}}}
+\endpspicture}}
+\makebox[\columnwidth][s]{%
+\psset{unit=2cm}
+\Wheel{3}{1.8}{\psline}
+\Wheel{5}{1.8}{\psline}
+\psset{arcangle=10}
+\Wheel{12}{3}{\pcarc[linecolor=blue]}}
+\end{example*}
+%\begin{multicols}{2}
+It should be clear that we can draw arbitrary diagrams, trees etc
+simply by working out the coordinates of each node; however, in
+practice, there are two higher-level environments for easier creation
+of nodes --- matrices and trees.
+
+\subsection{Matrices --- grid-based nodes}
+The existing \LaTeX\ \Lenv{tabular} or AMS \LaTeX\ \Lenv{matrix} can be
+used to place nodes, but \PST\ provides its own environment,
+\Lenv{psmatrix}. This is like an easy
+form of table, since the number of columns does not have to be
+specified --- we simply separate column items by \verb|&| and rows by
+\verb|\\| as normal, and \PST\ makes each cell a node, named as
+\emph{rownumber},\emph{columnumber}. Thus the first node in the first
+row is named \texttt{1,1} and the third node in the fourth row is
+\texttt{4,3}, and these are used by the node connectors.
+
+\Lcs{psmatrix} has an optional parameter in which we can set
+\emph{rowsep} and \emph{colsep}, determining the gap between
+nodes. The parameter \emph{shortput} is set to \emph{tab} inside
+\Lcs{psmatrix} by default, so we can adopt a quite succinct notation:
+
+\begin{PSExample}(0,0)(2.5,5)
+\begin{psmatrix}[rowsep=1.5cm]
+&City&\\
+{\tiny Shack} & House & {\Large Hotel}
+\psset{arrows=<<-}
+\ncline{1,2}{2,1}<{a}
+\ncline{1,2}{2,2}>{b}
+\ncline{1,2}{2,3}>{b}
+\psset{arrows=-,linestyle=dotted}
+\ncline{2,1}{2,2}
+\ncline{2,2}{2,3}
+\end{psmatrix}
+\end{PSExample}
+
+Notice in this example that the shorthand `>' stands for \Lcs{trput},
+which places labels according to the distance between node centres,
+not the connection length, which allows for the difference in sizes
+of nodes in the second row. Nodes can span multiple columns by using
+the \Lcs{psspan} command at the end of the cell, with a parameter of
+the number of columns to span.
+
+A simple example of a square matrix can be created as:
+\begin{example*}
+\begin{psmatrix}
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\ncline{->}{1,1}{1,2}
+\ncline{->}{1,2}{2,2}
+\ncline{->}{2,2}{2,1}
+\ncline{->}{2,1}{1,1}
+\end{psmatrix}
+\end{example*}
+\noindent but by changing a few initial parameter settings, we can
+present a `fancier' result, with nodes encircled, arrows on
+connectors, and a better spacing. The connector labels are added with
+the short-hand forms, which are those which are positioned in relation
+to node centres.
+In the second version, we redo the labels with
+the label types which relate to line length, which in this case gives
+a better result. The outer looping connector is an example of a
+construct whose extent \TeX\ will probably guess incorrectly.
+\begin{example*}
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle,shortput=nab}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\psset{linestyle=dotted}
+\ncline{1,1}{1,2}^{\emph{firstly}}
+\ncline{1,2}{2,2}>{\emph{next}}
+\ncline{2,2}{2,1}_{\emph{then}}
+\ncline{2,1}{1,1}<{\emph{lastly}}
+\end{psmatrix}
+\end{example*}
+\begin{example*}
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\psset{linestyle=dotted}
+\ncline{1,1}{1,2}\naput{\emph{firstly}}
+\ncline{1,2}{2,2}\naput{\emph{next}}
+\ncline{2,2}{2,1}\naput{\emph{then}}
+\ncline{2,1}{1,1}\naput{\emph{lastly}}
+\nccurve[ncurv=2,linestyle=solid,angleA=90]
+ {1,1}{2,2}
+\end{psmatrix}
+\end{example*}
+
+Matrices can be nested, and it is possible to link nodes from two
+different matrices, if the nodes are given explicit names. Each
+\Lcs{psmatrix} wipes out the current set of \emph{row,column} names.
+
+\begin{example*}
+\psset{linearc=.2}
+\begin{psmatrix}[rowsep=3pt,colsep=-10pt]
+[name=A]\psframebox{requirements}\\
+&[name=B]\psframebox{design}\\
+&&[name=C]\psframebox{coding}\\
+&&&[name=D]\psframebox{testing}\\
+&&&&[name=E]\psframebox{operations}
+\psset{linearc=0,arrows=->,armA=0pt,angleB=90}
+\ncangle{A}{B}
+\ncangle{B}{C}
+\ncangle{C}{D}
+\ncangle{D}{E}
+\psset{angleB=-90,angleA=180}
+\ncangle{B}{A}
+\ncangle{C}{B}
+\ncangle{D}{C}
+\ncangle{E}{D}
+\end{psmatrix}
+\end{example*}
+
+A normal low-level \PST\
+command, like \Lcs{framebox}, can be applied to a whole matrix.
+We have to take some care in this example with alignment to make
+the connecting line horizontal, so we place the single node on the
+left in its own matrix.
+%\end{multicols}
+\begin{example*}
+\psset{fillcolor=white,fillstyle=solid}
+\def\Show#1{\psshadowbox{#1}}
+\psset{arrows=->}
+\begin{psmatrix}
+ [mnode=r,ref=t]
+ \psframebox[linestyle=none,framesep=.75]{%
+ \psset{ref=c}
+ \begin{psmatrix}
+ [name=A]\Show{Stakeholder}
+ \end{psmatrix}
+ } &
+ [mnode=r,ref=t]
+ \psframebox[fillstyle=solid,framesep=.75,fillcolor=gray]{%
+ \psset{ref=c}
+ \rule{1cm}{0pt}
+ \begin{psmatrix}
+ [name=B]\Show{Goal} &\Show{Criteria}\\
+ \Show{Sub-goal} & \Show{Justification}
+ \ncline{1,1}{1,2}
+ \ncline{1,1}{2,2}
+ \ncline{1,1}{2,1}\tlput{Strategy}
+ \ncline{2,1}{2,2}
+ \end{psmatrix}
+ }
+\ncline[angleB=-180]{A}{B}\naput[npos=.7]{Model}
+\end{psmatrix}
+\end{example*}
+%\begin{multicols}{2}
+In addition, \PST\ has an extremely rich environment for drawing trees,
+permitting complex structures and presentation. This will form the
+subject of the next part of this series.
+\end{Article}
+\endinput
+%\begin{multicols}{2}
+\subsection{Tree diagrams}
+\PST\ has an extremely rich environment for drawing trees, which
+allow for very complex structures and presentation. The available
+commands are listed in Table~\ref{PSTtree} and the graphical
+parameters which apply especially to these are listed in
+Table~\ref{PSTtreeparms}. As one might expect, most other commands and
+parameters are also available, from both the generalized drawing, and
+the node connectors and labels. Each of the node types described
+earlier is turned into a `tree' node, and named by prefixing it with a
+`T' and removing the `node' suffix.
+
+%\end{multicols}
+\begin{small}
+\begin{longtable}{llH{10cm}}
+\caption{\protect\PST\ Graphical parameters for trees}
+\label{PSTtreeparms}\\[1mm]
+\emph{Parameter} & \emph{Default} & \emph{Explanation}\\
+\hline
+\endfirsthead
+\protect\PST\ Graphical parameters for trees \emph{cont.}\\[1mm]
+\emph{Parameter} & \emph{Default} & \emph{Explanation}\\
+\hline
+\endhead
+\mbox{}\\
+\endfoot
+\Par{bbd=dim} ()
+& set lower bounding box to \emph{dim}\\
+\Par{bbh=dim} ()
+& set upper bounding box to \emph{dim}\\
+\Par{bbl=dim} ()
+& set left bounding box to \emph{dim}\\
+\Par{bbr=dim} ()
+& set right bounding box to \emph{dim}\\
+\Par{edge=command} (\ncline)
+& the node connector used to join tree nodes\\
+\Par{fansize=dim} (1cm)
+&size of base for \Lcs{Tfan} tree node\\
+\Par{levelsep=*dim} (2cm)
+& the distance between successive levels in a tree; the * makes the dimension be \emph{in addition} to the size of the nodes (levels are normally a fixed distance apart)\\
+\Par{showbbox=true/false} (false)
+& draw a dotted frame showing the enclosing rectangle of trees\\
+\Par{thislevelsep=*dim} ()
+& like \emph{levelsep} but applies only to the current tree\\
+\Par{thistreefit=tight/loose} ()
+& like \emph{treefit} but applies only to the current tree\\
+\Par{thistreenodesize=dim} ()
+& like \emph{treenodesize} but applies only to the current tree\\
+\Par{thistreesep=dim} ()
+& like \emph{treesep} but applies only to the current tree\\
+\Par{tndepth=dim} ()
+& the minimum depth of tree node labels\\
+\Par{tnheight=dim} ()
+& the minimum height of tree node labels\\
+\Par{tnpos=l/r/a/b} (b)
+& the position of tree node labels relative to the node (left, right,
+above, below) \\
+\Par{tnsep=dim} ()
+& the gap between tree node labels and the node (by default the same as
+\emph{labelsep} \\
+\Par{treefit=tight/loose} (tight)
+& if tight, \emph{treesep} is the minimum distance between nodes on any level; if loose, \emph{treesep} is the distance between the enclosing
+bounding boxes of subtrees\\
+\Par{treeflip=true/false} (false)
+& does a mirror image of the free, flipping the nodes\\
+\Par{treemode=R/L/U/D} (D)
+& the direction of tree growth (right, left, up and down)\\
+\Par{treenodes=dim} ($-$1pt)
+& if positive, this sets a fixed size for tree nodes, regardless of content\\
+\Par{treesep=dim} (0.75cm)
+& the distance between successive nodes in a tree\\
+\Par{xbbd=dim} ()
+& increase lower bounding box by \emph{dim}\\
+\Par{xbbh=dim} ()
+& increase upper bounding box by \emph{dim}\\
+\Par{xbbl=dim} ()
+& increase left bounding box by \emph{dim}\\
+\Par{xbbr=dim} ()
+& increase right bounding box by \emph{dim}\\
+\end{longtable}
+\end{small}
+
+\begin{small}
+\begin{longtable}{lH{.5\textwidth}}
+\caption{\protect\PST\ tree drawing commands\label{PSTtree}}\\
+\hline
+\endfirsthead
+\multicolumn{2}{l}{\protect\PST\ tree drawing commands \emph{cont.}}\\
+\hline
+\endhead
+\PSTCom \PStree{node}{subtrees}
+& draws a node and subtrees connected to it\\
+\PSTCom \PSTree{rootnode} subtrees
+%\endpsTree
+& an `environment' form of \Lcs{psTree}\\
+\PSTCom \Tn
+& null tree node \\
+\PSTCom \tspace{dim}
+& leave gap of \emph{dim} before next level\\
+\PSTComOpt \TC
+& tree node like \Lcs{Cnode} node\\
+\PSTComOpt \TR{something}
+& tree node like \Lcs{Rnode} node\\
+\PSTComOpt \Tcircle{something}
+& tree node like \Lcs{circlenode} node\\
+\PSTComOpt \Tc{dim}
+& tree node like \Lcs{cnode} node\\
+\PSTComOpt \Tdia{something}
+& tree node like \Lcs{dianode} node\\
+\PSTComOpt \Tdot
+& tree node like \Lcs{dotnode} node\\
+\PSTComOpt \Tf
+& tree node like \Lcs{fnode} node\\
+\PSTComOpt \Tfan
+& draws a triangle with a top corner of the predecessor node\\
+\PSTComOpt \Toval{something}
+& tree node like \Lcs{ovalnode} node\\
+\PSTComOpt \Tp
+& tree node like \Lcs{pnode} node\\
+\PSTComOpt \Tr{something}
+& tree node like \Lcs{rnode} node\\
+\PSTComOpt \Ttri{something}
+& tree node like \Lcs{trinode} node\\
+\PSTComOpt \skiplevel {nodes or subtrees}
+& miss out entire levels in a particular subtree\\
+\PSTComOpt \skiplevels{n} {nodes or subtrees}
+& skip \emph{n} levels\\
+\end{longtable}
+\end{small}
+
+%\begin{multicols}{2}
+The fundamental concept in \PST\ trees is the \emph{nesting} of trees;
+a simple tree consists of a root, and one or more nodes:
+\begin{example*}
+\pstree{\TC}{\TC\TC}
+\end{example*}
+\noindent but each node can itself be a tree:
+\begin{example*}
+\pstree{\TC}{\pstree{\TC}{\TC \TC}
+ \pstree{\TC}{\TC \TC}}
+\end{example*}
+This simple constructs allows very complicated structures to be
+erected, as the examples below show.
+
+The following tree is a version of that shown in the \emph{\LaTeX\ Companion},
+section 10.5.2, which was drawn using the \Lpack{ecltree} package; the
+ease of notation is roughly similar. As often in \LaTeX, the
+readability depends a great deal on how the code is laid out. The
+only change to the defaults is to lessen the vertical space between
+trees, and add some extra space around nodes.
+\begin{example*}
+\pstree[nodesep=2pt,
+ levelsep=20pt]{\TR{grandfather}}
+{
+ \pstree{\TR{uncle}}{\TR{cousin}}
+ \pstree{\TR{father}}
+ {
+ \pstree{\TR{brother}}{\TR{nephew}}
+ \pstree{\TR{Me}}
+ {
+ \pstree{\TR{son}}{\TR{grandson}}
+ }
+ }
+}
+\end{example*}
+
+If we now consider another tree drawing package described in
+the \emph{\LaTeX\ Companion}, Vanroose's \Lpack{trees}, the example in section
+10.2.3 is a little harder to reproduce. The skeleton is trivial:
+\begin{example*}
+\pstree{\Tdot}
+{
+\Tdot
+\pstree{\Tdot}
+ {
+ \pstree{\Tdot}
+ {
+ \Tdot
+ \Tdot
+ \Tdot
+ }
+ \Tdot
+ }
+}
+\end{example*}
+
+\noindent but when we come to add in all the node and connector labels, and
+change a few parameters to make the result nicer, the markup becomes a
+little complex, though the quantity is roughly similar to that of Vanroose:
+
+\begin{example*}
+\psset{labelsep=2pt,tnpos=a,radius=2pt}
+\pstree[treemode=R]{\TC*~{25}}
+{
+\TC*~{5}~[tnpos=r]{$L_a$}
+\taput{$a$}
+\pstree{\TC*~{20}\tbput{$b$}}
+ {
+ \pstree{\TC*~{15}\taput{$a$}}
+ {
+ \TC*~{7}~[tnpos=r]{$L_{baa}$}\taput{$a$}
+ \TC*~{5}~[tnpos=r]{$L_{bab}$}\taput{$b$}
+ \TC*~{3}~[tnpos=r]{$L_{bac}$}\tbput{$c$}
+ }
+ \TC*~{5}~[tnpos=r]{$L_{bb}$}
+ \tbput{$b$}
+ }
+}
+\end{example*}
+
+The node connectors in a tree are created by running
+the macro \Lcs{psedge} with the two nodes; the definition of
+\Lcs{psedge} can be overridden explicitly by a redefinition, or by
+using the \emph{edge} parameter. Here we redefine \Lcs{psedge} to be a
+curve, arrange the angles (bearing in mind that the tree is to grow
+upwards), and obtain a pleasing result. Note also the explicit links
+between named nodes, as well as the regular connections.
+%\end{multicols}
+\begin{example*}
+\footnotesize
+\def\psedge{\nccurve}
+\newcommand{\Female}[2][]{\TR[#1]{\emph{#2}}}
+\newcommand{\Male}[2][]{\TR[#1]{#2}}
+\psset{nodesep=2pt,angleA=90,angleB=-90,unit=.6cm}
+\pstree[treemode=U]{\Female{{\bfseries Matilde}}}{
+ \pstree{\Male{Sebastian}}{
+ \pstree{\Male[name=P]{Philip}}{\Male{Frederick}\Female{Ethel}}
+ \pstree{\Female[name=W]{Mary}}{\Male{Lionel}\Female{Agnes}}}
+ \pstree{\Female{Leonor}}{
+ \pstree{\Male[name=R]{Ra\'ul}}{\Male{Joaquim}\Female{J\'ulia}}
+ \pstree{\Female[name=A]{Am\'elia}}{\Male{Melo}\Female{Augusta}}}
+}
+\psset{doubleline=true,linestyle=dotted}
+\ncline{P}{W}\nbput{1940}
+\ncline{R}{A}\nbput{1950}
+\end{example*}
+%\begin{multicols}{2}
+We said earlier that \PST\ does not always work out the extent of
+objects correctly, and this is illustrated by the connectors in the
+following example. Turning on \emph{showbbox}, we can see that without
+the use of \emph{xbbl} etc in the second incarnation, the bounding box
+is not correct:
+\begin{example*}
+\psset{angleB=-90,arrows=->,nrot=:U}
+\def\molesworth#1{%
+ \pstree[#1]{\Tdia{ }}
+ {
+ \Tp[arrows=->,edge={\ncbar[angleA=180]}]
+ \nbput{Gabbitas}
+ {\psset{linestyle=dashed,arrows=-} \Tp }
+ \Tp[arrows=->,edge={\ncbar}]
+ \naput{Thring}
+ }
+}
+\psset{showbbox=true}
+\begin{tabular}{l}
+\molesworth{}\\[10pt]
+\molesworth{xbbl=1cm,xbbr=1cm}
+\end{tabular}
+\end{example*}
+
+The technique of redefining edges is also necessary if we want
+right-angled joins, rather than straight lines. Again, we need to take
+care of the \emph{angleA} and \emph{angleB}, and ensure that in this
+left-right tree the nodes all line up on their left edges, using the
+\emph{ref} parameter. If this is not done, the \Lcs{ncangle} edges
+produce strange results.
+\begin{example*}
+\def\Item#1{\Tr[ref=l]{%
+ \psframebox[linestyle=none]{#1}}}
+\def\psedge{\ncangle}
+\psset{xbbd=1.5cm,treemode=R,
+ angleB=-180,angleA=0,levelsep=72pt}
+\pstree{\Item{langs}}{%
+ \Item{german}
+ \pstree{\Item{greek}}{%
+ \Item{hamilton-kelly}
+ \pstree{\Item{levy}}{%
+ \Item{doc}
+ \Item{src}
+ }
+ }
+ \Item{italian}
+ \pstree{\Item{portuguese}}{
+ \Item{hyphenation}
+ }
+ \pstree{\Item{turkish}}{%
+ \Item{doc}
+ \Item{hyphen}
+ \Item{inputs}
+ \Item{mf}
+ \Item{misc}
+ }
+\Item{xettex}
+}
+\end{example*}
+
+This allows us to remake the small family again, but this time with
+nicer connectors:
+\begin{example*}
+\def\XX#1{%
+ \Tr{\psframebox{\rule{0pt}{9pt}#1}}%
+}
+\def\psedge{\ncangle}
+\psset{angleB=90,angleA=-90,
+ levelsep=36pt,armB=14pt}
+\pstree{\XX{grandmother}}
+{%
+\pstree{\XX{aunt}}{\XX{cousin}}
+\pstree{\XX{mother}}
+ {
+ \pstree{\XX{sister}}{\XX{niece}}
+ \pstree{\XX{Me}}
+ {
+ \pstree{\XX{daughter}}
+ {\XX{granddaughter}}
+ }
+ }
+}
+\end{example*}
+The node connectors are, of course, standard \PST\ objects, so they
+obey all the normal parameters; here we draw the lower part of the
+tree with dashed lines, and each node content is set in math mode.
+\begin{example*}
+\footnotesize
+\psset{nodesep=2pt}
+\def\XX#1#2{%
+ \TR{\ensuremath{#1_{\mbox{#2}}}}%
+}
+\pstree[xbbr=1.5cm]{\XX{R}{AMSU}}
+ {
+ \XX{S}{RawData}
+ \pstree{\XX{S}{combine}
+ \trput{\ensuremath{\oplus}}
+ \tlput{\ensuremath{\oplus}}}
+ {
+ \psset{linestyle=dashed}
+ \XX{R}{Modes}
+ \XX{R}{Normal}
+ \XX{R}{Vertical}
+ \XX{R}{Latched}
+ \XX{R}{Tripped}
+ }
+ \XX{S}{GenerateData}
+ }
+\end{example*}
+
+If we want to hang distinct-looking trees off one node,
+the \emph{ncangle} connector, with some offsets, produces the right result.
+ \begin{example*}
+\psset{framearc=.2,levelsep=4cm,
+ armB=1cm,angleB=-180}
+\def\psedge{\ncangle}
+\def\TreeBox#1{\Tr{\psframebox{#1}}}
+\pstree[treemode=R]{\TreeBox{Monitor}}
+{
+ \psset{offsetA=4pt}
+ \TreeBox{Attitude Generator}
+ \naput[npos=2.5]{{\small init}}
+ \nbput[npos=2.5]{{\small stop}}
+ \psset{offsetA=-4pt}
+ \TreeBox{Normal Generator}
+}
+\end{example*}
+
+With simple connectors, we do not need to worry about the offsets or
+angles; what this example shows is how nested trees can change direction:
+
+\begin{example*}
+\psset{arrows=->,framearc=.2}
+\def\Treebox#1{%
+ \Tr{\psframebox{#1}}
+}
+\pstree[treemode=R]
+{\Treebox{A$\rightarrow$B}}{
+\pstree{
+ \Treebox{B$\rightarrow$C}
+ }{
+ \Treebox{A$\rightarrow$D}
+\pstree[treemode=L]
+ {\Treebox{B$\rightarrow$E}}
+ {\Tn\TC[arrows=<-]}
+ }
+}
+\end{example*}
+
+Finally, let us not forget the simple empty node:
+\begin{example*}
+\pstree{\Tp}{
+ \Tcircle{A}
+ \Tcircle{B}
+}
+\end{example*}
+\catcode`\<=12
+\end{Article}
+%\end{document}
diff --git a/usergrps/uktug/baskervi/6_2/recipe.tex b/usergrps/uktug/baskervi/6_2/recipe.tex
new file mode 100644
index 0000000000..e14af86b35
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/recipe.tex
@@ -0,0 +1,736 @@
+\documentclass[twocolumn,a4paper,12pt]{article}
+\newenvironment{ingredients}{\begin{list}{$\bullet$}{%
+ \setlength{\topsep}{0pt}%
+ \setlength{\partopsep}{0pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parskip}{0pt}}}
+{\end{list}}
+\newenvironment{method}{\begin{quotation}\listparindent0pt}
+{\end{quotation}}
+\newcommand{\fraction}[2]{\raisebox{1ex}{\small#1}\kern-0.25em/%
+ \kern-0.2em\raisebox{-1ex}{\small#2}}
+\newcommand{\half}{\fraction{1}{2}}
+\newcommand{\quarter}{\fraction{1}{4}}
+\newcommand{\threequarter}{\fraction{3}{4}}
+\let\threequarters\threequarter
+\newcommand{\eighth}{\fraction{1}{8}}
+\let\eight\eighth
+\newcommand{\degree}{$^\circ$}
+\begin{document}
+\tableofcontents
+\newpage
+\section{Compote}
+\begin{ingredients}
+\item 5g dried mango
+\item 4oz/110g dried figs
+\item 4oz/110g dried peaches
+\item 4oz/110g dried apricots
+\item 10 fl oz/275ml freshly squeezed orange juice
+\item 2 Earl Grey tea bags
+\item 2 tsp clear runny hunny
+\item 1oz sunflower seeds
+\end{ingredients}
+\begin{method}
+ Cut mango in half
+ Boil orange juice and teabags.
+ Tip in mango: cover and leave to infuse for 30 minutes.
+Remove tea bags, add honey.
+Add figs, peaches and apricots.
+Bring to boil, cover and reduce heat.
+Simmer for 15 minutes.
+Cool overnight.
+Dry fry sunflower seeds.
+Sprinkle and serve.
+\end{method}
+
+
+
+
+\section{Leek soup}
+\begin{ingredients}
+\item 2 big bunches of parsley
+\item 3oz butter
+\item 2 large leeks (white parts)
+\item 1 large potato
+\item 1\half\ pts chicken stock
+\item 5 fl oz double cream
+\item salt and pepper
+\end{ingredients}
+\begin{method}
+Sweat leeks in butter and parsley stalks for 20 minutes.
+Simmer with potato and stock for another 20 minutes.
+Add \half\ parsley leaves to soup.
+Simmer for 2 minutes.
+Blanch remaining leaves in boiling water for 30 seconds.
+Drain, squeeze dry.
+Liquidise, add cream, reheat.
+Serve.
+\end{method}
+\section{Parcel-roasted Fennel}
+\begin{ingredients}
+\item 2--4 bulbs fennel, depending on size
+\item 30 ml/2 tbsp extra virgin olive oil
+\item 4 thin slices garlic
+\item Pernod (optional -- use pastis instead!)
+\end{ingredients}
+\begin{method}
+Trim fennel, keeping frilly leaves, leve most of base to hold bulbs together.
+Halve lengthwise if large.
+Place on a large, oiled sheet of aluminium foil.
+Dribble with oil and some pastis.
+Stick a slice of garlic between two of leaves.
+Secure well, leaving space for steam to circulate.
+Bake in middle of oven for 45--60 minutes.
+Serve hot or at room temperature.
+\end{method}
+\section{Parcel-roasted whole fish}
+\begin{ingredients}
+\item About 2\half--3 lb fish
+\item 8 lemon slices
+\item 60 ml dry white wine or vermouth
+\item 60 ml copped parsley
+\item 60 ml double cream or cr\`eme fr\^aiche
+\end{ingredients}
+\begin{method}
+Butter sheet of aluminium foil three times size of fish.
+Place fish on foil.
+Top with remaining ingredients, salt and pepper.
+Secure the edges.
+Bake near the top of the oven for 10 minutes (small fish), or 20--25 minutes (monster).
+\end{method}
+\section{Bananas en Papillote}
+\begin{ingredients}
+\item 4 ripe bananas
+\item 25 ml/1\half\ tbsp softened butter
+\item 20 ml/4 tsp soft brown sugar
+\item 60 ml/4 tbsp apricot jam
+\item seeds from 1 vanilla pod
+\item Cognac
+\end{ingredients}
+\begin{method}
+Butter four sheets of aluminium foil around 30 cm square.
+Place bananas in centre and sprinkle with sugar.
+Chop jam to large pieces and stir in vanilla seeds.
+Add cinnamon is desired.
+Spoon jam over bananas.
+Dribble on cognac.
+Secure well, leaving space for sream to circulate.
+Bake at the middle of the oven for about 20 minutes.
+\end{method}
+\section{Nettle beer}
+\begin{ingredients}
+\item 1 gallon water
+\item 1 lb sugar
+\item 1 oz whole ginger bruised
+\item 2--3 handfuls nettles
+\item dandelions
+\item comfrey
+\end{ingredients}
+\begin{method}
+Boil water.
+Add well-washed stinging nettles, dandelions and comfrey.
+Boil for 15 minutes.
+Strain liquor.
+Boil liquor with sugar and ginger; strain again.
+Cream 1 oz compressed yeast, place on a piece of toast and lay on liquor when lukewarm.
+Stand till next morning, covered with a cloth.
+Remove scum.
+Bottle taking care not to disturb sediment.
+\end{method}
+
+\section{Ginger Beer}
+\begin{ingredients}
+\item 3\half\ gallons of water
+\item 3 oz bruised ginger
+\item 2 lemons
+\item 3 lb sugar
+\item 1 oz cream of tartar
+\item 2 tbsp yeast (1 oz compressed)
+\item 1 egg white
+\end{ingredients}
+\begin{method}
+Bruise ginger and boil for 30 minutes.
+Wash lemons, slice and place in pan.
+Add cream of tartar and sugar.
+Strain ginger-flavoured water over lemons etc.
+Ferment with yeast on toast when lukewarm.
+Stand for 2 nights.
+Remove scum.
+Whisk with egg white.
+Bottle.
+\end{method}
+\section{Apple Slump}
+\begin{ingredients}
+\item 6 cups apples, peeled, cored and sliced
+\item 1 cup of sugar
+\item 1 tbsp cinnamon
+\item \half\ cup water
+\item 1 \half\ cups sifted plain flour
+\item \quarter\ tsp salt
+\item 1\half\ tsp baking powder
+\item \half\ cup milk
+\end{ingredients}
+\begin{method}
+Combine apple slices, sugar, cinnamon and water in a saucepab with a tight-fitting lid.
+Heat to boiling point.
+Sift together flour, salt, baking powder.
+Stir in enough milk to make a soft dough.
+Drop dough from a dessertspoon onto apple mixture.
+Cover tightly and cook over a low heat for 30 minutes.
+Serve warm with cream.
+\end{method}
+May also be made with other fruits.
+
+\section{Brown Betty}
+\begin{ingredients}
+\item 1 \half\ cups dry bread crumbs
+\item 2 oz melted butter
+\item 4 medium apples, peeled and sliced
+\item \threequarter\ cup brown sugar, firmly packed
+\item pinch of salt
+\item 1 tsp cinnamon
+\item \quarter\ tsp nutmeg
+\item \quarter\ tsp ground cloves
+\item 1 tsp grated lemon rind
+\item juice 1 lemon
+\end{ingredients}
+\begin{method}
+Work breadcrumbs and butter togther and pat a third of the mixture on the bottom of a buttered baking dish.
+Cover with half the apples.
+Mix together sugar, salt, cinnamon, nutmeg, cloves and lemon rind.
+Sprinkle half the mixture over the apple.
+Add half the lemon juice and 1 desertspoon of water.
+Add another layer of crumbs.
+Repeat with apples, sugar mixture, lemon juice and water.
+Sprinkle remaining crumbs on top, cover and bake in a preheated 350\degree\ oven (gas 3--4) for 40 minutes.
+Remove cover and continue baking at 400\degree\ (gas 6) for 10 minutes.
+Serve warm with cream or vanilla ice cream.
+\end{method}
+\section{Sweet Blueberry Muffins}
+\begin{ingredients}
+\item 1 egg
+\item \half\ cup milk
+\item \quarter\ cup vegetable oil
+\item 1\half\ cups flour
+\item \half\ cup sugar
+\item 2 tsp baking powder
+\item \half\ tsp salt
+\item 1 cup fresh blueberries
+\end{ingredients}
+\begin{method}
+Preheat oven to 400\degree.
+Grease 12 muffin tins.
+Beat egg slightly and stir in milk and oil.
+Sift together flour, sugar, baking powder and salt.
+Add flour mixture to liquids, stirring until joist moisten.
+Blend in blueberries.
+Spoon into muffin tins.
+Bake for 20--25 minutes.
+\end{method}
+\section{Croutes aux champignons}
+\begin{ingredients}
+\item 30g (1 oz) dried black mushroons
+\item 225 g (8 oz) fresh mushrooms (12 oz if cultivated)
+\item 1 small onion
+\item knob unsalted butter
+\item 200 ml dry white wine or vermouth
+\item 100 ml single cream
+\item 4 slices brown or white bread
+\item 60 ml grated Parmesan
+\end{ingredients}
+\begin{method}
+Reconstitute dried mushrooms by soaking in warm water for 20 minutes.
+Rinse, squeeze dry and cut off stems.
+Reserve soaking water.
+Slice around 2.5 mm (\eight\ in) thick.
+Clean fresh mushrooms and slice the same way.
+Chop the oion fine.
+Melt butter in a pan and cook onions gently for 2 minutes.
+Add black mushrooms, cook for 2 minutes, then mix in fresh mushrooms, a good dose of salt and freshly ground black pepper.
+When fresh mushrooms start to release their juices, turn heat up and cook hard.
+Srir frequently until they lose their raw look.
+Add wine and some soaking water.
+Cook until liquid is thick (about 5 minutes).
+Sir in cream and reduce to a syrup.
+Preheat grill or a very hot oven.
+Toast bread and put in a heatproof dish.
+Divide mushrooms between slices and sprinkle with cheese.
+Cook for 1--2 minutes (grill) or 15--20 minutes (grill) until lightly browned.
+Serve immediately.
+\end{method}
+\section{Taramasalata}
+\begin{ingredients}
+\item 100 g day-old white bread, crusts removed and cubed
+\item 1--2 spring onions, topped, tailed and roughly chopped
+\item 50 g Philadelphia cream cheese
+\item juice 1 large lemon (90 ml)
+\item 125 g smoked cod roe
+\item 200 ml extra virgin olive oil
+\item 90 ml whole milk
+\end{ingredients}
+\begin{method}
+Soften bread in a little milk or water.
+Squeeze dry.
+Food process with onions to a pulp.
+Add cream cheese, lemon and cod roe.
+Pulp.
+Add olive oil in a thinnish stream, scraping down the sides, until the mixture is well blended.
+Add milk, a spoonful at a time, until mixture is the consistency of double cream.
+Scrape into large bowl, refriferate, cover.
+Before serving beat tara with wire whisk or hand blender.
+\end{method}
+\section{Butter bean and sweetcorn soup}
+\begin{ingredients}
+\item 1 oz butter
+\item 1 clove garlic, crushed
+\item 1 onion, chopped
+\item 2 sticks celery, sliced
+\item 12 oz seetcorn kernels
+\item 8 oz butter beans, soaked and cooked
+\item \half\ tsp thyme
+\item 2 sage leaves
+\item 1 tsp basil
+\item \half\ pint milk
+\item 1 pt vegetable stock
+\item salt and pepper
+\end{ingredients}
+\begin{method}
+Melt butrter in a saucepan, add garlic, onion and celery and saute gently for 5 minutes until softened.
+Add remaining ingredients and season well with salt and pepper.
+Bring to the boil, cover and simmer for 10--15 minutes.
+\end{method}
+\section{Oat biscuits}
+\begin{ingredients}
+\item 3 oz plain flour
+\item \half\ tsp bicarbonate of soda
+\item 3 oz Demerera sugar
+\item 3 oz porage oats
+\item 3 oz unsalted butter
+\item 1 tbsp syrup
+\item 1 tbsp rum
+\end{ingredients}
+\begin{method}
+Sift flour and bicarbonate of soda into a bowl
+Add sugar and oats, blending thoroughly.
+Heat butter with syrup and rum in a small pan until butter has just melted.
+Pour into the flour mixture and blend thoroughly with a wooden spoon.
+Shape the dough into balls, one inch wide.
+Set the balls on a well greased baking tray.
+Bake in the centre of a pre-heated oven (160\degree -- mark 3), for 20--25 minutes.
+Serve when cool.
+\end{method}
+
+\section{Chilli con carne}
+\begin{ingredients}
+\item 450 g beef mince
+\item 1 large onion, roughly chopped
+\item 1 clove garlic, shopped
+\item 2 tsp chilli powder
+\item 14 oz can chopped tomatoes
+\item 2 tbsp tomato pur\'ee
+\item 15\half\ oz can kidney beans, drained and rinsed
+\item salt and pepper
+\end{ingredients}
+\begin{method}
+place the mince in a heavy based pan or flameproof casserole
+cook gently for 5 minutes, draining off any excess fat
+add onion, garlic and chilli powder
+cook for a further 5 minutes
+add all remaining ingredients
+cover and simmer for 40 minutes, stirring occasionally
+\end{method}
+\section{Venison casserole}
+\begin{ingredients}
+\item 15 g butter
+\item 340 g diced venison
+\item 1 medium onion, peeled and diced
+\item 150 g mushrooms, thickly sliced
+\item salt and pepper
+\item 14 oz can chopped tomatoes
+\item 1 bay leaf
+\item 2 tbsp cornflour
+\item 2 tbsp redcurrent jelly
+\item 3 tbsp red wine
+\end{ingredients}
+\begin{method}
+heat the butter and brown the venison, and soften the onions over a medium heat for 5--10 minutes
+add mushrooms, tomatoes, seasoning and bay leaf
+place in a casserole dish and cover
+cook in a pre-heated oven 180\degree\ (gas mark 4) for 1 hour.
+Mix together 4 tbsp of the hot juices, cornflour, redcurrent jelly and wine
+stir smooth mixture into casserole
+replacelid and cook for 1 further hour
+\end{method}
+\section{Fruit muffins}
+\begin{ingredients}
+\item 110 g oatbran
+\item 110 g wholemeal flour
+\item 1 tsp cinnamon
+\item 1 tbsp baking powder
+\item 110 g chopped nuts
+\item \quarter\ pint (140 ml) honey
+\item 110 g coarse chopped apricots, figs, prunes
+\item 285 ml skimmed milk
+\item 2 egg whites
+\item 2 tbsp olive oil
+\end{ingredients}
+\begin{method}
+lightly grease muffin cups
+sieve together flour, cinnamon and baking powder
+mix in the bran, nuts and fruit
+lightly beat egg whites, honey and oil and mix into dry ingredients
+slowly mix in the milk to form a batter
+fill muffin cups
+bake in a preheated oven at 200\degree (gas mark 6) for 15 minutes
+stand for 5 minutes
+turn out onto a cooling tray
+eat
+\end{method}
+\section{Pan-roasted pigeon with grapes and onions}
+(also suitable for a pheasant or duck)
+\begin{ingredients}
+\item 2 smallish onions (about 250 g)
+\item 30 ml vegetable oil
+\item 4 wood pigeons
+\item 30 ml port
+\item 15 ml cr\'eme de cassis
+\item 30 ml wine vinegar
+\item 15--20 seedless grapes
+\item 15 ml brandy
+\end{ingredients}
+\begin{method}
+yop and tail onions without cutting off all root end, and quarter
+heat half the oil in a heavy frying pan or casserole
+fry onions quarters till browned on both cut surfaces
+remove, add remaining oil, and brown birds well all over (about 15 minutes). they should end up on their backs
+put in cassis, port and vinegar with a splash of stock
+retirn the onions to the pan
+cover tightly and simmer for 15--25 minutes. do not overcook.
+add grapes in the last few minutes, just to heat through.
+just before serving add brandy and flame to burn off the alcohol
+serve with polenta or rice
+\end{method}
+
+\section{Parkin}
+\begin{ingredients}
+\item 450 g brown flour
+\item 225 g oatmeal
+\item 10 g baking powder
+\item 5 g mixed spice
+\item 230 g butter
+\item 115 g sugar
+\item 570 g syrup
+\item cup of milk
+\end{ingredients}
+\begin{method}
+mix all dry ingedients together to the consistency of breadcrumbs
+warm together the syrup and milk
+add syrup and milk to the dry ingredients
+mix until clear of lumps
+pour into a lightly greased cake tin
+bake at 160\degree\ (gas mark 3) for about 1 hour
+\end{method}
+\section{Yorkshire pudding}
+\begin{ingredients}
+\item 125 g flour
+\item salt
+\item 1 large egg
+\item 300 ml milk
+\item 1 tsp oil
+\end{ingredients}
+\begin{method}
+sift together flour and salt
+mix in the egg and half the milk
+beat for 10 minutes until batter is bubbly
+stir in remaining milk
+cover and set aside for 30 minutes
+pour batter into preheated, oiled, pudding tray
+put in preheated oven 220\degree\ (gas mark 7) and bake for 1 hour
+\end{method}
+
+\section{Roast pork with mustard butter}
+\begin{ingredients}
+\item 1 loin of pork
+\item 3 cloves of garlic
+\item 2 oz butter
+\item 1 onion, finely chopped
+\item \half\ tsp thyme
+\item 1 bay leaf, crumbled
+\item 2 tsp Dijon mustard
+\item salt and pepper
+\end{ingredients}
+\begin{method}
+remove rind from pork
+score the fat on the loin in a criss cross pattern
+cut garlic cloves into 4 slices
+pierce lion in 12 places and insert a clove into each hole
+mix softened butter, thyme, bay leaf and mustard to a smooth paste
+add onion and run well into pork
+season, let stand for about 1 hour at room temperature
+brown, fat side up, in preheated oven 230\degree\ (gas mark 8) for 15 minutes
+reduce temperature to 180\degree\ (gas mark 4) for about 1\half\ hours
+\end{method}
+
+\section{Ropa Vieja}
+\begin{ingredients}
+\item 900 g cheap beef or pork, in a single piece
+\item 1 bay leaf
+\item 3 peppercorns
+\item 2 tbsp olive oil
+\item 2 cloves gralic, sliced
+\item 1 or 2 large fresh chillis, deseeded and shredded
+\item 1 red and green pepper, deseeded and shredded
+\item 2 medium oions, thinly sliced
+\end{ingredients}
+\begin{method}
+place meat in a large pot with the bay leaf, peppercorns and water to cover by 5 cm
+bring to simmer, turn down heat, skim well, and simmer till meat is very tender (2 to 3 hours)
+remove and leave to cool
+degrease and reduce the stock
+tear meat when cool into shreds a few inches long
+transfer them into a clean bowl and set aside, covered, till needed
+heat oil in a large frying pan or casserole and add all the remaining ingredients plus a generous dose of salt and pepper
+cook over a medium heat till soft and fragrant (anout 20 minutes)
+add meat and cook, stirring thoroughly, until heated through (about 15 minutes)
+if dry moisten with some stock
+serve with rice, mashed potatoes or grilled polenta
+\end{method}
+\section{Fat rascals}
+\begin{ingredients}
+\item 1 lb plain flour
+\item \half\ lb butter
+\item 1 oz sugar
+\item \quarter\ lb currants
+\item \quarter\ tsp salt
+\item milk and water
+\item castor sugar
+\end{ingredients}
+\begin{method}
+rub the butter into the flour
+mix in the currants, sugar and salt
+mix together well
+make into a firm dough with some milk and water
+roll out half an inch thick
+cut into rounds
+bake in a quick oven
+\end{method}
+\section{Ripon Parkins}
+\begin{ingredients}
+\item \threequarter\ lb ouatmeal
+\item \threequarter\ lb flour
+\item 2 oz butter
+\item 2 oz lard
+\item \quarter\ brown sugar
+\item 1 lb treacle
+\item 2 tbsp milk
+\item 1 tsp bicarbonate of soda
+\item 1 tbsp ground ginger
+\end{ingredients}
+
+bake in a slow oven for 1\half\ hours
+
+\begin{method}
+rub lard and butter into flour
+blend flour, oatmeal, ginger and sugar all together
+melt treacle and mix in
+dissolve soda in milk and add to mixture
+mix well, bake in a dripping tin
+cook in a slow oven
+\end{method}
+\section{Lancashire parkin}
+\begin{ingredients}
+\item 1\half\ lb oatmeal
+\item 1 lb treacle
+\item \half\ lb brown sugar
+\item \half\ lb butter
+\item 1 tsp ground ginger
+\item 1 tsp ground allspice
+\end{ingredients}
+\begin{method}
+mix dry ingredients together
+heat treacle and butter together
+mix well
+leave to stand all night
+bake in a cool oven for about 2 hours
+\end{method}
+\section{Yorkshire parkin}
+\begin{ingredients}
+\item \threequarter\ lb oatmeal
+\item \quarter\ lb flour
+\item 1 lb treacle
+\item \half\ lb sugar
+\item 1 tsp ground ginger
+\item \half tsp mixed spice
+\item 2 tsp bicarbonate of soda
+\item 2 tbsp lukewarm water
+\end{ingredients}
+\begin{method}
+warm treacle together with butter
+mix oatmeal, sugar, ginger and sllspice with treacle and butter
+dissolve bicarbonate of soda with warm water and mix in
+drop spoonfuls on greased and floured tins
+bake quickly in a hot oven for 20 minutes
+\end{method}
+\section{Gingerbread biscuits}
+\begin{ingredients}
+\item \threequarter\ lb treacle
+\item \half\ lb butter
+\item 1 lb flour
+\item \half\ lb sugar
+\item \threequarter\ oz ginger
+\end{ingredients}
+\begin{method}
+mix the flour with the brown sugar and the ginger
+melt treacle and butter together
+pour hot onto the flour mixture
+make into a paste, leave overnight
+roll out thin
+cut into rounds snd bake on greased and floured tins in a gentle oven
+\end{method}
+\section{Ripon ginger cake}
+\begin{ingredients}
+\item \half\ lb plain flour
+\item \half\ lb fine oatmeal
+\item \half\ lb treacle
+\item \half\ lb butter
+\item 2 oz castor sugar
+\item 2 ox ground ginger
+\item 1 tsp bicarbonate of soda
+\end{ingredients}
+\begin{method}
+sieve flour and bicarbonate of sioda together 3 times
+mix in oatmeal and ground ginger
+cream butter snd sugar together
+warm treacle nd combine with butter and sugar
+add flour, oatmeal and soda
+mix well, put in a lined cake tin
+bake in a moderate oven for about 2 hours
+\end{method}
+\section{Gingerbread cake}
+\begin{ingredients}
+\item 1\half\ lb flour
+\item 1 lb golden syrup
+\item \half\ lb butter
+\item \quarter\ lb preserved ginger or peel
+\item \half\ lb sugar
+\item 3 eggs
+\item 1 gill milk
+\item 1 tsp bicarbonate of soda
+\end{ingredients}
+\begin{method}
+sieve the flour and ground ginger together
+shred the peel finely and add to the flour
+dissolve butter, syrup snd sugar together
+beat eggs together
+mix flour and ginger with syrup, butter snd sugar
+add bicarbonate to lukewarm milk
+mix all ingredients together and beat well
+tuen mixture into a greased tin and bsake in a moderate oven for 2\half\ hours
+\end{method}
+\section{Eliza Acton's gingerbread}
+\begin{ingredients}
+\item 5 eggs
+\item 1\quarter\ lb treacle or syrup
+\item 6 oz demarera sugar
+\item 1 lb flour
+\item 6 oz butter
+\item 1 oz ground ginger
+\item grated rind of 2 lemons
+\end{ingredients}
+\begin{method}
+beat eggs well
+add warmed syrup gradually, beating all the time
+add sugar in the same manner
+add butter (warmed but not hot)
+add ginger to the flour and sift together
+add to egg mixture
+besat until bubbles appear in the batter, then add flavouring
+bake in a greased shallow tin in a slow oven for 2 hours
+\end{method}
+\section{Leeks with bacon and red wine}
+\begin{ingredients}
+\item 3 tbsp olive oil
+\item 4 rashers thick-cut streaky bacon cut into thin strips
+\item 1\half\ lb leeks, washed, trimmed and cut in half lebgthwise
+\item 6 fl oz red wine
+\item 2 fl oz chicken or meat stock
+\item 1 tsp sugar
+\item 1 tsp coarsely crushed coriander seeds
+\item salt and pepper
+\end{ingredients}
+\begin{method}
+Heat olive oil in frying psn large enough to take leeks in a single layer.
+Brown the bacon in the oil, then add the leeks and brown them to colour evenly.
+Pour on wine and stock.
+Add sugar and coriander, salt and pepper.
+Bring to the boil and cover.
+Simmer gently for 10 minutes until tender.
+Transfer to a serving dish.
+If necessary, boil juices until reduced to a syrup.
+Pour over leeks.
+Serve hot or cold.
+\end{method}
+\section{Leek and potato pie}
+\begin{ingredients}
+\item 1 lb puff pastry
+\item 1\half lb leeks, washed, trimmed and thinly sliced
+\item 1 onion, sliced
+\item 3 oz butter
+\item 2 lb potatoes, parbioled, sliced thickly
+\item salt and pepper
+\item \half--\threequarter\ fennel seeds
+\item 4 tbsp double cream
+\item 1 egg yolk
+\end{ingredients}
+\begin{method}
+Line a shallow cake tin (8 in by 2 in deep) with just over half the pastry.
+Drop the leeks into a pan of boiling water, bring back to the boil, and simmer for 1 minute.
+Drain and run under the cold tap.
+Drain thoroughly.
+Fry onion gently in \half\ oz of butter till golden.
+Layer potatoes, leeks and onion in the tin.
+Season with salt, pepper and fennel seeds between layers.
+dot with remaining butter.
+Spoon over the cream.
+Roll out remaining pastry to form a lid.
+Brush edges of the pastry in the tin lightly with water and lay the lid over.
+Press the edges together to seal and trim off excess.
+Make a hole in the centre for the steam to escape.
+Mix the egg yolk with a tbsp of wtaer and brush over pastry.
+Bake at 220\degree\ (gas mark 7) for 15 to 25 minutes until puffed and lightly browned.
+Reduce heat to 180\degree\ (gas mark 5) and bake for a further 25 minutes.
+Serve hot with green salad.
+\end{method}
+
+\section{Courgettes with Roasted Tomatoes}
+\begin{ingredients}
+\item 450g (1 lb) red, ripe tomatoes
+\item 675 g (1\half\ lb) smallish courgettes
+\item 1 clove garlic, finely chopped
+\item 1 small onion, finely chopped
+\item 30--45 ml (2--3 tbsp) extra virgin olive oil
+\item 15 ml (1 tbsp) red wine vinegar
+\item fresh mint to garnish
+\end{ingredients}
+\begin{method}
+Preheat oven to 200\degree C (Gas Mark 6).
+Piut a little oil in a roasting tin and
+place in the halved tomatoes, cut side up.
+Roast until lightly browned and very soft (about 30
+minutes).
+Remove the tomatoes to a sieve.
+Put the halved courgettes in the tin
+with a little more oil and some salt and pepper.
+Roast for about 15 minutes, until slightly crunchy.
+Sieve tomatoes and mix with garlic,
+onion, olive oil and vinegar. Pour into
+tin and cook until courgettes are done (another 15--20
+minutes). Garnish with mint and serve at any temperature.
+\end{method}
+\end{document}
+
+
+
+
+\end{document}
diff --git a/usergrps/uktug/baskervi/6_2/reese.tex b/usergrps/uktug/baskervi/6_2/reese.tex
new file mode 100644
index 0000000000..c45b2d31fd
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/reese.tex
@@ -0,0 +1,634 @@
+\newcommand{\GLOSS}[1]{\textsc{#1}}
+\newcommand{\key}[1]{\texttt{#1}}
+\newcommand{\Ascii}{\textsc{Ascii}}
+\newcommand{\MP}[1]{}
+
+\title{Word processing}
+\author{R.~Allan Reese}
+\begin{Article}
+
+The software most used by students, including research students, at
+Hull is MicroSoft Word. This is {\em their\/} preference; when the
+Computer Centre consciously offered introductory courses using the
+Works integrated package which has a simplified word processor compared
+with Word, it was found that students quickly switched to using Word.
+The reasons for this preference are largely peer and societal pressure;
+it is unlikely that students should immediately need the more advanced
+formatting features of the product. Many students are rather vague as
+to what they are using: a typical enquiry starts with, ``I was typing
+into Windows when \ldots .''
+
+The local preference is seen much more widely, and again the reasons
+are hard to identify apart from marketing pressure. Word has no
+apparent technical superiority over its rivals (WordPerfect, Ami Pro)
+but has captured a large majority of the world market. Nigel Lodge of
+\GLOSS{CHEST} reported (verbal report to \GLOSS{UCSG} committee
+meeting, January 1996) that while WordPerfect was functionally
+equivalent, available to UK HE sites on a similar unit-based licence,
+had the advantage that documentation could be copied under the licence,
+and was well under half the price (\pounds 16 per unit compared with
+\pounds 38), nevertheless, sales through Chest were biased to Word in
+the ratio 22:1. It seems that Microsoft dominates the market because
+it has a stranglehold on operating systems; this is similar to the
+situation summarized in the 1960s and 70s when ``no one ever got fired
+for buying IBM kit.''
+
+Change is slow to bring about. As JISC point out\cite[paras~36--38]
+{JISC:95}, ``The protection of existing investment [in resources and
+knowledge] is an extremely powerful factor in any decision to extend or
+replace computing equipment. \ldots The same factor can be seen at work
+even with an individual\ldots wishing to retain existing peripherals and
+package software. \ldots Personal workstations should be regarded as
+having a relatively short effective life of two to four years only.
+[However,] while interesting new technologies are emerging all the time,
+they often become significant only when a supplier perceives a market
+advantage in exploiting them, or when a major and completely new project
+opens which has no `legacy' problem.'' The pressures on students occur
+in departments (perhaps driven by both students and staff in mutual
+feedback) and when they talk to other users at the machines.
+
+Standardization on Word is, however, not necessarily appropriate or
+helpful for students or academic writers. Word has developed as a
+product over ten years entirely under the control of the MicroSoft
+Corporation and, while the name has stayed the same, the product has
+changed dramatically in appearance and function. The
+documentation\cite{winword} does not contain a statement of the design
+aims of the program, but it is a fair assumption that the primary
+concern is to support the commercial office market, which is the
+largest and most lucrative. The extensive range of features concentrate
+on text and document formatting: features such as mail-merge,
+boilerplate letters, documents composed from standard paragraphs are
+not obvious requirements for original text composition. One
+semi-evident development policy has been to suggest that Word provides
+most of the functionality of a true DTP package. The overheads of these
+unwanted features have created problems, especially for novice users
+working on open-access machines in university computer centres.
+
+Students using shared machines need to renew the whole system at the
+start of each session. Failure to do so may lead to the student's work
+being affected by a previous student\Dash whether accidentally or
+maliciously. This involves basic rebooting of the PC, logging on to
+the network, loading Windows and loading the word processor before the
+document can be opened. On a PC network, as is currently and
+increasingly the norm, this process may take up to several minutes,
+dependent upon the other demands on the network. This is a ridiculous
+overhead when all the student wants to do is type and edit text, but
+the students remain adamant that they prefer to type directly into a
+fully WYSIWYG version.
+
+Once the student has the document on the screen, there is an
+unacceptably high probability that the document will be damaged or
+lost. This can occur as a result of user incompetence, inadvertent
+action, or system failure. An example of the first results from our PC
+network system having many logical disk-drives visible to the user; new
+users not infrequently save their first document onto a network drive
+letter in the temporary area. The word processor knows only that the
+buffered document has been saved; the network allows the user to
+logout; it is only when the student comes back for a second session
+that they find their floppy disk has no files on it. Usually this is a
+lesson that is learned once and before any serious work has been lost.
+Much more anguish is caused by students selecting accidentally some
+random feature of the word processor. For example, in MS Word you can
+select (highlight) the complete text and then a single press of the
+ENTER key deletes it! Of course, the text has not then been lost but
+merely copied to the clipboard. Unfortunately, the student often does
+not know this, and their subsequent panic actions generally lose the
+clipboard and often overwrite the disk copy with the blank buffer
+before they come (in tears, whether male or female) for help\Dash
+either file archaeology or a miracle. Other problems occur because
+the student clicked a mouse button when the cursor was at some random
+point in a window or toolbar. System errors can be protected against
+only by frequent and independent backup. Despite the name, `system'
+faults may be due to factors totally beyond the control of the computer
+service `systems' staff: one case of repeated failures was traced to a
+student who habitually used the same workstation, and whenever she got
+into difficulties switched the power off and on at the wall switch\Dash
+thus crashing all the PCs on that bench.
+
+The third disadvantage of high-performance word processors is that they
+encode a large amount of physical formatting within the document file.
+The file format is proprietary and binary\Dash highly complex. As a
+result, any file that is not 100\% readable and correct may be unusable
+by the program. Multiple footnotes in particular cause problems in
+academic writing. When files have been corrupted due to a physical
+disk fault or failure while writing, the bulk of the text can generally
+be recovered but formatting is lost and usually so are footnotes. Even
+when the program functions, there is no intuitive or essential logic to
+the manipulation of footnotes: do you, for example, delete a footnote
+by selecting the marker in the body or the footnote text?
+
+\subsection{Features of Word in relation to needs}
+
+The pre-eminence of MS Word as a tool for academic writers means that
+if it does not meet the needs of the task, or if its method of working
+is unwieldy, the software may be a drag on the effectiveness of the
+writer. Even worse, the user may be controlled by the technology,
+doing things `because they're there' and overlooking options because
+the program lacks them. This is not an unduly cynical view.
+Commercial software necessarily plays down those features that it does
+not provide, and trumpets those features which have been added at the
+last upgrade. Previously perfectly good working practices can be swept
+aside because a new feature has to be promoted. Let us examine how
+Word meets the requirements laid out in Section~\ref{Sec:composing}:
+
+ \begin{description}
+ \item[text input]
+ Switch on the PC, start Windows, then start Word\Dash and you obtain a
+screen on which you can type words. The exact appearance of the screen
+should be configured according to user preferences, but this is not
+feasible on open-access computers. Every user must be given a clean and
+consistent system that conforms to the documentation. A personal copy
+on an individual's machine can be configured, but the user needs to
+understand and record the changes. Problems can arise when documents
+are moved between systems with different set-ups; style or template
+files may need to be copied and re-linked to documents that use them.
+
+Word has options that make space characters and other special codes,
+such as paragraph marks, visible. These are used by default, which
+should make it easier for students to learn the differences between
+features: for example, spaces and tabs.
+
+Word is, of course, WYSIWYG and this is an aspect that is frequently
+commended. The temptation is therefore to type and format in one
+operation. The Computer Centre strongly advises the use of
+stylesheets, but these are ignored in the RSA elementary syllabus. The
+use of an extra {\tt Enter} at the end of paragraphs has been
+discussed; this practice would be counter-productive once stylesheets
+were introduced, since the stylesheet defines a `standard paragraph'
+which would contain information on spacing and indents. The default
+paragraph format is single spaced, left aligned with no indent; it
+could so easily have had the more conventional first-line indent.
+
+The biggest drawback to Word for basic use is the sheer complexity of
+the screen. Absolute beginners to word processing have the problem of
+recognizing the multitude of visual cues on the screen and equating
+these with meaningful functions. There are, by default, menus and
+toolbars, other active points where clicking the mouse does something,
+a ruler, and all the paraphenalia of Windows. It is easy to catch some
+key inadvertently (or click the mouse in the wrong place) and the
+unexpected happens. Overcoming this is a matter of familiarity, but it
+underlines the need for training. Very little is truly intuitive.
+
+Despite being `WYSIWYG', Word offers four different ways of viewing a
+document: Normal, Page layout, Print preview and Outline. Initial text
+input is best done in Normal mode, which is the default when starting.
+This view shows most text attributes (font, size, etc.) and spacings,
+though centered text will not appear centred on the screen as the edges
+of the `page' are not marked. Graphic inserts and multiple-column text
+are simplifed in this view, but this should not cause problems during
+composing. Page and section breaks appear as dotted lines and headers,
+footers or footnotes are edited in separate windows. Page layout shows
+the physical arrangement of the page on the screen, and provides an
+alternative way of editing structures. Print preview takes account of
+the exact features of the printer. While you cannot edit in this view,
+It shows two pages side by side and allows you to adjust page
+parameters such as margin widths. Provided the system is consistent
+(and that may be a big assumption), the writer can be confident that a
+document can be composed, formatted and printed as wanted, first time.
+
+Word has several methods for inputting characters that are not assigned
+single keys. Apart from foreign language letters, this includes
+characters like long-dashes and opening quotes that resolve ambiguities
+in the typist's reduced character set. If you are in the process of
+typing, the optimal method is probably to use either a key-combination
+or a `dead-key' method. A key-combination involves holding down one
+key while pressing another, similar to using \key{Shift} to obtain
+capital letters. \key{Alt} is an obvious centender. The `dead-key'
+method involves pressing one key (or combination) and then another; the
+two keys are combined in one character. This is a traditional method
+for obtaining accented characters on a manual typewriter, where the
+dead-key does not move the paper. Word does provide such mechanisms.
+Characters can be inserted by key combinations or by typing a numerica
+character code. However, these shortcuts have fallen victim to the
+\GLOSS{WIMP} paradigm; the first method advised in the manual and in
+the on-line help is a pull-down menu that shows all the symbols in the
+extended character set. The manual suggests an alternative of mapping
+the keyboard to a foreign character set; this method simply moves the
+problem, since there is still a mapping from the 102-key keyboard to a
+256-character set. The optimum for habitual use of a few characters
+would seem to be to use the symbol menu once, and to make a note of the
+keyboard shortcut.
+
+Word will also make changes to your text as you type. The auto-correct
+feature is discussed below under the topic of checking.
+
+
+ \item[notes]
+Notes for the writer are used in two contexts: notes that will form
+part of the text, and notes for the writer's own use. A note involves
+two components: a marker within the body of the text, and the note
+itself. Notes may appear on the printed page as footnotes or endnotes.
+ The inserted mark may be a number or a special character; unless
+footnotes are used very sparingly, a numbering system is easier to
+follow. Word automatically renumbers footnotes whenever you add,
+delete or move footnotes.
+
+Notes for the author's use can be inserted as `annotations', which are
+similar to footnotes but are stored as `hidden' text. The same chapter
+of the manual describes the use of revision bars for keeping track of
+changes in a text. Hidden text can be hdden, viewed or printed, but if
+visible will affect the pagination. Annotations are printed
+separately, after the body text, but if annotations are printed, then
+so is hidden text. Hidden text can be treacherous; a colleague in my
+department once received from a national committee a file containing
+earlier ideas as hidden text\Dash which they probably did not want to
+distribute. Word's annotations do not quite match the functions of
+`comments' in LaTeX or `attached notes' in Journalist, as discussed in
+Section~\ref{latex:input}\MP{do it!}.
+
+While the footnotes mechanism has the required features, there are
+several drawbacks. One is that this is seen as `advanced' use. It is
+documented under `Special features', well after features like tables
+and inserting graphics. The mechanism is not intuitive. Inserting a
+footnote opens a \GLOSS{dialogue box} for the in-text mark and a box
+for the actual text; deleting a footnote is done by selecting and
+deleting the mark\Dash deleting all the text does not delete the mark.
+Users are often confused between `footnote' and `footer'. Both of
+these are training points, but they lead to misuse. It may be a
+consequence of misuse, but the mechanism of storage appears to be be
+unstable, especially on networked computers; footnotes seem to be
+implicated in a high proportion of files that `become unreadable'.
+Word document files are complex binary structures, which must read
+completely or not at all. Since academic writers perhaps use footnotes
+far more commonly than do office workers, it may be that this is a
+weakness of the program. Finally, it is conventional to typeset
+fotnotes in a smaller font than the body text and single spaced even
+when the body text is double spaced, but Word does not apply these
+rules automatically.
+
+
+
+ \item[moving text around]
+The major advantage of a word processor over a typewriter is the
+ability to manipulate your text without retyping more than the
+corrections. Word provides for revisions on-screen and through
+command menus. Screen editing is standard; position the cursor
+anywhere and use \key{Del} and {\tt Insert} or {\tt Overtype} input.
+Beginners get confused between \key{Backspace} and \key{Delete}, and
+they have difficulty positioning the cursor with the mouse\Dash it's
+easier to use keys because the cursor then moves in discrete steps.
+
+Larger changes are made by selecting text, using the cursor keys or the
+mouse. The standard method of working in Word is to select text and
+apply an operator. The mouse can be used to select words, lines or
+paragraphs at a time, by subtle positioning. The equivalent keyboard
+operations use two or three-key combinations. You can also select a
+column of text within a tabbed table, a useful feature. A frequently
+reported problem at the Helpdesk is however: `I've lost all my text,'
+or it may be stated as `I was using Word and the screen went blank.'
+This is the (undocumented?\MP{?}) feature that \key{Enter} acts like
+\key{Del}; students use the menu option to `select all the text' with
+the intention of applying some format, but they press \key{Enter} and
+all the text disappears. It is actually copied to the clipboard, so
+users who recognize what has happened can use `undo' to retrieve it.
+Unfortunately, by the time they come to the Helpdesk, it is usually too
+late. If they exited from Word as well, it will have also destroyed
+the previous version on file.
+
+Moving text by cut-and-paste works within a document, between
+documents, and between Word and other Windows software. However, as
+an example of the ad hoc design elements that have gone into Word,
+consider the following (Word for Windows version 2 manual, p109):
+\begin{quote}
+If you include paragraph marks in your selection when you copy or move
+text between documents, the formatting and styles applied to the
+paragraphs are also copied. If you copy more than 50 paragraphs in
+[sic, do they mean from?] a document you have saved at least once, all
+styles in the document are copied along with the paragraphs.
+\end{quote}
+
+Word has another mechanism called `the spike'. This is described under
+the Glossary section and differs from the clipboard in that selected
+items are appended to the spike rather than overwriting its existing
+content. Material can be accumulated on the spike and inserted once or
+repeatedly.
+
+There is also a facility to move or copy text without involving the
+clipboard. This strikes me as needing considerable practice, and just
+the sort of feature that fails when you have something irreplaceable in
+the clipboard. It's too much like Chinese plate juggling. And having
+three distinct mechanisms for essentially the same job is another
+symptom of the emphasis by the vendors on shear numbers of features
+rather than consistent design.
+
+Other editors provide a single command to transpose two letters, but
+this feature is lacking from Word: a pity as transposition is a very
+common typing problem.
+
+Large scale reorganization of text can also be carried out using
+outlining. This is less likely to lead to duplicated text or
+arbitrarily omitted words\Dash word processor syndrome.
+
+
+ \item[find and replace]
+Find and replace is the feature that starts to use the computer as a
+processor rather than merely a storage device. It can be used within a
+document as a fast way of moving. With a replacement text, it can be
+used to correct mistakes, make systematic changes, or make repeated
+changes with the user deciding whether or not to carry out each. The
+text searched for can be a word or phrase. Word will find a phrase
+even if it appears to have a linebreak in the middle, since that is
+Word's interpretation of a space for display purposes. You can
+restrict the matching to whole words and to the specific letter case.
+
+Find and replace can be applied to formatting, but it does not seem
+possible to change a format element, such as `italic', by inserting a
+markup code, such as \verb|<italic>|, for example to transfer a
+document into an \Ascii\ environment.
+
+It is a peculiarity that the shortcut keys for some special characters
+are different within the search and replace menus from those while
+inputting text.
+
+The Glossary system can be viewed as an alternative for find and
+replace, with the same objective of making input faster while also
+ensuring the text uses frequently used words or phrases consistently.
+
+Word's Find system can be used to search across documents, as a way of
+identifying files by their content. This feature is provided through
+the {\tt Files/Find file} menu, rather than {\tt Edit/Find}.
+
+More general pattern matching, file finding and text manipulation
+features are available in an add-in product
+PowerSearch\cite{powersearch} which, once installed, appears as simply
+another item in the Word {\tt File} menu. Such facilities as
+\GLOSS{boolean} and \GLOSS{proximity searches} would be valuable to
+frequent users of Word who create many files and need to keep track of
+them. They are of less interest to the research student working
+basically on one large document.
+
+
+ \item[cross-referencing]
+Word uses the concept of `bookmarks'. You can insert as many as 450
+bookmarks in a single document. Bookmarks are created at the current
+cursor point by the {\tt Insert/bookmark} command. The user types in a
+name; if that name has already been assigned, the original bookmark is
+removed \MP{with warning?}. Bookmarks can be used to find that point
+by the {\tt GoTo} command, as links to another document, or to create
+cross-references to page numbers of item-numbers in lists.
+
+As with many features of Word, the effect on bookmarks of many actions
+is undefined or arbitrary. `If you {\em cut} marked text and paste it
+to a new location, the pasted text is still marked. If you {\em copy}
+marked text and paste it to a new location, the pasted text is marked,
+but the original text is not longer marked. If you paste marked text
+into a different document, the bookmark and bookmark name are also
+pasted.' If you copy but never paste, does the bookmark stay where it
+was? If you copy, close the document and open another, then paste, do
+you get the bookmark in both documents? These may seem quibbles, but
+are indicative of a system where you `suck it and see', and be prepared
+for the next release to behave differently.
+
+Automatic cross-referencing can be used to generate a table of contents
+and an index or other lists. Although this is not a trivial task
+intellectually, having an index makes a large work so much more usable,
+this feature should be given more publicity.
+
+ \item[tables]
+Simple tables can be set up using \key{tab} but tabs have to be set at
+predefined distances on the ruler. It is not possible to type and
+choose a point within the text for a tab; this seems an omission.
+
+The manual suggests a much easier alternative is the `tables' feature.
+Tables created this way look very like spreadsheets, and some
+students\Dash perhaps because they have previously used an integrated
+package such as Works\cite{works}\Dash are inclined to switch to
+Excel\cite{excel} for even the simplest table. Word tables are also
+the recommended method for positioning side-by-side paragraphs.
+
+Word shows the outline table with dotted gridlines for input. This may
+prompt users to opt for full borders around each table cell\Dash a very
+poor design choice. Examples in the manual further reinforce the
+limited view of tables as strictly rectangular sets of cells conatining
+similarly formatted items; in the examples, all the items are
+left-justified within the cells. Cells can be merged across a row, to
+make an item spanning two or more columns, but the manual states that
+they cannot be merged down a column, so for example a brace linking
+rows would not be possible. The manual does not show any example where
+items on different rows are aligned differently, but this would appear
+to be possible as each cell operates like a self-contained
+mini-paragraph. Indeed, one feature that is documented is that you can
+insert a tab within a cell. However, as \key{tab} moves the insertion
+point (cursor) from cell to cell when you are working in a table, it is
+necessary to use the special convention that \verb|CTRL+TAB| sets a tab
+position\Dash another example of the ad hoc interface.
+
+When looking for examples of very simple published tables for a
+workshop, I was struck that almost every table in published journals
+had some special feature or complication. Most tables were qualified
+by footnotes, and a footnotes within the table used a separate marking
+system from those in the text. Word does not mention this, but it
+might be accommodated by making each table into a separate `section'.
+This would then raise further complications in printing the complete
+sequential document.
+
+Tables that follow the design recommendations of Chapman\cite{chapman}
+can be produced using Word but are not encouraged. Rules (lines) to
+span and conceptually bind groups of cells have to be inserted as
+`part-borders' of the cells. The Word for Windows 2 manual shows one
+example that used just single rules to offset a row of headings, but
+goes on to hint `the more the merrier':
+\begin{quote}
+You can apply borders on top of any of the gridlines to make a table
+easier to read. \ldots You can use different line styles for any
+borders you apply to table cells. For example, to add a double border
+to separate the column headings from the table entries as shown in the
+following illustration [omitted], first apply single borders to all
+sides of the cells \ldots\ then select the first row of the table, and
+change the line style of the border below the row.
+\end{quote}
+Word for Windows 6 has, under the `Insert Table' menu, dialogues called
+`Wizard' and `Autoformat'. The Wizard offers a selection of
+heavily-boxed tables, characteristic of Word output. Autoformat offers
+over forty styles: some good, some bad. Perhaps not wisely, but too
+well?
+
+Table entries can be highlighted by using alternative fonts, by borders
+or by shading. No doubt there exist examples that use all three.
+
+The `Windows philosophy' of design appears again in relation to the
+size and positioning of tables. Although column widths can be
+prescribed through dislogue boxes, the manual advises:
+\begin{quote}
+Unless your table design requires very precise column dimensions, it's
+easiest to change the column width by dragging the column borders or by
+dragging column markers on the ruler.
+\end{quote}
+In the WYSIWYG world, if it looks about right to the untrained eye, it
+is apparently good enough.
+
+ \item[lists]
+Bulleted or numbered lists are common requirements, particularly in a
+document that is a systematic description. Lists may be nested.
+Creating a simple list is easy in Word\Dash perhaps too easy, as the
+student with the `dot in her thing' (Section~\ref{dot:thing}) found
+out. A list can be input as plain paragraphs, and then turned into a
+list, or each item can be created in sequence.
+
+The formal description of a bullet list is that Word creates each item
+as a symbol, followed by a tab, and the rest of the item formatted as a
+\GLOSS{hanging paragraph}. The tab can be replaced by a space, though
+the click-box that does this does not make it obvious: the attached
+label is `Hanging indent by'.
+
+Numbered lists can use one of a variety of number formats. Outline
+headings, described in the next section\MP{check?} have the option of
+using a hierarchy of numbers.
+
+ \item[logical flow]
+Most of the features discussed so far speed up the process of typing
+and correcting text, or allow the author to specify structures that
+will assist the reader. Outlining is a facility and a technique that
+assists the author by allowing shifts of perspective. The writer can,
+while composing, look at the text at any level from its skeleton to the
+fine detail.
+
+Outlining in a word processor has the advantage over outlining on paper
+that it is dynamic. Topics can be moved about, and attached at
+different levels. If you move headings, any sub-headings or associated
+text is moved as well. So the task of reorganizing text can be carried
+out at any level, and there is less danger of losing text or leaving
+part of it in the wrong place than if you had to select each word with
+the mouse.
+
+Headings can be arranged in any number of levels, and in `outline' view
+you can select how many levels are displayed at a time. The body text
+can be displayed in full, or showing the first line only of each
+paragraph. The headings themselves may appear in the final document, or
+they may be suppressed or used to form the table of contents. They can
+also be printed separately to give a working overview. The manual also
+suggests the technique of splitting the document window while editing,
+with the normal view in one pane and the outline view in the other.
+Unless you are using such techniques, with multiple views or multiple
+applications open at once, it is hard to justify the power of a modern
+PC for basic text input.
+
+A concept related to outlining and structure is the `template'. Every
+Word document is based upon a ocument template, which is a file that
+describes various attributes. This is perhaps not obvious because the
+default template \verb|normal.sty| is so basic; the point was made
+earlier that the `standard paragraph' is neither proper indent nor
+blocked format. Templates can specify formats for pages, paragraphs or
+other objects; they can contain boilerplate text that is the same in
+every document; and they can contain many different styles. Templates
+can be used to save repetitious work and to apply consistent house
+style. They can also tailor the working environment by customizing
+menus, toolbars, macros and glossary items, and the keyboard. A
+university might well develop its own template and require its use when
+dissertations are printed.
+
+ \item[handling multiple documents]
+One of the most distressing aspects of using a computer is the loss of
+a file. For obvious reasons, for because of sod's law, the probability
+of a file being lost increases with the size of the file, the amount of
+work that would be lost, and the tightness of the deadline. It is also
+apparent that the speed and ease of manipulation of a file decreases as
+it gets larger. Any document of the size and complexity of a
+dissertation should therefore be split into components rather than
+stored as a monolithic file.
+
+The Word manual suggests that any document longer that twenty pages is
+a candidate for splitting. The terminology is complex, since a
+document can be divided into `sections' which are still stored as a
+single file, or into multiple documents where each is stored as a
+separate (\verb|.doc|) file. Multiple files can be printed
+individually (leaving the user to manipulate page numbers etc.\ to
+maintain continuity), or the user can set up a `master' document that
+combines all the subfiles for output.
+
+Having the text of a dissertation spread across multiple files raises
+problems of maintaining consistency of style and usage. The `find'
+command can be used across multiple files, after which up to nine files
+can be opened in separate windows. The need to apply similar edits
+across several files would be one reason for using the `macro' facility
+to store a sequence of operations.
+
+ \item[checking]
+Word boasts a number of commands which it collectively calls `proofing
+tools'. These include spell-checking, grammar-checking, a thesaurus
+and the hyphenation option.
+
+Each of these tools is language-dependent, and MicroSoft makes a
+feature of Word being usable with multilingual documents.
+Unfortunately, the data files necessary to support these commands are
+not available for every language. The pull-down menu of languages
+shows some twenty names of languages, from Brazilian~Portuguese to
+Swiss~German. Word lists for the spell-checker are available for all
+of these but are not installed by default. Grammar files are available
+for English and French (and maybe a couple of others). Thesarurus and
+hyphenation files are equally patchy.
+
+For what it does, the system is impressive. Each document has a
+default language, but any selection of text can be marked as another
+language. Running a check should use the appropriate file(s) for each
+language, but in practice is likely to generate only messages that the
+files are missing. In addition, the method of spell-checking does not
+work very well for inflected languages: English typically only has two
+forms for a noun and three for most verbs, but German has case endings
+for nouns and Spanish has multitudinous forms for verbs. Such
+languages demand an algorithm that identifies the root of each word; a
+worthwhile proofing tool would be able to detect inconsistencies of
+gender and person.
+
+The grammar checker for English is based upon the algorithm in Correct
+Grammar\cite{CG} but in my experience gives less reliable results. The
+number of alternative styles and degree of customization have been
+reduced from the parent program.
+
+ \item[revising]
+The operations of revising a text are well supported by the operations
+of find-and-replace, annotation and outlining.
+
+Word documents are binary files, so can be passed to an editorial
+reader as a disk file or as an attachment to an electronic mail
+message, but needing coding/decoding at each end. Passing the file
+assumes that the reader has access to a compatible version of Word; in
+practice this means the {\em same} version, as converting files between
+word processors or between versions is not a hundred-per-cent reliable.
+ The obvious way to return comments is as annotation text.
+
+ \item[formatting]
+Word formatting operates at several levels and is highly complex. Even
+a simple operation like applying page numbering can cause problems.
+Students come to the Helpdesk when they are unable to position, or
+delete, or print page numbers. They are confused by the sophisticated
+terminology and control for headers and footers.
+
+Formatting is best carried out as a separate phase from writing, if
+only because adding or deleting text may affect the formatting of
+several pages following. Word does not have the cocept of a
+\GLOSS{float}. The nearest equivalent would be to manually fix an
+object as a graphic insert and allow the text to flow round it, but
+this would not ensure that, for example, a figure could not occur
+before the page where it is referenced.
+
+Formatting in Word also has to take account of the physical
+characteristics of the output device. Final tuning should always be
+carried out in print-preview display. This is WYSIWYG par excelence:
+the user is encouraged to fiddle until it `looks about right'.
+
+
+ \end{description} %end of list of Word's
+ features
+
+My conclusion is that while Word is a powerful program that has many
+features that commend its use as a document preparation system, it also
+has drawbacks and one of these is the complexity that provides several
+alternative ways of performing almost any task. Once an operation is
+completed and is not as desired, it becomes a forensic job to deduce
+what has been done, and Herculean challenge to undo or correct it.
+
+Word is fashionable, but it is largely fashionable because it is a
+fashion. The nature of fashion is to change, and Word changes at a
+whim with each release. Whatever the merits of its features, it seems
+they are not grounded in a coherent philosophy.
+\end{Article}
+\endinput
+
+
+
+R. Allan Reese Email: r.a.reese@ucc.hull.ac.uk
+Head of Applications, Computer Centre Direct voice: +44 1482 465296
+Hull University Voice messages: +44 1482 465685
+Hull HU6 7RX, U.K. Fax: +44 1482 466441
+
diff --git a/usergrps/uktug/baskervi/6_2/references.bbl b/usergrps/uktug/baskervi/6_2/references.bbl
new file mode 100644
index 0000000000..f82d97cf69
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/references.bbl
@@ -0,0 +1,24 @@
+\begin{thebibliography}{1}
+
+\bibitem{Abbott:TB10-1-59}
+Peter Abbott.
+\newblock {{{UK\TeX} and the Aston archive}}.
+\newblock {\em TUGboat}, 10(1):59--60, April 1989.
+
+\bibitem{Golding:1994}
+Richard~A. Golding, Darrell D.~E. Long, and John Wilkes.
+\newblock The {\emph{refdbms}} distributed bibliographic database system.
+\newblock In {\em Proceedings of the Winter Usenix Conference}, San Francisco,
+ CA, January 1994.
+
+\bibitem{Greenwade:TB14-3-342}
+George~D. Greenwade.
+\newblock {{The Comprehensive {\TeX} Archive Network ({\CTAN})}}.
+\newblock {\em TUGboat}, 14(3):342--351, October 1993.
+
+\bibitem{Walsh:TB15-3-339}
+Norm Walsh.
+\newblock {{A World Wide Web interface to {\CTAN}}}.
+\newblock {\em TUGboat}, 15(3):339--343, September 1994.
+
+\end{thebibliography}
diff --git a/usergrps/uktug/baskervi/6_2/references.bib b/usergrps/uktug/baskervi/6_2/references.bib
new file mode 100644
index 0000000000..7a7806846e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/references.bib
@@ -0,0 +1,44 @@
+% BibTeX bibliography file
+
+@Article{Abbott:TB10-1-59,
+ author = {Peter Abbott},
+ title = {{{{UK\TeX} and the Aston archive}}},
+ journal = {TUGboat},
+ year = {1989},
+ month = {April},
+ volume = {10},
+ number = {1},
+ pages = {59--60}
+}
+
+@InProceedings{Golding:1994,
+ author = {Richard A. Golding and Darrell D. E. Long and John Wilkes},
+ title = {The {\emph{refdbms}} distributed bibliographic database system},
+ booktitle = {Proceedings of the Winter Usenix Conference},
+ year = {1994},
+ month = {January},
+ address = {San Francisco, CA}
+}
+
+@Article{Greenwade:TB14-3-342,
+ author = {George D. Greenwade},
+ title = {{{The Comprehensive {\TeX} Archive Network ({\CTAN})}}},
+ journal = {TUGboat},
+ year = {1993},
+ month = {October},
+ volume = {14},
+ number = {3},
+ pages = {342--351}
+}
+
+@Article{Walsh:TB15-3-339,
+ author = {Norm Walsh},
+ title = {{{A World Wide Web interface to {\CTAN}}}},
+ journal = {TUGboat},
+ year = {1994},
+ month = {September},
+ volume = {15},
+ number = {3},
+ pages = {339--343}
+}
+
diff --git a/usergrps/uktug/baskervi/6_2/relsize.sty b/usergrps/uktug/baskervi/6_2/relsize.sty
new file mode 100644
index 0000000000..8f727eb67c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/relsize.sty
@@ -0,0 +1,145 @@
+% relsize.sty 2.0 Mar 15, 1995
+
+% New LaTex2e version by Donald Arseneau <asnd@reg.triumf.ca> and
+% Matt Swift <swift@bu.edu>.
+% Original LaTex2.09 smaller.sty author: Bernie Cosell <cosell@WILMA.BBN.COM>
+%
+% Setting the font size relative to the current size
+%
+% commands are:
+% \relsize{n} where n gives the number of steps to change the size by;
+% n = -3 changes from \large to \footnotesize.
+% \smaller == \relsize{-1}
+% \larger == \relsize{1}
+% \textsmaller{text}, \textlarger{text} - versions that take an argument
+% \mathsmaller{A}, \mathlarger{B} - math versions
+% (The math versions are quite different from the text versions.)
+
+% There are more instructions at the end of the file (after \endinput).
+
+\ProvidesPackage{relsize}[1995/03/15 ver 2.0]
+
+\DeclareRobustCommand\relsize[1]{%
+\ifmmode \@nomath\relsize\else
+ \@tempcnta % assign number representing current font size
+ \ifx\@currsize\normalsize 4\else % funny order is to have most ...
+ \ifx\@currsize\small 3\else % ...likely sizes checked first
+ \ifx\@currsize\footnotesize 2\else
+ \ifx\@currsize\large 5\else
+ \ifx\@currsize\Large 6\else
+ \ifx\@currsize\LARGE 7\else
+ \ifx\@currsize\scriptsize 1\else
+ \ifx\@currsize\tiny 0\else
+ \ifx\@currsize\huge 8\else
+ \ifx\@currsize\Huge 9\else
+ 4\rs@unknown@warning % unknown state: \normalsize as starting point
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+% Change the number by the given increment:
+ \advance\@tempcnta#1\relax
+% watch out for size underflow:
+ \ifnum\@tempcnta<\z@ \rs@size@warning{small}{\string\tiny}\@tempcnta\z@ \fi
+ \ifcase\@tempcnta % set new size based on altered number
+ \tiny \or \scriptsize \or \footnotesize \or \small \or \normalsize \or
+ \large \or \Large \or \LARGE \or \huge \or \Huge \else
+ \rs@size@warning{large}{\string\Huge}\Huge
+\fi\fi}
+
+\newcommand\rs@size@warning[2]{\PackageWarning{relsize}{%
+ Size requested is too #1.\MessageBreak Using #2 instead}}
+
+\newcommand\rs@unknown@warning{\PackageWarning{relsize}{Current font size
+ is unknown! (Why?!?)\MessageBreak Assuming \string\normalsize}}
+
+\DeclareRobustCommand\larger[1][\@ne]{\relsize{+#1}}
+\DeclareRobustCommand\smaller[1][\@ne]{\relsize{-#1}}
+\DeclareRobustCommand\textlarger[2][\@ne]{{\relsize{+#1}#2}}
+\DeclareRobustCommand\textsmaller[2][\@ne]{{\relsize{-#1}#2}}
+\newcommand\mathsmaller[1]{{\mathchoice{\textstyle}%
+ {\scriptstyle}{\scriptscriptstyle}{\scriptscriptstyle}#1}}
+\DeclareRobustCommand\mathlarger[1]{\mathchoice
+ {\mbox{\larger$\displaystyle#1\m@th$}}%
+ {{\displaystyle#1}}{{\textstyle#1}}{{\scriptstyle#1}}}
+
+\endinput
+==========================================================
+
+R E L S I Z E . S T Y ver 2.0 Mar 15, 1995
+
+by Donald Arseneau, asnd@reg.triumf.ca, based on smaller.sty by Bernie
+Cosell, cosell@WILMA.BBN.COM, and combined with the version by Matt Swift,
+swift@bu.edu.
+
+It is frequently the case that something should be typeset somewhat larger
+or smaller than the surrounding text, whatever that size happens to be.
+Specifying such sizing commands explicitly makes it difficult to modify the
+font sizes of a document at a later time, and makes it hard to write macros
+that work at arbitrary sizes. Relsize.sty defines several commands for LaTeX
+to set font sizes relative to the current size.
+
+To refresh your memory, the font sizing commands in LaTeX are, in order:
+\tiny, \scriptsize, \footnotesize, \small, \normalsize, \large, \Large,
+\LARGE, \huge, \Huge. The main new command provided is \relsize, which
+takes one (positive or negative) number as its argument; the number specifies
+how many increments by which to change the font size. For example, if
+{\relsize{-2} smaller} appears in normal sized text, the word "smaller"
+is printed in footnote sized type. If the same command appears in a \Large
+section title, then "smaller" is printed in normal size.
+
+There are also the commands \larger and \smaller, which normally change the
+font size by one step in the obvious direction; \larger is an abbreviation
+for \relsize{+1}, and \smaller is an abbreviation for \relsize{-1}. For
+example, {\large... \larger{WOW!}} prints "WOW" in \Large type. You can
+also specify bigger steps as an optional argument for \larger and \smaller:
+\larger[3] is equivalent to \relsize{3}; \smaller[2] is like \relsize{-2}.
+Both \larger and \smaller accept negative arguments, but please don't make
+things so obscure! If you want to change size by several steps it is
+much better to give an increment than to string several \larger commands
+together; i.e., \relsize{3} or \larger[3], but not \larger\larger\larger.
+
+If the size requested is too small or too large, a warning is given, and
+the size will only change as far as \tiny or \Huge, as appropriate.
+
+All of the \relsize, \larger, and \smaller commands are "switches" just
+like the regular sizing commands. That is, they change the size for all
+following text until the scope is ended by a closing brace. There are
+alternate versions called \textlarger and \textsmaller that take some text
+as an argument and apply the size change to only that text:
+\textlarger{big}.
+
+All of the commands described above are text commands; they cannot be used
+in math mode. There are special \mathsmaller and \mathlarger commands
+provided, but these do not use the same sizes that the text versions use.
+Instead, they step between the usual math "styles" which you can explicitly
+set using the commands \displaystyle, \textstyle, \scriptstyle, and
+\scriptscriptstyle [see Lamport, LaTeX/Manual (1st ed, p.54); GMS The LaTeX
+Comapnion, p.255]. However, the \mathlarger command will also increase the
+size beyond regular \displaystyle by selecting a larger regular font size
+(using \larger). (Yes, this is a kludge, but it is too useful to leave
+out.) If you want to use this to create big integral signs, then you must
+also load the package "exscale" so that math symbols can change size.
+The sizes selected are:
+
+Current style \mathsmaller gives \mathlarger gives
+--------------- ---------------------- ------------------------
+\displaystyle \textstyle (almost same) \displaystyle in a \larger font
+\textstyle \scriptstyle \displaystyle (almost same)
+\scriptstyle \scriptscriptstyle \textstyle
+\scriptscriptstyle \scriptscriptstyle (same) \scriptstyle
+
+For example, try $\frac{\mathlarger{E}}{E}$. Note that, for most symbols,
+\displaystyle and \textstyle are the same size, so $N \mathlarger{N}$
+gives two identical N's, but \sum and \int do get bigger in display style:
+$\int\mathlarger{\int}$, and fractions are treated differently too:
+$\frac{1}{2} \mathlarger{\frac{1}{2}}$. As you might have guessed,
+\mathlarger and \mathsmaller should only be used in math mode.
+
+Fine point: The combination \relsize{n}\relsize{-n} is not guaranteed to
+restore the current font size! That is because the increment "n" may be
+enough to overflow the range of sizes. Say you are in \huge text already,
+and you do \relsize{4}. There is nothing bigger than \Huge so that is the
+size you get. Then an ensuing \relsize{-4} will take four steps smaller
+and change the size to \large. You should use grouping to undo relative
+size changes because it is unsafe to counteract one change with an "equal"
+change in the opposite direction.
+
+Donald Arseneau asnd@reg.triumf.ca
diff --git a/usergrps/uktug/baskervi/6_2/rfbib.blg b/usergrps/uktug/baskervi/6_2/rfbib.blg
new file mode 100644
index 0000000000..2a52298ed5
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/rfbib.blg
@@ -0,0 +1,4 @@
+This is BibTeX, C Version 0.99c
+The top-level auxiliary file: rfbib.aux
+The style file: plain.bst
+Database file #1: references.bib
diff --git a/usergrps/uktug/baskervi/6_2/rfbib.tex b/usergrps/uktug/baskervi/6_2/rfbib.tex
new file mode 100644
index 0000000000..3ff7d4c0ea
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/rfbib.tex
@@ -0,0 +1,6 @@
+\documentclass{article}
+\begin{document}
+\cite{*}
+\bibliographystyle{plain}
+\bibliography{references}
+\end{document}
diff --git a/usergrps/uktug/baskervi/6_2/sp.tex b/usergrps/uktug/baskervi/6_2/sp.tex
new file mode 100644
index 0000000000..20d7c19395
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/sp.tex
@@ -0,0 +1,23 @@
+
+From s.rahtz@elsevier.co.uk Mon May 20 15:21:41 1996
+Date: Mon, 20 May 1996 15:15:59 +0100
+From: Sebastian Rahtz <s.rahtz@elsevier.co.uk>
+To: cudax@csv.warwick.ac.uk
+Subject: Re: query
+
+ok, grab this and place at the end of other files being read. it has
+what you need to fiddle with:
+
+\def\endPSTInlineExample{%
+ \EndExample
+ \expandafter\pspicture\PictureSize
+ \usergrid
+ \input{\EXdir\theeps@counter}%
+ \endpspicture
+ \hspace{16pt}%
+ \BVerbatimInput[gobble=0,fontsize=\small]{\EXdir\theeps@counter}%
+}
+
+you need some minipages in there somewhere....
+
+s
diff --git a/usergrps/uktug/baskervi/6_2/spqr.sty b/usergrps/uktug/baskervi/6_2/spqr.sty
new file mode 100644
index 0000000000..327593fa03
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr.sty
@@ -0,0 +1,153 @@
+\RequirePackage{pst-all}
+\RequirePackage{fancyvrb}
+\RequirePackage{shortvrb}
+\RequirePackage{array,longtable}
+%\endinput
+\definecolor{wheat}{rgb}{.96, .87, .7}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{pink}{rgb}{1, .75, .8}
+\definecolor{palegreen}{rgb}{.6, .98, .6}
+\definecolor{white}{rgb}{1, 1, 1 }
+\catcode`\<=13
+\def\Main#1{{\MainFont\string#1}}
+\def\MainFont{\ttfamily\upshape} % For macro definitions.
+\def\ArgFont{\sffamily\mdseries\upshape} % For meta arguments.
+\def\OptArgFont{\sffamily\mdseries\itshape} % For optional arguments.
+\def<#1>{{\normalfont\itshape#1\/}}
+% parameter descriptions are always in a table
+\def\Par#1{\@ifnextchar({\@Par#1}{\@@Par#1()}}
+\def\@Par#1=#2(#3){%
+ {\normalfont #1}={\ArgFont#2}& #3}
+% Short-cuts for coordinates:
+\def\x#1{{\normalfont\itshape $x$#1\/}}
+\def\y#1{{\normalfont\itshape $y$#1\/}}
+\def\z#1{{\normalfont\itshape $z$#1\/}}
+\def\c#1{(\x{#1},\kern 1pt\y{#1})}
+\def\cAny{(\x{},\kern 1pt\y{})}
+% In each case:
+% 1. definition is delimited only by end-of-line.
+% 2. {}, () and [] are literal, with contents set in \ArgFont
+% 3. = and , are literal.
+% 4. `foo' is for optional arguments.
+% 5. <foo> is meta, as usual.
+\begingroup
+ \catcode`\<=1 \catcode`\>=2
+ \catcode`\{=13 \catcode`\}=12
+ \catcode`\[=13
+ \gdef\@MD<%
+ \catcode`\{=13 \catcode`\}=12 \catcode`\[=13
+ \def{##1}<\{<\ArgFont ##1\/>\}>%
+ \def[##1]<\string[<\ArgFont ##1\/>]>>
+\endgroup
+\begingroup
+ \catcode`\(=13
+ \catcode`\,=13
+ \catcode`\==13
+ \gdef\MacroDefCodes{%
+ \@MD
+ \catcode`\(13
+ \catcode`\^^M12
+ \catcode`\`13
+ \catcode`\,13
+ \catcode`\!1
+ \catcode`\@2
+ \def~{}%
+ \def={{\fontshape{n}\selectfont\string=}}%
+ \def,{{\fontshape{n}\selectfont\string,}}%
+ \def(##1){\string({\ArgFont ##1})}}
+\endgroup
+
+\begingroup
+ \catcode`\`=13 \gdef`#1'{{\OptArgFont #1}}
+\endgroup
+
+\begingroup
+ \catcode`\^^M=12\relax%
+ \gdef\GetMacroDef#1{\begingroup\MacroDefCodes\@GetMacroDef{#1}}%
+ \gdef\@GetMacroDef#1#2^^M{#1{#2}\endgroup}%
+\endgroup
+
+% For listing macro definitions in a "description" environment:
+\def\PSTCom{\GetMacroDef\@PSCom}
+\def\@PSCom#1{\@@PSCom#1\@nil}
+\def\@@PSCom#1\@nil{\MainFont\Main#1}
+\def\PSTComOpt{\GetMacroDef\@PSTComOpt}
+\def\@PSTComOpt#1{\@@PSComOpt#1\@nil}
+\def\@@PSComOpt#1#2\@nil{\@PSCom{#1{\OptArgFont*[{\ArgFont settings}]}#2}}
+\MakeShortVerb{\"}
+\DeleteShortVerb{\|}
+\def\PST{\textsf{PSTricks}}
+\def\PS{\textsc{PostScript}}
+\def\Special{{\normalfont\ttfamily\char'134special}}
+\def\Lcs#1{{\normalfont\ttfamily\char'134#1}}
+\def\Program#1{\emph{#1}}
+\def\Lpack#1{\emph{#1}}
+%----------- Zandtisms --------------------
+\def\Usage#1{{\UsageFont\string#1}}
+\def\MainFont{\fontfamily{\ttdefault}\fontseries{bc}\fontshape{n}\selectfont
+\large}% For macro definitions.
+\def\UsageFont{\fontfamily{\ttdefault}\fontseries{bc}\fontshape{n}\selectfont}
+ % For in-line macro names.
+\def\InlineFont{\ttfamily} % For other in-line snipets of code.
+\let\main\textbf
+\let\usage\emph
+% ---------- for array.sty --------------
+\def\arraybackslash{\let\\=\@arraycr}
+\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
+\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+% ----------- harvard-style citations ------------------
+\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+\def\ETAL{{\em et al\/}}%
+
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{; }\@ifundefined
+ {b@\@citeb}{$\underline{\mbox{\@citeb}}$\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+% label for a bibliography citation not produced
+ \def\@biblabel#1{\hfill}
+
+% with page or fig no
+\def\Cite#1#2{\cite[#2]{#1}}%
+% year only, with page or fig no
+\def\Yearcite#1#2{\yearcite[#2]{#1}}%
+\let\@internalcite\cite
+\def\cite{\def\citename##1{##1}\@internalcite}%
+% \yearcite gives only the date
+\def\yearcite{\def\citename##1{}\@internalcite}%
+%
+\def\endPSExample{%
+ \EndExample
+\VerbatimInput[gobble=0,fontsize=\small,
+% frame=topline,
+framerule=1.5pt]{\EXdir\theeps@counter}%
+\begin{center}
+ \ifgrid\vskip 8pt \fi
+ \expandafter\pspicture\PictureSize
+ \ifgrid\usergrid\else\relax\fi
+ \input{\EXdir\theeps@counter}
+ \endpspicture
+ \ifgrid\vskip 8pt \fi
+ \EndRuleExample
+\end{center}
+ }%
+\renewenvironment{example**}%
+{\def\Write@Ex##1{}\BeginExample}%
+{%
+\EndExample
+\VerbatimInput[gobble=0,fontsize=\small,
+ %frame=topline,
+framerule=1.5pt]{\EXdir\theeps@counter}%
+\begin{center}
+\input{\EXdir\theeps@counter}
+ \EndRuleExample
+\end{center}
+}
+\def\Lenv#1{\texttt{#1}}
+\newcolumntype{H}[1]{>{\raggedright\hangindent=.5em\arraybackslash}p{#1}}
+\def\Figword{Fig.~}
+\input{spqr2.sty}
+\catcode`\<=12
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/spqr/boxfill.tex b/usergrps/uktug/baskervi/6_2/spqr/boxfill.tex
new file mode 100644
index 0000000000..fbc02b5799
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/boxfill.tex
@@ -0,0 +1,232 @@
+%% BEGIN boxfill.tex
+%%
+%% Defines the \psboxfill macro.
+%% For use with PSTricks v0.94 (or perhaps later).
+%%
+\def\fileversion{0.94}
+\def\filedate{94/06/08}
+%%
+%% COPYRIGHT 1994, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.tex or pstricks.doc for copying restrictions.
+
+% Preliminaries:
+
+\message{ v\fileversion, \filedate}
+
+\csname PSTboxfillLoaded\endcsname
+\let\PSTboxfillLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex}
+ \expandafter\next
+\fi
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% The box:
+
+\newbox\pst@fillbox
+\def\psboxfill{\pst@killglue\pst@makebox\psboxfill@i}
+\def\psboxfill@i{\setbox\pst@fillbox\box\pst@hbox\ignorespaces}
+
+% Parameters:
+
+\def\psset@boxfillsize#1{%
+ \def\pst@tempg{#1}\def\pst@temph{auto}%
+ \ifx\pst@tempg\pst@temph
+ \let\psk@boxfillsize\relax
+ \else
+ \psset@@boxfillsize#1(\z@,\z@)\@empty(\z@,\z@)(\@nil
+ \fi}
+\def\psset@@boxfillsize#1(#2,#3)#4(#5,#6)#7(#8\@nil{%
+ \begingroup
+ \ifx\@empty#7\relax
+ \pst@dima\z@
+ \pst@dimb\z@
+ \pssetxlength\pst@dimc{#2}%
+ \pssetylength\pst@dimd{#3}%
+ \else
+ \pssetxlength\pst@dima{#2}%
+ \pssetylength\pst@dimb{#3}%
+ \pssetxlength\pst@dimc{#5}%
+ \pssetylength\pst@dimd{#6}%
+ \fi
+ \xdef\pst@tempg{%
+ \pst@dima=\number\pst@dima sp
+ \pst@dimb=\number\pst@dimb sp
+ \pst@dimc=\number\pst@dimc sp
+ \pst@dimd=\number\pst@dimd sp }%
+ \endgroup
+ \let\psk@boxfillsize\pst@tempg}
+
+\psset{boxfillsize={(-15cm,-15cm)(15cm,15cm)}}
+
+\def\psset@boxfillcolor#1{\pst@getcolor{#1}\psboxfillcolor}
+\psset@boxfillcolor{black}
+
+\def\psset@boxfillangle#1{\pst@getangle{#1}\psk@boxfillangle}
+\psset@boxfillangle{0}
+
+\def\psset@fillsepx#1{\pst@getlength{#1}\psk@fillsepx}
+\def\psset@fillsepy#1{\pst@getlength{#1}\psk@fillsepy}
+\def\psset@fillsep#1{\psset@fillsepx{#1}\let\psk@fillsepy\psk@fillsepx}
+\psset@fillsep{2pt}
+
+\def\psset@fillcycle#1{\pst@getint{#1}\psk@fillcycle}
+\psset@fillcycle{0}
+
+% Main macro:
+
+\def\psfs@boxfill{%
+ \ifvoid\pst@fillbox
+ \@pstrickserr{Fill box is empty. Use \string\psboxfill\space first.}\@ehpa
+ \else
+ \ifx\psk@boxfillsize\relax
+ \pst@AutoBoxFill
+ \else
+ \pst@ManualBoxFill
+ \fi
+ \fi}
+
+% Manual box fill:
+
+\def\pst@ManualBoxFill{%
+ \leavevmode
+ \begingroup
+ \pst@FlushCode
+ \begin@psclip
+ \pstVerb{clip}%
+ \expandafter\pst@AddFillBox\psk@boxfillsize
+ \end@psclip
+ \endgroup}
+
+\def\pst@FlushCode{%
+ \pst@Verb{%
+ /mtrxc CM def
+ CP CP T
+ \tx@STV
+ \psk@origin
+ \psk@swapaxes
+ \pst@newpath
+ \pst@code
+ mtrxc setmatrix
+ moveto
+ 0 setgray}%
+ \gdef\pst@code{}}
+
+\def\pst@AddFillBox#1 #2 #3 #4 {%
+ \begingroup
+ \setbox\pst@fillbox=\vbox{%
+ \hbox{\unhcopy\pst@fillbox\kern\psk@fillsepx\p@}%
+ \vskip\psk@fillsepy\p@}%
+ \psk@boxfillsize
+ \pst@cnta=\pst@dimc
+ \advance\pst@cnta-\pst@dima
+ \divide\pst@cnta\wd\pst@fillbox
+ \pst@cntb=\pst@dimd
+ \advance\pst@cntb-\pst@dimb
+ \pst@dimd=\ht\pst@fillbox
+ \divide\pst@cntb\pst@dimd
+ \def\pst@tempa{%
+ \pst@tempg
+ \copy\pst@fillbox
+ \advance\pst@cntc\@ne
+ \ifnum\pst@cntc<\pst@cntd\expandafter\pst@tempa\fi}%
+ \let\pst@tempg\relax
+ \pst@cntc-\tw@
+ \pst@cntd\pst@cnta
+ \setbox\pst@fillbox=\hbox to \z@{%
+ \kern\pst@dima
+ \kern-\wd\pst@fillbox
+ \pst@tempa
+ \hss}%
+ \pst@cntd\pst@cntb
+ \ifnum\psk@fillcycle=\z@\pst@ManualFillCycle\fi
+ \global\setbox\pst@boxg=\vbox to\z@{%
+ \offinterlineskip
+ \vss
+ \pst@tempa
+ \vskip\pst@dimb}%
+ \endgroup
+ \setbox\pst@fillbox\box\pst@boxg
+ \pst@rotate\psk@boxfillangle\pst@fillbox
+ \box\pst@fillbox}
+
+\def\pst@ManualFillCycle{%
+ \pst@cntg=\psk@fillcycle
+ \pst@dimg=\wd\pst@fillbox
+ \divide\pst@dimg\pst@cntg
+ \ifnum\pst@cntg<\z@\pst@cntg=-\pst@cntg\fi
+ \advance\pst@cntg\m@ne
+ \pst@cnth=\pst@cntg
+ \def\pst@tempg{%
+ \ifnum\pst@cnth<\pst@cntg\advance\pst@cnth\@ne\else\pst@cnth\z@\fi
+ \moveright\pst@cnth\pst@dimg}}
+
+% Auto box fill: !! Fix dictionary
+
+\pst@def{AutoFillCycle}<%
+ /c ED
+ /n 0 def
+ /s {
+ /x x w c div n mul add def
+ /n n c abs 1 sub lt { n 1 add } { 0 } ifelse def
+ } def>
+
+\pst@def{BoxFill}<%
+ gsave
+ gsave \tx@STV CM grestore dtransform CM idtransform
+ abs /h ED abs /w ED
+ pathbbox
+ h div round 2 add cvi /y2 ED
+ w div round 2 add cvi /x2 ED
+ h div round 2 sub cvi /y1 ED
+ w div round 2 sub cvi /x1 ED
+ /y2 y2 y1 sub def
+ /x2 x2 x1 sub def
+ CP
+ y1 h mul sub neg /y1 ED
+ x1 w mul sub neg /x1 ED
+ clip
+ y2 {
+ /x x1 def
+ s
+ x2 {
+ save CP x y1 T moveto Box restore
+ /x x w add def
+ } repeat
+ /y1 y1 h add def
+ } repeat
+ CP x y1 T moveto Box
+ currentpoint currentfont grestore setfont moveto>
+
+\def\pst@AutoBoxFill{%
+ \leavevmode
+ \begingroup
+ \pst@FlushCode
+ \pst@Verb{\psk@boxfillangle \tx@RotBegin}%
+ \pstVerb{\pst@dict /Box \pslbrace end}%
+ \hbox to \z@{\vbox to\z@{\vss\copy\pst@fillbox\vskip-\dp\pst@fillbox}\hss}%
+ \pstVerb{%
+ tx@Dict begin \psrbrace def
+ \ifnum\psk@fillcycle=\z@
+ /s {} def
+ \else
+ \psk@fillcycle \tx@AutoFillCycle
+ \fi
+ \pst@number{\wd\pst@fillbox}%
+ \psk@fillsepx add
+ \pst@number{\ht\pst@fillbox}%
+ \pst@number{\dp\pst@fillbox}%
+ \psk@fillsepy add add
+ \tx@BoxFill
+ end}%
+ \pst@Verb{\tx@RotEnd}%
+ \endgroup}
+
+\catcode`\@=\TheAtCode\relax
+
+\endinput
+
+%% END boxfill.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/calc.sty b/usergrps/uktug/baskervi/6_2/spqr/calc.sty
new file mode 100644
index 0000000000..086273e3ae
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/calc.sty
@@ -0,0 +1,150 @@
+%%
+%% This is file `calc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% calc.dtx (with options: `package')
+
+%% File `calc.dtx'.
+%% Copyright (C) 1992--1995 Kresten Krab Thorup and Frank Jensen.
+%% All rights reserved.
+
+\def\fileversion{v4.0c (TEST)}
+\def\filedate{1995/04/10}
+
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{calc}[\filedate\space\fileversion]
+\typeout{Package: `calc' \fileversion\space <\filedate> (KKT and FJ)}
+\def\calc@assign@generic#1#2#3#4{\let\calc@A#1\let\calc@B#2%
+ \expandafter\calc@open\expandafter(#4!%
+ \global\calc@A\calc@B\endgroup#3\calc@B}
+\def\calc@assign@count{\calc@assign@generic\calc@Acount\calc@Bcount}
+\def\calc@assign@dimen{\calc@assign@generic\calc@Adimen\calc@Bdimen}
+\def\calc@assign@skip{\calc@assign@generic\calc@Askip\calc@Bskip}
+\newcount\calc@Acount \newcount\calc@Bcount
+\newdimen\calc@Adimen \newdimen\calc@Bdimen
+\newskip\calc@Askip \newskip\calc@Bskip
+\def\setcounter#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}%
+ {\calc@assign@count{\global\csname c@#1\endcsname}{#2}}}
+\def\addtocounter#1#2{\@ifundefined{c@#1}{\@nocounterr{#1}}%
+ {\calc@assign@count{\global\advance\csname c@#1\endcsname}{#2}}}
+\DeclareRobustCommand\setlength{\calc@assign@skip}
+\DeclareRobustCommand\addtolength[1]{\calc@assign@skip{\advance#1}}
+\def\calc@pre@scan#1{%
+ \ifx(#1%
+ \let\calc@next\calc@open
+ \else
+ \let\calc@next\calc@numeric
+ \fi
+ \calc@next#1}
+\def\calc@open({\begingroup\aftergroup\calc@initB
+ \begingroup\aftergroup\calc@initB
+ \calc@pre@scan}
+\def\calc@initB{\calc@B\calc@A}
+\def\calc@numeric{\afterassignment\calc@post@scan \global\calc@A}
+\def\calc@post@scan#1{%
+ \ifx#1!\let\calc@next\endgroup \else
+ \ifx#1+\let\calc@next\calc@add \else
+ \ifx#1-\let\calc@next\calc@subtract \else
+ \ifx#1*\let\calc@next\calc@multiplyx \else
+ \ifx#1/\let\calc@next\calc@dividex \else
+ \ifx#1)\let\calc@next\calc@close \else \calc@error#1%
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \calc@next}
+\def\calc@add{\calc@generic@add\calc@addAtoB}
+\def\calc@subtract{\calc@generic@add\calc@subtractAfromB}
+\def\calc@generic@add#1{\endgroup\global\calc@A\calc@B\endgroup
+ \begingroup\aftergroup#1\begingroup\aftergroup\calc@initB
+ \calc@pre@scan}
+\def\calc@addAtoB{\advance\calc@B\calc@A}
+\def\calc@subtractAfromB{\advance\calc@B-\calc@A}
+\def\calc@multiplyx#1{\def\calc@tmp{#1}%
+ \ifx\calc@tmp\calc@ratio@x \let\calc@next\calc@ratio@multiply \else
+ \ifx\calc@tmp\calc@real@x \let\calc@next\calc@real@multiply \else
+ \let\calc@next\calc@multiply
+ \fi
+ \fi
+ \calc@next#1}
+\def\calc@dividex#1{\def\calc@tmp{#1}%
+ \ifx\calc@tmp\calc@ratio@x \let\calc@next\calc@ratio@divide \else
+ \ifx\calc@tmp\calc@real@x \let\calc@next\calc@real@divide \else
+ \let\calc@next\calc@divide
+ \fi
+ \fi
+ \calc@next#1}
+\def\calc@ratio@x{\ratio}
+\def\calc@real@x{\real}
+\def\calc@multiply{\calc@generic@multiply\calc@multiplyBbyA}
+\def\calc@divide{\calc@generic@multiply\calc@divideBbyA}
+\def\calc@generic@multiply#1{\endgroup\begingroup
+ \let\calc@A\calc@Acount \let\calc@B\calc@Bcount
+ \aftergroup#1\calc@pre@scan}
+\def\calc@multiplyBbyA{\multiply\calc@B\calc@Acount}
+\def\calc@divideBbyA{\divide\calc@B\calc@Acount}
+\def\calc@close
+ {\endgroup\global\calc@A\calc@B
+ \endgroup\global\calc@A\calc@B
+ \calc@post@scan}
+\def\calc@ratio@multiply\ratio{\calc@ratio@evaluate}
+\def\calc@ratio@divide\ratio#1#2{\calc@ratio@evaluate{#2}{#1}}
+\let\calc@numerator=\calc@Bcount
+\newcount\calc@denominator
+\def\calc@ratio@evaluate#1#2{%
+ \endgroup\begingroup
+ \calc@assign@dimen\calc@numerator{#1}%
+ \calc@assign@dimen\calc@denominator{#2}%
+ \gdef\calc@the@ratio{}%
+ \ifnum\calc@numerator<0 \calc@numerator-\calc@numerator
+ \gdef\calc@the@ratio{-}%
+ \fi
+ \ifnum\calc@denominator<0 \calc@denominator-\calc@denominator
+ \xdef\calc@the@ratio{\calc@the@ratio-}%
+ \fi
+ \calc@Acount\calc@numerator
+ \divide\calc@Acount\calc@denominator
+ \xdef\calc@the@ratio{\calc@the@ratio\number\calc@Acount.}%
+ \calc@next@digit \calc@next@digit \calc@next@digit
+ \calc@next@digit \calc@next@digit \calc@next@digit
+ \endgroup
+ \calc@multiply@by@real\calc@the@ratio
+ \begingroup
+ \calc@post@scan}
+\def\calc@next@digit{%
+ \multiply\calc@Acount\calc@denominator
+ \advance\calc@numerator -\calc@Acount
+ \multiply\calc@numerator 10
+ \calc@Acount\calc@numerator
+ \divide\calc@Acount\calc@denominator
+ \xdef\calc@the@ratio{\calc@the@ratio\number\calc@Acount}}
+\def\calc@multiply@by@real#1{\calc@Bdimen #1\calc@B \calc@B\calc@Bdimen}
+\def\calc@real@multiply\real#1{\endgroup
+ \calc@multiply@by@real{#1}\begingroup
+ \calc@post@scan}
+\def\calc@real@divide\real#1{\calc@ratio@evaluate{1pt}{#1pt}}
+\def\calc@error#1{%
+ \errhelp{Calc error: I expected to see one of: + - * / )}%
+ \errmessage{Invalid character `#1' in arithmetic expression}}
+\endinput
+%%
+%% End of file `calc.sty'.
diff --git a/usergrps/uktug/baskervi/6_2/spqr/changes.tex b/usergrps/uktug/baskervi/6_2/spqr/changes.tex
new file mode 100644
index 0000000000..ceb73d350a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/changes.tex
@@ -0,0 +1,147 @@
+%% BEGIN changes.tex
+%%
+%% Changes listing for PSTricks.
+%% Run with LaTeX, with or without the NFSS.
+%%
+%% Change these for a4 paper:
+\def\paperwidth{8.5in}
+\def\paperheight{11in}
+
+\def\FileVersion{0.94-Beta}
+\def\FileDate{April 16, 1993}
+
+\documentstyle[12pt,fancybox]{article}
+
+%% PAGE PARAMETERS
+
+% Paragraphs are marked by large space rather than indentation:
+\parindent 0pt
+\parskip 6pt plus 1pt minus 1pt
+
+% No headers, 1in top margin
+\topmargin 0pt
+\headheight 0pt
+\headsep 0pt
+
+% Total bottom margin 1in, text height 9in
+\textheight 9in
+\footskip .625in
+
+% Now adjust for different paper size:
+\newdimen\mydim
+\mydim=\paperwidth
+\advance\mydim-8.5in
+\divide\mydim 2
+\advance\oddsidemargin \mydim
+\advance\evensidemargin \mydim
+\mydim=\paperheight
+\advance\mydim-11in
+\divide\mydim 2
+\advance\topmargin \mydim
+
+%% OTHER
+
+\renewcommand{\EveryVerbatimLine}[2]{}
+
+% Short meta (works in verbatim. Can't use < for other purposes.
+\catcode`\<=13 \def<#1>{{\rm\it #1\/}} % <meta> (works in verbatim)
+
+% Short verbatim.
+\catcode`\"=13
+\def"{\verb"}
+
+\catcode`\@=12 % In case I'm using AmS-LaTeX
+
+\begin{document}
+
+\begin{center}
+{\large\bf Changes listing for PSTricks}\\[6pt]
+ Version \FileVersion\\
+ \FileDate\\[6pt]
+ Timothy Van Zandt\\
+ tvz@Princeton.EDU
+\end{center}
+
+ The PSTricks package is still preliminary. The features list
+ and user interface are unlikely to change much in the short term, but
+ the internal code is not stable.
+
+\section{VERSION 0.94 (Beta)}
+
+\subsection{Incompatible changes}
+
+ \begin{enumerate}
+
+ \item "\Rnode" uses the graphics parameters "href" and "vref" to set the
+reference point, rather than having a coordinate argument.
+
+ \end{enumerate}
+
+\subsection{New features}
+
+ \begin{enumerate}
+
+ \item New graphics objects: "\pstriangle", "\psdiamond", "\psdot".
+
+ \item New box frames: "\pstribox", "\psdiabox".
+
+ \item New nodes: "\dotnode", "\dianode", "trinode".
+
+ \item Tree macros!
+
+ \item "\psmatrix": Good for math diagrams and graphs.
+
+ \item Negative nodesep and offset measure distance from center of node.
+
+ \item New node connections: "\ncbox", "\ncarcbox".
+
+ \item New node label puts: "\ncput", "\naput", "\nbput". (These replace
+"\lput", "\mput", "\aput", "\Aput", "\bput" and "\Bput", which are still
+supported.)
+
+ \item New node label puts (especially good for trees): "\thput", "\tvput",
+"\tlput", "\trput", "\taput", "\tbput". (Make "\ncline" obsolete, but this is
+still supported.)
+
+ \item "\nput", for attaching labels to nodes.
+
+ \item New arrow styles: {\catcode`\<=12 "|<->|" and "|<*->|*"}.
+
+ \item New dot styles: "diamond", "diamond*", "oplus", "ominus", "x",
+"asterisk".
+
+ \end{enumerate}
+
+\subsection{Obsolete but supported features}
+
+ \begin{enumerate}
+
+ \item "\lput", "\mput", "\aput", "\Aput", "\bput" and "\Bput".
+
+ \item "\ncline".
+
+ \end{enumerate}
+\subsection{Bug fixes}
+
+ \begin{enumerate}
+
+ \item Fixed "\ncangle" so that it would work properly with non-right angle
+values of "angleA" and "angleB".
+
+ \end{enumerate}
+
+
+\subsection{Other changes}
+
+ \begin{enumerate}
+
+ \item "\OldPsput" and "\NewPsput" are back in "pstricks.tex".
+
+ \item The <num> in "arrowsize=<dim num>", "tbarsize=<dim num>", and
+"dotsize=<dim num>" is optional (default=0).
+
+ \end{enumerate}
+
+
+\end{document}
+%% END changes.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/charpath.sty b/usergrps/uktug/baskervi/6_2/spqr/charpath.sty
new file mode 100644
index 0000000000..5d8be8ac99
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/charpath.sty
@@ -0,0 +1,4 @@
+%% BEGIN: charpath.sty
+\input charpath.tex
+\endinput
+%% END: charpath.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/charpath.tex b/usergrps/uktug/baskervi/6_2/spqr/charpath.tex
new file mode 100644
index 0000000000..8e096c5690
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/charpath.tex
@@ -0,0 +1,79 @@
+%% BEGIN charpath.tex/charpath.sty
+%%
+%% For stroking and filling characters with PSTricks' line and fill styles.
+%%
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.tex or pstricks.doc for copying restrictions.
+%%
+%% See the PSTricks User's Guide for description.
+%% See chartest.tex for sample input.
+%% See chartest.ps for sample output.
+%%
+
+\message{ v\fileversion, \filedate}
+
+\csname PSTcharpathLoaded\endcsname
+\let\PSTcharpathLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex}
+ \expandafter\next
+\fi
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+\def\tx@CharPathShow{%
+ /tx@CharPathSavedShow /show load def
+ /show {
+ % These 3 lines check whether charpath yields anything interesting.
+ dup gsave newpath 0 0 moveto
+ true charpath pathbbox grestore
+ 3 -1 roll eq 3 1 roll eq and
+ % If not, just use show.
+ { tx@CharPathSavedShow }
+ % Otherwise, use charpath.
+ { true charpath }
+ ifelse }
+ def }
+
+\def\pscharpath{\def\pst@par{}\pst@object{pscharpath}}
+\def\pscharpath@i{\pst@makebox\pscharpath@ii}
+\def\pscharpath@ii{%
+ \leavevmode\hbox{%
+ \pstVerb{\tx@CharPathShow}%
+ \box\pst@hbox
+ \pstVerb{/show /tx@CharPathSavedShow load def}%
+ \begin@ClosedObj
+ \def\pst@linetype{1}%
+ \psdashadjustfalse
+ \showpointsfalse
+ \let\pst@newpath\@empty
+ \def\use@pscode{%
+ \pst@Verb{%
+ gsave
+ \tx@STV
+ \pst@code
+ grestore
+ \if@star\else CP newpath moveto \fi}}%
+ \end@ClosedObj}}
+
+\def\pscharclip{\def\pst@par{}\pst@object{pscharclip}}
+\def\pscharclip@i{\pst@makebox\pscharclip@ii}
+\def\pscharclip@ii{%
+ \leavevmode
+ \begingroup
+ \begin@psclip
+ {\@startrue\pscharpath@ii}%
+ \pstVerb{clip \if@star\else currentpoint newpath moveto\fi}%
+ \def\endpscharclip{\end@psclip\endgroup}%
+ \ignorespaces}
+\def\endpscharclip{\pst@misplaced\endpscharclip}
+
+\catcode`\@=\TheAtCode\relax
+
+\endinput
+%% END charpath.tex/charpath.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/colortab.sty b/usergrps/uktug/baskervi/6_2/spqr/colortab.sty
new file mode 100644
index 0000000000..b80a83ba85
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/colortab.sty
@@ -0,0 +1,4 @@
+%% BEGIn colortab.sty
+\input colortab.tex
+\endinput
+%% END colortab.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/colortab.tex b/usergrps/uktug/baskervi/6_2/spqr/colortab.tex
new file mode 100644
index 0000000000..8dd218e874
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/colortab.tex
@@ -0,0 +1,220 @@
+%% BEGIN colortab.tex/colortab.sty
+%%
+\def\fileversion{0.9}
+\def\filedate{93/01/11}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% DESCRIPTION:
+%% colortab.tex/colortab.sty lets you shade or color the cells in a
+%% alignment environments (e.g., \halign and \LaTeX's tabular and
+%% array environments). It is compatible with most TeX macro packages,
+%% including Plain TeX, LaTeX, AmSTeX, and Ams-LaTeX. You must be
+%% use in conjunction with other color commands.
+%%
+%% INSTALLATION:
+%% Put this file where your TeX looks for inputs, under the name
+%% colortab.tex. Name a copy colortab.sty to use as a LaTeX style option,
+%% or create a file colortab.sty with the lines:
+%% \input colortab.tex
+%% \endinput
+%%
+%% DOCUMENTATION:
+%% See colortab.doc, which might be appended to this file.
+%%
+%% COPYING:
+%% Copying of part or all of this file is allowed under the following
+%% conditions only:
+%% (1) You may freely distribute unchanged copies of the file. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of the file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the file, for personal use or for
+%% distribution, as long as credit is given where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% this file or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+%% CODE:
+%
+% colortab.tex uses TeX primitives, plus the Plain TeX commands:
+% \newcount, \newtoks, \newbox, \newif and \z@.
+%
+% The LaTeX specific macros also use some LaTeX commands.
+%
+\csname ColortabLoaded\endcsname
+\let\ColortabLoaded\endinput
+%
+\message{\space\space v\fileversion\space\space\filedate\space\space <tvz>}
+\edef\TheAtCode{\the\catcode`\@}\catcode`\@=11
+%
+% These scratch registers are set globally:
+%
+\newcount\CT@cnt
+\newdimen\CT@dim
+\newbox\CT@box
+%
+% This flag is used to shut off colortab:
+%
+\newif\ifcolortab
+\colortabtrue
+%
+% To color row cells of unknown height we first have to put the rows in an
+% alignment and measure the resulting height, then put down a row of blobs
+% (with \hrule, and then move back up the page.
+%
+% For TeX's \halign primitive, \coloralign saves the preamble in the token
+% register \CT@preamble. This is used to calculate the height of the columns
+% that are to be colored in.
+%
+\newtoks\CT@preamble
+\def\coloralign{%
+ \afterassignment\coloralign@
+ \setbox\CT@box=\hbox}
+\def\coloralign@#1\cr{%
+ \egroup
+ \CT@preamble{\halign\bgroup#1\cr}%
+ \the\CT@preamble}
+%
+% \CC reads the next row, which should contain the color commands, and then
+% the rows to be colored. The height of the latter rows is calculated, and
+% then the row of colors is processed. \CT@columncolor uses \leaders to get
+% each color to fill the column horizontally, and it uses the previously
+% calculated height to fill the columns vertically.
+% \begin{macrocode}
+\def\CT@columncolor{%
+ \ifx\next\@nil
+ \def\next##1&\@nil{\gdef\CT@next{##1}}%
+ \expandafter\next\CT@next\@nil
+ \def\CT@temp\@nil{}%
+ \else
+ \ifx\next\CT@space
+ \def\CT@temp{%
+ \def\next{\futurelet\next\CT@columncolor}%
+ \afterassignment\next\let\CT@temp= }%
+ \else
+ \def\CT@temp{\CT@@columncolor}%
+ \fi
+ \fi
+ \CT@temp}
+\def\CT@@columncolor#1&{%
+ \ifx\next&%
+ \expandafter\gdef\expandafter\CT@next\expandafter{\CT@next\omit{}&}%
+ \else
+ \expandafter\gdef\expandafter\CT@next\expandafter{\CT@next
+ \omit{{\ignorespaces#1{\leaders\hrule height\CT@dim\hfil}}}&}%
+ \fi
+ \futurelet\next\CT@columncolor}
+{\def\\{\global\let\CT@space= }\\ }
+\def\CC@#1#2#3{%
+ \ifcolortab
+ \noalign{%
+ \setbox\CT@box=\vbox{#1#3\crcr\egroup}%
+ \CT@dim=\ht\CT@box
+ \global\advance\CT@dim by \dp\CT@box
+ \def\CT@next{}%
+ \futurelet\next\CT@columncolor#2&\@nil}%
+ \CT@next\cr
+ \noalign{\vskip-\CT@dim}%
+ \fi
+ #3}
+\def\CC#1\cr#2\ECC{\CC@{\the\CT@preamble}{#1}{#2}}
+%
+% With \LaTeX's alignment macros, the preamble is saved for us in \@preamble.
+% Otherwise, \LCC is the same as \CC.
+%
+\def\LCC#1\\#2\ECC{\CC@{\@preamble}{#1}{#2}}
+%
+% This unaligned color stuff only works with PSTricks:
+%
+\def\AC#1{\pstVerb{\pst@usecolor{#1}}}
+\def\EAC{\pstVerb{\pst@currentcolor}}
+\def\NAC#1{\noalign{\AC{#1}}}
+\def\ENAC{\noalign{\EAC}}
+%
+\def\SP{\noalign{\global\let\CT@savedpreamble\@preamble}}
+\def\RP{\noalign{\global\let\@preamble\CT@savedpreamble}}
+%
+\newcount\CT@LCnum
+\def\LColors#1\\{%
+ \noalign{%
+ \ifnum\CT@LCinitflag=\c@LT@tables\else\CT@LCinit\fi
+ \ifnum\CT@LCflag=\z@
+ \global\CT@LCnum 1
+ \CT@LColors#1&\@nil
+ \global\CT@LCnum\CT@LCmax
+ \fi}}
+\def\CT@LColors#1&{%
+ \global\@namedef{LColor@\the\CT@LCnum}{#1}%
+ \@ifnextchar\@nil{\@gobble}{%
+ \global\advance\CT@LCnum 1
+ \CT@LColors}}
+\def\CT@LCinit{%
+ \ifcolortab
+ \@ifundefined{LT@\romannumeral\c@LT@tables}%
+ {\gdef\CT@LCflag{1}}{\gdef\CT@LCflag{\z@}}%
+ \else
+ \gdef{CT@LCflag{1}}%
+ \fi
+ \ifnum\CT@LCflag=\z@
+ \begingroup
+ \def\omit\kern##1&{%
+ \advance\CT@LCnum 1
+ \CT@dim=##1\relax
+ \expandafter\xdef\csname LCdim@\the\CT@LCnum\endcsname{%
+ \number\CT@dim sp}}%
+ \CT@LCnum\z@
+ \@nameuse{LT@\romannumeral\c@LT@tables}&%
+ \xdef\CT@LCmax{\the\CT@LCnum}%
+ \endgroup
+ \fi
+ \xdef\CT@LCinitflag{\the\c@LT@tables}}
+\def\CT@LCinitflag{\z@}
+\def\LC@Cell{%
+ \kern-\@tempdima
+ \ifnum\CT@LCflag=\z@
+ \ifnum\CT@LCnum=\CT@LCmax\relax
+ \global\CT@LCnum 1
+ \else
+ \global\advance\CT@LCnum 1
+ \fi
+ \CT@dim=\@nameuse{LCdim@\the\CT@LCnum}\relax
+ \advance\CT@dim-\@tempdimb
+ \expandafter\ifx\csname LColor@\the\CT@LCnum\endcsname\@empty\else
+ \begingroup
+ \@nameuse{LColor@\the\CT@LCnum}{%
+ \vrule width\CT@dim}%
+ \endgroup
+ \kern-\CT@dim
+ \fi
+ \fi}
+\def\LC{\@tempdima=\z@\@tempdimb=\z@\LC@Cell}
+\def\LCi{\LCi@\LC@Cell}
+\def\LCi@{%
+ \@tempdima=\doublerulesep
+ \ifnum\CT@LCflag=\z@
+ \ifnum\CT@LCnum=\CT@LCmax\relax
+ \@tempdimb=\arrayrulewidth
+ \else
+ \@tempdimb=\z@
+ \fi
+ \fi}
+\def\LCii{%
+ \@tempdima=\z@
+ \@tempdimb=\doublerulesep
+ \advance\@tempdimb=\arrayrulewidth
+ \LC@Cell}
+\def\LCiii{%
+ \LCi@
+ \advance\@tempdimb\doublerulesep
+ \advance\@tempdimb\arrayrulewidth
+ \LC@Cell}
+\def\LCz#1#2{%
+ \@tempdima=#1
+ \@tempdimb=#2
+ \LC@Cell}
+%
+\catcode`\@=\TheAtCode\relax
+\endinput
+%% END colortab.tex/colortab.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/defaults.pst b/usergrps/uktug/baskervi/6_2/spqr/defaults.pst
new file mode 100644
index 0000000000..95718537a3
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/defaults.pst
@@ -0,0 +1,103 @@
+%% defaults.pst
+%% Created with unix csh commands:
+%% grep ^.psset\@ pstricks.doc > defaults.pst
+%% grep ^.psset\@ pst-node.doc >> defaults.pst
+%% grep ^.psset\@ gradient.tex >> defaults.pst
+%% grep ^.psset\@ pst-coil.doc >> defaults.pst
+%% grep ^.psset\@ pst2eps.tex >> defaults.pst
+%% grep ^.psset\@ pst-plot.tex >> defaults.pst
+%% Input by pst-user.tex
+\psset@swapaxes{false}
+\psset@showpoints{false}
+\psset@border{0pt}
+\psset@bordercolor{white}
+\psset@doubleline{false}
+\psset@doublesep{1.25\pslinewidth}
+\psset@doublecolor{white}
+\psset@shadow{false}
+\psset@shadowsize{3pt}
+\psset@shadowangle{-45}
+\psset@shadowcolor{darkgray}
+\psset@linewidth{.8pt}
+\psset@linecolor{black}
+\psset@dash{5pt 3pt}
+\psset@dotsep{3pt}
+\psset@linestyle{solid}
+\psset@fillcolor{white}
+\psset@hatchwidth{.8pt}
+\psset@hatchsep{4pt}
+\psset@hatchcolor{black}
+\psset@hatchangle{45}
+\psset@fillstyle{none}
+\psset@arrowscale{1}
+\psset@arrowsize{2pt 3}
+\psset@arrowlength{1.4}
+\psset@arrowinset{.4}
+\psset@tbarsize{2pt 5}
+\psset@bracketlength{.15}
+\psset@rbracketlength{.15}
+\psset@arrows{-}
+\psset@liftpen{0}
+\psset@linetype{0}
+\psset@dotstyle{*}
+\psset@curvature{1 .1 0}
+\psset@dotsize{.5pt 2.5}
+\psset@dotscale{1}
+\psset@dotangle{0}
+\psset@linearc{0pt}
+\psset@framearc{0}
+\psset@cornersize{relative}
+\psset@dimen{outer}
+\psset@gridwidth{.8pt}
+\psset@griddots{0}
+\psset@gridcolor{black}
+\psset@subgridwidth{.4pt}
+\psset@subgridcolor{gray}
+\psset@subgriddots{0}
+\psset@subgriddiv{5}
+\psset@gridlabels{10pt}
+\psset@gridlabelcolor{black}
+\psset@framesep{3pt}
+\psset@boxsep{true}
+\psset@arcsep{0}
+\psset@labelsep{5pt}
+\psset@nodesep{0}
+\psset@offset{0}
+\psset@arm{10pt}
+\psset@angle{0}
+\psset@arcangle{8}
+\psset@ncurv{.67}
+\psset@loopsize{1cm}
+\psset@gradbegin{gradbegin}
+\psset@gradend{gradend}
+\psset@gradlines{500}
+\psset@gradmidpoint{.9}
+\psset@gradangle{0}
+\psset@coilwidth{1cm}
+\psset@coilheight{1}
+\psset@coilarm{.5cm}
+\psset@coilaspect{45}
+\psset@coilinc{10}
+\psset@bbllx{-1pt}
+\psset@bblly{-1pt}
+\psset@bburx{1pt}
+\psset@bbury{1pt}
+\psset@headers{none}
+\psset@checkfile{true}
+\psset@makeeps{new}
+\psset@headerfile{}
+\psset@plotstyle{line}
+\psset@plotpoints{50}
+\psset@ticksize{3pt}
+\psset@tickstyle{full}
+\psset@ticks{all}
+\psset@labels{all}
+\psset@Ox{0}
+\psset@Dx{1}
+\psset@dx{0}
+\psset@Oy{0}
+\psset@Dy{1}
+\psset@dy{0}
+\psset@showorigin{true}
+\psset@axesstyle{axes}
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/spqr/fancybox.sty b/usergrps/uktug/baskervi/6_2/spqr/fancybox.sty
new file mode 100644
index 0000000000..eb823ed143
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/fancybox.sty
@@ -0,0 +1,949 @@
+%% BEGIN fancybox.sty
+%%
+\def\fileversion{1.0}
+\def\filedate{93/02/10}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% DESCRIPTION:
+%% fancybox.sty is a LaTeX style option, consisting of:
+%% * Variants of \fbox: \shadowbox, \doublebox, \ovalbox, \Ovalbox.
+%% * Helpful tools for using box macros.
+%% * Extensive documentation about how to use box macros.
+%% * Flexible verbatim macros.
+%%
+%% INSTALLATION:
+%% Put this file where your TeX looks for inputs.
+%%
+%% DOCUMENTATION:
+%% See fancybox.doc, which might be appended to this file.
+%%
+%% COPYING:
+%% Copying of part or all of this file is allowed under the following
+%% conditions only:
+%% (1) You may freely distribute unchanged copies of the file. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of the file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the file, for personal use or for
+%% distribution, as long as credit is given where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% this file or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+%% CODE:
+\expandafter\ifx\csname fb@framepage\endcsname\relax\else
+ \expandafter\endinput
+\fi
+\typeout{Style option: `fancybox' v\fileversion \space <\filedate> (tvz)}
+
+\newbox\@fancybox
+\@ifundefined{@tempdimc}{\newdimen\@tempdimc}{}
+
+%% \shadowbox
+
+\newdimen\shadowsize
+\shadowsize 4pt
+
+\def\shadowbox{\VerbBox\@shadowbox}
+\def\@shadowbox#1{%
+ \setbox\@fancybox\hbox{\fbox{#1}}%
+ \leavevmode\vbox{%
+ \offinterlineskip
+ \dimen@=\shadowsize
+ \advance\dimen@ .5\fboxrule
+ \hbox{\copy\@fancybox\kern-.5\fboxrule\lower\shadowsize\hbox{%
+ \vrule \@height\ht\@fancybox \@depth\dp\@fancybox \@width\dimen@}}%
+ \vskip-\dimen@
+ \moveright\shadowsize\vbox{%
+ \hrule \@width\wd\@fancybox \@height\dimen@}}}
+
+% \fancyoval
+
+\def\cornersize{\@ifstar{\@cornersize}{\@@cornersize}}
+\def\@cornersize#1{%
+ \@tempdima=#1\relax
+ \edef\the@cornersize{\number\@tempdima sp}}
+\def\@@cornersize#1{%
+ \edef\the@cornersize{#1\noexpand\@tempdimb}}
+\cornersize{.5}
+
+% This is just a simple change to \oval, making use of the \cornersize
+% parameter instead of making the corner arcs are large as possible.
+
+\def\fancyoval(#1,#2){\@ifnextchar[{\fancy@oval(#1,#2)}{\fancy@oval(#1,#2)[]}}
+
+\def\fancy@oval(#1,#2)[#3]{%
+ \begingroup
+ \fancy@@oval{#1\unitlength}{#2\unitlength}{#3}%
+ \@put{-.5\wd\@tempboxa}{-.5\ht\@tempboxa}{\ht\@tempboxa=\z@\box\@tempboxa}%
+ \endgroup}
+
+\def\fancy@@oval#1#2#3{%
+ \boxmaxdepth \maxdimen
+ \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
+ \@tfor\@tempa :=#3\do{\csname @ov\@tempa false\endcsname}%
+ \@ovxx#1\relax
+ \advance\@ovxx-\@wholewidth
+ \@ovyy#2\relax
+ \advance\@ovyy-\@wholewidth
+ \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
+ \advance\@tempdimb-2\p@
+ \ifdim\@tempdimb>\the@cornersize\relax
+ \@tempdimb=\the@cornersize
+ \fi
+ \@getcirc\@tempdimb
+ \@ovro\ht\@tempboxa \@ovri\dp\@tempboxa
+ \@ovdx\@ovxx \advance\@ovdx-\@tempdima \divide\@ovdx \tw@
+ \@ovdy\@ovyy \advance\@ovdy-\@tempdima \divide\@ovdy \tw@
+ \@circlefnt
+ \setbox\@tempboxa\hbox{%
+ \if@ovr \@ovvert32\kern -\@tempdima \fi
+ \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
+ \if@ovt \@ovhorz \kern -\@ovxx \fi
+ \if@ovb \raise \@ovyy \@ovhorz \fi}%
+ \advance\@ovdx\@ovro
+ \advance\@ovdy\@ovro
+ \advance\@ovxx\@wholewidth
+ \wd\@tempboxa=\@ovxx
+ \dp\@tempboxa=\z@}
+
+% \ovalbox
+
+\def\ovalbox{\VerbBox{\@ovalbox\thinlines}}
+\def\Ovalbox{\VerbBox{\@ovalbox\thicklines}}
+\def\@ovalbox#1#2{%
+ \begingroup
+ #1\relax
+ \setbox\@fancybox\hbox{{#2}}%
+ \@tempdimc\fboxsep \advance\@tempdimc\@wholewidth
+ \@tempdima\ht\@fancybox \advance\@tempdima\dp\@fancybox
+ \advance\@tempdima2\@tempdimc
+ \@tempdimb\wd\@fancybox \advance\@tempdimb2\@tempdimc
+ \fancy@@oval\@tempdimb\@tempdima{}%
+ \@tempdima\dp\@fancybox \advance\@tempdima\@tempdimc
+ \wd\@tempboxa=\z@
+ \leavevmode\hbox{%
+ \lower\@tempdima\box\@tempboxa
+ \kern\@tempdimc\box\@fancybox\kern\@tempdimc}%
+ \endgroup}
+
+% \doublebox
+
+\def\doublebox{\VerbBox\@doublebox}
+\def\@doublebox#1{%
+ \begingroup
+ \setbox\@fancybox\hbox{{#1}}%
+ \fboxrule=.75\fboxrule
+ \setbox\@fancybox\hbox{\fbox{\box\@fancybox}}%
+ \fboxrule=2\fboxrule
+ \fboxsep=\fboxrule
+ \advance\fboxsep .5pt
+ \fbox{\box\@fancybox}%
+ \endgroup}
+
+% Frames for seminar.sty:
+
+\@ifundefined{newslideframe}{}{%
+ \newslideframe{shadow}{\shadowbox{#1}}
+ \newslideframe{double}{\doublebox{#1}}
+ \newslideframe{oval}{\ovalbox{#1}}
+ \newslideframe{Oval}{\Ovalbox{#1}}}
+
+% Sbox environment
+
+\newbox\@Sbox
+
+\def\Sbox{\global\setbox\@Sbox\hbox\bgroup\ignorespaces}
+
+\def\endSbox{%
+ \@testtrue\ifhmode\ifinner\@testfalse\fi\fi
+ \if@test\@latexerr{Misplaced \string\endSbox! Should be in LR mode}\@ehd\fi
+ \egroup}
+
+\def\TheSbox{%
+ \ifvoid\@Sbox
+ \@latexerr{\string\TheSbox\space is empty!}\@ehd
+ \else
+ \box\@Sbox
+ \fi}
+
+\def\beginsbox#1{\setbox#1\hbox\bgroup\ignorespaces}
+
+\def\endsbox{\endSbox}
+
+% \VerbBox
+
+\newtoks\do@VerbBox
+
+\def\VerbBox#1{%
+ \do@VerbBox{#1}%
+ \afterassignment\begin@VerbBox
+ \setbox\@fancybox=\hbox}
+\def\begin@VerbBox{\aftergroup\end@VerbBox}
+\def\end@VerbBox{\the\do@VerbBox{\box\@fancybox}}%
+
+% \Btrivlist
+
+\def\@Blistrestore{%
+ \let\par\relax
+ \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
+ \lineskip\normallineskip \baselineskip\normalbaselineskip}
+
+\def\Btrivlist#1{\@ifnextchar[{\@Btrivlist{#1}}{\@Btrivlist{#1}[]}}
+\def\@Btrivlist#1[#2]{%
+ \@Blistrestore
+ \let\\=\@Btrivlistcr
+ \fb@beginvbox{#2}%
+ \halign\bgroup
+ \if#1l\else\@empty\hfil\fi
+ \ignorespaces##\unskip
+ \if#1r\@empty\else\hfil\fi\cr}
+\def\endBtrivlist{\crcr\egroup\egroup\if@pboxsw$\fi}
+
+\def\fb@beginvbox#1{%
+ \leavevmode
+ \@pboxswfalse
+ \if#1b\@empty\vbox\else\if#1t\@empty\vtop\else
+ \ifmmode\vcenter\else\@pboxswtrue$\vcenter\fi
+ \fi\fi\bgroup}
+
+\def\@Btrivlistcr{\@ifstar
+ {\@ifnextchar[{@@Btrivlistcr}{\cr}}{\@ifnextchar[{\@@Btrivlistcr}{\cr}}}
+\def\@@Btrivlistcr[#1]{\cr\noalign{\vskip #1}}
+
+\def\Bcenter{\Btrivlist{c}}
+\def\endBcenter{\endBtrivlist}
+
+\def\Bflushleft{\Btrivlist{l}}
+\def\endBflushleft{\endBtrivlist}
+
+\def\Bflushright{\Btrivlist{r}}
+\def\endBflushright{\endBtrivlist}
+
+% \Blist
+
+\def\Blist#1#2{\@ifnextchar[{\@Blist{#1}{#2}}{\@Blist{#1}{#2}[]}}
+
+\def\@Blist#1#2[#3]{%
+ \ifnum\@listdepth>5
+ \@toodeep
+ \else
+ \global\advance\@listdepth\@ne
+ \fi
+ \itemindent\z@
+ \csname @list\romannumeral\the\@listdepth\endcsname
+ \def\@itemlabel{#1}%
+ \let\makelabel\@mklab
+ \@nmbrlistfalse
+ \@Blistrestore
+ \let\\=\@Blistcr
+ \let\item\Bitem
+ \@Bitemswfalse
+ #2\relax
+ \fb@beginvbox{#3}%
+ \halign\bgroup
+ \ignorespaces##&\hskip\labelsep\ignorespaces##\unskip\hfil\cr}
+
+\def\endBlist{\endBtrivlist\global\advance\@listdepth\m@ne}
+
+\newif\if@Bitemsw
+
+\def\Bitem{\@ifnextchar({\@Bitemcr\Bitem@skip}{\@Bitemcr\@Bitem}}
+
+\def\@Bitemcr{%
+ \if@Bitemsw
+ \def\next{\cr\noalign{\vskip\itemsep}}%
+ \else
+ \def\next{\global\@Bitemswtrue}%
+ \fi
+ \next}
+
+\def\Bitem@skip(#1){\noalign{\vskip #1}\@Bitem}
+
+\def\@Bitem{\@ifnextchar[{\Bitem@label}{\Bitem@nolabel}}
+
+\def\Bitem@label[#1]{\makelabel{#1}&}
+
+\def\Bitem@nolabel{%
+ \if@nmbrlist
+ \expandafter\advance\csname c@\@listctr\endcsname1 \fi
+ \makelabel{\@itemlabel}%
+ &%
+ \if@nmbrlist\refstepcounter{\@listctr}\fi}
+
+\def\@Blistcr{\@ifstar
+ {\@ifnextchar[{@@Blistcr}{\cr&}}{\@ifnextchar[{\@@Blistcr}{\cr&}}}
+
+\def\@@Blistcr[#1]{\cr\noalign{\vskip #1}&}
+
+% \Bitemize
+
+\def\Bitemize{%
+ \ifnum\@itemdepth>3
+ \@toodeep
+ \else
+ \advance\@itemdepth\@ne
+ \fi
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \Blist{\csname\@itemitem\endcsname}{\def\makelabel####1{\hfil####1}}}
+\def\endBitemize{\endBlist}
+
+% \Bdescription
+
+\def\Bdescription{\Blist{}{\def\makelabel####1{\bf####1\hfil}}}
+\def\endBdescription{\endBlist}
+
+% \Benumerate
+
+\def\Benumerate{%
+ \ifnum\@enumdepth>3
+ \@toodeep
+ \else
+ \advance\@enumdepth\@ne
+ \fi
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \Blist{\csname label\@enumctr\endcsname}%
+ {\usecounter{\@enumctr}\def\makelabel####1{\hfil####1}}}
+\def\endBenumerate{\endBlist}
+
+% Beqnarray
+
+\def\Beqnarray{%
+ \stepcounter{equation}%
+ \let\@currentlabel\theequation
+ \def\@eqnnum{{\csname reset@font\endcsname\rm (\theequation)}}%
+ \global\@eqnswtrue\m@th
+ \global\@eqcnt\z@
+ \tabskip\@centering
+ \let\\\@eqncr
+ \vbox\bgroup
+ \halign\bgroup
+ \@eqnsel
+ \hskip\@centering
+ $\displaystyle\tabskip\z@{##}$%
+ &\global\@eqcnt\@ne
+ \hskip 2\arraycolsep
+ \hfil${##}$\hfil
+ &\global\@eqcnt\tw@
+ \hskip 2\arraycolsep
+ $\displaystyle\tabskip\z@{##}$%
+ \hfil
+ \tabskip\@centering
+ &\if@eqnsw\hskip 1em\fi
+ \hfil{##}\tabskip\z@
+ \cr}
+
+\def\endBeqnarray{%
+ \@@eqncr
+ \egroup
+ \global\advance\c@equation\m@ne
+ \egroup
+ \global\@ignoretrue}
+
+\@namedef{Beqnarray*}{\def\@eqncr{\nonumber\@seqncr}\Beqnarray}
+\@namedef{endBeqnarray*}{\nonumber\endBeqnarray}
+
+% \fb@outputage
+
+% Here we insert various hooks for rotating or framing the page.
+% Otherwise, it is the usual \@outputpage
+
+\def\fb@outputpage{%
+ \begingroup
+ \catcode`\ =10
+ \let\-\@dischyph
+ \let\'\@acci
+ \let\`\@accii
+ \let\=\@acciii
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+ \if@twoside
+ \ifodd\count\z@
+ \let\@thehead\@oddhead
+ \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else
+ \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot
+ \let\@themargin\evensidemargin
+ \fi
+ \fi
+ \csname reset@font\endcsname
+ \normalsize
+ \baselineskip\z@
+ \lineskip\z@
+ \let\par\@@par
+ \ifx\this@fancypage\@empty\else
+ \this@fancypage
+ \gdef\this@fancypage{}%
+ \fi
+ \ifx\the@fancypage\@empty\else
+ \setbox\@outputbox\hbox{\the@fancypage{\box\@outputbox}}%
+ \fi
+ \ifx\fb@@rotatepage\@empty\else
+ \setbox\@outputbox\hbox{\fb@@rotatepage{\box\@outputbox}}%
+ \fi
+ \setbox\@outputbox\vbox{%
+ \@tempdima=\wd\@outputbox
+ \setbox\@tempboxa=\hbox to\@tempdima{%
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \@thehead}%
+ \ht\@tempboxa\headheight
+ \dp\@tempboxa\z@
+ \box\@tempboxa
+ \vskip\headsep
+ \box\@outputbox
+ \baselineskip\footskip
+ \hbox to\@tempdima{%
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \@thefoot}}
+ \ifx\the@@fancypage\@empty\else
+ \setbox\@outputbox\hbox{\the@@fancypage{\box\@outputbox}}%
+ \fi
+ \setbox\@outputbox\vbox{%
+ \ifnum\fancyput@flag>-1 \do@fancyput\fi
+ \vskip\topmargin
+ \moveright\@themargin\box\@outputbox}%
+ \ifx\fb@rotatepage\@empty\else
+ \setbox\@outputbox\hbox{\lower\ht\@outputbox\box\@outputbox}%
+ \dp\@outputbox\z@
+ \wd\@outputbox\z@
+ \setbox\@outputbox\hbox{\fb@rotatepage{\box\@outputbox}}%
+ \expandafter\fb@setoffsets\fb@theoffsets
+ \fi
+ \shipout\box\@outputbox
+ \global\@colht\textheight
+ \endgroup
+ \stepcounter{page}%
+ \let\firstmark\botmark}
+
+% \fancypage
+
+\def\the@fancypage{}
+\def\the@@fancypage{}
+\def\this@fancypage{}
+
+\def\fancypage#1#2{%
+ \def\the@fancypage{#1}%
+ \def\the@@fancypage{#2}%
+ \def\@outputpage{\fb@outputpage}}
+
+\def\thisfancypage#1#2{%
+ \gdef\@outputpage{\fb@outputpage}%
+ \gdef\this@fancypage{\def\the@fancypage{#1}\def\the@@fancypage{#2}}}
+
+% \fancyput
+
+% Token registers used to make it easier to put definitions in argument.
+% Boxes not processed until output so that contents can depend, e.g., on
+% current page or marks or whatever. This makes everything slightly more
+% complicated than one would expect.
+
+\newtoks\the@fancyput
+\newtoks\this@fancyput
+\def\fancyput@flag{-1}%
+
+% \fancyput@flag=-1 if no fancyput, 0 if regular fancyput, 1 if thisfancyput.
+
+\def\fancyput{%
+ \def\@outputpage{\fb@outputpage}
+ \@ifstar{\@testtrue\@fancyput}{\@testfalse\@fancyput}}
+\def\@fancyput{\@ifnextchar({\@@fancyput}{\@@fancyput(\z@,\z@)}}
+\def\@@fancyput(#1,#2)#3{%
+ \if@test
+ \expandafter\the@fancyput\expandafter{\the\the@fancyput\do{#1}{#2}{#3}}%
+ \else
+ \the@fancyput{\do{#1}{#2}{#3}}%
+ \fi
+ \gdef\fancyput@flag{\z@}}
+
+\def\thisfancyput{%
+ \gdef\@outputpage{\fb@outputpage}
+ \@ifstar{\@testtrue\@thisfancyput}{\@testfalse\@thisfancyput}}
+\def\@thisfancyput{\@ifnextchar({\@@thisfancyput}{\@@thisfancyput(\z@,\z@)}}
+\def\@@thisfancyput(#1,#2)#3{%
+ \if@test
+ \ifnum\fancyput@flag=\z@
+ \expandafter\global\expandafter\this@fancyput\expandafter{%
+ \the\this@fancyput\do{#1}{#2}{#3}}%
+ \else
+ \expandafter\global\expandafter\this@fancyput\expandafter{%
+ \the\the@fancyput\do{#1}{#2}{#3}}%
+ \fi
+ \else
+ \global\this@fancyput{\do{#1}{#2}{#3}}%
+ \fi
+ \gdef\fancyput@flag{1}}
+
+\def\do@fancyput{%
+ \def\do##1##2##3{\raise##2\hbox to\z@{\kern##1\relax##3\hss}}%
+ \setbox\@tempboxa=\hbox to\z@{%
+ \kern-\hoffset
+ \raise\voffset\hbox{%
+ \ifnum\fancyput@flag=\z@\the\the@fancyput\else\the\this@fancyput\fi}%
+ \hss}%
+ \ht\@tempboxa=\z@ \dp\@tempboxa=\z@
+ \box\@tempboxa
+ \gdef\fancyput@flag{\z@}%
+ \global\this@fancyput{}}
+
+% \Landscape
+
+\def\UsePageParameters{%
+ \clearpage
+ \global\@colht\textheight
+ \onecolumn}
+
+\def\fb@rotatepage{}
+
+\def\Landscape{\@ifstar{\@testtrue\@Landscape}{\@testfalse\@Landscape}}
+\def\@Landscape#1#2#3{%
+ \clearpage
+ \def\fb@rotatepage{#3}%
+ \def\@outputpage{\fb@outputpage}%
+ \@tempdima#1\relax
+ \@tempdimb#2\relax
+ \if@test
+ \edef\fb@theoffsets{{\voffset}{\hoffset}{\number\@tempdima sp}}%
+ \else
+ \edef\fb@theoffsets{{\hoffset}{\voffset}{\number\@tempdimb sp}}%
+ \fi
+ \advance\@tempdimb-\@tempdima
+ \advance\textwidth\@tempdimb
+ \advance\textheight-\@tempdimb
+ \UsePageParameters}
+\def\endLandscape{\clearpage\aftergroup\UsePageParameters}
+
+\def\fb@setoffsets#1#2#3{%
+ \@tempdima#1%
+ \advance#1#2%
+ #2#3
+ \advance#2-2in
+ \advance#2-\@tempdima}
+
+\@namedef{Landscape*}{\@testtrue\@Landscape}
+\@namedef{endLandscape*}{\endLandscape}
+
+% \LandScape
+
+\def\fb@@rotatepage{}
+
+\def\LandScape#1{%
+ \clearpage
+ \def\fb@@rotatepage{#1}%
+ \def\@outputpage{\fb@outputpage}%
+ \@tempdima\textheight
+ \textheight\textwidth
+ \textwidth\@tempdima
+ \UsePageParameters}
+\def\endLandScape{\clearpage\aftergroup\UsePageParameters}
+
+% \GenericCaption
+
+\def\GenericCaption#1{%
+ \par
+ \begingroup
+ \@parboxrestore
+ \normalsize
+ \vskip 10\p@
+ \setbox\@tempboxa\hbox{#1}%
+ \ifdim\wd\@tempboxa>\hsize
+ #1\par
+ \else
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \endgroup
+ \par}
+
+% \landfloat
+
+\def\landfloat#1#2{%
+ \gdef\curr@landfloat{#1}%
+ \gdef\float@rotation{#2}%
+ \begin{#1}[p]%
+ \setbox\@tempboxa\vbox\bgroup
+ \hsize\@colht
+ \@parboxrestore}
+\def\endlandfloat{%
+ \par\vskip\z@
+ \egroup
+ \setbox\@tempboxa\hbox{\float@rotation{\box\@tempboxa}}%
+ \centerline{\box\@tempboxa}%
+ \expandafter\end\expandafter{\curr@landfloat}}
+
+% \boxput
+
+\def\boxput{\@ifstar{\@testtrue\@boxput}{\@testfalse\@boxput}}
+\def\@boxput{\@ifnextchar({\@@boxput}{\@@boxput(0,0)}}
+\long\def\@@boxput(#1,#2)#3#4{%
+ \setbox\@fancybox\hbox{{#4}}%
+ \setbox\@tempboxa\vbox to\z@{\vss\hbox to\z@{\hss{#3}\hss}\vss}%
+ \@tempdima=#1\wd\@fancybox
+ \advance\@tempdima\wd\@fancybox
+ \divide\@tempdima 2
+ \ifcat a#2\relax
+ \@tempdimb=\z@
+ \else
+ \@tempdimb=.5\ht\@fancybox
+ \advance\@tempdimb.5\dp\@fancybox
+ \@tempdimc=\@tempdimb
+ \advance\@tempdimc-\dp\@fancybox
+ \@tempdimb=#2\@tempdimb
+ \advance\@tempdimb\@tempdimc
+ \fi
+ \setbox\@tempboxa\hbox to \z@{%
+ \if@test\kern-\wd\@fancybox\fi
+ \kern\@tempdima\raise\@tempdimb\box\@tempboxa\hss}%
+ \ht\@tempboxa=\z@ \dp\@tempboxa=\z@
+ \leavevmode
+ \if@test
+ \hbox{\box\@fancybox\box\@tempboxa}%
+ \else
+ \hbox{\box\@tempboxa\box\@fancybox}%
+ \fi}
+
+% \Vfootnotes
+
+\def\VerbatimFootnotes{\let\@footnotetext\V@footnotetext}
+
+\long\def\V@footnotetext{%
+ \afterassignment\V@@footnotetext
+ \let\@tempa}
+\def\V@@footnotetext{%
+ \insert\footins\bgroup
+ \csname reset@font\endcsname
+ \footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty \@MM
+ \hsize\columnwidth
+ \@parboxrestore
+ \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
+ \@makefntext{}%
+ \rule{\z@}{\footnotesep}%
+ \bgroup
+ \aftergroup\V@@@footnotetext
+ \ignorespaces}
+\def\V@@@footnotetext{\strut\egroup}
+
+% Verbatim
+
+% The main idea is to separate the reading and formatting of the
+% verbatim listing. It's pretty simple.
+
+\def\Verbatim@Codes{%
+ \let\do\@makeother
+ \dospecials
+ \Verbatim@ObeyThings
+ \ThisVerbCodes\relax\gdef\ThisVerbCodes{}}
+
+\def\EveryVerbatimCodes{}
+
+% \Verbatim is redefined temporarilly in \Get@Verbatim to scan the
+% verbatim text. \Verbatim is used so that error messages are more
+% enlightening. \next checks whether \Verbatim found its argument,
+% and attempts to recover if not.
+%
+% Heuristically, if current environment is `foo' and argument of
+% \Get@Verbatim is \The@Verbatim, then definition of \Verbatim is
+%
+% \def\Verbatim#1^^M#2^^M\the\EndVerbatimTokens\end{foo}{%
+% \xdef\The@Verbatim{\noexpand\Every@VerbatimLine#2}%
+% \endgroup\end{foo}}
+%
+% \The@Verbatim is then equal to the verbatim text, with spaces
+% replaced by \Verbatim@Space, tabs replaced by \Verbatim@Tab,
+% and ` replaced by \@lquote. In addition, each line begins with
+% \Every@VerbatimLine, and each line but the last ends with
+% \Verbatim@Par. It is then possible to redefine these when formatting
+% the verbatim text. To insert each line as an argument to \foo, use
+% \def\Every@VerbatimLine#1\Verbatim@Par{\foo{#1}}
+% \The@Verbatim\Verbatim@Par
+%
+\newtoks\EndVerbatimTokens
+\begingroup
+ \catcode`\|=0
+ \catcode`\[=1
+ \catcode`\]=2
+ \catcode`\{=12
+ \catcode`\}=12
+ \catcode`\^^M=13%
+ \catcode`\\=12%
+ |gdef|Get@Verbatim#1[%
+ |begingroup%
+ |Verbatim@Codes|EveryVerbatimCodes%
+ |let|protect|noexpand%
+ |VerbatimEnvironment%
+ |edef|next[|noexpand|def|noexpand|Verbatim####1|noexpand^^M####2%
+ |noexpand^^M|the|EndVerbatimTokens\end{|@VerbEnvir}]%
+ |edef|endVerbatim[|noexpand|endgroup|noexpand|end[|@VerbEnvir]]%
+ |global|let|@VerbEnvir|relax%
+ |next[|@nil|xdef#1[|noexpand|Every@VerbatimLine##2]|endVerbatim]%
+ |def|next[|@ifnextchar|@nil[|@gobble]% If \@nil is there, then
+ [|gdef#1[]|endVerbatim|end[document]]]% \Verbatim found its argument.
+ |expandafter|next|Verbatim]% Otherwise, try to recover.
+ |gdef|AltGet@Verbatim#1[%
+ |begingroup%
+ |Verbatim@Codes|EveryVerbatimCodes%
+ |def^^M##1^^M##2[%
+ |ifx|@nil##2|@empty|else%
+ |noexpand|Verbatim@Par|noexpand|Every@VerbatimLine##1%
+ |expandafter^^M|expandafter##2%
+ |fi]%
+ |let|protect|noexpand%
+ |VerbatimEnvironment%
+ |edef|next[|noexpand|def|noexpand|Verbatim####1|noexpand^^M####2%
+ \end{|@VerbEnvir}]%
+ |edef|endVerbatim[|noexpand|endgroup|noexpand|end[|@VerbEnvir]]%
+ |global|let|@VerbEnvir|relax%
+ |next[|@nil|xdef#1[|noexpand|Every@VerbatimLine##2^^M|@nil]|endVerbatim]%
+ |def|next[|@ifnextchar|@nil[|@gobble]%
+ [|gdef#1[]|endVerbatim|end[document]]]%
+ |expandafter|next|Verbatim]%
+|endgroup
+\def\AltGetVerbatim{\let\Get@Verbatim\AltGet@Verbatim}
+
+% It is enough to not use \begin or \end when defining new verbatim
+% environments, as the default is for \Get@Verbatim to look for the
+% end of the current environment, but using \VerbatimEnvironment
+% is easier to explain to users.
+
+\def\VerbatimEnvironment{%
+ \ifx\@VerbEnvir\relax\xdef\@VerbEnvir{\@currenvir}\fi}
+
+\let\@VerbEnvir\relax
+
+\def\The@VerbatimErr{%
+ \gdef\The@Verbatim{\@latexerr{Misplaced \string\end{Verbatim}}\@ehd}}
+\The@VerbatimErr
+
+\begingroup
+\catcode`\^^M=\active%
+\catcode`\ =\active%
+\catcode`\^^I=\active%
+\gdef\Verbatim@ObeyThings{%
+\catcode`\^^M=\active%
+\catcode`\ =\active%
+\catcode`\^^I=\active%
+\catcode``=\active%
+\def^^M{\noexpand\Verbatim@Par\noexpand\Every@VerbatimLine}%
+\def^^I{\noexpand\Verbatim@Tab}%
+\def {\noexpand\Verbatim@Space}%
+\Verbatim@NoLigs}%
+\gdef\Verbatim@DontObeyLines{\outer\def^^M{}}%
+\endgroup
+
+\def\SaveVerbatim{\@bsphack\Get@Verbatim}
+
+\def\endSaveVerbatim{\@esphack}
+
+{\catcode``13 \gdef\Verbatim@NoLigs{\def`{\noexpand\@lquote}}}
+
+\def\Verbatim@Prep{%
+ \frenchspacing
+ \ThisVerb\relax\gdef\ThisVerb{}%
+ \VerbatimFont
+ \EveryVerbatim
+ \let\Every@VerbatimLine\EveryVerbatimLine
+ \def\Verbatim@Space{\leavevmode\penalty\@M\VerbatimSpace}%
+ \def\Verbatim@Tab{\leavevmode\penalty\@M\VerbatimTab}}%
+
+\def\Verb@Prep{%
+ \frenchspacing
+ \ThisVerb\relax\gdef\ThisVerb{}%
+ \VerbFont
+ \EveryVerb
+ \let\Every@VerbatimLine\EveryVerbatimLine
+ \def\Verbatim@Space{\leavevmode\penalty\@M\VerbSpace}%
+ \def\Verbatim@Tab{\leavevmode\penalty\@M\VerbTab}}%
+
+\def\Verbatim@Par{\leavevmode\null\@@par\penalty\interlinepenalty}
+
+% Parameter initialization:
+
+\def\VerbatimSpace{\ }
+
+{\catcode`\ =12\gdef\ttspace{{\tt }}}
+
+\def\VerbSpace{\ }
+
+\def\VerbatimTab{\ \ \ \ \ \ \ \ }
+
+\def\VerbTab{\ }
+
+\def\EveryVerbatim{}
+
+\def\EveryVerb{}
+
+\def\ThisVerb{}
+
+\def\EveryVerbatimLine{}%
+
+\def\EveryVerbOutLine{}
+
+\def\VerbatimFont{\tt}
+
+\def\VerbFont{\tt}
+
+\def\VerbatimFuzz{2pt}%
+
+\def\EveryVerbatimCodes{}
+
+\def\EveryVerbCodes{}
+
+\def\EveryVerbOutCodes{}
+
+\def\ThisVerbCodes{}
+
+\def\Verbatim@List#1{%
+ \if@minipage\else\vskip\parskip\fi
+ \leftskip\@totalleftmargin
+ \@rightskip\@flushglue \rightskip\@rightskip
+ \parindent\z@
+ \parskip\z@
+ \parfillskip\@flushglue
+ \hfuzz\VerbatimFuzz\relax
+ \@@par
+ \global\@inlabelfalse %Prevents vspace from being inserted when
+ \Verbatim@Prep %first line exceeds \hsize.
+ #1%
+ \Verbatim@Par}%
+
+\def\UseVerbatim#1{%
+ \begingroup\trivlist\item[]\Verbatim@List{#1}\endtrivlist\endgroup}
+
+\def\Verbatim{\Get@Verbatim\The@Verbatim}
+\def\endVerbatim{\UseVerbatim\The@Verbatim\The@VerbatimErr}
+
+\def\LUseVerbatim#1{%
+ \begingroup\list{}{}\item[]\Verbatim@List{#1}\endlist\endgroup}
+
+\def\LVerbatim{\Get@Verbatim\The@Verbatim}
+\def\endLVerbatim{\LUseVerbatim\The@Verbatim\The@VerbatimErr}
+
+\def\BUseVerbatim{%
+ \@ifnextchar[{\@BUseVerbatim}{\@BUseVerbatim[]}}
+\def\@BUseVerbatim[#1]#2{%
+ \begingroup
+ \Verbatim@Prep
+ \let\Verbatim@Par\@Btrivlistcr
+ \@Btrivlist{l}[#1]%
+ #2%
+ \endBtrivlist
+ \endgroup}%
+
+\def\BVerbatim{%
+ \catcode`\^^M=13\relax
+ \@ifnextchar[{\@BVerbatim}{\@BVerbatim[]}}
+\def\@BVerbatim[#1]{\def\@tempa{[#1]}\Get@Verbatim\The@Verbatim}
+\def\endBVerbatim{
+ \expandafter\@BUseVerbatim\@tempa\The@Verbatim\The@VerbatimErr}
+
+\newwrite\Verbatim@Outfile
+\def\VerbatimOut#1{%
+ \@bsphack
+ \begingroup
+ \immediate\openout\Verbatim@Outfile #1\relax
+ \def\EveryVerbatimCodes{\EveryVerbOutCodes}%
+ \Get@Verbatim\The@Verbatim}
+\def\endVerbatimOut{%
+ \Verbatim@ObeyThings
+ \def\Verbatim@Par{^^J}%
+ \def\Verbatim@Space{\space}%
+ \def\Verbatim@Tab{\space}%
+ \def\@lquote{\string`}%
+ \ThisVerb\relax\gdef\ThisVerb{}%
+ \let\Every@VerbatimLine\EveryVerbOutLine
+ \immediate\write\Verbatim@Outfile{\The@Verbatim}%
+ \immediate\closeout\Verbatim@Outfile
+ \endgroup
+ \The@VerbatimErr
+ \@esphack}
+
+% This one is a little tricky because:
+% * we want to ignore the ^^M at the end of the last line,
+% * we want to handle files that end with newline and files that don't
+% * we want comment characters to work properly,
+% * we want to expand each line before inserting \Every@VerbatimLine and
+% \Verbatim@Par,
+%
+% \The@GVerbatim is used as scratch with global redefinition.
+\newread\Verbatim@Infile
+\def\Verbatim@Input#1#2{%
+ \begingroup
+ \Verbatim@Codes\EveryVerbatimCodes
+ \immediate\openin\Verbatim@Infile #1\relax
+ \ifeof\Verbatim@Infile
+ \@latexerr{No verbatim file #1}\@ehd
+ \else
+ \def\The@GVerbatim{}\Verbatim@NextLine
+ \ifeof\Verbatim@Infile
+ \@latexerr{Verbatim file #1 is empty}\@ehd
+ \else
+ \let\The@Verbatim\The@GVerbatim
+ \def\The@GVerbatim{}\Verbatim@NextLine
+ #2{\Verbatim@@Input}%
+ \fi
+ \fi
+ \immediate\closein\Verbatim@Infile
+ \endgroup}
+\def\Verbatim@@Input{%
+ \let\protect\noexpand
+ \edef\The@Verbatim{%
+ \noexpand\Every@VerbatimLine
+ \The@Verbatim
+ \ifeof\Verbatim@Infile\else\noexpand\Verbatim@Par\fi}%
+ \let\protect\relax
+ \The@Verbatim
+ \ifeof\Verbatim@Infile\else
+ \let\The@Verbatim\The@GVerbatim
+ \def\The@GVerbatim{}\Verbatim@NextLine
+ \expandafter\Verbatim@@Input
+ \fi}%
+\begingroup\catcode`\^^M=\active%
+\gdef\Verbatim@NextLine{%
+ \ifeof\Verbatim@Infile\else%
+ \immediate\read\Verbatim@Infile to\@tempa%
+ \expandafter\Verbatim@@NextLine\@tempa^^M\relax^^M\@nil%
+ \fi}%
+% #2 is empty if line ends in ^^M, #2=\relax otherwise.
+\gdef\Verbatim@@NextLine#1^^M#2^^M#3\@nil{%
+ \expandafter\gdef\expandafter\The@GVerbatim\expandafter{\The@GVerbatim#1}%
+ \ifx#2\@empty\@empty\else\expandafter\Verbatim@NextLine\fi}%
+\endgroup%
+
+\def\UseVerb#1{\begingroup\Verb@Prep#1\endgroup}
+
+\def\SaveVerb{\@ifnextchar[{\Save@Verb}{\Save@Verb[]}}
+
+\long\def\Save@Verb[#1]#2{%
+ \begingroup
+ \Verbatim@Codes\Verbatim@DontObeyLines\EveryVerbCodes
+ \Save@@Verb{#1}{#2}}
+
+\long\def\Save@@Verb#1#2#3{%
+ \let\protect\noexpand
+ \def\next{\@ifnextchar\@nil{\@gobble}{\endgroup}}%
+ \long\def\Verb##1#3{\@nil\xdef#2{##1}\endgroup#1}%
+ \expandafter\next\Verb}
+
+\def\Verb{\Save@Verb[\UseVerb{\The@Verbatim}]{\The@Verbatim}}
+
+\def\VerbatimInput#1{\begingroup\Verbatim@Input{#1}\UseVerbatim\endgroup}
+
+\def\LVerbatimInput#1{\begingroup\Verbatim@Input{#1}\LUseVerbatim\endgroup}
+
+\def\BVerbatimInput{\@ifnextchar[{\@BVerbatimInput}{\@BVerbatimInput[]}}
+\def\@BVerbatimInput[#1]#2{%
+ \begingroup\Verbatim@Input{#2}{\@BUseVerbatim[#1]}\endgroup}
+
+\endinput
+%% END fancybox.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/fancyvrb.rc b/usergrps/uktug/baskervi/6_2/spqr/fancyvrb.rc
new file mode 100644
index 0000000000..acbd45e99a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/fancyvrb.rc
@@ -0,0 +1,265 @@
+% Define verbatim and example environments:
+% verbatim - indented like quote environment
+% Verbatim - indented like quote environment, \small font.
+% nVerbatim - Like "Verbatim", but numbered.
+% example - code and output, side by side
+% example* - one above other
+% example** - one above other, with frames
+% Example - Rendered as PS, like original, side by side
+% Example* - Rendered as PS, one above other
+% Example** - Rendered as PS, one above other, with frames
+% Escape - Rendered as PS, with *no* verbatim text
+% GridPSExample - PSTricks (gridded) picture, like original, side by side
+% PSExample - PSTricks picture, like original, side by side
+% The example environments have the following steps in common:
+% 1. Save example verbatim to numbered example file
+% 2. Input file verbatim or EPS file
+% 3. Input again
+% All of them save their text as files in the \EXdir directory
+% (this needs a trailing / as part of the definition)
+%
+\RequirePackage{ifthen}
+\RequirePackage{graphicx}
+\RequirePackage{calc}
+%
+% variable features
+%
+\def\EXdir{}
+\def\EXprefix{}
+\def\EXclass{article}
+%
+\@ifundefined{fullwidth}{\let\fullwidth\textwidth}{}
+\@ifundefined{thechapter}{\newcounter{chapter}}{}
+%
+\newcounter{eps@counter}[section]
+\renewcommand\theeps@counter{%
+ \arabic{chapter}-\arabic{section}-\arabic{eps@counter}}
+\newcounter{side@count}
+%\newwrite\exepsfile
+%\immediate\openout\exepsfile \EXdir\jobname.expslist\relax
+
+\def\EPSinput#1{%
+\IfFileExists{\EXdir\EXprefix#1.eps}%
+ {\includegraphics{\EXdir\EXprefix#1.eps}}%
+ {\underline{\EXdir\EXprefix#1}}%
+}
+
+\def\SideBySideEx#1{%
+\trivlist\item[]%
+ \leavevmode
+ \global\advance\c@side@count by 1
+ \label{\thechapter.\theside@count}%
+ \ifthenelse{\isodd{\pageref{\thechapter.\theside@count}}}{%
+ \makebox[\fullwidth][l]{\@@Display{#1}\hspace{5mm}
+ \BVerbatimInput[fontsize=\small]{\EXdir\EXprefix\theeps@counter}}%
+ }{%
+ \makebox[\fullwidth][r]{\@@Display{#1}\hspace{5mm}
+ \BVerbatimInput[fontsize=\small]{\EXdir\EXprefix\theeps@counter}}%
+ }%
+ \endtrivlist
+}
+\newsavebox{\@display}
+\def\@@Display#1{%
+ \savebox{\@display}{%
+\begin{minipage}[b]{.5\fullwidth}#1\end{minipage}%
+}
+ \raisebox{\depth}{\usebox{\@display}}%
+}
+
+\newcommand{\BeginExample}{%
+ \multiply\topsep by 2
+ \global\advance\c@eps@counter\@ne
+ \edef\@tempa{%
+ \write\@auxout{\string
+ \newlabel{ex-\theeps@counter}{{\theeps@counter}{\noexpand\the\c@page}}}}
+ \@tempa
+ \nobreak
+ \VerbatimEnvironment
+ \catcode`\<=12
+ \begin{VerbatimOut}{\EXdir\EXprefix\theeps@counter.tex}%
+}
+\newcommand{\EndExample}{%
+ \end{VerbatimOut}%
+}
+
+\def\EndRuleExample{\vskip 7pt \hrule height 1.5pt\relax}
+
+\newif\ifgrid
+\gridfalse
+
+\def\PSExample(#1,#2)(#3,#4){%
+ \def\PictureSize{(#1,#2)(#3,#4)}%
+ \def\Write@Ex##1{}\BeginExample
+ }
+\def\endPSExample{%
+ \EndExample
+ \SideBySideEx{%
+ %\ifgrid\vskip 8pt \else\relax\fi
+ \expandafter\pspicture\PictureSize
+ \ifgrid\usergrid\else\relax\fi
+ \input{\EXdir\theeps@counter}%
+ \endpspicture
+ %\ifgrid\vskip 8pt \fi
+ }%
+}
+
+\newenvironment{GridPSExample}{\gridtrue\PSExample}{\endPSExample}
+
+\def\PSTInlineExample(#1,#2){%
+ \def\PictureSize{(-.2,-.5)(#1,#2)}%
+ \def\Write@Ex##1{}\BeginExample
+ }
+\def\endPSTInlineExample{%
+ \EndExample
+ \expandafter\pspicture\PictureSize
+ \usergrid
+ \input{\EXdir\theeps@counter}%
+ \endpspicture
+ \hspace{16pt}%
+ \BVerbatimInput[gobble=0,fontsize=\small]{\EXdir\theeps@counter}%
+}
+% side by side
+\newenvironment{example}{\def\Write@Ex##1{}\BeginExample} %
+ {\EndExample\SideBySideEx{\input{\EXdir\theeps@counter}}}
+
+% one above the other
+\newenvironment{example*}%
+ {\def\Write@Ex##1{}\BeginExample}%
+ {%
+ \EndExample
+ \VerbatimInput[gobble=0,fontsize=\small]{\EXdir\theeps@counter}%
+ \begin{center}
+ \leavevmode\input{\EXdir\theeps@counter}\par
+ \end{center}
+}
+% one above the other
+\newenvironment{numexample*}%
+ {\def\Write@Ex##1{}\BeginExample}%
+ {%
+ \EndExample
+ \VerbatimInput[gobble=0,numbers=left,
+ fontsize=\small]{\EXdir\theeps@counter}%
+ \begin{center}
+ \leavevmode\input{\EXdir\theeps@counter}\par
+ \end{center}
+}
+
+% with a frame, one above the other
+\newenvironment{example**}%
+{\def\Write@Ex##1{}\BeginExample}%
+{%
+\EndExample
+\VerbatimInput[gobble=0,fontsize=\small,
+ frame=topline,framerule=1.5pt]{\EXdir\theeps@counter}%
+\begin{center}
+\input{\EXdir\theeps@counter}
+ \EndRuleExample
+\end{center}
+}
+
+% now the ones which write stuff for an EPS file
+% for side by side examples, the text width of the separate file
+% needs to be half the normal width.
+\def\EX@extra{}
+\def\HalfWidth{%
+ \def\EX@extra{%
+ \string\makeatletter
+ \string\@tempdima\string\textwidth
+ \string\textwidth.5\string\@tempdima
+ \string\addtolength{\string\textwidth}{-6mm}
+ \string\makeatother}
+}
+\def\Setup@Escape{%
+ \edef\FancyVerbStopString{\string\end{document}}%
+ \edef\FancyVerbStartString{\string\begin{document}}%
+}
+% side by side
+\newenvironment{Example}{%
+ \HalfWidth
+ \BeginExample} %
+ {\EndExample
+\Setup@Escape
+\SideBySideEx{\EPSinput{\theeps@counter}}}
+
+% first verbatimcode, then actual example
+\newenvironment{Example*}{\BeginExample}%
+ {\EndExample
+ \Setup@Escape
+ \begin{center}\leavevmode
+ \VerbatimInput[gobble=0,fontsize=\small]{\EXdir\EXprefix\theeps@counter}%
+ \EPSinput{\theeps@counter}%
+ \end{center}%
+}
+
+% one above the other, framed
+\newenvironment{Example**}%
+{\BeginExample}%
+{%
+\EndExample
+\Setup@Escape
+ \VerbatimInput[gobble=0,fontsize=\small,
+ frame=topline,framerule=1.5pt]{\EXdir\EXprefix\theeps@counter}%
+\EPSinput{\theeps@counter}
+\EndRuleExample
+}
+
+% no verbatim text at all, just to run the thing separately
+\newenvironment{Escape}%
+{\BeginExample}%
+{%
+\EndExample
+\Setup@Escape
+\EPSinput{\theeps@counter}%
+}
+
+\def\CurrentPackages{}
+
+\def\FVE@VerbatimOut{\Write@Ex{\string\end{document}}%
+\immediate\closeout\FV@OutFile\endgroup\@esphack}
+
+\def\Write@Ex#1{%
+ \begingroup
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\immediate\write\FV@OutFile{#1}}
+ \reserved@a
+ \endgroup
+}
+
+\def\FVB@VerbatimOut#1{%
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \FV@DefineWhiteSpace
+ \def\FV@Space{\space}%
+ \FV@DefineTabOut
+ \def\FV@ProcessLine{\immediate\write\FV@OutFile}%
+ \immediate\openout\FV@OutFile #1\relax
+ \Write@Ex{\string\documentclass{\EXclass}}%
+ \Write@Ex{\string\nonstopmode}%
+ \Write@Ex{\string\usepackage{\CurrentPackages}}%
+ \Write@Ex{\string\pagestyle{empty}}%
+ \Write@Ex{\EX@extra}%
+ \Write@Ex{\string\begin{document}}%
+ \let\FV@FontScanPrep\relax
+ \FV@Scan}
+%
+% compatibility with Michel, with moreverb, and verbatim package
+%
+\def\SixPt{\fontsize{6}{7\p@}\selectfont}
+%
+% input files verbatim, numbered and unnumbered
+%
+\def\verbfile#1{\VerbatimInput[fontsize=\small]{#1}}
+\let\verbatiminput\verbfile
+\def\listinginput#1#2{\VerbatimInput[fontsize=\small,firstnumber=#1,numbers=left]{#2}}
+%
+% verbatim in various sizes
+\DefineVerbatimEnvironment{sssverbatim}{LVerbatim}{fontsize=\SixPt}
+\DefineVerbatimEnvironment{ssverbatim}{LVerbatim}{fontsize=\scriptsize}
+\DefineVerbatimEnvironment{fverbatim}{LVerbatim}{fontsize=\footnotesize}
+\DefineVerbatimEnvironment{sverbatim}{LVerbatim}{fontsize=\small}
+\DefineVerbatimEnvironment{Verbatim}{LVerbatim}{fontsize=\normalsize}
+\DefineVerbatimEnvironment{verbatim}{LVerbatim}{fontsize=\normalsize}
+% numbered
+\DefineVerbatimEnvironment{nVerbatim}{LVerbatim}{fontsize=\small,numbers=left}
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/spqr/fancyvrb.sty b/usergrps/uktug/baskervi/6_2/spqr/fancyvrb.sty
new file mode 100644
index 0000000000..df4b38298d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/fancyvrb.sty
@@ -0,0 +1,1672 @@
+%% BEGIN fancyvrb.sty
+%%
+\def\fileversion{2.0-beta, with DG/SPQR fixes}
+\def\filedate{1996/01/01}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{fancyvrb}[\filedate]
+%%
+%% COPYRIGHT 1992-1994, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% DESCRIPTION:
+%% fancyvrb.sty is a LaTeX style option, containing flexible
+%% verbatim environments and commands and extensive documentation.
+%%
+%% This is a companion to fancybox.sty, which is probably available
+%% from whereever you found fancyvrb.sty.
+%%
+%% INSTALLATION:
+%% Put this file where your TeX looks for inputs.
+%%
+%% DOCUMENTATION:
+%% See fancybox.doc, which might be appended to this file.
+%%
+%% COPYING:
+%% Copying of part or all of this file is allowed under the following
+%% conditions only:
+%% (1) You may freely distribute unchanged copies of the file. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of the file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the file, for personal use or for
+%% distribution, as long as credit is given where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% this file or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+%% CODE:
+
+\csname fancyvrb@loaded\endcsname
+\let\fancyvrb@loaded\endinput
+
+\typeout{Style option: `fancyvrb' v\fileversion \space <\filedate> (tvz)}
+
+%% ERRORS:
+
+\def\FV@Error#1#2{%
+ \edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}%
+ \errmessage{FancyVerb Error:^^J\space\space #1^^J}}
+
+\def\FV@eha{Your command was ignored. Type <return> to continue.}
+
+%% VERBATIM FOOTNOTES:
+
+% Color has to be protected.
+% Won't work for some definitions of \@makefntext.
+% If it weren't for \@makefntext, I would do this properly by
+% defining a footnote environment.
+
+\def\VerbatimFootnotes{\let\@footnotetext\V@footnotetext}
+
+\long\def\V@footnotetext{%
+ \afterassignment\V@@footnotetext
+ \let\@tempa}
+\def\V@@footnotetext{%
+ \insert\footins\bgroup
+ \csname reset@font\endcsname
+ \footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth\dp\strutbox
+ \floatingpenalty \@MM
+ \hsize\columnwidth
+ \@parboxrestore
+ \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
+ \@makefntext{}%
+ \rule{\z@}{\footnotesep}%
+ \bgroup
+ \aftergroup\V@@@footnotetext
+ \ignorespaces}
+\def\V@@@footnotetext{\strut\egroup}
+
+%% KEY=VALUE:
+
+\RequirePackage{keyval}
+
+% Extensions to keyval.sty:
+
+% \define@booleankey{<family>}{<key>}{<iftrue>}{<iffalse>}
+%
+% Defines a <key> for <family> that executes:
+% <iftrue> clause when value begins with `t' or `T', or is omitted.
+% <iffalse> clause otherwise.
+
+\def\define@booleankey#1#2#3#4{%
+ \@namedef{KV@#1@#2@default}{#3}%
+ \@namedef{KV@#1@#2@false}{#4}%
+ \@namedef{KV@#1@#2}##1{\KV@booleankey{##1}{#1}{#2}}}
+\def\KV@booleankey#1#2#3{%
+ \edef\@tempa{#1}\expandafter\KV@@booleankey\@tempa\relax\@nil{#2}{#3}}
+\def\KV@@booleankey#1#2\@nil#3#4{%
+ \@nameuse{KV@#3@#4@\if t#1default\else\if T#1default\else false\fi\fi}}
+
+\def\FV@None{none}
+\def\FV@Auto{auto}
+
+\def\fvset#1{\setkeys{FV}{#1}}
+
+% \FV@Command is for verbatim commands. Example:
+%
+% \def\VerbatimInput{\FV@Command{}{VerbatimInput}}
+%
+% \FV@Command{<key=value>}{<name>}:
+%
+% 1. Defines \FV@KeyValues to be <key=value>.
+% 2. Looks for *, and adds `showspaces' to \FV@KeyValues if found.
+% 3. Looks for [<key=value>] argument, and adds it to \FV@KeyValues if found.
+% 4. Executes \FVC@<name>.
+
+\def\FV@Command#1#2{%
+ \@ifstar
+ {\def\FV@KeyValues{#1,showspaces}\FV@@Command{#2}}%
+ {\def\FV@KeyValues{#1}\FV@@Command{#2}}}
+\def\FV@@Command#1{%
+ \@ifnextchar[%
+ {\FV@GetKeyValues{\@nameuse{FVC@#1}}}%
+ {\@nameuse{FVC@#1}}}
+
+\def\FV@GetKeyValues#1[#2]{%
+ \expandafter\def\expandafter\FV@KeyValues\expandafter{\FV@KeyValues,#2}#1}
+
+\def\@CustomVerbatimCommand#1#2#3#4{%
+ \begingroup\fvset{#4}\endgroup % If there are errors, it easier to locate.
+ \def\@tempa##1##2\@nil{\def\@tempa{##2}}%
+ \expandafter\@tempa\string#3\@empty\@nil
+ \@ifundefined{FVC@\@tempa}%
+ {\FV@Error{Command `\string#3' is not a FancyVerb command.}\@eha}%
+ {#1{#2}{\FV@Command{#4}{#3}}}}
+
+\def\CustomVerbatimCommand{\@CustomVerbatimCommand\newcommand}
+\def\RecustomVerbatimCommand{\@CustomVerbatimCommand\renewcommand}
+
+% \FV@Environment is for verbatim enviroments. Example:
+%
+% \def\Verbatim{\FV@Environment{}{Verbatim}}
+% \@namedef{Verbatim*}{\FV@Environment{showspaces}{Verbatim}}
+%
+% \FV@Environment{<key=value>}{<name>}:
+%
+% 1. Defines \FV@KeyValues to be <key=value>.
+% 2. Sets \catcode`\^^M=13, checks for `[', and resets \catcode``^^M=5.
+% 3. Reads [<key=value>] and adds it to \FV@KeyValues if `[' was found.
+% 4. Executes \FVB@<name>.
+
+% \FV@Environment is like \FV@Command, except:
+%
+% - It omits step 2 (looking for *), and
+% - It sets \catcode`\^^M=13 when checking for the `[' of the optional
+% argument, so that it does not skip over ^^M if there is no `['.
+
+\def\FV@Environment#1#2{%
+ \def\FV@KeyValues{#1}%
+ \catcode`\^^M=\active
+ \@ifnextchar[%
+ {\catcode`\^^M=5 \FV@GetKeyValues{\@nameuse{FVB@#2}}}%
+ {\catcode`\^^M=5 \@nameuse{FVB@#2}}}
+
+\def\CustomVerbatimEnvironment{\@CustomVerbatimEnvironment\newenvironment}
+\def\RecustomVerbatimEnvironment{\@CustomVerbatimEnvironment\renewenvironment}
+
+\def\@CustomVerbatimEnvironment#1#2#3#4{%
+ \begingroup\fvset{#4}\endgroup % If there are errors, it easier to locate.
+ \@ifundefined{FVB@#3}%
+ {\FV@Error{`#3' is not a FancyVerb environment.}\@eha}%
+ {#1{#2}{\FV@Environment{#4}{#3}}{\@nameuse{FVE@#3}}%
+ #1{#2*}{\FV@Environment{#4,showspaces}{#3}}{\@nameuse{FVE@#3}}}}
+
+\def\DefineVerbatimEnvironment#1#2#3{%
+ \@namedef{#1}{\FV@Environment{#3}{#2}}%
+ \@namedef{end#1}{\@nameuse{FVE@#2}}%
+ \@namedef{#1*}{\FV@Environment{#3,showspaces}{#2}}%
+ \@namedef{end#1*}{\@nameuse{FVE@#2}}}
+
+% Then commands or environments set key values with \FV@UseKeyValues,
+% within a group.
+
+\def\FV@UseKeyValues{%
+ \ifx\FV@KeyValues\@empty\else
+ \def\KV@prefix{KV@FV@}%
+ \expandafter\KV@do\FV@KeyValues,\relax,%
+ \def\FV@KeyValues{}%
+ \fi}
+
+%% SCANNING:
+%
+% Scanning macros
+% - read a line at a time from an environment or a file,
+% - save the line in \FV@Line, and
+% - execute \FV@PreProcessLine.
+%
+% \FV@PreProcessLine
+% - Determines whether line is in a user-specified ranges, and if so,
+% - Strips the line of a user-specified no. of tokens, and
+% - executes \FV@ProcessLine{<line>}.
+%
+% Two things are common to scanning an environment or reading a file:
+% \FV@CatCodes --> Change \catcode's.
+% \FV@PreProcessLine --> See above.
+
+%% CODES:
+
+\def\FV@CatCodes{%
+ \let\do\@makeother\dospecials
+ \FV@ActiveWhiteSpace % See below.
+ \FV@FontScanPrep % See below.
+ \FV@CatCodesHook % A style hook.
+ \FancyVerbCodes
+} % A user-defined hook.
+
+\def\FV@ActiveWhiteSpace{%
+ \catcode`\^^M=\active % End of line
+ \catcode`\ =\active % Space
+ \catcode`\^^I=\active} % Tab
+
+% CM Ligatures:
+% Left-quote: `` !` ?`
+% Letter f: ff fi fl ffi ffl
+% Hyphen: -- ---
+
+\def\FV@CatCodesHook{}
+
+\def\FV@AddToHook#1#2{%
+ \expandafter\def\expandafter#1\expandafter{#1#2\relax}}
+
+\define@key{FV}{codes}[]{\def\FancyVerbCodes{#1\relax}}
+\define@key{FV}{codes*}{%
+ \expandafter\def\expandafter\FancyVerbCodes\expandafter{%
+ \FancyVerbCodes#1\relax}}
+\fvset{codes}
+
+\define@key{FV}{commandchars}[\\\{\}]%
+ {\def\@tempa{#1}%
+ \ifx\@tempa\FV@None
+ \let\FV@CommandChars\relax
+ \else
+ \FV@DefineCommandChars#1\relax\relax\relax
+ \fi}
+
+\def\FV@DefineCommandChars#1#2#3{%
+ \def\FV@CommandChars{%
+ \catcode`#1=0\relax\catcode`#2=1\relax\catcode`#3=2\relax}}
+
+\FV@AddToHook\FV@CatCodesHook\FV@CommandChars
+
+\define@key{FV}{commentchar}[\%]{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\FV@None
+ \let\FV@CommentChar\relax
+ \else
+ \def\FV@CommentChar{\catcode`#1=14}%
+ \fi}
+
+\FV@AddToHook\FV@CatCodesHook\FV@CommentChar
+
+\fvset{commandchars=none,commentchar=none}
+
+%% PREPROCESS LINE:
+
+% These is tedious and takes up macro space, but it doesn't slow things
+% down much when the parameters are not used.
+
+% start, stop and gobble parameters:
+
+% If value is a number, then after the assignment the next token is \relax.
+
+\define@key{FV}{firstline}{%
+ \afterassignment\FV@ParseStart\@tempcnta=0#1\relax\@nil{#1}}
+\def\FV@ParseStart#1\relax\@nil#2{%
+ \ifx\@nil#1\@nil
+ \edef\FancyVerbStartNum{\the\@tempcnta}%
+ \let\FancyVerbStartString\relax
+ \else
+ \edef\FancyVerbStartString{#2}%
+ \fi}
+\def\KV@FV@firstline@default{%
+ \let\FancyVerbStartNum\z@
+ \let\FancyVerbStartString\relax}
+
+\define@key{FV}{lastline}{%
+ \afterassignment\FV@ParseStop\@tempcnta=0#1\relax\@nil{#1}}
+\def\FV@ParseStop#1\relax\@nil#2{%
+ \ifx\@nil#1\@nil
+ \edef\FancyVerbStopNum{\the\@tempcnta}%
+ \let\FancyVerbStopString\relax
+ \else
+ \edef\FancyVerbStopString{#2}%
+ \fi}
+\def\KV@FV@lastline@default{%
+ \let\FancyVerbStopNum\z@
+ \let\FancyVerbStopString\relax}
+
+\fvset{firstline,lastline}
+
+\newcount\FV@CodeLineNo
+
+% If \FV@FindStartStop determines the line should be printed, it
+% executes \FV@@PreProcessLine
+
+\def\FV@PreProcessLine{%
+ \global\advance\FV@CodeLineNo\@ne
+ \FV@FindStartStop}
+
+\def\FV@@PreProcessLine{%
+ \FV@StepLineNo
+ \FV@Gobble
+ \expandafter\FV@ProcessLine\expandafter{\FV@Line}}
+
+% The definition of \FV@FindStartStop changes, so that we don't
+% have to check irrelevant conditions with each line.
+
+\def\FV@FindStartStop{\FV@DefineFindStart\FV@FindStartStop}
+
+% \def\FV@DefinePreProcessLine{%
+% \setcounter{FancyVerbLine}{0}%
+% \FV@DefineFindStart}
+
+\def\FV@DefineFindStart{%
+ \ifx\FancyVerbStartString\relax
+ \ifnum\FancyVerbStartNum<\tw@
+ \FV@DefineFindStop
+ \else
+ \let\FV@FindStartStop\FV@FindStartNum
+ \fi
+ \else
+ \let\FV@FindStartStop\FV@FindStartString
+ \fi}
+
+\def\FV@FindStartNum{%
+ \ifnum\FancyVerbStartNum>\FV@CodeLineNo\else
+ \FV@DefineFindStop
+ \expandafter\FV@@PreProcessLine
+ \fi}
+
+\def\FV@FindStartString{%
+ \expandafter\FV@@FindStartString
+{\meaning\FV@Line}%
+{\meaning\FancyVerbStartString}%
+}
+\def\FV@@FindStartString#1#2{%
+\edef\@fooA{#1}\edef\@fooB{#2}
+ \ifx\@fooA\@fooB
+ \FV@DefineFindStop
+ \fi
+}
+
+\def\FV@DefineFindStop{%
+ \ifx\FancyVerbStopString\relax
+ \ifnum\FancyVerbStopNum<\@ne
+ \let\FV@FindStartStop\FV@@PreProcessLine
+ \else
+ \let\FV@FindStartStop\FV@FindStopNum
+ \fi
+ \else
+ \let\FV@FindStartStop\FV@FindStopString
+ \fi}
+
+\def\FV@FindStopNum{%
+ \ifnum\FancyVerbStopNum=\FV@CodeLineNo
+ \let\FV@FindStartStop\relax
+ \ifeof\FV@InFile\else
+ \immediate\closein\FV@InFile
+ \fi
+ \fi
+ \FV@@PreProcessLine}
+
+\def\FV@FindStopString{%
+ \expandafter\FV@@FindStopString
+{\meaning\FV@Line}%
+{\meaning\FancyVerbStopString}%
+}
+\def\FV@@FindStopString#1#2{%
+\edef\@fooA{#1}\edef\@fooB{#2}
+ \ifx\@fooA\@fooB
+ \let\FV@FindStartStop\relax
+ \ifeof\FV@InFile\else
+ \immediate\closein\FV@InFile
+ \fi
+ \else
+ \expandafter\FV@@PreProcessLine
+ \fi}
+
+% Gobblings. \FV@Gobble does nothing, or strips some tokens from
+% the line and stores the result in \FV@Line again. We use
+% \LaTeX's renewcommand to define a command for gobbling up to
+% 9 arguments. This is not the same as removing 9 tokens, but is
+% easier.
+
+\def\FV@@Gobble{%
+ \expandafter\expandafter\expandafter\FV@@@Gobble
+ \expandafter\FV@@@@Gobble\FV@Line
+ \@nil\@nil\@nil\@nil\@nil\@nil\@nil\@nil\@nil\@nil\@@nil}
+\def\FV@@@Gobble#1\@nil#2\@@nil{\def\FV@Line{#1}}
+
+\define@key{FV}{gobble}{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta<\@ne
+ \let\FV@Gobble\relax
+ \else
+ \ifnum\@tempcnta>9
+ \FV@Error{gobble parameter must be less than 10}\FV@eha
+ \else
+ \renewcommand{\FV@@@@Gobble}[\@tempcnta]{}%
+ \let\FV@Gobble\FV@@Gobble
+ \fi
+ \fi}
+\def\FV@@@@Gobble{}
+\def\KV@FV@gobble@default{\let\FV@Gobble\relax}
+
+\fvset{gobble}
+
+%% SCANNING ENVIRONMENTS:
+
+\def\FV@Scan{%
+ \FV@CatCodes
+ \VerbatimEnvironment
+ \FV@DefineCheckEnd
+ \FV@BeginScanning}
+
+% \VerbatimEnvironment:
+%
+% This saves the name of the current environment as
+% \FV@EnvironName, if the latter is not already defined.
+% Then \FV@CheckEnd knows how to find the end as long as either:
+% * \begin and \end are not used within the definition of the environment, OR
+% * \VerbatimEnvironment is used in the definition before the first \begin.
+
+\def\VerbatimEnvironment{%
+ \ifx\FV@EnvironName\relax\xdef\FV@EnvironName{\@currenvir}\fi}
+
+\let\FV@EnvironName\relax
+
+%% CHECK END:
+%
+% We have to check the argument of the first \end{} in each line, compare it
+% with \FV@EnvironName, and return \iftrue if it matches and \iffalse
+% otherwise.
+%
+% There are four cases (R=regular):
+%
+% case : i ii iii iv
+% catcode of \ : R 12 12 R
+% catcode of {} : R R 12 12
+%
+% For uniformity, we use ![] instead of \{} in all the definitions.
+%
+% We first set the catcodes of \{} to those in effect in the
+% verbatim environment. Then we define:
+%
+% !def!FV@CheckEnd#1[!FV@@CheckEnd#1\end{}!@nil]
+%
+% If {} have their usual catcodes, we define:
+%
+% !def!FV@@CheckEnd#1\end#2#3!@nil[!def!@tempa[#2]]
+%
+% If {} have catcode 12, we define:
+%
+% !def!FV@@CheckEnd#1\end{#2}#3!@nil[!def!@tempa[#2]]
+
+\begingroup
+\catcode`\!=0
+\catcode`\[=1
+\catcode`\]=2
+
+% Case i:
+
+!gdef!FV@CheckEnd@i#1[!FV@@CheckEnd#1\end{}!@nil]
+!gdef!FV@@CheckEnd@i#1\end#2#3!@nil[!def!@tempa[#2]!def!@tempb[#3]]
+!gdef!FV@@@CheckEnd@i[\end{}]
+
+% Case ii:
+
+\catcode`!\=12
+
+!gdef!FV@CheckEnd@ii#1[!FV@@CheckEnd#1\end{}!@nil]
+!gdef!FV@@CheckEnd@ii#1\end#2#3!@nil[!def!@tempa[#2]!def!@tempb[#3]]
+!gdef!FV@@@CheckEnd@ii[\end{}]
+
+% Case iii:
+
+!catcode`!{=12
+!catcode`!}=12
+
+!gdef!FV@CheckEnd@iii#1[!FV@@CheckEnd#1\end{}!@nil]
+!gdef!FV@@CheckEnd@iii#1\end{#2}#3!@nil[!def!@tempa[#2]!def!@tempb[#3]]
+!gdef!FV@@@CheckEnd@iii[\end{}]
+
+% Case iv:
+
+!catcode`!\=0
+
+!gdef!FV@CheckEnd@iv#1[!FV@@CheckEnd#1\end{}!@nil]
+!gdef!FV@@CheckEnd@iv#1\end{#2}#3!@nil[!def!@tempa[#2]!def!@tempb[#3]]
+!gdef!FV@@@CheckEnd@iv[\end{}]
+
+\endgroup
+
+\def\FV@BadCodes#1{%
+ \FV@Error
+ {\string\catcode\space of \expandafter\@gobble\string#1 is wrong:
+ \the\catcode`#1}%
+ {Only the following catcode values are allowed:
+ ^^J\@spaces \expandafter\@gobble\string\\ \space\space --> 0 or 12.
+ ^^J\@spaces \string{ \string} --> 1 and 2, resp., or both 12.
+ ^^JTo get this error, either you are a hacker or you got bad advice.}%
+ \def\FV@CheckEnd##1{\iftrue}}
+
+\def\FV@DefineCheckEnd{%
+ \ifnum\catcode`\\=\z@
+ \ifnum\catcode`\{=\@ne
+ \let\FV@CheckEnd\FV@CheckEnd@i
+ \let\FV@@CheckEnd\FV@@CheckEnd@i
+ \let\FV@@@CheckEnd\FV@@@CheckEnd@i
+ \else
+ \ifnum\catcode`\{=12
+ \let\FV@CheckEnd\FV@CheckEnd@iv
+ \let\FV@@CheckEnd\FV@@CheckEnd@iv
+ \let\FV@@@CheckEnd\FV@@@CheckEnd@iv
+ \else
+ \FV@BadCodes\{%
+ \fi
+ \fi
+ \else
+ \ifnum\catcode`\\=12
+ \ifnum\catcode`\{=\@ne
+ \let\FV@CheckEnd\FV@CheckEnd@ii
+ \let\FV@@CheckEnd\FV@@CheckEnd@ii
+ \let\FV@@@CheckEnd\FV@@@CheckEnd@ii
+ \else
+ \ifnum\catcode`\{=12
+ \let\FV@CheckEnd\FV@CheckEnd@iii
+ \let\FV@@CheckEnd\FV@@CheckEnd@iii
+ \let\FV@@@CheckEnd\FV@@@CheckEnd@iii
+ \else
+ \FV@BadCodes\{%
+ \fi
+ \fi
+ \else
+ \FV@BadCodes\\%
+ \fi
+ \fi}
+
+%% LINE-BY-LINE SCANNING
+
+% We first skip everything after the beginning of the environment.
+
+\begingroup
+\catcode`\^^M=\active
+ \gdef\FV@BeginScanning#1^^M{%
+ \def\@tempa{#1}\ifx\@tempa\@empty\else\FV@BadBeginError\fi
+ \FV@GetLine}%
+\endgroup
+
+\def\FV@BadBeginError#1{%
+ \expandafter\@temptokena\expandafter{\@tempa}%
+ \FV@Error
+ {Extraneous input `\the\@temptokena' between
+ \string\begin{\FV@EnvironName}[<key=value>] and line end}%
+ {This input will be discarded. Hit <return> to continue.}}
+
+% If \FancyVerbGetLine does not find a ^^M, then we are at
+% the end of the file, and \FV@EOF attempts to terminate the document.
+% Otherwise, \FV@EOF is gobbled by \FancyVerbGetLine.
+
+\def\FV@GetLine{\expandafter\FV@CheckScan\FancyVerbGetLine}
+
+\begingroup
+\catcode`\^^M=\active
+\gdef\FancyVerbGetLine#1^^M{%
+ \@nil
+ \FV@CheckEnd{#1}%
+ \ifx\@tempa\FV@EnvironName% % True if end is found
+ \ifx\@tempb\FV@@@CheckEnd\else\FV@BadEndError\fi%
+ \let\next\FV@EndScanning%
+ \else%
+ \def\FV@Line{#1}%
+ \def\next{\FV@PreProcessLine\FV@GetLine}%
+ \fi%
+ \next}%
+\endgroup
+
+\def\FV@BadEndError{%
+ \expandafter\@temptokena\expandafter{\@tempb}%
+ \FV@Error
+ {Extraneous input `\the\@temptokena' between
+ \string\end{\FV@EnvironName} and line end}%
+ {This input will be discarded. Type <return> to continue.}}
+
+\def\FV@EndScanning{%
+ \edef\next{\noexpand\end{\FV@EnvironName}}%
+ \global\let\FV@EnvironName\relax
+ \next}
+
+\@ifundefined{@currenvline}{\let\@currenvline\@empty}{}
+
+\def\FV@CheckScan#1{\@ifnextchar\@nil{\@gobble}{\FV@EOF}}
+\def\FV@CheckScan#1{\ifx\@nil#1\@empty\else\expandafter\FV@EOF\fi}
+
+\def\FV@EOF{%
+ \FV@Error{Couldn't find `\string\end{\FV@EnvironName}' to end
+ a verbatim environment\@currenvline.}%
+ {Probably you mistyped the environment name or included an extraneous
+ ^^Jspace, or are using an improperly defined verbatim environment.
+ ^^JHit return and I will try to terminate this job.}%
+ \FV@EndScanning
+ \end{document}}
+
+%% INPUT:
+
+\newread\FV@InFile
+
+\def\FV@Input#1{%
+ \immediate\openin\FV@InFile #1\relax
+ \ifeof\FV@InFile
+ \FV@Error{No verbatim file #1}\FV@eha
+ \immediate\closein\FV@InFile
+ \else
+ \FV@CatCodes
+ \expandafter\FV@@Input
+ \fi}
+
+% TeX reports EOF when reading after the last newline character.
+% Thus, we read to InLine, and if TeX reports EOF:
+% If InLine=Empty, previous line was last line in file (file ends nl).
+% Otherwise, InLine holds last line in file (file doesn't end in nl).
+% \FV@@Input handles both cases correctly.
+
+\def\FV@@Input{%
+ \def\FV@Line{}%
+ \FV@ReadLine
+ \ifeof\FV@InFile
+ \ifx\FV@Line\@empty\else
+ \FV@PreProcessLine
+ \fi
+ \immediate\closein\FV@InFile
+ \else
+ \FV@PreProcessLine
+ \expandafter\FV@@Input
+ \fi}
+
+% We also want to handle true comment characters correctly. This means that
+% we keep accumulating text in InLine until we find a ^^M (indicating that
+% the line did not contain a comment character).
+
+\begingroup
+\catcode`\^^M=\active
+\gdef\FV@ReadLine{%
+ \ifeof\FV@InFile\else
+ \immediate\read\FV@InFile to\@tempa%
+ \expandafter\FV@@ReadLine\@tempa^^M\relax^^M\@nil%
+ \fi}
+% #2 is empty if line ends in ^^M, #2=\relax otherwise
+\gdef\FV@@ReadLine#1^^M#2^^M#3\@nil{%
+ \expandafter\def\expandafter\FV@Line\expandafter{%
+ \FV@Line#1}%
+ \ifx\relax#2\@empty\expandafter\FV@ReadLine\fi}%
+\endgroup
+
+%% FORMATTING - COMMON COMPONENTS:
+
+% Some things that are common to all verbatim formatting:
+
+\def\FV@FormattingPrep{%
+ \global\FV@CodeLineNo\z@
+ \frenchspacing % Cancels special punctuation spacing.
+ \FV@SetupFont % See below.
+ \FV@DefineWhiteSpace % See below.
+ \FancyVerbDefineActive
+ \FancyVerbFormatCom} % A user-defined hook (formatcom parameter).
+
+% Fonts
+
+\expandafter\ifx\csname selectfont\endcsname\relax
+
+\def\FV@SetupFont{%
+ \FV@BaseLineStretch
+ \ifx\@currsize\small\normalsize\else\small\fi\@currsize
+ \FV@FontSize
+ \FV@FontFamily
+}
+
+\else
+
+\def\FV@SetupFont{%
+ \FV@BaseLineStretch
+ \FV@FontSize
+ \FV@FontFamily
+ \FV@FontSeries
+ \FV@FontShape
+%
+% SPQR Jan 29 1996; added code to turn off ligatures
+%
+ \selectfont\let\do\do@noligs\verbatim@nolig@list}%
+\fi
+
+\define@key{FV}{fontsize}{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\FV@Auto
+ \let\FV@FontSize\relax
+ \else
+ \def\FV@FontSize{#1}%
+ \fi}
+\def\KV@FV@fontsize@default{\let\FV@FontSize\relax}
+
+\define@key{FV}{baselinestretch}[auto]{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\FV@Auto
+ \let\FV@BaseLineStretch\relax
+ \else
+ \def\FV@BaseLineStretch{\def\baselinestretch{#1}}%
+ \fi}
+\def\KV@FV@baselinestretch@default{\let\FV@BaseLineStretch\relax}
+
+\define@key{FV}{fontfamily}{%
+ \@ifundefined{FV@fontfamily@#1}%
+ {\def\FV@FontScanPrep{}\def\FV@FontFamily{\fontfamily{#1}}}
+ {\csname FV@fontfamily@#1\endcsname}}
+
+\define@key{FV}{fontseries}{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\FV@Auto
+ \let\FV@FontSeries\relax
+ \else
+ \def\FV@FontSeries{\fontseries{#1}}%
+ \fi}
+
+\define@key{FV}{fontshape}{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\FV@Auto
+ \let\FV@FontShape\relax
+ \else
+ \def\FV@FontShape{\fontshape{#1}}%
+ \fi}
+
+% Font family styles have to define \FV@FontScanPrep and \FV@FontFamily.
+
+\def\FV@MakeActive#1{%
+ \catcode`#1=\active
+ \def\next##1{\expandafter\def\expandafter\FV@MakeUnActive\expandafter{%
+ \FV@MakeUnActive\def##1{\string##1}}}%
+ \begingroup\lccode`~=`#1\relax\expandafter\next\expandafter~\endgroup}
+\def\FV@MakeUnActive{}
+
+\begingroup
+\catcode`\`=\active
+\gdef\FV@fontfamily@tt{%
+ \def\FV@FontScanPrep{\FV@MakeActive\`}%
+ \def\FV@FontFamily{\tt\edef`{{\string`}}}}
+
+\gdef\FV@fontfamily@cmtt{%
+ \def\FV@FontScanPrep{\FV@MakeActive\`}%
+ \def\FV@FontFamily{\edef`{{\string`}}\fontfamily{cmtt}}}
+\endgroup
+
+\@namedef{FV@fontfamily@cmtt-spanish}{%
+ \def\FV@FontScanPrep{}%
+ \def\FV@FontFamily{\fontfamily{cmtt}}}
+
+%% FIX ME
+
+\@namedef{FV@fontfamily@courier}{%
+ \def\FV@FontScanPrep{}%
+ \def\FV@FontFamily{\fontfamily{rpcr}}}
+
+\@namedef{FV@fontfamily@helvetica}{%
+ \def\FV@FontScanPrep{}%
+ \def\FV@FontFamily{\fontfamily{rphv}}}
+
+\fvset{fontfamily=tt,fontsize=auto,fontshape=auto,fontseries=auto,
+ baselinestretch=auto}
+
+% \FV@DefineWhiteSpace
+%
+% We just define the active characters to be ordinary commands, which
+% are easier to redefine. We do with any macros that use verbatim text.
+
+\begingroup
+\catcode`\ =\active
+\catcode`\^^I=\active
+\gdef\FV@DefineWhiteSpace{\def {\FV@Space}\def^^I{\FV@Tab}}%
+\endgroup
+
+\define@key{FV}{defineactive}[]{\def\FancyVerbDefineActive{#1\relax}}
+\define@key{FV}{defineactive*}{%
+ \expandafter\def\expandafter\FancyVerbDefineActive\expandafter{%
+ \FancyVerbDefineActive#1\relax}}
+\fvset{defineactive}
+
+% \FV@Space:
+
+\define@booleankey{FV}{showspaces}%
+ {\def\FV@Space{{\FancyVerbSpace}}}%
+ {\def\FV@Space{\ }}
+
+{\catcode`\ =12 \gdef\FancyVerbSpace{\tt }}
+
+\fvset{showspaces=false}
+
+% \FV@Tab:
+
+\def\FV@Tab{\hbox to\FancyVerbTabSize\fontdimen2\font{\hss\FV@TabChar}}
+
+\define@key{FV}{tabsize}{%
+ \@tempcnta=#1\relax
+ \ifnum\@tempcnta>100
+ \FV@Error{Tab size too large: `\the\@tempcnta'. (Max size = 100)}\FV@eha
+ \else
+ \edef\FancyVerbTabSize{\the\@tempcnta}%
+ \fi}
+
+\define@booleankey{FV}{showtabs}%
+ {\def\FV@TabChar{\FancyVerbTab}}%
+ {\let\FV@TabChar\relax}
+
+\fvset{tabsize=8,showtabs=false}
+
+% Here is a weak attempt at a tab character. It may exceed the width
+% of a space character when the verbatim font is small. The only proper way
+% to do this is making it part of the verbatim font.
+
+\def\FancyVerbTab{%
+ \valign{%
+ \vfil##\vfil\cr
+ \hbox{$\scriptscriptstyle-$}\cr
+ \hbox to 0pt{\hss$\scriptscriptstyle\rangle\mskip -.8mu$}\cr
+ \hbox{$\scriptstyle\mskip -3mu\mid\mskip -1.4mu$}\cr}}
+
+% Obey Tabs:
+
+\newbox\FV@TabBox
+
+\def\FV@@ObeyTabsInit{%
+ \@tempdimb=\FancyVerbTabSize\fontdimen\tw@\font
+ \edef\FV@ObeyTabSize{\number\@tempdimb}%
+ \advance\@tempdimb\fontdimen\tw@\font
+ \advance\@tempdimb-\FancyVerbTabSize sp % Allow for rounding errors.
+ \edef\FV@@ObeyTabSize{\number\@tempdimb}%
+ \let\FV@ObeyTabs\FV@@ObeyTabs
+ \let\FV@Tab\FV@TrueTab}
+
+\def\FV@@ObeyTabs#1{\setbox\FV@TabBox=\hbox{#1}\box\FV@TabBox}
+\let\FV@ObeyTabs\relax
+
+\def\FV@TrueTab{%
+ \egroup
+ \@tempdima=\FV@ObeyTabSize sp\relax
+ \@tempcnta=\wd\FV@TabBox
+ \advance\@tempcnta\FV@@ObeyTabSize\relax
+ \divide\@tempcnta\@tempdima
+ \multiply\@tempdima\@tempcnta
+ \advance\@tempdima-\wd\FV@TabBox
+ \setbox\FV@TabBox=\hbox\bgroup
+ \unhbox\FV@TabBox\kern\@tempdima\hbox to\z@{\hss\FV@TabChar}}
+
+\define@booleankey{FV}{obeytabs}%
+ {\let\FV@ObeyTabsInit\FV@@ObeyTabsInit}%
+ {\let\FV@ObeyTabsInit\relax}
+
+\fvset{obeytabs=false}
+
+% \FancyVerbFormatCom
+
+\define@key{FV}{formatcom}[]{\def\FancyVerbFormatCom{#1\relax}}
+\define@key{FV}{formatcom*}{%
+ \expandafter\def\expandafter\FancyVerbFormatCom\expandafter{%
+ \FancyVerbFormatCom#1\relax}}
+
+\fvset{formatcom}
+
+\def\FancyVerbFormatLine#1{\FV@ObeyTabs{#1}}
+
+% LIST ENVIRONMENTS:
+
+% Some parameters:
+
+\define@key{FV}{xleftmargin}{\def\FV@XLeftMargin{#1}}
+\let\FV@XLeftMargin\z@
+
+\define@key{FV}{xrightmargin}{\def\FV@XRightMargin{#1}}
+\let\FV@XRightMargin\z@
+
+\define@booleankey{FV}{resetmargins}%
+ {\let\if@FV@ResetMargins\iftrue}
+ {\let\if@FV@ResetMargins\iffalse}
+
+\fvset{resetmargins=false}
+
+\define@key{FV}{listparameters}{\def\FV@ListParameterHook{#1}}
+\def\FV@ListParameterHook{}
+
+\define@key{FV}{hfuzz}{%
+ \@tempdima=#1\relax
+ \edef\FancyVerbHFuzz{\number\@tempdima sp}}
+
+\fvset{hfuzz=2pt}
+
+\define@booleankey{FV}{samepage}%
+ {\def\FV@InterLinePenalty{\interlinepenalty\@M}}%
+ {\let\FV@InterLinePenalty\relax}
+
+\fvset{samepage=false}
+
+% Lists:
+
+% \FV@List{} is a rewriting of \list{}{}\item[].
+% The rewrite gives me more control.
+% I might not get the vertical spacing exactly the same, but it
+% is more likely that it will get better than worse.
+%
+% The verbatim environment consists of a series of \hbox's inserted in
+% vertical mode.
+%
+% We need to take care of the following:
+%
+% leftmargin
+% rightmargin
+% topskip
+% botskip
+% toppenalty
+% botpenalty
+% interlinepenalties
+%
+% Note: A verbatim environment immediately after an \item starts on
+% the same line as the \item's label, unless we reset margins.
+% The user can instead have the environment start on a new
+% line by inserting `\ ' between \item and the environment.
+
+\def\FV@List#1{%
+ \begingroup
+ \FV@UseKeyValues
+ \FV@LeaveVMode
+ \if@inlabel\else\setbox\@labels=\box\voidb@x\fi
+ \FV@ListNesting{#1}%
+ \FV@ListParameterHook
+ \FV@ListVSpace
+ \FV@SetLineWidth
+ \FV@InterLinePenalty
+ \let\FV@ProcessLine\FV@ListProcessLine@i
+ \FV@CatCodes
+ \FV@FormattingPrep
+ \FV@ObeyTabsInit
+ \FV@BeginListFrame}
+
+% Cases where we need to leave vmode:
+% - After an in-line section (\if@noskipsec=T).
+% - After an \item command, if we reset margins.
+% Then we end \vmode, using @noparlist as a flag if in vmode.
+% (Not the usual meaning of @noparlist.)
+
+\def\FV@LeaveVMode{%
+ \if@noskipsec
+ \leavevmode
+ \else
+ \if@FV@ResetMargins\if@inlabel\leavevmode\fi\fi
+ \fi
+ \ifvmode\@noparlisttrue\else\@noparlistfalse\unskip\par\fi}
+
+\def\FV@ListNesting#1{%
+ \if@FV@ResetMargins
+ \@listdepth=\z@
+ \else
+ \ifnum\@listdepth>5\relax
+ \@toodeep
+ \else
+ \advance\@listdepth\@ne
+ \fi
+ \fi
+ \rightmargin\z@
+ \csname @list\romannumeral\the\@listdepth\endcsname
+ \ifnum#1=\z@
+ \rightmargin\z@
+ \leftmargin\z@
+ \fi}
+
+% \FV@ListVSpace contains selected parts of \@trivlist and \@item.
+% Here are the cases:
+%
+% VMODE NOT IN LABEL OR AFTER @NOBREAK:
+% <topskip> = \topsep + \partopsep + \parskip
+% <botskip> = \topsep + \partopsep
+% <toppenalty> = \@beginparpenalty
+% <botpenalty> = \@endparpenalty
+
+% VMODE IN LABEL:
+% <topskip> = \parskip % Expected anyway.
+% <botskip> = \topsep + \partopsep % Omitted in LaTeX--a bug?
+% <toppenalty> = None
+% <botpenalty> = \@endparpenalty % Ditto.
+
+% VMODE AFTER @NOBREAK:
+% <topskip> = \parskip
+% <botskip> = \topsep + \partopsep
+% <toppenalty> = None
+% <botpenatly> = \@endparpenalty
+
+% HMODE:
+% <topskip> = \topsep + \parskip
+% <botskip> = \topsep
+% <toppenalty> = \@beginparpenalty
+% <botpenatly> = \@endparpenalty
+%
+% Notes:
+% - Except when in label or after nobreak, \parskip is added with
+% \addvspace, so that net space is:
+% MAX{\topsep (+\partopsep) + \parskip , \lastskip }
+% (The usual \@item works the same way.)
+% - \parskip is added afterwards by a new paragraph, if any.
+% - <botskip> == \@topsepadd
+
+\def\FV@ListVSpace{%
+ \@topsepadd\topsep
+ \if@noparlist\advance\@topsepadd\partopsep\fi
+ \if@inlabel
+ \vskip\parskip
+ \else
+ \if@nobreak
+ \vskip\parskip
+ \clubpenalty\@M
+ \else
+ \addpenalty\@beginparpenalty
+ \@topsep\@topsepadd
+ \advance\@topsep\parskip
+ \addvspace\@topsep
+ \fi
+ \fi
+ \global\@nobreakfalse
+ \global\@inlabelfalse
+ \global\@minipagefalse
+ \global\@newlistfalse}
+
+% \leftmargin := totalleftmargin
+% \rightmargin := totalrightmargin
+% \@totalleftmargin := totalleftmargin of enclosing environment.
+
+\def\FV@SetLineWidth{%
+ \if@FV@ResetMargins\else
+ \advance\leftmargin\@totalleftmargin
+ \fi
+ \advance\leftmargin\FV@XLeftMargin\relax
+ \advance\rightmargin\FV@XRightMargin\relax
+ \linewidth\hsize
+ \advance\linewidth-\leftmargin
+ \advance\linewidth-\rightmargin
+ \hfuzz\FancyVerbHFuzz\relax}
+
+% We have to insert the right interline penalties (\interlinepenalty,
+% \clubpenalty, \widowpenalty). We could process the environment
+% as one long paragraph and let TeX insert the penalties, but this
+% might cause problems for a very long environment.
+%
+% Line 1 : Insert \@labels (maybe) plus current_line
+% Line 2 : Save current line
+% Line 3 : penalty = interline + club ; Insert last line ; Save current line.
+% Line 4 : penalty = interline ; Insert last line ; Save current line.
+%
+% Then at the end:
+% Next line = 1 : Add null line.
+% Next line = 2 : Nothing.
+% Next line = 3 : penalty = interline + club + widow ; Insert last line.
+% Next line = 4 : penalty = interline + widow ; Insert last line.
+
+\def\FV@ListProcessLine#1{%
+ \hbox to \hsize{%
+ \kern\leftmargin
+ \hbox to \linewidth{%
+ \FV@LeftListNumber
+ \FV@LeftListFrame
+ \FancyVerbFormatLine{#1}\hss
+ \FV@RightListFrame}%
+ \hss}}
+
+\def\FV@ListProcessLine@i#1{%
+ \hbox{%
+ \ifvoid\@labels\else
+ \hbox to \z@{\kern\@totalleftmargin\box\@labels\hss}%
+ \fi
+ \FV@ListProcessLine{#1}}%
+ \let\FV@ProcessLine\FV@ListProcessLine@ii}
+
+\def\FV@ListProcessLine@ii#1{%
+ \setbox\@tempboxa=\FV@ListProcessLine{#1}%
+ \let\FV@ProcessLine\FV@ListProcessLine@iii}
+
+\def\FV@ListProcessLine@iii#1{%
+ {\advance\interlinepenalty\clubpenalty\penalty\interlinepenalty}%
+ \box\@tempboxa
+ \setbox\@tempboxa=\FV@ListProcessLine{#1}%
+ \let\FV@ProcessLine\FV@ListProcessLine@iv}
+
+\def\FV@ListProcessLine@iv#1{%
+ \penalty\interlinepenalty
+ \box\@tempboxa
+ \setbox\@tempboxa=\FV@ListProcessLine{#1}}%
+
+\def\FV@EndList{%
+ \FV@ListProcessLastLine
+ \FV@EndListFrame
+ \@endparenv
+ \endgroup
+ \@endpetrue}
+
+\def\FV@ListProcessLastLine{%
+ \ifx\FV@ProcessLine\FV@ListProcessLine@iv
+ {\advance\interlinepenalty\widowpenalty\penalty\interlinepenalty}%
+ \box\@tempboxa
+ \else
+ \ifx\FV@ProcessLine\FV@ListProcessLine@iii
+ {\advance\interlinepenalty\widowpenalty
+ \advance\interlinepenalty\clubpenalty
+ \penalty\interlinepenalty}%
+ \box\@tempboxa
+ \else
+ \ifx\FV@ProcessLine\FV@ListProcessLine@i
+ \FV@Error{Empty verbatim environment}{}%
+ \FV@ProcessLine{}%
+ \fi
+ \fi
+ \fi}
+
+% Verbatim environment:
+
+\def\FV@VerbatimBegin{\FV@List\z@}
+\def\FV@VerbatimEnd{\FV@EndList}
+
+\def\FVB@Verbatim{\FV@VerbatimBegin\FV@Scan}
+\def\FVE@Verbatim{\FV@VerbatimEnd}
+
+\DefineVerbatimEnvironment{Verbatim}{Verbatim}{}
+
+% With \UseVerbatim, we have to take care of some of the things
+% \end{} would do.
+
+\def\FV@UseVerbatim#1{%
+ \FV@VerbatimBegin#1\FV@VerbatimEnd
+ \@doendpe\global\@ignorefalse\ignorespaces}
+
+\def\VerbatimInput{\FV@Command{}{VerbatimInput}}
+\def\FVC@VerbatimInput#1{\FV@UseVerbatim{\FV@Input{#1}}}
+
+% LVerbatim environment:
+
+\def\FV@LVerbatimBegin{\FV@List\@ne}
+\def\FV@LVerbatimEnd{\FV@EndList}
+
+\def\FVB@LVerbatim{\FV@LVerbatimBegin\FV@Scan}
+\def\FVE@LVerbatim{\FV@LVerbatimEnd}
+
+\DefineVerbatimEnvironment{LVerbatim}{LVerbatim}{}
+
+\def\FV@LUseVerbatim#1{%
+ \FV@LVerbatimBegin#1\FV@LVerbatimEnd
+ \@doendpe\global\@ignorefalse\ignorespaces}
+
+\def\LVerbatimInput{\FV@Command{}{LVerbatimInput}}
+\def\FVC@LVerbatimInput#1{\FV@LUseVerbatim{\FV@Input{#1}}}
+
+% Frames:
+
+\def\FV@Frame@none{%
+ \let\FV@BeginListFrame\relax
+ \let\FV@LeftListFrame\relax
+ \let\FV@RightListFrame\relax
+ \let\FV@EndListFrame\relax}
+
+\def\FV@Frame@single{%
+ \let\FV@BeginListFrame\FV@BeginListFrame@Single
+ \let\FV@LeftListFrame\FV@LeftListFrame@Single
+ \let\FV@RightListFrame\FV@RightListFrame@Single
+ \let\FV@EndListFrame\FV@EndListFrame@Single}
+
+\def\FV@Frame@lines{%
+ \let\FV@BeginListFrame\FV@BeginListFrame@Lines
+ \let\FV@LeftListFrame\relax
+ \let\FV@RightListFrame\relax
+ \let\FV@EndListFrame\FV@EndListFrame@Lines}
+
+\def\FV@Frame@topline{%
+ \let\FV@BeginListFrame\FV@BeginListFrame@Lines
+ \let\FV@LeftListFrame\relax
+ \let\FV@RightListFrame\relax
+ \let\FV@EndListFrame\relax}
+
+\def\FV@Frame@bottomline{%
+ \let\FV@BeginListFrame\relax
+ \let\FV@LeftListFrame\relax
+ \let\FV@RightListFrame\relax
+ \let\FV@EndListFrame\FV@EndListFrame@Lines}
+
+\def\FV@BeginListFrame@Single{%
+ \lineskip\z@
+ \baselineskip\z@
+ \ifx\FancyVerbFillColor\relax
+ \let\FV@FrameFillLine\relax
+ \else
+ \@tempdima\FV@FrameRule\relax
+ \multiply\@tempdima-\tw@
+ \edef\FV@FrameFillLine{%
+ {\noexpand\FancyVerbFillColor{\vrule\@width\number\@tempdima sp}%
+ \kern-\number\@tempdima sp}}%
+ \fi
+ \FV@SingleFrameLine
+ \penalty\@M
+ \FV@SingleFrameSep
+ \penalty\@M}
+
+\def\FV@SingleFrameLine{%
+ \hbox to\z@{%
+ \kern\leftmargin
+ \FancyVerbRuleColor{\vrule \@width\linewidth \@height\FV@FrameRule}%
+ \hss}}
+
+\def\FV@BeginListFrame@Lines{%
+ \begingroup
+ \lineskip\z@skip
+ \baselineskip\z@skip
+ \FV@SingleFrameLine
+ \kern\FV@FrameSep\relax
+ \endgroup}%
+
+\def\FV@EndListFrame@Lines{%
+ \begingroup
+ \baselineskip\z@skip
+ \kern\FV@FrameSep\relax
+ \FV@SingleFrameLine
+ \endgroup}
+
+\def\FV@SingleFrameSep{%
+ \hbox to \z@{%
+ \kern\leftmargin
+ \hbox to\linewidth{%
+ \FancyVerbRuleColor{%
+ \vrule\@width\FV@FrameRule\relax
+ \ifx\FancyVerbFillColor\relax
+ \hfil
+ \else
+ {\FancyVerbFillColor\leaders\hrule\@height\FV@FrameSep\hfil}%
+ \fi
+ \vrule\@width\FV@FrameRule\relax}}%
+ \hss}}
+
+\def\FV@LeftListFrame@Single{%
+ \strut
+ {\FancyVerbRuleColor{\vrule \@width\FV@FrameRule}}%
+ \FV@FrameFillLine
+ \kern\FV@FrameSep}
+
+\def\FV@RightListFrame@Single{%
+ \kern\FV@FrameSep
+ {\noexpand\leavevmode\FancyVerbRuleColor{\vrule\@width\FV@FrameRule}}}
+
+\def\FV@EndListFrame@Single{%
+ \penalty\@M
+ \FV@SingleFrameSep
+ \penalty\@M
+ \FV@SingleFrameLine}
+
+\define@key{FV}{framerule}{%
+ \@tempdima=#1\relax
+ \edef\FV@FrameRule{\number\@tempdima sp\relax}}
+\def\KV@FV@framerule@default{\let\FV@FrameRule\fboxrule}
+
+\define@key{FV}{framesep}{%
+ \@tempdima=#1\relax
+ \edef\FV@FrameSep{\number\@tempdima sp\relax}}
+\def\KV@FV@framesep@default{\let\FV@FrameSep\fboxsep}
+
+\fvset{framerule,framesep}
+
+\define@key{FV}{rulecolor}{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\FV@None
+ \let\FancyVerbRuleColor\relax
+ \else
+ \let\FancyVerbRuleColor\@tempa
+ \fi}
+
+\define@key{FV}{fillcolor}{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\FV@None
+ \let\FancyVerbFillColor\relax
+ \else
+ \let\FancyVerbFillColor\@tempa
+ \fi}
+
+\fvset{rulecolor=none,fillcolor=none}
+
+\def\FV@Frame@double{%
+ \let\FV@FrameBegin\FV@FrameBegin@double
+ \let\FV@FrameLine\FV@FrameLine@double
+ \let\FV@FrameEnd\FV@FrameEnd@double}
+
+\define@key{FV}{frame}[none]{%
+ \@ifundefined{FV@Frame@#1}%
+ {\FV@Error{Frame style `#1' not defined.}\FV@eha}%
+ {\@nameuse{FV@Frame@#1}}}
+
+\fvset{frame=none}
+
+% Code line numbers:
+
+\newcounter{FancyVerbLine}
+
+\define@key{FV}{firstnumber}[auto]{%
+ \def\@tempa{#1}\def\@tempb{auto}%
+ \ifx\@tempa\@tempb
+ \def\FV@SetLineNo{%
+ \c@FancyVerbLine\FV@CodeLineNo
+ \advance\c@FancyVerbLine\m@ne}%
+ \else
+ \def\@tempb{last}%
+ \ifx\@tempa\@tempb
+ \let\FV@SetLineNo\relax
+ \else
+ \def\FV@SetLineNo{\c@FancyVerbLine#1}%
+ \fi
+ \fi}
+
+\def\FV@StepLineNo{%
+ \FV@SetLineNo
+ \def\FV@StepLineNo{\refstepcounter{FancyVerbLine}}%
+ \FV@StepLineNo}
+
+\def\theFancyVerbLine{\rmfamily\tiny\arabic{FancyVerbLine}}
+
+\define@key{FV}{numbers}[none]{%
+ \@ifundefined{FV@Numbers@#1}%
+ {\FV@Error{Numbers style `#1' not defined.}\FV@eha}%
+ {\@nameuse{FV@Numbers@#1}}}
+
+\def\FV@Numbers@none{\let\FV@LeftListNumber\relax}
+\def\FV@Numbers@left{%
+ \def\FV@LeftListNumber{\hbox to\z@{%
+ \hss\theFancyVerbLine\kern\FV@NumberSep}}}
+
+\define@key{FV}{numbersep}{%
+ \@tempdima=#1\relax
+ \edef\FV@NumberSep{\number\@tempdima sp\relax}}
+
+\fvset{numbers=none,numbersep=12pt,firstnumber=auto}
+
+%% BVERBATIM:
+
+\def\FV@BVerbatimBegin{%
+ \begingroup
+ \FV@UseKeyValues
+ \FV@BeginVBox
+ \let\FV@ProcessLine\FV@BProcessLine
+ \FV@FormattingPrep
+ \FV@ObeyTabsInit}%
+\def\FV@BVerbatimEnd{\FV@EndVBox\endgroup}
+
+\def\FV@BeginVBox{%
+ \leavevmode
+ \hbox\ifx\FV@boxwidth\relax\else to\FV@boxwidth\fi\bgroup
+ \ifcase\FV@baseline\vbox\or\vtop\or$\vcenter\fi\bgroup}
+\def\FV@EndVBox{\egroup\ifmmode$\fi\hfil\egroup}
+
+\define@key{FV}{boxwidth}{%
+ \def\@tempa{#1}\def\@tempb{auto}%
+ \ifx\@tempa\@tempb
+ \let\FV@boxwidth\relax
+ \else
+ \@tempdima=#1\relax
+ \edef\FV@boxwidth{\number\@tempdima sp}%
+ \fi}
+\def\KV@FV@boxwidth@default{\let\FV@boxwidth\relax}
+
+\define@key{FV}{baseline}{%
+ \if t#1\@empty\let\FV@baseline\@ne\else
+ \if c#1\@empty\let\FV@baseline\tw@\else\let\FV@baseline\z@\fi
+ \fi}
+
+\fvset{baseline=b,boxwidth}
+
+\def\FV@BProcessLine#1{\hbox{\FancyVerbFormatLine{#1}}}
+
+\def\FVB@BVerbatim{\FV@BVerbatimBegin\FV@Scan}
+\def\FVE@BVerbatim{\FV@BVerbatimEnd}
+
+\DefineVerbatimEnvironment{BVerbatim}{BVerbatim}{}
+
+\def\FV@BUseVerbatim#1{\FV@BVerbatimBegin#1\FV@BVerbatimEnd}
+
+\def\BVerbatimInput{\FV@Command{}{BVerbatimInput}}
+\def\FVC@BVerbatimInput#1{\FV@BUseVerbatim{\FV@Input{#1}}}
+
+%% SAVE VERBATIM:
+
+\def\SaveVerbatim{\FV@Environment{}{SaveVerbatim}}
+
+\def\FVB@SaveVerbatim#1{%
+ \@bsphack
+ \begingroup
+ \FV@UseKeyValues
+ \def\SaveVerbatim@Name{#1}%
+ \gdef\FV@TheVerbatim{}%
+ \def\FV@ProcessLine##1{%
+ \expandafter\gdef\expandafter\FV@TheVerbatim\expandafter{%
+ \FV@TheVerbatim\FV@ProcessLine{##1}}}%
+ \gdef\FV@TheVerbatim{}%
+ \FV@Scan}
+\def\FVE@SaveVerbatim{%
+ \expandafter\global\expandafter\let
+ \csname FV@SV@\SaveVerbatim@Name\endcsname\FV@TheVerbatim
+ \endgroup\@esphack}
+
+\DefineVerbatimEnvironment{SaveVerbatim}{SaveVerbatim}{}
+
+\def\FV@CheckIfSaved#1#2{%
+ \@ifundefined{FV@SV@#1}%
+ {\FV@Error{No verbatim text has been saved under name `#1'}\FV@eha}%
+ {#2{\csname FV@SV@#1\endcsname}}}
+
+\def\UseVerbatim{\FV@Command{}{UseVerbatim}}
+\def\FVC@UseVerbatim#1{\FV@CheckIfSaved{#1}{\FV@UseVerbatim}}
+
+\def\LUseVerbatim{\FV@Command{}{LUseVerbatim}}
+\def\FVC@LUseVerbatim#1{\FV@CheckIfSaved{#1}{\FV@LUseVerbatim}}
+
+\def\BUseVerbatim{\FV@Command{}{BUseVerbatim}}
+\def\FVC@BUseVerbatim#1{\FV@CheckIfSaved{#1}{\FV@BUseVerbatim}}
+
+
+% VERBATIM OUT:
+
+\newwrite\FV@OutFile
+
+\def\VerbatimOut{\FV@Environment{}{VerbatimOut}}
+
+\DefineVerbatimEnvironment{VerbatimOut}{VerbatimOut}{}
+
+\def\FV@DefineTabOut{%
+ \def\FV@Tab{}%
+ \@tempcnta=\FancyVerbTabSize\relax
+ \loop\ifnum\@tempcnta>\z@
+ \edef\FV@Tab{\FV@Tab\space}%
+ \advance\@tempcnta\m@ne
+ \repeat}
+
+%% SHORT VERBATIM:
+
+% \SaveVerb
+%
+% Note "\outer\def^^M{}". This is so that verbatim commands report an
+% error when encountering an end-of-line, rather than scanning to
+% the end of the file each time there is a missing verbatim delimiter.
+%
+% If scanning fails (and thus TeX ignores \FV@GetVerb), #1 is defined
+% to be empty, a group is ended, but \FancyVerbAfterSave is not invoked.
+
+\def\SaveVerb{\FV@Command{}{SaveVerb}}
+
+\begingroup
+\catcode`\^^M=\active%
+\gdef\FVC@SaveVerb#1#2{%
+ \@namedef{FV@SV@#1}{}%
+ \begingroup%
+ \FV@UseKeyValues%
+ \FV@CatCodes%
+ \outer\def^^M{\FV@EOL}%
+ \global\let\@tempg\FancyVerbAfterSave%
+ \catcode`#2=12%
+ \def\@tempa{\def\FancyVerbGetVerb####1####2}%
+ \expandafter\@tempa\string#2{\endgroup\@namedef{FV@SV@#1}{##2}\@tempg}%
+ \FancyVerbGetVerb\FV@EOL}%
+\endgroup
+
+\def\FV@EOL{%
+ \endgroup
+ \FV@Error%
+ {Could not find the end delimiter of a short verb command}%
+ {You probably just forget the end delimiter of a \string\Verb\space or
+ \string\SaveVerb^^J%
+ command, or you broke the literal text across input lines.^^J%
+ Hit <return> to procede.}}
+
+\define@key{FV}{aftersave}{\def\FancyVerbAfterSave{#1}}
+\fvset{aftersave=}
+
+\def\FV@UseVerb#1{\mbox{\FV@UseKeyValues\FV@FormattingPrep#1}}
+
+\def\UseVerb{\FV@Command{}{UseVerb}}
+\def\FVC@UseVerb#1{%
+ \@ifundefined{FV@SV@#1}%
+ {\FV@Error{Short verbatim text never saved to name `#1'}\FV@eha}%
+ {\FV@UseVerb{\@nameuse{FV@SV@#1}}}}
+
+\def\Verb{\FV@Command{}{Verb}}
+
+\begingroup
+\catcode`\^^M=\active%
+\gdef\FVC@Verb#1{%
+ \begingroup%
+ \FV@UseKeyValues%
+ \FV@FormattingPrep%
+ \FV@CatCodes%
+ \outer\def^^M{}%
+ \catcode`#1=12%
+ \def\@tempa{\def\FancyVerbGetVerb####1####2}%
+ \expandafter\@tempa\string#1{\mbox{##2}\endgroup}%
+ \FancyVerbGetVerb\FV@EOL}%
+\endgroup
+
+\def\DefineShortVerb{\FV@Command{}{DefineShortVerb}}
+\def\FVC@DefineShortVerb#1{%
+ \@ifundefined{FV@CC@\string#1}%
+ {\FVC@@DefineShortVerb#1}%
+ {\FV@Error{`\expandafter\@gobble\string#1' is already a short
+ verb character.}\FV@eha}}
+
+\def\FVC@@DefineShortVerb#1{%
+ \begingroup
+ \lccode`\~=`#1%
+ \lowercase{\gdef\@tempg{\edef~}\global\let\@temph~}%
+ \endgroup
+ \expandafter\let\csname FV@AC@\string#1\endcsname\@temph
+ \expandafter\edef\csname FV@CC@\string#1\endcsname{\the\catcode`#1}%
+ \expandafter\let\csname FV@KV@\string#1\endcsname\FV@KeyValues
+ \@tempg{%
+ \let\noexpand\FV@KeyValues\expandafter\noexpand
+ \csname FV@KV@\string#1\endcsname
+ \noexpand\FVC@Verb\expandafter\@gobble\string#1}%
+ \expandafter\def\expandafter\dospecials\expandafter{\dospecials\do#1}%
+ \expandafter\def\expandafter\@sanitize\expandafter{\@sanitize\@makeother#1}%
+ \catcode`#1=\active}%
+
+\def\UndefineShortVerb#1{%
+ \@ifundefined{FV@CC@\string#1}%
+ {\FV@Error{`\expandafter\@gobble\string#1' is not a short
+ verb character}\FV@eha}%
+ {\FV@UndefineShortVerb#1}}
+\def\FV@UndefineShortVerb#1{%
+ \catcode`#1=\csname FV@CC@\string#1\endcsname
+ \begingroup
+ \lccode`\~=`#1%
+ \lowercase{\gdef\@tempg{\let~}}%
+ \endgroup
+ \expandafter\@tempg\csname FV@AC@\string#1\endcsname
+ \def\@tempa##1\do#1##2\@nil##3\@nil##4\@@nil{##3\def\dospecials{##1##2}\fi}%
+ \expandafter\@tempa\dospecials\@nil\iftrue\@nil\do#1\@nil\iffalse\@nil\@@nil
+ \def\@tempa##1\@makeother#1##2\@nil##3\@nil##4\@@nil{%
+ ##3\def\@sanitize{##1##2}\fi}%
+ \expandafter\@tempa\@sanitize\@nil\iftrue\@nil\do#1\@nil\iffalse\@nil\@@nil}
+
+% Moving verbatim. Need to worry about about using separate identifier
+% for this class of verbatim, and
+
+\def\SaveMVerb{\FV@Command{}{SaveMVerb}}
+
+\begingroup
+\catcode`\^^M=\active%
+\gdef\FVC@SaveMVerb#1#2{%
+ \@ifundefined{FV@SVM@#1}{}%
+ {\FV@Error{Moving verbatim name `#1' already used}%
+ {I will overwrite the old definition. Hit <return> to continue.}}%
+ \global\@namedef{FV@SVM@#1}{}%
+ \begingroup%
+ \let\FV@SavedKeyValues\FV@KeyValues%
+ \FV@UseKeyValues%
+ \FV@CatCodes%
+ \outer\def^^M{}%
+ \global\let\@tempg\FancyVerbAfterSave%
+ \catcode`#2=12%
+ \def\@tempa{\def\FancyVerbGetVerb####1####2}%
+ \expandafter\@tempa\string#2{%
+ \if@filesw
+ \FV@DefineWhiteSpace%
+ \let\FV@Space\space%
+ \let\FV@Tab\space%
+ \FV@MakeUnActive%
+ \let\protect\string
+ \immediate\write\@auxout{%
+ \noexpand\SaveGVerb[\FV@SavedKeyValues]{#1}\string#2##2\string#2}%
+ \fi
+ \endgroup%
+ \@namedef{FV@SV@#1}{##2}%
+ \@tempg}%
+ \FancyVerbGetVerb\FV@EOL}%
+\endgroup
+
+\def\SaveGVerb{\FV@Command{}{SaveGVerb}}
+
+\begingroup
+\catcode`\^^M=\active%
+\gdef\FVC@SaveGVerb#1#2{%
+ \global\@namedef{FV@SVG@#1}{}%
+ \begingroup%
+ \FV@UseKeyValues%
+ \FV@CatCodes%
+ \outer\def^^M{}%
+ \catcode`#2=12%
+ \def\@tempa{\def\FancyVerbGetVerb####1####2}%
+ \expandafter\@tempa\string#2{\endgroup\global\@namedef{FV@SVG@#1}{##2}}%
+ \FancyVerbGetVerb\FV@EOL}%
+\endgroup
+
+\def\UseMVerb{\protect\pUseMVerb}
+
+\def\pUseMVerb{\FV@Command{}{pUseMVerb}}
+
+\def\FVC@pUseMVerb#1{%
+ \expandafter\ifx \csname FV@SVM@#1\endcsname\relax
+ \expandafter\ifx \csname FV@SVG@#1\endcsname\relax
+ \@warning{Moving verbatim text not defined for name `#1'}\FV@eha
+ {\bf ??}%
+ \else
+ \FV@UseVerb{\@nameuse{FV@SVG@#1}}%
+ \fi
+ \else
+ \FV@UseVerb{\@nameuse{FV@SVM@#1}}%
+ \fi}
+
+\expandafter\ifx\csname documentclass\endcsname\relax
+
+ \def\lrbox#1{%
+ \edef\@tempa{%
+ \endgroup
+ \setbox#1\hbox{%
+ \begingroup\aftergroup}%
+ \def\noexpand\@currenvir{\@currenvir}}%
+ %\def\noexpand\@currenvline{\on@line}}%
+ \@tempa
+ \@endpefalse
+ \bgroup
+ \ignorespaces}
+ \def\endlrbox{\unskip\egroup}
+
+\fi
+
+\@input{fancyvrb.rc}
+
+\endinput
+\define@key{FV}{noligs}{%
+ \def\FV@ActiveLigs{}%
+ \def\FV@DefineLigs{}%
+ \@tfor\@tempa:=#1\do{%
+ {\lccode`\~=`#1\relax\lowercase{\gdef\@tempg{~}}}%
+ \expandafter\FV@addtonoligs\@tempg}}
+\def\FV@addtonoligs#1{%
+ \expandafter\def\expandafter\FV@ActiveLigs\expandafter{%
+ \FV@ActiveLigs\catcode`#1=\active}%
+ \expandafter\def\expandafter\FV@DefineLigs\expandafter{%
+ \FV@DefineLigs\edef#1{{\string#1}}}}
+
+%\fvset{noligs={>,-}}
+%\fvset{suppressligs=\>}
+%\fvset{suppressligs=\<}
+
+%% END fancyvrb.sty
+
+Error messages to void:
+
+\FV@CheckBadBegin
+\FV@CheckBadEnd
+
+
+
+\def\FV@Error#1#2{%
+ \edef\@tempc{#2}\expandafter\errhelp\expandafter{\@tempc}%
+ \typeout{%
+ ^^J** FancyVerb Error:\space\space
+ Type \space H <return> \space for immediate help. **}%
+ \errmessage{#1^^J}}
+
diff --git a/usergrps/uktug/baskervi/6_2/spqr/gradient.pro b/usergrps/uktug/baskervi/6_2/spqr/gradient.pro
new file mode 100644
index 0000000000..44dba7a442
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/gradient.pro
@@ -0,0 +1,80 @@
+%!
+% PostScript header file gradient.ps
+% For the PSTricks gradient fillstyle.
+% Version: 0.94
+% Date: 93/05/12
+% For copying restrictions, see pstricks.doc or pstricks.tex.
+%
+% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).
+%
+% Syntax:
+% R0 G0 B0 R1 G1 B1 MidPoint NumLines Angle GradientFill
+
+/tx@GradientDict 40 dict def
+tx@GradientDict begin
+/GradientFill {
+ rotate
+ /MidPoint ED
+ /NumLines ED
+ /LastBlue ED
+ /LastGreen ED
+ /LastRed ED
+ /FirstBlue ED
+ /FirstGreen ED
+ /FirstRed ED
+ % This avoids gaps due to rounding errors:
+ clip
+ pathbbox %leave llx,lly,urx,ury on stack
+ /y ED /x ED
+ 2 copy translate
+ y sub neg /y ED
+ x sub neg /x ED
+ % This avoids gaps due to rounding errors:
+ LastRed FirstRed add 2 div
+ LastGreen FirstGreen add 2 div
+ LastBlue FirstBlue add 2 div
+ setrgbcolor
+ fill
+ /YSizePerLine y NumLines div def
+ /CurrentY 0 def
+ /MidLine NumLines 1 MidPoint sub mul abs cvi def
+ MidLine NumLines 2 sub gt
+ { /MidLine NumLines def }
+ { MidLine 2 lt { /MidLine 0 def } if }
+ ifelse
+ MidLine 0 gt
+ {
+ /Red FirstRed def
+ /Green FirstGreen def
+ /Blue FirstBlue def
+ /RedIncrement LastRed FirstRed sub MidLine 1 sub div def
+ /GreenIncrement LastGreen FirstGreen sub MidLine 1 sub div def
+ /BlueIncrement LastBlue FirstBlue sub MidLine 1 sub div def
+ MidLine { GradientLoop } repeat
+ } if
+ MidLine NumLines lt
+ {
+ /Red LastRed def
+ /Green LastGreen def
+ /Blue LastBlue def
+ /RedIncrement FirstRed LastRed sub NumLines MidLine sub 1 sub div def
+ /GreenIncrement FirstGreen LastGreen sub NumLines MidLine sub 1 sub div def
+ /BlueIncrement FirstBlue LastBlue sub NumLines MidLine sub 1 sub div def
+ NumLines MidLine sub { GradientLoop } repeat
+ } if
+} def
+/GradientLoop {
+ 0 CurrentY moveto
+ x 0 rlineto
+ 0 YSizePerLine rlineto
+ x neg 0 rlineto
+ closepath
+ Red Green Blue setrgbcolor fill
+ /CurrentY CurrentY YSizePerLine add def
+ /Blue Blue BlueIncrement add def
+ /Green Green GreenIncrement add def
+ /Red Red RedIncrement add def
+} def
+
+end
+% END gradient.ps
diff --git a/usergrps/uktug/baskervi/6_2/spqr/gradient.sty b/usergrps/uktug/baskervi/6_2/spqr/gradient.sty
new file mode 100644
index 0000000000..46f1cc1580
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/gradient.sty
@@ -0,0 +1,4 @@
+%% BEGIN: gradient.sty
+\input gradient.tex
+\endinput
+%% END: gradient.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/gradient.tex b/usergrps/uktug/baskervi/6_2/spqr/gradient.tex
new file mode 100644
index 0000000000..cbb4561be7
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/gradient.tex
@@ -0,0 +1,74 @@
+%% BEGIN gradient.tex/gradient.sty
+%%
+%% Defines the gradient fillstyle for PSTricks.
+%%
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.tex or pstricks.doc for copying restrictions.
+%%
+%% See the PSTricks User's Guide for description.
+%%
+%% This uses the header file gradient.ps.
+%%
+%% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee).
+%
+% This defines a new fill style, "gradient", for use with PSTricks,
+% which has gradiated color. The following parameters are used:
+%
+% gradbegin=color : Beginning color.
+% gradend=color : Final color.
+% gradlines=int : Number of lines to use. The higher the number,
+% the slower the rendering.
+% gradmidpoint=num : Gradient color goes from gradbegin to gradend,
+% and then back to beginning. Midpoint (point
+% where "gradend" color appears, is gradmidpoint
+% from the top. (0 <= Gmidpoint <= 1).
+% gradangle=angle : Rotate image by angle.
+
+\message{ v\fileversion, \filedate}
+
+\csname GradientLoaded\endcsname
+\let\GradientLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex }\expandafter\next
+\fi
+
+\pstheader{gradient.pro}
+
+\newrgbcolor{gradbegin}{0 .1 .95}
+\def\psset@gradbegin#1{\pst@getcolor{#1}\psgradbegin}
+\psset@gradbegin{gradbegin}
+
+\newrgbcolor{gradend}{0 1 1}
+\def\psset@gradend#1{\pst@getcolor{#1}\psgradend}
+\psset@gradend{gradend}
+
+\def\psset@gradlines#1{%
+ \pst@getint{#1}\psgradlines
+ \ifnum\psgradlines<2
+ \@pstrickserr{gradlines must be at least 2}\@epha
+ \def\psgradlines{2 }%
+ \fi}
+\psset@gradlines{300}
+
+\def\psset@gradmidpoint#1{\pst@checknum{#1}\psgradmidpoint}
+\psset@gradmidpoint{.9}
+
+\def\psset@gradangle#1{\pst@getangle{#1}\psk@gradangle}
+\psset@gradangle{0}
+
+\def\psfs@gradient{%
+ %\pst@fill{%
+\addto@pscode{gsave
+ gsave \pst@usecolor\psgradbegin currentrgbcolor grestore
+ gsave \pst@usecolor\psgradend currentrgbcolor grestore
+ \psgradlines
+ \psgradmidpoint
+ \psk@gradangle
+ tx@GradientDict begin GradientFill end grestore}}
+
+\endinput
+%% END gradient.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/multido.sty b/usergrps/uktug/baskervi/6_2/spqr/multido.sty
new file mode 100644
index 0000000000..6e5bfec8af
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/multido.sty
@@ -0,0 +1,4 @@
+%% BEGIN multido.sty
+\input multido.tex
+\endinput
+%% END multido.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/multido.tex b/usergrps/uktug/baskervi/6_2/spqr/multido.tex
new file mode 100644
index 0000000000..22d0469c1d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/multido.tex
@@ -0,0 +1,279 @@
+%% BEGIN multido.tex/multido.sty
+%%
+\def\fileversion{1.4}
+\def\filedate{93/01/14}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% DESCRIPTION:
+%% multido.tex/multido.sty contains a loop macro, \multido, that supports
+%% fixed-point addition and has a nice interface. Among other things, it
+%% is useful for pictures and putting numbers on axes. multido.tex
+%% is compatible with most TeX macro packages, including Plain TeX, LaTeX,
+%% AmSTeX, and Ams-LaTeX.
+%%
+%% INSTALLATION:
+%% Put this file where your TeX looks for inputs, under the name multido.tex.
+%% Name a copy multido.sty to use as a LaTeX style option, or create a file
+%% multido.sty with the lines:
+%% \input multido.tex
+%% \endinput
+%%
+%% DOCUMENTATION:
+%% See multido.doc, which might be appended to this file.
+%%
+%% COPYING:
+%% Copying of part or all of this file is allowed under the following
+%% conditions only:
+%% (1) You may freely distribute unchanged copies of the file. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of the file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the file, for personal use or for
+%% distribution, as long as credit is given where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% this file or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+%% CODE:
+% These macros use TeX primitives, plus the Plain TeX commands:
+% \dimen@, \dimen@i, \count@, \newcount, \newtoks, \@ne, \tw@, \@z@.
+%
+% Check if file is loaded, announce file on terminal, and take care of @:
+%
+
+
+\message{ v\fileversion, \filedate\space <tvz>}
+
+\csname MultidoLoaded\endcsname
+\let\MultidoLoaded\endinput
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% These are some useful hacks. "\multido@dimtonum" strips the value of "#1", a dimension register, of the "pt", and assigns the result to "#2", a command sequence.
+
+\def\@empty{}
+\def\@nnil{\@nil}
+\def\multido@dimtonum#1#2{\edef#2{\multido@@dimtonum#1}}
+\def\multido@@dimtonum#1{\expandafter\multido@@@dimtonum\the#1}
+\edef\next{%
+ \noexpand\def\noexpand\multido@@@dimtonum##1\string p\string t{##1}}
+\next
+
+% "\multido@count" stores the number of repetitions. "\multidocount" keeps track of the iteration. These are also used locally as scratch counters by "\FPadd@". "\multido@stuff" is used to store the <stuff> that is to be repeated.
+
+\newcount\multido@count
+\newcount\multidocount
+\newtoks\multido@stuff
+
+\def\multido{\multido@{}{\begingroup}{\endgroup}}
+\def\mmultido{\multido@{\multido@stepvar}{\begingroup}{\endgroup}}
+\def\Multido{\multido@{}{}{}}
+\def\MMultido{\multido@{\multido@stepvar}{}{}}
+
+% "\multido@initvar" processes the variable declarations, initializing the value of the variables and defining "\multido@stepvar" to increment the variables with each repetition. "\multido@count" is set to the number of repetitions.
+
+\long\def\multido@#1#2#3#4#5#6{%
+ #2%
+ \multido@count=#5\relax
+ \ifnum\multido@count=\z@\else\multido@@{#1}{#4}{#6}\fi
+ #3%
+ \ignorespaces}
+\def\multido@@#1#2#3{%
+ \def\multido@stepvar{}%
+ \def\do{\noexpand\do\noexpand}%
+ \multido@initvar#2,\@nil,%
+ \let\do\noexpand
+ \edef\multido@stepvar{\multido@stepvar}%
+ \ifnum\multido@count<\z@\multido@count=-\multido@count\fi
+ \multidocount=1\relax
+ #1%
+ \multido@stuff{#3}%
+ \multido@loop}
+\def\multido@loop{%
+ \the\multido@stuff
+ \ifnum\multidocount<\multido@count
+ \advance\multidocount\@ne
+ \multido@stepvar
+ \expandafter\multido@loop
+ \fi}
+\def\multidostop{\multidocount=\multido@count}
+\def\multido@badvar{%
+ \multido@count=0
+ \errhelp{\multido command will be skipped.}%
+ \errmessage{Bad \string\multido\space variable declaration}}
+\def\multido@initvar#1,{%
+ \def\multido@temp{#1}%
+ \ifx\multido@temp\@nnil\else
+ \ifx\multido@temp\@empty\else
+ \multido@@initvar#1\@nil=+\@nil\relax
+ \fi
+ \expandafter\multido@initvar
+ \fi}
+\def\multido@@initvar#1=#2+#3\@nil#4\relax{%
+ \ifx\@empty#4\@empty
+ \multido@badvar
+ \else
+ \multido@vartype#1\@empty
+ \ifx\multido@temp\relax
+ \multido@badvar
+ \else
+ \multido@temp{#2}{#3}#1%
+ \fi
+ \fi}
+\def\multido@vartype#1{%
+ \ifcat\noexpand\@nil\noexpand#1%
+ \expandafter\multido@@vartype\string#1\@nil
+ \else
+ \let\multido@temp\relax
+ \fi}
+\def\multido@@vartype#1#2#3\@nil{%
+ \expandafter\let\expandafter\multido@temp
+ \csname multido@init@#2\endcsname}
+\def\MultidoCheckNames{%
+ \let\multido@@@vartype\multido@vartype
+ \def\multido@vartype##1{%
+ \ifx\undefined##1%
+ \multido@@@vartype{##1}%
+ \else
+ \errhelp{\multido command will be skipped.}%
+ \errmessage{Multido variable \string##1 already defined}%
+ \let\multido@temp\relax
+ \fi}}
+
+% For each variable type, we must now define \multido@init<vartype>. The syntax of these macros is:
+%
+% \multido@init@<vartype>{initial value}{increment}{variable}
+%
+% and the outcome should be:
+%
+% 1. Set <variable> to the initial value.
+% 2. Invoke \multido@addtostep{step stuff}, where <step stuff> is whatever should be done to increment the variable. <step stuff> is expanded first, with expansion suppressed by "\do".
+
+\def\multido@addtostep#1{\edef\multido@stepvar{\multido@stepvar#1}}
+
+% Variable type for dimensions ("d", "D"):
+
+\def\multido@init@d#1#2#3{%
+ \expandafter\ifx\csname pssetlength\endcsname\relax
+ \dimen@=#1\relax\dimen@i=#2\relax
+ \else
+ \pssetlength\dimen@{#1}\pssetlength\dimen@i{#2}%
+ \fi
+ \edef#3{\number\dimen@ sp}%
+ \ifnum\multido@count<\z@\dimen@i=-\dimen@i\fi
+ \multido@addtostep{\do\multido@step@d{\do#3}{\number\dimen@i sp}}}
+\def\multido@step@d#1#2{%
+ \dimen@=#1\advance\dimen@#2
+ \edef#1{\number\dimen@ sp}}%
+\def\multido@init@D{\multido@init@d}
+
+% Variable type for integers ("i", "I"):
+
+\def\multido@init@i#1#2#3{%
+ \count@=#1\relax
+ \edef#3{\the\count@}%
+ \count@=#2\relax
+ \ifnum\multido@count<\z@\count@=-\count@\fi
+ \multido@addtostep{\do\multido@step@i{\do#3}{\the\count@}}}
+\def\multido@step@i#1#2{%
+ \count@=#1\advance\count@ by #2
+ \edef#1{\the\count@}}
+\def\multido@init@I{\multido@init@i}
+
+% Variable type for reals ("r", "R").
+
+\def\multido@init@r#1#2#3{%
+ \dimen@=#1pt
+ \multido@dimtonum\dimen@#3%
+ \dimen@=#2pt
+ \ifnum\multido@count<\z@\dimen@=-\dimen@\fi
+ \multido@addtostep{\do\multido@step@r{\do#3}{\number\dimen@ sp}}}
+\def\multido@step@r#1#2{%
+ \dimen@=#1pt\advance\dimen@#2
+ \multido@dimtonum\dimen@#1}
+\def\multido@init@R{\multido@init@r}
+
+% Variable type for numbers ("n", "N").
+
+\def\multido@init@n#1#2#3{%
+ \edef#3{#1}%
+ \ifnum\multido@count<\z@\expandafter\FPsub\else\expandafter\FPadd\fi
+ {0}{#2}\multido@temp
+ \multido@addtostep{\do\FPadd{\do#3}{\multido@temp}{\do#3}}}
+\def\multido@init@N{\multido@init@n}
+
+% Simple fixed-point addition couldn't be harder. "\dimen@" and "\dimen@i" are used as scratch {\em counters} (to avoid creating a new counter). "\count@", "\multido@count" and "\multidocount" are also used as scratch counters.
+
+% This is probably pretty close to optimal, given the requirements that leading and trailing spaces be OK in the arguments, and that there need not be any numbers to the left of the decimal.
+
+\def\FPadd#1#2#3{%
+ \edef\multido@temp{#1..\noexpand\@nil#2}%
+ \expandafter\FPadd@\multido@temp..\@nil
+ \let#3\multido@temp}
+\def\FPsub#1#2{%
+ \edef\multido@temp{\noexpand\FPsub@#2\noexpand\@empty}%
+ \FPadd{#1}{\multido@temp}}
+\def\FPsub@#1{\ifx-#1\else-#1\fi}
+\def\FPadd@#1.#2.#3\@nil#4.#5.#6\@nil{%
+ \begingroup
+ \def\multido@temp{\let\next\relax}%
+ \let\next\z@
+ \afterassignment\multido@temp\count@=#1\next
+ \dimen@i=0#2sp\relax
+ \let\next\z@
+ \afterassignment\multido@temp\multido@count=#4\next
+ \multidocount=0#5\relax
+ \dimen@=\number\count@ sp
+ \count@=\@ne
+ \FPadd@@@#500000000\@nil
+ \ifnum#11<\z@
+ \count@=-\tw@
+ \dimen@=-\dimen@
+ \fi
+ \ifnum#41<\z@
+ \count@=-\count@
+ \multido@count=-\multido@count
+ \fi
+ \ifnum\count@>\z@
+ \advance\multido@count\dimen@
+ \advance\multidocount\dimen@i
+ \ifnum\multidocount<\multido@temp\relax
+ \advance\multidocount\multido@temp\relax
+ \else
+ \advance\multido@count\@ne
+ \fi
+ \advance\count@-3
+ \else
+ \advance\multido@count-\dimen@
+ \advance\multidocount-\dimen@i
+ \ifnum\multido@count<\z@
+ \multido@count=-\multido@count
+ \multidocount=-\multidocount
+ \advance\count@\@ne
+ \else
+ \ifnum\multido@count=\z@
+ \ifnum\multidocount<\z@
+ \multidocount=-\multidocount
+ \advance\count@\@ne
+ \fi
+ \fi
+ \fi
+ \ifnum\multidocount<\z@
+ \advance\multidocount\multido@temp
+ \advance\multido@count-\@ne
+ \fi
+ \advance\multidocount\multido@temp\relax
+ \fi
+ \expandafter\FPadd@@\the\multidocount\@empty\@nil
+ \endgroup}
+\def\FPadd@@#1#2#3\@nil{\xdef\multido@temp{%
+ \ifnum\count@=-1-\fi
+ \the\multido@count\ifx#2\@empty\else.#2#3\fi}}
+\def\FPadd@@@#1#2#3#4#5#6#7#8#9\@nil{\def\multido@temp{1#9}}
+
+\catcode`\@=\TheAtCode\relax
+\endinput
+%% END multido.tex/multido.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/palette.sty b/usergrps/uktug/baskervi/6_2/spqr/palette.sty
new file mode 100644
index 0000000000..352b31e734
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/palette.sty
@@ -0,0 +1,4 @@
+%% BEGIN palette.sty
+\input palette.tex
+\endinput
+%% END palette.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/palette.tex b/usergrps/uktug/baskervi/6_2/spqr/palette.tex
new file mode 100644
index 0000000000..6c96c02f03
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/palette.tex
@@ -0,0 +1,253 @@
+\def\filename{palette.tex}
+\def\fileversion{0.91}
+\def\filedate{92/09/02}
+%
+% Send comments to the author: Fred Knight (knight@ll.mit.edu)
+%
+% Purpose:
+% Macros to get colors from a palette.
+% For use with PSTricks version v0.91 and later.
+% These macros allow the user to select colors from a palette derived
+% from the Openwindows file rgbcolors.txt, which contains about 140
+% distinct colors, not including different shades and gray levels.
+% The user can also display the palette and add to it.
+% Usage:
+% \palette
+% the list of colors and values, only an internal list of colors
+% \addtopalette[type]{name}{values}
+% add a color to \palette
+% type---an integer denoting the type of values
+% 1 = rgb, default, 3 numbers between 0 (low) and 1 (high)
+% 2 = hsb, 3 numbers between 0 (low) and 1 (high)
+% 3 = cmyk, 4 numbers between 0 (low) and 1 (high)
+% 4 = gray, 1 number between 0 (low) and 1 (high)
+% name---the color's name as stored in \palette,
+% usually all lowercase
+% values---numbers according to the type of color
+% Examples:
+% \addtopalette{mud}{0.6 0.4 0.2}
+% \addtopalette[4]{mudgray}{0.4}
+% \addrgb{name}{values}
+% add an rgb color called name to the palette
+% \addhsb{name}{values}
+% add an hsb color called name to the palette
+% \addcmyk{name}{values}
+% add an cmyk color called name to the palette
+% \addgray{name}{values}
+% add an gray color called name to the palette
+% \getcolor[altname]{name}
+% analogous to \newrgbcolor but get values from
+% \palette and define a macro \name or \altname, if present.
+% Examples:
+% \getcolor{thistle} {\thistle The color is slightly off purple.}
+% \getcolor[goo]{brown} {\goo Its fragrance graced the table.}
+% \showpalette
+% macro to show all the colors in \palette
+% Restrictions:
+% Works only with PostScript and requires PSTricks.
+% Acknowledgement:
+% Thanks to Tim Van Zandt for many helpful comments.
+%
+%
+% =====>> Preliminaries: Is PSTricks loaded? Change catcode of @.
+%
+\ifx\pstricksloaded\relax\else\input pstricks\fi
+\typeout{`\filename' v\fileversion\space\space <\filedate> (Fred Knight)}
+\edef\theatcode{\the\catcode`\@}
+\ifnum\theatcode=13\let\theat @\fi
+\catcode`\@=11\relax
+%
+% =====>> User macros for adding colors to \palette: 4 types
+%
+\def\addtopalette{\@ifnextchar [{\@addtopalette}{\@addtopalette[1]}}
+\def\@addtopalette[#1]#2#3{\edef\palette{\palette(#2,#1,#3)}}
+\def\addrgb{\addtopalette[1]}
+\def\addhsb{\addtopalette[2]}
+\def\addcmyk{\addtopalette[3]}
+\def\addgray{\addtopalette[4]}
+%
+% =====>> User macro to define a new color name.
+%
+\def\getcolor{\@ifnextchar [{\@getcolor}{\@getcolor[\@nil]}}
+\def\@getcolor[#1]#2{%
+ \ifx#1\@nil\def\altname{#2}\else\def\altname{#1}\fi
+ \def\pst@tempg##1(#2,##2,##3)##4\@nil{%
+ \ifcase##2\@pstrickserr{Color `#2' not found}\@eha
+ \or\newrgbcolor{\altname}{##3}%
+ \or\newhsbcolor{\altname}{##3}%
+ \or\newcmykcolor{\altname}{##3}%
+ \or\newgray{\altname}{##3}%
+ \fi}%
+ \expandafter\pst@tempg\palette(#2,0,)\@nil}
+%
+% =====>> \showpalette and its parts.
+%
+% Define 4 dimensions for \showpalette
+\newdimen\PalBoxwd\PalBoxwd=\hsize
+\newdimen\PalBoxht\PalBoxht=\baselineskip
+\newdimen\savedparindent
+\newdimen\savedparskip
+% Each color gets a rule with text of two colors (black & white) in it.
+\def\paletteBox{\vrule height\PalBoxht width\PalBoxwd depth1ex}
+% Each color has 2 entries: one with black text, the other with white.
+\def\paletteEntry#1#2#3{%
+ \hbox to 0.5\hsize{ #1\hss
+ \ifcase#2\or rgb\or hsb\or cmyk\or gray\fi:#3 }}
+\def\showpalette{\edef\pst@tempa{\palette(NoMoreColors,0, 0)}%
+ \savedparskip=\parskip\parskip0pt
+ \savedparindent=\parindent\parindent0pt\par
+ \expandafter\thepalette\pst@tempa
+ \parindent=\savedparindent
+ \parskip=\savedparskip}
+% \thepalette loops through the entries of \palette.
+\def\thepalette(#1,#2,#3){%
+ \ifnum#2=0
+ \let\next\relax
+ \else
+ \leavevmode
+ \hbox{%
+ \pstVerb{#3 \ifcase#2\or setrgbcolor\or sethsbcolor\or
+ setcmykcolor\or setgray\fi}%
+ \paletteBox\hskip-\hsize
+ \pstVerb{0 setgray}\paletteEntry{#1}{#2}{#3}% black text
+ \pstVerb{1 setgray}\paletteEntry{#1}{#2}{#3}}% white text
+ \let\next\thepalette
+ \par\vskip1pt
+ \fi\next}
+%
+% =====>> The palette of colors; derived from OPENWINDOWS/rgbcolors.txt.
+%
+\def\palette{%
+% format: (name,type, values)
+% where
+% name = name of the color
+% type = 1 for rgb, 2 for hsb, 3 for cmyk, 4 for gray
+% values = color values in the type specified
+ (snow,1,1.00 0.98 0.98)% The color snow has r=1.00, b=0.98, and g=0.98.
+ (ghostwhite,1,0.97 0.97 1.00)%
+ (whitesmoke,1,0.96 0.96 0.96)%
+ (gainsboro,1,0.86 0.86 0.86)%
+ (floralwhite,1,1.00 0.98 0.94)%
+ (oldlace,1,0.99 0.96 0.90)%
+ (linen,1,0.98 0.94 0.90)%
+ (antiquewhite,1,0.98 0.92 0.84)%
+ (papayawhip,1,1.00 0.94 0.84)%
+ (blanchedalmond,1,1.00 0.92 0.80)%
+ (bisque,1,1.00 0.89 0.77)%
+ (peachpuff,1,1.00 0.85 0.73)%
+ (navajowhite,1,1.00 0.87 0.68)%
+ (moccasin,1,1.00 0.89 0.71)%
+ (cornsilk,1,1.00 0.97 0.86)%
+ (ivory,1,1.00 1.00 0.94)%
+ (lemonchiffon,1,1.00 0.98 0.80)%
+ (seashell,1,1.00 0.96 0.93)%
+ (honeydew,1,0.94 1.00 0.94)%
+ (mintcream,1,0.96 1.00 0.98)%
+ (azure,1,0.94 1.00 1.00)%
+ (aliceblue,1,0.94 0.97 1.00)%
+ (lavender,1,0.90 0.90 0.98)%
+ (lavenderblush,1,1.00 0.94 0.96)%
+ (mistyrose,1,1.00 0.89 0.88)%
+ (white,1,1.00 1.00 1.00)%
+ (black,1,0.00 0.00 0.00)%
+ (midnightblue,1,0.10 0.10 0.44)%
+ (navy,1,0.00 0.00 0.50)%
+ (navyblue,1,0.00 0.00 0.50)%
+ (cornflowerblue,1,0.39 0.58 0.93)%
+ (darkslateblue,1,0.28 0.24 0.55)%
+ (slateblue,1,0.42 0.35 0.80)%
+ (mediumslateblue,1,0.48 0.41 0.93)%
+ (lightslateblue,1,0.52 0.44 1.00)%
+ (mediumblue,1,0.00 0.00 0.80)%
+ (royalblue,1,0.25 0.41 0.88)%
+ (blue,1,0.00 0.00 1.00)%
+ (dodgerblue,1,0.12 0.56 1.00)%
+ (deepskyblue,1,0.00 0.75 1.00)%
+ (skyblue,1,0.53 0.81 0.92)%
+ (lightskyblue,1,0.53 0.81 0.98)%
+ (steelblue,1,0.27 0.51 0.71)%
+ (lightsteelblue,1,0.69 0.77 0.87)%
+ (lightblue,1,0.68 0.85 0.90)%
+ (powderblue,1,0.69 0.88 0.90)%
+ (paleturquoise,1,0.69 0.93 0.93)%
+ (darkturquoise,1,0.00 0.81 0.82)%
+ (mediumturquoise,1,0.28 0.82 0.80)%
+ (turquoise,1,0.25 0.88 0.82)%
+ (cyan,1,0.00 1.00 1.00)%
+ (lightcyan,1,0.88 1.00 1.00)%
+ (cadetblue,1,0.37 0.62 0.63)%
+ (mediumaquamarine,1,0.40 0.80 0.67)%
+ (aquamarine,1,0.50 1.00 0.83)%
+ (darkgreen,1,0.00 0.39 0.00)%
+ (darkolivegreen,1,0.33 0.42 0.18)%
+ (darkseagreen,1,0.56 0.74 0.56)%
+ (seagreen,1,0.18 0.55 0.34)%
+ (mediumseagreen,1,0.24 0.70 0.44)%
+ (lightseagreen,1,0.13 0.70 0.67)%
+ (palegreen,1,0.60 0.98 0.60)%
+ (springgreen,1,0.00 1.00 0.50)%
+ (lawngreen,1,0.49 0.99 0.00)%
+ (green,1,0.00 1.00 0.00)%
+ (chartreuse,1,0.50 1.00 0.00)%
+ (mediumspringgreen,1,0.00 0.98 0.60)%
+ (greenyellow,1,0.68 1.00 0.18)%
+ (limegreen,1,0.20 0.80 0.20)%
+ (yellowgreen,1,0.60 0.80 0.20)%
+ (forestgreen,1,0.13 0.55 0.13)%
+ (olivedrab,1,0.42 0.56 0.14)%
+ (darkkhaki,1,0.74 0.72 0.42)%
+ (khaki,1,0.94 0.90 0.55)%
+ (palegoldenrod,1,0.93 0.91 0.67)%
+ (lightgoldenrodyellow,1,0.98 0.98 0.82)%
+ (lightyellow,1,1.00 1.00 0.88)%
+ (yellow,1,1.00 1.00 0.00)%
+ (gold,1,1.00 0.84 0.00)%
+ (lightgoldenrod,1,0.93 0.87 0.51)%
+ (goldenrod,1,0.85 0.65 0.13)%
+ (darkgoldenrod,1,0.72 0.53 0.04)%
+ (rosybrown,1,0.74 0.56 0.56)%
+ (indianred,1,0.80 0.36 0.36)%
+ (saddlebrown,1,0.55 0.27 0.07)%
+ (sienna,1,0.63 0.32 0.18)%
+ (peru,1,0.80 0.52 0.25)%
+ (burlywood,1,0.87 0.72 0.53)%
+ (beige,1,0.96 0.96 0.86)%
+ (wheat,1,0.96 0.87 0.70)%
+ (sandybrown,1,0.96 0.64 0.38)%
+ (tan,1,0.82 0.71 0.55)%
+ (chocolate,1,0.82 0.41 0.12)%
+ (firebrick,1,0.70 0.13 0.13)%
+ (brown,1,0.65 0.16 0.16)%
+ (darksalmon,1,0.91 0.59 0.48)%
+ (salmon,1,0.98 0.50 0.45)%
+ (lightsalmon,1,1.00 0.63 0.48)%
+ (orange,1,1.00 0.65 0.00)%
+ (darkorange,1,1.00 0.55 0.00)%
+ (coral,1,1.00 0.50 0.31)%
+ (lightcoral,1,0.94 0.50 0.50)%
+ (tomato,1,1.00 0.39 0.28)%
+ (orangered,1,1.00 0.27 0.00)%
+ (red,1,1.00 0.00 0.00)%
+ (hotpink,1,1.00 0.41 0.71)%
+ (deeppink,1,1.00 0.08 0.58)%
+ (pink,1,1.00 0.75 0.80)%
+ (lightpink,1,1.00 0.71 0.76)%
+ (palevioletred,1,0.86 0.44 0.58)%
+ (maroon,1,0.69 0.19 0.38)%
+ (mediumvioletred,1,0.78 0.08 0.52)%
+ (violetred,1,0.82 0.13 0.56)%
+ (magenta,1,1.00 0.00 1.00)%
+ (violet,1,0.93 0.51 0.93)%
+ (plum,1,0.87 0.63 0.87)%
+ (orchid,1,0.85 0.44 0.84)%
+ (mediumorchid,1,0.73 0.33 0.83)%
+ (darkorchid,1,0.60 0.20 0.80)%
+ (darkviolet,1,0.58 0.00 0.83)%
+ (blueviolet,1,0.54 0.17 0.89)%
+ (purple,1,0.63 0.13 0.94)%
+ (mediumpurple,1,0.58 0.44 0.86)%
+ (thistle,1,0.85 0.75 0.85)%
+}
+\expandafter\catcode`\@=\theatcode\relax
+\ifnum\theatcode=13\let @\theat\fi
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pie-data.sh b/usergrps/uktug/baskervi/6_2/spqr/pie-data.sh
new file mode 100644
index 0000000000..3e535c22f1
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pie-data.sh
@@ -0,0 +1,190 @@
+#! /bin/sh
+
+# -*- Mode: Ksh -*-
+# piecharts-data.sh --- Automatic generation of data file for piecharts.sh
+# Author : Denis GIROU (CNRS/CIRCE - France) <girou@circe.fr>
+# Created the : Fri Dec 11 19:44:47 1992
+# Last mod. by : Denis GIROU (CNRS/CIRCE - France) <girou@circe.fr>
+# Last mod. the : Tue Jan 26 22:06:10 1993
+# Version : 1.1
+#
+# Description : piecharts-data.sh is a simple SHELL and AWK program to
+# generate data files expected by the associated
+# piecharts.sh script, to realize hight quality, greatly,
+# customizable grayscaled or colored pie charts in (La)TeX +
+# PostScript, with the PSTricks package of Timothy Van Zandt
+# <tvz@princeton.edu>.
+# The labels are written to be the outside labels of
+# the parts of the pie chart (with the numbers itself
+# below) and the percentages will be the inside labels
+# of the parts (see the description of piecharts.sh).
+# The parts will have gray colors, equally calculated
+# between black and white in function of the number
+# of the parts.
+# The variable LABEL_OTHERS contains the label used
+# to describe the part for the sum of the rest of the
+# value ("Others" by default).
+#
+# Syntax : piecharts-data.sh title nb_parts [PLAIN] <data_file \
+# >output_file
+# If the title has several words, they must be enclose
+# by the " symbol.
+# nb_parts is the number of the parts requested for the
+# pie chart. If they are more than nb_parts lines of data
+# (generally the case), the last part is the sum of all
+# the last parts. It must be less than 27.
+# By default, some LaTeX commands (\small, \\) are
+# inserted. If you want to generate plain TeX code,
+# use the TEX option.
+# You also can directly generate the pie chart, if you
+# pipe the result with the piecharts.sh script (see the
+# examples section):
+#
+# Input file format: Each line must contains two fields: a label and a
+# quantity. The quantities can be in non increase order.
+# Here is an example (suppress the first 2 characters
+# of each line):
+# LUU 3094
+# SOL 1438
+# LMD 365
+# LEG 267
+# PPM 248
+# MEF 236
+# ASF 122
+# DRT 57
+# AMB 33
+# TPR 18
+# RRS 9
+#
+# Examples : If you name these file vpusers.dat, you can simply type:
+# piecharts-data.sh "My title" 5 <vpusers.dat >vp.tmp
+# or directly:
+# piecharts-data.sh "My title" 5 <vpusers.dat \
+# | piecharts.sh 2 figure boxit >pie.tmp
+# If you want to generate plain TeX code:
+# piecharts-data.sh "My title" 5 plain <vpusers.dat \
+# | piecharts.sh 2 plain >pie.tmp
+#
+# Portability : Expected great. Tested on RS6000 under AIX 3.2 and
+# DECStation 3100 under Ultrix 4.3
+#
+# Known problems : None for the moment!
+#
+# History : (12/23/92) - rev. 1.0
+# (01/26/93) - rev. 1.1:
+# * suppression of lines longer than 78 characters
+# * add the PLAIN option to generate plain TeX code
+
+
+LABEL_OTHERS="Others" # For english people
+# LABEL_OTHERS="Autres" # For french people
+
+# Verification of the parameters
+if [ $# -lt 2 ]
+ then echo "You must give 2 or 3 parameters."
+ echo "Syntax: piecharts-data.sh title number_of_parts [PLAIN] \
+<data_file >out_file"
+ exit
+fi
+if [ $2 -lt 2 ]
+ then echo "The number_of_parts must be greater than 2."
+ exit
+fi
+if [ $2 -gt 26 ]
+ then echo "The number_of_parts must be less than 27."
+ exit
+fi
+if [ $# -eq 3 ] && [ $3 != "PLAIN" ] && [ $3 != "plain" ]
+ then echo "Syntax: piecharts-data.sh title number_of_parts [PLAIN] \
+<data_file >out_file"
+ exit
+fi
+
+# As some AWK versions doesn't accept the definition of external variables,
+# we create a temporary file with a first line containing the parameters,
+# and we copied the data after this line
+
+# The temporary files
+FILENAME1=/tmp/file1-pie.tmp
+FILENAME2=/tmp/file2-pie.tmp
+if [ -f $FILENAME1 ]
+ then rm $FILENAME1
+fi
+if [ -f $FILENAME2 ]
+ then rm $FILENAME2
+fi
+
+# The first line is : the title, the number of parts, the label for the others
+# parts ("Others" by default) and the total of the quantities (the second
+# fields of the data file)
+
+(echo $1 "|" $2 "|" $LABEL_OTHERS "|" `tee $FILENAME1 | awk '{TOT += $2} \
+ END{print TOT}'` ; cat $FILENAME1) >$FILENAME2
+
+# Beginning of the AWK program
+awk '
+BEGIN{FS="|"
+ ALPHABET="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ PARAM="NO"
+ }
+
+{
+ if (PARAM == "NO") {
+ # Parameters: title, nb_parts, label for "others parts and total of
+ # the quantities
+ PARAM="YES"
+ TITLE=$1
+ NB_PARTS=$2
+ LABEL_OTHERS=$3
+ TOTAL=$4
+ # Generation of the gray colors that the pie chart will use
+ # (equally calculated between the first black and the last white)
+ for (I=1 ; I<=NB_PARTS ; I++)
+ print "## \\newgray{mygray" substr(ALPHABET,I,1) "}{" \
+ 1 / (NB_PARTS-1) * (I-1) "}"
+ printf("\n%s\n\n",TITLE)
+ }
+ else {FS=" "
+ NB_DATA++
+ if (NB_DATA < NB_PARTS)
+ {PERCENTAGE = $2 / TOTAL * 100
+ printf("%s%s%3.1f%s%s%s%s%s%s\n",PERCENTAGE, \
+ " | {\\small ",PERCENTAGE,"\\%} | ",$1,"\\\\{\\small ", \
+ $2, "} | solid | mygray",substr(ALPHABET,NB_DATA,1))
+ }
+ else
+ TOTAL_REST += $2
+ LAST_LABEL = $1
+ }
+}
+
+# We must take care of the last part (the total for the last data lines if
+# nb_parts is less than the number of lines, the part for the last line only
+# otherwise)
+END{PERCENTAGE = TOTAL_REST / TOTAL * 100
+ if (NB_DATA == NB_PARTS)
+ printf("%s%s%3.1f%s%s%s%s%s%s\n",PERCENTAGE, \
+ " | {\\small ",PERCENTAGE,"\\%} | ",LAST_LABEL, \
+ "\\\\{\\small ",TOTAL_REST,"} | solid | mygray", \
+ substr(ALPHABET,NB_DATA,1))
+ else if (NB_DATA > NB_PARTS)
+ printf("%s%s%3.1f%s%s%s%s%s%s\n",PERCENTAGE, \
+ " | {\\small ",PERCENTAGE,"\\%} |",LABEL_OTHERS, \
+ "\\\\{\\small ",TOTAL_REST,"} | solid | mygray", \
+ substr(ALPHABET,NB_PARTS,1))
+ }' <$FILENAME2 >$FILENAME1
+
+
+# Check plain TeX mode
+if [ $# -eq 3 ]
+ then sed -e /\\\\\\\\/s//\\\\cr\ /g -e /\\\\small\ /s///g $FILENAME1
+ else cat $FILENAME1
+fi
+
+# Clean up the temporary files
+if [ -f $FILENAME1 ]
+ then rm $FILENAME1
+fi
+if [ -f $FILENAME2 ]
+ then rm $FILENAME2
+fi
diff --git a/usergrps/uktug/baskervi/6_2/spqr/piechart.sh b/usergrps/uktug/baskervi/6_2/spqr/piechart.sh
new file mode 100644
index 0000000000..626305fa19
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/piechart.sh
@@ -0,0 +1,364 @@
+#! /bin/sh
+
+# -*- Mode: Ksh -*-
+# piecharts.sh --- Creation of pie charts in (La)TeX + PostScript,
+# with PSTricks
+# Author : Denis GIROU (CNRS/CIRCE - France) <girou@circe.fr>
+# Created the : Fri Oct 16 21:53:41 1992
+# Last mod. by : Denis GIROU (CNRS/CIRCE - France) <girou@circe.fr>
+# Last mod. the : Tue Jan 26 21:15:55 1993
+# Version : 2.2
+#
+# Description : piecharts.sh is a simple SHELL and AWK program to
+# realize hight quality, greatly customizable, grayscaled
+# or colored pie charts in PostScript.
+# It uses (La)TeX and the splendid PSTricks package of
+# Timothy Van Zandt <tvz@princeton.edu>, available in
+# /anonymous@princeton.edu:/pub
+# It creates the (La)TeX (+ PSTricks) code for direct
+# insertion in a (La)TeX document of the pie chart generated.
+# It use a data file which describe the parts and the labels
+# for them.
+# You always can modify the generated code for more
+# personal and sophisticated result.
+#
+# Syntax : piecharts.sh [scale_factor] ([PLAIN] | [FIGURE] [BOXIT]) \
+# <data_file >output_file
+# Default scale factor is 1.
+# Default mode is LaTeX. In this case, use the FIGURE
+# option if you want to define the figure LaTeX environment
+# for the pie chart, and use the BOXIT option if you want
+# a box around this figure.
+# Use the PLAIN option if you want to generate a plain TeX
+# code (in this case, you cannot used the FIGURE and BOXIT
+# options).
+#
+# Input file : The fill styles are: none, solid, vlines, vlines*,
+# hlines, hlines*, crosshatch, crosshatch*
+# The predefined colors are : black, darkgray, gray,
+# lightgray, white, red, green, blue, cyan, magenta, yellow
+# You can easily define new gray or colors, or access to a
+# rgb palette with the palette.sty file of PSTricks.
+# You can also change a lot of parameters. See the
+# documentation of PSTricks for more customization.
+#
+# Input file format: You can add blanks lines and comments (beginning by #).
+# The default field separator is | You can change it at
+# the AWK level.
+# The first non-comment line has 3 fields for titles
+# (only the first is required), and after you must have one
+# line by part of the pie chart, with 5 or 6 fields each
+# (percentage, inside label, outside label, filling, color,
+# explode). The last one is optional and must be "yes" if
+# you want that this part will be explode in the pie chart.
+# Obviously, the total of the percentages must be 100, or
+# less.
+# You can add (La)TeX commands in the labels (\em, \small,
+# etc.), and separate lines by \\ in LaTeX and \cr in TeX.
+# The text attributes cannot act on multiple lines : you
+# must type {\em Paris}\\{\em France} for example in LaTeX.
+# Be careful of some (La)TeX special characters (see $
+# and % in the examples).
+# Here are two examples, using a LaTeX syntax (suppress
+# the first 2 characters of each line):
+#
+# # Data for the first example of pie charts
+#
+# # Title of the figure | Title for the table of figures | Label
+# Example 1 of pie chart
+#
+# # Value | Inside label | Outside label | Type of | Color
+# # | filling | fill
+# 20 | \small\$9.0M | {\em Paris}\\{\em France} | hlines | black
+# 35 | \small\$16.7M | {\em London}\\Great Britain | vlines | black
+# 45 | {\small\$23.1M}\\1991 | {\em Berlin}\\Germany | crosshatch | black
+#
+#
+# # Data for the second example of pie charts
+#
+# # Title of the figure | Title for the table of figures | Label
+# \bf Example 2 of pie chart | Pie Chart 2 | piechart2
+#
+# # Value | Inside | Outside label | Type of | Color of | Explode part
+# # | label | | filling | filling |
+# 2 | | 2\% \\ Last | solid | red | yes
+# 28 | | 28\% | solid | blue
+# 4 | | 4\% | solid | green
+# 47 | | 47\% \\ First | solid | magenta | yes
+# 19 | | 19\% | solid | cyan
+#
+#
+# Examples : If you name these files piechart1.dat and piechart2.dat,
+# you can simply type:
+# piecharts.sh 1.5 <piechart1.dat >piechart1.tmp
+# piecharts.sh 0.7 figure boxit <piechart2.dat >pie2.tmp
+# and just insert the two result files in a LaTeX document
+# at the right place...
+# There are no difference if you want to produce plain TeX
+# code. You only must put valid plain TeX commands in the
+# data files.
+#
+# Portability : Expected great. Tested on RS6000 under AIX 3.2 and
+# DECStation 3100 under Ultrix 4.3
+#
+# Known problems : - Obviously, take care of the labels for the small
+# parts. If they are too long or in a too big font, the
+# result will not be pretty...
+# - You must have the LANG environment variable to En_US
+# if your UNIX has the National Language Support (NLS)
+# (by instance, amusing problems arrive with LANG=Fr_FR ...)
+#
+# Thanks : Timothy Van Zandt for the great work of PSTricks, tests
+# and ideas for the plain TeX mode.
+#
+# History : (10/16/92) - rev. 1.0
+# (10/20/92) - rev. 1.1:
+# * increase the portability by suppression of the usage
+# of the sub builtin function of AWK
+# * better tracking of blank/null and comments lines
+# (12/04/92) - rev. 2.0:
+# * increase the portability by transformation of the
+# unique AWK program in a SHELL script calling an
+# AWK program :
+# - the program is renamed form piecharts.awk to
+# piecharts.sh
+# - input data file now given as parameter, not as
+# standard input
+# - the parameters are obtained in the SHELL script
+# - the options (SCALE, FIGURE and BOXIT) are now
+# treated by post-processing the AWK output file by
+# SED (ugly but it's because some AWK versions
+# doesn't accept the definition of external
+# variables...)
+# * change the unit for the values of the parts
+# from fractions of 360 degrees to percentages
+# * definition of the figure environment now optional,
+# using the FIGURE option
+# * new possibility to declare some explode parts in the
+# piechart
+# * use of the new \uput PSTricks macro for easy
+# treatment of explode parts
+# * possibility to have multiple (centered) line labels
+# (inside and outside labels)
+# * better tracking of syntax errors in the command line
+# (12/11/92) - rev. 2.1:
+# * generation of the tabular environment for labels only
+# if they have multi-lines
+# * the comment lines which begin with the ## are copied
+# (without the ##) at the beginning of the result file.
+# This allow automatic generation of input data file
+# with a good specification of the colors, by automatic
+# generation of the \newgray commands. It's to work in
+# conjonction with the piecharts-data.sh script.
+# * input data file read on the standard input
+# * diminution of the width of the minipage to avoid
+# the "overfull \hbox" problems
+# * change the test of the sum of percentages from 100 to
+# 100.0001, because it can occurs problem with 100...
+# (01/26/93) - rev. 2.2:
+# * suppression of lines longer than 78 characters
+# * change the obsolete \Polar PSTricks order to
+# \SpecialCoor
+# * add the PLAIN option and the possibility to generate
+# plain TeX code
+
+
+# Interpretation of the parameters
+if [ $# -gt 3 ]
+ then echo "You cannot give more than 3 parameters."
+ echo "Syntax: piecharts.sh [scale factor] ([PLAIN] | [FIGURE] \
+[BOXIT]) <data_file >out_file"
+ exit
+fi
+
+SCALE=1
+FIGURE="xx"
+BOXIT="xx"
+TEX="LATEX"
+while [ $# -ne 0 ]
+ do if [ $1 = "BOXIT" ] || [ $1 = "boxit" ]
+ then BOXIT="BOXIT"
+ elif [ $1 = "FIGURE" ] || [ $1 = "figure" ]
+ then FIGURE="FIGURE"
+ elif [ $1 = "PLAIN" ] || [ $1 = "plain" ]
+ then TEX="PLAIN"
+ else SCALE=$1
+ fi
+ shift
+done
+
+# Verifications for the plain TeX mode
+if [ $TEX = "PLAIN" ] && [ $BOXIT = "BOXIT" ]
+ then echo "You cannot give the BOXIT parameter in PLAIN TEX mode."
+ exit
+fi
+if [ $TEX = "PLAIN" ] && [ $FIGURE = "FIGURE" ]
+ then echo "You cannot give the FIGURE parameter in PLAIN TEX mode."
+ exit
+fi
+
+# Beginning of the AWK program
+awk '
+BEGIN{FS="|" # Fields separator
+ PARAM="NO"
+ BEGIN_VALUE=0
+ END_VALUE=0
+ TOTAL_PERCENT=0
+ # Definition of a figure environment (if FIGURE is not use, this line
+ # will be remove later - ugly but it is because some AWK versions does
+ # not accept the definition of external variables...)
+ # if FIGURE
+ print "%figure\\begin{figure}[htbp]"
+ # Framebox around the figure, (if BOXIT is not use, this line will be
+ # remove later)
+ # if BOXIT
+ print "%boxit \\psframebox[framesep=8mm]{"
+ print "%latex {\\addtolength{\\textwidth}{-2.3cm}"
+ print "%latex \\begin{minipage}{\\textwidth}"
+ print "%latex \\begin{center}"
+ # if FIGURE
+ print "%figure \\vspace{6mm}"
+ print "%latex {\\setlength{\\tabcolsep}{0cm}"
+ print "%tex {%"
+ print " \\psset{unit=cm,xunit=cm,yunit=cm}"
+ print "%latex \\begin{pspicture}(-2,-2)(2,2)"
+ print " \\SpecialCoor"
+ print "%tex \\pspicture(-2,-2)(2,2)"
+ print "%tex \\def\\PieLabel\#1{\\vbox{\\halign{\\hfil\#\#"\
+"\\hfil\\cr\#1\\cr}}}%"
+ print " \\psset{framesep=1.5pt}"
+ }
+
+{
+ # Suppression of the right and left blanks of the variables
+ for (I=1;I<=NF+1;I++) {
+ # On the left...
+ for (J=1;J<=length($I)+1;J++)
+ if (substr($I,1,1) == " ")
+ $I=substr($I,2)
+ else
+ break
+ # On the right...
+ for (J=length($I);J>0;J--)
+ if (substr($I,J,1) == " ")
+ $I=substr($I,1,J-1)
+ else
+ break
+ }
+
+ # Special comments before title (beginning by ##): they are copied
+ # at the beginning of the result file, without the ##
+ if (substr($1,1,2) == "##")
+ print substr($1,3,length($1))
+
+ # Comments, null and blank lines
+ if (substr($1,1,1) == "#" || $1 == "" || $1 == " ")
+ break
+
+ if (PARAM == "NO") {
+ # Generic parameters: title, title for the table of figures, label
+ # (the last two are optional)
+ PARAM="YES"
+ TITLE=$1
+ TABLE_TITLE=$2
+ LABEL=$3}
+ else {
+ # Verification of the sum of the parts
+ TOTAL_PERCENT=TOTAL_PERCENT+$1
+ if (TOTAL_PERCENT > 100.0001) {
+ print "Error! Total of percentages greater than 100! (" \
+ TOTAL_PERCENT ")"
+ exit}
+ # Transformation of percentages in fractions of 360 degrees
+ $1=$1*3.6
+ END_VALUE=END_VALUE+$1
+ VAL=BEGIN_VALUE+$1/2
+ #Explode part
+ if ($6 == "YES" || $6 == "yes")
+ print " \\uput{0.3}[" VAL "](0;0){"
+ print " \\pswedge[fillstyle=" $4 ",fillcolor=" $5 "]{2}{" \
+ BEGIN_VALUE "}{" END_VALUE "}"
+ # Inside label
+ if ($2 != "") {
+ print "%tex \\rput(1.2;" VAL "){\\psframebox*{\\PieLabel{" \
+$2 "}}}"
+ if (index($2,"\\\\") == 0)
+ print "%latex \\rput(1.2;" VAL "){\\psframebox*{" $2 "}}"
+ else {
+ print "%latex \\rput(1.2;" VAL \
+ "){\\psframebox*{\\begin{tabular}{c}"
+ print "%latex " $2
+ print "%latex \\end{tabular}}}"
+ }
+ }
+ # Outside label
+ if ($3 != "") {
+ print "%tex \\uput{2.2}[" VAL "](0;0){\\PieLabel{" $3 "}}"
+ if (index($3,"\\\\") == 0)
+ print "%latex \\uput{2.2}[" VAL "](0;0){" $3 "}"
+ else {
+ print "%latex \\uput{2.2}[" VAL "](0;0){\\begin{tabular}{c}"
+ print "%latex " $3
+ print "%latex \\end{tabular}}"
+ }
+ }
+ # End of explode treatment
+ if ($6 == "YES" || $6 == "yes")
+ print " }"
+ BEGIN_VALUE=END_VALUE}
+ $1=""
+}
+
+END{
+ print "%latex \\end{pspicture}"
+ print "%tex \\endpspicture"
+ print " }"
+ # For the case of a multiple line outside label at the bottom...
+ # if FIGURE
+ print "%figure \\vspace{4mm}"
+ print "%latex \\end{center}"
+ # if FIGURE
+ if (TABLE_TITLE == "")
+ print "%figure \\caption{" TITLE "}"
+ else
+ print "%figure \\caption[" TABLE_TITLE "]{" TITLE "}"
+ if (LABEL != "")
+ print "%figure \\label{f:" LABEL "}"
+ print "%latex \\end{minipage}"
+ print "%latex }"
+ # if BOXIT
+ print "%boxit }"
+ # if FIGURE
+ print "%figure\\end{figure}"
+ }' >/tmp/piechart.tmp
+
+# Post-processing for the "scale factor", PLAIN, FIGURE and BOXIT parameters
+# (ugly but it's because some AWK versions doesn't accept the definition
+# of external variables...)
+if [ $FIGURE = "FIGURE" ]
+ then sed -e /unit=/s/unit=/unit=$SCALE/g -e /\^%figure/s/// \
+ /tmp/piechart.tmp >/tmp/piechart.tmp2
+ else sed -e /unit=/s/unit=/unit=$SCALE/g -e /\^%figure/d \
+ /tmp/piechart.tmp >/tmp/piechart.tmp2
+fi
+mv /tmp/piechart.tmp2 /tmp/piechart.tmp
+if [ $BOXIT = "BOXIT" ]
+ then sed -e /\^%boxit/s/// /tmp/piechart.tmp >/tmp/piechart.tmp2
+ else sed -e /\^%boxit/d /tmp/piechart.tmp >/tmp/piechart.tmp2
+fi
+
+# plain TeX or LaTeX mode
+mv /tmp/piechart.tmp2 /tmp/piechart.tmp
+if [ $TEX = "LATEX" ]
+ then sed -e /\^%tex/d /tmp/piechart.tmp >/tmp/piechart.tmp2
+ mv /tmp/piechart.tmp2 /tmp/piechart.tmp
+ sed -e /\^%latex/s/// /tmp/piechart.tmp >/tmp/piechart.tmp2
+ else sed -e /\^%latex/d /tmp/piechart.tmp >/tmp/piechart.tmp2
+ mv /tmp/piechart.tmp2 /tmp/piechart.tmp
+ sed -e /\^%tex/s/// /tmp/piechart.tmp >/tmp/piechart.tmp2
+fi
+
+# Deliver of the result!
+cat /tmp/piechart.tmp2
+
+rm /tmp/piechart.tmp /tmp/piechart.tmp2
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-3d.tex b/usergrps/uktug/baskervi/6_2/spqr/pst-3d.tex
new file mode 100644
index 0000000000..8d00861305
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-3d.tex
@@ -0,0 +1,691 @@
+%% BEGIN pst-3d.tex
+%%
+%% Tilting and other pseudo-3D tricks for PSTricks v0.93a.
+%% This is experimental. See 3d-test.tex for a test file.
+%% There is not yet any documentation.
+%%
+\def\fileversion{0.93a}
+\def\filedate{93/08/26}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.tex or pstricks.doc for copying restrictions.
+%%
+
+\message{ v\fileversion, \filedate}
+
+\csname PSTthreeDLoaded\endcsname
+\let\PSTthreeDLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex}
+ \expandafter\next
+\fi
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% \begin{macro}{\tx@SetMatrixThreeD,\tx@ProjThreeD,\tx@SetMatrixEmbed}
+% Viewpoint for 3D coordinates is given by three angles: $\alpha$, $\beta$ and
+% $\gamma$. $\alpha$ and $\beta$ determine the direction from which one is
+% looking. $\gamma$ then determines the orientation of the observing.
+%
+% When $\alpha$, $\beta$ and $\gamma$ are all zero, the observer is looking
+% from the negative part of the $y$-axis, and sees the $xz$-plane the way in
+% 2D one sees the $xy$ plan. Hence, to convert the 3D coordinates to their 2D
+% project, $\la x, y, z\ra$ map to $\la x, z\ra$.
+%
+% When the orientation is different, we rotate the coordinates, and then
+% perform the same projection.
+%
+% We move up to latitude $\beta$, over to longitude $\alpha$, and then rotate
+% by $\gamma$. This means that we first rotate around $y$-axis by $\gamma$,
+% then around $x$-axis by $\beta$, and the around $z$-axis by $\alpha$.
+%
+% Here are the matrices:
+% \begin{eqnarray*}
+% R_z(\alpha) & = & \left[
+% \begin{array}{ccc}
+% \cos \alpha & -\sin \alpha & 0 \\
+% \sin \alpha & cos \alpha & 0 \\
+% 0 & 0 & 1
+% \end{array} \right] \\
+% R_x(\beta) & = & \left[
+% \begin{array}{ccc}
+% 1 & 0 & 0 \\
+% 0 & \cos \beta & \sin \beta \\
+% 0 & -\sin \beta & \cos \beta
+% \end{array} \right] \\
+% R_y(\gamma) & = & \left[
+% \begin{array}{ccc}
+% \cos \gamma & 0 & -\sin \gamma \\
+% 0 & 1 & 0 \\
+% \sin \gamma & 0 & \cos \gamma
+% \end{array} \right]
+% \end{eqnarray*}
+%
+% The rotation of a coordinate is then performed by the matrix $R_z(\alpha)
+% R_x(\beta) R_y(\gamma)$. The first and third columns of the matrix are the
+% basis vectors of the plan upon which the 3D coordinates are project (the old
+% basis vectors were $\la 1, 0, 0\ra$ and $\la 0, 0, 1$\ra; rotating these
+% gives the first and third columns of the matrix).
+%
+% These new basis vectors are:
+% \begin{eqnarray*}
+% \tilde{x} & = & \left[
+% \begin{array}{c}
+% \cos\alpha \cos\gamma - \sin\beta \sin\alpha \sin\gamma \\
+% \sin\alpha \cos\gamma + \sin\beta \cos\alpha \sin\gamma \\
+% \cos\beta \sin\gamma
+% \end{array} \right] \\
+% \tilde{z} & = & \left[
+% \begin{array}{c}
+% -\cos\alpha \sin\gamma - \sin\beta \sin\alpha \cos\gamma \\
+% -\sin\alpha \sin\gamma + \sin\beta \cos\alpha \cos\gamma \\
+% \cos\beta \cos\gamma
+% \end{array} \right]
+% \end{eqnarray*}
+%
+% Rather than specifying the angles $\alpha$ and $\beta$, the user gives a
+% vector indicating where the viewpoint is. This new viewpoint is the rotation
+% o the old viewpoint. The old viewpoint is $\la 0, -1, 0\ra$, and so the new
+% viewpoint is
+% \[
+% R_z(\alpha) R_x(\beta) \left[ \begin{array}{c} 0\\-1\\0 \end{array} \right]
+% \, = \,
+% \left[ \begin{array}{c}
+% \cos\beta \sin\alpha \\
+% -\cos\beta \cos\alpha \\
+% \sin\beta
+% \end{array} \right]
+% \, = \,
+% \left[ \begin{array}{c} v_1 \\ v_2 \\ v_3 \end{array} \right]
+% \]
+% Therefore,
+% \begin{eqnarray*}
+% \alpha & = & \arc\tan (v_1 / -v_2) \\
+% \beta & = & \arc\tan (v_3 \sin\alpha / v_1)
+% \end{eqnarray*}
+% Unless $p_1=p_2=0$, in which case $\alpha=0$ and $\beta=\sign(p_3)90$, or
+% $p_1=p_3=0$, in which case $\beta=0$.
+%
+% The syntax of "SetMatrixThreeD" is
+% \begin{Ex}
+% $v_1$ $v_2$ $v_3$ $\gamma$ "SetMatrixThreeD"
+% \end{Ex}
+% "SetMatrixThreeD" first computes
+% \[
+% \begin{array}{ll}
+% a=\sin\alpha & b=\cos\alpha\\
+% c=\sin\beta & d=\cos\beta\\
+% e=\sin\gamma & f=\cos\gamma
+% \end{array}
+% \]
+% and then sets "Matrix3D" to "["$\tilde{x}$ $\tilde{z}$"]".
+%
+% \begin{macrocode}
+\pst@def{SetMatrixThreeD}<%
+ dup sin /e ED cos /f ED
+ /p3 ED /p2 ED /p1 ED
+ p1 0 eq
+ { /a 0 def /b p2 0 le { 1 } { -1 } ifelse def
+ p3 p2 abs
+ }
+ { p2 0 eq
+ { /a p1 0 lt { -1 } { 1 } ifelse def /b 0 def
+ p3 p1 abs
+ }
+ { p1 dup mul p2 dup mul add sqrt dup
+ p1 exch div /a ED
+ p2 exch div neg /b ED
+ p3 p1 a div
+ }
+ ifelse
+ }
+ ifelse
+ atan dup sin /c ED cos /d ED
+ /Matrix3D
+ [
+ b f mul c a mul e mul sub
+ a f mul c b mul e mul add
+ d e mul
+ b e mul neg c a mul f mul sub
+ a e mul neg c b mul f mul add
+ d f mul
+ ] def>
+% \end{macrocode}
+%
+% The syntax of "ProjThreeD" is
+% \begin{Ex}
+% $x$ $y$ $z$ ProjThreeD $x'$ $y'$
+% \end{Ex}
+% where $x'=\la x, y, z\ra \cdot \tilde{x}$ and $y'=\la x, y, z\ra \cdot
+% \tilde{z}$.
+%
+% \begin{macrocode}
+\pst@def{ProjThreeD}<%
+ /z ED /y ED /x ED
+ Matrix3D aload pop
+ z mul exch y mul add exch x mul add
+ 4 1 roll
+ z mul exch y mul add exch x mul add
+ exch>
+% \end{macrocode}
+%
+% To embed 2D $\la x, y\ra$ coordinates in 3D, the user specifies the normal
+% vector and an angle. If we decompose this normal vector into an angle, as
+% when converting 3D coordinates to 2D coordinates, and let $\hat\alpha$,
+% $\hat\beta$ and $\hat\gamma$ be the three angles, then when these angles are
+% all zero the coordinate $\la x, y\ra$ gets mapped to $\la x, 0, y\ra$, and
+% otherwise $\la x, y\ra$ gets mapped to
+% \[
+% R_z(\hat\alpha) R_x(\hat\beta) R_y(\hat\gamma)
+% \left[ \begin{array}{c} x \\ 0 \\ y \end{array} \right]
+% \, = \,
+% \left[ \begin{array}{c}
+% \hat{x}_1 x + \hat{z}_1 y\\
+% \hat{x}_2 x + \hat{z}_2 y\\
+% \hat{x}_3 x + \hat{z}_3 y
+% \end{array} \right]
+% \]
+% where $\hat{x}$ and $\hat{z}$ are the first and third columns of
+% $R_z(\hat\alpha) R_x(\hat\beta) R_y(\hat\gamma)$.
+%
+% Now add on a 3D-origin:
+% \[
+% \left[ \begin{array}{c}
+% \hat{x}_1 x + \hat{z}_1 y + x_0\\
+% \hat{x}_2 x + \hat{z}_2 y + y_0\\
+% \hat{x}_3 x + \hat{z}_3 y + z_0
+% \end{array} \right]
+% \]
+%
+% Now when we project back onto 2D coordinates, we get
+% \begin{eqnarray*}
+% x' & = & \tilde{x}_1(\hat{x}_1 x + \hat{z}_1 y + x_0) +
+% \tilde{x}_2(\hat{x}_2 x + \hat{z}_2 y + y_0) +
+% \tilde{x}_3(\hat{x}_3 x + \hat{z}_3 y + z_0)\\
+% & = &
+% (\tilde{x}_1\hat{x}_1 + \tilde{x}_2\hat{x}_2 + \tilde{x}_3\hat{x}_3) x\\
+% + (\tilde{x}_1\hat{z}_1 + \tilde{x}_2\hat{z}_2 + \tilde{x}_3\hat{z}_3) y\\
+% + \tilde{x}_1 x_0 + \tilde{x}_2 y_0 + \tilde{z}_3 z_0
+% y' & = & \tilde{z}_1(\hat{x}_1 x + \hat{z}_1 y + x_0) +
+% \tilde{z}_2(\hat{x}_2 x + \hat{z}_2 y + y_0) +
+% \tilde{z}_3(\hat{x}_3 x + \hat{z}_3 y + z_0)\\
+% & = &
+% (\tilde{z}_1\hat{x}_1 + \tilde{z}_2\hat{x}_2 + \tilde{z}_3\hat{x}_3) x\\
+% + (\tilde{z}_1\hat{z}_1 + \tilde{z}_2\hat{z}_2 + \tilde{z}_3\hat{z}_3) y\\
+% + \tilde{z}_1 x_0 + \tilde{z}_2 y_0 + \tilde{z}_3 z_0
+% \end{eqnarray*}
+% Hence, the transformation matrix is:
+% \[
+% \left[ \begin{array}{c}
+% \tilde{x}_1\hat{x}_1 + \tilde{x}_2\hat{x}_2 + \tilde{x}_3\hat{x}_3) \\
+% \tilde{z}_1\hat{x}_1 + \tilde{z}_2\hat{x}_2 + \tilde{z}_3\hat{x}_3) \\
+% \tilde{x}_1\hat{z}_1 + \tilde{x}_2\hat{z}_2 + \tilde{x}_3\hat{z}_3) \\
+% \tilde{z}_1\hat{z}_1 + \tilde{z}_2\hat{z}_2 + \tilde{z}_3\hat{z}_3) \\
+% \tilde{x}_1 x_0 + \tilde{x}_2 y_0 + \tilde{z}_3 z_0 \\
+% \tilde{z}_1 x_0 + \tilde{z}_2 y_0 + \tilde{z}_3 z_0
+% \end{array} \right]
+% \]
+%
+% The syntax of "SetMatrixEmbed" is
+% \begin{Ex}
+% $x_0$ $y_0$ $z_0$ $\hat{v_1}$ $\hat{v_2}$ $\hat{v_3} $\hat{\gamma}$
+% $v_1$ $v_2$ $v_3$ $\gamma$ "SetMatrixEmbed"
+% \end{Ex}
+% "SetMatrixEmbed" first sets "<x1 x2 x3 y1 y2 y3>" to the basis vectors for
+% the viewpoint projection (the tilde stuff above). Then it sets "Matrix3D" to
+% the basis vectors for the embedded plane. Finally, it sets the
+% transformation matrix to the matrix given above.
+%
+% \begin{macrocode}
+\pst@def{SetMatrixEmbed}<%
+ \tx@SetMatrixThreeD
+ Matrix3D aload pop
+ /z3 ED /z2 ED /z1 ED /x3 ED /x2 ED /x1 ED
+ \tx@SetMatrixThreeD
+ [
+ Matrix3D aload pop
+ z3 mul exch z2 mul add exch z1 mul add 4 1 roll
+ z3 mul exch z2 mul add exch z1 mul add
+ Matrix3D aload pop
+ x3 mul exch x2 mul add exch x1 mul add 4 1 roll
+ x3 mul exch x2 mul add exch x1 mul add
+ 3 -1 roll 3 -1 roll 4 -1 roll 8 -3 roll 3 copy
+ x3 mul exch x2 mul add exch x1 mul add 4 1 roll
+ z3 mul exch z2 mul add exch z1 mul add
+ ]
+ concat>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@viewpoint,\psk@viewpoint}
+% \begin{macrocode}
+\let\pssetzlength\pssetylength
+\def\psset@viewpoint#1{%
+ \pst@expandafter\psset@@viewpoint#1 {} {} {} \@nil
+ \let\psk@viewpoint\pst@tempg}
+\def\psset@@viewpoint#1 #2 #3 #4\@nil{%
+ \begingroup
+ \pssetxlength\pst@dima{#1}%
+ \pssetylength\pst@dimb{#2}%
+ \pssetzlength\pst@dimc{#3}%
+ \xdef\pst@tempg{%
+ \pst@number\pst@dima \pst@number\pst@dimb \pst@number\pst@dimc}%
+ \endgroup}
+\psset@viewpoint{1 -1 1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@viewangle,\psk@viewangle}
+% \begin{macrocode}
+\def\psset@viewangle#1{\pst@getangle{#1}\psk@viewangle}
+\psset@viewangle{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@normal,\psk@normal}
+% \begin{macrocode}
+\def\psset@normal#1{%
+ \pst@expandafter\psset@@viewpoint#1 {} {} {} \@nil
+ \let\psk@normal\pst@tempg}
+\psset@normal{0 0 1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@embedangle,\psk@embedangle}
+% \begin{macrocode}
+\def\psset@embedangle#1{\pst@getangle{#1}\psk@embedangle}
+\psset@embedangle{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@TMSave,\tx@TMRestore}
+% \begin{LVerbatim}
+% {<Proc for modifying tm>} TMChange
+% \begin{macrocode}
+\pst@def{TMSave}<%
+ tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if
+ /TMatrix [ TMatrix CM ] cvx def>
+\pst@def{TMRestore}<%
+ CP /TMatrix [ TMatrix setmatrix ] cvx def moveto>
+\pst@def{TMChange}<%
+ \tx@TMSave
+ /cp [ currentpoint ] cvx def % ??? Check this later.
+ CM
+% Set "standard" coor. system , with "pt" units and origin at currentpoint.
+% This let's us rotate, or whatever, around \TeX's current point, without
+% having to worry about strange coordinate systems that the dvi-to-ps
+% driver might be using.
+ CP T \tx@STV
+% Let M = old matrix (on stack), and M' equal current matrix. Then
+% go from M' to M by applying M Inv(M').
+ CM matrix invertmatrix % Inv(M')
+ matrix concatmatrix % M Inv(M')
+% Now modify transformation matrix:
+ exch exec
+% Now apply M Inv(M')
+ concat cp moveto>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ThreeDput}
+% \begin{macrocode}
+\def\ThreeDput{\def\pst@par{}\pst@object{ThreeDput}}
+\def\ThreeDput@i{\@ifnextchar({\ThreeDput@ii}{\ThreeDput@ii(\z@,\z@,\z@)}}
+\def\ThreeDput@ii(#1,#2,#3){%
+ \pst@killglue\pst@makebox{\ThreeDput@iii(#1,#2,#3)}}
+\def\ThreeDput@iii(#1,#2,#3){%
+ \begingroup
+ \use@par
+ \if@star\pst@starbox\fi
+ \pst@makesmall\pst@hbox
+ \pssetxlength\pst@dima{#1}%
+ \pssetylength\pst@dimb{#2}%
+ \pssetzlength\pst@dimc{#3}%
+ \leavevmode
+ \hbox{%
+ \pst@Verb{%
+ { \pst@number\pst@dima
+ \pst@number\pst@dimb
+ \pst@number\pst@dimc
+ \psk@normal
+ \psk@embedangle
+ \psk@viewpoint
+ \psk@viewangle
+ \tx@SetMatrixEmbed
+ } \tx@TMChange}%
+ \box\pst@hbox
+ \pst@Verb{\tx@TMRestore}}%
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Arithmetic\label{Arithmetic}}
+%
+%
+% \begin{macro}{\pst@divide}
+% This is adapted from Donald Arseneau's "shapepar.sty".
+% Syntax:
+% \begin{LVerbatim}
+% \pst@divide{<numerator>}{<denominator>}{<command>}
+% \pst@@divide{<numerator>}{<denominator>}
+% \end{LVerbatim}
+% <numerator> and <denominator> should be dimensions. "\pst@divide" sets
+% <command> to <num>/<den> (in points). "\pst@@divide" sets "\pst@dimg" to
+% <num>/<den>.
+% \begin{macrocode}
+\def\pst@divide#1#2#3{%
+ \pst@@divide{#1}{#2}%
+ \pst@dimtonum\pst@dimg{#3}}
+\def\pst@@divide#1#2{%
+ \pst@dimg=#1\relax
+ \pst@dimh=#2\relax
+ \pst@cntg=\pst@dimh
+ \pst@cnth=67108863
+ \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide
+ \divide\pst@dimg\pst@cntg}
+% \end{macrocode}
+% The number 16 is the level of uncertainty. Use a lower power of 2 for more
+% accuracy (2 is most precise). But if you change it, you must change the
+% repetions of "\pst@@@divide" in "\pst@@divide" above:
+% \[
+% \mbox{precision}^\mbox{repetitions} = 65536
+% \]
+% (E.g., $16^4 = 65536$).
+% \begin{macrocode}
+\def\pst@@@divide{%
+ \ifnum
+ \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cnth
+ \multiply\pst@dimg\sixt@@n
+ \else
+ \divide\pst@cntg\sixt@@n
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@pyth}
+% Syntax:
+% \begin{LVerbatim}
+% \pst@pyth{<dim1>}{<dim2>}{<dimen register>}
+% \end{LVerbatim}
+% <dimen register> is set to $((dim1)^2+(dim2)^2)^{1/2}$.
+%
+% The algorithm is copied from \PiCTeX, by Michael Wichura (with permission).
+% Here is his description:
+% \begin{quote}
+% Suppose $x>0$, $y>0$. Put $s = x+y$. Let $z = (x^2+y^2)^{1/2}$. Then $z =
+% s\times f$, where
+% \[
+% f = (t^2 + (1-t)^2)^{1/2} = ((1+\tau^2)/2)^{1/2}
+% \]
+% and $t = x/s$ and $\tau = 2(t-1/2)$.
+% \end{quote}
+% \begin{macrocode}
+\def\pst@pyth#1#2#3{%
+ \begingroup
+ \pst@dima=#1\relax
+ \ifnum\pst@dima<\z@\pst@dima=-\pst@dima\fi % dima=abs(x)
+ \pst@dimb=#2\relax
+ \ifnum\pst@dimb<\z@\pst@dimb=-\pst@dimb\fi % dimb=abs(y)
+ \advance\pst@dimb\pst@dima % dimb=s=abs(x)+abs(y)
+ \ifnum\pst@dimb=\z@
+ \global\pst@dimg=\z@ % dimg=z=sqrt(x^2+y^2)
+ \else
+ \multiply\pst@dima 8\relax % dima= 8abs(x)
+ \pst@@divide\pst@dima\pst@dimb % dimg =8t=8abs(x)/s
+ \advance\pst@dimg -4pt % dimg = 4tau = (8t-4)
+ \multiply\pst@dimg 2
+ \pst@dimtonum\pst@dimg\pst@tempa
+ \pst@dima=\pst@tempa\pst@dimg % dima=(8tau)^2
+ \advance\pst@dima 64pt % dima=u=[64+(8tau)^2]/2
+ \divide\pst@dima 2\relax % =(8f)^2
+ \pst@dimd=7pt % initial guess at sqrt(u)
+ \pst@@pyth\pst@@pyth\pst@@pyth % dimd=sqrt(u)
+ \pst@dimtonum\pst@dimd\pst@tempa
+ \pst@dimg=\pst@tempa\pst@dimb
+ \global\divide\pst@dimg 8 % dimg=z=(8f)*s/8
+ \fi
+ \endgroup
+ #3=\pst@dimg}
+\def\pst@@pyth{% dimd = g <-- (g + u/g)/2
+ \pst@@divide\pst@dima\pst@dimd
+ \advance\pst@dimd\pst@dimg
+ \divide\pst@dimd 2\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@sinandcos}
+% Syntax:
+% \begin{LVerbatim}
+% \pst@sinandcos{<dim>}{<int>}
+% \end{LVerbatim}
+% <dim>, in "sp" units, should equal 100,000 times the angle, in degrees
+% between 0 and 90. <int> should equal the angle's quadrant (0, 1, 2 or 3).
+% "\pst@dimg" is set to $\sin(\theta)$ and "\pst@dimh" is set to
+% $\cos(\theta)$ (in pt's).
+%
+% The algorithms uses the usual McLaurin expansion.
+% \begin{macrocode}
+\def\pst@sinandcos#1{%
+ \begingroup
+ \pst@dima=#1\relax
+ \pst@dima=.366022\pst@dima %Now 1pt=1/32rad
+ \pst@dimb=\pst@dima % dimb->32sin(angle) in pts
+ \pst@dimc=32\p@ % dimc->32cos(angle) in pts
+ \pst@dimtonum\pst@dima\pst@tempa
+ \pst@cntb=\tw@
+ \pst@cntc=-\@ne
+ \pst@cntg=32
+ \loop
+ \ifnum\pst@dima>\@cclvi % 256
+ \pst@dima=\pst@tempa\pst@dima
+ \divide\pst@dima\pst@cntg
+ \divide\pst@dima\pst@cntb
+ \ifodd\pst@cntb
+ \advance\pst@dimb \pst@cntc\pst@dima
+ \pst@cntc=-\pst@cntc
+ \else
+ \advance\pst@dimc by \pst@cntc\pst@dima
+ \fi
+ \advance\pst@cntb\@ne
+ \repeat
+ \divide\pst@dimb\pst@cntg
+ \divide\pst@dimc\pst@cntg
+ \global\pst@dimg\pst@dimb
+ \global\pst@dimh\pst@dimc
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getsinandcos}
+% "\pst@getsinandcos" normalizes the angle to be in the first quadrant, sets
+% "\pst@quadrant" to 0 for the first quadrant, 1 for the second, 2 for the
+% third, and 3 for the fourth, invokes "\pst@sinandcos", and sets "\pst@sin"
+% to the sine and "\pst@cos" to the cosine.
+% \begin{macrocode}
+\def\pst@getsinandcos#1{%
+ \pst@dimg=100000sp
+ \pst@dimg=#1\pst@dimg
+ \pst@dimh=36000000sp
+ \pst@cntg=0
+ \loop
+ \ifnum\pst@dimg<\z@
+ \advance\pst@dimg\pst@dimh
+ \repeat
+ \loop
+ \ifnum\pst@dimg>\pst@dimh
+ \advance\pst@dimg-\pst@dimh
+ \repeat
+ \pst@dimh=9000000sp
+ \def\pst@tempg{%
+ \ifnum\pst@dimg<\pst@dimh\else
+ \advance\pst@dimg-\pst@dimh
+ \advance\pst@cntg\@ne
+ \ifnum\pst@cntg>\thr@@ \advance\pst@cntg-4 \fi
+ \expandafter\pst@tempg
+ \fi}%
+ \pst@tempg
+ \chardef\pst@quadrant\pst@cntg
+ \ifdim\pst@dimg=\z@
+ \def\pst@sin{0}%
+ \def\pst@cos{1}%
+ \else
+ \pst@sinandcos\pst@dimg
+ \pst@dimtonum\pst@dimg\pst@sin
+ \pst@dimtonum\pst@dimh\pst@cos
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Tilting}
+%
+% \begin{macro}{\pstilt}
+% \begin{macrocode}
+\def\pstilt#1{\pst@makebox{\pstilt@{#1}}}
+\def\pstilt@#1{%
+ \begingroup
+ \leavevmode
+ \pst@getsinandcos{#1}%
+ \hbox{%
+ \ifcase\pst@quadrant
+ \kern\pst@cos\dp\pst@hbox
+ \pst@dima=\pst@cos\ht\pst@hbox
+ \ht\pst@hbox=\pst@sin\ht\pst@hbox
+ \dp\pst@hbox=\pst@sin\dp\pst@hbox
+ \or
+ \kern\pst@sin\ht\pst@hbox
+ \pst@dima=\pst@sin\dp\pst@hbox
+ \ht\pst@hbox=\pst@cos\ht\pst@hbox
+ \dp\pst@hbox=\pst@cos\dp\pst@hbox
+ \or
+ \kern\pst@cos\ht\pst@hbox
+ \pst@dima=\pst@sin\dp\pst@hbox
+ \pst@dimg=\pst@sin\ht\pst@hbox
+ \ht\pst@hbox=\pst@sin\dp\pst@hbox
+ \dp\pst@hbox=\pst@dimg
+ \or
+ \kern\pst@sin\dp\pst@hbox
+ \pst@dima=\pst@sin\ht\pst@hbox
+ \pst@dimg=\pst@cos\ht\pst@hbox
+ \ht\pst@hbox=\pst@cos\dp\pst@hbox
+ \dp\pst@hbox=\pst@dimg
+ \fi
+ \pst@Verb{%
+ { [ 1 0
+ \pst@cos\space \ifnum\pst@quadrant>\@ne neg \fi
+ \pst@sin\space
+ \ifnum\pst@quadrant>\z@\ifnum\pst@quadrant<\thr@@ neg \fi\fi
+ \ifodd\pst@quadrant exch \fi
+ 0 0
+ ] concat
+ } \tx@TMChange}%
+ \box\pst@hbox
+ \pst@Verb{\tx@TMRestore}%
+ \kern\pst@dima}%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psTilt}
+% \begin{macrocode}
+\def\psTilt#1{\pst@makebox{\psTilt@{#1}}}
+\def\psTilt@#1{%
+ \begingroup
+ \leavevmode
+ \pst@getsinandcos{#1}%
+ \hbox{%
+ \ifodd\pst@quadrant
+ \pst@@divide{\dp\pst@hbox}{\pst@cos\p@}%
+ \ifnum\pst@quadrant=\thr@@\kern\else\pst@dima=\fi\pst@sin\pst@dimg
+ \pst@@divide{\ht\pst@hbox}{\pst@cos\p@}%
+ \ifnum\pst@quadrant=\@ne\kern\else\pst@dima=\fi\pst@sin\pst@dimg
+ \else
+ \ifdim\pst@sin\p@=\z@
+ \@pstrickserr{\string\psTilt\space angle cannot be 0 or 180}\@ehpa
+ \def\pst@sin{.7071}%
+ \def\pst@cos{.7071}%
+ \fi
+ \pst@@divide{\dp\pst@hbox}{\pst@sin\p@}%
+ \ifnum\pst@quadrant=\z@\kern\else\pst@dima=\fi\pst@cos\pst@dimg
+ \pst@@divide{\ht\pst@hbox}{\pst@sin\p@}%
+ \ifnum\pst@quadrant=\tw@\kern\else\pst@dima=\fi\pst@cos\pst@dimg
+ \fi
+ \ifnum\pst@quadrant>\@ne
+ \pst@dimg=\ht\pst@hbox
+ \ht\pst@hbox=\dp\pst@hbox
+ \dp\pst@hbox=\pst@dimg
+ \fi
+ \pst@Verb{%
+ { [ 1 0
+ \pst@cos\space \pst@sin\space
+ \ifodd\pst@quadrant exch \fi
+ \tx@Div
+ \ifnum\pst@quadrant>\z@\ifnum\pst@quadrant<\thr@@ neg \fi\fi
+ \ifnum\pst@quadrant>\@ne -1 \else 1 \fi
+ 0 0
+ ] concat
+ } \tx@TMChange}%
+ \box\pst@hbox
+ \pst@Verb{\tx@TMRestore}%
+ \kern\pst@dima}%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@Tshadowsize,\psTshadowsize}
+% \begin{macrocode}
+\def\psset@Tshadowsize#1{\pst@checknum{#1}\psTshadowsize}
+\psset@Tshadowsize{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@Tshadowangle,\psk@Tshadowangle}
+% \begin{macrocode}
+\def\psset@Tshadowangle#1{\pst@getangle{#1}\psk@Tshadowangle}
+\psset@Tshadowangle{60}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@Tshadowcolor,\psTshadowcolor}
+% \begin{macrocode}
+\def\psset@Tshadowcolor#1{\pst@getcolor{#1}\psTshadowcolor}
+\psset@Tshadowcolor{lightgray}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psshadow}
+% \begin{macrocode}
+\def\psshadow{\def\pst@par{}\pst@object{psshadow}}
+\def\psshadow@i{\pst@makebox{\psshadow@ii}}
+\def\psshadow@ii{%
+ \begingroup
+ \use@par
+ \leavevmode
+ \pst@getsinandcos{\psk@Tshadowangle}%
+ \hbox{%
+ \lower\dp\pst@hbox\hbox{%
+ \pst@Verb{%
+ { [ 1 0
+ \pst@cos\space \psTshadowsize mul
+ \ifnum\pst@quadrant>\@ne neg \fi
+ \pst@sin\space \psTshadowsize mul
+ \ifnum\pst@quadrant>\z@\ifnum\pst@quadrant<\thr@@ neg \fi\fi
+ \ifodd\pst@quadrant exch \fi
+ 0 0
+ ] concat
+ } \tx@TMChange}}%
+ \hbox to\z@{{\@nameuse{\psTshadowcolor}\copy\pst@hbox\hss}}%
+ \pst@Verb{\tx@TMRestore}%
+ \box\pst@hbox}%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+
+\catcode`\@=\TheAtCode\relax
+
+\endinput
+
+%% END pst-3d.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-code.tex b/usergrps/uktug/baskervi/6_2/spqr/pst-code.tex
new file mode 100644
index 0000000000..72d19d14cc
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-code.tex
@@ -0,0 +1,135 @@
+%% BEGIN: pst-code.tex
+%%
+%% For printing documented code for PSTricks.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% This LaTeX file inputs pstricks.doc and pst-node.doc,
+%% and prints the documented code.
+%%
+%% You must also have Frank Mittelbach's
+%% doc.sty and gind.ist
+%% (available from rusmv1.rus.uni-stuttgart.de), as well as my
+%% tvz-hax.sty, tvz-code.sty and fancybox.sty
+%% (distributed with PSTricks).
+%%
+%% gind.ist is for the index. I.e.,
+%% makeindex -s gind.ist pst-code.idx
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Change these for a4 paper:
+\def\paperwidth{8.5in}
+\def\paperheight{11in}
+
+\documentstyle{tvz-code}
+
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+
+% Comment out to suppress generation of .idx file. Speeds things up.
+% \MakeIndex
+
+% Include to suppress checksums for drafts:
+\def\StopEventually#1{\let\Finale\relax}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%% More DoNotIndex for pst-code %%%%%%%%%%%%%%%
+\DoNotIndex{\pst@dima,\pst@dimb,\pst@dimc,\pst@dimd,\pst@dimg,\pst@cnta,%
+\pst@cntb,\pst@cntc,\pst@cntg,\pst@tempa,\pst@tempb,\pst@tempc,\pst@tempd,%
+\pst@tempg,\pst@boxa,\pst@boxg,\if@pst,\@psttrue,\@pstfalse}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\makeatother
+
+\MakeShortVerb\"
+
+\ShortMeta
+
+\def\n#1{{\tt \string#1}}
+
+\newbox\junkbox
+\def\DocInput#1{%
+ \MakePercentIgnore
+ \setbox\junkbox=\hbox\bgroup
+ \input{#1}%
+ \MakePercentComment}
+\let\EndDocPreamble\egroup
+
+\begin{document}
+
+\def\thetitle{PSTricks: Documented Code}
+
+\begin{titlepage}
+
+\let\footnotesize\small
+\let\footnoterule\relax
+\setcounter{page}{0}
+
+\null
+\vfil
+\vskip 25pt
+
+\begin{center}
+
+ {\LARGE\bf PSTricks}:\\[5pt]
+ {\large\bf PostScript macros for Generic TeX}\\[7pt]
+ {\LARGE\bf\em Documented Code}\par
+
+ \vskip 3em
+
+ {\large \lineskip .75em Timothy Van Zandt}%
+ \thanks{%
+ Author's address:
+ Department of Economics, Princeton University,
+ Princeton, NJ 08544-1021, USA. Internet: {\tt tvz@Princeton.EDU}}%
+ \par
+
+ \vskip 1.5em
+
+ {\large \thefiledate\\[2pt] Version \fileversion}\par
+
+\end{center}
+
+\par
+
+\makeatletter\@thanks\makeatother
+
+\vfil
+
+PSTricks is a collection of PostScript macros that is compatible with most
+\TeX\ macro packages, including Plain \TeX\ and \LaTeX. Included are macros
+for color, graphics, rotation and overlays.
+
+This is the documented code. There is also a {\em User's Guide} and a read-me
+file.
+
+\vfil
+\null
+
+\end{titlepage}
+
+\setcounter{footnote}{0}
+\pagenumbering{roman}
+\tableofcontents
+\clearpage
+\pagenumbering{arabic}
+
+\StopEventually{}
+\DocInput{pstricks.doc}
+\Finale
+\clearpage
+
+\StopEventually{}
+\DocInput{pst-node.doc}
+\Finale
+\clearpage
+
+\DeleteShortMeta
+
+\PrintIndex
+
+\end{document}
+
+%% END pst-code.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-coil.pro b/usergrps/uktug/baskervi/6_2/spqr/pst-coil.pro
new file mode 100644
index 0000000000..b266950f1e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-coil.pro
@@ -0,0 +1,28 @@
+%!
+% PostScript prologue for pst-coil.tex.
+% Created 1993/3/12. Source file was pst-coil.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@CoilDict 40 dict def tx@CoilDict begin
+/CoilLoop { /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos
+lineto } def
+/Coil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED
+/h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0
+sub 2 copy Pyth /TotalLength ED Atan rotate /BeginAngle ArmA AspectCos
+Div w h mul Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos Div
+w h mul Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h
+mul 2 Div w 2 Div scale BeginAngle Inc EndAngle { CoilLoop } for
+EndAngle CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP
+TotalLength 0 ArrowB lineto } def
+/AltCoil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED
+/EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 Div w 2 Div scale
+BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add
+BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc
+EndAngle { CoilLoop } for EndAngle CoilLoop mtrx setmatrix } def
+/ZigZag { /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED
+/x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy Pyth /TotalLength ED
+Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul
+sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add
+def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat
+TotalLength ArmA sub 0 TotalLength 0 } def
+end
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-coil.sty b/usergrps/uktug/baskervi/6_2/spqr/pst-coil.sty
new file mode 100644
index 0000000000..db2698955c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-coil.sty
@@ -0,0 +1,4 @@
+%% BEGIN: pst-coil.sty
+\input pst-coil.tex
+\endinput
+%% END: pst-coil.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-coil.tex b/usergrps/uktug/baskervi/6_2/spqr/pst-coil.tex
new file mode 100644
index 0000000000..d54c7462db
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-coil.tex
@@ -0,0 +1,128 @@
+%% BEGIN: pst-coil.tex
+%% Generated on <1993/3/12> from `pst-coil.doc'.
+%% For use with the PostScript header file `pst-coil.pro'.
+%%
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+%%
+%% For stroking and filling characters with PSTricks' line and fill styles.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.doc or pstricks.tex for copying restrictions.
+%%
+%% See the PSTricks read-me file and the User's Guide for documentation.
+\message{ v\fileversion, \filedate}
+\csname PSTcoilsLoaded\endcsname
+\let\PSTcoilsLoaded\endinput
+\ifx\PSTricksLoaded\endinput\else
+\def\next{\input pstricks.tex}\expandafter\next
+\fi
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+\pstheader{pst-coil.pro}
+\edef\pst@theheaders{\pst@theheaders,pst-coil.pro}
+\def\pst@coildict{tx@CoilDict begin }
+\def\psset@coilwidth#1{\pst@getlength{#1}\psk@coilwidth}
+\psset@coilwidth{1cm}
+\def\psset@coilheight#1{\pst@checknum{#1}\pscoilheight}
+\psset@coilheight{1}
+\def\psset@coilarmA#1{\pst@getlength{#1}\psk@coilarmA}
+\def\psset@coilarmB#1{\pst@getlength{#1}\psk@coilarmB}
+\def\psset@coilarm#1{%
+\pst@getlength{#1}\psk@coilarmA
+\let\psk@coilarmB\psk@coilarmA}
+\psset@coilarm{.5cm}
+\def\psset@coilaspect#1{\pst@getangle{#1}\psk@coilaspect}
+\psset@coilaspect{45}
+\def\psset@coilinc#1{\pst@getangle{#1}\psk@coilinc}
+\psset@coilinc{10}
+\def\pscoil{\def\pst@par{}\pst@object{pscoil}}
+\def\pscoil@i{\pst@getarrows\pscoil@ii}
+\def\pscoil@ii(#1){%
+\@ifnextchar(%
+{\pscoil@iii{1}(#1)}%
+{\pscoil@iii{\z@}(0,0)(#1)}}
+\def\pscoil@iii#1(#2)(#3){%
+\begin@OpenObj
+\pst@getcoor{#2}\pst@tempa
+\pst@getcoor{#3}\pst@tempb
+\pst@optcp{#1}\pst@tempa
+\addto@pscode{%
+\pst@tempa \pst@tempb
+\psk@coilwidth \pscoilheight
+\psk@coilarmA \psk@coilarmB
+\psk@coilaspect \psk@coilinc
+\pst@coildict \tx@Coil end}%
+\showpointsfalse
+\end@OpenObj}
+\def\tx@CoilLoop{CoilLoop }
+\def\tx@Coil{Coil }
+\def\psCoil{\def\pst@par{}\pst@object{psCoil}}
+\def\psCoil@i#1#2{%
+\begin@AltOpenObj
+\showpointsfalse
+\pst@getangle{#1}\pst@tempa
+\pst@getangle{#2}\pst@tempb
+\addto@pscode{%
+\pst@tempa
+\pst@tempb
+\psk@coilwidth
+\pscoilheight
+\psk@coilaspect
+\psk@coilinc
+\pst@coildict \tx@AltCoil end
+\@nameuse{psls@\pslinestyle}}%
+\end@OpenObj}
+\def\tx@AltCoil{AltCoil }
+\def\pszigzag{\def\pst@par{}\pst@object{pszigzag}}
+\def\pszigzag@i{\pst@getarrows\pszigzag@ii}
+\def\pszigzag@ii(#1){%
+\@ifnextchar({\pszigzag@iii{1}(#1)}{\pszigzag@iii{\z@}(0,0)(#1)}}
+\def\pszigzag@iii#1(#2)(#3){%
+\begin@OpenObj
+\pst@getcoor{#2}\pst@tempa
+\pst@getcoor{#3}\pst@tempb
+\pst@optcp{#1}\pst@tempa
+\addto@pscode{%
+\pst@tempa
+\pst@tempb
+\pscoilheight
+\psk@coilwidth
+\psk@coilarmA
+\psk@coilarmB
+\pst@coildict \tx@ZigZag end
+\psline@iii
+\tx@Line}%
+\end@OpenObj}
+\def\tx@ZigZag{ZigZag }
+\def\nccoil{\def\pst@par{}\pst@object{nccoil}}
+\def\nccoil@i{\check@arrow{\nccoil@ii}}
+\def\nccoil@ii#1#2{\nc@object{#1}{#2}{.5}{%
+\tx@NCCoor
+tx@Dict begin
+\psk@coilwidth \pscoilheight
+\psk@coilarmA \psk@coilarmB
+\psk@coilaspect \psk@coilinc
+\pst@coildict \tx@Coil end
+end}}
+\def\pccoil{\def\pst@par{}\pst@object{pccoil}}
+\def\pccoil@i{\pc@object\nccoil@ii}
+\def\nczigzag{\def\pst@par{}\pst@object{nczigzag}}
+\def\nczigzag@i{\check@arrow{\nczigzag@ii}}
+\def\nczigzag@ii#1#2{\nc@object{#1}{#2}{.5}{%
+\tx@NCCoor
+tx@Dict begin
+\pscoilheight
+\psk@coilwidth
+\psk@coilarmA
+\psk@coilarmB
+\pst@coildict \tx@ZigZag end
+\psline@iii
+\tx@Line
+end}}
+\def\pczigzag{\def\pst@par{}\pst@object{pczigzag}}
+\def\pczigzag@i{\pc@object\nczigzag@ii}
+\catcode`\@=\TheAtCode\relax
+\endinput
+%%
+%% END: pst-coil.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-dots.pro b/usergrps/uktug/baskervi/6_2/spqr/pst-dots.pro
new file mode 100644
index 0000000000..461c6c6f9c
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-dots.pro
@@ -0,0 +1,107 @@
+%!PS-Adobe-2.0
+%%Title: Dot Font for PSTricks
+%%Creator: Timothy Van Zandt <tvz@Princeton.EDU>
+%%Creation Date: May 7, 1993
+10 dict dup begin
+ /FontType 3 def
+ /FontMatrix [ .001 0 0 .001 0 0 ] def
+ /FontBBox [ 0 0 0 0 ] def
+ /Encoding 256 array def
+ 0 1 255 { Encoding exch /.notdef put } for
+ Encoding
+ dup (b) 0 get /Bullet put
+ dup (c) 0 get /Circle put
+ dup (C) 0 get /BoldCircle put
+ dup (u) 0 get /SolidTriangle put
+ dup (t) 0 get /Triangle put
+ dup (T) 0 get /BoldTriangle put
+ dup (r) 0 get /SolidSquare put
+ dup (s) 0 get /Square put
+ dup (S) 0 get /BoldSquare put
+ dup (q) 0 get /SolidPentagon put
+ dup (p) 0 get /Pentagon put
+ (P) 0 get /BoldPentagon put
+ /Metrics 13 dict def
+ Metrics begin
+ /Bullet 1000 def
+ /Circle 1000 def
+ /BoldCircle 1000 def
+ /SolidTriangle 1344 def
+ /Triangle 1344 def
+ /BoldTriangle 1344 def
+ /SolidSquare 886 def
+ /Square 886 def
+ /BoldSquare 886 def
+ /SolidPentagon 1093.2 def
+ /Pentagon 1093.2 def
+ /BoldPentagon 1093.2 def
+ /.notdef 0 def
+ end
+ /BBoxes 13 dict def
+ BBoxes begin
+ /Circle { -550 -550 550 550 } def
+ /BoldCircle /Circle load def
+ /Bullet /Circle load def
+ /Triangle { -571.5 -330 571.5 660 } def
+ /BoldTriangle /Triangle load def
+ /SolidTriangle /Triangle load def
+ /Square { -450 -450 450 450 } def
+ /BoldSquare /Square load def
+ /SolidSquare /Square load def
+ /Pentagon { -546.6 -465 546.6 574.7 } def
+ /BoldPentagon /Pentagon load def
+ /SolidPentagon /Pentagon load def
+ /.notdef { 0 0 0 0 } def
+ end
+ /CharProcs 20 dict def
+ CharProcs begin
+ /Adjust {
+ 2 copy dtransform floor .5 add exch floor .5 add exch idtransform
+ 3 -1 roll div 3 1 roll exch div exch scale
+ } def
+ /CirclePath { 0 0 500 0 360 arc closepath } def
+ /Bullet { 500 500 Adjust CirclePath fill } def
+ /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath eofill } def
+ /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath eofill } def
+ /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
+ /TrianglePath {
+ 0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath
+ } def
+ /SolidTriangle { TrianglePath fill } def
+ /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
+ /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
+ /SquarePath {
+ -450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto
+ closepath
+ } def
+ /SolidSquare { SquarePath fill } def
+ /Square { SquarePath .89 .89 scale SquarePath eofill } def
+ /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
+ /PentagonPath {
+ -337.8 -465 moveto
+ 337.8 -465 lineto
+ 546.6 177.6 lineto
+ 0 574.7 lineto
+ -546.6 177.6 lineto
+ closepath
+ } def
+ /SolidPentagon { PentagonPath fill } def
+ /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
+ /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
+ /.notdef { } def
+ end
+ /BuildGlyph {
+ exch
+ begin
+ Metrics 1 index get exec 0
+ BBoxes 3 index get exec
+ setcachedevice
+ CharProcs begin load exec end
+ end
+ } def
+ /BuildChar {
+ 1 index /Encoding get exch get
+ 1 index /BuildGlyph get exec
+ } bind def
+end
+/PSTricksDotFont exch definefont pop
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-node.pro b/usergrps/uktug/baskervi/6_2/spqr/pst-node.pro
new file mode 100644
index 0000000000..fc76578d41
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-node.pro
@@ -0,0 +1,203 @@
+%!
+% PostScript prologue for pst-node.tex.
+% Created 1994/6/7. Source file was pst-node.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@NodeDict 400 dict def tx@NodeDict begin
+tx@Dict begin /T /translate load def end
+/NewNode { gsave /next ED dict dup 3 1 roll def exch { dup 3 1 roll def }
+if begin tx@Dict begin STV CP T exec end /NodeMtrx CM def next end
+grestore } def
+/InitPnode { /Y ED /X ED /NodePos { NodeSep Cos mul NodeSep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { NodeSep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r NodeSep add def } { /dx l NodeSep sub def
+} ifelse Sin 0 gt { /dy u NodeSep add def } { /dy d NodeSep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div NodeSep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d NodeSep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div NodeSep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w NodeSep add def /hh h NodeSep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/XYPos { dup sin exch cos Do /Cos ED /Sin ED /Dist ED Cos 0 gt { Dist
+Dist Sin mul Cos div } { Cos 0 lt { Dist neg Dist Sin mul Cos div neg }
+{ 0 Dist Sin mul } ifelse } ifelse Do } def
+/GetEdge { dup 0 eq { pop begin 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED /NodeSep ED NodePos NodeMtrx
+dtransform CM idtransform end } { 1 eq {{exch}} {{}} ifelse /Do ED pop
+XYPos } ifelse } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdgeA { NodeSepA AngleA NodeA NodeSepTypeA GetEdge OffsetA AngleA
+AddOffset yA add /yA1 ED xA add /xA1 ED } def
+/GetEdgeB { NodeSepB AngleB NodeB NodeSepTypeB GetEdge OffsetB AngleB
+AddOffset yB add /yB1 ED xB add /xB1 ED } def
+/GetArmA { ArmTypeA 0 eq { /xA2 ArmA AngleA cos mul xA1 add def /yA2 ArmA
+AngleA sin mul yA1 add def } { ArmTypeA 1 eq {{exch}} {{}} ifelse /Do ED
+ArmA AngleA XYPos OffsetA AngleA AddOffset yA add /yA2 ED xA add /xA2 ED
+} ifelse } def
+/GetArmB { ArmTypeB 0 eq { /xB2 ArmB AngleB cos mul xB1 add def /yB2 ArmB
+AngleB sin mul yB1 add def } { ArmTypeB 1 eq {{exch}} {{}} ifelse /Do ED
+ArmB AngleB XYPos OffsetB AngleB AddOffset yB add /yB2 ED xB add /xB2 ED
+} ifelse } def
+/InitNC { /b ED /a ED /NodeSepTypeB ED /NodeSepTypeA ED /NodeSepB ED
+/NodeSepA ED /OffsetB ED /OffsetA ED tx@NodeDict a known tx@NodeDict b
+known and dup { /NodeA a load def /NodeB b load def NodeA GetCenter /yA
+ED /xA ED NodeB GetCenter /yB ED /xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yyA sub yyB yyA sub Div xxB xxA sub mul xxA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/HPutLine { HPosBegin /yyA ED /xxA ED /yyB ED /xxB ED HPosEnd } def
+/HPutLines { HPosBegin yB yA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { dup Y check { exit
+} { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark HPosEnd
+} def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xxA sub xxB xxA sub Div yyB yyA sub mul yyA add def
+/NAngle yyB yyA sub xxB xxA sub Atan def } def
+/VPutLine { VPosBegin /yyA ED /xxA ED /yyB ED /xxB ED VPosEnd } def
+/VPutLines { VPosBegin xB xA ge { /check { le } def } { /check { ge } def
+} ifelse /xxA xA def /yyA yA def mark xB yB LPutVar { 1 index X check {
+exit } { /yyA ED /xxA ED } ifelse } loop /yyB ED /xxB ED cleartomark
+VPosEnd } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 xA1 yA1 ] cvx def /LPutPos {
+LPutVar LPutLine } def /HPutPos { LPutVar HPutLine } def /VPutPos {
+LPutVar VPutLine } def LPutVar } def
+/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCLines { false NArray n 0 eq { NCLine } { 2 copy yA sub exch xA sub
+Atan /AngleA ED n 2 mul dup index exch index yB sub exch xB sub Atan
+/AngleB ED GetEdgeA GetEdgeB /LPutVar [ xB1 yB1 n 2 mul 4 add 4 roll xA1
+yA1 ] cvx def mark LPutVar tx@Dict begin false Line end /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+ifelse } def
+/NCCurve { GetEdgeA GetEdgeB xA1 xB1 sub yA1 yB1 sub Pyth 2 div dup 3 -1
+roll mul /ArmA ED mul /ArmB ED /ArmTypeA 0 def /ArmTypeB 0 def GetArmA
+GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict
+begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
+cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
+} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
+/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
+itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
+yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1
+yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
+/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
+yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
+/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
+tx@Dict begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 x0 y0 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCBar { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate def
+xA2 yA2 mtrx itransform pop xB2 yB2 mtrx itransform pop sub dup 0 mtrx
+transform 3 -1 roll 0 gt { /yB2 exch yB2 add def /xB2 exch xB2 add def }
+{ /yA2 exch neg yA2 add def /xA2 exch neg xA2 add def } ifelse mark ArmB
+0 ne { xB1 yB1 } if xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict
+begin false Line end /LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx
+def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCDiag { GetEdgeA GetEdgeB GetArmA GetArmB mark ArmB 0 ne { xB1 yB1 } if
+xB2 yB2 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end
+/LPutVar [ xB1 yB1 xB2 yB2 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCDiagg { GetEdgeA GetArmA yB yA2 sub xB xA2 sub Atan 180 add /AngleB ED
+GetEdgeB mark xB1 yB1 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin
+false Line end /LPutVar [ xB1 yB1 xA2 yA2 xA1 yA1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
+def xA2 yA2 mtrx transform loopsize add /yA3 ED /xA3 ED /xB3 xB2 yB2
+mtrx transform pop def xB3 yA3 mtrx itransform /yB3 ED /xB3 ED xA3 yA3
+mtrx itransform /yA3 ED /xA3 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2
+xB3 yB3 xA3 yA3 xA2 yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false
+Line end /LPutVar [ xB1 yB1 xB2 yB2 xB3 yB3 xA3 yA3 xA2 yA2 xA1 yA1 ]
+cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines } def /VPutPos {
+VPutLines } def } def
+/NCCircle { NodeSepA 0 NodeA 0 GetEdge pop 2 div dup 2 exp r r mul sub
+abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add exch 2
+copy /LPutVar [ 4 2 roll r AngleA ] cvx def /LPutPos { LPutVar t 360 mul
+add dup 5 1 roll 90 sub PtoC 3 -1 roll add /Y ED add /X ED /NAngle ED }
+def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA 90 sub a
+add AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c
+57.2957 r Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetEdgeA GetEdgeB /dx d AngleB sin mul def /dy d AngleB cos
+mul neg def /hx h AngleB sin mul neg def /hy h AngleB cos mul def
+/LPutVar [ xA1 hx add yA1 hy add xB1 hx add yB1 hy add xB1 dx add yB1 dy
+add xA1 dx add yA1 dy add ] cvx def /LPutPos { LPutLines } def /HPutPos
+{ xB yB xA yA LPutLine } def /VPutPos { HPutPos } def mark LPutVar
+tx@Dict begin false Polygon end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetEdgeA GetEdgeB /AngleA tA 180 add yA yA1 sub xA xA1 sub Pyth c mul
+sub def /AngleB tB 180 add yB yB1 sub xB xB1 sub Pyth c mul add def l 0
+eq { x0 y0 r h add AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn }
+{ x0 y0 translate /tA AngleA l c mul add def /tB AngleB l c mul sub def
+0 0 r h add tA tB arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0
+0 r d add tB tA arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2
+roll l arcto 4 { pop } repeat r h add tA PtoC l arcto 4 { pop } repeat }
+ifelse closepath /LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos
+{ LPutVar /d ED /h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le {
+r h add AngleA 1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC }
+{ t 2 lt { /NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add
+add AngleB PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub
+mul add dup 90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t
+sub d mul t 3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse
+y0 add /Y ED x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos {
+LPutPos } def } def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def GetEdgeA w xA1 xB sub yA1 yB
+sub Pyth Pyth w Div CLW 2 div mul 2 div dup AngleA sin mul yA1 add /yA1
+ED AngleA cos mul xA1 add /xA1 ED /LPutVar [ xA1 yA1 m { xB w add yB xB
+w sub yB } { xB yB w sub xB yB w add } ifelse xA1 yA1 ] cvx def /LPutPos
+{ LPutLines } def /VPutPos@ { LPutVar flag { 8 4 roll pop pop pop pop }
+{ pop pop pop pop 4 2 roll } ifelse } def /VPutPos { VPutPos@ VPutLine }
+def /HPutPos { VPutPos@ HPutLine } def mark LPutVar tx@Dict begin
+/ArrowA { moveto } def /ArrowB { } def false Line closepath end } def
+/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-node.sty b/usergrps/uktug/baskervi/6_2/spqr/pst-node.sty
new file mode 100644
index 0000000000..44be47495f
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-node.sty
@@ -0,0 +1,4 @@
+%% BEGIN pst-node.sty
+\input pst-node.tex
+\endinput
+%% END pst-node.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-node.tex b/usergrps/uktug/baskervi/6_2/spqr/pst-node.tex
new file mode 100644
index 0000000000..9322b44c43
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-node.tex
@@ -0,0 +1,1079 @@
+%% BEGIN: pst-node.tex
+%% Generated on <1994/6/7> from `pst-node.doc'.
+%% For use with the PostScript header file `pst-node.pro'.
+%%
+\def\fileversion{0.94-beta, width DG fixes}
+\def\filedate{96/01/01}
+%%
+%% pst-node.tex: Node macros for PSTricks.
+%% See the PSTricks read-me file and the User's Guide for documentation.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% Copying of part or all of any file in the pstricks.tex package
+%% is allowed under the following conditions only:
+%% (1) You may freely distribute unchanged copies of the files. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of any file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the files, for personal use or for use
+%% in a macro package for distribution, as long as credit is given
+%% where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% these files or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+\message{ v\fileversion, \filedate}
+\csname PSTnodesLoaded\endcsname
+\let\PSTnodesLoaded\endinput
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi\relax
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+\pstheader{pst-node.pro}
+\def\pst@nodedict{tx@NodeDict begin }
+\def\pst@zapspace#1 #2{%
+#1%
+\ifx#2\@empty\else\expandafter\pst@zapspace\fi
+#2}
+\def\pst@getnode#1#2{%
+\pst@expandafter\pst@@getnode{#1},,\@nil#2}
+\def\pst@@getnode#1,#2,#3\@nil#4{%
+\ifx\@empty#3\@empty
+\edef#4{/N@\pst@zapspace#1 \@empty\space}%
+\else
+\pst@cntg=#1\relax
+\pst@cnth=#2\relax
+\edef#4{/N@M-\ifnum\psmatrixcnt=\z@ 1\else\the\psmatrixcnt\fi
+-\the\pst@cntg-\the\pst@cnth\space}%
+\fi}
+\def\tx@NewNode{NewNode }
+\def\pst@newnode#1#2#3#4{%
+\leavevmode
+\pst@getnode{#1}\pst@thenode
+\pst@Verb{%
+\pst@nodedict
+{#3}
+\ifx\psk@name\relax false \else \psk@name true \fi
+\pst@thenode
+#2
+{#4}
+\tx@NewNode
+end}%
+\global\let\psk@name\relax
+\pstree@nodehook
+\global\let\pstree@nodehook\relax}
+\let\pstree@nodehook\relax
+\newif\ifnodealign
+\def\psset@nodealign#1{\@nameuse{nodealign#1}}
+\psset@nodealign{false}
+\def\pst@nodealign{%
+\pst@dimg=\ht\pst@hbox
+\advance\pst@dimg-\dp\pst@hbox
+\divide\pst@dimg2
+\lower\pst@dimg}
+\def\tx@InitPnode{InitPnode }
+\def\pnode{\@ifnextchar({\pnode@}{\pnode@(0,0)}}
+\def\pnode@(#1)#2{%
+\pst@@getcoor{#1}%
+\pst@newnode{#2}{10}{\pst@coor}{\tx@InitPnode}%
+\ignorespaces}
+\def\tx@InitCnode{InitCnode }
+\def\cnode{\pst@object{cnode}}
+\def\cnode@i{\@ifnextchar({\cnode@ii}{\cnode@ii(0,0)}}
+\def\cnode@ii(#1)#2#3{%
+\leavevmode
+\hbox{%
+\use@par
+\pst@@getcoor{#1}%
+\pssetlength\pst@dimc{#2}%
+\pst@dimg=\psk@dimen\pslinewidth
+\advance\pst@dimc-\pst@dimg
+\advance\pst@dimc.5\pslinewidth
+\ifnodealign
+\kern\pst@dimc
+\vrule width\z@ height \pst@dimc depth \pst@dimc
+\fi
+\pscircle@do(#1){#2}%
+\pst@newnode{#3}{11}{\pst@coor \pst@number\pst@dimc}{\tx@InitCnode}%
+\ifnodealign \kern\pst@dimc\egroup \fi}%
+\ignorespaces}
+\def\Cnode{\pst@object{Cnode}}
+\def\Cnode@i{\@ifnextchar({\Cnode@ii}{\Cnode@ii(0,0)}}
+\def\Cnode@ii(#1)#2{\cnode@ii(#1){\psk@radius}{#2}}%
+\def\cnodeput{\pst@object{cnodeput}}
+\def\cnodeput@i{\@ifnextchar({\cnodeput@iii}{\cnodeput@ii}}
+\def\cnodeput@ii#1{%
+\addto@par{rot={#1}}%
+\@ifnextchar({\cnodeput@iii}{\cnodeput@iii(\z@,\z@)}}
+\def\cnodeput@iii(#1)#2{%
+\pst@killglue
+\@fixedradiusfalse
+\def\pst@nodehook{\cnodeput@iv{#2}}%
+\pst@makebox{\cput@v{#1}}}
+\def\cnodeput@iv#1{%
+\pst@newnode{#1}{11}{\pscirclebox@iv \pst@number\pslinewidth add}%
+{\tx@InitCnode}%
+\global\let\pst@nodehook\relax}
+\def\Cnodeput{\pst@object{Cnodeput}}
+\def\Cnodeput@i{\@ifnextchar({\Cnodeput@iii}{\Cnodeput@ii}}
+\def\Cnodeput@ii#1{%
+\addto@par{rot={#1}}%
+\@ifnextchar({\Cnodeput@iii}{\Cnodeput@iii(\z@,\z@)}}
+\def\Cnodeput@iii(#1)#2{%
+\pst@killglue
+\@fixedradiustrue
+\def\pst@nodehook{\Cnodeput@iv{#2}}%
+\pst@makebox{\cput@iv{#1}}}
+\def\Cnodeput@iv#1{%
+\pst@newnode{#1}{11}{%
+\pst@number{\wd\pst@hbox} 2 div \pst@number\pst@dima % x y
+\pst@number\pst@dimb \pst@number\pslinewidth \psk@dimen .5 sub mul sub }% r
+{\tx@InitCnode}%
+\global\let\pst@nodehook\relax}
+\def\circlenode{\pst@object{circlenode}}
+\def\circlenode@i#1{\pst@makebox{\circlenode@ii{#1}}}
+\def\circlenode@ii#1{%
+\begingroup
+\pst@useboxpar
+\setbox\pst@hbox=\hbox{%
+\cnodeput@iv{#1}%
+\pscirclebox@iii
+\box\pst@hbox}%
+\ifnodealign \psboxseptrue \fi
+\ifpsboxsep \pscirclebox@sep \fi
+\leavevmode
+\ifnodealign\pst@nodealign\fi
+\box\pst@hbox
+\endgroup}
+\def\Circlenode{\pst@object{Circlenode}}
+\def\Circlenode@i#1{\pst@makebox{\Circlenode@ii{#1}}}
+\def\Circlenode@ii#1{%
+\begingroup
+\pst@useboxpar
+\pst@dima=\ht\pst@hbox
+\advance\pst@dima\dp\pst@hbox
+\divide\pst@dima\tw@
+\pssetlength\pst@dimb\psk@radius
+\setbox\pst@hbox=\hbox{%
+\Cnodeput@iv{#1}%
+\pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}%
+\box\pst@hbox}%
+\ifnodealign \psboxseptrue \fi
+\ifpsboxsep \psCirclebox@sep \fi
+\leavevmode
+\ifnodealign\pst@nodealign\fi
+\box\pst@hbox
+\endgroup}
+\def\tx@GetRnodePos{GetRnodePos }
+\def\tx@InitRnode{InitRnode }
+\def\rnode{\@ifnextchar[{\rnode@i}{\def\pst@par{}\rnode@ii}}
+\def\rnode@i[#1]{\def\pst@par{ref=#1}\rnode@ii}
+\def\rnode@ii#1{\pst@makebox{\rnode@iii\rnode@iv{#1}}}
+\def\rnode@iii#1#2{%
+\begingroup
+#1%
+\if@star\pst@starbox\fi
+\ifnodealign\lower\pst@dimb\fi
+\hbox{%
+\pst@newnode{#2}{16}{%
+\pst@number{\ht\pst@hbox}%
+\pst@number{\dp\pst@hbox}%
+\pst@number{\wd\pst@hbox}%
+\pst@number\pst@dima
+\pst@number\pst@dimb}%
+{\tx@InitRnode}%
+\box\pst@hbox}%
+\endgroup}
+\def\rnode@iv{%
+\pst@dima=\psk@xref\wd\pst@hbox
+\ifx\psk@yref\relax
+\pst@dimb=\z@
+\else
+\pst@dimb=\ht\pst@hbox
+\advance\pst@dimb\dp\pst@hbox
+\pst@dimb=\psk@yref\pst@dimb
+\advance\pst@dimb-\dp\pst@hbox
+\fi}
+\def\psset@href#1{\pst@checknum{#1}\psk@href}
+\psset@href{0}
+\def\psset@vref#1{\def\psk@vref{#1}}
+\psset@vref{.7ex}
+\def\Rnode{\pst@object{Rnode}}
+\def\Rnode@i#1{\pst@makebox{\rnode@iii\Rnode@ii{#1}}}
+\def\Rnode@ii{%
+\pst@dima=\psk@href\wd\pst@hbox
+\advance\pst@dima\wd\pst@hbox
+\divide\pst@dima 2
+\pssetlength\pst@dimb{\psk@vref}}
+\def\tx@DiaNodePos{DiaNodePos }
+\def\dianode{\pst@object{dianode}}
+\def\dianode@i#1{\pst@makebox{\dianode@ii{#1}}}
+\def\dianode@ii#1{%
+\begingroup
+\pst@useboxpar
+\psdiabox@iii
+\setbox\pst@hbox=\hbox{%
+\pst@newnode{#1}{14}{}{%
+/X \pst@number\pst@dima def
+/Y \pst@number\pst@dimb def
+/w \pst@number\pst@dimc 2 mul def
+/h \pst@number\pst@dimd 2 mul def
+/NodePos { \tx@DiaNodePos } def}%
+\box\pst@hbox}%
+\ifnodealign\psboxseptrue\fi
+\ifpsboxsep\psdiabox@sep\fi
+\ifnodealign\lower\pst@dimb\fi
+\box\pst@hbox
+\endgroup}
+\def\tx@TriNodePos{TriNodePos }
+\def\tx@InitTriNode{InitTriNode }
+\def\trinode{\pst@object{trinode}}
+\def\trinode@i#1{\pst@makebox{\trinode@ii{#1}}}
+\def\trinode@ii#1{%
+\begingroup
+\pst@useboxpar
+\pstribox@iii
+\setbox\pst@hbox=\hbox{%
+\pst@newnode{#1}{14}{}{%
+\pst@number\pst@dimc
+\pst@number\pst@dimd
+\ifodd\psk@trimode
+exch
+\pst@number\pst@dima
+\else
+\pst@number\pst@dimb
+\fi
+\psk@trimode
+\pst@number{\wd\pst@hbox}%
+\pst@number{\ht\pst@hbox}%
+\pst@number{\dp\pst@hbox}%
+\tx@InitTriNode}%
+\box\pst@hbox}%
+\ifnodealign\psboxseptrue\fi
+\ifpsboxsep\pstribox@sep\fi
+\ifnodealign\lower\pst@tempa\fi
+\box\pst@hbox
+\endgroup}
+\def\tx@OvalNodePos{OvalNodePos }
+\def\ovalnode{\pst@object{ovalnode}}
+\def\ovalnode@i#1{\pst@makebox{\ovalnode@ii{#1}}}
+\def\ovalnode@ii#1{%
+\begingroup
+\pst@useboxpar
+\psovalbox@iii
+\setbox\pst@hbox=\hbox{%
+\pst@newnode{#1}{14}{}{%
+/X \pst@number\pst@dima def
+/Y \pst@number\pst@dimb def
+/w \pst@number\pst@dimc def
+/h \pst@number\pst@dimd def
+/NodePos { \tx@OvalNodePos } def}%
+\unhbox\pst@hbox}%
+\ifnodealign\psboxseptrue\fi
+\ifpsboxsep\psovalbox@sep\fi
+\ifnodealign\lower\pst@dimb\fi
+\box\pst@hbox
+\endgroup}
+\def\dotnode{\pst@object{dotnode}}
+\def\dotnode@i{\@ifnextchar({\dotnode@ii}{\dotnode@ii(\z@,\z@)}}
+\def\dotnode@ii(#1)#2{%
+\leavevmode
+\hbox{%
+\use@par
+\pst@@getcoor{#1}%
+\pst@getdotsize
+\pstree@nodehook
+\ifnodealign
+\pst@dima=\pst@dimg
+\kern\pst@dima
+\vrule width\z@ height \pst@dimh depth \pst@dimh
+\fi
+\pst@newnode{#2}{14}{}{%
+\pst@coor
+/Y ED /X ED
+/w \pst@number\pst@dimg def
+/h \pst@number\pst@dimh def
+/NodePos { \tx@OvalNodePos } def}%
+\psdot@ii(#1)%
+\ifnodealign\kern\pst@dima\fi}%
+\ignorespaces}
+\def\psset@framesize#1{\pst@expandafter\psset@@framesize{#1} \@nil}
+\def\psset@@framesize#1 #2\@nil{%
+\pssetlength\pst@dimg{#1}%
+\divide\pst@dimg2
+\edef\psk@framewidth{\pst@number\pst@dimg}%
+\ifx\@empty#2\@empty
+\let\psk@frameheight\psk@framewidth
+\else
+\pssetlength\pst@dimg{#2}%
+\divide\pst@dimg2
+\edef\psk@frameheight{\pst@number\pst@dimg}%
+\fi}
+\psset@framesize{10pt}
+\def\fnode{\pst@object{fnode}}
+\def\fnode@i{\@ifnextchar({\fnode@ii}{\fnode@ii(\z@,\z@)}}
+\def\fnode@ii(#1)#2{%
+\leavevmode
+\pst@killglue
+\hbox{%
+\use@par
+\begin@ClosedObj
+\ifnodealign
+\kern\psk@framewidth\p@
+\vrule width\z@ height \psk@frameheight\p@ depth \psk@frameheight\p@
+\edef\pst@coor{0 0 }%
+\else
+\pst@@getcoor{#1}%
+\fi
+\pst@newnode{#2}{14}{}{%
+\pst@coor
+/Y ED /X ED
+/d \psk@dimen .5 sub CLW mul neg def
+/r \psk@framewidth d add def
+/l r neg def
+/u \psk@frameheight d add def
+/d u neg def
+/NodePos { \tx@GetRnodePos } def}%
+\addto@pscode{%
+/x2 \psk@framewidth CLW \psk@dimen mul sub def
+/y2 \psk@frameheight CLW \psk@dimen mul sub def
+\pst@coor 2 copy
+y2 sub /y1 ED
+x2 sub /x1 ED
+y2 add /y2 ED
+x2 add /x2 ED
+\psk@cornersize
+1 index 0 eq { pop pop \tx@Rect } { \tx@OvalFrame } ifelse}%
+\def\pst@linetype{2}%
+\showpointsfalse
+\end@ClosedObj
+\ifnodealign\kern\psk@framewidth\p@\fi}%
+\ignorespaces}
+\def\psset@nodesepA#1{%
+\pst@getlength{#1}\psk@nodesepA
+\def\psk@nodeseptypeA{0 }}
+\def\psset@nodesepB#1{%
+\pst@getlength{#1}\psk@nodesepB
+\def\psk@nodeseptypeB{0 }}
+\def\psset@nodesep#1{%
+\pst@getlength{#1}\psk@nodesepA
+\let\psk@nodesepB\psk@nodesepA
+\def\psk@nodeseptypeA{0 }%
+\def\psk@nodeseptypeB{0 }}
+\psset@nodesep{0pt}
+\def\psset@XnodesepA#1{%
+\pst@getlength{#1}\psk@nodesepA
+\def\psk@nodeseptypeA{1 }}
+\def\psset@XnodesepB#1{%
+\pst@getlength{#1}\psk@nodesepB
+\def\psk@nodeseptypeB{1 }}
+\def\psset@Xnodesep#1{%
+\pst@getlength{#1}\psk@nodesepA
+\let\psk@nodesepB\psk@nodesepA
+\def\psk@nodeseptypeA{1 }%
+\def\psk@nodeseptypeB{1 }}
+\def\psset@YnodesepA#1{%
+\pst@getlength{#1}\psk@nodesepA
+\def\psk@nodeseptypeA{2 }}
+\def\psset@YnodesepB#1{%
+\pst@getlength{#1}\psk@nodesepB
+\def\psk@nodeseptypeB{2 }}
+\def\psset@Ynodesep#1{%
+\pst@getlength{#1}\psk@nodesepA
+\let\psk@nodesepB\psk@nodesepA
+\def\psk@nodeseptypeA{2 }%
+\def\psk@nodeseptypeB{2 }}
+\def\psset@armA#1{%
+\pst@getlength{#1}\psk@armA
+\def\psk@armtypeA{0 }}
+\def\psset@armB#1{%
+\pst@getlength{#1}\psk@armB
+\def\psk@armtypeB{0 }}
+\def\psset@arm#1{%
+\pst@getlength{#1}\psk@armA
+\let\psk@armB\psk@armA
+\def\psk@armtypeA{0 }%
+\def\psk@armtypeB{0 }}
+\psset@arm{10pt}
+\def\psset@XarmA#1{%
+\pst@getlength{#1}\psk@armA
+\def\psk@armtypeA{1 }}
+\def\psset@XarmB#1{%
+\pst@getlength{#1}\psk@armB
+\def\psk@armtypeB{1 }}
+\def\psset@Xarm#1{%
+\pst@getlength{#1}\psk@armA
+\let\psk@armB\psk@armA
+\def\psk@armtypeA{1 }%
+\def\psk@armtypeB{1 }}
+\def\psset@YarmA#1{%
+\pst@getlength{#1}\psk@armA
+\def\psk@armtypeA{2 }}
+\def\psset@YarmB#1{%
+\pst@getlength{#1}\psk@armB
+\def\psk@armtypeB{2 }}
+\def\psset@Yarm#1{%
+\pst@getlength{#1}\psk@armA
+\let\psk@armB\psk@armA
+\def\psk@armtypeA{2 }%
+\def\psk@armtypeB{2 }}
+\def\psset@offsetA#1{\pst@getlength{#1}\psk@offsetA}
+\def\psset@offsetB#1{\pst@getlength{#1}\psk@offsetB}
+\def\psset@offset#1{\psset@offsetA{#1}\let\psk@offsetB\psk@offsetA}
+\psset@offset{0pt}
+\def\psset@angleA#1{\pst@getangle{#1}\psk@angleA}
+\def\psset@angleB#1{\pst@getangle{#1}\psk@angleB}%
+\def\psset@angle#1{%
+\pst@getangle{#1}\psk@angleA
+\let\psk@angleB\psk@angleA}
+\psset@angle{0}
+\def\psset@arcangleA#1{\pst@getangle{#1}\psk@arcangleA}
+\def\psset@arcangleB#1{\pst@getangle{#1}\psk@arcangleB}%
+\def\psset@arcangle#1{%
+\pst@getangle{#1}\psk@arcangleA
+\let\psk@arcangleB\psk@arcangleA}
+\psset@arcangle{8}
+\def\psset@ncurvA#1{\pst@checknum{#1}\psk@ncurvA}
+\def\psset@ncurvB#1{\pst@checknum{#1}\psk@ncurvB}%
+\def\psset@ncurv#1{\psset@ncurvA{#1}\let\psk@ncurvB\psk@ncurvA}
+\psset@ncurv{.67}
+\def\tx@GetCenter{GetCenter }
+\def\tx@XYPos{XYPos }
+\def\tx@GetEdge{GetEdge }
+\def\tx@AddOffset{AddOffset }
+\def\tx@GetEdgeA{GetEdgeA }
+\def\tx@GetEdgeB{GetEdgeB }
+\def\tx@GetArmA{GetArmA }
+\def\tx@GetArmB{GetArmB }
+\def\check@arrow#1#2{%
+\check@@arrow#2-\@nil
+\if@pst
+\addto@par{arrows=#2}%
+\def\next{#1}%
+\else
+\def\next{#1{#2}}%
+\fi
+\next}
+\def\check@@arrow#1-#2\@nil{%
+\ifx\@nil#2\@nil\@pstfalse\else\@psttrue\fi}
+\def\tx@InitNC{InitNC }
+\def\nc@object#1#2#3#4#5{%
+\csname begin@#1Obj\endcsname
+\showpointsfalse
+\pst@getnode{#2}\pst@tempa
+\pst@getnode{#3}\pst@tempb
+\gdef\npos@default{#4 }%
+\addto@pscode{%
+/NCLW CLW def
+\pst@nodedict
+\psk@offsetA
+\psk@offsetB neg
+\psk@nodesepA
+\psk@nodesepB
+\psk@nodeseptypeA
+\psk@nodeseptypeB
+\pst@tempa
+\pst@tempb
+\tx@InitNC { #5 } if
+end}%
+\def\use@pscode{%
+\pst@Verb{gsave \tx@STV newpath \pst@code\space grestore}%
+\gdef\pst@code{}}%
+\csname end@#1Obj\endcsname
+\pst@shortput}
+\def\npos@default{.5 }
+\def\pc@object#1{%
+\@ifnextchar({\pc@@object#1}{\pst@getarrows{\pc@@object#1}}}
+\def\pc@@object#1(#2)(#3){%
+\pnode(#2){@@A}\pnode(#3){@@B}%
+#1{@@A}{@@B}}
+\def\tx@LPutLine{LPutLine }
+\def\tx@LPutLines{LPutLines }
+\def\tx@BezierMidpoint{BezierMidpoint }
+\def\tx@HPosBegin{HPosBegin }
+\def\tx@HPosEnd{HPosEnd }
+\def\tx@HPutLine{HPutLine }
+\def\tx@HPutLines{HPutLines }
+\def\tx@VPosBegin{VPosBegin }
+\def\tx@VPosEnd{VPosEnd }
+\def\tx@VPutLine{VPutLine }
+\def\tx@VPutLines{VPutLines }
+\def\tx@HPutCurve{HPutCurve }
+\def\tx@NCCoor{NCCoor }
+\def\tx@NCLine{NCLine }
+\def\ncline{\pst@object{ncline}}
+\def\ncline@i{\check@arrow{\ncline@ii}}
+\def\ncline@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{\tx@NCLine}}
+\def\pcline{\pst@object{pcline}}
+\def\pcline@i{\pc@object\ncline@ii}
+\def\ncLine{\pst@object{ncLine}}
+\def\ncLine@i{\check@arrow{\ncLine@ii}}
+\def\ncLine@ii#1#2{\nc@object{Open}{#1}{#2}{.5}%
+{\tx@NCLine /LPutPos { xB xA yB yA \tx@LPutLine } def}}
+\def\tx@NCLines{NCLines }
+\def\nclines{\pst@object{nclines}}
+\def\nclines@i{\check@arrow\nclines@ii}
+\def\nclines@ii#1#2{%
+\begingroup
+\use@par
+\def\pst@aftercoors{\nclines@iii{#1}{#2}}%
+\def\pst@coors{}%
+\pst@@getcoors}
+\def\nclines@iii#1#2{%
+\nc@object{Open}{#1}{#2}{.5}{%
+tx@Dict begin \psline@iii pop end
+mark \pst@coors \tx@NCLines}%
+\endgroup
+\ignorespaces}
+\def\tx@NCCurve{NCCurve }
+\def\nccurve{\pst@object{nccurve}}
+\def\nccurve@i{\check@arrow{\nccurve@ii}}
+\def\nccurve@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{%
+/AngleA \psk@angleA\space def /AngleB \psk@angleB\space def
+\psk@ncurvB\space \psk@ncurvA\space
+\tx@NCCurve}}
+\def\pccurve{\pst@object{pccurve}}
+\def\pccurve@i{\pc@object\nccurve@ii}
+\def\ncarc{\pst@object{ncarc}}
+\def\ncarc@i{\check@arrow{\ncarc@ii}}
+\def\ncarc@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{%
+yB yA sub xB xA sub \tx@Atan dup
+\psk@arcangleA\space add /AngleA ED
+\psk@arcangleB\space sub 180 add /AngleB ED
+\psk@ncurvB\space \psk@ncurvA\space
+\tx@NCCurve}}
+\def\pcarc{\pst@object{pcarc}}
+\def\pcarc@i{\pc@object\ncarc@ii}
+\def\tx@NCAngles{NCAngles }
+\def\ncangles{\pst@object{ncangles}}
+\def\ncangles@i{\check@arrow{\ncangles@ii}}
+\def\ncangles@ii#1#2{%
+\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngles}}
+\def\ncangles@iii{%
+tx@Dict begin \psline@iii pop end
+/AngleA \psk@angleA def
+/AngleB \psk@angleB def
+/ArmA \psk@armA def
+/ArmB \psk@armB def
+/ArmTypeA \psk@armtypeA def
+/ArmTypeB \psk@armtypeB def }
+\def\pcangles{\pst@object{pcangles}}
+\def\pcangles@i{\pc@object\ncangles@ii}
+\def\tx@NCAngle{NCAngle }
+\def\ncangle{\pst@object{ncangle}}
+\def\ncangle@i{\check@arrow{\ncangle@ii}}
+\def\ncangle@ii#1#2{%
+\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngle}}
+\def\pcangle{\pst@object{pcangle}}
+\def\pcangle@i{\pc@object\ncangle@ii}
+\def\tx@NCBar{NCBar }
+\def\ncbar{\pst@object{ncbar}}
+\def\ncbar@i{\check@arrow{\ncbar@ii}}
+\def\ncbar@ii#1#2{\nc@object{Open}{#1}{#2}{1.5}{%
+\ncangles@iii /AngleB \psk@angleA def \tx@NCBar}}
+\def\pcbar{\pst@object{pcbar}}
+\def\pcbar@i{\pc@object\ncbar@ii}
+\def\tx@NCDiag{NCDiag }
+\def\ncdiag{\pst@object{ncdiag}}
+\def\ncdiag@i{\check@arrow{\ncdiag@ii}}
+\def\ncdiag@ii#1#2{%
+\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCDiag}}
+\def\pcdiag{\pst@object{pcdiag}}
+\def\pcdiag@i{\pc@object\ncdiag@ii}
+\def\tx@NCDiagg{NCDiagg }
+\def\ncdiagg{\pst@object{ncdiagg}}
+\def\ncdiagg@i{\check@arrow{\ncdiagg@ii}}
+\def\ncdiagg@ii#1#2{%
+\nc@object{Open}{#1}{#2}{.5}{\ncangles@iii \tx@NCDiagg}}
+\def\pcdiagg{\pst@object{pcdiagg}}
+\def\pcdiagg@i{\pc@object\ncdiagg@ii}
+\def\tx@NCLoop{NCLoop }
+\def\psset@loopsize#1{\pst@getlength{#1}\psk@loopsize}
+\psset@loopsize{1cm}
+\def\ncloop{\pst@object{ncloop}}
+\def\ncloop@i{\check@arrow{\ncloop@ii}}
+\def\ncloop@ii#1#2{%
+\nc@object{Open}{#1}{#2}{2.5}%
+{\ncangles@iii /loopsize \psk@loopsize def \tx@NCLoop}}
+\def\pcloop{\pst@object{pcloop}}
+\def\pcloop@i{\pc@object\ncloop@ii}
+\def\tx@NCCircle{NCCircle }
+\def\nccircle{\pst@object{nccircle}}
+\def\nccircle@i{\check@arrow{\nccircle@ii}}
+\def\nccircle@ii#1#2{%
+\pssetlength\pst@dima{#2}%
+\nc@object{Open}{#1}{#1}{.5}{%
+/AngleA \psk@angleA def
+/r \pst@number\pst@dima def
+\tx@NCCircle \psarc@v end}}
+\def\tx@NCBox{NCBox }
+\def\ncbox{\pst@object{ncbox}}
+\def\ncbox@i{\check@arrow{\ncbox@ii}}
+\def\ncbox@ii#1#2{%
+\def\pst@linetype{2}%
+\nc@object{Closed}{#1}{#2}{.5}{%
+tx@Dict begin \psline@iii pop end
+\psk@boxheight \psk@boxdepth
+\tx@NCBox}}
+\def\pcbox{\pst@object{pcbox}}
+\def\pcbox@i{\pc@object\ncbox@ii}
+\def\tx@NCArcBox{NCArcBox }
+\def\psset@boxheight#1{\pst@getlength{#1}\psk@boxheight}
+\def\psset@boxdepth#1{\pst@getlength{#1}\psk@boxdepth}
+\def\psset@boxsize#1{%
+\psset@boxheight{#1}%
+\let\psk@boxdepth\psk@boxheight}
+\psset@boxsize{.4cm}
+\def\ncarcbox{\pst@object{ncarcbox}}
+\def\ncarcbox@i{\check@arrow{\ncarcbox@ii}}
+\def\ncarcbox@ii#1#2{%
+\def\pst@linetype{1}%
+\nc@object{Closed}{#1}{#2}{.5}{%
+\psk@arcangleA \psk@boxheight \psk@boxdepth \pst@number\pslinearc
+\tx@NCArcBox}}
+\def\pcarcbox{\pst@object{pcarcbox}}
+\def\pcarcbox@i{\pc@object\ncarcbox@ii}
+\def\tx@Tfan{Tfan }
+\def\psset@nrot#1{%
+\begingroup
+\pst@expandafter{\@ifnextchar:{\psset@@nrot}{\psset@@rot}}{#1}\@nil
+\global\let\pst@tempg\psk@rot
+\endgroup
+\let\psk@nrot\pst@tempg}
+\def\psset@@nrot:#1\@nil{%
+\psset@@rot#1\@nil
+\edef\psk@rot{NAngle \ifx\psk@rot\@empty\else\psk@rot add \fi}}
+\psset@nrot{0}
+\def\tx@LPutCoor{LPutCoor }
+\def\tx@LPut{LPut }
+\def\psset@npos#1{%
+\def\pst@tempa{#1}%
+\ifx\pst@tempa\@empty
+\def\psk@npos{\npos@default}%
+\else
+\pst@checknum{#1}\psk@npos
+\fi}
+\psset@npos{}
+\def\ncput{\pst@object{ncput}}
+\def\ncput@i{\pst@killglue\pst@makebox{\ncput@ii}}
+\def\ncput@ii{%
+\begingroup
+\use@par
+\if@star\pst@starbox\fi
+\pst@makesmall\pst@hbox
+\pst@rotate\psk@nrot\pst@hbox
+\ncput@iii
+\endgroup
+\pst@shortput}
+\def\ncput@iii{%
+\leavevmode
+\hbox{%
+\pst@Verb{%
+\pst@nodedict
+/t \psk@npos def
+\tx@LPut
+end
+\tx@PutBegin}%
+\box\pst@hbox
+\pst@Verb{\tx@PutEnd}}}
+\def\naput{\pst@object{naput}}
+\def\naput@i{\pst@killglue\pst@makebox{\naput@ii{NAngle 90 add}}}
+\def\naput@ii#1{%
+\begingroup
+\use@par
+\if@star\pst@starbox\fi
+\def\psk@refangle{#1 }%
+\let\psk@rot\psk@nrot
+\uput@vii
+{exch pop add a \tx@PtoC h1 add exch w1 add exch }%
+{tx@Dict /NCLW known { NCLW add } if }%
+\ncput@iii
+\endgroup
+\pst@shortput}
+\def\nbput{\pst@object{nbput}}
+\def\nbput@i{\pst@killglue\pst@makebox{\naput@ii{NAngle 90 sub}}}
+\def\psset@tpos#1{%
+\pst@checknum{#1}\psk@tpos
+\ifdim\psk@tpos \p@<\z@
+\def\psk@tpos{.5}%
+\@pstrickserr{Bad `tpos' value: `#1'. Must be 0<tpos<1}\@epha
+\else
+\ifdim\psk@tpos \p@>\p@
+\def\psk@tpos{.5}%
+\@pstrickserr{Bad `tpos' value: `#1'. Must be 0<tpos<1}\@epha
+\fi
+\fi}
+\psset@tpos{.5}
+\def\tvput{\pst@object{tvput}}
+\def\tvput@i{\pst@makebox{\psput@tput{H}{1}}}
+\def\tlput{\pst@object{tlput}}
+\def\tlput@i{\pst@makebox{\psput@tput{H}{true}}}
+\def\trput{\pst@object{trput}}
+\def\trput@i{\pst@makebox{\psput@tput{H}{false}}}
+\def\thput{\pst@object{thput}}
+\def\thput@i{\pst@makebox{\psput@tput{V}{1}}}
+\def\taput{\pst@object{taput}}
+\def\taput@i{\pst@makebox{\psput@tput{V}{true}}}
+\def\tbput{\pst@object{tbput}}
+\def\tbput@i{\pst@makebox{\psput@tput{V}{false}}}
+\def\tx@HPutAdjust{HPutAdjust }
+\def\tx@VPutAdjust{VPutAdjust }
+\def\psput@tput#1#2{%
+\begingroup
+\use@par
+\pst@tputmakesmall
+\leavevmode
+\hbox{%
+\pst@Verb{%
+\pst@nodedict
+/t \psk@tpos \pst@tposflip def
+tx@NodeDict /HPutPos known
+{ #1PutPos }
+{ CP /Y ED /X ED /NAngle 0 def /NCLW 0 def }
+ifelse
+/Sin NAngle sin def
+/Cos NAngle cos def
+/s \pst@number\pslabelsep NCLW add def
+/l \pst@number\pst@dima def
+/r \pst@number\pst@dimb def
+/h \pst@number\pst@dimc def
+/d \pst@number\pst@dimd def
+\ifnum1=0#2\else
+/flag #2 def
+\csname tx@#1PutAdjust\endcsname
+\fi
+\tx@LPutCoor
+end
+\tx@PutBegin}%
+\box\pst@hbox
+\pst@Verb{\tx@PutEnd}}%
+\endgroup
+\pst@shortput}
+\def\pst@tposflip{}
+\def\pst@tputmakesmall{%
+\pst@dima=\wd\pst@hbox
+\divide\pst@dima 2
+\pst@dimg=\psk@href\pst@dimg
+\pst@dimb\pst@dima
+\advance\pst@dima\pst@dimg % leftsize
+\advance\pst@dimb-\pst@dimg % rightsize
+\pst@dimd=\psk@vref\relax
+\pst@dimc=\ht\pst@hbox
+\advance\pst@dimc-\pst@dimd % height
+\advance\pst@dimd\dp\pst@hbox % depth
+\setbox\pst@hbox=\hbox to\z@{%
+\kern-\pst@dima\vbox to\z@{\vss\box\pst@hbox\vskip-\pst@dimd}\hss}}
+\def\MakeShortNab#1#2{%
+ \def\pst@shortput@nab{%
+ \def\pst@tempg{\next}%
+ \ifx#1\next
+ \let\pst@tempg\naput
+ \else
+ \ifx#2\next
+ \let\pst@tempg\nbput
+ \else
+ \ifx\@sptoken\next
+ \let\pst@tempg\pst@shortput
+ \fi
+ \fi
+ \fi
+ \pst@tempg}}
+\MakeShortNab{^}{_}
+\def\MakeShortTablr#1#2#3#4{%
+ \def\pst@shortput@tablr{%
+ \def\pst@tempg{\next}%
+ \ifx#1\next
+ \let\pst@tempg\taput
+ \else
+ \ifx#2\next
+ \let\pst@tempg\tbput
+ \else
+ \ifx#3\next
+ \let\pst@tempg\tlput
+ \else
+ \ifx#4\next
+ \let\pst@tempg\trput
+ \else
+ \ifx\@sptoken\next
+ \let\pst@tempg\pst@shortput
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \pst@tempg}}
+\MakeShortTablr{^}{_}{<}{>}
+\def\MakeShortTab#1#2{%
+ \def\pst@shortput@tab{%
+ \def\pst@tempg{\next}%
+ \ifx#1\next
+ \def\pst@tempg{%
+ \@nameuse{%
+ t\ifodd\psk@treemode\ifpstreeflip b\else a\fi
+ \else\ifpstreeflip r\else l\fi\fi put}}%
+ \else
+ \ifx#2\next
+ \def\pst@tempg{%
+ \@nameuse{%
+ t\ifodd\psk@treemode\ifpstreeflip a\else b\fi
+ \else\ifpstreeflip l\else r\fi\fi put}}%
+ \else
+ \ifx\@sptoken\next
+ \let\pst@tempg\pst@shortput
+ \fi
+ \fi
+ \fi
+ \pst@tempg}}
+\MakeShortTab{^}{_}
+\def\psset@shortput#1{%
+\def\pst@tempg{#1}%
+\ifx\pst@tempg\@none
+\let\pst@shortput\ignorespaces
+\else
+\@ifundefined{pst@shortput@#1}%
+{\@pstrickserr{Bad short put: `#1'}\@ehpa}%
+{\edef\pst@shortput{\noexpand\afterassignment\expandafter\noexpand
+\csname pst@shortput@#1\endcsname\noexpand\let\noexpand\next}}%
+\fi}
+\psset@shortput{none}
+\def\lput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\lput@i}{\lput@ii}}}
+\def\lput@i[#1]{\addto@par{ref=#1}\lput@ii}
+\def\lput@ii{\@ifnextchar({\lput@iv}{\lput@iii}}
+\def\lput@iii#1{\addto@par{nrot=#1}\@ifnextchar({\lput@iv}{\ncput@i}}
+\def\lput@iv(#1){\addto@par{npos=#1}\ncput@i}
+\def\mput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\mput@i}{\ncput@i}}}
+\def\mput@i[#1]{\addto@par{ref=#1}\ncput@i}
+\def\Lput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Lput@ii}{\Lput@i}}}
+\def\Lput@i#1{\addto@par{labelsep=#1}\Lput@ii}
+\def\Lput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Lput@iv}{\Lput@iii}}
+\def\Lput@iii#1{\addto@par{nrot={#1}}\@ifnextchar({\Lput@iv}{\Lput@v}}
+\def\Lput@iv(#1){\addto@par{npos=#1}\Lput@v}
+\def\Lput@v{\pst@killglue\pst@makebox{\Lput@vi}}
+\def\Lput@vi{%
+\begingroup
+\use@par
+\if@star\pst@starbox\fi
+\Rput@vi
+\pst@makesmall\pst@hbox
+\pst@rotate\psk@nrot\pst@hbox
+\ncput@iii
+\endgroup
+\pst@shortput}
+\def\Mput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Mput@ii}{\Mput@i}}}
+\def\Mput@i#1{\addto@par{labelsep=#1}\Mput@ii}
+\def\Mput@ii[#1]{\addto@par{ref={#1}}\Lput@v}
+\def\aput@#1{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\aput@i#1}{\aput@ii#1}}}
+\def\aput@i#1[#2]{\addto@par{labelsep=#2}\aput@ii#1}
+\def\aput@ii#1{\@ifnextchar({\aput@iv#1}{\aput@iii#1}}
+\def\aput@iii#1#2{\addto@par{nrot=#2}\@ifnextchar({\aput@iv#1}{#1}}
+\def\aput@iv#1(#2){\addto@par{npos=#2}#1}
+\def\aput{\aput@\naput@i}
+\def\bput{\aput@\nbput@i}
+\def\Aput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Aput@i}{\naput@i}}}
+\def\Aput@i[#1]{\addto@par{labelsep=#1}\naput@i}
+\def\Bput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Bput@i}{\nbput@i}}}
+\def\Bput@i[#1]{\addto@par{labelsep=#1}\nbput@i}
+\def\node@coor#1;#2\@nil{%
+\pst@getnode{#1}\pst@tempg
+\edef\pst@coor{%
+\pst@nodedict
+tx@NodeDict \pst@tempg known
+{ \pst@tempg load \tx@GetCenter }
+{ 0 0 }
+ifelse
+end }}
+\def\Node@coor[#1]#2;#3\@nil{%
+\begingroup
+\psset{#1}%
+\@ifnextchar\bgroup{\Node@@@coor}{\Node@@coor}#2\@nil
+\endgroup
+\let\pst@coor\pst@tempg}
+\def\Node@@coor#1\@nil{%
+\pst@getnode{#1}\pst@tempg
+\xdef\pst@tempg{%
+\pst@nodedict
+tx@NodeDict \pst@tempg known
+{ \psk@nodesepA \psk@angleA
+\pst@tempg load \psk@nodeseptypeA \tx@GetEdge
+\psk@offsetA \psk@angleA \tx@AddOffset
+\pst@tempg load \tx@GetCenter
+3 -1 roll add 3 1 roll add exch }
+{ CP }
+ifelse
+end }}%
+\def\Node@@@coor#1{%
+\pst@@getcoor{#1}%
+\def\psk@angleA{%
+\pst@tempg load \tx@GetCenter \pst@coor
+3 -1 roll sub 3 1 roll sub neg \tx@Atan}%
+\Node@@coor}
+\def\nput{\pst@object{nput}}
+\def\nput@i#1#2{\pst@killglue\pst@makebox{\nput@ii{#1}{#2}}}
+\def\nput@ii#1#2{%
+\begingroup
+\use@par
+\psset@refangle{#1}%
+\let\psk@angleA\psk@refangle
+\edef\psk@nodesepA{\pst@number\pslabelsep}%
+\def\psk@nodeseptypeA{0 }%
+\pslabelsep\z@
+\uput@vi
+\Node@@coor#2\@nil
+\let\pst@coor\pst@tempg
+\leavevmode
+\psput@special\pst@hbox
+\endgroup
+\ignorespaces}
+\newcount\psrow
+\newcount\pscol
+\newcount\psmatrixcnt
+\newskip\psrowsep
+\newskip\pscolsep
+\def\psset@colsep#1{\pssetlength\pscolsep{#1}}
+\def\psset@rowsep#1{\pssetlength\psrowsep{#1}}
+\psset@colsep{1.5cm}
+\psset@rowsep{1.5cm}
+\newif\ifpsmatrix
+\def\psmatrix{%
+\begingroup
+{\ifnum0=`}\fi % Don't want to expand any &.
+\@ifnextchar[{\psmatrix@i}{\ifnum0=`{\fi}{}\psmatrix@ii}}
+\def\psmatrix@i[#1]{%
+\ifnum0=`{\fi}{}%
+\psset{#1}%
+\psmatrix@ii}
+\def\psmatrix@ii{%
+\KillGlue
+\edef\psm@beginmath{%
+\ifmmode$\m@th\ifinner\textstyle\else\displaystyle\fi\fi}%
+\edef\psm@endmath{\ifmmode$\fi}%
+\let\\\psm@cr
+\advance\psmatrixcnt 1
+\def\psm@thenode{M-\the\psmatrixcnt-\the\psrow-\the\pscol}%
+\tabskip\z@
+\psrow1
+\pscol\z@
+\psset@shortput{tablr}%
+\leavevmode
+\vbox\bgroup\halign\bgroup&%
+\begingroup
+\global\advance\pscol 1
+\csname psrowhook\romannumeral\psrow\endcsname
+\csname pscolhook\romannumeral\pscol\endcsname
+\psm@beginnode##\psm@endnode\endgroup
+\cr}
+\def\endpsmatrix{%
+\crcr\egroup\unskip\egroup
+\endgroup}
+\def\psm@cr{{\ifnum0=`}\fi\@ifnextchar[{\psm@@cr}{\psm@@@cr{}}}
+\def\psm@@cr[#1]{\psm@@@cr{\vskip#1\relax}}
+\def\psm@@@cr#1{%
+\ifnum0=`{\fi}{}\cr
+\noalign{%
+\global\advance\psrow 1
+\global\pscol\z@
+\vskip\psrowsep
+#1}}
+\def\psm@beginnode{%
+\@ifnextchar\psm@endnode
+{\let\psm@endnode@i\relax\setbox\pst@hbox=\hbox{}}%
+{\pst@object{psm@beginnode}}}
+\def\psm@beginnode@i{%
+\setbox\pst@hbox=\hbox\bgroup
+\psm@beginmath
+\begingroup
+\ignorespaces}
+\def\psm@endnode@i{%
+\unskip
+\endgroup
+\psm@endmath
+\egroup
+\use@par
+\@psttrue}
+\def\psm@endnode{%
+\@pstfalse
+\psm@endnode@i
+\ifnum\pscol>1 \hskip\pscolsep \fi
+\psk@mnodesize
+\hfil
+\nodealigntrue
+\if@pst
+\csname mnode@\psk@mnode\endcsname
+\else
+\csname mnode@\psk@emnode\endcsname
+\fi
+\psk@mcol
+\psk@@mnodesize}
+\def\psspan#1{\mscount#1\relax\loop\ifnum\mscount>\@ne \sp@n\repeat}
+\def\psset@name#1{\pst@getnode{#1}\psk@name}
+\let\psk@name\relax
+\def\psset@mcol#1{%
+\ifx r#1\relax
+\let\psk@mcol\relax
+\else
+\ifx l#1\relax
+\let\psk@mcol\hfill
+\else
+\let\psk@mcol\hfil
+\fi
+\fi}
+\psset@mcol{c}
+\def\psset@mnodesize#1{%
+\pssetlength\pst@dimg{#1}%
+\ifdim\pst@dimg<\z@
+\let\psk@mnodesize\relax
+\let\psk@@mnodesize\relax
+\else
+\edef\psk@mnodesize{\noexpand\hbox to\number\pst@dimg sp\noexpand\bgroup}%
+\let\psk@@mnodesize\egroup
+\fi}
+\psset@mnodesize{-1pt}
+\def\mnode@R{\rnode@iii\Rnode@ii{\psm@thenode}}
+\def\mnode@r{\rnode@iii\rnode@iv{\psm@thenode}}
+\def\mnode@oval{\ovalnode@ii{\psm@thenode}}
+\def\mnode@tri{\trinode@ii{\psm@thenode}}
+\def\mnode@dia{\dianode@ii{\psm@thenode}}
+\def\mnode@C{{\nodealigntrue\cnode@ii(\z@,\z@){\psk@radius}{\psm@thenode}}}
+\def\mnode@f{{\nodealigntrue\fnode@ii(\z@,\z@){\psm@thenode}}}
+\def\mnode@circle{\circlenode@ii{\psm@thenode}}
+\def\mnode@p{\pnode(\z@,\z@){\psm@thenode}}
+\def\mnode@none{\box\pst@hbox}
+\def\psset@mnode#1{%
+\@ifundefined{mnode@#1}%
+{\@pstrickserr{\string\psmatrix\space node `#1' not defined.}\@ehpa}%
+{\edef\psk@mnode{#1}}}
+\def\psset@emnode#1{%
+\@ifundefined{mnode@#1}%
+{\@pstrickserr{\string\psmatrix\space node `#1' not defined.}\@ehpa}%
+{\edef\psk@emnode{#1}}}
+\psset@mnode{R}
+\psset@emnode{none}
+%%%% FROM pst-coil.tex
+\def\nccoil{\pst@object{nccoil}}
+\def\nccoil@i{\check@arrow{\nccoil@ii}}
+\def\nccoil@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{%
+\tx@NCCoor
+tx@Dict begin
+\psk@coilwidth \pscoilheight
+\psk@coilarmA \psk@coilarmB
+\psk@coilaspect \psk@coilinc
+\pst@coildict \tx@Coil end
+end}}
+\def\nczigzag{\pst@object{nczigzag}}
+\def\nczigzag@i{\check@arrow{\nczigzag@ii}}
+\def\nczigzag@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{%
+\tx@NCCoor
+tx@Dict begin
+\pscoilheight
+\psk@coilwidth
+\psk@coilarmA
+\psk@coilarmB
+\pst@coildict \tx@ZigZag end
+\psline@iii
+\tx@Line
+end}}
+\catcode`\@=\TheAtCode\relax
+\endinput
+%%
+%% END: pst-node.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-plot.sty b/usergrps/uktug/baskervi/6_2/spqr/pst-plot.sty
new file mode 100644
index 0000000000..f4865099dc
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-plot.sty
@@ -0,0 +1,4 @@
+%% BEGIN pst-plot.sty
+\input pst-plot.tex
+\endinput
+%% END pst-plot.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst-plot.tex b/usergrps/uktug/baskervi/6_2/spqr/pst-plot.tex
new file mode 100644
index 0000000000..2a807f93b7
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst-plot.tex
@@ -0,0 +1,643 @@
+%% BEGIN pst-plot.tex
+\def\fileversion{0.93a-patched (hacked SPQR)}
+\def\filedate{95/12/17}
+%%
+%% This is for use with PSTricks v0.93a, but contains several
+%% patches for bugs in the pst-plot.tex that was distributed
+%% with v0.93a until March 30, 1994.
+%%
+%% For plots and axes with PSTricks.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.doc or pstricks.tex for copying restrictions.
+%%
+%% See the PSTricks read-me file and the User's Guide for documentation.
+
+
+\message{ v\fileversion, \filedate}
+
+\csname PSTplotLoaded\endcsname
+\let\PSTplotLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex }
+ \expandafter\next
+\fi
+
+\ifx\MultidoLoaded\endinput\else
+ \def\next{\input multido.tex }
+ \expandafter\next
+\fi
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% Using lists of data is optimized for \dataplot and \fileplot
+% Here is the tricky part. As each line is read from file,
+% we want to ignore trailing delimiters, and convert arbitrary
+% strings of non-trailing delimiters to _D_.
+% We end up with
+% D x1 D y1 D x2 D y2 ... D xn D yn
+%
+\begingroup
+\catcode`\{=13
+\catcode`\}=13
+\catcode`\(=13
+\catcode`\)=13
+\catcode`\,=13
+\catcode`\!=1
+\catcode`\*=2
+\catcode`\ =13
+\catcode`\_=13
+\catcode`\^^M=13
+\gdef\pst@datadelimiters!% Begin def
+\catcode`\{=13%
+\catcode`\}=13%
+\catcode`\(=13%
+\catcode`\)=13%
+\catcode`\,=13%
+\catcode`\ =13%
+\catcode`\^^M=13%
+\def,##1!%
+\ifcat\noexpand,\noexpand##1%
+\expandafter##1%
+\else\space%
+D\space##1%
+\fi*%
+\let(,\let),\let{,\let},\let ,\let^^M,\let_\@empty*% End def
+\endgroup
+\begingroup
+\catcode`\,=13
+\catcode`\_=13
+\gdef\savedata@#1[#2]{%
+ \xdef\pst@tempg{#2_}%
+ \endgroup
+ \let#1\pst@tempg
+ \global\let\pst@tempg\relax
+ \ignorespaces}
+\gdef\readdata@{%
+ \read1 to \pst@tempa
+ \expandafter\readdata@@\pst@tempa_\@nil
+ \ifeof1\else\expandafter\readdata@\fi}
+\gdef\pst@@readfile#1#2\@nil{\addto@pscode{,#1#2}}%
+\gdef\readdata@@#1#2\@nil{\xdef\pst@tempg{\pst@tempg,#1#2}}%
+\endgroup
+
+\def\readdata#1#2{%
+ \openin1=#2
+ \begingroup
+ \def\pst@tempg{}%
+ \ifeof1
+ \@pstrickserr{Data file `#2' not found.}\@ehpa
+ \else
+ \pst@datadelimiters
+ \catcode`\[=1
+ \catcode`\]=2
+ \readdata@%
+ \fi
+ \endgroup
+ \let#1\pst@tempg
+ \global\let\pst@tempg\relax
+ \ignorespaces}
+
+\def\pst@readfile#1{{\let\readdata@@\pst@@readfile\readdata\pst@tempg{#1}}}
+\def\pst@altreadfile#1{%
+ \openin1=#1
+ \ifeof1
+ \@pstrickserr{Data file `#1' not found.}\@ehpa
+ \else
+ \catcode`\{=10
+ \catcode`\}=10
+ \catcode`\(=10
+ \catcode`\)=10
+ \catcode`\,=10
+ \catcode`\^^M=10
+ \catcode`\[=1
+ \catcode`\]=2
+ \pst@@altreadfile
+ \fi}
+\def\pst@@altreadfile{%
+ \read1 to \pst@tempg
+ \expandafter\pst@@@altreadfile\pst@tempg\@empty\@nil
+ \ifeof1\else\expandafter\pst@@@altreadfile\fi}
+\def\pst@@@altreadfile#1#2\@nil{\addto@pscode{#1#2}}%
+
+\def\savedata#1{\begingroup\pst@datadelimiters\savedata@{#1}}
+
+\def\beginplot@line{\begin@OpenObj}
+\def\endplot@line{\psline@ii}
+\def\beginplot@polygon{\begin@ClosedObj}
+\def\endplot@polygon{\pspolygon@ii}
+\def\beginplot@curve{\begin@OpenObj}
+\def\endplot@curve{\pscurve@ii}
+\def\beginplot@ecurve{\begin@OpenObj}
+\def\endplot@ecurve{\psecurve@ii}
+\def\beginplot@ccurve{\begin@ClosedObj}
+\def\endplot@ccurve{\psccurve@ii}
+\def\beginplot@dots{\begin@SpecialObj}
+\def\endplot@dots{\psdots@ii}
+\def\beginplot@bezier{\begin@OpenObj}
+\def\endplot@line{\psbezier@ii}
+\def\beginplot@cbezier{\begin@ClosedObj}
+\def\endplot@cbezier{\pscbezier@ii}
+
+\def\psset@plotstyle#1{%
+ \@ifundefined{beginplot@#1}%
+ {\@pstrickserr{Plot style `#1' not defined}\@eha}%
+ {\edef\psplotstyle{#1}}}
+\psset@plotstyle{line}
+
+\def\psset@plotpoints#1{%
+ \pst@cntg=#1\relax
+ \ifnum\pst@cntg<2
+ \@pstrickserr{plotpoints parameter must be at least 2}\@ehpa
+ \else
+ \advance\pst@cntg-1
+ \edef\psk@plotpoints{\the\pst@cntg\space}%
+ \fi}
+\psset@plotpoints{50}
+
+% For quick plots, define:
+% \beginqp@<foo> : What to do to first point (PS code only).
+% \doqp@<foo> : What to do to subsequent points (PS code only).
+% \endqp@<foo> : How to end plot.
+% \testqp@<foo> : Set \@psttrue if OK to use quick plot.
+
+\def\beginqp@line{\pst@oplineto}
+\def\doqp@line{L }
+\def\endqp@line{\end@OpenObj}%
+\def\testqp@line{%
+ \ifdim\pslinearc>\z@\else
+ \ifshowpoints\else
+ \ifx\psk@arrowA\@empty
+ \ifx\psk@arrowB\@empty
+ \@psttrue
+ \fi
+ \fi
+ \fi
+ \fi}
+
+\def\beginqp@polygon{moveto }
+\def\doqp@polygon{L }
+\def\endqp@polygon{%
+ \addto@pscode{closepath}%
+ \end@ClosedObj}
+\def\testqp@polygon{%
+ \ifdim\pslinearc>\z@\else
+ \ifshowpoints\else
+ \@psttrue
+ \fi
+ \fi}
+
+\def\beginqp@dots{%
+ \psk@dotsize
+ \@nameuse{psds@\psk@dotstyle}
+ Dot }
+\def\doqp@dots{Dot }
+\def\endqp@dots{\end@SpecialObj}
+\def\testqp@dots{\@psttrue}
+
+\def\beginqp@bezier{/n 0 def \pst@oplineto}
+\def\doqp@bezier{/n n 1 add def n 3 mod 0 eq { curveto } if }
+\def\endqp@bezier{%
+ \addto@pscode{n 3 mod { pop pop } repeat}
+ \end@OpenObj}%
+\def\testqp@bezier{%
+ \ifshowpoints\else
+ \ifx\psk@arrowA\@empty
+ \ifx\psk@arrowB\@empty
+ \@psttrue
+ \fi
+ \fi
+ \fi}
+
+\def\beginqp@cbezier{/n 0 def moveto }
+\def\doqp@cbezier{\doqp@bezier}
+\def\endqp@cbezier{%
+ \addto@pscode{n 3 mod { pop pop } repeat closepath}
+ \end@ClosedObj}%
+\def\testqp@cbezier{\ifshowpoints\else\@psttrue\fi}
+
+\def\dataplot{\def\pst@par{}\pst@object{dataplot}}
+\def\dataplot@i#1{%
+ \pst@killglue
+ \begingroup
+ \use@par
+ \@pstfalse
+ \@nameuse{testqp@\psplotstyle}%
+ \if@pst
+ \dataplot@ii{\addto@pscode{#1}}%
+ \else
+ \listplot@ii{\addto@pscode{#1}}%
+ \fi
+ \endgroup
+ \ignorespaces}
+\def\dataplot@ii#1{%
+ \@nameuse{beginplot@\psplotstyle}%
+ \addto@pscode{%
+ /Dx { \pst@number\psxunit mul /D { Dy } def } def
+ /Dy { \pst@number\psyunit mul Do /D { Dx } def } def
+ /D { /D { Dx } def } def
+ /Do {
+ \@nameuse{beginqp@\psplotstyle}%
+ /Do { \@nameuse{doqp@\psplotstyle}} def
+ } def}%
+ #1%
+ \addto@pscode{D}%
+ \@nameuse{endqp@\psplotstyle}}
+
+\def\fileplot{\def\pst@par{}\pst@object{fileplot}}
+\def\fileplot@i#1{%
+ \pst@killglue
+ \begingroup
+ \use@par
+ \@pstfalse
+ \@nameuse{testqp@\psplotstyle}%
+ \if@pst
+ \dataplot@ii{\pst@readfile{#1}}%
+ \else
+ \listplot@ii{\pst@altreadfile{#1}}%
+ \fi
+ \endgroup
+ \ignorespaces}
+
+\pst@def{ScalePoints}<%
+ /y ED /x ED
+ counttomark dup dup cvi eq not { exch pop } if
+ /m exch def /n m 2 div cvi def
+ n { y mul m 1 roll x mul m 1 roll /m m 2 sub def } repeat>
+
+\def\listplot{\def\pst@par{}\pst@object{listplot}}
+\def\listplot@i#1{\listplot@ii{\addto@pscode{#1}}}
+\def\listplot@ii#1{%
+ \@nameuse{beginplot@\psplotstyle}%
+ \addto@pscode{/D {} def mark}%
+ #1%
+ \addto@pscode{\pst@number\psxunit \pst@number\psyunit \tx@ScalePoints}%
+ \@nameuse{endplot@\psplotstyle}}
+
+% \psplot
+
+\def\psplotinit#1{\xdef\psplot@init{#1 }}
+\def\psplot@init{}
+
+\def\psplot{\def\pst@par{}\pst@object{psplot}}
+\def\psplot@i#1#2#3{%
+ \pst@killglue
+ \begingroup
+ \use@par
+ \@nameuse{beginplot@\psplotstyle}%
+ \addto@pscode{%
+ \psplot@init
+ /x #1 def
+ /x1 #2 def
+ /dx x1 x sub \psk@plotpoints div def
+ /xy {
+ x \pst@number\psxunit mul
+ #3 \pst@number\psyunit mul
+ } def}%
+ \gdef\psplot@init{}%
+ \@pstfalse
+ \@nameuse{testqp@\psplotstyle}%
+ \if@pst
+ \psplot@ii
+ \else
+ \psplot@iii
+ \fi
+ \endgroup
+ \ignorespaces}
+\def\psplot@ii{%
+ \addto@pscode{%
+ xy \@nameuse{beginqp@\psplotstyle}
+ \psk@plotpoints 1 sub {
+ /x x dx add def
+ xy \@nameuse{doqp@\psplotstyle}
+ } repeat
+ /x x1 def
+ xy \@nameuse{doqp@\psplotstyle}}%
+ \@nameuse{endqp@\psplotstyle}}
+\def\psplot@iii{%
+ \addto@pscode{%
+ mark
+ /n 2 def
+ \psk@plotpoints {
+ xy
+ n 2 roll
+ /n n 2 add def
+ /x x dx add def
+ } repeat
+ /x x1 def
+ xy
+ n 2 roll}%
+ \@nameuse{endplot@\psplotstyle}}
+
+\def\parametricplot{\def\pst@par{}\pst@object{parametricplot}}
+\def\parametricplot@i#1#2#3{%
+ \pst@killglue
+ \begingroup
+ \use@par
+ \@nameuse{beginplot@\psplotstyle}%
+ \addto@pscode{%
+ \psplot@init
+ /t #1 def
+ /t1 #2 def
+ /dt t1 t sub \psk@plotpoints div def
+ /xy {
+ #3
+ \pst@number\psyunit mul exch
+ \pst@number\psxunit mul exch
+ } def}%
+ \gdef\psplot@init{}%
+ \@pstfalse
+ \@nameuse{testqp@\psplotstyle}%
+ \if@pst
+ \parametricplot@ii
+ \else
+ \parametricplot@iii
+ \fi
+ \endgroup
+ \ignorespaces}
+\def\parametricplot@ii{%
+ \addto@pscode{%
+ xy \@nameuse{beginqp@\psplotstyle}
+ \psk@plotpoints 1 sub {
+ /t t dt add def
+ xy \@nameuse{doqp@\psplotstyle}
+ } repeat
+ /t t1 def
+ xy \@nameuse{doqp@\psplotstyle}}%
+ \@nameuse{endqp@\psplotstyle}}
+\def\parametricplot@iii{%
+ \addto@pscode{%
+ mark
+ /n 2 def
+ \psk@plotpoints {
+ xy
+ n 2 roll
+ /n n 2 add def
+ /t t dt add def
+ } repeat
+ /t t1 def
+ xy
+ n 2 roll}%
+ \@nameuse{endplot@\psplotstyle}}
+
+% These axes macros are complicated. Be careful.
+
+% \pst@ticks{angle}{dx}{n}{int}
+% int=1 if ticks appear on top of axes, 0 otherwise.
+\def\pst@ticks#1#2#3#4{%
+ \begin@SpecialObj
+ \addto@pscode{%
+ #1 rotate
+ /n #3 def
+ /dx #2 def
+ n 0 lt { /dx dx neg def /n n neg def } if
+ /y2 \psk@ticksize CLW 2 div add def
+ /y1 y2 neg def
+ \ifnum\psk@tickstyle=1
+ \ifdim#4<\z@ /y2 \else /y1 \fi 0 def
+ \else
+ \ifnum\psk@tickstyle=-1
+ \ifdim#4<\z@ /y1 \else /y2 \fi 0 def
+ \fi
+ \fi
+ /x dx def
+ n { x y1 moveto x y2 lineto stroke /x x dx add def } repeat}%
+ \end@SpecialObj}
+
+
+\def\psset@ticksize#1{\pst@getlength{#1}\psk@ticksize}
+\psset@ticksize{3pt}
+
+\def\psset@tickstyle#1{\pst@expandafter\psset@@tickstyle{#1}\@nil}
+\def\psset@@tickstyle#1#2\@nil{%
+ \ifx#1f\let\psk@tickstyle\z@\else
+ \ifx#1t\let\psk@tickstyle\@ne\else
+ \ifx#1b\let\psk@tickstyle\m@ne\else
+ \@pstrickserr{Bad tick style: `#1#2'}\@ehpa
+ \fi\fi\fi}
+\psset@tickstyle{full}
+
+\def\psset@ticks#1{\pst@expandafter\psset@@ticks{#1}\@nil\psk@ticks}
+\def\psset@@ticks#1#2\@nil#3{%
+ \ifx#1a\let#3\z@\else
+ \ifx#1x\let#3\@ne\else
+ \ifx#1y\let#3\tw@\else
+ \ifx#1n\let#3\thr@@\else
+ \@pstrickserr{Bad argument: `#1#2'}\@ehpa
+ \fi\fi\fi\fi}
+\psset@ticks{all}
+
+\def\psset@labels#1{\pst@expandafter\psset@@ticks{#1}\@nil\psk@labels}
+\psset@labels{all}
+
+\def\psset@Ox#1{\edef\psk@Ox{#1}}
+\psset@Ox{0}
+\def\psset@Dx#1{\edef\psk@Dx{#1}}
+\psset@Dx{1}
+\def\psset@dx#1{%
+ \pssetxlength\pst@dimg{#1}%
+ \edef\psk@dx{\number\pst@dimg}}
+\psset@dx{0}
+
+\def\psset@Oy#1{\edef\psk@Oy{#1}}
+\psset@Oy{0}
+\def\psset@Dy#1{\edef\psk@Dy{#1}}
+\psset@Dy{1}
+\def\psset@dy#1{%
+ \pssetylength\pst@dimg{#1}%
+ \edef\psk@dy{\number\pst@dimg}}
+\psset@dy{0}
+
+\newif\ifshoworigin
+\def\psset@showorigin#1{\@nameuse{showorigin#1}}
+\psset@showorigin{true}
+
+
+\def\psaxes{\def\pst@par{}\pst@object{psaxes}}
+\def\psaxes@i{\pst@getarrows\psaxes@ii}
+\def\psaxes@ii(#1){\@ifnextchar({\psaxes@iii(#1)}{\psaxes@iv(0,0)(0,0)(#1)}}
+\def\psaxes@iii(#1)(#2){%
+ \@ifnextchar(%
+ {\psaxes@iv(#1)(#2)}%
+ {\psaxes@iv(#1)(#1)(#2)}}
+\def\psaxes@iv(#1,#2)(#3,#4)(#5,#6){%
+ \setbox\pst@hbox=\hbox\bgroup
+ \use@par
+ \pssetxlength\pst@dimg{#1}% o-x
+ \pssetylength\pst@dimh{#2}% o-y
+ \pssetxlength\pst@dima{#3}% bl-x
+ \pssetylength\pst@dimb{#4}% bl-y
+ \pssetxlength\pst@dimc{#5}% ur-x
+ \pssetylength\pst@dimd{#6}% ur-y
+% Whole thing will be translated to origin:
+ \advance\pst@dima-\pst@dimg % Dist. from bl-x to o-x
+ \advance\pst@dimb-\pst@dimh % Dist. from bl-y to o-y
+ \advance\pst@dimc-\pst@dimg % Dist. from ur-x to o-x
+ \advance\pst@dimd-\pst@dimh % Dist. from ur-y to o-y
+% Make lines/arrows or frame:
+ \@nameuse{psxs@\psk@axesstyle}%
+% "\pslabelsep" should be from the edge of the axis.
+ \advance\pslabelsep.5\pslinewidth
+% Now the ticks and labels. Start by checking for "\multido".
+% !!Need to fix this so that does nothing when there are 0 ticks.!!
+ \begingroup
+ \ifdim\pst@dimb=\z@\else\showoriginfalse\fi
+ \ifnum\psk@dx=\z@
+ \pst@dimg=\psk@Dx\psxunit
+ \edef\psk@dx{\number\pst@dimg}%
+ \fi
+ \ifnum\psk@ticks<\tw@
+ \ifnum\psk@tickstyle>\z@\else
+ \advance\pslabelsep\psk@ticksize\p@
+ \fi
+ \fi
+ \pst@hlabels\pst@dimc\psk@arrowB
+ \pst@hlabels\pst@dima\psk@arrowA
+ \endgroup
+ \begingroup
+ \ifdim\pst@dima=\z@\else\showoriginfalse\fi
+ \ifnum\psk@dy=\z@
+ \pst@dimg=\psk@Dy\psyunit
+ \edef\psk@dy{\number\pst@dimg}%
+ \fi
+ \ifodd\psk@ticks\else
+ \ifnum\psk@tickstyle>\z@\else
+ \advance\pslabelsep\psk@ticksize\p@
+ \fi
+ \fi
+ \pst@vlabels\pst@dimd\psk@arrowB
+ \pst@vlabels\pst@dimb\psk@arrowA
+ \endgroup
+% Now close "\pst@hbox" (which is 0-dimensional), and put it at the origin.
+ \egroup
+ \pssetxlength\pst@dimg{#1}%
+ \pssetylength\pst@dimh{#2}%
+ \leavevmode\psput@cartesian\pst@hbox
+ \ignorespaces}
+
+\def\psxs@axes{%
+ \psxs@@axes\pst@dima\pst@dimc{}%
+ \psxs@@axes\pst@dimb\pst@dimd{exch}}
+\def\psxs@@axes#1#2#3{%
+ \begin@SpecialObj
+ \ifdim#1=\z@
+ \def\psk@arrowA{C}%
+ \else
+ \ifdim#2=\z@
+ \def\psk@arrowB{C}%
+ \fi
+ \fi
+ \let\pst@linetype\pst@arrowtype
+ \pst@addarrowdef
+ \addto@pscode{%
+ \pst@number#2 0 #3
+ \pst@number#1 0 #3
+ ArrowA
+ CP 4 2 roll
+ ArrowB
+ L
+ pop pop}%
+ \pst@stroke
+ \end@SpecialObj}
+
+\def\psxs@frame{%
+ \begin@SpecialObj
+ \addto@pscode{%
+ 0 0 moveto \pst@number\pst@dimc 0 L
+ 0 \pst@number\pst@dimd 2 copy rlineto L closepath}%
+ \pst@stroke
+ \psk@fillstyle
+ \end@SpecialObj
+ \let\psk@arrowA\@empty
+ \let\psk@arrowB\@empty}
+
+\def\psset@axesstyle#1{%
+ \@ifundefined{psxs@#1}%
+ {\@pstrickserr{Axes style `#1' not defined}\@eha}%
+ {\edef\psk@axesstyle{#1}}}
+\psset@axesstyle{axes}
+
+\def\psxs@none{\let\psk@arrowA\@empty\let\psk@arrowB\@empty}
+
+% The origin is never the only label.
+\def\pst@hlabels#1#2{%
+ \ifdim#1=\z@\else
+ \ifx#2\empty\else
+ \advance#1\ifdim#1>\z@-\fi7\pslinewidth
+ \fi
+ \pst@cnta=#1\relax % Distance (in sp) to end.
+ \divide\pst@cnta\psk@dx\relax % Number of ticks/labels
+ \ifnum\pst@cnta=\z@\else
+ \pst@dimb=\psk@dx sp % Space between ticks.
+ \ifnum\psk@ticks<\thr@@
+ \pst@ticks{0}{\pst@number\pst@dimb}{\the\pst@cnta}{\pst@dimd}%
+ \fi
+ \ifnum\psk@labels<\thr@@ \pst@@hlabels\fi
+ \showoriginfalse
+ \fi
+ \fi}
+
+% Knows \pst@dimb and \pst@cnta
+\def\pst@@hlabels{%
+ \vbox to\z@{%
+ \ifdim\pst@dimd>\z@\vskip\pslabelsep\else\vss\fi
+ \ifnum\pst@cnta<\z@
+ \pst@dimb=-\pst@dimb
+ \fi
+ \hbox to\z@{%
+ \ifshoworigin\hbox to \z@{\hss\pshlabel{\psk@Ox}\hss}\fi
+ \mmultido
+ {\n=\psk@Ox+\psk@Dx}%
+ {\pst@cnta}%
+ {\hskip\pst@dimb\hbox to \z@{\hss\pshlabel{\n}\hss}}%
+ \hss}%
+ \ifdim\pst@dimd>\z@\vss\else\vskip\pslabelsep\fi}}%
+
+\def\pshlabel#1{$#1$}
+
+\def\pst@vlabels#1#2{%
+ \ifdim#1=\z@\else
+ \ifx#2\empty\else
+ \advance#1\ifdim#1>\z@-\fi7\pslinewidth
+ \fi
+ \pst@cnta=#1\relax % Distance (in sp) to end.
+ \divide\pst@cnta\psk@dy\relax % Number of ticks/labels
+ \ifnum\pst@cnta=\z@\else
+ \pst@dima=\psk@dy sp % Space between ticks.
+ \ifodd\psk@ticks\else
+ \pst@ticks{90}{\pst@number\pst@dima}{\the\pst@cnta}{-\pst@dimc}%
+ \fi
+ \ifodd\psk@labels\else\pst@@vlabels\fi
+ \showoriginfalse
+ \fi
+ \fi}
+
+% Knows \pst@dima and \pst@cnta
+\def\pst@@vlabels{%
+ \vbox to\z@{%
+ \ifnum\pst@cnta>\z@
+ \pst@dima=-\pst@dima
+ \fi
+ \offinterlineskip
+ \ifshoworigin
+ \vbox to \z@{\vss\hbox to\z@{%
+ \ifdim\pst@dimc>\z@\hss\else\hskip\pslabelsep\fi
+ \psvlabel{\psk@Oy}%
+ \ifdim\pst@dimc>\z@\hskip\pslabelsep\else\hss\fi}\vss}%
+ \fi
+ \mmultido
+ {\n=\psk@Oy+\psk@Dy}%
+ {\pst@cnta}%
+ {\vbox to\pst@dima{\vss}\vbox to \z@{\vss\hbox to\z@{%
+ \ifdim\pst@dimc>\z@\hss\else\hskip\pslabelsep\fi
+ \psvlabel{\n}%
+ \ifdim\pst@dimc>\z@\hskip\pslabelsep\else\hss\fi}\vss}}%
+ \vss}}
+
+\def\psvlabel#1{$#1$}
+
+\catcode`\@=\TheAtCode\relax
+\endinput
+%% pst-plot.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst2eps.sty b/usergrps/uktug/baskervi/6_2/spqr/pst2eps.sty
new file mode 100644
index 0000000000..aeedbe6b3a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst2eps.sty
@@ -0,0 +1,4 @@
+%% BEGIN pst2eps.sty
+\input pst2eps.tex
+\endinput
+%% END pst2eps.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pst2eps.tex b/usergrps/uktug/baskervi/6_2/spqr/pst2eps.tex
new file mode 100644
index 0000000000..5f4985bf7f
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pst2eps.tex
@@ -0,0 +1,244 @@
+%% BEGIN pst2eps.tex
+%%
+%% For writing EPS files with PSTricks.
+%%
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.tex or pstricks.doc for copying restrictions.
+%%
+%% See the PSTricks User's Guide for description.
+%%
+
+\message{ v\fileversion, \filedate}
+
+\csname PSTfilesLoaded\endcsname
+\let\PSTfilesLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex}
+ \expandafter\next
+\fi
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% Exporting PostScript files
+
+\def\TeXtoEPS{\begingroup\pst@makebox{}\bgroup\ignorespaces}
+\def\endTeXtoEPS{%
+ \egroup
+% Get contents of page, in case it contains special's:
+ \begingroup
+ \global\setbox\pst@boxg\box\voidb@x
+ \output{\global\setbox\pst@boxg\box\@cclv}%
+ \par\hbox{}\penalty-10000
+ \endgroup
+ \dp\pst@boxg\z@
+ \ht\pst@boxg\z@
+ \wd\pst@boxg\z@
+ \pst@dimg=3pt
+ \shipout\hbox{%
+ \box\pst@boxg
+ \pst@Verb{gsave CM \tx@STV CP newpath moveto
+ \pst@number\pst@dimg neg 0 rmoveto clip setmatrix}%
+ \vrule width \wd\pst@hbox height \ht\pst@hbox depth \dp\pst@hbox
+ \pstVerb{currentpoint grestore moveto}%
+ \kern -\wd\pst@hbox
+ \unhbox\pst@hbox}%
+ \endgroup
+ \typeout{PSTricks: Converting TeX box to EPS.}%
+ \typeout{\@spaces\@spaces\space\space With dvips, use -E option.}}
+
+
+% Writing PSTricks graphics to EPS files
+
+\newwrite\pst@epsout
+\newwrite\pst@tempout
+
+\def\pst@getbp#1#2#3{%
+ \csname psset#1length\endcsname\pst@dimg{#2}%
+ \advance\pst@dimg .49bp
+ \pst@cntg=\pst@dimg
+ \multiply\pst@cntg 5
+ \divide\pst@cntg 328909
+ \edef#3{\the\pst@cntg}}
+
+\def\psset@bbllx#1{\pst@getbp{x}{#1}\psk@bbllx}
+\psset@bbllx{-1pt}
+
+\def\psset@bblly#1{\pst@getbp{y}{#1}\psk@bblly}
+\psset@bblly{-1pt}
+
+\def\psset@bburx#1{\pst@getbp{x}{#1}\psk@bburx}
+\psset@bburx{1pt}
+
+\def\psset@bbury#1{\pst@getbp{y}{#1}\psk@bbury}
+\psset@bbury{1pt}
+
+\def\pst@getboolean#1#2{%
+ \def\pst@tempg##1##2\@nil{%
+ \ifx t##1\relax\def#2{1\relax}\else\def#2{\z@}\fi}
+ \pst@expandafter\pst@tempg{#1}\relax\@nil}
+
+\def\psset@headers#1{%
+ \def\pst@tempg##1##2\@nil{%
+ \ifx u##1\relax
+ \def\psk@headers{1\relax}%
+ \else
+ \ifx a#1\relax
+ \def\psk@headers{2\relax}%
+ \else
+ \def\psk@headers{\z@}%
+ \fi
+ \fi}%
+ \pst@expandafter\pst@tempg{#1}\relax\@nil}
+\psset@headers{none}
+
+\def\psset@checkfile#1{\pst@getboolean{#1}\psk@checkfile}
+\psset@checkfile{true}
+
+\def\psset@makeeps#1{%
+ \def\pst@tempg{#1}%
+ \ifx\pst@tempg\@none
+ \def\psk@makeeps{\z@}%
+ \else
+ \def\pst@temph{all}%
+ \ifx\pst@tempg\pst@temph
+ \def\psk@makeeps{3\relax}%
+ \else
+ \def\pst@temph{all*}%
+ \ifx\pst@tempg\pst@temph
+ \def\psk@makeeps{2\relax}%
+ \else
+ \def\psk@makeeps{1\relax}%
+ \fi
+ \fi
+ \fi}
+\psset@makeeps{new}
+
+\def\psset@headerfile#1{\def\psk@headerfile{#1}}
+\psset@headerfile{}
+
+\def\pst@checkfile#1{%
+ \ifcase\psk@makeeps
+ \@pstfalse
+ \or
+ \immediate\openin1=#1
+ \ifeof1\relax\@psttrue\else\@pstfalse\fi
+ \immediate\closein1
+ \or
+ \immediate\openin1=#1
+ \ifeof1
+ \@psttrue
+ \else
+ \typeout{^^J%
+ PSTricks warning:^^J%
+ !! File `#1' exists and will be erased if in current directory!^^J%
+ !! Make `#1'? (y=yes; n=no)}
+ \read16 to \pst@tempg
+ \if y\pst@tempg\relax\@psttrue\else\@pstfalse\fi
+ \fi
+ \immediate\closein1=#1
+ \or
+ \@psttrue
+ \fi}
+
+\def\PSTtoEPS{\def\pst@par{}\pst@object{PSTtoEPS}}
+\begingroup
+\catcode`\%=12
+\catcode`\"=14
+\long\gdef\PSTtoEPS@i#1#2{"
+ \begingroup
+ \use@par
+ \newlinechar`\^^J"
+ \pst@checkfile{#1}"
+ \if@pst
+ \immediate\openout\pst@epsout=#1
+ \def\write@eps##1{\immediate\write\pst@epsout{##1}}"
+ \def\addto@pscode##1{"
+ \begingroup
+ \newlinechar`\ "
+ \write@eps{##1}"
+ \endgroup}
+ \write@eps{"
+ %!PS-Adobe-3.0 EPSF-3.0^^J"
+ %%Creator: PSTricks^^J"
+ %%Title: #1^^J"
+ %%CreationDate: \the\year/\the\month/\the\day^^J"
+ %%BoundingBox:
+ \psk@bbllx\space\psk@bblly\space\psk@bburx\space\psk@bbury^^J"
+ %%EndComments}"
+ \ifcase\psk@headers
+ \def\pst@tempg{}"
+ \or
+ \let\pst@tempg\psk@headerfile
+ \or
+ \edef\pst@tempg{\pst@theheaders,\psk@headerfile}"
+ \fi
+ \ifx\pst@tempg\@empty\else
+ \expandafter\pst@writeheaders\pst@tempg,\@nil
+ \fi
+ \write@eps{%%BeginSetup}"
+ \addto@pscode\pst@dict
+ \write@eps{%%EndSetup}"
+ \ifdim\pstunit=1bp\else
+ \pst@dimg=\pstunit\relax
+ \write@eps{\number\pst@dimg\space 65781.8 div dup scale}"
+ \fi
+ \addto@pscode{"
+ \tx@STP
+ 0 setlinecap
+ 0 setlinejoin
+ 10 setmiterlimit
+ [] 0 setdash
+ newpath}"
+ \setbox\pst@hbox=\hbox{"
+ \def\init@pscode{"
+ \write@eps{"
+ gsave
+ \psk@origin
+ \psk@swapaxes
+ \pst@number\pslinewidth SLW
+ \pst@usecolor\pslinecolor}}"
+ \def\use@pscode{\write@eps{grestore}}"
+ \let\pst@rawfile\pst@filetoeps
+ \def\psclip#1{\pst@misplaced\psclip}"
+ \let\endpsclip\relax
+ \def\pstextpath@@@[##1](##2,##3)##4{\pst@misplaced\pstextpath}"
+ \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}"
+ \def\PSTtoEPS@i##1##2{\pst@misplaced\PSTtoEPS}"
+ #2}"
+ \write@eps{"
+ %%Trailer^^J"
+ end^^J"
+ %%EOF}"
+ \immediate\closeout\pst@epsout
+ \fi
+ \endgroup
+ \ignorespaces}
+
+\gdef\pst@writeheaders#1,{"
+ \def\pst@tempg{#1}"
+ \ifx\pst@tempg\@empty\else
+ \write@eps{%%BeginProcSet: #1}"
+ \pst@filetoeps{#1}"
+ \write@eps{%%EndProcSet}"
+ \fi
+ \@ifnextchar\@nil{\let\pst@tempg}{\pst@writeheaders}}
+\endgroup
+
+\def\pst@filetoeps#1{%
+ \begingroup
+ \def\do##1{\catcode`##1=12\relax}%
+ \dospecials
+ \def\addto@pscode##1{\write@eps{##1}}%
+ \pst@@rawfile{#1}%
+ \endgroup}
+
+\catcode`\@=\TheAtCode\relax
+
+\endinput
+
+%% END pst2eps.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pstree.rea b/usergrps/uktug/baskervi/6_2/spqr/pstree.rea
new file mode 100644
index 0000000000..c66fbb2aa0
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pstree.rea
@@ -0,0 +1,37 @@
+%% BEGIN pstree.readme
+%% April 14, 1993
+%% tvz@Princeton.EDU
+
+This directory contains some new tree macros for PSTricks, plus a few
+other new features (including a matrix macro for graphs and commutatitve
+diagrams). If you ever make trees, then you really should
+try these out.
+
+These will be incorporated into the next release of PSTricks.
+Any comments and improvements in the meantime would be greatly
+appreciated, including better examples.
+
+These macros are unstable, both in that they probably have bugs and
+also in that the interface could change a little. But they are already
+well documented and are very complete.
+
+These have been tested with PSTricks v0.93a. I think they should also
+work with v0.93, but definitely not earlier versions.
+
+The files are:
+
+ pst-beta.tex : Use this instead of pst-node.tex. If you are also
+ using pst-coil.tex or pst-plot.tex, you should
+ input these BEFORE pst-beta.tex.
+
+ psn-beta.pro : This is the PostScript header file that is used by
+ pst-beta.tex (instead of pst-node.pro).
+
+ pst-doc1.ps : The first part of the documentation. Includes revised
+ documentation for the node commands.
+
+ pst-doc2.ps : Second part of the documentation.
+
+ changes.tex : Changes for this beta release.
+
+%% END pstree.readme
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pstree.tex b/usergrps/uktug/baskervi/6_2/spqr/pstree.tex
new file mode 100644
index 0000000000..78525b0ab4
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pstree.tex
@@ -0,0 +1,2280 @@
+%% BEGIN pstree.doc
+\def\fileversion{0.93}
+\def\filedate{93/03/03}
+%%
+%% pstree.tex: Tree macros for PSTricks.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.doc or pstricks.tex for copying restrictions.
+%%
+%% See the PSTricks User's Guide and read-me file for documentation.
+%%
+%
+% **************************************************************************
+% This is `pstree.doc'. Use as is or create a stripped input file
+% with pst-make.tex. See the PSTricks read-me file for details.
+% **************************************************************************
+%
+% \EndDocPreamble
+%
+% \CheckSum{5874}
+% \CharacterTable
+% {Upper-case \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
+% Lower-case \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
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \part{pstree.doc}
+%
+% \section{Overview}
+%
+% An extensive description of these macros is contained in a separate file: ????
+%
+% \section{Preliminaries}
+%
+% Start with the usual stuff:
+% \begin{macrocode}
+\message{ v\fileversion, \filedate}
+\csname PSTreeLoaded\endcsname
+\let\PSTreeLoaded\endinput
+\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi\relax
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+% \end{macrocode}
+%
+% \section{Profile/list operators}
+%
+% The lists are stored in command sequences, as comma separated lists of integers. This section contains various list operators. Most are optimized for singleton lists.
+%
+% \begin{macro}{\pstree@poptop,\pstree@gettop,\pstree@poptop}
+% If <cmd> is a list, then "\pstree@puttop{<int>}<cmd>" expands to the list, with the first item replaced by <int>, and "\pstree@gettop<cmd>" expands to the first item in the list. "\pstree@poptop<cmd><cnt>" removes the first item from the list and assigns it to <cnt>, and the adds a 0 at the end of the list (so that the list does not change size, and in particular, will never be exhausted).
+% \begin{LVerbatim}
+% \begin{macrocode}
+\def\pstree@puttop#1{#1,\expandafter\pstree@@puttop}
+\def\pstree@@puttop#1,{}
+\def\pstree@gettop#1{\expandafter\pstree@@gettop#1\@nil}
+\def\pstree@@gettop#1,#2\@nil{#1}
+\def\pstree@poptop#1#2{\expandafter\pstree@@poptop#1\relax#1#2}
+\def\pstree@@poptop#1,#2\relax#3#4{%
+ #4=#1\relax
+ \def#3{#20,}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@max}
+% "\pstree@max{<profile>}{<cnt>}" assigns the maximum value in <profile> to <cnt>.
+% \begin{macrocode}
+\def\pstree@max#1#2{%
+ \pst@cntg=\z@
+ \expandafter\pstree@@max#1\relax
+ #2=\pst@cntg}%
+\def\pstree@@max#1,#2{%
+ \ifnum#1>\pst@cntg \pst@cntg=#1 \fi
+ \ifx\relax#2\else
+ \expandafter\pstree@@max
+ \fi
+ #2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@add}
+% "\pstree@add{<int>}{<profile>}" adds <int> to each element of <profile>.
+% \begin{macrocode}
+\def\pstree@add#1#2{%
+ \def\pst@tempg{}%
+ \pst@cnth=#1\relax
+ \expandafter\pstree@@add#2\relax
+ \let#2\pst@tempg}
+\def\pstree@@add#1,#2{%
+ \pst@cntg=#1
+ \advance\pst@cntg\pst@cnth
+ \xdef\pst@tempg{\pst@tempg\the\pst@cntg,}%
+ \ifx\relax#2\else
+ \expandafter\pstree@@add
+ \fi
+ #2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@tightfit,\pstree@loosefit}
+% \begin{LVerbatin}
+% \pstree@tightfit{<profile1>}{<profile2>}{<cnt>}
+% \pstree@loosefit{<profile1>}{<profile2>}{<cnt>}
+% \end{LVerbatim}
+% finds the distance between two successors. The inner profiles are <profile1> and <profile2>. The result is assigned to "\pst@cnth". "\pstree@loosefit" finds the distance between the bounding boxes. "\pstree@tightfit" finds the maximum distance level-by-level. I.e., "\pstree@tightfit" finds the maximum of the vector sum of the two lists, up to the end of the shortest list. "\pstree@loosefit" always returns a higher value that "\pstree@tightfit".
+% \begin{macrocode}
+\def\pstree@tightfit#1#2#3{%
+ \pst@cnth=\z@
+ \let\pstree@xtightfit\pstree@@xtightfit
+ \edef\next{\noexpand\pstree@@tightfit#1\relax#2\relax}%
+ \next
+ #3=\pst@cnth}
+\def\pstree@@tightfit#1,#2\relax#3,#4\relax{%
+ \pst@cntg=#1
+ \advance\pst@cntg#3
+ \pstree@xtightfit
+ \ifnum\pst@cntg>\pst@cnth
+ \pst@cnth=\pst@cntg
+ \fi
+ \let\next\relax
+ \ifx\relax#2\relax\else
+ \ifx\relax#4\relax\else
+ \def\next{\pstree@@tightfit#2\relax#4\relax}%
+ \fi
+ \fi
+ \next}
+\def\pstree@@xtightfit{%
+ \ifnum\psk@thisxtreesep=\z@
+ \let\pstree@xtightfit\relax
+ \else
+ \edef\pstree@xtightfit{\advance\pst@cntg\psk@thisxtreesep\relax}%
+ \fi}
+\def\pstree@loosefit#1#2#3{%
+ \pstree@max#1\pst@cnth
+ \pstree@max#2#3%
+ \advance#3\pst@cnth
+ \ifnum\psk@thisxtreesep=\z@\else\pstree@xloosefit#1#2#3\fi}
+\def\pstree@xloosefit#1#2#3{%
+ \edef\next{\noexpand\pstree@@xloosefit#3\relax#1\relax#2\relax}%
+ \next}
+\def\pstree@@xloosefit#1\relax#2,#3\relax#4,#5\relax{%
+ \ifx\relax#3\relax\else
+ \ifx\relax#5\relax\else\advance#1\psk@thisxtreesep\relax\fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@zip}
+% \begin{LVerbatim}
+% \pstree@zip{<int>}{<profile1>}{<profile2>}{<profile3>}
+% \end{LVerbatim}
+% "\pstree@zip" subtracts <int> from <profile1>, and then sets <profile3> to the item-by-item maximum of the resulting <profile1> and <profile2>.
+%
+% E.g., if <profile1> is the current right profile in the row of sucessors, and <profile2> is the right profile of the next successor, which is positioned <int> "sp" units from the previous successor, then "<profile3>" is set to the new outer profile of the row of successors.
+%
+% If <profile1> is the current left profile of the row of successors, and <profile2> is the left profile of the next successor, which is a total of <int> "sp" units from the first successor, then "<profile3>" is the new left profile of the row.
+% \begin{macrocode}
+\def\pstree@zip#1#2#3#4{%
+ \pst@cnth=#1\relax
+ \pst@cnth=-\pst@cnth
+ \def\pst@tempg{}%
+ \edef\next{\noexpand\pstree@@zip#2\relax#3\relax}%
+ \next
+ \global\let#4\pst@tempg}
+\def\pstree@@zip#1,#2\relax#3,#4\relax{%
+ \pst@cntg=#1
+ \advance\pst@cntg\pst@cnth
+ \edef\pst@tempg{\pst@tempg\ifnum#3>\pst@cntg#3\else\the\pst@cntg\fi,}%
+ \ifx\relax#2\relax
+ \edef\pst@tempg{\pst@tempg#4}%
+ \let\next\relax
+ \else
+ \ifx\relax#4\relax
+ \def\next{\pstree@@add#2\relax}%
+ \else
+ \def\next{\pstree@@zip#2\relax#4\relax}%
+ \fi
+ \fi
+ \next}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@bimax}
+% "\pstree@max{<profile1>}{<profile2>}" sets <profile1> to the maximum, item by item, of <profile1> and <profile2>.
+% \begin{macrocode}
+\def\pstree@bimax#1#2{%
+ \def\pst@tempg{}%
+ \edef\next{\noexpand\pstree@@bimax#1\relax#2\relax}%
+ \next
+ \global\let#1\pst@tempg}
+\def\pstree@@bimax#1,#2\relax#3,#4\relax{%
+ \edef\pst@tempg{\pst@tempg\ifnum#1>#3 #1\else#3\fi,}%
+ \ifx\relax#2\relax
+ \edef\pst@tempg{\pst@tempg#4}%
+ \let\next\relax
+ \else
+ \ifx\relax#4\relax
+ \edef\pst@tempg{\pst@tempg#2}%
+ \let\next\relax
+ \else
+ \def\next{\pstree@@bimax#2\relax#4\relax}%
+ \fi
+ \fi
+ \next}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@set}
+% "\pstree@set{<int>}{<profile>}" sets each element of <profile> to <int>.
+% \begin{macrocode}
+\def\pstree@set#1#2{%
+ \pst@cntg=#1\relax
+ \edef#2{\expandafter\pstree@@set#2\relax}}
+\def\pstree@@set#1,#2{%
+ \the\pst@cntg,\ifx\relax#2\else\expandafter\pstree@@set\fi#2}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Counters and boxes}
+%
+% \begin{macro}{\pstree@ID,\pstree@succID,\pstree@levelID}
+% "\pstree@ID" is used for identifying trees, for the purpose of syncronizing the distance between levels for all subtrees of the same tree. It is only used when the "levelsep" parameter value is preceded by "*", and the distance between levels must take into account the size of the objects. "\pstree@levelID" is the number of the level (0, 1, $\ldots$). "\pstree@succID" is the number of the successor (1, 2, $\ldots). "\pstree@nodeID" is the serial number of the node, used for node names.
+% \begin{macrocode}
+\newcount\pstree@ID
+\newcount\pstree@levelID
+\newcount\pstree@succID
+\newcount\pstree@nodeID
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psTREE@sep,\psTREE@width}
+% These are used while constructing the row of successors. "\psTREE@sep" measures the distance between the previous and next successor. "\psTREE@width" measures is the distance between the center of the first and the center of the last successor.
+% \begin{macrocode}
+\newcount\psTREE@sep
+\newcount\psTREE@width
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psTREE@height,\psTREE@depth,\pstree@height,\pstree@depth}
+% These were described on page \pageref{height}.
+% \begin{macrocode}
+\newcount\psTREE@height
+\newcount\psTREE@depth
+\newcount\pstree@cumlevelsep
+\newcount\pstree@numlevels
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@box}
+% Nodes and trees put themselves in "\pstree@box". A tree collects the root (which includes the root node's "\pstree@box", plus perhaps some "\special"'s lying outside this box) in "\pst@hbox". Then it saves the root in "\pstree@box", while it collects the successors in "\pst@hbox". The tree joins the root and the successors in "\pstree@box".
+% \begin{macrocode}
+\newbox\pstree@box
+% \end{macrocode}
+% \end{macro}
+%
+% \section{The tree macros}
+%
+% We begin with the main tree macros, which provide an outline of the algorithm. Much of this will be explained in detail when the component macros are defined.
+
+% \begin{macro}{\pstree}
+% We set up two ways of invoking trees. "\pstree" is ``short'', and ``\psTree'' is ``long''.
+% \begin{macrocode}
+\def\pstree{\pst@object{pstree}}
+\def\pstree@i#1#2{\psTree@i{#1}\\{#2}\endpsTree}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psTree,\endpsTree}
+% \begin{macrocode}
+\let\beginroot\relax %???
+\let\endroot\relax %???
+\def\psTree{\pst@object{psTree}}
+\def\psTree@i{%
+ \begingroup
+% \end{macrocode}
+% If we are in outer mode, then we set "shortput=tab" for abbreviated put commands used in trees. Also, we have to change the tree identifier for the purpose of making nodes. Otherwise, we want to kill off extraneous space by starting with "\pst@killglue" and ending with "\ignorespaces".
+% \begin{macrocode}
+ \ifnum\psk@predmode=\m@ne
+ \let\pstree@savedshortput\pst@shortput
+ \psset@shortput{tab}%
+ \else
+ \pst@@killglue
+ \fi
+% \end{macrocode}
+% "\psk@treeframe" is a hook that might contain commands for framing the tree. We save the value of the hook for later use, and then reset it globally.
+% \begin{macrocode}
+ \let\pstree@thisframe\pstree@frame
+ \global\let\pstree@frame\relax
+% \end{macrocode}
+% We save some variables that might be set globally, but whose values should be kept local to the tree, and a few other parameters that need to be restored if this is a subtree.
+% \begin{macrocode}
+ \pstree@savevalues
+% \end{macrocode}
+% If we are in successor mode, then we need to skip levels before setting the graphics parameters. Levels are skipped at this point in the direction of the parent tree.
+% \begin{macrocode}
+ \ifnum\psk@predmode=\m@ne
+ \let\pstree@saveskiplevels\z@
+ \else
+ \ifnum\psskiplevels>\z@\else
+ \expandafter\pstree@checkskiplevels\pst@par,skiplevels=\z@,\@nil
+ \fi
+ \let\pstree@saveskiplevels\psskiplevels
+ \ifnum\psskiplevels>\z@ \pstree@skipprofile \fi
+ \fi
+% \end{macrocode}
+% Then we start a new group and set the graphics parameters.
+% \begin{macrocode}
+ \use@par
+ \let\pstree@saveadjustbbox\psk@adjustbbox
+ \let\pstree@savetreerep\psk@treerep
+% \end{macrocode}
+% Initialize some things for aligning leaves.
+% \begin{macrocode}
+ \if@leafaligntree
+ \chardef\pstree@savemaxlevel\pstree@maxlevel
+ \pstree@initleafalign
+ \else
+ \ifnum\psk@predmode=\psk@treemode\else
+ \chardef\pstree@savemaxlevel\pstree@maxlevel
+ \fi
+ \fi
+% \end{macrocode}
+% If we are in outer mode, or if we are in tree mode and the tree has changed directions, then we need to change "\pstree@id", because for adjusting the level sep, we have to think of this as a new tree. Recall that in outer mode, "\psk@predmode" equals $-1$.
+% \begin{macrocode}
+ \ifnum\psk@predmode=\psk@treemode
+ \global\advance\pstree@ID\@ne
+ \edef\pstree@id{\the\pstree@ID}%
+ \fi
+% \end{macrocode}
+% We process the row, saving everything in "\pst@hbox":
+ \def\\{\pstree@endrow\pst@object{pstreecr}}%
+ \setbox\pstree@box\copy\voidb@x
+ \let\pst@thisbox\relax
+ \pst@makelongbox{}%
+ \pstree@treemode
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstreecr}
+% \begin{macrocode}
+\def\pstreecr@i{%
+ \expandafter\pstree@checkskiplevels\pst@par,skiplevels=\z@,\@nil
+ \ifnum\psskiplevels>\z@ \pstree@skiplevelseps \fi
+ \pstree@initnestedpar
+ \use@par
+ \pstree@setlevelpar
+ \edef\pspred{\pstree@gettop\pstree@basenodes}%
+ \let\pst@thisbox\relax
+ \pst@makelongbox{}%
+ \pstree@treemode
+ \ignorespaces}
+\def\psPred#1{\psPred@i#10\@nil}
+\def\psPred@i#1#2\@nil{%
+ \expandafter\ifcase\expandafter#1%
+ \expandafter\psPred@ii\pstree@basenodes,,,,,,,,,\@nil}
+\def\psPred@ii#1,#2,#3,#4,#5,#6,#7,#8,#9,{%
+ \or#1\or#2\or#3\or#4\or#5\or#6\or#7\or#8\or#9\fi\psPred@iii}
+\def\psPred@iii#1\@nil{}
+\def\pstree@skiplevelseps{%
+ \pst@cntg=\psskiplevels
+ \loop
+ \pstree@setlevelpar
+ \advance\pstree@cumlevelsep\psk@thislevelsep\relax
+ \edef\pstree@levelsizes{\pstree@levelsizes,\psk@thislevelsep,0,0}%
+ \advance\pstree@numlevels\@ne
+ \ifnum\pst@cntg>\@ne
+ \advance\pst@cntg\m@ne
+ \repeat}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@endrow}
+% The next three commands finish the construction of the tree by joining the root ("\pstree@box") and the successors ("\pst@hbox"). The tree is saved globally in "\pstree@box".
+% \begin{macrocode}
+\def\pstree@endrow{%
+ \pst@@killglue
+ \pst@endlongbox
+ \pstree@checkrow % Check for missing objects or extra space.
+ \ifvoid\pstree@box
+ \pstree@InitTreeDim
+ \else
+ \pstree@joinrows % Join root and successors in a box.
+ \pstree@joinprofiles % Adjust height, depth and profiles.
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\endpsTree}
+% \begin{macrocode}
+\def\endpsTree{%
+ \pstree@endrow
+% \end{macrocode}
+% "\pstree@thisframe" may add a frame, and adjust the dimensions for the frame.
+% \begin{macrocode}
+ \pstree@thisframe
+% \end{macrocode}
+% If this is not a proper subtree, and the "levelsep" is variable, then it is time to write the level sizes to a file.
+% \begin{macrocode}
+ \ifvarlevelsep
+ \ifnum\psk@predmode=\psk@treemode\else
+ \pstree@writelevelsizes
+ \fi
+ \fi
+% \end{macrocode}
+% If this is a LeafAlign tree, we write "\pstree@maxlevel". Also, we restore the value of "\pstree@maxlevel", if appropriate.
+% \begin{macrocode}
+ \if@leafaligntree
+ \pstree@writemaxlevel
+ \global\chardef\pstree@maxlevel\pstree@savemaxlevel
+ \else
+ \ifnum\psk@predmode=\psk@treemode\else
+ \global\chardef\pstree@maxlevel\pstree@savemaxlevel
+ \fi
+ \fi
+% \end{macrocode}
+% Now we make the tree canonical, restore certain values for the predecessor tree, and add the tree to the current construction.
+% \begin{macrocode}
+ \let\psk@adjustbbox\pstree@saveadjustbbox
+ \let\psk@treerep\pstree@savetreerep
+ \let\psskiplevels\pstree@saveskiplevels
+ \pstree@makecanonical
+ \pstree@restorevalues
+ \pstree@build
+ \ifnum\psk@treerep>\@ne\pstree@rep\fi
+ \global\let\pssucc\pstree@savedsucc
+ \endgroup
+ \ifnum\psk@predmode>\m@ne\expandafter\ignorespaces\fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\pstree@savevalues,\pstree@restorevalues}
+% Certain accounting values are set globally, and so we have to save and later restore their values (in case this is a nested tree). There are other values that are not set globally, but which have to be restored when adding this tree to the current row.
+% \begin{macrocode}
+\def\pstree@savevalues{%
+ \edef\pstree@restorevalues{%
+ \pst@ngdef\psTREE@leftprofile
+ \pst@ngdef\psTREE@rightprofile
+ \pst@ngdef\psTREE@levelsizes
+ \pst@ngdef\psTREE@center
+ \pst@ngdef\psTREE@leftbase
+ \pst@ngdef\psTREE@rightbase
+ \pst@ngdef\psTREE@centerbase
+ \pst@ngdef\psTREE@rootnodes
+ \pst@ngdef\psTREE@basenodes
+ \pst@ngdef\psTREE@maxtreesep
+ \pst@ngdef\psTREE@numlevels
+ \pst@ngdef\psTREE@cumlevelsep
+ \global\psTREE@height=\the\psTREE@height\relax
+ \global\psTREE@depth=\the\psTREE@depth\relax
+ \global\psTREE@width=\the\psTREE@width\relax
+ \pst@ngdef\psTREE@addtreesep
+ \pst@ngdef\psk@thistreesep
+ \pst@ngdef\psk@thisxtreesep
+ \pst@ngdef\psk@thistreenodesize
+ \pst@ngdef\psk@thistreefit
+ \global\pstree@succID=\the\pstree@succID\relax}}
+% \end{macrocode}
+% Now we use this to initialize these commands, just in case something goes wrong.
+% \begin{macro}{}
+{\def\pst@ngdef#1{\gdef\noexpand#1{}}\pstree@savevalues\pstree@restorevalues}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Tree parameters}
+%
+%
+% \begin{macro}{\psset@treemode,\psk@treemode}
+% "treemode" refers to the direction that the tree grows. It is saved as an integer, with 0=down, 1=right, 2=up and 3=left.
+% \begin{macrocode}
+%%%??? Add error checking
+\def\psset@treemode#1{%
+ \chardef\psk@treemode
+ \ifx#1U\@empty2\else\ifx#1R\@empty1\else\ifx#1L\@empty3\else\z@\fi\fi\fi
+ \relax}
+\psset@treemode{D}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@treeflip,\ifpstreeflip}
+% "treeflip" determines the direction in which successors are added. When "false", successors are added from left to right for vertical trees, and from top to bottom for horizontal trees. When "true", the direction is switched.
+% \begin{macrocode}
+\newif\ifpstreeflip
+\def\psset@treeflip#1{\@nameuse{pstreeflip#1}}
+\psset@treeflip{false}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@root}
+% \begin{macrocode}
+\def\psset@root#1{\def\psroot{#1}}
+\psset@root{\TC}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@dimtoint} %???? MOVE
+% \begin{macrocode}
+\def\pst@dimtoint#1#2{%
+ \pssetlength\pst@dimg{#1}%
+ \edef#2{\number\pst@dimg}}
+\def\pst@ngdef#1{\gdef\noexpand#1{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+% {\psset@treesep,\psk@treesep,\psset@thistreesep,\psk@thistreesep}
+% "treesep" is the distance between nodes on the same level. There is a "this" version that does not affect subtrees.
+% \begin{macrocode}
+\def\psset@treesep#1{\pst@dimtoint{#1}\psk@treesep}
+\psset@treesep{.75cm}
+\def\psset@thistreesep#1{\pst@dimtoint{#1}\psk@thistreesep}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+% {\psset@xtreesep,\psk@xtreesep,\psset@thisxtreesep,\psk@thisxtreesep}
+% "xtreesep" is the additional distance between nodes that do not have the same predecessor. There is a "this" version that does not affect subtrees.
+% \begin{macrocode}
+\def\psset@xtreesep#1{\pst@dimtoint{#1}\psk@xtreesep}
+\psset@xtreesep{0pt}
+\def\psset@thisxtreesep#1{\pst@dimtoint{#1}\psk@thisxtreesep}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@treenodesize,\psk@treenodesize,
+% \psset@thistreenodesize,\psk@thistreenodesize}
+% \begin{macrocode}
+\def\psset@treenodesize#1{%
+ \pssetlength\pst@dimg{#1}%
+ \divide\pst@dimg\tw@
+ \edef\psk@treenodesize{\number\pst@dimg}}
+\psset@treenodesize{-1pt}
+\def\psset@thistreenodesize#1{%
+ \pssetlength\pst@dimg{#1}%
+ \divide\pst@dimg\tw@
+ \edef\psk@thistreenodesize{\number\pst@dimg}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@treefit,\psk@treefit}
+% \begin{macrocode}
+\def\psset@treefit#1{%
+ \@ifundefined{pstree@#1fit}%
+ {\@pstrickserr{Bad `treefit' parameter value: `#1'}\@ehpa}%
+ {\edef\psk@treefit{#1}}}%
+\psset@treefit{tight}
+\def\psset@thistreefit#1{%
+ \@ifundefined{pstree@#1fit}%
+ {\@pstrickserr{Bad `treefit' parameter value: `#1'}\@ehpa}%
+ {\edef\psk@thistreefit{#1}}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@treerep,\psk@treerep}
+% \begin{macrocode}
+\def\psset@treerep#1{\chardef\psk@treerep#1\relax}
+\psset@treerep{1}
+\def\pstree@rep{%
+ \ifnum\psk@treerep>\@ne
+ \pst@cntg\psk@treerep
+ \advance\pst@cntg\m@ne
+ \chardef\psk@treerep\pst@cntg
+ \pstree@build
+ \expandafter\pstree@rep
+ \fi}
+% \end{macro}
+%
+% \begin{macro}{\psk@adjustbbox}
+% The bounding box adjustment parameters define "\psk@adjustbbox" so that it changes "\pst@dima", etc. This is invoked must before nodes invoke "\psnode@makecanonical", or just after a tree is made into a canonical node. "\psk@adjustbbox". The values should not affect nested objects.
+% \begin{macrocode}
+\def\psk@adjustbbox{}
+\def\pstree@setadjustbbox#1#2{%
+ \pssetlength\pst@dimg{#1}%
+ \edef\psk@adjustbbox{\psk@adjustbbox#2\number\pst@dimg sp\relax}}
+\def\psset@bbl#1{\pstree@setadjustbbox{#1}{\pst@dima=}}
+\def\psset@bbr#1{\pstree@setadjustbbox{#1}{\pst@dimb=}}
+\def\psset@bbh#1{\pstree@setadjustbbox{#1}{\pst@dimc=}}
+\def\psset@bbd#1{\pstree@setadjustbbox{#1}{\pst@dimd=}}
+\def\psset@xbbl#1{\pstree@setadjustbbox{#1}{\advance\pst@dima}}
+\def\psset@xbbr#1{\pstree@setadjustbbox{#1}{\advance\pst@dimb}}
+\def\psset@xbbh#1{\pstree@setadjustbbox{#1}{\advance\pst@dimc}}
+\def\psset@xbbd#1{\pstree@setadjustbbox{#1}{\advance\pst@dimd}}
+% \end{macrocode}
+% \end{macro}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@showbbox,\psk@showbbox}
+% \begin{macrocode}
+\newif\ifpsshowbbox
+\def\psset@showbbox#1{\@nameuse{psshowbbox#1}}%
+\psset@showbbox{false}
+\def\pstree@showbbox{%
+ \setbox\pstree@box=\hbox{%
+ \psset{linewidth=.1pt,linecolor=black,linestyle=solid,%
+ dimen=middle,fillstyle=none}%
+ \def\pst@par{}\@starfalse
+ \psframe@i(-\pst@dima,-\pst@dimd)(\pst@dimb,\pst@dimc)%
+ \box\pstree@box}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@levelsep,\psk@levelsep}
+% \begin{macrocode}
+\def\psset@levelsep#1{\pst@dimtoint{#1}\psk@levelsep}
+\psset@levelsep{2cm}
+\def\psset@thislevelsep#1{\pst@dimtoint{#1}\psk@thislevelsep}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@varlevelsep,\ifvarlevelsep}
+% \begin{macrocode}
+\newif\ifvarlevelsep
+\def\psset@varlevelsep#1{%
+ \ifnum\psk@predmode=\psk@treemode
+ \@pstrickserr{varlevelsep cannot be changed for proper subtrees}\@ehpa
+ \else
+ \@nameuse{varlevelsep#1}%
+ \fi}
+\let\psk@predmode\m@ne
+\let\if@predflip\iffalse
+\psset@varlevelsep{false}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@treeshift,\psk@treeshift}
+% \begin{macrocode}
+\def\psset@treeshift#1{%
+ \pssetlength\pst@dimg{#1}%
+ \pst@dimg-\pst@dimg
+ \edef\psk@treeshift{\number\pst@dimg}}
+\psset@treeshift{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@skiplevels,\psskiplevels}
+% \begin{macrocode}
+\def\psset@skiplevels#1{\chardef\psskiplevels#1\relax}
+\psset@skiplevels{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\def\pstree@initnestedpar}
+% This initialized the values of parameters that should not affect nested objects.
+% \begin{macrocode}
+\def\pstree@initnestedpar{%
+ \def\psk@adjustbbox{}%
+ \let\psk@treeshift\z@
+ \chardef\psskiplevels\z@
+ \chardef\psk@treerep\@ne
+ \def\psk@thislevelsep{\psk@levelsep}%
+ \def\psk@thistreesep{\psk@treesep}%
+ \def\psk@thisxtreesep{\psk@xtreesep}%
+ \def\psk@thistreenodesize{\psk@treenodesize}%
+ \def\psk@thistreefit{\psk@treefit}%
+ \def\psk@thisunary{\psk@unary}%
+ \let\if@leafaligntree\iffalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@setlevelpar}
+% \begin{macrocode}
+\def\pstree@setlevelpar{%
+ \advance\pstree@levelID\@ne
+ \csname pstreehook\romannumeral\pstree@levelID\endcsname
+ \ifvarlevelsep
+ \ifnum\psk@predmode=\psk@treemode\else
+ \pstree@initadjustlevelsep
+ \fi
+ \pstree@adjustlevelsep
+ \fi
+ \edef\pst@tposflip{\ifnum\psk@treemode>\@ne 1 sub neg \fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Outer mode}
+%
+% \begin{macro}{\pstree@build@outer,\psnode@makecanonical@outer}
+% The canonical outer object is a node.
+% \begin{macrocode}
+\def\pstree@build@outer{%
+ \leavevmode
+ \hbox{%
+ \vrule height \pst@dimc depth \pst@dimd width \z@
+ \kern\pst@dima
+ \ifnum\psk@treerep>\@ne\copy\else\box\fi\pstree@box
+ \kern\pst@dimb}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@makecanonical@outer}
+% "\pstree@makecanonical@outer" converts trees to nodes. What the left and right profiles correspond to depends on whether the tree is horizontal or vertical, and on whether the tree is flipped. What the tree height and depth correspond to depends on the "treemode".
+%
+% When a tree is in <outer> mode, it may adjust its bounding box.
+% \begin{macrocode}
+\def\pstree@makecanonical@outer{%
+ \pstree@gettreebbox
+ \ifx\pstree@center\@empty
+ \pst@dimg\pstree@width sp
+ \divide\pst@dimg\tw@
+ \else
+ \pst@dimg\pstree@center sp
+ \fi
+ \ifnum\pst@dimg=\z@\else
+ \advance\pst@dima\pst@dimg
+ \advance\pst@dimb-\pst@dimg
+ \ifodd\psk@treemode
+ \setbox\pstree@box\hbox{%
+ \ifpstreeflip\lower\else\raise\fi\pst@dimg\box\pstree@box}%
+ \else
+ \setbox\pstree@box\hbox{%
+ \kern\ifpstreeflip\else-\fi\pst@dimg\unhbox\pstree@box}%
+ \fi
+ \fi
+ \wd\pstree@box=\z@
+ \dp\pstree@box=\z@
+ \ht\pstree@box=\z@}
+\def\pstree@gettreebbox{%
+ \pstree@max\pstree@leftprofile\pst@cnta
+ \pstree@max\pstree@rightprofile\pst@cntb
+ \advance\pst@cntb\pstree@width
+ \ifodd\psk@treemode
+ \ifpstreeflip
+ \pst@dimc\pst@cntb sp
+ \pst@dimd\pst@cnta sp
+ \else
+ \pst@dimc\pst@cnta sp
+ \pst@dimd\pst@cntb sp
+ \fi
+ \else
+ \ifpstreeflip
+ \pst@dima\pst@cntb sp
+ \pst@dimb\pst@cnta sp
+ \else
+ \pst@dima\pst@cnta sp
+ \pst@dimb\pst@cntb sp
+ \fi
+ \fi
+ \ifcase\psk@treemode
+ \pst@dimc\pstree@height sp
+ \pst@dimd\pstree@depth sp
+ \or
+ \pst@dima\pstree@height sp
+ \pst@dimb\pstree@depth sp
+ \or
+ \pst@dimc\pstree@depth sp
+ \pst@dimd\pstree@height sp
+ \or
+ \pst@dima\pstree@depth sp
+ \pst@dimb\pstree@height sp
+ \fi
+ \psk@adjustbbox
+ \ifpsshowbbox \pstree@showbbox \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@outermode}
+% "\pstree@outermode" sets up some values that should be in effect for outer trees. A tree is "outer" is it is not nested inside any tree, or if it is inside any box other than a tree row (e.g., in a "\TR" node, or a label command). This means that "\pstree@outer" must be exected once below (for trees that are not nested inside any tree), and then "\pst@thisbox" is set to "\pstree@outer" inside a tree row.
+%
+% "\pst@tposflip" is a hook in the "tput" commands defined in "pst-node.tex" that flips the value of the positioning argument for trees, so that the number always refers to the distance from the predecessor node to successor node. This is initialized within trees, but in outer mode we want to disable the hook.
+%
+% "\pst@shortput" is also given a special meaning in trees, and we have to restore its value when entering outer mode.
+%
+% "\psk@bboxadust" stores the bounding box adjust parameters. We do not want these parameters to affect nested objects.
+%
+% Since "\pst@thisbox" may be set to "\pstree@outermode", the latter must reset "\pst@thisbox".
+%
+% Setting "\psk@predmode" to "\m@ne" is a useful flag for outer mode.
+% \begin{macrocode}
+\newif\ifpstree@outer
+\def\pstree@outermode{%
+ \pstree@outertrue
+ \let\pstree@makecanonical\pstree@makecanonical@outer
+ \let\psnode@makecanonical\relax
+ \let\pstree@build\pstree@build@outer
+ \let\psk@predmode\m@ne
+ \pstree@levelID=\z@
+ \chardef\pstree@maxlevel\z@
+ \let\pstree@themaxlevel\relax
+ \def\pstree@id{outer}%
+ \def\pst@tposflip{}%
+ \let\pst@shortput\pstree@savedshortput
+ \pstree@initnestedpar
+ \let\pst@thisbox\relax}
+\let\pstree@savedshortput\pst@shortput
+\pstree@outermode
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Constructing a row a successors}
+%
+% This described the process for the canonical tree row object.
+%
+% \begin{macro}{\pstree@succmode}
+% \begin{macrocode}
+\def\pstree@treemode{%
+ \let\pstree@makecanonical\pstree@makecanonical@succ
+ \let\psnode@makecanonical\psnode@makecanonical@succ
+ \let\pstree@build\pstree@build@succ
+ \pstree@initnestedpar
+ \global\pstree@succID=\@ne
+ \gdef\psTREE@addtreesep{\z@}%
+ \global\let\pstree@center\@empty
+ \global\let\psTREE@centerbase\@empty
+ \let\psk@predmode\psk@treemode
+ \let\if@predflip\ifpstreeflip
+ \let\pst@thisbox\pstree@outermode}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@build@succ}
+% First we actually skip the levels, if necessary.
+% \begin{macrocode}
+\def\pstree@build@succ{%
+ \ifnum\psskiplevels>\z@ \pstree@skiplevels \fi
+% \end{macrocode}
+% If "\pstree@succID=1", indicating that this is the first successor, the successor row dimensions are simply initialized.
+% \begin{macrocode}
+ \ifnum\pstree@succID=\@ne
+ \ifnum\psk@treerep>\@ne\copy\else\box\fi\pstree@box
+ \pstree@initrowdim
+% \end{macrocode}
+% Otherwise, "\pstree@fit" sets "\psTREE@sep" to the distance between the centers of the previous and current successors, sets "\psTREE@width" to the total distance from the center of the first to the last successor, and updates the profiles. Then we position the current succcessor.
+% \begin{macrocode}
+ \else
+ \pstree@fit
+ \ifodd\psk@predmode
+ \if@predflip\raise\else\lower\fi\psTREE@width sp
+ \else
+ \kern\if@predflip-\fi\psTREE@sep sp
+ \fi
+ \ifnum\psk@treerep>\@ne\copy\else\box\fi\pstree@box
+ \pstree@UpdateRowDim
+ \fi
+ \ifodd\psk@predmode\else
+ \pst@dimg=\pstree@width sp
+ \kern\if@predflip-\fi\pst@dimg
+ \fi
+% \end{macrocode}
+% Now we update the row dimensions.
+% \begin{macrocode}
+ \global\advance\pstree@succID\@ne}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@initrowdim}
+% The first successor's dimensions become the row's dimensions.
+% \begin{macrocode}
+\def\pstree@initrowdim{%
+ \global\let\psTREE@leftprofile\pstree@leftprofile
+ \global\let\psTREE@rightprofile\pstree@rightprofile
+ \global\let\psTREE@levelsizes\pstree@levelsizes
+ \global\psTREE@height\pstree@height\relax
+ \global\psTREE@depth\pstree@depth\relax
+ \global\psTREE@width\pstree@width\relax
+ \global\let\psTREE@maxtreesep\pstree@maxtreesep
+ \global\let\psTREE@center\pstree@center
+ \xdef\psTREE@numlevels{\the\pstree@numlevels}%
+ \xdef\psTREE@cumlevelsep{\the\pstree@cumlevelsep}%
+ \global\let\psTREE@leftbase\pstree@leftbase
+ \global\let\psTREE@rightbase\pstree@rightbase
+ \global\let\psTREE@centerbase\pstree@centerbase
+ \global\let\psTREE@rootnodes\pstree@rootnodes
+ \global\let\psTREE@basenodes\pstree@basenodes}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@fit}
+% First we calculate the distance between successors:
+% \begin{macrocode}
+\def\pstree@fit{%
+ \csname pstree@\psk@thistreefit fit\endcsname
+ \psTREE@rightprofile\pstree@leftprofile\psTREE@sep
+% \end{macrocode}
+% Then we add the "treesep", the width of the new object, and any extra space inserted by "\addtreesep".
+% \begin{macrocode}
+ \advance\psTREE@sep\psk@thistreesep\relax
+ \ifnum\psTREE@maxtreesep<\psTREE@sep
+ \xdef\psTREE@maxtreesep{\the\psTREE@sep}%
+ \fi
+ \advance\psTREE@sep\psTREE@addtreesep\relax
+ \gdef\psTREE@addtreesep{\z@}%
+ \global\advance\psTREE@width\psTREE@sep}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@UpdateRowDim}
+% Now we update the row's dimensions.
+% \begin{macrocode}
+\def\pstree@UpdateRowDim{%
+ \ifnum\psTREE@maxtreesep<\pstree@maxtreesep\relax
+ \let\psTREE@maxtreesep\pstree@maxtreesep
+ \fi
+ \advance\psTREE@sep\psTREE@width
+ \pstree@zip\psTREE@sep
+ \psTREE@rightprofile\pstree@rightprofile\psTREE@rightprofile
+ \pstree@zip\psTREE@width
+ \pstree@leftprofile\psTREE@leftprofile\psTREE@leftprofile
+ \global\advance\psTREE@width\pstree@width
+ \pstree@bimax\psTREE@levelsizes\pstree@levelsizes
+ \ifnum\pstree@height>\psTREE@height
+ \global\psTREE@height\pstree@height\relax
+ \fi
+ \ifnum\pstree@depth>\psTREE@depth
+ \global\psTREE@depth\pstree@depth\relax
+ \fi
+ \ifx\pstree@center\@empty\else
+ \pst@cntg=\psTREE@width
+ \advance\pst@cntg\pstree@center
+ \xdef\psTREE@center{\the\pst@cntg}%
+ \fi
+ \xdef\psTREE@rootnodes{\psTREE@rootnodes\pstree@rootnodes}%
+ \ifnum\pstree@numlevels<\psTREE@numlevels\else
+ \global\let\psTREE@rightbase\pstree@rightbase
+ \ifx\pstree@centerbase\@empty\else
+ \pst@cntg=\pstree@centerbase\relax
+ \advance\pst@cntg\psTREE@width
+ \xdef\psTREE@centerbase{\the\pst@cntg}%
+ \fi
+ \ifnum\pstree@numlevels>\psTREE@numlevels\relax
+ \global\let\psTREE@basenodes\pstree@basenodes
+ \xdef\psTREE@numlevels{\the\pstree@numlevels}%
+ \xdef\psTREE@cumlevelsep{\the\pstree@cumlevelsep}%
+ \pst@cntg=\pstree@leftbase\relax
+ \advance\pst@cntg-\psTREE@width
+ \xdef\psTREE@leftbase{\the\pst@cntg}%
+ \else
+ \xdef\psTREE@basenodes{\psTREE@basenodes\pstree@basenodes}%
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\treecenter}
+% "\treecenter" just remembers the current width of the row of successors.
+% \begin{macrocode}
+\def\treecenter{\xdef\psTREE@center{\the\psTREE@width}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\addtreesep}
+% \begin{macrocode}
+\def\addtreesep#1{%
+ \pssetlength\pst@dimg{#1}%
+ \xdef\psTREE@addtreesep{\number\pst@dimg}%
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@checkrow}
+% "\pstree@checkrow" checks that the row has at least one successor, and that the row doesn't have extraneous space.
+% \begin{macrocode}
+\def\pstree@checkrow{%
+ \ifnum\pstree@succID=\@ne
+ \pst@makelongbox
+ \pstree@treemode
+ \psroot{\box\pst@hbox}%
+ \ifnum\pstree@succID=\@ne\Tn\fi
+ \pst@endlongbox
+ \fi
+ \ifnum\wd\pst@hbox=%
+ \ifodd\psk@treemode\z@\else\ifpstreeflip-\fi\psTREE@width\fi
+ \else
+ \@pstrickserr{Extraneous space in tree row
+ (Level \the\pstree@levelID)}\@ehpa
+ \fi
+ \wd\pst@hbox=\z@
+ \ht\pst@hbox=\z@
+ \dp\pst@hbox=\z@}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Making canonical successors}
+%
+% "\psk@treemode" and "\ifpstreeflip" are the successor tree's "treemode" and "treeflip", and "\psk@predmode" and "\if@predflip" are the successor tree's "treemode" and "treeflip".
+%
+% \begin{macro}{\psnode@makecanonical@succ}
+% Terminal nodes are made into single-level trees. Because \TeX\ is pretty fast at processing conditionals, this should not take so long. Good thing, because terminal nodes are pretty common!
+% \begin{macrocode}
+\def\psnode@makecanonical@succ{%
+ \edef\pstree@height{%
+ \number
+ \ifcase\psk@predmode\pst@dimc\or\pst@dima\or\pst@dimd\or\pst@dimb\fi}%
+ \edef\pstree@depth{%
+ \number
+ \ifcase\psk@predmode\pst@dimd\or\pst@dimb\or\pst@dimc\or\pst@dima\fi}%
+ \edef\pstree@leftprofile{%
+ \number
+ \ifodd\psk@predmode
+ \if@predflip\pst@dimd\else\pst@dimc\fi
+ \else
+ \if@predflip\pst@dimb\else\pst@dima\fi
+ \fi,}%
+ \edef\pstree@rightprofile{%
+ \number
+ \ifodd\psk@predmode
+ \if@predflip\pst@dimc\else\pst@dimd\fi
+ \else
+ \if@predflip\pst@dima\else\pst@dimb\fi
+ \fi,}%
+ \edef\pstree@levelsizes{\pstree@height,\pstree@depth,}%
+ \pstree@numlevels\@ne
+ \pstree@cumlevelsep\z@
+ \chardef\pstree@width\z@
+ \let\pstree@center\@empty
+ \def\pstree@leftbase{\z@}%
+ \def\pstree@rightbase{\z@}%
+ \let\pstree@centerbase\@empty
+ \edef\pstree@rootnodes{\pssucc,}%
+ \let\pstree@basenodes\pstree@rootnodes
+ \def\pstree@maxtreesep{\z@}%
+ %%%% FIX ME??
+ \ifnum\psskiplevels>\z@
+ \let\pstree@saveskiplevels\psskiplevels
+ \pstree@skipprofile
+ \pstree@cumlevelsep\pstree@skiplevelsep\relax
+ \pst@cntg=\pstree@depth
+ \advance\pst@cntg\pstree@cumlevelsep
+ \edef\pstree@depth{\the\pst@cntg}%
+ \ifnum\pstree@height>\pstree@cumlevelsep
+ \pst@cntg=\pstree@height\relax
+ \advance\pst@cntg-\pstree@cumlevelsep
+ \edef\pstree@height{\the\pst@cntg}%
+ \else
+ \def\pstree@height{0}%
+ \fi
+ \let\psskiplevels\pstree@saveskiplevels
+ \fi
+ \ifleafalign\pstree@alignleaf\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@makecanonical@succ}
+% \begin{macrocode}
+% The canonical successor is a subtree with the same orientation as the tree within which it is nested. Flipped trees of the same type are also easy.
+% \begin{macrocode}
+\def\pstree@makecanonical@succ{%
+ \ifnum\psk@treemode=\psk@predmode
+ \pstree@@makecanonical@succ
+% \end{macrocode}
+% Subtrees of a different type are first converted to canonical outer objects (and in the process, the bounding box may be adjusted), and then they are converted to canonical successor objects as if they were nodes. This is not the most efficient, but such rotated subtrees are not so common. A direct conversion would be faster, but would still involve extensive macros.
+% \begin{macrocode}
+ \else
+ \pstree@makecanonical@outer
+ \def\pssucc,{\pstree@rootnodes}%
+ \psnode@makecanonical@succ
+ \fi}
+% \end{macrocode}
+% "\psk@treemode" and "\ifpstreeflip" are for the subtree. "\psk@predmode" and "\ifps@predflip" are for the predecessor tree.
+% \begin{macrocode}
+\def\pstree@@makecanonical@succ{%
+ \ifx\psk@adjustbbox\@empty\else
+ \@pstrickserr{You cannot adjust a proper subtree's bounding box}\@ehpa
+ \let\psk@adjustbbox\relax
+ \fi
+ \ifx\ifpstreeflip\if@predflip\else
+ \pstree@@@makecanonical@succ
+ \fi
+ \ifpsshowbbox \pstree@gettreebbox \fi}
+\def\pstree@@@makecanonical@succ{%
+ \let\pst@tempg\pstree@leftprofile
+ \let\pstree@leftprofile\pstree@rightprofile
+ \let\pstree@rightprofile\pst@tempg
+ \let\pst@tempg\pstree@leftbase
+ \let\pstree@leftbase\pstree@rightbase
+ \let\pstree@rightbase\pst@tempg
+ \ifnum\pstree@width=\z@\else
+ \pst@dimg=\pstree@width sp
+ \multiply\pst@dimg\m@ne
+ \ifodd\psk@treemode
+ \setbox\pstree@box=\hbox{\raise\pst@dimg\box\pstree@box}%
+ \else
+ \setbox\pstree@box=\hbox to \pst@dimg{%
+ \kern\pst@dimg\unhbox\pstree@box\hss}%
+ \fi
+ \fi
+ \ifx\pstree@center\@empty\else
+ \pst@cntg\pstree@width
+ \advance\pst@cntg-\pstree@center\relax
+ \edef\pstree@center{\the\pst@cntg}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Joining rows}
+%
+% \begin{macro}{\pstree@InitTreeDim}
+% The first successor's dimensions become the row's dimensions.
+% \begin{macrocode}
+\def\pstree@InitTreeDim{%
+ \setbox\pstree@box\box\pst@hbox
+ \let\pstree@leftprofile\psTREE@leftprofile
+ \let\pstree@rightprofile\psTREE@rightprofile
+ \let\pstree@levelsizes\psTREE@levelsizes
+ \edef\pstree@height{\the\psTREE@height}%
+ \edef\pstree@depth{\the\psTREE@depth}%
+ \edef\pstree@width{\the\psTREE@width}%
+ \let\pstree@maxtreesep\psTREE@maxtreesep
+ \let\pstree@center\psTREE@center
+ \pstree@numlevels\psTREE@numlevels\relax
+ \pstree@cumlevelsep\psTREE@cumlevelsep\relax
+ \let\pstree@leftbase\psTREE@leftbase
+ \let\pstree@rightbase\psTREE@rightbase
+ \let\pstree@centerbase\psTREE@centerbase
+ \let\pstree@rootnodes\psTREE@rootnodes
+ \let\pstree@basenodes\psTREE@basenodes}
+% \end{macrocode}
+% \end{macro}
+%
+% After a row has been processed, the left profiles are with respect to the center of the leftmost toplevel node, the right profiles are with respect to the center of the rightmost toplevel node, and "\psTREE@width" is the distance between the centers of the two extreme toplevel nodes. The row box's current point is the center of the leftmost toplevel node. That is, it is a tree! The previous rows have also been joined into a tree. Here is how we join two trees together, one on top of the other.
+%
+% Fist, we calculate the distance between the current point of the previous rows and the current point of the next row. We are matching the center of the base of the top row with the center of the root of the bottom row.
+%
+%
+% \begin{macro}{\pstree@setsucccenter}
+% \begin{macrocode}
+% "\pstree@setsucccenter" shifts the row's current point to the row's true center (either the midpoint between the two extreme successors or distance "\pstree@center" from the leftmost successor, adjusted by "treeshift"), and then adjust the profiles so that they are with respect to this center.
+%
+% First, find the distance from the left successor to the center, for the top of the bottom row.
+% \begin{macrocode}
+\def\pstree@joinrows{%
+ \ifnum\pstree@succID=\@ne
+ \csname pstree@unarycenter@\psk@thisunary\endcsname
+ \else
+ \ifx\psTREE@center\@empty
+ \pst@cnta\psTREE@width
+ \divide\pst@cnta\tw@
+ \else
+ \pst@cnta\psTREE@center\relax
+ \fi
+ \fi
+ \advance\pst@cnta\psk@treeshift\relax
+% \end{macrocode}
+% Now do the same for bottom of the top row:
+% \begin{macrocode}
+ \ifx\pstree@centerbase\@empty
+ \psTREE@sep\pstree@leftbase
+ \multiply\psTREE@sep\m@ne
+ \advance\psTREE@sep\pstree@rightbase
+ \advance\psTREE@sep\pstree@width
+ \divide\psTREE@sep\tw@
+ \else
+ \psTREE@sep\pstree@centerbase\relax
+ \fi
+% \end{macrocode}
+% Now find the distance between the current points, after alignment:
+% \begin{macrocode}
+ \advance\psTREE@sep-\pst@cnta
+% \end{macrocode}
+% Join the rows:
+% \begin{macrocode}
+ \advance\pstree@cumlevelsep\psk@thislevelsep\relax
+ \ifodd\psk@treemode
+ \setbox\pstree@box=\hbox{%
+ \box\pstree@box
+ \kern\ifnum\psk@treemode=\thr@@-\fi\pstree@cumlevelsep sp
+ \ifpstreeflip\raise\else\lower\fi\psTREE@sep sp\box\pst@hbox}%
+ \else
+ \setbox\pstree@box=\hbox{%
+ \box\pstree@box
+ \kern\ifpstreeflip-\fi\psTREE@sep sp
+ \ifnum\psk@treemode=\z@\lower\else\raise\fi\pstree@cumlevelsep sp
+ \box\pst@hbox}%
+ \fi
+ \wd\pstree@box=\z@
+ \ht\pstree@box=\z@
+ \dp\pstree@box=\z@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@joinprofiles}
+% Adjust the profiles.
+% \begin{macrocode}
+\def\pstree@joinprofiles{%
+ \ifnum\psskiplevels>\z@ \pstree@skiprowprofiles \fi
+ \pst@cnta=-\psTREE@sep
+ \pstree@add\pst@cnta\psTREE@leftprofile
+ \advance\pst@cnta\psTREE@leftbase
+ \edef\pstree@leftbase{\the\pst@cnta}%
+ \edef\pstree@leftprofile{\pstree@leftprofile\psTREE@leftprofile}%
+ \ifx\psTREE@centerbase\@empty\else
+ \pst@cnta=\psTREE@sep
+ \advance\pst@cnta\psTREE@centerbase
+ \edef\pstree@centerbase{\the\pst@cnta}%
+ \else
+ \let\pstree@centerbase\@empty
+ \fi
+ \advance\psTREE@width-\pstree@width
+ \advance\psTREE@width\psTREE@sep
+ \pstree@add\psTREE@width\psTREE@rightprofile
+ \edef\pstree@rightprofile{\pstree@rightprofile\psTREE@rightprofile}%
+ \advance\psTREE@width\psTREE@rightbase
+ \edef\pstree@rightbase{\the\psTREE@width}%
+ \edef\pstree@levelsizes{%
+ \pstree@levelsizes\psk@thislevelsep,\psTREE@levelsizes}%
+% \end{macrocode}
+% Then we calculate the resulting height and depth of the tree.
+% \begin{macrocode}
+ \advance\psTREE@height-\pstree@cumlevelsep
+ \ifnum\pstree@height<\psTREE@height
+ \edef\pstree@height{\the\psTREE@height}%
+ \fi
+ \advance\psTREE@depth\pstree@cumlevelsep
+ \ifnum\pstree@depth<\psTREE@depth
+ \edef\pstree@depth{\the\psTREE@depth}%
+ \fi
+ \advance\pstree@numlevels\psTREE@numlevels\relax
+ \let\pstree@basenodes\psTREE@basenodes}
+\def\pstree@skiprowprofiles{%
+ \pst@cntc-\psTREE@sep
+ \pst@cntd\pstree@leftbase\relax
+ \advance\pst@cntc-\pst@cntd
+ \pst@cnta\psTREE@width
+ \advance\pst@cnta\psTREE@sep
+ \advance\pst@cnta-\pstree@width
+ \pst@cntb=\pstree@rightbase
+ \advance\pst@cnta-\pst@cntb
+ \pst@cntg\psskiplevels
+ \advance\pst@cntg\@ne
+ \divide\pst@cntc\pst@cntg
+ \divide\pst@cnta\pst@cntg
+ \loop
+ \advance\pst@cntd\pst@cntc
+ \advance\pst@cntb\pst@cnta
+ \edef\pstree@leftprofile{\pstree@leftprofile\the\pst@cntd,}%
+ \edef\pstree@rightprofile{\pstree@rightprofile\the\pst@cntb,}%
+ \ifnum\pst@cntg>\tw@
+ \advance\pst@cntg\m@ne
+ \repeat}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Binary trees}
+%
+% \begin{macro}{\pstree@unarycenter@left,\pstree@unarycenter@right}
+% \begin{macrocode}
+\def\pstree@unarycenter@middle{\pst@cnta=\z@}
+\def\pstree@unarycenter@left{%
+ \pst@cnta\pstree@thistreesep\relax
+ \divide\pst@cnta\tw@
+ \advance\pst@cnta
+ \ifnum\psk@thistreenodesize<\z@
+ \pstree@gettop\psTREE@rightprofile
+ \else
+ \psk@thistreenodesize
+ \fi
+ \relax}%
+\def\pstree@unarycenter@right{%
+ \pst@cnta\pstree@thistreesep\relax
+ \divide\pst@cnta\tw@
+ \advance\pst@cnta
+ \ifnum\psk@thistreenodesize<\z@
+ \pstree@gettop\psTREE@leftprofile
+ \else
+ \psk@thistreenodesize
+ \fi
+ \multiply\pst@cnta\m@ne}%
+\def\pstree@unarycenter@leftternary{%
+ \pst@cnta=%
+ \ifnum\psk@thistreenodesize<\z@
+ \pstree@gettop\psTREE@rightprofile
+ \else
+ \psk@thistreenodesize
+ \fi
+ \multiply\pst@cnta\tw@
+ \advance\pst@cnta\pstree@thistreesep\relax}%
+\def\pstree@unarycenter@rightternary{%
+ \pst@cnta=%
+ \ifnum\psk@thistreenodesize<\z@
+ \pstree@gettop\psTREE@leftprofile
+ \else
+ \psk@thistreenodesize
+ \fi
+ \multiply\pst@cnta\tw@
+ \advance\pst@cnta\pstree@thistreesep
+ \multiply\pst@cnta\m@ne}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@unary,\psk@unary}
+% \begin{macrocode}
+\def\psset@unary#1{%
+ \@ifundefined{pstree@unarycenter@#1}%
+ {\@pstrickserr{Bad unary parameter: `#1'}\@ehpa}%
+ {\def\psk@unary{#1}}}
+\psset@unary{middle}
+\def\psset@thisunary#1{%
+ \@ifundefined{pstree@unarycenter@#1}%
+ {\@pstrickserr{Bad unary parameter: `#1'}\@ehpa}%
+ {\def\psk@thisunary{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psltree,\psrtree}
+% \begin{macrocode}
+\newpsobject{psltree}{pstree}{thisunary=left}
+\newpsobject{psrtree}{pstree}{thisunary=right}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Skip levels}
+%
+% \begin{macro}{\pstree@checkskiplevels}
+% \begin{macrocode}
+\def\pstree@checkskiplevels#1skiplevels=#2,#3\@nil{%
+ \chardef\psskiplevels#2\relax}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\pstree@skipprofile}
+% \begin{macrocode}
+\def\pstree@skipprofile{%
+ \ifnum\psk@predmode=\m@ne
+ \@pstrickserr{You can only skip levels in the successors of a tree}\@ehpa
+ \else
+ \pst@cnta=\psskiplevels
+ \pst@cntb=\z@
+ \def\pstree@skiplevelsizes{}%
+ \def\pstree@skiplevelprofiles{}%
+ \pstree@@skipprofile
+ \edef\pstree@skiplevelsep{\the\pst@cntb}%
+ \fi}
+\def\pstree@@skipprofile{%
+ \advance\pstree@levelID\@ne
+ \csname pstreehook\romannumeral\pstree@levelID\endcsname
+ \ifvarlevelsep \pstree@adjustlevelsep \fi
+ \edef\pstree@skiplevelsizes{\pstree@skiplevelsizes\psk@thislevelsep,0,0}%
+ \edef\pstree@skiplevelprofiles{0,\pstree@skiplevelprofiles}%
+ \advance\pst@cntb\psk@thislevelsep\relax
+ \pstree@initnestedpar
+ \advance\pst@cnta\m@ne
+ \ifnum\pst@cnta>\z@ \expandafter\pstree@@skipprofile \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\pstree@skiplevels{%
+ \ifx\pstree@center\@empty
+ \pst@cnta\pstree@width
+ \divide\pst@cnta\tw@
+ \else
+ \pst@cnta\pstree@center\relax
+ \fi
+ \advance\pstree@cumlevelsep\pstree@skiplevelsep\relax
+ \ifodd\psk@treemode
+ \setbox\pstree@box=\hbox{%
+ \kern\ifnum\psk@treemode=\thr@@-\fi\pstree@skiplevelsep sp
+ \ifpstreeflip\lower\else\raise\fi\pst@cnta sp\box\pstree@box}%
+ \else
+ \setbox\pstree@box=\hbox{%
+ \kern\ifpstreeflip-\fi\pst@cnta sp
+ \ifnum\psk@treemode=\z@\lower\else\raise\fi\pstree@skiplevelsep sp
+ \box\pstree@box}%
+ \fi
+ \wd\pstree@box=\z@
+ \ht\pstree@box=\z@
+ \dp\pstree@box=\z@
+% Left profiles
+ \ifnum\pst@cnta=\z@\else\pstree@add\pst@cnta\pstree@leftprofile\fi
+ \pst@cntb\pstree@leftbase
+ \advance\pst@cntb\pst@cnta
+ \edef\pstree@leftbase{\the\pst@cntb}%
+ \edef\pstree@leftprofile{\pstree@skiplevelprofiles\pstree@leftprofile}%
+ \ifx\pstree@centerbase\@empty\else
+ \pst@cntb\pstree@centerbase
+ \advance\pst@cntb-\pst@cnta
+ \edef\pstree@centerbase{\the\pst@cntb}%
+ \fi
+ \pst@cntb\pstree@width
+ \advance\pst@cntb-\pst@cnta
+ \ifnum\pst@cntb=\z@\else\pstree@add\pst@cntb\pstree@rightprofile\fi
+ \edef\pstree@rightprofile{\pstree@skiplevelprofiles\pstree@rightprofile}%
+ \advance\pst@cntb\pstree@rightbase
+ \edef\pstree@rightbase{\the\pst@cntb}%
+ \edef\pstree@levelsizes{\pstree@skiplevelsizes\pstree@levelsizes}%
+ \ifnum\pstree@height>\pstree@skiplevelsep\relax
+ \pst@cntb\pstree@skiplevelsep\relax
+ \multiply\pst@cntb\m@ne
+ \advance\pst@cntb\pstree@height
+ \edef\pstree@height{\the\pst@cntb}%
+ \else
+ \def\pstree@height{\z@}%
+ \fi
+ \advance\pstree@numlevels\psskiplevels
+ \def\pstree@width{0}%
+ \def\pstree@center{}}
+%
+% \section{Variable level sep}
+%
+% \begin{macro}{\pstree@initauxout}
+% \begin{macrocode}
+\def\pstree@initauxout{%
+ \@ifundefined{@latexerr}{%
+ \immediate\openin1 \jobname.pst
+ \ifeof1 \else
+ {\catcode`\@=11 \input \jobname.pst}%
+ \fi
+ \immediate\closein1
+ \global\csname newwrite\endcsname\pstree@auxout
+ \immediate\openout\pstree@auxout \jobname.pst }%
+ {\global\let\pstree@auxout\@auxout}%
+ \global\let\pstree@initauxout\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@writelevelsizes}
+% \begin{macrocode}
+\def\pstree@writelevelsizes{%
+ \ifx\if@filesw\iffalse\else
+ \pstree@getlevelsizes
+ \immediate\write\pstree@auxout{%
+ \string\global\string\@namedef{pstree@levelsizes@\pstree@id}%
+ {\pst@tempg}}%
+ \fi}
+\def\pstree@getlevelsizes{%
+ \def\pst@tempg{}%
+ \expandafter\pstree@@getlevelsizes\psTREE@levelsizes\relax}
+\def\pstree@@getlevelsizes#1,#2,#3,#4,#5,#6{%
+ \pst@cntg=#2\relax
+ \advance\pst@cntg#4\relax
+ \edef\pst@tempg{\pst@tempg\the\pst@cntg,}%
+ \ifx\relax#6\else
+ \def\next{\pstree@@getlevelsizes,#5,#6}%
+ \expandafter\next
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@initadjustlevelsep}
+% \begin{macrocode}
+\def\pstree@initadjustlevelsep{%
+ \pstree@initauxout
+ \expandafter\let\expandafter\pstree@thelevelsizes
+ \csname pstree@levelsizes@\pstree@id\endcsname
+ \ifx\pstree@thelevelsizes\relax
+ \def\pstree@thelevelsizes{0,}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@adjustlevelsep}
+% \begin{macrocode}
+\def\pstree@adjustlevelsep{%
+ \pstree@poptop\pstree@thelevelsizes\pst@cntg
+ \advance\pst@cntg\psk@thislevelsep\relax
+ \edef\psk@thislevelsep{\the\pst@cntg}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Leaf alignment}
+%
+% \begin{macro}{\psset@leafalign,\ifleafalign}
+% Call a tree whose terminal nodes should be aligned at the bottom of the tree a ``LeafAlign'' tree.
+%
+% In a LeafAlign tree, terminal nodes should align themselves by skipping levels, whenever "leafalign" is "true". The LeafAlign tree sets "\pstree@themaxlevel" to the number of the lowest level in the tree. When "leafalign" is "true", terminal nodes in the LeafAlign tree skip enough levels so that they end up at level "\pstree@themaxlevel".
+%
+% Setting "leafalign=true" has two effects. First, subsequent nodes take care of skipping levels. Second, top level tree or trees in the scope of the parameter setting become LeafAlign trees. "\psset@leafalign" sets "\if@leafaligntree" to "\iftrue", and this is reset to "\iffalse" by "\pstree@initnestedpar".
+% \begin{macrocode}
+\newif\ifleafalign
+\def\psset@leafalign#1{%
+ \@nameuse{leafalign#1}%
+ \let\if@leafaligntree\ifleafalign}
+\psset@leafalign{false}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@alignleaf}
+% This is invoked by "\psnode@makecanonical@succ" (i.e., by terminal nodes), when "leafalign" is true.
+%
+% We keep track of the number of the lowest level in a tree with "\pstree@maxlevel". This is set with "\chardef".
+%
+% The the terminal node skips as many levels as are needed.
+% \begin{macrocode}
+\def\pstree@alignleaf{%
+ \ifnum\pstree@maxlevel<\pstree@levelID
+ \global\chardef\pstree@maxlevel\pstree@levelID
+ \fi
+ \ifx\pstree@themaxlevel\relax\else
+ \ifnum\psskiplevels>\z@\else
+ \ifnum\pstree@themaxlevel>\pstree@levelID
+ \pst@cntg=\pstree@themaxlevel
+ \advance\pst@cntg-\pstree@levelID
+ \chardef\psskiplevels\pst@cntg
+ \pstree@saveskiplevels\psskiplevels
+ \pstree@skipprofile
+ \let\psskiplevels\pstree@saveskiplevels
+ \fi
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@writemaxlevel}
+% When a LeafAlign tree finishes processing its successors, it writes "\pstree@maxlevel" to a file.
+% \begin{macrocode}
+% \begin{macrocode}
+\def\pstree@writemaxlevel{%
+ \ifx\if@filesw\iffalse\else
+ \immediate\write\pstree@auxout{%
+ \string\global\string\@namedef{pstree@maxlevel@%
+ \pstree@id-\the\pstree@levelID-\the\pstree@succID}%
+ {\the\pstree@maxlevel}}%
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\pstree@writemaxlevel}
+% \begin{macrocode}
+% Before processing its successors, a LeafAlign tree looks for the value of "\pstree@maxlevel" that it might have written to the file, and assigns the value to "\pstree@themaxlevel":
+\def\pstree@initleafalign{%
+ \pstree@initauxout
+ \expandafter\let\expandafter\pstree@themaxlevel
+ \csname
+ pstree@maxlevel@%
+ \pstree@id-\the\pstree@levelID-\the\pstree@succID
+ \endcsname
+% \end{macrocode}
+% If "\pstree@themaxlevel" is equal to "\relax", then terminal nodes know that they should not try to align themselves.
+%
+% Then tree A needs to initialize "\pstree@maxlevel".
+% \begin{macrocode}
+ \global\chardef\pstree@maxlevel\pstree@levelID}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstree@savemaxlevel}
+% "\pstree@maxlevel" is set globally. A LeafAlign tree should not pay attention to levels in a subtrees that (i) change directions, (ii) are root trees, or (iii) are LeafAlign trees. Such trees save the value of "\pstree@maxlevel" as "\pstree@savemaxlevel", and then restore the value globally at the end. Here, we just initialize it:
+% \begin{macrocode}
+\let\pstree@savemaxlevel\z@
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Tree frames}
+%
+\let\pstree@frame\relax
+
+% \begin{macro}{\pstreeframe}
+% \begin{macrocode}
+\def\pstreeframe{\pst@object{pstreeframe}}
+\def\pstreeframe@i{%
+ \let\pstree@theframe\pstreeframe@ii
+ \let\pstree@theframepar\pst@par
+ \let\pstree@theframestar\if@star}
+\def\pstreeframe@ii{%
+ \pstree@getbbox
+ \pst@dimg\pslinewidth
+ \advance\pst@dimg\psframesep
+ \advance\pst@dima\pst@dimg
+ \advance\pst@dimb\pst@dimg
+ \advance\pst@dimc\pst@dimg
+ \advance\pst@dimd\pst@dimg
+ \setbox\pstree@box=\hbox{%
+ \let\pst@par\pstree@theframepar
+ \let\if@star\pstree@theframestar
+ \pst@useboxpar
+ \ifpsboxsep\aftergroup\pstreeframe@iii\fi
+ \def\psk@dimen{.5 }%
+ \psframe@i(-\pst@dima,-\pst@dimd)(\pst@dimb,\pst@dimc)%
+ \box\pstree@box}%
+ \aftergroup\pstree@relaxtheframe}%
+\def\pstreeframe@iii{%
+ \ifodd\psk@treemode
+ \pst@cntg=\pst@dimc
+ \pstree@set\pstree@upprofile
+ \pst@cntg=\pst@dimd
+ \pstree@set\pstree@downprofile
+ \else
+ \pstree@add\pst@dima\pstree@leftprofile
+ \pstree@add\pst@dimb\pstree@rightprofile
+ \fi}
+\def\pstree@relaxtheframe{\let\pstree@theframe\relax}
+\let\pstree@theframe\relax
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\pstree@firstandlast}
+% "\pstree@firstandlast{<profile>}{<cnt1>}{<cnt2>}" assigns the first and last values in <profile> to <cnt1> and <cnt2>, respectively.
+% \begin{macrocode}
+\def\pstree@firstandlast#1#2#3{%
+ \expandafter\pstree@@firstandlast\expandafter#2#1%
+ #3=\pst@cntg}
+\def\pstree@@firstandlast#1#2,{%
+ \pst@cntg=#2\relax
+ #1=\pst@cntg
+ \pstree@@@firstandlast}
+\def\pstree@@@firstandlast#1,{%
+ \ifx\relax#1\else
+ \pst@cntg=#1\relax
+ \expandafter\pstree@@@firstandlast
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstreeframe}
+% \begin{macrocode}
+\def\pstreecurve{\pst@object{pstreecurve}}
+\def\pstreecurve@i{%
+ \let\pstree@theframe\pstreecurve@ii
+ \let\pstree@theframepar\pst@par
+ \let\pstree@theframestar\if@star}
+\def\pstreecurve@ii{%
+ \setbox\pstree@box=\hbox{%
+ \let\pst@par\pstree@theframepar
+ \let\if@star\pstree@theframestar
+ \pst@useboxpar
+ \ifpsboxsep\aftergroup\pstreecurve@iv\fi
+ \pstreecurve@iii
+ \box\pstree@box}%
+ \aftergroup\pstree@relaxtheframe}%
+\def\pstreecurve@iii{%
+ \begin@ClosedObj
+ \pst@dimg\pslinewidth
+ \divide\pst@dimg2
+ \advance\pst@dimg\psframesep
+ \ifodd\psk@treemode\pstreecurve@hcoor\else\pstreecurve@vcoor\fi
+ \addto@pscode{[ \pst@coors}%
+ \psccurve@ii}
+\def\pstreecurve@iv{%
+ \pst@cnta=\pslinewidth
+ \advance\pst@cnta\psframesep
+ \ifodd\psk@treemode
+ \pstree@add\pst@cnta\pstree@upprofile
+ \pstree@add\pst@cnta\pstree@downprofile
+ \else
+ \pstree@add\pst@cnta\pstree@leftprofile
+ \pstree@add\pst@cnta\pstree@rightprofile
+ \fi}
+\def\pstreecurve@hcoor{%
+ \advance\pst@dima\pst@dimg
+ \advance\pst@dimb\pst@dimg
+ \ifnum\psk@treemode=\@ne
+ \pstree@firstandlast\pstree@upprofile\pst@cnta\pst@cntb
+ \else
+ \pstree@firstandlast\pstree@upprofile\pst@cntb\pst@cnta
+ \fi
+ \pst@dimh=\pst@cnta sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{\pst@number\pst@dima neg \pst@number\pst@dimh}%
+ \pst@dimh=\pst@cntb sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{\pst@coors \pst@number\pst@dimb \pst@number\pst@dimh}%
+ \ifnum\psk@treemode=\@ne
+ \pstree@firstandlast\pstree@downprofile\pst@cnta\pst@cntb
+ \else
+ \pstree@firstandlast\pstree@downprofile\pst@cntb\pst@cnta
+ \fi
+ \pst@dimh=\pst@cntb sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{%
+ \pst@coor \pst@number\pst@dimb \pst@number\pst@dimh neg }%
+ \pst@dimh=\pst@cnta sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{%
+ \pst@coors \pst@number\pst@dima neg \pst@number\pst@dimh neg }}%
+\def\pstreecurve@vcoor{%
+ \advance\pst@dimc\pst@dimg
+ \advance\pst@dimd\pst@dimg
+ \ifnum\psk@treemode=\z@
+ \pstree@firstandlast\pstree@leftprofile\pst@cnta\pst@cntb
+ \else
+ \pstree@firstandlast\pstree@leftprofile\pst@cntb\pst@cnta
+ \fi
+ \pst@dimh=\pst@cnta sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{\pst@number\pst@dimh neg \pst@number\pst@dimc}%
+ \pst@dimh=\pst@cntb sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{%
+ \pst@coors \pst@number\pst@dimh neg \pst@number\pst@dimd neg }%
+ \ifnum\psk@treemode=\z@
+ \pstree@firstandlast\pstree@rightprofile\pst@cnta\pst@cntb
+ \else
+ \pstree@firstandlast\pstree@rightprofile\pst@cntb\pst@cnta
+ \fi
+ \pst@dimh=\pst@cntb sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{\pst@coors \pst@number\pst@dimh \pst@number\pst@dimd neg }%
+ \pst@dimh=\pst@cnta sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{\pst@coors \pst@number\pst@dimh \pst@number\pst@dimc}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pstreepyramid}
+% \begin{macrocode}
+\def\pstreepyramid{\pst@object{pstreepyramid}}
+\def\pstreepyramid@i{%
+ \let\pstree@theframe\pstreepyramid@ii
+ \let\pstree@theframepar\pst@par
+ \let\pstree@theframestar\if@star}
+\def\pstreepyramid@ii{%
+ \setbox\pstree@box=\hbox{%
+ \let\pst@par\pstree@theframepar
+ \let\if@star\pstree@theframestar
+ \pst@useboxpar
+ %\ifpsboxsep\aftergroup\pstreepyramid@iv\fi
+ \pstreepyramid@iv
+ \pstreepyramid@iii
+ \box\pstree@box}%
+ \aftergroup\pstree@relaxtheframe}%
+\def\pstreepyramid@iii{%
+ \begin@ClosedObj
+ \pst@dimg\pslinewidth
+ \advance\pst@dimg\psframesep
+ \ifodd\psk@treemode\pstreepyramid@hcoor\else\pstreepyramid@vcoor\fi
+ \addto@pscode{[ \pst@tempg \pst@temph }%
+ \pspolygon@ii}
+\def\pstreepyramid@iv{%
+ \pst@cntg=\pslinewidth
+ \advance\pst@cntg\psframesep
+ \ifodd\psk@treemode
+ \pstree@add\pstree@upprofile
+ \pstree@add\pstree@downprofile
+ \else
+ \pstree@add\pstree@leftprofile
+ \pstree@add\pstree@rightprofile
+ \fi}
+\def\pstreepyramid@hcoor{%
+ \def\pst@tempg{}%
+ \def\pst@temph{}%
+ \pst@dima=\z@
+ \pst@dimg=\pst@cntg sp
+ \edef\next{%
+ \pstree@levelsizes\relax
+ \pstree@upprofile\relax
+ \pstree@downprofile\relax}%
+ \expandafter\pstreepyramid@@hcoor\next}
+\def\pstreepyramid@@hcoor#1,#2,#3,#4\relax#5,#6\relax#7,#8\relax{%
+ \pst@dimc=#5sp
+ \pst@dimd=#7sp
+ \pst@dimd=-\pst@dimd
+ \pst@dimb=#1sp
+ \advance\pst@dimb\pst@dimg
+ \pst@dimb=-\pst@dimb
+ \advance\pst@dimb\pst@dima
+ \edef\pst@tempg{\pst@tempg \pst@number\pst@dimb \pst@number\pst@dimc}%
+ \edef\pst@temph{\pst@number\pst@dimb \pst@number\pst@dimd \pst@temph}%
+ \pst@dimb=#2sp
+ \advance\pst@dimb\pst@dimg
+ \advance\pst@dimb\pst@dima
+ \edef\pst@tempg{\pst@tempg \pst@number\pst@dimb \pst@number\pst@dimc}%
+ \edef\pst@temph{\pst@number\pst@dimb \pst@number\pst@dimd \pst@temph}%
+ \ifx\relax#1%
+ \let\next\relax
+ \else
+ \pst@dimb=#3sp
+ \advance\pst@dima\ifnum\psk@treemode=\@ne\else-\fi\pst@dimb
+ \def\next{\pstreepyramid@@hcoor#4\relax#6\relax#8\relax}%
+ \fi
+ \next}
+\def\pstreecurve@vcoor{%
+ \advance\pst@dimc\pst@dimg
+ \advance\pst@dimd\pst@dimg
+ \ifnum\psk@treemode=\z@
+ \pstree@firstandlast\pstree@leftprofile\pst@cnta\pst@cntb
+ \else
+ \pstree@firstandlast\pstree@leftprofile\pst@cntb\pst@cnta
+ \fi
+ \pst@dimh=\pst@cnta sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{\pst@number\pst@dimh neg \pst@number\pst@dimc}%
+ \pst@dimh=\pst@cntb sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{%
+ \pst@coors \pst@number\pst@dimh neg \pst@number\pst@dimd neg }%
+ \ifnum\psk@treemode=\z@
+ \pstree@firstandlast\pstree@rightprofile\pst@cnta\pst@cntb
+ \else
+ \pstree@firstandlast\pstree@rightprofile\pst@cntb\pst@cnta
+ \fi
+ \pst@dimh=\pst@cntb sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{\pst@coors \pst@number\pst@dimh \pst@number\pst@dimd neg }%
+ \pst@dimh=\pst@cnta sp
+ \advance\pst@dimh\pst@dimg
+ \edef\pst@coors{\pst@coors \pst@number\pst@dimh \pst@number\pst@dimc}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Edges and node names\label{edges}}
+%
+% The following applies to nodes that have a successor:
+%
+% There are two edge macros. "\psedge" is invoked following each node, except when there is a skipped level between the node and its predecessor, in which case "\skipedge" is invoked. "\psedge" and "\skipedge" can be set by the "edge" and "skipedge" parameters. Setting these parameters for a node should affect the edge drawn to that node, but other parameter changes to a node should not affect the way the edge is drawn.
+% To reconcile these two goals, after setting its graphics parameters, a node lets "\pstree@edge" be "\psedge" (or If levels are skipped, it lets "\pstree@skipedge" be "\psedge" and lets "\pstree@edge" be "\skipedge"). Then the node closes the group and invokes "\pstree@edge".
+%
+% \begin{macro}{\psset@edge,\psedge}
+% \begin{macrocode}
+\def\psset@edge#1{\def\psedge{#1}}
+\psset@edge{\ncline}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@skipedge,\skipedge}
+% \begin{macrocode}
+\def\psset@skipedge#1{%
+ \def\skipedge{#1}%
+ \ifx\skipedge\@empty
+ \def\skipedge{\psedge}%
+ \else
+ \ifx\skipedge\@none
+ \def\skipedge##1##2{}%
+ \fi
+ \fi}
+\psset@skipedge{}
+% \end{macrocode}
+% \end{macro}
+%
+% Each node sets "\pssucc" to "@T:\pstree@id:\the\pstree@levelID". This does not give every node a unique name, but a nodes name will never be overwritten until it is not needed.
+%
+% \begin{macro}{\pspred}
+% Here, we only initialize "\pspred", in case it is used inadvertently.
+% \begin{macrocode}
+\def\pspred{@T}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Tree Nodes}
+%
+% For each of the PSTricks node commands, there should be a variant for trees that:
+% \begin{enumerate}
+% \item \label{bbt}
+% Invokes "\pst@@killglue".
+%
+% \item
+% Perhaps makes "\pst@hbox" and/or collect arguments. (Note: If a node is a tree's root or successor, then "\pst@thisbox" has been set to "\pstree@outermode" by the tree.)
+%
+% \item
+% Begins a group, and use graphics parameters.
+%
+% \item
+% Globally advance "\pstree@succID" by 1.
+%
+% \item \label{ebt}
+% Globally set "\pssucc" to "@T:\pstree@id:\the\pstree@levelID".
+%
+% \item \label{dn1}
+% Creates a zero-dimensional box, containing the node with name "\pssucc", and with the origin of the box located at the center of the node. (The center is the point the edges point to.)
+%
+% \item \label{dn2}
+% Sets "\pst@dima", etc., as described on page \pageref{nodesizes}.
+%
+% \item \label{bet}
+% Adjusts and/or shows the bounding box:
+% \begin{LVerbatim}
+% \psk@adjustbbox
+% \ifpsshowbbox\pstree@showbbox\fi
+% \end{LVerbatim}
+%
+% \item
+% Invokes "\psnode@makecanonical" and "\pstree@build".
+%
+% \item Saves the edge, closes the group, and invokes the edge (see Section \ref{edges}).
+%
+% \item \label{eet}
+% Invokes "\pst@shortput" (unless there is no predecessor, in which case it invokes "\ignorespaces").
+% \end{itemize}
+%
+%
+% \begin{macro}{\begin@treenode,\end@treenode}
+% "\begin@treenode" takes care of steps \ref{bbt}--\ref{ebt}. "\end@treenode" takes care of steps \ref{bet}--\ref{eet}. A tree node typically invokes "\begin@treenode", takes care of steps \ref{dn1} and \ref{dn2}, and then invokes "\end@treenode". If the tree makes "\pst@hbox", then it must first invoke "\pst@@killglue".
+% \begin{macrocode}
+\def\begin@treenode{%
+ \pst@@killglue
+ \begingroup
+ \use@par
+ \xdef\pssucc{@T:\pstree@id:\the\pstree@levelID:\the\pstree@succID}}
+\def\end@@treenode{%
+ \psk@adjustbbox
+ \ifpsshowbbox\pstree@showbbox\fi
+ \psnode@makecanonical
+ \pstree@build
+ \ifnum\psskiplevels>\z@
+ \global\let\pstree@skipedge\psedge
+ \global\let\pstree@edge\skipedge
+ \else
+ \global\let\pstree@edge\psedge
+ \fi
+ \endgroup
+ \let\pst@tempa\ignorespaces
+ \ifnum\pstree@levelID>\z@
+ \ifx\pstree@edge\@none\else
+ \let\pst@tempa\pst@shortput
+ \expandafter\pstree@makeedge\pstree@basenodes\relax\@empty
+ \fi
+ \fi
+ \pst@tempa}
+\def\pstree@makeedge#1,#2#3\@empty{%
+ {\pstree@edge{#1}{\pssucc}}%
+ \ifx#2\relax\else\let\pst@tempa\ignorespaces\expandafter\pstree@makeedge\fi
+ #2#3\@empty}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Tn}
+% "\Tn" is the exception. Because it is just a place holder, it sets "\pssucc" to "\pspred", and does not make an edge.
+% \begin{macrocode}
+\def\Tn{\pst@object{Tn}}
+\def\Tn@i{%
+ \pst@@killglue
+ \global\let\pssucc\pspred
+ \begingroup
+ \pst@dima=\z@
+ \pst@dimb=\z@
+ \pst@dimc=\z@
+ \pst@dimd=\z@
+ \setbox\pstree@box=\hbox{}%
+ \psnode@makecanonical
+ \pstree@build
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Tp}
+% \begin{macrocode}
+\def\Tp{\pst@object{Tp}}
+\def\Tp@i{%
+ \begin@treenode
+ \pst@dima=\z@
+ \pst@dimb=\z@
+ \pst@dimc=\z@
+ \pst@dimd=\z@
+ \setbox\pstree@box=\hbox{%
+ \pst@newnode{\pssucc}{10}{0 0 }{\tx@InitPnode}}%
+ \end@treenode}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Tc,\TC}
+% \begin{macrocode}
+\def\Tc{\pst@object{Tc}}
+\def\Tc@i#1{%
+ \begin@treenode
+ \pssetlength\pst@dima{#1}%
+ \pst@dimb=\pst@dima
+ \pst@dimc=\pst@dima
+ \pst@dimd=\pst@dima
+ \nodealignfalse
+ \setbox\pstree@box=\hbox{\cnode@ii(\z@,\z@){#1}{\pssucc}}%
+ \end@treenode}
+\def\TC{\pst@object{TC}}
+\def\TC@i{\Tc@i{\psk@radius}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Toval}
+% \begin{macrocode}
+\def\Toval{\pst@object{Toval}}
+\def\Toval@i{\pst@@killglue\pst@makebox{\Toval@ii\ovalnode@ii}}
+\def\Toval@ii#1{%
+ \begin@treenode
+ \nodealigntrue
+ \setbox\pstree@box=\hbox{#1\pssucc}%
+ \pst@dima=\wd\pstree@box
+ \divide\pst@dima\tw@
+ \pst@dimb=\pst@dima
+ \pst@dimc=\ht\pstree@box
+ \pst@dimd=\dp\pstree@box
+ \setbox\pstree@box=\hbox to\z@{\hss\unhbox\pstree@box\hss}%
+ \dp\pstree@box=\z@
+ \ht\pstree@box=\z@
+ \end@treenode}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\Tcircle,\TCircle}
+% \begin{macrocode}
+\def\Tcircle{\pst@object{Tcircle}}
+\def\Tcircle@i{\pst@@killglue\pst@makebox{\Toval@ii\circlenode@ii}}
+\def\TCircle{\pst@object{TCircle}}
+\def\TCircle@i{\pst@@killglue\pst@makebox{\Toval@ii\Circlenode@ii}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Tf}
+% \begin{macrocode}
+\def\Tf{\pst@object{Tf}}
+\def\Tf@i{\Toval@ii{\fnode@ii()}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Tdia}
+% \begin{macrocode}
+\def\Tdia{\pst@object{Tdia}}
+\def\Tdia@i{\pst@@killglue\pst@makebox{\Toval@ii\dianode@ii}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Ttri}
+% \begin{macrocode}
+\def\Ttri{\pst@object{Ttri}}
+\def\Ttri@i{\pst@@killglue\pst@makebox{\Ttri@ii}}
+\def\Ttri@ii{%
+ \begin@treenode
+ \nodealigntrue
+ \setbox\pstree@box=\hbox{\trinode@ii\pssucc}%
+ \pst@dima=\pst@dimg % Set by \pst@triboxsep
+ \pst@dimb=\wd\pstree@box
+ \advance\pst@dimb-\pst@dima
+ \pst@dimc=\ht\pstree@box
+ \pst@dimd=\dp\pstree@box
+ \setbox\pstree@box=\hbox to\z@{\hss\unhbox\pstree@box\hss}%
+ \dp\pstree@box=\z@
+ \ht\pstree@box=\z@
+ \end@treenode}
+% \end{macrocode}
+% \end{macro}
+%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\Tr}
+% \begin{macrocode}
+\def\Tr{\pst@object{Tr}}
+\def\Tr@i{\pst@@killglue\pst@makebox{\Tr@ii{\rnode@iii\rnode@iv}}}
+\def\Tr@ii#1{%
+ \begin@treenode
+ \def\pstree@nodehook{%
+ \xdef\pstree@next{\pst@dima=\number\pst@dima sp\relax}}%
+ \nodealigntrue
+ \setbox\pstree@box\hbox{#1\pssucc}%
+ \pstree@next
+ \pst@dimb=\wd\pstree@box
+ \advance\pst@dimb-\pst@dima
+ \pst@dimc=\ht\pstree@box
+ \pst@dimd=\dp\pstree@box
+ \setbox\pstree@box\hbox to\z@{\kern-\pst@dima\unhbox\pstree@box\hss}%
+ \ht\pstree@box=\z@
+ \dp\pstree@box=\z@
+ \end@treenode}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\TR}
+% \begin{macrocode}
+\def\TR{\pst@object{TR}}
+\def\TR@i{\pst@@killglue\pst@makebox{\Tr@ii{\rnode@iii\Rnode@ii}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Tdot}
+% \begin{macrocode}
+\def\Tdot{\pst@object{Tdot}}
+\def\Tdot@i{%
+ \begin@treenode
+ \def\pstree@nodehook{\xdef\pstree@next{%
+ \pst@dima=\number\pst@dimg sp\relax
+ \pst@dimc=\number\pst@dimh sp\relax}}%
+ \nodealignfalse
+ \setbox\pstree@box=\hbox{\dotnode@ii(\z@,\z@)\pssucc}%
+ \pstree@next
+ \pst@dimb=\pst@dima
+ \pst@dimd=\pst@dimc
+ \end@treenode}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@fansize,\psk@fansize}
+% \begin{macrocode}
+\def\psset@fansize#1{\pst@@getlength{#1}\psk@fansize}
+\psset@fansize{1cm}
+% \end{macrocode}
+% \end{macro}
+%
+% DEFINITION OF Tfan IS IN psn-beta.doc.
+%
+% \begin{macro}{\tx@Tfan}
+% \begin{macrocode}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Tfan}
+% \begin{macrocode}
+\def\Tfan{\pst@object{Tfan}}
+\def\Tfan@i{%
+ \addto@par{edge=none,skipedge=none}%
+ \begin@treenode
+ \solid@star
+ % For now, let \pst@dimb and \pst@dimd base and thickness of fan.
+ \pst@dimb=\psk@fansize
+ \pst@dimd=\pslinewidth
+ \advance\pst@dimb-\pst@dimd
+ \divide\pst@dimb 2
+ \divide\pst@dimd 2
+ % Set \pst@dima and \pst@dimc to leftsize and height of node
+ \ifodd\psk@treemode
+ \pst@dima=\pst@dimd
+ \pst@dimc=\pst@dimb
+ \else
+ \pst@dima=\pst@dimb
+ \pst@dimc=\pst@dimd
+ \fi
+ \setbox\pstree@box=\hbox{%
+ \pst@newnode{\pssucc}{16}{}{%
+ /Y 0 def
+ /X 0 def
+ /l \pst@number\pst@dima def
+ /r l def
+ /u \pst@number\pst@dimc def
+ /d u def
+ /NodePos { \tx@GetRnodePos } def}%
+ \def\pst@linetype{1}%
+ \nc@object{Closed}{\pspred}{\pssucc}{.5}{%
+ tx@Dict begin \psline@iii pop end
+ /w \pst@number\pst@dimb CLW 2 div sub def
+ /m \ifodd\psk@treemode false \else true \fi def
+ \tx@Tfan}}%
+ \pst@dimb=\pst@dima
+ \pst@dimd=\pst@dimc
+ \end@treenode}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@tnsep,\psk@tnsep}
+% \begin{macrocode}
+\def\psset@tnsep#1{%
+ \def\pst@tempg{#1}%
+ \ifx\pst@tempg\@empty
+ \def\psk@tnsep{\number\pslabelsep sp}%
+ \else
+ \pst@@getlength{#1}\psk@tnsep
+ \fi}
+\psset@tnsep{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@tnyref,\psk@tnyref}
+% \begin{macrocode}
+\def\psset@tnyref#1{\def\psk@tnyref{#1}}%
+\psset@tnyref{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@tnheight,\psk@tnheight}
+% \begin{macrocode}
+\def\psset@tnheight#1{\edef\psk@tnheight{#1}}
+\psset@tnheight{\ht\strutbox}
+\def\psset@tndepth#1{\edef\psk@tndepth{#1}}
+\psset@tndepth{\dp\strutbox}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@tnpos,\psk@tnpos}
+% \begin{macrocode}
+\def\psset@tnpos#1{%
+ \def\pst@tempg{#1}%
+ \ifx\pst@tempg\@empty
+ \def\psk@tnpos{%
+ \ifcase\psk@treemode b\or r\or a\or l\fi}%
+ \else
+ \@ifundefined{pstree@tnput@#1}%
+ {\@pstrickserr{Bad tnpos: `#1'}\@ehpa}%
+ {\edef\psk@tnpos{#1}}%
+ \fi}
+\psset@tnpos{}
+% \end{macrocode}
+% \end{macro}
+%
+\def\MakeShortTnput#1{%
+ \def\end@treenode{\@ifnextchar#1{\tnput@}{\end@@treenode}}}
+\MakeShortTnput{~}
+% \begin{macro}{\tnput@}
+% \begin{macrocode}
+\def\tnput@#1{\pst@object{tnput}}
+\def\tnput@i{\pst@@killglue\pst@makebox{\tnput@ii}}
+\def\tnput@ii{%
+ \begingroup
+ \use@par
+ \if@star\pst@starbox\fi
+ \gdef\next{}%
+ \csname pstree@tnput@\psk@tnpos\endcsname
+ \endgroup
+ \next
+ \setbox\pstree@box=\box\pst@boxg
+ \dp\pstree@box=\z@
+ \ht\pstree@box=\z@
+ \wd\pstree@box=\z@
+ \end@treenode}
+\@namedef{pstree@tnput@b}{%
+ \pstree@tnput@@v\pst@dimd\ht\dp\lower\psk@tnheight}
+\@namedef{pstree@tnput@a}{%
+ \pstree@tnput@@v\pst@dimc\dp\ht\raise\psk@tndepth}
+\def\pstree@tnput@@v#1#2#3#4#5{%
+ \pst@dimh=\wd\pst@hbox
+ \pst@dimg=\psk@href\pst@dimh
+ \advance\pst@dimg\pst@dimh
+ \divide\pst@dimg 2
+ \advance\pst@dimh-\pst@dimg
+ \ifdim\pst@dimg>\pst@dima
+ \xdef\next{\next\pst@dima=\number\pst@dimg sp\relax}%
+ \fi
+ \ifdim\pst@dimh>\pst@dimb
+ \xdef\next{\next\pst@dimb=\number\pst@dimh sp\relax}%
+ \fi
+ \pst@dimh=\psk@tnsep\relax
+ \ifdim\pst@dimh<\z@
+ \pst@dimh=-\pst@dimh
+ \else
+ \advance\pst@dimh#1%
+ \fi
+ \pssetlength\dimen@{#5}%
+ \ifdim\dimen@>#2\pst@hbox
+ \advance\pst@dimh\dimen@\relax
+ \else
+ \advance\pst@dimh#2\pst@hbox
+ \fi
+ \global\setbox\pst@boxg=\hbox{%
+ \box\pstree@box
+ #4\pst@dimh\hbox to\z@{\kern-\pst@dimg\unhbox\pst@hbox\hss}}%
+ \xdef\next{\next#1=\number#3\pst@boxg sp\relax}}
+\@namedef{pstree@tnput@l}{%
+ \pstree@tnput@@h\pst@dima{%
+ \hss
+ \lower\pst@dimg\box\pst@hbox
+ \kern\pst@dimh
+ \box\pstree@box}}
+\@namedef{pstree@tnput@r}{%
+ \pstree@tnput@@h\pst@dimb{%
+ \box\pstree@box
+ \kern\pst@dimh
+ \lower\pst@dimg\box\pst@hbox
+ \hss}}%
+\def\pstree@tnput@@h#1#2{%
+ \ifx\psk@tnyref\@empty
+ \pssetlength\pst@dimg\psk@vref
+ \else
+ \pst@dimg=\ht\pst@hbox
+ \advance\pst@dimg\dp\pst@hbox
+ \pst@dimg=\psk@tnyref\pst@dimg
+ \advance\pst@dimg-\dp\pst@hbox
+ \fi
+ \pst@dimh=\psk@tnsep\relax
+ \ifdim\pst@dimh<\z@
+ \multiply\pst@dimh\m@ne
+ \else
+ \advance\pst@dimh#1%
+ \fi
+ \xdef\next{%
+ \next#1=\number\pst@dimh sp\relax
+ \advance#1\number\wd\pst@hbox sp\relax}%
+ \global\setbox\pst@boxg=\hbox to\z@{#2}%
+ \ifdim\ht\pst@boxg>\pst@dimc
+ \xdef\next{\next\pst@dimc=\number\ht\pstree@box sp\relax}%
+ \fi
+ \ifdim\dp\pst@boxg>\pst@dimd
+ \xdef\next{\next\pst@dimd=\number\dp\pstree@box sp\relax}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+\catcode`\@=\TheAtCode\relax
+\endinput
+%% END pstree.tex
+
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pstricks.con b/usergrps/uktug/baskervi/6_2/spqr/pstricks.con
new file mode 100644
index 0000000000..2d1281265e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pstricks.con
@@ -0,0 +1,361 @@
+%% BEGIN: pstricks.con
+%%
+%% Configuration file for PSTricks v0.93a, 93/03/12.
+%%
+%% !! SEE INSTRUCTIONS AT END !!
+
+
+%%%%%%%%%%% !! DRIVER CONFIGURATION DEFINITIONS GO HERE: !! %%%%%%%%%%%%%%
+
+
+%% **********************************************************************
+%% ***** Rokicki's dvips ***** Rokicki's dvips ***** Rokicki's dvips ****
+%% **********************************************************************
+%% Life is bliss with Rokicki's dvips (tested with v5.396, v5.47, 5.491):
+%%
+\def\pstdriver{Rokicki's dvips}
+{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}} % Check catcode of "
+\def\pstunit{1bp}%
+\def\pstVerb#1{\special{ps: #1}}
+\def\pstverbscale{SDict begin normalscale end}
+\def\pstheader#1{\special{header=#1}}
+%%
+%% In the following, CP is short for currentpoint.
+%% The neg is necessary because dvips scales the coordinates by 1 -1.
+%% \tx@NET means neg exch neg exch translate.
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+%%
+%% If using a version before 5.47, clipping may not work. You can
+%% try the following definition of \pstverb:
+%\def\pstverb#1{\special{ps: @beginspecial #1 @endspecial}}
+%% or change "{initclip}ifelse" to "if" in the definition of @setspecial
+%% in dvips' special.pro.
+%%
+%% ****************** END Rokicki's dvips *****************************
+
+
+%%%%%%%%%%%%%%%%%%% !! CUSTOMIZATION STUFF GOES HERE: !! %%%%%%%%%%%%%%%%%%
+%% If you want to include your own customizations to pstricks.tex, then
+%% uncomment the \pstcustomize command, and include your modifications
+%% after \pstcustomize. These will be read in after pstricks.tex.
+%\pstcustomize
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%% !! END OF INPUT !! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+
+
+%%%%%%%%%%%%%%%%%%% !! GENERAL INSTRUCTIONS !! %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Because there are no standards for dvi-to-PS driver \special's,
+some driver-dependent commands must be defined in this file.
+
+Possibly correct definitions for some dvi drivers are given below.
+Copy the section for the driver you want to use to the indicated place
+near the beginning of the file, replacing any other definitions you
+might find there.
+
+When changing drivers, you may need to remake the header file.
+
+See the PSTricks read-me file for further installation instructions.
+
+Please report good and bad experiences with dvi-to-PS drivers,
+along with the definitions of these commands that worked
+for you, to tvz@Princeton.EDU. Thanks.
+
+
+%%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%%
+
+Here are the commands that must be defined in this file:
+
+ \pstverb{} - The argument is included as verbatim PostScript,
+ grouped by save and restore. The coordinate system
+ should be square, not rotated, and with the origin
+ at TeX's currentpoint.
+
+ \pstVerb{} - The argument is included as verbatim PostScript, not
+ grouped by (g)save and (g)restore. The currentpoint
+ should be TeX's currentpoint.
+
+ \pstunit - The units used by driver for graphics included with
+ \pstverb. Probably 1bp or 1sp.
+
+ \pstverbscale - The PostScript code that scales the coordinate system
+ from that in effect with \pstVerb to that in effect
+ with \pstverb. Should not translate to the currentpoint.
+
+ \pstrotate - The PostScript code that takes a number off the stack
+ and rotates the axes properly. I.e.,
+ \pstVerb{angle \pstrotate} is used to begin rotations.
+
+ \pstheader{} - The argument is a header file (e.g., .pro file).
+ If your driver does not support such a special, then
+ the command might just remind you to include the header
+ when printing. You can use PSTricks without a header,
+ in which case it does not matter how you define
+ \pstheader. See read-me.pst for details.
+ If you cannot change the default directory where your
+ driver looks for header files, and you cannot write to
+ that directory, then you include the path for your
+ PSTricks header files.
+ E.g., \def\pstheader#1{\special{header=~/tex/#1}}.
+
+ \pstdriver - The name of the driver.
+
+
+%%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%%
+
+See your local TeX documentation for instructions on creating a TeX format.
+
+Before making the format, be sure that this configuration file is correct.
+It will be read only when creating the format, and not with every job.
+
+If you are not using header files, there are no more special instructions.
+
+Special instructions when using header files:
+
+ - If you want to include supplementary PSTricks files (e.g., pst-node.tex),
+ add \input commands in the customization section above.
+
+ - If your definition of \pstheader is, e.g.
+
+ \def\pstheader#1{\special{\header=#1}}
+
+ then change it to
+
+ \def\pstheader#1{%
+ \expandafter\everyjob\expandafter{\the\everyjob
+ \special{header=#1}}}
+
+ and put your original definition in the customization section, AFTER
+ any \input commands. E.g., the customization section might look like:
+
+ \pstcustomize
+ \input pst-node.tex
+ \input pst-coil.tex
+ \def\pstheader#1{\special{header=#1}}
+
+ - Input pstricks.tex at the appropriate time when creating the format.
+ E.g., when initex stops running:
+ *\input pstricks
+ *\dump
+
+
+%%%%%%%%%% !! CONFIGURATIONS FOR SOME DRIVERS !! %%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%% **********************************************************************
+%% ***** Rokicki's dvips ***** Rokicki's dvips ***** Rokicki's dvips ****
+%% **********************************************************************
+%% Life is bliss with Rokicki's dvips (tested with v5.396, v5.47, 5.491):
+%%
+\def\pstdriver{Rokicki's dvips}
+{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}} % Check catcode of "
+\def\pstunit{1bp}%
+\def\pstVerb#1{\special{ps: #1}}
+\def\pstverbscale{SDict begin normalscale end}
+\def\pstheader#1{\special{header=#1}}
+%%
+%% In the following, CP is short for currentpoint.
+%% The neg is necessary because dvips scales the coordinates by 1 -1.
+%% \tx@NET means neg exch neg exch translate.
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+%%
+%% If using a version before 5.47, clipping may not work. You can
+%% try the following definition of \pstverb:
+%\def\pstverb#1{\special{ps: @beginspecial #1 @endspecial}}
+%% or change "{initclip}ifelse" to "if" in the definition of @setspecial
+%% in dvips' special.pro.
+%%
+%% ****************** END Rokicki's dvips *****************************
+
+
+%% **********************************************************************
+%% **** Arbortext's dvips *** Arbortext's dvips *** Arbortext's dvips ***
+%% **********************************************************************
+%% Thanks to Wolfgang Sienel:
+%%
+\def\pstdriver{Arbortext's dvips}
+\def\pstverb#1{%
+ \special{ps::[asis] 0 SPB /ChartCheckPoint save def
+ Xpos Ypos translate #1 ChartCheckPoint restore 0 SPE}}
+\def\pstunit{1bp}
+\def\pstVerb#1{\special{ps:: #1}}
+\def\pstverbscale{}
+\def\pstrotate{CP CP translate 3 -1 roll rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{**********************************************************}%
+ \typeout{** Don't forget to include #1 when printing:}%
+ \typeout{** \space\space dvips -PRO #1 myfile}%
+ \typeout{**********************************************************}}
+%%
+%% Comments by Wolfgang on header files:
+%% Normally the standard prolog file is downloaded once to the printer
+%% with psload.ps (the initializing file for your TeX-printer) before
+%% printing TeX-documents. If you don't make any changes to psload.ps
+%% you have to type dvips -PRO PATH/pstricks.pro myfile (-PRO just
+%% works for UNIX systems. I don't have any idea about other systems).
+%% If psload.ps was not downloaded to the printer you have to append
+%% pstricks.pro to the standard prolog file dvips.pro. In this case
+%% invoke dvips as always. Note that after hitting the enter key you
+%% have to specify the option download all prolog in both cases. If you
+%% are frequently using pstricks you might want to change psload.ps. In
+%% this case contact your local TeX-guru and ask him politely to do this
+%% for you. Attention: If psload.ps is getting too big you may run into
+%% trouble with printer memory!
+%%
+%% ****************** END Arbortext's dvips *****************************
+
+
+%% **********************************************************************
+%% **** Textures *** Textures *** Textures *** Textures *** Textures ****
+%% **********************************************************************
+%% These have been tested with v1.3. It is nice to have a PostScript
+%% screen previewer, such as TScript (USA: 1-617-734-9700). (The
+%% Textures preview window will not show the PSTricks graphics.)
+%%
+\def\pstdriver{Textures}
+\def\pstunit{1bp}
+\def\pstverb#1{\special{postscript /TX@Save save def #1 TX@save restore}}
+\def\pstVerb#1{\special{postscript grestore #1 gsave}}
+\def\pstverbscale{Mag 1000 div 72.27 72 div mul dup neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+%%
+%% \pstVerb does not define the currentpoint properly. As a workaround,
+%% insert the following lines in the customization section above.
+%%
+%% \def\pst@Verb#1{%
+%% \special{postscript \pst@dict /sps { moveto /Mag ed } def
+%% userdict begin}%
+%% \special{postscript #1 end gsave}}
+%%
+%% Textures does not support header files.
+%% However, it may still be worth using a header file for increased speed.
+%% Also, some macros can overload Textures 1.3 when not used with a header
+%% file. You can include the header file pstricks.pro by saving the
+%% PostScript output to a file and inserting the pstricks.pro with an
+%% editor. Probably a better solution is to append pstricks.pro to a
+%% copy of the laserprep, and, by changing file names of the modified
+%% laserprep and the original laserprep, use the laserprep with pstricks.pro
+%% whenever you are printing pstricks documents.
+\def\pstheader#1{%
+ \typeout{******************************************}%
+ \typeout{*** Include header file #1!! ***}%
+ \typeout{******************************************}}
+%%
+%% ****************** END Textures **************************************
+
+
+%% **********************************************************************
+%% ***** dvi2ps ***** dvi2ps ***** dvi2ps ***** dvi2ps ***** dvi2ps *****
+%% **********************************************************************
+%% I.e., dvi2ps, v2.xx. There are lot's of such things around.
+%% This probably doesn't work. Considering upgrading to Rokicki's dvips.
+%%
+\def\pstdriver{dvi2ps v2.xx}
+\def\pstunit{1pt}
+\def\pstverb#1{ pstext="save currentpoint translate
+ Resolution 72.27 div neg scale #1 restore" \space}
+\def\pstVerb#1{ pstext="#1" \space}
+\def\pstverbscale{Resolution 72.27 div neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}
+%%
+%% ***************************** END dvi2ps *****************************
+
+
+%% **********************************************************************
+%% ***** dvi3ps ***** dvi3ps ***** dvi3ps ***** dvi3ps ***** dvi3ps *****
+%% **********************************************************************
+%% I.e., dvi2ps, version 3.xx, by Kevin Coombes.
+%% This has not been tested. Consider upgrading to Rokicki's dvips.
+%%
+\def\pstdriver{dvi2ps v3.xx}
+\def\pstunit{1bp}
+\def\pstverb#1{pstext="#1"}
+% \def\pstVerb#1{%
+% \special{pstext="@endspecial #1 @beginspecial @setspecial"}} % v3.0
+\def\pstVerb#1{\special{psraw="#1"}} % v3.3
+\def\pstverbscale{Resolution 72.27 div neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}
+%%
+%% ******************* END dvi3ps ***************************************
+
+
+%% **********************************************************************
+%% **** OzTeX **** OzTeX **** OzTeX **** OzTeX **** OzTeX **** OzTeX ****
+%% **********************************************************************
+%% Only the pure graphics objects are supported for OzTeX.
+%% No color, rotation, clipping, nodes and node connections, overlays, etc.
+%% Also, \rput cannot be used with \SpecialCoor.
+%%
+%% The reason is given in the documentation for Version 1.3, September 1990:
+%%
+%% OzTeX generates highly efficient PostScript code but it does so at
+%% the expense of some \special functionality. Many DVI-to-PostScript
+%% translators allow you to do things like use one \verb|\special| to start
+%% rotating TeX text and another to stop the rotation. The way OzTeX
+%% interprets a DVI page makes this impossible.
+%%
+%% If using the header file, you should copy pstricks.pro to global.ps, in
+%% the same directory as your dvi file.
+%%
+\def\pstdriver{OzTeX}
+\def\pstverb#1{\special{null.ps #1}}
+\def\pstunit{1bp}
+\def\pstVerb#1{%
+ \typeout{PSTRICKS WARNING:}%
+ \typeout{\space\space You are using features not supported by OzTeX.}%
+ \typeout{\space\space These will be ignored.}%
+ \gdef\pstVerb##1{}}
+\def\pstverbscale{}
+\def\pstrotate{}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}}
+%%
+%% ************************* END OzTeX **********************************
+
+
+%% **********************************************************************
+%% ***** DirectTeX ***** DirectTeX ***** DirectTeX ***** DirectTeX ******
+%% **********************************************************************
+%% DirectTeX is for the Macintosh. These has been tested unsuccessfully,
+%% apparently due to a problem with DirectTeX.
+%%
+\def\pstdriver{DirectTeX}
+%%
+%% Check catcode of "
+{\catcode`\"=12\gdef\pstverb#1{\special{" #1 /Foo{}def }}}
+\def\pstunit{1bp}
+\def\pstVerb#1{\special{ps: #1 }}
+\def\pstverbscale{TeXDict begin normalscale end}
+%%
+%% In the following, CP is short for currentpoint. The neg is necessary
+%% because dvips scales the coordinates by 1 -1:
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+%%
+\def\pstheader#1{%
+ \typeout{**********************************************************}%
+ \typeout{** Don't forget to include #1 when printing:}%
+ \typeout{** \space\space DVIReader -header #1 myfile}%
+ \typeout{**********************************************************}}
+%%
+%% ****************** END DirectTeX *****************************
+
+
+%% END pstricks.con
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pstricks.pro b/usergrps/uktug/baskervi/6_2/spqr/pstricks.pro
new file mode 100644
index 0000000000..359110c4ff
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pstricks.pro
@@ -0,0 +1,204 @@
+%!
+% PostScript prologue for pstricks.tex.
+% Created 1994/6/23. Source file was pstricks.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+/pathforall load stopped { pop pop pop pop } if z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
+0 } ifelse setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
+2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
+itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
+/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
+a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
+def
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/SD { 0 360 arc fill } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+load } if ] cvx newpath 3 1 roll T exec } def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
+neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
+def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
+div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
+pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
+d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
+} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
+aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
+2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
+ifelse } def
+/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
+6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
+/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
+sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
+def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
+if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
+/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
+round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
+round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
+0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
+/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
+if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
+{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
+div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
+dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
+dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
+pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
+stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
+{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
+w add def } repeat grestore gsave n 0 gt { 1 setlinecap [ 0 dx n div ]
+dy n div 2 div setdash } { 2 setlinecap } ifelse /i y1 def /f x1 dx mul
+n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
+div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
+1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
+dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
+{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
+exch t L stroke /i i h add def } repeat grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
+def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
+dup a add ] cvx def } def
+/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
+cvx def } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
+/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
+} if } ifelse } def
+/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
+neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
+/IfVisible true def } def
+end
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pstricks.sty b/usergrps/uktug/baskervi/6_2/spqr/pstricks.sty
new file mode 100644
index 0000000000..5785e1ae1b
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pstricks.sty
@@ -0,0 +1,17 @@
+\ProvidesPackage{pstricks}[1994/07/12 all pstricks tools]
+\input{pstricks}
+\input{gradient}
+\input{pst-plot}
+\input{pst-coil}
+\input{textpath}
+\input{charpath}
+\input{pst-node}
+\input{pst-3d}
+\input{pst2eps}
+\input{boxfill}
+\input{pstree}
+\input{multido}
+%\input{pst-beta.tex}
+%\input{pst-beta.bug}
+\newpsobject{usergrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=7pt}
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pstricks.tex b/usergrps/uktug/baskervi/6_2/spqr/pstricks.tex
new file mode 100644
index 0000000000..fcb8b77902
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pstricks.tex
@@ -0,0 +1,2554 @@
+%% BEGIN: pstricks.tex
+%% Generated on <1994/6/16> from `pstricks.doc'.
+%% For use with the PostScript header file `pstricks.pro'.
+%%
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+%%
+%% pstricks.tex: Main input file for the PSTricks package.
+%% PostScript macros for Generic TeX.
+%% See the PSTricks read-me file and the User's Guide for documentation.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% Copying of part or all of any file in the pstricks.tex package
+%% is allowed under the following conditions only:
+%% (1) You may freely distribute unchanged copies of the files. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of any file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the files, for personal use or for use
+%% in a macro package for distribution, as long as credit is given
+%% where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% these files or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+\csname PSTricksLoaded\endcsname
+\let\PSTricksLoaded\endinput
+\edef\PstAtCode{\the\catcode`\@}
+\catcode`\@=11\relax
+\expandafter\ifx\csname @latexerr\endcsname\relax
+\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
+#1\endcsname\relax#2\else#3\fi}
+\def\@namedef#1{\expandafter\def\csname #1\endcsname}
+\def\@nameuse#1{\csname #1\endcsname}
+\def\@eha{%
+Your command was ignored.^^J
+Type \space I <command> <return> \space to replace
+it with another command,^^J
+or \space <return> \space to continue without it.}
+\def\@spaces{\space\space\space\space}
+\def\typeout#1{\immediate\write\@unused{#1}}
+\alloc@7\write\chardef\sixt@@n\@unused
+\def\@empty{}
+\def\@gobble#1{}
+\def\@nnil{\@nil}
+\def\@ifnextchar#1#2#3{%
+\let\@tempe#1\def\@tempa{#2}\def\@tempb{#3}\futurelet\@tempc\@ifnch}
+\def\@ifnch{%
+\ifx\@tempc\@sptoken
+\let\@tempd\@xifnch
+\else
+\ifx\@tempc\@tempe \let\@tempd\@tempa \else \let\@tempd\@tempb \fi
+\fi
+\@tempd}
+\begingroup
+\def\:{\global\let\@sptoken= } \:
+\def\:{\@xifnch} \expandafter\gdef\: {\futurelet\@tempc\@ifnch}
+\endgroup
+\fi
+\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz)}
+\def\@pstrickserr#1#2{%
+\begingroup
+\newlinechar`\^^J
+\edef\pst@tempc{#2}%
+\expandafter\errhelp\expandafter{\pst@tempc}%
+\typeout{%
+PSTricks error. \space See User's Guide for further information.^^J
+\@spaces\@spaces\@spaces\@spaces
+Type \space H <return> \space for immediate help.}%
+\errmessage{#1}%
+\endgroup}
+\def\@ehpa{%
+Your command was ignored. Default value substituted.^^J
+Type \space <return> \space to procede.}
+\def\@ehpb{%
+Your command was ignored. Will recover best I can.^^J
+Type \space <return> \space to procede.}
+\def\@ehpc{%
+You better fix this before proceding.^^J
+See the PSTricks User's Guide or ask your system administrator for help.^^J
+Type \space X <return> \space to quit.}
+\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb}
+\newdimen\pst@dima
+\newdimen\pst@dimb
+\newdimen\pst@dimc
+\newdimen\pst@dimd
+\newdimen\pst@dimg
+\newdimen\pst@dimh
+\newbox\pst@hbox
+\newbox\pst@boxg
+\newcount\pst@cnta
+\newcount\pst@cntb
+\newcount\pst@cntc
+\newcount\pst@cntd
+\newcount\pst@cntg
+\newcount\pst@cnth
+\newif\if@pst
+\newtoks\pst@toks
+\newif\if@star
+\def\pst@ifstar#1{%
+\@ifnextchar*{\@startrue\def\next*{#1}\next}{\@starfalse#1}}
+\def\pst@expandafter#1#2{%
+\def\next{#1}%
+\edef\@tempa{#2}%
+\ifx\@tempa\@empty
+\@pstrickserr{Unexpected empty argument!}\@ehpb
+\def\@tempa{\@empty}%
+\fi
+\expandafter\next\@tempa}
+\def\pst@dimtonum#1#2{\edef#2{\pst@@dimtonum#1}}
+\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1}
+{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}}
+\def\pst@pyth#1#2#3{%
+\ifdim#1>#2\pst@@pyth#1#2#3\else\pst@@pyth#2#1#3\fi}
+\def\pst@@pyth#1#2#3{%
+\ifdim4#1>9#2%
+#3=#1\advance#3 .2122#2%
+\else
+#3=.8384#1\advance#3 .5758#2%
+\fi}
+\def\pst@divide#1#2#3{%
+\pst@@divide{#1}{#2}%
+\pst@dimtonum\pst@dimg{#3}}
+\def\pst@@divide#1#2{%
+\pst@dimg=#1\relax
+\pst@dimh=#2\relax
+\pst@cntg=\pst@dimh
+\pst@cnth=67108863
+\pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide
+\divide\pst@dimg\pst@cntg}
+\def\pst@@@divide{%
+\ifnum
+\ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cnth
+\multiply\pst@dimg\sixt@@n
+\else
+\divide\pst@cntg\sixt@@n
+\fi}
+\def\pst@configerr#1{%
+\@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc}
+% % \begin{macrocode}
+\def\pstVerb#1{\pst@configerr\pstVerb}
+\def\pstverb#1{\pst@configerr\pstverb}
+\def\pstverbscale{\pst@configerr\pstverbscale}
+\def\pstrotate{\pst@configerr\pstrotate}
+\def\pstheader#1{\pst@configerr\pstheader}
+\def\pstdriver{\pst@configerr\pstdriver}
+\@ifundefined{pstcustomize}%
+{\def\pstcustomize{\endinput\let\pstcustomize\relax}}{}
+\input pstricks.con
+\newif\ifPSTricks
+\PSTrickstrue
+\def\PSTricksOff{%
+\def\pstheader##1{}%
+\def\pstverb##1{}%
+\def\pstVerb##1{}%
+\PSTricksfalse}
+\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{}
+\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{}
+\pstheader{pstricks.pro}
+\def\pst@dict{tx@Dict begin }
+\def\pst@theheaders{pstricks.pro}
+\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}}
+\def\tx@Atan{Atan }
+\def\tx@Div{Div }
+\def\tx@NET{NET }
+\def\tx@Pyth{Pyth }
+\def\tx@PtoC{PtoC }
+\def\tx@PathLength@{PathLength@ }
+\def\tx@PathLength{PathLength }
+\pst@dimg=\pstunit\relax
+\ifdim\pst@dimg=1bp
+\def\pst@stp{.996264 dup scale}
+\else
+\edef\pst@stp{1 \pst@@dimtonum\pst@dimg\space div dup scale}
+\fi
+\def\tx@STP{STP }
+\def\tx@STV{STV }
+\def\pst@number#1{\pst@@dimtonum#1\space}
+\def\pst@checknum#1#2{%
+\edef\next{#1}%
+\ifx\next\@empty
+\let\pst@num\z@
+\else
+\expandafter\pst@@checknum\next..\@nil
+\fi
+\ifnum\pst@num=\z@
+\@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa
+\def#2{0 }%
+\else
+\edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.%
+\expandafter\@gobble\the\pst@cnth\space}%
+\fi}
+\def\pst@@checknum{%
+\@ifnextchar-%
+{\let\pst@num\tw@\expandafter\pst@@@checknum\@gobble}%
+{\let\pst@num\@ne\pst@@@checknum}}
+\def\pst@@@checknum#1.#2.#3\@nil{%
+\afterassignment\pst@@@@checknum\pst@cntg=0#1\relax\@nil
+\afterassignment\pst@@@@checknum\pst@cnth=1#2\relax\@nil}
+\def\pst@@@@checknum#1\relax\@nil{%
+\ifx\@nil#1\@nil\else\let\pst@num\z@\fi}
+\def\pst@getnumii#1 #2 #3\@nil{%
+\pst@checknum{#1}\pst@tempg
+\pst@checknum{#2}\pst@temph}
+\def\pst@getnumiii#1 #2 #3 #4\@nil{%
+\pst@checknum{#1}\pst@tempg
+\pst@checknum{#2}\pst@temph
+\pst@checknum{#3}\pst@tempi}
+\def\pst@getnumiv#1 #2 #3 #4 #5\@nil{%
+\pst@checknum{#1}\pst@tempg
+\pst@checknum{#2}\pst@temph
+\pst@checknum{#3}\pst@tempi
+\pst@checknum{#4}\pst@tempj}
+\def\pst@getdimnum#1 #2 #3\@nil{%
+\pssetlength\pst@dimg{#1}%
+\pst@checknum{#2}\pst@tempg}
+\def\pst@getscale#1#2{%
+\pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil
+\@psttrue
+\ifdim\pst@tempg\p@=\z@
+\@pstrickserr{Bad scaling argument `#1'}\@ehpa
+\def\pst@tempg{1 }%
+\@pstfalse
+\fi
+\ifdim\pst@temph\p@=\z@
+\if@pst\@pstrickserr{Bad scaling argument `#1'}\@ehpa\fi
+\def\pst@temph{1 }%
+\fi
+\edef#2{\pst@tempg\space \pst@temph\space scale }%
+\ifdim\pst@tempg\p@=\p@ \ifdim\pst@temph\p@=\p@
+\def#2{}%
+\fi\fi}
+\def\pst@getint#1#2{%
+\pst@cntg=#1\relax
+\edef#2{\the\pst@cntg\space}}
+\begingroup
+\catcode`\{=12
+\catcode`\}=12
+\catcode`\[=1
+\catcode`\]=2
+\gdef\pslbrace[{ ]
+\gdef\psrbrace[} ]
+\endgroup
+\def\@newcolor#1#2{%
+\expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}%
+\expandafter\edef\csname color@#1\endcsname{#2}%
+\ignorespaces}
+\def\pst@color#1{%
+\def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}
+\def\pst@endcolor{\pstVerb{\pst@currentcolor}}
+\def\pst@currentcolor{0 setgray}
+\def\altcolormode{%
+\def\pst@color##1{%
+\pstVerb{gsave ##1}\aftergroup\pst@endcolor}%
+\def\pst@endcolor{\pstVerb{\pst@grestore}}}
+\def\pst@grestore{%
+currentpoint
+matrix currentmatrix
+currentfont
+grestore
+setfont
+setmatrix
+moveto}
+\def\pst@usecolor#1{\csname color@#1\endcsname\space}
+\def\newgray#1#2{%
+\pst@checknum{#2}\pst@tempg
+\@newcolor{#1}{\pst@tempg setgray}}
+\def\newrgbcolor#1#2{%
+\pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
+\@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}}
+\def\newhsbcolor#1#2{%
+\pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
+\@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}}
+\def\newcmykcolor#1#2{%
+\pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
+\@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}}
+\newgray{black}{0}
+\newgray{darkgray}{.25}
+\newgray{gray}{.5}
+\newgray{lightgray}{.75}
+\newgray{white}{1}
+\newrgbcolor{red}{1 0 0}
+\newrgbcolor{green}{0 1 0}
+\newrgbcolor{blue}{0 0 1}
+\newrgbcolor{yellow}{1 1 0}
+\newrgbcolor{cyan}{0 1 1}
+\newrgbcolor{magenta}{1 0 1}
+\def\psset#1{\@psset#1,\@nil\ignorespaces}
+\def\@psset#1,{%
+\@@psset#1==\@nil
+\@ifnextchar\@nil{\@gobble}{\@psset}}
+\def\@@psset#1=#2=#3\@nil{%
+\@ifundefined{psset@#1}%
+{\@pstrickserr{Graphics parameter `#1' not defined.}\@ehpa}%
+{\@nameuse{psset@#1}{#2}}}%
+\def\psset@style#1{%
+\@ifundefined{pscs@#1}%
+{\@pstrickserr{Custom style `#1' undefined}\@ehpa}%
+{\@nameuse{pscs@#1}}}
+\def\newpsstyle#1#2{\@namedef{pscs@#1}{\psset{#2}}}
+\def\@none{none}
+\def\pst@getcolor#1#2{%
+\@ifundefined{color@#1}%
+{\@pstrickserr{Color `#1' not defined}\@eha}%
+{\edef#2{#1}}}
+\newdimen\psunit \psunit 1cm
+\newdimen\psxunit \psxunit 1cm
+\newdimen\psyunit \psyunit 1cm
+\let\psrunit\psunit
+\def\pstunit@off{\let\@psunit\ignorespaces\ignorespaces}
+\def\pssetlength#1#2{%
+\let\@psunit\psunit
+\afterassignment\pstunit@off
+#1 #2\@psunit}
+\def\psaddtolength#1#2{%
+\let\@psunit\psunit
+\afterassignment\pstunit@off
+\advance#1 #2\@psunit}
+\def\pssetxlength#1#2{%
+\let\@psunit\psxunit
+\afterassignment\pstunit@off
+#1 #2\@psunit}
+\def\pssetylength#1#2{%
+\let\@psunit\psyunit
+\afterassignment\pstunit@off
+#1 #2\@psunit}
+\def\psset@unit#1{%
+\pssetlength\psunit{#1}%
+\psxunit=\psunit
+\psyunit=\psunit}
+\def\psset@runit#1{\pssetlength\psrunit{#1}}
+\def\psset@xunit#1{\pssetxlength\psxunit{#1}}
+\def\psset@yunit#1{\pssetylength\psyunit{#1}}
+\def\pst@getlength#1#2{%
+\pssetlength\pst@dimg{#1}%
+\edef#2{\pst@number\pst@dimg}}
+\def\pst@@getlength#1#2{%
+\pssetlength\pst@dimg{#1}%
+\edef#2{\number\pst@dimg sp}}
+\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor}
+\def\pst@coor{0 0 }
+\def\pst@getcoors#1#2{%
+\def\pst@aftercoors{\addto@pscode{#1 \pst@coors }#2}%
+\def\pst@coors{}%
+\pst@@getcoors}
+\def\pst@@getcoors(#1){%
+\pst@@getcoor{#1}%
+\edef\pst@coors{\pst@coor\pst@coors}%
+\@ifnextchar({\pst@@getcoors}{\pst@aftercoors}}
+\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle}
+\def\pst@angle{0 }
+\def\cartesian@coor#1,#2,#3\@nil{%
+\pssetxlength\pst@dimg{#1}%
+\pssetylength\pst@dimh{#2}%
+\edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}
+\def\NormalCoor{%
+\def\pst@@getcoor##1{\pst@expandafter\cartesian@coor{##1},\relax,\@nil}%
+\def\pst@@getangle##1{%
+\pst@checknum{##1}\pst@angle
+\edef\pst@angle{\pst@angle \pst@angleunit}}%
+\def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@cartesian}}
+\NormalCoor
+\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}}
+\def\@degrees[#1]{%
+\pst@checknum{#1}\pst@tempg
+\edef\pst@angleunit{360 \pst@tempg div mul }%
+\ignorespaces}
+\def\radians{\def\pst@angleunit{57.2956 mul }}
+\def\pst@angleunit{}
+\def\SpecialCoor{%
+\def\pst@@getcoor##1{%
+\begingroup
+\pst@activecoor
+\xdef\pst@tempg{##1}%
+\endgroup
+\expandafter\special@coor\pst@tempg||\@nil}%
+\def\pst@@getangle##1{%
+\begingroup
+\pst@activecoor
+\xdef\pst@tempg{##1}%
+\endgroup
+\expandafter\special@angle\pst@tempg\@empty)\@nil}%
+\def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}}
+\begingroup
+\catcode`\|=13
+\catcode`\;=13
+\catcode`\!=13
+\gdef\pst@activecoor{%
+\def|{\string|}%
+\def;{\string;}%
+\def!{\string!}}
+\endgroup
+\def\special@coor#1|#2|#3\@nil{%
+\ifx#3|\relax
+\mixed@coor{#1}{#2}%
+\else
+\special@@coor#1;;\@nil
+\fi}
+\def\special@@coor#1{%
+\ifcat#1a\relax
+\def\next{\node@coor#1}%
+\else
+\ifx#1[\relax
+\def\next{\Node@coor[}%
+\else
+\ifx#1!\relax
+\def\next{\raw@coor}%
+\else
+\def\next{\special@@@coor#1}%
+\fi
+\fi
+\fi
+\next}
+\def\special@@@coor#1;#2;#3\@nil{%
+\ifx#3;\relax
+\polar@coor{#1}{#2}%
+\else
+\cartesian@coor#1,\relax,\@nil
+\fi}
+\def\mixed@coor#1#2{%
+\begingroup
+\specialcoor@ii#1;;\@nil
+\let\pst@tempa\pst@coor
+\specialcoor@ii#2;;\@nil
+\xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }%
+\endgroup
+\let\pst@coor\pst@tempg}
+\def\polar@coor#1#2{%
+\pssetlength\pst@dimg{#1}%
+\pst@@getangle{#2}%
+\edef\pst@coor{\pst@number\pst@dimg \pst@angle \tx@PtoC}}
+\def\raw@coor#1;#2\@nil{%
+\edef\pst@coor{%
+#1 \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
+\def\node@coor#1\@nil{%
+\@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps
+\def\pst@coor{0 0 }}
+\def\Node@coor{\node@coor}
+\def\special@angle#1#2)#3\@nil{%
+\ifx!#1\relax
+\edef\pst@angle{#2 \pst@angleunit}%
+\else
+\ifx(#1\relax
+\pst@@getcoor{#2}%
+\edef\pst@angle{\pst@coor exch \tx@Atan}%
+\else
+\pst@checknum{#1#2}\pst@angle
+\edef\pst@angle{\pst@angle \pst@angleunit}%
+\fi
+\fi}
+\def\Cartesian{%
+\def\cartesian@coor##1,##2,##3\@nil{%
+\pssetxlength\pst@dimg{##1}%
+\pssetylength\pst@dimh{##2}%
+\edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}%
+\@ifnextchar({\Cartesian@}{}}
+\def\Cartesian@(#1,#2){%
+\pssetxlength\psxunit{#1}%
+\pssetylength\psyunit{#2}%
+\ignorespaces}
+\def\Polar{%
+\def\psput@cartesian{\psput@special}%
+\def\cartesian@coor##1,##2,##3\@nil{\polar@coor{##1}{##2}}}%
+\def\psset@origin#1{%
+\pst@@getcoor{#1}%
+\edef\psk@origin{\pst@coor \tx@NET }}
+\def\psk@origin{}
+\newif\ifswapaxes
+\def\psset@swapaxes#1{%
+\@nameuse{@pst#1}%
+\if@pst
+\def\psk@swapaxes{-90 rotate -1 1 scale }%
+\else
+\def\psk@swapaxes{}%
+\fi}
+\psset@swapaxes{false}
+\newif\ifshowpoints
+\def\psset@showpoints#1{\@nameuse{showpoints#1}}
+\psset@showpoints{false}
+\let\pst@setrepeatarrowsflag\relax
+\def\psset@border#1{%
+\pst@getlength{#1}\psk@border
+\pst@setrepeatarrowsflag}
+\psset@border{0pt}
+\def\psset@bordercolor#1{\pst@getcolor{#1}\psbordercolor}
+\psset@bordercolor{white}
+\newif\ifpsdoubleline
+\def\psset@doubleline#1{%
+\@nameuse{psdoubleline#1}%
+\pst@setrepeatarrowsflag}
+\psset@doubleline{false}
+\def\psset@doublesep#1{\def\psdoublesep{#1}}
+\psset@doublesep{1.25\pslinewidth}
+\def\psset@doublecolor#1{\pst@getcolor{#1}\psdoublecolor}
+\psset@doublecolor{white}
+\newif\ifpsshadow
+\def\psset@shadow#1{%
+\@nameuse{psshadow#1}%
+\pst@setrepeatarrowsflag}
+\psset@shadow{false}
+\def\psset@shadowsize#1{\pst@getlength{#1}\psk@shadowsize}
+\psset@shadowsize{3pt}
+\def\psset@shadowangle#1{\pst@getangle{#1}\psk@shadowangle}
+\psset@shadowangle{-45}
+\def\psset@shadowcolor#1{\pst@getcolor{#1}\psshadowcolor}
+\psset@shadowcolor{darkgray}
+\def\pst@repeatarrowsflag{\z@}
+\def\pst@setrepeatarrowsflag{%
+\edef\pst@repeatarrowsflag{%
+\ifdim\psk@border\p@>\z@ 1\else\ifpsdoubleline 1\else
+\ifpsshadow 1\else \z@\fi\fi\fi}}
+\def\psls@none{}
+\newdimen\pslinewidth
+\def\psset@linewidth#1{\pssetlength\pslinewidth{#1}}
+\psset@linewidth{.8pt}
+\def\psset@linecolor#1{\pst@getcolor{#1}\pslinecolor}
+\psset@linecolor{black}
+\def\psls@solid{0 setlinecap stroke }
+\def\pst@missing{%
+\z@
+\@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa}
+\def\psset@dash#1{%
+\pst@expandafter\psset@@dash{#1} {\pst@missing} {\pst@missing} {}\@nil
+\edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh}}
+\def\psset@@dash#1 #2 #3\@nil{%
+\pssetlength\pst@dimg{#1}%
+\pssetlength\pst@dimh{#2}}
+\psset@dash{5pt 3pt}
+\newif\ifpsdashadjust
+\def\psset@dashadjust#1{\@nameuse{psdashadjust#1}}
+\psset@dashadjust{true}
+\def\psls@dashed{%
+\ifpsdashadjust
+\psk@dash \pst@linetype\space \tx@DashLine
+\else
+[ \psk@dash ] 0 setdash stroke
+\fi}
+\def\tx@DashLine{DashLine }
+\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep}
+\psset@dotsep{3pt}
+\def\psls@dotted{%
+\ifpsdashadjust
+\psk@dotsep \pst@linetype\space \tx@DotLine
+\else
+[ 0 \psk@dotsep CLW add ] 0 setdash 1 setlinecap stroke
+\fi}
+\def\tx@DotLine{DotLine }
+\def\psset@linestyle#1{%
+\@ifundefined{psls@#1}%
+{\@pstrickserr{Line style `#1' not defined}\@eha}%
+{\edef\pslinestyle{#1}}}
+\psset@linestyle{solid}
+\def\psfs@none{}
+\def\psset@fillcolor#1{\pst@getcolor{#1}\psfillcolor}
+\psset@fillcolor{white}
+\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor fill}}
+\def\psset@hatchwidth#1{\pst@getlength{#1}\psk@hatchwidth}
+\psset@hatchwidth{.8pt}
+\def\psset@hatchsep#1{\pst@getlength{#1}\psk@hatchsep}
+\psset@hatchsep{4pt}
+\def\psset@hatchcolor#1{\pst@getcolor{#1}\pshatchcolor}
+\psset@hatchcolor{black}
+\def\psset@hatchangle#1{\pst@getangle{#1}\psk@hatchangle}
+\psset@hatchangle{45}
+\def\pst@linefill{%
+\psk@hatchangle rotate
+\psk@hatchwidth SLW
+\pst@usecolor\pshatchcolor
+\psk@hatchsep \tx@LineFill}
+\def\psfs@vlines{\pst@fill\pst@linefill}
+\@namedef{psfs@vlines*}{\psfs@solid \psfs@vlines}
+\def\psfs@hlines{\pst@fill{90 rotate \pst@linefill}}
+\@namedef{psfs@hlines*}{\psfs@solid \psfs@hlines}
+\def\psfs@crosshatch{\psfs@vlines \psfs@hlines}
+\@namedef{psfs@crosshatch*}{\psfs@solid \psfs@vlines \psfs@hlines}
+\def\tx@LineFill{LineFill }
+\def\psset@fillstyle#1{%
+\edef\pst@tempg{#1}\def\pst@temph{none}%
+\ifx\pst@tempg\pst@temph
+\let\psk@fillstyle\relax
+\else
+\@ifundefined{psfs@#1}%
+{\@pstrickserr{Undefined fill style: `#1'}\@eha}%
+{\edef\psk@fillstyle{\expandafter\noexpand\csname psfs@#1\endcsname}}%
+\fi}
+\def\psset@addfillstyle#1{%
+\@ifundefined{psfs@#1}%
+{\@pstrickserr{Undefined fill style: `#1'}\@eha}%
+{\edef\psk@fillstyle{%
+\expandafter\noexpand\psk@fillstyle
+\expandafter\noexpand\csname psfs@#1\endcsname}}}
+\psset@fillstyle{none}
+\def\psset@arrows#1{%
+\begingroup
+\pst@activearrows
+\xdef\pst@tempg{#1}%
+\endgroup
+\expandafter\psset@@arrows\pst@tempg\@empty-\@empty\@nil
+\if@pst\else
+\@pstrickserr{Bad arrows specification: #1}\@ehpa
+\fi}
+\def\psset@@arrows#1-#2\@empty#3\@nil{%
+\@psttrue
+\def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}%
+\expandafter\next\pst@arrowtable,#1-#1,\@nil
+\@ifundefined{psas@\pst@tempg}%
+{\@pstfalse\def\psk@arrowA{}}%
+{\let\psk@arrowA\pst@tempg}%
+\@ifundefined{psas@#2}%
+{\@pstfalse\def\psk@arrowB{}}%
+{\def\psk@arrowB{#2}}}
+\def\psk@arrowA{}
+\def\psk@arrowB{}
+\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-]}
+\begingroup
+\catcode`\<=13
+\catcode`\>=13
+\catcode`\|=13
+\gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
+\endgroup
+\def\tx@BeginArrow{BeginArrow }
+\def\tx@EndArrow{EndArrow }
+\def\psset@arrowscale#1{\pst@getscale{#1}\psk@arrowscale}
+\psset@arrowscale{1}
+\def\psset@arrowsize#1{%
+\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
+\edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}}
+\psset@arrowsize{1.5pt 2}
+\def\psset@arrowlength#1{\pst@checknum{#1}\psk@arrowlength}
+\psset@arrowlength{1.4}
+\def\psset@arrowinset#1{\pst@checknum{#1}\psk@arrowinset}%
+\psset@arrowinset{.4}
+\def\tx@Arrow{Arrow }
+\@namedef{psas@>}{%
+false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+\@namedef{psas@>>}{%
+false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+0 h T
+gsave
+newpath
+false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+CP
+grestore
+CP newpath moveto
+2 copy
+L
+stroke
+moveto}
+\@namedef{psas@<}{%
+true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+\@namedef{psas@<<}{%
+true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+CP newpath moveto 0 a neg L stroke 0 h neg T
+false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+\def\psset@tbarsize#1{%
+\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
+\edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}}
+\psset@tbarsize{2pt 5}
+\def\tx@Tbar{Tbar }
+\@namedef{psas@|}{\psk@tbarsize \tx@Tbar}
+\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar}
+\@namedef{psas@>|}{%
+\psk@tbarsize \tx@Tbar
+0 CLW 2 div T
+newpath
+false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+\@namedef{psas@>|*}{%
+0 CLW -2 div T
+\psk@tbarsize \tx@Tbar
+0 CLW 2 div T
+newpath
+false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|}
+\def\psset@bracketlength#1{\pst@checknum{#1}\psk@bracketlength}
+\psset@bracketlength{.15}
+\def\tx@Bracket{Bracket }
+\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
+\def\psset@rbracketlength#1{\pst@checknum{#1}\psk@rbracketlength}
+\psset@rbracketlength{.15}
+\def\tx@RoundBracket{RoundBracket }
+\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket}
+\def\psas@c{1 \psas@@c}
+\def\psas@cc{0 CLW 2 div T 1 \psas@@c}
+\def\psas@C{2 \psas@@c}
+\def\psas@@c{%
+setlinecap
+0 0 moveto
+0 CLW 2 div L
+stroke
+0 0 moveto}
+\def\psas@{}
+\psset@arrows{-}
+\def\tx@SD{SD }
+\def\tx@EndDot{EndDot }
+\def\psas@oo{{\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot}
+\def\psas@o{{\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot}
+\@namedef{psas@**}{{false} true \psk@dotsize \tx@EndDot}
+\@namedef{psas@*}{{false} false \psk@dotsize \tx@EndDot}
+\def\pst@par{}
+\def\addto@par#1{%
+\ifx\pst@par\@empty
+\def\pst@par{#1}%
+\else
+\expandafter\def\expandafter\pst@par\expandafter{\pst@par,#1}%
+\fi}
+\def\addbefore@par#1{%
+\ifx\pst@par\@empty
+\def\pst@par{#1}%
+\else
+\toks@{#1}%
+\pst@toks\expandafter{\pst@par}%
+\edef\pst@par{\the\toks@,\the\pst@toks}%
+\fi}
+\def\use@par{%
+\ifx\pst@par\@empty\else
+\expandafter\@psset\pst@par,\@nil
+\def\pst@par{}%
+\fi}
+\def\pst@object#1{%
+\pst@ifstar{%
+\@ifnextchar[%
+{\pst@@object{#1}}%
+{\def\pst@par{}\@nameuse{#1@i}}}}
+\def\pst@@object#1[#2]{%
+\def\pst@par{#2}%
+\@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}}
+\def\newpsobject#1#2#3{%
+\@ifundefined{#2@i}%
+{\@pstrickserr{Graphics object `#2' not defined}\@eha}{%
+\@namedef{#1}{\pst@object{#1}}%
+\@namedef{#1@i}{\addbefore@par{#3}\@nameuse{#2@i}}}%
+\ignorespaces}
+\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
+\def\pst@@getarrows#1#2{\addto@par{arrows=#2}#1}
+\def\begin@ClosedObj{%
+\leavevmode
+\pst@killglue
+\begingroup
+\use@par
+\solid@star
+\ifpsdoubleline \pst@setdoublesep \fi
+\init@pscode}
+\def\end@ClosedObj{%
+\ifpsshadow \pst@closedshadow \fi
+\ifdim\psk@border\p@>\z@ \pst@addborder \fi
+\psk@fillstyle
+\pst@stroke
+\ifpsdoubleline \pst@doublestroke \fi
+\ifshowpoints
+\addto@pscode{Points aload length 2 div cvi /N ED \psdots@iii}%
+\fi
+\use@pscode
+\endgroup
+\ignorespaces}
+\def\begin@OpenObj{%
+\begin@ClosedObj
+\let\pst@linetype\pst@arrowtype
+\pst@addarrowdef}
+\def\begin@AltOpenObj{%
+\begin@ClosedObj
+\def\pst@repeatarrowsflag{\z@}%
+\def\pst@linetype{0}}
+\def\end@OpenObj{%
+\ifpsshadow \pst@openshadow \fi
+\ifdim\psk@border\p@>\z@ \pst@addborder \fi
+\psk@fillstyle
+\pst@stroke
+\ifpsdoubleline \pst@doublestroke \fi
+\ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi
+\ifshowpoints \pst@OpenShowPoints \fi
+\use@pscode
+\endgroup
+\ignorespaces}
+\def\begin@SpecialObj{%
+\leavevmode
+\pst@killglue
+\begingroup
+\use@par
+\init@pscode}
+\def\end@SpecialObj{%
+\use@pscode
+\endgroup
+\ignorespaces}
+\def\pst@code{}%
+\def\init@pscode{%
+\addto@pscode{%
+\pst@number\pslinewidth SLW
+\pst@usecolor\pslinecolor}}
+\def\addto@pscode#1{\xdef\pst@code{\pst@code#1\space}}
+\def\use@pscode{%
+\pstverb{%
+\pst@dict
+\tx@STP
+\pst@newpath
+\psk@origin
+\psk@swapaxes
+\pst@code
+end}%
+\gdef\pst@code{}}
+\def\pst@newpath{newpath }
+\def\pst@@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@@killglue\fi}
+\def\KillGlue{\let\pst@killglue\pst@@killglue}
+\def\DontKillGlue{\let\pst@killglue\relax}
+\DontKillGlue
+\def\solid@star{%
+\if@star
+\pslinewidth=\z@
+\psdoublelinefalse
+\def\pslinestyle{none}%
+\def\psk@fillstyle{\psfs@solid}%
+\let\psfillcolor\pslinecolor
+\fi}
+\def\pst@setdoublesep{%
+\pst@getlength\psdoublesep\psdoublesep
+\pslinewidth=2\pslinewidth
+\advance\pslinewidth\psdoublesep\p@
+\let\pst@setdoublesep\relax}
+\def\tx@Shadow{Shadow }
+\def\pst@closedshadow{%
+\addto@pscode{%
+gsave
+\psk@shadowsize \psk@shadowangle \tx@PtoC
+\tx@Shadow
+\pst@usecolor\psshadowcolor
+gsave fill grestore
+stroke
+grestore
+gsave
+\pst@usecolor\psfillcolor
+gsave fill grestore
+stroke
+grestore}}
+\def\pst@openshadow{%
+\addto@pscode{%
+gsave
+\psk@shadowsize \psk@shadowangle \tx@PtoC
+\tx@Shadow
+\pst@usecolor\psshadowcolor
+\ifx\psk@fillstyle\relax\else
+gsave fill grestore
+\fi
+stroke}%
+\pst@repeatarrows
+\addto@pscode{grestore}
+\ifx\psk@fillstyle\relax\else
+\addto@pscode{%
+gsave
+\pst@usecolor\psfillcolor
+gsave fill grestore
+stroke
+grestore}
+\fi}
+\def\pst@addborder{%
+\addto@pscode{%
+gsave
+\psk@border 2 mul
+CLW add SLW
+\pst@usecolor\psbordercolor
+stroke
+grestore}}
+\def\pst@stroke{%
+\ifx\pslinestyle\@none\else
+\addto@pscode{%
+gsave
+\pst@number\pslinewidth SLW
+\pst@usecolor\pslinecolor
+\@nameuse{psls@\pslinestyle}
+grestore}%
+\fi}
+\def\pst@fill#1{\addto@pscode{gsave #1 grestore}}%
+\def\pst@doublestroke{%
+\addto@pscode{%
+gsave
+\psdoublesep SLW
+\pst@usecolor\psdoublecolor
+stroke
+grestore}}
+\def\pst@arrowtype{%
+\ifx\psk@arrowB\@empty 0 \else -2 \fi
+\ifx\psk@arrowA\@empty 0 \else -1 \fi
+add}
+\def\pst@addarrowdef{%
+\addto@pscode{%
+/ArrowA {
+\ifx\psk@arrowA\@empty
+\pst@oplineto
+\else
+\pst@arrowdef{A}
+moveto
+\fi
+} def
+/ArrowB {
+\ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi
+} def}}
+\def\pst@arrowdef#1{%
+\ifnum\pst@repeatarrowsflag>\z@
+/Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
+\fi
+\tx@BeginArrow
+\psk@arrowscale
+\@nameuse{psas@\@nameuse{psk@arrow#1}}
+\tx@EndArrow}
+\def\pst@repeatarrows{%
+\addto@pscode{%
+gsave
+\ifx\psk@arrowA\@empty\else
+ArrowAc ArrowA pop pop
+\fi
+\ifx\psk@arrowB\@empty\else
+ArrowBc ArrowB pop pop pop pop
+\fi
+grestore}}
+\def\pst@OpenShowPoints{%
+\addto@pscode{%
+gsave
+\psk@dotsize
+\@nameuse{psds@\psk@dotstyle}
+newpath
+Points aload length 2 div 2 sub cvi /N ED
+N 0 ge
+{ \ifx\psk@arrowA\@empty
+Dot
+\else
+pop pop
+\fi
+N { Dot } repeat
+\ifx\psk@arrowB\@empty
+Dot
+\else
+pop pop
+\fi }
+{ N 2 mul { pop } repeat }
+ifelse
+grestore}}
+\def\pscustom{\pst@object{pscustom}}
+\long\def\pscustom@i#1{%
+\begin@SpecialObj
+\solid@star
+\let\pst@ifcustom\iftrue
+\let\begin@ClosedObj\begin@CustomObj
+\let\end@ClosedObj\endgroup
+\def\begin@OpenObj{\begin@CustomObj\pst@addarrowdef}%
+\let\end@OpenObj\endgroup
+\let\begin@AltOpenObj\begin@CustomObj
+\def\begin@SpecialObj{%
+\begingroup
+\pst@misplaced{special graphics object}%
+\def\addto@pscode####1{}
+\let\end@SpecialObj\endgroup}%
+\def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}%
+\def\psclip##1{\pst@misplaced\psclip}%
+\def\pst@repeatarrowsflag{\z@}%
+\let\pst@setrepeatarrowsflag\relax
+\showpointsfalse
+\let\showpointstrue\relax
+\def\pst@linetype{\pslinetype}%
+\let\psset@liftpen\psset@@liftpen
+\psset@liftpen{\z@}%
+\def\pst@cp{/currentpoint load stopped pop }%
+\def\pst@oplineto{/lineto load stopped { moveto } if }%
+\def\pst@optcp##1##2{%
+\ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}%
+\let\caddto@pscode\addto@pscode
+\def\cuse@par##1{{\use@par##1}}%
+\the\pst@customdefs
+\setbox\pst@hbox=\hbox{#1}%
+\psk@fillstyle
+\pst@stroke
+\end@SpecialObj}
+\def\begin@CustomObj{%
+\begingroup
+\use@par
+\addto@pscode{%
+\pst@number\pslinewidth SLW
+\pst@usecolor\pslinecolor}}
+\def\pst@oplineto{moveto }
+\def\pst@cp{}
+\def\pst@optcp#1#2{}
+\def\psset@liftpen#1{}
+\def\psset@@liftpen#1{%
+\ifcase#1\relax
+\def\psk@liftpen{\z@}%
+\def\pst@cp{/currentpoint load stopped pop }%
+\def\pst@oplineto{/lineto load stopped { moveto } if }%
+\or
+\def\psk@liftpen{1}%
+\def\pst@cp{}%
+\def\pst@oplineto{/lineto load stopped { moveto } if }%
+\or
+\def\psk@liftpen{2}%
+\def\pst@cp{}%
+\def\pst@oplineto{moveto }%
+\fi}
+\psset@liftpen{0}
+\def\psk@liftpen{-1}
+\def\psset@linetype#1{%
+\pst@getint{#1}\pslinetype
+\ifnum\pst@dimg<-3
+\@pstrickserr{linetype must be greater than -3}\@ehpa
+\def\pslinetype{0}%
+\fi}
+\psset@linetype{0}
+\def\caddto@pscode#1{%
+\@pstrickserr{Command can only be used in \string\pscustom}\@ehpa}
+\let\cuse@par\caddto@pscode
+\def\tx@MSave{%
+/msavemtrx
+[ tx@Dict /msavemtrx known { msavemtrx aload pop } if CM ]
+def }
+\def\tx@MRestore{%
+tx@Dict /msavemtrx known { length 0 gt } { false } ifelse
+{ /msavematrx [ msavematrx aload pop setmatrix ] def }
+if }
+\newtoks\pst@customdefs
+\pst@customdefs{%
+\def\newpath{\addto@pscode{newpath}}%
+\def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}%
+\def\closepath{\addto@pscode{closepath}}%
+\def\gsave{\begingroup\addto@pscode{gsave}}%
+\def\grestore{\endgroup\addto@pscode{grestore}}%
+\def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}%
+\def\rotate#1{\pst@@getangle{#1}\addto@pscode{\pst@angle rotate}}%
+\def\scale#1{\pst@getscale{#1}\pst@tempg\addto@pscode{\pst@tempg}}%
+\def\msave{\addto@pscode{\tx@MSave}}%
+\def\mrestore{\addto@pscode{\tx@MRestore}}%
+\def\swapaxes{\addto@pscode{-90 rotate -1 1 scale}}%
+\def\stroke{\pst@object{stroke}}%
+\def\fill{\pst@object{fill}}%
+\def\openshadow{\pst@object{openshadow}}%
+\def\closedshadow{\pst@object{closedshadow}}%
+\def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor tx@Shadow}}%
+\def\lineto{\pst@onecoor{lineto}}%
+\def\rlineto{\pst@onecoor{rlineto}}%
+\def\curveto{\pst@threecoor{curveto}}%
+\def\rcurveto{\pst@threecoor{rcurveto}}%
+\def\code#1{\addto@pscode{#1}}%
+\def\coor(#1){\pst@@getcoor{#1}\addto@pscode\pst@coor\@ifnextchar({\coor}{}}%
+\def\rcoor{\pst@getcoors{}{}}%
+\def\dim#1{\pssetlength\pst@dimg{#1}\addto@pscode{\pst@number\pst@dimg}}%
+\def\setcolor#1{%
+\@ifundefined{color@#1}{}{\addto@pscode{\use@color{#1}}}}%
+\def\arrows#1{{\psset@arrows{#1}\pst@addarrowdef}}%
+\let\file\pst@rawfile
+} % END \pst@customdefs
+\def\closedshadow@i{\cuse@par\pst@closedshadow}
+\def\openshadow@i{\cuse@par\pst@openshadow}
+\def\stroke@i{\cuse@par\pst@stroke}%
+\def\fill@i{\cuse@par\psk@fillstyle}%
+\def\pst@onecoor#1(#2){%
+\pst@@getcoor{#2}%
+\addto@pscode{\pst@coor #1}}
+\def\pst@threecoor#1(#2)#3(#4)#5(#6){%
+\begingroup
+\pst@getcoor{#2}\pst@tempa
+\pst@getcoor{#4}\pst@tempb
+\pst@getcoor{#6}\pst@tembc
+\addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}%
+\endgroup}
+\def\pst@rawfile#1{%
+\begingroup
+\def\do##1{\catcode`##1=12\relax}"
+\dospecials
+\catcode`\%=14
+\pst@@rawfile{#1}%
+\endgroup}
+\def\pst@@rawfile#1{%
+\immediate\openin1 #1
+\ifeof1
+\@pstrickserr{File `#1' not found}\@ehpa
+\else
+\immediate\read1 to \pst@tempg
+\loop
+\ifeof1 \@pstfalse\else\@psttrue\fi
+\if@pst
+\addto@pscode\pst@tempg
+\immediate\read1 to \pst@tempg
+\repeat
+\fi
+\immediate\closein1\relax}
+\def\tx@NArray{NArray }
+\def\tx@NArray{NArray }
+\def\tx@Line{Line }
+\def\tx@Arcto{Arcto }
+\def\tx@CheckClosed{CheckClosed }
+\def\tx@Polygon{Polygon }
+\def\psset@gangle#1{\pst@getangle{#1}\psk@gangle}
+\psset@gangle{0}
+\def\tx@Diamond{Diamond }
+\def\psdiamond{\pst@object{psdiamond}}
+\def\psdiamond@i(#1){%
+\@ifnextchar({\psdiamond@ii(#1)}{\psdiamond@ii(0,0)(#1)}}
+\def\psdiamond@ii(#1)(#2){%
+\begin@ClosedObj
+\pst@getcoor{#1}\pst@tempa
+\pst@getcoor{#2}\pst@tempb
+\addto@pscode{%
+\psline@iii
+pop
+\psk@dimen
+\pst@tempb
+\psk@gangle
+\pst@tempa
+\tx@Diamond}%
+\def\pst@linetype{4}%
+\end@ClosedObj}
+\def\tx@Triangle{Triangle }
+\def\pstriangle{\pst@object{pstriangle}}
+\def\pstriangle@i(#1){%
+\@ifnextchar({\pstriangle@ii(#1)}{\pstriangle@ii(0,0)(#1)}}
+\def\pstriangle@ii(#1)(#2){%
+\begin@ClosedObj
+\pst@getcoor{#1}\pst@tempa
+\pst@getcoor{#2}\pst@tempb
+\addto@pscode{%
+\psline@iii
+pop
+\psk@dimen
+\pst@tempb
+\psk@gangle
+\pst@tempa
+\tx@Triangle}%
+\def\pst@linetype{2}%
+\end@ClosedObj}
+\def\tx@CCA{CCA }
+\def\tx@CCA{CCA }
+\def\tx@CC{CC }
+\def\tx@IC{IC }
+\def\tx@BOC{BOC }
+\def\tx@NC{NC }
+\def\tx@EOC{EOC }
+\def\tx@BAC{BAC }
+\def\tx@NAC{NAC }
+\def\tx@EAC{EAC }
+\def\tx@OpenCurve{OpenCurve }
+\def\tx@AltCurve{AltCurve }
+\def\tx@ClosedCurve{ClosedCurve }
+\def\psset@curvature#1{%
+\edef\pst@tempg{#1 }%
+\expandafter\psset@@curvature\pst@tempg * * * \@nil}
+\def\psset@@curvature#1 #2 #3 #4\@nil{%
+\pst@checknum{#1}\pst@tempg
+\pst@checknum{#2}\pst@temph
+\pst@checknum{#3}\pst@tempi
+\edef\psk@curvature{\pst@tempg \pst@temph \pst@tempi}}
+\psset@curvature{1 .1 0}
+\def\pscurve{\pst@object{pscurve}}
+\def\pscurve@i{%
+\pst@getarrows{%
+\begin@OpenObj
+\pst@getcoors[\pscurve@ii}}
+\def\pscurve@ii{%
+\addto@pscode{%
+\pst@cp
+\psk@curvature\space /c ED /b ED /a ED
+\ifshowpoints true \else false \fi
+\tx@OpenCurve}%
+\end@OpenObj}
+\def\psecurve{\pst@object{psecurve}}
+\def\psecurve@i{%
+\pst@getarrows{%
+\begin@OpenObj
+\pst@getcoors[\psecurve@ii}}
+\def\psecurve@ii{%
+\addto@pscode{%
+\psk@curvature\space /c ED /b ED /a ED
+\ifshowpoints true \else false \fi
+\tx@AltCurve}%
+\end@OpenObj}
+\def\psccurve{\pst@object{psccurve}}
+\def\psccurve@i{%
+\begin@ClosedObj
+\pst@getcoors[\psccurve@ii}
+\def\psccurve@ii{%
+\addto@pscode{%
+\psk@curvature\space /c ED /b ED /a ED
+\ifshowpoints true \else false \fi
+\tx@ClosedCurve}%
+\def\pst@linetype{1}%
+\end@ClosedObj}
+\def\psset@dotsize#1{%
+\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
+\edef\psk@@dotsize{\pst@number\pst@dimg}%
+\let\psk@@@dotsize\pst@tempg
+\edef\psk@dotsize{%
+/DS \psk@@dotsize \psk@@@dotsize CLW mul add 2 div def }}
+\psset@dotsize{2pt 2}
+\def\psset@dotscale#1{%
+\pst@getscale{#1}\psk@dotscale
+\ifx\psk@dotscale\@empty
+\def\psk@xdotscale{1 }%
+\def\psk@ydotscale{1 }%
+\else
+\let\psk@xdotscale\pst@tempg
+\let\psk@ydotscale\pst@temph
+\fi}
+\psset@dotscale{1}
+\def\pst@Getangle#1#2{%
+\pst@getangle{#1}\pst@tempg
+\def\pst@temph{0. }%
+\ifx\pst@tempg\pst@temph
+\def#2{}%
+\else
+\edef#2{\pst@tempg\space rotate }%
+\fi}
+\def\psset@dotangle#1{%
+\pst@getangle{#1}\psk@@dotangle
+\ifdim\psk@@dotangle\p@=\z@
+\let\psk@dotangle\@empty
+\else
+\edef\psk@dotangle{\psk@@dotangle rotate }
+\fi}
+\psset@dotangle{0}
+\def\pst@getdotsize{%
+\pst@dimg=\psk@@@dotsize\pslinewidth
+\advance\pst@dimg\psk@@dotsize\p@
+\pst@dimh=\psk@ydotscale\pst@dimg
+\pst@dimg=\psk@xdotscale\pst@dimg
+\divide\pst@dimh 2
+\divide\pst@dimg 2\relax}
+\def\psdot{\pst@object{psdot}}
+\def\psdot@i{\@ifnextchar({\psdot@ii}{\psdot@ii(\z@,\z@)}}
+\def\psdot@ii(#1){%
+\begin@SpecialObj
+\pst@@getcoor{#1}%
+\addto@pscode{%
+\psk@dotsize
+\@nameuse{psds@\psk@dotstyle}%
+\pst@coor Dot}%
+\end@SpecialObj}
+\def\psdots{\pst@object{psdots}}
+\def\psdots@i{%
+\begin@SpecialObj
+\pst@getcoors[\psdots@ii}
+\def\psdots@ii{%
+\addto@pscode{false \tx@NArray \psdots@iii}%
+\end@SpecialObj}
+\def\psdots@iii{%
+\psk@dotsize
+\@nameuse{psds@\psk@dotstyle}
+newpath
+n { transform floor .5 add exch floor .5 add exch itransform Dot } repeat}
+\def\tx@SQ{SQ }
+\def\tx@ST{ST }
+\def\tx@SP{SP }
+\def\pst@gdot#1{/Dot { gsave T \psk@dotangle \psk@dotscale #1 grestore } def }
+\@namedef{psds@*}{\pst@gdot{0 0 DS \tx@SD}}
+\@namedef{psds@o}{%
+/r2 DS CLW sub def
+\pst@gdot{0 0 DS \tx@SD \pst@usecolor\psfillcolor 0 0 r2 \tx@SD}}
+\@namedef{psds@square*}{%
+/r1 DS .886 mul def
+\pst@gdot{r1 \tx@SQ}}
+\@namedef{psds@square}{%
+/r1 DS .886 mul def /r2 r1 CLW sub def
+\pst@gdot{r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ}}
+\@namedef{psds@triangle*}{%
+/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
+\pst@gdot{x1 y1 \tx@ST}}
+\@namedef{psds@triangle}{%
+/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
+/y2 y1 CLW add def /x2 y2 1.732 mul neg def
+\pst@gdot{x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST}}
+\@namedef{psds@pentagon*}{%
+/r1 DS 1.149 mul def
+\pst@gdot{r1 \tx@SP}}
+\@namedef{psds@pentagon}{%
+DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED
+\pst@gdot{r1 \tx@SP \pst@usecolor\psfillcolor r2 \tx@SP}}
+\@namedef{psds@+}{%
+/DS DS 1.253 mul def
+\pst@gdot{DS 0 moveto DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke}}
+\@namedef{psds@|}{%
+\psk@tbarsize CLW mul add 2 div /DS ED
+\pst@gdot{0 DS moveto 0 DS neg L stroke}}
+\def\psset@dotstyle#1{%
+\@ifundefined{psds@#1}%
+{\@pstrickserr{Dot style `#1' not defined}\@eha}%
+{\edef\psk@dotstyle{#1}}}
+\psset@dotstyle{*}
+\def\tx@FontDot{FontDot }
+\def\newpsfontdot#1[#2]#3#4{%
+\@namedef{psds@#1}{%
+/#3 \psk@@dotangle [#2] \tx@FontDot
+/Dot { moveto #4 show } bind def }}
+\def\newpsfontdotH#1[#2]#3#4#5{%
+\@namedef{psds@#1}{%
+/#3 \psk@@dotangle [#2] \tx@FontDot
+/Dot {
+moveto
+\iftrue
+gsave \pst@usecolor\psfillcolor #5 show grestore
+\fi
+#4 show
+} bind def }}
+\pstheader{pst-dots.pro}
+\newpsfontdot{*}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
+\newpsfontdotH{o}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
+\newpsfontdotH{Bo}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
+\newpsfontdotH{triangle}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
+\newpsfontdotH{Btriangle}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
+\newpsfontdot{triangle*}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
+\newpsfontdotH{square}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
+\newpsfontdotH{Bsquare}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
+\newpsfontdot{square*}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
+\newpsfontdotH{pentagon}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
+\newpsfontdotH{Bpentagon}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
+\newpsfontdot{pentagon*}%
+[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
+\newpsfontdot{diamond*}%
+[1.9 0.0 0.0 1.9 -0.4598 -0.70775]{Symbol}{<E0>}
+\newpsfontdot{diamond}%
+[2.3 0.0 0.0 2.3 -0.8533 -0.5336]{Symbol}{<A8>}
+\newpsfontdot{oplus}%
+[1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]{Symbol}{<C5>}
+\newpsfontdot{otimes}%
+[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{Symbol}{<C4>}
+\newpsfontdot{x}%
+[1.8 0.0 0.0 1.8 -0.495 -0.4788]{Symbol}{<B4>}
+\newpsfontdot{+}%
+[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{Times-Roman}{<2B>}
+\newpsfontdot{asterisk}%
+[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{Times-Roman}{<2A>}
+\newpsfontdot{B+}%
+[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{Times-Bold}{<2B>}
+\newpsfontdot{Basterisk}%
+[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{Times-Bold}{<2A>}
+\newpsfontdot{|}%
+[1.98413 0.0 0.0 1.98413 -0.258929 -0.712302]{Helvetica}{(|)}
+\newpsfontdot{B|}%
+[1.98413 0.0 0.0 1.98413 -0.277778 -0.712302]{Helvetica-Bold}{(|)}
+\iffalse
+\newpsfontdot{*}%
+[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{Symbol}{<B7>}
+\newpsfontdot{o}%
+[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{Symbol}{<B0>}
+\newpsfontdot{Bo}%
+[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{Times-Bold}{<CA>}
+\fi
+\newdimen\pslinearc
+\def\psset@linearc#1{\pssetlength\pslinearc{#1}}
+\psset@linearc{0pt}
+\def\psline{\pst@object{psline}}
+\def\psline@i{%
+\pst@getarrows{%
+\begin@OpenObj
+\pst@getcoors[\psline@ii}}
+\def\psline@ii{%
+\addto@pscode{\pst@cp \psline@iii \tx@Line}%
+\end@OpenObj}
+\def\psline@iii{%
+\ifdim\pslinearc>\z@
+/r \pst@number\pslinearc def
+/Lineto { \tx@Arcto } def
+\else
+/Lineto /lineto load def
+\fi
+\ifshowpoints true \else false \fi}
+\def\qline(#1)(#2){%
+\def\pst@par{}%
+\begin@SpecialObj
+\def\pst@linetype{0}%
+\pst@getcoor{#1}\pst@tempa
+\pst@@getcoor{#2}%
+\addto@pscode{%
+\pst@tempa moveto \pst@coor L
+\@nameuse{psls@\pslinestyle}}%
+\end@SpecialObj}
+\def\pspolygon{\pst@object{pspolygon}}
+\def\pspolygon@i{%
+\begin@ClosedObj
+\def\pst@cp{}%
+\pst@getcoors[\pspolygon@ii}
+\def\pspolygon@ii{%
+\addto@pscode{\psline@iii \tx@Polygon}%
+\def\pst@linetype{1}%
+\end@ClosedObj}
+\def\psset@framearc#1{\pst@checknum{#1}\psk@framearc}
+\psset@framearc{0}
+\def\psset@cornersize#1{%
+\pst@expandafter\psset@@cornersize{#1}\@nil}
+\def\psset@@cornersize#1#2\@nil{%
+\if #1a\relax
+\def\psk@cornersize{\pst@number\pslinearc false }%
+\else
+\def\psk@cornersize{\psk@framearc true }%
+\fi}
+\psset@cornersize{relative}
+\def\tx@Rect{Rect }
+\def\tx@OvalFrame{OvalFrame }
+\def\tx@Frame{Frame }
+\def\psset@dimen#1{%
+\pst@expandafter\psset@@dimen{#1}\@nil}
+\def\psset@@dimen#1#2\@nil{%
+\if #1o\relax
+\def\psk@dimen{.5 }%
+\else
+\if #1m\relax
+\def\psk@dimen{0 }%
+\else
+\if #1i\relax
+\def\psk@dimen{-.5 }%
+\fi
+\fi
+\fi}
+\psset@dimen{outer}
+\def\psframe{\pst@object{psframe}}
+\def\psframe@i(#1){%
+\@ifnextchar({\psframe@ii(#1)}{\psframe@ii(0,0)(#1)}}
+\def\psframe@ii(#1)(#2){%
+\begin@ClosedObj
+\pst@getcoor{#1}\pst@tempa
+\pst@@getcoor{#2}%
+\addto@pscode{\psk@cornersize \pst@tempa \pst@coor \psk@dimen \tx@Frame}%
+\def\pst@linetype{2}%
+\showpointsfalse
+\end@ClosedObj}
+\def\tx@BezierNArray{BezierNArray }
+\def\tx@OpenBezier{OpenBezier }
+\def\tx@ClosedBezier{ClosedBezier }
+\def\tx@BezierShowPoints{BezierShowPoints }
+\def\psbezier{\pst@object{psbezier}}
+\def\psbezier@i{%
+\pst@getarrows{%
+\begin@OpenObj
+\pst@getcoors[\psbezier@ii}}
+\def\psbezier@ii{%
+\addto@pscode{%
+\pst@cp
+\ifshowpoints true \else false \fi
+\tx@OpenBezier
+\ifshowpoints \tx@BezierShowPoints \fi}%
+\end@OpenObj}
+\def\pscbezier{\pst@object{pscbezier}}
+\def\pscbezier@i{%
+\begin@ClosedObj
+\pst@getcoors[\pscbezier@ii}
+\def\pscbezier@ii{%
+\addto@pscode{%
+\ifshowpoints true \else false \fi
+\tx@ClosedBezier
+\ifshowpoints \tx@BezierShowPoints \fi}%
+\chardef\pst@linetype=1
+\end@ClosedObj}
+\def\tx@Parab{Parab }
+\def\parabola{\pst@object{parabola}}
+\def\parabola@i{\pst@getarrows\parabola@ii}
+\def\parabola@ii#1(#2)#3(#4){%
+\begin@OpenObj
+\pst@getcoor{#2}\pst@tempa
+\pst@@getcoor{#4}%
+\addto@pscode{\pst@tempa \pst@coor \tx@Parab}%
+\end@OpenObj}
+\def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth}
+\psset@gridwidth{.8pt}
+\def\psset@griddots#1{%
+\pst@cntg=#1\relax
+\edef\psk@griddots{\the\pst@cntg}}
+\psset@griddots{0}
+\def\psset@gridcolor#1{\pst@getcolor{#1}\psgridcolor}
+\psset@gridcolor{black}
+\def\psset@subgridwidth#1{\pst@getlength{#1}\psk@subgridwidth}
+\psset@subgridwidth{.4pt}
+\def\psset@subgridcolor#1{\pst@getcolor{#1}\pssubgridcolor}
+\psset@subgridcolor{gray}
+\def\psset@subgriddots#1{%
+\pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}}
+\psset@subgriddots{0}
+\def\psset@subgriddiv#1{%
+\pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}}
+\psset@subgriddiv{5}
+\def\psset@gridlabels#1{\pst@getlength{#1}\psk@gridlabels}
+\psset@gridlabels{10pt}
+\def\psset@gridlabelcolor#1{\pst@getcolor{#1}\psgridlabelcolor}
+\psset@gridlabelcolor{black}
+\def\tx@Grid{Grid }
+\def\psgrid{\pst@object{psgrid}}
+\def\psgrid@i{\@ifnextchar(%
+{\psgrid@ii}{\expandafter\psgrid@iv\pic@coor}}
+\def\psgrid@ii(#1){\@ifnextchar(%
+{\psgrid@iii(#1)}{\psgrid@iv(0,0)(0,0)(#1)}}
+\def\psgrid@iii(#1)(#2){\@ifnextchar(%
+{\psgrid@iv(#1)(#2)}{\psgrid@iv(#1)(#1)(#2)}}
+\def\psgrid@iv(#1)(#2)(#3){%
+\begin@SpecialObj
+\pst@getcoor{#1}\pst@tempa
+\pst@getcoor{#2}\pst@tempb
+\pst@@getcoor{#3}%
+\ifnum\psk@subgriddiv>1
+\addto@pscode{gsave
+\psk@subgridwidth SLW \pst@usecolor\pssubgridcolor
+\pst@tempb \pst@coor \pst@tempa
+\pst@number\psxunit \pst@number\psyunit
+\psk@subgriddiv\space \psk@subgriddots\space
+{} 0 \tx@Grid grestore}%
+\fi
+\addto@pscode{gsave
+\psk@gridwidth SLW \pst@usecolor\psgridcolor
+\pst@tempb \pst@coor \pst@tempa
+\pst@number\psxunit \pst@number\psyunit
+1 \psk@griddots\space { \pst@usecolor\psgridlabelcolor }
+\psk@gridlabels \tx@Grid grestore}%
+\end@SpecialObj}
+\newif\ifpsmathbox
+\psmathboxtrue
+\def\pst@mathflag{\z@}
+\newtoks\everypsbox
+\let\pst@thisbox\relax
+\long\def\pst@makenotverbbox#1#2{%
+\edef\pst@mathflag{%
+\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}%
+\setbox\pst@hbox=\hbox{%
+\ifcase\pst@mathflag\or$\m@th\textstyle\or$\m@th\displaystyle\fi
+{\pst@thisbox\the\everypsbox#2}%
+\ifnum\pst@mathflag>\z@$\fi}%
+#1}
+\def\pst@makeverbbox#1{%
+\def\pst@afterbox{#1}%
+\edef\pst@mathflag{%
+\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}%
+\afterassignment\pst@beginbox
+\setbox\pst@hbox\hbox}
+\def\pst@beginbox{%
+\ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
+\bgroup\aftergroup\pst@endbox
+\pst@thisbox
+\the\everypsbox}
+\def\pst@endbox{%
+\ifnum\pst@mathflag>\z@$\fi
+\egroup
+\pst@afterbox}
+\def\pst@makebox{\pst@@makebox}
+\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}}
+\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}}
+\psverbboxfalse
+\def\pst@longbox{%
+\def\pst@makebox{%
+\gdef\pst@makebox{\pst@@makebox}%
+\pst@makelongbox}}
+\def\pst@makelongbox#1{%
+\def\pst@afterbox{#1}%
+\edef\pst@mathflag{%
+\ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}%
+\setbox\pst@hbox\hbox\bgroup
+\aftergroup\pst@afterbox
+\ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
+\begingroup
+\pst@thisbox
+\the\everypsbox}
+\def\pst@endlongbox{%
+\endgroup
+\ifnum\pst@mathflag>\z@$\fi
+\egroup}
+\def\pslongbox#1#2{%
+\@namedef{#1}{\pst@longbox#2}%
+\@namedef{end#1}{\pst@endlongbox}}
+\newdimen\psframesep
+\def\psset@framesep#1{\pssetlength\psframesep{#1}}
+\psset@framesep{3pt}
+\newif\ifpsboxsep
+\def\psset@boxsep#1{\@nameuse{psboxsep#1}}
+\psset@boxsep{true}
+\def\pst@useboxpar{%
+\use@par
+\if@star
+\let\pslinecolor\psfillcolor
+\solid@star
+\let\solid@star\relax
+\fi
+\ifpsdoubleline \pst@setdoublesep \fi}
+\def\psframebox{\pst@object{psframebox}}
+\def\psframebox@i{\pst@makebox\psframebox@ii}
+\def\psframebox@ii{%
+\begingroup
+\pst@useboxpar
+\pst@dima=\pslinewidth
+\advance\pst@dima by \psframesep
+\pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima
+\pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima
+\pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima
+\setbox\pst@hbox=\hbox{%
+\ifpsboxsep\kern\pst@dima\fi
+\begin@ClosedObj
+\addto@pscode{%
+\psk@cornersize
+\pst@number\pst@dima neg
+\pst@number\pst@dimb neg
+\pst@number\pst@dimc
+\pst@number\pst@dimd
+.5
+\tx@Frame}%
+\def\pst@linetype{2}%
+\showpointsfalse
+\end@ClosedObj
+\box\pst@hbox
+\ifpsboxsep\kern\pst@dima\fi}%
+\ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi
+\leavevmode\box\pst@hbox
+\endgroup}
+\def\psdblframebox{\pst@object{psdblframebox}}
+\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i}
+\def\psclip#1{%
+\leavevmode
+\begingroup
+\begin@psclip
+\begingroup
+\def\use@pscode{%
+\pstVerb{%
+\pst@dict
+/mtrxc CM def
+CP CP T
+\tx@STV
+\psk@origin
+\psk@swapaxes
+newpath
+\pst@code
+clip
+newpath
+mtrxc setmatrix
+moveto
+0 setgray
+end}%
+\gdef\pst@code{}}%
+\def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}%
+\def\nc@object##1##2##3##4{\pst@misplaced{node connection}}%
+\hbox to\z@{#1}%
+\endgroup
+\def\endpsclip{%
+\end@psclip
+\endgroup}%
+\ignorespaces}
+\def\endpsclip{\pst@misplaced\endpsclip}
+\let\begin@psclip\relax
+\def\end@psclip{\pstVerb{currentpoint initclip moveto}}
+\def\AltClipMode{%
+\def\end@psclip{\pstVerb{\pst@grestore}}%
+\def\begin@psclip{\pstVerb{gsave}}}
+\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
+\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}}
+\def\clipbox@@#1{%
+\pssetlength\pst@dimg{#1}%
+\leavevmode\hbox{%
+\begin@psclip
+\pst@Verb{%
+CM \tx@STV CP T newpath
+/a \pst@number\pst@dimg def
+/w \pst@number{\wd\pst@hbox}a add def
+/d \pst@number{\dp\pst@hbox}a add neg def
+/h \pst@number{\ht\pst@hbox}a add def
+a neg d moveto
+a neg h L
+w h L
+w d L
+closepath
+clip
+newpath
+0 0 moveto
+setmatrix}%
+\unhbox\pst@hbox
+\end@psclip}}
+\def\psshadowbox{\pst@object{psshadowbox}}
+\def\psshadowbox@i{\pst@makebox\psshadowbox@ii}
+\def\psshadowbox@ii{%
+\begingroup
+\pst@useboxpar
+\psshadowtrue
+\psboxseptrue
+\def\psk@shadowangle{-45 }%
+\setbox\pst@hbox=\hbox{\psframebox@ii}%
+\pst@dimh=\psk@shadowsize\p@
+\pst@dimh=.7071\pst@dimh
+\pst@dimg=\dp\pst@hbox
+\advance\pst@dimg\pst@dimh
+\dp\pst@hbox=\pst@dimg
+\pst@dimg=\wd\pst@hbox
+\advance\pst@dimg\pst@dimh
+\wd\pst@hbox=\pst@dimg
+\leavevmode
+\box\pst@hbox
+\endgroup}
+\def\pscirclebox{\pst@object{pscirclebox}}
+\def\pscirclebox@i{\pst@makebox\pscirclebox@ii}
+\def\pscirclebox@ii{%
+\begingroup
+\pst@useboxpar
+\setbox\pst@hbox=\hbox{%
+\pst@nodehook
+\pscirclebox@iii
+\box\pst@hbox}%
+\ifpsboxsep \pscirclebox@sep \fi
+\leavevmode
+\box\pst@hbox
+\endgroup}
+\def\pscirclebox@iii{%
+\if@star
+\pslinewidth\z@
+\pstverb{\pst@dict \tx@STP \pst@usecolor\psfillcolor
+newpath \pscirclebox@iv \tx@SD end}%
+\else
+\begin@ClosedObj
+\def\pst@linetype{4}\showpointsfalse
+\addto@pscode{%
+\pscirclebox@iv CLW 2 div add 0 360 arc closepath}%
+\end@ClosedObj
+\fi}
+\def\pscirclebox@iv{%
+\pst@number{\wd\pst@hbox}2 div
+\pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}add 2 div
+2 copy \pst@number{\dp\pst@hbox}sub 4 2 roll
+\tx@Pyth \pst@number\psframesep add }
+\def\pscirclebox@sep{%
+\pst@dimb=\ht\pst@hbox
+\advance\pst@dimb\dp\pst@hbox
+\divide\pst@dimb 2
+\pst@dima=.5\wd\pst@hbox
+\pst@pyth\pst@dima\pst@dimb\pst@dimc
+\advance\pst@dimc\pslinewidth
+\advance\pst@dimc\psframesep
+\advance\pst@dimb-\pst@dimc
+\setbox\pst@hbox=\hbox to2\pst@dimc{%
+\hss
+\vbox{\kern-\pst@dimb\box\pst@hbox}%
+\hss}%
+\advance\pst@dimb-\dp\pst@hbox
+\dp\pst@hbox=-\pst@dimb}
+\let\pst@nodehook\relax
+\def\psCirclebox{\pst@object{psCirclebox}}
+\def\psCirclebox@i{\pst@makebox\psCirclebox@ii}
+\def\psCirclebox@ii{%
+\begingroup
+\pst@useboxpar
+\pst@dima=\ht\pst@hbox
+\advance\pst@dima\dp\pst@hbox
+\divide\pst@dima\tw@
+\pssetlength\pst@dimb\psk@radius
+\setbox\pst@hbox=\hbox{%
+\pst@nodehook
+\pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}%
+\box\pst@hbox}%
+\ifpsboxsep \psCirclebox@sep \fi
+\leavevmode
+\box\pst@hbox
+\endgroup}
+\def\psCirclebox@sep{%
+\pst@dimc=\pst@dimb
+\advance\pst@dimb-\pst@dima
+\advance\pst@dima\pst@dimc
+\setbox\pst@hbox=\hbox to\tw@\pst@dimc{%
+\hss
+\vrule width \z@ depth \pst@dimb height \pst@dima
+\box\pst@hbox
+\hss}}%
+\def\psovalbox{\pst@object{psovalbox}}
+\def\psovalbox@i{\pst@makebox{\psovalbox@ii}}
+\def\psovalbox@ii{%
+\begingroup
+\pst@useboxpar
+\psovalbox@iii
+\ifpsboxsep\psovalbox@sep\fi
+\leavevmode
+\box\pst@hbox
+\endgroup}
+\def\psovalbox@iii{%
+\psovalbox@iv
+\setbox\pst@hbox=\hbox{%
+\begin@ClosedObj
+\addto@pscode{%
+0 360
+\pst@number\pst@dimc CLW 2 div sub
+\pst@number\pst@dimd CLW 2 div sub
+\pst@number\pst@dima
+\pst@number\pst@dimb
+\tx@Ellipse
+closepath}%
+\def\pst@linetype{2}%
+\end@ClosedObj
+\unhbox\pst@hbox}}
+\def\psovalbox@iv{%
+\pst@dimc=\pslinewidth\advance\pst@dimc\psframesep
+\pst@dimd=\ht\pst@hbox\advance\pst@dimd\dp\pst@hbox
+\pst@dima=.5\wd\pst@hbox
+\pst@dimb=.5\pst@dimd\advance\pst@dimb-\dp\pst@hbox
+\pst@dimd=.707\pst@dimd
+\advance\pst@dimd\pst@dimc
+\advance\pst@dimc.707\wd\pst@hbox}
+\def\psovalbox@sep{%
+\setbox\pst@hbox\hbox to 2\pst@dimc{\hss\unhbox\pst@hbox\hss}%
+\pst@dimg=\pst@dimd
+\advance\pst@dimg-\pst@dimb
+\dp\pst@hbox=\pst@dimg
+\advance\pst@dimd\pst@dimb
+\ht\pst@hbox=\pst@dimd}
+\def\psdiabox{\pst@object{psdiabox}}
+\def\psdiabox@i{\pst@makebox{\psdiabox@ii}}
+\def\psdiabox@ii{%
+\begingroup
+\pst@useboxpar
+\psdiabox@iii
+\ifpsboxsep\psdiabox@sep\fi
+\leavevmode
+\box\pst@hbox
+\endgroup}
+\def\psdiabox@iv{%
+\pst@dimg=.707\pslinewidth
+\advance\pst@dimg.707\psframesep
+\pst@dima=\wd\pst@hbox
+\divide\pst@dima 2
+\pst@dimc=\pst@dima
+\advance\pst@dimc\pst@dimg
+\pst@dimd=\ht\pst@hbox
+\advance\pst@dimd\dp\pst@hbox
+\divide\pst@dimd 2
+\pst@dimb=\pst@dimd
+\advance\pst@dimb-\dp\pst@hbox
+\advance\pst@dimd\pst@dimg}
+\def\psdiabox@iii{%
+\psdiabox@iv
+\setbox\pst@hbox=\hbox{%
+\begin@ClosedObj
+\addto@pscode{%
+\psline@iii
+pop
+.5
+\pst@number\pst@dimc 2 mul \pst@number\pst@dimd 2 mul
+0
+\pst@number\pst@dima \pst@number\pst@dimb
+\tx@Diamond}%
+\def\pst@linetype{4}%
+\end@ClosedObj
+\box\pst@hbox}}
+\def\psdiabox@sep{%
+\setbox\pst@hbox\hbox to 4\pst@dimc{\hss\unhbox\pst@hbox\hss}%
+\multiply\pst@dimd 2
+\advance\pst@dimd\pst@dimb
+\ht\pst@hbox\pst@dimd
+\advance\pst@dimd-2\pst@dimb
+\dp\pst@hbox\pst@dimd}
+\def\psset@trimode#1{\pst@expandafter\psset@@trimode{#1}\@empty\@empty\@nil}
+\def\psset@@trimode#1#2#3\@nil{%
+\let\pst@tempg#1\relax
+\ifx\pst@tempg*%
+\let\psk@@trimode\@empty
+\let\pst@tempg#2\relax
+\else
+\let\psk@@trimode\relax
+\fi
+\edef\psk@trimode{%
+\ifx R\pst@tempg 1 \else\ifx D\pst@tempg 2
+\else\ifx L\pst@tempg 3 \else 0 \fi\fi\fi}}
+\psset@trimode{U}
+\def\pstribox{\pst@object{pstribox}}
+\def\pstribox@i{\pst@makebox{\pstribox@ii}}
+\def\pstribox@ii{%
+\begingroup
+\pst@useboxpar
+\pstribox@iii
+\ifpsboxsep\pstribox@sep\fi
+\leavevmode
+\box\pst@hbox
+\endgroup}
+\def\pstribox@iii{%
+\pstribox@iv
+\setbox\pst@hbox=\hbox{%
+\begin@ClosedObj
+\addto@pscode{%
+\psline@iii
+pop
+.5
+\pst@number\pst@dimc \pst@number\pst@dimd
+\ifodd\psk@trimode exch \fi
+\psk@trimode -90 mul
+\pst@number\pst@dima \pst@number\pst@dimb
+\tx@Triangle}%
+\def\pst@linetype{2}%
+\end@ClosedObj
+\box\pst@hbox}}
+\def\pstribox@iv{%
+\pst@dimh=\pslinewidth
+\advance\pst@dimh\psframesep
+\pst@dimg=\ht\pst@hbox
+\advance\pst@dimg-\dp\pst@hbox
+\divide\pst@dimg 2
+\edef\pst@tempa{\number\pst@dimg sp}% For use by nodes.
+\ifodd\psk@trimode
+\pst@dimb\pst@dimg
+\else
+\pst@dima=\wd\pst@hbox
+\divide\pst@dima 2
+\fi
+\ifcase\psk@trimode
+\pst@dimb=-\dp\pst@hbox
+\advance\pst@dimb-\pst@dimh
+\or
+\pst@dima=-\pst@dimh
+\or
+\pst@dimb=\ht\pst@hbox
+\advance\pst@dimb\pst@dimh
+\or
+\pst@dima=\wd\pst@hbox
+\advance\pst@dima\pst@dimh
+\fi
+\pst@dimd=\dp\pst@hbox
+\advance\pst@dimd\ht\pst@hbox
+\ifx\psk@@trimode\relax
+\pst@dimc=\wd\pst@hbox
+\advance\pst@dimc\ifodd\psk@trimode 1.447\else 1.789\fi\pst@dimh
+\multiply\pst@dimc 2
+\advance\pst@dimd\ifodd\psk@trimode 1.789\else 1.447\fi\pst@dimh
+\multiply\pst@dimd 2
+\else
+\ifodd\psk@trimode
+\advance\pst@dimd 1.1547\wd\pst@hbox
+\advance\pst@dimd 3.4641\pst@dimh
+\pst@dimc=.866\pst@dimd
+\else
+\advance\pst@dimd .866\wd\pst@hbox %.866=(sqrt(3)/2)
+\advance\pst@dimd 3\pst@dimh
+\pst@dimc=1.1547\pst@dimd % 1.1547=(2/sqrt(3))
+\fi
+\fi}
+\def\pstribox@sep{%
+\ifodd\psk@trimode
+\advance\pst@dimb.5\pst@dimd
+\ht\pst@hbox=\pst@dimb
+\advance\pst@dimd-\pst@dimb
+\dp\pst@hbox=\pst@dimd
+\else
+\setbox\pst@hbox\hbox to \pst@dimc{\hss\unhbox\pst@hbox\hss}%
+\global\pst@dimg=.5\pst@dimc
+\fi
+\ifcase\psk@trimode
+\dp\pst@hbox-\pst@dimb
+\advance\pst@dimd\pst@dimb
+\ht\pst@hbox\pst@dimd
+\or
+\pst@dimg=.5\wd\pst@hbox
+\global\advance\pst@dimg-\pst@dima
+\setbox\pst@hbox\hbox to \pst@dimc{\kern-\pst@dima\box\pst@hbox\hss}%
+\or
+\ht\pst@hbox\pst@dimb
+\advance\pst@dimd-\pst@dimb
+\dp\pst@hbox\pst@dimd
+\or
+\pst@dimg=\pst@dimc
+\advance\pst@dimg-\pst@dima
+\global\advance\pst@dimg.5\wd\pst@hbox
+\setbox\pst@hbox\hbox to \pst@dimc{%
+\hss\box\pst@hbox\kern\psframesep\kern\pslinewidth}%
+\fi}
+\def\psset@arcsepA#1{\pst@getlength{#1}\psk@arcsepA}
+\def\psset@arcsepB#1{\pst@getlength{#1}\psk@arcsepB}
+\def\psset@arcsep#1{%
+\psset@arcsepA{#1}\let\psk@arcsepB\psk@arcsepA}
+\psset@arcsep{0}
+\def\tx@ArcArrow{ArcArrow }
+\def\psarc{\pst@object{psarc}}
+\def\psarc@i{%
+\@ifnextchar({\psarc@iii}{\psarc@ii}}
+\def\psarc@ii#1{\addto@par{arrows=#1}%
+\@ifnextchar({\psarc@iii}{\psarc@iii(0,0)}}
+\def\psarc@iii(#1)#2#3#4{%
+\begin@OpenObj
+\pst@getangle{#3}\pst@tempa
+\pst@getangle{#4}\pst@tempb
+\pst@@getcoor{#1}%
+\pssetlength\pst@dima{#2}%
+\addto@pscode{\psarc@iv \psarc@v}%
+\gdef\psarc@type{0}%
+\showpointsfalse
+\end@OpenObj}
+\def\psarc@iv{%
+\pst@coor /y ED /x ED
+/r \pst@number\pst@dima def
+/c 57.2957 r \tx@Div def
+/angleA
+\pst@tempa
+\psk@arcsepA c mul 2 div
+\ifcase \psarc@type add \or sub \fi
+def
+/angleB
+\pst@tempb
+\psk@arcsepB c mul 2 div
+\ifcase \psarc@type sub \or add \fi
+def
+\ifshowpoints\psarc@showpoints\fi
+\ifx\psk@arrowA\@empty
+\ifnum\psk@liftpen=2
+r angleA \tx@PtoC
+y add exch x add exch
+moveto
+\fi
+\fi}
+\def\psarc@v{%
+x y r
+angleA
+\ifx\psk@arrowA\@empty\else
+{ ArrowA CP }
+{ \ifcase\psarc@type add \or sub \fi }
+\tx@ArcArrow
+\fi
+angleB
+\ifx\psk@arrowB\@empty\else
+{ ArrowB }
+{ \ifcase\psarc@type sub \or add \fi }
+\tx@ArcArrow
+\fi
+\ifcase\psarc@type arc \or arcn \fi}
+\def\psarc@type{0}
+\def\psarc@showpoints{%
+gsave
+newpath
+x y moveto
+x y r \pst@tempa \pst@tempb
+\ifcase\psarc@type arc \or arcn \fi
+closepath
+CLW 2 div SLW
+[ \psk@dash\space ] 0 setdash stroke
+grestore }
+\def\psarcn{\pst@object{psarcn}}
+\def\psarcn@i{\def\psarc@type{1}\psarc@i}
+\def\pscircle{\pst@object{pscircle}}
+\def\pscircle@i{\@ifnextchar({\pscircle@do}{\pscircle@do(0,0)}}
+\def\pscircle@do(#1)#2{%
+\if@star
+{\use@par\qdisk(#1){#2}}%
+\else
+\begin@ClosedObj
+\pst@@getcoor{#1}%
+\pssetlength\pst@dimc{#2}%
+\def\pst@linetype{4}%
+\addto@pscode{%
+\pst@coor
+\pst@number\pst@dimc
+\psk@dimen CLW mul sub
+0 360 arc
+closepath}%
+\showpointsfalse
+\end@ClosedObj
+\fi
+\ignorespaces}
+\def\qdisk(#1)#2{%
+\def\pst@par{}%
+\begin@SpecialObj
+\pst@@getcoor{#1}%
+\pssetlength\pst@dimg{#2}%
+\addto@pscode{\pst@coor \pst@number\pst@dimg \tx@SD}%
+\end@SpecialObj}
+\def\psset@radius#1{\pst@@getlength{#1}\psk@radius}
+\psset@radius{.25cm}
+\def\psCircle{\pst@object{psCircle}}
+\def\psCircle@i{\@ifnextchar({\psCircle@ii}{\psCircle@ii(0,0)}}
+\def\psCircle@ii(#1){\pscircle@do(#1){\psk@radius}}
+\def\pswedge{\pst@object{pswedge}}
+\def\pswedge@i{\@ifnextchar({\pswedge@ii}{\pswedge@ii(0,0)}}
+\def\pswedge@ii(#1)#2#3#4{%
+\begin@ClosedObj
+\pssetlength\pst@dimc{#2}
+\pst@getangle{#3}\pst@tempa
+\pst@getangle{#4}\pst@tempb
+\pst@@getcoor{#1}%
+\def\pst@linetype{1}%
+\addto@pscode{%
+\pst@coor
+2 copy
+moveto
+\pst@number\pst@dimc \psk@dimen CLW mul sub % Adjusted radius
+\pst@tempa \pst@tempb
+arc
+closepath}%
+\showpointsfalse
+\end@ClosedObj}
+\def\tx@Ellipse{Ellipse }
+\def\psellipse{\pst@object{psellipse}}
+\def\psellipse@i(#1){\@ifnextchar(%
+{\psellipse@ii(#1)}{\psellipse@ii(0,0)(#1)}}
+\def\psellipse@ii(#1)(#2){%
+\begin@ClosedObj
+\pst@getcoor{#1}\pst@tempa
+\pst@@getcoor{#2}%
+\addto@pscode{%
+0 360
+\pst@coor
+\ifdim\psk@dimen\p@=\z@\else
+\psk@dimen CLW mul
+dup 4 -1 roll sub neg 3 1 roll sub
+\fi
+\pst@tempa
+\tx@Ellipse
+closepath}%
+\def\pst@linetype{2}%
+\end@ClosedObj}
+\def\multips{\@ifnextchar({\def\pst@par{}\multips@ii}{\multips@i}}
+\def\multips@i#1{\def\pst@par{rot=#1}\multips@ii}
+\def\multips@ii(#1){\@ifnextchar({\multips@iii(#1)}{\multips@iii(\z@,\z@)(#1)}}
+\long\def\multips@iii(#1)(#2)#3#4{%
+\begingroup
+\use@par
+\pst@getcoor{#1}\pst@tempa
+\pst@@getcoor{#2}%
+\pst@cnta=#3\relax
+\init@pscode
+\addto@pscode{%
+\pst@tempa T \the\pst@cnta\space \pslbrace
+gsave \ifx\psk@rot\@empty\else\psk@rot rotate \fi}%
+\hbox to\z@{%
+\def\init@pscode{%
+\addto@pscode{%
+gsave
+\pst@number\pslinewidth SLW
+\pst@usecolor\pslinecolor}}%
+\def\use@pscode{\addto@pscode{grestore}}%
+\def\psclip##1{\pst@misplaced\psclip}%
+\def\nc@object##1##2##3##4{\pst@misplaced{node connection}}%
+#4}%
+\addto@pscode{grestore \pst@coor T \psrbrace repeat}%
+\leavevmode
+\use@pscode
+\endgroup
+\ignorespaces}
+\def\scalebox#1{\pst@makebox{\@scalebox{#1}}}
+\def\@scalebox#1{%
+\begingroup
+\pst@getscale{#1}\pst@tempa
+\let\pst@tempc\pst@tempg
+\let\pst@tempd\pst@temph
+\@@scalebox
+\endgroup}
+\def\@@scalebox{%
+\leavevmode
+\hbox{%
+\ifdim\pst@tempd\p@<\z@
+\pst@dimg=\pst@tempd\ht\pst@hbox
+\pst@dimh=\pst@tempd\dp\pst@hbox
+\dp\pst@hbox=-\pst@dimg
+\ht\pst@hbox=-\pst@dimh
+\else
+\ht\pst@hbox=\pst@tempd\ht\pst@hbox
+\dp\pst@hbox=\pst@tempd\dp\pst@hbox
+\fi
+\pst@dima=\pst@tempc\wd\pst@hbox
+\ifdim\pst@dima<\z@\kern-\pst@dima\fi
+\pst@Verb{CP CP translate \pst@tempa \tx@NET}%
+\hbox to \z@{\box\pst@hbox\hss}%
+\pst@Verb{%
+CP CP translate
+1 \pst@tempc div 1 \pst@tempd div scale
+\tx@NET}%
+\ifdim\pst@dima>\z@\kern\pst@dima\fi}}
+\pslongbox{Scalebox}{\scalebox}
+\def\scaleboxto(#1,#2){\pst@makebox{\@scaleboxto(#1,#2)}}
+\def\@scaleboxto(#1,#2){%
+\begingroup
+\pssetlength\pst@dima{#1}%
+\pssetlength\pst@dimb{#2}%
+\ifdim\pst@dima=\z@\else
+\pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempc
+\edef\pst@tempc{\pst@tempc\space}%
+\fi
+\ifdim\pst@dimb=\z@
+\ifdim\pst@dima=\z@
+\@pstrickserr{%
+\string\scaleboxto\space dimensions cannot both be zero}\@ehpa
+\def\pst@tempa{}%
+\def\pst@tempc{1 }%
+\def\pst@tempd{1 }%
+\else
+\let\pst@tempd\pst@tempc
+\fi
+\else
+\pst@dimc=\ht\pst@hbox
+\advance\pst@dimc\dp\pst@hbox
+\pst@divide{\pst@dimb}{\pst@dimc}\pst@tempd
+\edef\pst@tempd{\pst@tempd\space}%
+\ifdim\pst@dima=\z@ \let\pst@tempc\pst@tempd \fi
+\fi
+\edef\pst@tempa{\pst@tempc \pst@tempd scale }%
+\@@scalebox
+\endgroup}
+\pslongbox{Scaleboxto}{\scaleboxto}
+\def\tx@Rot{Rot }
+\def\rotateleft{\pst@makebox{\@rotateleft\pst@hbox}}
+\def\@rotateleft#1{%
+\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
+\pst@Verb{90 \tx@Rot}
+\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}%
+\pst@Verb{-90 \tx@Rot}}}}
+\def\rotateright{\pst@makebox{\@rotateright\pst@hbox}}
+\def\@rotateright#1{%
+\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
+\pst@Verb{-90 \tx@Rot}
+\vbox to \z@{\hbox to \z@{\hss\box#1}\vss}%
+\pst@Verb{90 \tx@Rot}}}}
+\def\rotatedown{\pst@makebox{\@rotatedown\pst@hbox}}
+\def\@rotatedown#1{%
+\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1%
+\pst@Verb{180 \tx@Rot}%
+\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}%
+\pst@Verb{-180 \tx@Rot}}}}
+\pslongbox{Rotateleft}{\rotateleft}
+\pslongbox{Rotateright}{\rotateright}
+\pslongbox{Rotatedown}{\rotatedown}
+\def\pst@starbox{%
+\setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}}
+\def\pst@@makesmall#1{%
+\setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}}
+\def\pst@@@makesmall#1{%
+\pst@dimh=\psk@xref\wd#1%
+\ifx\psk@yref\relax
+\pst@dimg=\dp#1%
+\else
+\pst@dimg=\psk@yref\ht#1%
+\advance\pst@dimg\psk@yref\dp#1%
+\fi
+\setbox#1=\hbox to\z@{%
+\kern-\pst@dimh\vbox to\z@{\vss\box#1\kern-\pst@dimg}\hss}}
+\def\psset@ref#1{\pst@expandafter\psset@@ref{#1}\@empty,,\@nil}
+\def\psset@@ref#1#2,#3,#4\@nil{%
+\def\psk@xref{.5}%
+\def\psk@yref{.5}%
+\let\pst@makesmall\pst@@@makesmall
+\ifx\@empty#3\@empty
+\@nameuse{getref@#1}%
+\@nameuse{getref@#2}%
+\else
+\pst@checknum{#1#2}\psk@xref
+\pst@checknum{#3}\psk@yref
+\fi}
+\def\getref@c{\let\pst@makesmall\pst@@makesmall}
+\def\getref@t{\def\psk@yref{1}}
+\def\getref@b{\def\psk@yref{0}}
+\def\getref@B{\let\psk@yref\relax}
+\def\getref@l{\def\psk@xref{0}}
+\def\getref@r{\def\psk@xref{1}}
+\psset@ref{c}
+\def\psset@rot#1{%
+\pst@expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil}
+\def\psset@@rot#1\@nil{%
+\def\next##1@#1=##2@##3\@nil{%
+\ifx\relax##2%
+\pst@getangle{#1}\psk@rot
+\else
+\def\psk@rot{##2}%
+\fi}%
+\expandafter\next\pst@rottable @#1=\relax @\@nil}
+\def\psset@@@rot#1#2\@nil{%
+\psset@@rot#2\@nil
+\edef\psk@rot{\pst@rotlist \ifx\psk@rot\@empty\else\psk@rot add \fi}}
+\def\pst@rotlist{mark RAngle /a ED cleartomark a neg }
+\def\pst@rottable{%
+@0=%
+@U=%
+@L=90 %
+@D=180 %
+@R=-90 %
+@N=\pst@rotlist
+@W=\pst@rotlist 90 add %
+@S=\pst@rotlist 180 add %
+@E=\pst@rotlist 90 sub }
+\psset@rot{0}
+\def\tx@RotBegin{RotBegin }
+\def\tx@RotEnd{RotEnd }
+\def\pst@rotate#1#2{%
+\ifx#1\@empty\else
+\setbox#2=\hbox{\pst@Verb{#1 \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}%
+\fi}
+\def\psput@cartesian#1{%
+\hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}}
+\def\psput@special#1{%
+\hbox{%
+\pst@Verb{{ \pst@coor } \tx@PutCoor \tx@PutBegin}%
+\box#1%
+\pst@Verb{\tx@PutEnd}}}
+\def\tx@PutCoor{PutCoor }
+\def\tx@PutBegin{PutBegin }
+\def\tx@PutEnd{PutEnd }
+\def\rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rput@i}{\rput@ii}}}
+\def\rput@i[#1]{\addto@par{ref={#1}}\rput@ii}
+\def\rput@ii{\@ifnextchar({\rput@iv}{\rput@iii}}
+\def\rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\rput@iv}{\rput@iv(\z@,\z@)}}
+\def\rput@iv(#1){\pst@killglue\pst@makebox{\rput@v{#1}}}
+\def\rput@v#1{%
+\begingroup
+\use@par
+\if@star\pst@starbox\fi
+\pst@makesmall\pst@hbox
+\pst@rotate\psk@rot\pst@hbox
+\psput@{#1}\pst@hbox
+\endgroup
+\ignorespaces}
+\def\multirput{%
+\def\pst@par{}%
+\pst@ifstar{\@ifnextchar[{\multirput@i}{\multirput@ii}}}
+\def\multirput@i[#1]{\addto@par{ref={#1}}\multirput@ii}
+\def\multirput@ii{\@ifnextchar({\multirput@iv}{\multirput@iii}}
+\def\multirput@iii#1{\addto@par{rot={#1}}\multirput@iv}
+\def\multirput@iv(#1){%
+\@ifnextchar({\multirput@v(#1)}{\multirput@v(\z@,\z@)(#1)}}
+\def\multirput@v(#1,#2)(#3,#4)#5{%
+\pst@makebox{\multirput@vi(#1,#2)(#3,#4){#5}}}
+\def\multirput@vi(#1,#2)(#3,#4)#5{%
+\begingroup
+\use@par
+\if@star\pst@starbox\fi
+\pst@makesmall\pst@hbox
+\pst@rotate\psk@rot\pst@hbox
+\pssetxlength\pst@dima{#1}%
+\pssetylength\pst@dimb{#2}%
+\pssetxlength\pst@dimc{#3}%
+\pssetylength\pst@dimd{#4}%
+\pst@cntg=#5\relax
+\pst@cnth=\@ne
+\leavevmode
+\loop
+\vbox to \z@{%
+\vss
+\hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}%
+\vskip\pst@dimb}%
+\ifnum\pst@cntg>\pst@cnth
+\advance\pst@dima\pst@dimc
+\advance\pst@dimb\pst@dimd
+\advance\pst@cnth\@ne
+\repeat
+\endgroup
+\ignorespaces}
+\newif\if@fixedradius
+\def\cput{\pst@object{cput}}
+\def\cput@i{\@fixedradiusfalse\cput@ii}
+\def\cput@ii{\pst@killglue\@ifnextchar({\cput@iv}{\cput@iii}}
+\def\cput@iii#1{%
+\addto@par{rot={#1}}%
+\@ifnextchar({\cput@iv}{\cput@iv(\z@,\z@)}}
+\def\cput@iv(#1){\pst@makebox{\cput@v{#1}}}
+\def\cput@v#1{%
+\begingroup
+\use@par
+\setbox\pst@hbox=\hbox{%
+\psboxsepfalse
+\if@fixedradius\psCirclebox@ii\else\pscirclebox@ii\fi}%
+\pst@@makesmall\pst@hbox
+\pst@rotate\psk@rot\pst@hbox
+\psput@{#1}\pst@hbox
+\endgroup
+\ignorespaces}
+\def\Cput{\pst@object{Cput}}
+\def\Cput@i{\@fixedradiustrue\cput@ii}
+\newdimen\pslabelsep
+\def\psset@labelsep#1{\pssetlength\pslabelsep{#1}}
+\psset@labelsep{5pt}
+\def\psset@refangle#1{\pst@expandafter\psset@@refangle{#1}\@nil}
+\def\psset@@refangle#1\@nil{%
+\def\next##1@#1=##2"##3@##4\@nil{%
+\ifx\relax##2%
+\pst@getangle{#1}\psk@refangle
+\def\psk@uputref{}%
+\else
+\def\psk@refangle{##2 }%
+\def\psk@uputref{##3}%
+\fi}%
+\expandafter\next\pst@refangletable @#1=\relax"@\@nil}
+\def\pst@refangletable{%
+@r=0"20%
+@u=90"02%
+@l=180"10%
+@d=-90"01%
+@ur=45"22%
+@ul=135"12%
+@dr=-135"21%
+@dl=-45"11}
+\psset@refangle{0}
+\def\uput{\def\pst@par{}\@ifnextchar[{\uput@ii}{\uput@i}}
+\def\uput@i#1{\addto@par{labelsep=#1}\uput@ii}
+\def\uput@ii[#1]{%
+\addto@par{refangle={#1}}%
+\@ifnextchar({\uput@iv}{\uput@iii}}
+\def\uput@iii#1{%
+\addto@par{rot={#1}}%
+\@ifnextchar({\uput@iv}{\uput@iv(\z@,\z@)}}
+\def\uput@iv(#1){\pst@killglue\pst@makebox{\uput@v{#1}}}
+\def\uput@v#1{%
+\begingroup
+\use@par
+\if@star\pst@starbox\fi
+\uput@vi
+\psput@{#1}\pst@hbox
+\endgroup
+\ignorespaces}
+\def\uput@vi{%
+\ifx\psk@uputref\@empty
+\uput@vii\tx@UUput{}%
+\else
+\ifx\psk@rot\@empty
+\expandafter\uput@viii\psk@uputref
+\else
+\uput@vii\tx@UUput{}%
+\fi
+\fi}
+\def\uput@vii#1#2{%
+\edef\pst@coor{%
+\pst@number\pslabelsep
+#2%
+\pst@number{\wd\pst@hbox}%
+\pst@number{\ht\pst@hbox}%
+\pst@number{\dp\pst@hbox}%
+\psk@refangle\space \ifx\psk@rot\@empty\else\psk@rot\space sub \fi
+\tx@Uput #1}%
+\setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}%
+\setbox\pst@hbox=\psput@special\pst@hbox
+\ifx\psk@rot\@empty\else\pst@rotate\psk@rot\pst@hbox\fi}
+\def\uput@viii#1#2{%
+\ifnum#1>\z@\ifnum#2>\z@\pslabelsep=.707\pslabelsep\fi\fi
+\setbox\pst@hbox=\vbox to\z@{%
+\ifnum#2=1 \vskip\pslabelsep\else\vss\fi
+\hbox to\z@{%
+\ifnum#1=2 \hskip\pslabelsep\else\hss\fi
+\box\pst@hbox
+\ifnum#1=1 \hskip\pslabelsep\else\hss\fi}%
+\ifnum#2=2 \vskip\pslabelsep\else\vss\fi}}
+\def\tx@Uput{Uput }
+\def\tx@UUput{UUput }
+\def\Rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Rput@ii}{\Rput@i}}}
+\def\Rput@i#1{\addto@par{labelsep=#1}\Rput@ii}
+\def\Rput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Rput@iv}{\Rput@iii}}
+\def\Rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\Rput@iv}{\Rput@iv(\z@,\z@)}}
+\def\Rput@iv(#1){\pst@killglue\pst@makebox{\Rput@v{#1}}}
+\def\Rput@v#1{%
+\begingroup
+\use@par
+\if@star\pst@starbox\fi
+\Rput@vi
+\pst@makesmall\pst@hbox
+\pst@rotate\psk@rot\pst@hbox
+\psput@{#1}\pst@hbox
+\endgroup
+\ignorespaces}
+\def\Rput@vi{%
+\pst@dimg=\dp\pst@hbox
+\advance\pst@dimg\pslabelsep
+\dp\pst@hbox=\pst@dimg
+\pst@dimg=\ht\pst@hbox
+\advance\pst@dimg\pslabelsep
+\ht\pst@hbox=\pst@dimg
+\setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}%
+\def\oldpsput{%
+\def\pst@par{}\pst@ifstar{\@ifnextchar[{\oldpsput@i}{\oldpsput@ii}}}
+\def\oldpsput@i[#1]{\addto@par{ref={#1}}\oldpsput@ii}
+\def\oldpsput@ii{\@ifnextchar<{\oldpsput@iii}{\oldpsput@iv}}
+\def\oldpsput@iii<#1>{\rput@iii{#1}}
+\def\OldPsput{\let\psput\oldpsput}
+\def\NewPsput{\let\psput\rput}
+\def\pspicture{\begingroup\pst@ifstar\pst@picture}
+\def\pst@picture{%
+\@ifnextchar[{\pst@@picture}{\pst@@picture[0]}}
+\def\pst@@picture[#1]#2(#3,#4){%
+\@ifnextchar({\pst@@@picture[#1](#3,#4)}%
+{\pst@@@picture[#1](0,0)(#3,#4)}}
+\def\pst@@@picture[#1](#2,#3)(#4,#5){%
+\pssetxlength\pst@dima{#2}%
+\pssetylength\pst@dimb{#3}%
+\pssetxlength\pst@dimc{#4}%
+\pssetylength\pst@dimd{#5}%
+\ifdim\pst@dima>\pst@dimc
+\pst@dimg=\pst@dima
+\pst@dima=\pst@dimc
+\pst@dimc=\pst@dimg
+\fi
+\ifdim\pst@dimb>\pst@dimd
+\pst@dimg=\pst@dimb
+\pst@dimb=\pst@dimd
+\pst@dimd=\pst@dimg
+\fi
+\def\pst@tempa{#1}%
+\setbox\pst@hbox=\hbox\bgroup
+\begingroup\KillGlue
+\@ifundefined{@latexerr}{}{\let\unitlength\psunit}%
+\edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}\ignorespaces}
+\def\pic@coor{(0,0)(0,0)(10,10)}
+\def\endpspicture{%
+\pst@killglue
+\endgroup
+\egroup
+\ifdim\wd\pst@hbox=\z@\else
+%\@pstrickserr{Extraneous space in the pspicture environment}%
+%{Type \space <return> \space to procede.}%
+\fi
+\ht\pst@hbox=\pst@dimd
+\dp\pst@hbox=-\pst@dimb
+\setbox\pst@hbox=\hbox{%
+\kern-\pst@dima
+\ifx\pst@tempa\@empty\else
+\advance\pst@dimd-\pst@dimb
+\pst@dimd=\pst@tempa\pst@dimd
+\advance\pst@dimd\pst@dimb
+\lower\pst@dimd
+\fi
+\box\pst@hbox
+\kern\pst@dimc}%
+\if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
+\leavevmode\box\pst@hbox
+\endgroup}
+\@namedef{pspicture*}{\pspicture*}
+\@namedef{endpspicture*}{\endpspicture}
+\def\tx@BeginOL{BeginOL }
+\def\tx@InitOL{InitOL }
+\def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}}
+\def\AltOverlayMode{%
+\def\pst@initoverlay##1{%
+\pst@Verb{%
+\tx@InitOL
+/Visible { initclip } def
+/Invisible {
+CP newpath OLUnit itransform moveto clip newpath moveto
+} def
+/TheOL (##1) def}}}
+\def\pst@overlay#1{%
+\edef\curr@overlay{#1}%
+\pst@Verb{(#1) BOL}%
+\aftergroup\pst@endoverlay}
+\def\pst@endoverlay{%
+\pst@Verb{(\curr@overlay) BOL}}
+\def\curr@overlay{all}
+\newbox\theoverlaybox
+\def\overlaybox{%
+\global\setbox\theoverlaybox=\hbox\bgroup
+\begingroup
+\let\psoverlay\pst@overlay
+\def\overlaybox{%
+\@pstrickserr{Overlays cannot be nested}\@eha}%
+\def\putoverlaybox{%
+\@pstrickserr{You must end the overlay box
+before using \string\putoverlaybox}}%
+\psoverlay{main}%
+\ignorespaces}
+\def\endoverlaybox{\endgroup\egroup}
+\def\putoverlaybox#1{%
+\hbox{\pst@initoverlay{#1}\copy\theoverlaybox}}
+\def\psoverlay{\@pstrickserr{\string\psoverlay\space
+can only be used after \string\overlaybox}}
+\ifx\pstcustomize\relax \input pstricks.con \fi
+\catcode`\@=\PstAtCode\relax
+\endinput
+%%
+%% END: pstricks.tex
diff --git a/usergrps/uktug/baskervi/6_2/spqr/pstrix2.tex b/usergrps/uktug/baskervi/6_2/spqr/pstrix2.tex
new file mode 100644
index 0000000000..c8cbfd096e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/pstrix2.tex
@@ -0,0 +1,1085 @@
+\documentclass{baskerv}
+\usepackage[T1]{fontenc}
+\usepackage{spqr}
+\begin{document}
+\def\CurrentPackages{spqr,pstcol}
+\newcounter{myN}
+\setlongtables
+\author[Sebastian Rahtz]{Sebastian Rahtz\\Elsevier Science Ltd\\
+Email: \texttt{s.rahtz@elsevier.co.uk}}
+\title{An introduction to PSTricks, part 2}
+\begin{Article}
+\section{Preface}
+In the first part of this description of \PST, we looked at
+the basic concepts of the package, a series of low-level building
+blocks, and the useful commands for dealing with text and the third
+dimension. Now it is time to look at the higher-level packages built
+in \PST, for drawing trees and graphs. There are a wide variety of
+applications, as I hope the examples show. This part of the package
+is, unfortunately, extremely rich, and readers should not be surprised
+if they find the plethora of new commands rather confusing.
+
+%---------------------------
+\section{Nodes and their connections, and trees}
+\PST\ offers sophisticated macros for setting up named nodes
+and joining them together in complicated ways, complete with labels.
+
+The nodes can be created in three ways:
+\begin{enumerate}
+\item By placing them at arbitrary coordinates
+\item By placing them on a regular grid or matrix
+\item By using higher-level tree macros
+\end{enumerate}
+The sort of effect we will create is like this:
+
+\begin{GridPSExample}(0,0)(5,5)
+\rput(1,1){\rnode{A}{Dog}}
+\rput(2,4){\rnode{B}{Cat}}
+\rput(4,2){\rnode{C}{Mouse}}
+\ncline{A}{B}
+\nccurve[linestyle=dotted]{A}{B}
+\ncarc[linestyle=dashed]{A}{B}
+\end{GridPSExample}
+
+Every node is given a symbolic name, which is used for
+node connectors (lines, curves and so on), and for node labels. The
+fact that nodes can occur \emph{anywhere} (such as in running text),
+makes it possible to use them for surprising effects like linking two
+words \rnode{n1}{one} to \rnode{n2}{another}\nccurve{n1}{n2}. When
+considering connectors, we have to distinguish between the position of
+the node they are pointing \emph{towards} (the node reference point),
+and the actual extent of the connector. Most node creators have an
+invisible box around them, which determines the end of connector lines.
+We will first list all the commands, and then give practical examples.
+
+Table~\ref{PSTnode} lists all the node creation commands and node
+connector commands, Table~\ref{PSTnodelab} lists the commands to label
+connectors and nodes, and Table~\ref{PSTnodeparm} lists the extra
+graphical parameters which apply to node connectors.
+
+\end{multicols}
+\begin{longtable}{lH{8.5cm}}
+\caption{\protect\PST\ node drawing commands\label{PSTnode}}\\
+\hline
+\endfirsthead
+\protect\PST\ node drawing commands \emph{cont.}\\
+\hline
+\endhead
+\multicolumn{2}{l}{\bfseries\itshape Node creators}
+\\
+\PSTCom \rnode`[refpoint]'{name}{text}
+& create a node called \emph{name}, consisting of \emph{text};
+connectors point to the \emph{refpoint}
+\\
+\PSTCom \Rnode`\c~'{name}{text}
+& the same as \Lcs{rnode}, but the reference point is the middle of
+the box's baseline, plus \c~{}
+\\
+\PSTCom \pnode`\c~'{name}
+& create a node at \c, which takes up no space
+\\
+\PSTComOpt \cnode`\c~'{radius}{name}
+& create a node consisting of circle of \emph{radius}
+\\
+\PSTComOpt \Cnode`\c~'{name}
+& create a node consisting of circle, using the
+radius set by the \emph{radius} graphical parameter (it is sometimes
+useful to set the radius for many circles)
+\\
+\PSTComOpt \cnodeput`{angle}\c~'{name}{text}
+\\
+\PSTComOpt \circlenode{name}{text}
+& like \Lcs{pscirclebox}, but makes a node
+\\
+\PSTComOpt \ovalnode{name}{text}
+& like \Lcs{psovalbox}, but makes a node
+\\
+\PSTComOpt \dianode{name}{text}
+& like \Lcs{diabox}, but makes a node
+\\
+\PSTComOpt \dotnode`\c~'{name}{text}
+& like \Lcs{psdot}, but makes a node
+\\
+\PSTComOpt \fnode`\c~'{name}{text}
+& like \Lcs{psframe}, but makes a node
+\\
+\PSTComOpt \trinode{name}{text}
+& like \Lcs{tribox}, but makes a node
+\\
+[6pt]
+\multicolumn{2}{l}{\bfseries\itshape Node connectors}
+\\
+\PSTComOpt \ncline`{arrows}'{firstnode}{secondnode}
+& straight line between nodes
+\\
+\PSTComOpt \ncLine`{arrows}'{firstnode}{secondnode}
+& straight line between nodes, but labels are placed as if the line
+went right to the center of the nodes
+\\
+\PSTComOpt \ncarc`{arrows}'{firstnode}{secondnode}
+& arc between nodes; uses parameter \emph{arcangle}
+\\
+\PSTComOpt \ncdiag`{arrows}'{firstnode}{secondnode}
+& using the \emph{arm} and \emph{angle} parameters, `arms' start out
+from each node and are then joined by a line; corner shape is
+controlled by the \emph{linearc} parameter
+\\
+\PSTComOpt \ncdiagg`{arrows}'{firstnode}{secondnode}
+& as \Lcs{ncdiag}, but the second arm is not drawn
+\\
+\PSTComOpt \ncbar`{arrows}'{firstnode}{secondnode}
+& a line is drawn with arms coming off at a right angle to the nodes,
+at an angle of \emph{angleA}; the arm length is adjusted if necessary
+\\
+\PSTComOpt \ncangle`{arrows}'{firstnode}{secondnode}
+& draws a connect line \Lcs{ncdiag}, but the angle between arm A and
+the connector line is forced to a right angle
+\\
+\PSTComOpt \ncangles`{arrows}'{firstnode}{secondnode}
+& like \Lcs{ncangle}, but arm A is joined to arm B by two line
+segments that meet at a right angle
+\\
+\PSTComOpt \ncloop`{arrows}'{firstnode}{secondnode}
+& like \Lcs{ncangles} but 5 line segments are used, the second and
+forth being \emph{loopsize} long
+\\
+\PSTComOpt \nccurve`{arrows}'{firstnode}{secondnode}
+& bezier curve between nodes, using the \emph{ncurv} parameters to
+determine the control point positions
+\\
+\PSTComOpt \nccircle`{arrows}'{node}{radius}
+& draws a circle or part circle of radius \emph{radius}
+connecting the node to itself
+\\[6pt]
+\multicolumn{2}{l}{\bfseries\itshape Coil and zigzag node connectors}
+\\
+\PSTCom \nccoil`*[settings]{arrows}'{firstnode}{secondnode}
+\\
+\PSTCom \nczigzag`*[settings]{arrows}'{firstnode}{secondnode}
+\end{longtable}
+
+\begin{longtable}{llH{.4\textwidth}}
+\caption{\protect\PST\ Graphical parameters for node connectors}
+\label{PSTnodeparm}\\[1mm]
+\emph{Parameter} & \emph{Default} & \emph{Explanation}\\
+\hline
+\endfirsthead
+\protect\PST\ Graphical parameters for node connectors \emph{cont.}\\[1mm]
+\emph{Parameter} & \emph{Default} & \emph{Explanation}\\
+\hline
+\endhead
+\mbox{}\\
+\endfoot
+\Par{offset=dim} (0pt)
+& the offset of the connection point to a node\\
+\Par{nodesep=dim} (0pt)
+&the border around nodes at which connectors stop
+\\
+\Par{nodesepA=dim} (0pt)
+&the border around the first node
+\\
+\Par{nodesepB=dim} (0pt)
+&the border around the second node
+ \\
+\Par{arcangle=angle} (8)
+&in \Lcs{ncarc}, the angle between the arc and a straight line drawn between the nodes
+ \\
+\Par{angle=angle} (0)
+&the angle at which connectors hit the nodes
+ \\
+\Par{angleA=angle} (0)
+&the angle at which a connector hits the first node
+ \\
+\Par{angleB=angle} (0)
+&the angle at which a connector hits the second node
+ \\
+\Par{arm=dim} (10pt)
+&the length of the line segment where the connector joins the nodes
+ \\
+\Par{armA=dim} (10pt)
+&the length of the line segment where the connector joins the first node
+ \\
+\Par{armB=dim} (10pt)
+&the length of the line segment where the connector joins the second node
+ \\
+\Par{loopsize=dim} (1cm)
+& the length of line segments for \Lcs{ncloop}
+\\
+\Par{ncurv=num} (0.67)
+& the distance to Bezier control points in \Lcs{nccurve}; lower values
+give tighter curves; the distance from the node to the first control
+point is half \emph{ncurv} $\times$ the distance between the two end points\\
+\Par{ncurvA=num} (0.67)
+& as \emph{ncurv} but for first node only
+\\
+\Par{ncurvB=num} (0.67)
+& as \emph{ncurv} but for second node only
+\\
+\Par{boxsize=dim} (0.4cm)
+& half the width of the enclosing box of \Lcs{ncbox} and \Lcs{ncarcbox}
+\\[6pt]
+\multicolumn{3}{l}{\bfseries\itshape Parameters for node labels}\\
+\Par{ref=ref} (c)
+& sets the reference point for labels\\
+\Par{nrot=rot} (0)
+& the rotation of label text; if the angle is preceded by :, it is
+measured with respect to the connector line; the letter abbreviations
+we have already seen are available, so :U is commonly used to
+align text on the connector line\\
+\Par{npos=num} ()
+& the position along the length of the connector line where a label is
+placed; each connector line has one or more segments, and the value of
+\emph{npos}+1 determines the segment on which the label is set; the
+default values for this parameter are given in the \protect\PST\
+manual, but can also be seen in the examples below\\
+\Par{shortput=none/nab/tablr/tab} (none)
+& determines whether short codes are available for labelling
+connectors; see \pageref{shortput}.\\
+\Par{tpos=num} (0.5)
+& the proportion of the distance between nodes at which labels are
+placed on a connector\\
+\Par{mnode=type} (R)
+& (for matrices) the default node type; possibilities are
+R (\Lcs{Rnode}), r (\Lcs{rnode}), C (\Lcs{Cnode}), f (\Lcs{fnode}), p
+(\Lcs{pnode}), circle (\Lcs{circlenode}), oval (\Lcs{ovalnode}), dia
+(\Lcs{dianode}), tri (\Lcs{trinode}), dot (\Lcs{dotnote}), and none\\
+\Par{emnode=type} (none)
+& (for matrices) the type of node created for empty cells in a matrix\\
+\Par{name=name} ()
+& (for matrices) the name of a node; parameters like this can set in
+square brackets in the cell\\
+\Par{nodealign=true/false} (false)
+& (for matrices) whether baselines of nodes pass through the centre of
+nodes\\
+\Par{mcol=l/r/c} (c)
+& (for matrices) the alignment of a node within a matrix cell\\
+\Par{mnodesize=dim} (-1pt)
+& (for matrices) is positive, nodes are forced to be this size\\
+\Par{rowsep=dim} (1.5cm)
+& (for matrices) the gap between rows \\
+\Par{colsep=dim} (1.5cm)
+& (for matrices) the gap between columns \\
+\end{longtable}
+
+\begin{longtable}{lH{10cm}}
+\caption{\protect\PST\ node connection
+ labelling commands}\label{PSTnodelab}\\
+\hline
+\endfirsthead
+\protect\PST\ node connection labelling commands \emph{cont.}\\
+\hline
+\endhead
+\multicolumn{2}{l}{\bfseries\itshape Labelling based on connector length}\\
+\PSTComOpt \ncput {something}
+& place \emph{something} on the connector line\\
+\PSTComOpt \naput {something}
+& place \emph{something} above the connector line\\
+\PSTComOpt \nbput {something}
+& place \emph{something} under the connector line\\[6pt]
+\multicolumn{2}{l}{\bfseries\itshape Labelling based on distance
+between nodes}\\
+\PSTComOpt \tvput {something}
+& working on the vertical distance between nodes, place \emph{something} in the middle of the line\\
+\PSTComOpt \tlput {something}
+& working on the vertical distance between nodes, place \emph{something}
+to the left of the line\\
+\PSTComOpt \trput {something}
+& working on the vertical distance between nodes,
+place \emph{something} to the right of the line\\
+\PSTComOpt \thput{something}
+& working on the horizontal distance between nodes,
+place \emph{something} in the middle of the line\\
+\PSTComOpt \taput{something}
+& working on the horizontal distance between nodes,
+place \emph{something} above the line\\
+\PSTComOpt \tbput{something}
+& working on the horizontal distance between nodes,
+place \emph{something} below the line\\[6pt]
+\multicolumn{2}{l}{\bfseries\itshape Labelling nodes}\\
+\PSTCom`[par]'{angle}{name}{something}
+& place \emph{something} next to the node, at a distance of
+\emph{nodesep}, in the direction \emph{angle} from the centre of the node
+\end{longtable}
+\begin{multicols}{2}
+\begin{table*}
+\caption{\protect\PST\ drawing commands comparable to node connectors}
+\label{PSTcondraw}
+\begin{tabular}{l}
+\PSTComOpt \pcline`{arrows}'\c1\c2
+\\
+\PSTComOpt \pccurve`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcarc`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcbar`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcdiag`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcangle`{arrows}'\c1\c2
+\\
+\PSTComOpt \pcloop`{arrows}'\c1\c2
+\\
+\PSTCom \pczigzag`*[settings]{arrows}'\c1\c2
+\\
+\PSTCom \pccoil`*[settings]{arrows}'\c1\c2
+\end{tabular}
+\end{table*}
+There are several important concepts we need to bear in mind when
+looking at the myriad of node and connector commands:
+\begin{enumerate}
+\item When joining two nodes with something like a curve, the
+connectors comes in by default on the right hand side of the object
+(at 0 degrees). If we have two boxes side by side, the \emph{angleB}
+parameter has to be set to 180 if we want the connector to come into
+the second box on its left side. This may seem cumbersome at first,
+but it makes for a flexible system;
+\item the connector labelling commands all place the label
+some proportion of the way along the connector, but they distinguish
+between the distance between nodes, and the length of the line. The
+former situation applies to constructions like matrices, where we
+want the label positions to be constant, regardless of the size of the
+nodes.
+\item The node connectors are not drawn directly in \TeX, but are done
+at the PostScript level; this means that \TeX\ is not always quite
+sure how much space will be taken up by the object. Particularly when
+curving connectors are drawn, you might find that they protrude
+outside the area allowed by \TeX --- adjust by hand.
+\end{enumerate}
+\label{shortput}
+Because labelling node connectors is a very common thing to do, a
+short cut is provided to save all the \Lcs{naput} commands etc. If the
+parameter \emph{shortput} is set to \texttt{nab}, the \verb|^| is used
+instead of \Lcs{naput} and \verb|_| instead of \Lcs{nbput}. If it is
+set to \texttt{tablr}, the \verb|^| stands for \Lcs{taput},
+\verb|_| for \Lcs{tbput},
+\verb|<| for \Lcs{tlput} and
+\verb|>| for \Lcs{trput}.
+
+If all this were not enough, all the node connectors can also be used as
+ordinary drawing tools, by using the commands listed in
+Table~\ref{PSTcondraw}, where the `pc' version corresponds to the `nc'
+node connector.
+
+Let us first demonstrate the effects of these basic building blocks:
+\end{multicols}
+\begin{longtable}{l}
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{Cat}}
+\rput(2.5,.5){\rnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\Rnode{A}{Cat}}
+\rput(2.5,.5){\Rnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\pnode(.5,.5){A}
+\pnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\cnode(.5,.5){.2}{A}
+\cnode(2.5,.5){.2}{B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\psset{radius=.3}
+\Cnode(.5,.5){A}
+\Cnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\circlenode{A}{Cat}}
+\rput(2.5,.5){\circlenode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\ovalnode{A}{Cat}}
+\rput(2.5,.5){\ovalnode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\trinode{A}{Cat}}
+\rput(2.5,.5){\trinode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\dotnode(.5,.5){A}
+\dotnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\fnode(.5,.5){A}
+\fnode(2.5,.5){B}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\dianode{A}{Cat}}
+\rput(2.5,.5){\dianode{B}{Dog}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncline{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\nccurve[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\ncarc{->}{A}{B}
+\ncarc{->}{B}{A}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncbar{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiag[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncdiagg[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangle[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncangles[angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,1.5){\rnode{B}{\psframebox{Dog}}}
+\ncloop[loopsize=.25,angleB=180]{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,2)
+\rput(1,.5){\rnode{A}{\psframebox{Cat}}}
+\nccircle{->}{A}{.5}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nccoil{A}{B}
+\end{PSTInlineExample}
+\\
+\begin{PSTInlineExample}(3,1)
+\rput(.5,.5){\rnode{A}{\psframebox{Cat}}}
+\rput(2.5,.5){\rnode{B}{\psframebox{Dog}}}
+\psset{coilarm=.01,coilwidth=.3}
+\nczigzag{A}{B}
+\end{PSTInlineExample}
+\\
+\end{longtable}
+\begin{multicols}{2}
+The effect of node connectors is demonstrated in the
+following, which uses the \Lcs{multido} macro (we will look at that in
+the next article) to place objects at
+regular intervals around a circle, and join them up
+\end{multicols}
+\begin{example*}
+\newcount\CtA
+\newcount\CtB
+\newcommand{\Wheel}[3]{{%
+\psset{unit=#2}
+\pspicture(-1,-1)(1,1)
+\SpecialCoor
+\degrees[#1]
+\multido{\ia=1+1}{#1}{%
+ \CtA=\ia
+ \advance\CtA by 1
+ \CtB=#1
+ \advance\CtB by -\ia
+ \multido{\ib=\CtA+1}
+ {\CtB}{#3(1;\ia)(1;\ib)}}
+\multido{\i=1+1}{#1}{%
+ \rput(1;\i){%
+ \pscirclebox[fillstyle=solid,
+ fillcolor=white]%
+ {\footnotesize\i}}}
+\endpspicture}}
+
+\Wheel{3}{1.8}{\psline}
+\Wheel{5}{1.8}{\psline}
+\psset{arcangle=10}
+\Wheel{12}{3}{\pcarc[linecolor=blue]}
+\end{example*}
+\begin{multicols}{2}
+It should be clear that we can draw arbitrary diagrams, trees etc
+simply by working out the coordinates of each node; however, in
+practice, there are two higher-level environments for easier creation
+of nodes --- matrices and trees.
+
+\subsection{Matrices --- grid-based nodes}
+The existing \LaTeX\ \Lenv{tabular} or AMS \LaTeX\ \Lenv{matrix} can be
+used to place nodes, but \PST\ provides its own environment,
+\Lenv{psmatrix}. This is like an easy
+form of table, since the number of columns does not have to be
+specified --- we simply separate column items by \verb|&| and rows by
+\verb|\\| as normal, and \PST\ makes each cell a node, named as
+\emph{rownumber},\emph{columnumber}. Thus the first node in the first
+row is named \texttt{1,1} and the third node in the fourth row is
+\texttt{4,3}, and these are used by the node connectors.
+
+\Lcs{psmatrix} has an optional parameter in which we can set
+\emph{rowsep} and \emph{colsep}, determining the gap between
+nodes. The parameter \emph{shortput} is set to \emph{tab} inside
+\Lcs{psmatrix} by default, so we can adopt a quite succinct notation:
+
+\begin{PSExample}(0,0)(2.5,5)
+\begin{psmatrix}[rowsep=1.5cm]
+&City&\\
+{\tiny Shack} & House & {\Large Hotel}
+\psset{arrows=<<-}
+\ncline{1,2}{2,1}<{a}
+\ncline{1,2}{2,2}>{b}
+\ncline{1,2}{2,3}>{b}
+\psset{arrows=-,linestyle=dotted}
+\ncline{2,1}{2,2}
+\ncline{2,2}{2,3}
+\end{psmatrix}
+\end{PSExample}
+
+Notice in this example that the shorthand `>' stands for \Lcs{trput},
+which places labels according to the distance between node centres,
+not the connection length, which allows for the difference in sizes
+of nodes in the second row. Nodes can span multiple columns by using
+the \Lcs{psspan} command at the end of the cell, with a parameter of
+the number of columns to span.
+
+A simple example of a square matrix can be created as follows:
+\begin{example*}
+\begin{psmatrix}
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\ncline{->}{1,1}{1,2}
+\ncline{->}{1,2}{2,2}
+\ncline{->}{2,2}{2,1}
+\ncline{->}{2,1}{1,1}
+\end{psmatrix}
+\end{example*}
+\noindent but by changing a few initial parameter settings, we can
+present a `fancier' result, with nodes encircled, arrows on
+connectors, and a better spacing. The connector labels are added with
+the short-hand forms, which are those which are positioned in relation
+to node centres. In the second version below, we redo the labels with
+the label types which relate to line length, which in this case gives
+a better result. The outer looping connector is an example of a
+construct whose extent \TeX\ will probably guess incorrectly.
+\begin{example*}
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\psset{linestyle=dotted}
+\ncline{1,1}{1,2}^{\emph{firstly}}
+\ncline{1,2}{2,2}>{\emph{next}}
+\ncline{2,2}{2,1}_{\emph{then}}
+\ncline{2,1}{1,1}<{\emph{lastly}}
+\end{psmatrix}
+\end{example*}
+
+\begin{example*}
+\psset{arrows=->,labelsep=3pt,
+linecolor=gray,mnode=circle}
+\begin{psmatrix}[rowsep=20pt,colsep=28pt]
+A & B \\
+$\sqrt{\frac{x + y}{z}}$ & D
+\psset{linestyle=dotted}
+\ncline{1,1}{1,2}\naput{\emph{firstly}}
+\ncline{1,2}{2,2}\naput{\emph{next}}
+\ncline{2,2}{2,1}\naput{\emph{then}}
+\ncline{2,1}{1,1}\naput{\emph{lastly}}
+\nccurve[ncurv=2,linestyle=solid,angleA=90]{1,1}{2,2}
+\end{psmatrix}
+\end{example*}
+
+Matrices can be nested, and it is possible to link nodes from two
+different matrices, if the nodes are given explicit names. Each
+\Lcs{psmatrix} wipes out the current set of \emph{row,column} names.
+
+\begin{example*}
+\psset{linearc=.2}
+\begin{psmatrix}[rowsep=3pt,colsep=-10pt]
+[name=A]\psframebox{requirements}\\
+&[name=B]\psframebox{design}\\
+&&[name=C]\psframebox{coding}\\
+&&&[name=D]\psframebox{testing}\\
+&&&&[name=E]\psframebox{operations}
+\psset{linearc=0,arrows=->,armA=0pt,angleB=90}
+\ncangle{A}{B}
+\ncangle{B}{C}
+\ncangle{C}{D}
+\ncangle{D}{E}
+\psset{angleB=-90,angleA=180}
+\ncangle{B}{A}
+\ncangle{C}{B}
+\ncangle{D}{C}
+\ncangle{E}{D}
+\end{psmatrix}
+\end{example*}
+
+A normal low-level \PST\
+command, like \Lcs{framebox}, can be applied to a whole matrix.
+We have to take some care in this example with alignment to make
+the connecting line horizontal, so we place the single node on the
+left in its own matrix.
+\end{multicols}
+\begin{example*}
+\psset{fillcolor=white,fillstyle=solid}
+\def\Show#1{\psshadowbox{#1}}
+\psset{arrows=->}
+\begin{psmatrix}
+ [mnode=r,ref=t,ref=t]
+ \psframebox[linestyle=none,framesep=.75]{%
+ \psset{ref=c}
+ \begin{psmatrix}
+ [name=A]\Show{Stakeholder}
+ \end{psmatrix}
+ } &
+ [mnode=r,ref=t]
+ \psframebox[fillstyle=solid,framesep=.75,fillcolor=gray]{%
+ \psset{ref=c}
+ \rule{1cm}{0pt}
+ \begin{psmatrix}
+ [name=B]\Show{Goal} &\Show{Criteria}\\
+ \Show{Sub-goal} & \Show{Justification}
+ \ncline{1,1}{1,2}
+ \ncline{1,1}{2,2}
+ \ncline{1,1}{2,1}\tlput{Strategy}
+ \ncline{2,1}{2,2}
+ \end{psmatrix}
+ }
+\ncline[angleB=-180]{A}{B}\naput[npos=.7]{Model}
+\end{psmatrix}
+\end{example*}
+\begin{multicols}{2}
+\subsection{Tree diagrams}
+\PST\ has an extremely rich environment for drawing trees, which
+allow for very complex structures and presentation. The available
+commands are listed in Table~\ref{PSTtree} and the graphical
+parameters which apply especially to these are listed in
+Table~\ref{PSTtreeparms}. As one might expect, most other commands and
+parameters are also available, from both the generalized drawing, and
+the node connectors and labels. Each of the node types described
+earlier is turned into a `tree' node, and named by prefixing it with a
+`T' and removing the `node' suffix.
+
+\end{multicols}
+\begin{small}
+\begin{longtable}{llH{10cm}}
+\caption{\protect\PST\ Graphical parameters for trees}
+\label{PSTtreeparms}\\[1mm]
+\emph{Parameter} & \emph{Default} & \emph{Explanation}\\
+\hline
+\endfirsthead
+\protect\PST\ Graphical parameters for trees \emph{cont.}\\[1mm]
+\emph{Parameter} & \emph{Default} & \emph{Explanation}\\
+\hline
+\endhead
+\mbox{}\\
+\endfoot
+\Par{bbd=dim} ()
+& set lower bounding box to \emph{dim}\\
+\Par{bbh=dim} ()
+& set upper bounding box to \emph{dim}\\
+\Par{bbl=dim} ()
+& set left bounding box to \emph{dim}\\
+\Par{bbr=dim} ()
+& set right bounding box to \emph{dim}\\
+\Par{edge=command} (\ncline)
+& the node connector used to join tree nodes\\
+\Par{fansize=dim} (1cm)
+&size of base for \Lcs{Tfan} tree node\\
+\Par{levelsep=*dim} (2cm)
+& the distance between successive levels in a tree; the * makes the dimension be \emph{in addition} to the size of the nodes (levels are normally a fixed distance apart)\\
+\Par{showbbox=true/false} (false)
+& draw a dotted frame showing the enclosing rectangle of trees\\
+\Par{thislevelsep=*dim} ()
+& like \emph{levelsep} but applies only to the current tree\\
+\Par{thistreefit=tight/loose} ()
+& like \emph{treefit} but applies only to the current tree\\
+\Par{thistreenodesize=dim} ()
+& like \emph{treenodesize} but applies only to the current tree\\
+\Par{thistreesep=dim} ()
+& like \emph{treesep} but applies only to the current tree\\
+\Par{tndepth=dim} ()
+& the minimum depth of tree node labels\\
+\Par{tnheight=dim} ()
+& the minimum height of tree node labels\\
+\Par{tnpos=l/r/a/b} (b)
+& the position of tree node labels relative to the node (left, right,
+above, below) \\
+\Par{tnsep=dim} ()
+& the gap between tree node labels and the node (by default the same as
+\emph{labelsep} \\
+\Par{treefit=tight/loose} (tight)
+& if tight, \emph{treesep} is the minimum distance between nodes on any level; if loose, \emph{treesep} is the distance between the enclosing
+bounding boxes of subtrees\\
+\Par{treeflip=true/false} (false)
+& does a mirror image of the free, flipping the nodes\\
+\Par{treemode=R/L/U/D} (D)
+& the direction of tree growth (right, left, up and down)\\
+\Par{treenodes=dim} ($-$1pt)
+& if positive, this sets a fixed size for tree nodes, regardless of content\\
+\Par{treesep=dim} (0.75cm)
+& the distance between successive nodes in a tree\\
+\Par{xbbd=dim} ()
+& increase lower bounding box by \emph{dim}\\
+\Par{xbbh=dim} ()
+& increase upper bounding box by \emph{dim}\\
+\Par{xbbl=dim} ()
+& increase left bounding box by \emph{dim}\\
+\Par{xbbr=dim} ()
+& increase right bounding box by \emph{dim}\\
+\end{longtable}
+\end{small}
+
+\begin{small}
+\begin{longtable}{lH{.5\textwidth}}
+\caption{\protect\PST\ tree drawing commands\label{PSTtree}}\\
+\hline
+\endfirsthead
+\multicolumn{2}{l}{\protect\PST\ tree drawing commands \emph{cont.}}\\
+\hline
+\endhead
+\PSTCom \PStree{node}{subtrees}
+& draws a node and subtrees connected to it\\
+\PSTCom \PSTree{rootnode} subtrees
+%\endpsTree
+& an `environment' form of \Lcs{psTree}\\
+\PSTCom \Tn
+& null tree node \\
+\PSTCom \tspace{dim}
+& leave gap of \emph{dim} before next level\\
+\PSTComOpt \TC
+& tree node like \Lcs{Cnode} node\\
+\PSTComOpt \TR{something}
+& tree node like \Lcs{Rnode} node\\
+\PSTComOpt \Tcircle{something}
+& tree node like \Lcs{circlenode} node\\
+\PSTComOpt \Tc{dim}
+& tree node like \Lcs{cnode} node\\
+\PSTComOpt \Tdia{something}
+& tree node like \Lcs{dianode} node\\
+\PSTComOpt \Tdot
+& tree node like \Lcs{dotnode} node\\
+\PSTComOpt \Tf
+& tree node like \Lcs{fnode} node\\
+\PSTComOpt \Tfan
+& draws a triangle with a top corner of the predecessor node\\
+\PSTComOpt \Toval{something}
+& tree node like \Lcs{ovalnode} node\\
+\PSTComOpt \Tp
+& tree node like \Lcs{pnode} node\\
+\PSTComOpt \Tr{something}
+& tree node like \Lcs{rnode} node\\
+\PSTComOpt \Ttri{something}
+& tree node like \Lcs{trinode} node\\
+\PSTComOpt \skiplevel {nodes or subtrees}
+& miss out entire levels in a particular subtree\\
+\PSTComOpt \skiplevels{n} {nodes or subtrees}
+& skip \emph{n} levels\\
+\end{longtable}
+\end{small}
+
+\begin{multicols}{2}
+The fundamental concept in \PST\ trees is the \emph{nesting} of trees;
+a simple tree consists of a root, and one or more nodes:
+\begin{example*}
+\pstree{\TC}{\TC\TC}
+\end{example*}
+\noindent but each node can itself be a tree:
+\begin{example*}
+\pstree{\TC}{\pstree{\TC}{\TC \TC}
+ \pstree{\TC}{\TC \TC}}
+\end{example*}
+This simple constructs allows very complicated structures to be
+erected, as the examples below show.
+
+The following tree is a version of that shown in the \emph{\LaTeX\ Companion},
+section 10.5.2, which was drawn using the \Lpack{ecltree} package; the
+ease of notation is roughly similar. As often in \LaTeX, the
+readability depends a great deal on how the code is laid out. The
+only change to the defaults is to lessen the vertical space between
+trees, and add some extra space around nodes.
+\begin{example*}
+\pstree[nodesep=2pt,
+ levelsep=20pt]{\TR{grandfather}}
+{
+ \pstree{\TR{uncle}}{\TR{cousin}}
+ \pstree{\TR{father}}
+ {
+ \pstree{\TR{brother}}{\TR{nephew}}
+ \pstree{\TR{Me}}
+ {
+ \pstree{\TR{son}}{\TR{grandson}}
+ }
+ }
+}
+\end{example*}
+
+If we now consider another tree drawing package described in
+the \emph{\LaTeX\ Companion}, Vanroose's \Lpack{trees}, the example in section
+10.2.3 is a little harder to reproduce. The skeleton is trivial:
+\begin{example*}
+\pstree{\Tdot}
+{
+\Tdot
+\pstree{\Tdot}
+ {
+ \pstree{\Tdot}
+ {
+ \Tdot
+ \Tdot
+ \Tdot
+ }
+ \Tdot
+ }
+}
+\end{example*}
+
+\noindent but when we come to add in all the node and connector labels, and
+change a few parameters to make the result nicer, the markup becomes a
+little complex, though the quantity is roughly similar to that of Vanroose:
+
+\begin{example*}
+\psset{labelsep=2pt,tnpos=a,radius=2pt}
+\pstree[treemode=R]{\TC*~{25}}
+{
+\TC*~{5}~[tnpos=r]{$L_a$}
+\taput{$a$}
+\pstree{\TC*~{20}\tbput{$b$}}
+ {
+ \pstree{\TC*~{15}\taput{$a$}}
+ {
+ \TC*~{7}~[tnpos=r]{$L_{baa}$}\taput{$a$}
+ \TC*~{5}~[tnpos=r]{$L_{bab}$}\taput{$b$}
+ \TC*~{3}~[tnpos=r]{$L_{bac}$}\tbput{$c$}
+ }
+ \TC*~{5}~[tnpos=r]{$L_{bb}$}
+ \tbput{$b$}
+ }
+}
+\end{example*}
+
+The node connectors in a tree are created by running
+the macro \Lcs{psedge} with the two nodes; the definition of
+\Lcs{psedge} can be overridden explicitly by a redefinition, or by
+using the \emph{edge} parameter. Here we redefine \Lcs{psedge} to be a
+curve, arrange the angles (bearing in mind that the tree is to grow
+upwards), and obtain a pleasing result. Note also the explicit links
+between named nodes, as well as the regular connections.
+\end{multicols}
+\begin{example*}
+\footnotesize
+\def\psedge{\nccurve}
+\newcommand{\Female}[2][]{\TR[#1]{\emph{#2}}}
+\newcommand{\Male}[2][]{\TR[#1]{#2}}
+\psset{nodesep=2pt,angleA=90,angleB=-90,unit=.6cm}
+\pstree[treemode=U]{\Female{{\bfseries Matilde}}}{
+ \pstree{\Male{Sebastian}}{
+ \pstree{\Male[name=P]{Philip}}{\Male{Frederick}\Female{Ethel}}
+ \pstree{\Female[name=W]{Mary}}{\Male{Lionel}\Female{Agnes}}}
+ \pstree{\Female{Leonor}}{
+ \pstree{\Male[name=R]{Ra\'ul}}{\Male{Joaquim}\Female{J\'ulia}}
+ \pstree{\Female[name=A]{Am\'elia}}{\Male{Melo}\Female{Augusta}}}
+}
+\psset{doubleline=true,linestyle=dotted}
+\ncline{P}{W}\nbput{1940}
+\ncline{R}{A}\nbput{1950}
+\end{example*}
+\begin{multicols}{2}
+We said earlier that \PST\ does not always work out the extent of
+objects correctly, and this is illustrated by the connectors in the
+following example. Turning on \emph{showbbox}, we can see that without
+the use of \emph{xbbl} etc in the second incarnation, the bounding box
+is not correct:
+\begin{example*}
+\psset{angleB=-90,arrows=->,nrot=:U}
+\def\molesworth#1{%
+ \pstree[#1]{\Tdia{ }}
+ {
+ \Tp[arrows=->,edge={\ncbar[angleA=180]}]
+ \nbput{Gabbitas}
+ {\psset{linestyle=dashed,arrows=-} \Tp }
+ \Tp[arrows=->,edge={\ncbar}]
+ \naput{Thring}
+ }
+}
+\psset{showbbox=true}
+\begin{tabular}{l}
+\molesworth{}\\[10pt]
+\molesworth{xbbl=1cm,xbbr=1cm}
+\end{tabular}
+\end{example*}
+
+The technique of redefining edges is also necessary if we want
+right-angled joins, rather than straight lines. Again, we need to take
+care of the \emph{angleA} and \emph{angleB}, and ensure that in this
+left-right tree the nodes all line up on their left edges, using the
+\emph{ref} parameter. If this is not done, the \Lcs{ncangle} edges
+produce strange results.
+\begin{example*}
+\def\Item#1{\Tr[ref=l]{%
+ \psframebox[linestyle=none]{#1}}}
+\def\psedge{\ncangle}
+\psset{xbbd=1.5cm,treemode=R,
+ angleB=-180,angleA=0,levelsep=72pt}
+\pstree{\Item{langs}}{%
+ \Item{german}
+ \pstree{\Item{greek}}{%
+ \Item{hamilton-kelly}
+ \pstree{\Item{levy}}{%
+ \Item{doc}
+ \Item{src}
+ }
+ }
+ \Item{italian}
+ \pstree{\Item{portuguese}}{
+ \Item{hyphenation}
+ }
+ \pstree{\Item{turkish}}{%
+ \Item{doc}
+ \Item{hyphen}
+ \Item{inputs}
+ \Item{mf}
+ \Item{misc}
+ }
+\Item{xettex}
+}
+\end{example*}
+
+This allows us to remake the small family again, but this time with
+nicer connectors:
+\begin{example*}
+\def\XX#1{%
+ \Tr{\psframebox{\rule{0pt}{9pt}#1}}%
+}
+\def\psedge{\ncangle}
+\psset{angleB=90,angleA=-90,
+ levelsep=36pt,armB=14pt}
+\pstree{\XX{grandmother}}
+{%
+\pstree{\XX{aunt}}{\XX{cousin}}
+\pstree{\XX{mother}}
+ {
+ \pstree{\XX{sister}}{\XX{niece}}
+ \pstree{\XX{Me}}
+ {
+ \pstree{\XX{daughter}}
+ {\XX{granddaughter}}
+ }
+ }
+}
+\end{example*}
+The node connectors are, of course, standard \PST\ objects, so they
+obey all the normal parameters; here we draw the lower part of the
+tree with dashed lines, and each node content is set in math mode.
+\begin{example*}
+\footnotesize
+\psset{nodesep=2pt}
+\def\XX#1#2{%
+ \TR{\ensuremath{#1_{\mbox{#2}}}}%
+}
+\pstree[xbbr=1.5cm]{\XX{R}{AMSU}}
+ {
+ \XX{S}{RawData}
+ \pstree{\XX{S}{combine}
+ \trput{\ensuremath{\oplus}}
+ \tlput{\ensuremath{\oplus}}}
+ {
+ \psset{linestyle=dashed}
+ \XX{R}{Modes}
+ \XX{R}{Normal}
+ \XX{R}{Vertical}
+ \XX{R}{Latched}
+ \XX{R}{Tripped}
+ }
+ \XX{S}{GenerateData}
+ }
+\end{example*}
+
+If we want to hang distinct-looking trees off one node,
+the \emph{ncangle} connector, with some offsets, produces the right result.
+ \begin{example*}
+\psset{framearc=.2,levelsep=4cm,
+ armB=1cm,angleB=-180}
+\def\psedge{\ncangle}
+\def\TreeBox#1{\Tr{\psframebox{#1}}}
+\pstree[treemode=R]{\TreeBox{Monitor}}
+{
+ \psset{offsetA=4pt}
+ \TreeBox{Attitude Generator}
+ \naput[npos=2.5]{{\small init}}
+ \nbput[npos=2.5]{{\small stop}}
+ \psset{offsetA=-4pt}
+ \TreeBox{Normal Generator}
+}
+\end{example*}
+
+With simple connectors, we do not need to worry about the offsets or
+angles; what this example shows is how nested trees can change direction:
+
+\begin{example*}
+\psset{arrows=->,framearc=.2}
+\def\Treebox#1{%
+ \Tr{\psframebox{#1}}
+}
+\pstree[treemode=R]
+{\Treebox{A$\rightarrow$B}}{
+\pstree{
+ \Treebox{B$\rightarrow$C}
+ }{
+ \Treebox{A$\rightarrow$D}
+\pstree[treemode=L]
+ {\Treebox{B$\rightarrow$E}}
+ {\Tn\TC[arrows=<-]}
+ }
+}
+\end{example*}
+
+Finally, let us not forget the simple empty node:
+\begin{example*}
+\pstree{\Tp}{
+ \Tcircle{A}
+ \Tcircle{B}
+}
+\end{example*}
+\end{Article}
+\end{document}
diff --git a/usergrps/uktug/baskervi/6_2/spqr/spqr.sty b/usergrps/uktug/baskervi/6_2/spqr/spqr.sty
new file mode 100644
index 0000000000..3175036e1e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/spqr.sty
@@ -0,0 +1,150 @@
+\RequirePackage{pstcol}
+\RequirePackage{fancyvrb}
+\RequirePackage{shortvrb}
+\RequirePackage{array,longtable}
+\definecolor{wheat}{rgb}{.96, .87, .7}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{pink}{rgb}{1, .75, .8}
+\definecolor{palegreen}{rgb}{.6, .98, .6}
+\definecolor{white}{rgb}{1, 1, 1 }
+\catcode`\<=13
+\def\Main#1{{\MainFont\string#1}}
+\def\MainFont{\ttfamily\upshape} % For macro definitions.
+\def\ArgFont{\sffamily\mdseries\upshape} % For meta arguments.
+\def\OptArgFont{\sffamily\mdseries\itshape} % For optional arguments.
+\def<#1>{{\normalfont\itshape#1\/}}
+% parameter descriptions are always in a table
+\def\Par#1{\@ifnextchar({\@Par#1}{\@@Par#1()}}
+\def\@Par#1=#2(#3){%
+ {\normalfont #1}={\ArgFont#2}& #3}
+% Short-cuts for coordinates:
+\def\x#1{{\normalfont\itshape $x$#1\/}}
+\def\y#1{{\normalfont\itshape $y$#1\/}}
+\def\z#1{{\normalfont\itshape $z$#1\/}}
+\def\c#1{(\x{#1},\kern 1pt\y{#1})}
+\def\cAny{(\x{},\kern 1pt\y{})}
+% In each case:
+% 1. definition is delimited only by end-of-line.
+% 2. {}, () and [] are literal, with contents set in \ArgFont
+% 3. = and , are literal.
+% 4. `foo' is for optional arguments.
+% 5. <foo> is meta, as usual.
+\begingroup
+ \catcode`\<=1 \catcode`\>=2
+ \catcode`\{=13 \catcode`\}=12
+ \catcode`\[=13
+ \gdef\@MD<%
+ \catcode`\{=13 \catcode`\}=12 \catcode`\[=13
+ \def{##1}<\{<\ArgFont ##1\/>\}>%
+ \def[##1]<\string[<\ArgFont ##1\/>]>>
+\endgroup
+\begingroup
+ \catcode`\(=13
+ \catcode`\,=13
+ \catcode`\==13
+ \gdef\MacroDefCodes{%
+ \@MD
+ \catcode`\(13
+ \catcode`\^^M12
+ \catcode`\`13
+ \catcode`\,13
+ \catcode`\!1
+ \catcode`\@2
+ \def~{}%
+ \def={{\fontshape{n}\selectfont\string=}}%
+ \def,{{\fontshape{n}\selectfont\string,}}%
+ \def(##1){\string({\ArgFont ##1})}}
+\endgroup
+
+\begingroup
+ \catcode`\`=13 \gdef`#1'{{\OptArgFont #1}}
+\endgroup
+
+\begingroup
+ \catcode`\^^M=12\relax%
+ \gdef\GetMacroDef#1{\begingroup\MacroDefCodes\@GetMacroDef{#1}}%
+ \gdef\@GetMacroDef#1#2^^M{#1{#2}\endgroup}%
+\endgroup
+
+% For listing macro definitions in a "description" environment:
+\def\PSTCom{\GetMacroDef\@PSCom}
+\def\@PSCom#1{\@@PSCom#1\@nil}
+\def\@@PSCom#1\@nil{\MainFont\Main#1}
+\def\PSTComOpt{\GetMacroDef\@PSTComOpt}
+\def\@PSTComOpt#1{\@@PSComOpt#1\@nil}
+\def\@@PSComOpt#1#2\@nil{\@PSCom{#1{\OptArgFont*[{\ArgFont settings}]}#2}}
+\MakeShortVerb{\"}
+\DeleteShortVerb{\|}
+\def\PST{\textsf{PSTricks}}
+\def\PS{\textsc{PostScript}}
+\def\Special{{\normalfont\ttfamily\char'134special}}
+\def\Lcs#1{{\normalfont\ttfamily\char'134#1}}
+\def\Program#1{\emph{#1}}
+\def\Lpack#1{\emph{#1}}
+%----------- Zandtisms --------------------
+\def\Usage#1{{\UsageFont\string#1}}
+\def\MainFont{\fontfamily{\ttdefault}\fontseries{bc}\fontshape{n}\selectfont
+\large}% For macro definitions.
+\def\UsageFont{\fontfamily{\ttdefault}\fontseries{bc}\fontshape{n}\selectfont}
+ % For in-line macro names.
+\def\InlineFont{\ttfamily} % For other in-line snipets of code.
+\let\main\textbf
+\let\usage\emph
+% ---------- for array.sty --------------
+\def\arraybackslash{\let\\=\@arraycr}
+\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
+\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+% ----------- harvard-style citations ------------------
+\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+\def\ETAL{{\em et al\/}}%
+
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{; }\@ifundefined
+ {b@\@citeb}{$\underline{\mbox{\@citeb}}$\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+% label for a bibliography citation not produced
+ \def\@biblabel#1{\hfill}
+
+% with page or fig no
+\def\Cite#1#2{\cite[#2]{#1}}%
+% year only, with page or fig no
+\def\Yearcite#1#2{\yearcite[#2]{#1}}%
+\let\@internalcite\cite
+\def\cite{\def\citename##1{##1}\@internalcite}%
+% \yearcite gives only the date
+\def\yearcite{\def\citename##1{}\@internalcite}%
+%
+\def\endPSExample{%
+ \EndExample
+\VerbatimInput[gobble=0,fontsize=\small,
+% frame=topline,
+framerule=1.5pt]{\EXdir\theeps@counter}%
+\begin{center}
+ \ifgrid\vskip 8pt \fi
+ \expandafter\pspicture\PictureSize
+ \ifgrid\usergrid\else\relax\fi
+ \input{\EXdir\theeps@counter}
+ \endpspicture
+ \ifgrid\vskip 8pt \fi
+ \EndRuleExample
+\end{center}
+ }%
+\renewenvironment{example**}%
+{\def\Write@Ex##1{}\BeginExample}%
+{%
+\EndExample
+\VerbatimInput[gobble=0,fontsize=\small,
+ %frame=topline,
+framerule=1.5pt]{\EXdir\theeps@counter}%
+\begin{center}
+\input{\EXdir\theeps@counter}
+ \EndRuleExample
+\end{center}
+}
+\def\Lenv#1{\texttt{#1}}
+\newcolumntype{H}[1]{>{\raggedright\hangindent=.5em\arraybackslash}p{#1}}
+\def\Figword{Fig.~}
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/spqr/textpath.pro b/usergrps/uktug/baskervi/6_2/spqr/textpath.pro
new file mode 100644
index 0000000000..84014b226d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/textpath.pro
@@ -0,0 +1,99 @@
+%!
+% PostScript header file textpath.pro
+% For putting text along curve with textpath.tex and PSTricks
+% Version: 0.93b, for use with PSTricks v0.93a.
+% Date: 94/04/20
+% For copying restrictions, see pstricks.doc or pstricks.tex.
+
+/tx@TextPathDict 40 dict def
+tx@TextPathDict begin
+
+% Syntax: <dist> PathPosition -
+% Function: Searches for position of currentpath distance <dist> from
+% beginning. Sets (X,Y)=position, and Angle=tangent.
+/PathPosition
+{ /targetdist exch def
+ /pathdist 0 def
+ /continue true def
+ /X { newx } def /Y { newy } def /Angle 0 def
+ gsave
+ flattenpath
+ { movetoproc } { linetoproc } { } { firstx firsty linetoproc }
+ /pathforall load stopped { pop pop pop pop /X 0 def /Y 0 def } if
+ grestore
+} def
+
+/movetoproc { continue { @movetoproc } { pop pop } ifelse } def
+
+/@movetoproc
+{ /newy exch def /newx exch def
+ /firstx newx def /firsty newy def
+} def
+
+/linetoproc { continue { @linetoproc } { pop pop } ifelse } def
+
+/@linetoproc
+{
+ /oldx newx def /oldy newy def
+ /newy exch def /newx exch def
+ /dx newx oldx sub def
+ /dy newy oldy sub def
+ /dist dx dup mul dy dup mul add sqrt def
+ /pathdist pathdist dist add def
+ pathdist targetdist ge
+ { pathdist targetdist sub dist div dup
+ dy mul neg newy add /Y exch def
+ dx mul neg newx add /X exch def
+ /Angle dy dx atan def
+ /continue false def
+ } if
+} def
+
+/TextPathShow
+{ /String exch def
+ /CharCount 0 def
+ String length
+ { String CharCount 1 getinterval ShowChar
+ /CharCount CharCount 1 add def
+ } repeat
+} def
+
+% Syntax: <pathlength> <position> InitTextPath -
+/InitTextPath
+{ gsave
+ currentpoint /Y exch def /X exch def
+ exch X Hoffset sub sub mul
+ Voffset Hoffset sub add
+ neg X add /Hoffset exch def
+ /Voffset Y def
+ grestore
+} def
+
+/Transform
+{ PathPosition
+ dup
+ Angle cos mul Y add exch
+ Angle sin mul neg X add exch
+ translate
+ Angle rotate
+} def
+
+/ShowChar
+{ /Char exch def
+ gsave
+ Char end stringwidth
+ tx@TextPathDict begin
+ 2 div /Sy exch def 2 div /Sx exch def
+ currentpoint
+ Voffset sub Sy add exch
+ Hoffset sub Sx add
+ Transform
+ Sx neg Sy neg moveto
+ Char end tx@TextPathSavedShow
+ tx@TextPathDict begin
+ grestore
+ Sx 2 mul Sy 2 mul rmoveto
+} def
+
+end
+% End textpath.pro
diff --git a/usergrps/uktug/baskervi/6_2/spqr/textpath.sty b/usergrps/uktug/baskervi/6_2/spqr/textpath.sty
new file mode 100644
index 0000000000..85d8b533f9
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/textpath.sty
@@ -0,0 +1,4 @@
+%% BEGIN: textpath.sty
+\input textpath.tex
+\endinput
+%% END: textpath.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr/textpath.tex b/usergrps/uktug/baskervi/6_2/spqr/textpath.tex
new file mode 100644
index 0000000000..8a5bd73e47
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr/textpath.tex
@@ -0,0 +1,97 @@
+%% BEGIN textpath.tex/textpath.sty
+%%
+%% For placing text on a path with PSTricks.
+%%
+\def\fileversion{0.93b} % For use with PSTricks v0.93a.
+\def\filedate{94/04/20}
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.tex or pstricks.doc for copying restrictions.
+%%
+%% See the PSTricks User's Guide for description.
+%% See tp-test.tex for sample input.
+%% See tp-test.ps for sample output.
+%%
+%% This uses the header file textpath.ps.
+
+\message{ v\fileversion, \filedate}
+
+\csname PSTextPathLoaded\endcsname
+\let\PSTextPathLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex}\expandafter\next
+\fi
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+\pstheader{textpath.pro}
+
+\def\pstextpath{\@ifnextchar[{\pstextpath@}{\pstextpath@[l]}}
+\def\pstextpath@[#1]{%
+ \@ifnextchar({\pstextpath@@[#1]}{\pstextpath@@[#1](0,\TPoffset)}}
+\def\pstextpath@@[#1](#2)#3{\pst@makebox{\pstextpath@@@[#1](#2){#3}}}
+\def\pstextpath@@@[#1](#2,#3)#4{%
+ \pst@killglue
+ \begingroup
+ \ifx c#1\relax
+ \def\pst@tempa{.5}%
+ \else
+ \ifx r#1\relax
+ \def\pst@tempa{1}%
+ \else
+ \def\pst@tempa{0}%
+ \fi
+ \fi
+ \def\use@pscode{%
+ \pst@Verb{%
+ /mtrxc CM def
+ \tx@STV
+ CP translate
+ newpath
+ \pst@code\space
+ mtrxc setmatrix
+ 0 setgray}%
+ \gdef\pst@code{}}%
+ \def\psclip#1{\pst@misplaced\psclip}%
+ \let\endpsclip\relax
+ \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}%
+ \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}%
+ \def\PSTtoEPS@i##1##2{\pst@misplaced\PSTtoEPS}%
+ \pssetlength\pst@dima{#2}%
+ \pssetlength\pst@dimb{#3}%
+ \setbox\pst@hbox\hbox{%
+ \hbox to\z@{%
+ \kern -\wd\pst@hbox
+ % BoxWidth = CurrX - Hoffset.
+ \pstVerb{tx@TextPathDict begin
+ currentpoint pop /Hoffset exch def end}%
+ \kern\pst@dima
+ % XOffset = Voffset - Hoffset (extra horizontal skip)
+ \pstVerb{tx@TextPathDict begin
+ currentpoint pop /Voffset exch def end}%
+ \hss
+ \pstVerb{%
+ /tx@TextPathSavedShow /show load def
+ \pst@dict \tx@PathLength end
+ dup 0 gt
+ { tx@TextPathDict begin \pst@tempa\space InitTextPath end
+ /show { tx@TextPathDict begin TextPathShow end } def
+ }
+ { pop }
+ ifelse}}%
+ \raise\pst@dimb\box\pst@hbox
+ \pstVerb{%
+ currentpoint newpath moveto
+ /show /tx@TextPathSavedShow load def}}%
+ \wd\pst@hbox=\z@ \dp\pst@hbox=\z@ \ht\pst@hbox=\z@
+ \leavevmode
+ \hbox{{#4}\box\pst@hbox}%
+ \endgroup\ignorespaces}
+\def\TPoffset{-.7ex}
+
+\catcode`\@=\TheAtCode\relax
+
+\endinput
+%% END textpath.tex/textpath.sty
diff --git a/usergrps/uktug/baskervi/6_2/spqr2.sty b/usergrps/uktug/baskervi/6_2/spqr2.sty
new file mode 100644
index 0000000000..b065bf58e1
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr2.sty
@@ -0,0 +1,14 @@
+\def\endPSTInlineExample{%
+ \EndExample
+\begin{minipage}[t]{0.35\textwidth}
+ \expandafter\pspicture\PictureSize
+ \usergrid
+ \input{\EXdir\theeps@counter}%
+ \endpspicture
+\end{minipage}
+\begin{minipage}[t]{0.5\textwidth}
+ \hspace{16pt}\raisebox{3ex}{%
+ \BVerbatimInput[gobble=0,fontsize=\small]{\EXdir\theeps@counter}}%
+\end{minipage}
+}
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/spqr3.sty b/usergrps/uktug/baskervi/6_2/spqr3.sty
new file mode 100644
index 0000000000..3175036e1e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/spqr3.sty
@@ -0,0 +1,150 @@
+\RequirePackage{pstcol}
+\RequirePackage{fancyvrb}
+\RequirePackage{shortvrb}
+\RequirePackage{array,longtable}
+\definecolor{wheat}{rgb}{.96, .87, .7}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{pink}{rgb}{1, .75, .8}
+\definecolor{palegreen}{rgb}{.6, .98, .6}
+\definecolor{white}{rgb}{1, 1, 1 }
+\catcode`\<=13
+\def\Main#1{{\MainFont\string#1}}
+\def\MainFont{\ttfamily\upshape} % For macro definitions.
+\def\ArgFont{\sffamily\mdseries\upshape} % For meta arguments.
+\def\OptArgFont{\sffamily\mdseries\itshape} % For optional arguments.
+\def<#1>{{\normalfont\itshape#1\/}}
+% parameter descriptions are always in a table
+\def\Par#1{\@ifnextchar({\@Par#1}{\@@Par#1()}}
+\def\@Par#1=#2(#3){%
+ {\normalfont #1}={\ArgFont#2}& #3}
+% Short-cuts for coordinates:
+\def\x#1{{\normalfont\itshape $x$#1\/}}
+\def\y#1{{\normalfont\itshape $y$#1\/}}
+\def\z#1{{\normalfont\itshape $z$#1\/}}
+\def\c#1{(\x{#1},\kern 1pt\y{#1})}
+\def\cAny{(\x{},\kern 1pt\y{})}
+% In each case:
+% 1. definition is delimited only by end-of-line.
+% 2. {}, () and [] are literal, with contents set in \ArgFont
+% 3. = and , are literal.
+% 4. `foo' is for optional arguments.
+% 5. <foo> is meta, as usual.
+\begingroup
+ \catcode`\<=1 \catcode`\>=2
+ \catcode`\{=13 \catcode`\}=12
+ \catcode`\[=13
+ \gdef\@MD<%
+ \catcode`\{=13 \catcode`\}=12 \catcode`\[=13
+ \def{##1}<\{<\ArgFont ##1\/>\}>%
+ \def[##1]<\string[<\ArgFont ##1\/>]>>
+\endgroup
+\begingroup
+ \catcode`\(=13
+ \catcode`\,=13
+ \catcode`\==13
+ \gdef\MacroDefCodes{%
+ \@MD
+ \catcode`\(13
+ \catcode`\^^M12
+ \catcode`\`13
+ \catcode`\,13
+ \catcode`\!1
+ \catcode`\@2
+ \def~{}%
+ \def={{\fontshape{n}\selectfont\string=}}%
+ \def,{{\fontshape{n}\selectfont\string,}}%
+ \def(##1){\string({\ArgFont ##1})}}
+\endgroup
+
+\begingroup
+ \catcode`\`=13 \gdef`#1'{{\OptArgFont #1}}
+\endgroup
+
+\begingroup
+ \catcode`\^^M=12\relax%
+ \gdef\GetMacroDef#1{\begingroup\MacroDefCodes\@GetMacroDef{#1}}%
+ \gdef\@GetMacroDef#1#2^^M{#1{#2}\endgroup}%
+\endgroup
+
+% For listing macro definitions in a "description" environment:
+\def\PSTCom{\GetMacroDef\@PSCom}
+\def\@PSCom#1{\@@PSCom#1\@nil}
+\def\@@PSCom#1\@nil{\MainFont\Main#1}
+\def\PSTComOpt{\GetMacroDef\@PSTComOpt}
+\def\@PSTComOpt#1{\@@PSComOpt#1\@nil}
+\def\@@PSComOpt#1#2\@nil{\@PSCom{#1{\OptArgFont*[{\ArgFont settings}]}#2}}
+\MakeShortVerb{\"}
+\DeleteShortVerb{\|}
+\def\PST{\textsf{PSTricks}}
+\def\PS{\textsc{PostScript}}
+\def\Special{{\normalfont\ttfamily\char'134special}}
+\def\Lcs#1{{\normalfont\ttfamily\char'134#1}}
+\def\Program#1{\emph{#1}}
+\def\Lpack#1{\emph{#1}}
+%----------- Zandtisms --------------------
+\def\Usage#1{{\UsageFont\string#1}}
+\def\MainFont{\fontfamily{\ttdefault}\fontseries{bc}\fontshape{n}\selectfont
+\large}% For macro definitions.
+\def\UsageFont{\fontfamily{\ttdefault}\fontseries{bc}\fontshape{n}\selectfont}
+ % For in-line macro names.
+\def\InlineFont{\ttfamily} % For other in-line snipets of code.
+\let\main\textbf
+\let\usage\emph
+% ---------- for array.sty --------------
+\def\arraybackslash{\let\\=\@arraycr}
+\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
+\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
+% ----------- harvard-style citations ------------------
+\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+\def\ETAL{{\em et al\/}}%
+
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{; }\@ifundefined
+ {b@\@citeb}{$\underline{\mbox{\@citeb}}$\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+% label for a bibliography citation not produced
+ \def\@biblabel#1{\hfill}
+
+% with page or fig no
+\def\Cite#1#2{\cite[#2]{#1}}%
+% year only, with page or fig no
+\def\Yearcite#1#2{\yearcite[#2]{#1}}%
+\let\@internalcite\cite
+\def\cite{\def\citename##1{##1}\@internalcite}%
+% \yearcite gives only the date
+\def\yearcite{\def\citename##1{}\@internalcite}%
+%
+\def\endPSExample{%
+ \EndExample
+\VerbatimInput[gobble=0,fontsize=\small,
+% frame=topline,
+framerule=1.5pt]{\EXdir\theeps@counter}%
+\begin{center}
+ \ifgrid\vskip 8pt \fi
+ \expandafter\pspicture\PictureSize
+ \ifgrid\usergrid\else\relax\fi
+ \input{\EXdir\theeps@counter}
+ \endpspicture
+ \ifgrid\vskip 8pt \fi
+ \EndRuleExample
+\end{center}
+ }%
+\renewenvironment{example**}%
+{\def\Write@Ex##1{}\BeginExample}%
+{%
+\EndExample
+\VerbatimInput[gobble=0,fontsize=\small,
+ %frame=topline,
+framerule=1.5pt]{\EXdir\theeps@counter}%
+\begin{center}
+\input{\EXdir\theeps@counter}
+ \EndRuleExample
+\end{center}
+}
+\def\Lenv#1{\texttt{#1}}
+\newcolumntype{H}[1]{>{\raggedright\hangindent=.5em\arraybackslash}p{#1}}
+\def\Figword{Fig.~}
+\endinput
diff --git a/usergrps/uktug/baskervi/6_2/sverb.sty b/usergrps/uktug/baskervi/6_2/sverb.sty
new file mode 100644
index 0000000000..f5db8e449e
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/sverb.sty
@@ -0,0 +1,356 @@
+%%
+%% This is file `sverb.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% sverb.dtx (with options: `package')
+%%
+%% IMPORTANT NOTICE
+%%
+%% sverb package -- handling of verbatim text
+%% Copyright (c) 1996 Mark Wooding
+%%
+%% 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 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{sverb}
+ [1996/05/08 1.02 Verbatim typesetting]
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\def\@cspecials{%
+ \begingroup%
+ \catcode`|0%
+ \catcode`<1%
+ \catcode`>2%
+ \catcode`\{12%
+ \catcode`\}12%
+ \catcode`\\12%
+}
+\def\sv@startlisting{%
+ \def\par{\@@par\penalty\interlinepenalty}%
+ \@@par%
+ \leftskip\@totalleftmargin%
+ \obeylines%
+ \@noligs%
+ \let\do\@makeother\dospecials%
+ \verbatim@font%
+ \frenchspacing%
+ \@vobeyspaces%
+ \settabwidth%
+ \catcode9\active%
+ \lccode`\~9\lowercase{\let~\sv@vtab}%
+ \lccode`\~13\lowercase{\let~\vinput@cr}%
+ \interlinepenalty500%
+}
+\newdimen\svtab
+\def\settabwidth{\setbox\z@\hbox{\texttt{\space}}\svtab8\wd\z@}
+\def\sv@vtab{%
+ \hfill\egroup%
+ \@tempdima\wd\z@%
+ \divide\@tempdima\svtab%
+ \multiply\@tempdima\svtab%
+ \advance\@tempdima\svtab%
+ \wd\z@\@tempdima%
+ \leavevmode\box\z@%
+ \setbox\z@\hbox\bgroup%
+}
+\def\verbinput#1{%
+ \begin{listinglist}%
+ \listingsize%
+ \sv@startlisting%
+ \setbox\z@\hbox\bgroup%
+ \input{#1}%
+ \sv@stripspc%
+ \egroup%
+ \ifdim\wd\z@=\z@%
+ \ifhmode\par\fi%
+ \else%
+ \leavevmode\box\z@\par%
+ \fi%
+ \end{listinglist}%
+}
+\def\vinput@cr{%
+ \egroup%
+ \leavevmode\box\z@%
+ \par%
+ \setbox\z@\hbox\bgroup%
+}
+\newif\if@matched
+\def\matcher#1#2#3{%
+ \expandafter\def\csname\string#1$match\endcsname##1#2##2##3\end{%
+ \ifx##2\relax%
+ \@matchedfalse%
+ \else%
+ \@matchedtrue%
+ \fi%
+ #3{##1}%
+ }%
+ \expandafter\def\expandafter#1\expandafter##\expandafter1\expandafter{%
+ \csname\string#1$match\endcsname##1#2\relax\end%
+ }%
+}
+\def\sv@stripspc{%
+ \unpenalty%
+ \ifdim\lastskip=\z@\else%
+ \unskip\expandafter\sv@stripspc%
+ \fi%
+}
+\begingroup
+\catcode`\%=12
+\gdef\sv@percent#1#2\relax
+ {\ifx\check@percent\@@undefined
+ \ifx#1\relax\def\@tempa{}\else
+ \def\@tempa{#1#2}\fi\else
+ \ifx#1\relax\def\@tempa{}\else
+ \ifx#1%\def\@tempa{#2}\else
+ \def\@tempa{#1#2}\fi\fi\fi}
+\endgroup
+\lccode`\~32
+\lccode`\!32
+\lowercase{%
+ \def\@isspaces#1{%
+ \ifx#1\relax%
+ \def\@tempb{\@tempswafalse}%
+ \else\ifx#1~%
+ \let\@tempb\@isspaces%
+ \else%
+ \def\@tempb##1\relax{}%
+ \fi\fi%
+ \@tempb%
+ }
+ \def\sv@safespc{%
+ \catcode32\active%
+ \def~{ }%
+ }
+}
+\def\sv@read#1#2#3{%
+ \begingroup%
+ \matcher\@match{#1}\sv@read@ii%
+ \catcode13\active%
+ \catcode32\active%
+ \@tempswafalse%
+ \lccode`\~13\lowercase{%
+ \def\sv@read@i##1~{\@match{##1}}%
+ }%
+ \def\sv@read@ii##1{%
+ \sv@percent##1\relax\relax%
+ \if@matched\@tempswafalse\fi%
+ \if@tempswa\else\@tempswatrue\expandafter\@isspaces\@tempa\relax\fi%
+ \if@tempswa%
+ \begingroup%
+ \expandafter#2\expandafter{\@tempa}%
+ \endgroup%
+ \fi%
+ \@tempswatrue%
+ \if@matched\def\@tempa{\endgroup#3}\else\let\@tempa\sv@read@i\fi%
+ \@tempa%
+ }%
+ \sv@read@i%
+}
+\def\sv@verbline#1{%
+ \setbox\z@\hbox{#1\sv@stripspc}%
+ \ifdim\wd\z@=\z@%
+ \if@matched\ifhmode\par\relax\fi\else\leavevmode\par\relax\fi%
+ \else%
+ \leavevmode\box\z@\par\relax%
+ \fi%
+}
+\newdimen\listingindent
+\AtBeginDocument{%
+ \ifdim\parindent=\z@\listingindent1em\else\listingindent\parindent\fi%
+}
+\ifx\listingsize\@@undefined
+ \let\listingsize\small
+\fi
+\def\listinglist{%
+ \list{}{%
+ \leftmargin\listingindent%
+ \rightmargin\z@%
+ \labelwidth\z@%
+ \labelsep\z@%
+ \itemindent\z@%
+ \listparindent\z@%
+ \let\makelabel\relax%
+ \parsep\z@skip%
+ }%
+ \parfillskip\@flushglue%
+ \item\relax%
+}
+\let\endlistinglist\endlist
+\@cspecials
+|gdef|listing<%
+ |listinglist%
+ |listingsize%
+ |sv@listing<\end{listing}><|end<listing>>%
+>
+|endgroup
+\def\sv@listing#1#2{%
+ \sv@startlisting%
+ \sv@read{#1}\sv@verbline{\endlistinglist#2}%
+}
+\expandafter\def\csname listing*\endcsname{%
+ \listinglist%
+ \listingsize%
+ \begingroup%
+ \@noligs%
+ \def\@tempa##1{\endgroup\sv@listing{##1}{\end{listing*}}}%
+ \@tempa%
+}
+\def\sv@ignore#1#2{%
+ \@bsphack%
+ \let\do\@makeother\dospecials%
+ \sv@read{#1}\@gobble{\@esphack#2}%
+}
+\@cspecials
+|gdef|ignoreenv#1<%
+ |expandafter|def|csname #1|endcsname<|sv@ignore<\end{#1}><|end<#1>>>%
+ |expandafter|let|csname end#1|endcsname|relax%
+>
+|endgroup%
+\def\unignoreenv#1{%
+ \expandafter\let\csname #1\endcsname\@empty%
+ \expandafter\let\csname end#1\endcsname\@empty%
+}
+\ignoreenv{ignore}
+\newwrite\sv@writefile
+\def\sv@write#1#2{%
+ \begingroup%
+ \@bsphack%
+ \let\do\@makeother\dospecials%
+ \sv@safespc%
+ \sv@read{#1}\sv@writeline{\sv@endwrite#2}%
+}
+\def\sv@writeline#1{%
+ \immediate\write\sv@writefile{#1}%
+}
+\def\sv@endwrite{%
+ \@esphack%
+ \endgroup%
+}
+\@cspecials
+|gdef|verbwrite#1<%
+ |immediate|openout|sv@writefile#1|relax%
+ |sv@write<\end{verbwrite}><%
+ |immediate|closeout|sv@writefile|end<verbwrite>%
+ >%
+>
+|endgroup
+\expandafter\def\csname verbwrite*\endcsname#1#2{%
+ \immediate\openout\sv@writefile#2\relax%
+ \sv@write{#1}{\immediate\closeout\sv@writefile\end{verbwrite*}}%
+}
+\newcount\sv@nestcount
+\def\sv@demoname{demo\number\sv@nestcount.tmp}
+\def\sv@demo#1#2{%
+ \@ifnextchar[{\sv@demo@i{#1}{#2}}{\sv@demo@i{#1}{#2}[n]}%
+}
+\def\sv@demo@i#1#2[#3]#4{%
+ \advance\sv@nestcount by\@ne%
+ \immediate\openout\sv@writefile\sv@demoname\relax%
+ \sv@write{#1}{%
+ \immediate\closeout\sv@writefile%
+ \sv@dodemo{#2}{#3}{#4}%
+ }%
+}
+\@cspecials
+|gdef|demo<%
+ |sv@demo<\end{demo}><|end<demo>>%
+>
+|endgroup
+\expandafter\def\csname demo*\endcsname#1{%
+ \sv@demo{#1}{\end{demo*}}%
+}
+\def\sv@demosmp{%
+ \begin{minipage}[t]{\@tempdima}%
+ \vskip8\p@%
+ \hrule\@height\z@%
+ \raggedright%
+ \vbox\bgroup%
+}
+\def\sv@demoemp{%
+ \par\unpenalty\unskip%
+ \egroup%
+ \vskip8\p@%
+ \hrule\@height\z@%
+ \end{minipage}%
+}
+\def\sv@dodemo#1#2#3{%
+ \begingroup%
+ \@tempdima\linewidth%
+ \advance\@tempdima-2em%
+ \hsize\@tempdima%
+ \if#2w%
+ \advance\@tempdima-2em%
+ \else%
+ \advance\@tempdima-3em%
+ \divide\@tempdima2%
+ \fi%
+ \par%
+ \setbox\z@\hbox{\strut\enspace#3\enspace\strut}%
+ \@tempdimb.5\dp\z@%
+ \advance\@tempdimb-.5\ht\z@%
+ \ht\z@\@tempdimb\dp\z@\@tempdimb%
+ \noindent\hskip1em\vtop{%
+ \hb@xt@\hsize{%
+ \hrulefill%
+ \raise\@tempdimb\box\z@%
+ \hrulefill%
+ }%
+ \nointerlineskip%
+ \hb@xt@\hsize{\vrule\@height5\p@\hfil\vrule\@height5\p@}%
+ \nointerlineskip%
+ \vskip-\parskip%
+ \noindent\hbox{}\hskip1em%
+ \sv@demosmp%
+ \catcode`\%14\relax%
+ \input{\sv@demoname}%
+ \sv@demoemp%
+ \if#2w%
+ \vskip8\p@\hrule\vskip8\p@%
+ \noindent\hbox{}%
+ \fi%
+ \hskip1em%
+ \sv@demosmp%
+ \listingindent\z@%
+ \verbinput\sv@demoname%
+ \sv@demoemp%
+ \par%
+ \nointerlineskip%
+ \hb@xt@\hsize{\vrule\@height5\p@\hfil\vrule\@height5\p@}%
+ \hrule%
+ }%
+ \endgroup%
+ \par%
+ \vskip\baselineskip%
+ #1%
+}
+\endinput
+%%
+%% End of file `sverb.sty'.
diff --git a/usergrps/uktug/baskervi/6_2/syntart.tex b/usergrps/uktug/baskervi/6_2/syntart.tex
new file mode 100644
index 0000000000..bb25a4bc91
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/syntart.tex
@@ -0,0 +1,412 @@
+%
+% syntart.tex
+%
+% Article about syntax.sty
+%
+% (c) 1996 Mark Wooding, FWIW
+%
+
+% --- First, some evil hacking ---
+%
+% This lot sees if I'm in mid-document; if so it checks that necessary
+% packages are loaded and moans at the editor if necessary. Otherwise,
+% it loads an emulation of the layout, which might help me identify bad
+% line breaks. (I know I shouldn't be using \next like this, although
+% it's inside a group so I don't care.)
+
+\begingroup
+\makeatletter
+\edef\next#1#2{\ifx\documentclass\@notprerr#1\else#2\fi}
+\expandafter\endgroup\next
+{
+ \ifx\syntdiag\xxundefined
+ \edef\ehelp{\errhelp{I can't seem to find Mr Wooding's excellent^^J%
+ `syntax' package. \space Please get it from CTAN
+ if^^J%
+ necessary, and say `\string\usepackage{syntax}'
+ in the^^J%
+ document preamble.}}
+ \ehelp
+ \errmessage{Package `syntax' not found}
+ \fi
+ \let\mdwendfile\endinput
+}{
+ \documentclass{baskart}
+ \usepackage[rounded]{syntax}
+ \shortverb\|
+ \begin{document}
+ \def\mdwendfile{\end{document}}
+}
+
+% --- Some other definitions ---
+
+% These three typeset common LaTeX-related things. I have no idea how these
+% should be formatted, although I guess this lot will be OK.
+
+\providecommand{\pkg}[1]{\textsf{#1}}
+\providecommand{\env}[1]{\textsf{\def\*{\ensuremath{*}}#1}}
+\providecommand{\cmd}[1]{\texttt{\string#1}}
+
+% I like tables centerd horizontally. While I can't assume my nice table
+% handling is present, I can at least try and make LaTeX's table handling
+% as pleasant as possible.
+%
+% There's a slight problem here: there's a good chance that the `|' character
+% is active (for verbatim things), and this will make LaTeX's standard
+% tabular environment /very/ upset. I'll fiddle the catcode, read the
+% argument, restore the catcode back to whatever it was before, and pass
+% the argument (with catcodes now firmly carved in concrete) to tabular.
+%
+% I also set up some abbreviations (based on the syntax of mdwtab's \hlx
+% command) for inserting little bits of vertical space around horizontal
+% rules. I'll describe the macros later.
+%
+% Oh, before I go on further, this environment expects an extra argument
+% which is the number of columns in the table.
+
+\newenvironment{mdwtbl}[1]{%
+ \begin{center}%
+ \small%
+ \newcommand{\hv}{\hline\shortrow{#1}}
+ \newcommand{\vhv}{\shortrow{#1}\hline\shortrow{#1}}
+ \newcommand{\vh}{\shortrow{#1}\hline}
+ \begingroup%
+ \catcode`\|=12\relax%
+ \startmdwtbl%
+}{%
+ \end{tabular}\end{center}%
+}
+
+\newcommand{\startmdwtbl}[1]{\endgroup\begin{tabular}{#1}}%
+
+% --- Short rows of vertical rules in tables ---
+%
+% The following non-@-sign-requiring code inserts a number of columns of
+% height 2pt containing vertical rules at their extremities, as suggested
+% in Knuth's TeXbook, chapter 22. This is basically a primitive version
+% of the \vgap command from the `mdwtab' package.
+%
+% First, I've got to take into account whether the standard `tabular' or
+% the enhanced array.sty version is in use. The array package defines a
+% new <dimen> parameter called \extrarowheight which I can check for. The
+% important difference is that the standard version puts negative space on
+% each side of a vertical rule to make it appear to have zero width. I
+% consider this to be a bug in the original version, since it makes the
+% left and right hand table rules look terribly uneven.
+
+\ifx\extrarowheight\xxundefined
+ \newcommand{\shortvrule}{%
+ \kern -.5\arrayrulewidth%
+ \vrule height 2pt width \arrayrulewidth%
+ \kern -.5\arrayrulewidth%
+ }
+\else
+ \newcommand{\shortvrule}{%
+ \vrule height 2pt width \arrayrulewidth%
+ }
+\fi
+
+% I'll do this in a rather odd way, to avoid playing with global registers.
+% I'll build a token sequence which will do the job in the token register
+% \toks 0, and then expand it.
+
+\newcommand{\shortrow}[1]{%
+ \crcr%
+ \omit%
+ \iffalse{\fi\ifnum0=`}\fi%
+ \toks 0={\shortvrule\hfil\shortvrule}%
+ \count 0=#1\relax%
+ \loop%
+ \advance\count 0 by -1\relax%
+ \ifnum\count 0>0\relax%
+ \toks 0=\expandafter{\the\toks 0&\omit\hfil\shortvrule}%
+ \repeat%
+ \ifnum0=`{}\fi%
+ \the\toks 0%
+ \relax% <------ VITAL!
+ \cr%
+}
+
+% --- Grammar typesetting things ---
+
+\grammarindent=.5in
+
+% --- Whew. Now I can actually start ---
+
+%\section{Syntax diagrams and other fun}
+\title{Syntax diagrams and other fun}
+\author[Mark Wooding]{Mark Wooding\\Email: \texttt{mdw@straylight.co.uk}}
+\begin{Article}
+
+%\begin{multicols}{2}
+
+% Oh, how I hate these waffly introductions
+\section{Introduction}
+Among other things, I write manuals for computer programs, and descriptions
+of syntax diagrams tend inevitably to creep in. Formal BNF~grammars are
+relatively easy to typeset using some simple definitions and a list-based
+environment. However, they can be rather daunting for less technical
+readers, containing as they do all manner of funny metasymbols.\footnote
+{Even the word `metasymbol' is a little scary.} Books attempting to cater
+for such readers (and even some technical manuals about C~programming) tend
+to present syntax using diagrams: the idea, if you haven't come across them
+already, is that you follow the lines on the diagram around writing any of
+the items you come across on your journey, until you reach the end.
+
+For example, the diagram below attempts to present the various diverse
+elements comprising the arsenal of the Spanish Inquisition, according to the
+now legendary Monty Python sketch.
+\begin{syntdiag}
+\begin{rep}
+\begin{stack}
+ `fear and surprise' \\
+ `surprise and fear' \\
+ `ruthless efficiency' \\
+ `fanatical devotion to the pope' \\
+ `nice red uniforms'
+\end{stack}
+\\
+`and'
+\end{rep}
+\end{syntdiag}
+The diagram permits any sequence of one or more `weapons', separated by the
+word \lit{and}. Compare this with the BNF equivalent:
+\begin{grammar}
+<arsenal> ::= <weapon> | <arsenal> `and' <weapon>
+
+<weapon> ::= `fear and surprise'
+ \alt `surprise and fear'
+ \alt `ruthless efficiency'
+ \alt `fanatical devotion to the pope'
+ \alt `nice red uniforms'
+\end{grammar}
+Which do you think is easier to read?
+
+The \pkg{syntax} package provides some commands for typesetting syntax
+diagrams like the one above (and for typesetting BNF~grammars).
+
+
+\section{Building syntax diagrams}
+
+Syntax diagrams are typeset using the \env{syntdiag} environment. This puts
+\LaTeX\ into a special `syntax diagram' mode: only syntax diagram commands
+should be used while in this mode: anything else will upset the typesetting
+and produce output which looks truly awful. To help you lay out your source
+nicely, spaces and newlines (including blank newlines) are totally ignored
+within syntax diagrams. (They will be enabled again when spaces and newlines
+are actually useful, so there's no need to worry about this.)
+
+One important point about syntax diagrams must be made here: like the
+\env{verbatim} environment, the \env{syntdiag} environment cannot be used
+inside the argument of a command. The other point is that you can only use
+syntax diagrams when you're in paragraph mode -- there's a \env{syntdiag\*}
+environment which is designed for use in LR mode, although that's more
+oriented towards presenting fragments of diagrams.
+
+If you just write an empty \env{syntdiag} environment, you get a line across
+the current text column with a double headed arrow on each end, like this:
+\begin{syntdiag} \end{syntdiag}
+This is clearly not much good, and we need to learn how to make it more
+interesting.
+
+\section{Simple bits of syntax diagrams}
+
+Syntax diagrams are built up from a small number of simple blocks. You just
+need to learn how to put these blocks together to build quite complicated
+looking diagrams.
+
+The simplest things you can put in syntax diagrams are \emph{syntax objects}.
+There are three types of syntax objects built in, and they have special
+abbreviations because they get used so much. The three types are:
+\begin{description}
+
+\item [Nonterminals] stand for some (possibly fairly complicated) syntactic
+ entity. They look like \synt{this}\footnote
+ {Well, you can change the style so that they look like anything
+ you want, although this is how they look by default, and I'd
+ recommend that you don't change the style too radically, because
+ you'll confuse your readers utterly. The styles of the other
+ syntax objects can also be changed.}
+ in syntax diagrams. You type nonterminals by typing the text within
+ `\lit*{<}\dots\lit*{>}', like \verb|<this>|.
+
+\item [Terminals] describe text which should be typed in exactly as shown.
+ They look like \lit{this} (or possibly like \lit*{this}) in the
+ diagram. You can type a quoted terminal by just typing single quotes
+ around the text, like \verb|`this'|; unquoted terminals like the second
+ example are obtained by using double quotes, like \verb|"this"|.
+
+\item [Composites] can contain terminals and nonterminals, together with
+ normal text typed in \LaTeX's LR~mode. You type a composite object by
+ using the \cmd{\tok} command -- the argument contains the text of
+ object. Within this argument, you can type nonterminals and terminals
+ using the abbreviations described above. Also, the `\verb"|"'
+ character will produce a $\mid$ symbol, which is used to indicate
+ alternatives.
+
+\end{description}
+
+% This figure wants to go at the top of the next page. Putting it later
+% puts it on a float page, which is not what I want at all. So I'll put
+% it here, because this appears to work.
+
+\begin{figure*}[t]
+ \begin{syntdiag}
+ \begin{stack}
+ \begin{rep} <digit> \end{rep}
+ \begin{stack} \\
+ `.' \begin{stack} \\
+ \begin{rep} <digit> \end{rep}
+ \end{stack}
+ \end{stack} \\
+ `.' \begin{rep} <digit> \end{rep}
+ \end{stack}
+ \begin{stack} \\
+ \begin{stack} `E' \\ `e' \end{stack}
+ \begin{stack} \\ `+' \\ `-' \end{stack}
+ \begin{rep} <digit> \end{rep}
+ \end{stack}
+ \end{syntdiag}
+\caption{Syntax diagram for a floating point number}
+\label{fig:synt.float}
+\end{figure*}
+
+\begin{figure*}[t]
+ \vspace*{-10pt} % An unpleasant hack. It seems that if multicol has to
+ % fill an exact page it loops infinitely and spews rubbish
+ % about overful vboxes in \output to the terminal. The
+ % negative skip here stops the page from looking full to
+ % multicol, so it will balance the text it has and be
+ % very happy. (Bletch bletch.)
+ \csname sd@roundfalse\endcsname
+ \begin{syntdiag}
+ \begin{stack}
+ \begin{rep} <digit> \end{rep}
+ \begin{stack} \\
+ `.' \begin{stack} \\
+ \begin{rep} <digit> \end{rep}
+ \end{stack}
+ \end{stack} \\
+ `.' \begin{rep} <digit> \end{rep}
+ \end{stack}
+ \begin{stack} \\
+ \begin{stack} `E' \\ `e' \end{stack}
+ \begin{stack} \\ `+' \\ `-' \end{stack}
+ \begin{rep} <digit> \end{rep}
+ \end{stack}
+ \end{syntdiag}
+\caption{The same diagram with in the `square' style}
+\label{fig:synt.square}
+\end{figure*}
+
+% We will now resume our usual programming.
+The text within a nonterminal or terminal is read in way similar to \LaTeX's
+\cmd{\verb} command. You type the text more or less exactly as you'd like it
+to look. Problems occur if you want to produce something like \lit{doesn't}
+-- if you type \verb|`doesn't'|, then \TeX\ will think that the text ends at
+the \emph{first} \lit{'} character. You can avoid this problem by preceding
+the offending character by a backslash, making \verb|`doesn\'t'|, which is
+unfortunately less readable, but at least it actually works. Similar
+considerations apply to the \lit{\char'042} and \lit{>} characters. There's no need
+to start escaping characters like this unless there's actually an ambiguity.
+You can also type `\verb|\\|' to obtain a backslash character, and
+`\verb*|\ |' to get the `\verb*| |' symbol.
+
+
+Right: we can now put something into our empty syntax diagram. By saying
+\begin{list}{}{\leftmargin=\parindent \parskip=0pt \topsep=0pt} \footnotesize
+\begin{verbatim}
+ \begin{syntdiag}
+ `angry gnat' <norwegian-blue>
+ "gnu going \"moo!\""
+ \end{syntdiag}
+\end{verbatim}
+\end{list}
+we get something which looks not dissimilar to this:
+ \begin{syntdiag}
+ `angry gnat' <norwegian-blue>
+ "gnu going \"moo!\""
+ \end{syntdiag}
+
+
+\section{Building larger structures}
+
+Once you can write simple syntax objects, you need to know how to combine
+them in interesting ways. You've already seen that just writing objects
+next to each other inserts them in series (I managed to sneak that in above).
+Other contructions are described by environments nested within the main
+\env{syntdiag} environment.
+
+A choice of one item from a list is represented by stacking the available
+options one above the other. Such a construction is typeset using the
+\env{stack} environment; the individual rows of the stack are separated by
+\verb|\\| commands.
+
+An item which may be repeated any number of times is shown with a loop above
+it. Such a structure can be typeset with the \env{rep} environment; the text
+to be repeated forms the body of the environment. If the repeated texts are
+to be separated from each other, you can describe this separating text by
+preceding it with the \verb|\\| command.
+
+These two environments can be nested within each other as required.
+Arbitrarily complicated structures can be built in this way. We now have
+enough equipment to start drawing real diagrams. For example, a floating
+point number might be represented like this:
+\begin{list}{}{\leftmargin=\parindent \parskip=0pt \topsep=0pt} \footnotesize
+\begin{verbatim}
+\begin{syntdiag}
+\begin{stack}
+ \begin{rep} <digit> \end{rep}
+ \begin{stack} \\
+ `.' \begin{stack} \\
+ \begin{rep} <digit> \end{rep}
+ \end{stack}
+ \end{stack} \\
+ `.' \begin{rep} <digit> \end{rep}
+\end{stack}
+\begin{stack} \\
+ \begin{stack} `E' \\ `e' \end{stack}
+ \begin{stack} \\ `+' \\ `-' \end{stack}
+ \begin{rep} <digit> \end{rep}
+\end{stack}
+\end{syntdiag}
+\end{verbatim}
+\end{list}
+(The output is shown in figure~\ref{fig:synt.float}.)
+
+You can probably think of all sorts of syntax diagrams which can't be drawn
+by this system. Such diagrams are rather unlikely to appear in practice,
+they tend to be harder to understand, and all of them can be transformed into
+something which \emph{can} be represented, without altering their meanings.
+
+If you find that you can't draw the diagram you want, you should first see if
+it can't be transformed fairly simply into something which you can draw. If
+that doesn't work, try complaining at the author of the package.
+
+
+\section{Other things}
+
+Syntax diagrams have a habit of getting rather large. When possible, this
+package will try to break long syntax diagrams over several lines. Usually,
+a diagram begins with a double arrow (like `\begin{syntdiag*} [\left{>>-}
+\right{...}] \end{syntdiag*}'), and ends with a funny pair of inward pointing
+arrows (like `\begin{syntdiag*} [\left{...} \right{-><}] \end{syntdiag*}').
+When a diagram is broken, single arrows are put on the broken ends as a
+visual clue that the lines aren't complete. Quite often, the \TeX\ will find
+fairly good line breaks, and most of the time, the breaks will be fairly
+reasonable. If you want to take matters into your own hands, you can use
+the \verb|\\| command to force a break.
+
+Finally, there are two different styles of syntax diagrams which can be drawn
+by the package -- there's the `rounded' style I used in
+figure~\ref{fig:synt.float}, and the `square' style shown in
+figure~\ref{fig:synt.square}. You can choose which style to use in your
+document by passing the option \lit{square} or \lit{rounded} when you load
+the package. The default is to draw `square' style diagrams.
+
+%\medskip\hrule\small\kern\smallskipamount
+%\hfill Mark Wooding \\ \hspace*{\fill} \texttt{mdw@straylight.co.uk}
+
+%\end{multicols}
+\end{Article}
+%\mdwendfile
diff --git a/usergrps/uktug/baskervi/6_2/syntax.sty b/usergrps/uktug/baskervi/6_2/syntax.sty
new file mode 100644
index 0000000000..2aa744023a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/syntax.sty
@@ -0,0 +1,827 @@
+%%
+%% This is file `syntax.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% syntax.dtx (with options: `package')
+%% doafter.dtx (with options: `macro')
+%%
+%% IMPORTANT NOTICE
+%%
+%% syntax package -- typesetting syntax descriptions
+%% Copyright (c) 1996 Mark Wooding
+%%
+%% 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 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{syntax}
+ [1996/05/03 1.06 Syntax typesetting (MDW)]
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\DeclareOption{rounded}{\sd@roundtrue}
+\DeclareOption{square}{\sd@roundfalse}
+\DeclareOption{nounderscore}{\@uscorefalse}
+\newif\ifsd@round
+\newif\if@uscore\@uscoretrue
+\ExecuteOptions{square}
+\ProcessOptions
+\def\addspecial#1{%
+ \remspecial{#1}%
+ \expandafter\def\expandafter\dospecials\expandafter{\dospecials\do#1}%
+ \expandafter\def\expandafter\@santize\expandafter{%
+ \@sanitize\@makeother#1}%
+}
+\def\remspecial#1{%
+ \def\do##1{\ifnum`#1=`##1 \else\noexpand\do\noexpand##1\fi}%
+ \edef\dospecials{\dospecials}%
+ \def\@makeother##1{\ifnum`#1=`##1 \else%
+ \noexpand\@makeother\noexpand##1\fi}%
+ \edef\@sanitize{\@sanitize}%
+ \def\@makeother##1{\catcode`##112}%
+}
+\def\underscore{%
+ \leavevmode%
+ \kern.06em%
+ \vbox{%
+ \hrule\@width.5em\@depth.2ex\@height-.14ex%
+ }%
+ \ifdim\fontdimen\@ne\font=\z@%
+ \kern.06em%
+ \fi%
+}
+\def\@uscore{%
+ \relax%
+ \ifmmode%
+ \let\@tempa\sb%
+ \else%
+ \def\@tempa{\underscore\@ifnextchar_{}{\-}}%
+ \fi%
+ \@tempa%
+}
+\if@uscore
+ \AtBeginDocument{%
+ \catcode`\_\active%
+ \lccode`\~`\_%
+ \lowercase{\def~{\protect\@uscore\protect\@gobble?}}%
+ }
+\fi
+\let\_\underscore
+\def\shortverb#1{%
+ \@ifundefined{cc@\string#1}{%
+ \addspecial#1%
+ \lccode`\~`#1%
+ \lowercase{%
+ \expandafter\let\csname mn@\string#1\endcsname~%
+ \expandafter\edef\csname cc@\string#1\endcsname{%
+ \catcode`\noexpand#1\the\catcode`#1%
+ \let\noexpand~\expandafter\noexpand%
+ \csname mn@\string#1\endcsname%
+ \noexpand\remspecial\noexpand#1%
+ \let\csname cc@\string#1\endcsname\relax%
+ }%
+ \def~{\verb~\syn@ttspace}%
+ }%
+ \catcode`#1\active%
+ }{%
+ \PackageWarning{syntax}{Character `\expandafter\@gobble\string#1'
+ is already a verbatim\MessageBreak
+ delimiter}%
+ }%
+}
+\def\unverb#1{%
+ \@ifundefined{cc@\string#1}{%
+ \PackageWarning{syntax}{Character `\expandafter\@gobble\string#1'
+ is not a verbatim\MessageBreak
+ delimiter}%
+ }{%
+ \csname cc@\string#1\endcsname%
+ }%
+}
+\newcommand{\syntleft}{$\langle$\normalfont\itshape}
+\newcommand{\syntright}{$\rangle$}
+\newcommand{\ulitleft}{\normalfont\ttfamily\syn@ttspace\frenchspacing}
+\newcommand{\ulitright}{}
+\newcommand{\litleft}{`\bgroup\ulitleft}
+\newcommand{\litright}{\ulitright\egroup'}
+\def\synt#1{\mbox{\syntleft{#1\/}\syntright}}
+\def\lit{\@ifstar{\lit@i\ulitleft\ulitright}{\lit@i\litleft\litright}}
+\def\lit@i#1#2#3{\mbox{#1{#3\/}#2}}
+\def\syn@ttspace{\spaceskip.35em\@plus.2em\@minus.15em\relax}
+\def\readupto#1#2#3{%
+ \bgroup%
+ \verb@eol@error%
+ \let\do\@makeother\dospecials%
+ #2%
+ \catcode`#1\active%
+ \lccode`\~`#1%
+ \gdef\verb@balance@group{\verb@egroup%
+ \@latex@error{\noexpand\verb illegal in command argument}\@ehc}%
+ \def\@vhook{\verb@egroup#3}%
+ \aftergroup\verb@balance@group%
+ \lowercase{\let~\@vhook}%
+}
+\def\syn@assist#1#2#3#4#5{%
+ \mbox\bgroup%
+ \chardef\\`\\%
+ \chardef\>`\>%
+ \chardef\'`\'%
+ \chardef\"`\"%
+ \chardef\ `\ %
+ \def\ch##1{\char`##1}%
+ \def\act##1{\catcode`##1\active\lccode`\~`##1\lowercase{\def~}}%
+ #1%
+ \begingroup%
+ \readupto#3{%
+ \catcode`\\0%
+ \catcode`\ 10%
+ #2%
+ }{%
+ \/\endgroup#4\egroup#5%
+ }%
+}
+\begingroup
+\catcode`\<\active
+\catcode`\|\active
+\catcode`\"\active
+\catcode`\`\active
+\gdef\syn@shorts#1#2{%
+ \def<{%
+ #1%
+ \syn@assist%
+ \syntleft%
+ {\act_{\@foundunderscore}}%
+ >%
+ \syntright%
+ {#2}%
+ }%
+ \def`{%
+ #1%
+ \syn@assist%
+ \litleft%
+ \relax%
+ '%
+ \litright%
+ {#2}%
+ }%
+ \def"{%
+ #1%
+ \syn@assist%
+ \ulitleft%
+ \relax%
+ "%
+ \ulitright%
+ {#2}%
+ }%
+ \def|{\ensuremath\mid}%
+}
+\endgroup
+\def\syntaxShortcuts#1#2{%
+ \syn@shorts{#1}{#2}%
+ \addspecial\`%
+ \addspecial\<%
+ \addspecial\|%
+ \addspecial\"%
+ \catcode`\|\active%
+ \catcode`\<\active%
+ \catcode`\"\active%
+ \catcode`\`\active%
+}
+\def\synshorts{\syntaxShortcuts\relax\relax}
+\def\synshortsoff{%
+ \catcode`\|12%
+ \catcode`\<12%
+ \catcode`\"12%
+ \catcode`\`12%
+}
+\def\syntax#{\bgroup\syntaxShortcuts\relax\relax\let\@let@token}
+\newskip\grammarparsep
+ \grammarparsep8\p@\@plus\p@\@minus\p@
+\newdimen\grammarindent
+ \grammarindent2em
+\newcommand{\grammarlabel}[2]{%
+ \synt{#1} \hfill#2%
+}
+\def\gr@implitem<#1> #2 {%
+ \sbox\z@{\hskip\labelsep\grammarlabel{#1}{#2}}%
+ \strut\@@par%
+ \vskip-\parskip%
+ \vskip-\baselineskip%
+ \hrule\@height\z@\@depth\z@\relax%
+ \item[\unhbox\z@]%
+ \catcode`\<\active%
+}
+\newenvironment{grammar}{%
+ \list{}{%
+ \labelwidth\grammarindent%
+ \leftmargin\grammarindent%
+ \advance\grammarindent\labelsep
+ \itemindent\z@%
+ \listparindent\z@%
+ \parsep\grammarparsep%
+ }%
+ \let\\\@normalcr
+ \syntaxShortcuts\relax\relax%
+ \def\alt{\\\llap{\ensuremath\mid\quad}}%
+ \def\gr@setpar{%
+ \def\par{%
+ \parshape\@ne\@totalleftmargin\linewidth%
+ \@@par%
+ \catcode`\<12%
+ \everypar{%
+ \everypar{}%
+ \catcode`\<\active%
+ \gr@implitem%
+ }%
+ }%
+ }%
+ \gr@setpar%
+ \par%
+ \let\gr@leftsq\[%
+ \let\gr@rightsq\]%
+ \def\gr@endsyntdiag]{\end{syntdiag}\gr@setpar\par}%
+ \def\[{\@ifnextchar[{\begin{syntdiag}\@gobble}\gr@leftsq}%
+ \def\]{\@ifnextchar]\gr@endsyntdiag\gr@rightsq}%
+}{%
+ \@newlistfalse%
+ \everypar{}%
+ \endlist%
+}
+\newskip\sdstartspace
+\newskip\sdendspace
+\newskip\sdmidskip
+\newskip\sdtokskip
+\newskip\sdfinalskip
+\newdimen\sdrulewidth
+\newdimen\sdcirclediam
+\newdimen\sdindent
+\dimendef\sd@lower\z@
+\dimendef\sd@upper\tw@
+\dimendef\sd@mid4
+\dimendef\sd@topcirc6
+\dimendef\sd@botcirc8
+\def\sd@setsize{%
+ \sd@mid\ht\strutbox%
+ \advance\sd@mid-\dp\strutbox%
+ \sd@mid.5\sd@mid%
+ \sd@upper\sdrulewidth%
+ \advance\sd@upper\sd@mid%
+ \sd@lower\sdrulewidth%
+ \advance\sd@lower-\sd@mid%
+ \sd@topcirc-.5\sdcirclediam%
+ \advance\sd@topcirc\sd@mid%
+ \sd@botcirc-.5\sdcirclediam%
+ \advance\sd@botcirc-\sd@mid%
+}
+\newcommand{\sdsize}{%
+ \small%
+}
+\newcommand{\sdlengths}{%
+ \setlength{\sdstartspace}{1em minus 10pt}%
+ \setlength{\sdendspace}{1em minus 10pt}%
+ \setlength{\sdmidskip}{0.5em plus 0.0001fil}%
+ \setlength{\sdtokskip}{0.25em plus 0.0001fil}%
+ \setlength{\sdfinalskip}{0.5em plus 10000fil}%
+ \setlength{\sdrulewidth}{0.2pt}%
+ \setlength{\sdcirclediam}{8pt}%
+ \setlength{\sdindent}{0pt}%
+}
+\newif\ifsd@base
+\newif\ifsd@top
+\newif\ifsd@toplayer
+\newif\ifsd@backwards
+\def\sd@err{\PackageError{syntax}}
+\def\sd@arrow{%
+ \ht\tw@\z@%
+ \dp\tw@\z@%
+ \raise\sd@mid\box\tw@%
+ \egroup%
+}
+\def\sd@rightarr{%
+ \bgroup%
+ \setbox\tw@\hbox{\kern-6\p@\@linefnt\char'55}%
+ \sd@arrow%
+}
+\def\sd@leftarr{%
+ \bgroup%
+ \raise\sd@mid\hbox{\@linefnt\char'33\kern-6\p@}%
+ \sd@arrow%
+}
+\def\sd@uparr{%
+ \bgroup%
+ \setbox\tw@\hb@xt@\z@{\kern-\sdrulewidth\@linefnt\char'66\hss}%
+ \setbox\tw@\hbox{\lower10\p@\box\tw@}%
+ \sd@arrow%
+}
+\def\sd@downarr{%
+ \bgroup%
+ \setbox\tw@\hb@xt@\z@{\kern-\sdrulewidth\@linefnt\char'77\hss}%
+ \sd@arrow%
+}
+\def\sd@circ#1{%
+ \@getcirc\sdcirclediam%
+ \advance\@tempcnta#1%
+ \setbox\tw@\hbox{\lower\sdrulewidth%
+ \hbox{\@circlefnt\char\@tempcnta}}%
+ \wd\tw@\z@%
+ \leavevmode%
+}
+\def\sd@tlcirc{{%
+ \sd@circ3%
+ \ht\tw@\sdrulewidth%
+ \dp\tw@.5\sdcirclediam%
+ \kern-2\sdrulewidth%
+ \raise\sd@mid\box\tw@%
+ \kern.5\sdcirclediam%
+}}
+\def\sd@trcirc{{%
+ \sd@circ0%
+ \ht\tw@\sdrulewidth%
+ \dp\tw@.5\sdcirclediam%
+ \kern.5\sdcirclediam%
+ \raise\sd@mid\box\tw@%
+}}
+\def\sd@blcirc{{%
+ \sd@circ2%
+ \ht\tw@.5\sdcirclediam%
+ \dp\tw@\sdrulewidth%
+ \kern-2\sdrulewidth%
+ \raise\sd@mid\box\tw@%
+ \kern.5\sdcirclediam%
+}}
+\def\sd@brcirc{{%
+ \sd@circ1%
+ \ht\tw@.5\sdcirclediam%
+ \dp\tw@\sdrulewidth%
+ \kern.5\sdcirclediam%
+ \raise\sd@mid\box\tw@%
+}}
+\def\sd@llc#1{%
+ \hb@xt@.5\sdcirclediam{%
+ \sd@rule\hskip.5\sdcirclediam%
+ \hss%
+ #1%
+ }%
+}
+\def\sd@rlc#1{%
+ \hb@xt@.5\sdcirclediam{%
+ #1%
+ \hss%
+ \sd@rule\hskip.5\sdcirclediam%
+ }%
+}
+\def\sd@rule{\leaders\hrule\@height\sd@upper\@depth\sd@lower}
+\def\sd@gap#1{%
+ \ifsd@base%
+ \skip@#1%
+ \divide\skip\z@\tw@%
+ \nobreak\sd@rule\hskip\skip@%
+ \discretionary{%
+ \sd@qarrow{->}%
+ }{%
+ \hbox{%
+ \sd@qarrow{>-}%
+ \sd@rule\hskip\sdstartspace%
+ \sd@rule\hskip3.5\p@%
+ }%
+ }{%
+ }%
+ \nobreak\sd@rule\hskip\skip@%
+ \else%
+ \sd@rule\hskip#1%
+ \fi%
+}
+\def\syntdiag{%
+ \syntaxShortcuts\sd@tok@i\sd@tok@ii%
+ \@ifnextchar[\syntdiag@i{\syntdiag@i[]}%
+}
+\def\syntdiag@i[#1]{%
+ \sdsize\sdlengths%
+ #1%
+ \sd@setsize%
+ \list{}{%
+ \leftmargin\sdindent%
+ \rightmargin\leftmargin%
+ \labelsep\z@%
+ \labelwidth\z@%
+ }%
+ \item[]%
+ \parfillskip\z@%
+ \noindent%
+ \sd@qarrow{>>-}%
+ \nobreak\sd@rule\hskip\sdstartspace%
+ \sd@basetrue%
+ \sloppy%
+ \interlinepenalty100%
+ \hyphenpenalty0%
+ \catcode`\ 9%
+ \catcode`\^^M9%
+ \let\\\sd@newline%
+ \ignorespaces%
+}
+\def\endsyntdiag{%
+ \unskip%
+ \nobreak\sd@rule\hskip\sdmidskip%
+ \sd@rule\hskip\sdfinalskip%
+ \sd@qarrow{-><}%
+ \endlist%
+}
+\@namedef{syntdiag*}{%
+ \syntaxShortcuts\sd@tok@i\sd@tok@ii%
+ \@ifnextchar[\syntdiag@s@i{\syntdiag@s@i[]}%
+}
+\def\syntdiag@s@i[#1]{%
+ \@ifnextchar[{\syntdiag@s@ii{#1}}{\syntdiag@s@iii{#1}{\hbox}}%
+}
+\def\syntdiag@s@ii#1[#2]{\syntdiag@s@iii{#1}{\hb@xt@#2}}
+\def\syntdiag@s@iii#1#2{%
+ \leavevmode%
+ #2\bgroup%
+ \let\@@left\left%
+ \let\@@right\right%
+ \def\left##1{\def\sd@startarr{##1}}%
+ \def\right##1{\def\sd@endarr{##1}}%
+ \left{>-}\right{->}%
+ \sdsize\sdlengths%
+ #1%
+ \sd@setsize%
+ \let\left\@@left%
+ \let\right\@@right%
+ \sd@qarrow\sd@startarr%
+ \sd@rule\hskip\sdmidskip%
+ \sd@basefalse%
+ \catcode`\ 9%
+ \catcode`\^^M9%
+ \ignorespaces%
+}
+\@namedef{endsyntdiag*}{%
+ \unskip%
+ \sd@rule\hskip\sdmidskip%
+ \sd@rule\hskip\sdfinalskip%
+ \sd@qarrow\sd@endarr%
+ \egroup%
+}
+\def\sd@qarrow#1{%
+ \begingroup%
+ \lccode`\~=`\<\lowercase{\def~{<}}%
+ \hbox{\csname sd@arr@#1\endcsname}%
+ \endgroup%
+}
+\@namedef{sd@arr@>>-}{\sd@rightarr\kern-.5\p@\sd@rightarr\kern-\p@}
+\@namedef{sd@arr@>-}{\sd@rightarr\kern-\p@}
+\@namedef{sd@arr@->}{\sd@rightarr}
+\@namedef{sd@arr@-><}{\sd@rightarr\kern-\p@\sd@leftarr}
+\@namedef{sd@arr@...}{$\cdots$}
+\@namedef{sd@arr@-}{}
+\def\sd@newline{\@ifstar{\vadjust{\penalty\@M}\sd@nl@i}\sd@nl@i}
+\def\sd@nl@i{\@ifnextchar[\sd@nl@ii\sd@nl@iii}
+\def\sd@nl@ii[#1]{\vspace{#1}\sd@nl@iii}
+\def\sd@nl@iii{%
+ \nobreak\sd@rule\hskip\sdmidskip%
+ \sd@rule\hskip\sdfinalskip%
+ \kern-3\p@%
+ \sd@rightarr%
+ \newline%
+ \sd@rightarr%
+ \nobreak\sd@rule\hskip\sdstartspace%
+ \sd@rule\hskip3.5\p@%
+}
+\def\sdbox#1{%
+ \@tempskipa#1\relax%
+ \sd@gap\@tempskipa%
+ \setbox\z@\hbox\bgroup%
+ \begingroup%
+ \catcode`\ 10%
+ \catcode`\^^M5%
+ \synshortsoff%
+}
+\def\endsdbox{%
+ \endgroup%
+ \egroup%
+ \@tempdima\ht\z@%
+ \advance\@tempdima-\dp\z@%
+ \advance\@tempdima-2\sd@mid%
+ \lower.5\@tempdima\box\z@%
+ \sd@gap\@tempskipa%
+}
+\def\sd@tok@i{%
+ \sdbox\sdtokskip%
+ \strut%
+ \space%
+}
+\def\sd@tok@ii{%
+ \space%
+ \endsdbox%
+}
+\def\tok#{%
+ \sdbox\sdtokskip%
+ \strut%
+ \enspace%
+ \syntaxShortcuts\relax\relax%
+ \doafter\sd@tok%
+}
+\def\sd@tok{%
+ \enspace%
+ \endsdbox%
+}
+\newcommand\stack[1][t]{%
+ \sd@gap\sdmidskip%
+ \begingroup\sd@basefalse%
+ \sd@toplayertrue%
+ \let\\\sd@stackcr%
+ \if#1t%
+ \let\@tempa\vtop%
+ \sd@toptrue%
+ \ifsd@round\llap{\sd@trcirc\kern2\sdrulewidth}\fi%
+ \else\if#1b%
+ \let\@tempa\vbox%
+ \sd@topfalse%
+ \ifsd@round\llap{\sd@brcirc\kern2\sdrulewidth}\fi%
+ \else%
+ \sd@err{Bad position argument passed to stack}%
+ {The positioning argument must be one of `t' or `b'. I%
+ have^^Jassumed you meant to type `t'.}%
+ \let\@tempa\vtop%
+ \fi\fi%
+ \@tempa\bgroup%
+ \offinterlineskip%
+ \ialign\bgroup%
+ ##\cr%
+ \setbox\z@\hbox\bgroup%
+ \strut%
+}
+\def\endstack{%
+ \egroup%
+ \ifsd@toplayer%
+ \sd@dostack\sd@upper\sd@lower\relax\relax%
+ \else%
+ \ifsd@round%
+ \ifsd@top%
+ \sd@dostack{\ht\z@}\sd@botcirc\sd@blcirc\sd@brcirc%
+ \else%
+ \sd@dostack{\ht\z@}\sd@botcirc\relax\relax%
+ \fi%
+ \else%
+ \sd@dostack{\ht\z@}\sd@lower\relax\relax%
+ \fi%
+ \fi%
+ \egroup%
+ \egroup%
+ \ifsd@round%
+ \ifsd@top
+ \rlap{\kern2\sdrulewidth\sd@tlcirc}%
+ \else%
+ \rlap{\kern2\sdrulewidth\sd@blcirc}%
+ \fi%
+ \fi%
+ \endgroup\sd@gap\sdmidskip%
+}
+\def\sd@stackcr{%
+ \egroup%
+ \ifsd@toplayer%
+ \ifsd@round%
+ \ifsd@top%
+ \sd@dostack\sd@topcirc{\dp\z@}\relax\relax%
+ \else%
+ \sd@dostack\sd@topcirc{\dp\z@}\sd@tlcirc\sd@trcirc%
+ \fi%
+ \else%
+ \sd@dostack\sd@upper{\dp\z@}\relax\relax%
+ \fi%
+ \else%
+ \ifsd@round%
+ \ifsd@top%
+ \sd@dostack{\ht\z@}{\dp\z@}\sd@blcirc\sd@brcirc%
+ \else%
+ \sd@dostack{\ht\z@}{\dp\z@}\sd@tlcirc\sd@trcirc%
+ \fi%
+ \else%
+ \sd@dostack{\ht\z@}{\dp\z@}\relax\relax%
+ \fi%
+ \fi%
+ \sd@toplayerfalse%
+ \setbox\z@\hbox\bgroup%
+ \strut%
+}
+\def\sd@dostack#1#2#3#4{%
+ \@tempdima#1%
+ \@tempdimb#2%
+ \kern-2\sdrulewidth%
+ \vrule\@height\@tempdima\@depth\@tempdimb\@width2\sdrulewidth%
+ #3%
+ \sd@rule\hfill%
+ \sd@gap\sdtokskip%
+ \unhbox\z@%
+ \sd@gap\sdtokskip%
+ \sd@rule\hfill%
+ #4%
+ \vrule\@height\@tempdima\@depth\@tempdimb\@width2\sdrulewidth%
+ \kern-2\sdrulewidth%
+ \cr%
+}
+\newcommand\rep[1][t]{%
+ \sd@gap\sdmidskip%
+ \begingroup\sd@basefalse%
+ \ifsd@backwards\sd@backwardsfalse\else\sd@backwardstrue\fi%
+ \let\\\sd@loop%
+ \if#1t%
+ \let\@tempa\vbox%
+ \sd@toptrue%
+ \else\if#1b%
+ \let\@tempa\vtop%
+ \sd@topfalse%
+ \else%
+ \sd@err{Bad position argument passed to loop}%
+ {The positioning argument must be `t' or `b'. I have^^J%
+ assumed you meant to type `t'.}%
+ \let\@tempa\vbox%
+ \sd@toptrue%
+ \fi\fi%
+ \@tempa\bgroup%
+ \setbox\tw@\copy\strutbox%
+ \setbox\z@\hbox\bgroup\strut%
+}
+\def\endrep{%
+ \egroup%
+ \ifsd@top%
+ \ifsd@round%
+ \sd@doloop\tw@\z@\relax\relax%
+ \sd@tlcirc\sd@trcirc{\sd@rlc\sd@blcirc}{\sd@llc\sd@brcirc}%
+ \else%
+ \sd@doloop\tw@\z@\relax\sd@downarr\relax\relax\relax\relax%
+ \fi%
+ \else%
+ \ifsd@round%
+ \sd@doloop\z@\tw@\relax\relax%
+ {\sd@rlc\sd@tlcirc}{\sd@llc\sd@trcirc}\sd@blcirc\sd@brcirc%
+ \else%
+ \sd@doloop\z@\tw@\sd@uparr\relax\relax\relax\relax\relax%
+ \fi%
+ \fi%
+ \egroup%
+ \endgroup\sd@gap\sdmidskip%
+}
+\def\sd@loop{%
+ \egroup%
+ \def\\{\sd@err{Too many \string\\\space commands in loop}\@ehc}%
+ \setbox\tw@\hbox\bgroup\strut%
+}
+\def\sd@doloop#1#2#3#4#5#6#7#8{%
+ \@tempdima\dp#1\relax%
+ \@tempdimb\ht#2\relax%
+ \offinterlineskip%
+ \ialign{%
+ ##\cr%
+ \ifsd@round%
+ \sd@doloop@i#1#3\sd@topcirc\@tempdima{#5}{#6}%
+ \sd@doloop@i#2#4\@tempdimb\sd@botcirc{#7}{#8}%
+ \else%
+ \sd@doloop@i#1#3\sd@upper\@tempdima{#5}{#6}%
+ \sd@doloop@i#2#4\@tempdimb\sd@lower{#7}{#8}%
+ \fi%
+ }%
+}
+\def\sd@doloop@i#1#2#3#4#5#6{%
+ \ifsd@backwards#2\fi%
+ \kern-2\sdrulewidth%
+ \vrule\@height#3\@depth#4\@width2\sdrulewidth%
+ #5%
+ \sd@rule\hfill%
+ \sd@gap\sdtokskip%
+ \unhbox#1%
+ \sd@gap\sdtokskip%
+ \sd@rule\hfill%
+ #6%
+ \vrule\@height#3\@depth#4\@width2\sdrulewidth%
+ \ifsd@backwards\else#2\fi%
+ \kern-2\sdrulewidth%
+ \cr%
+}
+%%
+%% doafter package -- insert a token really after a group
+%% Copyright (c) 1996 Peter Schmitt and Mark Wooding
+%%
+%% 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 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+%%
+%% \CharacterTable
+%% {Upper-case \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
+%% Lower-case \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
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\let\@@aftergroup\aftergroup
+\def\doafter#1{%
+ \def\@tempa{\@@aftergroup#1}%
+ \afterassignment\doafter@i\let\@let@token%
+}
+\def\doafter@i{%
+ \@let@token%
+ \let\aftergroup\@my@aftergroup%
+ \@@aftergroup\@prepare@after\@tempa%
+}
+\def\ag@cnt@local{0 }
+\let\ag@cnt@global\ag@cnt@local
+\def\@my@aftergroup{%
+ \begingroup%
+ \count@\ag@cnt@local%
+ \advance\count@\@ne%
+ \xdef\ag@cnt@global{\the\count@\space}%
+ \endgroup%
+ \let\ag@cnt@local\ag@cnt@global%
+ \@@aftergroup\@after@token\@@aftergroup%
+}
+\def\@after@token{%
+ \@start@after@group%
+ \@after@token%
+}
+\def\@start@after@group{%
+ \begingroup%
+ \count@\ag@cnt@global%
+ \clubpenalty\ag@cnt@local%
+ \let\@after@token\@after@token@i%
+}
+\def\@after@token@i{%
+ \advance\count@\m@ne%
+ \ifnum\count@=\clubpenalty%
+ \global\let\ag@cnt@global\ag@cnt@local%
+ \expandafter\@after@aftertoken\expandafter\@after@all%
+ \else%
+ \expandafter\@@aftergroup%
+ \fi%
+}
+\let\@after@all\endgroup
+\def\@prepare@after{%
+ \ifx\ag@cnt@local\ag@cnt@global\else%
+ \expandafter\@prepare@after@i%
+ \fi%
+}
+\def\@prepare@after@i#1{%
+ \@start@after@group%
+ \def\@after@all{\@@aftergroup#1\endgroup}%
+}
+\def\@after@aftertoken#1{%
+ \let\bgroup\relax\let\egroup\relax%
+ \toks@{#1}%
+ \futurelet\@let@token\@after@aftertoken@i%
+}
+\def\@after@aftertoken@i{%
+ \ifcat\noexpand\@let@token{%
+ \@@aftergroup{%
+ \else\ifcat\noexpand\@let@token}%
+ \@@aftergroup}%
+ \else%
+ \def\@tempa##1{\@@aftergroup##1\the\toks@}%
+ \expandafter\expandafter\expandafter\@tempa%
+ \fi\fi%
+}
+\endinput
+%%
+%% End of file `syntax.sty'.
diff --git a/usergrps/uktug/baskervi/6_2/tblart.tex b/usergrps/uktug/baskervi/6_2/tblart.tex
new file mode 100644
index 0000000000..d5899dd84d
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/tblart.tex
@@ -0,0 +1,417 @@
+%
+% tblart.tex
+%
+% Article about mdwtab.sty
+%
+% (c) Mark Wooding, FWIW
+%
+
+% --- First, some evil hacking ---
+%
+% This lot sees if I'm in mid-document; if so it checks that necessary
+% packages are loaded and moans at the editor if necessary. Otherwise,
+% it loads an emulation of the layout, which might help me identify bad
+% line breaks. (I know I shouldn't be using \next like this, although
+% it's inside a group so I don't care.)
+
+\begingroup
+\makeatletter
+\edef\next#1#2{\ifx\documentclass\@notprerr#1\else#2\fi}
+\expandafter\endgroup\next
+{
+ \ifx\firsthline\xxundefined
+ \ifx\tabpause\xxundefined
+ \edef\ehelp{\errhelp{I can't seem to find Mr Wooding's excellent^^J%
+ `mdwtab' package. \space Please get it from CTAN
+ if^^J%
+ necessary, and say `\string\usepackage{mdwtab}'
+ in the^^J%
+ document preamble.}}
+ \ehelp
+ \errmessage{Package `mdwtab' not found}
+ \fi
+ \else
+ \edef\ehelp{\errhelp{You appear to have loaded the `array' package.^^J%
+ Mr Wooding's excellent `mdwtab' package doesn't^^J%
+ coexist well with `array' since both attempt to^^J%
+ redefine all the table handling. \space Since
+ `mdwtab'^^J%
+ is mostly compatible with `array', you should^^J%
+ load `mdwtab' instead.}}
+ \ehelp
+ \errmessage{Package `array' loaded}
+ \fi
+ \let\mdwendfile\endinput
+}{
+ \documentclass{baskart}
+ \usepackage{mdwtab}
+ \begin{document}
+ \def\mdwendfile{\end{document}}
+}
+
+% --- Some other definitions ---
+
+% These three typeset common LaTeX-related things. I have no idea how these
+% should be formatted, although I guess this lot will be OK.
+
+\makeatletter
+
+\providecommand{\pkg}[1]{\textsf{#1}}
+\providecommand{\env}[1]{\textsf{\def\*{\ensuremath{*}}#1}}
+\providecommand{\cmd}[1]{\expandafter\texttt\expandafter{\string#1}\cmd@i}
+
+\def\cmd@i{\futurelet\@let@token\cmd@ii}
+\def\cmd@ii{%
+ \let\@tempa\relax%
+ \ifx\@let@token\bgroup%
+ \def\@tempa##1{\texttt{\char`\{}\textit{##1}\texttt{\char`\}}\cmd@i}%
+ \fi%
+ \ifx\@let@token[%
+ \def\@tempa[##1]{\texttt{[}\textit{##1}\texttt{]}\cmd@i}%
+ \fi%
+ \@tempa%
+}
+
+\providecommand{\parg}[1]{\textit{#1}}
+
+% --- Table styling ---
+
+\renewcommand{\tabstyle}{\small}
+
+% --- Hyphenation ---
+
+\hyphenation{mdw-tab}
+
+% --- Whew. Now I can actually start ---
+
+\section{Beautiful tables, the easy way with the \pkg{mdwtab} package}
+
+\begin{multicols}{2}
+
+The first thing you'll probably notice when you load the \pkg{mdwtab} package
+is that \TeX\ runs out of memory that much quicker. The author is well aware
+that the package is far too large, but can't decide which bits of its
+functionality can be dropped. The second thing you'll notice is that some
+table-related packages stop working properly, because they don't understand
+how \pkg{mdwtab} handles tables, and still think that \LaTeX\ is in control.
+The author has attempted to retain compatibility with the `Tools' collection
+of packages, and in particular with David Carlisle's excellent set of table
+handling things. The third thing you'll probably notice is that your tables
+still look (almost) exactly the same as they did before. In common with the
+\pkg{array} package, rules in tables now contribute to the table's width and
+height, which fixes a problem with the sides of tables looking uneven.
+
+\begin{center}
+
+ % Define a rule type which does what LaTeX's standard `tabular' does.
+ % Why does LaTeX do this, by the way?
+
+ \newcolumntype{v}{!{\kern-.5\arrayrulewidth\vline\kern-.5\arrayrulewidth}}
+
+ % Note that the text is lying through it's teeth. It has the full power
+ % and beauty of mdwtab at its desposal, yet delimberately tries to make
+ % the table look awful.
+
+ \begin{tabular}{vcvcv} \hline
+ This is an example & of a ruled \\ \hline
+ table, using \LaTeX's & standard table \\ \hline
+ handling. Can you see & the slight nicks \\ \hline
+ in the vertical rules & on the sides? \\ \hline
+ \end{tabular}
+\end{center}
+
+It's odd starting an article about a package with a list of its drawbacks:
+the author is of the firm opinion that you should have no illusions
+concerning the drawbacks of the package. (There are a load of others which
+I haven't described here; most of them aren't very interesting.)
+
+On the other hand the package \emph{does} provide all the column types and
+other new features of the \pkg{array} package, including the
+\cmd{\newcolumntype} command.
+
+
+\subsection{A touch of class}
+
+Tables which have horizontal rules tend to look rather better if you insert
+a little extra space above and below the rules. Compare
+ \begin{tabular}[C]{|l|l|l|} \hline
+ \bf Package & \bf Advantage & \bf Disadvantage \\ \hline
+ Standard \LaTeX & Built-in & Ugly tables \\
+ \pkg{array} & New column types & It isn't perfect \\
+ \pkg{mdwtab} & Beautiful tables & It's very big \\ \hline
+ \end{tabular}
+with
+ \begin{tabular}[C]{|l|l|l|} \hlx{hv}
+ \bf Package & \bf Advantage & \bf Disadvantage \\ \hlx{vhv}
+ Standard \LaTeX & Built-in & Ugly tables \\
+ \pkg{array} & New column types & It isn't perfect \\
+ \pkg{mdwtab} & Beautiful tables & It's very big \\ \hlx{vh}
+ \end{tabular}
+to see the difference. Which do you think is nicer?
+
+The first example above was created using the standard \LaTeX\ \cmd{\hline}
+command. The second example has some extra space inserted around the
+horizontal rules. This is achieved by using the \cmd{\vgap} command. If you
+say `\cmd \vgap{length}', \TeX\ will insert a `short' row whose height is the
+\parg{length} given, ensuring that the vertical rules in your table are
+extended appropriately. For example, I just said \verb"\vgap{2pt}" at
+appropriate points in the table above.
+
+However, this isn't always what you want. If you use \cmd{\multicolumn}
+commands for headings, you'll get odd-looking `stubs' as in the following
+example:
+\begin{tabular}[C]{|c|c|c|} \hlx{hv}
+ Item one & \multicolumn{2}{c|}{Item two} \\ \hlx{vhv}
+ Item three & Item four & Item five \\ \hlx{vhv}
+ \multicolumn{2}{|c|}{Item six} & Item seven \\ \hlx{vh}
+\end{tabular}
+Please bear in mind that this \emph{could} be the effect you want (for
+instance, the \texttt{MIX} word-layout diagrams in \emph{The Art of Computer
+Programming} do this sort of thing).
+
+In the event that you don't like this effect, and I can't blame you if you
+don't, you can suppress the rule stubs in certain columns by saying
+`\cmd \vgap[columns]{length}' -- the \parg{columns} argument contains a list
+of column numbers whose rules are to be omitted. The rules on the very left
+hand side of the table are numbered~0, while the rules on the right hand side
+of column~$n$ are numbered~$n$. Column numbers are separated by commans, and
+column ranges can be given. For example, to suppress rules in columns~1,~2,
+3, 5, 7, 8~and~9 you'd say `\verb"1-3, 5, 7-9"'.
+
+In the example above, if I end my table rows like this:
+\begin{list}{}{\leftmargin=\parindent \parskip=0pt \topsep=0pt} \footnotesize
+
+% The hacking above makes verbatim listings rather smaller, so I can fit
+% more into the rather narrow columns, and it looks rather less prominent:
+% `tt' text seems to stick out rather too obviously.
+
+\begin{verbatim}
+... \hline \vgap[2]{2pt}
+... \\ \vgap[2]{2pt} \hline \vgap {2pt}
+... \\ \vgap {2pt} \hline \vgap[1]{2pt}
+... \\ \vgap[1]{2pt} \hline
+\end{verbatim}
+
+\end{list}
+then it ends up looking much nicer:
+\begin{tabular}[C]{|c|c|c|} \hlx{hv[2]}
+ Item one & \multicolumn{2}{c|}{Item two} \\ \hlx{v[2]hv}
+ Item three & Item four & Item five \\ \hlx{vhv[1]}
+ \multicolumn{2}{|c|}{Item six} & Item seven \\ \hlx{v[1]h}
+\end{tabular}
+Isn't that neat?
+
+All of this gets terribly cumbersome to type. The \cmd \hlx{hlx-commands}
+command provides a neat abbreviation. The \parg{hlx-commands} argument is
+a list of single letter commands to perform. There's a load of commands
+provided, for doing various little jobs:
+\begin{description}
+\renewcommand{\makelabel}[1]{\hspace{\labelsep}\cmd#1}
+
+\item [{h}] is equivalent to \cmd \hline. If you type two \cmd{h} commands
+ in a row, a space is left between them, as usual.
+
+\item [{v[columns][length]}] means exactly the same thing as \cmd
+ \vgap[columns]{length}, except that the \parg{length} argument is
+ optional. If you omit it, the default value of \cmd{\doublerulesep} is
+ used, which is usually set to 2\,pt.
+
+\item [{c{columns}}] is equivalent to \cmd \cline{columns}. You can specify
+ the columns by giving comma separated column numbers and ranges, just
+ as for \cmd{\vgap}: the \cmd{\cline} command has been upgraded to
+ understand these more complex descriptions.
+
+\item [{s[length]}] leaves a vertical gap of height \parg{length}. If you
+ omit the \parg{length}, the value of \cmd{\doublerulesep} is used.
+
+\end{description}
+
+I ought to come clean now. Since I'm a lazy typist, I didn't actually use
+the \cmd{\vgap} command in the tables above. What I actually said was
+\verb"\hlx{hv}" for the first row, \verb"\hlx{vhv}" for the middle rows, and
+\verb"\hlx{vh}" after the last one.
+
+
+\subsection{New column types}
+
+It seems to be traditional to add new column types when \LaTeX's table
+handling gets upgraded, and the author saw no reason not to follow the trend.
+The complete list of column types, and other funny characters that can be
+used in the argument of the \env{tabular} environment, is given below. The
+new ones added by this package are marked with a little `*'.
+\begin{description}
+
+% The following stuff attempts to compress the list vertically, while
+% still leaving a little space between items.
+
+\renewcommand{\makelabel}[1]{\hspace{\labelsep}\cmd#1}
+\parskip=0pt
+\itemsep=\jot plus 1pt
+
+\item [{l}] Left aligned text (in \env{tabular}) or equation (in
+ \env{array}).
+
+\item [{c}] Centred text (in \env{tabular}) or equation (in \env{array}).
+
+\item [{r}] Right aligned text (in \env{tabular}) or equation (in
+ \env{array}).
+
+\item [{{Ml}, \cmd{Mc} and \cmd{Mr}*}] Left, centre and right aligned
+ equations.
+
+\item [{{Tl}, \cmd{Tc} and \cmd{Tr}*}] Left, centre and right aligned text.
+
+\item [{p{width}}] Top aligned paragraphs, with the given width.
+
+\item [{m{width}}] Vertically centred paragraphs, with the given width.
+
+\item [{b{width}}] Bottom aligned paragraphs, with the given width.
+
+\item [{#{pre}{post}*}] User defined column type: \parg{pre} is inserted
+ before the table cell's text, and \parg{post} is inserted afterwards.
+
+\item [{|}] Inserts a vertical rule between columns.
+
+\item [{!{text}}] Inserts \parg{text} between columns, treating it just like
+ a vertical rule.
+
+\item [{@{text}}] Inserts \parg{text} in place of the usual intercolumn
+ space.
+
+\item [{>{text}}] Inserts \parg{text} just before the cell's text.
+
+\item [{<{text}}] Inserts \parg{text} just after the cell's text.
+
+\item [{*{count}{preamble}}] Inserts \parg{count} copies of the
+ \parg{preamble} into the table preamble.
+
+\end{description}
+
+You can define your own new column types by saying `\cmd \newcolumntype
+{type}[narg][opt]{text}', which defines a new column type \parg{type}, which
+means exactly the same thing as the preamble characters \parg{text}. The
+column type can take arguments (even optional ones) -- this works in exactly
+the same way as \cmd{\newcommand}.
+
+
+\subsection{Unboxed tables}
+
+Normally \LaTeX\ will wrap tables up in a box. This makes things convenient
+sometimes, but horizontal positioning can be a bit of a pain. As well as the
+usual~\texttt{[t]}, \texttt{[c]} and~\texttt{[b]} position arguments, the
+package adds~\texttt{[L]}, \texttt{[C]} and~\texttt{[R]}, which position the
+table left-aligned, centred and right-aligned respectively. Such tables are
+called \emph{unboxed} tables, because they're not wrapped up in a box. As
+well as allowing you to control horizontal position more easily, such tables
+have some other advantages.
+
+\iffalse
+Oh, before we go any further, I ought to point out that despite not being
+boxed up, unboxed tables still can't be broken across pages. If you want to
+handle long tables, you should be using the truly wonderful \pkg{longtable}
+package. You can use all the new commands, like \cmd{\vgap} and \cmd{\hlx}
+in the \env{longtable} environment, to make your long tables just as
+beautiful as your short ones.
+\fi
+
+You can pause a an unboxed table for a bit and insert some normal paragraph
+text. When you say \cmd\tabpause{text} in the middle of a table, \LaTeX\
+inserts the \parg{text}, typeset in paragraph mode, in the middle of the
+table. The text can be split across pages and all the normal things like
+that.
+
+
+\subsection{Life's little luxuries}
+
+As well as perhaps not looking as glorious as they might do, \LaTeX's tables
+have a few other rough edges. The \pkg{mdwtab} package tries (and by and
+large succeeds) in smoothing these off and tucking all the nastiness under
+the carpet.
+
+\subsubsection{Footnotes}
+
+\LaTeX\ doesn't allow footnotes in tables. They just don't work: the
+footnote text mysteriously vanishes. This package will carefully handle
+footnotes in both boxed and unboxed tables, ensuring that they appear in the
+right place. (This is done by using a trimmed down version of the author's
+\pkg{footnote} package, which tries to provide a general solution to the
+problems of footnote handling.) You can therefore use footnotes in your
+tables with abandon, and expect everything to work beautifully.
+
+\subsubsection{Vertical alignment of ruled tables}
+
+% Time for some hacking. The `grottytab' environment attempts to emulate
+% LaTeX's tables in a deeply cut down way. It allows any number of centred
+% columns, with vertical rules working in the normal LaTeX way (i.e., looking
+% nasty).
+
+\newenvironment{grottytab}[1][c]{%
+ \def\hline{\noalign{\hrule height\arrayrulewidth}}%
+ \def\vline{%
+ \kern-.5\arrayrulewidth%
+ \vrule width\arrayrulewidth%
+ \kern-.5\arrayrulewidth%
+ }
+ \leavevmode\hbox\bgroup$%
+ \ifx#1t\vtop\else\ifx#1b\vbox\else\vcenter\fi\fi\bgroup%
+ \def\upart{\hskip\tabcolsep\hfil\ignorespaces}%
+ \def\vpart{\unskip\hfil\hskip\tabcolsep\vline}%
+ \let\\=\cr%
+ \halign\bgroup\strut\vline\upart##\vpart&&\upart##\vpart\cr%
+}{%
+ \crcr%
+ \egroup\egroup\mathsurround=0pt$\egroup%
+}
+
+It's been pointed out numerous times that having rules in tables can make
+top- and bottom-aligned tables look rather odd: the baseline of the text
+tends to belined up with the rules in the tables, rather than with the actual
+first or last rows. In other words, you get strange results like
+\begin{grottytab}[b] \hline
+ An & odd \\ \hline
+ looking & table \\ \hline
+\end{grottytab}
+and
+\begin{grottytab}[t] \hline
+ An & odd \\ \hline
+ looking & table \\ \hline
+\end{grottytab}.
+Clearly this isn't terribly desirable.
+
+Various solutions have been proposed for this problem. \emph{The \LaTeX\
+Companion} describes a pair of commands \cmd{\firsthline} and
+\cmd{\lasthline} which provide a workaround. The \pkg{mdwtab} will calculate
+the height of the rules and other material at the top or bottom of the table
+and shift it into the right position. Hence you can have
+{\renewcommand{\tabstyle}{} \begin{tabular}[b]{|c|c|} \hline A & nice \\
+\hline looking & table \\ \hline
+\end{tabular}
+and
+\begin{tabular}[t]{|c|c|} \hline
+ A & nice \\ \hline
+ looking & table \\ \hline
+\end{tabular} }
+with no extra effort at all.
+
+\subsubsection{Extra row separation}
+
+In maths, it's conventional to insert a little extra space between the rows
+of an array. To save you having to end every line of an array with something
+like `\verb"\\[\jot]"', extra space of the amount \cmd{\arrayextrasep} is
+inserted automatically. (This parameter is set to 1\,jot by default.)
+There's an analogous \cmd{\tabextrasep} parameter, although this is initially
+0\,pt, and isn't likely to be changed.
+
+If you're worried about matrices looking rather odd as a result of this extra
+space, don't be. In the author's opinion, they actually end up looking
+slightly nicer as a result. However, you can almost certainly get better
+results by using a dedicated \env{matrix} environment which takes
+extra-special care over the spacing.
+
+\medskip\hrule\smallskip\footnotesize
+\hfill Mark Wooding \\ \hspace*{\fill} \texttt{mdw@straylight.co.uk}
+
+
+\end{multicols}
+
+\mdwendfile
diff --git a/usergrps/uktug/baskervi/6_2/texnames.sty b/usergrps/uktug/baskervi/6_2/texnames.sty
new file mode 100644
index 0000000000..395751126a
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/texnames.sty
@@ -0,0 +1,328 @@
+% /u/sy/beebe/tex/texnames/texnames.sty, Sat Oct 26 11:19:21 1991
+% Edit by Nelson H. F. Beebe <beebe@magna.math.utah.edu>
+%%% ====================================================================
+%%% @TeX-style-file{
+%%% author = "Nelson H. F. Beebe",
+%%% version = "1.09",
+%%% date = "16 March 1993",
+%%% time = "10:08:05 MST",
+%%% filename = "texnames.sty",
+%%% address = "Center for Scientific Computing
+%%% Department of Mathematics
+%%% South Physics Building
+%%% University of Utah
+%%% Salt Lake City, UT 84112
+%%% USA
+%%% Tel: (801) 581-5254
+%%% FAX: (801) 581-4148",
+%%% checksum = "15888 291 1374 12268",
+%%% email = "beebe@magna.math.utah.edu (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "TeX names",
+%%% supported = "yes",
+%%% docstring = "This style file for AmSTeX, LaTeX, and TeX
+%%% defines macros for the names of TeX
+%%% and METAFONT programs, in several
+%%% letter-case variants:
+%%%
+%%% \AMSTEX, \AMSTeX, \AmSTeX
+%%% \BIBTEX, \BIBTeX, \BibTeX
+%%% \LAMSTeX, \LAmSTeX
+%%% \LaTeX, \LATEX
+%%% \METAFONT, \MF
+%%% \SLITEX, \SLITeX, \SLiTeX, \SliTeX
+%%%
+%%% It will NOT redefine any macro that
+%%% already exists, so it can be included
+%%% harmlessly after other style files.
+%%%
+%%% In AmSTeX or Plain TeX, just do
+%%%
+%%% \input texnames.sty
+%%%
+%%% In LaTeX, do
+%%%
+%%% \documentstyle[...,texnames]{...}
+%%%
+%%% This file grew out of original work by
+%%%
+%%% Richard Furuta
+%%% Department of Computer Science
+%%% University of Maryland
+%%% College Park, MD 20742
+%%%
+%%% furuta@mimsy.umd.edu
+%%% seismo!umcp-cs!furuta
+%%%
+%%% 22 October 1986, first release (1.00)
+%%%
+%%% 1 April 1987 (1.01): Modified by William
+%%% LeFebvre, Rice University to include
+%%% definitions for BibTeX and SLiTeX, as they
+%%% appear in the LaTeX Local User's Guide
+%%% template (the file latex/local.tex in
+%%% standard distributions)
+%%%
+%%% 26 October 1991 (1.02): Modified by
+%%% Nelson H. F. Beebe <beebe@math.utah.edu> to
+%%% add several new macro names, and adapt for
+%%% use with Plain TeX and AmSTeX.
+%%%
+%%% 26 October 1991 (1.03): Add \LaTeX and
+%%% \LATEX
+%%%
+%%% 25 November 1991 (1.04): Add \LamSTeX
+%%% and \LAMSTeX
+%%%
+%%% 27 January 1991 (1.05 and 1.06): Add slanted
+%%% font support for \MF. Make several comment
+%%% changes. Add a couple of missing % at end
+%%% of line, and replace blank lines by empty
+%%% comments.
+%%%
+%%% 30 December 1992 (1.07): Use \TeX in
+%%% definitions of \BibTeX and \LaTeX. Remove
+%%% occurrences of \rm. Change \sc to use
+%%% \scriptfont instead of hardwiring cmcsc10.
+%%% Use \cal for \LAMSTeX.
+%%%
+%%% 1 March 1993 (1.08): Consolidate \ifx's onto
+%%% single lines for brevity. Add
+%%% \spacefactor1000 to definitions for \TeX and \MF.
+%%%
+%%% 16 March 1993 (1.09): Add \AmS, \AMS, \AmSLaTeX,
+%%% and \AMSLaTeX.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%%
+%%% }
+%%% ====================================================================
+%
+\immediate\write16{This is texnames.sty, Version 1.09 <16 March 1993>}%
+%
+% This has a chance of working in different styles and sizes, although
+% it's not perfect. If \sc actually selects a caps-and-small caps font,
+% we want to use lowercase letters (to get the small caps). But if \sc
+% selects a smaller point size, we want to use uppercase letters.
+% \uppercasesc is called on every letter we typeset in \sc, so both
+% forms can be accommodated.
+\ifx\sc\undefined
+ \def\sc{%
+ % If there is no \scriptfont for the current family, use a fixed
+ % font. What more can we do?
+ \expandafter\ifx\the\scriptfont\fam\nullfont
+ \font\temp = cmr7 \temp
+ \else
+ \the\scriptfont\fam
+ \fi
+ \def\uppercasesc{\char\uccode`}%
+ }%
+\fi
+\ifx\uppercasesc\undefined
+ \let\uppercasesc = \relax
+\fi
+%
+% In the following, we first give the ``official'' definition,
+% then follow it with spelling variants. Alternate definitions
+% are discarded in favor of the official one. Each family is
+% separated by a line like the following one.
+%
+%=======================================================================
+%
+% Only change from plain.tex is the \spacefactor assignment (suggested
+% by Phil Taylor), so that \TeX at the end of a sentence isn't treated
+% as an abbreviation.
+%
+\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\spacefactor1000 }%
+%
+%=======================================================================
+% From the AMS tex/ams/amslatex/fontsel/nfssinst.tex file:
+% hacked by RF 1994/03/31
+\ifx\mathcal\undefined
+ \def\mathcal#1{{\cal #1}}
+\fi
+\ifx\AmS\undefined
+ \def\AmS{$\mathcal{A}$\kern-.1667em\lower.5ex\hbox
+ {$\mathcal{M}$}\kern-.125em$\mathcal{S}$}
+\fi
+\ifx\AMS\undefined \let\AMS=\AmS \fi
+\ifx\AmSLaTeX\undefined
+ \def\AmSLaTeX{\AmS-\LaTeX}
+\fi
+\ifx\AMSLaTeX\undefined \let\AMSLaTeX=\AmSLaTeX \fi
+%=======================================================================
+%
+% Mike Spivak's amstex/amstex.tex 1.1d [26-Aug-1988] has
+% \def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox
+% {\textfontii M}\kern-.125em{\textfontii S}-\TeX}
+% and 2.1 [05-Apr-1991] has an equivalent definition.
+% AmSTeX's \textfontii is exactly the same as \cal, which
+% all TeX variants understand.
+%
+\ifx\AmSTeX\undefined
+ \def\AmSTeX{\AmS-\TeX}%
+\fi
+%
+% Leslie Lamport's latex/tmanual.tex [10-Jul-1984] (an early
+% draft of the book) defines it in uppercase with the standard
+% definition.
+\ifx\AMSTEX\undefined \let\AMSTEX=\AmSTeX \fi
+%
+% Barbara Beeton's latex/deproc.sty [24-Apr-1986] and inputs/tugbot.sty
+% [11-Jan-1988] uses this spelling, but the definition
+% \leavevmode\hbox{$\mathcal{A}\kern-.2em\lower.376ex \hbox{$\mathcal{
+% M}$}\kern-.2em\mathcal{S}$-\TeX}
+\ifx\AMSTeX\undefined \let\AMSTeX=\AmSTeX \fi
+%
+%=======================================================================
+%
+% The definitions of \BibTeX and \SLiTeX in Leslie Lamport's
+% latex/local.tex lower the E by 0.7ex, while \TeX in plain.tex lowers
+% it by 0.5ex. Oren Patashnik's bibtex/btxdoc.tex and bibtex/btxhak.tex
+% [08-Feb-1988] and bibtex/bibtex.web 0.99c [xx-Feb-1988] use this same
+% name and definition, but Oren said using \TeX here is ok. (Curiously,
+% LaTeX itself does not define macros for any TeXware except LaTeX and
+% TeX!)
+\ifx\BibTeX\undefined
+ \ifx\textsc\undefined
+ \def\BibTeX{B{\sc \uppercasesc i\kern-.025em \uppercasesc b}\kern-.08em
+ \TeX}%
+ \else
+ \def\BibTeX{\textsc{Bib}\kern-.08em
+ \TeX}%
+ \fi
+\fi
+%
+% Leslie Lamport uses this spelling in latex.tex, but not as a
+% macro. We include it for consistency with AMSTeX.
+\ifx\BIBTeX\undefined \let\BIBTeX=\BibTeX \fi
+%
+% Leslie Lamport's latex/slides.tex [05-Jun-1984],
+% latex/tmanual.tex [10-Jul-1984] (an early draft of the book),
+% and latex/lerrata.tex [23-Jul-1985] have this spelling, but the
+% definition BIB\kern-.1em\TeX.
+\ifx\BIBTEX\undefined \let\BIBTEX=\BibTeX \fi
+%
+%=======================================================================
+%
+% From tugboat.com 1.08 [24-Oct-1990].
+\ifx\LAMSTeX\undefined
+ \def\LAMSTeX{L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}%
+ \kern-.2em\lower.376ex\hbox{\the\textfont2 M}%
+ \kern-.125em {\the\textfont2 S}-\TeX}%
+\fi
+%
+\ifx\LamSTeX\undefined \let\LamSTeX=\LAMSTeX \fi
+%
+% This variant seems likely to appear:
+\ifx\LAmSTeX\undefined \let\LAmSTeX=\LAMSTeX \fi
+%
+%=======================================================================
+%
+% The definition from latex.tex (LATEX VERSION 2.09 <14 January 1991>)
+% and bibtex.web 0.99c [xx-Feb-1988] lowers the E slightly more than
+% \TeX, but consistency seems more desirable. See comments at \BibTeX.
+% Different definitions are given by latex/deproc.sty [24-Apr-1986],
+% amstex/man.sty [15-Dec-1986] inputs/tugbot.sty [11-Jan-1988], and
+% latex/tugboat.com 1.08 [24-Oct-1990].
+%
+% note: this definition doesn't have a variant based on \textsc, since
+% anything that's LaTeX2e-compatible ought to have it anyway...
+%
+\ifx\LaTeX\undefined
+ \def\LaTeX{L\kern-.36em\raise.3ex\hbox{\sc \uppercasesc a}\kern-.15em\TeX}%
+\fi
+%
+% latex/slides.tex [05-Jun-1984] and latex/lerrata.tex [23-Jul-1985]
+% have this spelling, but different definitions
+\ifx\LATEX\undefined \let\LATEX=\LaTeX \fi
+%
+% LaTeX 2e `standard' logo (euuccchhhh!)
+\ifx\LaTeXe\undefined
+ \def\LaTeXe{\LaTeX\kern.15em 2${}_{\textstyle\varepsilon}$}
+\fi
+%
+% and a corresponding thing for LaTeX _explicitly_ 2.09
+%
+\ifx\LaTeXo\undefined
+ \def\LaTeXo{\LaTeX\kern.15em 2.09}
+\fi
+%
+%=======================================================================
+%
+% Don Knuth's mf.web 2.7 [xx-Sep-1990] and Barbara Beeton's
+% latex/deproc.sty [24-Apr-1986] use an equivalent of this definition.
+% The font is variously named \logo, \manfnt, and \mf. plain.tex
+% preloads \manfnt. manfnt has the letters A, E, F, M, N, O, T in
+% various sizes plus extra symbols for Don Knuth's books Computers and
+% Typesetting, and Concrete Mathematics, while logo10 has only those
+% letters in one size. AmSTeX uses \logo in amsppt.sty and imappt.sty,
+% so we should avoid it, and tugboat.com uses \mf for {\smc Metafont}.
+% We therefore use \manfnt here, defining it if necessary. QUESTION:
+% should we use manfnt, or logo10?
+\ifx\MF\undefined
+ \ifx\manfnt\undefined
+ \font\manfnt=logo10
+ \fi
+ \ifx\manfntsl\undefined
+ \font\manfntsl=logosl10
+ \fi
+ \def\MF{{\ifdim\fontdimen1\font>0pt \let\manfnt = \manfntsl \fi
+ {\manfnt META}\-{\manfnt FONT}}\spacefactor1000 }%
+\fi
+%
+% I cannot find any `official' uses of this alternate, but it
+% seems likely that people will use it.
+\ifx\METAFONT\undefined \let\METAFONT=\MF \fi
+%
+%=======================================================================
+%
+% Leslie Lamport's latex/slides.tex [05-Jun-1984]. His
+% latex/lerrata.tex [23-Jul-1985] and latex/tmanual.tex
+% [10-Jul-1984] (an early draft of the book) define it as
+% SLI\TeX! The LaTeX User's Guide and Reference Manual (1986)
+% appears to use small caps, and possibly kerning, for Sli.
+% I need to ask Leslie to suggest a preferred definition.
+\ifx\SLITEX\undefined
+ \ifx\textsc\undefined
+ \def\SLITEX{S\kern-.065em L\kern-.18em\raise.32ex\hbox{\textsc{i}}%
+ \kern-.03em\TeX}%
+ \else
+ \def\SLITEX{S\kern-.065em L\kern-.18em\raise.32ex\hbox{i}%
+ \kern-.03em\TeX}%
+ \fi
+\fi
+%
+% latex/local.tex (sample Local Guide) [27-Oct-1988] uses
+% this name, but defines it as
+% {\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em T\kern
+% -.1667em\lower.7ex\hbox{E}\kern-.125emX}
+% with an extra-low E, and kerned Sli in small caps. Is this
+% what the LaTeX User's Guide and Reference Manual (1986) used?
+\ifx\SLiTeX\undefined \let\SLiTeX=\SLITEX \fi
+%
+% latex/slitex.tex [08-Jun-1988] uses SliTeX in typeouts,
+% but not as a macro -- what a way to confuse the user.
+\ifx\SliTeX\undefined \let\SliTeX=\SLITEX \fi
+%
+% I cannot find a use of this one, but it seems a likely
+% candidate anyway, and is consistent with AMSTeX and BIBTeX.
+\ifx\SLITeX\undefined \let\SLITeX=\SLITEX \fi
+%
+%=======================================================================
+%
+% from pictex.tex:
+\ifx\PiC\undefined \def\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC} \fi
+\ifx\PiCTeX\undefined \def\PiCTeX{\PiC\kern-.11em\TeX} \fi
+%
+% from fantasy-land:
+\ifx\VorTeX\undefined \def\VorTeX{V\kern-2.7pt\lower.5ex\hbox{O\kern-1.4pt R}%
+ \kern-2.6ptT\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX} \fi
+%
+\endinput
+%=========================[End of texnames.sty]=========================
diff --git a/usergrps/uktug/baskervi/6_2/texpkgs-bit.eps b/usergrps/uktug/baskervi/6_2/texpkgs-bit.eps
new file mode 100644
index 0000000000..dca45859f2
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/texpkgs-bit.eps
@@ -0,0 +1,746 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 54 375 534 755
+%%BeginPreview: 481 381 1 381
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000003fffffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fffffffc0000000000
+% 00000003dddddddc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003555555540000000000
+% 00000003fdfffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fefffefc0000000000
+% 00000003ff7fff7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003555555d40000000000
+% 00000003ff9ffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ff800ffc0000000000
+% 00000003cd9ddddc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000035545fd540000000000
+% 00000003cffffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fe03f7fc0000000000
+% 00000003fefffffc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000355ffd5540000000000
+% 00000003fffffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffff83fc0000000000
+% 00000003dddddddc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003547fd5540000000000
+% 00000003fffffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000002fe3f01fc0000000000
+% 000000037dff7ffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003555755540000000000
+% 00000003fffffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fe0203fc0000000000
+% 00000003dddddddc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003555545540000000000
+% 00000003feeeeffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ff0407fc0000000000
+% 00000003d555555c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003555555540000000000
+% 00000003bbbbbbb80000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ff880ffc0000000000
+% 00000003555555540000000000000000000000000000000000000000000000000000000000000000000000000000000000000003555455540000000000
+% 00000002eeeeeeec0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fefffefc0000000000
+% 00000003555555540000000000000000000000000000000000000000000000000000000000000000000000000000000000000003555555540000000000
+% 00000003fffffffc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fffffffc0000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% fe8200440010000000100080000010000101fc8002401000000200012000000000104000000800000082020100020000040040001000002000000e0000
+% 92800040040000000010008000001008010124800200100000120001000008000010000000080000008002000022000004020000100001000000100000
+% 108010404c0100000010008000001018010020800200100000320001000018000010000000080010008002000862000004060000100003000000100000
+% 10f23844ee1387b97d91deba1b3cf39dcf0020f38247940f3c3bce0f27b9fcf7f41e4ef73def741364f27bc11c73ce1ee4774c9c13cf3ba3cf07bc0000
+% 109220448412027d2490489a0927108bf1002097c2449810a4125f11227e090a34125f41120934112092824110225f09f41246be143009242908500000
+% 1092184464118241a49148880923128a1100209402449c10a41250112242090a1012504512091010d89282410c22500904524220143029242908500000
+% 1092084424108265c493488c0927968b3900209642449418a41259192267098a1812594d13091810d092c2410422590994d2433216386926290c500000
+% 39ff38eee63b8739e7bbfdc40f3cf7cdcf2071fb87efff0f7e1fee0f7739ccf7083feeefb9df881091ff77e39c37ee1ceefbe01c3bce7df3df87b80000
+% 00000000000000001000000000200000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000
+% 00000000000000030000002800200000000000000000000000000000000000005000000000005000000000000000000000000000000000000000000000
+% 0000000000000001c000003000700000000000000000000000000000000000006000000000006000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0800000010000000000000007ffc11c70000104000000800000000400000000000004000fff8438e000800000001dcc0400001f8000400fe8001201000
+% 480000001000000000000000472430e200001000008000000000804000000000400440008e48c1c4000000000020c88040008118000400928001001000
+% c80000001000000000000000822038a200001000008000000021804004000000c00c40010440e1440000000000604c8040018208000400108001001000
+% ef381e73d47177079e0e7ba0802008b20ef79e59389fcbfdef21ce51ce1d3db0ef0e79c1004021641fcbfdef0e704c1c4f6dc207b8e50010f381279400
+% 497c131418112f88520249a08020489a0248124d7d12491214208263e80d429050844be1004121341249121402206704492482027df6001097c1249800
+% 494011541c51a808520a488080207c8e0a4812444112491214208a720604429050844a010041f11c124912140a20331449248202410700109401249c00
+% 496413d614d1cc8c521a48c0c02084861a4c12466512491314209a532206629058844b218042110c124913141a20223449248302659500109641249400
+% 7fb81efbbff9e707bf1ffc407c718fc21fe73fe03a3fffb9ee20dffdce023cf06f06fdc0f8e63b843fffb9ee1f30223effbcc1f738efd039fb83ffff00
+% 00001000000010000000000000000000000000000200000000400000000000000000000000000000000000000000000000000000000000000000000000
+% 00001000000300000000028000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000
+% 000038000001c0000000030000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 000010001e00000000080000000000000000800e0008000000000000102000002000000000000800000000000008000000000000000900000000000000
+% 00009000220000000088000000004000000080100008000000000000012000080000000000100800000000080088000000000000000800000000000000
+% 0001900022000100018800000000c000000080100008000002000800032000180000000044300800800000180188000000000800000800000000000000
+% 79e1de707a72e11ef1cf383ded9eefe83de79c3def0f7bdb273bdc3653bcf6dc23f9cbb8e439ca39c3a7b61de1cf383deff71de79e791e5c0000000000
+% 852092f82212412140897c42149244684218be121409a429047d101211250a482248497c84104c7d01a8520a10897c42144f9138528912480000000000
+% 852092802253412140894042149244204218a0121408a426c3410c0d91250a4822494d4064114e40c088520a1089404214480d18528912680000000000
+% c52092c822d381314089646314924430631cb2131408a6268165040d11258a48224b4e6424134a6440cc520b10896463144c853c52c912700000000000
+% 7bf0ff7077fbc11ee0dfb839e7bf6e1039e79c39ee0f73c4873b9c0939fef3cc77ffef38e41bffb9c0479e0de0dfb839eee71de7bf7bbf780000000000
+% 00000000000020800000000000000000000000000000000000000000000000000000008008000000000000000000000000000100000000040000000000
+% 000000000006000000000000000000a0000000000000000000000000000000000000180000000000028000000000000000000100000000c00000000000
+% 000000000003800000000000000000c00000000000000000000000000000000000000e0000000000030000000000000000000380000000700000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 3ffe10e384000410000000fe800220100000020000000000007020000000400000100010e0022410000402000000040000000000000400000000000000
+% 23923071040004100000009280020010000012000000000000812000000040000002001100002410000412000000040000000002000400000000000000
+% 41103851040004100000001080020010000032000000000000832000000040000006201100002410000432000000040000040006000400000000000000
+% 40100859079cf51e79e70010f38227940f3c3bce079cfe703de3bce0f38f51cbb8177393c6ca2411e73c3bce079cf51c5dce0e7f6ce400000000000000
+% 4010484d04c50613852f801097c2249810a4125f048492f8428125f0989060497c1247d1024224121144125f04c506044be80282242400000000000000
+% 40107c4704550711852800109402249c10a4125004949280428125008a90714d4012341101b2241215441250045507146a060a8224a400000000000000
+% 6010844304758511c52c80109642249418a4125904b492c8628125909e98534e6412165101a224131d64125904f5853473221ac225a400000000000000
+% 3e398ee107beefde7bf71039fb877fff0f7e1fee0fffff703dc1fee0f7ceffef383b73bb81277e39efbc1fee07beeffe79ce1f733dfe00000000000000
+% 00000000000000000000000000000000000000000000000000000000800000008000000000000000000000000400000004000000000000000000000000
+% 000000000000000000000000000000000000000000000000000000008000001800000000000000000000000004000000c0000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000001c000000e0000000000000000000000000e00000070000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0800000000000040000000000008000200000000020003c400000080038002000020000000070000000000004100000100082000044820003c00020000
+% 08000000000402000000000000000002000008000001040400000080040002000020000000080000000000004900000100880000004820004000020000
+% 08000000000c06000000200000000002000058400003040400800080040002000020010004080000000000005900000101880200004820004000020000
+% 79e7ecfe39eee74f3c1c70e05fc9e71e0f3cfcef7a7b8f44e08f3c9d0f7bc279ee21b39dee1ef7879ed9001c5de7b65de1cf270d94483ce0f5fb9e0000
+% 8a1824927d242250a404402048093fa209c28890224d0445f090a48d048502860220923e88090a04a14800044928524920892404844827f04467e20000
+% 8a1824924124a250a41430a06889182208c26870224504450090a484048502860a2091a086090a04a1361c144928526920892303644823004464220000
+% cb1c24926525a258a43411a071093cb209e22838224d04459098a48604c502c71a2090b282098a04b1340034492c527120892103444823904426720000
+% 79e73dff3bf7f3ef7e3e71f07bfde71e0f3cecee77798eeee08f7fc20e7b8779df70f39dce1cf70fde24003eeff79e7bf0dff7024efc3ce0efbb9e0000
+% 00000000000000000000000004010000080000000040000000400000000000000000000000000000000000000000000400000000000000000000000000
+% 000000000000000000000000c001000008000000004000000000001400000000000000000000000000000000000000c000000000000000000000000000
+% 000000000000000000000000700380001c00000000e0000000000018000000000000000000000000000000000000007000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 000000007e00e00000000007f03dc7e00000000000100000000000001c0000080000000410000000008200e0000001000007e000000000000000000000
+% 000000002201000100000004900c8220000000000010000000000000200000480000000400000000008001000000080000046000000000800000000000
+% 20000040220100030000000080050220040000000810000000000000200000c80000000400001000008001000000180000082000000001840000000000
+% 73cf3c40263bdde39e0fee80870602638ef6def39c1e79fce0f397707bde1eef3bc39ef7964e3871e7827bdef7f39d3cf0080f3f8fe73dce0000000000
+% 4430a4403c7d3e81210926808f8703c7c90a4907d0128525f09892f8242821497d008904935f20112882492144908942900810a4892fa4880000000000
+% 3430a440244120812109220088010244070a49040c128525008a9a802428214941028904911018512882492144928942900810a4892824860000000000
+% 1638a44022653281310923008c898226438a49864412c525909e9cc82628314965068984919908d12c82493144968962900c18a4892ca4820000000000
+% 73cf7e487bbb9dc19e1ff101c739c7bb8ef3dce39c3f7bfee0f7de7073dc1e7fbb87dceff80e38fbf787ff9eefffcfbdfa07cf7fdff77ecec000000000
+% 00000080000000000000000000000000000000000000000000800100000000000000000000000000000000000000000000000000000000004000000000
+% 000000000000000000000a0000000000000000000000000000803000000000000000000000000000000000000000000000000000000000000000000000
+% 000000000000000000000c0000000000000000000000000001c01c00000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000020000000008000000000000000000400104810000000000000000020000000040000000008003dffb83f008010012007000000000000000000
+% 00000001000000000080000000000080000004001041000000000000000001200000000400000000480010a49864000010002408000000000000000000
+% 00000003000010000080000000000184000004001043000010000000000003200000000400000004c80010841c64000810002c08000000000000000000
+% 7bdfee3fa3cf380e3cf39e7b8fe73dce038f3c1cf3cb93cf383bdc1fc7bdc3bce3c365c4f79fc704ef381f8414a4009c1ed92e1fef3f83800000000000
+% 84289f412429201f24909287c92fa488008944051449142920093e124853e124224123e508524f84497c108416a400901349240890a480800000000000
+% 8428904124291810249292840928248602894415144914291829201248520124a240da0508524804494010841324008c1149240890a482800000000000
+% c628996126290819249692c6492ca4820689643596491629086932124c532125a240d3258c524c8449641084132420841149240898a486800000000000
+% 73ddce39f3dfbb0e7fffff739ff77ecec7dfbc3ef3ddbbdfb87f9c3fe7b9c1fff7e091cee7bfe7047fb83dee387fe1dc1e7bf61dcf7fc7c00000000000
+% 00000000000001000000000000000000400000000000000000000000000000000000000000000002000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 000120001008000400000f000010000400380000000010e20000004900000200410000000400020000010001e402010038000000000f40024000000000
+% 02010000100808040000020000000800004000000000110200200009000002004100000004000000800900020402010040000004001300004000000000
+% 2601010010081804004002000000180000400000002011020060000900000200410000000400000180190002040201004000000c201900004000000000
+% 77e923b8f079ddc79ce7020fe713ddc4f0f7bc3fba7393c3db71b24903def3ce79741cc9e593823dde1de707a4e3cf78f7bdfcee200c47f24778000000
+% 4269227d10884844c48f820921124844904850249a47d1026920904902690a624d343e6a14d7c224a1092f8225f2512048512424200644924120000000
+% 322121c1108949445468020925124944904850248834110229206c4902290a2a4510202214440224a109280225025120485124a4200144924520000000
+% 123120e590cb4b44742c82092d124b44904c50248c1651022920684902698a3a4518323314664224b1092c82259259204c5125a4201144924d20000000
+% 7313f3b8f07befe7bee70f1fffbfefeff8e7b87fc473bb83cf3048ff83dcf3df7b881c01ee03877ede0ff7077ee7ef70e7bbfff6241eefffeff0000000
+% 00000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000400000000000000000
+% 00a00000000000000000000000000000000000002800000000000000020000000050000000000000000000000000000000000000000000000000000000
+% 00c00000000000000000000000000000000000003000000000000000070000000060000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 4800001001fc00120200010001e000000000000000e0000110000200001000000080000000000000000000000000000000000000000000000000000000
+% 40080000008000100200110020400000000000000100000100100200209000000080000000000000000000000000000000000000000000000000000000
+% 40584100008000101204310060400000000000000100000101300200619000000080000000000000000000000000000000000000000000000000000000
+% 48fce111e0f9e5d23bc439e77041c7f076c9dee07bc3bdc113bb9e0e71de7039e780000000000000000000000000000000000000000000000000000000
+% 4888811120b924922244112120404490124049f0850093e11217e2022092f87d2880000000000000000000000000000000000000000000000000000000
+% 48686111208126921a4411252041449051b14900850292011194220a209280412880000000000000000000000000000000000000000000000000000000
+% 48282111208527120a44112d20434490d1a34990c50693211096721a2092c8652c80000000000000000000000000000000000000000000000000000000
+% fcece13bf1fff7bf3fe41bffb1e3eff8f923fce07b87f9c3bb9b9e1f30ff703bf790000000000000000000000000000000000000000000000000000000
+% 00000080000000400008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 01e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 01600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 02700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 02300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 06780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ffffffffffffffffffff80
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000800000000000090000000000000400000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000002804000400008010200000000400440000004001000000000000000000000000000002000000406000100c000000
+% 001830000000000000000000000004280c000400018010240000000c0044000004c001000000000000000000000000000002000000406000100c000000
+% 0008100000000000000003f8e7fbce28eee7e5ef3dde9e2ed9e79efee3c5fcf3ceee79000000000000000000000000000002000000406000100c000000
+% 078f1ef1db500000000002482824284825f18a10a48893484934e145f449250a485f22000000000000000000000000000002000000406000100c000000
+% 058993436e60000000000248a8242648a5018a10a4889146491461450449250a465022000000000000000000000000000002000000406000100c000000
+% 03899343ce30000000000249ac262249a5908b18a48891424934f1459649258a425922000000000000000000000000000002000000406000100c000000
+% 078912430c100000000007fdf773ce9df6e6f1cf7eddde8e79e79ee6e3d3fef7ee6e74000000000000000000000000000002000000406000100c000000
+% 078f1ec1c4500000000000000000008000001000000000800104000000100000000004000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000104000000000000000000000000000000000000000000000002000000406000100c000000
+% 000000000000000000000000000000000000000000000000038e000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000406000100c000000
+% 00000000000000000000070700000000000000000040041000008008000000000000000010400000002000000000001c0882002000406000100c000000
+% 00000000000000000000030c0000000400000000004004100000004000001001000200001000000082200000000000200882000000406000100c000000
+% 00000000000000000000038c0000010c0000000000400410000000c000083003000600001000100186200000000000200882000000446000100c000000
+% 00000000000000000000029473def38e783bf79cf3c1c79ef7649ce9e79c3bc39dff0e3cf04f39dfc73ce0f7bcf3bc7bc89ed927974e79cf700c000000
+% 0000000000000000000002d414090a04847cc4c4944044d34fb4844a149014213e620225104923e88225f09a429fd02428a3482492486c50f80c000000
+% 000000000000000000000264540909848440c454944144514810944a148c142120620a2510491a088225008a428c102428a336249a466550900c000000
+% 000000000000000000000264d6098884c46444f4964344514c98b44b1484162132221a2590490b288225909a629e502628b334249c426f58d80c000000
+% 00000000000000000000070ffb9cf386783b77bffbc3e79ee701fe7defdc1bc19dbb1f7ef0ffb9dcc37ee0f73cf3b873ddde247fde4e7bee700c000000
+% 0000000000000000000000000000000000000400000000000000000000000000000000000000000000000080008000000002000001406000100c000000
+% 0000000000000000000000000000000000000400000000000000000000000000000000000000000000000080008000000003ffffffffffffffffffff80
+% 0000000000000000000000000000000000000e000000000000000000000000000000000000000000000001c001c000000003ffffffffffffffffffff80
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000400000024000000000000000001fd0000000000000000000002000000000001000000000041000008000f000008000000000
+% 00000000000000000000004000000200000000000008002012500000000000000000000020000000000010400000004400000480010001040000000000
+% 00000000000000000000004000000200000000000018006002100100000000002000000022000000000010c0000000c400000c800100130c0000000000
+% 0000000000000000000003ce3ce79e4f2e1e783cf3dddff0021e739c1fc73fde707b8f07273c1dfbce3cf0ef079e70e793cb8ef383d7bb8e8fe7000000
+% 00000000000000000000045f27f4a249242148410a4be6200212fa3e124141214080890124423e62622510508852f84492490497c1122104892f800000
+% 0000000000000000000004502304a249342148410a4a0620021281a01245412130828905234220622a25105088528044924d0494011219048928000000
+% 0000000000000000000006592794b249383148618a4b22200212c8b2124d613110c6890d216232227a2590588c52c844924e049641120904892c800000
+% 0000000000000000000003ce3cefdeffbc1efc38f7eddbb2073f739c3fefbb9e7077df8ff73c1dbbdf7ef06f07bf706fffef07fb83bf3987dff7000000
+% 00000000000000000000000020000000020000000000000000000000000000000000000000000002000000000000000000008000000000000000000000
+% 00000000000000000000000020000000600000000000000000000000000000000000000000000002000000000000000000180000000000000000000000
+% 000000000000000000000000700000003800000000000000000000000000000000000000000000070000000000000000000e0000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000002000000000000010000100000020000104000000000040000000000100000000200000000000000000008002200000000000
+% 00000000000000000000022000000000000010000100000220000900000000000040000000004000000001000000040000040000040002200000000000
+% 0000000000000000000006200000000001001000010000062000190000000000804080000000c0000000030000104c00000c00000c0002200000000000
+% 00000000000000000000073cee83bdc1b3b8f073cf073cf73cef1de47970f3c1f679ce7b671ee13d93cf3ba3cf384e783b6ef3f8ee8f722e8000000000
+% 000000000000000000000225f68093e0927d10125101250a25f4092449210a41124d1f892f924124d43009242920448409250a48249012268000000000
+% 0000000000000000000002250202920091c110525105250a2504092449a10a40d244d08928124124443029242918448429250a48a49052220000000000
+% 0000000000000000000002259306932090e590d2590d258a2594092449c18a40524459c92c92412466386926290844c469258a49a498d2230000000000
+% 00000000000000000000037ee107f9c0f3b8f0ffef0ffef37eee0ffefde0f7e1de79ce79e73f63fe03ce7df3dfb846787de6f7fdf7ceff710000000000
+% 00000000000000000000000000000000000000000000000000000000001000000000000800000000000000000000200000000000000000000000000000
+% 0000000000000000000000000a0000000000000000000000000000000300000000000008000000000000000000000000000000000000000a0000000000
+% 0000000000000000000000000c00000000000000000000000000000001c000000000001c000000000000000000000000000000000000000c0000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 000000000000000000000000022000000041000008008000000000000000000000000400801e0000000000020000000040038011200020002000000000
+% 00000000000000000000000002200004004100000004000000000000000000000010440000200020000000060000000000040001040000002000000000
+% 0000000000000000000001000220000c00410000000c000080000000000000010030c400002001600080200700000000000400010c0002002200000000
+% 00000000000000000000039e72207b6e1c79ef7649ce9e79c1ef0e7bde7ba7f383b8e79cbc7a7bf0d9dc200102ee3cef4f0f73d12ee82707273c000000
+% 000000000000000000000213fa208524044d34fb4844a149021402812149a492009044be90222220493e2009025f25f450041411246824012442000000
+% 000000000000000000000191822e8524144514810944a148c2140a8121488491829044a0902221a048e0200f8350250450045411242023052342000000
+% 000000000000000000000093ca20c524344514c98b44b14843141ac13148c490869044b2902220a048722010839925945804d6112430210d2162000000
+% 00000000000000000000039e777079e63e79ee701fe7defdc1ee1f739efc4ffb87d86fddf87773b079dc2431c3ce7eeeee0efbbbf610770ff73c000000
+% 00000000000000000000001000000000000000000000000000000000000000000000000000000000000040000020000000000000000000000000000000
+% 0000000000000000000000100000000000000000000000000000000000028000000000000000000000000000060000000000000000a000000000000000
+% 0000000000000000000000380000000000000000000000000000000000030000000000000000000000000000038000000000000000c000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000081002070000007780000244000c71e7c7e1f800008081e7c7ce0e000208040000000001000800009000000000000000
+% 0000000000000000000000000000100208000000880000020400048924a211180000810124a22618000200040000000009000800009000000000000000
+% 0000000000000000000000000000100208000200880001020400048a186212080000820218622718000200040000000019000800009004000000000000
+% 0000000000000000000003def648f39e1ef7876dfebf7382451c04ca1853e20071e787ca1852652806cbc8f783deff71fd3a0f39e7938e000000000000
+% 0000000000000000000002690b4917e2090a0424888cfa02463e047a18523200112884621853c5a802424904842144fa091a09092897c8000000000000
+% 00000000000000000000022909091422090a0324888c81824720040a184a120051288422184a04c801b249048421448209080929289406000000000000
+% 00000000000000000000026989899672098a01248884c88245320411248a1300d12c8221248a04c801a24984863144cb090c09692c9642000000000000
+% 0000000000000000000003dcf01cf39e1cf7073dddf77387efdc1e21e787e1f0fbf783c9e7878e1ec127fcefc39eee71cf841ffff7bb8e000000000000
+% 00000000000000000000020000000000000000000000000000000000000400000000000000040000400000000000000000000000000000000000000000
+% 00000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000280000000000000000000000
+% 00000000000000000000070000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000001c088000200000001000800000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000020088000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000020088000000000000000880000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000007bc89ed927970f3bd1e79c0000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000002428a148249209fd1218900000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000002428a136249a08c112188c0000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000002628b134249c09e5131c840000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000073ddde247fde0f3bb9e79d0000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000003008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000001c1c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000
+% 0000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000
+%%EndImage
+%%EndPreview
+save
+countdictstack
+mark
+newpath
+/showpage {} def
+%%EndProlog
+%%Page 1 1
+[ /.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 /.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 /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] /isolatin1encoding exch def
+/c { matrix currentmatrix currentpoint translate
+ 3 1 roll scale newpath 0 0 1 0 360 arc setmatrix } bind def
+/F0
+ /Times-Roman findfont
+ dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding isolatin1encoding def
+ currentdict end
+definefont pop
+/f0 { /F0 findfont exch scalefont setfont } bind def
+/F1
+ /Times-Bold findfont
+ dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding isolatin1encoding def
+ currentdict end
+definefont pop
+/f1 { /F1 findfont exch scalefont setfont } bind def
+/F2
+ /Times-Italic findfont
+ dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding isolatin1encoding def
+ currentdict end
+definefont pop
+/f2 { /F2 findfont exch scalefont setfont } bind def
+/F3
+ /Times-BoldItalic findfont
+ dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding isolatin1encoding def
+ currentdict end
+definefont pop
+/f3 { /F3 findfont exch scalefont setfont } bind def
+/F4
+ /Courier findfont
+ dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding isolatin1encoding def
+ currentdict end
+definefont pop
+/f4 { /F4 findfont exch scalefont setfont } bind def
+/F5
+ /Courier-Bold findfont
+ dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding isolatin1encoding def
+ currentdict end
+definefont pop
+/f5 { /F5 findfont exch scalefont setfont } bind def
+/F6
+ /Courier-Oblique findfont
+ dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding isolatin1encoding def
+ currentdict end
+definefont pop
+/f6 { /F6 findfont exch scalefont setfont } bind def
+/F7
+ /Courier-BoldOblique findfont
+ dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding isolatin1encoding def
+ currentdict end
+definefont pop
+/f7 { /F7 findfont exch scalefont setfont } bind def
+/rhc {
+ {
+ currentfile read {
+ dup 97 ge
+ { 87 sub true exit }
+ { dup 48 ge { 48 sub true exit } { pop } ifelse }
+ ifelse
+ } {
+ false
+ exit
+ } ifelse
+ } loop
+} bind def
+
+/cvgray { % xtra_char npix cvgray - (string npix long)
+ dup string
+ 0
+ {
+ rhc { cvr 4.784 mul } { exit } ifelse
+ rhc { cvr 9.392 mul } { exit } ifelse
+ rhc { cvr 1.824 mul } { exit } ifelse
+ add add cvi 3 copy put pop
+ 1 add
+ dup 3 index ge { exit } if
+ } loop
+ pop
+ 3 -1 roll 0 ne { rhc { pop } if } if
+ exch pop
+} bind def
+
+/smartimage12rgb { % w h b [matrix] smartimage12rgb -
+ /colorimage where {
+ pop
+ { currentfile rowdata readhexstring pop }
+ false 3
+ colorimage
+ } {
+ exch pop 8 exch
+ 3 index 12 mul 8 mod 0 ne { 1 } { 0 } ifelse
+ 4 index
+ 6 2 roll
+ { 2 copy cvgray }
+ image
+ pop pop
+ } ifelse
+} def
+/cshow { dup stringwidth pop 2 div neg 0 rmoveto show } bind def
+/rshow { dup stringwidth pop neg 0 rmoveto show } bind def
+/pagelevel save def
+54 0 translate
+newpath 0 72 moveto 481 0 rlineto 0 689 rlineto -481 0 rlineto closepath clip newpath
+0 754.5 moveto
+481 0 rlineto 0 -3.5 rlineto -481 0 rlineto closepath fill
+gsave
+/rowdata 68 string def
+30.1 718.2 translate
+31.5 21 scale
+45 30 4 [45 0 0 -30 0 30]
+ smartimage12rgb
+00000a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a000000a00a00a00a00a00a00a00a00a00affffff00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a
+00a00a00a00a00a00a00a00a00affffff00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+ffffff00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a000000a00a00a00a00a00a00a00a00a00a00a00a00a00affffff00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a
+00a00affffff00a00a00a00a00a00a00affffff00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00affffff00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a00a00a00a00a00afff00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a000000a00a00a00a00a00a00a00a00a00a00a00afff00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a000000a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a0000
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a
+00a00a00affffff00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a00a00a00affffff00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a000000a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a00a
+00a00a00a00a00a00a00a00a00a000000a00a00a00a00a00a00a00a00ac30c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c3000a00a00a00a00a00a00a
+00a00a000000a00a00ac30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c3000a00a00a0000c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c300000c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c30c30c300000c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c300
+000c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c300000c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c300000c30c30c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30c30
+c30c30c30c30c300000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000
+grestore
+61.6 728.7 moveto
+12 f1
+( ) show
+346.1 718.1 moveto
+12 f0
+( ) show
+gsave
+/rowdata 68 string def
+414.2 718.2 translate
+31.5 21 scale
+45 30 4 [45 0 0 -30 0 30]
+ smartimage12rgb
+000d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d000000d00
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0fc0fc0fc0fc0fc0
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00
+d00d00000d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00
+fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00000d00d00d00d00d00
+d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0fc0fc0fc0fc0
+fc0fc0fc0fc0fc0fc0fc0fc0fc0d00000000000d00d00d00d00d00d00d00d00d000000d00d00d00
+d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0000000000000
+000000000000d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00
+d00d00fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0000000000000000000000000fc0fc0d00d00d00d00
+d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0000
+fc0fc0fc0000000000000000000000000000fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d00
+d000000d00d00d00d00d00d00d00d00d00d00d00d00fc0000000000000fc0fc0000000000000000
+000000000fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00
+d00d00d00d00d00d00fc0000000000000000fc0000000000000000000000000fc0fc0fc0fc0fc0
+fc0fc0d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00fc0
+fc0fc0fc0000000000000000000000000000000000fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00
+d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0000000000000
+000000000000000000fc0fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d000000
+d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0fc0000000000000000000000000000fc0
+fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00
+d00d00d00d00fc0fc0fc0fc0fc0fc0fc0000fc0000000000000fc0fc0fc0fc0fc0fc0fc0fc0fc0
+d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0
+fc0fc0fc0fc0fc0000fc0000000fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00
+d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0fc0fc0fc0fc0fc0
+000000fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d00d000000d00d00
+d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0fc0fc0fc0fc0fc0000fc0fc0fc0fc0fc0fc0
+fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00
+d00d00d00d00fc0fc0fc0fc0fc0fc0fc0fc0000fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00
+d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0
+fc0fc0fc0fc0000000fc0fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d00d00
+d00d000000d00d00d00d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0fc0fc0000000fc0
+fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00fc0fc0fc0fc0000fc0fc0fc0fc0fc0fc0fc0fc0fc0fc0
+d00d00d00d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00fc0000fc0fc0fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00000
+d00fc0fc0fc0fc0fc0fc0fc0d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d000
+000d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d000000d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00d00
+d00d00d00d00d000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000
+grestore
+445.7 728.7 moveto
+12 f1
+( ) show
+0 692.3 moveto
+481 0 rlineto 0 -3.5 rlineto -481 0 rlineto closepath fill
+0 661.4 moveto
+12 f0
+(This list is regularly updated. The link on the directory hierarchy \(which is the relative location of) show
+0 648.1 moveto
+12 f0
+(the package on any CTAN archive/mirror\) takes you to the CTAN mirror at ) show
+366.9 648.1 moveto
+12 f0
+(Walnut Creek) show
+433.9 648.1 moveto
+12 f0
+(. The link) show
+0 634.8 moveto
+12 f0
+(on the flag \(or the country code for browsers without images\) takes you to the corresponding) show
+0 621.5 moveto
+12 f0
+(CTAN backbone. The link on the name of the package itself will load the packages actual) show
+0 608.2 moveto
+12 f0
+(documentation as a gziped postscript file \(only for local users for now - although this will be fixed) show
+0 594.9 moveto
+12 f0
+(soon\). Refer to my ) show
+92.9 594.9 moveto
+12 f0
+(TeX Resources) show
+166.5 594.9 moveto
+12 f0
+( home page for other archives and information. Comments,) show
+0 581.6 moveto
+12 f0
+(corrections, enhancements, and additions are more than welcome \(the HTML is built from a) show
+0 568.3 moveto
+12 f0
+(stylised database I maintain for myself but will probably evolve into the filehdr format\). Similar) show
+0 555 moveto
+12 f0
+(lists \(in English\) that I am aware of are listed at the end. ) show
+0 532.7 moveto
+481 0 rlineto 0 -3.5 rlineto -481 0 rlineto closepath fill
+4.9 507.9 moveto
+14 f1
+(A) show
+4.9 473.4 moveto
+12 f1
+(abbrevs) show
+45.5 473.4 moveto
+12 f1
+( ) show
+85.3 473.9 moveto
+12 f0
+(macros/latex/contrib/supported/monster/) show
+85.3 451 moveto
+(Macros to expand abbreviations to text and insert the proper following space) show
+85.3 437.7 moveto
+12 f0
+(depending on context. These macros can also expand to one thing the first time) show
+85.3 424.4 moveto
+12 f0
+(they are used and another thing on subsequent invocations \(to automatically) show
+85.3 411.1 moveto
+12 f0
+(spell-out abbreviations or acronyms at their first use\). A generic facility is also) show
+85.3 397.8 moveto
+12 f0
+(provided for suffixes like 1900\\BC and 6:00\\PM, which correctly handles) show
+85.3 384.5 moveto
+12 f0
+(following periods. ) show
+85.3 375.4 moveto
+390.8 0 rlineto 0 -1.4 rlineto -390.8 0 rlineto closepath fill
+pagelevel restore
+showpage
+%%Trailer
+cleartomark
+countdictstack exch sub { end } repeat
+restore
+%%EOF
diff --git a/usergrps/uktug/baskervi/6_2/top.tex b/usergrps/uktug/baskervi/6_2/top.tex
new file mode 100644
index 0000000000..a48505ceff
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/top.tex
@@ -0,0 +1,13 @@
+%\usepackage[T1]{fontenc}
+%\usepackage{spqr}
+%\input{spqr2.sty}
+%\begin{document}
+\catcode`\_=8 \catcode`\<=13
+\def\CurrentPackages{spqr,pstcol}
+\newcounter{myN}
+\setlongtables
+\author[Sebastian Rahtz]{Sebastian Rahtz\\Elsevier Science Ltd\\
+Email: \texttt{s.rahtz@elsevier.co.uk}}
+\title{An introduction to PSTricks, part 2}
+\begin{Article}
+\section{Introduction}
diff --git a/usergrps/uktug/baskervi/6_2/tourwrap.tex b/usergrps/uktug/baskervi/6_2/tourwrap.tex
new file mode 100644
index 0000000000..60ced5eef4
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/tourwrap.tex
@@ -0,0 +1,106 @@
+\documentclass{article}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% markup commands for this article
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newenvironment{filedesc}{%
+ \description
+ \renewcommand\makelabel[1]{\hspace\labelsep
+ \normalfont\ttfamily ##1}}
+ {\enddescription}
+
+\let\package\textsf % as in \package{longtable} package
+\let\class\textsf
+\def\env#1{\envx#1*\relax}
+\def\envx#1*#2{%
+ \textsf{#1\ifx#2*\raise-.6ex\hbox{*}\fi}}
+
+\RequirePackage{delarray,hhline}
+\makeatletter
+\def\smallv{\def\verbatim@font{\normalfont\ttfamily\small}}
+\makeatother
+
+\def\PS{\textsc{PostScript}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% these may have better definitions in BV or TUB class files.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\BV{\emph{Baskerville}}
+\def\TUB{\textsl{TUGboat}}
+
+\def\tubissue#1#2{\TUB~#1, no.~#2}
+
+
+\def\SLiTeX{%
+ S\kern-.065em L\kern-.18em\raise.32ex\hbox{\textsc{i}}%
+ \kern-.03em\TeX}
+\let\SliTeX\SLiTeX
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% some random two column page settings based
+% on article class letterpaper settings.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\addtolength\textwidth{1.6in}
+\addtolength\oddsidemargin{-.8in}
+\setlength\emergencystretch{1in}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% fake \acro command from TUG to keep BB happy
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatletter
+\DeclareRobustCommand\acro[1]{{%
+ \ifx\@currsize\normalsize\small\else
+ \ifx\@currsize\footnotesize\tiny\else
+ \ifx\@currsize\large\normalsize\else
+ \show\@currsize
+ \fi\fi\fi
+ \MakeUppercase{#1}}}
+\makeatother
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% fake title and author commands with optional arguments
+% and Article environment from baskerville
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand\title[2][]{\def\xtitle{#2}}
+\renewcommand\author[2][]{\def\xauthor{#2}}
+\def\Article{%
+ \twocolumn[\bfseries\Large\raggedright\xtitle\par\bigskip
+ \large\xauthor\par\vspace{2\baselineskip}]}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% FAQverb stuff from baskerville class
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatletter
+\DeclareRobustCommand{\FAQverb}[2]{{%
+ \ifvmode\leavevmode\fi
+ \lefthyphenmin=256\setlanguage\language
+ \FAQverbFamily\hyphenchar\the\font`#1\relax
+ \def\@tempa{#2}%
+ \expandafter\@faq@strip\meaning\@tempa\@faq@strip
+ \hyphenchar\the\font\m@ne
+}\setlanguage\language}
+\def\@faq@strip#1->#2\@faq@strip{#2}
+%
+% Document markup:
+%
+\makeatother % because @ is a delimiter here, it had better have the
+ % same catcode as it will when the macro's invoked
+\def\Email|#1@#2|{\FAQverb\-{#1@}\penalty10\FAQverb\.{#2}} % email
+\makeatletter
+\def\FTP|#1|{\FAQverb\.{#1}} % FTP site
+\def\File|#1|{\FAQverb\/{#1}} % file name
+\def\CTAN{\FAQverb\/} % CTAN path
+\def\Newsgroup|#1|{\FAQverb\.{#1}} % newsgroup
+\def\URL|#1://#2/#3|{\FAQverb\.{#1://#2/}\penalty10\FAQverb\/{#3}}
+\def\path|#1|{\FAQverb\/{#1}} % generic path
+
+\let\FAQverbFamily\ttfamily
+
+\makeatother
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{document}
+\input{ltour2}
+\end{document}
diff --git a/usergrps/uktug/baskervi/6_2/truth.tex b/usergrps/uktug/baskervi/6_2/truth.tex
new file mode 100644
index 0000000000..cad2884a85
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/truth.tex
@@ -0,0 +1,35 @@
+\title{Urgent Newsflash: Origins of \LaTeX}
+\author{anonymous}
+\begin{Article}
+\frenchspacing
+U.S. Government Department of Defense papers released yesterday reveal
+the true source of the \LaTeX\ document preparation tool. Under the
+twenty-five year rule, hitherto secret Military Intelligence papers have
+been released into the public domain, detailing the Government
+involvement in the development of a prototype software tool.
+
+Major General Charles Schultz publicly apologised at a press meeting
+held to diffuse what was described as a `tense situation' as the
+unsavoury origins of the `alleged software' were finally unearthed.
+Developed at the height of the Cold War, the prototype system was aimed
+at crippling the so-called `information net' within the Soviet high
+command. Maj. Gen. Schultz said, `We realised what would happen if an
+enemy organisation actually tried to create documents with this thing.
+Of course, it seems cold-blooded now, but you have to remember that this
+was at a time of war.' He added, `We never expected it to get out into
+general circulation'.
+
+Apparently, the software was released into a controlled environment
+under the cover of a beta-test at several academic sites in Europe and
+America. `We put in place all safety measures. However, we didn't fully
+appreciate the tenacity of academic staff in using and then illegally
+copying it into the wider environment. With hindsight, we should have
+taken a warning from the fact that they still thought Fortran was a good
+idea.'
+
+DoD boffins are rumoured to have panicked and released a beta-version of
+Emacs, the strangely popular editor-cum-operating-system in order to
+stem the spread of \LaTeX. However, Maj. Gen. Schultz declined to
+comment.
+
+\end{Article}
diff --git a/usergrps/uktug/baskervi/6_2/tub-bits.sty b/usergrps/uktug/baskervi/6_2/tub-bits.sty
new file mode 100644
index 0000000000..294d07bd44
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/tub-bits.sty
@@ -0,0 +1,23 @@
+% This is a package containing things that are provided by the TUGboat
+% macros; use of these things ought to make the transition to a
+% TUGboat paper easier than one might otherwise fear...
+\setcounter{errorcontextlines}{999}
+\RequirePackage{relsize}
+
+%\DeclareRobustCommand\acro[1]{\textsmaller{#1}\@}
+
+\renewcommand\CTAN{\acro{CTAN}}
+\providecommand\UKTUG{\acro{UK\,TUG}}
+
+% Ye merry dashes; the code here may look horrible, but the results
+% aren't bad...
+\def\thinskip{\hskip 0.16667em\relax}
+\def\endash{--}
+\def\emdash{\endash-}
+\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces}
+\def\dash{\d@sh\nobreak\endash}
+\def\Dash{\d@sh\nobreak\emdash}
+\def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}}
+\def\rdash{\d@sh\nobreak\endash}
+\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}}
+\def\Rdash{\d@sh\nobreak\emdash}
diff --git a/usergrps/uktug/baskervi/6_2/tugboat.def b/usergrps/uktug/baskervi/6_2/tugboat.def
new file mode 100644
index 0000000000..d634e89e0f
--- /dev/null
+++ b/usergrps/uktug/baskervi/6_2/tugboat.def
@@ -0,0 +1,4 @@
+% rubbish
+% null
+\relax
+% and go back to sleep again