summaryrefslogtreecommitdiff
path: root/macros/latex209/contrib/misc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex209/contrib/misc
Initial commit
Diffstat (limited to 'macros/latex209/contrib/misc')
l---------macros/latex209/contrib/misc/QED.sty1
-rw-r--r--macros/latex209/contrib/misc/STYLE_descriptions287
-rw-r--r--macros/latex209/contrib/misc/a4letter.sty457
-rw-r--r--macros/latex209/contrib/misc/accarticle.sty184
-rw-r--r--macros/latex209/contrib/misc/acmproc.sty186
-rw-r--r--macros/latex209/contrib/misc/acronym.sty105
-rw-r--r--macros/latex209/contrib/misc/add-wes.sty802
-rw-r--r--macros/latex209/contrib/misc/ailetter.tex43
-rw-r--r--macros/latex209/contrib/misc/aimemo.sty71
-rw-r--r--macros/latex209/contrib/misc/alleqno.sty49
-rw-r--r--macros/latex209/contrib/misc/alltt2.sty47
-rw-r--r--macros/latex209/contrib/misc/altnline.sty189
-rw-r--r--macros/latex209/contrib/misc/annotation.sty62
-rw-r--r--macros/latex209/contrib/misc/answers.sty155
-rw-r--r--macros/latex209/contrib/misc/apalike-plus.readme18
-rw-r--r--macros/latex209/contrib/misc/apalike-plus.sty68
-rw-r--r--macros/latex209/contrib/misc/apeqnum.sty21
-rw-r--r--macros/latex209/contrib/misc/apguide.tex1484
-rw-r--r--macros/latex209/contrib/misc/aps.sty138
-rw-r--r--macros/latex209/contrib/misc/aps10.sty145
-rw-r--r--macros/latex209/contrib/misc/apsabstract.sty428
-rw-r--r--macros/latex209/contrib/misc/astyped.sty23
-rw-r--r--macros/latex209/contrib/misc/at.sty52
-rw-r--r--macros/latex209/contrib/misc/balanced.sty61
-rw-r--r--macros/latex209/contrib/misc/bar.sty548
-rw-r--r--macros/latex209/contrib/misc/bibmods.sty65
-rw-r--r--macros/latex209/contrib/misc/bigtabular.sty99
-rw-r--r--macros/latex209/contrib/misc/biihead.sty21
-rw-r--r--macros/latex209/contrib/misc/boxit.sty91
-rw-r--r--macros/latex209/contrib/misc/breakcites.sty10
-rw-r--r--macros/latex209/contrib/misc/bsf.sty97
-rw-r--r--macros/latex209/contrib/misc/bsl.sty97
-rw-r--r--macros/latex209/contrib/misc/buscard.sty226
-rw-r--r--macros/latex209/contrib/misc/calendar.sty549
-rw-r--r--macros/latex209/contrib/misc/calorie.sty989
-rw-r--r--macros/latex209/contrib/misc/calprog.sty102
-rw-r--r--macros/latex209/contrib/misc/card-set.sty288
-rw-r--r--macros/latex209/contrib/misc/card.sty96
-rw-r--r--macros/latex209/contrib/misc/catmac-doc.tex536
-rw-r--r--macros/latex209/contrib/misc/catmac.sty1013
-rw-r--r--macros/latex209/contrib/misc/chapref.sty108
-rw-r--r--macros/latex209/contrib/misc/chessboard.tex162
-rw-r--r--macros/latex209/contrib/misc/chgbar.sty157
-rw-r--r--macros/latex209/contrib/misc/chomsky.sty158
-rw-r--r--macros/latex209/contrib/misc/cites.sty137
-rw-r--r--macros/latex209/contrib/misc/colors.sty89
-rw-r--r--macros/latex209/contrib/misc/commtest.tex56
-rw-r--r--macros/latex209/contrib/misc/cprog.sty230
-rw-r--r--macros/latex209/contrib/misc/cup.sty1053
-rw-r--r--macros/latex209/contrib/misc/currency.sty17
-rw-r--r--macros/latex209/contrib/misc/custombib.sty39
-rw-r--r--macros/latex209/contrib/misc/cyrillic.sty26
-rw-r--r--macros/latex209/contrib/misc/dates.sty288
l---------macros/latex209/contrib/misc/dayofweek.sty1
-rw-r--r--macros/latex209/contrib/misc/db.sty236
-rw-r--r--macros/latex209/contrib/misc/dblitem.sty45
-rw-r--r--macros/latex209/contrib/misc/dectab.sty49
-rw-r--r--macros/latex209/contrib/misc/deflist.sty16
-rw-r--r--macros/latex209/contrib/misc/deleq.sty359
l---------macros/latex209/contrib/misc/diagmac.sty1
-rw-r--r--macros/latex209/contrib/misc/diagramdoc.tex968
-rw-r--r--macros/latex209/contrib/misc/diagtest.tex403
-rw-r--r--macros/latex209/contrib/misc/dina4.sty4
-rw-r--r--macros/latex209/contrib/misc/disstyle.sty42
-rw-r--r--macros/latex209/contrib/misc/dpccyr.sty262
-rw-r--r--macros/latex209/contrib/misc/draft.sty253
-rw-r--r--macros/latex209/contrib/misc/draftcopy.sty8
-rw-r--r--macros/latex209/contrib/misc/drafthead.sty40
-rw-r--r--macros/latex209/contrib/misc/drafts.sty154
-rw-r--r--macros/latex209/contrib/misc/draftstamp.sty127
-rw-r--r--macros/latex209/contrib/misc/drop.sty67
-rw-r--r--macros/latex209/contrib/misc/ebnf.sty72
-rw-r--r--macros/latex209/contrib/misc/editbar.sty615
-rw-r--r--macros/latex209/contrib/misc/enumspec.sty56
-rw-r--r--macros/latex209/contrib/misc/env.sty126
-rw-r--r--macros/latex209/contrib/misc/epac.sty234
l---------macros/latex209/contrib/misc/epigram.sty1
-rw-r--r--macros/latex209/contrib/misc/eqnarray.sty99
-rw-r--r--macros/latex209/contrib/misc/eqsecnum.sty26
-rw-r--r--macros/latex209/contrib/misc/equation.sty272
-rw-r--r--macros/latex209/contrib/misc/equationarray.sty88
-rw-r--r--macros/latex209/contrib/misc/equations.sty217
-rw-r--r--macros/latex209/contrib/misc/esperant.sty342
-rw-r--r--macros/latex209/contrib/misc/espo.sty52
-rw-r--r--macros/latex209/contrib/misc/etcetera.tex45
-rw-r--r--macros/latex209/contrib/misc/euler.sty146
-rw-r--r--macros/latex209/contrib/misc/exam.sty394
-rw-r--r--macros/latex209/contrib/misc/example.sty412
-rw-r--r--macros/latex209/contrib/misc/exercise.mac57
-rw-r--r--macros/latex209/contrib/misc/exercise.sty56
-rw-r--r--macros/latex209/contrib/misc/exercise.tex54
-rw-r--r--macros/latex209/contrib/misc/extradefs.tex58
-rw-r--r--macros/latex209/contrib/misc/fancychapters.sty107
-rw-r--r--macros/latex209/contrib/misc/farticle.sty244
-rw-r--r--macros/latex209/contrib/misc/fixup.sty169
-rw-r--r--macros/latex209/contrib/misc/fllater.sty55
-rw-r--r--macros/latex209/contrib/misc/floatnohead.sty13
-rw-r--r--macros/latex209/contrib/misc/flowchart.sty185
-rw-r--r--macros/latex209/contrib/misc/font-nostalgia.sty51
-rw-r--r--macros/latex209/contrib/misc/fontstyl.txt27
-rw-r--r--macros/latex209/contrib/misc/format.sty28
-rw-r--r--macros/latex209/contrib/misc/frenchponct.sty23
-rw-r--r--macros/latex209/contrib/misc/frenchquote.sty5
-rw-r--r--macros/latex209/contrib/misc/frontiers.sty203
-rw-r--r--macros/latex209/contrib/misc/ftn.sty46
-rw-r--r--macros/latex209/contrib/misc/fullpage.sty29
-rw-r--r--macros/latex209/contrib/misc/gart11.sty109
-rw-r--r--macros/latex209/contrib/misc/garticle.sty233
-rw-r--r--macros/latex209/contrib/misc/geophysics.sty105
-rw-r--r--macros/latex209/contrib/misc/hackalloc.sty17
-rw-r--r--macros/latex209/contrib/misc/hackarray.sty64
-rw-r--r--macros/latex209/contrib/misc/hangcaption.sty113
-rw-r--r--macros/latex209/contrib/misc/headerfooter.sty75
-rw-r--r--macros/latex209/contrib/misc/hex.sty31
-rw-r--r--macros/latex209/contrib/misc/hndout.sty75
-rw-r--r--macros/latex209/contrib/misc/hvdashln.sty50
-rw-r--r--macros/latex209/contrib/misc/icassp.sty231
-rw-r--r--macros/latex209/contrib/misc/ieeconf.sty102
-rw-r--r--macros/latex209/contrib/misc/ieeeconf.sty56
-rw-r--r--macros/latex209/contrib/misc/ifthen-addi.sty22
-rw-r--r--macros/latex209/contrib/misc/ifthenpl.sty22
-rw-r--r--macros/latex209/contrib/misc/indent.sty120
-rw-r--r--macros/latex209/contrib/misc/inputfile.sty43
-rw-r--r--macros/latex209/contrib/misc/invertedparagraphs.tex25
-rw-r--r--macros/latex209/contrib/misc/isf.sty95
-rw-r--r--macros/latex209/contrib/misc/isolatin1.sty174
-rw-r--r--macros/latex209/contrib/misc/ist21.sty39
-rw-r--r--macros/latex209/contrib/misc/isucaption.sty39
-rw-r--r--macros/latex209/contrib/misc/ital.sty73
-rw-r--r--macros/latex209/contrib/misc/italic.sty38
-rw-r--r--macros/latex209/contrib/misc/jbs.sty200
-rw-r--r--macros/latex209/contrib/misc/jmb.sty62
-rw-r--r--macros/latex209/contrib/misc/joe.sty151
-rw-r--r--macros/latex209/contrib/misc/kalender.tex327
-rw-r--r--macros/latex209/contrib/misc/labels.sty80
-rw-r--r--macros/latex209/contrib/misc/lablst.sty55
-rw-r--r--macros/latex209/contrib/misc/laioobr.sty800
-rw-r--r--macros/latex209/contrib/misc/landscape.sty12
-rw-r--r--macros/latex209/contrib/misc/latex-go-board.tex68
-rw-r--r--macros/latex209/contrib/misc/lcaption.sty50
-rw-r--r--macros/latex209/contrib/misc/lcustom.tex429
-rw-r--r--macros/latex209/contrib/misc/listoftheorem.sty123
-rw-r--r--macros/latex209/contrib/misc/local-suppl.tex105
-rw-r--r--macros/latex209/contrib/misc/losymbol.sty65
-rw-r--r--macros/latex209/contrib/misc/lslide.sty707
-rw-r--r--macros/latex209/contrib/misc/lslide.tex412
-rw-r--r--macros/latex209/contrib/misc/ltgtsim.sty15
-rw-r--r--macros/latex209/contrib/misc/makerobust.sty112
-rw-r--r--macros/latex209/contrib/misc/marginote.sty75
-rw-r--r--macros/latex209/contrib/misc/marnote.sty61
-rw-r--r--macros/latex209/contrib/misc/mathtext.sty12
-rw-r--r--macros/latex209/contrib/misc/meparticle.sty324
-rw-r--r--macros/latex209/contrib/misc/merge.sty178
-rw-r--r--macros/latex209/contrib/misc/mf.sty37
-rw-r--r--macros/latex209/contrib/misc/misc.sty62
-rw-r--r--macros/latex209/contrib/misc/moreverb.readme7
-rw-r--r--macros/latex209/contrib/misc/multicolpar.sty69
-rw-r--r--macros/latex209/contrib/misc/multind.sty65
-rw-r--r--macros/latex209/contrib/misc/newequation.sty28
-rw-r--r--macros/latex209/contrib/misc/nextslide.sty47
-rw-r--r--macros/latex209/contrib/misc/nf.sty170
-rw-r--r--macros/latex209/contrib/misc/nl.sty113
-rw-r--r--macros/latex209/contrib/misc/nnfootnote.sty33
-rw-r--r--macros/latex209/contrib/misc/nopagenumbers.sty15
-rw-r--r--macros/latex209/contrib/misc/noprot.sty188
-rw-r--r--macros/latex209/contrib/misc/nosecnumbers.sty42
-rw-r--r--macros/latex209/contrib/misc/npsfont.sty193
-rw-r--r--macros/latex209/contrib/misc/optarg.sty42
-rw-r--r--macros/latex209/contrib/misc/ovalfbox.sty35
-rw-r--r--macros/latex209/contrib/misc/pagefoots.sty192
-rw-r--r--macros/latex209/contrib/misc/parskip.sty33
-rw-r--r--macros/latex209/contrib/misc/portland.sty124
-rw-r--r--macros/latex209/contrib/misc/psboxit.sty175
-rw-r--r--macros/latex209/contrib/misc/psfont.sty117
-rw-r--r--macros/latex209/contrib/misc/psfonts.tex146
-rw-r--r--macros/latex209/contrib/misc/psmath.sty216
-rw-r--r--macros/latex209/contrib/misc/pspic.sty209
-rw-r--r--macros/latex209/contrib/misc/pstimesm.sty80
-rw-r--r--macros/latex209/contrib/misc/qm.sty53
-rw-r--r--macros/latex209/contrib/misc/quote.sty119
-rw-r--r--macros/latex209/contrib/misc/raggedtab.sty11
-rw-r--r--macros/latex209/contrib/misc/rangecite.sty75
-rw-r--r--macros/latex209/contrib/misc/regel.stybin0 -> 8580 bytes
-rw-r--r--macros/latex209/contrib/misc/remark.sty130
-rw-r--r--macros/latex209/contrib/misc/rmthm.sty23
-rw-r--r--macros/latex209/contrib/misc/rnl-slides.sty594
-rw-r--r--macros/latex209/contrib/misc/rotate_tex.sty45
-rw-r--r--macros/latex209/contrib/misc/rs.sty994
-rw-r--r--macros/latex209/contrib/misc/rssconf.sty31
-rw-r--r--macros/latex209/contrib/misc/sc21-wg1.sty64
-rw-r--r--macros/latex209/contrib/misc/sc21.sty65
-rw-r--r--macros/latex209/contrib/misc/schedule.sty484
-rw-r--r--macros/latex209/contrib/misc/screen.sty32
-rw-r--r--macros/latex209/contrib/misc/seceqn.sty11
-rw-r--r--macros/latex209/contrib/misc/secret.sty85
-rw-r--r--macros/latex209/contrib/misc/semitic.sty113
-rw-r--r--macros/latex209/contrib/misc/sentences.tex133
-rw-r--r--macros/latex209/contrib/misc/set_sp.sty253
-rw-r--r--macros/latex209/contrib/misc/settosize.sty50
-rw-r--r--macros/latex209/contrib/misc/sfwmac.sty60
-rw-r--r--macros/latex209/contrib/misc/shsulet.sty394
-rw-r--r--macros/latex209/contrib/misc/side.sty74
-rw-r--r--macros/latex209/contrib/misc/sines.tex47
-rw-r--r--macros/latex209/contrib/misc/slem.sty14
-rw-r--r--macros/latex209/contrib/misc/smaller.sty40
-rw-r--r--macros/latex209/contrib/misc/smalltalk.sty161
-rw-r--r--macros/latex209/contrib/misc/sober.sty147
-rw-r--r--macros/latex209/contrib/misc/spacecites.sty20
-rw-r--r--macros/latex209/contrib/misc/spacing.sty51
-rw-r--r--macros/latex209/contrib/misc/sqmac.tex320
-rw-r--r--macros/latex209/contrib/misc/sqsample.tex143
-rw-r--r--macros/latex209/contrib/misc/sshdbk10.sty59
-rw-r--r--macros/latex209/contrib/misc/steveshacks.tex315
-rw-r--r--macros/latex209/contrib/misc/strukto.stybin0 -> 13211 bytes
-rw-r--r--macros/latex209/contrib/misc/subtabfg.sty72
-rw-r--r--macros/latex209/contrib/misc/suthesis.sty265
-rw-r--r--macros/latex209/contrib/misc/tabbingbox.tex79
-rw-r--r--macros/latex209/contrib/misc/tabverb.sty91
-rw-r--r--macros/latex209/contrib/misc/techreport.sty379
-rw-r--r--macros/latex209/contrib/misc/tgrind.sty167
-rw-r--r--macros/latex209/contrib/misc/thebib-plus.readme22
-rw-r--r--macros/latex209/contrib/misc/thebib-plus.sty46
-rw-r--r--macros/latex209/contrib/misc/threecolumn.sty182
-rw-r--r--macros/latex209/contrib/misc/timetab.sty93
-rw-r--r--macros/latex209/contrib/misc/topnum.sty7
-rw-r--r--macros/latex209/contrib/misc/trademarks.sty81
-rw-r--r--macros/latex209/contrib/misc/trees.sty120
-rw-r--r--macros/latex209/contrib/misc/truecols.doc398
-rw-r--r--macros/latex209/contrib/misc/uhthesis.sty391
-rw-r--r--macros/latex209/contrib/misc/ukdate.sty203
-rw-r--r--macros/latex209/contrib/misc/underlin.tex16
-rw-r--r--macros/latex209/contrib/misc/unfinished.tex44
-rw-r--r--macros/latex209/contrib/misc/unilogo.sty259
-rw-r--r--macros/latex209/contrib/misc/uscthesis.sty999
-rw-r--r--macros/latex209/contrib/misc/usenix.sty105
-rw-r--r--macros/latex209/contrib/misc/userps.sty54
-rw-r--r--macros/latex209/contrib/misc/varfbox.sty20
-rw-r--r--macros/latex209/contrib/misc/verbatimfiles.sty42
-rw-r--r--macros/latex209/contrib/misc/verbinp.sty1230
-rw-r--r--macros/latex209/contrib/misc/verbsubfile.sty129
-rw-r--r--macros/latex209/contrib/misc/vita.sty131
-rw-r--r--macros/latex209/contrib/misc/voorbeeld.sty143
-rw-r--r--macros/latex209/contrib/misc/voorbeelden.sty79
-rw-r--r--macros/latex209/contrib/misc/warn.sty18
-rw-r--r--macros/latex209/contrib/misc/wasy.sty244
-rw-r--r--macros/latex209/contrib/misc/windlet.doc184
-rw-r--r--macros/latex209/contrib/misc/xrefwarn.sty50
-rw-r--r--macros/latex209/contrib/misc/xxxcustom.tex95
-rw-r--r--macros/latex209/contrib/misc/xxxslides.sty361
-rw-r--r--macros/latex209/contrib/misc/yearcal.tex133
250 files changed, 41019 insertions, 0 deletions
diff --git a/macros/latex209/contrib/misc/QED.sty b/macros/latex209/contrib/misc/QED.sty
new file mode 120000
index 0000000000..937f00d227
--- /dev/null
+++ b/macros/latex209/contrib/misc/QED.sty
@@ -0,0 +1 @@
+../../../generic/proofs/taylor/QED.sty \ No newline at end of file
diff --git a/macros/latex209/contrib/misc/STYLE_descriptions b/macros/latex209/contrib/misc/STYLE_descriptions
new file mode 100644
index 0000000000..cba039f246
--- /dev/null
+++ b/macros/latex209/contrib/misc/STYLE_descriptions
@@ -0,0 +1,287 @@
+File Description
+
+a4.sty Set page size to A4
+
+a4wide.sty Set page size to A4 with narrow margins
+
+a5.sty sets A5 page size (use only with 10pt)
+
+a5comb.sty sets A% page style but for spirally-bound documents
+ (bigger inner margins)
+
+aaai.sty Style file for AAAI conference 1988
+aaai-doc.tex (BibTeX style in bibtex-style and bibtex-style-0.98)
+
+agugrl.sty AGU Geophysical Research Letters style
+agugrl-sample.tex
+
+agujgr.sty AGU Journal of Geophysical Research style
+agujgr-sample.tex
+
+aip.sty for American Institute of Physics journals
+
+album Style for printing cassette labels
+
+alleqno.sty makes all displayed equations numbered by default
+
+alltt.sty Like verbatim, but permits other commands inside
+
+amssymbols.sty Load AMS font
+
+apalike.sty LaTeX and BibTeX style files for a APA-like
+ style (APA = Amer. Psychological Association)
+
+apsabstract.sty for formatting abstracts for American
+ Physical Society meetings
+
+biihead.sty Underlined heading
+
+boxedminipage.sty puts a box round a minipage
+
+breakcites.sty allows citations to break across lines
+
+bsf.sty Provide access to bold san serif fonts in LaTeX
+
+captcont.sty Auxiliary file needed
+
+cd.sty Commutative diagram macros
+cd-doc.tex
+
+changebar.sty changebars for LaTeX
+
+chapterbib.sty Allow LaTeX & BibTeX to produce separate
+ bibliographies for each chapter.
+
+cite.sty Compress lists of numbers in citations to ranges, and
+ allow linebreaks with difficulty
+
+cup.sty a document style for books in the Cambridge
+ University Press, British Computer Society
+ Workshop series.
+
+cyrillic.sty Load Cyrillic font
+
+deproc.sty DECUS proceedings style and
+deproc-doc.tex documentation
+deproc.readme
+
+doublespace.sty Double spacing in text
+
+draft.sty Draft option for documents for "debugging"
+
+drafthead.sty Prints DRAFT in heading
+
+drop.sty Style for making large dropped initials for
+ starting paragraphs
+
+eepic A picture environment that used tpic specials
+
+env.sty style files to print on envelopes
+
+
+epic an extended picture environment
+
+equations.sty marcros to to aid in constructing displayed
+ equations in LaTeX
+
+espo.sty Style file for Esperanto
+
+fancyheadings.sty modify the headers and footers
+
+farticle.sty French version of article.sty
+
+figplace.tex TeX macros to handle floating insertion
+
+fixup.sty Fixup Plain's \bigl, etc. to track LaTeX size changes
+
+flowchart.sty macros to write flow charts
+
+fnpara.sty sets footnotes as parapraphs
+
+format.sty Print FP numbers in fixed format
+
+frenchponct.sty french punctuation
+
+frontiers.sty for Frontiers '88 symposium and other IEEE conferences
+
+fullpage.sty Get more out of a page
+
+geophysics.sty Geophysics journal style
+
+german.sty Style file for German
+
+hackalloc.sty make allocation local for LaTeX
+
+headerfooter.sty adds the capability of underlining the heading, ala
+ the LaTeX manual
+
+icassp.sty This is a document style option, for cammera-ready copy
+ for the ICASSP '89 conference (and other IEEE
+ conferences???), to be used with the article document
+ style and the proc document style option.
+
+ijcai89.sty Conference Style for IJCAI-89
+ijcai89.tex
+
+insertplot.sty Macros for inserting PostScript in files printed with
+insertplot.readme Arbortext's DVIPS.
+
+iso.sty for use by those writing ISO standards
+iso9.sty
+iso-doc.tex
+
+ist21.sty IST21 document style option for cover page
+
+jbs.sty for the Journal of Business Strategies
+
+jeep.sty usefull modifications of the article style
+jeep.tex
+
+layout.tex Prints nice diagram showing page parameters
+layout.readme of LaTeX
+
+lablst.sty for printing label definitions at the end of
+ the document
+
+lcustom.tex Useful macros and definitions for LaTeX
+
+lfonts_ams.tex Use AMS symbols in LaTeX
+lfonts_ams.readme
+
+local-suppl.tex Supplement to local guide that describes
+ lcustom.tex sfwmac.sty tgrind.sty trademarks.sty
+ xxxcustom.tex xxxslides.sty
+
+ltugbot.sty for articles to tugboat
+
+manual Like ``book'' but for manuals
+ Need to look at ``book'' for documentation
+
+memo.sty Memo and memo for the record style option
+mfr.sty
+
+merge.sty Form letter option to LaTeX letter style
+
+mf.sty make Metafont logo's at all sizes
+
+mitpress.sty a simple MIT Press format
+
+mitthesis.sty Massachusetts Institute of Technology thesis format
+mitthesis-sample.tex
+
+multibox.sty provides multiple boxes in pictures
+
+named.sty for use with named.bst
+
+natsci.sty natural sciences stle style
+ (BibTeX file in bibtex-style-0.98)
+
+nl.sty style file customized for Dutch
+
+nofm.sty for "n of M" style pagination
+
+nopagenumbers.sty remove page numbers
+
+overcite.sty Give superscript numbers for citations, compressing
+ lists to ranges, and move past punctuation
+
+pagefoots.sty puts footnotes at the bottom of each page
+
+parskip.sty sets parindent to 0 and puts some glue into
+ parskip to aid page breaks
+
+portland.sty environments to switch between portrait mode
+ and landscape mode
+
+pslatex Macros to build pslatex, a LaTeX that uses printer
+ resident PostScript fonts. Requires dvi2ps that
+ understands PostScript fonts.
+
+refman.sty document style for reference manuals similar to
+ the PostScript manual
+
+remark.sty Like newtheorem but no \it
+
+res.sty a format for doing resumes by Michael DeCorte
+res-sample.tex
+
+resume.sty a format for doing resumes by Stephen Gildea
+resume-sample.tex
+
+romanneg.sty roman-numbered pages get negative page numbers (useful
+ when selecting only part of a document to be printed)
+
+rotate.sty Rotation of TeX output with TeXtures
+ (and maybe? other PostScript drivers)
+
+sc21.sty ISO/TC97/SC21 document style option for cover page
+sc21-wg1.sty
+
+schedule.sty Style for generating schedule sheets
+
+screen.sty helps create a document suitable for screen previewing
+
+semitic.sty used to set Semitic languages
+
+sfwmac.sty Useful macros for Unix documentation
+
+showlabels.sty Shows labels and references to them
+
+siam SIAM LaTeX style
+ (BibTeX style in bibtex-style)
+
+slem.sty Change \sl to \em
+
+spacecites.sty Modified to give spacing between citations
+
+subeqn.sty allows related equations to be numbered with the same
+ number but is further qualified by a,b,c etc.
+
+subeqnarray.sty allows related eqnarrays to be numbered with the same
+ number but is further qualified by a,b,c etc.
+
+subfigure.sty allows related figures to be numbered with the same
+ number but is further qualified by a,b,c etc.
+
+supertab.sty allows multipage tabulars
+
+suthesis.sty Stanford U thesis style
+
+svma.sty Style for Springer-Verlag reports, multi-author
+svsa.sty ditto for single author
+svma-doc.tex
+
+tables.sty Ruled and unruled tables made easy
+tables-doc.tex
+
+tabls.sty Simulate minimum-lineskip glue in tablar environments
+
+tape files to setup tape libraries
+
+texnames.sty Define a couple more TeX names
+
+tgrind.sty Tgrind macros for LaTeX instead of TeX
+
+threepart.sty Three part page headers
+
+trademarks.sty Definitions of common trademarks
+
+twoup.sty change the page sizes so that 2 pages can fit
+ onto one with the help of dvidvi
+
+ucthesis U of California thesis style
+
+ukdate.sty changes the \today command to UK style
+
+ulem.sty Use underlining for \em-phasis
+
+usenix.sty For Usenix conference proceedings
+
+vdm.sty Vienna Development Method LaTeX style
+vdm-doc.tex Documentation on above
+
+verbatimfiles.sty include a file in a verbatim mode
+
+xxxcustom.tex Supplementary macros for xxx-tex, for some xxx
+
+xxxslides.sty Supplementary macros for SliTeX, includes slides.sty
diff --git a/macros/latex209/contrib/misc/a4letter.sty b/macros/latex209/contrib/misc/a4letter.sty
new file mode 100644
index 0000000000..eb0d4f720a
--- /dev/null
+++ b/macros/latex209/contrib/misc/a4letter.sty
@@ -0,0 +1,457 @@
+% This is LETTER.STY in text format, as of April, 14, 1988,
+% by D. Heinrich (TH Karlsruhe).
+%
+% Last modified May, 04, 1988.
+%
+% According to the german DIN.
+% It gives the possibility to add a backaddress to the information
+% given in the window and to include a huge address (sender).
+% \windowrules and \nowindowrules are possible.
+% It's also possible to adapt captions to other languages.
+%
+% It is based on A4LETTER.STY in text format, as of June 16, 1987.
+% letter.sty 17-Jan-86 with modifications
+% for DIN-A4 paper + window envelopes, by H.Partl (Wien)
+%
+
+\typeout{}
+\typeout{Document Style `letter'.}
+\typeout{Modified at University of Karlsruhe - 04. May 1988.}
+\typeout{}
+\typeout{If you really want to use Lamport's original letter format,}
+\typeout{please use the style `aletter'.}
+\typeout{}
+
+{\catcode`\_=12 \gdef\jobname@aux{\jobname.aux}} % .aux or _aux or ...
+
+\def\@ptsize{0}
+\@namedef{ds@10pt}{\def\@ptsize{0}}
+\@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}}
+\@twosidefalse
+\def\ds@draft{\overfullrule 5pt}
+
+\@options
+
+\lineskip 1pt \normallineskip 1pt
+\def\baselinestretch{1}
+
+\ifcase \@ptsize\relax
+ \def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt
+ \abovedisplayskip 10pt plus2pt minus5pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus3pt
+ \belowdisplayshortskip 6pt plus3pt minus3pt}
+ \def\small{\@setsize\small{11pt}\ixpt\@ixpt
+ \abovedisplayskip 8.5pt plus 3pt minus 4pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus2pt
+ \belowdisplayshortskip 4pt plus2pt minus 2pt}
+ \def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt
+ \abovedisplayskip 6pt plus 2pt minus 4pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus 1pt
+ \belowdisplayshortskip 3pt plus 1pt minus 2pt}
+ \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
+ \def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
+ \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+ \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
+ \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
+ \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
+ \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
+\or
+ \def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
+ \abovedisplayskip 11pt plus3pt minus6pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus3pt
+ \belowdisplayshortskip 6.5pt plus3.5pt minus3pt}
+ \def\small{\@setsize\small{12pt}\xpt\@xpt
+ \abovedisplayskip 10pt plus2pt minus5pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus3pt
+ \belowdisplayshortskip 6pt plus3pt minus3pt}
+ \def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
+ \abovedisplayskip 8pt plus 2pt minus 4pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus 1pt
+ \belowdisplayshortskip 4pt plus 2pt minus 2pt}
+ \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
+ \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+ \def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+ \def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
+ \def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
+ \def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
+ \def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
+\or
+ \def\@normalsize{\@setsize\normalsize{15pt}\xiipt\@xiipt
+ \abovedisplayskip 12pt plus3pt minus7pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus3pt
+ \belowdisplayshortskip 6.5pt plus3.5pt minus3pt}
+ \def\small{\@setsize\small{13.6pt}\xipt\@xipt
+ \abovedisplayskip 11pt plus3pt minus6pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus3pt
+ \belowdisplayshortskip 6.5pt plus3.5pt minus3pt}
+ \def\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt
+ \abovedisplayskip 10pt plus2pt minus5pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip \z@ plus3pt
+ \belowdisplayshortskip 6pt plus3pt minus3pt}
+ \def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
+ \def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+ \def\large{\@setsize\large{18pt}\xivpt\@xivpt}
+ \def\Large{\@setsize\Large{22pt}\xviipt\@xviipt}
+ \def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
+ \def\huge{\@setsize\huge{30pt}\xxvpt\@xxvpt}
+ \let\Huge=\huge
+\fi
+
+\normalsize
+
+% \oddsidemargin 53pt \evensidemargin 53pt
+% \marginparwidth 90pt \marginparsep 11pt
+% \marginparpush 5pt \topmargin 27pt
+% \headheight 12pt \headsep 45pt
+% \footheight 12pt \footskip 25pt
+% \textheight 505pt \textwidth 365pt
+% \columnsep 10pt \columnseprule 0pt
+% The above values (letter.sty) are replaced by the following values:
+
+\oddsidemargin 0in
+\evensidemargin 0in
+\marginparwidth .08in
+\marginparsep .01in
+\marginparpush 5pt
+\topmargin -35pt
+\headheight 12pt
+\headsep 25pt
+\footheight 12pt
+\footskip 25pt
+\textheight 8.9in
+\textwidth 6.5in
+\columnsep 10pt
+\columnseprule 0pt
+% (Note that these new values use all of the paper, like in Plain TeX,
+% but disable the writing of marginpar's.
+
+\raggedbottom
+
+\footnotesep 12pt
+\skip\footins 10pt plus 2pt minus 4pt
+
+\floatsep 12pt plus 2pt minus 2pt
+\textfloatsep 20pt plus 2pt minus 4pt
+\intextsep 12pt plus 2pt minus 2pt
+\dblfloatsep 12pt plus 2pt minus 2pt
+\dbltextfloatsep 20pt plus 2pt minus 4pt
+\@maxsep 20pt
+\@dblmaxsep 20pt
+\@fptop 0pt plus 1fil
+\@fpsep 8pt plus 2fil
+\@fpbot 0pt plus 1fil
+\@dblfptop 0pt plus 1fil
+\@dblfpsep 8pt plus 2fil
+\@dblfpbot 0pt plus 1fil
+
+% window for toaddress
+\def\@windowrules#1{\gdef\@@windowrules{#1}}
+\def\windowrules{\@windowrules{yes}}
+\def\nowindowrules{\@windowrules{}}
+\windowrules
+
+\def\backaddress#1{\gdef\@backaddress{#1}}
+\backaddress{}
+
+% \opening is quite different from the original one:
+\def\opening#1{\thispagestyle{empty}
+ \vspace*{-2cm} % upper edge of window <----
+ \ifx\@empty\fromaddress \else
+ \setbox0=\vbox{\raggedright \fromaddress \par \bigskip}
+ \vbox{\raggedright \fromaddress \par \bigskip}
+ \vspace{-\ht0}
+ \vspace{-\dp0}
+ \vspace{2.25cm}
+ \ifx\@empty\@@windowrules \hrule width 0pt
+ \else \hrule width 8cm
+ \fi
+ \ifx\@empty\@backaddress \else
+ \vspace{.75cm}
+ \setbox1=\vbox{
+ \hbox to 8cm{\hss{\scriptsize \@backaddress}\hss}}
+ \vbox{
+ \hbox to 8cm{\hss{\scriptsize \@backaddress}\hss}
+ \hrule width 8cm}
+ \vspace{-\ht1}
+ \vspace{-\dp1}
+ \hrule width 0pt
+ \fi
+ \fi
+ \ifx\@empty\@backaddress \vspace{5cm} \else % height of window <----
+ \vspace{4.25cm} % height of window <----
+ \fi
+ \vbox to 0pt{\vss \raggedright \toname \\ \toaddress \par
+ \vspace{.75cm}} % vorher .25cm + \bigskip
+ \ifx\@empty\fromaddress \else
+ \ifx\@empty\@@windowrules \hrule width 0pt
+ \else \hrule width 8cm
+ \fi
+ \vspace{0.85cm}% vorher 1.4cm
+ \hspace*{-2cm}\vbox{\hrule width .3cm}\par
+ \fi
+ \vspace{1cm}
+ {\raggedleft \@place\space\@date \par}
+ \medskip
+ \vspace{0pt plus 1cm} % to help with page break
+ #1\par\nobreak}
+
+\long\def\closing#1{\par\nobreak\vspace{\parskip}
+ \stopbreaks
+ {\raggedright
+ \ignorespaces #1\\[6\parskip]
+ \ifx\@empty\fromsig
+ \fromname
+ \else \fromsig \fi\strut}
+ \par\bigskip}
+
+%\def\ps{\par\startbreaks}
+\def\ps#1{\par\noindent
+ \parbox[t]{\textwidth}{\@hangfrom{\rm P.S.: }%
+ \ignorespaces #1\strut}\par}
+\def\cc#1{\par\noindent
+ \parbox[t]{\textwidth}{\@hangfrom{\rm \ccname: }% <-----
+ \ignorespaces #1\strut}\par}
+\def\ccname{cc} % <-----
+\def\encl#1{\par\noindent
+ \parbox[t]{\textwidth}{\@hangfrom{\rm \enclname: }% <-----
+ \ignorespaces #1\strut}\par}
+\def\enclname{encl} % <-----
+\def\stopletter{}
+
+\def\returnaddress{}
+\newcount\labelcount
+\def\place#1{\gdef\@place{#1,}}
+\def\@place{}
+\def\date#1{\gdef\@date{#1}}
+\def\@date{\today}
+
+\def\startlabels{
+ \labelcount=0 \baselineskip=0pt \lineskip=0pt
+ \pagestyle{empty}
+ \let\@texttop=\relax
+ \topmargin -50pt
+ \headsep 0pt
+ \oddsidemargin -35pt
+ \evensidemargin -35pt
+ \textheight 10in
+ \@colht\textheight \@colroom\textheight \vsize\textheight
+ \textwidth 550pt
+ \columnsep 25pt
+ \xpt
+ \baselineskip=0pt
+ \lineskip=0pt
+ \boxmaxdepth=0pt
+ \twocolumn\relax}
+\def\mlabel#1#2{\setbox0\vbox{\parbox[b]{3.6in}{%
+ \strut\ignorespaces #2}}
+ \vbox to 2in{\vss \box0 \vss}}
+
+
+
+\long\def\letter#1{\clearpage
+ \c@page\@ne
+ \interlinepenalty=200 \@processto{#1}}
+\def\endletter{\stopletter\@@par\pagebreak\@@par
+ \if@filesw
+ \begingroup
+ \def\protect{\string}
+ \let\\=\relax
+ \def\protect##1{\string##1\space}
+ \immediate\write\@auxout{\string\mlabel{\returnaddress}{\toname
+ \\\toaddress}}
+ \endgroup
+ \fi}
+\long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty
+ \else \@yproc #1@@@\fi}
+\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
+\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
+\def\stopbreaks{\interlinepenalty \@M
+ \def\par{\@@par\nobreak}\let\\=\@nobreakcr
+ \let\vspace\@nobreakvspace}
+\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
+\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
+ \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
+\def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
+\def\startbreaks{\let\\=\@normalcr
+ \interlinepenalty 200\def\par{\@@par\penalty 200}}
+
+\def\name#1{\def\fromname{#1}}
+\def\fromname{}
+\def\signature#1{\def\fromsig{#1}}
+\def\fromsig{}
+\long\def\address#1{\def\fromaddress{#1}}
+\def\fromaddress{}
+\def\location#1{\def\fromlocation{#1}}
+\def\fromlocation{}
+\def\telephone#1{\def\telephonenum{#1}}
+\def\telephonenum{}
+
+\def\document{\endgroup
+ \@colht\textheight \@colroom\textheight \vsize\textheight
+ \columnwidth\textwidth \@clubpenalty\clubpenalty
+ \if@twocolumn \advance\columnwidth -\columnsep
+ \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
+ \fi
+ \hsize\columnwidth \linewidth\hsize
+ \begingroup\@floatplacement\@dblfloatplacement\endgroup
+ \if@filesw \immediate\openout\@mainaux=\jobname@aux
+ \immediate\write\@mainaux{\string\startlabels\string\@startlabels}\fi
+ \def\do##1{\let ##1\@notprerr}
+ \@preamblecmds
+ \let\do\noexpand
+ \@normalsize\everypar{}}
+\def\enddocument{\@checkend{document}\newpage\begingroup
+ \if@filesw \immediate\closeout\@mainaux
+ \makeatletter\input \jobname@aux\clearpage
+ \fi\endgroup\deadcycles\z@\@@end}
+
+\def\makelabels{\@fileswtrue}
+\def\@startlabels{}
+
+
+
+% \def\@texttop{\ifnum\c@page=1\vskip 0pt plus .00006fil\relax\fi}
+\let\@texttop=\relax
+
+\def\ps@headings{
+ \def\@oddhead{\sl \headtoname\ \ignorespaces\toname \hfil \today % <--
+ \hfil Seite \thepage}\def\@oddfoot{}}
+\def\headtoname{To} % <-----
+\def\ps@empty{
+ \def\@oddhead{}\def\@oddfoot{}\def\@evenhead{}\def\@evenfoot{}}
+
+\def\ps@firstpage{\def\@oddhead{}\def\@oddfoot{\raisebox
+ {-45pt}[0pt]{\hbox to \textwidth
+ {\hspace*{100pt}\xpt\fromlocation \hfill
+ \telephonenum}}\hss}\def\@evenhead{}\def\@evenfoot{}}
+
+\def\ps@plain{
+ \def\@oddhead{}\def\@oddfoot{\rm\hfil\thepage
+ \hfil}\def\@evenhead{}\let\@evenfoot\@oddfoot}
+
+\parskip .7em
+\parindent 0pt
+\topsep .4em
+\partopsep 0pt
+\itemsep .4em
+
+\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+
+
+
+\leftmargini 2.5em
+\leftmarginii 2.2em
+\leftmarginiii 1.87em
+\leftmarginiv 1.7em
+\leftmarginv 1em
+\leftmarginvi 1em
+\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+\labelsep 5pt
+\parsep 0pt
+
+\let\@listi\relax
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep .2em
+ \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}
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -15pt\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 15pt}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+\let\enddescription\endlist
+
+
+\def\theequation{\arabic{equation}}
+
+\arraycolsep 5pt
+\tabcolsep 6pt
+\arrayrulewidth .4pt
+\doublerulesep 2pt
+\tabbingsep \labelsep
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt
+
+\def\footnoterule{\kern-1\p@
+ \hrule width .4\columnwidth
+ \kern .6\p@}
+
+\long\def\@makefntext#1{\noindent \hangindent 5pt\hbox
+ to 5pt{\hss $~{\@thefnmark}$}#1}
+
+
+\c@topnumber=2
+\def\topfraction{.7}
+\c@bottomnumber=1
+\def\bottomfraction{.3}
+\c@totalnumber=3
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\c@dbltopnumber= 2
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+
+\smallskipamount=.5\parskip
+\medskipamount=\parskip
+\bigskipamount=2\parskip
+
+\ps@plain
+\pagenumbering{arabic}
+\onecolumn
+\@fileswfalse
+
diff --git a/macros/latex209/contrib/misc/accarticle.sty b/macros/latex209/contrib/misc/accarticle.sty
new file mode 100644
index 0000000000..f284020dc7
--- /dev/null
+++ b/macros/latex209/contrib/misc/accarticle.sty
@@ -0,0 +1,184 @@
+% ACCarticle.sty 6-FEB-92 balemi@aut.ethz.ch
+
+\typeout{Document Style `ACCarticle' <6-FEB-92>.}
+%
+% use with
+% \title{} \author{} \maketitle \begin{abstract}..\end{abstract}
+
+% change sizes and margins
+\input article.sty
+%\input IEEE1\@ptsize.sty\relax
+%\twocolumn
+
+\textheight 238mm
+\textwidth 177mm
+\columnsep 15mm
+\voffset -20mm
+\hoffset -30mm
+\twocolumn
+\sloppy
+\flushbottom
+\parindent 0pt
+\parskip 1em
+%\oddsidemargin 1.2truein
+%\evensidemargin 1.2truein
+%\topmargin .6 truein
+
+% added \firstpagestyle so maketitle doesn't output a number if you
+% don't want it to
+\newcommand{\firstpagestyle}[1]{\def\fpgstyle{\thispagestyle{#1}}}
+\firstpagestyle{plain}
+\def\maketitle{\par
+ \begingroup
+% \def\thefootnote{\fnsymbol{footnote}}
+% fnsymbol box size changed 9/9/89 rhr
+% \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}}
+ \def\@makefnmark{\hbox{$^{\@thefnmark}$\hss}}
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else \newpage
+ \global\@topnum\z@ \@maketitle \fi\fpgstyle\@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+
+\def\@maketitle{\newpage
+ \null
+ \vskip 2em \begin{center}
+ {\LARGE\bf \@title \par} \vskip 1.5em {\large \lineskip .5em
+ \begin{tabular}[t]{c}\@author
+ \end{tabular}\par}
+% \vskip 1em {\@date}
+ \end{center}
+ \par
+ \vskip 1.5em}
+
+\def\abstract{\begin{center}{\bf Abstract}\end{center} \vskip -\parskip}
+\def\endabstract{\par}
+
+\def\thepart{\Roman{part}}
+\def\thesection {\arabic{section}.}
+\def\thesubsection {\thesection\arabic{subsection}.}
+\def\thesubsubsection {\thesubsection\arabic{subsubsection}}
+
+\def\@sect#1#2#3#4#5#6#7[#8]#9{\ifnum #2>\c@secnumdepth
+ \def\@svsec{}\else
+ \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\hskip 0.5em }\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \setbox1=\hbox{\@svsec #8}
+% changed to center sect titles
+ \ifdim \wd1>\columnwidth
+ \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8}
+ \else
+ \ifnum #2 > 1
+ {\@svsec #8}
+ \else
+ \centerline{\@svsec #8}
+ \fi
+ \fi
+ \endgroup
+ \csname #1mark\endcsname{#8}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #8}\else
+ \def\@svsechd{#6\hskip #3\@svsec #9#7\csname #1mark\endcsname
+ {#8}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #8}}\fi
+ \@xsect{#5}}
+
+\def\@startsection#1#2#3#4#5#6#7{\if@noskipsec \leavevmode \fi
+ \par \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse\fi
+ \if@nobreak \everypar{}\else
+ \addpenalty{\@secpenalty}\addvspace{\@tempskipa}\fi
+ \vskip -\parskip
+ \@ifstar
+ {\@ssect{#1}{#2}{#3}{#4}{#5}{#6}{#7}}
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}{}{#7}}}}
+
+\def\@ssect#1#2#3#4#5#6#7#8{\@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6
+% \@hangfrom{\hskip #3}{\interlinepenalty \@M #8#7}
+ \setbox1=\hbox{\@svsec #8}
+% changed to center sect titles
+ \ifdim \wd1>\columnwidth
+ \@hangfrom{\hskip #3}{\interlinepenalty \@M #8#7}
+ \else
+ \ifnum #2 > 1
+ \vskip -\parskip
+ \leftline{#8#7}
+ \else
+ \centerline{#8#7}
+ \fi
+ \fi
+ \endgroup
+ \else \def\@svsechd{#6\hskip #3\relax #8#7}\fi
+ \@xsect{#5}}
+
+\def\@xsect#1{\@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \vskip -\parskip
+ \@afterheading
+ \else \global\@nobreakfalse \global\@noskipsectrue
+ \everypar{\if@noskipsec \global\@noskipsecfalse
+ \clubpenalty\@M \hskip -\parindent
+ \begingroup \@svsechd \endgroup \unskip
+ \hskip -#1
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}\fi}\fi\ignorespaces}
+
+\def\section{\@startsection{section}{1}{\z@}
+{6.5ex plus 0.5ex minus 0.5ex}{3ex plus 0.3ex}{\bf}{}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{3.0ex plus
+.3ex minus .1ex}{0.01ex plus .0ex}{\hskip -.7ex\bf}{}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.0ex plus
+.3ex minus .1ex}{0ex plus .0ex}{\hskip 2em\bf}{:\ \ \ }}
+
+
+\def\QED{~\rule[-1pt]{5pt}{5pt}\par\medskip}
+\newenvironment{proof}{{\bf Proof: \ }}{ \hfill \QED}
+\def\@begintheorem#1#2{\vskip -\parskip\it \trivlist
+ \item[\hskip \labelsep{\bf #1\ #2:}]}
+\def\@opargbegintheorem#1#2#3{\vskip -\parskip\it \trivlist
+ \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]}
+
+
+
+\def\thebibliography#1{\subsection*{References\@mkboth
+ {REFERENCES}{REFERENCES}}\parskip 0pt \list
+ {[\arabic{enumi}]\hfill}{\labelwidth 7mm \leftmargin\labelwidth
+ \itemindent 9mm
+\advance\leftmargin -7mm
+\itemsep -1mm
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+\def\ps@plain{\let\@mkboth\@gobbletwo
+ \def\@oddhead{}\def\@oddfoot{\hfil
+ \@footernote\ \qquad \thepage}
+\def\@evenhead{}\def\@evenfoot{
+\thepage\qquad \@footernote\ \hfil }
+}
+
+\def\footernote#1{\def\@footernote{#1}}
+\footernote{}
+
+
+% set up default pagestyle
+\pagestyle{plain}
+
+
diff --git a/macros/latex209/contrib/misc/acmproc.sty b/macros/latex209/contrib/misc/acmproc.sty
new file mode 100644
index 0000000000..f4092a3dfe
--- /dev/null
+++ b/macros/latex209/contrib/misc/acmproc.sty
@@ -0,0 +1,186 @@
+% ACMproc.sty
+% PROC DOCUMENT STYLE -- Released 4 September 1986
+% for LaTeX version 2.09
+% Copyright (C) 1985 by Leslie Lamport
+%
+% This is a style option for use with the article style to produce
+% camera-ready conference proceedings.
+
+\typeout{Document Style Option 'ACMproc'}
+
+
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+%
+% All margin dimensions measured from a point one inch from top and side
+% of page. Dimensions shrink by about 2 percent
+
+% SIDE MARGINS (ACM instructions)
+ \oddsidemargin -0.25in % Note that \oddsidemargin = \evensidemargin
+ \evensidemargin -0.25in
+% to print on a 8.5''x11'' page manually feeded through the
+% LaserWriter
+\advance\oddsidemargin by -4.5mm
+\advance\evensidemargin by -4.5mm
+
+% VERTICAL SPACING (ACM instructions)
+ % Top of page:
+\topmargin -0.25in % Nominal distance from top of page to top of
+ % box containing running head.
+\headheight 12pt % Height of box containing running head.
+\headsep 25pt % Space between running head and text.
+\advance\topmargin by -37pt % subtract \headheight and \headsep from \topmargin
+\advance\topmargin by -1.7cm % ???
+% \topskip = 10pt % '\baselineskip' for first line of page.
+ % Bottom of page:
+\footskip 100pt % Distance from baseline of box containing foot
+ % to baseline of last line of text.
+
+
+% DIMENSION OF TEXT (ACM instructions)
+
+\textheight 9in % Height of text (including footnotes and figures,
+ % excluding running head and foot).
+\advance\textheight by 5mm
+\textwidth 7in % Width of text line.
+ % For two-column mode:
+\columnsep .333in % Space between columns
+\columnseprule 0pt % Width of rule between columns.
+
+% ADJUSTMENT FOR A4 PAGE SIZE 900403/BjL
+
+\hoffset=3mm
+\voffset=18mm
+
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+% Use \markright (or \markboth) to put an identification in the
+% lower left. The page number is printed in the lower right.
+
+
+\def\@oddhead{}\def\@evenhead{}
+\def\@oddfoot{\rm\rightmark \hfil Page \thepage}
+\def\@evenfoot{\@oddfoot}
+
+
+% ****************************************
+% * TITLE *
+% ****************************************
+%
+
+% This definition of \maketitle taken from article.sty, except
+% it does not do a \thispagestyle{plain}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%% ATTENTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%% JJL HACK %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Un hack horrible qui change 2.25 en 1.20 pour faire des titres
+% moins hauts REVISED to 1.50 % MJ: revised to 6cm
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox
+ to 0pt{$^{\@thefnmark}$\hss}}
+ \twocolumn[\@maketitle]
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+
+\def\@maketitle{\vbox to 6cm{\hsize\textwidth
+ \linewidth\hsize \vfil \centering
+ {\LARGE \@title \par} % Title set in \LARGE size. MJ: correction
+ % de la correction
+ \vskip 2em % Vertical space after title.
+ {\large \begin{tabular}[t]{c}\@author \end{tabular}\par}
+ \vskip 2em % MJ: leave at least that place after authors
+ \vfil}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%% fin du hack %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% The \copyrightspace command is used to produce a blank space in the first
+% column where a copyright notice belongs. It works by producing a
+% blank footnote of the appropriate size. Note that it should appear
+% after any \footnote commands that produce footnotes for the first
+% column.
+
+% modified from 97pt to .75in, to satisfy acm requirement [0]
+% changed to 1in after \advance'ing\textheight by 5mm
+\def\copyrightspace{\footnotetext{\mbox{}\vrule height 1in width 0pt}}
+
+% Section commands changed (smaller font, smaller spaces around) 900403/BjL
+
+\def\section{\@startsection {section}{1}{\z@}{-3.25ex plus -1ex minus
+-.2ex}{1.5ex plus .2ex}{\bf}}
+
+\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus
+ -.2ex}{1.5ex plus .2ex}{\bf}}
+
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
+-1ex minus -.2ex}{1.5ex plus .2ex}{\bf}}
+
+% The abstract Environment (changed 900403/BjL)
+
+\def\abstract{\section*{ABSTRACT}}
+\def\endabstract{\par}
+
+% Bibliography 900403/BjL
+
+\def\thebibliography#1{\section*{REFERENCES\@mkboth
+ {REFERENCES}{REFERENCES}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+
+% Table of contents 900403/BjL
+
+\def\tableofcontents{\section*{CONTENTS\@mkboth{CONTENTS}{CONTENTS}}
+ \@starttoc{toc}}
+
+% List of figures 900403/BjL
+
+\def\listoffigures{\section*{LIST OF FIGURES\@mkboth
+ {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}}
+
+% List of tables 900403/BjL
+
+\def\listoftables{\section*{LIST OF TABLES\@mkboth
+ {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}}
+
+% Index 900403/BjL
+
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{INDEX}]
+ \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+%
+% Default initializations
+
+\twocolumn
+\sloppy
+\parindent 1em
+\leftmargini 2em
+\leftmargin\leftmargini
+\leftmarginv .5em
+\leftmarginvi .5em
+\flushbottom
diff --git a/macros/latex209/contrib/misc/acronym.sty b/macros/latex209/contrib/misc/acronym.sty
new file mode 100644
index 0000000000..2d21d2b557
--- /dev/null
+++ b/macros/latex209/contrib/misc/acronym.sty
@@ -0,0 +1,105 @@
+% @(#)acronym.sty 1.2 9/11/90 Copyright 1989 ICL
+%
+% Author: John Kewley
+%
+% This style file contains macros for acronyms.
+%
+% Two styles are supported - footnote and parenthesised.
+% This can be switched using \foottrue for footnotes or
+% \footfalse (default) for parenthesised.
+%
+% Parenthesised acronyms are used as follows:
+% Declare acronym using:
+% \newacronym{latex name}{expanded name}[printed name]
+% (The printed name defaults to latex name).
+% e.g. \acronym{GNU}{GNU Not Unix}[\sc{gnu}]
+% When acronym is first used (\GNU), the following is printed:
+% expanded name (printed name)
+% GNU Not Unix (GNU)
+% Subsequent use yields only the printed name.
+%
+% Footnote acronyms work in the same way except when they are first used:
+% printed name\footnote{expanded name}
+%
+% Acronyms can be followed by an optional argument:
+% \newacronym{PE}{Processing Element}
+% \PE['s] gives
+% Processing Element's (PE's)
+%
+% They can also be followed by s to signify the plural:
+% \newacronym{PE}{Processing Element}
+% \PEs gives
+% Processing Elements (PEs)
+%
+% If they are to be referred to before they are first used, in a title say
+% When full expansion might not look good, or in a section heading where
+% the definition would not be wanted in the contents list, short and long forms
+% of the acronym are defined.
+%
+% e.g. \section{\GNUshort\ Comings}
+%
+% The long version can be used where a repetition of the full name is required.
+%
+% Quite often acronyms are defined in a Glossary, Terminology or
+% Table of Acronyms. The item command is provided for this:
+%
+% \GNUitem gives
+% \item[GNU] GNU Not Unix
+%
+% Whenever an acronym is defined using \newacronym, all the above forms are
+% available.
+%
+% John Kewley ICL
+%
+% jk@r6.cs.man.ac.uk or
+% jk@nw.stl.stc.co.uk
+
+% Auxiliary definitions:
+
+% \ifnextchar
+%\def\ifnextchar#1#2#3{\@ifnextchar#1{#2}{#3}}
+
+\def\namegdef#1{\expandafter\gdef\csname #1\endcsname}
+\def\namedef#1{\expandafter\def\csname #1\endcsname}
+\def\nameuse#1{\csname #1\endcsname}
+
+\newif\iffoot \footfalse
+
+\def\acitemx#1#2[#3]{\item [#1#3] #2#3}
+\def\acitem#1#2{\@ifnextchar [{\acitemx{#1}{#2}}{\acitemx{#1}{#2}[]}}
+\def\acfootx#1#2[#3]{#1#3\footnote{#2#3}}
+\def\acfoot#1#2{\@ifnextchar [{\acfootx{#1}{#2}}{\acfootx{#1}{#2}[]}}
+\def\aclongx#1#2[#3]{#1#3 (#2#3)}
+\def\aclong#1#2{\@ifnextchar [{\aclongx{#1}{#2}}{\aclongx{#1}{#2}[]}}
+\def\acshortx#1[#2]{#1#2}
+\def\acshort#1{\@ifnextchar [{\acshortx{#1}}{\acshortx{#1}[]}}
+\def\acronx#1#2[#3]{\iffoot\acfoot{#1}{#2}[#3]\else\aclong{#1}{#2}[#3]\fi}
+\def\acron#1#2{\@ifnextchar [{\acronx{#1}{#2}}{\acronx{#1}{#2}[]}}
+
+\def\newacaux#1#2{\namegdef{#1x}[##1]{#2##1}%
+ \namegdef{#1}{\protect\@ifnextchar [{\protect\nameuse{#1x}}{#2}}}
+\def\newac#1#2[#3]{%
+ \namegdef{#1item}{\acitem{#3}{#2}}
+ \namegdef{#1items}{\acitem{#3s}{#2s}}
+ \namegdef{#1long}{\protect\aclong{#2}{#3}}
+ \namegdef{#1longs}{\protect\aclong{#2s}{#3s}}
+ \namegdef{#1short}{\protect\acshort{#3}}
+ \namegdef{#1shorts}{\protect\acshort{#3s}}
+ \namegdef{#1foot}{\protect\acfoot{#3}{#2}}
+ \namegdef{#1foots}{\protect\acfoot{#3s}{#2s}}
+ \namegdef{#1x}[##1]{\acron{#2##1}{#3##1}\newacaux{#1}{#3}}
+ \namegdef{#1s}{\protect\nameuse{#1x}[s]}
+ \namegdef{#1}{\protect\@ifnextchar [{\protect\nameuse{#1x}}%
+ {\protect\acronx{#2}{#3}[]\protect\newacaux{#1}{#3}}}}
+
+\def\termit#1#2[#3]{\newac{#1}{#2}[#3]\acitem{#3}{#2}}
+\def\termitem#1#2{\@ifnextchar [{\termit{#1}{#2}}{\termit{#1}{#2}[#1]}}
+
+\def\newte#1#2[#3]{\namegdef{#1item}{\acitem{#3}{#2}}}
+\def\newterm#1#2{\protect\@ifnextchar [{\newte{#1}{#2}}{\newte{#1}{#2}[#1]}}
+
+% \newacronym
+% #1 : short name
+% #2 : long name
+% [#3] : optional printed name
+\def\newacronym#1#2{\@ifnextchar [{\newac{#1}{#2}}{\newac{#1}{#2}[#1]}}
diff --git a/macros/latex209/contrib/misc/add-wes.sty b/macros/latex209/contrib/misc/add-wes.sty
new file mode 100644
index 0000000000..857ca00398
--- /dev/null
+++ b/macros/latex209/contrib/misc/add-wes.sty
@@ -0,0 +1,802 @@
+% Save file as: ADD-WES.STY Source: FILESERV@SHSU.BITNET
+% Posted by pauld@cs.washington.edu (Paul Barton-Davis) to comp.text.tex
+% on 23 Aug 91 20:09:12 GMT
+% Original text accompanying post follows \endinput at bottom of file
+%% addison-wesley.sty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% A `book' style conforming (just!) to the Addison-Wesley house style
+%% Paul Barton-Davis <pauld@cs.washington.edu> December 1988
+%%
+%% v1.05 nmm 29-jun-89 - include notes at head of index
+%% v1.04 nmm 21-jun-89 - change 'part' handling
+%% v1.03 pad 25-feb-89 - added `cexample' and `wexample' environments; fixed
+%% error in `mycaption' which dropped figure
+%% number when caption length > hsize.
+%% v1.02 pad 15-feb-89 - added 'rhfig' to produce figures with captions
+%% alongside instead of underneath, and 'mycaption' to
+%% give nice captions.
+%% v1.01 pad xx-jan-89 - change indents for display envts.
+%%
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Copyright (c):
+%% Freely copy, modify and redistribute on condition that this
+%% copyright notice remains on all such copied, modified or
+%% distributed versions.
+%%
+%% Portions of this file derived from material written by
+%% Leslie Lamport.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% NOTE:
+%%
+%% The author disclaims more or less all responsibility for the design
+%% decisions implicitly represented in this file. This LaTeX
+%% documentstyle was implememented to meet an external design
+%% specification, and its existence neither condones or decries that
+%% specification.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% TO DO:
+%%
+%% right floating figures (properly)
+%% references
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\typeout%
+{Document Style `Addison-Wesley Book' v1.05 nmm 29-jun-89}
+
+%% MATERIAL FROM BOOK.STY
+
+\def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}}
+\@twosidetrue \@mparswitchtrue \def\ds@draft{\overfullrule 5pt}
+\@options
+\input bk1\@ptsize.sty\relax
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin\parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt
+\tabbingsep \labelsep
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt
+
+\newcounter{part}
+\newcounter {chapter}
+\newcounter {section}[chapter]
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+
+\def\thepart {\arabic{part}}
+\def\thechapter {\arabic{chapter}}
+\def\thesection {\thechapter.\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+\def\@chapapp{Chapter}
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{2}
+
+\def\tableofcontents{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{Contents\@mkboth{CONTENTS}{CONTENTS}}
+ \@starttoc{toc}\if@restonecol\twocolumn\fi}
+\def\l@part#1#2{\addpenalty{-\@highpenalty}
+ \addvspace{2.25em plus 1pt} \begingroup
+ \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip
+-\@pnumwidth
+ {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+ \nobreak \endgroup}
+
+\def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
+% \vskip \z@ plus .2pt
+ {\hangindent #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ #4\nobreak\leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern \@dotsep
+ mu$}\hfill \nobreak \hbox to\@pnumwidth{\hfil\rm #5}\vskip -\parskip
+\par}\fi}
+
+\def\l@chapter#1#2{\pagebreak[3]
+ \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+\def\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
+\def\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
+\def\l@paragraph{\@dottedtocline{4}{10em}{5em}}
+\def\l@subparagraph{\@dottedtocline{5}{12em}{6em}}
+\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{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\chapter*{List of Tables\@mkboth
+ {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}\if@restonecol\twocolumn
+ \fi}
+\let\l@table\l@figure
+
+\def\thebibliography#1{\chapter*{Bibliography\@mkboth
+ {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+\newif\if@restonecol
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\chaptermark{Index}\columnsep 35pt\twocolumn[\@makeschapterhead{Index}In this index, page numbers are shown
+in {\bf bold} type to indicate a major source of information about the item
+being indexed. Page numbers in {\it italics} indicate a definition.\vskip 1.5cm]
+ \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\footnoterule{\kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@}
+\@addtoreset{footnote}{chapter}
+\long\def\@makefntext#1{\parindent 1em\noindent
+ \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim \wd\@tempboxa >\hsize #1: #2\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+\newcounter{figure}[chapter]
+\def\thefigure{\thechapter.\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Figure \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+\newcounter{table}[chapter]
+\def\thetable{\thechapter.\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Table \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+\def\maketitle{\begin{titlepage}
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \setcounter{page}{0}
+ \null
+ \vfil
+ \vskip 60pt
+ {\Huge\sf \@title} \vskip 36pt
+ {\large \@author}
+ \vfil
+ \end{titlepage}
+ \setcounter{footnote}{0}
+ \let\maketitle\relax}
+
+\mark{{}{}}
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+\@addtoreset{equation}{chapter}
+\def\theequation{\thechapter.\arabic{equation}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FONTS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Use PostScript fonts (Times as default)
+%% For newer LaTeX's, you can simply insert a new version of
+%% the font definitions here.
+
+\input{psdef.sty}
+\input{times.sty}
+
+%% redefine \LARGE to be 24pt (more in line with A-W's font sizes)
+
+\def\LARGE{\@setsize\LARGE{24pt}\xxpt\@xxpt}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% PAGE DIMENSIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\textwidth 15truecm
+\textheight 22.5truecm
+\baselineskip 14truept
+\oddsidemargin 1cm
+\evensidemargin 1cm
+\topmargin 0cm
+
+%% skip sizes
+
+\parskip 5pt plus 1pt minus 0.5pt
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% RUNNING HEADERS & FOOTERS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\headerfont{\normalsize\it}
+\newdimen\headerspacer
+\headerspacer 1truecm
+
+\def\ps@headings
+ {
+ \let\@mkboth=\@gobbletwo
+ \def\@oddhead{\hbox to \textwidth
+ {\hfil {\headerfont \@chaptername%
+ \hskip \headerspacer \thepage}}}
+ \def\@oddfoot{\relax}
+
+ \if@twoside
+ \def\@evenhead{\hbox to \textwidth
+ {{\headerfont \thepage%
+ \hskip \headerspacer \the@title} \hfil}}
+ \def\@evenfoot{\relax}
+ \else
+ \def\@evenhead{\relax}
+ \def\@evenfoot{\relax}
+ \fi
+ }
+
+%% Addison-Wesley `plain' headings (for chapter pages - just put the
+%% page number in the bottom right corner)
+
+\def\ps@plain
+ {
+ \let\@mkboth=\@gobbletwo
+ \def\@oddhead{\relax}
+ \def\@oddfoot{\hbox to \textwidth {\hfil \headerfont \thepage}}
+
+ \if@twoside
+ \def\@evenhead{\relax}
+ \def\@evenfoot{\hbox to \textwidth {\headerfont \thepage \hfil}}
+ \else
+ \def\@evenhead{\relax}
+ \def\@evenfoot{\hbox to \textwidth {\headerfont \thepage \hfil}}
+ \fi
+ }
+
+\def\the@title{\@title}
+\def\@title{} %% This is reset by a \title command in the text
+\def\@chaptername{} %% This is reset by a \chapter command in the text
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ENVIRONMENTS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% new environments, or new definitions of old ones
+%%
+%% - example : for displaying computer interaction
+%% - wexample : as above, but full width
+%% - cexample : as above, but centered
+%% - pseudocode : for displaying pseudo-code
+%% - outputstuff : for displaying computer output
+%% - description : like description, but with equal left & right indents
+%% - itemize : as above, for itemized lists
+%% - enumerate : as above, for enumerated lists
+%% - preface : for prefaces
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% EXAMPLE environment
+%%
+
+\def\examplefont{\tb} %% font (& style) used for all example environments
+\newdimen\exampletopsep %% white space to leave above an example
+\exampletopsep\parskip
+
+\def\example{\list{}{%
+\topsep\exampletopsep
+\rightmargin\leftmargin
+\examplefont}
+\item[]}
+
+\let\endexample\endlist
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% FULL WIDTH EXAMPLE ENVIRONMENT
+%%
+
+\def\wexample{\list{}{%
+\topsep\exampletopsep
+\leftmargin 0pt
+\rightmargin \leftmargin
+\examplefont}
+\item[]}
+
+\let\endwexample\endlist
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% CENTERED EXAMPLE ENVIRONMENT
+%%
+
+\def\cexample{%
+\begin{center}
+\examplefont}
+
+\def\endcexample{\end{center}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% PSEUDO-PSUEDOCODE ENVIRONMENT
+%%
+%% usage:
+
+%% \begin{pseudocode}
+%% if (test clause) \\
+%% \> action statement \\
+%% else \\
+%% \> alternative \\
+%% endif
+%% \end{pseudocode}
+
+%% extra levels of indentation can be achieved with additional \>'s.
+
+\def\pseudocode{\list{}{%
+\topsep \exampletopsep
+\rightmargin \leftmargin
+\examplefont}
+\item[]
+\begin{tabbing}
+\hskip 1cm \= \hskip 1cm \= \hskip 1cm \= \hskip 1cm \= \hskip 1cm \= \kill}
+
+\def\endpseudocode{\endtabbing\endlist}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% OUTPUTSTUFF ENVIRONMENT
+%%
+%% for displaying the output from computer interaction
+
+\def\outputfont{\op} %% font to use for outputstuff
+\newdimen\outputstufftopsep %% space to leave above outputstuff
+\outputstufftopsep\parskip
+
+\def\outputstuff{\list{}{%
+\rightmargin \leftmargin
+\topsep\outputstufftopsep
+\outputfont}
+\item[]}
+
+\let\endoutputstuff\endlist
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% DESCRIPTION ENVIRONMENT
+%%
+%% redefine the `description' environment
+%% to give equal right and left margins,
+%% and parametize its topsep
+
+\newdimen\lrdesctopsep %% space to leave above a description
+\lrdesctopsep\parskip
+
+\def\description{\list{}{%
+\topsep\lrdesctopsep
+\rightmargin\leftmargin
+\itemindent -\leftmargin
+\divide\itemindent by 2
+\labelwidth\z@
+\let\makelabel\descriptionlabel
+}}
+
+\let\enddescription\endlist
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% ITEMIZED LIST ENVIRONMENT
+%%
+
+\def\itemize{%
+\ifnum \@itemdepth >3%
+ \@toodeep%
+\else%
+ \advance\@itemdepth \@ne%
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {\def\makelabel##1{\hss\llap{##1}}%
+ \rightmargin\leftmargin}%
+\fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% ENUMERATED LIST ENVIRONMENT
+%%
+
+\def\enumerate{%
+\ifnum \@enumdepth >3%
+ \@toodeep%
+\else
+ \advance\@enumdepth \@ne%
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \list{\csname label\@enumctr\endcsname}%
+ {\usecounter{\@enumctr}%
+ \def\makelabel##1{\hss\llap{##1}}%
+ \rightmargin\leftmargin}%
+\fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% PREFACE ENVIRONMENT
+%%
+%% basically just uses roman page numbering, with a plain
+%% pagestyle, and ships out the page(s) when done.
+%%
+%% NB. should really save current pagenumbering and style,
+%% rather than just switching back to arabic/headings
+%% when done
+
+\def\preface{%
+\clearpage
+\pagenumbering{roman}
+\vbox to \chapterboxsize {%
+ \noindent
+ {\LARGE\hb Preface}
+ \vfill}
+\pagestyle{plain}
+\noindent
+
+}
+
+\def\endpreface{%
+\clearpage
+\pagenumbering{arabic}
+\pagestyle{headings}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% SECTIONING
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Boiler plate material for sectioning, parametizing all
+%% spacing, style and font information for users who want
+%% to modify these on the fly (not that they're encouraged to).
+
+\newdimen\abovesectionskip
+\newdimen\belowsectionskip
+\newdimen\abovesubsectionskip
+\newdimen\belowsubsectionskip
+\newdimen\abovesubsubsectionskip
+\newdimen\belowsubsubsectionskip
+\newdimen\baselineskiptwice
+
+\baselineskiptwice=\baselineskip
+\multiply\baselineskiptwice by 2
+
+\abovesectionskip=-\baselineskiptwice
+\belowsectionskip=\baselineskip
+
+\abovesubsectionskip=-\baselineskip
+\belowsubsectionskip=6pt
+
+\abovesubsubsectionskip=-\baselineskip
+\belowsubsubsectionskip=4truept
+
+\def\sectionfont{\large\hb}
+\def\subsectionfont{\normalsize\hb}
+\def\subsubsectionfont{\normalsize\ho}
+
+%% prevent subsubsections and below being numbered
+
+\setcounter{secnumdepth}{2}
+
+%% now define the sectioning commands
+
+%% PART is an exception, in that it doesn't use
+%% \@startsection, but instead just throws out a recto
+%% page with a Part number and associated rubbish with it.
+
+\def\part#1{%
+\cleardoublepage
+\thispagestyle{empty}
+\refstepcounter{part}
+\vbox to \vsize{%
+ \vskip 60pt
+ \hbox to \textwidth{\hfil\Huge\hb Part \thepart \hfil}
+ \vskip 2cm
+ \begin{center}
+ {\LARGE\hb #1}
+ \end{center}
+ \vfill}
+\newpage
+}
+
+\def\section%%
+{\@startsection{section}{1}%
+ {\z@}{\abovesectionskip}{\belowsectionskip}%
+ {\sectionfont}}
+
+\def\subsection%%
+{\@startsection{subsection}{2}%
+ {\z@}{\abovesubsectionskip}{\belowsubsectionskip}%
+ {\subsectionfont}}
+
+\def\subsubsection%%
+{\@startsection{subsubsection}{3}%
+ {\z@}{\abovesubsubsectionskip}{\belowsubsubsectionskip}%
+ {\subsubsectionfont}}
+
+%% \chapter - redefine to ensure chapters begin on a recto
+%% page; use `awplain' for chapter pages; define the@chapter as the
+%% chapter
+
+\def\cleartoversopage{\clearpage \ifodd\c@page \hbox{} \newpage\fi}
+
+\def\chapter{%%
+ \cleardoublepage%%
+ \thispagestyle{plain}%%
+ \global\@topnum\z@
+ \@afterindentfalse%%
+ \secdef\@chapter%%
+ \@schapter}
+
+\def\chaptermark#1{\gdef\@chaptername{#1}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% CAPTIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% \mycaption{figure number}{subnumber}{caption}
+%%
+%% Mysteriously, this macro seems to use absolute figure numbers
+%% rather than relying on LaTeX to figure it out. Now, in 1991, I
+%% don't know why this is. It was probably part of the general
+%% book production scheme, which need to refer to figures by
+%% and not by number; I just don't know. It does, however, allow
+%% subnumbers (like 1.a, 1.b and 1.c).
+
+\def\mycaption#1#2#3{%
+ \setcounter{\@captype}{#1}
+ \addcontentsline{\csname
+ ext@\@captype\endcsname}{\@captype}{\protect\numberline{\csname
+ the\@captype\endcsname}{\ignorespaces #3}}
+ \par
+ \begingroup
+ \@parboxrestore
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{{\bf Figure \csname the\@captype\endcsname#2}
+ #3}
+ \ifdim \wd\@tempboxa > \hsize
+ \setbox\@tempboxa\hbox{%
+ \bf Figure \csname the\@captype\endcsname#2\ }%
+ \@tempdima \textwidth
+ \advance\@tempdima by -\wd\@tempboxa
+ \hbox{%
+ \box\@tempboxa
+ \vtop{\hsize \@tempdima #3}}
+ \else
+ \par \hbox to \hsize{%
+ \hfil\box\@tempboxa\hfil}
+ \fi
+ \endgroup}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% RIGHT-HAND INDENTED FIGURES
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newdimen\@txtwd
+\newdimen\@figwd
+\newdimen\rhfigindent
+\rhfigindent 1cm
+
+%% \rhfig{HEIGHT}{WIDTH}{FIGURE NUMBER}{SUBNUMBER}{CAPTION}
+
+\def\rhfig#1#2#3#4#5{%
+ \begin{figure}[htb]
+%%
+%% set up the figure counter and add stuff to the aux file
+%%
+ \setcounter{\@captype}{#3}
+ \addcontentsline{\csname
+ ext@\@captype\endcsname}{\@captype}{\protect\numberline{\csname
+ the\@captype\endcsname}{\ignorespaces #5}}
+%%
+%% now adjust \@txtwd to give the width of the caption
+%%
+ \@txtwd \textwidth
+ \@figwd #2
+ \advance \@txtwd by -\@figwd
+ \advance \@txtwd by -\rhfigindent
+ \setbox\@tempboxa\hbox{\bf Figure \csname the\@captype\endcsname#4\ }
+ \advance \@txtwd by -\wd\@tempboxa
+%%
+%% now set up a pair of hboxed vboxes with the caption in the right hand
+%% one and the figure (space) in the left.
+%%
+ \hbox to \textwidth{%
+ \hbox{\hskip \rhfigindent%
+ \vtop to #1{\vfill
+ \hbox{%
+ \box\@tempboxa
+ \vtop{\hsize\@txtwd #5}}
+ \vfill}}
+ \hfill
+ \hbox to \@figwd{
+ \vtop{\vskip #1}}}
+ \end{figure}}
+
+\newdimen\@figwd
+\newdimen\@txtwd
+\newdimen\@blah
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% CHAPTER HEADINGS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newdimen\chapterboxsize
+\newdimen\chapternumberwidth
+\newdimen\chaptertitlewidth
+
+%% set total depth of chapter heading to be 14 lines
+
+\chapterboxsize \baselineskip \multiply\chapterboxsize by 14
+
+\chapternumberwidth 4cm %% width for "Chapter <number>"
+\chaptertitlewidth \textwidth
+\advance \chaptertitlewidth by -\chapternumberwidth
+
+\def\chapterheadfont{\LARGE\hb}%
+\def\chapternumfont{\LARGE\ho}%
+
+\def\@makechapterhead#1{%
+ \vbox to \chapterboxsize {%
+ \parindent=0pt%
+ \hbox to \textwidth{%
+ \vtop{\hsize \chapternumberwidth \chapternumfont
+ \@chapapp{} \thechapter}
+ \hss
+ \vtop{\baselineskip=26pt \hsize \chaptertitlewidth
+ \chapterheadfont \raggedright #1}}
+ \vfill}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% BOXES (for buttons and such things)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% First a useful construct for putting `struts' into hboxes
+%% to fix their height properly for boxing up.
+%%
+
+\newbox\@adbox%% box with ascenders and descenders present.
+\def\@adstrut{%
+\setbox\@adbox\hbox{bp}%% do this here to make sure we get the current font
+\vrule height \ht\@adbox width 0pt depth \dp\@adbox}
+
+%% \fbox - a new version with better spacing than lamport's
+%%
+%% We just set up two boxes - one the same as the argument,
+%% and the other with its height adjusted to include ascenders and
+%% descenders. It is this box that is used to set the dimensions
+%% of the frame around the first (I hope).
+
+\long\def\fbox#1{\leavevmode\setbox\@tempboxa\hbox{#1\@adstrut}
+ \@tempdima 0pt \advance\@tempdima \fboxsep
+ \advance\@tempdima \dp\@tempboxa
+ \hbox{\lower \@tempdima\hbox
+ {\vbox{\hrule \@height \fboxrule
+ \hbox{\vrule \@width \fboxrule \hskip\fboxsep
+ \vbox{\vskip\fboxsep \box\@tempboxa\vskip\fboxsep}\hskip
+ \fboxsep\vrule \@width \fboxrule}
+ \hrule \@height \fboxrule}}}}
+
+%% STUFF TO START WITH
+
+\ps@headings
+\pagenumbering{arabic}
+\onecolumn
+
+\endinput
+
+From: pauld@cs.washington.edu (Paul Barton-Davis)
+Newsgroups: comp.text.tex
+Subject: Addison-Wesley.sty (documentstyle provided)
+Message-ID: <1991Aug23.200912.1556@beaver.cs.washington.edu>
+Date: 23 Aug 91 20:09:12 GMT
+Sender: news@beaver.cs.washington.edu (USENET News System)
+Organization: Computer Science & Engineering, U. of Washington, Seattle
+Lines: 790
+Originator: pauld@stowe.cs.washington.edu
+
+Below is a documentstyle I wrote for a book called "The X Window
+System - A User's Guide" by Niall Mansfield, published in 1989 by
+Addison-Wesley. As such, it is a style that closely (but not exactly)
+matches A-W's house style for computer-related texts. This is the very
+same file used to format the book, and it was written for this purpose
+only. I have just gone through and added a few comments here and there
+to help anyone else who might want to use it. I haven't used it in a
+long time, and neither has Niall: we're both at work on a new style
+called "STOP", based on the Hughes "STOP" format for user
+documentation. I hope to be posting that within a month or so, but I
+might wait until the new book that uses it is with A-W. If you have
+problems with it, please send me mail. Note that it currently inputs
+two files that set up PostScript Times Roman as the default font
+family. These are not included, since I have posted them before.
+
+Please remember that I know LaTeX a little better now than back then
+(and still not well enough to hack floating indented figures). There
+are several things in the style that I would change if I wrote it
+again; I merely thought that some folks might like a chance to use a
+"real book" documentstyle.
+
+-- enjoy
+ paul
+--
diff --git a/macros/latex209/contrib/misc/ailetter.tex b/macros/latex209/contrib/misc/ailetter.tex
new file mode 100644
index 0000000000..95770970b1
--- /dev/null
+++ b/macros/latex209/contrib/misc/ailetter.tex
@@ -0,0 +1,43 @@
+% This can be used to print letters on AI Lab letterhead on those printers
+% which have them in the third tray. It will also put the extension number
+% in the appropriate place at the bottom of the page; due to feeding
+% variability in the printer, this may sometimes be off. Second and
+% subsequent pages are printed on standard paper; copy to blank bonded
+% paper if you so desire.
+
+% Extension numbers are defined with other personal parameters by the
+% declaration
+%
+% \extension{xxxx}
+%
+% Send bug messages to Yishai@OZ.
+
+\makeatletter
+\let\@origshipout=\shipout
+\def\@testvbox{\vbox}
+\def\@aishipout#1#2{%
+ \def\@foo{#1}
+ \ifx\@foo\@testvbox
+ \@origshipout\vbox to 9.19in{\vskip\@origvoffset
+ \moveright\@orighoffset#1{#2}%
+ \vss
+ \hbox{\hskip 4.9in\ninrm\@extension}}
+ \else\errmessage{Bug in \string\ailetterhead!}
+ \@origshipout#1#2\fi
+ \special{tray 1}%
+ \voffset=\@origvoffset
+ \hoffset=\@orighoffset
+ \global\let\shipout=\@origshipout}
+
+\def\ailetterhead{%
+ \special{tray 3}
+ \xdef\@origvoffset{\the\voffset}
+ \xdef\@orighoffset{\the\hoffset}
+ \hoffset=0pt
+ \voffset=0pt
+ \let\shipout=\@aishipout}
+
+\def\@extension{}
+\def\extension#1{\def\@extension{#1}}
+\makeatother
+
diff --git a/macros/latex209/contrib/misc/aimemo.sty b/macros/latex209/contrib/misc/aimemo.sty
new file mode 100644
index 0000000000..b165645cab
--- /dev/null
+++ b/macros/latex209/contrib/misc/aimemo.sty
@@ -0,0 +1,71 @@
+% Use the full page
+%
+\oddsidemargin 18pt
+\evensidemargin 18pt
+\topmargin 0pt
+\textheight 595pt
+\textwidth 432pt
+
+% Topheading supplies left and right flushed headings for the
+% lrheading command.
+%
+\def\topheadings#1#2{\def\@toplefthead{#1}\def\@toprighthead{#2}}
+
+% Page style: lrheadings
+% put text suplied by the topheadings command in the left and
+% right corners of the topheading.
+%
+\def\ps@lrheadings{%
+\def\@oddhead{\hbox{}\sl\@toplefthead\hfil\sl\@toprighthead}%
+\def\@evenhead{\sl\@toplefthead\hfil\sl\@toprighthead\hbox{}}%
+\def\@oddfoot{\hbox{}\hfil\rm\thepage\hfil}%
+\def\@evenfoot{\hbox{}\hfil\rm\thepage\hfil}}
+
+% Page style: footpagenumber
+% put nothing in header and center the page number in the footer.
+%
+\def\ps@footpagenumber{%
+\def\@oddhead{}\def\@evenhead{}%
+\def\@oddfoot{\hbox{}\hfil\rm\thepage\hfil}%
+\def\@evenfoot{\hbox{}\hfil\rm\thepage\hfil}}
+
+% \skipline leaves a blank line realitive to the size of the current
+% font.
+%
+\def\skipline{\vskip 2em}
+
+% stuff to change the format of figures
+%
+\def\@float#1{\@ifnextchar[{\@xfloat{#1}}{\edef\@tempa{\noexpand\@xfloat
+ {#1}[\csname fps@#1\endcsname]}\@tempa}}
+
+\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
+ \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
+ \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
+ \@tfor \@tempa :=#2\do
+ {\if\@tempa h\advance\@tempcnta \@ne\fi
+ \if\@tempa t\advance\@tempcnta \tw@\fi
+ \if\@tempa b\advance\@tempcnta 4\relax\fi
+ \if\@tempa p\advance\@tempcnta 8\relax\fi
+ }\global\count\@currbox\@tempcnta}\@fltovf\fi
+ \global\setbox\@currbox\vbox\bgroup
+ \boxmaxdepth\z@
+ \hsize\columnwidth \@parboxrestore}
+
+\def\end@float{\egroup
+ \ifnum\@floatpenalty <\z@
+ \@cons\@currlist\@currbox
+ \ifdim \ht\@currbox >\textheight
+ \ht\@currbox\textheight \fi
+ \global\@outputdonefalse
+ \ifnum\@floatpenalty < -\@Mii
+ \penalty\@floatpenalty
+ \if@outputdone\else\global\@outputdonetrue
+ \vbox{}\penalty\@floatpenalty\fi
+ \else \vadjust{\penalty \@floatpenalty}\@esphack\fi\fi}
+
+\def\@dblfloat#1{\if@twocolumn\else\@latexerr{Two-column float
+on one-column page}\@ehd\fi
+\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tp]}}
diff --git a/macros/latex209/contrib/misc/alleqno.sty b/macros/latex209/contrib/misc/alleqno.sty
new file mode 100644
index 0000000000..5ebce6ad95
--- /dev/null
+++ b/macros/latex209/contrib/misc/alleqno.sty
@@ -0,0 +1,49 @@
+% alleqno.sty -- LaTeX style file to make displayed equations numbered
+% by default.
+%
+% This document style option makes all displayed equations numbered by
+% default. In particular, it defines things so that \[, \], \[[, and
+% \]] may be used as follows:
+%
+% \[ ... \] ==> \begin{equation} ... \end{equation}
+% \[[ ... \]] ==> \begin{eqnarray} ... \end{eqnarray}
+%
+% These new commands are short, and they stand out clearly from the
+% surrounding text on a terminal screen.
+%
+% Note that \begin{displaymath} ... \end{displaymath} should *not* be
+% used with this style file -- use \[ ... \] instead. To override the
+% default and get an unnumbered displayed equation, use a one-line
+% \begin{eqnarray} ... \end{eqnarray}.
+%
+% - Jonathan Thornburg, 25/Sept/88
+%
+% Dept of Geophysics & Astronomy thornburg@mtsg.ubc.ca
+% The University of British Columbia userbkis@ubcmtsg.bitnet
+% Vancouver BC V6T 1W5 userbkis%ubc@um.cc.umich.edu
+% Canada ubc-vision!ubcmtsg.bitnet!thornburg
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Thanks to Donald Arseneau for help with the following macro.
+\def\mygobbletoken{\let\myjunktoken= }%%%
+%
+\def\[{\futurelet\mydisplayselect\mydisplay}%%%
+\def\mydisplay{%%%
+ \if\mydisplayselect[%%%
+ \begin{eqnarray}\let\mynextcommand=\mygobbletoken%%%
+ \else%%%
+ \begin{equation}\let\mynextcommand=\relax%%%
+ \fi%%%
+ \mynextcommand
+}%%%
+%
+\def\]{\futurelet\mydisplayselect\myenddisplay}%%%
+\def\myenddisplay{%%%
+ \if\mydisplayselect]%%%
+ \end{eqnarray}\let\mynextcommand=\mygobbletoken%%%
+ \else%%%
+ \end{equation}\let\mynextcommand=\relax%%%
+ \fi%%%
+ \mynextcommand
+}%%%
diff --git a/macros/latex209/contrib/misc/alltt2.sty b/macros/latex209/contrib/misc/alltt2.sty
new file mode 100644
index 0000000000..6c5988553b
--- /dev/null
+++ b/macros/latex209/contrib/misc/alltt2.sty
@@ -0,0 +1,47 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Mario Wolczko",
+%%% version = "2",
+%%% date = "21 May 1992",
+%%% time = "20:53:23 BST",
+%%% filename = "alltt2.sty",
+%%% address = "Dept of Computer Science
+%%% The University of Manchester
+%%% Oxford Road
+%%% Manchester M13 9PL
+%%% UK",
+%%% telephone = "+44-61-275-6146",
+%%% FAX = "+44-61-275-6236",
+%%% checksum = "29088 47 178 1848",
+%%% email = "mario@cs.man.ac.uk (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, verbatim",
+%%% supported = "no",
+%%% docstring = "Modification of the alltt style to indent
+%%% alltt environments by \allttindent parameter",
+%%% }
+%%% ====================================================================
+
+% ALLTT2 DOCUMENT-STYLE OPTION - modified from alltt of 17 December 1987
+% for LaTeX version 2.09
+% Copyright (C) 1987 by Leslie Lamport
+
+% same as alltt (q.v.), but has a parameter length (\allttindent) that
+% controls how much an allt environment is indented wrt it's context.
+
+\newdimen\allttindent \allttindent=0pt % set this to change the indent
+
+\def\docspecials{\do\ \do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
+
+\def\alltt{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
+\leftskip\@totalleftmargin \advance\leftskip\allttindent \rightskip\z@
+\parindent\z@\parfillskip\@flushglue\parskip\z@
+\@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par}
+\obeylines \tt \catcode``=13 \@noligs
+\let\do\@makeother \docspecials
+ \frenchspacing\@vobeyspaces}
+
+\let\endalltt=\endtrivlist
+
+
diff --git a/macros/latex209/contrib/misc/altnline.sty b/macros/latex209/contrib/misc/altnline.sty
new file mode 100644
index 0000000000..7ca6e6f281
--- /dev/null
+++ b/macros/latex209/contrib/misc/altnline.sty
@@ -0,0 +1,189 @@
+% altnline.sty Version - 1.1
+%
+% Disclaimer - Use at your own risk.
+%
+% James Fortune
+% Oakland University
+% jafortun@vela.acs.oakland.edu
+%
+% Based upon the TUGboat article ``Output Routines: Examples and Techniques.''
+% that appeared in Volume 11 (1990), Nos. 1, 3 and 4.
+%
+% This version incorporates suggestions made by Michal Jaegermann, namely:
+%
+% * Include explicit reference to the TUGboat article
+% * ``You can use \def in style files without violating LaTeX spirit.
+% If you are writing style it is assumed that you know what you are
+% doing. :-)'' --- I don't know what I'm doing so I left the \newcommand
+% and \renewcommand commands as is.
+% * Internal macros from style file should be protected against name conflicts
+% with user stuff by inclusion of '@' character in names. --- This is quite
+% reasonable so command names that the user is not expected to use in a
+% LaTeX file have been changed to include the '@' character.
+% * He sent a new appendline command that adds numbers on a left margin
+% only that was also inspired by the Salomon article. He left it as an
+% exercise for me to modify it for two-sided printing. I probably shouldn't
+% have picked something from the double dangerous bend signs for my first
+% serious attempt at hacking on a style file :-).
+% * A global linesSoFar so that lineCount may be set to linesSoFar to deal
+% with box255 being broken from the bottom up. countlines (or its
+% equivalent) advances linesSoFar by a count of lines on a current page.
+% * Use of a decremented remainder variable to determine when to add a number
+% to a line. --- I'm trying to get all the lines first.
+% * He advised not trying to combine the countlines and duplicate operations
+% into a single loop. ``I am afraid that you really have to first count
+% how many lines you have on a page and later use this value to produce
+% line numbers.''
+%
+% Changes to version 1.1 - Michal Jaegermann, ntomczak@vega.math.ualberta.ca
+%
+% * Added logic to print line numbers only every \lineCountInterval
+% * Added a way to set up ONE range of numbered lines; use \nlinesBoundary
+% to do that. (It is possible to sprinkle your text with \nlinesBoundary
+% commands and they may even do the right thing if you will put them
+% in right places - but this is a hack.)
+% * Miscellaneous cleanup
+% * Every implicit or explicit \clearpage will still cause
+% 'Output routine didn't use all of \box255' message. Any volunteers
+% who know enough about LaTeX output routine to repair that?
+%
+
+% \font\sevenrm=cmr7
+
+% Rainer showed me how to save the previous \output. Thanks Rainer.
+\newtoks\LaTeX@output
+\LaTeX@output = \expandafter{\the\output}
+
+\newcommand\zero@ToSp{\parskip=\@ne sp plus\@ne pt
+ \renewcommand\vfil{\vskip1sp plus1fil}
+ \renewcommand\vfill{\vskip1sp plus1fill}
+ \abovedisplayshortskip=\@ne sp plus3pt
+ \postdisplaypenalty=\@ne
+ \interlinepenalty=\@ne}
+
+\zero@ToSp
+
+
+\newcount\lin@CountInit % used to establish lineCount of first line on page
+\lin@CountInit=\z@
+\newcount\lineCountInterval % used to determine how often lin@Count is printed
+\lineCountInterval=5
+%
+\newcount\lin@CountStart % don't print line numbers below this value
+\lin@CountStart=\@ne
+\newcount\lin@CountFinish % don't print line numbers higher than this
+\lin@CountFinish=\m@ne
+%
+% A command to set boundaries for line numbering. Use as:
+% \nlinesBoundary{12}, or \nlinesBoundary[50]{12}
+% \nlinesBoundary[<optional upper limit>]<lower limit>
+% Any negative number for an upper limit means number to the very end.
+% This is a default!
+%
+\def\nlinesBoundary{\@ifnextchar[{\nlin@sBoundary}{\nlin@sBoundary[\m@ne]}}
+\edef\nlin@sBoundary[#1]#2{%
+ \global\lin@CountFinish=#1\relax
+ \global\lin@CountStart=#2\relax}
+
+\newif\ifa@@lnum % do we really want to print that line number?
+
+\newcount\lin@sSoFar
+% remainder from division of \lin@sSoFar by \lineCountInterval
+\newcount\total@Rem
+% current value of remainder used to produce line numbers
+\newcount\lin@rem
+% these calculations allow to start with \lin@CountInit different from 0
+\newcommand\resetlin@sSoFar{%
+ \global\lin@sSoFar=\lin@CountInit
+ \total@Rem=\lin@CountInit
+ \divide\total@Rem by\lineCountInterval
+ \multiply\total@Rem by-\lineCountInterval
+ \global\advance\total@Rem by\lin@CountInit}
+
+\resetlin@sSoFar
+
+\newcount\lin@Count
+\newif\ifAnyleft \newcount\pen
+\newcommand\count@lines{%
+ \global\lin@Count=\lin@sSoFar
+ \loop \Anyleftfalse
+ \ifdim\lastskip=\z@ \ifdim\lastkern=\z@ \ifnum\lastpenalty=\z@
+ \setbox0=\lastbox
+ \ifvoid0
+ \else \Anylefttrue \global\advance\lin@Count by\@ne
+ \global\advance\total@Rem by\@ne
+ \ifnum\total@Rem=\lineCountInterval
+ \global\total@Rem=\z@
+ \fi\fi
+ \else \Anylefttrue \unpenalty \fi
+ \else \Anylefttrue \unkern \fi
+ \else \Anylefttrue \unskip \fi
+ \ifAnyleft \repeat}
+
+\newcommand\@duplicate{%
+ \loop \Anyleftfalse
+ \ifdim\lastskip=\z@ \ifdim\lastkern=\z@ \ifnum\lastpenalty=\z@
+ \global\setbox0=\lastbox \ifvoid0 % end of breakup loop
+ \else \Anylefttrue % box present
+ \ifnum\lin@rem=0 % if remainder non-zero we do not care
+ \lin@rem=\lineCountInterval
+ \ifnum\lin@Count<\lin@CountStart
+ \a@@lnumfalse
+ \else
+ \ifnum\lin@CountFinish<0 % no upper bound
+ \a@@lnumtrue % print it
+ \else
+ \ifnum\lin@Count>\lin@CountFinish
+ \a@@lnumfalse
+ \else
+ \a@@lnumtrue % this is the ticket
+ \fi
+ \fi
+ \fi
+ \else
+ \a@@lnumfalse
+ \fi
+ \ifa@@lnum
+ \append@line
+ \else
+ \global\setbox1=\vbox{\box0\unvbox1}
+ \fi
+ \advance\lin@Count\m@ne
+ \advance\lin@rem by\m@ne\fi
+ \else \Anylefttrue % penalty present
+ \pen=\lastpenalty
+ \global\setbox1=\vbox{\penalty\pen\unvbox1}\unpenalty\fi
+ \else \Anylefttrue % kern present
+ \dimen0=\lastkern
+ \global\setbox1=\vbox{\kern\dimen0\unvbox1}\unkern \fi
+ \else \Anylefttrue % skip present
+ \skip0=\lastskip
+ \global\setbox1=\vbox{\vskip\skip0\unvbox1}\unskip \fi
+ \ifAnyleft \repeat}
+
+\newcommand\append@line{% attach line number
+ \setbox2=\vbox to \z@{\smash{\footnotesize\the\lin@Count}}
+ \wd2=25pt % that much of space for a line number
+ \ifodd\count0 % on the right margin for odd pages
+ \setbox0=\hbox{\box0\rlap{\rule{\wd2}{\z@}\box2}}
+ \else % and on the left for even
+ \setbox0=\hbox{\llap{\box2}\box0}
+ \fi
+ \global\setbox1=\vbox{\box0\unvbox1}} % add this to a reconstructed page
+
+\newbox\brk % Use old output definition if page is not to be output
+\output={\ifnum\outputpenalty <-\@M
+ \output={\LaTeX@output}
+\else
+ \lin@Count=\lin@sSoFar
+ \setbox\brk=\vbox{\unvcopy\@cclv\count@lines}
+ \global\setbox1=\vbox{}
+ \lin@rem=\total@Rem
+ \global\lin@sSoFar=\lin@Count
+ \setbox\brk=\vbox{\unvcopy\@cclv\@duplicate}
+ \ifdim\ht\brk>\z@\message{Incomplete breakup}\fi
+ \ht1=\z@\dp1=\z@
+ \global\setbox\@cclv=\vbox to\vsize{\unvbox1}% attempt to get glues back
+ \@makecol\@opcol
+\fi}
+\endinput
diff --git a/macros/latex209/contrib/misc/annotation.sty b/macros/latex209/contrib/misc/annotation.sty
new file mode 100644
index 0000000000..7758cbbb26
--- /dev/null
+++ b/macros/latex209/contrib/misc/annotation.sty
@@ -0,0 +1,62 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% File "annotation.sty" (by Tom Hofmann, E-mail: wtho@cgch.UUCP)
+% 1989-10-30
+%
+% This File contains the definition of a LaTeX environment "annotation"
+% which allows to alternatively print or suppress parts of the document.
+%
+%
+% Usage:
+%
+% - Declare "annotation" as documentstyle option or include this file
+% by "\input{annotation.sty}"
+% - Embed annotations in "\begin{annotation}" and "\end{annotation}"
+% - To print the document including the annotations write "\printnotes"
+% before the first annotation. Alternatively, write "\suppressnotes"
+% to print without annotations.
+% - The default setting is "\printnotes".
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% (1) Definition of the environment "annotation" when notes are
+% to be printed.
+
+\def\printnotes{\def\annotation{}} % "\endannotation" can be missing
+
+% (2) Definition of the environment "annotation" when notes are not
+% to be printed.
+
+% Make '{' and '}' "other characters" and make '(' and ')'
+% "begingroup" and "endgroup" resp. Thus make it possible
+% to have "\end{annotation}" as part of a macro definition.
+
+\begingroup\makeatletter % since the catcodes of '{' and '}'
+\catcode`{=12\relax\catcode`}=12\relax % will change, use \begingroup and
+\catcode`(=1\relax \catcode`)=2\relax % \endgroup instead.
+
+\gdef\suppressnotes(%
+
+% Make '{' and '}' searchable when expanding the macro by giving them
+% the same catcode in the subsequent text as in the macro definition.
+
+ \gdef\annotation(\catcode`{=12\relax\catcode`}=12\relax\@NOTE)
+
+% Skip text between "\begin{annotaion}" and "\end{annotation}"
+% (inclusive), but return an "\end{annotation}" command to LaTeX for
+% the correct environment handling (see below).
+
+ \long\gdef\@NOTE##1\end{annotation}(\@ENDNOTE))
+
+
+\endgroup % End of the enchantment.
+
+% Generate an environment-end command conformable to LaTeX.
+
+{\makeatletter\gdef\@ENDNOTE{\end{annotation}}}
+
+\printnotes % This is the default setting.
+
+%%%%%%%% END OF FILE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
diff --git a/macros/latex209/contrib/misc/answers.sty b/macros/latex209/contrib/misc/answers.sty
new file mode 100644
index 0000000000..e1e253b570
--- /dev/null
+++ b/macros/latex209/contrib/misc/answers.sty
@@ -0,0 +1,155 @@
+
+%% This is ANSWERS.STY
+%% Copyright (C) 1992 by Mike Piff.
+%% All rights reserved.
+%% Copying of this file is authorized only if
+%% you make absolutely no changes to your copy.
+%%
+%%
+%%Name: ANSWERS.STY
+%%Description: A style option to LaTeX that allows answers to problems to
+%% be included adjacent to the problems in the source file.
+%% The answers are written out to a subsidiary file, ready to
+%% be included later in the document.
+%% An example is appended to the end of the style file.
+%%Keywords: answers,solutions,problems,exercises
+%%Author: "Mike Piff" <M.Piff@sheffield.ac.uk>
+%%Latest version: 10/27/92 02:43pm
+%%Supported: Yes
+
+
+
+%% Usage
+%% \documentstyle[answers]{article} %% in LaTeX
+
+
+
+\let\@@it=\it %% save meaning of \it
+\def\RestoreIt{\global\let\it\@@it}
+\def\Noit{\global\let\it\RestoreIt} %%let \it revert to old meaning
+%% this is useful in, for instance,
+%% \newtheorem{exercise}{Exercise\Noit}
+%% \newtheorem{Solution}{Solution\Noit}
+%% which gives an upright rather than italic style
+
+\newwrite\@ns
+
+{\catcode`\<=1 \catcode`\>=2 \catcode`\{=12 \catcode`\}=12
+ \gdef\LBRACE<{>\gdef\RBRACE<}>
+ \catcode`\|=0 |catcode`|\=12 |gdef|END<\end>>
+
+%% This defines the conventions
+%% #1 = \Solution, say
+%% #2 = environment name to use in solution file
+%% #3 = environment terminating solution in problems file
+%% The line that ends the solution must consist only of \end{#3},
+%% with no leading spaces.
+\def\SolutionMarker#1#2#3{%
+ \let#1=\ExSolution
+ \def\solutionmark{#2}%
+ \def\exercisemark{#3}%
+ \edef\DefineEnd{\gdef\noexpand\@ndexercise{\END\LBRACE#3\RBRACE}}%
+ \DefineEnd
+}
+\newif\ifhint
+\def\HintMarker#1{\def#1{\global\hinttrue\ExSolution}}
+
+\def\newsolution#1#2{%
+ \expandafter\def\csname#1\endcsname##1##2{%
+ \trivlist\item[\hskip\itemsep{\bf#2 ##1%
+ \def\temp{##2}%
+ \ifx\temp\empty\else\ (##2)\fi}]}%
+ \expandafter\def\csname end#1\endcsname{\endtrivlist}%
+}
+
+%%Write directly to solution file
+\def\Write#1{{\let\protect\string \immediate\write\@ns{#1}}}
+
+\outer\def\Opensolutionfile#1{% #1=filename
+ \immediate\openout\@ns=#1
+ \Write{\string\BeginSolutions}%
+ \OpenHook
+}
+
+\def\Closesolutionfile{%
+ \Write{\string\EndSolutions}%
+ \immediate\closeout\@ns
+ \CloseHook
+}
+%%Note that \OpenHook and \CloseHook may be redefined to take parameters, in
+%%which case, say
+%%\OpenSolutionFile{FileName}{Param1}{Param2}...
+%%\OpenHook might also write parameters to \BeginSolutions to the \@ns file
+
+%%This is similar to The TeXbook. However, a solution is allowed to contain
+%%blank lines here.
+\def\PreSolutionSpacer{\Write{}}
+\def\ExSolution{\PreSolutionSpacer
+ \Write{\string\begin{\solutionmark}%
+ {\csname the\exercisemark\endcsname}{\ifhint Hint\fi}}%
+ \global\hintfalse
+ \c@pytoendEx}
+\def\c@pytoendEx{\begingroup\s@tupcopy\c@pyans}
+\def\s@tupcopy{\def\do##1{\catcode`##1=12}\dospecials%
+ \catcode`\|=12 \makeatother\obeylines\let\n@xt\empty}
+
+\def\@Ndgroup{\endgroup\expandafter\end\expandafter{\exercisemark}%
+ \PostSolutionSpacer}
+\def\PostSolutionSpacer{}
+
+{\obeylines \gdef\c@pyans#1
+ {\def\n@xt{#1}%
+ \ifx\n@xt\@ndexercise\Write{\string\end{\solutionmark}}\let\n@xt=\@Ndgroup%
+ \else\Write{\n@xt}\let\n@xt=\c@pyans\fi\n@xt}}
+
+%% Default values
+\def\OpenHook{}
+\def\CloseHook{}
+\def\BeginSolutions{}
+\def\EndSolutions{}
+\SolutionMarker\Solution{solution}{exercise}
+
+\endinput
+
+
+
+
+%% Example of usage
+\documentstyle[12pt,answers]{article}
+
+\newtheorem{exercise}{Exercise\Noit}[section]
+\newsolution{solution}{Solution}
+
+\SolutionMarker\Solution{solution}{exercise}
+\HintMarker\Hint
+
+%%\renewcommand{\OpenHook}[1]{\Write{\protect\section{#1}}}
+\renewcommand{\OpenHook}{\Write{\protect\section*{Solutions to Section \thesection}}}
+\renewcommand{\CloseHook}{}
+
+\renewcommand{\BeginSolutions}{\clearpage\small}
+\renewcommand{\EndSolutions}{\clearpage\normalsize}
+
+\begin{document}
+\section{Problems}
+\Opensolutionfile{testsol}%%{Solutions}
+\begin{exercise}
+ Question
+\Solution Answer
+\end{exercise}
+\begin{exercise}
+ Another Question
+\Hint A Hint
+\end{exercise}
+\Closesolutionfile
+\input{testsol}
+\end{document}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Dr M J Piff %% e-mail:
+%% Department of Pure Mathematics %%
+%% University of Sheffield %% M.Piff@sheffield.ac.uk
+%% Hicks Building %%
+%% Hounsfield Road %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% SHEFFIELD S3 7RH %% Telephone: SHEFFIELD (0742) 768555
+%% England %% Ext. 4431
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex209/contrib/misc/apalike-plus.readme b/macros/latex209/contrib/misc/apalike-plus.readme
new file mode 100644
index 0000000000..2c5ff00ac5
--- /dev/null
+++ b/macros/latex209/contrib/misc/apalike-plus.readme
@@ -0,0 +1,18 @@
+apalike-plus.sty - This is for people who want something like apalike.sty
+ (perhaps because they are using apalike.bst), but who
+ want the extra features described below.
+
+With this style-option:
+- the default title is "References", but can be changed by putting a
+ \renewcommand{\bibtitle}{...} command before \begin{thebibliography}
+- if the document style is such that \pagestyle{headings} is used,
+ "REFERENCES" goes in the page-heading by default, but can be changed
+ with \renewcommand{\bibheadtitle}{...}
+- thebibliography gives an \addcontentsline command, so that \tableofcontents
+ puts the bibliography (with appropriate title) in the table of contents.
+
+authordate1-4.sty - This is for people who are using one of the BibTeX
+ author-date style files authordate1.bst, ... ,
+ authordate4.bst. It redefines \cite and thebibliography,
+ and also defines a \shortcite command such that if \cite
+ gives "(Smith, 1970)", \shortcite gives "(1970)".
diff --git a/macros/latex209/contrib/misc/apalike-plus.sty b/macros/latex209/contrib/misc/apalike-plus.sty
new file mode 100644
index 0000000000..2405fd2ce6
--- /dev/null
+++ b/macros/latex209/contrib/misc/apalike-plus.sty
@@ -0,0 +1,68 @@
+% This style-option file, apalike-plus.sty, is based on apalike.sty.
+% As such, it can be used to redefine \cite and thebibliography for:
+% - production of do-it-yourself author-date bibliographies
+% - use with BibTeX, with \bibliographystyle{apalike}.
+%
+% It differs from apalike.sty in that:
+% - a command \bibtitle is defined, to generate the bibliography title
+% - a command \bibheadtitle is defined, to generate the text to be used
+% by \pagestyle{headings}
+% - \bibtitle and \bibheadtitle are set to generate "References" and
+% "REFERENCES" respectively.
+% - an \addcontentsline{toc}{...}{\bibtitle} command is issued.
+% Thus:
+% - the default bibliography title is "References", but can be changed by
+% having \renewcommand{\bibtitle}{...} before \begin{thebibliography}
+% or \bibliography
+% - the default page header text is "REFERENCES", but can be changed by
+% \renewcommand{\bibheadtitle}{...}
+% - \tableofcontents will give a table of contents that mentions the
+% bibliography.
+%
+% David Rhead
+% Cripps Computing Centre
+% Nottingham University
+% February 1990
+
+% Use parens instead of brackets for \cite, and no label in the bibliography
+%
+\def\@cite#1#2{(#1\if@tempswa , #2\fi)}
+\def\@biblabel#1{}
+
+% Set length of hanging indentation for bibliography entries
+%
+\newlength{\bibhang}
+\setlength{\bibhang}{2em}
+
+% Define default title and page-head text.
+%
+\def\bibtitle{References}
+\def\bibheadtitle{REFERENCES}
+
+\@ifundefined{chapter}{\def\thebibliography#1{\section*{\bibtitle\@mkboth
+ {\bibheadtitle}{\bibheadtitle}}
+ \addcontentsline{toc}{section}{\bibtitle}\list
+ {\relax}{\setlength{\labelsep}{0em}
+ \setlength{\itemindent}{-\bibhang}
+ \setlength{\leftmargin}{\bibhang}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}}%
+{\def\thebibliography#1{\chapter*{\bibtitle\@mkboth
+ {\bibheadtitle}{\bibheadtitle}}
+ \addcontentsline{toc}{chapter}{\bibtitle}\list
+ {\relax}{\setlength{\labelsep}{0em}
+ \setlength{\itemindent}{-\bibhang}
+ \setlength{\leftmargin}{\bibhang}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}}
+
+% `; ' goes between cites, and there's no \hbox around individual cites
+%
+\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}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}
diff --git a/macros/latex209/contrib/misc/apeqnum.sty b/macros/latex209/contrib/misc/apeqnum.sty
new file mode 100644
index 0000000000..12ed2cf20d
--- /dev/null
+++ b/macros/latex209/contrib/misc/apeqnum.sty
@@ -0,0 +1,21 @@
+% This is apeqnum.sty
+% 8-November-1990
+% Don Hosek
+% Style option for article.sty and derivatives; causes equations
+% to be numbered A1, A2, A3, B1, etc. in a document.
+
+% First save a copy of the old meaning of \appendix
+\let\apeqnum@appendix=\appendix
+
+% Now, we will redefine \appendix so that it does the following:
+% (1) The old functions of \appendix (\apeqnum@appendix)
+% (2) Causes equations to be numbered beginning from one at
+% the beginning of each appendix (this is accomplished
+% for the article style with the command
+% \@addtoreset{equation}{section})
+% (3) Change the definition of \theequation (which prints the
+% equation numbers) so that the appendix letter is prepended.
+\def\appendix{%
+ \apeqnum@appendix % (1)
+ \@addtoreset{equation}{section} % (2)
+ \def\theequation{\thesection\arabic{equation}}} % (3)
diff --git a/macros/latex209/contrib/misc/apguide.tex b/macros/latex209/contrib/misc/apguide.tex
new file mode 100644
index 0000000000..30be4ac53e
--- /dev/null
+++ b/macros/latex209/contrib/misc/apguide.tex
@@ -0,0 +1,1484 @@
+% Save file as: APGUIDE.TEX Source: FILESERV@SHSU.BITNET
+% This is the file APGUIDE.TEX
+% from version 2.0 of the REVTEX macro package.
+%
+% This file is part of a compuscript toolbox distributed by
+% the American Physical Society in conjunction with
+% the TeX author-prepared program.
+%
+% All rights not specifically granted are reserved,
+% American Physical Society, 1991.
+%
+% Permission is granted to make and distribute verbatim
+% copies of the complete toolbox provided that the README file
+% and copyright notices are preserved on all copies.
+% Permission is granted to use the style files provided that
+% neither the content of the style files nor their names are changed.
+% APS macros may be used and distributed provided each use is
+% accompanied by an appropriate acknowledgment.
+%
+% For more information, see the README file.
+%
+\documentstyle[revtex]{aps}
+\begin{document}
+\def\SNG{{\em Physical Review Style and Notation Guide}}
+\def\UG {{\em \LaTeX\ User's Guide \& Reference Manual}}
+\def\btt#1{{\tt$\backslash$\string#1}}%
+\begin{title}
+Input Guide for \TeX\ Author-Prepared Compuscripts
+\end{title}
+\vskip .5in
+\narrowtext
+
+\section{INTRODUCTION}
+\label{sec:intro}
+
+In 1987, the Council of The American Physical Society authorized
+acceptance of \TeX -formatted author-prepared compuscripts to be
+submitted to the {\em Physical~Review A, B, C,} and {\em D\/}
+in machine-readable
+form. It
+is essential that author-prepared input be consistent and
+standardized so that the compuscripts can become part of the normal
+production procedures. It is only by routinely handling
+author-prepared files that this
+method of production will be economically feasible.
+
+
+This input guide contains basic instructions for keyboarding
+compuscripts using the {\em REVTEX\/} macro package, which works
+in a \LaTeX\ environment.
+This guide is part of the ``\TeX\ compuscript toolbox'';
+other items in the toolbox are the
+{\em REVTEX\/} macro package (several style files), test files,
+a README file (which contains details regarding installation and
+copying of the style files), and hard copy
+of the {\em Physical Review Style and Notation Guide}.
+For correct notation and style practices, authors should read the
+{\em Physical Review Style and Notation Guide}, furnished with
+the toolbox;
+authors also should be guided
+by recent issues of {\em Physical~Review.}
+
+%You may wish to supplement this input guide with
+%the excellent documentation available for \LaTeX : namely,
+%the {\em User's Guide \& Reference Manual}.
+%It is important that this input guide be followed
+%whenever possible.
+
+Compuscripts
+that do not comply closely with these instructions will be
+returned to the author for changes.
+
+{\bf Contents of this Guide.}
+In Sec.\ \ref{sec:gensubmit} we describe procedures for
+making an original submission (review purposes) to the Editorial
+Offices. Sections\ \ref{sec:conmailsub} and \ref{sec:e-mail} detail
+procedures for conventional mail and electronic mail submissions,
+respectively.
+
+Section \ref{sec:process} briefly describes author proofs.
+
+Section \ref{sec:filesubmit} discusses the specifications
+for file submittal (floppy, tape, electronic mail).
+
+In Sec.\ \ref{sec:instruct} we describe in detail
+several aspects of compuscript creation:
+the input of front matter and how to switch from
+galley to preprint format;
+paragraph formatting, hyphenation, quotes, and textwidth issues;
+section headings;
+basic input for in-text math and displayed equations; special
+character issues; footnotes and references; figure captions;
+and tables.
+
+In Sec.\ \ref{sec:xrefs} we have described the various
+autonumbering features of {\em REVTEX}; these features
+can be used to autonumber equations, figures, tables,
+references, and section heads.
+
+Finally, Sec.\ \ref{sec:samples}
+contains two sample compuscripts, input and output,
+preprint format and galley format. These two samples
+(one brief and
+descriptive, and another an actual published
+{\em Physical Review\/} manuscript)
+illustrate many {\em REVTEX} and \LaTeX\ features that
+are necessary to create a compuscript.
+
+Appendix \ref{sec:commands} is a handy list of some
+necessary commands that will be found in a {\em REVTEX}
+compuscript. This command list supplements the \LaTeX\ {\em User's
+Guide and Reference Manual}.
+
+Appendix \ref{sec:upgrade} itemizes the differences
+between v1 and v2 of {\em REVTEX}, for current users of
+v1.
+
+Authors who have not ever participated in the author-prepared
+program may wish to read Appendix \ref{sec:fastfacts}
+and Appendix \ref{sec:macros}
+at this point.
+There we give a brief
+overview of the author-prepared program and answer some
+frequently asked author questions.
+
+Appendix \ref{sec:contacts} lists the people and places
+to contact if you have questions about any services
+described herein. To obtain the most proper and expedient
+answer to your question, please consult Appendix E before calling
+or e-mailing the APS.
+
+{\bf Note on participating journals}.
+The compuscript program is open to all {\em Physical
+Review A, B, C,} and {\em D\/} authors. At press time, project
+development efforts had begun to expand the program to include
+{\em Physical Review Letters\/} and {\em Reviews of Modern Physics}.
+It is anticipated that {\em Physical
+Review Letters\/} authors
+will be able to participate in a compuscript program by December of
+1991 (possibly earlier). Procedures for participation in the
+{\em Physical Review Letters\/} compuscript program will differ
+from those detailed in this guide, however, use of {\em REVTEX\/}
+will remain essentially the same. Please contact the authors of
+this guide for information on project development status for
+either {\em Physical Review Letters\/} or {\em Reviews of Modern
+Physics}.
+
+%
+
+ Unless specified in Appendix \ref{sec:contacts},
+ questions regarding this Input Guide should be directed
+ to Peggy C. Sutherland, APS Publications Liaison Office,
+ 500 Sunnyside Blvd., Woodbury, NY 11797.
+
+
+\section{GENERAL COMPUSCRIPT SUBMISSION\\ PROCEDURES}
+\label{sec:gensubmit}
+
+Original submissions to the editorial offices can be made via
+conventional mail or electronic mail. Both methods are
+described below. Conventional mail submission is
+described, unless otherwise specified.
+
+When the {\em REVTEX\/} compuscript is ready to go, it
+should should be submitted to the Editorial Offices in
+conformance with the
+printed procedures in the first issue of each volume of {\em Physical
+Review A, B, C,} and {\em D}. The following procedures
+are those unique to compuscript processing.
+
+It should be stated in the communication accompanying the manuscript
+that the paper is to be considered as a
+\TeX -formatted author-prepared compuscript and the preference
+for file medium (floppy, e-mail, tape). See Sec.\
+\ref{sec:filesubmit} for detailed
+file submittal specifications.
+
+The manuscript will go through the usual refereeing process
+and normal editorial functions. Frequently there are manuscript
+changes needed in response to referee and editor
+questions/suggestions. All such changes should be indicated
+in the correspondence that accompanies a revised manuscript
+and/or file.
+
+
+{\bf It is very important} that no undocumented changes be made to the
+file after the manuscript has been sent to the
+editor's office. The importance of this
+cannot be overemphasized. Publication delays will be experienced
+if there are any discrepancies, {\bf however minor they may
+be,} between the compuscript file
+and the manuscript that has been given to the editor's
+office.
+
+
+\subsection{Conventional mail submissions}
+\label{sec:conmailsub}
+
+Original submissions
+that involve paper copies of the manuscript and
+the postal system are conventional mail submissions.
+
+If the author has submitted conventionally,
+then the
+author should await word from the Editorial Office
+before sending the compuscript file; conventional
+submissions require that compuscript files be forwarded only
+after formal acceptance of the manuscript by the APS Editorial
+Offices.
+
+When received by conventional mail at the editor's office,
+the manuscript will begin the usual editorial
+processing route. The special handling needed for
+compuscript processing will be initiated. See Fig.\ 1.
+
+%%%Figure 1 is not in TeX format, therefore it
+%%%cannot be included in this file.
+
+As part of routine preprocessing
+for compuscripts, the author will be contacted to establish that
+the compuscript file meets the necessary requirements for
+inclusion in the author-prepared program. The author will
+be asked several questions related to the file.
+
+It is important that the author respond promptly to these queries.
+This information is critical for a compuscript to be included
+in the author-prepared program. It is not in the spirit
+of the author-prepared program to delay processing
+of a manuscript solely for the purpose of including
+the manuscript in the program. Therefore, if critical information
+is not available at the time the manuscript
+is given editorial approval for publication, then
+the manuscript will not be included in
+the program.
+
+
+In most cases, when/if accepted for publication by the %
+scientific editor, the author will be asked to send the compuscript
+file. (The exceptional case exists when the author opts to
+make manuscript corrections; see Sec.\ \ref{sec:process}.)
+%SHOULD GO ELSEWHERE The author should (1) modify front matter
+% for galley output, and
+%(2) \LaTeX\ the paper to evaluate equation lengths, shortening
+%or ``breaking'' equations where necessary before
+%providing the file.
+
+Frequently there are manuscript changes
+needed in response to referee and editor
+questions/suggestions. All such changes must be indicated
+in the correspondence that accompanies a revised manuscript.
+The file must be exactly represented by the
+latest (hard copy) manuscript that was sent to the Editorial Offices.
+If there are known differences,
+these should be itemized in communication
+accompanying the file. Delays will result if these instructions
+are not followed.
+
+\subsection{Electronic mail submissions}
+\label{sec:e-mail}
+
+Original submissions that involve
+machine readable files of the manuscript and an
+electronic mail system are electronic mail submissions.
+See Fig.\ 2.
+
+All such submissions and inquiries should be addressed
+to {\tt tex@apsedoff}. Manuscript submissions must include a covering
+message stating to which journal the paper is submitted
+and must provide a conventional mailing address.
+
+Figures must be forwarded by FAX at the same time that the manuscript
+is sent by electronic mail. The FAX number is (516) 924-5294;
+the FAX transmission should be marked for the attention of
+Debbie Stuart. Readable FAX copies of figures are sufficient
+for reviewing purposes only. Original figures should be
+forwarded by
+conventional or overnight mail as soon as possible.
+
+The file must be in ASCII and not contain any control characters.
+Line lengths should
+be kept to 70 characters or less.
+
+If the transmissions of the \TeX\ file and figures have been
+successful, an acknowledgment will be sent by electronic mail.
+If any problems are encountered by Editorial Services staff,
+the author will be contacted
+immediately via electronic mail and informed of the problem. If
+no acknowledgment is received within 24 hours, it should
+be assumed that the file was not received.
+
+Copies of the manuscript must {\bf not} be sent by
+conventional mail. Only original figures should be sent
+via conventional mail.
+
+A copy of the manuscript that has been generated by
+Editorial Services staff will be forwarded to the
+author.
+
+\section{PRODUCTION OF AUTHOR PROOFS}
+\label{sec:process}
+
+Ordinarily, editor and copyeditor changes are made
+to the file at the production site.
+(If the author opts to make all file changes,
+it should be so indicated in the cover letter
+that accompanies the manuscript. Please contact the authors
+of this guide for procedural details.)
+
+When/if a manuscript is accepted for publication, the
+manuscript and the compuscript file will be forwarded to
+production.
+Standard procedures for production will be in effect, and the
+author will receive the correspondence associated with routine
+manuscript publication. The manuscript will be returned to the
+author with the galleys. The manuscript will be thoroughly marked
+to indicate where file changes were needed,
+and the author will
+be responsible for thorough proofreading of galleys.
+
+Although the author has assumed the keyboarding responsibility
+and the proofreading
+responsibility, the production staff will still perform a complete
+proofreading of the article and will insert necessary
+changes. Requested tabular additions also will be
+inserted. Page proofs therefore should
+be carefully checked. Return the marked manuscript and the
+proofed galley to the address indicated on the galley and
+the necessary corrections will be handled by the production staff.
+
+\section{FILE SUBMITTAL SPECIFICATIONS}
+\label{sec:filesubmit}
+
+Please see Sec.\ \ref{sec:gensubmit} for important submittal
+procedures.
+
+
+Compuscripts should be submitted (1) on a DOS-formatted
+floppy disk, (2) on a UNIX-generated
+nine-track magnetic tape, or (3) via electronic mail. The tape/floppy
+should be labeled to
+indicate the code number of the manuscript, the names
+of all the files on the tape, and the return
+address of the submitting author. The following list indicates the
+acceptable formats and densities for the tape.
+
+\smallskip
+
+\indent\hbox to19mm{Formats:\hfil} tp, tar.
+
+\indent\hbox to19mm{Densities:\hfil} 800 bpi, 1600bpi.
+
+\smallskip
+
+The tape/floppy may contain one large file, e.g.,
+BB1010, or may contain
+a series of separately named files, e.g., BB1010,
+BB1010caps, BB1010tabs.
+The code number of the compuscript does not have to
+be used as the file
+name or names; smithpaper, smithcaps, smithfigs, etc., will suffice.
+
+Upon receipt of the file(s) by the production
+office, the contents will be
+concatenated and assigned the appropriate production code number.
+The compuscript file will then be evaluated for various
+potential problems and compliance with the input
+instructions. Compuscripts may be returned to the author at this
+time if extensive changes are necessary.
+
+
+All bitnet receipts will be acknowledged.
+
+\section{COMPUSCRIPT INSTRUCTIONS}
+\label{sec:instruct}
+
+Author-prepared compuscripts should include the following parts
+in this order: title, authors, byline,
+abstract, suggested PACS numbers (1990 Physics and
+Astronomy Classification), main manuscript body,
+references, figure captions, and tables. The production staff will
+add verified PACS numbers.
+Specific instructions pertaining to various parts of the compuscript
+are listed below as well as a short annotated example of compuscript
+input. Formatting commands (macros) are indicated where necessary.
+
+Manuscripts should not contain any author-defined macros. Macros which
+are simple text substitutions can be ``expanded'' by the author before
+submittal. More complicated macros can create problems when the file
+is edited for production and should also be avoided.
+See Appendix \ref{sec:macros}
+for further information.
+
+\subsection{Front matter}
+
+{\bf Preprints vs Galley form.} The {\em REVTEX\/} macro package
+has been developed to accommodate the preprint needs of the author
+as well as the production needs of the APS.
+If you use {\em REVTEX\/} to prepare a manuscript for submission
+to the Editorial Offices, only minor changes are needed
+to participate in the author-prepared program.
+These minor changes are (1) modifying the first
+line of the file and (2) breaking long equations
+where needed. Guidelines
+for equation breaking are outlined later; front
+matter is discussed below.
+
+The editors of {\em Physical Review\/} require a large typeface with
+adequate space between typed lines for technical editing marks and
+wide margins for editor and author comments. This {\bf preprint
+format} can be obtained with the following front matter:
+
+\begin{verbatim}
+\documentstyle[preprint,revtex]{aps}
+\begin{document}
+\draft
+\end{verbatim}
+
+{\bf Galley format}, which is needed for production of the
+page that goes to the printer, is produced by
+the following front matter:
+
+\begin{verbatim}
+\documentstyle[revtex]{aps}
+\begin{document}
+\draft
+\end{verbatim}
+
+
+\subsection{Text}
+
+{\bf Paragraphs} always begin with a blank input line.
+{\bf Do not hyphenate} words at the end of a line; \TeX\ will do
+this. Continue to hyphenate modifiers within a line of text, e.g.,
+``author-prepared copy.''
+
+{\bf Use curly quotes} for quotation marks
+around quoted text ({\tt ``xxx''})
+not straight quotes ({\tt "xxx" }). [For
+opening quotes, this is two octal 140 characters (hex 60);
+for closing quotes,
+this is two octal 047 (hex 27) characters.]
+
+There are two commands that control the width of
+the text across the page in the galley
+format; \btt{narrowtext} will set
+the column width to 3$\case3/8$ in., and the \btt{widetext}
+command will set the text 7 in.\ wide. The \btt{widetext} command
+is needed to set very long equations. See the section on
+displayed math, below.
+
+Neither \btt{narrowtext} or \btt{widetext}
+have any effect on the output if the front matter calls for
+the preprint form. The preprint output is a uniform
+6 in.\ throughout.
+
+Don't use \btt{smallskip}, \btt{bigskip}, or any other vertical motion
+commands. Horizontal motion commands are unnecessary as well.
+
+\subsection{Section headings}
+
+Three levels of headings are provided in {\em REVTEX\/}:
+{\tt section}, {\tt subsection},
+and {\tt subsubsection}.
+Precede the section heading with the \btt{nonum} command to suppress
+the automatic numbering; e.g.,
+\begin{verbatim}
+ \nonum\section{Introduction}
+\end{verbatim}
+
+To label a section heading for cross
+referencing use the \btt{label} command {\em after\/}
+the heading; e.g.,
+\begin{verbatim}
+ \section{Introduction}
+ \label{sec:intro}
+\end{verbatim}
+
+\subsection{In-text math}
+
+{\em Physical Review\/} uses the delimiter \$
+for any \TeX\ in-line math, e.g.,
+\begin{quote}
+ {the quantity $a^z$}
+\end{quote}
+is obtained from the input
+ \begin{verbatim}
+ the quantity $a^z$
+ \end{verbatim}
+
+Another example of in-line math is
+
+\smallskip
+
+ \leftline{\bf input:}
+ \begin{verbatim}
+ ... difference between $\langle J_z \rangle
+ (t)$ and $\langle J_z\rangle_{\rm HF}(t) ...$
+ \end{verbatim}
+\leftline{\bf output:}
+ \begin{quote}
+ ... difference between $\langle J_z \rangle (t)$ and $\langle
+ J_z \rangle_{\rm HF}(t) ...$
+ \end{quote}
+
+\smallskip
+
+Standard mathematical style conventions are followed
+for in-line math such as smaller point size for
+superscripts/subscripts, appropriate use of roman,
+italic, and Greek fonts, and the use of special math symbols.
+(See the {\em Style and Notation Guide} for help.)
+\TeX\ will take care of setting the point size appropriately
+for variables and numbers in the superscript/subscript position.
+To get the appropriately sized superscript/subscript in the
+roman font, use the \btt{rm} command:
+\smallskip
+\begin{quote}
+ \leftline{\bf input:}
+ \begin{verbatim}
+ $... J_{\rm HF}(t) ...$
+ \end{verbatim}
+\end{quote}
+\leftline{\bf output:}
+\begin{quote}
+ $... J_{\rm HF}(t) ...$
+\end{quote}
+\smallskip
+\TeX\ will assume that you want the superscript or subscript
+to consist of the first {\em token\/} (generally a single
+character or command) following the \^{} or \_, {\em unless\/}
+you use curly brackets to delimit the subscript/superscript. It is
+safest to use the curly brackets if unsure.
+The curly brackets here also serve to limit the scope of the
+{\tt\string\rm} command.
+Again, don't use any vertical motion commands in math; horizontal
+motion commands are unnecessary as well.
+
+\subsection{Displayed equations}
+
+The most common (and preferred) type of
+displayed equation in {\em Physical
+Review\/} is a narrow, {\bf indented single-line equation, with an
+equation number on the same line}. Try to set as many equations as you
+can in this way. Because some equations are longer
+than this type of styling will allow, there are other types of
+displays to accommodate longer equations.
+
+Equations can be set flush left with the margin if they do not
+fit in the column; dropping the equation numbers to the line
+below the equation will also help and is handled automatically
+by {\em REVTEX\/} for single-line equations.
+Breaking the equation into multiline format may be necessary for very
+long equations.
+
+If an equation needs to be broken into more than four lines, it should
+be set in a wide column for ease of reading, using the \btt{widetext}
+command. The author should return to \btt{narrowtext} as soon
+as possible after one or more very long equations.
+
+
+In Sample Compuscript A, we have
+illustrated how to obtain each of the above.
+
+
+\subsubsection{Numbering displayed equations}
+
+The {\em REVTEX\/} macro package allows two methods for numbering
+equations: you can assign your own equation numbers
+or you can allow {\em REVTEX\/} to number for you.
+
+Use the command \btt{eqnum}$\{${\em thenumber}$\}$
+to number your own equations. You can also use this command to
+produce a specific equation number not normally obtainable; $(1')$,
+for example.
+
+For automatically numbered single-line and multiline equations, use
+the {\tt equation} and {\tt eqnarray} environments.
+You can use the \btt{[},\btt{]}
+commands and the {\tt eqnarray$\ast$} environment for unnumbered
+single-line and
+multiline equations, respectively. The command \btt{nonumber} will
+suppress the numbering on a single line of an eqnarray.
+
+If you wish a series of equations to be a lettered sequence, e.g.,
+(1a), (1b), and (1c), just include the equations or eqnarray within
+the {\tt mathletters} environment.
+
+Finally, to have {\em REVTEX\/} number equations by section,
+use the {\tt eqsecnum} style option.
+
+See Sample Compuscript A to see examples of how all this works.
+
+\subsubsection{Cross-referencing displayed equations}
+
+Authors will probably not cross-reference every equation
+in text. When a numbered equation needs to be
+referred to in text by its number,
+the \btt{label\{{\em tag}\}} and \btt{ref\{{\em tag}\}}
+commands should be used. The
+\btt{label} command is used within the equation or the eqnarray line
+to be referenced:
+
+\smallskip
+
+\leftline{\bf input:}
+\begin{verbatim}
+\begin{equation}
+A=B \label{pauli}
+\end{equation}
+... It follows from Eq.\ (\ref{pauli})
+that this is the case ...
+\end{verbatim}
+\leftline{\bf output:}
+\begin{equation}
+A=B \label{pauli}
+\end{equation}
+... It follows from Eq.\ (\ref{pauli}) that this
+is the case ...
+
+\smallskip
+
+Please note the parentheses surrounding the command.
+They are necessary for proper output.
+You can also label individual lines in an eqnarray.
+Numbers produced with \btt{eqnum} can also be cross-referenced:
+just follow the \btt{eqnum} command with a \btt{label} command.
+Please see Sec.\ \ref{sec:xrefs}
+for further information about cross-referencing.
+
+\subsection{Special Characters}
+
+Authors should avoid the use of specially designed ``define
+characters'' and choose symbols from those shown in the {\em
+\LaTeX\ User's Guide \& Reference Manual}.
+There is no guarantee that a specially designed definition
+will produce the desired results at the production installation.
+If a special symbol is required and not listed in the \UG ,
+please request special consideration
+in the cover letter accompanying the file submittal. The
+copyeditor will make note of it and the production staff
+will attempt to accommodate the author.
+
+Unusual characters are subject to approval by the editor.
+
+\subsection{Footnotes and references}
+
+The list of references should appear after the main
+body of the paper. Please refer to the \SNG\ and
+recent issues of {\em Physical Review\/} for current style.
+Sample Compuscript A shows
+examples of a variety of reference entries, e.g., journal, book,
+byline, and private communication.
+
+References will be listed in the reference section using the
+\btt{bibitem} command, and they will be cited in text using
+the \btt{cite} command.
+
+A byline footnote and the first reference cited
+may appear in the reference section like this:
+
+\smallskip
+
+\begin{verbatim}
+\begin{references}
+\bibitem[*]{AAAuth}Present Address: Brookhaven
+National Laboratory, Upton, New York, 11973.
+\bibitem{tal82}Y. Tal and L. J. Bartolotti,
+J. Chem. Phys. {\bf 76}, 4056 (1982).
+\end{references}
+\end{verbatim}
+
+\smallskip
+
+The {\tt [*]} represents an optional, author-specified
+reference label. If a reference label is not
+present, {\em REVTEX\/} will assign
+the next available reference number.
+
+{\tt$\{$tal82$\}$} is a tag; it can be any string of
+letters and numbers that you will easily associate with the
+reference. This tag will be used in text to tell \TeX\ what
+reference you want to cite. See the example below.
+
+\bigskip
+
+\leftline{\bf input:}
+\begin{verbatim}
+... This has been noted previously \cite{tal82}.
+\end{verbatim}
+\leftline{\bf output:}
+\begin{quote}
+... This has been noted previously \cite{tal82}.
+\end{quote}
+\smallskip
+Input for an author name with a byline footnote
+is similar, but the output is different:
+
+\bigskip
+
+\leftline{\bf input:}
+\begin{verbatim}
+\author{A. A. Author\cite{AAAuth}}
+\end{verbatim}
+\leftline{\bf output:}
+\author{A. A. Author\cite{AAAuth}}
+
+\bigskip
+
+(See the
+\SNG\ for details on proper usage of byline footnotes.)
+Output (galley form) in the reference section for
+the footnote and reference
+samples above will look like this:
+
+\begin{references}
+\bibitem[*]{AAAuth}Present Address: Brookhaven
+National Laboratory, Upton, New York, 11973.
+\bibitem{tal82}Y. Tal and L. J. Bartolotti,
+J. Chem. Phys. {\bf 76}, 4056 (1982).
+\end{references}
+
+
+\bigskip
+
+\leftline{\bf Quick guide to references:}
+
+\smallskip
+
+$\bullet$ The \btt{bibitem} command begins a reference.
+
+$\bullet$ References should be listed in the reference section
+in the order in which they are first cited in the text.
+(See next item.)
+
+$\bullet$ References will automatically be numbered by {\em REVTEX\/}
+in the order in which they occur in the reference section, unless the
+author provides his/her own label.
+
+$\bullet$ The {\tt$\{$tal82$\}$} is a tag; it can be any string of
+letters and numbers that you will easily associate with the
+reference. This tag will be used in text to tell \TeX\ what
+reference you want to cite.
+
+$\bullet$ Footnotes to the byline should precede the
+references and should not be numbered. Provide a label in
+square brackets following the \btt{label} command.
+For {\em Physical Review A, B, C,} and {\em D,}
+use [{\tt*}], [\btt{dag}], [\btt{ddag}], [\btt{S}], [{\tt**}],
+[\btt{dag}\btt{dag}], [\btt{ddag}\btt{ddag}], [\btt{S}\btt{S}]
+in the order listed. This conforms to the requirements
+detailed in {\em The Style and Notation Guide}.
+
+\bigskip
+
+\subsection{Figure captions}
+
+Figure captions are a part of the compuscript and should appear after
+the references. They should be input
+sequentially in the order in which they are
+cited in the text; \LaTeX\ will label and number the captions
+FIG.~1, FIG.~2, etc.
+
+Note below the use of
+the \btt{label} command; this is used to cross-reference
+figures in text. The \btt{label} command should be inserted
+after the text of the figure caption, before the final
+curly bracket.
+
+\smallskip
+
+\leftline{\bf input:}
+\begin{verbatim}
+\figure{Text of first caption.\label{fig1}}
+
+\figure{This is the second caption:
+comparison of the differential cross sections
+for the subprocess $qg \rightarrow qggg$ of our
+approximation (dotted line) versus the
+approximation of Maxwell together with the use
+of the effective structure function
+approximation(solid line).\label{fig2}}
+
+\end{verbatim}
+\leftline{\bf output:}
+
+\figure{Text of first caption.\label{fig1}}
+
+\figure{This is the second caption:
+comparison of the differential cross sections
+for the subprocess $qg \rightarrow qggg$ of our
+approximation (dotted line) versus the approximation
+of Maxwell together with the use of the
+effective structure function approximation
+(solid line).\label{fig2}}
+
+\bigskip
+
+Figures are cited in text with the use of the \btt{ref} command:
+
+\smallskip
+
+\leftline{\bf input:}
+\begin{verbatim}
+...It can be seen from Fig.\ \ref{fig1} that
+the data are inconsistent with this
+conclusion...
+\end{verbatim}
+
+\leftline{\bf output:}
+
+\smallskip
+
+...It can be seen from Fig.\ \ref{fig1} that
+the data are inconsistent with this conclusion...
+
+\smallskip
+
+\noindent
+Further information on cross-referencing can be found
+in Sec.~\ref{sec:xrefs}.
+
+Figures and illustrations are submitted as originals or glossy prints.
+Follow the rules in the \SNG\ for style and specifications.
+
+\subsection{Tables}
+
+Tables are a part of the compuscript and should appear at the end of
+the file. Every table must have a complete caption and the correct
+number of descriptive column headings. Tables may be narrow
+(8.6~cm or 3.4~in.\ wide), medium (14~cm or 5.5~in.\ wide),
+or wide (17.8~cm or 7.0~in.\ wide), in galley format.
+An example of each appears in the sample compuscript input.
+Tables will be sized at the production site to be set narrow, medium,
+or wide (according to the number of columns, type of material, etc.).
+(When using the preprint form for {\em REVTEX\/}, all tables will
+be set 6~in.\ wide. {\em REVTEX\/} will ignore \btt{narrowtext},
+\btt{mediumtext}, and \btt{widetext} commands if the front matter
+of the file calls for the preprint form.)
+
+Each table must begin with \btt{begin}$\{${\tt table}$\}$,
+and end with \btt{end}$\{${\tt table}$\}$.
+Follow current {\em Physical Review\/}
+style concerning placement of table lines. (See examples in this
+guide and recent issues of {\em Physical Review}.) The table
+commands will set double horizontal
+lines appearing at the beginning and end of the table;
+a single horizontal rule should be set after the column headings with
+the use of the \btt{tableline} command.
+Extra sets of column headings within the table will require another
+\btt{tableline} to separate the headings from the column entries.
+Do not insert any other horizontal or vertical
+lines in the body of the table.
+
+Since tables are automatically numbered,
+the \btt{label} command is used with the \btt{ref} command
+to cite tables in text. The \btt{label} command should
+appear after the \btt{end}{\tt $\{$tabular$\}$ }and
+before the \btt{end}{\tt$\{$table$\}$} command.
+\bigskip
+
+\leftline{\bf Some special table considerations:}
+
+\smallskip
+
+
+$\bullet$ {\em Numerical columns\/} should align on the decimal point
+(or decimal points if more than one is
+present). See Sample Compuscript A.
+
+$\bullet$ Use \$ delimiters for all math in
+a table (no displayed equation commands). See Sample Compuscript A.
+
+$\bullet$ {\em Footnotes\/} in a table must be labeled a, b, c, etc.
+See Sample Compuscript A.
+
+$\bullet$ {\em Extra wide tables\/}
+that will not fit into the 17.8-cm or 7.0-in.\ designation
+can be manipulated by the production staff to produce a turned table
+that will appear lengthwise on a page. A cover letter requesting
+this special handling should accompany tape submittal.
+The author can use the \btt{squeezetable} command with tables that
+do not fit on the page.
+
+\bigskip
+Authors should consider the feasibility of depositing extensive
+tabular material in the Physics Auxiliary Publication Service
+of the American Institute of Physics. This material will usually
+be included in the Microfilm edition of the {\em Physical~Review}.
+For details, please write to the Editorial Office.
+
+\section{CROSS-REFERENCING}
+\label{sec:xrefs}
+
+{\em REVTEX\/} has built-in features for autonumbering of
+section headings, equations, tables, and figures.
+This section contains a simplified explanation of
+cross-referencing features. The format for using these
+features with section headings, equations, tables, and figures
+is discussed in the appropriate section.
+
+Cross-referencing depends upon the use of ``tags,'' which
+are defined by the user. The \btt{label} command is used
+to identify tags for \TeX . Tags are strings of characters that
+serve to label equations, tables, and figures, so that
+you don't need to know what number {\em REVTEX\/} has assigned to
+the item in order to talk about it in text.
+
+You will need to \LaTeX\ the original file more than once to
+ensure that the tags have been properly
+linked to appropriate numbers. If you add any tags,
+you will need to \LaTeX\ more than once in subsequent work sessions:
+ \LaTeX\ will
+display an error message that ends with {\tt ... Rerun
+to get cross-references right}.
+If you see that message, \LaTeX\ the file again.
+If the error message appears after two \LaTeX ings,
+please check your labels; you probably have referred to
+an item in text without tagging the item.
+
+You may not need to know (or care to know) all about what
+\LaTeX\ is doing for autonumbering; however, you may want to know that
+when you \LaTeX\ the file for the first time, an
+auxiliary file with the {\tt .aux} filename extension will be
+created that connects numbers with their tags. Subsequent
+\LaTeX ing accesses the auxiliary file to put the proper number
+in the text.
+
+Sample Compuscript A illustrates the use of cross-referencing.
+
+
+\widetext
+
+
+\section{COMPUSCRIPT SAMPLES}
+\label{sec:samples}
+
+In the following pages is a short annotated sample compuscript
+(Sample A) in input and output form. The various parts
+of the compuscript are explained as well
+as the associated galley formatting commands (macros).
+The input follows the output.
+
+The {\em REVTEX\/} galley macro package produces
+single-column galleys (sometimes double-column width for
+long equations, wide figures,
+and tables). The galleys are sent to
+the art department where the output
+and figures are combined in a two-column format onto camera-ready
+boards that are then sent to the printer.
+
+Please review the various sections of the output and compare
+to the input.
+
+For a more comprehensive example of compuscript input, see
+Sample Compuscript B (galley format and preprint format).
+
+
+\subsection{Sample Compuscript A}
+%% NOTE:
+%% The compuscript sample that appears here in the Input Guide
+%% is actually the file SMPLEA.TEX, and is included separately in the
+%% toolbox.
+
+\subsection{Sample Compuscript B -- Galley Format}
+%% NOTE:
+%% The compuscript sample that appears here in the Input Guide
+%% is actually the file SMPLEB.TEX, and is included separately in the
+%% toolbox.
+
+\subsection{Sample Compuscript B -- Preprint Format}
+%% NOTE:
+%% The compuscript sample that appears here in the Input Guide
+%% is actually the file SMPLEC.TEX, and is included separately in the
+%% toolbox.
+
+\mediumtext
+\appendix{Command list}
+\label{sec:commands}
+
+In the following pages is a brief description of some
+necessary commands.
+Those commands that are unique to {\em REVTEX\/} are so noted
+with {\tt (R)}. Please consult the \LaTeX\ {\em User's Guide and
+Reference Manual\/} if you have further questions
+regarding \LaTeX\ commands.
+
+If commands require arguments, they are so noted
+with \#{\tt 1}, \#{\tt 2}, etc.
+The commands are in order of their probable occurrence in a file.
+
+\vskip .5in
+\begin{verbatim}
+\documentstyle[#1]{aps} Will allow for proper formatting of paper; use
+ [preprint,revtex] for #1 if preprint format
+ is desired, and use [revtex] for #1 if galley
+ format is desired. To number equations by
+ section, use the eqsecnum option:
+ [revtex,eqsecnum].
+
+\tightenlines Preprint style outputs a double-spaced
+ manuscript. When used in preprint style,
+ this command reverts to single spacing to
+ save paper. Has no effect in galley style.
+ Use before \begin{document}. (R)
+
+\begin{document}, Necessary in the beginning and end of file.
+\end{document}
+
+\preprint{#1} When used as the first command of a document,
+ places #1 at the top right corner of the first
+ page in preprint style. Used for site-specific
+ preprint numbers. (R)
+
+\draft Omission of this command will cause printing
+ of PACS numbers to be stifled. (R)
+
+\begin{title}, Signals beginning or end of title. The title
+\end{title} should be broken with the \\ command.
+
+\author{#1} #1 represents a list of authors. Use \\ to force
+ linebreaks.
+
+\begin{instit}, Signals beginning or end of an author's address
+\end{instit} (institution). The address should be
+ broken with \\ if necessary.
+
+\receipt{#1} #1 represents the date of receipt at the
+ Editorial Offices. This date will be
+ inserted at the production site. (R)
+
+\begin{abstract}, Signals the beginning or end of the abstract.
+\end{abstract}
+
+\pacs{#1} #1 represents valid PACS numbers. This command
+ should be used after the abstract, even if
+ #1 is empty. (R)
+
+\narrowtext For galley format, will set all text that
+ follows into a 3 3/8 in. column. Does not
+ affect preprint output. (R)
+
+\mediumtext For galley format, will set figure captions
+ and tables 5 1/2 in. wide. Does not
+ affect preprint output. (R)
+
+\widetext For galley format, will set all text that
+ follows into a 7 in. wide column. Does not
+ affect preprint output. (R)
+
+\section{#1} #1 represents a primary heading. Fragile
+ commands should be preceded by \protect.
+
+\subsection{#1} #1 represents a secondary heading. Fragile
+ commands should be preceded by \protect.
+
+\subsubsection{#1} #1 represents a third-level heading. Fragile
+ commands should be preceded by \protect.
+
+\cite{#1} Sets a reference or byline footnote citation.
+ #1 represents a list of reference tags used with
+ \bibitem. Lists of consecutive numbers will
+ be collapsed; e.g., 1,2,3 will become 1-3.
+
+\case{#1}/{#2} Sets textstyle (smaller) fractions in displayed
+ equations. #1 is the numerator, #2 is
+ denominator. (R)
+
+\openone Produces an openface one. (R)
+
+\alt,\agt Produce "approximately less than" and
+ "approximately greater than" signs,
+ respectively, in math mode. (R)
+
+\FL Sets the displayed equation that follows
+ flush left with the margin. (R)
+
+\FR Sets the displayed equation that follows
+ flush right. (R)
+
+\[,\] Signals beginning or end of unnumbered
+ displayed equation.
+
+\begin{eqnarray}, Signals beginning or end of multiline
+\end{eqnarray} displayed equation.
+
+\nonumber Suppresses the numbering of a single
+ line in a multiline equation.
+
+\begin{quasitable}, Environment to produce tables in text. See
+\end{quasitable} Sample B in the REVTEX guide for an example.
+
+\label{#1} #1 represents the tag. This command appears in
+ displayed equations that need cross-referencing,
+ all tables, and all figure captions. Also used
+ following section headings that need
+ cross-referencing.
+
+\ref{#1} #1 represents the tag. This command appears
+ in text wherever sections, equations, tables,
+ or figures are cited.
+
+\nonum Stifles numbering of the immediately following
+ section heading.
+
+\acknowledgments Sets a section heading for the acknowledgment
+ section.
+
+\appendix{#1} Sets #1 as a lettered appendix heading.
+ #1 can be empty. To be used when there are
+ multiple appendixes. \protect should be used
+ for fragile commands. Appendixes should not
+ be started with \section{#1}.
+
+\unletteredappendix{#1} Same as \appendix, but produces no letter.
+ To be used when there is only one appendix.
+
+\begin{references}, Signals beginning or end of reference section.
+\end{references}
+
+\bibitem[#1]{#2} Sets a reference in the reference section.
+ #1 represents an optional, author-specified
+ reference symbol. This is used for byline
+ footnotes, which are not numbered in
+ Physical Review.
+ #2 represents the reference tag.
+
+\figure{#1\label{#2}} Sets the figure caption.
+ #1 represents the text of the caption.
+ #2 represents the figure caption tag.
+
+\newpage Signals start of new page.
+
+\begin{table}, Signals the beginning or end of a table.
+\end{table}
+
+\dec #1.#2 This command may be used for simple
+ decimal-point alignments in tables.
+ #1.#2 represents a number to be aligned
+ by the decimal point. The decimal point and a
+ space after #2 are mandatory. \dec uses
+ constant-width boxes for #1 and #2. For
+ best results you can set the widths with
+ \setdec. See Sample A. (R)
+
+\setdec #1.#2 This command is used to set the amount of space
+ reserved on each side of the decimal point by
+ the \dec command. Use \setdec inside a table
+ to set the size of \dec for the numbers used
+ in that table only, or outside a table to set
+ the size globally. \setdec 000.000 is the
+ default. See Sample Compuscript A. (R)
+
+\squeezetable Used immediately after \begin{table}, shrinks
+ tables that would not otherwise fit. (R)
+
+\caption{#1} Sets the table caption. #1 represents the
+ text of the caption.
+
+\begin{tabular}{#1} Signals the beginning of the tabular material.
+ #1 represents formatting commands for
+ the columns.
+
+\tableline Sets a horizontal rule, separating column
+ headings from data. (R)
+
+\end{tabular} Signals end of tabular material.
+
+\tablenotes{#1} Sets footnotes to the table. #1 represents
+ text of footnote. These footnotes are not
+ autonumbered: text of footnote must be
+ preceded by a roman letter in a superscript to
+ coincide with the citation in table. (R)
+
+\end{verbatim}
+
+\widetext
+\newpage
+\appendix{Upgrading to {\em REVTEX\/} 2.0}
+\label{sec:upgrade}
+
+\catcode`\@=11
+\def\alt{\mathrel{\mathpalette\vereq<}}
+\def\vereq#1#2{\lower3pt\vbox{\baselineskip1.5pt \lineskip1.5pt
+\ialign{$\m@th#1\hfill##\hfil$\crcr#2\crcr\sim\crcr}}}
+\def\agt{\mathrel{\mathpalette\vereq>}}
+\def\openone{\leavevmode
+ \hbox{\small1\kern\iftwelvepointon-3.8pt\else-3.3pt\fi\@normalsize1}%
+}
+\def\xxx{\leavevmode\hbox{\tt\char`\ }} % visible space
+\catcode`\@=12
+%
+
+\begin{table}
+\caption{This table is a summary of the new commands and capabilities
+of {\em REVTEX\/} 2.0. \xxx\ denotes an input space. See the
+{\em REVTEX\/} 2.0 manual for examples of usage.
+{\bf Note}: if you wish to run {\em REVTEX\/} 2.0 on
+files formatted with an old version, you should first delete the
+{\tt.aux} file. The auxiliary-file formats are incompatible.}
+\begin{tabular}{lp{12cm}}
+ \tt\string eqsecnum& This style option replaces the old
+\verb+\math-with-secnums+ command. \\[4pt]
+ \tt\string \tightenlines& This command has been added since
+ the preprint style now produces double-spaced output. This command,
+ placed before the \verb+\begin{document}+, will give
+ {\em single}-spaced output in the preprint style. This may be more
+ convenient for the author while the paper is being written. \\[4pt]
+ \tt\string \preprint\{\#1\}&This command should be used just before
+ the title. It will place its argument in the upper-right corner of
+ the page. To be used for site-specific information
+ (e.g., preprint numbers).\\[4pt]
+ title environment& You now need to break the lines of the title with
+\verb=\\=. The title is not set in boldface. \\[4pt]
+ \tt\string \author\{\#1\}& The author list will be broken
+ automatically if
+it does not fit on one line. Breaks can be forced with
+\verb+\\+. \\[4pt]
+ \tt\string \moreauthors\{\#1\}& This command is no longer needed.
+ It has been set equal to {\tt\string\authors\{\#1\}}. \\[4pt]
+ instit environment& Line breaks must now be forced with
+ \verb+\\+.\\[4pt]
+ \tt\string \onlinecite\{\#1\}& This will produce a reference
+ citation with the number on line with the text. Can also be used as
+{\tt\string\citenum\{\#1\}}. These commands and \verb+\cite+ all
+collapse lists automatically. \\[4pt]
+ \tt\string \overlay\{\#1\}\{\#2\} & To print two symbols on
+ top of each other.\\[4pt]
+ \tt\string \FR & This command will flush an equation or eqnarray
+to the right in galley mode.\\[4pt]
+ \tt\string\eqnum\{\#1\}& Now accepts any legal number as an argument,
+including primes, etc. Can be used in eqnarrays and equations
+and with \verb+\label+ and \verb+\ref+. This is
+transparent to the normal autonumbering.\\[4pt]
+ mathletters environment &
+This is an environment to ``number'' equations with letters;
+e.g., (1a),(1b),(1c). Works with equations and eqnarrays. \\[4pt]
+ \verb+\openone+& Produces an openface one (\openone).\\[4pt]
+ \verb+\alt,\agt+ & Produce $\alt$,$\agt$ in math mode.\\[4pt]
+ \vtop{\hbox{\verb+\begin{quasitable},+}
+\vskip2pt\hbox{\verb+\end{quasitable}+}} &
+Environment to produce tables in text.
+See Sample B in the {\em REVTEX} guide for an example.\\[4pt]
+ \vtop{\hbox{\tt\string\section\{\#1\}, \string\subsection\{\#1\},}
+\vskip2pt
+\hbox{\tt\string\subsubsection\{\#1\}}}&
+All can now be broken with \verb+\\+, and all
+work with \verb+\label+ and \verb+\ref+. {\tt\string\protect} is
+needed (and works) with fragile commands in headings. Not bold.\\[4pt]
+ \tt\string \acknowledgments&
+Produces a heading for the acknowledgments. \\[4pt]
+ \tt\string \appendix\{\#1\}&
+Used for the appendix headings in a paper with more than one appendix.
+Automatically produces letters in sequence, and uses the letter in
+equation numbers. Works with \verb+\label+ and \verb+\ref+. Fragile
+commands need to be {\tt\string\protect}'d. The curly brackets must
+be present, but may be empty. Not bold.\\[4pt]
+ \tt\string \unletteredappendix\{\#1\}& Similar to \verb+\appendix+,
+but produces no letter. Should be used when there is a
+single appendix in a paper. \\[4pt]
+ \tt\string \bibitem & The optional argument is now truly optional.
+The references will now all be numbered automatically, and no
+arguments in square brackets should be used except
+where byline footnotes are needed. \\[4pt]
+ table environment & LaTeX's @ command for specifying a tabular format
+has been re-enabled inside a table environment. This allows authors to
+align columns by the LaTeX trick of smashing two columns together (see
+Sample Compuscript A).
+Tables no longer produce monolithic boxes. Instead the output
+is much more like lines of regular text, allowing
+tables to break over pages. \\[4pt]
+ \tt\string \setdec\xxx \#1.\#2\xxx & This command is used to set
+ the amount of space reserved on each side of the period by the
+ \verb+\dec+ command. See Sample Compuscript A.\\[4pt]
+\tt\string\squeezetable & There may be tables that will not fit in the
+width provided by the preprint style. Inserting this command right
+after the table environment begins will shrink the type in a table,
+helping it to fit.
+ %\tt\string & \\[4pt]
+ %\tt\string & \\
+\end{tabular}
+\end{table}
+
+
+\narrowtext
+\newpage
+
+\appendix{FAST FACTS FOR NEW PARTICIPANTS}
+\label{sec:fastfacts}
+
+Since 1980 the American Physical Society has been accepting
+computer files from authors and using those files (``compuscripts'')
+in the preparation of their galleys. In 1987 a research and
+development effort was launched to expand this service to include
+\TeX -formatted compuscripts. We have been publishing
+\TeX\ compuscripts since 1988.
+
+\medskip
+{\bf Benefits to Author: Reduced Proofreading}. Since
+galleys are composed from virtually the same file that produced
+the manuscript, proofreading time can be reduced significantly.
+
+\medskip
+{\bf How to Qualify: Use {\em REVTEX} or \LaTeX\ Macros}.
+The APS has developed a ``compuscript toolbox,'' which is
+composed of macros, a {\em Physical Review Input Guide
+for \TeX\ Author-Prepared Compuscripts}, a {\em Style
+and Notation Guide}, and complete instructions on how to
+install the macros. The toolbox is designed to guide the author
+in the preparation of a manuscript for the {\em Physical
+Review}.
+
+\medskip
+
+
+{\bf Which Journals are Participants?} Papers
+submitted to {\em Physical Review A, B, C,\/} or {\em D\/}
+may qualify.
+
+\medskip
+{\bf Media for Compuscripts}. We can process
+files received via electronic mail, DOS formatted floppy disk, and
+even magnetic tapes from UNIX systems.
+
+\medskip
+{\bf How to Participate}. Indicate your interest
+in your cover letter when you make your {\bf original} submission.
+We will contact you to confirm file qualification. Then we will
+contact you if your manuscript is accepted for publication to
+arrange file transfer.
+
+\medskip
+{\bf Obtaining the Toolbox and More Information}. Contact
+
+\medskip
+Peggy Sutherland
+
+APS Liaison Office
+
+500 Sunnyside Boulevard
+
+Woodbury, New York~~11797
+
+\medskip
+(516) 349-7800, ext.\ 674
+
+\medskip
+E mail address: {\tt mis@apsedoff}
+
+
+\appendix{COMMON AUTHOR QUESTIONS}
+\label{sec:macros}
+
+{\bf Page Charges.}
+Historically, page charges for compuscripts have
+fluctuated. The Council has, at various points
+over the ten-year history of the program, voted
+for reduced page charges, the elimination
+of page charges, and full page charges for compuscripts.
+At press time, compuscripts were subject
+to full page charges.
+
+\bigskip
+{\bf Macros.}
+Some authors use specialized definitions, or macros,
+in their files. These definitions serve different
+purposes: some macros save the author from typing
+a long character string repetitively (Type 1), and some macros
+act as commands to the \TeX\ program or the troff
+program (Type 2).
+
+\smallskip
+{\bf How macros become problematic.}
+Type-1 macros enable the author to define a frequently
+occurring string of characters as a shorter string, in
+order to save typing time. These macros become
+problematic at production stage when the frequently
+occurring string needs stylistic or grammatical changes.
+At that point, the production of the compuscript requires
+either (1) evaluation by a staff member who is fluent in
+macro construction, because the macro will need to
+changed, or (2) additional attention by a staff member
+who will change every occurrence of the string manually
+in the file.
+
+Neither one of the two alternatives is in the
+spirit of the compuscript program: the author of
+the compuscript will need to proofread the galleys
+very carefully, and production time/cost has become
+inflated by processing as a compuscript!
+
+Type-2 macros enable the author to give commands to the \TeX\
+program. Authors need to do this when the
+macro package they are using does not contain a command
+that they need.
+
+Type-2 macros frequently occur in \LaTeX\ compuscripts.
+This is because the macros do not provide for certain
+elements of {\em Physical Review} style; for instance,
+letters in equation numbers. Authors who are using \LaTeX\ to
+compose their compuscripts would need to develop
+a command that would number their equations (1a), (1b), etc.
+
+Type-2 macros should not occur in {\em REVTEX\/} compuscripts. The
+{\em REVTEX\/} macros ideally represent a complete command set,
+allowing the author to do anything that Physical Review style
+allows.
+
+Since our first release of {\em REVTEX\/}, some
+authors have given us feedback on macros that they
+would like included in the {\em REVTEX\/} package, as well
+as changes they would like made. Some of
+these suggestions are feasible (accurate double
+spacing) and some are not (the ability to draw
+many horizontal lines within the tabular environment).
+Relevant suggestions have been incorporated in
+v2.0 of {\em REVTEX\/}. The APS will review compuscripts
+containing Type-2
+macros when authors feel that they have found a deficiency
+in {\em REVTEX\/}.
+
+{\bf Authors should remove all macros from their
+compuscripts.} Type-1 macros are easy to remove, with
+the aid of a word processor which is equipped to
+do global substitutions. Type-2 macros are
+not easy to remove; authors may not be able to
+do so and therefore will be ineligible for the compuscript
+program. This of course does not prevent them from
+making their original submission electronically.
+
+This represents the current policy for compuscript
+page charges and macro usage, which is subject to
+change. If you have any questions regarding
+these issues please contact the authors of this guide.
+
+
+\appendix{CONTACTS}
+\label{sec:contacts}
+
+\vskip.5pc
+\begin{quasitable}
+\begin{tabular}{p{1.5in}p{1.5in}}
+\noindent{\bf REVTEX \mbox{questions/}\par technical support$^*$}\par
+\vskip4pt\hrule width1.5in\vskip4pt
+C.\ Hamlin \par
+{\tt mis@apsedoff}\par
+\vskip4pt
+P.\ Sutherland\par
+{\tt mis@apsedoff}\par
+&
+\noindent{\bf Electronic mail\par submissions$^{**}$}\par
+\vskip4pt\hrule width1.5in\vskip4pt
+L.\ Siddons \par
+{\tt tex@apsedoff}\par
+\\[.75pc]
+\noindent{\bf \mbox{Policy questions$^*$}\par}
+\vskip4pt\hrule width1.5in\vskip4pt
+C.\ Hamlin \par
+P.\ Sutherland\par
+&
+\noindent{\bf Manuscript status\par queries$^{**}$}\par
+\vskip4pt\hrule width1.5in\vskip4pt
+\tt
+pra@apsedoff\par prb@apsedoff\par prc@apsedoff\par prd@apsedoff\par
+\\[.75pc]
+\noindent{\bf MIS project\par development questions$^*$}\par
+\vskip4pt\hrule width1.5in\vskip4pt
+P.\ Sutherland\par
+&
+\end{tabular}
+\end{quasitable}
+
+\noindent $^*$American Physical Society Liaison Office, 500 Sunnyside
+Boulevard, Woodbury NY 11797.
+
+\smallskip
+
+\noindent$^{**}$Editorial Offices, 1 Research Road, Ridge, NY 11961.
+
+
+
+\end{document}
+%
+%
+%
diff --git a/macros/latex209/contrib/misc/aps.sty b/macros/latex209/contrib/misc/aps.sty
new file mode 100644
index 0000000000..f848af657d
--- /dev/null
+++ b/macros/latex209/contrib/misc/aps.sty
@@ -0,0 +1,138 @@
+%March 16, 1989 version
+
+\def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}}
+\def\ds@twoside{\@twosidetrue \@mparswitchtrue} \def\ds@draft{\overfullrule
+5pt}
+
+\newif\iftwelvepointon %% larger bold math in 12pt style
+
+\@options
+\iftwelvepointon\else
+\input aps10.sty\fi
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin\parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+\let\enddescription\endlist
+\newdimen\descriptionmargin
+\descriptionmargin=3em
+
+
+
+
+\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt
+\tabbingsep \labelsep
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt
+
+\newcounter{part}
+\newcounter {chapter}
+\newcounter {section}[chapter]
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+
+\def\thepart {\Roman{part}}
+\def\thechapter {\arabic{chapter}}
+\def\thesection {\thechapter.\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+\def\@chapapp{Chapter}
+
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{2}
+
+\def\l@chapter#1#2{\pagebreak[3]
+ \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1 #2}
+ \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+
+\mark{{}{}}
+
+\if@twoside
+\def\ps@headings{\def\@oddfoot{}\def\@evenfoot{}\def\@evenhead{\rm
+\thepage\hfil \sl \leftmark}\def\@oddhead{\hbox{}\sl \rightmark \hfil
+\rm\thepage}\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth
+>\m@ne
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}\def\sectionmark##1{\markright
+{\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi ##1}}}}
+\else \def\ps@headings{\def\@oddfoot{}\def\@evenfoot{}\def\@oddhead{\hbox
+{}\sl \rightmark \hfil \rm\thepage}\def\chaptermark##1{\markright
+{\uppercase{\ifnum \c@secnumdepth >\m@ne
+ \@chapapp\ \thechapter. \ \fi ##1}}}}
+\fi
+\def\ps@myheadings{\def\@oddhead{\hbox{}\sl\rightmark \hfil
+\rm\thepage}\def\@oddfoot{}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox
+{}}\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\@addtoreset{equation}{chapter}
+
+
+
+\ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi
+
diff --git a/macros/latex209/contrib/misc/aps10.sty b/macros/latex209/contrib/misc/aps10.sty
new file mode 100644
index 0000000000..c0ca61cc6c
--- /dev/null
+++ b/macros/latex209/contrib/misc/aps10.sty
@@ -0,0 +1,145 @@
+% Version: March 16, 1989
+% rep10.sty 23 Sep 85
+\lineskip 1pt \normallineskip 1pt
+\def\baselinestretch{1}
+
+\def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt
+\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt}
+
+\def\small{\@setsize\small{11pt}\ixpt\@ixpt
+\abovedisplayskip 8.5pt plus 3pt minus 4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus2pt\belowdisplayshortskip 4pt plus2pt minus 2pt
+\def\@listi{\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+\def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt
+\abovedisplayskip 6pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 3pt plus 1pt minus
+2pt
+\def\@listi{\topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
+\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
+\normalsize
+
+\if@twoside \oddsidemargin 44pt \evensidemargin 82pt \marginparwidth 107pt
+\else \oddsidemargin 63pt \evensidemargin 63pt
+ \marginparwidth 90pt
+\fi
+\marginparsep 11pt
+ \topmargin 27pt \headheight 12pt \headsep 25pt \footheight 12pt \footskip
+30pt
+
+\textheight 528pt \textwidth 345pt \columnsep 10pt \columnseprule 0pt
+
+\footnotesep 6.65pt
+\skip\footins 9pt plus 4pt minus 2pt
+\floatsep 12pt plus 2pt minus 2pt \textfloatsep 20pt plus 2pt minus 4pt
+\intextsep 12pt plus 2pt minus 2pt \@maxsep 20pt \dblfloatsep 12pt plus 2pt
+minus 2pt \dbltextfloatsep 20pt plus 2pt minus 4pt \@dblmaxsep 20pt
+\@fptop 0pt plus 1fil \@fpsep 8pt plus 2fil \@fpbot 0pt plus 1fil
+\@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil
+\marginparpush 5pt
+
+\parskip 0pt plus 1pt \parindent 15pt \topsep 8pt plus 2pt minus 4pt
+\partopsep 2pt plus 1pt minus 1pt \itemsep 4pt plus 2pt minus 1pt
+\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301
+\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty
+-\@lowpenalty
+
+\def\part{\cleardoublepage \thispagestyle{plain} \if@twocolumn \onecolumn
+\@tempswatrue \else \@tempswafalse \fi \hbox{}\vfil \bgroup \centering
+\secdef\@part\@spart}
+
+\def\@part[#1]#2{\ifnum \c@secnumdepth >-2\relax \refstepcounter{part}
+\addcontentsline{toc}{part}{\thepart \hspace{1em}#1}\else
+\addcontentsline{toc}{part}{#1}\fi \markboth{}{}
+ \ifnum \c@secnumdepth >-2\relax \huge\bf Part \thepart \par \vskip 20pt \fi
+\Huge \bf #1\@endpart}
+\def\@endpart{\par\egroup \vfil\newpage \if@twoside \hbox{}
+\thispagestyle{empty}
+ \newpage
+ \fi \if@tempswa \twocolumn \fi}
+\def\@spart#1{\Huge \bf #1\@endpart}
+
+
+\def\@makechapterhead#1{ \vspace*{50pt} { \parindent 0pt \raggedright
+ \ifnum \c@secnumdepth >\m@ne \huge\bf \@chapapp{} \thechapter \par
+ \vskip 20pt \fi \Huge \bf #1\par
+ \nobreak \vskip 40pt } }
+
+\def\@makeschapterhead#1{ \vspace*{50pt} { \parindent 0pt \raggedright
+ \Huge \bf #1\par
+ \nobreak \vskip 40pt } }
+
+\def\chapter{\clearpage \thispagestyle{plain} \global\@topnum\z@
+\@afterindentfalse \secdef\@chapter\@schapter}
+\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{chapter}
+ \typeout{\@chapapp\space\thechapter.}
+ \addcontentsline{toc}{chapter}{\protect
+ \numberline{\thechapter}#1}\else
+ \addcontentsline{toc}{chapter}{#1}\fi
+ \chaptermark{#1}
+ \addtocontents{lof}{\protect\addvspace{10pt}}
+\addtocontents{lot}{\protect\addvspace{10pt}} \if@twocolumn
+\@topnewpage[\@makechapterhead{#2}]
+ \else \@makechapterhead{#2}
+ \@afterheading \fi}
+\def\@schapter#1{\if@twocolumn \@topnewpage[\@makeschapterhead{#1}]
+ \else \@makeschapterhead{#1}
+ \@afterheading\fi}
+
+\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus
+ -.2ex}{2.3ex plus .2ex}{\Large\bf}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus
+ -.2ex}{1.5ex plus .2ex}{\large\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
+-1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\bf}}
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}}
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus
+ .2ex}{-1em}{\normalsize\bf}}
+
+\def\chaptermark#1{}
+
+\setcounter{secnumdepth}{2}
+
+\def\appendix{\par
+ \setcounter{chapter}{0}
+ \setcounter{section}{0}
+ \def\@chapapp{Appendix}
+ \def\thechapter{\Alph{chapter}}}
+
+
+\leftmargini 25pt
+\leftmarginii 22pt \leftmarginiii 18.7pt \leftmarginiv 17pt \leftmarginv 10pt
+\leftmarginvi 10pt
+\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+\labelsep 5pt
+\parsep 4pt plus 2pt minus 1pt
+\def\@listi{\leftmargin\leftmargini}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 4pt plus 2pt minus 1pt
+ \parsep 2pt plus 1pt minus 1pt
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 2pt plus 1pt minus 1pt
+ \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
+ \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}
+
diff --git a/macros/latex209/contrib/misc/apsabstract.sty b/macros/latex209/contrib/misc/apsabstract.sty
new file mode 100644
index 0000000000..7425139d1f
--- /dev/null
+++ b/macros/latex209/contrib/misc/apsabstract.sty
@@ -0,0 +1,428 @@
+% APS abstract style. June 26, 1989.
+% Written by
+% Charles Karney
+% Plasma Physics Laboratory Phone: +1 609 243 2607
+% Princeton University MFEnet: Karney@PPC.MFEnet
+% PO Box 451 Internet: Karney%PPC.MFEnet@NMFECC.LLNL.GOV
+% Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFEnet@LBL.Bitnet
+% with contributions from Cris Barnes and Tom Murphy.
+
+\typeout{Document Substyle 'APS abstract'. Released 26 June 1989}
+
+% ******************** User documentation ********************
+
+% APSABSTRACT: LaTeX style for abstracts submitted to American Physical
+% Society conferences.
+
+% Summary. This following is a minimal abstract.
+
+% \documentstyle[11pt,apsabstract,dpp1989]{article}
+
+% \submittedby{Charles F. F. Karney}
+% \submittedaddress{Princeton Plasma Physics Laboratory\\
+% P.O. Box 451\\Princeton, NJ 08543-0451}
+% \category{1.6/T}
+% \theory % or \experiment or both
+% \preferposter % or \preferoral or \nopreference
+% \title{Current drive efficiency in a hot plasma\thanks
+% {This work supported by DoE contract No.\ DE--AC02--76--CHO--3073.}}
+% \author{C. F. F. Karney and B. J. Braams}
+% \affiliation{Princeton University}
+
+% \begin{document}
+% \maketitle
+% Body of abstract. (This can include equations, bibliography, etc.)
+% \end{document}
+
+% Details.
+
+% Specify apsabstract,dpp1989 (in this order) as optional arguments to
+% \documentstyle, e.g.,
+% \documentstyle[11pt,apsabstract,dpp1989]{article}
+% (apsabstract contains the formatting commands. dpp1989 includes the
+% information specific by the 1989 DPP meeting.) 11pt is the prefered size.
+
+% Place various declarations between \documentstyle and \begin{document}.
+% These are mostly self explanatory:
+
+% \invitedabstract: If this is an invited abstract (print in landscape
+% mode). Many of the fields (\category, \preferposter, etc.) are
+% irrelevant and are ignored.
+
+% \submittedby{name}: Name of APS member submitting abstract
+% \submittedaddress{address}: and his address (lines separated with \\)
+% \category{number}: The subject category number
+
+% \theory or \experiment or both: To get one of the experiment/theory
+% boxes checked (optional)
+% \preferposter or \preferoral or \nopreference: Ditto
+
+% \placement{placment instructions}: optional
+% \specialfacilities{special facilities}: optional
+% \otherrequests{other requests}: optional
+
+% \title{title}: The title of the abstract. Probably should include
+% something like
+% \thanks{This work supported by DoE contract
+% No.\ DE--AC02--76--CHO--3073.}
+% \author{authors}: Author list punctuated with commas (and `and')
+% \affiliation{Princeton University}: Affiliation
+
+% For papers with authors from more than one institution, you can use
+% footnotes to indicate the affiliation of the minorities (via \thanks). If
+% you want to list multiple affiliations in the heading, then use
+% \affiliation to specify the last institution and include the other
+% institutions in the author list (in italics). Thus
+% \author{A. Shadrack, B. Misheck,
+% C. Abednego, {\it Princeton University}, and
+% N. Nebuchadnezzar}
+% \affiliation{Babylonian Institute of Furnaces}
+
+% Stick \maketitle between \begin{document} and the body of the abstract.
+
+% Pretty much anything can go into the body of the abstract. LaTeX thinks
+% you are merely typing an ordinary paper that happens to have a small
+% \textheight and \texwidth.
+
+% LaTeX normally sets footnotes in \footnotesize. This is probably too
+% small considering that APS abstracts get reduced when printed in the
+% Bulletin of the APS. Therefore, both footnotes and references are set in
+% \referencesize, which apsabstract.sty defines to be \normalsize. If you
+% would like these set smaller, try
+% \renewcommand{\referencesize}{\small}
+
+% You'll know if your abstract is too long if it spills over onto a second
+% page. Try changing to 10pt type. Or else, reduce the baseline separation
+% with \renewcommand{\baselinestretch}{0.9}.
+
+% A complete abstract is given in tex$doc:apstest.tex.
+
+% ******************** End of user documentation ********************
+
+% SEE END OF FILE FOR INSTALLER'S INSTRUCTIONS
+
+\textwidth=120mm \textheight=105mm % APS rules
+
+\oddsidemargin=25mm \topmargin=-15mm
+\parskip=0pt
+\headheight=31mm
+\headsep=5ex
+\onecolumn \raggedbottom \sloppy
+\def\baselinestretch{1}
+
+\newif\if@invited \@invitedfalse
+\def\invitedabstract{\@invitedtrue
+ \textheight=4.7in \textwidth=8.2in % Invited abstracts are larger
+ \headsep=2ex % The title etc. is part of the header
+ \parindent=0pt % First line of body is not indented
+ \headheight=40mm
+ \topmargin=0mm
+ \oddsidemargin=11mm
+}
+
+% All the field declarations
+
+\def\conference#1{\gdef\@conference{#1}} \conference{}
+\def\location#1{\gdef\@location{#1}} \location{}
+\def\date#1{\gdef\@date{#1}} \date{}
+\def\mailto#1{\gdef\@mailto{#1}} \mailto{}
+\def\receiptdate#1{\gdef\@receiptdate{#1}} \receiptdate{}
+
+\def\category#1{\gdef\@category{#1}} \category{}
+\def\submittedby#1{\gdef\@submittedby{#1}} \submittedby{}
+\def\submittedaddress#1{\gdef\@submittedaddress{#1}} \submittedaddress{}
+
+\def\title#1{\gdef\@title{#1}} \title{}
+\def\author#1{\gdef\@author{#1}} \author{}
+\def\affiliation#1{\gdef\@affiliation{#1}} \affiliation{}
+
+\def\experiment{\gdef\@experiment{y}}
+\def\theory{\gdef\@theory{y}}
+\gdef\@experiment{}\gdef\@theory{}
+
+\def\preferposter
+ {\gdef\@preferposter{y}\gdef\@preferoral{}\gdef\@nopreference{}}
+\def\preferoral
+ {\gdef\@preferposter{}\gdef\@preferoral{y}\gdef\@nopreference{}}
+\def\nopreference
+ {\gdef\@preferposter{}\gdef\@preferoral{}\gdef\@nopreference{y}}
+\gdef\@preferposter{}\gdef\@preferoral{}\gdef\@nopreference{}
+
+\def\placement#1{\gdef\@placement{#1}} \placement{}
+\def\specialfacilities#1{\gdef\@specialfacilities{#1}}\specialfacilities{}
+\def\otherrequests#1{\gdef\@otherrequests{#1}} \otherrequests{}
+
+% Most of the formatting goes into the header and footer.
+% Define the myheadings to get the top and bottom typeset
+
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+\def\@oddhead{\@maketop}\def\@oddfoot{\@makebottom}%
+\def\@evenhead{}\def\@evenfoot{}}
+\pagestyle{myheadings}
+
+% Need to define \pagenumbering even though pagestyle is empty
+% in order to get \thepage defined
+
+\pagenumbering{arabic}
+
+% Boxes with/without X's
+
+\newbox\@emptybox \newbox\@fullbox
+
+\setbox\@emptybox=\hbox{\lower1.5pt
+ \hbox{\unitlength=10pt\begin{picture}(1,1)(0,0)
+ \put(0,0){\framebox(1,1){}}\end{picture}}}
+\setbox\@fullbox=\hbox{\lower1.5pt
+ \hbox{\unitlength=10pt\begin{picture}(1,1)(0,0)
+ \put(0,0){\line(1,1){1}}\put(1,0){\line(-1,1){1}}
+ \put(0,0){\framebox(1,1){}}\end{picture}}}
+
+\def\@checkedbox{\copy\@fullbox}
+\def\@uncheckedbox{\copy\@emptybox}
+
+\def\@choosebox#1{\ifx\@empty#1\@uncheckedbox\else\@checkedbox\fi}
+
+% Top matter
+
+\def\@maketop{\hbox to \hsize{\hss
+ \vbox{\if@invited\else\hsize=180 mm \fi
+ \xpt\baselineskip=12pt\maketop}\hss}}
+\def\maketop{%
+ {\centering
+ {\xipt\bf\if@invited Invited \fi\@conference\\[1ex]
+ \ifx\@empty\@location \else\@location, \fi % Location field is optional
+ \@date}\\[2ex]
+ \if@invited\vspace{7ex}\noindent\box\@titlebox\else
+ Category Number and Subject%
+ \ifx\@empty\@category\ \rule{5cm}{0.4pt} \relax\else
+ : {\xipt \@category} \fi\\[1ex]
+ \noindent
+ \@choosebox{\@theory}\ Theory\qquad
+ \@choosebox{\@experiment}\ Experiment \\ \fi
+ }}
+
+% Bottom matter
+
+\def\@makebottom{\if@invited\else\hbox to \hsize{\hss
+ \vbox{\hsize=180 mm \xpt\baselineskip=12pt \makebottom}\hss}\fi}
+\def\makebottom{%
+ {\vspace{\headsep}
+ \def\rrule{\penalty0
+ \rule{0pt}{15pt}\rule{57mm}{0.4pt}}\parindent=0pt\parskip=0pt
+ \hspace{18mm}
+ \begin{minipage}[t]{65mm}\raggedright\sloppy
+ \def\@para##1{\par\noindent\hangindent=6mm
+ \hbox to \hangindent{##1\hfil}}
+ \@para{\@choosebox{\@preferposter}}Prefer Poster Session
+ \@para{\@choosebox{\@preferoral}}Prefer Oral Session
+ \@para{\@choosebox{\@nopreference}}No Preference
+ \@para{\@choosebox{\@placement}}This poster/oral should be
+ placed in the following grouping:
+ \@para{}\ifx\@empty\@placement\rrule\rrule\else
+ {\xipt\bf \@placement}\fi
+ \@para{\@choosebox{\@specialfacilities}}Special Facilities Requested
+ \@para{}\ifx\@empty\@specialfacilities\rrule\rrule\else
+ {\xipt\bf \@specialfacilities}\fi
+ \@para{\@choosebox{\@otherrequests}}Other Special Requests
+ \@para{}\ifx\@empty\@otherrequests\rrule\rrule\else
+ {\xipt\bf \@otherrequests}\fi
+ \end{minipage}%
+ \hspace{25mm}%
+ \begin{minipage}[t]{65mm}
+ Submitted by:\par
+ \vspace{30pt}\hrule
+ (\strut Signature of APS Member) \par
+ \begin{flushleft}
+ \@submittedby\\\@submittedaddress
+ \end{flushleft}
+ \end{minipage}
+ }
+ \par\vspace{10pt}\noindent
+ {\xipt
+ This form, or a reasonable facsimile, plus {\large\bf TWO XEROX COPIES},
+ must be received by {\large\bf NO LATER THAN NOON}, \@receiptdate\
+ at the following address:\par}
+ \begin{flushleft}\leftskip=18mm\relax
+ \@mailto
+ \end{flushleft}
+}
+
+\let\abstract\relax % So text can optionally be put in abstract environment
+
+% Set the title
+
+\def\maketitle{\par
+ \begingroup
+ \def\@makefnmark{\hbox
+ to 0pt{$^{\@thefnmark}$\hss}}
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle \fi\thispagestyle{myheadings}\@thanks
+ \endgroup
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax\@gobblecr}
+
+\long\def\@gobble#1{} % So gobble can discard a \par
+
+\newbox\@titlebox
+
+\def\@maketitle{\if@invited
+ \newpage\par\global\setbox\@titlebox
+ \vbox{\hsize\columnwidth \@parboxrestore
+ {\large\bf \@title.}\strut\par
+ {\sc\@author}, {\it\@affiliation}\strut\par}
+\else
+ \newpage\par\noindent\kern .67in % 8 spaces at 12 chars/in
+ \relax{\large\bf\@title}\@.
+ {\sc\@author}, {\it\@affiliation}---%
+\fi}
+
+% Footnotes are handled by putting them in \box\@footins. This is spat out
+% either by the bibliography or by \end{document}
+
+\newbox\@footins % Declare a box for the footnotes
+
+\def\thefootnote{\fnsymbol{footnote}} % Use symbols for footnotes
+
+% Redefine \LaTeX's \@footnotetext
+\long\def\@footnotetext#1{\global\setbox\@footins
+ \vbox{\unvbox\@footins
+ \referencesize
+ \hsize\columnwidth \@parboxrestore
+ \edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}\@makefntext
+ {\rule{\z@}{\footnotesep}\ignorespaces #1\strut}}}
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ $^{\@thefnmark}$#1}
+
+% The citations handled with superscript numbers as in aip style.
+% In addition, we have to put out the footnotes.
+
+\def\newblock{}
+
+\def\thebibliography#1{\vskip\skip\footins\footnoterule\unvbox\@footins
+\setcounter{biblionum}{0}\frenchspacing\referencesize}
+\let\endthebibliography=\par
+
+\@definecounter{biblionum}
+\def\@bibnum{\arabic{biblionum}}
+\def\bibitem#1{\stepcounter{biblionum}\par\noindent
+ $\m@th^{\@bibnum}$%
+ \if@filesw \immediate\write\@auxout
+ {\string\bibcite{#1}{\@bibnum}}\fi\ignorespaces}
+% Still using aip style citations
+\def\@cite#1#2{\unskip\nobreak\relax
+ \def\@tempa{$\m@th^{\hbox{\the\scriptfont0 #1}}$}%
+ \futurelet\@tempc\@citexx}
+\let\citea=\@cite
+\def\@citexx{\ifx.\@tempc\let\@tempd=\@citepunct\else
+ \ifx,\@tempc\let\@tempd=\@citepunct\else
+ \let\@tempd=\@tempa\fi\fi\@tempd}
+\def\@citepunct{\@tempc\edef\@sf{\spacefactor=\the\spacefactor\relax}\@tempa
+ \@sf\@gobble}
+\def\citenum#1{{\def\@cite##1{##1}\cite{#1}}}
+
+% Add check for \@footins in \enddocument
+\def\enddocument{\@checkend{document}
+\ifvoid\@footins\else\vskip\skip\footins\footnoterule\unvbox\@footins\fi
+\clearpage\begingroup
+\if@filesw \immediate\closeout\@mainaux
+\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
+\def\bibcite{\@testdef b}\@tempswafalse \makeatletter\input \jobname.aux
+\if@tempswa \@warning{Label(s) may have changed. Rerun to get
+cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
+
+\let\referencesize\normalsize
+
+\endinput
+
+******************** INSTALLER'S INSTRUCTIONS ********************
+
+Put this file, apsabstract.sty into your standard texinputs directory. You
+might want to extract the user documentation from the top of this file,
+edit it where appropriate and place it somewhere canonical (in your Local
+Guide, INFO system, or wherever). You need to create a file describing the
+conference. Here is a typical example, dpp1989.sty, for the 1989 Division
+of Plasma Physics meeting. The format should be obvious.
+
+******************** dpp1989.sty ********************
+
+\conference{Abstract Submitted for the Thirty-first Annual Meeting\\
+ Division of Plasma Physics}
+
+\date{November 13--17, 1989}
+
+\location{Anaheim, California} % This is optional
+
+\mailto{Saralyn Stewart \\
+Institute for Fusion Studies \\
+RLM 11.234 \\
+The University of Texas at Austin \\
+Austin, TX\ \ 78712\\
+Telephone: (512) 471-4378}
+
+\receiptdate{Monday, July 10, 1989}
+
+******************** End of dpp1989.sty ********************
+
+Here is the example refered to in the user documentation,
+tex$doc:apstest.tex:
+
+******************** apstest.tex ********************
+
+% Test of APS abstract styles
+
+\documentstyle[11pt,apsabstract,dpp1989]{article}
+
+\newcommand{\DOEcredit}{This work supported by DoE contract
+No.\ DE--AC02--76--CHO--3073.}
+
+\submittedby{Charles F. F. Karney}
+\submittedaddress{Princeton Plasma Physics Laboratory\\
+P.O. Box 451\\Princeton, NJ 08543-0451}
+
+\category{1.6/T}
+
+\theory % one or both of \theory or \experiment
+\preferposter % one of \preferposter or \preferoral or \nopreference
+
+% These three are optional
+\placement{next to paper by B. J. Braams and C. F. F. Karney}
+\specialfacilities{35mm movie projector}
+\otherrequests{Please schedule on Monday morning}
+
+
+\title{Current drive efficiency in a hot plasma\thanks{\DOEcredit}}
+
+\author{C. F. F. Karney and B. J. Braams}
+
+\affiliation{Princeton University}
+
+\begin{document}
+
+\maketitle
+
+The efficiency of current drive by rf waves may be computed by means of a
+response function \cite{AntChu82}. Here we use the response function
+calculated for a relativistic plasma \cite{BraKar87} to calculate the
+efficiency of current drive by lower-hybrid and electron-cyclotron waves in
+a hot reactor plasma. The results are compared to those obtained by
+neglecting either relativistic effects or the self-consistent reaction of
+the bulk on the tail electrons.
+
+\begin{thebibliography}{1}
+
+\bibitem{AntChu82} T. M. Antonsen and K. R. Chu, Phys.\ Fluids {\bf 25},
+1295 (1982).
+
+\bibitem{BraKar87} B. J. Braams and C. F. F. Karney, Phys.\ Rev.\ Lett.\
+{\bf 59}, 1817 (1987).
+
+\end{thebibliography}
+
+\end{document}
+
+******************** End of apstest.tex ********************
diff --git a/macros/latex209/contrib/misc/astyped.sty b/macros/latex209/contrib/misc/astyped.sty
new file mode 100644
index 0000000000..4ad22ba567
--- /dev/null
+++ b/macros/latex209/contrib/misc/astyped.sty
@@ -0,0 +1,23 @@
+%%%%%%%%%%%%%%%%%%%%%% @(#)astyped.sty 1.3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ASTYPED DOCUMENT-STYLE OPTION - released 88/06/30
+% for LaTeX version 2.09
+% Based on Leslie Lamport's verbatim environment in latex.tex.
+
+% Defines the `astyped' environment, which is like the `verbatim'
+% environment except most of the special characters have their usual meanings.
+% Space, ^K, and ^A are the only specials changed.
+
+\def\astyped{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
+\leftskip\@totalleftmargin\rightskip\z@
+\parindent\z@\parfillskip\@flushglue\parskip\z@
+\@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par}
+\obeylines \tt \catcode``=13 \@noligs \let\do\@makeother \do\ \do\^^K\do\^^A
+ \frenchspacing\@vobeyspaces}
+
+\let\endastyped=\endtrivlist
+
+% Used inside astyped environments for normal formatting of a line.
+% I wish I could give space its normal catcode within \notastyped.
+\def\notastyped#1{\mbox{\rm #1}}
+
diff --git a/macros/latex209/contrib/misc/at.sty b/macros/latex209/contrib/misc/at.sty
new file mode 100644
index 0000000000..50f9899e2c
--- /dev/null
+++ b/macros/latex209/contrib/misc/at.sty
@@ -0,0 +1,52 @@
+% at.sty Colin Hogben (chah@jet.uk)
+% 12-Aug-91 First version
+% 20-Mar-92 Fixed to allow for \headheight
+% 06-Jul-93 \@useat only used in case of any \at material (B.Gaulle)
+%
+% \at(HPOS,VPOS){TEXT}
+% Positions TEXT at an absolute distance of HPOS from the left edge
+% and VPOS from the top edge of the current page.
+%
+% Example:
+% \at(2cm,5cm){\parbox[t]{10cm}{
+% Name\\ % Recipient's name and address positioned
+% Address\\etc.}} % suitably for a windowed envelope
+% -----------------------------------------------------------------
+%
+% First create a box in which to store absolute positioned material.
+%
+\newbox\@atbox
+\newif\ifat\atfalse% --bg
+%
+% at(HPOS,VPOS){TEXT}
+% Add the TEXT to the box with suitable offsets applied.
+%
+\long\def\at(#1,#2)#3{\setbox\@atbox=\hbox
+ {\unhbox\@atbox
+ \vtop to 0pt{\kern #2\hbox to 0pt{\kern #1\relax #3\hss}\vss}}%
+ \attrue}% --bg
+%
+% Unload the saved absolute-positioned material.
+% Teleport to the actual top corner of the page by undoing the header
+% separation, the top and side margins, and the mysterious 1 inch
+% offset applied to each. Then make it look like a singularity (zero
+% height, depth and width).
+%
+\def\@useat{\ifat% --bg
+ \vtop to 0pt{\kern-\headsep \kern-\topmargin \kern-\headheight \kern-1in
+ \hbox to 0pt{\kern-\@themargin \kern-1in \unhbox\@atbox \hss}\vss}%
+ \fi\atfalse}% --bg
+%
+% The following is a copy of the latex.tex \output routine except for
+% line 1: this prepends the shifted absolute material to the current
+% page. A little unsafe to copy code like this, but I couldn't work
+% out where else to insert the box.
+%
+\output{\setbox255=\vbox{\@useat \unvbox255}%
+ \ifnum\outputpenalty <-\@M\@specialoutput\else%
+ \@makecol\@opcol\@floatplacement\@startcolumn%
+ \@whilesw\if@fcolmade \fi{\@opcol\@startcolumn}\fi%
+ \global\vsize\ifnum\outputpenalty >-\@Miv \@colroom%
+ \else \maxdimen\fi}%
+%
+\endinput% --bg
diff --git a/macros/latex209/contrib/misc/balanced.sty b/macros/latex209/contrib/misc/balanced.sty
new file mode 100644
index 0000000000..ae5244253d
--- /dev/null
+++ b/macros/latex209/contrib/misc/balanced.sty
@@ -0,0 +1,61 @@
+% The twocolumns environment can be used anywhere in a one column document to
+% produce two column output. The twocolumns environment may extend for an
+% unlimited number of pages, and start and finish mid-page. Columns are
+% always balanced. The code works very hard to avoid two-column ``widows''
+% and ``orphans''. No inserts are supported (haven't worked out where to put
+% them yet).
+
+\newbox\partialpage
+\newbox\leftcolumn
+\newdimen\dimen@
+\newdimen\colsize
+\newdimen\lastpageshrink
+\newdimen\dimend
+\newenvironment{twocolumns}{\begingroup \global\@twocolumntrue
+\def\fps@table{t}
+ \pagegoal=2\textheight
+ \lastpageshrink=\pageshrink
+ \output={\global\setbox\partialpage=\vbox{\unvbox255}}\penalty-10000%
+ \def\columnout{\trycolumnout}%
+ \output={\columnout}%
+ \hsize=\textwidth \advance\hsize-\columnsep \divide\hsize by 2
+ \columnwidth=\hsize \linewidth=\hsize
+ \global\colsize=\textheight
+ \global\advance\colsize by-\ht\partialpage
+ \vsize=\colsize
+ \global\advance\vsize by\lastpageshrink
+ \multiply\vsize by2}%
+% \end{twocolumns}
+ {\pagegoal=4\textheight
+ \output={\balancecolumns\pagesofar}\break
+ \endgroup \global\vsize=\textheight \pagegoal=\vsize}
+
+\def\pagesofar{\unvbox\partialpage%
+ \wd0=\hsize \wd2=\hsize \hbox to\textwidth{\box0\hfil\box2}}
+\def\balancecolumns{\setbox0\vbox{\unvbox255} \dimen@=\ht0
+ \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by2 \splittopskip=\topskip
+ {\vbadness=10000 \loop \global\setbox3=\copy0
+ \global\setbox1=\vsplit3 to\dimen@
+ \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt\repeat}
+ \ifdim\dimen@>\textheight \dimen@=\textheight\fi
+ \setbox0=\vbox to \dimen@{\unvbox1} \setbox2=\vbox to \dimen@{\unvbox3}
+ \if\ht0>\ht2\setbox2=\vbox to\ht0{\unvbox2}\else
+ \if\ht2>\ht0\setbox0=\vbox to\ht2{\unvbox0}\fi\fi}
+
+\def\trycolumnout{%
+% \@dblfloatplacement
+ \global\def\columnout{\leftcolumnout}
+ \global\vsize=\colsize
+ \unvbox255\penalty\outputpenalty}
+\def\leftcolumnout{%
+ \global\def\columnout{\rightcolumnout}
+ \global\setbox\leftcolumn=\vbox to\vsize{\unvbox255}}
+\def\rightcolumnout{%
+ \global\def\columnout{\trycolumnout}
+ \setbox0=\box\leftcolumn
+ \setbox2=\vbox to \vsize{\unvbox255}
+ \setbox\@outputbox=\vbox{\pagesofar}\@outputpage
+ \global\colsize=\textheight
+ \global\vsize=2\colsize}
+
diff --git a/macros/latex209/contrib/misc/bar.sty b/macros/latex209/contrib/misc/bar.sty
new file mode 100644
index 0000000000..c8271ca86e
--- /dev/null
+++ b/macros/latex209/contrib/misc/bar.sty
@@ -0,0 +1,548 @@
+% BAR.STY --- Style File zum Setzen von Balkendiagrammen
+% Autor: J. Bleser, E. Lang
+% Hochschulrechenzentrum
+% Technische Hochschule Darmstadt
+% !!! Dieses Style-File ist urheberrechtlich geschuetzt !!!
+% !!! Aenderungen nur mit Zustimmung der Autoren !!!
+\typeout{Option BAR, Version 1.0 Sep. 92, J.Bleser, TH Darmstadt, HRZ}
+\typeout{bug fix for CTAN April 1994 (SPQR, for David Carlisle)}
+\newcount\breite \newcount\hoehe \newcount\tiefe
+\newcount\lhoehe \newcount\anzbar \newcount\hbarI
+\newcount\xpos \newcount\lxpos \newcount\halfbreite
+\newcount\ypos \newcount\lypos
+\newcount\tmpa \newcount\tmpb \newcount\tmpc
+\newcount\tmpd \newcount\tmpe
+\newcount\xmin \newcount\xmax \newcount\xstep
+\newcount\deltax \newcount\yhoehe %
+\newcount\ymin \newcount\ymax \newcount\ystep
+\newcount\yminII \newcount\ymaxII \newcount\deltay
+\newcount\ymove \newcount\xmove \newcount\inter
+\newcount\exact \newcount\xexact
+\newdimen\dtmpa \newdimen\dtmpb
+\newdimen\dmin \newdimen\dmax \newdimen\dstep
+\newdimen\dxmin \newdimen\dxmax \newdimen\dxstep
+\newdimen\faktor \newdimen\dinter
+\newbox\mybox \newbox\xbox \newbox\ybox
+\newif\if@xaxis \newif\if@yaxis
+\newif\if@hlineon
+\newif\iffaktor\faktorfalse
+
+
+\def\setnumberpos#1{\def\my@number{\expandafter\csname my@#1\endcsname}}
+\def\my@number{\my@outside}
+
+
+\def\m@nth{month}\def\d@y{day}
+\def\setxvaluetyp#1{\gdef\x@value{#1}%
+ \ifx\x@value\m@nth\let\myx@value\Monat@%
+ \else\ifx\x@value\d@y\let\myx@value\Tag@%
+ \else\let\myx@value\Zahl@n%
+ \fi%
+ \fi%
+}
+
+
+\def\solid{solid}\gdef\l@style{\relax}
+\def\setlinestyle#1{\gdef\l@style{#1}%
+ \ifx\l@style\solid\let\my@lstyle=\mylinebox%
+ \else\let\my@lstyle=\mydotbox%
+ \fi%
+}
+
+
+\def\setwidth#1{\global\breite=#1%
+ \ifdim\dinter>0pt\inter\dinter\multiply\inter\breite\divide\inter65536\fi%
+ \halfbreite\breite\divide\halfbreite2%
+}
+
+
+\def\setdepth#1{\ifnum#1<10\global\tiefe=0\else\global\tiefe=#1\fi}
+
+
+\def\setstretch#1{\global\faktor=#1pt\faktortrue}
+
+
+\def\setstyle#1{\def\my@style{#1}}
+\def\my@style{\tt}
+
+
+\def\setprecision#1{\global\exact=#1}
+\exact=0
+
+
+\def\sethspace#1{\dinter#1pt\dtmpa#1pt\multiply\dtmpa\breite%
+ \inter\dtmpa\divide\inter65536%
+}
+
+
+\def\setxname{\@ifnextchar [{\isetxname}{\isetxname[]}}
+\def\isetxname[#1]#2{\global\setbox\xbox=\hbox{\makebox(0,0)[#1]{#2}}}
+
+
+\def\setyname{\@ifnextchar [{\isetyname}{\isetyname[l]}}
+\def\isetyname[#1]#2{\global\setbox\ybox=\hbox{\makebox(0,0)[#1]{#2}}}
+
+
+\newcount\vorz %
+\def\setyaxis{\@ifnextchar [{\i@setyaxis}{\i@setyaxis[0]}}
+\def\i@setyaxis[#1]#2#3#4{%
+ \dmin#2\faktor\ymin\dmin\divide\ymin by65536%
+ \dmax#3\faktor\ymax\dmax\divide\ymax by65536%
+ \ifnum\ymin>\ymax\vorz-1\else\vorz1\fi%
+ \ifnum\ymin>0\ymin-\ymin\fi%
+ \ifnum\ymax<0\ymax-\ymax\fi%
+ \dstep#4\faktor\ystep\dstep\divide\ystep by65536%
+ \ifnum\ystep<0\ystep-\ystep\fi%
+ \@yaxistrue%
+ \setbox0=\hbox{\the\ymax}\setbox1=\hbox{\the\ymin}
+ \ifdim\wd0>\wd1\xmove=\wd0\else\xmove=\wd1\fi%
+ \divide\xmove by65536\advance\xmove by4%
+ \global\xmove=\the\xmove%
+ \deltay\ymax\advance\deltay-\ymin\tmpb\deltay%
+ \divide\deltay\ystep%
+ \advance\deltay by1%
+ \dmin=#2pt\dstep=#4pt%
+ \thicklines%
+ \multiput(0,\ymin)(0,\ystep){\deltay}{\line(-1,0){4}%
+ \put(-6,0){\makebox(0,0)[r]{{\my@style\dimIIreal\dmin}}%
+ \global\advance\dmin by\dstep}}%
+ \dtmpa=#1\faktor\ymove\dtmpa\divide\ymove by65536\ifnum\ymove<0\ymove=0\fi%
+ \tmpa\ymin\advance\tmpa by-\ymove\advance\tmpb by\ymove%
+ \global\yhoehe\tmpb %
+ \put(0,\tmpa){\line(0,1){\tmpb}}%
+ \thinlines%
+}
+
+
+\def\setxaxis#1#2#3{%
+ \dxmin#1pt\dxmax#2pt\dxstep#3pt\global\xexact\exact%
+ \@xaxistrue\let\mytmp@style=\my@style%
+}
+
+
+\def\hlineon{\global\@hlineontrue}
+
+
+\def\bar#1#2{\@ifnextchar [{\@bar{#1}{#2}}{\@bar{#1}{#2}[]}}
+\def\@bar#1#2[#3]{%
+ \dtmpa#1\faktor\hoehe\dtmpa\divide\hoehe by65536%
+ \multiply\hoehe\vorz%
+ \ypos0\def\@user{#1}%
+ \ifnum\hoehe<\yminII\yminII=\hoehe\fi\ifnum\hoehe>\ymaxII\ymaxII=\hoehe\fi%
+ \ifnum\anzbar=0\hbarI=\hoehe\fi%
+ \ifnum#2>-1%
+ \ifnum\hoehe<0\ypos=\hoehe\tmpa=-\hoehe\else\tmpa=\hoehe\fi%
+ \ifnum #2=1\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}\fi%
+ \ifnum #2=2\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
+ \tmpc=\breite\divide\tmpc by3\tmpb=\xpos\advance\tmpb by1%
+ \multiput(\tmpb,\ypos)(3,0){\tmpc}{\line(0,1){\tmpa}}%
+ \fi
+ \ifnum #2=3\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
+ \tmpc=\tmpa\divide\tmpc by3\tmpb=\ypos\advance\tmpb by1%
+ \multiput(\xpos,\tmpb)(0,3){\tmpc}{\line(1,0){\breite}}%
+ \fi
+ \ifnum #2=4\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
+ \tmpc=\breite\divide\tmpc by3\tmpb=\xpos\advance\tmpb by1%
+ \multiput(\tmpb,\ypos)(3,0){\tmpc}{\line(0,1){\tmpa}}%
+ \tmpc=\tmpa\divide\tmpc by3\tmpb=\ypos\advance\tmpb by1%
+ \multiput(\xpos,\tmpb)(0,3){\tmpc}{\line(1,0){\breite}}%
+ \fi
+ \ifnum #2=5\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
+ \tmpc=\breite\divide\tmpc by4\tmpb=\xpos\advance\tmpb by1%
+ \multiput(\tmpb,\ypos)(4,0){\tmpc}{\rule{2pt}{\tmpa pt}}%
+ \tmpc=\tmpa\divide\tmpc by4\tmpb=\ypos\advance\tmpb by1%
+ \multiput(\xpos,\tmpb)(0,4){\tmpc}{\rule{\breite pt}{2pt}}%
+ \fi
+ \ifnum #2=6\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
+ \tmpb=\breite\divide\tmpb by-2%
+ \ifnum\hoehe>0\advance\tmpb by\tmpa\fi%
+ \tmpc=\tmpa\divide\tmpc by4%
+ \multiput(\xpos,\ypos)(0,4){\tmpc}{%
+ \ifdim\@ydim<\tmpb pt\line(2,1){\breite}%
+ \else\tmpd=\@ydim\divide\tmpd by65536%
+ \ifnum\tmpd<0\else\advance\tmpd by-\tmpa\fi%
+ \multiply\tmpd by-2\line(2,1){\tmpd}%
+ \fi%
+ }%
+ \tmpb=\breite\divide\tmpb by8\tmpc=\breite\advance\tmpc by-8%
+ \tmpd=\tmpa\multiply\tmpd 2\advance\xpos by 8%
+ \multiput(\xpos,\ypos)(8,0){\tmpb}{%
+ \ifnum\tmpc<\tmpd\line(2,1){\tmpc}\else\line(2,1){\tmpd}\fi%
+ \global\advance\tmpc by-8%
+ }%
+ \advance\xpos by -8%
+ \fi%
+ \ifnum #2=7\put(\xpos,\ypos){\framebox(\breite,\tmpa){}}%
+ \tmpb=\breite\divide\tmpb by2%
+ \ifnum\hoehe>0\ypos=\hoehe\else\ypos=0\advance\tmpb by-\tmpa\fi%
+ \tmpc=\tmpa\divide\tmpc by4%
+ \multiput(\xpos,\ypos)(0,-4){\tmpc}{%
+ \ifdim\@ydim<\tmpb pt\tmpd=\@ydim\divide\tmpd by65536%
+ \ifnum\tmpd<0\advance\tmpd by\tmpa\fi%
+ \multiply\tmpd by2\line(2,-1){\tmpd}%
+ \else\line(2,-1){\breite}%
+ \fi%
+ }%
+ \tmpb=\breite\divide\tmpb by8\advance\tmpb by 1\tmpc=\breite%
+ \tmpd=\tmpa\multiply\tmpd 2%
+ \multiput(\xpos,\ypos)(8,0){\tmpb}{%
+ \ifnum\tmpc>\tmpd\line(2,-1){\tmpd}\else\line(2,-1){\tmpc}\fi%
+ \global\advance\tmpc by-8%
+ }%
+ \fi%
+ \ifnum #2=8\put(\xpos,\ypos){\rule{\breite pt}{\tmpa pt}}\fi
+ \my@number%
+ \fi%
+ \tmpc-\baselineskip\divide\tmpc 65536%
+ \divide\tmpc 2%
+ \put(\xpos,\ypos){\put(0,\tmpc){\makebox(\breite,0){#3}}}%
+ \ifnum\anzbar>0
+ \ifnum\tiefe>0
+ \ifnum\lhoehe<\hoehe
+ \ifnum\lhoehe>0\machDachI(\lxpos,\lhoehe)
+ \else\machDachI(\lxpos,0)
+ \fi
+ \else
+ \ifnum\lhoehe>0\machDachII(\lxpos,\lhoehe)
+ \else\machDachII(\lxpos,0)
+ \fi
+ \fi%
+ \fi%
+ \if@hlineon\machHLines\fi%
+ \fi%
+ \lxpos\xpos\advance\xpos\breite\advance\xpos\inter%
+ \advance\anzbar1\lhoehe\hoehe%
+}
+
+
+\newenvironment{barenv}%
+{\par%
+ \xpos0\breite40\halfbreite20\tiefe0\lhoehe0\anzbar0%
+ \yminII0\ymaxII0\inter0\dinter0pt\vorz1%
+ \exact0\ymove0\xmove0\unitlength1pt\@xaxisfalse\@yaxisfalse\@hlineonfalse%
+ \let\my@lstyle=\mydotbox\let\myx@value=\Zahl@n%
+ \faktor1pt%
+ \def\vline{\my@vline}%
+ \def\hspace{\my@hspace}%
+ \setbox\@tempboxa=\hbox\bgroup%
+ \begin{picture}(0,0)\thinlines%
+}%
+{%
+ \advance\xpos by-\inter%
+ \ifnum\tiefe>0
+ \put(\xpos,0){\line(1,1){\tiefe}}%
+%%%DPC CHANGE
+% \put(\xpos,\hoehe){\line(1,1){\tiefe}\put(0,\tiefe){\line(0,1){-\hoehe}}}%
+ \put(\xpos,\hoehe){\line(1,1){\tiefe}%
+ \put(0,\tiefe){\ifnum\hoehe<\z@\line(0,1){-\hoehe}\fi}}%
+%%%END DPC CHANGE
+ \fi%
+ \deltax=\lhoehe\bar{0}{-1}\lhoehe=\deltax%
+ \thicklines%
+ \if@yaxis\else\tmpa=\ymaxII\advance\tmpa by-\yminII\advance\tmpa by\tiefe%
+ \put(0,\yminII){\line(0,1){\tmpa}}%
+ \fi%
+ \if@xaxis%
+ \advance\ymin by-\ymove%
+ \tmpe=\exact\global\exact=\xexact%
+ \put(0,\ymin){\line(1,0){\lxpos}}%
+ \xstep=\dxstep\divide\xstep by65536%
+ \dtmpa=\dxmax\advance\dtmpa by-\dxmin%
+ \deltax=\dtmpa\divide\deltax by65536\divide\deltax by\xstep%
+ \advance\deltax by1%
+ \tmpa=\breite\divide\tmpa by2%
+ \tmpb=\breite\advance\tmpb by\inter%
+ \multiput(\tmpa,\ymin)(\tmpb,0){\deltax}{%
+ \line(0,-1){4}\myx@value\dxmin%
+ \global\advance\dxmin by\dxstep}%
+ \global\exact=\tmpe%
+ \fi%
+ \put(0,0){\line(1,0){\lxpos}}%
+ \if@xaxis\tmpa=-20\else\tmpa=-10\fi%
+ \ifvoid\xbox\else\put(\lxpos,\ymin){\put(0,\tmpa){\box\xbox}}\fi%
+ \tmpa=\ymax\advance\tmpa by6\advance\tmpa by\tiefe%
+ \ifvoid\ybox\else\put(\tiefe,\tmpa){\box\ybox}\fi%
+ \if@hlineon%
+ \ifnum\lhoehe<0%
+ \tmpb=-\ymin\advance\tmpb by\lhoehe%
+ \advance\tmpb by\ymove\divide\tmpb by\ystep%
+ \tmpa=\ymin\advance\tmpa by\tiefe\advance\tmpa by\ymove%
+ \multiput(\lxpos,\tmpa)(0,\ystep){\tmpb}{%
+ \ifdim\@ydim<\lhoehe pt%
+ \else\ypos=-\@ydim\divide\ypos by65536%
+ \advance\ypos by\lhoehe\advance\ypos by\tiefe%
+ \tmpe=\tiefe\advance\tmpe by-\ypos%
+ \ifnum\ypos>0\put(\tmpe,0){\thinlines\my@lstyle\ypos}\fi%
+ \fi%
+ }%
+ \fi%
+ \put(0,\ymin){\line(1,0){\lxpos}}%
+ \tmpa=\ymax\advance\tmpa by-\ymin%
+ \ifnum\tiefe>0
+ \put(0,\ymax){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\lxpos}%
+ \line(0,-1){\tmpa}\put(0,-\tmpa){\line(-1,-1){\tiefe}}}}%
+ \else\put(0,\ymax){\line(1,0){\lxpos}\line(0,-1){\tmpa}}%
+ \fi%
+ \thinlines%
+ \ifnum\hbarI<0\tmpa=-\ymin\advance\tmpa by\hbarI\advance\tmpa by-\tiefe%
+ \put(\tiefe,\tiefe){\line(0,1){\ymax}}%
+ \put(\tiefe,\hbarI){\line(0,-1){\tmpa}}%
+ \else\tmpa=\ymax\advance\tmpa by-\hbarI\advance\ymax by\tiefe%
+ \put(\tiefe,\ymax){\line(0,-1){\tmpa}}%
+ \ifnum\ymin<0\tmpa=\ymin%
+ \advance\tmpa by\tiefe\put(\tiefe,\tmpa){\line(0,1){-\tmpa}}%
+ \fi%
+ \fi%
+ \ifnum\hbarI<0\tmpa=\hbarI\tmpb=0\else\tmpa=0\tmpb=\hbarI\fi%
+ \tmpc=-\ymin\advance\tmpc \tmpa%
+ \ifnum\tmpc>\tiefe\tmpc=\tiefe\fi
+ \ifnum\ymove>0\put(0,\ymin){\line(1,1){\tmpc}}\fi%
+ \advance\ymin by\ymove%
+ \multiput(0,\ymin)(0,\ystep){\deltay}{%
+ \ifdim\@ydim<\tmpa pt%
+ \tmpc=-\@ydim\divide\tmpc by65536\advance\tmpc by\tmpa%
+ \ifnum\tmpc>\tiefe\tmpc=\tiefe\fi%
+ \ifx\l@style\solid\line(1,1){\tmpc}%
+ \else\divide\tmpc by 3\multiput(0,0)(3,3){\tmpc}{.}%
+ \fi%
+ \else\ifdim\@ydim>\tmpb pt%
+ \ifx\l@style\solid\line(1,1){\tiefe}%
+ \else\tmpe=\tiefe\divide\tmpe by3\multiput(0,0)(3,3){\tmpe}{.}%
+ \fi%
+ \fi%
+ \fi%
+ }%
+ \fi%
+ \thinlines%
+ \ifnum\ymaxII<\ymax\global\ymaxII=\ymax\else\global\ymaxII=\ymaxII\fi%
+ \ifnum\yminII>\ymin\global\yminII=\ymin\else\global\yminII=\yminII\fi%
+ \global\advance\yminII by-\ymove%
+ \global\xpos=\the\xpos\global\advance\xpos by20%
+ \end{picture}
+ \egroup%
+ \global\advance\ymaxII by\tiefe\advance\ymaxII by-\yminII%
+ \advance\xpos by-\breite%
+ \begin{picture}(\the\xpos,\the\ymaxII)
+ \put(\xmove,-\yminII){\box\@tempboxa}
+ \end{picture}
+ \faktorfalse
+}
+
+
+\def\legend#1#2{%
+ \begin{picture}(20,10)
+ \put(0,0){\framebox(20,10){}}
+ \ifnum #1=2\multiput(1,0)(3,0){7}{\line(0,1){10}}\fi%
+ \ifnum #1=3\multiput(0,1)(0,3){3}{\line(1,0){20}}\fi%
+ \ifnum #1=4\multiput(1,0)(3,0){7}{\line(0,1){10}}%
+ \multiput(0,1)(0,3){3}{\line(1,0){20}}%
+ \fi%
+ \ifnum #1=5\multiput(1,0)(4,0){5}{\rule{2pt}{10pt}}%
+ \multiput(0,2)(0,4){2}{\rule{20pt}{2pt}}%
+ \fi%
+ \ifnum #1=6%
+ \put(0,0){\line(2,1){20}}\put(0,4){\line(2,1){13}}\put(8,0){\line(2,1){12}}%
+ \fi%
+ \ifnum #1=7%
+ \put(0,10){\line(2,-1){20}}\put(0,6){\line(2,-1){12}}%
+ \put(8,10){\line(2,-1){12}}%
+ \fi%
+ \ifnum #1=8\put(0,0){\rule{20\unitlength}{10\unitlength}}\fi%
+ \end{picture}%
+ \quad#2%
+}
+
+
+
+\def\my@vline{%
+ \tmpa\ymin\advance\tmpa-\ymove%
+ \put(\xpos,\tmpa){\line(0,1){\yhoehe}}
+}
+
+
+\def\my@hspace#1{%
+ \dtmpa#1pt\multiply\dtmpa\breite%
+ \tmpa\dtmpa\divide\tmpa65536%
+ \global\advance\xpos\tmpa
+}
+
+
+
+\def\mydotbox#1{\tmpe=#1\advance\tmpe by2\lower0.8pt\hbox to\tmpe pt{\dotfill}}
+
+
+\def\mylinebox#1{\line(1,0){#1}}
+
+
+% Parameter: umzuwandelnde Dimension.
+\def\dimIIreal#1{%
+ \dtmpa=#1\tmpa=\dtmpa\divide\tmpa by65536\advance\dtmpa by-\tmpa pt%
+ \the\tmpa\ifnum\exact>0,\fi%
+ \tmpb=\exact%
+ \@whilenum\tmpb>0\do{%
+ \advance\dtmpa by0.05pt\dtmpa=10\dtmpa\advance\dtmpa by-0.5pt%
+ \tmpa=\dtmpa\divide\tmpa by65536\advance\dtmpa by-\tmpa pt%
+ \the\tmpa\advance\tmpb by-1}%
+}
+
+
+\def\machDachI(#1,#2){%
+ \tmpa=\hoehe\advance\tmpa by-#2\tmpd=\tmpa\ifnum\tmpd<0\tmpd=-\tmpd\fi%
+ \ifnum\hoehe<0\machDachII(#1,#2)%
+ \else
+ \tmpb=\breite\advance\tmpb by-\tiefe%
+ \advance\tmpb by\inter%
+ \ifnum\tmpa<\tiefe\advance\tmpa by-\tiefe\advance\tmpb by-\tmpa\fi%
+ \ifnum\tmpb>\breite\tmpb=\breite\fi%
+ \ifnum\breite<\tiefe\put(#1,#2){\line(1,1){\breite}}%
+ \else\put(#1,#2){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\tmpb}}}%
+ \fi%
+ \fi%
+ \tmpa=#1\advance\tmpa by\breite%
+ \ifnum\inter>0%
+ \ifnum\tmpd<\inter\tmpb=\tiefe\else\tmpb=\inter\fi%
+ \put(\tmpa,\lhoehe){\line(1,1){\tmpb}}%
+ \fi%
+ \ifnum\lhoehe<0\put(\tmpa,\lhoehe){%
+ \ifnum\hoehe<0\tmpb=-\lhoehe\advance\tmpb by\hoehe%
+ \ifnum\tmpb>\tiefe\tmpa=\tiefe\else\tmpa=\tmpb\tmpb=0\fi%
+ \line(1,1){\tmpa}\put(0,\tmpa){\advance\tmpb by-\tiefe\line(0,1){\tmpb}}%
+ \else\tmpa=-\lhoehe\advance\tmpa by-\tiefe%
+ \ifnum-\lhoehe<\tiefe\tmpb=-\lhoehe\else\tmpb=\tiefe\fi%
+ \line(1,1){\tmpb}\put(0,\tmpb){\line(0,1){\tmpa}}%
+ \fi%
+ }%
+ \fi
+}
+
+
+\def\machDachII(#1,#2){%
+ \tmpa=#1\advance\tmpa by\breite\tmpb=0%
+ \ifnum\hoehe>0\ifnum\lhoehe<0\tmpb=\lhoehe\fi
+ \put(\tmpa,\tmpb){\line(1,1){\inter}}
+ \else\put(\tmpa,0){\line(1,1){\tiefe}}
+ \fi
+ \ifnum\hoehe<0\tmpa=\lhoehe\else\tmpa=\lhoehe\advance\tmpa by-\hoehe\fi
+ \ifnum\tmpa<0\tmpa=\inter\else\advance\tmpa by\inter\fi%
+ \put(#1,#2){\line(1,1){\tiefe}\put(0,\tiefe){\line(1,0){\breite}%
+ \line(0,-1){\tmpa}\line(-1,-1){\tiefe}}}%
+}
+
+
+\def\machHLinesI{%
+ \tmpc=\breite\advance\tmpc by2%
+ \setbox\mybox=\hbox to\tmpc pt{\dotfill}
+ \multiput(\lxpos,\ymin)(0,\ystep){\deltay}{%
+ \ifdim\@ydim<\tmpa pt\lower0.8pt\copy\mybox\fi%
+ \ifdim\@ydim>\tmpb pt\lower0.8pt\copy\mybox\fi%
+ }
+}
+
+
+\def\machHLinesII{%
+ \multiput(\lxpos,\lypos)(0,\ystep){\deltay}{%
+ \ifdim\@ydim<\tmpa pt%
+ \ifdim\@ydim>\tmpc pt\ypos=\breite\advance\ypos by-\tiefe%
+ \else\ypos=\breite%
+ \fi%
+ \my@lstyle\ypos
+ \else%
+ \ifdim\@ydim>\tmpc pt%
+ \else%
+ \ypos=-\@ydim\divide\ypos by65536%
+ \advance\ypos by\lhoehe\advance\ypos by\tiefe%
+ \tmpe=\breite\advance\tmpe by-\ypos%
+ \ifnum\ypos>0\ifnum\tmpe>0\put(\tmpe,0){\my@lstyle\ypos}\fi\fi%
+ \fi%
+ \fi%
+ \ifdim\@ydim>\tmpb pt%
+ \ypos=\breite\advance\ypos by-\tiefe%
+ \ifdim\@ydim>\tmpd pt\ypos=\breite%
+ \else\ifdim\@ydim<\hoehe pt%
+ \else\tmpe=\@ydim\divide\tmpe by65536\advance\tmpe by-\hoehe%
+ \advance\ypos by\tmpe%
+ \fi%
+ \fi%
+ \my@lstyle\ypos
+ \fi%
+ }%
+\ifnum\ymove>0%
+ \tmpb=\ymin\advance\tmpb by-\ymove\advance\tmpb by\tiefe%
+ \ifnum\lhoehe>\tmpb\ypos=\breite%
+ \ifnum\hoehe<\tmpb\advance\ypos by-\tiefe\fi%
+ \put(\lxpos,\tmpb){\line(1,0){\ypos}}
+ \fi%
+\fi%
+}
+
+
+\def\machHLines{%
+ \tmpe=\baselineskip\divide\tmpe by65536\advance\tmpe by3%
+ \ifnum\lhoehe<0\tmpa=\lhoehe\tmpb=0\else\tmpa=0\tmpb=\lhoehe\fi%
+ \ifnum\hoehe<0\tmpc=\hoehe\tmpd=0\else\tmpc=0\tmpd=\hoehe\fi%
+ \advance\tmpb by\tiefe\advance\tmpd by\tiefe%
+ \advance\lxpos by\tiefe%
+ \lypos=\ymin\advance\lypos by\tiefe%
+ \machHLinesII%
+}
+
+
+\def\@user{}
+\def\my@empty{}
+\def\my@inside{%
+ \ifnum\hoehe<0\put(\xpos,\hoehe){\makebox(\breite,\tmpa){{\my@style\@user}}}%
+ \else\put(\xpos,0){\makebox(\breite,\tmpa){{\my@style\@user}}}%
+ \fi%
+}
+\def\my@outside{%
+ \tmpa=\hoehe%
+ \ifnum\hoehe<0\advance\tmpa by-6\else\advance\tmpa by\tiefe\advance\tmpa by6%
+ \fi%
+ \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
+ \ifnum\hoehe>0\advance\tmpb by\tiefe\fi%
+ \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
+}
+\def\my@up{%
+ \ifnum\hoehe>0\tmpa=\hoehe\advance\tmpa by\tiefe\advance\tmpa by8%
+ \else\tmpa=\tiefe\advance\tmpa by8%
+ \fi%
+ \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos\advance\tmpb by\tiefe%
+ \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
+}
+\def\my@down{%
+ \ifnum\hoehe>0\tmpa=-6\else\tmpa=\hoehe\advance\tmpa by-6\fi%
+ \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
+ \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
+}
+\def\my@axis{%
+ \ifnum\hoehe>0\tmpa=-6\else\tmpa=6\fi%
+ \tmpb=\breite\divide\tmpb by2\advance\tmpb by\xpos%
+ \put(\tmpb,\tmpa){\makebox(0,0){{\my@style\@user}}}%
+}
+
+
+\def\Monat@#1{%
+ \tmpd=#1\divide\tmpd by65536\tmpd=\the\tmpd%
+ \tmpc=\tmpd\divide\tmpc by12\multiply\tmpc by12\advance\tmpd -\tmpc%
+ \put(0,-10){\makebox(0,0){{\mytmp@style%
+ \ifcase\tmpd Dez\or Jan\or Feb\or M\"ar\or Apr\or Mai\or Jun\or Jul%
+ \or Aug\or Sep\or Okt\or Nov%
+ \fi%
+ }}}%
+}
+
+
+\def\Tag@#1{%
+ \tmpd=#1\divide\tmpd by65536\tmpd=\the\tmpd%
+ \tmpc=\tmpd\divide\tmpc by7\multiply\tmpc by7\advance\tmpd -\tmpc%
+ \put(0,-10){\makebox(0,0){{\mytmp@style%
+ \ifcase\tmpd Son\or Mon\or Die\or Mit\or Don\or Fre\or Sam\fi%
+ }}}%
+}
+
+
+\def\Zahl@n#1{%
+ \dtmpa=#1%
+ \put(0,-10){\makebox(0,0){{\mytmp@style\dimIIreal\dxmin}}}%
+}
+\endinput
diff --git a/macros/latex209/contrib/misc/bibmods.sty b/macros/latex209/contrib/misc/bibmods.sty
new file mode 100644
index 0000000000..068dd3c981
--- /dev/null
+++ b/macros/latex209/contrib/misc/bibmods.sty
@@ -0,0 +1,65 @@
+% -*-latex-*-
+%% /u/sy/beebe/tex/bib/bibmods.sty, Mon Jul 9 08:40:33 1990
+%% Edit by Nelson H.F. Beebe <beebe at plot79.math.utah.edu>
+
+%% =====================================================================
+%% @LaTeX-style-file{
+%% author = "Nelson H. F. Beebe <beebe at science.utah.edu>",
+%% version = "1.01",
+%% date = "10 September 1991",
+%% filename = "bibmods.sty",
+%% address = "Center for Scientific Computing
+%% and Department of Mathematics
+%% South Physics Building
+%% University of Utah
+%% Salt Lake City, UT 84112
+%% USA
+%% Tel: (801) 581-5254",
+%% checksum = "14420 65 318 2830",
+%% email = "beebe at science.utah.edu (Internet)",
+%% codetable = "ISO/ASCII",
+%% supported = "yes",
+%% docstring = "This LaTeX style file provides a modification
+%% to the thebibliography environment to improve
+%% spacing.
+%%
+%% 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."
+%% }
+%% =====================================================================
+
+% The standard LaTeX \bibliography definition invokes \sloppy, which in turn
+% sets \tolerance to 10000. This gives spacing that is too stretchable,
+% with the result that wide white spaces appear in order to give right-
+% justified output in two-column mode. We redefine \thebibliography
+% to invoke the original definition, then reset the tolerance to a more
+% reasonable value. We also allow a little \emergencystretch (a TeX 3.0
+% feature) to allow individual lines to be slightly longer; if that
+% name is unknown, the code avoids its use, so as to work with earlier
+% versions of TeX.
+
+% TeXbook, p. 308:
+\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
+
+\let\oldthebibliography=\thebibliography
+\renewcommand{\thebibliography}[1]{\oldthebibliography{#1}
+ \hyphenpenalty=1
+ % \emergencystretch is a new feature of TeX 3.0; use it only if known
+ \ifundefined{emergencystretch}
+ \relax
+ \else
+ \emergencystretch=3pt
+ \fi
+ \if@twocolumn
+ \tolerance=6000 %need looser tolerances in two-column mode
+ \else
+ \tolerance=2000
+ \fi
+\hbadness=10000 \relax}
+
+\overfullrule=3pt % to catch problems in the output.
+
diff --git a/macros/latex209/contrib/misc/bigtabular.sty b/macros/latex209/contrib/misc/bigtabular.sty
new file mode 100644
index 0000000000..62c3eb99e1
--- /dev/null
+++ b/macros/latex209/contrib/misc/bigtabular.sty
@@ -0,0 +1,99 @@
+% Save file as: TABULAR.STY or BIGTABULAR.STY Source: FILESERV@SHSU.BITNET
+% Tabular.sty
+% Denys Duchier, Yale University, July 1990
+%
+% This file defines a \Tabular environment which is essentially
+% similar to the \tabular environment but is able to handle very
+% large tables which have to be split across pages.
+%
+% The major distinction is that \Tabular doesn't take an optional
+% argument. It behaves much like \begin{tabular*}{\linewidth} with
+% \Tabularleftskip and \Tabularrightskip used as the stretchable glue
+% on either side. Also, instead of contributing the table as a large
+% box, it performs a \unvbox so that individual rows are contributed
+% instead and page breaks can occur between them.
+%
+% \begin{Tabular}{...} ... \end{Tabular}
+%
+% has essentially the same effect as:
+%
+% \begin{center}\begin{tabular}{...} ... \end{tabular}\end{center}
+%
+% but may be split across pages.
+%
+% {\Tabularleftskip = 0pt
+% \Tabularrightskip = 0pt
+% \begin{Tabular}{@{}l@{\extracolsep{\fill}}cr@{}}
+% ...
+% \end{Tabular}}
+%
+% will produce a 3 column table with the left column flushed left,
+% the right column flushed right, and equal spacing between the
+% columns.
+
+\newskip\Tabularleftskip \Tabularleftskip\@flushglue
+\newskip\Tabularrightskip \Tabularrightskip\@flushglue
+
+\newbox\Tabularbox
+
+% let's count the number of columns so that we know how many columns
+% hlines must span.
+
+\newcount\Tabularcount
+\newcount\Tabularcolumns
+\def\@Tabclassz{\global\advance\Tabularcount\@ne\@tabclassz}
+\let\@latexclassiii\@classiii
+\def\@Tabclassiii{\global\advance\Tabularcount\@ne\@latexclassiii}
+
+% allow page breaks between rows
+
+\def\@Tabularcr{{\ifnum0=`}\fi\@ifstar{\@xTabularcr}{\@xTabularcr}}
+\def\@xTabularcr{\@ifnextchar[{\@argTabularcr}{\ifnum0=`{\fi}\cr
+ \noalign{\pagebreak[1]}}}
+
+\def\@argTabularcr[#1]{\ifnum0=`{\fi}\ifdim #1>\z@
+ \unskip\@xargarraycr{#1}\else \@yargarraycr{#1}\fi
+ \noalign{\pagebreak[1]}}
+
+% \hline is redefined to output 2 lines one on top of the other, with
+% a slightly more encouraging \pagebreak than between normal rows.
+% Thus, if a page break must occur, there will a line at the bottom,
+% and it will be repeated at the top of the next page too. This is
+% visually much more appealing.
+
+\let\@latexhline\hline
+\let\@latextabarray\@tabarray
+\def\@tabarray{\let\hline\@latexhline\@latextabarray}
+\def\Tabularhline{\multispan{\Tabularcolumns}{\unskip\leaders\hrule
+ height\arrayrulewidth\hfill}\cr
+ \noalign{\vskip-\arrayrulewidth\pagebreak[2]}%
+ \multispan{\Tabularcolumns}{\unskip\leaders\hrule
+ height\arrayrulewidth\hfill}\cr}
+
+\def\Tabular#1{\trivlist\item[]\noindent
+ \setbox\Tabularbox\vbox\bgroup
+ \let\@acol\@tabacol
+ \let\@classz\@Tabclassz
+ \let\@classiii\@Tabclassiii
+ \let\@classiv\@tabclassiv
+ \let\\\@Tabularcr
+ \setbox\@arstrutbox=\hbox{\vrule
+ height\arraystretch \ht\strutbox
+ depth\arraystretch \dp\strutbox
+ width\z@}%
+ \global\Tabularcount\z@
+ \@mkpream{#1}%
+ \Tabularcolumns\Tabularcount
+ \let\hline\Tabularhline
+ \let\@classiii\@latexclassiii
+ \tabskip\Tabularleftskip
+ \edef\@preamble{\halign to\linewidth\bgroup
+ \tabskip\z@ \@arstrut \@preamble
+ \tabskip\Tabularrightskip \cr}%
+ \let\@starpbox\@@startpbox
+ \let\@endpbox\@@endpbox
+ \let\@sharp##\let\protect\relax
+ \lineskip\z@\baselineskip\z@
+ \@preamble}
+
+\def\endTabular{\crcr\egroup\egroup\unvbox\Tabularbox\endtrivlist}
diff --git a/macros/latex209/contrib/misc/biihead.sty b/macros/latex209/contrib/misc/biihead.sty
new file mode 100644
index 0000000000..bbb60f2570
--- /dev/null
+++ b/macros/latex209/contrib/misc/biihead.sty
@@ -0,0 +1,21 @@
+%BIIHEAD.STY If this is included after \documentstyle{report}, it adds
+% an underlined heading style to the LaTeX report style.
+% \pagestyle{biiheadings} will put underlined headings at the top
+% of each page. The right page headings are the Chapter titles and
+% the left page titles are supplied by \def\lefthead{text}.
+
+% Ted Shapin, Dec. 17, 1986
+
+\makeatletter
+\def\ps@biiheadings{\let\@mkboth\markboth
+\def\@oddhead{\protect\makebox[0pt][l]{\protect\underline
+ {\protect\makebox[\textwidth][l]{\sl\rightmark\hfill\rm\thepage}}}}
+\def\@oddfoot{}
+\def\@evenhead{\protect\makebox[0pt][l]{\protect\underline
+ {\protect\makebox[\textwidth][l]
+ {\rm\thepage\hfill\sl\lefthead}}}}
+\def\lefthead{}
+\def\chaptermark##1{\markright {\uppercase{%
+\@chapapp\ \thechapter.\ ##1}}}
+\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
+\makeatother
diff --git a/macros/latex209/contrib/misc/boxit.sty b/macros/latex209/contrib/misc/boxit.sty
new file mode 100644
index 0000000000..8b0a9f9f1d
--- /dev/null
+++ b/macros/latex209/contrib/misc/boxit.sty
@@ -0,0 +1,91 @@
+%%From: marcel@cs.caltech.edu (Marcel van der Goot)
+%%Newsgroups: comp.text.tex
+%%Subject: illegal modification of boxit.sty
+%%Date: 28 Feb 92 01:10:02 GMT
+%%Organization: California Institute of Technology (CS dept)
+%%Nntp-Posting-Host: andromeda.cs.caltech.edu
+%%
+%%
+%%Quite some time ago I posted a file boxit.sty; maybe it made it
+%%to some archives, although I don't recall submitting it. It defines
+%% \begin{boxit}
+%% ...
+%% \end{boxit}
+%%to draw a box around `...', where the `...' can contain other
+%%environments (e.g., a verbatim environment). Unfortunately, it had
+%%a problem: it did not work if you used it in paragraph mode, i.e., it
+%%only worked if there was an empty line in front of \begin{boxit}.
+%%Luckily, that is easily corrected.
+%%
+%%HOWEVER, apparently someone noticed the problem, tried to correct it,
+%%and then distributed this modified version. That would be fine with me,
+%%except that:
+%%1. There was no note in the file about this modification, it only has my
+%% name in it.
+%%2. The modification is wrong: now it only works if there is *no* empty
+%% line in front of \begin{boxit}. In my opinion this bug is worse than
+%% the original one.
+%%
+%%In particular, the author of this modification tried to force an empty
+%%line by inserting a `\\' in the definition of \Beginboxit. If you have
+%%a version of boxit.sty with a `\\', please delete it. If you have my
+%%old version of boxit.sty, please also delete it. Below is an improved
+%%version.
+%%
+%%Thanks to Joe Armstrong for drawing my attention to the bug and to the
+%%illegal version.
+%%
+%% Marcel van der Goot
+%% .---------------------------------------------------------------
+%% | Blauw de viooltjes, marcel@cs.caltech.edu
+%% | Rood zijn de rozen;
+%% | Een rijm kan gezet
+%% | Met plaksel en dozen.
+%% |
+
+
+% boxit.sty
+% version: 27 Feb 1992
+%
+% Defines a boxit environment, which draws lines around its contents.
+% Usage:
+% \begin{boxit}
+% ... (text you want to be boxed, can contain other environments)
+% \end{boxit}
+%
+% The width of the box is the width of the contents.
+% The boxit* environment behaves the same, except that the box will be
+% at least as wide as a normal paragraph.
+%
+% The reason for writing it this way (rather than with the \boxit#1 macro
+% from the TeXbook), is that now you can box verbatim text, as in
+% \begin{boxit}
+% \begin{verbatim}
+% this better come out in boxed verbatim mode ...
+% \end{verbatim}
+% \end{boxit}
+%
+% Marcel van der Goot
+% marcel@cs.caltech.edu
+%
+
+\def\Beginboxit
+ {\par
+ \vbox\bgroup
+ \hrule
+ \hbox\bgroup
+ \vrule \kern1.2pt %
+ \vbox\bgroup\kern1.2pt
+ }
+
+\def\Endboxit{%
+ \kern1.2pt
+ \egroup
+ \kern1.2pt\vrule
+ \egroup
+ \hrule
+ \egroup
+ }
+
+\newenvironment{boxit}{\Beginboxit}{\Endboxit}
+\newenvironment{boxit*}{\Beginboxit\hbox to\hsize{}}{\Endboxit}
diff --git a/macros/latex209/contrib/misc/breakcites.sty b/macros/latex209/contrib/misc/breakcites.sty
new file mode 100644
index 0000000000..9b083df8dc
--- /dev/null
+++ b/macros/latex209/contrib/misc/breakcites.sty
@@ -0,0 +1,10 @@
+% breakcites.sty
+% Style file to allow citations to be broken across lines.
+% -Don Hosek 3/14/89
+%
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{,\penalty\@m\ }\@ifundefined
+ {b@\@citeb}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\csname b@\@citeb\endcsname}}}{#1}}
diff --git a/macros/latex209/contrib/misc/bsf.sty b/macros/latex209/contrib/misc/bsf.sty
new file mode 100644
index 0000000000..9df8e535f0
--- /dev/null
+++ b/macros/latex209/contrib/misc/bsf.sty
@@ -0,0 +1,97 @@
+% Provide access to the boldface san serif type style for LaTeX. Once you
+% have included "bsf" as a style option, you can use the \bsf command to
+% select the boldface san serif style, just as you would select the usual
+% boldface Roman style with \bf, EXCEPT:
+%
+% The various fonts defined here are all "loaded on demand". As
+% discussed in the LaTeX book, Section C.14.4, a loaded on demand
+% font is subject to two restrictions when used in math mode:
+%
+% - The font must be used OUTSIDE of math mode before it is used
+% INSIDE of math mode. The \load command can be used to get
+% around this restriction.
+%
+% - Only a single font size is available within math mode - the
+% display, text, script and scriptscriptfonts will all be the
+% same. This can be avoided ONLY by changing the definitions
+% given here to pre-load the appropriate fonts; see LFONTS.TEX
+% for further information. (Alternatively, \@getfont could be
+% made more clever.) Note that pre-loading the fonts could cause
+% you to fill font space with fonts you never really use.
+%
+% In order to allow other style files that need access to \bsf to input this
+% file safely, it is designed so that an attempt to input it a second time -
+% or, more exactly, when command "\bsf" is already defined - is ignored.
+%
+% This file can be adapted easily to define other font type styles. The real
+% limit is likely to come from the requirement that each style so defined must
+% be given a unique family number - TeX only supports 16 families and LaTeX
+% as usually configured already uses 10. The right way to avoid this problem
+% is to modify \@getfont so that it ignores a family number of -1. Fonts
+% so specified would not be usable in math mode, but that's no big deal; you
+% don't WANT to use tons of non-math fonts in math mode anyway.
+%
+% As currently written, this file assumes that you have boldface san serif
+% fonts available at the following point sizes:
+%
+% lcmssb8
+% lcmssb8 at 9pt
+% cmssbx10
+% cmssbx10 at 11pt
+% cmssbx10 at 12pt
+% cmssbx10 at 17pt
+% cmssbx10 at 25pt
+%
+% All but the last of these should be commonly available. I'm not sure about
+% the last one; LFONTS.TEX does not assume the availability of ANY 25 pt fonts
+% other than Roman. If necessary, change the definition of \bsfxxv@ to
+% \@subfont\bsf\rm. (Alternatively, if you have boldface sans serif fonts
+% at sizes smaller than 8pt, you might want to change the definitions of
+% \bsfv@, \bsfvi@, and \bsfvii@.)
+%
+% Technical note: It is possible to do without the \bsf<size>@ macros by
+% including their contents, with a whole bunch of \@prtct's, within the
+% \@addfontinfo definitions. This is a pain to do, and probably doesn't end
+% up saving any space anyway. This way costs you a bunch of extra macros,
+% but it's a LOT easier to understand!
+%
+% Written by Jerry Leichter (LEICHTER-JERRY@CS.YALE.EDU)
+% Modified, 27-Jan-89 by Jerry Leichter
+% Fixed typos in file name for lcmssb8.
+% Modified, 16-Jun-89 by Jerry Leichter
+% Changed family name for consistency. Fixed a typo in the definition
+% for 9pt, introduced by the 27-Jan fix. Sigh, such a *simple* file....
+
+\expandafter\ifx\csname bsf\endcsname\relax %Once only, please
+% Note: It's a pain to use \@ifundefined here - we don't want to pass the
+% rest of the definitions as an argument, but we can't easily use \endinput
+% since, with docsty, we can't control where the line breaks occur.
+
+\typeout{Document Option `bsf': 16 Jun 89}
+\def\bsf{\protect\pbsf}
+\newfam\bsffam
+\@addfontinfo\@vpt{\@prtct\bsfv@}
+ \def\bsfv@{\def\pbsf{\@subfont\bsf\bf}}
+\@addfontinfo\@vipt{\@prtct\bsfvi@}
+ \def\bsfvi@{\def\pbsf{\@subfont\bsf\bf}}
+\@addfontinfo\@viipt{\@prtct\bsfvii@}
+ \def\bsfvii@{\def\pbsf{\@subfont\bsf\bf}}
+\@addfontinfo\@viiipt{\@prtct\bsfviii@}
+ \def\bsfviii@{\def\pbsf{\@getfont\pbsf\bsffam\@viiipt{lcmssb8}}}
+\@addfontinfo\@ixpt{\@prtct\bsfx@}
+ \def\bsfx@{\def\pbsf{\@getfont\pbsf\bsffam\@ixpt{lcmssb8\@halfmag}}}
+\@addfontinfo\@xpt{\@prtct\bsfx@}
+ \def\bsfx@{\def\pbsf{\@getfont\pbsf\bsffam\@xpt{cmssbx10}}}
+\@addfontinfo\@xipt{\@prtct\bsfxi@}
+ \def\bsfxi@{\def\pbsf{\@getfont\pbsf\bsffam\@xipt{cmssbx10\@halfmag}}}
+\@addfontinfo\@xiipt{\@prtct\bsfxii@}
+ \def\bsfxii@{\def\pbsf{\@getfont\pbsf\bsffam\@xiipt{cmssbx10\@magscale1}}}
+\@addfontinfo\@xivpt{\@prtct\bsfxiv@}
+ \def\bsfxiv@{\def\pbsf{\@getfont\pbsf\bsffam\@xivpt{cmssbx10\@magscale2}}}
+\@addfontinfo\@xviipt{\@prtct\bsfxvii@}
+ \def\bsfxvii@{\def\pbsf{\@getfont\pbsf\bsffam\@xviipt{cmssbx10\@magscale3}}}
+\@addfontinfo\@xxpt{\@prtct\bsfxx@}
+ \def\bsfxx@{\def\pbsf{\@getfont\pbsf\bsffam\@xxpt{cmssbx10\@magscale4}}}
+\@addfontinfo\@xxvpt{\@prtct\bsfxxv@}
+ \def\bsfxxv@{\def\pbsf{\@getfont\pbsf\bsffam\@xxvpt{cmssbx10\@magscale5}}}
+\fi
diff --git a/macros/latex209/contrib/misc/bsl.sty b/macros/latex209/contrib/misc/bsl.sty
new file mode 100644
index 0000000000..4432e0fb74
--- /dev/null
+++ b/macros/latex209/contrib/misc/bsl.sty
@@ -0,0 +1,97 @@
+% Save file as: BSL.STY Source: FILESERV@SHSU.BITNET
+% Provide access to the boldface slanted type style for LaTeX. Once you
+% have included "bsl" as a style option, you can use the \bsl command to
+% select the boldface slanted style, just as you would select the usual
+% boldface Roman style with \bf, EXCEPT:
+%
+% The various fonts defined here are all "loaded on demand". As
+% discussed in the LaTeX book, Section C.14.4, a loaded on demand
+% font is subject to two restrictions when used in math mode:
+%
+% - The font must be used OUTSIDE of math mode before it is used
+% INSIDE of math mode. The \load command can be used to get
+% around this restriction.
+%
+% - Only a single font size is available within math mode - the
+% display, text, script and scriptscriptfonts will all be the
+% same. This can be avoided ONLY by changing the definitions
+% given here to pre-load the appropriate fonts; see LFONTS.TEX
+% for further information. (Alternatively, \@getfont could be
+% made more clever.) Note that pre-loading the fonts could cause
+% you to fill font space with fonts you never really use.
+%
+% In order to allow other style files that need access to \bsl to input this
+% file safely, it is designed so that an attempt to input it a second time -
+% or, more exactly, when command "\bsl" is already defined - is ignored.
+%
+% This file can be adapted easily to define other font type styles. The real
+% limit is likely to come from the requirement that each style so defined must
+% be given a unique family number - TeX only supports 16 families and LaTeX
+% as usually configured already uses 10. The right way to avoid this problem
+% is to modify \@getfont so that it ignores a family number of -1. Fonts
+% so specified would not be usable in math mode, but that's no big deal; you
+% don't WANT to use tons of non-math fonts in math mode anyway.
+%
+% As currently written, this file assumes that you have boldface san serif
+% fonts available at the following point sizes:
+%
+% cmbxsl10 at 9pt
+% cmbxsl10
+% cmbxsl10 at 11pt
+% cmbxsl10 at 12pt
+% cmbxsl10 at 14pt
+% cmbxsl10 at 17pt
+% cmbxsl10 at 20pt
+% cmbxsl10 at 25pt
+%
+% All but the last of these should be commonly available. I'm not sure about
+% the last one; LFONTS.TEX does not assume the availability of ANY 25 pt fonts
+% other than Roman. If necessary, change the definition of \bslxxv@ to
+% \@subfont\bsl\rm. (Alternatively, if you have boldface slanted fonts
+% at sizes smaller than 8pt, you might want to change the definitions of
+% \bslv@, \bslvi@, and \bslvii@.)
+%
+% Technical note: It is possible to do without the \bsl<size>@ macros by
+% including their contents, with a whole bunch of \@prtct's, within the
+% \@addfontinfo definitions. This is a pain to do, and probably doesn't end
+% up saving any space anyway. This way costs you a bunch of extra macros,
+% but it's a LOT easier to understand!
+%
+% Written by GEorge D. Greenwade (BED_GDG@SHSU.BITNET)
+% as a variation from BSF.STY written by Jerry Leichter
+% (LEICHTER-JERRY@CS.YALE.EDU)
+% April 5, 1990
+
+\expandafter\ifx\csname bsl\endcsname\relax %Once only, please
+% Note: It's a pain to use \@ifundefined here - we don't want to pass the
+% rest of the definitions as an argument, but we can't easily use \endinput
+% since, with docsty, we can't control where the line breaks occur.
+
+\typeout{Document Option 'bsl' for Bold Slanted Fonts -- April 5, 1990 -- GDG}
+\def\bsl{\protect\pbsl}
+\newfam\bslfam
+\@addfontinfo\@vpt{\@prtct\bslv@}
+ \def\bslv@{\def\pbsl{\@subfont\bsl\bf}}
+\@addfontinfo\@vipt{\@prtct\bslvi@}
+ \def\bslvi@{\def\pbsl{\@subfont\bsl\bf}}
+\@addfontinfo\@viipt{\@prtct\bslvii@}
+ \def\bslvii@{\def\pbsl{\@subfont\bsl\bf}}
+\@addfontinfo\@viiipt{\@prtct\bslviii@}
+ \def\bslviii@{\def\pbsl{\@subfont\bsl\bf}}
+\@addfontinfo\@ixpt{\@prtct\bslx@}
+ \def\bslx@{\def\pbsl{\@getfont\pbsl\bslfam\@ixpt{cmbxsl10\@halfmag}}}
+\@addfontinfo\@xpt{\@prtct\bslx@}
+ \def\bslx@{\def\pbsl{\@getfont\pbsl\bslfam\@xpt{cmbxsl10}}}
+\@addfontinfo\@xipt{\@prtct\bslxi@}
+ \def\bslxi@{\def\pbsl{\@getfont\pbsl\bslfam\@xipt{cmbxsl10\@halfmag}}}
+\@addfontinfo\@xiipt{\@prtct\bslxii@}
+ \def\bslxii@{\def\pbsl{\@getfont\pbsl\bslfam\@xiipt{cmbxsl10\@magscale1}}}
+\@addfontinfo\@xivpt{\@prtct\bslxiv@}
+ \def\bslxiv@{\def\pbsl{\@getfont\pbsl\bslfam\@xivpt{cmbxsl10\@magscale2}}}
+\@addfontinfo\@xviipt{\@prtct\bslxvii@}
+ \def\bslxvii@{\def\pbsl{\@getfont\pbsl\bslfam\@xviipt{cmbxsl10\@magscale3}}}
+\@addfontinfo\@xxpt{\@prtct\bslxx@}
+ \def\bslxx@{\def\pbsl{\@getfont\pbsl\bslfam\@xxpt{cmbxsl10\@magscale4}}}
+\@addfontinfo\@xxvpt{\@prtct\bslxxv@}
+ \def\bslxxv@{\def\pbsl{\@getfont\pbsl\bslfam\@xxvpt{cmbxsl10\@magscale5}}}
+\fi
diff --git a/macros/latex209/contrib/misc/buscard.sty b/macros/latex209/contrib/misc/buscard.sty
new file mode 100644
index 0000000000..8b9d632637
--- /dev/null
+++ b/macros/latex209/contrib/misc/buscard.sty
@@ -0,0 +1,226 @@
+%buscard.sty version 1.5 30 Apr 93
+%changes: 1.1: now works if empty entries present, can even print a blank card
+% 1.2: uses psfig macros to set seal,
+% new command to specify organization name and seal file
+% 1.3: puts small cut marks instead of boxes around cards
+% 1.4: adds specifications for sealwidth, sealheight, and sealoffset
+% 1.5: made more robust for non-NFSS users (by edwin@cs.ucla.edu)
+%business card style by Mark A. Roth, 22 Dec 92. Email: mroth@afit.af.mil
+%see end of file for example of use.
+\documentstyle{article}
+\nofiles
+\makeatletter
+%I need a 7pt sans serif font, which the standard LaTeX NFSS set doesn't have
+\@ifundefined{new@fontshape}
+ {\errmessage{Sorry. The default fonts in this style require the new font
+ selection scheme. You'll have to modify it to work with old
+ style LaTeX.}}
+ {\new@fontshape{cmss}{m}{n}{%
+ <5>cmss8 at5pt%
+ <6>cmss8 at6pt%
+ <7>cmss8 at7pt%
+ <8>cmss8%
+ <9>cmss9%
+ <10>cmss10%
+ <11>cmss10 at10.95pt%
+ <12>cmss12%
+ <14>cmss12 at14.4pt%
+ <17>cmss17%
+ <20>cmss17 at20.74pt%
+ <25>cmss17 at24.88pt%
+ }{}}
+\pagestyle{empty}
+\oddsidemargin -.25in \evensidemargin -.25in \marginparsep 0pt
+\textwidth 7.1in \textheight 11in \topmargin -54pt \tabcolsep 0pt
+\newdimen\cardwidth \newdimen\cardcontentheight \newdimen\cardcontentwidth
+\newdimen\psfigsealheight \newdimen\psfigsealwidth
+\cardwidth 3.5in \cardcontentheight 108.5pt \cardcontentwidth 225pt
+\newdimen\headerwidth \headerwidth\cardcontentwidth
+\headheight 0pt \headsep 0pt \parindent 0pt \parskip 0pt \footheight 0pt
+%
+%new def of @iframebox to get partial tic marks instead of boxes
+%comment this out if you want whole boxes as in version 1.2
+%if there's a better way please let me know
+%
+\long\def\@iframebox[#1][#2]#3{\leavevmode
+ \savebox\@tempboxa[#1][#2]{\kern\fboxsep #3\kern\fboxsep}\@tempdima\fboxrule
+ \advance\@tempdima \fboxsep \advance\@tempdima \dp\@tempboxa
+ \hbox{\lower \@tempdima\hbox
+ {\vbox{\hrule \@height \fboxrule \@width 3pt
+ \hbox{\vrule \@height 3pt \@width \fboxrule \hskip-\fboxrule
+ \vbox{\vskip\fboxsep \box\@tempboxa\vskip\fboxsep}\hskip
+ -\fboxrule\vrule \@height 3pt \@width \fboxrule}%
+ \hrule \@height \fboxrule \@width 3pt}}}}
+%
+\def\bc@e{}
+\def\bc@organization{\mbox{}\\[2pt]}
+\def\organization#1{\ifx\bc@e#1\else\def\bc@organization{#1\\[2pt]}\fi}
+\def\bc@department{\mbox{}\\}
+\def\department#1{\ifx\bc@e#1\else\def\bc@department{#1\\}\fi}
+\def\bc@name{}
+\def\name#1{\ifx\bc@e#1\else\def\bc@name{\ \\[-20pt]#1\\}\fi}
+\def\bc@rank{}
+\def\rank#1{\ifx\bc@e#1\else\def\bc@rank{#1\\}\fi}
+\def\bc@title{}
+\def\title#1{\ifx\bc@e#1\else\def\bc@title{#1\\}\fi}
+\def\bc@right{}
+\def\right#1{\def\bc@right{#1}}
+\def\bc@left{}
+\def\left#1{\def\bc@left{#1}}
+\def\bc@email{}
+\def\email#1{\def\bc@email{#1}}
+\def\bc@workphone{}
+\def\workphone#1{\def\bc@workphone{#1}}
+\def\bc@fax{}
+\def\fax#1{\def\bc@fax{#1}}
+\def\bc@address{}
+\def\address#1{\def\bc@address{#1}}
+\def\bc@sealheight{0pt}\def\bc@sealwidth{0pt}
+\def\bc@sealfile{}\def\bc@sealoffset{0pt}
+\newif\if@sealhere \@sealherefalse
+\def\seal#1{\ifx\bc@e#1\else%
+\def\bc@sealfile{#1}\if@sealhere\else\input psfig \pssilent\@sealheretrue\fi\fi}
+\def\sealwidth#1{\ifx\bc@e#1\else\def\bc@sealwidth{#1}%
+\setlength{\psfigsealwidth}{\bc@sealwidth}%
+\addtolength{\psfigsealwidth}{2.3pt}%
+\addtolength{\headerwidth}{-\psfigsealwidth}\fi}
+\def\sealheight#1{\ifx\bc@e#1\else\def\bc@sealheight{#1}%
+\setlength{\psfigsealheight}{\bc@sealheight}%
+\addtolength{\psfigsealheight}{2.3pt}\fi}
+\def\sealoffset#1{\ifx\bc@e#1\else\def\bc@sealoffset{#1}\fi}
+\fboxsep 17pt
+\def\bc@makecard{\ \hspace*{-10.4pt}\vspace*{-.7pt}
+\ifx\bc@right\bc@e\def\bc@right{\bc@email\hspace*{2pt}\\\bc@workphone\\%
+\ifx\bc@fax\bc@e\else FAX: \bc@fax\fi}\fi
+\ifx\bc@left\bc@e\def\bc@left{\bc@address}\fi
+\framebox[\cardwidth]{%
+\begin{minipage}{\cardcontentwidth}
+\vbox to \cardcontentheight{
+\if@sealhere
+\ifx\bc@sealwidth\bc@e\errmessage{You must specify sealwidth and sealheight.}\fi
+\vspace*{-8pt}
+%print the seal scaled to fit specified width
+\vbox to \psfigsealheight{\hbox to \psfigsealwidth{
+\psfig{figure=\bc@sealfile,height=\bc@sealheight,width=\bc@sealwidth}%
+}
+\vspace*{-\bc@sealheight}\hspace*{\bc@sealwidth}%
+\begin{minipage}[t]{\headerwidth}
+\begin{center}
+{\footnotesize\sf \bc@organization}
+{\scriptsize\sf \bc@department}
+\end{center}
+\end{minipage}
+}
+\vfill
+\vspace*{\bc@sealoffset}
+\else %if no seal
+\begin{center}
+{\footnotesize\sf \bc@organization}
+{\scriptsize\sf \bc@department}
+\end{center}
+\fi %end of if@sealhere
+%
+\vfill
+%if name, rank, and title all empty then print a blank
+\ifx\bc@name\bc@e\ifx\bc@rank\bc@e\ifx\bc@title\bc@e\def\bc@name{\mbox{}}%
+\fi\fi\fi
+\begin{center}
+{\large\rm\bc@name}
+{\scriptsize\sf\bc@rank}
+{\scriptsize\sf\bc@title}
+\end{center}
+\vfill
+
+\hbox to \cardcontentwidth{
+\scriptsize\sf
+\begin{tabular}[b]{l}
+\bc@left
+\end{tabular}
+\hfill
+\begin{tabular}[b]{r}
+\bc@right
+\end{tabular}
+} %end hbox to cardcontentwidth
+} %end vbox to cardcontentheight
+\end{minipage} %end of minipage
+} %end of framebox
+} %end \bc@makecard
+
+\newdimen\twocardwidth\twocardwidth2\cardwidth
+\addtolength{\twocardwidth}{-\fboxrule}
+\def\bc@topvertcut{\ \hspace*{-13.7pt}
+\hbox to \twocardwidth{%
+\vrule height 3pt width \fboxrule\hfill
+\vrule height 3pt width \fboxrule\hfill
+\vrule height 3pt width \fboxrule}\vskip-1pt}
+\newcounter{card} \newcounter{printedcard} \newcounter{pagecard}
+\def\makecard#1{%
+\bc@topvertcut\par%
+\ \hspace*{-6.7pt}%
+\setcounter{card}{#1}\setcounter{printedcard}{0}\setcounter{pagecard}{0}%
+\@whilenum\c@card>\c@printedcard\do%
+ {\bc@makecard\bc@makecard\newline%
+ \addtocounter{printedcard}{2}%
+ \addtocounter{pagecard}{1}%
+ \ifnum\c@pagecard=5%
+ \ifnum\c@card>\c@printedcard%
+ \newpage\setcounter{pagecard}{0}\bc@topvertcut\ \hspace*{-6.7pt}%
+ \fi%
+ \fi%
+ }%end while
+}%end makecard
+\makeatother
+\endinput
+%sample file to create business cards; change this file to
+%hold your information and feed it to your favorite LaTeX processor.
+%send comments/problems to Mark Roth, mroth@afit.af.mil
+%
+%Fill in the following with your info, \address gets printed in the
+%lower left corner, \email, \workphone and \fax in the lower right corner.
+%If you want to do your own thing in the corners use commands \left and
+%\right, separating lines with \\
+%
+\documentstyle{buscard}
+%
+%the seal is an encapsulated PostScript file, leave out it you don't have one
+\seal{sealname.eps}
+%the desired seal width and height must be specified, the style will scale
+%your seal image to this width and height. Make sure your image specifies
+%the minimal bounding box. An adjustment for vertical height of the seal
+%can be made by specifying a dimension for sealoffset.
+\sealheight{dimen} %specify height of seal, e.g., .5in, 50pt, ...
+\sealwidth{dimen} %specify width of seal, e.g., .5in, 50pt, ...
+\sealoffset{dimen} %specify vertical adjustment after seal, e.g., .5in, -50pt
+ %make this space adjustment if your name, etc. doesn't look centered
+%
+%the department is printed under the organization name at the top of the card
+%leave them out if you don't want them
+\organization{UNIVERSITY OF TYPESETTING}
+\department{Dept. of Electrical and Computer Engineering}
+%
+%the next three entries are centered in the middle of the card
+\name{JOHN J. DOE, Ph.D.} %this format is up to you!
+\rank{MAJOR, USAF} %all fields are optional
+\title{PROFESSOR OF ELECTRICAL ENGINEERING}
+%
+%lower left corner
+\address{First Line\\ Second Line\\ Third Line}
+%
+%lower right corner
+\email{doe@somewhere}
+\workphone{(555) 555-5555, DSN 555-5555}
+\fax{(555) 555-5555, DSN 555-5555} %word FAX is automatically supplied
+%
+%this is the same info using \right
+%\right{doe@somewhere\\
+% (555) 555-5555, DSN 555-5555\\
+% FAX: (555) 555-5555, DSN 555-5555} %you have to supply word FAX
+%
+%if you don't want cut marks around the cards uncomment the following line
+%\fboxrule 0pt
+\begin{document}
+ %this command prints the cards, 10 per page, in even numbers
+\makecard{2} %change the number here to the number of cards you want
+ %don't try more than 10 to start, just in case don't like
+ %your cards on the first attempt
+\end{document}
diff --git a/macros/latex209/contrib/misc/calendar.sty b/macros/latex209/contrib/misc/calendar.sty
new file mode 100644
index 0000000000..bccbd0bca3
--- /dev/null
+++ b/macros/latex209/contrib/misc/calendar.sty
@@ -0,0 +1,549 @@
+% calendar.sty - print calendar
+% Copyright (C) 1991 J"urgen Stuber
+%
+% 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 1, 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 a copy of the GNU General Public License;
+% if not, write to the Free Software Foundation, Inc.,
+% 675 Mass Ave, Cambridge, MA 02139, USA.
+%
+% History:
+% 10.4.1991 js - posted
+%
+% Description:
+% This will generate a calendar in the following format:
+% +----------+----------+ ... +----------+
+% | Januar | Februar | | Dezember |
+% +----------+----------+ ... +----------+
+% + 1 DI | 1 FR | | 1 SO |
+% +----------+----------+ ... +----------+
+% + 2 MI | 2 SA | | 2 MO |
+% +----------+----------+ ... +----------+
+% .
+% .
+% .
+%
+% +----------+----------+ ... +----------+
+% |31 DO | | |31 DI |
+% +----------+----------+ ... +----------+
+%
+% Because of space limitations the calendar is printed on 3 pages.
+%
+% Features:
+% - number of week in year
+% - handles holidays and birthdays in a flexible way
+% - computes day of week & easter date
+%
+% Limitations:
+% - does not print year due to lack of space
+% - number of annotations per date is limited to two due to lack of space
+% - does not compute moon phases
+% - does not compute beginning of spring, summer, etc.
+%
+% Usage:
+% generate a LaTex file calendar.tex like the following:
+%
+%--- beginning of calendar.tex ------------------------------
+% \documentstyle[german]{calendar}
+%
+% \def\weekdayname#1{%
+% \ifcase#1 \relax
+% MO\or DI\or MI\or DO\or FR\or SA\or SO%
+% \fi
+% }
+%
+% \def\monthname#1{%
+% \ifcase#1 \relax
+% Januar\or Februar\or M"arz\or April\or Mai\or Juni\or
+% Juli\or August\or September\or Oktober\or November \or Dezember%
+% \fi
+% }
+%
+% \begin{document}%
+% \setYear{1991}%
+% \input{holiday}%
+% \input{birthday}%
+% \typesetYear%
+% \end{document}
+%--- end of calendar.tex ------------------------------
+%
+% holiday.tex and birthday.tex contain declarations in the following
+% formats:
+%
+% \annual{text}{day.month.}{holidayflag}
+% \annualMovable{text}{day.month.}{dayOfWeek}{holidayflag}
+% \easterRelative{text}{offset}{holidayflag}
+% \anniversary{text}{day.month.year}{holidayflag}
+%
+% \annual will generate an annotation for the specified day containing
+% the given text. If holidayflag is 1 the day will be marked as
+% a holiday, i.e., printed in boldface.
+% \annualMovable will generate the annotation for the next day with
+% matching day of the week on or after the specified date.
+% The day of the week is encoded as 0 for monday up to 6 for sunday.
+% \easterRelative will generate the annotation for the day with
+% the specified offset from easter.
+% \anniversary will generate an annotation consisting of text and the
+% number of the anniversary.
+%
+% Here is a sample file containing declarations of holidays for
+% Northrhine-Westfalia. Some other german holidays are included but
+% commented out.
+%
+%--- beginning of holiday.tex ------------------------------
+% \annual{Neujahr}{1.1.}{1}%
+% \annual{Heilige Drei K"onige}{6.1.}{0}%
+% %\annual{Valentinstag}{14.2.}{0}%
+% \easterRelative{Rosenmontag}{-48}{0}%
+% %\easterRelative{Fastnacht}{-47}{0}%
+% \easterRelative{Aschermittwoch}{-46}{0}%
+% \easterRelative{Karfreitag}{-2}{1}%
+% \easterRelative{Ostern}{0}{1}%
+% \easterRelative{Ostern}{1}{1}%
+% \annual{Tag der Arbeit}{1.5.}{1}%
+% \easterRelative{Himmelfahrt}{39}{1}%
+% \easterRelative{Pfingsten}{49}{1}%
+% \easterRelative{Pfingsten}{50}{1}%
+% \easterRelative{Fronleichnam}{60}{1}%
+% %\annual{Mari"a Himmelfahrt}{15.8.}{0}%
+% %\annual{Reformationstag}{31.10.}{0}%
+% \annual{Allerheiligen}{1.11.}{1}%
+% %\annualMovable{Volkstrauertag}{13.11.}{6}{0}%
+% \annualMovable{Bu"s- und Bettag}{16.11.}{2}{1}%
+% %\annualMovable{Totensonntag}{20.11.}{6}{0}%
+% %\annualMovable{1. Advent}{27.11.}{6}{0}%
+% %\annualMovable{2. Advent}{4.12.}{6}{0}%
+% %\annualMovable{3. Advent}{11.12.}{6}{0}%
+% %\annualMovable{4. Advent}{18.12.}{6}{0}%
+% %\annual{Mari"a Empf"angnis}{8.12.}{0}%
+% \annual{Heiligabend}{24.12.}{0}%
+% \annual{Weihnachten}{25.12.}{1}%
+% \annual{Weihnachten}{26.12.}{1}%
+% \annual{Silvester}{31.12.}{0}%
+%--- end of holiday.tex ------------------------------
+%
+% You may change the following parameters:
+% \columnheight height of the entire column, including title
+% \titleheight height of title containing month name
+% \itemwidth width of one column
+% \daywidth position of right edge of day number in column
+% \weekdaywidth width reserved for day of week
+%
+%----------------------------------------------------------------------
+\input{article.sty}
+\pagestyle{empty}%
+\evensidemargin=0pt
+\oddsidemargin=\evensidemargin
+\topmargin=0pt
+\topmargin 0pt
+\headheight 0pt
+\headsep 0pt
+\footskip 0pt
+%
+\textheight 280mm
+%----------------------------------------------------------------------
+% list macros (see TeXBook, Dirty Tricks)
+
+\let\sep\relax
+
+\toksdef\tb=2
+
+\def\leftlist#1{%
+ \def\sep##1{\relax##1\cr}%
+ \vbox{\halign{##\hfil\cr#1}}%
+}
+
+\def\@ifundef#1{\expandafter\ifx\csname#1\endcsname\relax}
+\def\@nameedef#1{\expandafter\edef\csname #1\endcsname}
+
+\newcount\tmpcnt
+
+\def\remainder#1by#2{%
+ \tmpcnt=#1 %
+ \divide\tmpcnt by #2 %
+ \multiply\tmpcnt by #2 %
+ \advance #1 by -\tmpcnt}
+
+%----------------------------------------------------------------------
+
+\newcount\curday % day
+\newcount\curmonth % month
+\newcount\curweekday % day of week, 0=Monday
+\newcount\curyear % year
+\newcount\daycount % day of year
+\newcount\weekcount % week of year
+\newcount\leapyear % 0=normal year, 1=leap year
+\newcount\easter % easter date, as day of year
+\newcount\startweekday % first day of week in year
+
+\def\setYear#1{
+ \global\curyear=#1 %
+ {% compute leap year
+ \newcount\rf \rf=\curyear \remainder\rf by{4}%
+ \newcount\rh \rh=\curyear \remainder\rh by{100}%
+ \newcount\rfh \rfh=\curyear \remainder\rfh by{400}%
+ \ifnum\rfh=0 %
+ \global\leapyear=1 %
+ \else
+ \ifnum\rh=0 %
+ \global\leapyear=0 %
+ \else
+ \ifnum\rf=0 %
+ \global\leapyear=1 %
+ \else
+ \global\leapyear=0 %
+ \fi
+ \fi
+ \fi
+ }%
+ {% compute easter date
+ % this is the easter formula by C.F.Gauss -- valid up to 8201
+ % (no limitation, considering the current rate of environmental destruction)
+ \newcount\tmpa \tmpa=\curyear \remainder\tmpa by{19}%
+ \newcount\tmpb \tmpb=\curyear \remainder\tmpb by{4}%
+ \newcount\tmpc \tmpc=\curyear \remainder\tmpc by{7}%
+ \newcount\yh \yh=\curyear \divide\yh by 100 %
+ \newcount\yfh \yfh=\curyear \divide\yfh by 400 %
+ \newcount\m \m=\yh
+ \multiply\m by 8 %
+ \advance\m by 13 %
+ \divide\m by 25 %
+ \advance\m by -2 %
+ \newcount\s \s=\yh \advance\s by -\yfh \advance\s by -2 %
+ \newcount\M \M=15 %
+ \advance\M by \s
+ \advance\M by -\m
+ \remainder\M by{30}%
+ \newcount\N \N=6 %
+ \advance\N by \s
+ \remainder\N by{7}%
+ \newcount\d \d=\tmpa
+ \multiply\d by 19 %
+ \advance\d by \M
+ \remainder\d by{30}%
+ \newcount\D
+ \ifnum\d=29 %
+ \D=28 %
+ \else
+ \ifnum\d=28 %
+ \ifnum\d>10 %
+ \D=27 %
+ \else
+ \D=\d
+ \fi
+ \else
+ \D=\d
+ \fi
+ \fi
+ \multiply\tmpb by 2 %
+ \multiply\tmpc by 4 %
+ \newcount\e \e=\D
+ \multiply\e by 6 %
+ \advance\e by \tmpb
+ \advance\e by \tmpc
+ \advance\e by \N
+ \remainder\e by{7}%
+ \advance\e by 80 %
+ \advance\e by \leapyear
+ \advance\e by \D
+ \global\easter=\e
+ }% pooh -- done it
+ {% compute starting day of week --- we know easter is on a sunday
+ \newcount\fsd \fsd=\easter \remainder\fsd by{7}%
+ \newcount\wd \wd=6 \advance\wd by -\fsd
+ \global\startweekday=\wd
+ }%
+}
+
+%----------------------------------------------------------------------
+
+\def\monthlength#1{%
+ \ifnum\leapyear=0
+ \ifcase#1 %
+ 31\or28\or31\or30\or31\or30\or
+ 31\or31\or30\or31\or30\or31%
+ \fi
+ \else
+ \ifcase#1 %
+ 31\or29\or31\or30\or31\or30\or
+ 31\or31\or30\or31\or30\or31%
+ \fi
+ \fi
+}
+
+\def\monthoffset#1{%
+ \ifnum\leapyear=0 %
+ \ifcase#1 %
+ 0\or31\or59\or90\or120\or151\or
+ 181\or212\or243\or273\or304\or334%
+ \fi
+ \else
+ \ifcase#1 %
+ 0\or31\or60\or91\or121\or152\or
+ 182\or213\or244\or274\or305\or335%
+ \fi
+ \fi
+}
+
+%----------------------------------------------------------------------
+% typesetting individual days
+
+% #1 : day in month
+% #2 : Holiday flag (0=workday, 1=holiday)
+\def\typesetDay#1#2{\relax%
+ \ifnum#2=0 %
+ {#1}%
+ \else
+ {\bf #1}%
+ \fi
+}
+
+% #1 : weekday code 0..7, 0=Monday
+% #2 : Holiday flag (0=workday, 1=holiday)
+\def\typesetWeekday#1#2{%
+ \ifnum#2=0 %
+ {\weekdayname{#1}}%
+ \else
+ {\bf\weekdayname{#1}}%
+ \fi
+}
+
+% #1 : annotations, format a1\sepa 2\sep..\sep an
+\def\typesetAnnotations#1{{\leftlist{#1}}}
+
+\newdimen\columnheight \columnheight=247mm
+\newdimen\titleheight \titleheight=10mm
+\newdimen\itemwidth \itemwidth=43mm
+\newdimen\daywidth \daywidth=6mm
+\newdimen\weekdaywidth \weekdaywidth=9mm
+
+\newdimen\itemheight \itemheight=\columnheight
+ \advance\itemheight by -\titleheight
+ \divide\itemheight by 31
+ \advance\itemheight by -2.4pt
+
+\def\typesetItem{%
+ \@ifundef{ann\the\daycount}%
+ \def\ann{}%
+ \else
+ \def\ann{\@nameuse{ann\the\daycount}}%
+ \fi
+ \@ifundef{hol\the\daycount}%
+ \ifnum\curweekday=6 %
+ \def\hol{1}%
+ \else
+ \def\hol{0}%
+ \fi
+ \else
+ \def\hol{\@nameuse{hol\the\daycount}}%
+ \fi
+ \vbox{%
+ \kern1pt%
+ \hbox to \itemwidth{%
+ \vbox to \itemheight{%
+ \vfil
+ \hbox to\daywidth{\hfil{\large\typesetDay{\the\curday}{\hol}}}%
+ \vfil}%
+ \kern2mm%
+ \vbox to \itemheight{%
+ \vfil
+ \hbox to\weekdaywidth{%
+ {\large\typesetWeekday{\the\curweekday}{\hol}}%
+ \hfil}%
+ \vfil}%
+ \vbox to \itemheight{%
+ {\scriptsize\typesetAnnotations{\ann}}%
+ \vfil
+ }%
+ \hfil
+ \ifnum\curweekday=0 %
+ \vbox to \itemheight{%
+ \kern1pt%
+ \hbox{{\scriptsize\the\weekcount}\kern1pt}%
+ \vfil
+ }%
+ \global\advance \weekcount by 1 %
+ \else\relax\fi
+ }%
+ \kern1pt%
+ \hrule}}
+
+\def\typesetDummyItem{%
+ \vbox{%
+ \kern1pt%
+ \hbox to \itemwidth{%
+ \vbox to \itemheight{%
+ \vfil
+ }%
+ \hfil
+ }%
+ \kern1pt
+ \hrule}}
+
+\newcount\lastday
+
+% #1 : number of month, 1=January
+\def\typesetMonth#1{%
+ \vbox{%
+ \vbox to \titleheight{%
+ \hrule
+ \kern2pt%
+ \vfil
+ \hbox to \itemwidth{\hfil{\LARGE\bf\strut\monthname{#1}}\hfil}%
+ \vfil
+ \hrule height0.8pt%
+ }
+ \curday=0 %
+ \edef\lastday{\monthlength{#1} }%
+ \loop\ifnum\curday<\lastday
+ \global\advance \curday by 1 %
+ \typesetItem
+ \global\advance \daycount by 1 %
+ \global\advance \curweekday by 1 %
+ \ifnum\curweekday>6 %
+ \global\advance \curweekday by -7 %
+ \else\relax\fi
+ \repeat
+ \loop\ifnum\curday<31 %
+ \global\advance \curday by 1 %
+ \typesetDummyItem
+ \repeat
+ \vfil
+ }%
+}
+
+% #2 : first month
+% #3 : last month+1
+\def\typesetPartialYear#1#2{%
+ \hrule
+ \hbox{%
+ \curmonth=#1 %
+ \loop\ifnum\curmonth<#2 %
+ \vrule %
+ \typesetMonth{\the\curmonth}%
+ \global\advance\curmonth by 1 %
+ \repeat
+ \vrule
+ }%
+ \hrule
+}
+
+\def\typesetYear{%
+ \curweekday=\startweekday
+ \weekcount=1 %
+ \daycount=0 %
+ \newcount\firstmonth
+ \newcount\endmonth
+ \firstmonth=0 %
+ \loop\ifnum\firstmonth<12 %
+ \endmonth=\firstmonth \advance\endmonth by 4 %
+ \typesetPartialYear{\the\firstmonth}{\the\endmonth}%
+ \eject
+ \advance\firstmonth by 4 %
+ \repeat
+}
+
+%----------------------------------------------------------------------
+
+\def\dayOf#1.#2.#3 {#1}
+\def\monthOf#1.#2.#3 {#2}
+\def\yearOf#1.#2.#3 {#3}
+
+\def\addAnn#1#2#3{%
+ \@ifundef{ann#1}%
+ \@namedef{ann#1}{}%
+ \else
+ \relax
+ \fi
+ \tb=\expandafter{#2}%
+ \@nameedef{ann#1}{\@nameuse{ann#1}\noexpand\sep{\the\tb#3}}%
+}
+
+\def\addHol#1#2{%
+ \ifnum#2=1 %
+ \@namedef{hol#1}{1}%
+ \else\relax\fi
+}
+
+%----------------------------------------------------------------------
+% entries for holidays
+
+% #1 : text
+% #2 : date in format d.m.
+% #3 : holiday flag
+\def\annual#1#2#3{%
+ \edef\dof{\dayOf#2 }%
+ \edef\mof{\monthOf#2 }%
+ \tmpcnt=\mof
+ \advance\tmpcnt by -1 %
+ \edef\moff{\monthoffset{\the\tmpcnt}}%
+ \tmpcnt=\moff
+ \advance\tmpcnt by \dof
+ \advance\tmpcnt by -1 %
+ \edef\doy{\the\tmpcnt}%
+ \addAnn{\doy}{#1}{}%
+ \addHol{\doy}{#3}%
+}
+
+% #1 : text
+% #2 : date in format d.m.
+% #3 : day of week
+% #4 : holiday flag
+\def\annualMovable#1#2#3#4{%
+ \edef\dof{\dayOf#2 }%
+ \edef\mof{\monthOf#2 }%
+ \curday=\mof
+ \advance\curday by -1 %
+ \edef\moff{\monthoffset{\the\curday}}%
+ \curday=\moff %
+ \advance\curday by \dof
+ \advance\curday by -1 %
+ \curweekday=700 %
+ \advance\curweekday by -\curday
+ \advance\curweekday by -\startweekday
+ \advance\curweekday by#3 %
+ \remainder\curweekday by{7}%
+ \advance\curday by \curweekday
+ \edef\doy{\the\curday}%
+ \addAnn{\doy}{#1}{}%
+ \addHol{\doy}{#4}%
+}
+
+% #1 : text
+% #2 : offset to easter (may be negative)
+% #3 : holiday flag
+\def\easterRelative#1#2#3{%
+ \tmpcnt=\easter %
+ \advance\tmpcnt by #2 %
+ \edef\doy{\the\tmpcnt}%
+ \addAnn{\doy}{#1}{}%
+ \addHol{\doy}{#3}%
+}
+
+% #1 : text
+% #2 : date in format d.m.y
+% #3 : holiday flag
+\def\anniversary#1#2#3{%
+ \edef\dof{\dayOf#2 }%
+ \edef\mof{\monthOf#2 }%
+ \edef\yof{\yearOf#2 }%
+ \tmpcnt=\mof
+ \advance\tmpcnt by -1 %
+ \edef\moff{\monthoffset{\the\tmpcnt}}%
+ \tmpcnt=\moff
+ \advance\tmpcnt by \dof
+ \advance\tmpcnt by -1 %
+ \edef\doy{\the\tmpcnt}%
+ \tmpcnt=\curyear %
+ \advance\tmpcnt by -\yof
+ \addAnn{\doy}{#1 }{\the\tmpcnt}%
+ \addHol{\doy}{#3}%
+}
diff --git a/macros/latex209/contrib/misc/calorie.sty b/macros/latex209/contrib/misc/calorie.sty
new file mode 100644
index 0000000000..859839c1f9
--- /dev/null
+++ b/macros/latex209/contrib/misc/calorie.sty
@@ -0,0 +1,989 @@
+% calorie.sty --- LaTeX macro of calorie checking for who goes on a diet.
+%
+% Note:
+% This file is distributed WITHOUT ANY WARRANTY.
+% No author or distributor accepts responsibility
+% to anyone for the consequences of using it.
+% I am NOT a dietitian nor a medical doctor.
+%
+% Copyright (c) 1994 by Shuji Aonuma.
+% Reports or requests to aonuma@kodama.issp.u-tokyo.ac.jp
+%
+% Unchanged copies of this file may be freely distributed.
+% You may modify a renamed copy of this file.
+%
+% Calorie data are taken from
+% ``Karorii chekku nouto (Calorie Check Notebook)'', Fusosha Publishing (1994)
+% (in Japanese).
+%
+% Documentation is not ready, but
+% example calorie data, TeX, PostScript files are added at end of this file.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%% RCS
+\def\RCS@HEADER$#1: #2.#3 #4 #5 #6 #7 #8${%
+ \def\RCS@NAME{#2}%
+ \def\RCS@REVISION{#4}\def\RCS@DATE{#5}%
+ \def\RCS@AUTHOR{#7}
+ \typeout{\RCS@NAME\@spaces********* Version: \RCS@REVISION\space(\RCS@DATE).}
+ }
+\RCS@HEADER$Header: calorie.stv 1.3 94/12/22 19:26:06 noteASC2-issp Brief $
+%RCS information file name release date time machine status(or Brief when auto check in on a Brief Editor)
+
+% new skips, counters, ifs
+\newskip\Cat@a \newskip\Cat@b \newskip\Cat@c \newskip\Cat@d \newskip\Cat@e%
+\newskip\Cat@f \newskip\Cat@g \newskip\Cat@h \newskip\Cat@i \newskip\Cat@j%
+\newskip\Cat@k \newskip\Cat@l \newskip\Cat@m \newskip\Cat@n \newskip\Cat@o%
+
+\newif\ifCat@a@ \newif\ifCat@b@ \newif\ifCat@c@ \newif\ifCat@d@ \newif\ifCat@e@%
+\newif\ifCat@f@ \newif\ifCat@g@ \newif\ifCat@h@ \newif\ifCat@i@ \newif\ifCat@j@%
+\newif\ifCat@k@ \newif\ifCat@l@ \newif\ifCat@m@ \newif\ifCat@n@ \newif\ifCat@o@%
+
+\newskip\Total@bf \newskip\Total@lu \newskip\Total@tb%
+\newskip\Total@su \newskip\Total@mm \newskip\Total@all%
+\newskip\Total@tmp%
+
+\newskip\Cal@tmp%
+\newcount\Rd@a \newcount\Rd@b
+\newcount\Year \newcount\Month \newcount\Day
+\newcount\CDtmpa \newcount\CDtmpb \newcount\CDtmpc \newcount\WDay
+\newskip\CalorieWd
+
+\newskip\StdCalorie\StdCalorie\z@
+\newskip\LimitCalorie\LimitCalorie\z@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%default column width%
+\CalorieWd\columnwidth
+
+
+%Set standard calorie limit. Warned when exceeded.
+\def\SetCalorie#1{\StdCalorie#1pt}%
+% for example
+% \SetCalorie{2200}%Japanese male, 30 years-old, light job, 170cm height, 65kg
+
+ % Standard required calorie (kcal) t=one's height in cm
+ % age female male
+ % 20-29 15.50t-636 20.00t-1150
+ % 30-39 15.00t-611 19.17t-1054
+ % 40-49 15.00t-611 18.57t-998
+ % 50-59 16.00t-788 20.00t-1300
+ % 60- 16.00t-858 18.21t-1132
+
+%date
+\def\YE@#1#2#3#4#5#6{19#1#2}%
+\def\DY@#1#2#3#4#5#6{\if#50#6\else#5#6\fi}%
+\def\MN@#1#2#3#4#5#6{%
+ \if #30\ifcase#4\or Jan.\or Feb.\or Mar.\or Apr.\or May\or Jun.\or%
+ Jul.\or Aug.\or Sep.\fi\fi%
+ \if #31\ifcase#4 Oct.\or Nov.\or Dec.\fi\fi
+}
+\def\CalcDay#1#2#3#4#5#6{%Stolen without permission from dayofweek.sty on CTAN
+ % by Martin Minow of DEC (minow%bolt.dec@decwrl.dec.com).
+ \Month=#3#4\relax\Day=#5#6\relax\Year=19#1#2\relax%
+ \CDtmpa=\Month \advance\CDtmpa-14 \divide\CDtmpa12%
+ \advance\CDtmpa\Year
+ \WDay=\Month \advance\WDay10
+ \CDtmpc=\WDay \divide\CDtmpc13
+ \multiply\CDtmpc12
+ \advance\WDay-\CDtmpc\relax \multiply\WDay13 \advance\WDay-1
+ \divide\WDay5 \advance\WDay\Day \advance\WDay77
+ \CDtmpb=\CDtmpa \CDtmpc=\CDtmpb \divide\CDtmpc100 \multiply\CDtmpc100
+ \advance\CDtmpb-\CDtmpc
+ \multiply\CDtmpb5 \divide\CDtmpb4 \advance\WDay\CDtmpb
+ \CDtmpb=\CDtmpa \divide\CDtmpb400 \advance\WDay\CDtmpb
+ \CDtmpb=\CDtmpa \divide\CDtmpb100 \multiply\CDtmpb2 \advance\WDay-\CDtmpb
+ \CDtmpb=\WDay \divide\CDtmpb7 \multiply\CDtmpb7 \advance\WDay-\CDtmpb
+ \ifcase\WDay Sun.\or Mon.\or Tue.\or Wed.\or
+ Thu.\or Fri.\or Sat.\fi
+}
+
+
+%%%%%
+\def\Hrule{\rule[.5ex]{\CalorieWd}{.3pt}\\}
+\def\Vskip{\vskip1ex}
+
+%%%%%
+%make dimension to real (e.g. 12.5pt -> 12.5)
+{\catcode`\p=12\catcode`\t=12%
+\gdef\REAL@In#1.#2pt{\Rd@a#1\relax}\gdef\REAL@Fl#1.#2pt{\Round@#2/}}
+
+\def\Rd#1{\expandafter\REAL@In\the#1\expandafter\REAL@Fl\the#1%
+ \the\Rd@a\hbox to 2ex{.\the\Rd@b\hss}}
+
+\def\Round@#1{\@ifnextchar/{\Round@@#10}{\Round@@#1}}
+\def\Round@@#1#2{\@ifnextchar/{\Round@@@#1#20}{\Round@@@#1#2}}
+\def\Round@@@#1#2#3/{%
+ \Rd@b#1\relax\@tempcntb#2\relax%
+ \ifnum\@tempcntb>4\advance\Rd@b1\relax\fi%
+ \ifnum\Rd@b=10\advance\Rd@a1\relax\Rd@b0\relax\fi%
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\begin{Calorie}{date} date -> 941224
+% |
+% |
+%\end{Calorie}
+
+\def\Calorie#1{%
+ \parindent\z@%
+ %date
+ \hbox to \CalorieWd{{\NameDate \CalcDay#1, \MN@#1\space\DY@#1, \YE@#1}\hfill kcal}
+ \Vskip
+ %initialize
+ \LimitCalorie\StdCalorie%
+ \Cat@a\z@ \Cat@b\z@ \Cat@c\z@ \Cat@d\z@ \Cat@e\z@ \Cat@f\z@%
+ \Cat@g\z@ \Cat@h\z@ \Cat@i\z@ \Cat@j\z@ \Cat@k\z@ \Cat@l\z@%
+ \Cat@m\z@ \Cat@n\z@ \Cat@o\z@%
+ \Cat@a@false \Cat@b@false \Cat@c@false \Cat@d@false \Cat@e@false \Cat@f@false%
+ \Cat@g@false \Cat@h@false \Cat@i@false \Cat@j@false \Cat@k@false \Cat@l@false%
+ \Cat@m@false \Cat@n@false \Cat@o@false%
+ \Total@bf\z@ \Total@lu\z@ \Total@tb\z@ \Total@su\z@ \Total@mm\z@%
+ \Total@all\z@ \Total@tmp\z@%
+}
+
+\def\endCalorie{%
+ \Total@all\Total@bf%sum for a whole day.
+ \advance\Total@all\Total@lu%
+ \advance\Total@all\Total@tb%
+ \advance\Total@all\Total@su%
+ \advance\Total@all\Total@mm%
+ \Hrule\PrintCat\Hrule%print items
+ \hbox to \CalorieWd{\null\hfill\NameTotal\dotfill\Rd\Total@all}\\%print total
+ \hbox to \CalorieWd{\null\hfill\NameLimit\null\hfill\Rd\LimitCalorie}\\%
+ \ifdim\Total@all>\LimitCalorie%warning
+ \Vskip\advance\Total@all-\LimitCalorie%
+ \fbox{\hbox to \CalorieWd%
+ {\bf\NameWarning\hfill{\Large\bf\Rd\Total@all} kcal\hfill\NameOver}}%
+ \fi%
+}
+
+\def\TotalCat#1{%partial sum
+ \csname Total@#1\endcsname\Cat@a%
+ \advance\csname Total@#1\endcsname\Cat@b%
+ \advance\csname Total@#1\endcsname\Cat@c%
+ \advance\csname Total@#1\endcsname\Cat@d%
+ \advance\csname Total@#1\endcsname\Cat@e%
+ \advance\csname Total@#1\endcsname\Cat@f%
+ \advance\csname Total@#1\endcsname\Cat@g%
+ \advance\csname Total@#1\endcsname\Cat@h%
+ \advance\csname Total@#1\endcsname\Cat@i%
+ \advance\csname Total@#1\endcsname\Cat@j%
+ \advance\csname Total@#1\endcsname\Cat@k%
+ \advance\csname Total@#1\endcsname\Cat@l%
+ \advance\csname Total@#1\endcsname\Cat@m%
+ \advance\csname Total@#1\endcsname\Cat@n%
+ \advance\csname Total@#1\endcsname\Cat@o%
+}
+
+\def\Print@Cat#1{%print data
+ \hbox to \CalorieWd{%
+ \hskip.3\CalorieWd\hbox to 5ex{\hss(#1)\hss}%
+ \hbox to 3ex{\hss\csname ifCat@#1@\endcsname$\circ$\else$\times$\fi\hss}%
+ \csname CatName#1\endcsname%
+ \hfill\Rd{\csname Cat@#1\endcsname}
+ }\\
+}
+
+\def\PrintCat{%print item
+ \NameDetail\\
+ \Print@Cat{a} \Print@Cat{b} \Print@Cat{c} \Print@Cat{d} \Print@Cat{e}
+ \Print@Cat{f} \Print@Cat{g} \Print@Cat{h} \Print@Cat{i} \Print@Cat{j}
+ \Print@Cat{k} \Print@Cat{l} \Print@Cat{m} \Print@Cat{n} \Print@Cat{o}
+}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% I usually have five meals, breakfast, lunch, tea-break snack,
+% supper, and finally a light snack with drinking liquor or beer
+% at midnight.
+%
+% So I prepared five environments which work inside the Calorie environment.
+% Breakfast
+% Lunch
+% TeaBreak
+% Supper
+% NightSnack
+%
+
+
+\def\Breakfast{\Vskip\Total@tmp\z@\Hrule}
+\def\endBreakfast{%
+ \global\Total@bf\Total@tmp\Hrule%
+ \hbox to \CalorieWd{\NameBreakfast\dotfill\Rd\Total@bf}%
+}
+
+\def\Lunch{\Vskip\Total@tmp\z@\Hrule}
+\def\endLunch{%
+ \global\Total@lu\Total@tmp\Hrule%
+ \hbox to \CalorieWd{\NameLunch\dotfill\Rd\Total@lu}%
+}
+
+\def\TeaBreak{\Vskip\Total@tmp\z@\Hrule}
+\def\endTeaBreak{%
+ \global\Total@tb\Total@tmp\Hrule%
+ \hbox to \CalorieWd{\NameTeaBreak\dotfill\Rd\Total@tb}%
+}
+
+\def\Supper{\Vskip\Total@tmp\z@\Hrule}
+\def\endSupper{%
+ \global\Total@su\Total@tmp\Hrule%
+ \hbox to \CalorieWd{\NameSupper\dotfill\Rd\Total@su}%
+}
+
+\def\NightSnack{\Vskip\Total@tmp\z@\Hrule}
+\def\endNightSnack{%
+ \global\Total@mm\Total@tmp\Hrule%
+ \hbox to \CalorieWd{\NameNightSnack\dotfill\Rd\Total@mm}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \Cal{name of material}{category}{unit calorie}{unit}{amount}
+%
+\def\Cal#1#2#3#4#5{\Cal@tmp#3pt%
+ \Cal@tmp#5\Cal@tmp%
+ \def\Tmp@{#1}
+ \global\advance\csname Cat@#2\endcsname\Cal@tmp%
+ \global\csname Cat@#2@true\endcsname%
+ \advance\Total@tmp\Cal@tmp%
+ \hbox to \CalorieWd{%
+ \hbox to 5ex{\hss(#2)\hss}
+ \ifx\Tmp@\@empty%
+ \hfill\else#1, #5\ \ifx#51#4\else#4\PlChar\fi\dotfill\
+ \fi%
+ \Rd\Cal@tmp}\\}
+
+
+
+% To define daily material
+% \cdef{name}{category}{unit calorie}{unit}
+% is equivalent to
+% \def\name#1{\Cal{category}{unit calorie}{unit}#1}
+%
+\def\cdef#1#2#3#4{%
+ \expandafter\ifx\csname #1\endcsname\relax%
+ \expandafter\def\csname#1\endcsname##1{\Cal{#1}{#2}{#3}{#4}{##1}}%
+ \else%
+ \@latexerr{Command name `#1' already used}\@eha
+ \fi%
+}
+
+%%%%%%%%%%%%%%
+% \Cons{name of exercise}{unit calorie}{unit}{amount}
+% calories of additional exercise,
+% which inflate the calorie limit, \LimitCalorie.
+%
+
+\def\Cons#1#2#3#4{\Cal@tmp#2pt%
+ \Cal@tmp#4\Cal@tmp%
+ \global\advance\LimitCalorie\Cal@tmp%
+ \hbox to \CalorieWd{%
+ \hfill#1, #4\ \ifx#41#3\else#3s\fi\dotfill%
+ $-$\Rd\Cal@tmp}}
+
+% To define daily exercise.
+% Similar to \cdef
+
+\def\sdef#1#2#3{%
+ \expandafter\ifx\csname #1\endcsname\relax%
+ \expandafter\def\csname#1\endcsname##1{\Cons{#1}{#2}{#3}{##1}}
+ \else%
+ \@latexerr{Command name `#1' already used}\@eha
+ \fi%
+}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Japanese version, which may be more satisfying, will be sent by an email on request.
+%
+\def\NameDate{\large\bf Date: }
+\def\NameTotal{{\bf Total }}
+\def\NameLimit{{\bf Limit }}
+\def\NameDetail{{\bf Items }}
+\def\NameWarning{{Warning}}
+\def\NameOver{{ Exceeded!!}}
+\def\PlChar{s}%plural char
+\def\NameBreakfast{{\bf Breakfast} \hfill total}
+\def\NameLunch{{\bf Lunch} \hfill total}
+\def\NameTeaBreak{{\bf Tea Break} \hfill total}
+\def\NameSupper{{\bf Supper} \hfill total}
+\def\NameNightSnack{{\bf Night Snack} \hfill total}
+
+% Categories of materials
+% I am unfamiliar with nutrition.
+% I hope someone teach me suitable terminology.
+\def\CatNamea{Cereals}
+\def\CatNameb{Meats}
+\def\CatNamec{Seafoods}
+\def\CatNamed{Eggs}
+\def\CatNamee{Dairy products}
+\def\CatNamef{Beans}
+\def\CatNameg{Potatoes}
+\def\CatNameh{Green vegetables}
+\def\CatNamei{Other vegetables}
+\def\CatNamej{Dry goods}%Laver, dried fish etc
+\def\CatNamek{Fruits}
+\def\CatNamel{Oils \& seasonings}
+\def\CatNamem{Confectioneries}
+\def\CatNamen{Drinks}
+\def\CatNameo{Miscellaneous}
+
+
+% if calorie.dat file exists, load it in.
+\openin1 calorie.dat
+\ifeof1\else\closein1 \relax\@@input calorie.dat\fi
+
+
+
+\endinput
+
+Following are two files, calorie.dat (sample data file) and
+example.tex (example).
+To obtain an example,
+save as in separated files, and compile example.tex
+
+
+calorie.dat --- sample data file for calorie.sty
+----------------cut here----------------
+%% calorie.dat
+% Calorie data for daily materials.
+%
+%
+\cdef{Rice}{a}{200}{cup}
+\cdef{Noodles}{a}{210}{cup}
+\cdef{Soba}{a}{240}{cup}
+\cdef{ChinaNoodles}{a}{370}{cup}
+\cdef{Bread}{a}{160}{slice}
+\cdef{CalorieMate}{a}{100}{piece}%eutrophic
+\cdef{VitaminSalad}{a}{23.333}{piece}%eutrophic
+\cdef{Yogurt}{e}{0.6}{gram}
+\cdef{Tofu}{f}{240}{chou}
+\cdef{Egg}{d}{80}{piece}%egg
+\cdef{Carrot}{i}{0.32}{gram}
+\cdef{Beer}{n}{0.4}{ml}
+\cdef{Coffee}{n}{0}{cup}
+\cdef{Fried}{l}{2}{cm$^3$}
+
+%Set
+
+\def\Sushi#1{%
+ \Cal{Sushi rice}{a}{40}{piece}{#1}
+ \Cal{Raw fish}{c}{15}{piece}{#1}
+ \Cal{Vinegar}{l}{0}{ml}{#1}
+}
+\cdef{Quail}{d}{18}{piece}%egg of quail
+\cdef{Nattoh}{f}{2}{gram}
+\cdef{Laver}{j}{0}{sheet}
+
+\def\Quixote{% Curry lunch at Quixote
+ \Cal{Curry (Quixote)}{o}{50}{dish}{1}
+ \Cal{}{a}{70}{}{1}
+ \Cal{}{g}{40}{}{1}
+ \Cal{}{i}{20}{}{1}
+ \Cal{}{l}{50}{}{1}
+ \Cal{Rice}{a}{1}{gram}{200}
+ \Cal{Cabbage}{h}{.1}{gram}{30}
+}
+
+
+% exercise
+\sdef{Jog}{4}{min}
+\sdef{Walk}{1.6}{min}
+\sdef{Tennis}{5.33}{min}
+
+\endinput
+----------------cut here----------------
+
+
+
+example.tex --- example of calorie.sty
+----------------cut here----------------
+%example.tex
+\documentstyle[%
+ a4,%
+ calorie%
+]{article}
+\begin{document}
+ \SetCalorie{2200}
+ %Standard for a Japanese male,
+ %170cm height, light job
+
+ \begin{Calorie}{941221}
+ \Tennis{30}
+
+ \begin{Breakfast}
+ \VitaminSalad{3}
+ \CalorieMate{4}
+ \Coffee{1}
+ \end{Breakfast}
+
+ \begin{Lunch}
+ \Quixote%Curry set at Restaurant Quixote
+ \Cal{Scallop}{o}{1.11}{gram}{50}
+ \Fried{20}
+ \Coffee{1}
+ \end{Lunch}
+
+ \Jog{20}
+
+ \begin{Supper}
+ \Sushi{20}
+ \Egg{.3}
+ \Quail{1}
+ \Nattoh{10}
+ \Laver{5}
+ \end{Supper}
+
+ \begin{NightSnack}
+ \Yogurt{60}
+ \Beer{700}
+ \end{NightSnack}
+
+ \end{Calorie}
+\end{document}
+----------------cut here----------------
+
+
+example.tex --- example of calorie.sty
+----------------cut here----------------
+%!PS-Adobe-2.0
+%%Creator: dvips 5.54 Copyright 1986, 1994 Radical Eye Software
+%%Title: CALORIE.DVI
+%%CreationDate: Thu Dec 22 19:37:36 1994
+%%Pages: 2
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%EndComments
+%DVIPSCommandLine: C:\DRIVERS\DVIPS\DVIPS.EXE CALORIE.DVI
+%DVIPSParameters: dpi=600, compressed, comments removed
+%DVIPSSource: TeX output 1994.12.22:1936
+%%BeginProcSet: texc.pro
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
+/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
+mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
+ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
+hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
+TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
+round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
+0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
+begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
+array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
+setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
+FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
+pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
+B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
+length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
+/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
+0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
+index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
+ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
+ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id
+ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{
+rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get
+/gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp
+X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X
+adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup
+255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}
+B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv
+S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
+putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
+adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
+{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
+adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
+chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{]
+}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
+length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
+cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
+add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
+userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
+/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
+65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
+0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
+{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
+getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
+ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
+false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
+scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath
+transform round exch round exch itransform moveto rulex 0 rlineto 0
+ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
+0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
+B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
+3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
+-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
+3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
+%%EndProcSet
+TeXDict begin 39158280 55380996 1000 600 600
+(C:\DRIVERS\DVIPS/CALORIE.DVI) @start /Fa 3 55 df<EA03F8EA0FFE487E481380
+4813C0A2B512E0A76C13C0A26C13806C13006C5AEA03F81313779226>46
+D<91380FFFC091B512FE0107ECFFC0011F15F04915FC90267FF8077F9026FFC0007F4848
+C76C138048486E13C0486C6E13E0486C6C15F08082486D15F8A380A25CA26C5D4A15F06C
+5B6C90C7FCC64816E090C85A18C04C138018004C5A4B5B4B5B030F5B037F13C0027FB55A
+04FCC7FC16F016FEEEFFC0DA000713F0030113FC6F6CB4FC7013807013C018E07013F018
+F818FCA27013FEA3D801E016FFEA0FFC487E487E487FA2B57EA318FEA25E18FC6C5B18F8
+91C75A6C4816F0D81FF84A13E06D4A13C06CB449B512806CD9F00714006C90B65AC616F8
+013F15E0010F1580010102FCC7FCD9001F13C0384F7ACD45>51 D<923807FF80037F13F0
+0203B512FC021F14FF027F158091B5000113C001039039F8003FE04901E0130F490180EB
+3FF04990C712FF49485B494815F849485B5A5C5A485BA2486F13F05C486F13E0EF3F8094
+C7FC5AA25C5AA2ED3FF80281B57E028314E0B5008714F8028F80DA9FC07F9139BF001FFF
+02FC6D13807013C04A6D13E04A15F018F84A7F18FCA24A15FEA44A15FFA37EA67EA46C17
+FE80A26C17FCA26C4B13F8806C17F06C6D15E06C5D6E4913C0D97FFE4913806D6C6CB512
+006D90B512FC01075D6D5D010015C0021F49C7FC020313E0384F7ACD45>54
+D E /Fb 1 52 df<13FF000313E0380F01F8381C007C0030137E003C133E007E133FA412
+3CC7123E147E147C5C495AEB07E03801FF8091C7FC380001E06D7E147C80143F801580A2
+1238127C12FEA21500485B0078133E00705B6C5B381F01F03807FFC0C690C7FC19277DA5
+21>51 D E /Fc 28 121 df<EA0F80EA3FE0EA7FF0EAFFF8A8EA7FF0A7EA3FE0A7EA1FC0
+A7EA0F80A7C7FCA7EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D3B78BA
+1D>33 D<B812C017FC17FF18C028007FF000037F04007F717E717E171F84A2717EA74D5A
+A260173F4D5A4D5A4C13C0040F5B91B600FCC7FCA2EFFF8002F0C713F0EF3FF8717E717E
+717E19807113C0A319E0A719C0A25F4D138019005FEF7FFE4C485AB912F018C095C7FC17
+F03B397DB844>66 D<B912F0A426007FF8C7FCEF1FF8170717031701A21700A21878A304
+3C137C183CA41800167CA216FC150391B5FCA4ECF8031500167CA2163C180FA3181EA293
+C7FCA2183EA2183C187CA218FCA2EF01F81703170F173FEE01FFB9FC18F0A338397DB83F
+>69 D<B612FCA439007FF800B3B3ADB612FCA41E397DB824>73 D<B7FCA426007FF8C9FC
+B3ACEF0780A5170F1800A35FA25FA25F5F5E5EEE0FFE167FB8FCA431397DB839>76
+D<B500FC0203B512F0A28080C66C6D90390003F0006F6E5A81017B7F13798101787F6E7E
+6E7E6E7F6E7FA26E7F6E7F6E7F6E7F6F7E153F826F13806F13C06F13E06F13F06F13F881
+17FCEE7FFEEE3FFF7013817013C17013E18218F17013F97013FDEF7FFF8383A283838383
+83187FA2183F181F01FC160FB500FC150718031801A244397DB84B>78
+D<D907FF130E013FEBE01E90B5EAF83E0003ECFE7E3A07FC01FFFE390FF0001F4848130F
+48481303491301007F140090C8FC167E5A163EA27F161E7F7F6D91C7FC13FC387FFFE014
+FEECFFF06C14FE6F7E6C816C15F06C816C81C681133F010F801301D9000F1480EC007F03
+0F13C01503818100F0157FA3163FA27E17807E167F6C16007E6D14FE01E0495A01F81303
+9039FF801FF800FC90B512E0D8F83F5CD8F00749C7FC39E0007FF02A3B7BB935>83
+D<003FB91280A4D9F800EBF003D87FC09238007FC049161F007EC7150FA2007C1707A200
+781703A400F818E0481701A4C892C7FCB3AE010FB7FCA43B387DB742>I<B6D8E01FB500
+FC90383FFFFCA4000101F0C7D83FFCC8EA7E006C71153C171F6E197C017F701578836E70
+14F8013F6F5E6E1801011F4B6D5CA26E18036D4B6D5CA26D6D496D495A173C6F170F6D03
+7C6D91C7FCEF787F6F5F6D4B6C6C131E816D02016E5BEFE01F03F8177C027F01036E1378
+4D7E03FCEE80F8023F49486C5C15FE021F010FEDC1E04D7E03FF16C36E49EDE3C0041E7F
+049E15F76E01BC6D5C04FC15FF6E95C8FC4C80A26E5F4C143F6E5F4C141FA2037F5E4C14
+0FA26F486E5AA2031F5E93C812036F5E5E3A7EB863>87 D<EB3FFE0003B512E0000F14F8
+391FF00FFE003FEB03FF6D6C7F6E7FA26F7EA26C5A6C5AEA0380C8FCA2EC3FFF010FB5FC
+137F3901FFF87F00071380380FFE00EA3FF85B485A12FF5BA415FF6D5A127F263FF00713
+F83B1FFC1FBFFFC0390FFFFE1F0003EBF80F39003FE0032A257DA42E>97
+D<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF8121F13F012
+3F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6CEB07C06C
+6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>99
+D<EE7F80ED7FFFA4150381AF903801FF81010F13F1013F13FD9038FFC07F0003EB001FD8
+07FC1307000F8048487F5B123FA2485AA312FFAA127FA27F123FA26C6C5B000F5C6C6C5B
+6C6C4913C02701FF80FD13FE39007FFFF9011F13E1010313012F3A7DB935>I<903803FF
+80011F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003F
+EC0FF0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D
+14F000071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C>
+I<EC1FF0903801FFFC010713FF90391FF87F8090383FE0FFD9FFC113C0A2481381A24813
+016E1380A2ED3E0092C7FCA8B6FCA4000390C8FCB3ABB512FEA4223A7DB91D>I<161FD9
+07FEEBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C138F003F15CF
+4990387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B5
+12F86D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C81
+6C815A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81F
+F0EB07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA4
+12077EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25C
+A291C7FCB3A3B5D8FC3F13FFA4303A7DB935>I<EA01F0EA07FC487EA2487EA56C5AA26C
+5AEA01F0C8FCA913FF127FA412077EB3A9B512F8A4153B7DBA1B>I<13FFB5FCA412077E
+AF92380FFFE0A4923803FC0016F0ED0FE0ED1F804BC7FC157E5DEC03F8EC07E04A5A141F
+EC7FE04A7E8181A2ECCFFEEC0FFF496C7F806E7F6E7F82157F6F7E6F7E82150F82B5D8F8
+3F13F8A42D3A7EB932>107 D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>I<01FE
+D97FE0EB0FFC00FF902601FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA
+3C00903887801F000749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3
+A3B5D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91
+381F03FFDA3C011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FF
+A430257DA435>I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48
+486D7E48486D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F
+5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA4
+30>I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDAF00113800003496C13C00280
+EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E0
+6EEBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FC
+A42F357EA435>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C
+5A5CA29138807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>114
+D<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15787E
+7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE
+140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F81400
+38E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7
+FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357EB425>
+I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90
+387FFFFC011F13F00103138030257DA435>I<B539F01FFFF0A4000390398003F8006C01
+C013E06C1407D97FE05B6D6C485A6E48C7FC90381FFC3E010F5B903807FEFC6D6C5A5D6D
+5B6D5B6E7E6E7E814A7EA24A7E903801F3FFD903E37FD907C17FEB0FC049486C7E4A6C7E
+013E80496D7E49130F00016E7EB590383FFFF8A42D257EA432>120
+D E /Fd 3 15 df<007FB81280B912C0A26C17803204799641>0
+D<0060150600F8150F6C151F007E153F6C157E6C6C14FC6C6CEB01F86C6CEB03F06C6CEB
+07E06C6CEB0FC06C6CEB1F80017EEB3F006D137E6D6C5A90380FC1F8903807E3F0903803
+F7E06DB45A6D5B6EC7FCA24A7E497F903803F7E0903807E3F090380FC1F890381F80FC90
+383F007E017E7F49EB1F804848EB0FC04848EB07E04848EB03F04848EB01F84848EB00FC
+48C8127E007E153F48151F48150F00601506282874A841>2 D<EB0FE0EB7FFC497E0003
+EBFF803907F83FC0390FC007E0391F8003F0393F0001F8003E130048147CA20078143C00
+F8143EA248141EA46C143EA20078143C007C147CA26C14F8003F1301391F8003F0390FC0
+07E03907F83FC06CB51280C6EBFE006D5AEB0FE01F207BA42A>14
+D E /Fe 1 59 df<121C127FEAFF80A5EA7F00121C0909798817>58
+D E /Ff 59 122 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F90
+3B1F8007FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8
+A32801F80003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>11
+D<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007017E497EA25B
+A2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B5
+12C0A32A3B7FBA2E>I<141FEC7FC0903801F0E0903803C0600107137090380F80309038
+1F00381518A25BA2133E133F15381530A215705D5D140190381F838092CAFC1487148E02
+DC49B51280EB0FF85C4A9039003FF8000107ED0FC06E5D71C7FC6E140E010F150CD91DFC
+141C01391518D970FE143801E015302601C07F1470D803805D00076D6C5BD80F00EBC001
+48011F5C4890380FE003003E6E48C8FC007E903807F8060203130E00FE6E5A6E6C5A1400
+ED7F706C4B13036F5A6F7E6C6C6D6C5B7013066C6C496C130E6DD979FE5B281FF001F07F
+133C3C07F80FE03FC0F86CB539800FFFF0C69026FE000313C0D91FF0D9007FC7FC393E7D
+BB41>38 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B12
+0F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C
+7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40
+D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F
+A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2
+5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<121C127FEAFF80A213C0
+A3127F121C1200A412011380A2120313005A1206120E5A5A5A12600A19798817>44
+D<121C127FEAFF80A5EA7F00121C0909798817>46 D<EB03F8EB1FFF90387E0FC09038F8
+03E03901E000F0484813780007147C48487FA248C77EA2481580A3007EEC0FC0A600FE15
+E0B3007E15C0A4007F141F6C1580A36C15006D5B000F143EA26C6C5B6C6C5B6C6C485A6C
+6C485A90387E0FC0D91FFFC7FCEB03F8233A7DB72A>48 D<EB01C013031307131F13FFB5
+FCA2131F1200B3B3A8497E007FB512F0A31C3879B72A>I<EB0FF0EB7FFE48B57E3903E0
+3FE0390F000FF0000E6D7E486D7E486D7E123000706D7E126012FCB4EC7F807FA56CC7FC
+121CC8FCEDFF00A34A5A5D14035D4A5A5D140F4A5A4A5A92C7FC147C5C495A495A495A49
+5A91C8FC011EEB01805B5B49130348481400485A485A000EC75A000FB6FC5A5A485CB6FC
+A321387CB72A>I<EB07F8EB3FFF4913C03901F80FF03903C007F848486C7E380E000100
+0F80381FE0006D7FA56C5A6C5AC85A1401A25D4A5AA24A5A5DEC0F80027EC7FCEB1FFCEC
+FF809038000FE06E7EEC01FC816E7EED7F80A216C0A2153F16E0A2121EEA7F80487EA416
+C049137F007F1580007EC7FC0070ECFF006C495A121E390F8003F83907F00FF00001B512
+C06C6C90C7FCEB0FF8233A7DB72A>I<1538A2157815F8A2140114031407A2140F141F14
+1B14331473146314C313011483EB030313071306130C131C131813301370136013C01201
+EA038013005A120E120C5A123812305A12E0B712F8A3C73803F800AB4A7E0103B512F8A3
+25397EB82A>I<0006140CD80780133C9038F003F890B5FC5D5D158092C7FC14FC38067F
+E090C9FCABEB07F8EB3FFE9038780F803907E007E090388003F0496C7E12066E7EC87EA2
+8181A21680A4123E127F487EA490C71300485C12E000605C12700030495A00385C6C1303
+001E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1FE0213A7CB72A>I<EC3FC090
+3801FFF0010713FC90380FE03E90383F800790387E001F49EB3F804848137F485AA2485A
+000FEC3F0049131E001F91C7FCA2485AA3127F90C9FCEB01FC903807FF8039FF1E07E090
+383801F0496C7E01607F01E0137E497FA249148016C0151FA290C713E0A57EA56C7E16C0
+A2121FED3F807F000F15006C6C5B15FE6C6C5B6C6C485A3900FE07F090383FFFC06D90C7
+FCEB03FC233A7DB72A>I<12301238123E003FB612E0A316C05A168016000070C7120600
+60140E5D151800E01438485C5D5DC712014A5A92C7FC5C140E140C141C5CA25CA214F049
+5AA21303A25C1307A2130FA3495AA3133FA5137FA96DC8FC131E233B7BB82A>I<EB03F8
+EB1FFF017F13C09038FC07F03901E001F848486C7E4848137C90C77E48141E000E141F00
+1E80A3121FA27F5D01E0131E6C6C133E01FC133C6D5B6C6C6C5AECC1E06CEBF3C06C01FF
+C7FC6C5BEB3FFF6D13C081017F13F801F07F3903E07FFE3907801FFF48486C1380481303
+003E6D13C0003CEB007F007C143F0078EC0FE000F814075A1503A21501A36C15C0127815
+03007C15806CEC07006C5C6C6C131ED807E0137C3903F803F0C6B55A013F1380D907FCC7
+FC233A7DB72A>I<EB03F8EB1FFF017F13C09038FC07E03903F803F048486C7E48486C7E
+49137E121F48487FA2007F158090C7FCA248EC1FC0A616E0A56C143FA27F123F001F147F
+A26C6C13FF6C6C13DF000313013901F0039F3900FC0F1FD93FFC13C0EB07F090C7FC153F
+1680A316005D000F147E487E486C5BA24A5A4A5A49485A6C48485A001C495A260F807FC7
+FC3807FFFC000113F038003FC0233A7DB72A>I<B712E016FC16FF0001903980007FC06C
+90C7EA1FE0707E707E707EA2707EA283A75F16035F4C5A4C5A4C5A4C5AEEFF8091B500FC
+C7FCA291C7EA7F80EE1FE0EE07F0707E707E83707EA21880177F18C0A7188017FFA24C13
+005F16034C5AEE1FF8486DEB7FF0B812C094C7FC16F832397DB83B>66
+D<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03FC000F0FD90FF0EB03
+9F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F4848150FA248481507A2
+485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A3123F7F001F160318006C
+7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE05C6D6CEB03C0D903FC
+EB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D7BBA3C>I<B712C016
+F816FE000190398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E177FA2EF3F8018C017
+1F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F18C0EF3F80A2EF7F00
+17FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397DB83F>I<B812FCA300
+01903880000F6C90C71201EE007E173E171E170EA31706A317078316C0A394C7FCA31501
+A21503150F91B5FCA3EC000F15031501A21500A21860A318E093C712C0A41701A3EF0380
+A21707A2170F173F177F486D903807FF00B9FCA333397DB839>I<B812F8A30001903880
+001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED0180A21700A41503A215
+07151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612C0A32F397DB836>I<
+DBFF8013C0020FEBF001023F13FC9139FF803F03903A03FC000787D90FF0EB03CF4948EB
+00EF4948147F4948143F49C8121F485A4848150F48481507A248481503A2485A1701123F
+5B007F1600A448481600AB93B6FCA26C7E9338007FE0EF3FC0A2123F7F121FA26C7EA26C
+7EA26C7E6C7E6C6C157F6D7E6D6C14FF6D6C14EFD90FF8EB03C7D903FEEB0783903A00FF
+C03F0191393FFFFC00020F01F0130002001380383D7CBA41>I<013FB512E0A39039001F
+FC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C5C6C495A6C49
+C7FC380781FC3801FFF038007F80233B7DB82B>74 D<B612E0A3000101C0C8FC6C90C9FC
+B3AD1718A517381730A31770A317F0A216011603160FEE1FE0486D13FFB8FCA32D397DB8
+34>76 D<B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F015
+63A3D9C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318
+A26E6C1330A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F
+8CA2ED1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045
+397DB84C>I<B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EB
+C7FCA2EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080ED7FC0
+16E0153FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE
+0FFEA216071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA217063739
+7DB83E>I<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80
+EB07F049C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1FC0A2001F
+17E049150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA3003F17F0A2
+6C6CED1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A017F4A5A6D
+6C495A6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE0020390C8FC
+363D7BBA41>I<B712C016F816FE000190398001FF806C90C7EA3FC0EE0FE0EE07F0EE03
+F817FC17FE1601A217FFA717FEA2EE03FCA2EE07F817F0EE0FE0EE3FC0923801FF0091B5
+12FC16F091C9FCB3A5487FB6FCA330397DB839>I<EC03FF021F13E09138FE01FC903901
+F8007ED907E0EB1F8049486D7ED93F80EB07F049C76C7E01FE6E7E48486E7EA24848157F
+0007178049153F000F17C049151F001F17E0A24848ED0FF0A3007F17F8A2491507A200FF
+17FCAC007F17F8A26D150FA2003F17F0A26C6CED1FE0A36C6CED3FC00007027C14804AB4
+FC3C03F80383807F003B01FC0701C0FEEC0E002600FE0CEBE1FC017FEC63F8D93F8CEB77
+F0D91FCCEB3FE0D907EE14806DB449C7FC0100D981FC130CEC1FFF0203131C91C7001E13
+1C161F183CEF807CEFC0F8EE0FFFA318F08218E07013C07013809338007E00364B7BBA41
+>I<B612FEEDFFE016F8000190388007FE6C90C76C7EEE3FC0707E707E707EA2707EA283
+A65FA24C5AA24C5A4C5AEE3F8004FFC8FCED07FC91B512E05E9138000FF0ED03F8ED00FE
+82707E707EA2161F83A583A6F00180A217F8160F1803486D01071400B66D6C5A04011306
+933800FE0ECAEA3FFCEF07F0393B7DB83D>I<D90FF813C090383FFE0190B512813903F8
+07E33907E000F74848137F4848133F48C7121F003E140F007E1407A2007C140312FC1501
+A36C1400A37E6D14006C7E7F13F86CB47E6C13F8ECFF806C14E06C14F86C14FEC680013F
+1480010714C0EB007F020713E0EC007FED3FF0151F150FED07F8A200C01403A21501A37E
+A216F07E15036C15E06C14076C15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE13FE39E03F
+FFF8010F13E0D8C00190C7FC253D7CBA2E>I<003FB812E0A3D9C003EB001F273E0001FE
+130348EE01F00078160000701770A300601730A400E01738481718A4C71600B3B0913807
+FF80011FB612E0A335397DB83C>I<B500FC91387FFF80A30003018091380FFC006C90C8
+EA07E0715A6C705A6E1403017F93C7FCA280013F1506A26E140E011F150C80010F5DA280
+01075DA26E147001031560A26D6C5CA2806D4A5AA2ED8003027F91C8FCA291383FC006A2
+15E0021F5BA2EDF01C020F1318A26E6C5AA215FC02035BA2EDFEE002015BA26E6C5AA36F
+C9FCA3153EA2151CA3393B7EB83E>86 D<B500FE91383FFFE0A3000301E0913807FE00C6
+49EC03F0017F6F5A606D6C5D6D6C140395C7FC6D6C1406A26D6C5C6D6C141C17186D6C14
+3817306D6D5B6E6C13E05F91383FE0015F91381FF003DA0FF890C8FC1606913807FC0E16
+0C913803FE1C913801FF185E6E13B016E0157F6F5AB3A24B7E023FB512C0A33B397FB83E
+>89 D<EB1FE0EBFFFC3803E03F3907000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A
+6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FE
+A31401A26C13036CEB077C903980063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F
+8007C026277DA52A>97 D<EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E03E9039F3
+801F809039F7000FC001FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E167FAA16
+7E16FEA216FC15016D14F8ED03F07F01EEEB07E001C6EB0FC09039C7801F00903881E07E
+903800FFF8C7EA1FC0283B7EB92E>I<EB03FC90381FFF8090387E03E03901F800704848
+13F83907E001FC380FC003A2EA1F80123F90380001F848EB00F01500A2127E12FEAA127E
+127FA26C14067F001F140E6D130C000F141C6C6C13386C6C13706C6C13E039007C07C090
+381FFF00EB07F81F277DA525>I<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E
+078F9038F801EF3903F0007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FE
+AA127E127FA27EA26C6C131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C07
+8F90381FFE0FD907F813C0283B7DB92E>I<EB07F8EB1FFF90387C0FC03901F803E03903
+F001F0D807E013F8380FC0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8
+FCA5127EA2127FA26C14037F001F14076C6C13060007140E6D131CD801F013386C6C1370
+90387E03E090381FFF80903803FC0020277EA525>I<147E903803FF8090380FC1E0EB1F
+8790383F0FF0137EA213FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387F
+FFF8A31C3B7FBA19>I<ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE0
+3903E007C03A07C003E010000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D48
+5A6D48C7FC38073FFC38060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF80
+4815C03A0F80007FE048C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC
+03E0003F1407D80F80EB0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387E
+A52A>I<EA03F012FFA3120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0
+EBF70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A3293A7EB92E>I<EA0380EA
+0FE0487EA56C5AEA0380C8FCAAEA03F012FFA312071203B3AA487EB512C0A312387EB717
+>I<EB01C0EB07F0EB0FF8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A212
+3C127E00FF13F01303A214E038FE07C0127C383C0F00EA0FFEEA03F8154984B719>I<EA
+03F012FFA3120F1203B1913801FFFCA39138007FC01600157C15705D4A5A4A5A4AC7FC14
+1E1438147814FC13F1EBF3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E811400157E
+157F811680ED1FC0486CEB3FF0B500C0B5FCA3283A7EB92C>I<EA03F012FFA3120F1203
+B3B3AD487EB512C0A3123A7EB917>I<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F
+01E07E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0F
+C0A2495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00F
+F000FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3
+486C497EB500C1B51280A329257EA42E>I<EB03FE90380FFF8090383E03E09038F800F8
+4848137C48487F48487F4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15
+F8A9007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137E
+C66C13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<3903F01FE000FFEB7FF8
+9038F1E07E9039F3801F803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC15
+0016FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F
+009038F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>I<3807E01F00
+FFEB7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300
+A45BB3A2487EB512F0A31C257EA421>114 D<EBFF03000313E7380F80FF381E003F487F
+487F00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F0107
+1380EB007F141F00C0EB0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C
+38E1FFF038C03F801A277DA521>I<1318A51338A31378A313F8120112031207001FB5FC
+B6FCA2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347F
+B220>I<D803F0EB07E000FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D13
+3F0000EC77F86D9038E7FF8090383F03C790381FFF87903A03FC07E00029267EA42E>I<
+B538803FFEA33A0FF8000FF06C48EB07E00003EC03C06D148000011500A26C6C1306A26D
+130E017E130CA26D5BA2EC8038011F1330A26D6C5AA214E001075BA2903803F180A3D901
+FBC7FCA214FF6D5AA2147CA31438A227257EA32C>I<B53A1FFFE03FFEA3260FF8009038
+000FF86C48017EEB03E018C00003023EEB0180A26C6C013FEB0300A36C6CEC8006156FA2
+017E9038EFC00C15C7A2D93F016D5A15830281EBF038D91F831430150102C3EBF8709026
+0FC6001360A2D907E66D5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A7FA20100
+141E4A130E0260130C37257EA33C>I<B538807FFFA33A03FE003FF00001EC1F80000092
+C7FC017E131C6D13186D6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F
+804A7E8114CF903801C7E090380383F090380703F8EB0601496C7E011C137E49137F0178
+7F496D7E486C80000FEC3FF0D8FFFE90B51280A329247FA32C>I<B538803FFEA33A0FF8
+000FF06C48EB07C00003EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2
+ECC070010F1360A26D6C5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A214
+30A214701460A25CA2EA7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC0
+27357EA32C>I E /Fg 14 117 df<EA07C0EA1FF0EA3FF8EA7FFC12FF13FEA213FFA47E
+7E7EEA07CFEA000FA2131F131EA2133EA2133C137C13F8A2EA01F0120313E0EA07C0EA1F
+801300121E120C1022788E1F>44 D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3F
+F8EA1FF0EA07C00F0F788E1F>46 D<EC03C01407141F147FEB03FF133FB6FCA413C3EA00
+03B3B3ADB712FCA5264177C038>49 D<ECFFE0010F13FE013F6D7E90B612E0000315F826
+07FC0313FE3A0FE0007FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13
+F07F17F881A46C5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E
+4B5A4B5A4A90C7FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014
+F0495A495A49C8FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038
+>I<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F0714
+3E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F
+5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>52
+D<EC7FF0903807FFFE011F6D7E017F14E09039FFE03FF0489038800FF848496C7E484880
+48486D7E001F80003F1680A2484815C08117E0A212FF17F0A617F8A45D127FA3003F5CA2
+6C7E5D6C6C5B12076C6C131E6CEBC07C6CEBFFF8013F5B010F01C013F00101130090C8FC
+A217E05DA2EA03C0D80FF015C0487E486C491380A217004B5A150F5E49495A6C48495A01
+C0EBFFE0260FF0035B6CB65A6C4AC7FC6C14F86C6C13E0D907FEC8FC2D427BC038>57
+D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C0C7FCAEEA07C0EA
+1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F2C78AB1F>I<B9FC18F018
+FE727E19E026003FFEC7001F13F805017F9438003FFF060F7F727F727F727F84737E737E
+A2737EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B006162193F624F5A19FF62
+4E5B06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18F095C9FC4B447CC356
+>68 D<B600FE017FB691B512FEA526007FFCC8D83FFEC9EA7C006E82013F701778807415
+F86D705F6F7014016D705FA26F7014036D64814E6D14076D646F70140F6D041E94C7FCA2
+6F023E6D5C6DDC3C7F151E81027F037C6D5CF0783F6F70147C023F4B6C1578A26F01016F
+13F86E4B6C5D16806E02036F485A4E7E04C0EEE0036E4A486C5DA2DCE00FEDF0076E4B6C
+5D16F06E4A6F48C8FC051E7F04F8705A6E4A027F131EA2DCFC7CEDFE3E037F0178023F13
+3C04FE16FF033F01F85E4D8004FF17F86F496E5BA36F496E5BA26F604D80A26F90C86C5B
+A36F486F90C9FCA26F48167EA30478163C6F457EC374>87 D<903801FFE0011F13FE017F
+6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00
+F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F1380381FFE0048
+5A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EB
+FFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 D<EC3FFC49B512C0010F14F001
+3F14FC90397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A6F130000
+7F6E5AED00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F16806D140F6C
+6DEB1F006C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038003FF82A
+2F7CAD32>99 D<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F013F14
+CF9039FFF807FF48EBC00148903880007F4890C7123F4848141F49140F121F485AA3127F
+5BA212FFAC127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C00314FC
+6C9038F01FEF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E>I<EC3F
+F80103B57E010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48486D13
+80485A001FED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FCA5127F
+A27FA2123F17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090
+397FFE01FE011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33>I<EB01E0A513
+03A41307A2130FA2131FA2133F137F13FF1203000F90B51280B7FCA4C601E0C7FCB3A3ED
+01E0A9150302F013C0137F150790393FF80F8090391FFC1F006DB5FC6D13FC01015B9038
+003FE023407EBE2C>116 D E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: a4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 330 390 a Fg(Date:)50 b(W)-9 b(ed.,)38 b(Dec.)49
+b(21,)38 b(1994)1413 b Ff(k)n(cal)1347 526 y(T)-7 b(ennis,)27
+b(30)g(mins)17 b Fe(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)j
+Fd(\000)p Ff(159.9)p 330 643 2865 3 v 366 761 a(\(a\))64
+b(VitaminSalad,)28 b(3)f(pieces)19 b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h
+(:)g(:)47 b Ff(70.0)366 860 y(\(a\))64 b(CalorieMate,)26
+b(4)i(pieces)23 b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f
+(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)51
+b Ff(400.0)364 960 y(\(n\))62 b(Co\013ee,)28 b(1)f(cup)15
+b Fe(:)f(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)
+h(:)g(:)g(:)42 b Ff(0.0)p 330 1042 V 330 1159 a Fc(Breakfast)1065
+b Ff(total)8 b Fe(:)14 b(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)8
+b Ff(470.0)p 330 1277 V 366 1394 a(\(o\))64 b(Curry)27
+b(\(Quixote\),)h(1)f(dish)20 b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)48
+b Ff(50.0)366 1494 y(\(a\))2568 b(70.0)366 1593 y(\(g\))g(40.0)376
+1693 y(\(i\))2577 b(20.0)376 1793 y(\(l\))g(50.0)366
+1892 y(\(a\))64 b(Rice,)28 b(200)e(grams)12 b Fe(:)h(:)h(:)g(:)g(:)g(:)
+g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)40 b Ff(200.0)364
+1992 y(\(h\))62 b(Cabbage,)27 b(30)f(grams)15 b Fe(:)e(:)h(:)g(:)g(:)g
+(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)43 b Ff(3.0)366 2091
+y(\(o\))64 b(Scallop,)27 b(50)g(grams)21 b Fe(:)14 b(:)g(:)g(:)f(:)h(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f
+(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)50 b Ff(55.5)376 2191
+y(\(l\))73 b(F)-7 b(ried,)28 b(20)f(cm)990 2161 y Fb(3)1027
+2191 y Ff(s)d Fe(:)13 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)f(:)h(:)52 b Ff(40.0)364 2291 y(\(n\))62 b(Co\013ee,)28
+b(1)f(cup)15 b Fe(:)f(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)f(:)h(:)g(:)g(:)42 b Ff(0.0)p 330 2372 V 330
+2490 a Fc(Lunc)m(h)1136 b Ff(total)25 b Fe(:)14 b(:)g(:)g(:)f(:)h(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)
+h(:)g(:)g(:)g(:)g(:)25 b Ff(528.5)1423 2590 y(Jog,)i(20)g(mins)19
+b Fe(:)13 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)k
+Fd(\000)p Ff(80.0)p 330 2707 V 366 2825 a(\(a\))64 b(Sushi)28
+b(rice,)f(20)g(pieces)13 b Fe(:)g(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f
+(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g
+(:)40 b Ff(800.0)369 2924 y(\(c\))66 b(Ra)n(w)27 b(\014sh,)h(20)f
+(pieces)13 b Fe(:)h(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f
+(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)41
+b Ff(300.0)376 3024 y(\(l\))73 b(Vinegar,)27 b(20)g(mls)21
+b Fe(:)14 b(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)
+h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)48 b Ff(0.0)364 3123 y(\(d\))62 b(Egg,)27 b(.3)g(pieces)19
+b Fe(:)14 b(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g
+(:)g(:)47 b Ff(24.0)364 3223 y(\(d\))62 b(Quail,)27 b(1)h(piece)18
+b Fe(:)13 b(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h
+(:)g(:)46 b Ff(18.0)371 3323 y(\(f)6 b(\))70 b(Nattoh,)28
+b(10)f(grams)22 b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f
+(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g
+(:)g(:)51 b Ff(20.0)374 3422 y(\(j\))73 b(La)n(v)n(er,)26
+b(5)h(sheets)18 b Fe(:)c(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)
+g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)
+g(:)g(:)g(:)g(:)g(:)45 b Ff(0.0)p 330 3504 V 330 3622
+a Fc(Supp)s(er)1093 b Ff(total)23 b Fe(:)13 b(:)h(:)g(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)
+g(:)g(:)g(:)23 b Ff(1162.0)p 330 3739 V 369 3857 a(\(e\))66
+b(Y)-7 b(ogurt,)27 b(60)g(grams)8 b Fe(:)13 b(:)h(:)g(:)f(:)h(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)
+h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)36 b Ff(36.0)364 3956
+y(\(n\))62 b(Beer,)27 b(700)f(mls)18 b Fe(:)d(:)e(:)h(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)
+g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h
+(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)46 b Ff(280.0)p
+330 4038 V 330 4155 a Fc(Nigh)m(t)31 b(Snac)m(k)1009
+b Ff(total)17 b Fe(:)d(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g
+(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)j
+Ff(316.0)p 330 4237 V 330 4355 a Fc(Items)1226 4454 y
+Ff(\(a\))69 b Fd(\016)32 b Ff(Cereals)1189 b(1540.0)1223
+4554 y(\(b\))56 b Fd(\002)21 b Ff(Meats)1359 b(0.0)1228
+4654 y(\(c\))72 b Fd(\016)32 b Ff(Seafo)r(o)r(ds)1179
+b(300.0)1223 4753 y(\(d\))68 b Fd(\016)32 b Ff(Eggs)1363
+b(42.0)1228 4853 y(\(e\))72 b Fd(\016)32 b Ff(Dairy)27
+b(pro)r(ducts)988 b(36.0)1230 4952 y(\(f)6 b(\))76 b
+Fd(\016)32 b Ff(Beans)1320 b(20.0)1226 5052 y(\(g\))69
+b Fd(\016)32 b Ff(P)n(otato)r(es)1220 b(40.0)1223 5152
+y(\(h\))68 b Fd(\016)32 b Ff(Green)c(v)n(egetables)962
+b(3.0)1235 5251 y(\(i\))79 b Fd(\016)32 b Ff(Other)27
+b(v)n(egetables)926 b(20.0)1234 5351 y(\(j\))78 b Fd(\016)32
+b Ff(Dry)c(go)r(o)r(ds)1202 b(0.0)1224 5451 y(\(k\))57
+b Fd(\002)21 b Ff(F)-7 b(ruits)1365 b(0.0)1235 5550 y(\(l\))79
+b Fd(\016)32 b Ff(Oils)27 b(&)h(seasonings)896 b(90.0)1212
+5650 y(\(m\))44 b Fd(\002)21 b Ff(Confectioneries)1026
+b(0.0)1809 5919 y(1)p eop
+%%Page: 2 2
+2 1 bop 1223 390 a Ff(\(n\))68 b Fd(\016)32 b Ff(Drinks)1254
+b(280.0)1226 490 y(\(o\))69 b Fd(\016)32 b Ff(Miscellaneous)998
+b(105.5)p 330 572 2865 3 v 1519 689 a Fc(T)-8 b(otal)44
+b Fe(:)14 b(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)f(:)h(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)d
+Ff(2476.5)1514 789 y Fc(Limit)1214 b Ff(2439.9)p 330
+936 2921 4 v 330 1079 4 144 v 358 1038 a Fc(W)-8 b(arning)793
+b Fa(36.6)31 b Fc(k)m(cal)825 b(Exceeded!!)p 3247 1079
+V 330 1082 2921 4 v 1809 5919 a Ff(2)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/macros/latex209/contrib/misc/calprog.sty b/macros/latex209/contrib/misc/calprog.sty
new file mode 100644
index 0000000000..424aca37ad
--- /dev/null
+++ b/macros/latex209/contrib/misc/calprog.sty
@@ -0,0 +1,102 @@
+%% Save file as: CALPROG.STY Source: FILESERV@SHSU.BITNET
+%% Author: Michael Barr <barr@triples.Math.McGill.CA>
+%% Original Source: Posted to INFO-TeX@SHSU.edu on Thu, 2 Jan 92 18:33:54 EST
+%
+%After seeing how complicated a calendar program can be, I was moved to
+%fix the one I had been using. Although I haven't tested it extensively,
+%I believe it gives the correct Gregorian dates from whenever the
+%Gregorian began (which is different in defferent countries and in Russia
+%was not until after 1917) until the year 4000 when a leap year is supposed
+%to be omitted. A better correction would have been to omit leap years
+%in all years divisible by 2000 and not by 6000, but this would have
+%required immediate agreement and I guess that seemed too difficult.
+%
+%Obviously, the top line has to be edited to give the desired year.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% Start here %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcount\yearnum \yearnum=1992
+
+\documentstyle{article}
+\textwidth 7.05in \oddsidemargin-.255in
+\textheight=9in \headheight =0pt \topmargin=0pt\headsep=0pt
+\footheight=0pt\footskip=0pt
+\pagestyle{empty}\thispagestyle{empty}
+
+\newcount\febdays \febdays=28
+\newcount\yearnuma
+\newcount\yearnumb
+\newcount\firstdate \newcount \lastdate \newcount \datenum
+
+\def\month#1#2#3{\initialdate{#1}{#2}%
+\begin{tabular}{|rrrrrrr|} \hline
+\multicolumn{7}{|c|}{#3}\\ \hline
+Su&Mo&Tu&We&Th&Fr&Sa\\ \hline
+\day{ 1}&\day{ 2}&\day{ 3}&\day{ 4}&\day{ 5}&\day{ 6}&\day{ 7}\\
+\day{ 8}&\day{ 9}&\day{10}&\day{11}&\day{12}&\day{13}&\day{14}\\
+\day{15}&\day{16}&\day{17}&\day{18}&\day{19}&\day{20}&\day{21}\\
+\day{22}&\day{23}&\day{24}&\day{25}&\day{26}&\day{27}&\day{28}\\
+\day{29}&\day{30}&\day{31}&\day{32}&\day{33}&\day{34}&\day{35}\\
+\day{36}&\day{37}&\day{38}&\day{39}&\day{40}&\day{41}&\day{42}\\ \hline
+\end{tabular}\global\advance\firstdate by #2
+\ifnum\firstdate>35 \global\advance\firstdate by -35
+ \else\global\advance \firstdate by -28 \fi}
+\def\day#1{\advance \datenum by#1
+ \ifnum\datenum>0 \ifnum\datenum>\lastdate\else\number\datenum \fi\fi}
+\def\initialdate#1#2{\datenum=1 \advance\datenum by -#1 \lastdate=#2}
+\newcount\xa\newcount\xb\newcount\xc
+\newcount\ya\newcount\yb\newcount\yc\newcount\yd
+\xa=0 \xb=235 {\multiply \xb by 2 \global\xc=\xb }
+\yd=0 \yc=136 {\multiply \yc by 2 \global \yb=\yc }
+{\multiply \yc by 3 \global \ya=\yc }
+
+\begin{document}
+\font\gross=cminch
+
+\def\setup{\yearnuma=\yearnum{%
+\divide\yearnuma by 100
+\multiply\yearnuma by 100
+\ifnum\yearnum=\yearnuma \divide \yearnum by 100 \fi
+\ifodd\yearnum\relax
+\else \divide\yearnum by 2
+ \ifodd\yearnum\relax
+ \else \global\febdays=29
+ \fi
+\fi
+}%
+{%
+\advance\yearnum by -1
+\yearnuma=\yearnum
+\divide\yearnuma by 400 \multiply \yearnuma by -400
+\advance\yearnuma by \yearnum % \yearnuma=\yearnum mod 400
+\firstdate=\yearnuma
+\yearnumb=\yearnuma
+\divide\yearnumb by 100 \divide\yearnuma by 4
+\advance\yearnuma by -\yearnumb % correct leapyear count by centuries
+\advance\firstdate by \yearnuma % add number of leapyears
+\yearnuma=\firstdate
+\divide\yearnuma by 7 \multiply\yearnuma by 7
+\advance\firstdate by -\yearnuma % \firstdate = #leapyears mod 7
+% Now do final correction for year 0.
+\global\firstdate=\ifcase\firstdate2 \or3 \or4 \or5 \or6 \or7 \or1 \fi
+}%
+}%
+
+\setup
+\begin{center}{\gross \number\yearnum }\end{center}
+\unitlength.01in
+\begin{picture}(705,543)
+\put(\xa,\ya){\month{\firstdate}{31}{January}}
+\put(\xb,\ya){\month{\firstdate}{\febdays}{February}}
+\put(\xc,\ya){\month{\firstdate}{31}{March}}
+\put(\xa,\yb){\month{\firstdate}{30}{April}}
+\put(\xb,\yb){\month{\firstdate}{31}{May}}
+\put(\xc,\yb){\month{\firstdate}{30}{June}}
+\put(\xa,\yc){\month{\firstdate}{31}{July}}
+\put(\xb,\yc){\month{\firstdate}{31}{August}}
+\put(\xc,\yc){\month{\firstdate}{30}{September}}
+\put(\xa,\yd){\month{\firstdate}{31}{October}}
+\put(\xb,\yd){\month{\firstdate}{30}{November}}
+\put(\xc,\yd){\month{\firstdate}{31}{December}}
+\end{picture}\newpage
+
+\end{document}}
diff --git a/macros/latex209/contrib/misc/card-set.sty b/macros/latex209/contrib/misc/card-set.sty
new file mode 100644
index 0000000000..b25f713ff1
--- /dev/null
+++ b/macros/latex209/contrib/misc/card-set.sty
@@ -0,0 +1,288 @@
+% card.sty by R. Potu\v cek jr. March 6, 1992 %
+% %
+\message{Card style Version 2.04, March 6, 1992 by R. Potu\v cek jr.} %
+% %
+% This style allows you to print text formatted for cardfile cards. As it %
+% is a problem to print on such cards anyway, the text ist formatted into %
+% groups of consecutive boxes, so as to allow cutting it out and glueing %
+% together to cardfiles. %
+% %
+% Card size can be manipulated at will and card pages will be enumerated %
+% optionally and independently for each card, so as to allow texts longer %
+% than one card. %
+% %
+% The style should work with plain \TeX\ as well es with \LaTeX. %
+% %
+% %
+% %
+% %
+% If you have any suggestions, questions or comments, please e-mail (with a %
+% Version number please) to: %
+% %
+% potucek@winx06.informatik.uni-wuerzburg.de %
+% %
+% ---------------------------------------------------------------------------- %
+% %
+% For use with \LaTeX\ use the environment `card', which expects a parameter %
+% containing material supposed to be set in the header: %
+% %
+% \begin{card}{heading} %
+% ... %
+% \end{card} %
+% %
+% For use with plain \TeX\ÿenclose the actual text between `\card' and %
+% `\endcard': %
+% %
+% \card{heading} %
+% ... %
+% \endcard %
+% %
+% ---------------------------------------------------------------------------- %
+% %
+% The text within the environment will be formatted as follows: %
+% %
+% +---------------------------+---------------------------+ %
+% | heading page | heading page | %
+% +---------------------------+---------------------------+ %
+% | Text, broken into small | allow usage of all other | %
+% | pages of their own, so as | \LateX\ commands. | %
+% | to allow comfortable usage| | %
+% | as an environment, an to | | %
+% +---------------------------+---------------------------+ %
+% %
+% ---------------------------------------------------------------------------- %
+% %
+% The size of the card is set by \cardheight and \cardwidth. The distance of %
+% the text from the borders is set by \cardfreespace. Pagenubers can be %
+% selected by setting: %
+% %
+% \let\cardpageno\on % turn on pagenumbers %
+% \let\cardpageno\off % turn off pagenumbers %
+% %
+% Before each card and between two boxes \cardfreespace will be inserted. %
+% Furthermore there is a token register called `\everycard' that is executed %
+% at the beginning of every card, so as to allow a general style definition %
+% for every card, which then may be dependent on the environment you use. %
+% %
+% If you don't like empty pages to be printed, i.e. pages that have a header %
+% but don't contain any text, you can suppress printing by setting: %
+% %
+% \let\cardprtempty\off % suppress empty pages %
+% \let\cardprtempty\on % print emty pages %
+% %
+% ---------------------------------------------------------------------------- %
+% %
+% These are the parameters you may change, however you should modify them in %
+% your source file rather than changing these global presets! %
+% %
+\edef\on{1 }\edef\off{0 }
+
+\let\cardpageno\on
+\let\cardprtempty\on
+
+\newdimen\cardwidth \cardwidth74mm
+\newdimen\cardheight \cardheight52mm
+\newdimen\cardfreespace \cardfreespace5pt
+\newdimen\cardsepamount \cardsepamount\medskipamount
+
+\newtoks\everycard \everycard{}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Don't change anything that follows! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Allow `@' in command names;
+%
+\ifcat @a \def\card@atdef{1} \else \catcode`\@=11 \def\card@atdef{0} \fi
+
+% Declare registers needed:
+%
+\newdimen\card@height \card@height\cardheight
+\newdimen\card@headheight \card@headheight12pt
+\newdimen\card@tmpdim
+\newdimen\card@ghsize
+\newdimen\card@gvsize
+
+\newbox\card@textboxone
+\newbox\card@textboxtwo
+\newbox\card@pagebox
+\newbox\card@strutbox
+
+\newtoks\origout
+\newtoks\card@lhead \card@lhead={}
+\newtoks\card@rhead \card@rhead={}
+
+\newcount\card@pagecount \card@pagecount0
+\newcount\card@lcount \card@lcount1
+\newcount\card@rcount \card@rcount2
+\newcount\card@lrf \card@lrf0
+
+\def\on{1}
+\def\off{0}
+% Message macro for debugging:
+%
+\def\card@db#1#2{
+ \ifnum#1<0 \message{#2} \fi
+}
+
+% Define strut for cardhead. Default is \strut. It shouldn't be needed but
+% let's make sure:
+%
+\def\card@strut{\strut}
+\def\card@makestrut#1{
+ \global\def\card@strut{\copy\card@strutbox}
+ \global\setbox\card@strutbox=\hbox{\vphantom{#1}}
+ \card@tmpdim=\ht\card@strutbox \advance\card@tmpdim 1.4pt\global\ht\card@strutbox=\card@tmpdim
+ \card@tmpdim=\dp\card@strutbox \advance\card@tmpdim 1.4pt\global\dp\card@strutbox=\card@tmpdim
+}
+
+% Flush contents of \TeX's vertical list:
+%
+\def\card@preflush{
+ \origout=\output
+ \card@tmpdim\vsize \vsize2\vsize
+ \global\setbox\card@pagebox=\vbox{}
+ \output={
+ \card@db1{:}
+ \global\setbox\card@pagebox=\vbox{
+ \unvbox\card@pagebox
+ \par\noindent\vskip\cardsepamount
+ \ifvbox255\unvbox255
+ \else\box255\fi
+ }
+ }
+ \par\penalty-\@M
+ \output=\origout
+ \vsize\card@tmpdim
+ \ifvbox\card@pagebox \else
+ \global\setbox\card@pagebox=\vbox{\box\card@pagebox}
+ \fi
+}
+
+% Initialize all local parameters of a card with those infos available.
+% Furthermore change \output temporarily to allow page breaking within a card.
+%
+\def\card@init#1{
+ \card@preflush
+ \origout=\output
+ \output={\card@output}
+ \card@ghsize\hsize
+ \card@gvsize\vsize
+ \card@makestrut{#1}
+ \card@lhead={#1\ifnum\on=\cardpageno\hfill\the\card@lcount\hskip\cardfreespace\else\fi}
+ \card@rhead={#1\ifnum\on=\cardpageno\hfill\the\card@rcount\hskip\cardfreespace\else\fi}
+ \global\card@headheight0pt
+ \global\advance\card@headheight \ht\card@strutbox
+ \global\advance\card@headheight \dp\card@strutbox
+ \global\card@tmpdim\cardheight
+ \global\advance\card@tmpdim -\card@headheight
+ \global\card@height\card@tmpdim
+ \global\advance\card@tmpdim -2\cardfreespace
+ \vsize\card@tmpdim
+ \global\card@tmpdim\cardwidth
+ \global\advance\card@tmpdim -2\cardfreespace
+ \hsize\card@tmpdim
+ \global\card@pagecount0
+ \global\card@lcount1
+ \global\card@rcount2
+ \global\card@lrf0
+ \topskip0pt
+ \card@db0{(}
+}
+
+% Restore \hsize, \vsize and \output to previous values:
+%
+\def\card@exit{
+ \global\advance\card@lrf 2
+ \the\output
+ \hsize\card@ghsize %globa?
+ \vsize\card@gvsize
+ \output=\origout
+ \origout={}
+ \card@db0{)}
+}
+
+% Make cardfile-card with global dimensions and {lhead}{rhead}{lbody}{rbody}
+%
+\def\makecard#1#2#3#4{
+ \vbox to \cardheight{
+ \hrule
+ \hbox to 2\cardwidth{\vrule
+ \hbox to \cardwidth{\card@strut\hskip\cardfreespace#1\hss}\hss\vrule
+ \hbox to \cardwidth{\card@strut\hskip\cardfreespace#2\hss}\hss\vrule}
+ \hrule
+ \hbox to 2\cardwidth{\vrule\hbox to \cardwidth{\hskip\cardfreespace
+ \vbox to \card@height{\vskip\cardfreespace#3\vss}\hss
+ \hss}\hss\vrule\hbox to \cardwidth{\hskip\cardfreespace
+ \vbox to \card@height{\vskip\cardfreespace#4\vss}\hss
+ \hss}\hss\vrule}
+ \vss
+ \hrule
+ }
+}
+
+% Test whether left box contains any material
+%
+\newif\ifcard@page
+\def\ifpage{
+ \ifnum\the\card@lrf>0 \card@pagetrue % Create output
+ \else \card@pagefalse \fi % unless regular left
+ \ifnum\the\card@lrf=2
+ \ifvbox\card@textboxone\else % or empty
+ \card@pagefalse
+ \fi
+ \ifnum\cardprtempty=\on\relax
+ \ifnum\the\card@lcount=1
+ \card@pagetrue
+ \fi
+ \fi
+ \fi
+ \ifcard@page
+}
+
+% Actual \output routine. This routine does not create any output. Rather it
+% writes such boxes as it wishes to output into \card@pagebox, which then is
+% passed to the regular output routine!
+%
+\def\card@output{
+ \global\advance\card@pagecount 1
+ \ifcase\the\card@lrf
+ \global\setbox\card@textboxone=\box255\global\card@lcount\card@pagecount \card@db0{ (0,<\the\card@pagecount>) }
+ \or \global\setbox\card@textboxtwo=\box255\global\card@rcount\card@pagecount \card@db0{ (1,<\the\card@pagecount>) }
+ \or \global\setbox\card@textboxone=\box255\global\card@lcount\card@pagecount \card@db0{ (2,<\the\card@pagecount>) }
+ \or \global\setbox\card@textboxtwo=\box255\global\card@rcount\card@pagecount \card@db0{ (3,<\the\card@pagecount>) }
+ \fi
+ \ifpage
+ \global\setbox\card@pagebox=\vbox{\unvbox\card@pagebox
+ \par\noindent\vskip\cardsepamount
+ \makecard{\the\card@lhead}{\the\card@rhead}
+ {\box\card@textboxone}{\box\card@textboxtwo}
+ }
+ \fi
+% Test routines:
+% \ifnum\the\card@lrf>1 \shipout\box\card@pagebox \fi % for testing only
+% \ifnum\the\card@lrf>1 \shipout\copy\card@pagebox \fi % for testing only
+ \ifnum\the\card@lrf>0 \global\card@lrf0 \else \global\card@lrf1 \fi
+}
+
+% The actual definition of the environment comes here, so as to allow use
+% with plain \TeX\ as well:
+%
+\long\def\card#1{
+ \begingroup
+ \card@db2{#1}
+ \card@init{#1}
+ \the\everycard
+ \par
+}
+\long\def\endcard{
+ \vfill
+ \penalty-\@M
+ \card@exit
+ \unvbox\card@pagebox
+ \endgroup
+}
+
+% Restore `@' to catcode `other' if needed:
+%
+\ifx0\card@atdef \catcode`@=12 \else \fi
diff --git a/macros/latex209/contrib/misc/card.sty b/macros/latex209/contrib/misc/card.sty
new file mode 100644
index 0000000000..b08f037237
--- /dev/null
+++ b/macros/latex209/contrib/misc/card.sty
@@ -0,0 +1,96 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Silvano Balemi",
+%%% version = "1.0",
+%%% date = "12-APR-1993",
+%%% filename = "card.sty",
+%%% address = "Automatic Control Laboratory
+%%% Swiss Federal Institute of Technology (ETH)
+%%% Zurich,
+%%% 8092 Zurich,
+%%% Switzerland",
+%%% telephone = "+41 (1) 256.55.35",
+%%% FAX = "+41 (1) 262.43.62",
+%%% email = "balemi@aut.ee.ethz.ch (Internet)",
+%%% keywords = "LaTeX, Visiting cards
+%%% supported = "yes",
+%%% docstring = "This is a LaTeX substyle file for producing
+%%% 10 visiting cards in credit card format
+%%% (european standard) on A4 pages
+%%%
+%%% Usage:
+%%% \documentstyle[card]{article}
+%%% \begin{document}
+%%% \card{
+%%% \put(5,26){Name}
+%%% \put(5,15){street}
+%%% \put(5,10){City}
+%%% \put(5,05){Tel: XXXX}
+%%% }
+%%% \starmarkings % default, or
+%%% %% \flatmarkings % markings not on cards, or
+%%% %% \nomarkings % no markings
+%%% \visitingcards
+%%% \end{document}
+%%% }
+%%% ====================================================================
+
+\typeout{Document substyle 'card.sty' for creating visiting cards <12 Apr 93>}
+
+\def\es{} % eat space for nice formatting
+\setlength{\unitlength}{1mm}
+\setlength{\headheight}{0mm}
+\setlength{\headsep}{0mm}
+\setlength{\footheight}{0mm}
+\setlength{\footskip}{0mm}
+\setlength{\topmargin -12mm}
+\setlength{\textheight 270mm}
+\setlength{\oddsidemargin -11.3mm}
+\setlength{\textwidth 177mm}
+\pagestyle{empty}
+
+\def\card{}
+
+\def\visitingcard{\es
+\newsavebox{\visitingbox}
+\sbox{\visitingbox}{\es
+\begin{picture}(85.5,54)
+\card
+\end{picture}
+}}
+
+%% Create no markings. Useful when printing double-sided cards.
+\def\nomarkings{\def\@markings{}}
+
+%% Draws the full frame around each card. Useful for designing a card.
+\def\fullframe{\def\@markings{%
+\multiput(0,0)(0,54){6}{\line(1,0){171}}
+\multiput(0,0)(85.5,0){3}{\line(0,1){270}}}}
+
+%% Creates small star at all corners of all cards
+\def\starmarkings{\def\@markings{%
+\multiput(0,0)(0,54){6}{\makebox(0.0,0.1)[c]{{\tiny +}}}
+\multiput(85.5,0)(0,54){6}{\makebox(0.0,0.1)[c]{{\tiny +}}}
+\multiput(171,0)(0,54){6}{\makebox(0.0,0.1)[c]{{\tiny +}}}}}
+
+%% These markings are not invasive. Markings are not put on the cards.
+\def\flatmarkings{\def\@markings{%
+\thinlines
+\multiput(0,-.5)(85.5,0){3}{\line(0,-1){5}}
+\multiput(0,270.5)(85.5,0){3}{\line(0,1){5}}
+\multiput(-.5,0)(0,54){6}{\line(-1,0){5}}
+\multiput(171.5,0)(0,54){6}{\line(1,0){5}}}}
+
+%% Default markings are starmarkings
+\starmarkings
+
+\def\visitingcards{
+\visitingcard
+\begin{picture}(171,270)(0,0)
+ \multiput(0,0)(0,54){5}{\usebox{\visitingbox}}
+ \multiput(85.5,0)(0,54){5}{\usebox{\visitingbox}}
+ % draw markings
+ \@markings
+\end{picture}
+}
+
diff --git a/macros/latex209/contrib/misc/catmac-doc.tex b/macros/latex209/contrib/misc/catmac-doc.tex
new file mode 100644
index 0000000000..1f4885b926
--- /dev/null
+++ b/macros/latex209/contrib/misc/catmac-doc.tex
@@ -0,0 +1,536 @@
+%Please reply to inhb@mcgillb.bitnet.
+%For this semester only, to barr@linc.cis.upenn.edu.
+%Michael Barr
+%Math Dept
+%McGill Univ.
+%805 Sherbrooke St W
+%Montreal, QC
+%Canada H3P 1S4
+\documentstyle[12pt,catmac]{article}
+\textheight=9in \topmargin=0pt\headheight=0pt\headsep=0pt
+\textwidth=6.5in \oddsidemargin=0pt
+\begin{document}
+{\catcode`\ =13\global\let =\ \catcode`\^^M=13
+\gdef^^M{\par\noindent}}
+\def\verbatim{\tt
+\catcode`\^^M=13
+\catcode`\ =13
+\catcode`\\=12
+\catcode`\{=12
+\catcode`\}=12
+\catcode`\_=12
+\catcode`\^=12
+\catcode`\&=12
+\catcode`\~=12
+\catcode`\#=12
+\catcode`\%=12
+\catcode`\$=12
+\catcode`|=0
+}
+
+All commercial rights reserved. May be freely distributed
+and used with the following exceptions:\\
+1. No commercial use without explicit permission.\\
+2. It may not be used by any employee of a telephone company.\\
+3. It may not be distributed without this notice.
+
+\def\\{{\tt \char 92}}
+
+\section*{The catmac macros}
+The file catmac includes a number of macros for drawing commutative
+diagrams in special shapes as well as more flexible macros to paste
+together more complicated diagrams.
+
+In general, there are two kinds of macros. The first kind has the
+following form
+{\tt \\shapename[shape\_parameters]} and is intended to be used in the
+following way:
+{\verbatim
+\begin{center}
+\resetparms
+\shapename[shape_parameters]
+\end{center}
+|egroup
+
+This will create a shape with the given parameters. It operates by
+building its own picture environment.
+
+The second kind of procedure must be used inside a picture environment
+and allows the user to put a diagram of a given size and shape at a
+given place. The usual way in which this is used is:
+
+{\verbatim
+\begin{center}
+%code to be explained later
+\begin{picture}(xext,yext)
+\putshape1(x1,y1)[shape_parameters1]
+|dots
+\putshape(xn,yn)[shape_parametersn]
+\end{picture}
+\end{center}
+|egroup
+
+Here is an example of the first kind of macro. I will have to explain a
+few details before giving examples of the second. The code
+{\verbatim
+\begin{center}
+\resetparms
+\square[A`B`C`D;f`g`h`k]
+\end{center}
+|egroup
+produces the diagram
+\begin{center}
+\resetparms
+\square[A`B`C`D;f`g`h`k]
+\end{center}
+and the code
+{\verbatim
+\begin{center}
+\resetparms
+\Atriangle[A`B`C;f`g`h]
+\end{center}
+|egroup
+produces the diagram
+\begin{center}
+\resetparms
+\Atriangle[A`B`C;f`g`h]
+\end{center}
+The reason for the shape name will be explained later.
+
+If an arrow label extends especially high or low, the space
+automatically expands to match. For example,
+{\verbatim
+\begin{center}
+\resetparms
+\square[A`B`C`D;\sum_{i=1}^{\infty}`g`h`\Psi^A_k]
+\end{center}
+|egroup
+will get the diagram
+\begin{center}
+\resetparms
+\square[A`B`C`D;\sum_{i=1}^{\infty}`g`h`\Psi^A_k]
+\end{center}
+and so on.
+
+Before going on, I will explain about the parameters. Any shape will
+have one or two parameters for height and/or length as well as one
+parameter for each arrow in the diagram. These are in addition to the
+parameters used in the actual procedures. For example, the procedure
+{\verbatim
+\begin{center}
+\setsqparms[-1`0`2`-3;1000`700]
+\square[A`B`C`D;f`g`h`k]
+\end{center}
+|egroup
+gives the square:
+\begin{center}
+\setsqparms[-1`0`2`-3;1000`700]
+\square[A`B`C`D;f`g`h`k]
+\end{center}
+The meaning is as follows. The first four parameters refer to four
+arrows in linguistic order (top, left, right, bottom). A negative
+number gives a backward arrow, while a zero causes it to be omitted. A
+parameter with an absolute value of 1 is ordinary, while 2 gives an
+arrow with a tail (monomorphism) and 3 a double headed arrow
+(epimorphism). The last two parameters determine the width and height,
+respectively, in units of 0.01 em (an em is the width of an M, the
+widest letter in a font).
+
+Although {\tt \\resetparms} works with any of the shapes (and simply
+chooses
+the default values of 1 for all arrows and 500 for height and width),
+the remaining shapes use different names. The various parameter setting
+procedures are
+{\verbatim
+\setsqparms[#1`#2`#3`#4;#5`#6]
+\settriparms[#1`#2`#3;#4]
+\settripairparms[#1`#2`#3`#4`#5;#6]
+\setrecparms[#1`#2]
+|egroup
+With the exception of the last, the parameters before the semicolon set
+the arrow types and the one or two after set lengths. In the last one,
+both parameters are lengths.
+
+Here are the shapes. We have already seen the shape {\tt \\square}.
+There are eight different triangles, all isoceles right triangles in
+different orientations. The names all have the form {\tt
+\\xtriangle}, where x is the letter that most closely resembles the
+actual shape of the triangle.
+
+Here are the names, followed by a sample of each one:
+\begin{list}{}{}
+\item{\tt \\btriangle}\samepage
+\begin{center}
+\resetparms
+\btriangle[A`B`C;f`g`h]
+\end{center}
+\pagebreak[0]
+\item{\tt \\dtriangle}\samepage
+\begin{center}
+\resetparms
+\dtriangle[A`B`C;f`g`h]
+\end{center}
+\pagebreak[0]
+\item{\tt \\ptriangle}\samepage
+\begin{center}
+\resetparms
+\ptriangle[A`B`C;f`g`h]
+\end{center}
+\pagebreak[0]
+\item{\tt \\qtriangle}\samepage
+\begin{center}
+\resetparms
+\qtriangle[A`B`C;f`g`h]
+\end{center}
+\pagebreak[0]
+\item{\tt \\Atriangle}\samepage
+\begin{center}
+\resetparms
+\Atriangle[A`B`C;f`g`h]
+\end{center}
+\pagebreak[0]
+\item{\tt \\Vtriangle}\samepage
+\begin{center}
+\resetparms
+\Vtriangle[A`B`C;f`g`h]
+\end{center}
+\pagebreak[0]
+\item{\tt \\Ctriangle}\samepage
+\begin{center}
+\resetparms
+\Ctriangle[A`B`C;f`g`h]
+\end{center}
+\pagebreak[0]
+\item{\tt \\Dtriangle}\samepage
+\begin{center}
+\resetparms
+\Dtriangle[A`B`C;f`g`h]
+\end{center}
+\end{list}
+
+In addition, there are two special diagrams that come up often enough to
+be worth having a special macros for.
+\begin{list}{}{}
+\item{\tt \\Atrianglepair}\samepage
+\begin{center}
+\resetparms
+\Atrianglepair[A`B`C`D;f`g`h`k`l]
+\end{center}
+\item{\tt \\Vtrianglepair}\samepage
+\begin{center}
+\resetparms
+\Vtrianglepair[A`B`C`D;f`g`h`k`l]
+\end{center}
+\end{list}
+Finally, there is one special shape that is probably not used by very
+many mathematicians. Still I have it and the user might as well share
+it.
+
+{\verbatim
+\recurse[A`B`R`C;s`f_0`f`t_0`t]
+|egroup
+\begin{center}
+\resetparms
+\recurse[A`B`R`C;s`f_0`f`t_0`t]
+\end{center}
+
+Notice what happens if the first parameter is empty:
+{\verbatim
+\recurse[`B`R`C;s`f_0`f`t_0`t]
+|egroup
+\begin{center}
+\resetparms
+\recurse[`B`R`C;s`f_0`f`t_0`t]
+\end{center}
+
+This takes care of the simple procedures. The remaining procedures are
+there as building blocks for more complicated diagrams.
+
+These take the form
+\vskip0pt\noindent
+{\tt \\putshape(xpos,ypos)[shape\_parameters]}
+\vskip0pt\noindent
+where
+shape is one of the 11 shapes (excluding {\tt \\recurse}) described
+above
+and the parms are as described there. The parameters {\tt xpos} and
+{\tt ypos} are the offsets from the lower left corner of the picture
+measured in umits of .01 em in the usual \LaTeX\ fashion.
+
+There is one
+more shape which is simply an arrow with an attached label. This is
+called {\tt \\putmorphism} and it is used with the syntax
+\vskip0pt\noindent
+{\tt
+\\putmorphism(xpos,ypos)(run,rise)[node1`node2`label]\{dist\}\{type\}\{loc\}}
+\vskip0pt\noindent
+Here the parameters {\tt xpos} and
+{\tt ypos} are as above. The slope is {\tt rise/run} where {\tt rise}
+and {\tt run} are two numbers that give the slope in accordance with the
+\LaTeX\ rules. That is rise and run must have no common divisor and
+must not exceed 4 in absolute value. In addition, these procedures are
+defined so that rise must not be positive and if it is zero, then run
+must be positive. In other words, all arrows must go in the linguistic
+direction, downwards or to the right. Arrows can be made to go in the
+reverse direction as explained below.
+
+The next three parameters are the node that appears first (in linguistic
+order), the one that appears second and the arrow label. The next
+paramater is the distance in the sense of \LaTeX\ between the centers of
+the nodes. This means it is the horizontal component of the distance,
+unless that is negative, in which case it is the vertical distance. The
+second parameter is the code for the arrowtype, an integer between -3
+and 3 with the same meaning as explained above. Using negative values
+of this parameter allows one to draw an arrow that goes upwards or left.
+Note, however, that node1 is always the node that is above or to the
+left of node2. The last parameter should have the value a,b,l,r or m.
+The values a and b are used only for horizontal arrows and direct the
+arrow label to be placed above or below the arrow. The values l and r
+are used for all other arrows and direct the label to be left or right
+of the arrow. Finally, a vertical arrow only can be given the parameter
+m, in which case the arrow will be gapped and the label placed in the
+middle of the gap.
+
+In general, the simple macros are designed to be used as indicated
+either in the {\tt \\begin\{center\} \ldots \\end\{center\}} environment
+or in one of the others, usually
+{\verbatim
+\begin{equation}\begin{array}{c}
+|dots
+\end{array}\end{equation}|egroup
+
+The \\putshape macros must be used inside a picture environment that is
+normally placed inside a centering or similar environment. The
+reference point for the positioning parameters is determined as the
+lower left corner of the smallest rectangle with sides parallel to the
+coordinate axes that includes the center points of all nodes on its
+border. This rectangle will be degenerate in the case of a horizontal
+or vertical morphism. The reference point may either be on or outside
+the actual figure. For example, in the case of the btriangle, it is the
+center of the lower left node, while for a qtriangle it is outside the
+triangle itself being the fourth corner of the enclosing square.
+
+The macros are made so that they fit together well. That is why all
+distances are from node centers to node centers. If a vertex is part of
+two shapes, it is probably best not to repeat it, since it is
+conceivable that round-off errors will cause its two appearances to be
+slightly offset. It can either be omitted or, since the width is used
+to determine the amount to shorten horizontal arrows, replaced by {\tt
+\\phantom} versions. Both methods are illustrated in the example given
+at the end.
+
+One more thing has to be described. when beginning picture mode, you
+have to allocate both a horizontal and vertical space. the vertical
+space is crucial and, while the horizontal is not as critical, it still
+determines whether the figure is properly centered. This partially
+automated as follows. You begin by giving values to two variables,
+called {\tt \\xext} and {\tt\\yext} (for x-extent and y-extent, resp.).
+This is done by the declarations
+{\tt\\xext=xparm, \\yext=yparm}, where {\tt xparm} and {\tt yparm} are
+the sum of all the horizontal and vertical distances used in the
+procedures. Of course, if two shapes are put side by side, the
+x-extents will be the sum plus the space between them if any, while the
+y-extent will be that of the larger one. In figuring out these extents,
+ignore the heights and widths of the vertices and arrow labels. So what
+these really measure is the distance between the two most distantly
+separated arrows in the diagram, or rather it would if none was omitted.
+
+These must be adjusted for the space occupied by the labels and nodes.
+There are procedures to do this automatically, but they require an
+assist from the user. First, there are six raw procedures that can
+carry out these adjustments. They are {\verbatim \topadjust,
+\botadjust, \leftadjust, \rightadjust, \leftsladjust, \rightsladjust
+|egroup that take 3 parameters each and adjust {\tt\\xext} and
+{\tt\\yext} for the heights and widths of the nodes. They all take as
+parameters two nodes and one arrow and figure out which one stands the
+highest or sticks out the furthest and makes the appropriate adjustment.
+The first four can be given the nodes in either order and the arrow
+label comes third. In the case of the last two, making adjustment for
+slnat arrows of a triangle, the first parameter is the node that sticks
+out the further, the second is the other node (which is the rarely the
+determining one) and the third is the label. If it is clear that a node
+or label cannot possibly be the salient one, then it may safely be
+omitted.
+
+In practice, it is hardly ever necessary to use these procedures. There
+is a single procedure called {\tt\\adjust} that is used as follows:
+{\verbatim
+\adjust[tnode`tlabel;lnode`llabel;rnode`rlabel;bnode`blabel]
+|egroup
+It is usually necessary to specify only four parameters leaving the
+remainder blank. For example, if the top label is empty, then some node
+(if there is more than one, always use the tallest; if in doubt use them
+both concatenated). If the label is not blank, it will almost stick up
+further than the node. If in doubt, give them both, but this should
+rarely happen. Similar remarks apply to the other pairs of parameters.
+
+These adjustment procedures adjust not only {\tt\\xext} and {\tt\\yext}
+but another pair of variables called {\tt\\xpos} and {\tt\\ypos}. When
+this has all been done, you can now begin picture mode with
+{\verbatim
+\begin{picture}(\xext,\yext)(\xoff,\yoff)
+|dots
+\end{picture}
+|egroup
+
+A somewhat baroque (but taken from an actual text) example illustrates
+most of these points.
+{\verbatim
+\begin{center}
+\xext=2100 \yext=2100
+\adjust[`\mu;`T\eta'T;`\sigma;`T'T\eta']
+\begin{picture}(\xext,\yext)(\xoff,\yoff)
+\putmorphism(0,2100)(0,-1)[``T\eta'T]{1400}1l
+\putmorphism(0,2100)(1,0)[TT`T`\mu]{700}1a
+\putmorphism(0,2100)(1,-1)[`TTT'`TT\eta']{700}1l
+\putmorphism(700,2100)(1,-1)[`TT'`T\eta]{700}1r
+\put(700,1750){\makebox(0,0){1}}
+\putmorphism(700,1420)(1,0)[\phantom{TTT'}`\phantom{TT'}`\mu
+ T']{700}1a
+\putmorphism(700,1380)(1,0)[\phantom{TTT'}`%
+ \phantom{TT'}`T\sigma]{700}1b
+\setsqparms[0`1`1`1;700`700]
+\putsquare(700,700)[TTT'`TT'`TT'TT'`TT'T';`T\eta'TT'``]
+\putmorphism(700,700)(1,0)[\phantom{TT'TT'}`%
+ \phantom{TT'T'}`TT'\sigma]{700}1a
+\put(300,1400){\makebox(0,0){2}}
+\put(950,1050){\makebox(0,0){3}}
+\settriparms[0`1`0;700]
+\putbtriangle(1400,700)[``TT';T\eta'T'`id`]
+\putmorphism(1400,700)(1,0)[\phantom{TT'T'}`%
+ \phantom{TT'}`T\mu']{700}1a
+\put(1600,1050){\makebox(0,0){6}}
+\setsqparms[1`1`0`1;700`700]
+\putsquare(0,0)[TT'T`\phantom{TT'TT'}`T'T`T'TT';%
+ TT'T\eta'`\sigma T``T'T\eta']
+\putmorphism(700,0)(1,0)[\phantom{T'TT'}`%
+ \phantom{T'T'}`T'\sigma]{700}1b
+\setsqparms[0`0`1`1;700`700]
+\putsquare(1400,0)[``T'T'`T';``\sigma`\mu']
+\putmorphism(700,700)(0,-1)[``\sigma TT']{700}1m
+\putmorphism(1400,700)(0,-1)[``\sigma T']{700}1m
+\put(300,350){\makebox(0,0){4}}
+\put(1050,350){\makebox(0,0){5}}
+\put(1750,350){\makebox(0,0){7}}
+\end{picture}
+\end{center}
+|egroup
+which produces
+\begin{center}
+\xext=2100 \yext=2100
+\adjust[`\mu;`T\eta'T;`\sigma;`T'T\eta']
+\begin{picture}(\xext,\yext)(\xoff,\yoff)
+\putmorphism(0,2100)(0,-1)[``T\eta'T]{1400}1l
+\putmorphism(0,2100)(1,0)[TT`T`\mu]{700}1a
+\putmorphism(0,2100)(1,-1)[`TTT'`TT\eta']{700}1l
+\putmorphism(700,2100)(1,-1)[`TT'`T\eta]{700}1r
+\put(700,1750){\makebox(0,0){1}}
+\putmorphism(700,1420)(1,0)[\phantom{TTT'}`\phantom{TT'}`\mu
+ T']{700}1a
+\putmorphism(700,1380)(1,0)[\phantom{TTT'}`%
+ \phantom{TT'}`T\sigma]{700}1b
+\setsqparms[0`1`1`1;700`700]
+\putsquare(700,700)[TTT'`TT'`TT'TT'`TT'T';`T\eta'TT'``]
+\putmorphism(700,700)(1,0)[\phantom{TT'TT'}`%
+ \phantom{TT'T'}`TT'\sigma]{700}1a
+\put(300,1400){\makebox(0,0){2}}
+\put(950,1050){\makebox(0,0){3}}
+\settriparms[0`1`0;700]
+\putbtriangle(1400,700)[``TT';T\eta'T'`id`]
+\putmorphism(1400,700)(1,0)[\phantom{TT'T'}`%
+ \phantom{TT'}`T\mu']{700}1a
+\put(1600,1050){\makebox(0,0){6}}
+\setsqparms[1`1`0`1;700`700]
+\putsquare(0,0)[TT'T`\phantom{TT'TT'}`T'T`T'TT';%
+ TT'T\eta'`\sigma T``T'T\eta']
+\putmorphism(700,0)(1,0)[\phantom{T'TT'}`%
+ \phantom{T'T'}`T'\sigma]{700}1b
+\setsqparms[0`0`1`1;700`700]
+\putsquare(1400,0)[``T'T'`T';``\sigma`\mu']
+\putmorphism(700,700)(0,-1)[``\sigma TT']{700}1m
+\putmorphism(1400,700)(0,-1)[``\sigma T']{700}1m
+\put(300,350){\makebox(0,0){4}}
+\put(1050,350){\makebox(0,0){5}}
+\put(1750,350){\makebox(0,0){7}}
+\end{picture}
+\end{center}
+
+Here is a page of samples of the results from the various
+{\tt\\putshapes}. The code
+{\verbatim
+\begin{center}
+\xext=3000 \yext=3500
+\begin{picture}(\xext,\yext)(\xoff,\yoff)
+\resetparms
+\putsquare(0,0)[A`B`C`D;f`g`h`k]
+\putbtriangle(0,1500)[A`B`C;f`g`h]
+\putdtriangle(2200,1500)[A`B`C;f`g`h]
+\putptriangle(0,3000)[A`B`C;f`g`h]
+\putqtriangle(1000,500)[A`B`C;f`g`h]
+\putCtriangle(1500,750)[A`B`C;f`g`h]
+\putDtriangle(700,1000)[A`B`C;f`g`h]
+\putAtriangle(2000,2200)[A`B`C;f`g`h]
+\putAtrianglepair(0,2500)[A`B`C`D;f`g`h`k`l]
+\putVtriangle(2000,3000)[A`B`C;f`g`h]
+\putVtrianglepair(1000,2500)[A`B`C`D;f`g`h`k`l]
+\end{picture}
+\end{center}
+|egroup
+produces the diagram:
+\begin{center}
+\xext=3000 \yext=3500
+\begin{picture}(\xext,\yext)(\xoff,\yoff)
+\resetparms
+\putsquare(0,0)[A`B`C`D;f`g`h`k]
+\putbtriangle(0,1500)[A`B`C;f`g`h]
+\putdtriangle(2200,1500)[A`B`C;f`g`h]
+\putptriangle(0,3000)[A`B`C;f`g`h]
+\putqtriangle(1000,500)[A`B`C;f`g`h]
+\putCtriangle(1500,750)[A`B`C;f`g`h]
+\putDtriangle(700,1000)[A`B`C;f`g`h]
+\putAtriangle(2000,2200)[A`B`C;f`g`h]
+\putAtrianglepair(0,2500)[A`B`C`D;f`g`h`k`l]
+\putVtriangle(2000,3000)[A`B`C;f`g`h]
+\putVtrianglepair(1000,2500)[A`B`C`D;f`g`h`k`l]
+\end{picture}
+\end{center}
+
+
+Added material:
+
+The catdoc file is out-of-date in two ways. Most important is that all
+the basic shapes (square and triangles) now accept optional arguments.
+For example, the code
+{\verbatim
+\resetparms\square[A`B`C`D;f`g`h`k]
+|egroup
+is equivalent to simply
+{\verbatim
+|egroup
+\square[A`B`C`D;f`g`h`k]
+The code
+{\verbatim
+\settriparms[1`-1`2;750]\ptriangle[A`B`C;f`g`h]
+|egroup
+is equivalent to
+{\verbatim
+\ptriangle<1`-1`2;750>[A`B`C;f`g`h]
+|egroup
+and the code
+{\verbatim
+\settripairparms[1`-1`0`2`-3;1000]
+\putAtrianglepair(500,750)[A`B`C`D;f`g`h`k`l]
+|egroup
+is equivalent to
+{\verbatim
+\putAtrianglepair<1`-1`0`2`-3;1000>(500,750)[A`B`C`D;f`g`h`k`l]
+|egroup
+Note that both the old and new syntax work.
+
+The second new things are various shapes that I have found useful enough
+to add over the last few months. For example, I have both vertical and
+horizontal coequalizers. Had I had the need, I would have added
+equalizers, and no doubt will at some future date. Or maybe you will
+and can send it to me. These can all be found by reading the source
+file, where they are sort of documented.
+\end{document}
diff --git a/macros/latex209/contrib/misc/catmac.sty b/macros/latex209/contrib/misc/catmac.sty
new file mode 100644
index 0000000000..43a36455b2
--- /dev/null
+++ b/macros/latex209/contrib/misc/catmac.sty
@@ -0,0 +1,1013 @@
+% This should appear in a file named catmac.sty
+% Copyright 1988,1989 Michael Barr
+% Department of Mathematics and Statistics
+% McGill University
+% 805 Sherbrooke St., W
+% Montreal, Quebec, Canada
+% H3P 1S4
+%
+% inhb@mcgillb.bitnet
+%
+% All commercial rights reserved. May be freely distributed
+% and used with the following exceptions:
+% 1. No commercial use without explicit permission.
+% 2. It may not be used by any employee of a telephone
+% company.
+% 3. It may not be distributed without this notice.
+%
+% Last revised 89-12-11
+
+
+\newcount \coefa
+\newcount \coefb
+\newcount \coefc
+\newcount\tempcounta
+\newcount\tempcountb
+\newcount\tempcountc
+\newcount\tempcountd
+\newcount\xext
+\newcount\yext
+\newcount\xoff
+\newcount\yoff
+\newcount\gap%
+\newcount\arrowtypea
+\newcount\arrowtypeb
+\newcount\arrowtypec
+\newcount\arrowtyped
+\newcount\arrowtypee
+\newcount\height
+\newcount\width
+\newcount\xpos
+\newcount\ypos
+\newcount\run
+\newcount\rise
+\newcount\arrowlength
+\newcount\halflength
+\newcount\arrowtype
+\newdimen\tempdimen
+\newdimen\xlen
+\newdimen\ylen
+\newsavebox{\tempboxa}%
+\newsavebox{\tempboxb}%
+\newsavebox{\tempboxc}%
+
+
+\newcount \repetitions
+\def\repto#1{%
+\mathrel{
+\hbox{$
+\repetitions=0%
+\loop\ifnum\repetitions<#1%
+ \advance \repetitions by 1%
+ \relbar\joinrel
+\repeat
+\rightarrow
+$}}}
+\def\to{\repto0}
+\def\To{\repto1}
+\def\two{\reptwo0}
+\def\Two{\reptwo1}
+\def\tofro{\mathrel{\vcenter{\hbox{\oalign
+{$\longrightarrow$\crcr$\longleftarrow$}}}}}
+
+\def\epi{\mathrel{\mathchar"221\mkern -12mu\mathchar"221}}
+\def\leftepi{\mathrel{\mathchar"220\mkern -12mu\mathchar"220}}
+\def\mon{\mathrel{\m@th\hbox to
+ 14.6pt{\lasyb\char'51\hskip-2.1pt$\arrext$\hss
+$\mathord\rightarrow$}}} % width of \epi
+\def\leftmono{\mathrel{\m@th\hbox to
+14.6pt{$\mathord\leftarrow$\hss$\arrext$\hskip-2.1pt\lasyb\char'50%
+}}} % width of \epi
+\font\lasyb=lasyb10 scaled \magstephalf % for \mon
+\mathchardef\arrext="0200 % amr minus for arrow extension (see \into)
+
+
+\setlength{\unitlength}{.01em}%
+\def\settypes(#1,#2,#3){\arrowtypea#1 \arrowtypeb#2 \arrowtypec#3}
+\def\settoheight#1#2{\setbox\@tempboxa\hbox{#2}#1\ht\@tempboxa\relax}%
+\def\settodepth#1#2{\setbox\@tempboxa\hbox{#2}#1\dp\@tempboxa\relax}%
+\def\settokens[#1`#2`#3`#4]{%
+ \def\tokena{#1}\def\tokenb{#2}\def\tokenc{#3}\def\tokend{#4}}
+\def\setsqparms[#1`#2`#3`#4;#5`#6]{%
+\arrowtypea #1
+\arrowtypeb #2
+\arrowtypec #3
+\arrowtyped #4
+\width #5
+\height #6
+}
+\def\setpos(#1,#2){\xpos=#1 \ypos#2}
+
+\def\bfig{\begin{picture}(\xext,\yext)(\xoff,\yoff)}
+\def\efig{\end{picture}}
+
+\def\putbox(#1,#2)#3{\put(#1,#2){\makebox(0,0){$#3$}}}
+
+\def\settriparms[#1`#2`#3;#4]{\settripairparms[#1`#2`#3`1`1;#4]}%
+
+\def\settripairparms[#1`#2`#3`#4`#5;#6]{%
+\arrowtypea #1
+\arrowtypeb #2
+\arrowtypec #3
+\arrowtyped #4
+\arrowtypee #5
+\width #6
+\height #6
+}
+
+\def\resetparms{\settripairparms[1`1`1`1`1;500]\width 500}%default values%
+
+\resetparms
+
+\def\mvector(#1,#2)#3{%%
+\put(0,0){\vector(#1,#2){#3}}%
+\put(0,0){\vector(#1,#2){30}}%
+}
+\def\evector(#1,#2)#3{{%%
+\arrowlength #3
+\put(0,0){\vector(#1,#2){\arrowlength}}%
+\advance \arrowlength by-30
+\put(0,0){\vector(#1,#2){\arrowlength}}%
+}}
+
+\def\horsize#1#2{%
+\settowidth{\tempdimen}{$#2$}%
+#1=\tempdimen
+\divide #1 by\unitlength
+}
+
+\def\vertsize#1#2{%
+\settoheight{\tempdimen}{$#2$}%
+#1=\tempdimen
+\settodepth{\tempdimen}{$#2$}%
+\advance #1 by\tempdimen
+\divide #1 by\unitlength
+}
+
+\def\vertadjust[#1`#2`#3]{%
+\vertsize{\tempcounta}{#1}%
+\vertsize{\tempcountb}{#2}%
+\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi
+\divide\tempcounta by2
+\vertsize{\tempcountb}{#3}%
+\ifnum \tempcountb>0 \advance \tempcountb by20 \fi
+\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi
+}
+
+\def\horadjust[#1`#2`#3]{%
+\horsize{\tempcounta}{#1}%
+\horsize{\tempcountb}{#2}%
+\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi
+\divide\tempcounta by20
+\horsize{\tempcountb}{#3}%
+\ifnum \tempcountb>0 \advance \tempcountb by60 \fi
+\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi
+}
+
+% In this procedure, #1 is the paramater that sticks out all the way,
+% #2 sticks out the least and #3 is a label sticking out half way. #4 is
+% the amount of the offset.
+
+\def\sladjust[#1`#2`#3]#4{%
+\tempcountc=#4
+\horsize{\tempcounta}{#1}%
+\divide \tempcounta by2
+\horsize{\tempcountb}{#2}%
+\divide \tempcountb by2
+\advance \tempcountb by-\tempcountc
+\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb\fi
+\divide \tempcountc by2
+\horsize{\tempcountb}{#3}%
+\advance \tempcountb by-\tempcountc
+\ifnum \tempcountb>0 \advance \tempcountb by80\fi
+\ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb\fi
+\advance\tempcounta by20
+}
+
+\def\putvector(#1,#2)(#3,#4)#5#6{{%
+\xpos=#1
+\ypos=#2
+\run=#3
+\rise=#4
+\arrowlength=#5
+\arrowtype=#6
+\ifnum \arrowtype<0
+ \ifnum \run=0
+ \advance \ypos by-\arrowlength
+ \else
+ \tempcounta \arrowlength
+ \multiply \tempcounta by\rise
+ \divide \tempcounta by\run
+ \ifnum\run>0
+ \advance \xpos by\arrowlength
+ \advance \ypos by\tempcounta
+ \else
+ \advance \xpos by-\arrowlength
+ \advance \ypos by-\tempcounta
+ \fi
+ \fi
+ \multiply \arrowtype by-1
+ \multiply \rise by-1
+ \multiply \run by-1
+\fi
+\ifnum \arrowtype=1
+ \put(\xpos,\ypos){\vector(\run,\rise){\arrowlength}}%
+\else\ifnum \arrowtype=2
+ \put(\xpos,\ypos){\mvector(\run,\rise)\arrowlength}%
+\else\ifnum\arrowtype=3
+ \put(\xpos,\ypos){\evector(\run,\rise){\arrowlength}}%
+\fi\fi\fi
+}}
+
+\def\putsplitvector(#1,#2)#3#4{%%
+\xpos #1
+\ypos #2
+\arrowtype #4
+\halflength #3
+\arrowlength #3
+\gap 140
+\advance \halflength by-\gap
+\divide \halflength by2
+\ifnum \arrowtype=1
+ \put(\xpos,\ypos){\line(0,-1){\halflength}}%
+ \advance\ypos by-\halflength
+ \advance\ypos by-\gap
+ \put(\xpos,\ypos){\vector(0,-1){\halflength}}%
+\else\ifnum \arrowtype=2
+ \put(\xpos,\ypos){\line(0,-1)\halflength}%
+ \put(\xpos,\ypos){\vector(0,-1)3}%
+ \advance\ypos by-\halflength
+ \advance\ypos by-\gap
+ \put(\xpos,\ypos){\vector(0,-1){\halflength}}%
+\else\ifnum\arrowtype=3
+ \put(\xpos,\ypos){\line(0,-1)\halflength}%
+ \advance\ypos by-\halflength
+ \advance\ypos by-\gap
+ \put(\xpos,\ypos){\evector(0,-1){\halflength}}%
+\else\ifnum \arrowtype=-1
+ \advance \ypos by-\arrowlength
+ \put(\xpos,\ypos){\line(0,1){\halflength}}%
+ \advance\ypos by\halflength
+ \advance\ypos by\gap
+ \put(\xpos,\ypos){\vector(0,1){\halflength}}%
+\else\ifnum \arrowtype=-2
+ \advance \ypos by-\arrowlength
+ \put(\xpos,\ypos){\line(0,1)\halflength}%
+ \put(\xpos,\ypos){\vector(0,1)3}%
+ \advance\ypos by\halflength
+ \advance\ypos by\gap
+ \put(\xpos,\ypos){\vector(0,1){\halflength}}%
+\else\ifnum\arrowtype=-3
+ \advance \ypos by-\arrowlength
+ \put(\xpos,\ypos){\line(0,1)\halflength}%
+ \advance\ypos by\halflength
+ \advance\ypos by\gap
+ \put(\xpos,\ypos){\evector(0,1){\halflength}}%
+\fi\fi\fi\fi\fi\fi
+}
+
+\def\putmorphism(#1)(#2,#3)[#4`#5`#6]#7#8#9{{%
+\run #2
+\rise #3
+\ifnum\rise=0
+ \puthmorphism(#1)[#4`#5`#6]{#7}{#8}{#9}%
+\else\ifnum\run=0
+ \putvmorphism(#1)[#4`#5`#6]{#7}{#8}{#9}%
+\else
+\setpos(#1)%
+\arrowlength #7
+\arrowtype #8
+\ifnum\run=0
+\else\ifnum\rise=0
+\else
+\ifnum\run>0
+ \coefa=1
+\else
+ \coefa=-1
+\fi
+\ifnum\arrowtype>0
+ \coefb=0
+ \coefc=-1
+\else
+ \coefb=\coefa
+ \coefc=1
+ \arrowtype=-\arrowtype
+\fi
+\width=2
+\multiply \width by\run
+\divide \width by\rise
+\ifnum \width<0 \width=-\width\fi
+\advance\width by60
+\if l#9 \width=-\width\fi
+\putbox(\xpos,\ypos){#4}% %node 1
+{\multiply \coefa by\arrowlength% %node 2
+\advance\xpos by\coefa
+\multiply \coefa by\rise
+\divide \coefa by\run
+\advance \ypos by\coefa
+\putbox(\xpos,\ypos){#5} }%
+{\multiply \coefa by\arrowlength% %label
+\divide \coefa by2
+\advance \xpos by\coefa
+\advance \xpos by\width
+\multiply \coefa by\rise
+\divide \coefa by\run
+\advance \ypos by\coefa
+\if l#9%
+ \put(\xpos,\ypos){\makebox(0,0)[r]{$#6$}}%
+\else\if r#9%
+ \put(\xpos,\ypos){\makebox(0,0)[l]{$#6$}}%
+\fi\fi }%
+{\multiply \rise by-\coefc% %arrow
+\multiply \run by-\coefc
+\multiply \coefb by\arrowlength
+\advance \xpos by\coefb
+\multiply \coefb by\rise
+\divide \coefb by\run
+\advance \ypos by\coefb
+\multiply \coefc by70
+\advance \ypos by\coefc
+\multiply \coefc by\run
+\divide \coefc by\rise
+\advance \xpos by\coefc
+\multiply \coefa by140
+\multiply \coefa by\run
+\divide \coefa by\rise
+\advance \arrowlength by\coefa
+\ifnum \arrowtype=1
+ \put(\xpos,\ypos){\vector(\run,\rise){\arrowlength}}%
+\else\ifnum\arrowtype=2
+ \put(\xpos,\ypos){\mvector(\run,\rise){\arrowlength}}%
+\else\ifnum\arrowtype=3
+ \put(\xpos,\ypos){\evector(\run,\rise){\arrowlength}}%
+\fi\fi\fi}\fi\fi\fi\fi}}
+
+\def\puthmorphism(#1,#2)[#3`#4`#5]#6#7#8{{%
+\xpos #1
+\ypos #2
+\width #6
+\arrowlength #6
+\putbox(\xpos,\ypos){#3\vphantom{#4}}%
+{\advance \xpos by\arrowlength
+\putbox(\xpos,\ypos){\vphantom{#3}#4}}%
+\horsize{\tempcounta}{#3}%
+\horsize{\tempcountb}{#4}%
+\divide \tempcounta by2
+\divide \tempcountb by2
+\advance \tempcounta by30
+\advance \tempcountb by30
+\advance \xpos by\tempcounta
+\advance \arrowlength by-\tempcounta
+\advance \arrowlength by-\tempcountb
+\putvector(\xpos,\ypos)(1,0){\arrowlength}{#7}%
+\divide \arrowlength by2
+\advance \xpos by\arrowlength
+\vertsize{\tempcounta}{#5}%
+\divide\tempcounta by2
+\advance \tempcounta by20
+\if a#8 %
+ \advance \ypos by\tempcounta
+ \putbox(\xpos,\ypos){#5}%
+\else
+ \advance \ypos by-\tempcounta
+ \putbox(\xpos,\ypos){#5}%
+\fi}}
+
+\def\putvmorphism(#1,#2)[#3`#4`#5]#6#7#8{{%
+\xpos #1
+\ypos #2
+\arrowlength #6
+\arrowtype #7
+\settowidth{\xlen}{$#5$}%
+\putbox(\xpos,\ypos){#3}%
+{\advance \ypos by-\arrowlength
+\putbox(\xpos,\ypos){#4}}%
+{\advance\arrowlength by-140
+\advance \ypos by-70
+\ifdim\xlen>0pt
+ \if m#8%
+ \putsplitvector(\xpos,\ypos){\arrowlength}{\arrowtype}%
+ \else
+ \putvector(\xpos,\ypos)(0,-1){\arrowlength}{\arrowtype}%
+ \fi
+\else
+ \putvector(\xpos,\ypos)(0,-1){\arrowlength}{\arrowtype}%
+\fi}%
+\ifdim\xlen>0pt
+ \divide \arrowlength by2
+ \advance\ypos by-\arrowlength
+ \if l#8%
+ \advance \xpos by-40
+ \put(\xpos,\ypos){\makebox(0,0)[r]{$#5$}}%
+ \else\if r#8%
+ \advance \xpos by40
+ \put(\xpos,\ypos){\makebox(0,0)[l]{$#5$}}%
+ \else
+ \putbox(\xpos,\ypos){#5}%
+ \fi\fi
+\fi
+}}
+
+\def\topadjust[#1`#2`#3]{%
+\yoff=10
+\vertadjust[#1`#2`{#3}]%
+\advance \yext by\tempcounta
+\advance \yext by 10
+}
+\def\botadjust[#1`#2`#3]{%
+\vertadjust[#1`#2`{#3}]%
+\advance \yext by\tempcounta
+\advance \yoff by-\tempcounta
+}
+\def\leftadjust[#1`#2`#3]{%
+\xoff=0
+\horadjust[#1`#2`{#3}]%
+\advance \xext by\tempcounta
+\advance \xoff by-\tempcounta
+}
+\def\rightadjust[#1`#2`#3]{%
+\horadjust[#1`#2`{#3}]%
+\advance \xext by\tempcounta
+}
+\def\rightsladjust[#1`#2`#3]{%
+\sladjust[#1`#2`{#3}]{\width}%
+\advance \xext by\tempcounta
+}
+\def\leftsladjust[#1`#2`#3]{%
+\xoff=0
+\sladjust[#1`#2`{#3}]{\width}%
+\advance \xext by\tempcounta
+\advance \xoff by-\tempcounta
+}
+\def\adjust[#1`#2;#3`#4;#5`#6;#7`#8]{%
+\topadjust[#1``{#2}]
+\leftadjust[#3``{#4}]
+\rightadjust[#5``{#6}]
+\botadjust[#7``{#8}]}
+
+\def\putsquarep<#1>(#2)[#3;#4`#5`#6`#7]{{%
+\setsqparms[#1]%
+\setpos(#2)%
+\settokens[#3]%
+\puthmorphism(\xpos,\ypos)[\tokenc`\tokend`{#7}]{\width}{\arrowtyped}b%
+\advance\ypos by \height
+\puthmorphism(\xpos,\ypos)[\tokena`\tokenb`{#4}]{\width}{\arrowtypea}a%
+\putvmorphism(\xpos,\ypos)[``{#5}]{\height}{\arrowtypeb}l%
+\advance\xpos by \width
+\putvmorphism(\xpos,\ypos)[``{#6}]{\height}{\arrowtypec}r%
+}}
+
+\def\putsquare{\@ifnextchar <{\putsquarep}{\putsquarep%
+ <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped;\width`\height>}}
+\def\square{\@ifnextchar< {\squarep}{\squarep
+ <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped;\width`\height>}}
+ % #6
+\def\squarep<#1>[#2`#3`#4`#5;#6`#7`#8`#9]{{% % #2------>#3
+\setsqparms[#1]% % | |
+\xext=\width % | |
+\yext=\height % #7| |#8
+\topadjust[#2`#3`{#6}]% % | |
+\botadjust[#4`#5`{#9}]% % | |
+\leftadjust[#2`#4`{#7}]% % v v
+\rightadjust[#3`#5`{#8}]% % #4------>#5
+\begin{picture}(\xext,\yext)(\xoff,\yoff)% #9
+\putsquarep<\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped;\width`\height>%
+(0,0)[#2`#3`#4`#5;#6`#7`#8`{#9}]%
+\end{picture}%
+}}
+
+\def\putptrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{%
+\settriparms[#1]%
+\xpos=#2 \ypos=#3
+\advance\ypos by \height
+\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a%
+\putvmorphism(\xpos,\ypos)[`#6`{#8}]{\height}{\arrowtypeb}l%
+\advance\xpos by\height
+\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r%
+}}
+
+\def\putptriangle{\@ifnextchar <{\putptrianglep}{\putptrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+\def\ptriangle{\@ifnextchar <{\ptrianglep}{\ptrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+
+\def\ptrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%% #5
+\settriparms[#1]%
+\width=\height % #2----->#3
+\xext=\width % | /
+\yext=\width % | /
+\topadjust[#2`#3`{#5}]% % #6| /#7
+\botadjust[#3``]% % | /
+\leftadjust[#2`#4`{#6}]% % | /
+\rightsladjust[#3`#4`{#7}]% % v v
+\begin{picture}(\xext,\yext)(\xoff,\yoff)% #4
+\putptrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>%
+(0,0)[#2`#3`#4;#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\putqtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{%
+\settriparms[#1]%
+\xpos=#2 \ypos=#3
+\advance\ypos by\height
+\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a%
+\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}l%
+\advance\xpos by\height
+\putvmorphism(\xpos,\ypos)[`#6`{#9}]{\height}{\arrowtypec}r%
+}}
+
+\def\putqtriangle{\@ifnextchar <{\putqtrianglep}{\putqtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+\def\qtriangle{\@ifnextchar <{\qtrianglep}{\qtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+
+\def\qtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%%
+\settriparms[#1]% #5
+\width=\height % #2----->#3
+\xext=\width % \ |
+\yext=\height % \ |
+\topadjust[#2`#3`{#5}]% % #6\ |#7
+\botadjust[#4``]% % \ |
+\leftsladjust[#2`#4`{#6}]% % \ |
+\rightadjust[#3`#4`{#7}]% % v v
+\begin{picture}(\xext,\yext)(\xoff,\yoff)% #4
+\putqtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>%
+(0,0)[#2`#3`#4;#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\putdtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{%
+\settriparms[#1]%
+\xpos=#2 \ypos=#3
+\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b%
+\advance\xpos by \height \advance\ypos by\height
+\putmorphism(\xpos,\ypos)(-1,-1)[``{#7}]{\height}{\arrowtypea}l%
+\putvmorphism(\xpos,\ypos)[#4``{#8}]{\height}{\arrowtypeb}r%
+}}
+
+\def\putdtriangle{\@ifnextchar <{\putdtrianglep}{\putdtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+\def\dtriangle{\@ifnextchar <{\dtrianglep}{\dtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+
+\def\dtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%%
+\settriparms[#1]% #2
+\width=\height % / |
+\xext=\width % / |
+\yext=\height % #5/ |#6
+\topadjust[#2``]% % / |
+\botadjust[#3`#4`{#7}]% % / |
+\leftsladjust[#3`#2`{#5}]% % v v
+\rightadjust[#2`#4`{#6}]% % #3----->#4
+\begin{picture}(\xext,\yext)(\xoff,\yoff)% #7
+\putdtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>%
+(0,0)[#2`#3`#4;#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\putbtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{%
+\settriparms[#1]%
+\xpos=#2 \ypos=#3
+\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b%
+\advance\ypos by\height
+\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}r%
+\putvmorphism(\xpos,\ypos)[#4``{#7}]{\height}{\arrowtypea}l%
+}}
+
+\def\putbtriangle{\@ifnextchar <{\putbtrianglep}{\putbtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+\def\btriangle{\@ifnextchar <{\btrianglep}{\btrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+
+\def\btrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%%
+\settriparms[#1]% #2
+\width=\height % | \
+\xext=\width % | \
+\yext=\height % #5| \#6
+\topadjust[#2``]% % | \
+\botadjust[#3`#4`{#7}]% % | \
+\leftadjust[#2`#3`{#5}]% % v v
+\rightsladjust[#4`#2`{#6}]% % #3----->#4
+\begin{picture}(\xext,\yext)(\xoff,\yoff)% #7
+\putbtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>%
+(0,0)[#2`#3`#4;#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\putAtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{%
+\settriparms[#1]%
+\xpos=#2 \ypos=#3
+{\multiply \height by2
+\puthmorphism(\xpos,\ypos)[#5`#6`{#9}]{\height}{\arrowtypec}b}%
+\advance\xpos by\height \advance\ypos by\height
+\putmorphism(\xpos,\ypos)(-1,-1)[#4``{#7}]{\height}{\arrowtypea}l%
+\putmorphism(\xpos,\ypos)(1,-1)[``{#8}]{\height}{\arrowtypeb}r%
+}}
+
+\def\putAtriangle{\@ifnextchar <{\putAtrianglep}{\putAtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+\def\Atriangle{\@ifnextchar <{\Atrianglep}{\Atrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+
+\def\Atrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%%
+\settriparms[#1]% #2
+\width=\height % / \
+\xext=\width % / \
+\yext=\height % #5/ \#6
+\topadjust[#2``]% % / \
+\botadjust[#3`#4`{#7}]% % / \
+\multiply \xext by2 % % v v
+\leftsladjust[#3`#2`{#5}]% % #3------------>#4
+\rightsladjust[#4`#2`{#6}]% % #7
+\begin{picture}(\xext,\yext)(\xoff,\yoff)%
+\putAtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>%
+(0,0)[#2`#3`#4;#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\putAtrianglepairp<#1>(#2)[#3;#4`#5`#6`#7`#8]{{%
+\settripairparms[#1]%
+\setpos(#2)%
+\settokens[#3]%
+\puthmorphism(\xpos,\ypos)[\tokenb`\tokenc`{#7}]{\height}{\arrowtyped}b%
+\advance\xpos by\height
+\advance\ypos by\height
+\putmorphism(\xpos,\ypos)(-1,-1)[\tokena``{#4}]{\height}{\arrowtypea}l%
+\putvmorphism(\xpos,\ypos)[``{#5}]{\height}{\arrowtypeb}m%
+\putmorphism(\xpos,\ypos)(1,-1)[``{#6}]{\height}{\arrowtypec}r%
+}}
+
+\def\putAtrianglepair{\@ifnextchar <{\putAtrianglepairp}{\putAtrianglepairp%
+ <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}}
+\def\Atrianglepair{\@ifnextchar <{\Atrianglepairp}{\Atrianglepairp%
+ <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}}
+
+\def\Atrianglepairp<#1>[#2;#3`#4`#5`#6`#7]{{%
+\settripairparms[#1]%
+\settokens[#2]%
+\width=\height
+\xext=\width
+\yext=\height
+\topadjust[\tokena``]%
+\vertadjust[\tokenb`\tokenc`{#6}]% % #2a
+\tempcountd=\tempcounta % / | \
+\vertadjust[\tokenc`\tokend`{#7}]% % / | \
+\ifnum\tempcounta<\tempcountd % #3/ #4 \#5
+\tempcounta=\tempcountd\fi % / | \
+\advance \yext by\tempcounta % / | \
+\advance \yoff by-\tempcounta % v v v
+\multiply \xext by2 % % #2b---->#2c---->#2d
+\leftsladjust[\tokenb`\tokena`{#3}]% % #6 #7
+\rightsladjust[\tokend`\tokena`{#5}]%
+\begin{picture}(\xext,\yext)(\xoff,\yoff)%
+\putAtrianglepairp
+<\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>%
+(0,0)[#2;#3`#4`#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\putVtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{%
+\settriparms[#1]%
+\xpos=#2 \ypos=#3
+\advance\ypos by\height
+{\multiply\height by2
+\puthmorphism(\xpos,\ypos)[#4`#5`{#7}]{\height}{\arrowtypea}a}%
+\putmorphism(\xpos,\ypos)(1,-1)[`#6`{#8}]{\height}{\arrowtypeb}l%
+\advance\xpos by\height
+\advance\xpos by\height
+\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r%
+}}
+
+\def\putVtriangle{\@ifnextchar <{\putVtrianglep}{\putVtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+\def\Vtriangle{\@ifnextchar <{\Vtrianglep}{\Vtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+
+\def\Vtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%%
+\settriparms[#1]% #5
+\width=\height % #2------------->#3
+\xext=\width % \ /
+\yext=\height % \ /
+\topadjust[#2`#3`{#5}]% % #6\ /#7
+\botadjust[#4``]% % \ /
+\multiply \xext by2 % % \ /
+\leftsladjust[#2`#3`{#6}]% % v v
+\rightsladjust[#3`#4`{#7}]% % #4
+\begin{picture}(\xext,\yext)(\xoff,\yoff)%
+\putVtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>%
+(0,0)[#2`#3`#4;#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\putVtrianglepairp<#1>(#2)[#3;#4`#5`#6`#7`#8]{{
+\settripairparms[#1]%
+\setpos(#2)%
+\settokens[#3]%
+\advance\ypos by\height
+\putmorphism(\xpos,\ypos)(1,-1)[`\tokend`{#6}]{\height}{\arrowtypec}l%
+\puthmorphism(\xpos,\ypos)[\tokena`\tokenb`{#4}]{\height}{\arrowtypea}a%
+\advance\xpos by\height
+\putvmorphism(\xpos,\ypos)[``{#7}]{\height}{\arrowtyped}m%
+\advance\xpos by\height
+\putmorphism(\xpos,\ypos)(-1,-1)[``{#8}]{\height}{\arrowtypee}r%
+}}
+
+\def\putVtrianglepair{\@ifnextchar <{\putVtrianglepairp}{\putVtrianglepairp%
+ <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}}
+\def\Vtrianglepair{\@ifnextchar <{\Vtrianglepairp}{\Vtrianglepairp%
+ <\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>}}
+
+\def\Vtrianglepairp<#1>[#2;#3`#4`#5`#6`#7]{{%
+\settripairparms[#1]%
+\settokens[#2]% #3 #4
+\xext=\height % #2a---->#2b---->#2c
+\width=\height % \ | /
+\yext=\height % \ | /
+\vertadjust[\tokena`\tokenb`{#4}]% #5\ #6 /#7
+\tempcountd=\tempcounta % \ | /
+\vertadjust[\tokenb`\tokenc`{#5}]% \ | /
+\ifnum\tempcounta<\tempcountd% v v v
+\tempcounta=\tempcountd\fi% #2d
+\advance \yext by\tempcounta
+\botadjust[\tokend``]%
+\multiply \xext by2
+\leftsladjust[\tokena`\tokend`{#6}]%
+\rightsladjust[\tokenc`\tokend`{#7}]%
+\begin{picture}(\xext,\yext)(\xoff,\yoff)%
+\putVtrianglepairp
+<\arrowtypea`\arrowtypeb`\arrowtypec`\arrowtyped`\arrowtypee;\height>%
+(0,0)[#2;#3`#4`#5`#6`{#7}]%
+\end{picture}%
+}}
+
+
+\def\putCtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{%
+\settriparms[#1]%
+\xpos=#2 \ypos=#3
+\advance\ypos by\height
+\putmorphism(\xpos,\ypos)(1,-1)[``{#9}]{\height}{\arrowtypec}l%
+\advance\xpos by\height
+\advance\ypos by\height
+\putmorphism(\xpos,\ypos)(-1,-1)[#4`#5`{#7}]{\height}{\arrowtypea}l%
+{\multiply\height by 2
+\putvmorphism(\xpos,\ypos)[`#6`{#8}]{\height}{\arrowtypeb}r}%
+}}
+
+\def\putCtriangle{\@ifnextchar <{\putCtrianglep}{\putCtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+\def\Ctriangle{\@ifnextchar <{\Ctrianglep}{\Ctrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+
+\def\Ctrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%%
+\settriparms[#1]% #2
+\width=\height % / |
+\xext=\width % / |
+\yext=\height % #5/ |
+\multiply \yext by2 % % / |
+\topadjust[#2``]% % / |
+\botadjust[#4``]% % v |
+\sladjust[#3`#2`{#5}]{\width}% % #3 |#6
+\tempcountd=\tempcounta % \ |
+\sladjust[#3`#4`{#7}]{\width}% % \ |
+\ifnum \tempcounta<\tempcountd % #7\ |
+\tempcounta=\tempcountd\fi % \ |
+\advance \xext by\tempcounta % \ |
+\advance \xoff by-\tempcounta % v v
+\rightadjust[#2`#4`{#6}]% % #4
+\begin{picture}(\xext,\yext)(\xoff,\yoff)%
+\putCtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>%
+(0,0)[#2`#3`#4;#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\putDtrianglep<#1>(#2,#3)[#4`#5`#6;#7`#8`#9]{{%
+\settriparms[#1]%
+\xpos=#2 \ypos=#3
+\advance\xpos by\height \advance\ypos by\height
+\putmorphism(\xpos,\ypos)(-1,-1)[``{#9}]{\height}{\arrowtypec}r%
+\advance\xpos by-\height \advance\ypos by\height
+\putmorphism(\xpos,\ypos)(1,-1)[`#5`{#8}]{\height}{\arrowtypeb}r%
+{\multiply\height by 2
+\putvmorphism(\xpos,\ypos)[#4`#6`{#7}]{\height}{\arrowtypea}l}%
+}}
+
+\def\putDtriangle{\@ifnextchar <{\putDtrianglep}{\putDtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+\def\Dtriangle{\@ifnextchar <{\Dtrianglep}{\Dtrianglep
+ <\arrowtypea`\arrowtypeb`\arrowtypec;\height>}}
+
+\def\Dtrianglep<#1>[#2`#3`#4;#5`#6`#7]{{%%
+\settriparms[#1]% #2
+\width=\height % | \
+\xext=\height % | \
+\yext=\height % | \#6
+\multiply \yext by2 % % | \
+\topadjust[#2``]% % | \
+\botadjust[#4``]% % | v
+\leftadjust[#2`#4`{#5}]% % #5| #3
+\sladjust[#3`#2`{#5}]{\height}% % | /
+\tempcountd=\tempcountd % | /
+\sladjust[#3`#4`{#7}]{\height}% % | /#7
+\ifnum \tempcounta<\tempcountd % | /
+\tempcounta=\tempcountd\fi % | /
+\advance \xext by\tempcounta % v v
+\begin{picture}(\xext,\yext)(\xoff,\yoff)% #4
+\putDtrianglep<\arrowtypea`\arrowtypeb`\arrowtypec;\height>%
+(0,0)[#2`#3`#4;#5`#6`{#7}]%
+\end{picture}%
+}}
+
+\def\setrecparms[#1`#2]{\width=#1 \height=#2}%
+% #4
+% #3b<-------#3a x #3b
+% ^ | |
+% / | |
+% #5/ | |
+% / | |
+% / | |
+% / | |
+% #3c |#6 |#3a x #5
+% \ | |
+% \ | |
+% #8\ | |
+% \ | |
+% \ | |
+% v v v
+% #3d<-------#3a x #3d
+% #8
+
+\def\recursep<#1`#2>[#3;#4`#5`#6`#7`#8]{{%
+\width=#1 \height=#2
+\settokens[#3]
+\settowidth{\tempdimen}{$\tokena$}
+\ifdim\tempdimen=0pt
+ \savebox{\tempboxa}{\hbox{$\tokenb$}}%
+ \savebox{\tempboxb}{\hbox{$\tokend$}}%
+ \savebox{\tempboxc}{\hbox{$#6$}}%
+\else
+ \savebox{\tempboxa}{\hbox{$\hbox{$\tokena$}\times\hbox{$\tokenb$}$}}%
+ \savebox{\tempboxb}{\hbox{$\hbox{$\tokena$}\times\hbox{$\tokend$}$}}%
+ \savebox{\tempboxc}{\hbox{$\hbox{$\tokena$}\times\hbox{$#6$}$}}%
+\fi
+\ypos=\height
+\divide\ypos by 2
+\xpos=\ypos
+\advance\xpos by \width
+\xext=\xpos \yext=\height
+\topadjust[#3`\usebox{\tempboxa}`{#4}]%
+\botadjust[#5`\usebox{\tempboxb}`{#8}]%
+\sladjust[\tokenc`\tokenb`{#5}]{\ypos}%
+\tempcountd=\tempcounta
+\sladjust[\tokenc`\tokend`{#5}]{\ypos}%
+\ifnum \tempcounta<\tempcountd
+\tempcounta=\tempcountd\fi
+\advance \xext by\tempcounta
+\advance \xoff by-\tempcounta
+\rightadjust[\usebox{\tempboxa}`\usebox{\tempboxb}`\usebox{\tempboxc}]%
+\bfig
+\putCtrianglep<-1`1`1;\ypos>(0,0)[`\tokenc`;#5`#6`{#7}]%
+\puthmorphism(\ypos,0)[\tokend`\usebox{\tempboxb}`{#8}]{\width}{-1}b%
+\puthmorphism(\ypos,\height)[\tokenb`\usebox{\tempboxa}`{#4}]{\width}{-1}a%
+\advance\ypos by \width
+\putvmorphism(\ypos,\height)[``\usebox{\tempboxc}]{\height}1r%
+\efig
+}}
+
+\def\recurse{\@ifnextchar <{\recursep}{\recursep<\width`\height>}}
+
+\def\puttwohmorphisms(#1,#2)[#3`#4;#5`#6]#7#8#9{{%
+% 1 and 2 are position, 3 and 4 are the nodes, 5 and 6 the labels,
+% 7 the distance between node centers and 8 & 9 are the arrow types.
+% #5
+% #3 ===========> #4
+% #6
+%
+\puthmorphism(#1,#2)[#3`#4`]{#7}0a
+\ypos=#2
+\advance\ypos by 20
+\puthmorphism(#1,\ypos)[\phantom{#3}`\phantom{#4}`#5]{#7}{#8}a
+\advance\ypos by -40
+\puthmorphism(#1,\ypos)[\phantom{#3}`\phantom{#4}`#6]{#7}{#9}b
+}}
+
+\def\puttwovmorphisms(#1,#2)[#3`#4;#5`#6]#7#8#9{{%
+% 1 and 2 are position, 3 and 4 are the nodes, 5 and 6 the labels,
+% 7 the distance between node centers and 8 & 9 are the arrow types.
+%
+% #3
+% ||
+% ||
+% #5 || #6
+% ||
+% ||
+% vv
+% #4
+%
+\putvmorphism(#1,#2)[#3`#4`]{#7}0a
+\xpos=#1
+\advance\xpos by -20
+\putvmorphism(\xpos,#2)[\phantom{#3}`\phantom{#4}`#5]{#7}{#8}l
+\advance\xpos by 40
+\putvmorphism(\xpos,#2)[\phantom{#3}`\phantom{#4}`#6]{#7}{#9}r
+}}
+
+\def\puthcoequalizer(#1)[#2`#3`#4;#5`#6`#7]#8#9{{%
+% #1 is (\xpos,\ypos), the next 6 are the nodes and arrow labels
+% #8 is the distance between each pair of nodes and #9 is the pos of #7
+% either a (above) or b (below)
+% #5 #7
+% #2 ===========> #3 --------> #4
+% #6
+%
+\setpos(#1)%
+\puttwohmorphisms(\xpos,\ypos)[#2`#3;#5`#6]{#8}11%
+\advance\xpos by #8
+\puthmorphism(\xpos,\ypos)[\phantom{#3}`#4`#7]{#8}1{#9}
+}}
+
+\def\putvcoequalizer(#1)[#2`#3`#4;#5`#6`#7]#8#9{{%
+% #1 is (\xpos,\ypos), the next 6 are the nodes and arrow labels
+% #8 is the distance between each pair of nodes and #9 is the pos of #7
+% either l (left) or r (right)
+%
+% #2
+% | |
+% | |
+% #5 | | #6
+% | |
+% | |
+% v v
+% #3
+% |
+% |
+% #7 |
+% |
+% v
+% #4
+%
+\setpos(#1)%
+\puttwovmorphisms(\xpos,\ypos)[#2`#3;#5`#6]{#8}11%
+\advance\ypos by -#8
+\putvmorphism(\xpos,\ypos)[\phantom{#3}`#4`#7]{#8}1{#9}
+}}
+
+\def\putthreehmorphisms(#1)[#2`#3;#4`#5`#6]#7(#8)#9{{%
+% Use: \putthreehmorphisms(xpos,ypos)[lnode`rnode;toplabel`midlabel%
+% botlabel]{distance}(toparrowtype,midarrowtype,botarrowtype){position}
+\setpos(#1) \settypes(#8)
+\if a#9 %
+ \vertsize{\tempcounta}{#5}%
+ \vertsize{\tempcountb}{#6}%
+ \ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi
+\else
+ \vertsize{\tempcounta}{#4}%
+ \vertsize{\tempcountb}{#5}%
+ \ifnum \tempcounta<\tempcountb \tempcounta=\tempcountb \fi
+\fi
+\advance \tempcounta by 60
+\puthmorphism(\xpos,\ypos)[#2`#3`#5]{#7}{\arrowtypeb}{#9}
+\advance\ypos by \tempcounta
+\puthmorphism(\xpos,\ypos)[\phantom{#2}`\phantom{#3}`#4]{#7}{\arrowtypea}{#9}
+\advance\ypos by -\tempcounta \advance\ypos by -\tempcounta
+\puthmorphism(\xpos,\ypos)[\phantom{#2}`\phantom{#3}`#6]{#7}{\arrowtypec}{#9}
+}}
+
+%\def\putarc(#1,#2)[#3`#4`#5]#6#7#8{{%
+%\xpos #1
+%\ypos #2
+%\width #6
+%\arrowlength #6
+%\putbox(\xpos,\ypos){#3\vphantom{#4}}%
+%{\advance \xpos by\arrowlength
+%\putbox(\xpos,\ypos){\vphantom{#3}#4}}%
+%\horsize{\tempcounta}{#3}%
+%\horsize{\tempcountb}{#4}%
+%\divide \tempcounta by2
+%\divide \tempcountb by2
+%\advance \tempcounta by30
+%\advance \tempcountb by30
+%\advance \xpos by\tempcounta
+%\advance \arrowlength by-\tempcounta
+%\advance \arrowlength by-\tempcountb
+%\halflength=\arrowlength \divide\halflength by 2
+%\divide\arrowlength by 5
+%\put(\xpos,\ypos){\bezier{\arrowlength}(0,0)(50,50)(\halflength,50)}
+%\ifnum #7=-1 \put(\xpos,\ypos){\vector(-3,-2)0} \fi
+%\advance\xpos by \halflength
+%\put(\xpos,\ypos){\xpos=\halflength \advance\xpos by -50
+% \bezier{\arrowlength}(0,50)(\xpos,50)(\halflength,0)}
+%\ifnum #7=1 {\advance \xpos by
+% \halflength \put(\xpos,\ypos){\vector(3,-2)0}} \fi
+%\advance\ypos by 50
+%\vertsize{\tempcounta}{#5}%
+%\divide\tempcounta by2
+%\advance \tempcounta by20
+%\if a#8 %
+% \advance \ypos by\tempcounta
+% \putbox(\xpos,\ypos){#5}%
+%\else
+% \advance \ypos by-\tempcounta
+% \putbox(\xpos,\ypos){#5}%
+%\fi
+%}}
+
diff --git a/macros/latex209/contrib/misc/chapref.sty b/macros/latex209/contrib/misc/chapref.sty
new file mode 100644
index 0000000000..c3e16ff573
--- /dev/null
+++ b/macros/latex209/contrib/misc/chapref.sty
@@ -0,0 +1,108 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Chaprefs.sty - Style file to produce Reference sections on a per
+% Chapter bases (using BibTeX)
+%
+% Author: Peter J. Knaggs, School of Computing and Mathematics,
+% Teesside Polytechnic, Middlesbrogh, Cleveland, England.
+%
+%=======================================================================
+
+%
+% Define two variables:
+% \bib@sty - Holds the selected bibliography style
+% \bib@name - Holds the name of the current \include file
+%
+
+\def\bib@sty{plane}
+\def\bib@name{\jobname}
+
+%
+% Redefine \include to save the name of the included file in the variable
+% \bib@name. This definition simply extends the LaTeX definition by
+% redefining \include to call \@include, this is taken from the \include
+% definition in LaTeX.TeX
+%
+
+\def\include#1{\include@#1 }
+\def\include@#1 {\def\bib@name{#1}\@include#1 }
+
+%
+% Define a new `Preamble' flag to indicate chapter reference are required.
+% This is required as the contents of the .aux files is diferent dependent
+% on the state of this flag.
+%
+% The flag is initilay set to false. Ie., do not produce chapter reference,
+% but do produce a bibliography chapter.
+%
+% The preable command \chaprefs is defined to switch the flag to true. Ie.,
+% produce chapter reference, but not a bibliography chapter.
+%
+
+\newif\if@chpref \@chpreffalse
+\def\chaprefs{\@chpreftrue}
+
+%
+% Redefine \bibliographystyle to save the selected style in the variable
+% \bib@sty. This will be ouput to the .aux file for each included file.
+% Hence only one \bibliographystyle command is required.
+%
+
+\def\bibliographystyle#1{
+ \if@filesw\immediate\write\@auxout{\string\bibstyle{#1}}\fi
+ \def\bib@sty{#1}
+}
+
+%
+% Redefine \bibliography to use new factoring of the command.
+% It redefineds the constant \@Ref as used in \thebiblography to add a
+% "References" section, such that it now adds a "Biblography" chapter.
+%
+
+\def\bibliography#1{\if@filesw\immediate\write\@auxout{\string\bibdata{#1}}
+ \def\@Ref{\@bib} \@input{\jobname.bbl} \fi }
+
+%
+% define \references to write the \bibstyle and \bibdata commands to the
+% current .aux file. It then inputs the current .bbl file if it exists.
+%
+
+\def\references#1{\if@filesw\if@chpref\immediate\write\@auxout
+ {\string\bibstyle{\bib@sty}} \write\@auxout{\string\bibdata{#1}}
+ \fi \@input{\bib@name.bbl} \fi }
+
+%
+% Define two functions:
+% \@Ref to add a "References" section to the current % chapter.
+% \@bib to add a "Bibliography" chapter to the document.
+%
+% It is assumed that the bibliography will be at the end of the document.
+% Ie., no \references commands are given after the \bibliography command.
+%
+
+\def\@Ref{\section{References}}
+\def\@bib{\chapter*{Bibliography\@mkboth{BIBLIOGRAPHY}{BIBLIOGRAPHY}}
+ \addcontentsline{toc}{chapter}{Bibliography} }
+
+%
+% At the start of a .bbl file is the command \thebibliography. This has
+% been modified to add a "References" section to the current chapter. Note,
+% the definition of \thebibliography is taken from the ucthesis document
+% style.
+%
+% When the \bibliography command is used the definition of \@Ref is altered
+% to add a "Bibliography" chapter. This definition is not changed back,
+% thus the \bibliography command must only be given after all \references
+% commands have been processed.
+%
+
+\def\thebibliography#1{\@Ref\list{[\arabic{enumi}]}
+ {\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex209/contrib/misc/chessboard.tex b/macros/latex209/contrib/misc/chessboard.tex
new file mode 100644
index 0000000000..ebb3f20c09
--- /dev/null
+++ b/macros/latex209/contrib/misc/chessboard.tex
@@ -0,0 +1,162 @@
+\documentstyle[times,array]{csart}
+\begin{document}
+% chessboard.tex
+% sebastian rahtz august 29th 1989
+%
+% from Clark's cheq.sty, and article by W. Appelt in Tugboat 9.2,
+% 284--287, 1988
+%---------------
+% fonts
+% Derived from cheq.pl by Adrian F. Clark, 11th July 1989.
+% Can be used by LaTeX or by plain TeX.
+\font\Cheq=Cheq at 18pt % design size is 1pt; characters just legible at this size
+
+\def\CheqBBOnBlack{\Cheq\char 241 }
+\def\CheqBB{\Cheq\char 76 }
+\def\CheqBXOnBlack{\Cheq\char 240 }
+\def\CheqBX{\Cheq\char 75 }
+\def\CheqBKOnBlack{\Cheq\char 234 }
+\def\CheqBK{\Cheq\char 83 }
+\def\CheqBPOnBlack{\Cheq\char 184 }
+\def\CheqBP{\Cheq\char 80 }
+\def\CheqBQOnBlack{\Cheq\char 206 }
+\def\CheqBQ{\Cheq\char 81 }
+\def\CheqBROnBlack{\Cheq\char 229 }
+\def\CheqBR{\Cheq\char 84 }
+\def\CheqBSquare{\Cheq\char 120 }
+\def\CheqWBOnBlack{\Cheq\char 186 }
+\def\CheqWB{\Cheq\char 98 }
+\def\CheqWXOnBlack{\Cheq\char 251 }
+\def\CheqWX{\Cheq\char 107 }
+\def\CheqWKOnBlack{\Cheq\char 167 }
+\def\CheqWK{\Cheq\char 115 }
+\def\CheqWPOnBlack{\Cheq\char 185 }
+\def\CheqWP{\Cheq\char 112 }
+\def\CheqWQOnBlack{\Cheq\char 182 }
+\def\CheqWQ{\Cheq\char 113 }
+\def\CheqWROnBlack{\Cheq\char 160 }
+\def\CheqWR{\Cheq\char 116 }
+%--------------
+\newif\ifblackchess
+\newif\ifblackplaying
+\def\BB{\ifblackchess\CheqBBOnBlack\else\CheqBB\fi}
+\def\BX{\ifblackchess\CheqBXOnBlack\else\CheqBX\fi}
+\def\BK{\ifblackchess\CheqBKOnBlack\else\CheqBK\fi}
+\def\BP{\ifblackchess\CheqBPOnBlack\else\CheqBP\fi}
+\def\BQ{\ifblackchess\CheqBQOnBlack\else\CheqBQ\fi}
+\def\BR{\ifblackchess\CheqBROnBlack\else\CheqBR\fi}
+\def\WB{\ifblackchess\CheqWBOnBlack\else\CheqWB\fi}
+\def\WX{\ifblackchess\CheqWXOnBlack\else\CheqWX\fi}
+\def\WK{\ifblackchess\CheqWKOnBlack\else\CheqWK\fi}
+\def\WP{\ifblackchess\CheqWPOnBlack\else\CheqWP\fi}
+\def\WQ{\ifblackchess\CheqWQOnBlack\else\CheqWQ\fi}
+\def\WR{\ifblackchess\CheqWROnBlack\else\CheqWR\fi}
+%
+% Appelt's move macros, amended
+%
+\newcounter{chessmove}
+\setcounter{chessmove}{0}
+\def\Move#1#2#3#4#5#6{
+% [XQKBRP][a-h][1-9][-x][a-h][1-8]
+\def\hashthree{\ifcase#3\relax\or A\or B\or C\or D\or E\or F\or G\or H\fi}
+\def\hashsix{\ifcase#6\relax\or A\or B\or C\or D\or E\or F\or G\or H\fi}
+\ifblackplaying\relax\else\addtocounter{chessmove}{1}\par\thechessmove.
+\fi
+#1#2#3#4#5#6
+\typeout{#1 #2#3(\hashthree) #4 #5#6(\hashsix)}
+\expandafter%
+\def\csname #2@\hashthree\endcsname{\void}%
+\ifblackplaying\expandafter%
+\def\csname #5@\hashsix\endcsname{\csname B#1\endcsname}%
+\else\expandafter%
+\def\csname #5@\hashsix\endcsname{\csname W#1\endcsname}%
+\fi
+}
+%
+\def\move#1#2#3#4#5#6 {
+% [XQKBRP][a-h][1-8][-x][a-h][1-8]
+\if#3-
+\Move P#1#2#3#4#5
+\else\if#3x
+\Move P#1#2#3#4#5%
+\else
+\Move #1#2#3#4#5#6
+\fi\fi
+\ifblackplaying\blackplayingfalse\else\blackplayingtrue\fi
+}
+%-------------------
+\def\void{\ifblackchess\CheqBSquare\else\hfill\fi}
+%------ Initial settings of board -------------
+\makeatletter
+\def\a@H{\BR}
+\def\b@H{\BK}\def\c@H{\BB}\def\d@H{\BQ}
+\def\e@H{\BX}\def\f@H{\BK}\def\g@H{\BB}
+\def\h@H{\BR}
+% ps
+\def\a@G{\BP}\def\b@G{\BP}\def\c@G{\BP}
+\def\d@G{\BP}\def\e@G{\BP}\def\f@G{\BP}
+\def\g@G{\BP}\def\h@G{\BP}
+% blank squares
+%
+\def\a@F{\void}\def\b@F{\void}\def\c@F{\void}\def\d@F{\void}
+\def\e@F{\void}\def\f@F{\void}\def\g@F{\void}\def\h@F{\void}
+\def\a@E{\void}\def\b@E{\void}\def\c@E{\void}\def\d@E{\void}
+\def\e@E{\void}\def\f@E{\void}\def\g@E{\void}\def\h@E{\void}
+\def\a@D{\void}\def\b@D{\void}\def\c@D{\void}\def\d@D{\void}
+\def\e@D{\void}\def\f@D{\void}\def\g@D{\void}\def\h@D{\void}
+\def\a@C{\void}\def\b@C{\void}\def\c@C{\void}\def\d@C{\void}
+\def\e@C{\void}\def\f@C{\void}\def\g@C{\void}\def\h@C{\void}
+%
+\def\a@B{\WP}\def\b@B{\WP}\def\c@B{\WP}\def\d@B{\WP}\def\e@B{\WP}\def\f@B{\WP}
+\def\g@B{\WP}\def\h@B{\WP}
+%
+\def\a@A{\WR}\def\b@A{\WK}\def\c@A{\WB}\def\d@A{\WX}
+\def\e@A{\WQ}\def\f@A{\WB}\def\g@A{\WK}\def\h@A{\WR}
+%---------------------------------------------------
+%
+\def\blacksquare#1{\blackchesstrue#1\blackchessfalse}
+%
+\def\Showboard{
+\par\vspace{1cm}
+\centerline{Board after move \thechessmove\ of \ifblackplaying White
+\else Black \fi player}
+\par\vspace{1cm}
+\tabcolsep=0pt
+\centerline{\begin{tabular}{lcccccccc}
+\cline{2-9}
+8 \vline& \a@H\vline&\blacksquare{\b@H}\vline&\c@H\vline&\blacksquare{\d@H}\vline&\e@H\vline&\blacksquare{\f@H}\vline&
+\g@H\vline&\blacksquare{\h@H}\vline\\
+\cline{2-9}
+7 \vline& \blacksquare{\a@G}\vline&\b@G\vline&\blacksquare{\c@G}\vline&\d@G\vline&\blacksquare{\e@G}\vline&\f@G\vline&\blacksquare{\g@G}\vline&\h@G\vline\\
+\cline{2-9}
+6 \vline& \a@F\vline&\blacksquare{\b@F}\vline&\c@F\vline&\blacksquare{\d@F}\vline&\e@F\vline&\blacksquare{\f@F}\vline&
+\g@F\vline&\blacksquare{\h@F}\vline\\
+\cline{2-9}
+5 \vline& \blacksquare{\a@E}\vline&\b@E\vline&\blacksquare{\c@E}\vline&\d@E\vline&\blacksquare{\e@E}\vline&\f@E\vline&\blacksquare{\g@E}\vline&\h@E\vline\\
+\cline{2-9}
+4 \vline& \a@D\vline&\blacksquare{\b@D}\vline&\c@D\vline&\blacksquare{\d@D}\vline&\e@D\vline&\blacksquare{\f@D}\vline&
+\g@D\vline&\blacksquare{\h@D}\vline\\
+\cline{2-9}
+3 \vline& \blacksquare{\a@C}\vline&\b@C\vline&\blacksquare{\c@C}\vline&\d@C\vline&\blacksquare{\e@C}\vline&\f@C\vline&\blacksquare{\g@C}\vline&\h@C\vline\\
+\cline{2-9}
+2 \vline& \a@B\vline&\blacksquare{\b@B}\vline&\c@B\vline&\blacksquare{\d@B}\vline&\e@B\vline&\blacksquare{\f@B}\vline&
+\g@B\vline&\blacksquare{\h@B}\vline\\
+\cline{2-9}
+1 \vline& \blacksquare{\a@A}\vline&\b@A\vline&\blacksquare{\c@A}\vline&\d@A\vline&\blacksquare{\e@A}\vline&\f@A\vline&\blacksquare{\g@A}\vline&\h@A\vline\\
+\cline{2-9}
+&a&b&c&d&e&f&g&h\\
+\end{tabular}}
+\par
+}
+\makeatother
+
+\Showboard
+
+\move e2-e4 \move c7-c6 \move c2-c4
+\move d7-d5
+\move Kb1-d2 \move d5xe4 \move Kd2xe4 \move Kb8-d7
+\move Kg1-f3
+
+\Showboard
+
+\end{document}
diff --git a/macros/latex209/contrib/misc/chgbar.sty b/macros/latex209/contrib/misc/chgbar.sty
new file mode 100644
index 0000000000..c49e8be18c
--- /dev/null
+++ b/macros/latex209/contrib/misc/chgbar.sty
@@ -0,0 +1,157 @@
+% Change bar document-style option for LaTeX.
+%
+% Copyright (C) 1990 by David B. Johnson.
+%
+% dbj@titan.rice.edu (Dave Johnson)
+
+% These macros draw a solid bar down the right margin of the output,
+% covering a range of the input file that has been declared to be changed.
+%
+% The beginning and end of a change bar in the text are marked with
+% \chgbarbegin and \chgbarend, respectively. For example,
+%
+% Here is some sample text \chgbarbegin that was
+% changed\chgbarend{} and some that wasn't changed.
+%
+% The change bar is drawn continuously between the line of output
+% containing the \chgbarbegin and the line of output containing the
+% \chgbarend. These lines can end up on separate pages, and the
+% division at page boundaries is handled automatically.
+
+% Two dimensions control the size and placement of the change bars:
+% \chgbarwidth The width of a change bar
+% \chgbarsep The distance between the text and the change bar
+
+% Warning: it does not appear to be possible to do this completely
+% correctly, due to the time at which the verticle glue on a page is
+% finally set, and the way that page breaks are decided. With
+% \raggedbottom, this normally works fine. It hasn't been tested with
+% \flushbottom, but will probably behave worse. In strange rare
+% situations, a change bar might be drawn from the first line of a page
+% up off the top of a page; this can usually be fixed by slightly moving
+% the \chngbarend around, or by breaking a single change bar range
+% into two ranges.
+
+\newdimen\chgbarwidth \newdimen\chgbarsep
+\chgbarwidth 4pt
+\chgbarsep .25in
+
+\def\chgbarbegin{\ifhmode\@chgbar{-2}\else\@chgbar{-3}\fi}
+\def\chgbarend{\@chgbar{-4}\relax}
+
+\marginparpush 0pt
+
+% The remainder of this is hacked up based on the LaTeX 2.09 latex.tex.
+
+% copied from \marginpar
+\def\@chgbar#1{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
+ \@floatpenalty-\@Miii\fi\ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else\@next\@currbox\@freelist{\global
+ \count\@currbox#1}{\@floatpenalty\z@ \@fltovf
+ \def\@currbox{\@tempboxa}}\fi
+ \setbox\@tempboxa\vbox
+ \bgroup\end@float\@esphack}
+
+\newdimen\@chgbarbegin
+\newif\if@inchgbar \@inchgbarfalse
+
+\def\@addmarginpar{%
+\ifnum\count\@currbox = -2 % change bar begin from hmode
+ \global\@chgbarbegin\@pageht \global\advance\@chgbarbegin -\baselineskip
+ \global\@inchgbartrue
+ \@cons\@freelist\@currbox
+\else
+\ifnum\count\@currbox = -3 % change bar begin not from hmode
+ \global\@chgbarbegin\@pageht
+ \global\@inchgbartrue
+ \@cons\@freelist\@currbox
+\else
+\ifnum\count\@currbox = -4 % change bar end
+ \if@inchgbar\else\@latexbug\fi
+ \@tempdima\@pageht \advance\@tempdima -\@chgbarbegin
+ \nointerlineskip
+ \@tempcnta\@ne
+ \if@twocolumn
+ \if@firstcolumn \@tempcnta\m@ne \fi
+ \else
+ \if@mparswitch
+ \ifodd\c@page \else\@tempcnta\m@ne \fi
+ \fi
+ \if@reversemargin \@tempcnta -\@tempcnta \fi
+ \fi
+ \hbox to\columnwidth
+ {\ifnum \@tempcnta >\z@
+ \hskip\columnwidth \hskip\chgbarsep
+ \else \hskip -\chgbarsep \fi
+\hbox{\vbox to 0pt{\vss
+ \hrule \@height\@tempdima \@width\chgbarwidth \@depth\z@
+}}
+\hss}
+ \nointerlineskip
+ \global\@inchgbarfalse
+ \@cons\@freelist\@currbox
+\else
+ \@next\@marbox\@currlist{\@cons\@freelist\@marbox
+ \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne
+ \if@twocolumn
+ \if@firstcolumn \@tempcnta\m@ne \fi
+ \else
+ \if@mparswitch
+ \ifodd\c@page \else\@tempcnta\m@ne \fi
+ \fi
+ \if@reversemargin \@tempcnta -\@tempcnta \fi
+ \fi
+ \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi
+ \@tempdima\@mparbottom \advance\@tempdima -\@pageht
+ \advance\@tempdima\ht\@marbox \ifdim\@tempdima >\z@
+ \@warning{Marginpar on page \thepage\space moved}\else\@tempdima\z@ \fi
+ \global\@mparbottom\@pageht \global\advance\@mparbottom\@tempdima
+ \global\advance\@mparbottom\dp\@marbox
+ \global\advance\@mparbottom\marginparpush
+ \advance\@tempdima -\ht\@marbox
+ \global\ht\@marbox\z@ \global\dp\@marbox\z@
+ \vskip -\@pagedp \vskip\@tempdima\nointerlineskip
+ \hbox to\columnwidth
+ {\ifnum \@tempcnta >\z@
+ \hskip\columnwidth \hskip\marginparsep
+ \else \hskip -\marginparsep \hskip -\marginparwidth \fi
+ \box\@marbox \hss}
+ \vskip -\@tempdima
+ \nointerlineskip
+ \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}
+\fi\fi\fi}
+
+\def\@makecol{\setbox\@outputbox\box\@cclv
+ \if@inchgbar
+ \@tempcnta\@ne
+ \if@twocolumn
+ \if@firstcolumn \@tempcnta\m@ne \fi
+ \else
+ \if@mparswitch
+ \ifodd\c@page \else\@tempcnta\m@ne \fi
+ \fi
+ \if@reversemargin \@tempcnta -\@tempcnta \fi
+ \fi
+ \@tempdima\ht\@outputbox \advance\@tempdima -\@chgbarbegin
+ \advance\@tempdima -\baselineskip
+ \setbox\@outputbox
+ \vbox{\boxmaxdepth \maxdepth
+ \unvbox\@outputbox \nointerlineskip \hbox to\columnwidth
+ {\ifnum \@tempcnta >\z@
+ \hskip\columnwidth \hskip\chgbarsep
+ \else \hskip -\chgbarsep \fi
+ \hbox{\vbox to 0pt{\vss
+ \hrule \@height\@tempdima \@width\chgbarwidth \@depth\z@}}\hss}}
+ \global\@chgbarbegin 0pt
+\fi
+ \ifvoid\footins\else\setbox\@outputbox
+ \vbox{\boxmaxdepth \maxdepth
+ \unvbox\@outputbox\vskip\skip\footins\footnoterule\unvbox\footins}\fi
+ \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
+ \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth
+ \@texttop\dimen128=\dp\@outputbox\unvbox\@outputbox
+ \vskip-\dimen128\@textbottom}
+ \global\maxdepth\@maxdepth}
+
+\newenvironment{changebar}{\chgbarbegin}{\chgbarend}
diff --git a/macros/latex209/contrib/misc/chomsky.sty b/macros/latex209/contrib/misc/chomsky.sty
new file mode 100644
index 0000000000..6d33a27c14
--- /dev/null
+++ b/macros/latex209/contrib/misc/chomsky.sty
@@ -0,0 +1,158 @@
+% % chomsky.sty by Michael Barr. From TeXhax 1989, issue 54.
+% % See below, after \endinput, for documentation.
+% \documentstyle{article}
+% \textwidth=6.5in \leftmargin=0in
+% \begin{document}
+\unitlength=.001em
+
+\newcount\xa \newcount\xb \newcount\xc
+\newcount\ya \newcount\yb \newcount\yc \newcount\ym
+\newcount\Xa \newcount\Xb \newcount\Xc
+\newcount\Ya \newcount\Yb \newcount\Yc
+\newcount\hsep \newcount\vsep
+\newcount\tempa \newcount\tempb \newcount\tempc
+\newbox\boxa \newbox\boxb \newbox\boxc
+\newcount\offset \newcount\offseta \newcount\offsetb \newcount\offsetc
+\newcount \hsep \newcount \vsep
+\hsep=3000
+\newcount \wide \newcount \high
+\newcount\correction
+\newdimen\tempdimen
+\tempdimen=3.3333333pt
+\divide\tempdimen by \unitlength
+\correction=\tempdimen
+
+\def\chomsky{\bgroup\catcode`\/=\active \catcode`\[=1 \catcode`\]=2}
+\def\endchomsky{\egroup}
+
+\chomsky
+
+\gdef/#1;#2,#3/{{%
+\setbox\boxa=\hbox{${\rm#1}$}
+\offset=0 \setbox\boxb=\hbox{\strut#2}\offsetb=\offset
+\offset=0 \setbox\boxc=\hbox{\strut#3}\offsetc=\offset
+\xa=\wd\boxa \divide \xa by \unitlength
+\ya=\ht\boxa \divide \ya by \unitlength
+\xb=\wd\boxb \divide \xb by \unitlength
+\yb=\ht\boxb \divide \yb by \unitlength
+\xc=\wd\boxc \divide \xc by \unitlength
+\yc=\ht\boxc \divide \yc by \unitlength
+\ifnum\offsetb=0 \offsetb=\xb \divide \offsetb by 2 \fi
+\ifnum\offsetc=0 \offsetc=\xc \divide \offsetc by 2 \fi
+\ifnum\xc=0 \onebox \else \twobox \fi}}
+
+\gdef\onebox{{%
+\Xa=\offsetb
+\vsep=2000
+\Ya=\yb \advance \Ya by \vsep
+\wide=\xb
+\high=\yb \advance \high by \vsep {\divide \ya by 2 \global\advance
+ \high by \ya}
+\advance\wide by -\correction
+\begin{picture}(\wide,\high)
+\put(\Xa,\Ya){\makebox(0,0){\usebox{\boxa}}}
+\put(0,0){\usebox{\boxb}}
+\global\offset=\Xa
+\advance \Ya by -\ya \advance \Ya by -100
+\advance \vsep by -\ya \advance \vsep by -400
+\put(\Xa,\Ya){\line(0,-1){\vsep}}
+\end{picture}
+}}
+
+\gdef\twobox{{%
+\ifnum\yb<\yc \ym=\yc \else \ym=\yb \fi
+\Yb=\ym \advance \Yb by -\yb
+\Yc=\ym \advance \Yc by -\yc
+\Xc=\xb \advance \Xc by \hsep
+\vsep=\xb \advance \vsep by -\offsetb \advance \vsep by \offsetc
+ \advance \vsep by \hsep \divide \vsep by 2
+\Xa=\offsetb \advance \Xa by \vsep \advance\Xa by \correction
+\Ya=\ym \advance \Ya by \vsep
+\wide=\xb \advance \wide by \xc \advance \wide by \hsep
+\advance\wide by -\correction
+\high=\Ya {\divide \ya by 2 \global\advance \high by \ya}
+\begin{picture}(\wide,\high)(\correction,0)
+\put(\Xa,\Ya){\makebox(0,0){\usebox{\boxa}}}
+\put(0,\Yb){\usebox{\boxb}}
+\put(\Xc,\Yc){\usebox{\boxc}}
+\global\offset=\Xa
+\advance \Ya by -\ya \advance \Ya by -200
+\advance \vsep by -\ya \advance \vsep by -500
+{\advance\Xa by -\ya \advance\Xa by -200
+\put(\Xa,\Ya){\line(-1,-1){\vsep}}}
+\advance\Xa by \ya \advance \Xa by 200
+\put(\Xa,\Ya){\line(1,-1){\vsep}}
+\end{picture}
+}}
+
+\endchomsky
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+% \end{document}
+% \gdef/#1;#2,#3/{\lbrack$_{\rm#1}\,$#2 #3\rbrack$_{\rm#1}\,$}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ Usage: \chomsky [/;,/] \endchomsky.
+ Can recurse.
+ E.g.,
+
+ \chomsky
+ [/S;[/NP;[/Det;The,/],[/N;man,/]/],%
+ [/VP;[/V_t;bit,/],[/NP;[/Det;a,/],[/N;dog,/]/]/]/]
+ \endchomsky
+
+ Gives:
+ S
+ / \
+ / \
+ / \
+ / \
+ / \
+ NP VP
+ / \ / \
+ / \ / \
+ Det N / \
+ | | Vt NP
+ The man | / \
+ bit Det N
+ | |
+ a dog
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Date: Mon, 22 May 89 22:49:14 EDT
+From: INHB000 <INHB%MCGILLC.BITNET@UWAVM.ACS.WASHINGTON.EDU>
+Subject: Macro to help display parsing trees
+Keywords: macros, parsing trees
+
+Paul Krause wanted some macros to help him display parsing trees. The
+enclosed is not the best possible solution, but it is a start. It can
+be improved in various ways. The most important is to reduce the number
+3000 that \hsep defaults to. It is that large only so that very short
+two word phrases will still have their parse lines; with a smaller value
+you come up to a shorter distance than latex can draw a slant line. The
+best thing is to use a smaller value, 1500 looks good, and increase it
+if the resultant line is too short. Then the positioning is not
+perfect. This appears to be the result of the boxes produced by the
+\picture environment being too wide by 3.333333pt. It might be better
+if the lines lower in the tree had steeper slope. This would introduce
+all sorts of complications.
+
+Some might object to the syntax. It was chosen to make the rather ugly
+recursive structure as readable as possible and, not coincidentally,
+come as close as possible to the alternate notation used in Chomsky's
+``Aspects of Syntax''. In fact, a different definition that reproduces
+that alternate notation appears at the end. I would have preferred the
+syntax without the slashes, but I could not figure out how to implement
+that. A couple of caveats. Since I have changed their \catcode's, [,]
+and / cannot be used inside the trees. Since I have never seen them so
+used, this seems safe. Of course, the brackets can all be replaced by
+braces and the opening slashes changed to \tree or something.
+
+The only sane way to use this macro is to define a key in your editor
+that produces the string [/;,/] and four backspaces with a single
+keystroke and leaves you in insert mode. This will help enormously in
+getting the syntax correct.
+
+Michael Barr
diff --git a/macros/latex209/contrib/misc/cites.sty b/macros/latex209/contrib/misc/cites.sty
new file mode 100644
index 0000000000..8e2ed5eacd
--- /dev/null
+++ b/macros/latex209/contrib/misc/cites.sty
@@ -0,0 +1,137 @@
+%
+% CITES (style option to DARTICLE) is an extracted and changed
+% part of the AIP style written by Charles Karney (Karney@PPC.MFEnet).
+% CITES DOCUMENT SUBSTYLE -- released 15 March 1988
+%
+% To use this give CITES as an optional argument to \documentstyle. The
+% main style should be DARTICLE. E.g.,
+% \documentstyle[12pt,german,cites]{darticle}
+
+% This provides
+% (1) Superscript reference numbers in citation and bibliography.
+% This is done by calling \numcite after \begin{document}.
+% You should put the references in the logically correct place, e.g.
+% "... as is given by Landau \cite{landau}. Next sentence ..."
+% \cite takes care of removing the preceding spaces and putting the
+% reference after the punctuation (e.g, "... Landau.$~7$ ...").
+
+% (2) Three or more consecutive reference numbers are represented as a
+% range. Thus 1,3,4,5,6,8,9 is printed as 1,3--6,8,9. No sorting is
+% performed; i.e., 1,3,2 is printed as such.
+% The cites style does this by default.
+
+% (3) \citenum and \citea give you more control over the appearance of
+% the citations. \citenum emits the plain citation number without
+% ornament as in "... as shown in Ref.~\citenum{foo}.". \citea puts
+% it's argument into the ornamentation for citations.
+% Thus \cite{foo} is equivalent to \citea{\citenum{foo}}.
+
+% (4) \bibnum{p} prints entries of the thebibliography environment in the
+% form #.
+% \bibnum{k} prints entries of the thebibliography environment in the
+% form [#]
+% \bibnum{h} prints entries of the thebibliography environment in the
+% form $^{#1}$
+% Default is \bibnum{k}.
+% If \numcite is used, \bibnum should appear after it.
+% G. Kruljac, MPI Stuttgart, kruljac@ds0mpi11, 13.03.89
+
+% CHANGES
+% 06.04.89 G. Kruljac, kruljac@ds0mpi11
+% - inserted commands \refincount and \@refincount to
+% offer a possibility for citation numbering inside
+% chapters, sections,...
+% Initially it is empty. The user can define it by i.e.
+% \refincount{\thechapter.} or \refincount{\thesubsection.}
+%
+% - corrections inside thebibliography for leftmargin
+% evaluations
+%
+%
+
+%\typeout{Document Substyle 'CITES'. Released 15 March 1988}
+\typeout{Document Substyle `CITES' modified by MPI FKF, Version 1.1, 06.04.89}
+
+% here we define the counter which should preceed the reference number
+\def\@refincount{}
+\def\refincount#1{\gdef\@refincount{#1}}
+
+% Superscript citations -- skip optional arg to \cite
+% Move citation after period and comma.
+\def\@cite#1#2{[{\@refincount#1\if@tempswa , #2\fi}]}
+
+\gdef\numcite{\bibnum{h}
+ \def\@cite##1##2{\unskip\nobreak\relax
+ \def\@tempa{$\m@th^{\hbox{\the\scriptfont0
+ \@refincount##1}}$}%
+ \futurelet\@tempc\@citexx}
+ \def\@citexx{\ifx.\@tempc\let\@tempd=\@citepunct\else
+ \ifx,\@tempc\let\@tempd=\@citepunct\else
+ \let\@tempd=\@tempa\fi\fi\@tempd}
+ \def\@citepunct{\@tempc%
+ \edef\@sf{\spacefactor=\the\spacefactor\relax}
+ \@tempa\@sf\@gobble}}
+
+\def\bibnumh{\hfil$\m@th^{\@refincount\arabic{enumi}}$}
+\def\bibnump{\hfil\@refincount\arabic{enumi}.}
+\def\bibnumk{\hfil[\@refincount\arabic{enumi}]}
+\def\bibnum#1{\if\string#1h \global\let\@bibnum=\bibnumh\else
+ \if\string#1k \global\let\@bibnum=\bibnumk\else
+ \if\string#1p \global\let\@bibnum=\bibnump\else
+ \global\let\@bibnum=\bibnumh%
+ \fi\fi\fi}
+\let\@bibnum=\bibnumk
+
+\def\thebibliography#1{\par%\clearpage%
+ \section*{\refname\@mkboth
+ {\uppercase{\refname}}{\uppercase{\refname}}}%
+ \list
+% {\@bibnum}{\settowidth\labelwidth{$\m@th{##1}$}
+ {\@bibnum}%
+ {\ifx\@bibnum\bibnumk%
+ \settowidth\labelwidth{[\@refincount#1]}
+ \else\ifx\@bibnum\bibnumh
+ \settowidth\labelwidth{$\m@th^{\@refincount#1}$}
+ \labelsep0pt\itemindent\labelwidth
+ \else\settowidth\labelwidth{\@refincount#1.}
+ \fi\fi
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \ifnum\itemindent=0\else\advance\itemindent-\leftmargin\fi
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
+
+% \citenum emits the plain citation number without ornament
+% \citea puts it's argument into the ornamentation for citations
+% thus \cite{foo} is equivalent to \citea{\citenum{foo}}
+\def\citenum#1{{\def\@cite##1##2{##1}\cite{#1}}}
+\def\citea#1{\@cite{#1}{}}
+
+% Collapse citation numbers to ranges. Non-numeric and undefined labels
+% are handled. No sorting is done. E.g., 1,3,2,3,4,5,foo,1,2,3,?,4,5
+% gives 1,3,2-5,foo,1-3,?,4,5
+\newcount\@tempcntc
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@ifundefined
+ {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}%
+ \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne
+ \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}%
+ \else
+ \advance\@tempcntb\@ne
+ \ifnum\@tempcntb=\@tempcntc
+ \else\advance\@tempcntb\m@ne\@citeo
+ \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}}
+\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else\@citea%
+ \def\@citea{,\@refincount}%
+ \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else
+ {\advance\@tempcnta\@ne%
+ \ifnum\@tempcnta=\@tempcntb
+ \else \def\@citea{--\@refincount}\fi
+ \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi}
+
+
diff --git a/macros/latex209/contrib/misc/colors.sty b/macros/latex209/contrib/misc/colors.sty
new file mode 100644
index 0000000000..47d5ce9a4b
--- /dev/null
+++ b/macros/latex209/contrib/misc/colors.sty
@@ -0,0 +1,89 @@
+%% Save file as: COLORS.STY Source: FILESERV@SHSU.BITNET
+%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+% Name:
+% colors.sty
+% Author: Fred Knight <knight@ll.mit.edu>
+% Purpose:
+% Implement grayscale or color selection from LaTeX for PostScript.
+% Works with black-and-white and color PostScript printers.
+% A rainbow of colors is defined by default; you can add any
+% color if you know its RGB values, e.g., from $OPENWINHOME/lib/rgb.txt.
+% NOTE: RGB.TXT is stored as STY.COLORS_RGB_TXT on FILESERV and is in the
+% [.STY] directory on Niord.SHSU.edu (192.92.115.8)
+%
+% Examples:
+%-----1.
+% \documentstyle[colors,...]{...}
+%
+% \begin{verse}
+% \psred Roses are red;\\
+% \psblue The sky is blue;\\
+% \psgreen Pickles are green;\\
+% \psorange Colors are new.\\ \psblack
+%
+% \red{Strawberries are red too;}\\
+% \violet{But violets are never blue;}\\
+% \end{verse}
+%-----2.
+% \documentstyle[colors,...]{...}
+%
+% \def\psLightGoldenrod{\pssetrgbcolor{0.93}{0.86}{0.51}}
+% \def\LightGoldenrod#1{\psgsave\psLightGoldenrod#1\psgrestore}
+% \LightGoldenrod{I like Light Goldenrod for a border color.}
+% I like \psLightGoldenrod Light Goldenrod\psblack for a border color.
+% Usage:
+% \ps<color> : changes to <color>,
+% : e.g., \psred red \psblue not blue
+% \<color>{text} : outputs text in <color>,
+% : e.g., \red{strawberries}
+%
+% \pssetgray{f} : changes color to shade of gray
+% : f = 0 (black) to 1 (white)
+% Restrictions:
+% Only for Postscript---black & white or color!
+% Only for dvi-to-ps driver that understands:
+% \special{ps:: <Postscript commands>}
+% Modification History:
+% write, 19 Oct 90, FKK
+% alter \psred, \psorange, etc.; make a bw rainbow, 13 Nov 90, FKK
+% omit pscolor and psbw booleans, 26 Jun 91, FKK
+% add macros with arguments (see usage), 26 Jun 91, FKK
+% remove \tan (conflicts with tangent) but keep \pstan, 15 Apr 92, FKK
+%-------------------------------------------------------------------
+%
+% =====>> BASIC ACCESS TO POSTSCRIPT COLORS
+%
+% =====>> Usage: \pssetrgbcolor{red}{green}{blue}
+% where: 0 < red < 1, etc.
+% =====>> Note: B&W ps printers understand setrgbcolor!
+%
+\def\pssetrgbcolor#1#2#3{\immediate\special{ps:: #1 #2 #3 setrgbcolor}}
+\def\pssetgray#1{\immediate\special{ps:: #1 setgray}}
+\def\psgsave{\immediate\special{ps:: gsave}}
+\def\psgrestore{\immediate\special{ps:: grestore}}
+%
+% =====>> COMMANDS DERIVED FROM \pssetrgbcolor AND \pssetgray
+% =====>> TWO TYPES: SET A NEW COLOR (NO ARGUMENT), e.g., \psred
+% =====>> COLOR AN ARGUMENT, e.g., \red{Roses are red;}
+%
+\def\psgray#1{\pssetgray{#1}}
+\def\psblack{\psgray{0}}
+\def\black#1{\psgsave\psblack#1\psgrestore}
+\def\psred{\pssetrgbcolor{1}{0}{0}}
+\def\red#1{\psgsave\psred#1\psgrestore}
+\def\psorange{\pssetrgbcolor{1}{.65}{0}}
+\def\orange#1{\psgsave\psorange#1\psgrestore}
+\def\psyellow{\pssetrgbcolor{1}{1}{0}}
+\def\yellow#1{\psgsave\psyellow#1\psgrestore}
+\def\psgreen{\pssetrgbcolor{0}{1}{0}}
+\def\green#1{\psgsave\psgreen#1\psgrestore}
+\def\psblue{\pssetrgbcolor{0}{0}{1}}
+\def\blue#1{\psgsave\psblue#1\psgrestore}
+\def\psviolet{\pssetrgbcolor{.72}{.33}{.83}}
+\def\violet#1{\psgsave\psviolet#1\psgrestore}
+\def\pstan{\pssetrgbcolor{.5}{.5}{.2}}
+%conflicts with tangent%\def\tan#1{\psgsave\pstan#1\psgrestore}
+\def\psbrown{\pssetrgbcolor{.5}{.3}{.3}}
+\def\brown#1{\psgsave\psbrown#1\psgrestore}
+\def\pswhite{\psgray{1}}
+\def\white#1{\psgsave\pswhite#1\psgrestore}
diff --git a/macros/latex209/contrib/misc/commtest.tex b/macros/latex209/contrib/misc/commtest.tex
new file mode 100644
index 0000000000..6eb0ce3d02
--- /dev/null
+++ b/macros/latex209/contrib/misc/commtest.tex
@@ -0,0 +1,56 @@
+% An illustration of comment.sty by Victor Eijkhout.
+% This file belongs to comment.sty version 3.0 or later,
+% it is both plain TeX and LaTeX compatible.
+
+\def\plainname{plain}
+\ifx\fmtname\plainname
+ \input comment.sty
+\else
+ \documentstyle[comment]{article}
+ \begin{document}
+\fi
+
+\includecomment{thisone}
+\excludecomment{notthisone}
+
+This sentence
+\comment
+has
+\endcomment
+no verb.
+
+Check for\notthisone
+superfluous
+\endnotthisone
+spaces, and
+\thisone
+inclusion
+\endthisone
+of proper texts.
+
+% a test of the special comments
+\newcount\comlines
+\specialcomment{countedcomment}
+ {\comlines=-1\relax %note that the rest of the first line is also comment
+ \def\ThisComment##1{\global\advance\comlines1\relax}}
+ {\endgraf **Comment: \number\comlines\ line(s) removed**\endgraf}
+
+This is a line of text
+\countedcomment
+Oneline
+\endcountedcomment
+another line of text
+\countedcomment
+One line
+Two line
+Three line
+\endcountedcomment
+last line of text
+
+\edef\byebye{
+\if\fmtname\plainname
+ \noexpand\csname bye\noexpand\endcsname
+\else
+ \noexpand\end{document}
+\fi}
+\byebye \ No newline at end of file
diff --git a/macros/latex209/contrib/misc/cprog.sty b/macros/latex209/contrib/misc/cprog.sty
new file mode 100644
index 0000000000..0fb80c6076
--- /dev/null
+++ b/macros/latex209/contrib/misc/cprog.sty
@@ -0,0 +1,230 @@
+% cprog.tex (or cprog.sty) - formatting of C programs
+% By \'Eamonn McManus <emcmanus@cs.tcd.ie>. This file is not copyrighted.
+% $Id: cprog.tex,v 1.4 90/09/12 23:21:26 emcmanus Exp $
+
+% This allows C programs to be formatted directly by TeX. It can be
+% invoked by \cprogfile{filename} or (in LaTeX) \begin{cprog} ...
+% \end{cprog} or (in plain TeX) \cprog ... \end{cprog}. In LaTeX, the
+% alternative form \begin{cprog*} is allowed, where spaces in C strings
+% are printed using the `square u' character (like LaTeX {verbatim*}).
+% In plain TeX, you have to use \csname cprog*\endcsname for this (sorry).
+% If you are using \cprogfile, say \cprogttspacetrue beforehand if you
+% want this effect.
+
+% The formatting is (necessarily) simple. C text is set in a normal Roman
+% font, comments in a slanted font, and strings in a typewriter font, with
+% spaces optionally made visible as the `square u' symbol. Tabs are
+% expanded to four spaces (this does not look good when comments are
+% aligned to the right of program text). Some pairs of input characters
+% appear as single output characters: << <= >> >= != -> are respectively
+% TeX's \ll \le \gg \ge \ne \rightarrow. Say \cprogpairsfalse to disable
+% this.
+
+% You can escape to TeX within cprog text by defining an escape character.
+% The character @ is suitable for C and Pascal. I have not tested other
+% characters so they may interact badly with their existing definitions here.
+% To define @ as the escape character, do \cprogescape@. Then within text
+% you can do @ followed by TeX commands. These commands will be in a TeX
+% group with the \catcodes of \{}% as normal. The commands are terminated
+% by a newline, which is not considered part of the program text.
+
+% The fonts below can be changed to alter the setting of the various parts
+% of the program. The \cprogbaselineskip parameter can be altered to
+% change the line spacing. LaTeX's \baselinestretch is taken into account
+% too. The indentation applied to the whole program is \cprogindent,
+% initially 0. Before and after the program there are skips of
+% \beforecprogskip and \aftercprogskip; the default values are \parskip
+% and 0 respectively (since there will often be a \parskip after the
+% program anyway).
+
+% If the source text is Pascal or Modula-2, say \pascaltrue or \modulatrue
+% (respectively) before formatting it. This makes (* *) be recognised for
+% comments instead of /* */. Braces {} are also recognised for Pascal.
+% \pascalfalse or \modulafalse as appropriate restores the default of C.
+
+% This package works by making a large number of characters active. Since
+% even spaces are active, it is possible to examine the next character in
+% a macro by making it a parameter, rather than using \futurelet as one
+% would normally do. This is more convenient, but the coding does mean
+% that if the next character itself wants to examine a character it may
+% look at a token from the macro rather than the input text. I think that
+% all cases that occur in practice have been looked after.
+
+% The macros could still do with some work. For example, the big macro
+% defined with [] taking the place of {} could be recoded to use {} and so
+% be more legible. The internal macros etc should have @ in their names,
+% and should be checked against LaTeX macros for clashes.
+
+% Allow multiple inclusion to go faster.
+
+\ifx\undefined\cprogsetup % The whole file.
+
+% Define the fonts used for program text, comments, and strings.
+% Note that if \it is used for \ccommentfont, something will need to
+% be done about $ signs, which come out as pounds sterling.
+\let\ctextfont=\rm \let\ccommentfont=\sl \let\cstringfont=\tt
+
+% Parameters. Unfortunately \newdimen is \outer (\outerness is a mistake)
+% so we need a subterfuge in case we are skipping the file.
+\csname newdimen\endcsname\cprogbaselineskip \cprogbaselineskip=\baselineskip
+\csname newdimen\endcsname\cprogindent \cprogindent=0pt
+\csname newdimen\endcsname\cprogwidth % Gets default=\hsize when cprog invoked.
+\csname newskip\endcsname\beforecprogskip \beforecprogskip=\parskip
+\csname newskip\endcsname\aftercprogskip \aftercprogskip=0pt
+\csname newif\endcsname\ifcprogttspace
+\csname newif\endcsname\ifcprogpairs \cprogpairstrue
+\csname newif\endcsname\ifpascal
+\csname newif\endcsname\ifmodula % Same as Pascal but no {comments}.
+{\def\junk{\fi\fi\fi\fi}} % If skipping.
+
+\let\cprogesc\relax
+\begingroup \catcode`~=\active
+\gdef\cprogescape#1{%
+ {\catcode`~=\active \uccode`~=`#1 \aftergroup\cprogescont
+ \uppercase{\aftergroup~}}}
+\gdef\cprogescont#1{%
+ \def\cprogesc{%
+ \makeactive#1\def#1{%
+ \begingroup \catcode`\\0 \catcode`{1 \catcode`}2 \catcode`\%14
+ \catcode` 10 \clinegroup{}}}}
+\endgroup
+
+\def\makeactive#1{\catcode`#1=\active} \def\makeother#1{\catcode`#1=12}
+{\obeyspaces\gdef\activespace{ } \obeylines\gdef\activecr{^^M}}
+{\catcode`|=\catcode`\\ \makeactive\\ |gdef|activebackslash{\}}
+{\catcode9=\active \gdef\activetab{^^I}}
+
+% The following group makes many characters active, so that their catcodes
+% in the \cprogchars macro are active, allowing them to be defined. We
+% could alternatively define more stuff like \activebackslash and use
+% \expandafter or (carefully) \edef to expand these in the macro.
+\begingroup
+\catcode`[=\catcode`{ \catcode`]=\catcode`}
+\makeactive! \makeactive" \makeactive' \makeactive( \makeactive* \makeactive-
+\makeactive/ \makeactive< \makeactive> \makeactive? \makeactive^ \makeactive_
+\makeactive\{ \makeactive| \makeactive\}
+\gdef\activestar[*]
+\gdef\cprogchars[%
+ \makeother##\makeother$\makeother&\makeother\%\makeother^%
+ \makeactive"\makeactive'\makeactive*\makeactive?\makeactive{\makeactive}%
+ \makeactive}\makeactive\\\makeactive_\expandafter\makeactive\activetab%
+ \makeactive!\makeactive<\makeactive>\makeactive-\makeactive|%
+ \ifcprogpairs
+ \def!##1[\ifx=##1$\ne$\else\string!\null##1\fi]%
+ \def-##1[\ifx>##1$\rightarrow$\else$\string-$##1\fi]%
+ % We use \aftergroup in < and > to deal with the fact that #1 might
+ % itself examine the following character.
+ \def<##1[[$\ifx<##1\ll$\else\ifx=##1\le$\else
+ \ifx>##1\ifpascal\ne$\else\string<$\aftergroup>\fi
+ \else \string<$\aftergroup##1\fi\fi\fi]]%
+ \def>##1[[$\ifx>##1\gg$\else\ifx=##1\ge$\else
+ \string>$\aftergroup##1\fi\fi]]%
+ \else \def![\string!\null]% Avoid !` ligature.
+ \def-[$\string-$]\def<[$\string<$]\def>[$\string>$]%
+ \fi
+ \def?[\string?\null]% Avoid ?` ligature.
+ \def"[\cquote"[\tt\string"]]\def'[\cquote'[\tt\ttquote]]\def*[$\string*$]%
+ \ifmodula \pascaltrue \fi % Except that {...} is used for sets.
+ \ifpascal
+ \ifmodula \dulllbrace \else
+ \def{[\begingroup \dulllbrace{\ccommentsetup\def}[\/\endgroup }]]%
+ \fi \makeactive(\let(=\pascalcomment \makeactive^\def^[$\uparrow$]%
+ \else \dulllbrace\makeactive/\let/=\ccomment
+ \fi
+ \def}[$\}$]\def|[$\string|$]\def~[$\sim$]\let_\_%
+ \expandafter\def\activebackslash[$\backslash$]%
+ \obeyspaces \expandafter\def\activespace[\leavevmode\space]%
+ \expandafter\def\activetab[\ \ \ \ ]%
+ \obeylines \expandafter\def\activecr[\strut\par]]
+\gdef\cprogarg[\expandafter\def\activebackslash##1[\ifx##1e\let\next\cprogend
+ \else$\backslash$\let\next##1\fi\next]\eatcr]
+\gdef\cprogend nd#1{cprog#2}[\endcprogarg] % #1 can be space, #2 *.
+\gdef\dulllbrace[\def{[$\{$]]
+\endgroup
+
+\chardef\ttquote=13 % Undirected single quote.
+\begingroup \makeactive" \makeactive' \makeactive!
+\gdef\cquote#1#2{% #1 is the quote, " or ', #2 how to set it.
+ \begingroup #2\cstringfont \makeactive\\%
+ \ifpascal \makeother\\\makeother^%
+ \else \expandafter\let\activebackslash\quotebackslash
+ \fi
+ \expandafter\edef\activespace{\ifcprogttspace\char`\ \else\ \fi}%
+ \expandafter\let\activecr=\unclosedstring
+ \def!{\string!\null}% No !` ligature.
+ \makeother*\makeother-\makeother/\makeother<\makeother>%
+ \makeother_\makeother\{\makeother\}\makeother|\makeother~%
+ \ifx"#1\let'\ttquote \else \makeother"\fi
+ \def#1{#2\endgroup}}
+\endgroup
+\csname newhelp\endcsname\cprogunclosedstr{%
+A string or character constant earlier in the line was unclosed.^^JSo
+I'm closing it now.}
+\def\unclosedstring{%
+ \escapechar-1%
+ \errhelp\cprogunclosedstr
+ \errmessage{Unclosed string}%
+ \endgroup}
+\newlinechar=`^^J
+\def\quotebackslash#1{\char`\\%
+ \expandafter\ifx\activecr#1\strut\par
+ \else\if'\noexpand#1\ttquote\else\string#1\fi\fi}
+
+% In a comment, we shrink the width of the opening / to that of a space so
+% that the stars in multiline comments will line up. We also shrink the
+% closing * for symmetry, but not in Pascal where it looks nasty.
+% Note that \end{cprog} is not recognised in strings or comments.
+\def\spacebox#1{\leavevmode \hbox to \spaceskip{#1\hss}}
+
+\begingroup \makeactive* \makeactive! \makeother/
+\gdef\ccommentsetup{\ccommentfont \makeother-\makeother'\makeother"\makeother/%
+ \def!{\string!\null}\expandafter\def\activebackslash{$\backslash$}}
+\gdef\ccomment#1{%
+ \let\next\relax
+ \ifx#1*\bgroup \ccommentsetup
+ \spacebox{\ctextfont\string/}*%
+ \makeactive*\def*{\commentstar/}%
+ \else\if\noexpand#1/\begingroup //\ccommentsetup \clinegroup\activecr
+ \else \string/\let\next#1%
+ \fi\fi\next}
+\gdef\pascalcomment#1{%
+ \ifx#1*\bgroup \ccommentsetup \let\next\dulllbrace \makeother(%
+ \spacebox{\ctextfont\string(}*\makeactive*\def*{\commentstar)}%
+ \else (\let\next#1\fi \next}
+\obeylines \long\gdef\clinegroup#1#2^^M{#2\endgroup#1}%
+\endgroup
+\def\commentstar#1#2{%
+ {\if#1\noexpand#2\egroup \ifpascal\else\aftergroup\spacebox\fi\fi}{$*$}#2}
+
+% We usually have an active ^^M after \cprog or \begin{cprog}.
+\def\eatcr#1{{\expandafter\ifx\activecr#1\else\aftergroup#1\fi}}
+
+% Expand to stretch and shrink (plus and minus) of parameter #1.
+\def\stretchshrink#1{\expandafter\eatdimenpart\the#1 \end}
+\def\eatdimenpart#1 #2\end{#2}
+
+\ifx\undefined\baselinestretch \def\baselinestretch{1}\fi
+
+\def\cprogsetup{\ctextfont \cprogchars \parskip=0pt\stretchshrink\parskip
+ \ifdim \cprogwidth=0pt \else \hsize\cprogwidth \fi
+ \cprogesc \spaceskip\fontdimen2\font \xspaceskip\spaceskip
+ \baselineskip=\baselinestretch\cprogbaselineskip \parindent=\cprogindent
+ \vskip\beforecprogskip}
+\def\endcprog{\endgroup \vskip\aftercprogskip}
+\def\cprogfile#1{\begingroup \cprogsetup \input#1\endcprog}
+\def\cprog{\begingroup \cprogttspacefalse \cprogsetup \cprogarg}
+% Like {verbatim*}, {cprog*} uses `square u' for spaces in quoted strings.
+\expandafter\def\csname cprog*\endcsname{%
+ \begingroup \cprogttspacetrue \cprogsetup \cprogarg}
+\expandafter\let\csname endcprog*\endcsname=\endcprog
+% In LaTeX we need to call \end{cprog} properly to close the environment,
+% whereas in plain TeX this will end the job. The test for LaTeX is not
+% bulletproof, but most plain TeX documents don't refer to the LaTeX logo.
+\ifx\undefined\LaTeX \let\endcprogarg=\endcprog
+\else \def\endcprogarg{\ifcprogttspace\end{cprog*}\else\end{cprog}\fi}
+\fi
+
+\fi % \ifx\undefined\cprogsetup
+
+\endinput
+
diff --git a/macros/latex209/contrib/misc/cup.sty b/macros/latex209/contrib/misc/cup.sty
new file mode 100644
index 0000000000..ab53a7f491
--- /dev/null
+++ b/macros/latex209/contrib/misc/cup.sty
@@ -0,0 +1,1053 @@
+% SVLNCS DOCUMENT STYLE -- Released 23 march 1989
+% by Marc Shapiro shapiro@sor.inria.fr
+% Adapted from ARTICLE.STY and ART12.STY released 4 September 1986
+% for LaTeX version 2.09, Copyright (C) 1986 by Leslie Lamport
+
+% Use like this:
+% \documentsyle{svlncs} % no options
+% \begin{document}
+% \title{The Story of my Life} % Capitalized
+% \author{F. Bar\and L. User} % no space before \and
+% \affiliation{The University of Nowhere}
+% \maketitle
+% \begin{abstract}
+% ...
+% \end{abstract}
+% \section{INTRODUCTION} % SECTION TITLES IN UPPER CASE
+% ...
+% \subsection{This is an Interesting Subsection} % Capitalized
+% ...
+% \subsubsection{Proof 1} % \subsubsection for proofs only,
+% ... % in math works only !
+% \bibliography{...} % no \bibliographystyle !
+% \end{document}
+% Uses the `paren' bibliography style. If you don't have it, retrieve file
+% btxbst.doc from the latex-style repository; it tells you how to
+% build paren.bst
+
+\typeout{Document Style SVLNCS, for conference proceedings printed in
+`Springer-Verlag Lecture Notes in Computer Science'}
+
+
+% PREPARING A FOREIGN LANGUAGE VERSION:
+% (shapiro@inria 18-jan-88)
+%
+% This document style is for documents prepared in the English language.
+% To prepare a version for another language, various English words must
+% be replaced. To do so, just change the definition of the following
+% macros (may be done in an option file):
+% \contentsname
+% \listfigurename
+% \listtablename
+% \indexname
+% \refname
+% \figurename
+% \figuresepname
+% \tablename
+% also change the definition of \today
+% also change titlepage.sty
+% for French, add \frenchspacing
+
+% Only one type size: 12 pt
+\def\@ptsize{2}
+
+% Two-side or one-side printing.
+%
+% \@twosidefalse % Default is one-sided printing.
+\def\ds@twoside{\@twosidetrue % Defines twoside option.
+ \@mparswitchtrue} % Marginpars go on outside of page.
+% draft option
+%
+% \overfullrule = 0pt % Default is don't mark overfull hboxes.
+\def\ds@draft{\overfullrule 5pt} % Causes overfull hboxes to be marked.
+
+% The \@options command causes the execution of every command \ds@FOO
+% which is defined and for which the user typed the FOO option in his
+% \documentstyle command. For every option BAR he typed for which
+% \ds@BAR is not defined, the file BAR.sty will be read after the present
+% (main) .STY file is executed.
+
+\@options
+
+% ****************************************
+% * FONTS *
+% ****************************************
+%
+
+\lineskip 1pt % \lineskip is 1pt for all font sizes.
+\normallineskip 1pt
+\def\baselinestretch{1}
+
+% Each size-changing command \SIZE executes the command
+% \@setsize\SIZE{BASELINESKIP}\FONTSIZE\@FONTSIZE
+% where:
+% BASELINESKIP = Normal value of \baselineskip for that size. (Actual
+% value will be \baselinestretch * BASELINESKIP.)
+%
+% \FONTSIZE = Name of font-size command. The currently available
+% (preloaded) font sizes are: \vpt (5pt), \vipt (6pt),
+% \viipt (etc.), \viiipt, \ixpt, \xpt, \xipt, \xiipt,
+% \xivpt, \xviipt, \xxpt, \xxvpt.
+% \@FONTSIZE = The same as the font-size command except with an
+% '@' in front---e.g., if \FONTSIZE = \xivpt then
+% \@FONTSIZE = \@xivpt.
+%
+% For reasons of efficiency that needn't concern the designer,
+% the document style defines \@normalsize instead of \normalsize . This is
+% done only for \normalsize, not for any other size-changing commands.
+
+\def\@normalsize{\@setsize\normalsize{14.5pt}\xiipt\@xiipt
+\abovedisplayskip 12pt plus3pt minus7pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt%
+\belowdisplayshortskip 6.5pt plus3.5pt minus3pt}
+
+\def\small{\@setsize\small{13.6pt}\xipt\@xipt
+\abovedisplayskip 11pt plus3pt minus6pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt%
+\belowdisplayshortskip 6.5pt plus3.5pt minus3pt
+\def\@listi{\parsep 4.5pt plus 2pt minus 1pt
+ \itemsep \parsep
+ \topsep 9pt plus 3pt minus 5pt}}
+
+\def\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt
+\abovedisplayskip 10pt plus2pt minus5pt%
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt%
+\belowdisplayshortskip 6pt plus3pt minus3pt
+\def\@listi{\topsep 6pt plus 2pt minus 2pt\parsep 3pt plus 2pt minus 1pt
+\itemsep \parsep}}
+
+\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{18pt}\xivpt\@xivpt}
+\def\Large{\@setsize\Large{22pt}\xviipt\@xviipt}
+\def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
+\def\huge{\@setsize\huge{30pt}\xxvpt\@xxvpt}
+\let\Huge=\huge
+
+\normalsize % Choose the normalsize font.
+
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+%
+% All margin dimensions measured from a point one inch from top and side
+% of page.
+
+% SIDE MARGINS:
+\oddsidemargin 0.2 cm % Note that \oddsidemargin = \evensidemargin
+\evensidemargin 0.2 cm
+\marginparwidth 2cm
+\marginparsep 10pt % Horizontal space between outer margin and
+ % marginal note
+
+
+% VERTICAL SPACING:
+ % Top of page:
+\topmargin -68pt % Nominal distance from top of page to top of
+ % box containing running head.
+\headheight 12pt % Height of box containing running head.
+\headsep 25pt % Space between running head and text.
+% \topskip = 10pt % '\baselineskip' for first line of page.
+ % Bottom of page:
+\footheight 12pt % Height of box containing running foot.
+\footskip 75pt % Distance from baseline of box containing foot
+ % to baseline of last line of text.
+
+% DIMENSION OF TEXT:
+% \textheight is the height of text (including footnotes and figures,
+% excluding running head and foot).
+
+\textheight = 23.5cm
+\advance\textheight by \topskip
+\textwidth 15.6cm % Width of text line.
+ % For two-column mode:
+\columnsep 10pt % Space between columns
+\columnseprule 0pt % Width of rule between columns.
+
+% A \raggedbottom command causes 'ragged bottom' pages: pages set to
+% natural height instead of being stretched to exactly \textheight.
+
+% FOOTNOTES:
+
+\footnotesep 8.4pt % Height of strut placed at the beginning of every
+ % footnote = height of normal \footnotesize strut,
+ % so no extra space between footnotes.
+
+\skip\footins 10.8pt plus 4pt minus 2pt % Space between last line of text and
+ % top of first footnote.
+
+% FLOATS: (a float is something like a figure or table)
+%
+% FOR FLOATS ON A TEXT PAGE:
+%
+% ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE:
+\floatsep 14pt plus 2pt minus 4pt % Space between adjacent floats moved
+ % to top or bottom of text page.
+\textfloatsep 20pt plus 2pt minus 4pt % Space between main text and floats
+ % at top or bottom of page.
+\intextsep 14pt plus 4pt minus 4pt % Space between in-text figures and
+ % text.
+\@maxsep 20pt % The maximum of \floatsep,
+ % \textfloatsep and \intextsep (minus
+ % the stretch and shrink).
+% TWO-COLUMN FLOATS IN TWO-COLUMN MODE:
+\dblfloatsep 14pt plus 2pt minus 4pt % Same as \floatsep for double-column
+ % figures in two-column mode.
+\dbltextfloatsep 20pt plus 2pt minus 4pt % \textfloatsep for double-column
+ % floats.
+\@dblmaxsep 20pt % The maximum of \dblfloatsep and
+ % \dbltexfloatsep.
+
+% FOR FLOATS ON A SEPARATE FLOAT PAGE OR COLUMN:
+% ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE:
+\@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be
+ % 0pt plus ...)
+\@fpsep 10pt plus 2fil % Space between floats on float page/column.
+\@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be
+ % 0pt plus ... )
+
+% DOUBLE-COLUMN FLOATS IN TWO-COLUMN MODE.
+\@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...)
+\@dblfpsep 10pt plus 2fil % Space between floats on float page.
+\@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be
+ % 0pt plus ... )
+% MARGINAL NOTES:
+%
+\marginparpush 7pt % Minimum vertical separation between two marginal
+ % notes.
+
+
+% ****************************************
+% * PARAGRAPHING *
+% ****************************************
+%
+\parskip=2.5ex plus 1pt minus 1pt % Extra vertical space between paragraphs.
+\parindent 0em % Width of paragraph indentation.
+\topsep 10pt plus 4pt minus 6pt % Extra vertical space, in addition to
+ % \parskip, added above and below list and
+ % paragraphing environments.
+\partopsep 3pt plus 2pt minus 2pt % Extra vertical space, in addition to
+ % \parskip and \topsep, added when user
+ % leaves blank line before environment.
+\itemsep 5pt plus 2.5pt minus 1pt % Extra vertical space, in addition to
+ % \parskip, added between list items.
+
+% The following page-breaking penalties are defined
+
+\@lowpenalty 51 % Produced by \nopagebreak[1] or \nolinebreak[1]
+\@medpenalty 151 % Produced by \nopagebreak[2] or \nolinebreak[2]
+\@highpenalty 301 % Produced by \nopagebreak[3] or \nolinebreak[3]
+
+\@beginparpenalty -\@lowpenalty % Before a list or paragraph environment.
+\@endparpenalty -\@lowpenalty % After a list or paragraph environment.
+\@itempenalty -\@lowpenalty % Between list items.
+
+% \clubpenalty % 'Club line' at bottom of page.
+% \widowpenalty % 'Widow line' at top of page.
+% \displaywidowpenalty % Math display widow line.
+% \predisplaypenalty % Breaking before a math display.
+% \postdisplaypenalty % Breaking after a math display.
+% \interlinepenalty % Breaking at a line within a paragraph.
+% \brokenpenalty % Breaking after a hyphenated line.
+
+
+% ****************************************
+% * SECTIONS *
+% ****************************************
+%
+
+% \secdef{UNSTARCMDS}{STARCMDS} :
+% When defining a sectionioning command without using
+% \@startsection, you can use \secdef as follows:
+% \def\part { ... \secdef \CMDA \CMDB }
+% \def\CMDA [#1]#2{ ... } % Command to define \part[...]{...}
+% \def\CMDB #1{ ... } % Command to define \part*{...}
+
+% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}
+% optional * [ALTHEADING]{HEADING}
+% Generic command to start a section.
+% NAME : e.g., 'subsection'
+% LEVEL : a number, denoting depth of section -- e.g., section=1,
+% subsection = 2, etc. A section number will be printed if
+% and only if LEVEL < or = the value of the secnumdepth
+% counter.
+% INDENT : Indentation of heading from left margin
+% BEFORESKIP : Absolute value = skip to leave above the heading.
+% If negative, then paragraph indent of text following
+% heading is suppressed.
+% AFTERSKIP : if positive, then skip to leave below heading,
+% else - skip to leave to right of run-in heading.
+% STYLE : commands to set style
+% If '*' missing, then increments the counter. If it is present, then
+% there should be no [ALTHEADING] argument. A sectioning command
+% is normally defined to \@startsection + its first six arguments.
+
+\def\section{\@startsection {section}{1}{\z@}{-2.5ex plus -1ex minus
+ -.2ex}{1pt plus 1pt}{\large\bf}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-2.25ex plus -1ex minus
+ -.2ex}{1pt plus 1pt}{\large\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.25ex plus
+ 1ex minus .2ex}{-1em}{\normalsize\it}}
+
+% Default initializations of \...mark commands. (See below for their
+% us in defining page styles.
+%
+
+% \def\sectionmark#1{} % Preloaded definitions
+% \def\subsectionmark#1{}
+% \def\subsubsectionmark#1{}
+% \def\paragraphmark#1{}
+% \def\subparagraphmark#1{}
+
+% The value of the counter secnumdepth gives the depth of the
+% highest-level sectioning command that is to produce section numbers.
+%
+
+\setcounter{secnumdepth}{2}
+
+% APPENDIX
+%
+% The \appendix command must do the following:
+% -- reset the section and subsection counters to zero
+% -- redefine the section counter to produce appendix numbers
+% -- redefine the \section command if appendix titles and headings are
+% to look different from section titles and headings.
+
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\thesection{\Alph{section}}}
+
+
+% ****************************************
+% * LISTS *
+% ****************************************
+%
+
+% The following commands are used to set the default values for the list
+% environment's parameters. See the LaTeX manual for an explanation of
+% the meanings of the parameters. Defaults for the list environment are
+% set as follows. First, \rightmargin, \listparindent and \itemindent
+% are set to 0pt. Then, for a Kth level list, the command \@listK is
+% called, where 'K' denotes 'i', 'ii', ... , 'vi'. (I.e., \@listiii is
+% called for a third-level list.) By convention, \@listK should set
+% \leftmargin to \leftmarginK.
+%
+% For efficiency, level-one list's values are defined at top level, and
+% \@listi is defined to set only \leftmargin.
+
+\leftmargini 2.5em
+\leftmarginii 2.2em % > \labelsep + width of '(m)'
+\leftmarginiii 1.87em % > \labelsep + width of 'vii.'
+\leftmarginiv 1.7em % > \labelsep + width of 'M.'
+\leftmarginv 1em
+\leftmarginvi 1em
+
+\leftmargin\leftmargini
+\labelsep .5em
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+\parsep 5pt plus 2.5pt minus 1pt
+
+\def\@listi{\leftmargin\leftmargini}
+
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 5pt plus 2.5pt minus 1pt
+ \parsep 2.5pt plus 1pt minus 1pt
+ \itemsep \parsep}
+
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 2.5pt plus 1pt minus 1pt
+ \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
+ \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}
+
+
+
+
+% ****************************************
+% * LISTS *
+% ****************************************
+%
+
+% ENUMERATE
+% Enumeration is done with four counters: enumi, enumii, enumiii
+% and enumiv, where enumN controls the numbering of the Nth level
+% enumeration. The label is generated by the commands \labelenumi
+% ... \labelenumiv. The expansion of \p@enumN\theenumN defines the
+% output of a \ref command.
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+% ITEMIZE
+% Itemization is controlled by four commands: \labelitemi, \labelitemii,
+% \labelitemiii, and \labelitemiv, which define the labels of the various
+% itemization levels.
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+
+% VERSE
+% The verse environment is defined by making clever use of the
+% list environment's parameters. The user types \\ to end a line.
+% This is implemented by \let'in \\ equal \@centercr.
+%
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+
+% QUOTATION
+% Fills lines
+% Indents paragraph
+%
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+
+% QUOTE -- same as quotation except no paragraph indentation,
+%
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+% DESCRIPTION
+%
+% To change the formatting of the label, you must redefine
+% \descriptionlabel.
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+
+\let\enddescription\endlist
+
+%\newdimen\descriptionmargin
+%\descriptionmargin=3em
+
+% ****************************************
+% * OTHER ENVIRONMENTS *
+% ****************************************
+%
+%
+% THEOREM
+% \@begintheorem ... \@endtheorem are the commands executed at the
+% beginning and end of a (user-defined) theorem-like environment.
+% Except \@opargbegintheorem is executed when an optional argument is
+% given. Cf. LATEX.TEX.
+%
+% \def\@begintheorem#1#2{\it \trivlist \item[\hskip \labelsep{\bf #1\ #2}]}
+% \def\@opargbegintheorem#1#2#3{\it \trivlist
+% \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]}
+% \def\@endtheorem{\endtrivlist}
+
+
+% EQUATION and EQNARRAY
+%
+% \newcounter{equation}
+% Default is for left-hand side of equations to be flushleft.
+% To make them flushright, do:
+% \let\@eqnsel = \hfil
+%
+
+\def\theequation{\arabic{equation}}
+
+% \jot = 3pt % Extra space added between lines of an eqnarray environment
+
+% The macro \@eqnnum defines how equation numbers are to appear in equations.
+%
+% \def\@eqnnum{(\theequation)}
+%
+
+% TITLEPAGE
+% In the normal environments, the titlepage environment does nothing but
+% start and end a page, and inhibit page numbers. It also resets the
+% page number to zero.
+%
+
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+% ARRAY AND TABULAR
+%
+
+\arraycolsep 5pt % Half the space between columns in an array environment.
+\tabcolsep 6pt % Half the space between columns in a tabular environment.
+\arrayrulewidth .4pt % Width of rules in array and tabular environment.
+\doublerulesep 2pt % Space between adjacent rules in array or tabular env.
+
+% TABBING
+%
+\tabbingsep \labelsep % Space used by the \' command. (See LaTeX manual.)
+
+% MINIPAGE
+% \@minipagerestore is called upon entry to a minipage environment to
+% set up things that are to be handled differently inside a minipage
+% environment. In the current styles, it does nothing.
+
+% \skip\@mpfootins : plays same role for footnotes in a minipage as
+% \skip\footins does for ordinary footnotes
+
+\skip\@mpfootins = \skip\footins
+
+% FRAMEBOX
+%
+\fboxsep = 3pt % Space left between box and text by \fbox and \framebox.
+\fboxrule = .4pt % Width of rules in box made by \fbox and \framebox.
+
+
+% ****************************************
+% * SECTIONS *
+% ****************************************
+%
+% DEFINE COUNTERS:
+%
+% \newcounter{NEWCTR}[OLDCTR] : Defines NEWCTR to be a counter, which is
+% reset to zero when counter OLDCTR is stepped.
+% Counter OLDCTR must already be defined.
+
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+
+% For any counter CTR, \theCTR is a macro that defines the printed version
+% of counter CTR. It is defined in terms of the following macros:
+%
+% \arabic{COUNTER} : The value of COUNTER printed as an arabic numeral.
+% \roman{COUNTER} : Its value printed as a lower-case roman numberal.
+% \Roman{COUNTER} : Its value printed as an upper-case roman numberal.
+% \alph{COUNTER} : Value of COUNTER printed as a lower-case letter:
+% 1 = a, 2 = b, etc.
+% \Alph{COUNTER} : Value of COUNTER printed as an upper-case letter:
+% 1 = A, 2 = B, etc.
+%
+
+\def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+
+
+% ****************************************
+% * TABLE OF CONTENTS, ETC. *
+% ****************************************
+%
+% A \subsection command writes a
+% \contentsline{subsection}{TITLE}{PAGE}
+% command on the .toc file, where TITLE contains the contents of the
+% entry and PAGE is the page number. If subsections are being numbered,
+% then TITLE will be of the form
+% \numberline{NUM}{HEADING}
+% where NUM is the number produced by \thesubsection. Other sectioning
+% commands work similarly.
+%
+% A \caption command in a 'figure' environment writes
+% \contentsline{figure}{\numberline{NUM}{CAPTION}}{PAGE}
+% on the .lof file, where NUM is the number produced by \thefigure and
+% CAPTION is the figure caption. It works similarly for a 'table' environment.
+%
+% The command \contentsline{NAME} expands to \l@NAME. So, to specify
+% the table of contents, we must define \l@section,
+% \l@subsection, ... ; to specify the list of figures, we must define
+% \l@figure; and so on. Most of these can be defined with the
+% \@dottedtocline command, which works as follows.
+%
+% \@dottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE}
+% LEVEL : An entry is produced only if LEVEL < or = value of
+% 'tocdepth' counter. Note that \section is level 1,
+% \subsection is level 2, etc.
+% INDENT : The indentation from the outer left margin of the start of
+% the contents line.
+% NUMWIDTH : The width of a box in which the section number is to go,
+% if TITLE includes a \numberline command.
+%
+% This command uses the following three parameters, which are set
+% with a \def (so em's can be used to make them depend upon the font).
+% \@pnumwidth : The width of a box in which the page number is put.
+% \@tocrmarg : The right margin for multiple line entries. One
+% wants \@tocrmarg > or = \@pnumwidth
+% \@dotsep : Separation between dots, in mu units. Should be \def'd to
+% a number like 2 or 1.7
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+
+% TABLEOFCONTENTS
+%
+% ++++ Multilingual (shapiro@inria 19-jan-88)
+\def\contentsname{Contents}
+\def\tableofcontents{\section*{\contentsname\@mkboth{\uppercase
+ {\contentsname}}{\uppercase{\contentsname}}}
+ \@starttoc{toc}}
+
+\def\l@part#1#2{\addpenalty{\@secpenalty}
+ \addvspace{2.25em plus 1pt} % space above part line
+ \begingroup
+ \@tempdima 3em % width of box holding part number, used by
+ \parindent \z@ \rightskip \@pnumwidth %% \numberline
+ \parfillskip -\@pnumwidth
+ {\large \bf % set line in \large boldface
+ \leavevmode % TeX command to enter horizontal mode.
+ #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+ \nobreak % Never break after part entry
+ \endgroup}
+
+\def\l@section#1#2{\addpenalty{\@secpenalty} % good place for page break
+ \addvspace{1.0em plus 1pt} % space above toc entry
+ \@tempdima 1.5em % width of box holding section number
+ \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf % Boldface.
+ \leavevmode % TeX command to enter horizontal mode.
+ #1\hfil \hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+
+\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}}
+
+% LIST OF FIGURES
+%
+% ++++ Multilingual (shapiro@inria 19-jan-88)
+\def\listfigurename{List of Figures}
+\def\listoffigures{\section*{\listfigurename\@mkboth
+ {\uppercase{\listfigurename}}{LISTE DES FIGURES\uppercase
+ {\listfigurename}}}\@starttoc{lof}}
+
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+
+% LIST OF TABLES
+%
+% ++++ Multilingual (shapiro@inria 19-jan-88)
+\def\listtablename{List of Tables}
+\def\listoftables{\section*{\listtablename\@mkboth
+ {\uppercase{\listtablename}}{\uppercase{\listtablename}}}\@starttoc{lot}}
+\let\l@table\l@figure
+
+
+
+% ****************************************
+% * BIBLIOGRAPHY *
+% ****************************************
+%
+% The thebibliography environment executes the following commands:
+%
+% \def\newblock{\hskip .11em plus .33em minus -.07em} --
+% Defines the `closed' format, where the blocks (major units of
+% information) of an entry run together.
+%
+% \sloppy -- Used because it's rather hard to do line breaks in
+% bibliographies,
+%
+% \sfcode`\.=1000\relax --
+% Causes a `.' (period) not toproduce an end-of-sentence space.
+% ++++ Multilingual (shapiro@inria 19-jan-88)
+\def\refname{References}
+\def\thebibliography#1{\section*{\refname\@mkboth
+ {\uppercase{\refname}}{\uppercase{\refname}}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+
+\let\endthebibliography=\endlist
+
+\def\@biblabel#1{#1\hfill} % Produces the label for a \bibitem[...]
+ % command.
+\def\@cite#1{#1} % Produces the output of the \cite command.
+
+% extra space produced between multiple citations, e.g.
+% \cite{foo87,bar88} --> Foo (1987), Bar (1988a)
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{, \penalty\@m}\@ifundefined
+ {b@\@citeb}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+\hbox{\csname b@\@citeb\endcsname}}}{#1}}
+
+% \bibliographystyle{paren} % Foo (1987), Foo and Bar (1988) style
+\immediate\write\@auxout{\string\bibstyle{paren}}
+
+% ****************************************
+% * THE INDEX *
+% ****************************************
+%
+% THE THEINDEX ENVIRONMENT
+% Produces double column format, with each paragraph a separate entry.
+% The user commands \item, \subitem and \subsubitem are used to
+% produce the entries, and \indexspace adds an extra vertical space
+% that's the right size to put above the first entry with a new letter
+% of the alphabet.
+
+\newif\if@restonecol
+
+% ++++ Multilingual (shapiro@inria 22-jan-88)
+\def\indexname{Index}
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{\indexname}]
+ \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}\thispagestyle
+ {plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+
+\def\@idxitem{\par\hangindent 40pt}
+
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+
+% ****************************************
+% * FOOTNOTES *
+% ****************************************
+%
+% \footnoterule is a macro to draw the rule separating the footnotes from
+% the text. It should take zero vertical space, so it needs a negative
+% skip to compensate for any positive space taken by the rule. (See
+% PLAIN.TEX.)
+
+\def\footnoterule{\kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@} % The \hrule has default height of .4pt .
+
+% \newcounter{footnote}
+
+% The numbering style (arabic, alph, etc.) for ordinary footnotes
+% is defined by the macro \thefootnote.
+%
+% \@makefntext{NOTE} :
+% Must produce the actual footnote, using \@thefnmark as the mark
+% of the footnote and NOTE as the text. It is called when effectively
+% inside a \parbox of width \columnwidth (i.e., with \hsize =
+% \columnwidth).
+%
+% The following macro indents all lines of the footnote by 10pt, and
+% indents the first line of a new paragraph by 1em. To change these
+% dimensions, just substitute the desired value for '10pt' [in both
+% places] or '1em'. The mark is flushright against the footnote.
+% \long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize
+% \advance\@tempdima-10pt\parshape \@ne 10pt \@tempdima}\par
+% \parindent 1em\noindent \hbox to \z@{\hss$^{\@thefnmark}$}#1}
+%
+% A simpler macro is used, in which the footnote text is
+% set like an ordinary text paragraph, with no indentation except
+% on the first line of a paragraph, and the first line of the
+% footnote. Thus, all the macro must do is set \parindent
+% to the appropriate value for succeeding paragraphs and put the
+% proper indentation before mark.
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
+
+% \@makefnmark : A macro to generate the footnote marker that goes
+% in the text. Default definition used.
+
+
+
+% ****************************************
+% * FIGURES AND TABLES *
+% ****************************************
+%
+% Float placement parameters. See LaTeX manual for their definition.
+%
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+% \@makecaption{NUMBER}{TEXT} : Macro to make a figure or table caption.
+% NUMBER : Figure or table number--e.g., 'Figure 3.2'
+% TEXT : The caption text.
+% Macro should be called inside a \parbox of right width, with \normalsize.
+% changed 25 Jun 86 to fix according to Howard Trickey:
+% instead of \unhbox\@tempboxa\par we do #1: #2\par
+% ++++ Multilingual (shapiro 30-mar-88)
+\def\figuresepname{: }
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1{\figuresepname}#2}
+ \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
+ #1{\figuresepname}#2\par % THEN set as ordinary paragraph.
+ \else % ELSE center.
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+% To define a float of type TYPE (e.g., TYPE = figure), the document style
+% must define the following.
+%
+% \fps@TYPE : The default placement specifier for floats of type TYPE.
+%
+% \ftype@TYPE : The type number for floats of type TYPE. Each TYPE has
+% associated a unique positive TYPE NUMBER, which is a power
+% of two. E.g., figures might have type number 1, tables type
+% number 2, programs type number 4, etc.
+%
+% \ext@TYPE : The file extension indicating the file on which the
+% contents list for float type TYPE is stored. For example,
+% \ext@figure = 'lof'.
+%
+% \fnum@TYPE : A macro to generate the figure number for a caption.
+% For example, \fnum@TYPE == Figure \thefigure.
+%
+% The actual float-making environment commands--e.g., the commands
+% \figure and \endfigure--are defined in terms of the macros \@float
+% and \end@float, which are described below.
+%
+% \@float{TYPE}[PLACEMENT] : Macro to begin a float environment for a
+% single-column float of type TYPE with PLACEMENT as the placement
+% specifier. The default value of PLACEMENT is defined by \fps@TYPE.
+% The environment is ended by \end@float.
+% E.g., \figure == \@float{figure}, \endfigure == \end@float.
+
+
+% FIGURE
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+% ++++ Multilingual (shapiro@inria 11-mar-88)
+\def\figurename{Figure}
+\def\fnum@figure{\figurename{} \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+% TABLE
+%
+\newcounter{table}
+\def\thetable{\@arabic\c@table}
+
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+% ++++ Multilingual (shapiro@inria 11-mar-88)
+\def\tablename{Table}
+\def\fnum@table{\tablename{} \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+
+% ****************************************
+% * TITLE AND ABSTRACT *
+% ****************************************
+%
+
+% \maketitle ==
+% BEGIN
+% \par
+% \begingroup
+% redefine \@makefnmark so footnote marks take zero space (this make
+% centering look better)
+% \thefootnote == \fnsymbol{footnote} % to number by *, dagger, etc.
+% if @twocolumn = true
+% then \twocolumn[\@maketitle]
+% else \@maketitle
+% fi
+% \thispagestyle{plain}
+% \@thanks % \thanks defines \@thanks to have \footnotetext commands for
+% % producing footnotes.
+% \endgroup
+% END
+
+\def\affiliation#1{\gdef\@affiliation{#1}}
+
+\def\and{, }
+
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox
+ to 0pt{$^{\@thefnmark}$\hss}}
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle \fi\thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\gdef\@affiliation{}\let
+ \thanks\relax}
+
+\def\@maketitle{\newpage
+ \null
+ \vskip 2em % Vertical space above title.
+ \begin{flushleft}
+ {\LARGE \@title \par} % Title set in \LARGE size.
+ \vskip 1.5em % Vertical space after title.
+ {\large % Authors aligned on a single line,
+ \lineskip .5em % in upper case
+ \uppercase{\@author}}
+ \vskip 1em % Vertical space after author.
+ \@affiliation % Affiliation of author
+ \end{flushleft} % No date
+ \par
+ \vskip 1.5em} % Vertical space after date.
+
+\def\abstract{\if@twocolumn
+\section*{Abstract}
+\else \small
+\begin{center}
+{\bf Abstract\vspace{-.5em}\vspace{0pt}}
+\end{center}
+\list{}{\listparindent 0pt
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 2ex plus 1pt}\item[]
+\fi}
+
+\def\endabstract{\if@twocolumn\else\endlist\fi}
+
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+% The page style 'foo' is defined by defining the command \ps@foo. This
+% command should make only local definitions. There should be no stray
+% spaces in the definition, since they could lead to mysterious extra
+% spaces in the output.
+%
+% The \ps@... command defines the macros \@oddhead, \@oddfoot,
+% \@evenhead, and \@evenfoot to define the running heads and
+% feet---e.g., \@oddhead is the macro to produce the contents of the
+% heading box for odd-numbered pages. It is called inside an \hbox of
+% width \textwidth.
+%
+% To make headings determined by the sectioning commands, the page style
+% defines the commands \sectionmark, ... , where
+% \sectionmark{TEXT} is called by \section to set a mark, and so on.
+% The \...mark commands and the \...head macros are defined with the
+% help of the following macros. (All the \...mark commands should be
+% initialized to no-ops.)
+%
+% MARKING CONVENTIONS:
+% LaTeX extends TeX's \mark facility by producing two kinds of marks
+% a 'left' and a 'right' mark, using the following commands:
+% \markboth{LEFT}{RIGHT} : Adds both marks.
+% \markright{RIGHT} : Adds a 'right' mark.
+% \leftmark : Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot
+% macro, gets the current 'left' mark. Works like TeX's
+% \botmark command.
+% \rightmark : Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot
+% macro, gets the current 'right' mark. Works like TeX's
+% \firstmark command.
+% The marking commands work reasonably well for right marks 'numbered
+% within' left marks--e.g., the left mark is changed by a \section command and
+% the right mark is changed by a \subsection command. However, it does
+% produce somewhat anomalous results if two \bothmark's occur on the same page.
+%
+% Commands like \tableofcontents that should set the marks in some page styles
+% use a \@mkboth command, which is \let by the pagestyle command (\ps@...)
+% to \markboth for setting the heading or \@gobbletwo to do nothing.
+
+\mark{{}{}} % Initializes TeX's marks
+
+% \ps@empty and \ps@plain defined in LATEX.TEX
+
+% Definition of 'headings' page style
+% Note the use of ##1 for parameter of \def\sectionmark inside the
+% \def\ps@headings.
+%
+
+\if@twoside % If two-sided printing.
+\def\ps@headings{\let\@mkboth\markboth
+\def\@oddfoot{}\def\@evenfoot{}% No feet.
+\def\@evenhead{\rm \thepage\hfil \sl \leftmark}% Left heading.
+\def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}% Right heading.
+\def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}%
+\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}
+\else % If one-sided printing.
+\def\ps@headings{\let\@mkboth\markboth
+\def\@oddfoot{}\def\@evenfoot{}% No feet.
+\def\@oddhead{\hbox {}\sl \rightmark \hfil \rm\thepage}% Heading.
+\def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection\hskip 1em\relax \fi ##1}}}}
+\fi
+
+% Definition of 'myheadings' page style.
+%
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+\def\@oddhead{\hbox{}\sl\rightmark \hfil \rm\thepage}%
+\def\@oddfoot{}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox {}}%
+\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+
+
+% ****************************************
+% * MISCELLANEOUS *
+% ****************************************
+%
+% DATE
+%
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+%
+% Default initializations
+
+\ps@plain % 'plain' page style
+\pagenumbering{arabic} % Arabic page numbers
+\onecolumn % Single-column.
+\if@twoside\else\raggedbottom\fi % Ragged bottom unless twoside option.
diff --git a/macros/latex209/contrib/misc/currency.sty b/macros/latex209/contrib/misc/currency.sty
new file mode 100644
index 0000000000..be495ea26e
--- /dev/null
+++ b/macros/latex209/contrib/misc/currency.sty
@@ -0,0 +1,17 @@
+% This file includes some useful hacks to include currency symbols other
+% than the standard \$ and \pounds of LaTeX. It is a collection from kind
+% individuals who have provided this code.
+%
+% If you have other currency symbols or fixes to enhance those in this file,
+% please send them to the archist responsible for this collection:
+% George D. Greenwade, Department of Economics and Business Analysis, Sam
+% Houston State University, Huntsville, TX 77341 (409) 294-1265
+% BED_GDG@SHSU.BITNET
+%
+% Japanese Yen - provided by <sommer@binah.cc.brandeis.edu>, 17-APR-1991
+\newcommand{\yen}{{\ooalign{Y\crcr$=$}}}
+%
+% Alternate British Pounds Sterling - upright instead of italic - provided
+% by <XITIJSCH@DDATHD21.BITNET>, 15-APR-1991
+\def\Pounds{{\rm \char'44}}
+
diff --git a/macros/latex209/contrib/misc/custombib.sty b/macros/latex209/contrib/misc/custombib.sty
new file mode 100644
index 0000000000..9f03fa9bb7
--- /dev/null
+++ b/macros/latex209/contrib/misc/custombib.sty
@@ -0,0 +1,39 @@
+% custombib.sty - thebibliography with customizable text and sectioning
+%
+% This is a small modification of the standard command made by L. Lamport.
+%
+% Pablo A. Straub, University of Maryland, straub@cs.umd.edu
+%
+% 11/08/91 Posted to comp.text.tex
+% 11/09/91 Add \bibliogrphyitem for extra customization
+% 11/10/91 Posted again to comp.text.tex with extra customization
+%
+% An example of use: To use in report or book style, you should redefine
+% \theblibliographysection. If you want it to be like an unnumbered chapter
+% with an entry in the table of contents, the following will do.
+%
+% \renewcommand{\bibliographysection}{\addcontentsline
+% {toc}{chapter}{\bibliographytext}\chapter*}
+%
+% Another example: To make the list appear as an enumeration (a number and a
+% a period, instead of the number in square brackets), the following will do.
+%
+% \renewcommand{\bibliographyitem}[1]{#1.\hfil}
+
+
+\newcommand{\bibliographysection}{\section*}
+
+\newcommand{\bibliographytext}{References}
+
+\newcommand{\bibliographyitem}[1]{[#1]}
+
+\def\thebibliography#1{\bibliographysection{\bibliographytext\@mkboth
+ {\uppercase{\bibliographytext}}{\uppercase{\bibliographytext}}}\list
+ {\bibliographyitem{\arabic{enumi}}}
+ {\settowidth\labelwidth{\bibliographyitem{#1}}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+
diff --git a/macros/latex209/contrib/misc/cyrillic.sty b/macros/latex209/contrib/misc/cyrillic.sty
new file mode 100644
index 0000000000..a0218c7522
--- /dev/null
+++ b/macros/latex209/contrib/misc/cyrillic.sty
@@ -0,0 +1,26 @@
+% Written by Charles Karney (Karney%PPC.MFENET@NMFECC.ARPA) 1986/07/28.
+% The cyrillic style option loads up the cyrillic fonts. It is assumed that
+% cyracc.def is on the system. Only \textfont, \scriptfont, and
+% \scriptscriptfont sizes are provided. 10pt, 11pt, 12pt styles are
+% supported. The fonts are accessed via \cyr. E.g., {\cyr Zhurnal}.
+
+\input cyracc.def
+\ifcase\@ptsize
+ \font\tencyr=mcyr10
+ \font\sevencyr=mcyr7
+ \font\fivecyr=mcyr6
+\or
+ \font\tencyr=mcyr10 scaled \magstephalf
+ \font\sevencyr=mcyr8
+ \font\fivecyr=mcyr6
+\or
+ \font\tencyr=mcyr10 scaled \magstep1
+ \font\sevencyr=mcyr8
+ \font\fivecyr=mcyr6
+\fi
+
+\newfam\cyrfam
+\textfont\cyrfam=\tencyr \scriptfont\cyrfam=\sevencyr
+ \scriptscriptfont\cyrfam=\fivecyr
+
+\def\cyr{\fam\cyrfam\tencyr\cyracc}
diff --git a/macros/latex209/contrib/misc/dates.sty b/macros/latex209/contrib/misc/dates.sty
new file mode 100644
index 0000000000..607d45d0ae
--- /dev/null
+++ b/macros/latex209/contrib/misc/dates.sty
@@ -0,0 +1,288 @@
+% --- ------------------------------------------------------------------
+% --- dates.sty
+% --- Flexible Date Macros for LaTeX, version 1.00--1
+% --- ------------------------------------------------------------------
+% --- Adrian F. Clark (alien@uk.ac.essex) 4-Aug-1992
+% --- ------------------------------------------------------------------
+%
+% --- \today generates today's date. Alter this to suit
+% --- the way you want it to appear. It is currently
+% --- set up to generate dates in the form
+% --- `Thursday 4th October 1066'
+%
+% --- \thisdayofweek generates today's day name (`Sunday', etc).
+% --- \thisday generates today's day (`1', `2', etc).
+% --- \thisdayth generates today's day (`1st', `2nd', etc),
+% --- where the `st' etc are generated by \st etc.
+% --- \thismonth generates today's month (`January', etc).
+% --- \thisyear generates today's year.
+% --- \thisphaseofmoon generates the current phase of the moon.
+%
+% --- \dayofweek{year}{month}{day} generates the day of the week for
+% the given date.
+%
+% --- \phaseofmoon{year}{month}{day} generates the phase of the moon
+% for the given date.
+%
+% --- \Sunday (etc) generates `Sunday' (etc).
+% --- \January (etc) generates 'January' (etc).
+% --- \NewMoon (etc) generates `new' (etc).
+%
+% --- \st generates a raised, reduced, underlined `st', as in 1st.
+% --- \nd generates a raised, reduced, underlined `nd', as in 2nd.
+% --- \rd generates a raised, reduced, underlined `rd', as in 3rd.
+% --- \th generates a raised, reduced, underlined `th', as in 4th.
+
+% --- ------------------------------------------------------------------
+% --- The actual date macros.
+
+% --- As distributed, \today generates today's date in the style
+% --- `Thursday 4th October 1066'.
+
+\def\today{\thisdayofweek\ \thisdayth\ \thismonth\ \thisyear}
+
+\def\thisday{\number\day}
+
+\def\thisdayth{\thisday \ifcase\day
+ \or\st\or\nd\or\rd\or\th\or\th\or\th\or\th\or\th\or\th\or\th
+ \or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th
+ \or\st\or\nd\or\rd\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\st\fi}
+
+\def\thisdayofweek{\dayofweek{\year}{\month}{\day}}
+
+\def\thismonth{\ifcase\month\or \January\or \February\or \March\or
+ \April\or \May\or \June\or \July\or \August\or \September\or
+ \October\or \November\or \December\fi}
+
+\def\thisyear{\number\year}
+
+\def\thisphaseofmoon{\phaseofmoon{\year}{\month}{\day}}
+
+% --- ------------------------------------------------------------------
+% --- Names of days of the week, the months, and the phases of the moon.
+% --- This makes it easier to change them for languages other than English.
+% --- (And that's why they're not \@Sunday, etc).
+
+\def\Sunday{Sunday}
+\def\Monday{Monday}
+\def\Tuesday{Tuesday}
+\def\Wednesday{Wednesday}
+\def\Thursday{Thursday}
+\def\Friday{Friday}
+\def\Saturday{Saturday}
+
+\def\January{January}
+\def\February{February}
+\def\March{March}
+\def\April{April}
+\def\May{May}
+\def\June{June}
+\def\July{July}
+\def\August{August}
+\def\September{September}
+\def\October{October}
+\def\November{November}
+\def\December{December}
+
+\def\NewMoon{new}
+\def\WaxCresMoon{waxing crescent}
+\def\FirstQuarterMoon{in its first quarter}
+\def\WaxGibMoon{waxing gibbous}
+\def\FullMoon{full}
+\def\WaneGibMoon{waning gibbous}
+\def\LastQuarterMoon{in its last quarter}
+\def\WaneCresMoon{waning crescent}
+
+
+% --- ------------------------------------------------------------------
+% --- Counters. Note that we use the same registers as TeX holds other
+% --- things in (e.g., \count0 holds the page number). This requires
+% --- that \@savestyle, \@setstyle, \dayofweek and \phaseofmoon perform
+% --- all their register manipulations within a group. This may seem
+% --- a bit messy, but it saves having eight registers permanently set
+% --- aside just for date calculation.
+
+\def\@cent{\count0 } % century number (1979 == 20)
+\def\@diy{\count1 } % day in the year
+\def\@dow{\count2 } % gets day of the week
+\def\@epact{\count3 } % age of the moon on Jan. 1
+\def\@golden{\count4 } % Moon's golden number
+\def\@leap{\count5 } % leap year fingaler
+\def\@x{\count6 } % temp register
+\def\@y{\count7 } % another temp register
+
+% --- ------------------------------------------------------------------
+% --- For `old' (pre version 2.10) LaTeX, these macros ensure the
+% --- smaller text comes out in the right font by saving the font
+% --- family before reducing the size, then restoring it.
+% --- (This hack was suggested by Leslie Lamport.) Of course, it
+% --- requires that the font in use when the caller is invoked has
+% --- a sensible family.
+
+% --- For LaTeX 2.10 onwards, which uses the font selection scheme due
+% --- to Mittelbach and Shoepf, such a hack is not necessary. The
+% --- macros detect which version is in use automagically.
+
+\def\st{\alien@up{st}}
+\def\nd{\alien@up{nd}}
+\def\rd{\alien@up{rd}}
+\def\th{\alien@up{th}}
+
+\def\alien@up#1{{\@savestyle\thinspace$^{\underline{\hbox{%
+ \scriptsize\@setstyle#1\fam=-1 }}}$}}
+
+% --- Macros to save and restore the font family.
+
+\def\@savestyle{\count0=\the\fam}
+
+\def\@setstyle{\ifcase\count0\rm\or\mit\or\cal\or\rm% what's family 3?
+ \or\it\or\sl\or\bf\or\tt\fi}
+
+% --- ------------------------------------------------------------------
+% --- The nitty-gritty.
+
+% --- The day of the week (\Sunday, etc.) is inserted into the text
+% --- by \dayofweek. (This uses registers \@dow, \@leap, \@x and \@y.)
+% --- I acquired this from elsewhere; it was apparently written by
+% --- Martin Minow, now a DEC employee. The algorithms is:
+% --- leap = year + (month - 14)/12;
+% --- dow = (13 * (month + 10 - (month + 10)/13*12) - 1)/5
+% --- dow += day + 77 + 5 * (leap % 100)/4
+% --- dow += leap / 400
+% --- dow -= leap / 100 * 2
+% --- dow = (dow % 7)
+
+\def\dayofweek#1#2#3{{\@leap=#2\advance\@leap by -14\divide\@leap by 12\relax
+ \advance\@leap by #1\relax
+ \@dow=#2\advance\@dow by 10\relax
+ \@y=\@dow \divide\@y by 13\multiply\@y by 12\relax
+ \advance\@dow by -\@y \multiply\@dow by 13\relax
+ \advance\@dow by -1 \divide\@dow by 5\relax
+ \advance\@dow by #3\advance\@dow by 77\relax
+ \@x=\@leap \@y=\@x \divide\@y by 100\multiply\@y by 100\relax
+ \advance\@x by -\@y \relax
+ \multiply\@x by 5\divide\@x by 4\advance\@dow by \@x
+ \@x=\@leap \divide\@x by 400\advance\@dow by \@x
+ \@x=\@leap \divide\@x by 100\multiply\@x by 2\advance\@dow by -\@x
+ \@x=\@dow \divide\@x by 7\multiply\@x by 7\advance\@dow by -\@x
+ \ifcase\@dow \Sunday\or \Monday\or \Tuesday\or \Wednesday\or
+ \Thursday\or \Friday\or \Saturday\fi}}
+
+\endinput
+
+%
+% --- Likewise, \phaseofmoon inserts the phase of the moon into the
+% --- text. This was written by the same person as \dayofweek.
+% --- The routine calculates the year's epact (the age of the moon on Jan 1.),
+% --- adds this to the number of days in the year, and calculates the phase
+% --- of the moon for this date. It returns the phase as a string, e.g.,
+% --- \NewMoon, \FullMoon, etc.
+%
+% --- In the algorithm:
+% --- diy is the day of the year - 1 (i.e., Jan 1 is day 0).
+% --- golden is the number of the year in the Mentonic cycle, used to
+% --- determine the position of the calender moon.
+% --- epact is the age of the calender moon (in days) at the beginning
+% --- of the year. To calculate epact, two century-based
+% --- corrections are applied:
+% --- Gregorian: (3 * cent)/4 - 12
+% --- is the number of years such as 1700, 1800 when
+% --- leap year was not held.
+% --- Clavian: (((8 * cent) + 5) / 25) - 5
+% --- is a correction to the Mentonic cycle of about
+% --- 8 days every 2500 years. Note that this will
+% --- overflow 16 bits in the year 409600. Beware.
+% --- The algorithm is accurate for the Gregorian calender only.
+%
+% --- The magic numbers used in the phase calculation are:
+% --- 29.5 The moon's period in days.
+% --- 177 29.5 scaled by 6
+% --- 22 (29.5 / 8) scaled by 6 (this gets the phase)
+% --- 11 ((29.5 / 8) / 2) scaled by 6
+%
+% --- Theoretically, this should yield a number in the range 0 .. 7. However,
+% --- two days per year, things don't work out too well.
+%
+% --- Epact is calculated by the algorithm given in Knuth vol. 1 (Calculation
+% --- of Easter). See also the article on Calenders in the Encyclopaedia
+% --- Britannica and Knuth's algorithm in CACM April 1962, page 209.
+%
+\def\phaseofmoon#1#2#3{{%
+ \@diy=#3 \advance\@diy by \ifcase#2 % Jan 1 == 0
+ -1\or -1\or 30\or 58\or 89\or 119\or 150\or % Jan .. Jun
+ 180\or 211\or 241\or 272\or 303\or 333\fi % Jul .. Dec
+% if ((month > 2) && ((year % 4 == 0) &&
+% ((year % 400 == 0) || (year % 100 != 0))))
+% diy++; /* Leapyear fixup */
+ \ifnum #2>2
+ \@x=#1 \@y=\@x \divide\@y by 4 \multiply\@y by 4 \advance\@x by -\@y
+ \ifnum \@x=0 % month > 2 and maybe leap year
+ \@x=#1 \@y=\@x \divide\@y by 400 \multiply\@y by 400 \advance\@x by -\@y
+ \ifnum \@x=0 % 2000 is a leap year
+ \advance\@diy by 1 % so it's one day later
+ \else % not 2000, check other '00's
+ \@x=#1 \@y=\@x \divide\@y by 100 \multiply\@y by 100 \advance\@x by -\@y
+ \ifnum \@x>0 % not some other '00' year
+ \advance\@diy by 1 % it's still one day later
+ \fi % not odd century
+ \fi % not 2000-type century
+ \fi % not leapish year
+ \fi % not march or later
+% cent = (year / 100) + 1; /* Century number */
+% golden = (year % 19) + 1; /* Golden number */
+ \@cent=#1 \divide\@cent by 100 \advance\@cent by 1
+ \@golden=#1
+ \@y=#1 \divide\@y by 19 \multiply\@y by 19 \advance\@golden by -\@y
+ \advance\@golden by 1
+% epact = ((11 * golden) + 20 /* Golden number */
+% + (((8 * cent) + 5) / 25) - 5 /* 400 year cycle */
+% - (((3 * cent) / 4) - 12)) % 30; /* Leap year correction */
+ \@epact=11 \multiply\@epact by \@golden
+ \advance\@epact by 20
+ \@x=8 \multiply\@x by \@cent \advance\@x by 5
+ \divide\@x by 25 \advance\@x by -5
+ \advance\@epact by \@x
+ \@x=3 \multiply\@x by \@cent \divide\@x by 4 \advance\@x by -12
+ \advance\@epact by -\@x
+ \@y=\@epact \divide\@y by 30 \multiply\@y by 30 \advance\@epact by -\@y
+% if (epact <= 0)
+% epact += 30; /* Age range is 1 .. 30 */
+% if ((epact == 25 && golden > 11) || epact == 24)
+% epact++;
+ \ifnum \@epact<0
+ \advance\@epact by 30
+ \fi
+ \ifnum \@epact=25
+ \ifnum \@golden>11
+ \advance \@epact by 1
+ \fi
+ \else
+ \ifnum \@epact=24
+ \advance \@epact by 1
+ \fi
+ \fi
+%
+% --- Calculate the phase, using the magic numbers defined above.
+% --- Note that phase may be equal to 8 (== 0) on two days of the year
+% --- due to the way the algorithm was implemented.
+% --- phase = (((((diy + epact) * 6) + 11) % 177) / 22) & 7;
+%
+ \@x=\@diy \advance\@x by \@epact \multiply\@x by 6 \advance\@x by 11
+ \@y=\@x \divide\@y by 177 \multiply\@y by 177 \advance\@x by -\@y
+ \divide\@x by 22
+ \ifcase\@x \NewMoon\or \WaxCresMoon\or \FirstQuarterMoon\or
+ \WaxGibMoon\or \FullMoon\or \WaneGibMoon\or
+ \LastQuarterMoon\or \WaneCresMoon\or \NewMoon\fi}}
+
+REVISION HISTORY
+
+1.00--0 3-Aug-1990 First version
+1.00--1 4-Aug-1992 Corrected \dayofweek: it was generating
+ additional spaces before the day-name: this was
+ significant in {tabular} environments, and
+ screwed up alignment no end. Disabled the
+ \phaseofmoon definitions, which are of little
+ interest to most people.
+
+% --- End of dates.sty
+
diff --git a/macros/latex209/contrib/misc/dayofweek.sty b/macros/latex209/contrib/misc/dayofweek.sty
new file mode 120000
index 0000000000..64ffeb4e3c
--- /dev/null
+++ b/macros/latex209/contrib/misc/dayofweek.sty
@@ -0,0 +1 @@
+../../../generic/misc/dayofweek.tex \ No newline at end of file
diff --git a/macros/latex209/contrib/misc/db.sty b/macros/latex209/contrib/misc/db.sty
new file mode 100644
index 0000000000..983152823f
--- /dev/null
+++ b/macros/latex209/contrib/misc/db.sty
@@ -0,0 +1,236 @@
+
+%%%%%%%%%%%%%%% DATABASE STYLE %%%%%%%%%%%%%%%%%%
+
+% db.sty
+%
+% Style to generate listings, to send out letters, etc. using
+% a database.
+%
+% Version 2.1 (11/20/91)
+%
+% Written by George Panagopoulos (georgios@umiacs.umd.edu)
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\long\def\DOCCOMMENT#1\ENDDOCCOMMENT{}
+
+\DOCCOMMENT
+
+%%%%%%%%%%%% SAMPLE DATABASE FILE mydb.tdb:
+
+% Schema definition
+
+\fields{FName, LName,
+ Email, Addr,
+ local}
+
+% Database
+
+\tuple{FName= George,
+ LName= Panagopoulos,
+ Addr= {CS Dept., U of MD, College Park 20742},
+ Email= {\tt georgios@umiacs.umd.edu},
+ local= 1}
+
+\tuple{FName= Somebody,
+ LName= Else,
+ Email= {\tt sb@elsewhere}} % all other fields empty
+
+\tuple{FName= Ten,
+ LName= \FirstName}
+
+%%%%%%%%%%%%% SAMPLE USE FILE mydb.tex:
+
+\documentstyle[db]{article}
+
+\begin{document}
+
+% List 1
+
+\newcommand{\tupletext}{\thetuplectr & \FName\ \LName & \Email \\}
+\begin{tabular}{rll}
+ \db{mydb} % Lists all
+\end{tabular}
+===
+\thetuplectr\ person(s) listed
+
+% List 2
+
+\renewcommand{\tupletext}{\FName\ (\Email)}
+\ref{num:tuples} local person(s):
+
+\begin{enumerate}
+ \db{mydb}[local] % lists all that have nonempty \local
+ \label{num:tuples}
+\end{enumerate}
+
+\end{document}
+
+%%%%%%%%%%%%% OUTPUT of mydb.tex:
+
+1 George Panagopoulos georgios@umiacs.umd.edu
+2 Somebody Else sb@elsewhere
+3 Ten Ten
+===
+3 person(s) listed
+
+1 person(s) below:
+
+1. George (georgios@umiacs.umd.edu)
+
+%%%%%%%%%%%%%% NOTES (refer to example above)
+
+Database files have the extension ".tdb".
+
+Field order is irrelevant.
+
+A subset of the fields may be given as argument in the \tuple command.
+The rest become empty.
+
+TeX/LaTeX commands are valid inside field values.
+
+Other fields are valid inside field values.
+
+A field value must not contain a comma, unless the comma is enclosed
+in braces.
+
+White space is insignificant outside \fields and \tuple commands in
+the database file.
+
+White space is insignificant inside a \fields or a \tuple command,
+except between the first letter of a field name and the following
+equal sign, and between the first letter of a field value and the
+following comma or closing brace.
+Therefore:
+ In a \fields command, *there must be no space between the field name
+ and the following comma or closing brace*:
+ \fields{ Name, Addr}
+ is valid, but
+ \fields{Name ,Addr}
+ is invalid, and so is
+ \fields{Name,Addr }
+ In a \tuple command, *there must be no space between the field name
+ and the equal sign, and no unwanted spaces between the field value
+ and the following comma or closing brace*:
+ \tuple{ Name= x xx , Addr= yy y }
+ is equivalent to
+ \tuple{Name={x xx },Addr={yy y }},
+ but
+ \tuple{Name =xxx,Addr=yyy}
+ is invalid.
+
+Beware of conflicts between field names and other TeX macros. The
+\fields command issues a warning if your field name conflicts with an
+already defined macro, but goes on to redefine it anyway.
+
+The field macros become undefined after the execution of the the \db
+command. The old values (if applicable) are NOT restored.
+
+The same database and more than one databases may be included in the
+same document.
+
+The counter {tuplectr} is used to count tuples. The macro \thetuplectr
+may be used and/or modified at wish. The value of the counter is saved
+in the \ref variable in the end of the \db command.
+
+\ENDDOCCOMMENT
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcounter{tuplectr}
+
+%%%%%%%%%%%% USEFUL MACROS
+
+\def\ignorewhitespace{\catcode`\ =9\catcode`\^^M=9}
+\def\noignorewhitespace{\catcode`\ =10\catcode`\^^M=5}
+
+\ignorewhitespace
+
+\def\db@ifb#1{ % trim one space from #1, if needed
+ \ifx \space #1
+ \else #1 \fi}
+
+%%%%%%%%%%%% SCHEMA READING
+
+\def\chk@fld@name#1{ % check fldname #1 for conflict with other macros
+ \expandafter\ifx \csname#1\endcsname \relax % if undefined
+ \else
+ \global\expandafter\let\csname#1\endcsname\relax % undefine macro
+ \typeout{Warning: \space field \space name \space
+ \expandafter\string\csname#1\endcsname
+ \space redefines \space a \space TeX \space macro}
+ \fi}
+
+\def\@field#1,{ % expand \init@fields with: \gdef\#1{} (#1=fldname)
+ % and \undef@fields with: \global\let\#1\relax
+ \edef\fld@name{\db@ifb#1}
+ \chk@fld@name{\fld@name}
+ \xdef\init@fields{
+ \init@fields
+ \expandafter\gdef\csname\fld@name\endcsname{}}
+ \xdef\undef@fields{
+ \undef@fields
+ \global\expandafter\let\csname\fld@name\endcsname\relax}}
+
+\def\parse@fld@names#1{ % set \init@fields to clear all fields
+ % and \undef@fields to undef all field macros
+ \@for\@args:=#1
+ \do {\expandafter\@field\@args,}}
+
+\def\fields#1{ % read field names (keeps ignoring whitespace)
+ \xdef\init@fields{}
+ \xdef\undef@fields{}
+ \parse@fld@names{#1}}
+
+%%%%%%%%%%%% TUPLE PARSING
+
+\def\@setfield#1=#2,{
+ \expandafter\xdef\csname\db@ifb#1\endcsname{#2}}
+
+\def\parse@fields#1{
+ \@for\@args:=#1
+ \do {\expandafter\@setfield\@args,}}
+
+\def\print@tuple{ % print tuple value as requested
+ % \db@flag is not expanded and contains the name of a field
+ \edef\db@flag@val{\db@flag} % eval \db@flag
+ \ifx \db@flag@val \empty % ignore tuple if \db@flag=\empty
+ \else
+ \refstepcounter{tuplectr}
+ \tupletext
+ \fi}
+
+%%%%%%%%%%%% TUPLE READING
+
+\def\@tuple#1{ % parse tuple and call \print@tuple
+ \init@fields % empty field values
+ \parse@fields{#1}
+ \print@tuple
+ \ignorewhitespace}
+
+\def\tuple{ % read tuple, print \tupletext if \db@flag not empty
+ \noignorewhitespace % will be restored by \@tuple
+ \@tuple}
+
+\def\notuple#1{} % ignore entry
+
+%%%%%%%%%%%% DB READING
+
+\def\@db#1[#2]{ % #1=file, #2=field not to be empty for \tupletext
+ \ifx . #2
+ \gdef\db@flag{1} % always nonempty
+ \else
+ \xdef\db@flag{\csname#2\endcsname}
+ \fi
+ \setcounter{tuplectr}{0}
+ \ignorewhitespace
+ \@input{#1.tdb}
+ \undef@fields
+ \noignorewhitespace}
+
+\def\db#1{ % read database, print \tupletext for each included tuple
+ \@ifnextchar [
+ {\@db#1}
+ {\@db#1[.]}}
+
+\noignorewhitespace
diff --git a/macros/latex209/contrib/misc/dblitem.sty b/macros/latex209/contrib/misc/dblitem.sty
new file mode 100644
index 0000000000..778f5fae67
--- /dev/null
+++ b/macros/latex209/contrib/misc/dblitem.sty
@@ -0,0 +1,45 @@
+\topmargin -.5in
+\oddsidemargin -.1in
+\textheight 8.9in
+\textwidth 6.5in
+\overfullrule=0pt
+\def\header#1#2{\parindent0em {#1 \hfill #2} \vskip.2in \parindent1.7em}
+\def\@oddfoot{\rm SYNCH User's Guide \hfil \thepage \hfil \today}
+\def\section{\@startsection {section}{1}{\z@}{+3.5ex plus +1ex minus
+ +.2ex}{2.3ex plus .2ex}{\normalsize\rm}}
+\def\nbrlineone{\par\smallskip \noindent
+\verb=----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8= \\}
+\def\nbrlinetwo{\verb=----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8= \\ }
+\def\char{{\sf (CHAR) }}
+\def\int{{\sf (INTEGER) }}
+\def\flpt{{\sf (FL PT) }}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Macros for "double items" %
+% Modified version of \item macro and context on %
+% p. 355 of TeXBook %
+% %
+% Norman J. Richert March 1990 %
+% Univ. of Houston-Clear Lake %
+% e-mail: richert@cl.uh.edu %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newskip\dblskip % Box register w/dblskip width
+\dblskip=5pc % Dblskip width of 6 picas
+\newskip\firstdbl % Box register w/firstdbl width
+\firstdbl=4pc % Firstdbl width of 4 picas
+\newskip\seconddbl % Box register w/seconddbl width
+\seconddbl=2pc % Seconddbl width of 1 picas
+\def\dblhang{\hangindent\dblskip} % Indent width of dblskip
+\def\dbltextindent#1#2{\noindent\hskip\dblskip
+ % No indent, horiz. skip of dblskip
+\llap{\hbox to\dblskip{\hbox to\firstdbl{#1\hfil}%
+ % left lap with 2 hbox spreads to arg1
+\hbox to \seconddbl{#2\hfil}}}\ignorespaces}
+ % hbox spread to arg2
+\def\dblitem{\vskip6pt\dblhang\dbltextindent}
+\def\dblitemi{\vskip-.1pc\dblhang\dbltextindent}
+ % Definition of dblitem
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/macros/latex209/contrib/misc/dectab.sty b/macros/latex209/contrib/misc/dectab.sty
new file mode 100644
index 0000000000..e9892f9f90
--- /dev/null
+++ b/macros/latex209/contrib/misc/dectab.sty
@@ -0,0 +1,49 @@
+% DECTAB.STY (April 27, 1991)
+% Allows decimal alignment in tabular environment
+% \dec definitions taken from REVTEX.STY
+% by Charles Franklin, April 27, 1991
+% (C38871CF@WUVMD.WUSTL.EDU or C38871CF@WUVMD.Bitnet)
+%
+% USAGE: For decimal alignment in a table, use \dec 3.14 for
+% the cell entry. The column should be center aligned
+% to achieve the desired effect.
+% For example:
+%
+% \begin{tabular}{lcc}
+%
+% Constant & \dec -1.461 & \dec -0.724 \\
+% Standard Error & \dec (0.422) & \dec (0.455) \\
+%
+% Note that a `.' MUST appear for the alignment to work.
+% Use `\dec 520.' NOT `\dec 520' for integers.
+%
+% DECTAB also defines \ra, \la, \ca for easy modification of
+% global alignments. These produce local right, left and center
+% alignments of the cell entry. If there are spaces in the cell
+% entry, enclose the contents in {...}, eg \la {This Column}
+%
+\typeout{Document Style Option `dectab', version April 27, 1991}
+
+\newdimen\@Ldec \newdimen\@Rdec
+
+\def\dec #1.#2 {\hbox to\@Ldec{\hss#1}\def\test{#2}%
+\ifx\test\empty\hbox to\@Rdec{\hfill}\else\hbox to\@Rdec{.#2\hss}\fi
+}
+
+\def\setdec #1.#2 {\relax%
+ \bgroup
+ \setbox0\hbox{\kern1pt\relax#1}\setbox1\hbox{\kern1pt\relax#2}%
+ \global\@Ldec\wd0\global\@Rdec\wd1%
+ \egroup
+}
+
+\setdec 000.000 % default size of 3 digits on each side
+
+% Following defs allow easy modification of global alignment in
+% tables. \ra, \la, \ca for right, left and center alignments.
+
+\def\ra #1 {\multicolumn{1}{r}{#1}}
+\def\la #1 {\multicolumn{1}{l}{#1}}
+\def\ca #1 {\multicolumn{1}{c}{#1}}
+
+% end DECTAB.STY
diff --git a/macros/latex209/contrib/misc/deflist.sty b/macros/latex209/contrib/misc/deflist.sty
new file mode 100644
index 0000000000..621e466472
--- /dev/null
+++ b/macros/latex209/contrib/misc/deflist.sty
@@ -0,0 +1,16 @@
+% *** DEFLIST ****
+%
+% Aufruf: \begin{deflist}{Label}
+% \item[label] TeX
+% \end{deflist}
+% erzeugt: Liste, bei der das laengste Label die Einrueckungstiefe bestimmt
+%
+%\def\deflabel#1{\bf #1\hfill}
+\def\deflabel#1{#1\hfill}
+\def\deflist#1{
+% \list{}{\settowidth{\labelwidth}{\bf #1}
+ \list{}{\settowidth{\labelwidth}{#1}
+ \setlength{\leftmargin}{\labelwidth}
+ \addtolength{\leftmargin}{\labelsep}
+ \let\makelabel \deflabel}}
+\let\enddeflist\endlist
diff --git a/macros/latex209/contrib/misc/deleq.sty b/macros/latex209/contrib/misc/deleq.sty
new file mode 100644
index 0000000000..1b3df7c671
--- /dev/null
+++ b/macros/latex209/contrib/misc/deleq.sty
@@ -0,0 +1,359 @@
+% The style option file "deleq.sty" is found after these instructions,
+% right before the .sty-file is a line with 30 percentage-signs.
+%
+%
+% LaTeX Macro for Partial Numbering of Equations
+% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+%
+% by Mats Dahlgren, <matsd@physchem.kth.se>
+% or <mats@fenk.wau.nl>, June 1994
+%
+% Version 3.0, June 22, 1994
+% Version 3.02, Sept. 8, 1994
+%
+% NOTICE: This version of deleq.sty (3.02) is the last which runs
+% under LaTeX 2.09. It is not maintained any longer. All
+% improvements and changes are done to the file for LaTeX2e,
+% which have a version number of 4.0 (or higher). Useres
+% are urged to change to LaTeX2e and a newer version of deleq.sty.
+%
+% CHANGES: A few font-testings have been included, which - hopefully -
+% makes deleq.sty v.3.02 compatible with also other font
+% selection schemen than NFSS2.
+%
+% deleq.sty is a LaTeX macro makes partial numbering of equations
+% possible. It is meant to be used when numbering such as 3a, 3b, etc.
+% is desired. The default is to give an equation number like '3a'
+% without period and with the 'a' typeset in roman font. It can be used
+% in 'article' as well as 'book' and 'report' document styles. The
+% examples given below are valid for 'article' styled documents.
+% Both right aligned and left aligned equation numbers are avaliable.
+% Equations can be numbered either 3, 3a, 3b, ..., or 2, 3a, 3b, ....
+% Also, if equation numbers within eqnarray-like environments can be
+% numbered 3, 3a, 3b,... or starting at 3a, which can follow both after
+% equation 2b or 3. An array environment can have its first equation
+% numbered 3b if the nearest previous equation is 3a. Within the
+% array environment, equations can be numbered 3a, 3b, 4, 4a, 4b, 5a, 5b,
+% etc., and also not numbered lines are possible ('\nonumber' works).
+% Furthermore, equation numbers can be "recycled". If equation 3 is repeated
+% after equation 8, it can still have the numbering set to 3, and be
+% followed by (a new) equation 9. "Recycled" equation numbers can
+% receive partial numbers (3a, 3b, ...); partially numbered equations
+% can also be "recycled" (but at this stage, the latter can not receive
+% new partial numbers neatly, it will come out like '3ba' if eqution 3b
+% is the "recycled" equation). A command for using references in mathmode
+% which avoids the eroor message "Don't use \bf in mathmode" when processed
+% is also included.
+%
+% deleq.sty version 3.0 has been tested with LaTeX 2.09 under UNIX. Please
+% send bug reports, corrections, additions, suggestions, etc to me at
+% <matsd@physchem.kth.se>. Use the file at your own pleasure and risk.
+% (Command names are a mixture of LaTeX, Swedish and a bit of the author's
+% fantasy...)
+%
+% Enjoy your LaTeX!
+% mats d.
+%
+%
+% Requirements: The file 'deleq.sty' must be available in the user's
+% 'TEXINPUTS' directories.
+%
+% Usage: The macro is included by stating 'deleq' as one of the
+% options with the '\documentstyle' command.
+%
+% Environments: The macro defines the following eight environments:
+% deqn environment for automatic numbering of the
+% first equation of type 3a
+% dleqn 'deqn' for left-aligned numbers
+% ddeqn used for automatic numbering of the
+% equations following the one in 'deqn';
+% see also details below
+% ddleqn 'ddeqn' for left-aligned numbers
+% deqarr environment for automatic partial equation
+% numbering used in 'eqnarray' environment
+% dleqarr 'deqarr' for left-aligned numbers
+% ddeqar similar to 'deqarr' environment, but more
+% flexible, see details below
+% ddleqar 'ddeqar' for left-aligned numbers
+%
+% Commands: The macro defines the following thirteen commands:
+% \nydeqno
+% \heqno
+% \nydeleqno
+% \nydelleqno
+% \deleqno
+% \delleqno
+% \reqno{FOO}
+% \rleqno{FOO}
+% \rndeqno{FOO}
+% \rndleqno{FOO}
+% \rdeqno{FOO}
+% \rdleqno{FOO}
+% \mthref{FOO}
+%
+% Notice: 1. If you use '\nydeleqno', '\nydelleqno', '\deleqno',
+% '\delleqno', \nydeqno', '\heqno', '\reqno', '\rleqno'
+% '\rndeqno', '\rndleqno', '\rdeqno', or '\rdleqno' in
+% combination with '\label{FOO}', '\label{FOO}' should
+% appear after the 'deleq'-command;
+% 2. If you change the appearance of equation numbers (e.g. use
+% '[2]' instead of '(2)'), deleq':s commands may not typeset
+% the partial equation numbers like your ordinary ones.
+%
+% Syntax: Here follows a more detailed description of the different
+% environments and commands.
+%
+% \begin{deqn} typesets an equation just like \begin{equation} ..
+% ..\end{deqn} \end{equation} does, but gives it a number such as
+% '3a' instead of '3' (always 'a').
+%
+% \begin{dleqn} typesets an equation just like \begin{deqn} .. \end{deqn}
+% ..\end{dleqn} does, but with the equation number left-aligned.
+%
+% \begin{ddeqn} typesets an equation just like \begin{equation} ..
+% ..\end{ddeqn} \end{equation} does, but gives it a number such as
+% '3b', '3c'... instead of '3', '4'... when following after
+% another partially numbered equation. When following
+% after an ordinarily numbered equation ('3') it gives
+% a partial equation number with the last used ordinary
+% equation number, e.g. '3a'. Can be made to produce the
+% result of 'deqn' environment by the use of '\nydeqno'.
+%
+% \begin{ddleqn} typesets an equation just like \begin{ddeqn} .. \end{ddeqn}
+% ..\end{ddleqn does, but with the equation number left-aligned.
+%
+% \begin{deqarr} typesets an equation array just like \begin{eqnarray} ..
+% ..\end{deqarr} \end{eqnarray} does, but gives the first numbered
+% equation a number like '3a' instead of '3' (always 'a'),
+% and the following '3b', '3c' etc. The '\nonumber' command
+% works just like in the 'equationarray' environment.
+%
+% \begin{dleqarr} typesets an equation array just like \begin{dleqarr} ..
+% ..\end{dleqarr} \end{dleqarr} does, but with the equation numbers
+% left-aligned.
+%
+% \begin{ddeqar} typesets an equation array just like \begin{eqnarray} ..
+% ..\end{ddeqar} \end{eqnarray} does, but gives the equation numbers such
+% as '3a' if following after an equation numbered '3'
+% (ordinary equation number) and numbers such as '3c' if
+% following after a partially numbered equation '3b'.
+% Can be made to produce the result of 'deqarr' environment
+% by the use of '\nydeqno'. The '\nonumber' command
+% works just like in the 'equationarray' environment.
+%
+% \begin{ddleqar} typesets an equation array just like \begin{ddleqar} ..
+% ..\end{ddleqar} \end{ddleqar} does, but with the equation numbers
+% left-aligned.
+%
+% \nydeqno Used within 'deqarr', 'dleqarr', 'ddeqar', or 'ddleqar'
+% environments to step the main equation number by one
+% and reset the partial equation number to 'a'; thus,
+% '\nydeqno' gives equation number '4a' when following
+% equation '3c'.
+%
+% \heqno Used within 'deqarr', 'dleqarr', 'ddeqar', or 'ddleqar'
+% environments to step the main equation number by one and
+% to produce an ordinary equation number; thus, gives
+% equation number '4' when following equation '3c'.
+% Equations following the '\heqno'-ed will be partially
+% numbered with the '\heqno'-ed equation's number as the
+% main number, e.g. '4a' (unless it has a '\nydeqno'
+% command, which in this case would produce the equation
+% number '5a').
+%
+% \nydeleqno gives a new partial equation number when used in $$ ... $$.
+% Thus, writing '$$ ... \nydeleqno $$' is equivalent to
+% writing '\begin{deqn} ... \end{deqn}'.
+%
+% \nydelleqno gives a new partial left-aligned equation number when
+% used in $$ ... $$. Thus, writing '$$ ... \nydelleqno $$'
+% is equivalent to writing '\begin{dleqn} ... \end{dleqn}'.
+%
+% \deleqno gives a partial equation number when used in $$ ... $$.
+% Thus, writing '$$ ... \deleqno $$' is equivalent to
+% writing '\begin{ddeqn} ... \end{ddeqn}'.
+%
+% \delleqno gives a partial left-aligned equation number when
+% used in $$ ... $$. Thus, writing '$$ ... \delleqno $$'
+% is equivalent to writing '\begin{ddleqn} ... \end{ddleqn}'.
+%
+% \reqno{FOO} is used when repeating equations with its original number.
+% '\reqno' takes the argument 'FOO', which has to be defined
+% by a '\label{FOO}' in the original equation. It can
+% only be used within $$ ... $$. It does not affect the
+% equation number counter, nor the partial equation number
+% counter. However, it resets the partial equation number
+% counter for the '\rndeqno', '\rndleqno', '\rdeqno', and
+% '\rdleqno' commands. If used with a '\label{FOOO}'
+% command, the .aux-file will only contain the page number
+% of label {FOOO}.
+%
+% \rleqno{FOO} same as '\reqno{FOO}' but left-aligns the equation number.
+%
+% \rndeqno{FOO} adds a partial equation number to an old equation number,
+% specified by the FOO label. If FOO refers to equation
+% '4', '\rdeqno{FOO}' will result in equation number '4a'
+% (always 'a'). It can only be used within
+% $$ ... $$. It does not affect the equation number counter,
+% nor the partial equation number counter. However, it
+% resets the partial equation number counter for the
+% '\rndeqno', '\rndleqno', '\rdeqno', and '\rdleqno' commands.
+% The argument of '\rndeqno' follows the same rules as that of
+% '\reqno'. When used with the '\label{FOOO}' command, a
+% reference to FOOO will only return the partial equation
+% number. To make a complete reference to an equation
+% which has a '\rndeqno' command, say '\ref{FOO}\ref{FOOO}'.
+%
+% \rndleqno{FOO} same as '\rndeqno{FOO}' but left-aligns the equation number.
+%
+% \rdeqno{FOO} same as '\rndeqno{FOO}' but without resetting any
+% equation number counter and giving consecutive partial
+% equation numbers ('4b', '4c', etc.).
+% NOTE: There is nothing preventing the repeated use of
+% '\rndeqno{FOO}' and '\rdeqno{FOO}' for the same label
+% FOO. This will result in numbering such as '3a' (if
+% FOO refers to equation '3') occuring several times.
+%
+% \rdleqno{FOO} same as '\rdeqno{FOO}' but left-aligns the equation number.
+%
+% \mthref{FOO} same as ordinary '\ref{FOO}' but does not type-set the
+% '??' in '\bf' font if occurring within mathmode.
+% 'deleq.sty' makes use of this to avoid interruptions when
+% LaTeX-ing documents containing '\reqno', '\rleqno',
+% '\rndeqno', '\rndleqno', '\rdeqno', or '\rdleqno'. It
+% can be used also outside mathmode, and behaves then
+% just like '\ref{FOO}'. Warnings are the same as
+% when using '\ref{FOO}'.
+%
+%
+% The file itself begins here
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% deleq.sty Version 3.02, Sept. 8, 1994
+% (c) 1994 by Mats Dahlgren (matsd@physchem.kth.se or mats@fenk.wau.nl)
+%
+\typeout{deleq.sty included, version 3.02 (Sept. 8, 1994). (c) 1994 by Mats Dahlgren}
+%% Part 0: Compatibility with older TeX/LaTeX versions than 3.141/2.09
+\@ifundefined{mathrm}{\def\mathrm{\rm}}{\def\rm{\mathrm}}
+\@ifundefined{mathcal}{\def\mathcal{\cal}}{}
+\@ifundefined{reset@font}{\def\reset@font{\hspace*{0pt}}}{}
+\def\deleqver{{\tt deleq.sty} version 3.02 (Sept.~8, 1994)}
+%% Part 1: Counters etc.
+\newcounter{deleq}[equation]
+\newcounter{Deleq}
+\newcount\@deqpen
+\newcount\@deqcnt
+\def\aLph#1{\@aLph{\@nameuse{c@#1}}}
+\def\@aLph#1{\ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
+ k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or
+ z\else\@ctrerr\fi}
+\def\thedeleq {\theequation\mathrm{\aLph{deleq}}}
+\def\theDeleq {\mathrm{\aLph{Deleq}}}
+\def\@deleqnnum{{\reset@font\rm (\thedeleq)}}
+\def\@delleqnnum{\hbox to .01\p@{}\rlap{\reset@font\rm
+ \hskip -\displaywidth(\thedeleq)}}
+\def\mthref#1{\@ifundefined{r@#1}{\ifmmode \mathrm{??} \else
+ {\reset@font\bf ??} \fi\@warning {Reference `#1' on page \thepage \space
+ undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter
+ \@car\@tempa \@nil\null}}
+%% Part 2: \nydeleqno and \deleqno, with leftists
+\def\nydeleqno{\refstepcounter{equation}\refstepcounter{deleq}
+ \let\@currentlabel\thedeleq \eqno (\thedeleq)}
+\def\deleqno{\refstepcounter{deleq} \let\@currentlabel\thedeleq
+ \eqno (\thedeleq)}
+\def\nydelleqno{\refstepcounter{equation}\refstepcounter{deleq}
+ \let\@currentlabel\thedeleq \leqno (\thedeleq)}
+\def\delleqno{\refstepcounter{deleq} \let\@currentlabel\thedeleq
+ \leqno (\thedeleq)}
+%% Part 3: \reqno, \rndeqno, and \rdeqno, with leftists
+\newcommand{\reqno}[1]{\setcounter{Deleq}{-1}\refstepcounter{Deleq}
+ \eqno (\mthref{#1}) }
+\newcommand{\rdeqno}[1]{\refstepcounter{Deleq}
+ \eqno (\mthref{#1}\theDeleq)}
+\newcommand{\rndeqno}[1]{\setcounter{Deleq}{0}\refstepcounter{Deleq}
+ \eqno (\mthref{#1}\theDeleq)}
+\newcommand{\rleqno}[1]{\setcounter{Deleq}{-1}\refstepcounter{Deleq}
+ \leqno (\mthref{#1}) }
+\newcommand{\rdleqno}[1]{\refstepcounter{Deleq}
+ \leqno (\mthref{#1}\theDeleq)}
+\newcommand{\rndleqno}[1]{\setcounter{Deleq}{0}\refstepcounter{Deleq}
+ \leqno (\mthref{#1}\theDeleq)}
+%% Part 4: 'deqarr' environment
+\def\@deqncr{{\ifnum0=`}\fi\@ifstar{\global\@deqpen\@M
+ \@ydeqncr}{\global\@deqpen\interdisplaylinepenalty \@ydeqncr}}
+\def\@ydeqncr{\@ifnextchar [{\@xdeqncr}{\@xdeqncr[\z@]}}
+\def\@xdeqncr[#1]{\ifnum0=`{\fi}\@@deqncr
+ \noalign{\penalty\@deqpen\vskip\jot\vskip #1\relax}}
+\def\@@deqncr{\let\@tempa\relax
+ \ifcase\@deqcnt \def\@tempa{& & &}\or \def\@tempa{& &}%
+ \else \def\@tempa{&}\fi
+ \@tempa \if@eqnsw\@deleqnnum\stepcounter{deleq}\fi
+ \global\@eqnswtrue\global\@deqcnt\z@\cr}
+\def\deqarr{\stepcounter{equation}\stepcounter{deleq}
+ \let\@currentlabel\thedeleq
+ \global\@eqnswtrue\m@th
+ \global\@deqcnt\z@\tabskip\@centering\let\\\@deqncr
+ $$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering
+ $\displaystyle\tabskip\z@{##}$&\global\@deqcnt\@ne
+ \hskip 2\arraycolsep \hfil${##}$\hfil
+ &\global\@deqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+\def\enddeqarr{\@@deqncr\egroup
+ \global\advance\c@deleq\m@ne$$\global\@ignoretrue}
+%% Part 4b: 'dleqarr' environment
+\def\@dleqncr{{\ifnum0=`}\fi\@ifstar{\global\@deqpen\@M
+ \@ydleqncr}{\global\@deqpen\interdisplaylinepenalty \@ydleqncr}}
+\def\@ydleqncr{\@ifnextchar [{\@xdleqncr}{\@xdleqncr[\z@]}}
+\def\@xdleqncr[#1]{\ifnum0=`{\fi}\@@dleqncr
+ \noalign{\penalty\@deqpen\vskip\jot\vskip #1\relax}}
+\def\@@dleqncr{\let\@tempa\relax
+ \ifcase\@deqcnt \def\@tempa{& & &}\or \def\@tempa{& &}%
+ \else \def\@tempa{&}\fi
+ \@tempa \if@eqnsw\@delleqnnum\stepcounter{deleq}\fi
+ \global\@eqnswtrue\global\@deqcnt\z@\cr}
+\def\dleqarr{\stepcounter{equation}\stepcounter{deleq}
+ \let\@currentlabel\thedeleq
+ \global\@eqnswtrue\m@th
+ \global\@deqcnt\z@\tabskip\@centering\let\\\@dleqncr
+ $$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering
+ $\displaystyle\tabskip\z@{##}$&\global\@deqcnt\@ne
+ \hskip 2\arraycolsep \hfil${##}$\hfil
+ &\global\@deqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+\def\enddleqarr{\@@dleqncr\egroup
+ \global\advance\c@deleq\m@ne$$\global\@ignoretrue}
+%% Part 5: 'ddeqar' environment
+\def\ddeqar{\stepcounter{deleq}
+ \let\@currentlabel\thedeleq
+ \global\@eqnswtrue\m@th
+ \global\@deqcnt\z@\tabskip\@centering\let\\\@deqncr
+ $$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering
+ $\displaystyle\tabskip\z@{##}$&\global\@deqcnt\@ne
+ \hskip 2\arraycolsep \hfil${##}$\hfil
+ &\global\@deqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+\def\endddeqar{\enddeqarr}
+%% Part 5b: 'ddleqar' environment
+\def\ddleqar{\stepcounter{deleq}
+ \let\@currentlabel\thedeleq
+ \global\@eqnswtrue\m@th
+ \global\@deqcnt\z@\tabskip\@centering\let\\\@dleqncr
+ $$\halign to\displaywidth\bgroup\@eqnsel\hskip\@centering
+ $\displaystyle\tabskip\z@{##}$&\global\@deqcnt\@ne
+ \hskip 2\arraycolsep \hfil${##}$\hfil
+ &\global\@deqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+\def\endddleqar{\enddleqarr}
+%% Part 6: 'deqn' and 'ddeqn' environments, with leftists
+\def\deqn{$$\refstepcounter{equation}\stepcounter{deleq}
+ \let\@currentlabel\thedeleq}
+\def\enddeqn{\eqno \hbox{\@deleqnnum} $$\global\@ignoretrue}
+\def\ddeqn{$$\refstepcounter{deleq} \let\@currentlabel\thedeleq}
+\def\endddeqn{\eqno \hbox{\@deleqnnum} $$\global\@ignoretrue}
+\def\dleqn{\deqn}
+\def\enddleqn{\leqno \hbox{\@deleqnnum} $$\global\@ignoretrue}
+\def\ddleqn{\ddeqn}
+\def\endddleqn{\leqno \hbox{\@deleqnnum} $$\global\@ignoretrue}
+%% Part 7: \nydeqno and \heqno
+\def\nydeqno{\stepcounter{equation}\stepcounter{deleq}}
+\def\heqno{\stepcounter{equation}}
+%% END of it all!
diff --git a/macros/latex209/contrib/misc/diagmac.sty b/macros/latex209/contrib/misc/diagmac.sty
new file mode 120000
index 0000000000..6cf14e4009
--- /dev/null
+++ b/macros/latex209/contrib/misc/diagmac.sty
@@ -0,0 +1 @@
+../../../latex/contrib/diagmac/diagmac.sty \ No newline at end of file
diff --git a/macros/latex209/contrib/misc/diagramdoc.tex b/macros/latex209/contrib/misc/diagramdoc.tex
new file mode 100644
index 0000000000..3995d54999
--- /dev/null
+++ b/macros/latex209/contrib/misc/diagramdoc.tex
@@ -0,0 +1,968 @@
+% This document should be typeset with LaTeX;
+% it gives a basic user's information about the diagram macros.
+% Those macros are necessary for this typesetting,
+% so make sure the "diagram" document is in your TeX file.
+% Print the document in the "landscape" position
+% or remove the instructions \oddsidemargin168mm and
+% evensidemargin29mm from the preamble.
+% The size of the output has been choosen so that two pages
+% of the document can fit nicely on a A4 page.
+
+%% Lines with two %-signs were commented away by Nico verwer,
+%% to make this document a4-sized.
+%% To restore this file to its original, search for all lines
+%% containing %%.
+%% \documentstyle[twoside]{article}
+\documentstyle[a4]{article} %% remove this line to restore original.
+
+\input{diagram}
+
+%% \hoffset-23.5mm
+%% \voffset-20mm
+%% \oddsidemargin168mm
+%% \evensidemargin27mm
+%% \textheight 454pt
+%% \textwidth 283pt
+\pagestyle{myheadings}
+\markboth{}{}
+
+
+\newcommand{\bs}{$\backslash$}
+\newcommand{\p}{\hspace{14pt}}
+\newcommand{\vb}{\verb}
+\newcommand{\tab}{\begin{tabular}}
+\newcommand{\TAB}{\end{tabular}}
+\newcommand{\D}{{\em Diagram}}
+\newcommand{\tc}[1]{\par\noindent#1}
+
+\title{User's guide for the {\em Diagram} Macros}
+\author{Francis Borceux}
+\date{UCL, Louvain-la-Neuve,Belgium.
+\thanks{bitnet:FBORCEUX@BUCLLN11}}
+
+\begin{document}
+
+
+\maketitle
+
+\thispagestyle{empty}
+
+%\LARGE\bf\noindent Contents\vspace{10pt}
+%
+%\normalsize
+%
+%
+%\tc{\makebox[6mm][r]{1.} What are the {\em Diagram}
+%Macros?\dotfill2}
+%\tc{\makebox[6mm][r]{2.} Inserting in-text arrows.\dotfill2}
+%\tc{\makebox[6mm][r]{3.} Backward in-text arrows.\dotfill3}
+%\tc{\makebox[6mm][r]{4.} Naming the in-text arrows.\dotfill4}
+%\tc{\makebox[6mm][r]{5.} Emphasizing an arrow.\dotfill5}
+%\tc{\makebox[6mm][r]{6.} Primary diagram arrows.\dotfill5}
+%\tc{\makebox[6mm][r]{7.} Secondary diagram arrows.\dotfill6}
+%\tc{\makebox[6mm][r]{8.} Ternary diagram arrows.\dotfill7}
+%\tc{\makebox[6mm][r]{9.} Naming the diagram arrows.\dotfill9}
+%\tc{\makebox[6mm][r]{10.} Conceiving a diagram.\dotfill10}
+%\tc{\makebox[6mm][r]{11.} Typing a diagram.\dotfill12}
+%\tc{\makebox[6mm][r]{12.} The variable length option.\dotfill14}
+%\tc{\makebox[6mm][r]{13.} Superposing items in a
+%diagram.\dotfill16}
+%\tc{\makebox[6mm][r]{14.} Drawing curved arows.\dotfill17}
+%\tc{\makebox[6mm][r]{15.} The free slope arrows.\dotfill19}
+%\tc{\makebox[6mm][r]{16.} The scaling option.\dotfill21}
+%\tc{\makebox[6mm][r]{17.} Final adjustments.\dotfill22}
+%\tc{\makebox[6mm][r]{18.} Some special characters.\dotfill24}
+
+\tableofcontents
+\pagebreak
+
+
+\section{What are the {\em Diagram} Macros?}
+
+\p{\em Diagram} is a series of Macros intended to produce
+easily rather sophisticated diagrams which can appear when typing
+category theory. The range of arrows which can be produced includes
+plain morphisms, dotted morphisms, monomorphisms, epimorphisms,
+bimorphisms, isomorphisms, equalities, pairs of parallel arrows
+and pairs of adjoint arrows. Most arrows can be drawned in the
+sixteen basic directions of the compass-card (and this inspires
+the terminology). Some curved arrows are also available. All
+these arrows can be given a name, on either side of the arrow.
+For emphasizing, arrows can be printed in bold-face type. Except
+for some special features, the Macros will take care of choosing
+the correct length of each arrow as well as positioning
+correctly the various elements which appear in the diagram. The
+final result will be a diagram with rows and columns at a
+distance of 80 points (1.1in, 28mm) from each other; this
+standard distance can be changed for every individual diagram
+just by giving a scaling factor.
+
+
+{\em Diagram} includes also a list of in-text symbols containing in
+particular the same variety of arrows in both the forward and the
+backward directions.
+
+The {\em Diagram} Macros are \LaTeX\ Macros which make an
+intensive use of the \LaTeX\ picture environment and in
+particular of the \vb+\vector+ command. To use them for producing
+a document, it suffices to have in your \TeX\ file a copy of the
+file {\em diagram} and to call it with the command
+\vb+\input{diagram}+, in the preamble of your new document. The
+{\em Diagram} macros will give good results with 10pt, 11pt and
+12pt styles.The following sections should provide you with full
+information on how to use the {\em Diagram} macros for producing
+your documents.
+
+
+\section{Inserting in-text arrows.}
+
+\p An in-text arrow is one which you include in a line of text, like
+for example when you write:
+\begin{quote}Let $f:A\mono B$ be a monomorphism \ldots \end{quote}
+Here are the available in-text arrows and the corresponding
+commands. The length of an in-text arrow is 20pt.
+
+\begin{tabular}{lll}
+plain arrow&\vb+\ar+&\ar\\
+dotted arrow&\vb+\dotar+&\dotar\\
+monomorphism&\vb+\mono+&\mono\\
+epimorphism&\vb+\epi+&\epi\\
+bimorphism&\vb+\bimo+&\bimo\\
+isomorphism&\vb+\iso+&\iso\\
+pair of parallel arrows&\vb+\biar+&\biar\\
+equality&\vb+\eql+&\eql\\
+pair of adjoint arrows&\vb+\adjar+&\adjar
+\end{tabular}
+
+\vspace{3pt}
+
+When you insert an in-text arrow, the {\em Diagram} Macros will
+take care of the spacing at both ends of the arrow. The in-text
+arrow commands can be used both in paragraph and in Math mode, but
+normally you should use them in Math mode to print the surrounding
+characters in Math italic. Compare indeed\\
+%\hspace*{-10mm}%
+\begin{tabular}{ll}
+\vb+Let f:A\epi B be an epimorphism +
+&Let f:A\epi B be an epimorphism \TAB
+
+\noindent with\\
+%\hspace*{-10mm}%
+\tab{ll}
+\vb+Let $f:A\epi B$ be an epimorphism+
+&Let $f:A\epi B$ be an epimorphism
+\TAB
+
+\section{Backward in-text arrows.}
+
+\p It is a general rule of the {\em Diagram} Macros that to draw an
+arrow in some given direction, it suffices to preceed the name of
+the arrow by a code for the direction. To draw an in-text arrow in
+the backward direction, it suffices to add the prefix \vb+bk+ to
+the command for that arrow.
+
+\begin{tabular}{lll}
+backward plain arrow&\vb+\bkar+&\bkar\\
+backward dotted arrow&\vb+\bkdotar+&\bkdotar\\
+backward monomorphism&\vb+\bkmono+&\bkmono\\
+backward epimorphism&\vb+\bkepi+&\bkepi\\
+backward bimorphism&\vb+\bkbimo+&\bkbimo\\
+backward isomorphism&\vb+\bkiso+&\bkiso\\
+backward pair of parallel arrows&\vb+\bkbiar+&\bkbiar\\
+backward equality&\vb+\bkeql+&\bkeql\\
+backward pair of adjoint arrows&\vb+\bkadjar+&\bkadjar
+\end{tabular}
+
+\section{Naming the in-text arrows.}
+
+\p In a line of text, it is probably a better idea to type
+\mbox{$f:A\bimo B$} than $A\Bimo{f}B$. Nevertheless the \D\ Macros
+allow you to give an upper name to the single in-text arrows as well
+as an upper-lower name to the double in-text arrows. It is a general
+rule of the \D\ Macros that to give an upper name to a single arrow
+or an upper-lower name to a double arrow, it suffices \nolinebreak
+to
+
+\begin{enumerate}
+\item type the first letter of the corresponding command as an
+upper-case letter
+\item give the name(s) of the arrow(s) as argument(s) of the
+command.
+\end{enumerate}
+Here is a list of the available named in-text arrows:\vspace{5pt}
+
+%\hspace*{-7mm}%
+\begin{tabular}{lll}
+plain arrow $f$&\vb+\Ar{f}+&\Ar{f}\\
+dotted arrow $f$&\vb+\Dotar{f}+&\Dotar{f}\\
+monomorphism $f$&\vb+\Mono{f}+&\Mono{f}\\
+epimorphism $f$&\vb+\Epi{f}+&\Epi{f}\\
+bimorphism $f$&\vb+\Bimo{f}+&\Bimo{f}\\
+isomorphism $f$&\vb+\Iso{f}+&\Iso{f}\\
+pair of parallel arrows $f, g$&\vb+\Biar{f}{g}+&\Biar{f}{g}\\
+pair of adjoint arrows $f, g$&\vb+\Adjar{f}{g}+&\Adjar{f}{g}\\
+backward plain arrow $f$&\vb+\Bkar{f}+&\Bkar{f}\\
+backward dotted arrow $f$&\vb+\Bkdotar{f}+&\Bkdotar{f}\\
+backward monomorphism $f$&\vb+\Bkmono{f}+&\Bkmono{f}\\
+backward epimorphism $f$&\vb+\Bkepi{f}+&\Bkepi{f}\\
+backward bimorphism $f$&\vb+\Bkbimo{f}+&\Bkbimo{f}\\
+backward isomorphism $f$&\vb+\Bkiso{f}+&\Bkiso{f}\\
+pair of parallel backward arrows $f,g$
+&\vb+\Bkbiar{f}{g}+&\Bkbiar{f}{g}\\
+backward pair of adjointarrows $f, g$
+&\vb+\Bkadjar{f}{g}+&\Bkadjar{f}{g} \end{tabular}
+\vspace{5pt}
+
+The name of an arrow will always be processed in Math mode at the
+scripstyle size; therefore the text characters will be printed in
+Math italic and you should not type any \$ sign to introduce a
+mathematical symbol in the name of an arrow.
+
+\section{Emphasizing an arrow.}
+
+\p The dotted arrows are a first type of emphasized arrows; their
+construction is rather slow. It will be easier for \LaTeX\ to
+print an arrow in bold face style: to realize this, just preceed
+the command for the arrow by the command \vb+\B+; thus
+\vb+$A\B\Mono{f}B$+ produces $A\B\Mono{f}B$. That ``bolding''
+process applies to both the ``in text'' and the ``diagram''
+arrows.
+
+\section{Primary diagram arrows.}
+
+\p The {\em diagram arrows} are those arrows specially designed to
+fit nicely in a diagram; their variety and their names are the same
+as those of in-text arrows: plain arrow (\vb+ar+), dotted arrow
+(\vb+dotar+), monomorphism (\vb+mono+), epimorphism (\vb+epi+),
+bimorphism (\vb+bimo+), isomorphism (\vb+iso+), pair of parallel
+arrows (\vb+biar+), equality (\vb+eql+) and pair of adjoint arrows
+(\vb+adjar+). You should never use an in-text arrow in a diagram
+nor a diagram arrow in a line of text: the technical
+characteristics of those pictures are just incompatible!
+
+While an in-text arrow is always horizontal, the possibility must
+exist to give a diagram arrow a rather arbitrary direction. For
+that reason the name of a diagram arrow starts {\em always} with
+the prefix indicating its direction, even in the case of an
+horizontal right pointing arrow. The direction of an arrow is
+indicated by a direction of the compass-card, using the
+classical abbreviations:
+
+\tab{llll}
+north( \vb+n+ )&south( \vb+s+ )&east( \vb+e+ )&west( \vb+w+ )
+\TAB
+
+The command for producing a primary arrow is obtained by
+typing the abbreviation for its direction followed by the
+abbreviation for the type of arrow. For example the command
+\vb+\wbimo+ will produce a west pointing bimorphism. Here are
+other examples.
+\DIAG
+{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \nn
+{} \n {} \n {\naR{\mbox{\bs\tt nar}}} \n {} \n {}J\nn
+{\bullet} \n {\Wmono{\mbox{\bs\tt wmono}}} \n {\bullet}\n
+{\Eepi{\mbox{\bs\tt eepi}}} \n {\bullet} \nn
+{} \n {} \n {\Sbiar{}{\mbox{\bs\tt sbiar}}} \n {} \n {} \nn
+{\bullet} \n {} \n {\bullet} \n {} \n {\bullet}
+\diag
+
+The case of adjoint arrows requires a comment. For east and west
+pairs of adjoint arrows, the direction is that of the lower arrow;
+for north and south pairs of adjoint arrows, the direction is that
+of the left arrow.
+
+The standard length of a primary arrow is 50pt, but the length of
+an {\em horizontal} arrow is automatically adjusted when the
+adjacent vertices have too long names.
+
+\section{Secondary diagram arrows.}
+
+\p The secondary diagram arrows are those which are oriented in
+the secondary directions of the compass-card; here are thus the
+possible directions and the corresponding abbreviations:
+
+\tab{ll}
+north-east ( \vb+ne+ )&south-east ( \vb+se+ )\\
+north-west ( \vb+nw+ )&south-west ( \vb+sw+ )
+\TAB
+
+The variety of available arrows is the same as for primary arrows:
+plain arrow (\vb+ar+), dotted arrow (\vb+dotar+), monomorphism
+(\vb+mono+), epimorphism (\vb+epi+), bimorphism (\vb+bimo+),
+isomorphism (\vb+iso+), pair of parallel arrows (\vb+biar+),
+equality (\vb+eql+) and pair of adjoint arrows (\vb+adjar+).
+Just as for primary arrows, a secondary arrow is obtained by
+typing the abbreviation for its direction followed by the
+abbreviation for the type of arrow. For example the command
+\vb+\swbiar+ will produce a pair of sout-west pointing arrows.
+Here are some examples of what you can produce as secondary
+diagram arrows:
+
+
+\DIAG
+{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \nn
+{} \n {\nwbimO{\mbox{\bs\tt nwbimo}}} \n {}
+\n {\Neadjar{}{\mbox{\bs\tt neadjar}}} \n {}J\nn
+{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \nn
+{} \n {\Swiso{\mbox{\bs\tt swiso}}} \n {}
+\n {\Sedotar{\mbox{\bs\tt sedotar}}} \n {} \nn
+{\bullet} \n {} \n {\bullet} \n {} \n {\bullet}
+\diag
+
+The case of a pair of adjoint arrows requires again a comment. The
+direction is always that of the lower arrow.
+
+The secondary diagram arrows have a standard horizontal extent
+equal to 58pt.
+
+\section{Ternary diagram arrows.}
+
+\p The ternary diagram arrows are those which are oriented along
+the diagonals of a rectangle of sides 1,2. Taking some liberty with
+trigonometry and geography, we shall name them after the ternary
+directions of the compass-card. Thus, here are the available
+directions and the corresponding abbreviations:
+\begin{center}
+\tab{ll}
+north-north-east ( \vb+nne+ )&east-north-east ( \vb+ene+ )\\
+east-south-east ( \vb+ese+ )&south-south-east ( \vb+sse+ )\\
+south-south-west ( \vb+ssw+ )&west-south-west ( \vb+wsw+ )\\
+west-north-west ( \vb+wnw+ )&north-north-west ( \vb+nnw+ )
+\TAB
+\end{center}
+
+The only type of ternary arrows provided by the \D\ Macros are the
+plain arrows. Again you will obtain the command for a ternary arrow
+by preceeding the abbreviation \vb+ar+ with the prefix indicating the
+direction of the arrow. Here are thus the eight available ternary
+arrows:\\
+%\hspace*{-10mm}%
+\begin{minipage}{12cm}
+\DIAG
+{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \n {} \n
+{\bullet} \n {} \n {\bullet} \nn
+{} \n {} \n {} \n {} \n {} \n {} \n {} \n {} \n {} \nn
+{\bullet} \n {} \n {\bullet} \n {\nnwaR{\mbox{\bs\tt nnwar}}} \n
+{\bullet} \n {\nneaR{\mbox{\bs\tt nnear}}} \n {\bullet} \n {} \n
+{\bullet} \nn
+{} \n {} \n {\wnwaR{\mbox{\bs\tt wnwar}}} \n {} \n {} \n {} \n
+{\eneaR{\mbox{\bs\tt enear}}} \n {} \n {} \nn
+{\bullet} \n {} \n{\bullet} \n {} \n {\bullet} \n {} \n
+{\bullet} \n {} \n {\bullet} \nn
+{} \n {} \n {\Wswar{\mbox{\bs\tt wswar}}} \n {} \n {} \n {} \n
+{\Esear{\mbox{\bs\tt esear}}} \n {} \n {} \nn
+{\bullet} \n {} \n {\bullet} \n {\Sswar{\mbox{\bs\tt sswar}}} \n
+{\bullet} \n {\Ssear{\mbox{\bs\tt ssear}}} \n {\bullet} \n {} \n
+{\bullet} \nn
+{} \n {} \n {} \n {} \n {} \n {} \n {} \n {} \n {} \nn
+{\bullet} \n {} \n {\bullet} \n {} \n {\bullet} \n {} \n
+{\bullet} \n {} \n {\bullet}
+\diagv{23}{0}{0}
+\end{minipage}
+
+A ternary diagram arrow has a standard horizontal extent equal to
+66pt or 132pt according to the case.
+
+\section{Naming the diagram arrows.}
+
+\p The rules for naming the diagram arrows are analogous to those
+for naming the in-text arrows, with the additional possibility of
+naming the arrow on either of its sides. It suffice to type the
+first or the last letter of the command as an upper-case letter
+and give the name of the arrow as an argument. Here is an exhaustive
+list of the available possibilities.
+
+\begin{description}
+\item[Eql:] An equality cannot be named
+\item[Vertical ar, mono, epi, bimo:] A first upper-case letter
+produces a left name and a last upper-case letter produces a
+right name; thus type \vb+\Smono{f}+ to draw a south monomorphism
+with left name $f$ and \vb+\nepI{g}+ to draw a north epimorphism
+with right name $g$.
+\item[Non-vertical ar, mono, epi, bimo:] A first upper-case letter
+produces an upper name and a last upper-case letter produces a
+lower name; thus type \vb+\War{f}+ to draw a west arrow with upper
+name $f$ and \vb+\nebimO{g}+ to draw a north-east bimorphism with
+lower name $g$.
+\item[Horizontal iso:] A first upper-case letter
+produces an upper name and a last upper-case letter produces a
+lower name; thus type \vb+\Wiso{f}+ to draw a west isomorphism with
+upper name $f$ and \vb+\eisO{g}+ to draw an east isomorphism
+with lower name $g$.
+\item[Non-horizontal iso:] Type a first upper-case letter to name
+it; the name will appear on one side of the arrow and the
+``isomorphism symbol'' on the other side; thus \vb+\Nwiso{f}+ draws
+a north-west isomorphism with name $f$.
+\item[Vertical biar, adjar:] Type a first upper-case letter to name
+them and give successively the name of the left arrow and that of
+the right arrow; thus \vb+\Sbiar{f}{g}+ draws a pair of south
+arrows with left name $f$ and right name $g$.
+\item[Non-vertical biar, adjar:] Type a first upper-case letter to
+name them and give successively the name of the upper arrow and
+that of the lower arrow; thus \vb+\Seadjar{f}{g}+ will produce a
+south-east pair of adjoint arrows with upper name $f$ and lower
+name $g$.
+\end{description}
+
+The name of an arrow will always be processed in Math mode at the
+textstyle size; therefore the text characters will be printed in
+Math italic and you should not type any \$ sign to introduce a
+mathematical symbol in the name of an arrow. The name of an arrow
+will automatically be positioned in order not to bump into the
+corresponding arrow.
+
+\section{Conceiving a diagram.}
+
+\p We are now arriving at the central section of this user's guide:
+the one which describes the basic principle for realizing a
+diagram. This will be better explained on an example. Let us
+therefore suppose you want to construct the following diagram.
+\DIAG
+{X} \n {} \n {} \n {} \n {} \nn
+{} \n {\Sedotar{z}} \n {\Esear{y}} \n {} \n {} \nn
+{} \n {\sseaR{x}} \n {P} \n {\Eepi{k}} \n {B} \nn
+{} \n {} \n {\Smono{h}} \n {} \n {\smonO{g}} \nn
+{} \n {} \n {A} \n {\eepI{f}} \n {C}
+\diag
+
+This diagram contains several items: five vertices $A,B,C,P,X$,
+four primary arrows, one secondary arrow and two ternary arrows;
+one of the arrows is emphasized. All those items are very different
+in nature, size, orientation, position \ldots The first basic rule
+for conceiving a diagram is to ignore completely all those
+differences and just treat equally all those items; this allows a
+maximum of flexibility and simplicity. To realize this, the \D\
+Macros consider a formal pattern of points, at a 40pt distance from
+each other, both horizontally and vertically. Then each item of the
+diagram is {\em centered} at one of the points of the pattern, using
+the {\em picture} environment.
+
+Let us for example visualize the pattern of points on which the
+previous diagram has been constructed.
+\newcommand{\pat}
+{\begin{picture}(0,0)
+\multiput(-8000,-8000)(4000,0){5}{\circle*{300}}
+\multiput(-8000,-4000)(4000,0){5}{\circle*{300}}
+\multiput(-8000,0)(4000,0){5}{\circle*{300}}
+\multiput(-8000,4000)(4000,0){5}{\circle*{300}}
+\multiput(-8000,8000)(4000,0){5}{\circle*{300}}
+\end{picture}}
+
+\DIAG
+{X} \n {} \n {} \n {} \n {} \nn
+{} \n {\Sedotar{z}} \n {\Esear{y}} \n {} \n {} \nn
+{} \n {\sseaR{x}} \n {\cross{P}{\pat}} \n {\Eepi{k}} \n {B} \nn
+{} \n {} \n {\Smono{h}} \n {} \n {\smonO{g}} \nn
+{} \n {} \n {A} \n {\eepI{f}} \n {C}
+\diag
+
+The complete pattern needs not be a square nor even a rectangle. It
+is just compulsory to start all the lines from a same (left) column
+and leave no hole at all in any line; but lines need not be of equal
+length. To fill in the holes which could appear inside a line, it
+suffices to attach empty items at the corresponding points of the
+pattern. Here is for example the set of items corresponding to the
+previous diagram.
+\vspace{10pt}
+
+\begin{center}
+\begin{picture}(200,200)
+\thicklines
+\put(0,0){\line(1,0){200}}
+\put(0,40){\line(1,0){200}}
+\put(0,80){\line(1,0){200}}
+\put(0,120){\line(1,0){200}}
+\put(0,160){\line(1,0){120}}
+\put(0,200){\line(1,0){40}}
+\put(0,0){\line(0,1){200}}
+\put(40,0){\line(0,1){200}}
+\put(80,0){\line(0,1){160}}
+\put(120,0){\line(0,1){160}}
+\put(160,0){\line(0,1){120}}
+\put(200,0){\line(0,1){120}}
+\put(20,180){\makebox(0,0){$X$}}
+\put(60,140){\makebox(0,0)
+{\normalsize\bs\tt\scriptsize Sedotar\{z\}}}
+\put(60,100){\makebox(0,0){\bs\tt\scriptsize
+sseaR\{x\}}} \put(100,140){\makebox(0,0){\bs\tt\scriptsize
+Esear\{y\}}} \put(100,100){\makebox(0,0){$P$}}
+\put(100,60){\makebox(0,0){\bs\tt\scriptsize Smono\{h\}}}
+\put(100,20){\makebox(0,0){$A$}}
+\put(140,100){\makebox(0,0){\bs\tt\scriptsize Eepi\{k\}}}
+\put(140,20){\makebox(0,0){\bs\tt\scriptsize eepI\{f\}}}
+\put(180,100){\makebox(0,0){$B$}}
+\put(180,60){\makebox(0,0){\bs\tt\scriptsize smonO\{g\}}}
+\put(180,20){\makebox(0,0){$C$}}
+\end{picture}
+\end{center}\vspace{10pt}
+
+\section{Typing a diagram.}
+
+\p Let us assume you have determined the nature and the position of
+each item of your diagram. Here is what you should type in order to
+give that information to the \D\ Macros.
+
+\begin{enumerate}
+\item Type the command \vb+\DIAG+ to start the typing of the
+diagram;
+this command will in particular start a {\em center} environment;
+it can be given both in paragraph and in math mode.
+\item Type between curly brackets the description of {\em every}
+item; this description will automatically be processed in Math mode.
+The empty items will thus appear as \{\} in your input.
+\item {\em Separate} two consecutive items in a same row by the
+``next item command'', which is \vb+\n+. The command \vb+\n+ may
+not appear before the first item of a row nor after the last item of
+a row.
+\item {\em Separate} two consecutive rows of items by the ``next
+row command'' which is \vb+\nn+. The command \vb+\nn+ may not appear
+before the first row of items nor after the last row of items.
+\item Type the command \vb+\diag+ to indicate the end of the
+diagram typing.
+\end{enumerate}
+
+When you type a diagram using the procedure just indicated, notice
+that between the two commands \vb+\DIAG+ and \vb+\diag+
+\begin{itemize} \item You can put as much space as you want in a
+line to make your input file easier to read;
+\item You should never use a \$ sign to type a mathematical symbol,
+except if you did include that symbol in a box.
+\end{itemize}
+
+With all that in mind, the diagram of the
+previous section can be typed as follows
+\begin{verbatim}
+\DIAG
+{X} \nn
+{} \n{\Sedotar{z}}\n{\Esear{y}} \nn
+{} \n{\sseaR{x}} \n{P} \n{\Eepi{k}}\n{B} \nn
+{} \n{} \n{\Smono{h}}\n{} \n{\smonO{g}}\nn
+{} \n{} \n{A} \n{\eepI{f}}\n {C}
+\diag
+\end{verbatim}
+or equivalently as
+\begin{verbatim}
+\DIAG{X}\n{}\n{}\n{}\n{}\nn{}\n{\Sedotar{z}}
+\n{\Esear{y}}\n{}\n{}\nn{}\n{\sseaR{x}}\n{P}
+\n{\Eepi{k}}\n{B}\nn{}\n{}\n{\Smono{h}}\n{}
+\n{\smonO{g}}\nn{}\n{}\n{A}\n{\eepI{f}}\n{C}\diag
+\end{verbatim}
+
+The \D\ Macros will automatically center the diagram horizontally
+on the page and will take care of the spacing with the preceeding
+and the following text. When a diagram is rather big, you should
+make it a figure or a table (see \LaTeX book, 3.5.1 page 60) to
+improve the quality of the page-making. If you want to align
+horizontally various small diagrams, consider these just as a
+unique wide diagram where some columns are completely empty.
+
+\section {The variable length option.}
+
+\p Suppose you want to produce the following diagram:
+\DIAG
+{A} \n {} \n {\Earv{f}{130}} \n {} \n {C} \nn
+{} \n {\seepI{p}} \n {} \n {\nemonO{i}} \n {} \nn
+{} \n {} \n {B} \n {} \n {}
+\diag
+Following the instructions of the previous sections you will
+type:
+\begin{verbatim}
+\DIAG
+{A}\n{} \n{\Ear{f}}\n{} \n{C}\nn
+{} \n{\seepI{p}}\n{} \n{\nemonO{i}}\nn
+{} \n{} \n{B} \nn
+\diag
+\end{verbatim}
+and you will get
+\DIAG
+{A} \n {} \n {\Ear{f}} \n {} \n {C} \nn
+{} \n {\seepI{p}} \n {} \n {\nemonO{i}} \n {} \nn
+{} \n {} \n {B} \n {} \n {}
+\diag
+which is not exactly what you wanted!
+
+The \D\ Macros assume that a primary arrow connects two vertices
+attached at the two horizontally adjacent points of the pattern, and
+a corresponding assumption is made for the secondary and the ternary
+arrows. The east arrow of the previous diagram does not satisfy
+that assumption: it connects vertices situated at a four intervals
+distance. The \D\ Macros provide you with a {\em variable length
+option} which allows you to modify the length of an arrow in order
+to take care of such particularities. The ``variable length
+option'' is a special feature, which means that the \D\ Macros need
+your help to handle the problem. In fact, what you have to do is to
+decide the new length of the arrow.
+
+Not all arrows have been provided with a ``variable length
+option''; here are the possibilities:
+\begin{itemize}
+\item All the primary arrows, named or unamed, admit a variable
+length option.
+\item The four secondary plain arrows, named or unamed, admit a
+variable length option; the other secondary arrows are not provided
+with the variable length option.
+\item The ternary arrows do not have the variable length option.
+\end{itemize}
+
+To take advantage of the variable length option, it suffices to
+follow the name of the corresponding command with the lower-case
+letter \vb+v+ and give to that command an additional last argument
+which will be
+\begin{itemize}
+\item The new length of the arrow in the case of a primary arrow
+\item The new horizontal extent of the arrow in the case of a
+secondary arrow;
+\end{itemize}
+those two lengthes must be expressed in points. The new arrow will
+still be centered with respect to the corresponding point of the
+pattern. For example typing \vb+\Earv{f}{130}+ for the east
+arrow of the previous diagram will produce the desired result as in
+the first diagram. Typing \vb+\smonOv{g}{30}+ will produce a south
+monomorphism with right name $g$ and length 30 points, typing
+\vb+\Wadjarv{f}{g}{100}+ will produce a west pair of adjoint arrows
+with names $f,g$ and length 100 points and typing \vb+\near{82.5}+
+will produce an unamed north-east arrow with horizontal extent 82.5
+points.
+
+The standard length of a primary arrow is 50pt; since each
+interval of the pattern has length 40pt, the new length of a primary
+arrow will be $$50+(n\times 40)$$
+where $n$ is the number of intervals the arrow crosses. In the
+same way the horizontal extent of a secondary arrow is 58pt,
+so that the new horizontal extent of a secondary arrow will be
+$$58+(n\times 40)$$
+where n is the number of horizontal intervals the arrow crosses.
+
+\section{Superposing items in a diagram.}
+
+\p Sometimes you will like to superpose two items at the same point
+of the pattern underlying your diagram, like in the following
+example:
+\DIAG
+{A} \n {\ear} \n {B} \nn
+{\nar} \n {\cross{\near}{\sear}} \n {\sar} \nn
+{C} \n {\ear} \n {D}
+\diag
+The command for superposing two items is \vb+\cross{1}{2}+ where 1
+and 2 stand for the two items; the two arguments 1 and 2 are
+automatically processed in Math mode. The previous diagram can thus
+be typed as
+%% \pagebreak %% Removed for a4 sized document!
+\begin{verbatim}
+\DIAG
+{A} \n {\ear} \n {B} \nn
+{\nar} \n {\cross{\near}{\sear}} \n {\sar} \nn
+{C} \n {\ear} \n {D}
+\diag
+\end{verbatim}
+
+When superposing two arrows, the \vb+\cross+ command can have the
+undesired effect that one of the arrows will bump into the name of
+the other arrow. A special command has been designed to correct
+such a defect and is explained in section~17. For that reason, the
+``cross'' option could be considered as a special feature of the
+\D\ Macros: one which requires your help.
+
+\section{Drawing curved arrows.}
+
+\p Drawing curved arrows is another special feature of the
+\D\ Macros, thus a process where the \D\ Macros need you help. In
+fact you will have to decide the length of the curved arrow and
+possibly you will have to adjust the spacing around the diagram (an
+easy procedure for that will be described in section~17).
+
+Just plain curved arrows in the primary directions are provided by
+the \D\ Macros. The first letter of the command indicates where,
+with respect to the diagram, the arrow has to stand (this
+determines the concavity of the arrow); the second letter indicates
+the overall direction of the arrow; then follows the abbreviation
+\vb+curve+ for ``curved arrow''. As usual, the two first
+indications are given using the compass-card terminology:
+\vb+n,s,e,w+. Typing the first letter as an upper-case letter will
+produce a named arrow, the name being given as a first argument of
+the command. It is compulsory to give the length of the arrow as a
+last argument. By length of the arrow we mean clearly its
+horizontal or vertical extent (according to the case), expressed in
+points. For example \vb+\Necurve{f}{160}+ will produce a curved
+arrow with name $f$ and length 160 points, to be positioned at the
+north side of a diagram and with overall east direction.
+
+For more clarity, here are the eight unamed curved arrows (of
+length 80 points) and the corresponding commands. The bullets
+indicate the position of the formal centers (?!) of these arrows;
+each bullet corresponds thus to the point which will coincide with
+the corresponding point of the pattern.
+\vspace{15pt}
+\DIAG
+{} \n {\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}
+\end{picture}}{\Necurve{\mbox{\bs\tt necurve}}{80}}} \n {} \n {}
+\n
+{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}}
+{\Nwcurve{\mbox{\bs\tt nwcurve}}{80}}} \n {} \diagv{10}{0}{-5}
+\DIAG
+{} \n {\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}
+\end{picture}}{\Securve{\mbox{\bs\tt securve}}{80}}} \n {} \n {}
+\n
+{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}}
+{\Swcurve{\mbox{\bs\tt swcurve}}{80}}}\n {} \nn {} \n {} \n {} \n {}
+\n {} \n {} \nn
+{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}}
+{\Wscurve{\mbox{\bs\tt wscurve}}{80}}} \n {} \n
+{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}}
+{\Wncurve{\mbox{\bs\tt wncurve}}{80}}} \n
+{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}}
+{\Escurve{\mbox{\bs\tt escurve}}{80}}} \n {} \n
+{\cross{\begin{picture}(0,0)\put(0,0){\circle*{300}}\end{picture}}
+{\Encurve{\mbox{\bs\tt encurve}}{80}}} \diagv{0}{0}{40}
+
+Most often you will have to include a curved arrow at a point of
+the pattern which is already occupied by another item, a vertex or an
+arrow; just use the \vb+\cross+ command of the previous section to
+superpose the two items. The length of a curved arrow will generally
+be a multiple of 80 points, since this is the normal distance
+between two vertices, in a primary direction. Here is an example of
+a diagram containing curved arrows:
+\DIAG
+{A} \n {\Ear{a}} \n {\cross{B}{\Necurve{l}{160}}} \n {\Ear{b}}
+\n {C} \nn
+{\cross{\Wncurve{e}{80}}{\Sbiar{f}{g}}} \n {}
+\n {\saR{h}} \n {} \n {\saR{k}} \nn
+{D} \n {\eaR{c}} \n {E} \n {\eaR{d}} \n {F}
+\diagv{25}{0}{0}
+It should thus be typed as follows:
+\begin{verbatim}
+\DIAG
+{A}\n{\Ear{a}} \n{\cross{B}{\Necurve{l}{160}}}
+ \n{\Ear{b}}\n{C} \nn
+{\cross{\Wncurve{e}{80}}{\Sbiar{f}{g}}}
+ \n{} \n{\saR{h}}\n{} \n{\saR{k}}\nn
+{D}\n {\eaR{c}}\n{E} \n{\eaR{d}}\n{F}
+\diagv{25}{13}{0}
+\end{verbatim}
+
+\section{The free slope arrows.}
+
+\p When you have to produce a given diagram of vertices and arrows,
+you must clearly choose adequately the position of each vertex so
+that all the arrows will be in one of the sixteen directions
+considered by the \D\ Macros. Anybody who has read this user's guide
+will easily produce an example of a diagram where this requirement
+cannot be fulfilled. Nevertheless such a situation is rather
+unusual since, for example, the most popular book on category
+theory {\em (Saunders MAC LANE -- Categories for the working
+mathematician -- Springer,1971)} \ldots does not contain any such
+diagram! [Well, I have been lucky: Saunders did not draw the
+connecting morphism in the snake lemma!]
+
+The slope of an arrow is a pair $(n,m)$ of integers: when you
+move $n$ points left, you move $m$ points up; as usual, a
+negative value of $n$ or $m$ indicates a movement in the
+opposite direction. For example, here are the slopes of the various
+diagram arrows:
+\begin{itemize}
+\item The primary arrows have slope $(\pm1,0)$ [horizontal arrows]
+or $(0,\pm1)$ [vertical arrows];
+\item The secondary arrows have slope $(\pm1,\pm1)$;
+\item The ternary arrows have slope $(\pm1,\pm2)$ or $(\pm2,\pm1)$
+according to the case.
+\end{itemize}
+In fact, \LaTeX allows you to draw arrows in thirty two other
+directions, using the picture environment and the commands
+\vb+\put+ and \vb+\vector+; the corresponding available slopes are
+$(\pm1,\pm3)$, $(\pm3,\pm1)$, $(\pm1,\pm4)$, $(\pm4,\pm1)$,
+$(\pm2,\pm3)$, $(\pm3,\pm2)$, $(\pm3,\pm4)$, $(\pm4,\pm3)$.
+The length of an arrow is always specified by giving the horizontal
+extent of the arrow, except in the case of vertical arrows where
+the actual length is given. So you can just design any arrow or set
+of arrows using the picture environment and choose the corresponding
+picture as an item of your diagram; the center of your picture will
+be positioned automatically at the corresponding point of the
+pattern. This is exactly what the \D\ Macros are doing any time you
+ask them to draw an arrow.
+
+You can avoid some typing (but just that!), by using the ``free slope
+arrow Macro'' to produce directly a diagram arrow, like for
+primary, secondary and ternary arrows. It has the following form
+where, as a matter of convention, the origin of the coordinates is
+the point of the pattern at which you want to include the free slope
+arrow:
+
+\vb+\Freear{n}{a}{b}{x}{y}{u}{v}{l}+\\
+where
+\begin{itemize}
+\item \vb+n+ is the name of the arrow;
+\item \vb+(a,b)+ are the coordinates (in points) of the place where
+you want the lower left corner of that name to be positioned;
+\item \vb+(x,y)+ are the coordinates of the origin of the arrow;
+\item \vb+(u,v)+ is the slope of the arrow (it must be one of the
+slopes just indicated);
+\item \vb+l+ is the horizontal extent (in points) of the arrow, or
+its length in the case of a vertical arrow.
+\end{itemize}
+If you do not want to name the arrow, just type, following the
+usual \D\ Macros convention:
+
+\vb+\freear{x}{y}{u}{v}{l}+\\
+Clearly, the ``free slope arrow'' option is not a \D\ Macros
+feature: it is just plain \LaTeX\ job.
+
+
+\section{The scaling option.}
+
+\p The ``variable length'' option has allowed us to design properly
+the diagram of \S 12. But you can possibly not be satisfied with
+the final product, because the resulting diagram is unusually big
+for the few arrows it does contain. This is easily corrected!
+
+Replacing the initial command \vb+\DIAG+ by the corresponding
+``variable scale'' command \vb+\DIAGV{n}+ will scale the original
+pattern of points by n\% and adjust correspondingly the length of
+every arrow in the diagram. For example typing
+\begin{verbatim}
+\DIAGV{50}
+{A}\n{} \n{\Earv{f}{130}}\n{} \n{C}\nn
+{} \n{\seepI{p}}\n{} \n{\nemonO{i}}\nn
+{} \n{} \n{B}
+\diag
+\end{verbatim}
+will produce the following result
+\DIAGV{50}
+{A} \n {} \n {\Earv{f}{130}} \n {} \n {C} \nn
+{} \n {\seepI{p}} \n {} \n {\nemonO{i}} \nn
+{} \n {} \n {B}
+\diag
+
+Since text characters (and various other things) are unaffected by
+the scaling process, you should avoid reducing exagerately a
+diagram. In most cases, a reduction up to 50\% gives excellent
+results. On the other hand, an enlargement can be helpful when
+handling vertices with very long names.
+
+This ``variable scale'' option is particularly useful when
+designing ``three dimensional'' diagrams, which require very often a
+rather dense pattern of reference points and many ``long'' arrows
+produced via the ``variable length'' option. For example to design
+the following cube
+
+\DIAGV{50}
+{} \n{} \n{B} \n{} \n{\Earv{b}{130}} \n{} \n{D} \nn
+{} \n{\Near{a}} \n{} \n{} \n{} \n{\Near{d}} \n{} \nn
+{A} \n{} \n{\cross{\Earv{\movename{c}{10}{0}}{130}}
+ {\Sarv{\movename{f}{0}{-8}}{130}}}
+ \n{} \n{C} \n{} \n{\saRv{h}{130}} \nn
+{} \nn
+{\Sarv{e}{130}} \n{} \n{F} \n{}
+ \n{\cross{\eaRv{\movename{j}{-10}{0}}{130}}
+ {\saRv{\movename{g}{0}{8}}{130}}}
+ \n{} \n{H} \nn
+{} \n{\Near{i}} \n{} \n{} \n{} \n{\neaR{l}} \nn
+{E} \n{} \n{\eaRv{k}{130}} \n{} \n{G}
+\diag
+it suffices to type
+\begin{verbatim}
+\DIAGV{50}
+{} \n{} \n{B} \n{} \n{\Earv{b}{130}} \n{} \n{D} \nn
+{} \n{\Near{a}} \n{} \n{} \n{} \n{\Near{d}} \n{} \nn
+{A} \n{} \n{\cross{\Earv{\movename{c}{10}{0}}{130}}
+ {\Sarv{\movename{f}{0}{-13}}{130}}}
+ \n{} \n{C} \n{} \n{\saRv{h}{130}} \nn
+{} \nn
+{\Sarv{e}{130}} \n{} \n{F} \n{}
+ \n{\cross{\eaRv{\movename{j}{-10}{0}}{130}}
+ {\saRv{\movename{g}{0}{13}}{130}}}
+ \n{} \n{H} \nn
+{} \n{\Near{i}} \n{} \n{} \n{} \n{\neaR{l}} \nn
+{E} \n{} \n{\eaRv{k}{130}} \n{} \n{G}
+\diag
+\end{verbatim}
+where the \vb+\movename+ command is explained in the next section.
+
+\section{Final adjusments.}
+
+\p The \D\ Macros are intended to provide you with a powerful tool
+for designing diagrams, so in normal circumstances, no adjusment at
+all should be necessary. But in some unusual cases, for example
+when you use the special features of the \D\ Macros, you can want to
+interact for correcting some imperfections. Some Macros have been
+designed to help you realizing this.
+
+If the vertices of a same row have names of different heights,
+those names will no longer stand at the same altitude since they
+are centered at the corresponding points of the pattern. There is a
+``normalizing'' command \vb+\N+ which you can apply to the ``high
+vertices'' in order to correct this defect: instead of typing
+\vb+{vertex}+ type \vb+{\N{vertex}}+, where \vb+vertex+ stands here
+for the name of the vertex.
+
+You can want to move the name of an arrow, especially when you have
+used the \vb+\cross+ command to superpose two named arrows. If $f$
+is the name of the arrow, instead of \vb+{f}+ you just type
+\vb+{\movename{f}{n}{m}}+ where n and m are integers (positive or
+negative); the name of the arrow will be moved \vb+n+ pt right
+and \vb+m+ pt up. In the same way the
+commands \vb+\movearrow{\Ear{f}}{n}{m}+ and
+\vb+\moveverterx{A}{n}{m}+ will
+move respectively the east arrow $f$ and the vertex $A$, \vb+n+
+pt right and \vb+m+ pt up.
+
+Because the curved arrows are very ``excentric'' with respect to
+their formal center, they will cause problems of spacing when drawn
+along an outer edge of a diagram. Drawing a curved arrow along the
+upper or the lower edge of a diagram will generally cause the
+diagram to overlap the surrounding text; drawing a curved arrow
+along just one vertical side of a diagram will cause bad horizontal
+centering. Those defects can be corrected by using the ``variable
+spacing'' option of the diagram commands. Just replace the final
+command \vb+\diag+ by the corresponding ``variable spacing''
+command \vb+\diagv{t}{l}{b}+ where
+\begin{itemize}
+\item \vb+t+ is the vertical space, expressed in points, to be
+added at the top of the diagram;
+\item \vb+l+ is the horizontal space, expressed in points, to be
+added left of the diagram;
+\item \vb+b+ is the vertical space, expressed in points, to be
+added at the bottom of the diagram.
+\end{itemize}
+This command will not work properly if your diagram is wider than
+the textwidth; in that case, include the diagram in a mini-page
+environment (see \LaTeX book, page 98) wide enough to contain it and
+position this mini-page in your document using, for example, the
+commands \vb+\hspace*+ and \vb+\vspace*+.
+
+Finally, some unexpected troubles can occur if you
+introduce in a diagram items which have not been designed in a
+way which is compatible with the internal structure of the \D\
+Macros. You will most often get rid of the problem by including the
+new item in a box of formal dimensions (0,0).
+
+\section{Some special characters.}
+
+\p This last section contains some {\em text} symbols which you can
+want to use in connection with the \D\ Macros.
+
+The ``commutative diagram'' symbol \com\ can be produced by giving
+the command \vb+\com+ and the ``adjoint'' symbol \adj\ is obtained
+via the command \vb+\adj+.
+
+Finally here are some commands for designing natural
+transformations, with or without name.\vspace{10pt}
+
+\begin{tabular}{ll}
+{\bs\tt nat} & \nat \\ & \\
+{\bs\tt Nat\{F\}\{$\alpha$\}\{G\}} & \Nat{F}{\alpha}{G} \\ & \\
+{\bs\tt binat} & \binat \\ & \\
+{\bs\tt Binat\{F\}\{$\alpha$\}\{G\}\{$\beta$\}\{H\}} &
+\Binat{F}{\alpha}{G}{\beta}{H}
+\end{tabular}
+
+\vspace{10pt}
+
+In the case of named natural transformations, the names of the
+functors and the natural transformations are processed in Math
+mode; thus do not include any \$ sign for putting a mathematical
+symbol in those names. Here is how those symbols will be positioned
+in a line of text:\\
+$$A\nat B\binat C$$
+
+
+\end{document}
diff --git a/macros/latex209/contrib/misc/diagtest.tex b/macros/latex209/contrib/misc/diagtest.tex
new file mode 100644
index 0000000000..7673ae4129
--- /dev/null
+++ b/macros/latex209/contrib/misc/diagtest.tex
@@ -0,0 +1,403 @@
+%TESTS OF DIAGRAM MACROS - J. C. Reynolds - December 1987
+
+%This is an input file for LATEX that inputs the macros in diagmac.tex
+%and tests them. A user's manual for these macros is in diagmac.doc
+
+\documentstyle[12pt]{article}
+\oddsidemargin=0in
+\evensidemargin=0in
+\textwidth=6.5in
+\begin{document}
+
+\thispagestyle{empty}
+
+\begin{centering}
+{\large\bf TESTS OF DIAGRAM MACROS} \\[14 pt]
+\today \\[21 pt]
+\end{centering}
+
+\input diagmac
+
+%These are the two examples given in the user's manual.
+
+$$\diagram{
+\vertex 0,100:{A}{\border{3pt}{4pt}\rect}
+\vertex 150,100:{B}{\border{3pt}{4pt}\rect}
+\vertex 0,0:{A'}{\border{3pt}{4pt}\rect}
+\vertex 150,0:{B'}{\border{3pt}{4pt}\rect}
+\setedge 0,100,150,100:
+\shadeedge
+\drawsolidedge
+\drawedgehead{100}10
+\abutabove 75:{\textstyle c}{\border{2pt}{2pt}\octagon{3pt}}
+\setedge 0,0,150,0:
+\shadeedge
+\drawsolidedge
+\drawedgehead{100}10
+\abutbelow 75:{\textstyle c'}{\border{2pt}{2pt}\octagon{3pt}}
+\setedge 0,100,0,0:
+\shadeedge
+\drawsolidedge
+\drawedgehead{100}10
+\abutleft 50:{\textstyle a}{\border{2pt}{2pt}\octagon{3pt}}
+\setedge 150,100,150,0:
+\shadeedge
+\drawsolidedge
+\drawedgehead{100}10
+\abutright 50:{\textstyle b}{\border{2pt}{2pt}\octagon{3pt}}
+}$$
+
+$$\ctdiagram{
+\ctv 0,100:{A}
+\ctv 150,100:{B}
+\ctv 0,0:{A'}
+\ctv 150,0:{B'}
+\ctet 0,100,150,100:{c}
+\cteb 0,0,150,0:{c'}
+\ctel 0,100,0,0:{a}
+\cter 150,100,150,0:{b}
+}$$
+
+\newpage
+
+%This gives a thorough workout to the general macros for diagrams.
+%The result looks like an eye-chart for Martians.
+
+$$\diagram{
+\vertex -150,0:{X+Y}{\border{4pt}{3pt}\rorect{2pt}01\outline}
+\vertex 0,-50:Y{\border{10pt}{10pt}\hexagon\outline}
+\vertex 150,0:\sum{\border{10pt}{10pt}\octagon{10pt}\outline
+ \border{5pt}{5pt}\octagon{12pt}\thicklines\outline\thinlines}
+\vertex -100,150:\alpha{\border{4pt}{3pt}\diamond\outline}
+\vertex 100,150:\sum{\border{10pt}{10pt}\rorect{20pt}00\outline
+ \border{5pt}{5pt}\rorect{24pt}00\thicklines\outline\thinlines}
+\vertex 0,200:{X^2+Y^2}{\border{4pt}{3pt}\rect\outline}
+\place -150,-150:{X+Y^{Z^2}}
+ {\leftghost X\symmetrize\borderto{0pt}{0pt}\border{4pt}{3pt}\rect\outline
+ \setcircle{16pt}{\xcenter}{\bexpr}\drawcircle0110
+ \drawcirclehead{0}{-1}1
+ \abutcirclebelow{-10pt}\alpha{\border{2pt}{2pt}\rect\outline}
+ \abutcirclebelow{10pt}\alpha{\border{2pt}{2pt}\rect\outline}}
+\placed{150pt}{-150pt}{X+Y}
+ {\rightghost Y\symmetrize\borderto{0pt}{26pt}\border{4pt}{0pt}\rect\outline
+ \placed{\lexpr}{\ycenter}{\vrule height3.2pt depth-2.8pt width10pt}{}
+ \place 0,-3:{\vrule height3.2pt depth-2.8pt width10pt}{\xcenter=\lexpr}
+ \setcircle{16pt}{\rexpr}{\texpr}\shiftcircle{8pt}{8pt}\drawcircle1101
+ \drawcirclehead{0}{-1}1\drawcirclehead{-1}00
+ \abutcircleabove{0pt}\alpha{\border{2pt}{2pt}\rect\outline}}
+\vertex 0,-150:{}{\setcircle{40pt}{\xcenter}{\ycenter}\drawcircle1111
+ \drawcirclehead231\drawcirclehead{-2}30
+ \drawcirclehead6{-9}0\drawcirclehead{-4}{-6}1
+ \abutcircleleft{0pt}\alpha{\border{2pt}{2pt}\rect\outline}
+ \abutcircleright{20pt}\alpha{\border{2pt}{2pt}\rect\outline}
+ \abutcircleright{0pt}\alpha{\border{2pt}{2pt}\rect\outline}
+ \abutcircleright{-20pt}\alpha{\border{2pt}{2pt}\rect\outline}}
+\setedge 0,200,-100,150:\shadeedge\drawsolidedge\drawedgehead{100}10
+ \abutleft 185:{\alpha+\beta}{\border{2pt}{2pt}\rorect{5pt}01\outline}
+\setedge 0,200,100,150:\shadeedge\drawsolidedge\drawedgehead{100}10
+ \abutright 185:{\alpha+\beta}{\border{2pt}{2pt}\rorect{5pt}01\outline}
+\setedge -150,0,0,-50:\shadeedge\drawdashedge{11pt}{10pt}01\drawedgehead{80}01
+ \abutleftd{-25pt}{\alpha\beta}
+ {\border{2pt}{2pt}\borderto{25pt}{0pt}\rect\outline}
+\setedge -150,0,150,0:\drawedgehead{50}01\shadeedge\drawsolidedge
+ \abutabove -10:\rho{\border{2pt}{2pt}\diamond\outline}
+\setedge -150,0,-100,150:\shadeedge\drawsolidedge\drawedgehead{100}10
+ \abutleft 75:\rho{\border{10pt}{10pt}\octagon{10pt}\outline}
+\setedge -150,0,100,150:\shadeedge\drawdotedge{7pt}1
+ \abutaboved{-100pt}\rho{\border{10pt}{10pt}\hexagon\outline}
+\setedge 0,-50,150,0:\shadeedge\drawsolidedge\drawedgehead{20}11
+ \abutrightd{-25pt}\rho{\border{2pt}{2pt}\borderto{25pt}{0pt}\rect\outline}
+\setedge 0,-50,-100,150:\shadeedge\drawsolidedge
+\setedge 0,-50,100,150:\shadeedge\drawsolidedge
+\setedge 150,0,-100,150:\shadeedge\drawsolidedge
+ \abutbelowd{100pt}\rho{\border{10pt}{10pt}\hexagon\outline}
+\setedge 150,0,100,150:\shadeedge\drawdashedge{40pt}{40pt}11\drawedgehead000
+ \abutleft 75:\rho{\border{10pt}{10pt}\hexagon\outline}
+ \shiftedge{-10pt}\shadeedge\drawdashedge{30pt}{30pt}10\drawedgehead000
+ \shiftedge{-10pt}\shadeedge\drawdashedge{11pt}{5pt}01\drawedgehead000
+ \shiftedge{-10pt}\shadeedge\drawdotedge{8pt}0\drawedgehead{100}10
+ \abutright 75:\rho{\border{5pt}{5pt}\rorect{5pt}11\outline}
+\setedge -100,150,100,150:\drawedgehead{50}11\shadeedge\drawsolidedge
+ \abutbelow 0:\rho{\border{2pt}{2pt}\rect\outline}
+\setedge 0,-50,-150,-150:\thicklines\drawedgehead{50}01\thinlines
+ \shadeedge\drawdashedge{13pt}{3pt}01\drawedgehead{50}11
+ \abutbelow -50:{X \atop Y}{\border{2pt}{2pt}\rorect{5pt}10\outline}
+\setedge 0,-50,0,-150:\thicklines\shadeedge\drawsolidedge\thinlines
+\setedge 0,-50,150,-150:\shadeedge\drawsolidedge
+ \abutabove 75:{X \atop Y}{\border{2pt}{2pt}\rorect{5pt}10\outline}
+\setedge -175,-50,-175,-100:\drawdashedge{10pt}{31pt}11
+\setedge -165,-100,-165,-50:\drawdashedge{15pt}{15pt}01
+\setedge -155,-50,-155,-100:\drawdashedge{5pt}{5pt}11
+\setedge -145,-100,-145,-50:\drawdotedge{26pt}1
+\setedge -135,-50,-135,-100:\drawdotedge{25pt}1
+\setedge -125,-100,-125,-50:\drawdotedge{5pt}1
+\setedge 125,-50,175,-50:\drawdashedge{10pt}{31pt}11
+\setedge 175,-60,125,-60:\drawdashedge{15pt}{15pt}01
+\setedge 125,-70,175,-70:\drawdashedge{5pt}{5pt}11
+\setedge 175,-80,125,-80:\drawdotedge{26pt}1
+\setedge 125,-90,175,-90:\drawdotedge{25pt}1
+\setedge 175,-100,125,-100:\drawdotedge{5pt}1
+}$$
+
+\newpage
+
+%These three diagrams test the macros for category-theory diagrams.
+
+$$\ctdiagram{
+\ctvg0,0:{Y'}{\ctlpbl{I_{Y'}}}
+\ctvg150,0:{Z=Z_0}{\ctgl{Z}\ctlpbr{I_Z}}
+\ctvg0,100:{X_0=X}{\ctgr{X}\ctlptl{I_X}}
+\ctvg150,100:{Y}{\ctlptr{I_Y}}
+\ctet0,100,150,100:\alpha
+\cteb0,0,150,0:{\beta'}
+\ctel0,100,0,0:{\alpha'}
+\cter150,100,150,0:\beta
+\ctetb0,100,150,0:11{\alpha;\beta}{\alpha';\beta'}
+}$$
+
+$$\ctdiagram{\ctdash
+\ctvg0,0:{Y'}{\ctlpblcc{I_{Y'}}}
+\ctvg150,0:{Z=Z_0}{\ctgl{Z}\ctlpbrcc{I_Z}}
+\ctvg0,100:{X_0=X}{\ctgr{X}\ctlptlcc{I_X}}
+\ctvg150,100:{Y}{\ctlptrcc{I_Y}}
+\ctet0,100,150,100:\alpha
+\ctnohead\cteb0,0,150,0:{\beta'}\cthead
+\ctel0,100,0,0:{\alpha'}
+\cter150,100,150,0:\beta
+\ctelr0,100,150,0:11{\alpha';\beta'}{\alpha;\beta}
+}$$
+
+$$\ctdiagram{
+\ctv0,0:{Y'}
+\ctvg150,0:{Z=Z_0}{\ctgl{Z}}
+\ctvg0,100:{X_0=X}{\ctgr{X}}
+\ctv150,100:Y
+\ctetg0,100,150,100;50:\alpha
+\ctebg0,0,150,0;50:{\beta'}
+\ctelg0,100,0,0;30:{\alpha'}
+\cterg150,100,150,0;30:\beta
+\ctetbg0,100,150,0;50,100:10{\rho}{\rho'}
+\ctelrg0,0,150,100;70,30:01{\theta}{\theta'}
+}$$
+
+\newpage
+
+%The next two diagrams are further tests of the macros for drawing
+%double edges.
+
+$$\ctdiagram{
+\ctv0,0:X
+\ctv-100,100:Y\ctv-100,0:Y\ctv-100,-100:Y
+\ctv100,100:Z\ctv100,0:Z\ctv100,-100:Z
+\ctetb0,0,-100,100:10\alpha\beta
+\ctdash\ctetb0,0,-100,0:00\alpha\beta\ctsolid
+\ctetb0,0,-100,-100:01\alpha\beta
+\ctetb0,0,100,100:10\alpha\beta
+\ctdash\ctetb0,0,100,0:11\alpha\beta\ctsolid
+\ctetb0,0,100,-100:01\alpha\beta
+}$$
+
+$$\ctdiagram{
+\ctv0,0:X
+\ctv-100,100:Y\ctv0,100:Y\ctv100,100:Y
+\ctv-100,-100:Z\ctv0,-100:Z\ctv100,-100:Z
+\ctelr0,0,-100,100:10\alpha\beta
+\ctelr0,0,0,100:00\alpha\beta
+\ctelr0,0,100,100:01\alpha\beta
+\ctelr0,0,-100,-100:10\alpha\beta
+\ctelr0,0,0,-100:11\alpha\beta
+\ctelr0,0,100,-100:01\alpha\beta
+}$$
+
+\newpage
+
+%These two diagrams test the usage of \ctinnermid and \ctoutermid.
+
+$$\ctdiagram{\ctv 0,0:{
+{\displaystyle\sum_{i=0}^{100}x_i\cdot y_i}\over
+{\displaystyle\sqrt{\biggl(\sum_{i=0}^{100}x_i^2\biggr)
++\biggl(\sum_{i=0}^{100}y_i^2\biggr)}}}
+\ctv0,150:A\ctv150,150:B\ctv150,0:C\ctv150,-150:D
+\ctv0,-150:E\ctv-150,-150:F\ctv-150,0:G\ctv-150,150:H
+\cter0,0,0,150:A\ctinnermid\cter0,0,0,150:a\ctoutermid
+\cter150,150,0,0:B\ctinnermid\cter150,150,0,0:b\ctoutermid
+\cteb0,0,150,0:C\ctinnermid\cteb0,0,150,0:c\ctoutermid
+\cteb150,-150,0,0:D\ctinnermid\cteb150,-150,0,0:d\ctoutermid
+\ctel0,0,0,-150:E\ctinnermid\ctel0,0,0,-150:e\ctoutermid
+\ctel-150,-150,0,0:F\ctinnermid\ctel-150,-150,0,0:f\ctoutermid
+\ctet0,0,-150,0:G\ctinnermid\ctet0,0,-150,0:g\ctoutermid
+\ctet-150,150,0,0:H\ctinnermid\ctet-150,150,0,0:h
+}$$
+
+$$\ctdiagram{\ctv 0,0:{
+{\displaystyle\sum_{i=0}^{100}x_i\cdot y_i}\over
+{\displaystyle\sqrt{\biggl(\sum_{i=0}^{100}x_i^2\biggr)
++\biggl(\sum_{i=0}^{100}y_i^2\biggr)}}}
+\ctv-150,150:A\ctv0,150:C\ctv150,150:E\ctv150,0:G
+\ctelr0,0,-150,150:11AB\ctinnermid
+\ctelr0,0,-150,150:11ab\ctoutermid
+\ctelr0,150,0,0:11CD\ctinnermid
+\ctelr0,150,0,0:11cd\ctoutermid
+\ctetb0,0,150,150:11EF\ctinnermid
+\ctetb0,0,150,150:11ef\ctoutermid
+\ctetb150,0,0,0:11GH\ctinnermid
+\ctetb150,0,0,0:11gh
+}$$
+
+\newpage
+
+%This is a ``real'' diagram, relating directed complete relations to
+%Scott's inverse limit construction. It is sufficiently crowded
+%that it has been necessary to place some of the abutted expressions
+%carefully to avoid ambiguity.
+
+$$\ctdiagram{
+\ctvg0,0:{D_0}{\border{2pt}{0pt}}
+\ctv72,0:{D_1}
+\ctv144,0:{D_2}
+\ctv216,0:{\quad\cdots}
+\ctvg288,144:{D_\infty}{\advance\ycenter by 5pt\border{50pt}{10pt}}
+\ctv234,36:{\cdots}
+\ctetbg0,0,72,0;48,48:10{\phi_0}{\psi_0}
+\ctetbg72,0,144,0;114,114:10{\phi_1}{\psi_1}
+\ctetb144,0,216,0:10{\phi_2}{\psi_2}
+\ctelrg0,0,288,144;42,30:10{\Phi_0}{\Psi_0}
+\ctelrg72,0,288,144;42,30:10{\Phi_1}{\Psi_1}
+\ctelrg144,0,288,144;42,30:10{\Phi_2}{\Psi_2}
+\ctvg0,-72:{D'_0}{\border{2pt}{0pt}}
+\ctv72,-72:{D'_1}
+\ctv144,-72:{D'_2}
+\ctv216,-72:{\quad\cdots}
+\ctvg288,-216:{D'_\infty}{\advance\ycenter by -5pt\border{50pt}{10pt}}
+\ctv234,-108:{\cdots}
+\ctetbg0,-72,72,-72;48,48:10{\phi'_0}{\psi'_0}
+\ctetbg72,-72,144,-72;114,114:10{\phi'_1}{\psi'_1}
+\ctetb144,-72,216,-72:10{\phi'_2}{\psi'_2}
+\ctelrg0,-72,288,-216;-114,-102:10{\Phi'_0}{\Psi'_0}
+\ctelrg72,-72,288,-216;-114,-102:10{\Phi'_1}{\Psi'_1}
+\ctelrg144,-72,288,-216;-114,-102:10{\Phi'_2}{\Psi'_2}
+\cter0,0,0,-72:{\alpha_0}
+\cter72,0,72,-72:{\alpha_1}
+\cter144,0,144,-72:{\alpha_2}
+\ctv216,-36:{\cdots}
+\ctdash
+\cter288,144,288,-216:{\alpha_\infty}
+}$$
+
+\newpage
+
+%This shows how a macro can be defined and then used to give two different
+%views of the same diagram.
+
+\def\testcube#1#2#3#4#5#6#7#8{
+$$\ctdiagram{
+\ctv#1,#3:{A_1}
+\ctv#2,#3:{B_1}
+\ctv#1,#4:{A_2}
+\ctv#2,#4:{B_2}
+\ctv#5,#7:{A'_1}
+\ctv#6,#7:{B'_1}
+\ctv#5,#8:{A'_2}
+\ctv#6,#8:{B'_2}
+\ctet#1,#3,#2,#3:{\gamma_1}
+\ctet#1,#4,#2,#4:{\gamma_2}
+\cter#1,#3,#1,#4:{\alpha}
+\cter#2,#3,#2,#4:{\beta}
+\ctet#5,#7,#6,#7:{\gamma'_1}
+\ctet#5,#8,#6,#8:{\gamma'_2}
+\cter#5,#7,#5,#8:{\alpha'}
+\cter#6,#7,#6,#8:{\beta'}
+\cter#1,#3,#5,#7:{a_1}
+\cter#2,#3,#6,#7:{b_1}
+\cter#1,#4,#5,#8:{a_2}
+\cter#2,#4,#6,#8:{b_2}
+}$$}
+
+\testcube{0}{200}{200}{0}{50}{150}{150}{50}
+
+\testcube{0}{150}{150}{0}{100}{250}{200}{50}
+
+\newpage
+
+%An example of a partial ordering with a limit point.
+
+$${\def\diagramunit{0.25in}
+\ctdiagram{\ctnohead
+\ctv0,0:{\geq 0}
+\ctv2,2:{\geq 1}
+\ctv4,4:{\geq 2}
+\ctv7,7:\infty
+\ctv-2,2:{=0}
+\ctv0,4:{=1}
+\ctv2,6:{=2}
+\cten0,0,2,2:
+\cten2,2,4,4:
+\cten0,0,-2,2:
+\cten2,2,0,4:
+\cten4,4,2,6:
+\ctdot
+\cten4,4,7,7:
+}}$$
+
+%An example of a binary tree, produced by user macros.
+
+\newcount\cnx\newcount\cny\newcount\cnxx\newcount\cnyy
+
+\def\treea#1{\cnxx=\cnx\cnyy=\cny
+\ctv\cnx,\cny:{\scriptstyle #1}
+\advance\cnx by -1\advance\cny by 4
+\ctdot
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by 2
+\cten\cnxx,\cnyy,\cnx,\cny:
+\ctsolid
+\cnx=\cnxx\cny=\cnyy}
+
+\def\treeb#1{\ctv\cnx,\cny:{\scriptstyle #1}
+\advance\cnx by -2\advance\cny by 4
+\treea{#10}
+\cnxx=\cnx\advance\cnxx by 2\cnyy=\cny\advance\cnyy by -4
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by 4
+\treea{#11}
+\cnxx=\cnx\advance\cnxx by -2\cnyy=\cny\advance\cnyy by -4
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by -2\advance\cny by -4}
+
+\def\treec#1{\ctv\cnx,\cny:{\scriptstyle #1}
+\advance\cnx by -4\advance\cny by 4
+\treeb{#10}
+\cnxx=\cnx\advance\cnxx by 4\cnyy=\cny\advance\cnyy by -4
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by 8
+\treeb{#11}
+\cnxx=\cnx\advance\cnxx by -4\cnyy=\cny\advance\cnyy by -4
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by -4\advance\cny by -4}
+
+\def\treed#1{\ctv\cnx,\cny:{\scriptstyle #1}
+\advance\cnx by -8\advance\cny by 4
+\treec{#10}
+\cnxx=\cnx\advance\cnxx by 8\cnyy=\cny\advance\cnyy by -4
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by 16
+\treec{#11}
+\cnxx=\cnx\advance\cnxx by -8\cnyy=\cny\advance\cnyy by -4
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by -8\advance\cny by -4}
+
+\def\tree{\ctv\cnx,\cny:\bot\def\centerheight{2pt}
+\advance\cnx by -16\advance\cny by 4
+\treed{0}
+\cnxx=\cnx\advance\cnxx by 16\cnyy=\cny\advance\cnyy by -4
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by 32
+\treed{1}
+\cnxx=\cnx\advance\cnxx by -16\cnyy=\cny\advance\cnyy by -4
+\cten\cnxx,\cnyy,\cnx,\cny:
+\advance\cnx by -16\advance\cny by -4}
+
+$${\def\diagramunit{7.5pt}
+\ctdiagram{\ctnohead\cnx=0\cny=0\tree}}$$
+
+\end{document}
diff --git a/macros/latex209/contrib/misc/dina4.sty b/macros/latex209/contrib/misc/dina4.sty
new file mode 100644
index 0000000000..8ed259ac31
--- /dev/null
+++ b/macros/latex209/contrib/misc/dina4.sty
@@ -0,0 +1,4 @@
+% DINA4-Format
+\oddsidemargin 6pt\evensidemargin 6pt\marginparwidth 48pt\marginparsep 10pt
+\topmargin -18pt\headheight 12pt\headsep 25pt\footheight 12pt\footskip 30pt
+\textheight 625pt\textwidth 431pt\columnsep 10pt\columnseprule 0pt
diff --git a/macros/latex209/contrib/misc/disstyle.sty b/macros/latex209/contrib/misc/disstyle.sty
new file mode 100644
index 0000000000..cdaf6e1622
--- /dev/null
+++ b/macros/latex209/contrib/misc/disstyle.sty
@@ -0,0 +1,42 @@
+% Das ist ein Style, wie er fuer Diessertationen hilfreich sein koennte
+%
+% Gabriele Kruljac, MPI
+
+\typeout{Document Substyle `DISSTYLE' by MPI FKF, Version 1.2, 15.06.89}
+
+
+% Hier wird die Seitenzahl defaultm"a"sig oben in die Mitte gesetzt
+\def\ps@plain{\def\@oddhead{\hfil\thepage\hfil}\def\@oddfoot{}%
+\def\@evenhead{\hfil\thepage\hfil}\def\@evenfoot{}}
+\def\ps@mypage{\def\@oddhead{\hfil\thepage\hfil}\def\@oddfoot{}%
+\def\@evenhead{\hfil\thepage\hfil}\def\@evenfoot{}}
+\pagestyle{plain}
+
+% Hiermit werden Gleichungen mit Kapitel.Gleichung numeriert und
+% der Gleichungszaehler bei Beginn eines neuen Kapitels initialisiert.
+\@addtoreset{equation}{section}
+\def\theequation{\thesection.\arabic{equation}}
+
+% Hiermit werden Abbildungen mit Kapitel.Abbildung numeriert und
+% der Abbildungszaehler bei Beginn eines neuen Kapitels initialisiert.
+\@addtoreset{figure}{section}
+\def\thefigure{\thesection.\arabic{figure}}
+
+% Hiermit werden Tafeln mit Kapitel.Tafel numeriert und
+% der Tafelzaehler bei Beginn eines neuen Kapitels initialisiert.
+\@addtoreset{table}{section}
+\def\thetable{\thesection.\arabic{table}}
+
+% Die folgenden Definitionen ueberschreiben die Voreinstellung
+% fuer den \paragraph Befehl, und stellt ihn als vierte Gliederungsebene
+% zur Verf"ugung.
+% Standardmaessig wird die Ueberschrift eines Paragraphs ohne Nummer
+% in bold und der folgende Text in die gleiche Zeile gesetzt.
+% Jetzt wird paragraph mit numeriert, danach eine neue Zeile begonnen
+% und der Titel des paragraph mit ins Inhaltsverzeichnis uebernommen
+
+\def\paragraph{\@startsection {paragraph}{4}{\z@}
+ {-3.25ex plus -1ex minus-.2ex}{1.5ex plus .2ex}
+ {\normalsize\bf}}
+\setcounter{secnumdepth}{4}
+\setcounter{tocdepth}{4}
diff --git a/macros/latex209/contrib/misc/dpccyr.sty b/macros/latex209/contrib/misc/dpccyr.sty
new file mode 100644
index 0000000000..3dd96abd66
--- /dev/null
+++ b/macros/latex209/contrib/misc/dpccyr.sty
@@ -0,0 +1,262 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "David Carlisle",
+%%% version = "1.00",
+%%% date = "09 December 1991",
+%%% time = "17:33:06 BST",
+%%% filename = "dpccyr.sty",
+%%% address = "Computer Science Department
+%%% Manchester University
+%%% Oxford Road
+%%% Manchester
+%%% England
+%%% M13 9PL",
+%%% telephone = "+44 61 275 6139",
+%%% FAX = "+44 61 275 6236",
+%%% checksum = "39898 262 918 8382",
+%%% email = "carlisle@cs.man.ac.uk (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, cyrillic, NFSS",
+%%% supported = "yes",
+%%% docstring = "
+%%%
+%%% dpccyr.sty (cyrillic.sty)
+%%%
+%%% Loads the UWcyr fonts for the NFSS.
+%%% This file may be installed as cyrillic.sty but should be
+%%% distributed as dpccyr.sty to avoid name clashes with other,
+%%% possibly better, cyrillic options.
+%%%
+%%% The checksum field above was produced by
+%%% Robert Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*x>
+% This file may be used without modification as a style (.sty) file.
+%
+% If you have Mittelbach's doc.sty, this file may be formatted with a
+% command like:
+% latex dpccyr.sty
+%
+% If you have the Mittelbach/Duchier/Braams docstrip utility, you may
+% produce a faster loading .sty file. Rename this file to: dpccyr.doc
+% Then run this file through *plain* TeX:
+% tex dpccyr.doc
+% This should produce the file dpccyr.sty.
+% If you do not have plain TeX on your system, you can trick LaTeX into
+% doing the work as follows:
+% latex \def\fmtname{plain} \input dpccyr.doc
+% Note that you may need to quote the arguments here to stop your
+% operating system treating the \ characters incorrectly.
+%
+% latex dpccyr.doc
+% Will produce a typeset version of the documentation, as above.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname
+ \def\batchfile{dpccyr.doc}
+ \input docstrip
+ \preamble
+
+ Do not distribute the stripped version of this file.
+ The checksum in the header refers to the documented version.
+
+ \endpreamble
+% =======
+ \generateFile{dpccyr.sty}{t}{\from{dpccyr.doc}{fontdef}}
+% =======
+% You do not need the fontdef option if you LaTeX format already has
+% the cyrillic fontdefs (eg fontdef.max). So you may just need:
+% \generateFile{dpccyr.sty}{t}{\from{dpccyr.doc}{}}
+ \endinput
+\fi
+%
+\ifcat a\noexpand @\let\next\relax\else\def\next{%
+ \documentstyle[dpccyr,doc]{article}\MakePercentIgnore}\fi\next
+%
+%\def\eatmodule<#1>{}\eatmodule
+%</x>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \textwidth=355pt ^^A Allow macrocode text with 72 columns.
+% \CodelineIndex ^^A Code lines numbered.
+% \DisableCrossrefs ^^A No Cross references.
+% \MakeShortVerb{\|} ^^A |\foo| works like \verb+\foo+
+%
+%
+% \title{dpccyr.sty\\(cyrillic.sty)}
+% \author{D. P. Carlisle}
+% \date{09 December 1991}
+% \begin{document}
+% \maketitle
+%
+% This file defines the commands:\\
+% |\cyr| normal weight upright cyrillic\\
+% |\cyr\it| normal weight italic cyrillic\\
+% |\cyr\sc| normal weight caps and small caps cyrillic\\
+% |\cyr\bf| bold weight upright cyrillic\\
+% |\cyrss| normal weight sans-serif cyrillic\\
+% |\mathcyr| same as |\cyr|, but set up for math-mode
+%
+% It should perhaps be noted that I know nothing at all about the
+% Cyrillic alphabet, this is just a basic set of declarations to allow
+% these fonts to be used in a \LaTeX\ based on the NFSS.
+%
+% This file may be installed as {\tt cyrillic.sty}, however it should be
+% distributed as {\tt dpccyr.sty} to avoid name clashes with other,
+% possibly better Cyrillic styles.
+%
+% \typeout{End of the Introduction and Examples.}
+% \typein[\answer]%
+% {Do you want an annotated listing of the macro definitions (y/n) ?}
+% \def\next{y}\ifx\answer\next\else\expandafter\stop\fi
+%
+% \section{The Macros}
+%
+% If your \LaTeX\ format is built with a fontdef file, like {\tt
+% fontdef.max}, which contains the cyrillic font definitions, you may
+% modify the |\generateFile| command in the preamble to this document,
+% not to include the {\tt fontdef} option. {\tt docstrip} will then
+% remove the following section from the stripped {\tt .sty} version of
+% this file.
+%
+% \begin{macrocode}
+%<*fontdef>
+\new@fontshape{UWCyr}{m}{n}{%
+ <5>wncyr5%
+ <6>wncyr6%
+ <7>wncyr7%
+ <8>wncyr8%
+ <9>wncyr9%
+ <10>wncyr10%
+ <11>wncyr10 at10.95pt%
+ <12>wncyr10 at12pt%
+ <14>wncyr10 at14.4pt%
+ <17>wncyr10 at17.28pt%
+ <20>wncyr10 at20.74pt%
+ <25>wncyr10 at24.88pt}{}
+
+\new@fontshape{UWCyr}{m}{it}{%
+ <5>wncyi5%
+ <6>wncyi6%
+ <7>wncyi7%
+ <8>wncyi8%
+ <9>wncyi9%
+ <10>wncyi10%
+ <11>wncyi10 at10.95pt%
+ <12>wncyi10 at12pt%
+ <14>wncyi10 at14.4pt%
+ <17>wncyi10 at17.28pt%
+ <20>wncyi10 at20.74pt%
+ <25>wncyi10 at24.88pt}{}
+
+\new@fontshape{UWCyr}{m}{sc}{%
+ <5>wncysc10 at5pt%
+ <6>wncysc10 at6pt%
+ <7>wncysc10 at7pt%
+ <8>wncysc10 at8pt%
+ <9>wncysc10 at9pt%
+ <10>wncysc10%
+ <11>wncysc10 at10.95pt%
+ <12>wncysc10 at12pt%
+ <14>wncysc10 at14.4pt%
+ <17>wncysc10 at17.28pt%
+ <20>wncysc10 at20.74pt%
+ <25>wncysc10 at24.88pt}{}
+
+\new@fontshape{UWCyr}{b}{n}{%
+ <5>wncyb5%
+ <6>wncyb6%
+ <7>wncyb7%
+ <8>wncyb8%
+ <9>wncyb9%
+ <10>wncyb10%
+ <11>wncyb10 at10.95pt%
+ <12>wncyb10 at12pt%
+ <14>wncyb10 at14.4pt%
+ <17>wncyb10 at17.28pt%
+ <20>wncyb10 at20.74pt%
+ <25>wncyb10 at24.88pt}{}
+
+\extra@def{UWCyr}{}{}
+
+\new@fontshape{UWCyss}{m}{n}{%
+ <5>wncyss8 at5pt%
+ <6>wncyss8 at6pt%
+ <7>wncyss8 at7pt%
+ <8>wncyss8%
+ <9>wncyss9%
+ <10>wncyss10%
+ <11>wncyss10 at10.95pt%
+ <12>wncyss10 at12pt%
+ <14>wncyss10 at14.4pt%
+ <17>wncyss10 at17.28pt%
+ <20>wncyss10 at20.74pt%
+ <25>wncyss10 at24.88pt}{}
+
+\extra@def{UWCyss}{}{}
+%</fontdef>
+% \end{macrocode}
+%
+% The main definitions:
+% \begin{macrocode}
+\input cyracc.def
+% \end{macrocode}
+%
+% Set up the user level font commands:
+% \begin{macrocode}
+\extra@def{UWCyr}{}{\mathcyracc}
+\def\cyr{\fontfamily{UWCyr}\cyracc\selectfont}
+\def\cyrss{\fontfamily{UWCyss}\cyracc\selectfont}
+
+\subst@fontshape{UWCyr}{bx}{n}{UWCyr}{b}{n}
+
+\newmathalphabet{\mathcyr}
+\addtoversion{normal}{\mathcyr}{UWCyr}{m}{n}
+\addtoversion{bold}{\mathcyr}{UWCyr}{b}{n}
+% \end{macrocode}
+
+% A version of |\cyracc| using |\mathchar| instead of
+% |\char|, so the symbols come from the correct font. Can use
+% |\fam=7| trick rather than get the cyrillic fontfamily out of
+% |\mathcyr@group| as these symbols are only used within the scope (or
+% argument) of |\mathcr|. This ought to be in {\tt cyrac.def}
+% as it applies to any math-mode use of these fonts, not just \LaTeX.
+
+% \begin{macrocode}
+\def\mathcyracc{%
+ \def\cydot{{\kern0pt}}%
+ \mathchardef\cprime"707E
+ \mathchardef\Cprime"705E
+ \mathchardef\cdprime"707F
+ \mathchardef\Cdprime"705F
+ \def\dbar{dj}\def\Dbar{Dj}%
+ \mathchardef\dz"701E
+ \mathchardef\Dz"7016
+ \mathchardef\dzh"700A
+ \mathchardef\Dzh"7002
+ \def\'##1{\if c##1\mathchar"700F
+ \else \if C##1\mathchar"7007
+ \else \mathaccent"7026 ##1\fi \fi }%
+ \def\`##1{\if e##1\mathchar"700B
+ \else \if E##1\mathchar"7003
+ \else \errmessage{accent \string\` not defined in cyrillic}%
+ ##1\fi \fi }%
+ \def\=##1{\if e##1\mathchar"700D
+ \else \if E##1\mathchar"7005
+ \else \if \i##1\mathchar"700C
+ \else \if I##1\mathchar"7004
+ \else \errmessage{accent \string\= not defined in cyrillic}%
+ ##1\fi \fi \fi \fi }%
+ \def\u##1{\if \i##1\mathaccent"7024 i%
+ \else \mathaccent"7024 ##1\fi }%
+ \def\"##1{\if \i##1\mathaccent"7020 \mathchar"703D
+ \else \if I##1\mathaccent"7020 \mathchar"7004
+ \else \mathaccent"7020 ##1\fi \fi }%
+ \def\!{\mskip-\thinmuskip}}
+% \end{macrocode}
+
+% \end{document}
+\endinput \ No newline at end of file
diff --git a/macros/latex209/contrib/misc/draft.sty b/macros/latex209/contrib/misc/draft.sty
new file mode 100644
index 0000000000..e494f9dcf8
--- /dev/null
+++ b/macros/latex209/contrib/misc/draft.sty
@@ -0,0 +1,253 @@
+%
+% new email address: jeb@risc.com
+%
+% NAME THIS FILE: draft.sty (or name it draft.doc and run it through
+% doc2sty) AND PUT IT IN YOUR MACROS OR TEXFORMATS DIRECTORY
+%
+% This is a first attempt at a draft option for the standard LaTeX styles.
+% It still has several problems, which are detailed below.
+% The draft option attempts to accomplish the following:
+% Without requiring any changes to a LaTeX file (other than specifying
+% the draft option :-) and without changing the formatting of the
+% ``real'' text , mark the spots where \label, \cite, \ref, \index,
+% or \glossary commands occur in text, and print the command arguments
+% in the margin.
+%
+% USAGE:
+% Specify draft as an optional argument to the documentstyle command
+% e.g., \documentstyle[11pt,draft]{book}
+%
+% JUSTIFICATION:
+% Why am I submitting this, even though it still has some problems?
+%
+% 1) Even in its present shape, I think it is fairly useful.
+% I was going crazy before, trying to remember labels, keys,
+% and so forth. I am still going crazy, but now for different
+% reasons.
+% 2) I'm just learning TeX, and don't expect to know enough to do this
+% correctly for a while. Hopefully, someone who knows TeX will
+% agree this is a useful option, and will point out my mistakes.
+% Since the changes to the standard LateX routines are fairly minor,
+% and my mistakes are probably silly and quite obvious, this
+% may be easy to do.
+% 3) I am interested in hearing ideas for other features for this
+% option. This option includes some of the ideas of Dr. Rouben
+% Rostamian (rostamia@umbc3.UMD.EDU) and I am interested in
+% hearing from others.
+% 4) Because of 2) and 3), I think we will end up with a better
+% draft option if I post this in its present form and ask for
+% help.
+%
+% Please send bugs, fixes, and suggestions to:
+% Joe Baker
+% 6731 Boelter Hall UCLA L.A., CA 90024 (213) 825-7079, 825-2327
+% INTERNET: jbaker@ee.ucla.edu
+% UUCP: {ucbvax, or other backbone}!ucla-cs!uclaee!jbaker
+%
+% FINALLY, THE DETAILS
+%
+% The option marks \label,\cite,\ref,\index, and \glossary commands in the
+% text with a scriptsize calligraphic letter in the interline space
+% (L for label,
+% C for cite, R for ref, I for index and G for glossary.
+% The label, citation, is printed in the margin in scriptsize bold letters.
+%
+% For items which are input in horizontal mode, a \marginpar box holding
+% the text is put in the right margin (if there are no free boxes left,
+% the next option is used.)
+%
+% Items which are input in display math mode are shoved into the left
+% margin (parboxes are not used, so it is possible for one label to
+% overwrite another, or for a label to run off the left edge of the page.)
+%
+% Items which are input in non-display math mode and equation arrays
+% are giving me problems. The left margin code works fine for equations
+% in the middle of text, but doesn't produce anything for equation arrays.
+% Unfortunately, I haven't found a way to distinguish between the two
+% cases. For now, I simply raise the item and print it in small letters,
+% and hope to avoid hitting any superscripts.
+%
+% Right now, a space or extra bit of glue is getting inserted where the
+% item is, and thus the ``real'' text is not formatted quite the same in
+% draft mode. On the tests I've run so far, there hasn't been enough
+% added space to actually change any of the linebreaks, so it doesn't
+% seem to be a serious problem.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Okay, here it is %%%%%%%%%%%%%%%%%%%%%%%%%%
+% NOTE THIS:
+% force all marginpar items into the right margin, to leave the left
+% margin for calls to marginalnote.
+\@mparswitchfalse
+%
+%
+% MARGINALNOTE
+%
+% The following is a slightly rewritten version of Knuth's marginalstar stuff
+% from the TeXBook, pg. 316. It is used to put a marginalnote in the left
+% margin. The note is just shoved out and made right justified w.r.t. the
+% left margin. Two calls to marginalnote for the same line of text will
+% be written one over the other. Long marginal notes will extend off the
+% page to the left.
+%
+\def\strutdepth{\dp\strutbox}%
+\def\marginalnote#1{\strut\vadjust{\kern-\strutdepth\specialnote{#1}}}%
+\def\specialnote#1{\vtop to \strutdepth{\baselineskip%
+\strutdepth\vss\llap{\hbox{\scriptsize \bf #1}}\null}}%
+%
+% NOTEMARK
+% This is used to put a little calligraphic letter in the text to mark
+% the spot where the item occurred.
+%
+\def\notemark#1{\rlap{%
+\specialnote{\raise8pt\hbox{$\scriptscriptstyle\cal#1$}}}}
+%
+% Since I haven't found one approach that works in all modes, I
+% have set up the makenote routine to use the following options
+% (draftimm, draftdmm, draftinm, drafthm) in inner math mode,
+% display math mode, inner non-math mode, and horizontal mode.
+% If you don't like one, redefine it before the begin{document}
+% line.
+\def\draftimm#1{\hbox{\bf \scriptsize #1}}
+\def\draftdmm#1{\marginalnote{#1}}
+\def\draftinm#1{\notemark{\bf \scriptsize #1}}
+\def\drafthm#1{\ifx\@freelist\@empty % if there are no boxes for a marginpar,
+ \marginalnote{#1} % use a marginalnote
+ \else
+ {\marginpar{\scriptsize \bf #1}}
+ \fi}
+
+%
+% MAKENOTE
+% this routine prints the command argument. It tries to do the best it
+% can for the given mode.
+%
+%\def\makenote#1{
+%
+%
+% \ifmmode % In math mode, we can't use
+% % \marginpar, so we use marginalnote
+% % in display mode, and for now,
+% % just use bold print in inner mode
+% % marginalnote works okay in regular
+% % non-display math, but not in
+% % eqnarrays. By redefining draft...
+% % you can change this behavior.
+% \ifinner
+% \draftimm{#1}
+% \else
+% \draftdmm{#1}
+% \fi
+% \else
+% \ifinner
+% \draftinm{#1}
+% \else
+% \drafthm{#1}
+% \fi
+% \fi}
+\def\makenote#1{\ifmmode\ifinner\draftimm{#1}%
+\else\draftdmm{#1}\fi%
+\else\ifinner\draftinm{#1}%
+\else%
+\drafthm{#1}%
+\fi\fi}
+%
+% MODIFIED LATEX ROUTINES
+% We add the \notemark and \makenote routines to the \ref, \pageref,
+% \label, \index, \glossary, and \cite commands.
+%
+% REF
+%
+% \ref{FOO} ==
+% BEGIN
+% make a reference mark in the text (calligraphic R)
+% if \r@foo undefined
+% then ??
+% Warning: 'reference foo on page ... undefined'
+% else \@car \eval(\r@FOO)\@nil
+% fi
+% make a reference note (hopefully in the margin) listing the
+% reference key
+% END
+%
+\def\ref#1{\notemark{R}%
+\@ifundefined{r@#1}{{\bf ??}\@warning%
+{Reference `#1' on page \thepage \space %
+undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter%
+\@car\@tempa \@nil\null}\makenote{R:#1}}
+%
+% PAGEREF
+%
+% \pageref{foo} =
+% BEGIN
+% make a page reference mark in the text (calligraphic PR)
+% if \r@foo undefined
+% then ??
+% Warning: 'reference foo on page ... undefined'
+% else \@cdr \eval(\r@FOO)\@nil
+% fi
+% make a reference note (hopefully in the margin) listing the
+% page reference key
+% END
+%
+\def\pageref#1{\notemark{PR}%
+\@ifundefined{r@#1}{{\bf ??}\@warning%
+{Reference `#1' on page \thepage \space %
+undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter%
+\@cdr\@tempa\@nil\null}\makenote{PR:#1}}%
+%
+% LABEL
+%
+% same story for the label routine
+\def\label#1%
+{\notemark{L}\makenote{L:#1}\@bsphack%
+\if@filesw{\let\thepage\relax%
+\xdef\@gtempa{\write\@auxout{\string%
+\newlabel{#1}{{\@currentlabel}{\thepage}}}}}\@gtempa%
+\if@nobreak\ifvmode\nobreak\fi\fi\fi\@esphack}
+%
+% INDEX
+% note that \@wrindex is normally used by both the index and the
+% glossary commands. We will make a new version for the glossary
+% command that differs only in putting out a G instead of an I.
+%
+% \@wrindex{ITEM} ==
+% BEGIN
+% make an I mark in the text, and put the index item in the margin
+% write of {\indexentry{ITEM}{page number}}
+% \endgroup
+% \@esphack
+% END
+%
+\def\@wrindex#1#2{\notemark{I}\makenote{I:#2}%
+\let\thepage\relax%
+\xdef\@gtempa{\write#1{\string \indexentry{#2}{\thepage}}}\endgroup\@gtempa%
+\if@nobreak \ifvmode\nobreak\fi\fi\@esphack}%
+%
+% GLOSSARY
+% version for use by glossary commands
+%
+\def\@wrindexg#1#2{\notemark{G}\makenote{G:#2}%
+\let\thepage\relax%
+\xdef\@gtempa{\write#1{\string \indexentry{#2}{\thepage}}}\endgroup\@gtempa%
+\if@nobreak \ifvmode\nobreak\fi\fi\@esphack}%
+%
+% new version of the glossary stuff: just changed @wrindex to @wrindexg
+%
+\def\makeglossary{\if@filesw \newwrite\@glossaryfile
+ \immediate\openout\@glossaryfile=\jobname.glo
+ \def\glossary{\@bsphack\begingroup\@sanitize\@wrindexg\@glossaryfile}\typeout
+ {Writing glossary file \jobname.glo }\fi}
+%
+% CITE
+%
+% citex is used by the bibliography citation routines
+% the second argument is the citation key
+%
+\def\@citex[#1]#2{\notemark{C}\makenote{C:#2}%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+\def\@citea{}\@cite{\@for\@citeb:=#2\do%
+{\@citea\def\@citea{,}\@ifundefined%
+{b@\@citeb}{{\bf ?}\@warning%
+{Citation `\@citeb' on page \thepage \space undefined}}%
+\hbox{\csname b@\@citeb\endcsname}}}{#1}}
+
diff --git a/macros/latex209/contrib/misc/draftcopy.sty b/macros/latex209/contrib/misc/draftcopy.sty
new file mode 100644
index 0000000000..3338a7e0d7
--- /dev/null
+++ b/macros/latex209/contrib/misc/draftcopy.sty
@@ -0,0 +1,8 @@
+
+% Prints a large "DRAFT" diagonally across each page
+% Does not show up in TeXview
+
+\typeout{Prints "DRAFT" on each page; does not show in TeXView}
+\special{!userdict begin /bop-hook{gsave 200 30 translate
+65 rotate /Times-Roman findfont 216 scalefont setfont
+0 0 moveto 0.85 setgray (DRAFT) show grestore}def end}
diff --git a/macros/latex209/contrib/misc/drafthead.sty b/macros/latex209/contrib/misc/drafthead.sty
new file mode 100644
index 0000000000..b257a557d9
--- /dev/null
+++ b/macros/latex209/contrib/misc/drafthead.sty
@@ -0,0 +1,40 @@
+% Document style option "drafthead"
+% -- usage: \documentstyle[...,drafthead,...]{...}
+% -- puts "DRAFT" with date and time at top of each page.
+%
+% Author: Stephen Page - sdpage@uk.ac.oxford.prg
+% sdpage%prg.oxford.ac.uk@ucl-cs.arpa
+% sdpage%prg.oxford.ac.uk@cs.ucl.ac.uk
+% Released 23 June 1986
+%
+% Sets \pagestyle{myheadings} and installs a header.
+%
+% Bugs:
+% -- LaTeX supplies free page number in a nonzero-width box at r.h. edge,
+% so the word DRAFT is not exactly centered. It's near enough, though!
+% -- Always sets headers, destroying any user-supplied ones.
+%----------------------------------------------------------------------------
+
+%
+% compute the time in hours and minutes; make new variables \timehh and \timemm
+%
+\newcount\timehh\newcount\timemm
+\timehh=\time
+\divide\timehh by 60 \timemm=\time
+\count255=\timehh\multiply\count255 by -60 \advance\timemm by \count255
+%
+% now put in header
+\markboth%
+%--- Left mark
+{\hspace*{\fill}{\protect\small\bf \fbox{DRAFT}}
+\hspace*{\fill}
+\protect\makebox[0pt][r]{\protect\small\sl\today\ --
+\ifnum\timehh<10 0\fi\number\timehh\,:\,\ifnum\timemm<10 0\fi\number\timemm}
+}%--- right mark
+{\protect\makebox[0pt][l]{\protect\small\sl\today\ --
+\ifnum\timehh<10 0\fi\number\timehh\,:\,\ifnum\timemm<10 0\fi\number\timemm}
+\hspace*{\fill}
+{\protect\small\bf \fbox{DRAFT}}
+\hspace*{\fill}}
+
+\pagestyle{myheadings}
diff --git a/macros/latex209/contrib/misc/drafts.sty b/macros/latex209/contrib/misc/drafts.sty
new file mode 100644
index 0000000000..b1cbdb44f6
--- /dev/null
+++ b/macros/latex209/contrib/misc/drafts.sty
@@ -0,0 +1,154 @@
+%%
+%% drafts.sty -- Release: Sept. 3, 1992
+%% Author: H. Saiedian, U. of Nebraska at Omaha, hossein@unocss.unomaha.edu
+%% Usage:
+%% \documentstyle[...,drafts,...]
+%% ...
+%% \pagestyle{drafts}
+%%
+%% This style puts the word |DRAFT| on the top and bottom of each page and
+%% then surrounds it with horizontal rule on both sides. Also date and
+%% time of when the drafts were printed are shown on the bottom of each
+%% each.
+%%
+%% A slightly-modified version of fancyheading.sty is used. drafts.sty has
+%% three parts: fancyheadings stuff developed by Piet van Oostrum (Dept
+%% of Computer Science, University of Utrecht, The Netherlands), TeX code
+%% for getting the time, and the initializations. The initialization part
+%% at the end allows for customization.
+%
+%%--------------------------------------------------------------------------
+%%
+%% Slightly modified fancyheading.sty (developed by Piet van Oostrum)
+%
+\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}}
+\def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}}
+\def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}}
+
+\def\chead{\@ifnextchar[{\@xchead}{\@ychead}}
+\def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}}
+\def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}}
+
+\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}}
+\def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}}
+\def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}}
+
+\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
+\def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}}
+\def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}}
+
+\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
+\def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}}
+\def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}}
+
+\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
+\def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}}
+\def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}}
+
+\newdimen\headrulewidth
+\newdimen\footrulewidth
+\newdimen\plainheadrulewidth
+\newdimen\plainfootrulewidth
+\newdimen\headwidth
+\newif\if@drafts \@draftsfalse
+\def\drafts#1#2{\if@drafts#1\else#2\fi}
+
+% Initialization of the head and foot text.
+
+\headrulewidth 0pt
+\footrulewidth\z@
+
+\plainheadrulewidth\z@
+\plainfootrulewidth\z@
+
+\lhead{}
+\chead{}
+\rhead{}
+%
+\lfoot{}
+\cfoot{}
+\rfoot{}
+
+% Put together a header or footer given the left, center and
+% right text, fillers at left and right and a rule.
+% The \lap commands put the text into an hbox of zero size,
+% so overlapping text does not generate an errormessage.
+
+\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\hbox
+{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[b]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5}
+
+
+\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\footrule
+\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[t]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5}
+
+\def\headrule{{\if@drafts\headrulewidth\plainheadrulewidth\fi
+\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
+
+\def\footrule{{\if@drafts\footrulewidth\plainfootrulewidth\fi
+\vskip-0.3\normalbaselineskip\vskip-\footrulewidth
+\hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}}
+
+\def\ps@fancy{
+\let\@mkboth\markboth
+\@ifundefined{chapter}{\def\sectionmark##1{\markboth
+{\uppercase{\ifnum \c@secnumdepth>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}
+\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}
+{\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}
+\def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi ##1}}}}
+\def\@oddhead{\@fancyhead\relax\@olhead\@ochead\@orhead\hss}
+\def\@oddfoot{\@fancyfoot\relax\@olfoot\@ocfoot\@orfoot\hss}
+\def\@evenhead{\@fancyhead\hss\@elhead\@echead\@erhead\relax}
+\def\@evenfoot{\@fancyfoot\hss\@elfoot\@ecfoot\@erfoot\relax}
+\headwidth\textwidth}
+\def\ps@drafts{\ps@fancy \let\ps@plain\ps@plain@fancy}
+\def\ps@plain@fancy{\@draftstrue\ps@fancy}
+%
+%%--------------------------------------------------------------------------
+%
+%% Getting the time and using it via \now
+%
+\newcount\hour
+\newcount\minute
+\hour=\time
+\divide \hour by 60
+\minute=\time
+\loop \ifnum \minute > 59 \advance \minute by -60 \repeat
+\def\now{%
+\ifnum \hour<13
+\ifnum \hour<1 12:\else\number\hour:\fi
+\ifnum \minute<10 0\fi
+\number\minute%
+\ifnum \hour<12 \ AM \else \ PM \fi
+\else \advance \hour by -12 \number\hour:%
+\ifnum \minute<10 0\fi
+\number\minute%
+\ PM \fi%
+}
+%
+%%--------------------------------------------------------------------------
+%
+%% Initializations
+%
+\headrulewidth 0pt
+\footrulewidth 0pt
+\plainheadrulewidth 0pt
+\plainfootrulewidth 0pt
+%
+\lhead{}
+\chead{.\hrulefill\fbox{\large\sf DRAFT}\hrulefill}
+\rhead{}
+%
+\lfoot{}
+\cfoot{.\hrulefill\fbox{\large\sf DRAFT}\hrulefill \\
+ \sf \today \hspace{1mm} \now \hfill \thepage}
+\rfoot{}
+%%--------------------------------------------------------------------------
+\endinput
diff --git a/macros/latex209/contrib/misc/draftstamp.sty b/macros/latex209/contrib/misc/draftstamp.sty
new file mode 100644
index 0000000000..89b9007597
--- /dev/null
+++ b/macros/latex209/contrib/misc/draftstamp.sty
@@ -0,0 +1,127 @@
+% DRAFTSTAMP.sty
+%
+% Put a big DRAFT (or anything) across each page (or only the first page),
+% using PostScript.
+%
+% USAGE
+% Bring it in with
+% \input draftstamp.sty
+% (LaTeX users can instead say \documentstyle[...,draftstamp,...]{...}).
+% The default it to print DRAFT without the user doing anything.
+%
+% RESTRICTIONS
+% 1) Expects the DVI to PostScript driver to be DVIPS.
+%
+% REMARKS
+% 1) The angle, position, font, and typesize can be changed inside each
+% document if you comment out the \draftstamp just up from the bottom of
+% this file. The price is that you have to say \draftstamp yourself,
+% after you (optionally) redefine these values (obviously at the
+% start of the document). Example: for LaTeX, the line after
+% \documentstyle[..,draftstamp,..]{..}
+% could read
+% \def\drafttext{INTERNAL ONLY}\def\draftPSscalefont{ 100 }\draftstamp
+% (note the \draftstamp). See also Installation (3).
+% 2) The number before setgray describes lightness or darkness of the text.
+% This is white area/total area, so white=1, black=0.
+% 3) Called draftstamp.sty and not draftstamp.tex (i) so LaTeX users can
+% include it in the list of substyles, if desired, and (ii) so a person
+% on the nets can tell from the directory listing alone that it is
+% a drop-in file, and not a document.
+%
+% INSTALLATION
+% 0) Put this where your TeX looks for files. For emTeX that is probably
+% c:\emtex\texinputs.
+% 1) Run as described in Usage and check the darkness of DRAFT. Tip: check
+% if it reproduces on your favorite copier. See Remark (2).
+% 2) Have the next line be uncommented if you want a warning when the
+% stamp is on.
+\message{ Substyle DRAFTSTAMP <93-Jul-07 jh>.}
+% 3) Some people may want DRAFT only on the first page. Or they may want
+% some other text. They need to change this file (or, if this file is in
+% an inaccessable shared area, change a copy of this file in their home
+% area).
+% Here are their options.
+% (i) Go to the bottom.
+% Change the commenting so that \draftfirstpageonlytrue is the
+% default. Now every document will put DRAFT on only the first page.
+% Or, change \drafttext to \def\drafttext{v. 1.01}. Now every
+% document will have v. 1.01 on the pages. Of course, non-English
+% documents will need something like this.
+% Or, change any default in this way.
+% (ii) To decide values on a per-document basis, go to the bottom and
+% comment out the \draftstamp invocation. Inside eacy document,
+% any changes made to the defaults must be followed by \draftstamp:
+% for instance, DRAFT only on the first page with
+% \draftfirstpageonlytrue\draftstamp
+% (naturally you can, for instance, combine the \input draftstamp.sty
+% line and the above into a personal macro).
+% (iii) Modify this file to either prompt the user or to look for a
+% user's (configuration or profile) file to set defaults on a
+% per-user basis. I (jh) thought these were both big solutions to
+% a small problem, so I didn't do them.
+%
+% HISTORY
+% 93-Jul-07 jh Lones Smith (lones@lones.mit.edu) suggests an option for
+% printing only on the first page. I made some internal changes so
+% that could be done at document-processing time, instead of set
+% by a system manager.
+% 93-Jul-01 jh Added Installation (1) tip. Posted to SHSU.
+% 93-May-18 jh Changed setgray number from .99 to .94 to make DRAFT darker
+% so it will reproduce on my copier.
+% 93-Mar-05 jim hefferon (hefferon@smcvax.smcvt.edu) Typed in from an note
+% given by Vivek Khera (khera@cs.duke.edu) on comp.text.tex, who said it
+% came first from Anita Marie Hoover (anita@brahms.udel.edu). ?Derives
+% first from the dvips manual?
+%
+% macro: \draftstamp Insert raw PostScript via a dvips \special.
+% The dvips manual under Other Bells and Whistles suggests printing a DRAFT
+% across each page with essentially:
+% \special{! userdict
+% begin /bop-hook{
+% gsave 200 30 translate
+% 65 rotate /Times-Roman findfont 220 scalefont setfont
+% 0 0 moveto 0.94 setgray (DRAFT) show grestore
+% }def end}}%
+% (`bop-hook' for `beginning of page'?). I (jh) turned these numbers
+% into variables and buried it inside a \def\draftstamp so the numbers are
+% set when the \draftstamp command is issued, instead of when this file is
+% read.
+\newif\ifdraftfirstpageonly
+% Now either \draftfirstpageonlytrue or \draftfirstpageonlyfalse
+% puts DRAFT only on the first page, or on every page. Omitting both
+% amounts to `false'. See the discussion of \newif (p. 211 in TeXbook).
+% (I (jh) chose \newif instead of an optional argument so plain TeX works,
+% not just LaTeX.)
+\def\draftstamphook{\ifdraftfirstpageonly/start%
+ \else/bop%
+ \fi}
+\def\draftstamp{\special{! userdict
+ begin \draftstamphook-hook{
+ gsave \draftPStranslate translate
+ \draftPSrotate rotate \draftPSfont findfont
+ \draftPSscalefont scalefont setfont
+ \draftPSmoveto moveto \draftPSgraylevel setgray
+ (\drafttext) show grestore
+ }def end}}%
+%
+% DEFAULTS
+\def\drafttext{DRAFT}
+\def\draftPStranslate{ 200 30 }
+\def\draftPSscalefont{ 220 }
+\def\draftPSgraylevel{ 0.94 } % See Remarks (2) and Installation (1).
+\def\draftPSrotate{ 65 }
+\def\draftPSmoveto{ 0 0 }
+\def\draftPSfont{ /Times-Roman }
+% Comment out whichever of these you don't want to make the default.
+\draftfirstpageonlyfalse % do all pages
+%\draftfirstpageonlytrue % do first page only
+%
+% The next command activates \draftstamp. If you want to activate
+% differently for each document (say, by sometimes changing DRAFT to
+% SECRET) you need to comment this line out. (It
+% is here for compatibility with old versions of this style.) See also
+% Installation (3).
+\draftstamp
+
+\endinput
diff --git a/macros/latex209/contrib/misc/drop.sty b/macros/latex209/contrib/misc/drop.sty
new file mode 100644
index 0000000000..f4a5d773f9
--- /dev/null
+++ b/macros/latex209/contrib/misc/drop.sty
@@ -0,0 +1,67 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DROP.DOC <February 17, 1988>
+% Macro for dropping and enlarging the first letter(s) of a paragraph.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Macro written by David G. Cantor, and published Fri, 12 Feb 88, in
+% TeXhax, 1988 #16.
+% Internet: dgc@math.ucla.edu
+% UUCP: ...!{ihnp4, randvax, sdcrdcf, ucbvax}!ucla-cs!dgc
+%
+% Modified for use with LaTeX by Dominik Wujastyk, February 17, 1988
+% Internet: dow@wjh12.harvard.edu
+% Bitnet: dow@harvunxw.bitnet
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This LaTeX macro is for dropping and enlarging the first letter(s) of a
+% paragraph. The argument may be one or more letters.
+%
+% Here is an example of its usage:
+%
+% \documentstyle[drop]{article}
+% \begin{document}
+% \drop{IN} THE beginning God created the heaven and the earth. Now the
+% earth was unformed and void, and darkness was upon the face of the
+% deep; and the spirit of God hovered over the face of the waters.
+% \end{document}
+%
+% Which will produce something along these lines:
+%
+% I I\ I THE beginning God created the heaven and the earth.
+% I I \ I Now the earth was unformed and void, and darkness was
+% I I \I upon the face of the deep; and the spirit of God hov-
+% ered over the face of the waters.
+%
+% In the first instance the macro will pause during LaTeX processing and
+% ask you for the font you wish to use for you drop capital. When you
+% have something that looks good, then comment out box one in DROP.STY,
+% and comment in box two, replacing "cmr10 scaled \magstep5" with the font
+% of your choice.
+%
+% In my opinion (DW) there are no fonts available in the standard
+% TeX/LaTeX set that are ideal for this use, unless you go down to 9pt or
+% 8pt for your text face, and this is too small. If you have Metafont you
+% should consider generating a cmr17 font at a magstep of two (about 25pt)
+% or three (about 30pt), or even more, depending on the point size of your
+% main text. Why not go the whole hog and design some really fancy
+% capitals from scratch!
+%
+%%%%%%%%%%%%%%%%%%%%% BOX ONE %%%%%%%%%%%%%%%%%%%%%%%%%
+\typein[\dropinitialfont]{Font for Dropped initial:} %
+\font\largefont \dropinitialfont %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%%%%%%%%%%%%%%%%%%%%% BOX TWO %%%%%%%%%%%%%%%%%%%%%%%%%
+%\font\largefont= cmr10 scaled \magstep5 %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\drop#1#2{{\noindent
+ \setbox0\hbox{\largefont #1}\setbox1\hbox{#2}\setbox2\hbox{(}%
+ \count0=\ht0\advance\count0 by\dp0\count1\baselineskip
+ \advance\count0 by-\ht1\advance\count0by\ht2
+ \dimen1=.5ex\advance\count0by\dimen1\divide\count0 by\count1
+ \advance\count0 by1\dimen0\wd0
+ \advance\dimen0 by.25em\dimen1=\ht0\advance\dimen1 by-\ht1
+ \global\hangindent\dimen0\global\hangafter-\count0
+ \hskip-\dimen0\setbox0\hbox to\dimen0{\raise-\dimen1\box0\hss}%
+ \dp0=0in\ht0=0in\box0}#2}
diff --git a/macros/latex209/contrib/misc/ebnf.sty b/macros/latex209/contrib/misc/ebnf.sty
new file mode 100644
index 0000000000..8915794b77
--- /dev/null
+++ b/macros/latex209/contrib/misc/ebnf.sty
@@ -0,0 +1,72 @@
+%From: Damian.Cugley@prg.oxford.ac.uk (Damian Cugley)
+%Subject: Re: Styles for lispcode and grammars wanted...
+%Date: 11 Jul 90 18:34:23 GMT
+%
+%Here's one I threw together for my own use. It does EBNF, in LaTeX, in
+%the style I like - catagory names italicized in angle brackets, and
+%`::=' introducing productions.
+%
+%Example of use:
+%------------------------------------------------------------------------
+%Generally glue is quoted using this notation~\TBcite[\p271]:
+%\begin{EBNF}
+% \item[glue]
+% \<dimen> [~`plus' \<stretch>~] [~`minus' \<stretch>~].
+% \item[stretch]
+% \<dimen> | \<fil dimen>.
+% \item[fil dimen]
+% \<factor> (~`fil' | `fill' | `filll'~).
+%\end{EBNF}
+%A \<stretch> which is a \<dimen> ...
+%------------------------------------------------------------------------
+%
+%This is "list" environment in the style of "description" etc (Sec. 5.7).
+%Thus, productions start with
+%
+% \item[LHS]
+%
+%which produces
+%
+% <LHS> ::=
+%
+%in the document. (This was so I can alter the ::= to something else if
+%I really want to.) Each production is in LR (horizontal) mode. The
+%whole thing is indented to \parindent, with turnover lines indented a
+%further 2 em.
+%
+%`|' produces a vertical line.
+%
+%\<FOO> or \Cat{FOO} produces <FOO>, with FOO italicized.
+%
+%You might prefer {\tt plus} instead of `plus' etc.
+%
+%
+%Here's the code:
+%------------------------------------------------------------------------
+% Damian Cugley <Damian.Cugley@prg.oxford.ac.uk> Wed 11 Jul 1990
+
+\begingroup \catcode`\|=13
+ \gdef\EBNF
+ {\list{???}%
+ {%
+ \catcode`\|=13 \def|{$\mid$}%
+ \def\makelabel##1{\<##1> ::=}%
+ \parsep=0pt \itemsep=\smallskipamount
+ \leftmargin=\parindent \advance\leftmargin+2em
+ \labelsep=0.5em \labelwidth=1.5em
+ \raggedright
+ }%
+ }
+\endgroup
+
+\let\endEBNF\endlist
+
+\def\Cat#1{\hbox{$\langle${\it #1\/}$\rangle$}}
+\def\<#1>{Cat{#1}}
+\endinput
+------------------------------------------------------------------------
+
+ /--------------------------------------------------------------------\
+ | Damian Cugley, Programming Research Group, 11 Keble Rd, Oxford, UK |
+ | Damian.Cugley@prg.oxford.ac.uk =or= ...@oxford.prg in UK |
+ \--------------------------------------------------------------------/
diff --git a/macros/latex209/contrib/misc/editbar.sty b/macros/latex209/contrib/misc/editbar.sty
new file mode 100644
index 0000000000..3214dc108b
--- /dev/null
+++ b/macros/latex209/contrib/misc/editbar.sty
@@ -0,0 +1,615 @@
+\iffalse %
+
+ LaTeX Style: editbar.sty 2.0
+
+ Written by: Michael R. Van Geest
+ Unisys Corp.
+ M.S. 4522
+ 2276 Highcrest Road
+ Roseville, MN 55113
+
+ Internet: mrv@unirsvl.rsvl.unisys.com
+
+ Date: August 17, 1994
+
+ TeX Drivers Supported: DVIPS
+
+
+ General Information:
+
+ editbar.sty is a LaTeX style to be used to print edit bars
+ (change bars) with PostScript as the final output.
+
+ DVIPS is the only driver currently supported, but others could
+ be used.
+
+ Generation of edit bars on one page and/or spanning
+ multiple pages.
+
+ The output routine of LaTeX is modified to include the edit
+ bar commands to span multiple pages.
+
+
+ Macro usage:
+
+ ebarsetup - Place after \begin{document}
+
+ ebarcleanup - Place before \end{document}
+ It is adviseable to put a \clearpage before
+ \ebarcleanup.
+
+ genebaron - Start generating edit bars.
+
+ Put in a \hbox to 0pt to not affect letter spacing.
+
+ Example: \hbox to 0pt{\genebaron\hss}
+
+ If the first item in a sentence or data item,
+ put \hskip0pt before it.
+
+ Example: \hskip0pt\hbox to 0pt{\genebaron\hss}
+
+ genebaroff - End generating edit bars.
+
+
+ Counters that can be modified are:
+
+ \ebaroddside - Distance in points from the left side of the
+ paper to where the edit bar on the odd side
+ of the paper is placed.
+
+ Currently set to 508.
+
+ \ebarevenside - Distance in points from the left side of the
+ paper to where the edit bar on the even side
+ of the paper is placed.
+
+ Currently set to -30.
+
+ \ebarbarheight - Height of edit bar in points on current line.
+ Currently set to 12 (1 pica).
+
+ \ebarbarwidth - Edit bar width in points, currently set to 2.
+
+
+ Auxilary files that are created are:
+
+ \jobname.ebo - Edit bar out file.
+
+ \count0 is written to this file in the output
+ routine by the \write command.
+
+ \jobname.ebi - Edit bar in file. The contents of \jobname.ebo
+ are copied to this file after 1 pass of LaTeX.
+ This file is used as input to the genebaron
+ and genebaroff macros to find out which page(s)
+ to place the edit bars.
+
+ Notes: 1. The .ebo and .ebi files must be deleted if revisions
+ are made to the original .tex file.
+
+ 2. Three passes must be run to ensure correct ebar
+ generation.
+
+ Pass 1 - Write editbar on and off to .ebo file
+
+ Pass 2 - Read editbar on and offs from .ebi file
+ generated on pass one.
+
+ If spanning pages, write ebar span on and
+ off macros to the aux file.
+
+ The reason this is done, is because TeX reads
+ ahead a couple of pages, and will set count
+ registers incorrectly, resulting in incorrect
+ page spanning.
+
+ By writing edit bar page span macros to the aux
+ file, the next pass can do an ifx to check
+ that the edit bar is spanning the correct pages.
+
+ Pass 3 - Read editbar on and offs from pass two.
+ Also check for macros written to aux file
+ from pass 2 for edit bar page spanning.
+
+
+ Restrictions:
+
+ - Does not span multiple chapters. The edit bar must
+ end at the chapter. This is because count0 is used
+ as the edit bar counter to place on odd or even sides
+ if two sided styles are used. If one sided styles
+ are used, the odd side edit bar code is used.
+
+ - Nested edit bars are not supported.
+
+ Examples:
+
+ \genebaron Text \genebaron text \genebaroff
+
+ \genebaron Text \genebaroff text \genebaroff
+
+ - Does support paper resolution. The DVIPS
+ PostScript def Resolution is used.
+
+ - Edit bars in Longtable.sty should work.
+
+
+ Sample Usage:
+
+ \documentstyle[editbar]{book}
+ %
+ \begin{document}
+ %
+ \ebarsetup{}%
+ %
+ Paragraph on page 1
+ %
+ \newpage
+ This paragraph \hbox to 0pt{\genebaron\hss}has an edit bar on it.
+ %
+ \newpage
+ %
+ This is a paragraph that has an edit bar around it.
+ %
+ This \genebaroff{}is a paragraph with end edit bar that ends it.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ More stuff.
+ %
+ \clearpage\ebarcleanup{}%
+ \end{document}
+
+\fi %
+
+\def\fileversion{v2.0}
+\def\filedate{17AUG94}
+\wlog{Style-Option: `editbar' \fileversion \space\space <\filedate> (M.R.V.G.)}
+
+% Dimen Register - truepagetotal
+%
+% This is set in the sample output routine. Must be used for edit bars
+% to work correctly.
+%
+\newdimen\truepagetotal
+%
+%
+% Read Register - ebarin
+% Edit Bar read in file
+%
+\newread\ebarin
+
+% Write Register - ebarout
+% Edit Bar write out file
+%
+\newwrite\ebarout
+
+% Count Register - ebarnest
+%
+\newcount\ebarnest
+\ebarnest=0
+
+% Count Register - ebarcount
+%
+\newcount\ebarcount
+\ebarcount=0
+
+% Count Register - ebaroddside
+%
+\newcount\ebaroddside
+\ebaroddside=508
+
+% Count Register - ebarevenside
+%
+\newcount\ebarevenside
+\ebarevenside=-30
+
+% Count Register - ebarbarwidth
+%
+\newcount\ebarbarwidth
+\ebarbarwidth=2
+
+% Count Register - ebarbarheight
+%
+\newcount\ebarbarheight
+\ebarbarheight=12
+
+% Count Register - ebarpagesspan
+%
+\newcount\ebarpagesspan
+\ebarpagesspan=0
+
+% Count Register - ebaroncapture
+%
+\newcount\ebaroncapture
+\ebaroncapture=0
+
+% Count Register - ebaroncapturesave
+%
+\newcount\ebaroncapturesave
+\ebaroncapturesave=0
+
+% Count Register - ebaroffcapture
+%
+\newcount\ebaroffcapture
+\ebaroffcapture=0
+
+% Count Register - ebarsubtract
+%
+\newcount\ebarsubtract
+\ebarsubtract=0
+
+% If - ifebarfileopen
+% Checks to see if the ebarfile is open
+%
+\newif\ifebarfileopen
+%
+% If - ifebarspanpages
+% Checks for ebar spanning pages
+%
+\newif\ifebarspanpages
+\ebarspanpagesfalse %
+%
+% Def - Text for ifx checking on ebar page spanning
+%
+\def\ebarcheckonmsg{ebarspanon}
+\def\ebarcheckoffmsg{ebarspanoff}
+%
+% ebarsetup
+%
+% Sets up the input and output ebar files
+%
+% Place at the top of the document
+%
+\globaldefs1%
+\def\ebarsetup{%
+\immediate\openin\ebarin=\jobname.ebi %
+\ifeof\ebarin%
+ \typeout{No file \jobname.ebi}%
+ \global\ebarfileopenfalse%
+\else%
+ \global\ebarfileopentrue%
+\fi%
+\immediate\openout\ebarout=\jobname.ebo %
+}%
+%
+% ebarcleanup
+%
+% Closes the ebar output file, then opens the ebar output file for read,
+% then copies the ebar output file to the ebar input file for the next
+% pass to read the ebar input file
+%
+% Place at the end of the document
+%
+\def\ebarcleanup{%
+\immediate\closein\ebarin%
+\immediate\closeout\ebarout%
+%%
+\immediate\openin\ebarin=\jobname.ebo %
+\immediate\openout\ebarout=\jobname.ebi %
+%%
+\ebarfileopentrue%
+%%
+\loop%
+ \immediate\read\ebarin to \ebarinin%
+ \ifeof\ebarin%
+ \ebarfileopenfalse%
+ \fi%
+ \ifebarfileopen%
+ \immediate\write\ebarout{\ebarinin}%
+\repeat%
+%%
+\closein\ebarin%
+\closeout\ebarout%
+}%
+%
+% ebargeton
+%
+% Gets the next ebar reference from the ebar input file
+%
+% Specifically, gets the relative page number output from the prior
+% pass of genebar macro
+%
+\def\ebargeton{%
+\immediate%
+\ifeof\ebarin%
+%
+\else%
+ \immediate\read\ebarin to \ebarinon%
+ \global\ebaroncapture=\ebarinon%
+ \global\ebaroncapturesave=\ebarinon%
+\fi%
+}
+%
+% ebargetoff
+%
+% Gets the next ebar reference from the ebar input file
+%
+% Specifically, gets the relative page number output from the prior
+% pass of genebar macro
+%
+\def\ebargetoff{%
+\immediate%
+\ifeof\ebarin%
+%
+\else%
+ \immediate\read\ebarin to \ebarinoff%
+ \global\ebaroffcapture=\ebarinoff%
+\fi%
+}
+%
+% endebarthispage
+%
+% Check edit bar status to end an edit bar on this page
+%
+\def\endebarthispage{%
+ \expandafter\ifx\csname EBARSPANONat%
+ Count\romannumeral\ebarcount%
+ Page\romannumeral\count0%
+ \endcsname%
+ \ebarcheckonmsg
+%
+% TRUE Statement, Macro is defined
+%
+ \message{Ebar Spanning Pages On}
+ \global\ebarspanpagestrue
+ \fi %
+%
+ \ifebarspanpages
+ \genebaroffpage{}%
+ \fi%
+}%
+%
+% beginebarnextpage
+%
+% Check edit bar status to begin an edit bar on next page
+%
+\def\beginebarnextpage{%
+ \ifebarspanpages
+ \genebaronpage{}%
+ \fi%
+ \expandafter\ifx\csname EBARSPANOFFat%
+ Count\romannumeral\ebarcount%
+ Page\romannumeral\count0%
+ \endcsname%
+ \ebarcheckoffmsg
+%
+% TRUE Statement, Macro is defined
+%
+ \message{Ebar Spanning Pages Off}
+ \global\ebarspanpagesfalse
+ \fi
+}%
+%
+% ebarspecialstart, ebarspecialodd, ebarspecialeven, and ebarspecialend
+%
+% Start, Odd and even pages, and end special macros
+%
+\newtoks\ebarendline
+\ebarendline={ }%
+%
+%
+\def\ebarspecialstart{%
+ \special{ps:%
+ /SPECIALSTART pop % FOR DEBUGGING PostScript
+ Resolution 72 div /Point exch def % Get points conversion
+ currentpoint exch pop % Get current Y point
+ Point \the\ebarbarheight\the\ebarendline %
+ mul sub /Y1point exch def % Get current Y point
+ % minus ebar height
+ }%
+}%
+%
+\def\ebarspecialodd{%
+ \special{ps:%
+ /SPECIALODD pop % FOR DEBUGGING PostScript
+ Point \the\ebaroddside\the\ebarendline %
+ mul /Xpoint exch def % Get X point
+ }%
+}%
+%
+\def\ebarspecialeven{%
+ \special{ps:%
+ /SPECIALEVEN pop % FOR DEBUGGING PostScript
+ Point \the\ebarevenside\the\ebarendline %
+ mul /Xpoint exch def % Get X point
+ }%
+}%
+%
+\def\ebarspecialend{%
+ \special{ps:%
+ /SPECIALEND pop % FOR DEBUGGING PostScript
+ gsave %
+ Point \the\ebarbarwidth\the\ebarendline %
+ mul setlinewidth % Edit Bar width
+ currentpoint exch pop \the\ebarsubtract\the\ebarendline %
+ % Get current Y point
+ Point mul sub /Y2point exch def % minus adjustment
+ Xpoint Y1point moveto %
+ Xpoint Y2point lineto stroke %
+ grestore}%
+}%
+%
+% genebaron
+%
+% Writes the relative page number to the ebar output file,
+% reads from the ebar input file if open and generates the ebar on
+%
+% Place where the ebar will occur
+%
+\def\genebaron{%
+ \write\ebarout{\the\count0}%
+ \global\advance\ebarcount by 1 %
+\ifeof\ebarin%
+\else%
+ \global\advance\ebarnest by 1 %
+%
+ \ifnum\ebarnest=1 %
+ \else%
+ \@latexerr{Edit bar are nested, bad results can occur.}%
+ {Please use genebaroff before using genebaron}%
+ \fi%
+%
+ \ebargeton% % Get ebar on page
+ \ebargetoff% % Get ebar off page
+%
+ \global\ebarpagesspan=\ebaroffcapture% % Get page span
+ \global\advance\ebarpagesspan by -\ebaroncapture%
+%
+ \ifnum\ebarpagesspan>0%
+%
+ \immediate\write \@auxout{\gdef\string\EBARSPANONat%
+ Count\romannumeral\ebarcount%
+ Page\romannumeral\ebaroncapture{ebarspanon}}
+ \immediate\write \@auxout{\gdef\string\EBARSPANOFFat%
+ Count\romannumeral\ebarcount%
+ Page\romannumeral\ebaroffcapture{ebarspanoff}}
+%
+ \fi %
+%
+ \special{ps:%
+ /GENEBARON pop % FOR DEBUGGING PostScript
+ }%
+%
+ \ebarspecialstart%
+%
+ \if@twoside%
+ \ifodd\ebaroncapture%
+ \ebarspecialodd%
+ \else%
+ \ebarspecialeven%
+ \fi%
+ \else%
+ \ebarspecialodd%
+ \fi%
+\fi%
+}%
+%
+% genebaronpage
+%
+% Fake ebar on for page begin
+%
+%
+\def\genebaronpage{%
+\ifeof\ebarin%
+\else%
+ \special{ps:%
+ /GENEBARONPAGE pop % FOR DEBUGGING PostScript
+ }%
+ \ebarspecialstart%
+%
+ \if@twoside%
+ \ifodd\count0%
+ \ebarspecialodd%
+ \else%
+ \ebarspecialeven%
+ \fi%
+ \else%
+ \ebarspecialodd%
+ \fi%
+\fi%
+}%
+%
+% genebaroff
+%
+% Writes the relative page number to the ebar output file, and
+% generates special code for end
+%
+% Place where the ebar will occur
+%
+\def\genebaroff{\write\ebarout{\the\count0}%
+\ifeof\ebarin%
+\else%
+ \global\ebarsubtract=0 %
+ \global\advance\ebarnest by -1 %
+%
+ \ifnum\ebarnest=0 %
+ \else%
+ \@latexerr{Edit bar are nested, bad results can occur.}%
+ {Please use genebaron before using genebaroff}%
+ \fi%
+%
+ \special{ps:%
+ /GENEBAROFF pop % FOR DEBUGGING PostScript
+ }%
+ \ebarspecialend%
+\fi%
+}%
+%
+% genebaroffpage
+%
+% Fake ebar off for page end
+%
+\def\genebaroffpage{%
+\ifeof\ebarin%
+\else%
+ \global\ebarsubtract=\pagegoal % Get pagegoal
+ \ifdim\truepagetotal < \pagegoal %
+ \global\advance\ebarsubtract by -\truepagetotal % subtract truepagetotal
+ \else
+ \global\advance\ebarsubtract by -\pagegoal % subtract pagegoal
+ \fi
+%
+ \global\divide\ebarsubtract by 65536 % Divide by scaled points
+%
+ \special{ps:%
+ /GENEBAROFFPAGE pop % FOR DEBUGGING PostScript
+ }%
+ \ebarspecialend%
+\fi%
+}%
+%
+%
+\globaldefs0%
+%
+% Sample shipout routine changes
+%
+\def\@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
+%
+ {\setbox0=\vbox{\unvcopy\@outputbox} % MRV 07JAN94
+ \global\truepagetotal=\ht0} % Get true page total
+%
+ \shipout
+ \vbox{\normalsize \baselineskip\z@ \lineskip\z@
+ \let\par\@@par %% 15 Sep 87
+ \vskip \topmargin \moveright\@themargin
+ \vbox{\setbox\@tempboxa
+ \vbox to\headheight{\vfil \hbox to\textwidth
+ {\let\label\@gobble \let\index\@gobble
+ \@thehead}} %% 22 Feb 87
+ \dp\@tempboxa\z@
+ \box\@tempboxa
+ \vskip \headsep
+%
+ \box\@outputbox
+%
+ \endebarthispage%
+%
+ \baselineskip\footskip
+ \hbox to\textwidth{\let\label\@gobble
+ \let\index\@gobble %% 22 Feb 87
+ \@thefoot}}}\global\@colht\textheight
+ \endgroup\stepcounter{page}\let\firstmark\botmark%
+%
+ \beginebarnextpage{}}
+%
diff --git a/macros/latex209/contrib/misc/enumspec.sty b/macros/latex209/contrib/misc/enumspec.sty
new file mode 100644
index 0000000000..05726d9d0c
--- /dev/null
+++ b/macros/latex209/contrib/misc/enumspec.sty
@@ -0,0 +1,56 @@
+%% ENUMSPEC.STY -- Enumerate environment with special leading character for
+%% LaTeX version 2.09 (\documentstyle[enumspec]{...})
+%% January 13, 1988
+%% George D. Greenwade (BED_GDG@SHSU), Center for Business & Economic
+%% Research, Sam Houston State University, Huntsville, TX 77341-2056
+%%
+%% Allows for a leading character on the enumi ... enumiv labels. Default
+%% character (\leadchar) is $\ast$, but may easily be changed on the first
+%% line of the code, in the preamble of the LaTeX document (using \def),
+%% or in the body of the LaTeX document (using \renewcommand). Instead of
+%% \item in the enumerate environment, use \itemn for normal enumeration and
+%% \items for special character enumeration, as these switch between the
+%% enumeration labels (NOTE: \item may be used, but once \items is invoked,
+%% enumi ... enumiv are globally redefined, until reset using \itemn.)
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Define leading character %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\leadchar{$\ast$}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Define special labels %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\stardefs{\def\labelenumi{\leadchar \arabic{enumi}.}
+ \def\theenumi{\arabic{enumi}}
+ \def\labelenumii{\leadchar (\alph{enumii})}
+ \def\theenumii{\alph{enumii}}
+ \def\p@enumii{\theenumi}
+ \def\labelenumiii{\leadchar \roman{enumiii}.}
+ \def\theenumiii{\roman{enumiii}}
+ \def\p@enumiii{\theenumi(\theenumii)}
+ \def\labelenumiv{\leadchar \Alph{enumiv}.}
+ \def\theenumiv{\Alph{enumiv}}
+ \def\p@enumiv{\p@enumiii\theenumiii}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Define normal labels %%
+%% (from ARTICLE.STY) %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\normaldefs{\def\labelenumi{\arabic{enumi}.}
+ \def\theenumi{\arabic{enumi}}
+ \def\labelenumii{(\alph{enumii})}
+ \def\theenumii{\alph{enumii}}
+ \def\p@enumii{\theenumi}
+ \def\labelenumiii{\roman{enumiii}.}
+ \def\theenumiii{\roman{enumiii}}
+ \def\p@enumiii{\theenumi(\theenumii)}
+ \def\labelenumiv{\Alph{enumiv}.}
+ \def\theenumiv{\Alph{enumiv}}
+ \def\p@enumiv{\p@enumiii\theenumiii}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Define \items and \itemn %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\items{\stardefs \item}
+\def\itemn{\normaldefs \item}
diff --git a/macros/latex209/contrib/misc/env.sty b/macros/latex209/contrib/misc/env.sty
new file mode 100644
index 0000000000..4b14401cdd
--- /dev/null
+++ b/macros/latex209/contrib/misc/env.sty
@@ -0,0 +1,126 @@
+%From: <DLV%CUNYVMS1.BITNET@uwavm.acs.washington.edu>
+
+%\documentstyle[12pt,env]{article}
+%\nofiles
+%\begin{document}
+%\sf
+%
+%\from{Dimitri Vulis} %fills the blank in the return address on our stationery
+%
+%\begin{envelope}
+%Dimitri Vulis\\
+%Department of Mathematics/Box 330\\
+%City University of New York Graduate Center\\
+%33 West 33 St.\\
+%New York, NY 10036
+%\ZipBar{10036-8099}
+%\end{envelope}
+%
+%\begin{envelope}
+%American Mathematical Society\\
+%P. O. Box 6248\\
+%Providence, RI 02940
+%\ZipBar{02940-9943}
+%\end{envelope}
+%
+%\begin{envelope}
+%Acad.\ Stanislav P. Merkuriev, Rector\\
+%Leningrad State University\\
+%Universitetskaya Naberezhnaya, 7/9\\
+%Leningrad 199034\\
+%USSR
+%\end{envelope}
+%
+%\end{document}
+%
+%Evidently, the envilope environment contains the address, and \ZipBar produces
+%an optional bar code on the bottom right corner.
+%
+%Assuming that you are facing the LaserWriter, and the cables are toward the
+%wall, feed the envelope into the slot on your right (opposite the paper
+%cassette) face up, so that its bottom is flush with the edge of the slot
+%closest to the wall. If this is consufing, just try all possible combinations.
+%
+%When you are printing multiple envelopes, there is an approx. 2 second time
+%window to feed the next envelope; if you do it too early, or too late, it jams.
+%Wait about 2 seconds before the previous envelope disappears. Here, practice
+%only makes perfect.
+%
+%Manual feeding won't work if your paper cassette is empty, and it's normal for
+%a blank sheet of paper to be dragged out together with the envelope.
+
+
+\textwidth9.5in
+\textheight6.675in
+\pagestyle{empty}
+\special{ps: landscape}
+
+\def\@from{}
+\def\from#1{\def\@from{#1}}
+
+\newbox\ZipBarL
+\newbox\ZipBarS %1/64" 1/32"
+\setbox\ZipBarL\hbox{\vrule height.125in width.015625in\hskip.03125in}
+\setbox\ZipBarS\hbox{\vrule height.05in width.015625in\hskip.03125in}
+%each black bar is about 4.6 dots wide on a 300dpi printer
+\newcount\ZipBarm
+\newcount\ZipBarn
+\newif\ifzipcode
+\chardef\ten=10
+
+%Almost like using \ifcase... except `-' is ignored.
+\def\ZipBar@@@#1#2{\expandafter\def\csname ZipBar@@#1\endcsname%
+{#2\advance\ZipBarn#1\relax}}
+
+\ZipBar@@@0{\copy\ZipBarL\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS\copy\ZipBarS}
+\ZipBar@@@1{\copy\ZipBarS\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL\copy\ZipBarL}
+\ZipBar@@@2{\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS\copy\ZipBarL}
+\ZipBar@@@3{\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL\copy\ZipBarL\copy\ZipBarS}
+\ZipBar@@@4{\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL}
+\ZipBar@@@5{\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS}
+\ZipBar@@@6{\copy\ZipBarS\copy\ZipBarL\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS}
+\ZipBar@@@7{\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL}
+\ZipBar@@@8{\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS}
+\ZipBar@@@9{\copy\ZipBarL\copy\ZipBarS\copy\ZipBarL\copy\ZipBarS\copy\ZipBarS}
+
+\def\ZipBar@@#1{\csname ZipBar@@#1\endcsname}
+
+\def\ZipBar@#1{%
+ \ifx#1\null%
+ \let\next\relax%
+ \else%
+ \ZipBar@@{#1}%
+ \let\next\ZipBar@%
+ \fi%
+ \next}
+
+\def\ZipBar#1{%
+ \zipcodetrue%
+ \par\vspace{.5in}%
+ \hfill\hbox{%
+ \copy\ZipBarL% start with a long bar
+ \ZipBarn\z@%
+ \ZipBar@#1\null%
+ \ZipBarm\ZipBarn%
+ \divide\ZipBarm\ten%
+ \multiply\ZipBarm\ten%
+ \advance\ZipBarm-\ZipBarn%
+ \ifnum\ZipBarm<0%
+ \advance\ZipBarm\ten%
+ \fi%
+ \ZipBar@@{\the\ZipBarm}% last digit, so that the sum is divisible by ten
+ \copy\ZipBarL% end with a long bar
+ }\hspace*{1.5in}\vspace*{.375in}}
+
+\def\envelope{
+\newpage \zipcodefalse
+\special{ps::[asis] statusdict /manualfeed true put}
+\raggedright
+\vspace*{3.175in} %Fill in the blank on our stationary---change as needed
+{\parindent.32in\@from\ \par}
+\vfill
+\parindent3.5in}
+%A fancier way would be to put the street address in a box and to center it
+\def\endenvelope{\par
+\ifzipcode \else \vspace*{1in} \fi
+\special{ps::[asis] statusdict /manualfeed false put}}
diff --git a/macros/latex209/contrib/misc/epac.sty b/macros/latex209/contrib/misc/epac.sty
new file mode 100644
index 0000000000..a45f612646
--- /dev/null
+++ b/macros/latex209/contrib/misc/epac.sty
@@ -0,0 +1,234 @@
+% This is epac.sty in text format, as of 23 October 1991.
+% This is the official style file of the
+% European Particle Accelerator Conference.
+%
+% It is a style option of the standard LaTeX 'article' style, i.e.
+% the usage is:
+% \documentstyle[epac]{article}
+% Instructions for authors are provided in a separate file epac.tex
+% which can be used as a model for papers to be submitted to the
+% conference.
+%
+% This file will produce a camera-ready manuscript for the EPAC if
+% used with LaTeX, Version 2.09.
+%
+% *** DO NOT MODIFY THIS FILE IN ANY WAY WHATSOEVER. ***
+% HOWEVER DO DISTRIBUTE IT FREELY TO OTHER USERS/INSTITUTIONS
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Much of this file is based upon: %
+% %
+% % PROC DOCUMENT STYLE -- Released 4 September 1986 %
+% % for LaTeX version 2.09 %
+% % Copyright (C) 1985 by Leslie Lamport %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+
+\typeout{Document Style Option 'EPAC', Version of 23 October 1991}
+\typeout{-------------------------------------------}
+\typeout{-- This is the official style for}
+\typeout{-- papers to be submitted to the}
+\typeout{-- European Particle Accelerator Conference}
+\typeout{-------------------------------------------}
+
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+%
+% All margin dimensions measured from a point one inch from top and side
+% of page.
+
+% SIDE MARGINS:
+ \oddsidemargin -13mm % Note that \oddsidemargin = \evensidemargin
+ \evensidemargin -13mm
+
+% VERTICAL SPACING:
+ % Top of page:
+\topmargin -47pt % Nominal distance from top of page to top of
+ % box containing running head.
+\headheight 12pt % Height of box containing running head.
+\headsep 25pt % Space between running head and text.
+% \topskip = 10pt % '\baselineskip' for first line of page.
+ % Bottom of page:
+\footskip 75pt % Distance from baseline of box containing foot
+ % to baseline of last line of text.
+
+
+% DIMENSION OF TEXT:
+
+\textheight 24.6cm % Height of text (including footnotes and figures,
+ % excluding running head and foot).
+\textwidth 18.229cm % Width of text line.
+ % For two-column mode:
+\columnsep 5mm % Space between columns
+\columnseprule 0pt % Width of rule between columns.
+
+
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+% Use \markright (or \markboth) to put an identification in the
+% lower left. The page number is printed in the lower right.
+
+
+\def\@oddhead{}\def\@evenhead{}
+\def\@oddfoot{}
+\def\@evenfoot{\@oddfoot}
+
+%-----------------------------------------------------------------------
+%
+% We acknowledge the borrowing of the clever part of
+% Steven Gildea's definition of \section
+% from geophysi.sty.
+%
+% \section is tricky because we want to both support \section* and have
+% the section title uppercased.
+
+\def\section{\secdef\@sectionb\@sections}
+\def\@sectionb[#1]#2{\@sections{#2}}
+\def\@sections#1{\@startsection {section}{1}{\z@}
+ {-2.8ex plus -0.8ex minus -.1ex}{1.5ex plus .2ex}
+ {\large\bf\centering}{\uppercase{#1}}}
+% Should there be any problem with this, we can revert to the following
+% but then the onus is on the user to type the argument of \section in
+% uppercase in the input file.
+%
+%\def\section{\@startsection {section}{1}{\z@}{-2.8ex plus -0.8ex minus
+% -.1ex}{1.5ex plus .2ex}{\large\bf\centering}}
+
+\def\subsection{\@startsection{subsection}{2}{\z@}{-2.6ex plus -.8ex minus
+ -.17ex}{1.2ex plus .17ex}{\large\sl}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\parindent}
+ {-2.5ex plus -.7ex minus -.17ex}{-1em}{\normalsize\bf}}
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{2.5ex plus .7ex minus .17ex}{-1em}{\normalsize\sl}}
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{2.25ex plus .7ex minus
+ .17ex}{-1em}{\normalsize\bf}}
+
+\setcounter{secnumdepth}{2}
+
+%-----------------------------------------------------------------------
+
+% ****************************************
+% * TITLE *
+% ****************************************
+%
+
+% This definition of \maketitle taken from article.sty, and has been
+% somewhat modified.
+
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox
+ to 0pt{$^{\@thefnmark}$\hss}}
+ \twocolumn[\@maketitle]
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+
+\newlength{\titleblockheight} % so user can change it if need be
+\setlength{\titleblockheight}{4cm}
+
+
+\def\@maketitle{\vbox to \titleblockheight {\hsize\textwidth
+ \linewidth\hsize \vfil \centering
+ {\Large\bf \@title \par}
+ \vskip 2em % Vertical space after title.
+ {\large\begin{tabular}[t]{c}\@author \end{tabular}\par}
+ \vfil}}
+
+
+% The \copyrightspace command is used to produce a blank space in the first
+% column where a copyright notice may go. It works by producing a
+% blank footnote of the appropriate size. Note that it should appear
+% after any \footnote commands that produce footnotes for the first
+% column. Adjusted to leave just 1cm.
+
+\def\copyrightspace{\footnotetext[0]{\mbox{}\vrule height 1cm width 0pt}}
+
+% The abstract Environment
+
+\def\abstract{\subsection*{Abstract}}
+\def\endabstract{\par}
+
+% Redefine to use smaller fonts
+\def\thebibliography#1{\setlength{\itemsep}{0pt}\setlength{\parsep}{0pt}
+ \section*{REFERENCES\@mkboth
+ {REFERENCES}{REFERENCES}}\small\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+
+\let\endthebibliography=\endlist
+
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+%
+% Default initializations
+
+\twocolumn
+\sloppy
+\parindent 1em
+\leftmargini 2em
+\leftmargin\leftmargini
+\leftmarginv .5em
+\leftmarginvi .5em
+\flushbottom
+%-----------------------------------------------------------------------
+%-----------------------------------------------------------------------
+% Here are some useful commands which facilitate correct formatting:
+%
+% To give a numerical value with units, e.g. \QTY{ 4.2 }{ MV\,n^{-1} }
+% (this takes care that the units in an equation are in a roman font
+% and not in math-italic which is used for symbols, IMPORTANT!!)
+%
+\newcommand{\QTY}[2]{\mbox{\(#1\rm\,#2\)}}
+%-----------------------------------------------------------------------
+%
+% To express a number in scientific notation, e.g. \Enum{1.7}{32}
+\newcommand{\Enum}[2]{\mbox{\(#1\times10^{#2}\)}}
+%
+%-----------------------------------------------------------------------
+% numerical formula e.g. \NQTY{E}{GeV} gives [E/GeV]
+\newcommand{\NQTY}[2]{\mbox{$[#1/{\rm #2}]$}} % symbol with units in
+%
+%-----------------------------------------------------------------------
+% Expectation value or average, e.g. \EV{ x^2 } gives <x^2>
+\newcommand{\EV}[1]{\left\langle #1 \right\rangle}% expectation value
+%
+%-----------------------------------------------------------------------
+% These are convenient for quoting luminosity:
+\newcommand{\LUMI}[1]{\QTY{#1}{cm^{-2}s^{-1}}}
+\newcommand{\LUM}[2]{\LUMI{#1\times10^{#2}}}
+%
+% thus a B-factory design might quote \LUM{3.0}{33}
+%-----------------------------------------------------------------------
+\def\gappeq{\mathrel{ \rlap{\raise.5ex\hbox{$>$}}
+ {\lower.5ex\hbox{$\sim$}} } }
+%
+% \gappeq is a compound symbol made out of a > sign on top of a tilde
+% usually used to mean "greater than or approximately equal to"
+% or "vaguely greater than" by physicists.
+% It behaves as a mathematical relation in TeX's math modes, e.g.
+% $ a \gappeq b $ in the text and
+% $$ a \gappeq b $$ as a display.
+%
+\def\lappeq{\mathrel{ \rlap{\raise.5ex\hbox{$<$}}
+ {\lower.5ex\hbox{$\sim$}} } }
+%-----------------------------------------------------------------------
+% End of epac.sty
diff --git a/macros/latex209/contrib/misc/epigram.sty b/macros/latex209/contrib/misc/epigram.sty
new file mode 120000
index 0000000000..e0a99de4ce
--- /dev/null
+++ b/macros/latex209/contrib/misc/epigram.sty
@@ -0,0 +1 @@
+../../../generic/misc/epigram.tex \ No newline at end of file
diff --git a/macros/latex209/contrib/misc/eqnarray.sty b/macros/latex209/contrib/misc/eqnarray.sty
new file mode 100644
index 0000000000..bac573c7c8
--- /dev/null
+++ b/macros/latex209/contrib/misc/eqnarray.sty
@@ -0,0 +1,99 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "David M. Jones",
+%%% version = "1.0",
+%%% date = "06 May 1992",
+%%% time = "16:30:57 EDT",
+%%% filename = "eqnarray.sty",
+%%% address = "MIT Laboratory for Computer Science
+%%% Room NE43-316
+%%% 545 Technology Square
+%%% Cambridge, MA 02139
+%%% USA",
+%%% telephone = "(617) 253-5936",
+%%% FAX = "(617) 253-3480",
+%%% checksum = "36087 99 481 4448",
+%%% email = "dmjones@theory.lcs.mit.edu (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, eqnarray",
+%%% supported = "yes",
+%%% docstring = "This file reimplements the LaTeX eqnarray
+%%% environment to fix two problems: (1) the
+%%% standard definition places far too much
+%%% space around the second column (10 points
+%%% in the standard styles) and (2) the macro
+%%% \@eqnsel (see below) does not work as
+%%% documented in latex.tex. If used in
+%%% conjunction with fleqn.sty, eqnarray must
+%%% appear after fleqn in the document-style
+%%% option list.
+%%%
+%%% I know of no bugs in this implementation,
+%%% but would be happy to hear of any problems
+%%% that arise with it.
+%%%
+%%% Oh, by the way, all of this would be
+%%% unnecessary if you used AMS-LaTeX.
+%%%
+%%% 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. This
+%%% program, as well as Nelson Beebe's proposal
+%%% for standard file headers, is available via
+%%% anonymous ftp from math.utah.edu.",
+%%% }
+%%% ====================================================================
+
+%% The default is for left-hand side of equations to be flushright.
+%% To make them flushleft, \let\@eqnsel = \relax
+
+\let\@eqnsel\hfil
+
+%% There are two main modifications. First, I removed the
+%% \hskip\@centering from the beginning of the preamble. This \hskip
+%% was, as far as I can tell, superfluous and was crippling \@eqnsel.
+%% Second, I removed the two occurences of \hskip 2\arraycolsep and
+%% change the template for the second column to ${{}##{}}$. This
+%% restores the proper amount of space around the second column of the
+%% eqnarray. I also introduced the parameters \@eqnmar and \@eqnhook
+%% to provide support for the flush left equation style.
+
+\newskip\@eqnmar
+\@eqnmar\@centering
+
+\let\@eqnhook\relax
+
+\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
+\global\@eqnswtrue
+\global\@eqcnt\z@\tabskip\@eqnmar\let\\=\@eqncr
+\@eqnhook
+$$\halign to \displaywidth\bgroup\@eqnsel
+ $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
+ \hfil${{}##{}}$\hfil&\global\@eqcnt\tw@
+ $\displaystyle{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+
+%% Since we've removed the \arraycolsep's from \eqnarray, we have to
+%% redefine \lefteqn to put that space back in. It seems unlikely
+%% that \arraycolsep is really what should be used here, but the
+%% following definition maintains compatibility with the old
+%% definition of eqnarray.
+
+\def\lefteqn#1{\hbox to 4\arraycolsep{$\displaystyle #1$\hss}}
+
+%% Finally, if fleqn.sty has been invoked earlier, we set
+%% \@eqnmar=\mathindent and redefine \@eqnhook to futz around with
+%% \abovedisplayskip and friends. Hopefully no-one else will define
+%% \mathindent.
+
+\@ifundefined{mathindent}{}{\@eqnmar\mathindent
+ \def\@eqnhook{\abovedisplayskip\topsep
+ \ifvmode\advance\abovedisplayskip\partopsep\fi
+ \belowdisplayskip\abovedisplayskip
+ \belowdisplayshortskip\abovedisplayskip
+ \abovedisplayshortskip\abovedisplayskip}}
+
+\endinput
diff --git a/macros/latex209/contrib/misc/eqsecnum.sty b/macros/latex209/contrib/misc/eqsecnum.sty
new file mode 100644
index 0000000000..fe47db81b1
--- /dev/null
+++ b/macros/latex209/contrib/misc/eqsecnum.sty
@@ -0,0 +1,26 @@
+% Save file as: EQSECNUM.STY Source: FILESERV@SHSU.BITNET
+% This is the file EQSECNUM.STY
+% from version 2.0 of the REVTEX macro package.
+%
+% This file is part of a compuscript toolbox distributed by
+% the American Physical Society in conjunction with
+% the TeX author-prepared program.
+%
+% All rights not specifically granted are reserved,
+% American Physical Society, 1991.
+%
+% Permission is granted to make and distribute verbatim
+% copies of the complete toolbox provided that the README file
+% and copyright notices are preserved on all copies.
+% Permission is granted to use the style files provided that
+% neither the content of the style files nor their names are changed.
+% APS macros may be used and distributed provided each use is
+% accompanied by an appropriate acknowledgment.
+%
+% For more information, see the README file.
+%
+\global\secnumberstrue
+%
+%
+%
+%
diff --git a/macros/latex209/contrib/misc/equation.sty b/macros/latex209/contrib/misc/equation.sty
new file mode 100644
index 0000000000..8f85d8b08a
--- /dev/null
+++ b/macros/latex209/contrib/misc/equation.sty
@@ -0,0 +1,272 @@
+%------------------------------------------------------------------------
+% This is equations.sty (August 1988). Written by
+% Charles Karney
+% Plasma Physics Laboratory Phone: +1 609 243 2607
+% Princeton University MFEnet: Karney@PPC.MFEnet
+% PO Box 451 ARPAnet: Karney%PPC.MFEnet@NMFECC.ARPA
+% Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFEnet@ANLVMS.Bitnet
+% with some ideas and macros borrowed from John Hobby and Stephen Gildea.
+
+% --------------------USER DOCUMENTATION--------------------
+
+% Use this as a style option, e.g.,
+% \documentstyle[equations]{article}
+% These probably don't work in conjunction with the leqno option.
+
+% This implements the following:
+
+% (1) \yesnumber turns on an equation number in an eqnarray* environment
+% (just as \nonumber turns it off in an eqnarray environment). E.g.,
+% \begin{eqnarray*}
+% a &=& b \\
+% & & + c \\
+% & & + d \\
+% & & + e \\
+% & & + f \\
+% & & + g \yesnumber
+% \end{eqnarray*}
+
+% (2) The eqalign environment is just like Plain TeX's \eqalign. E.g.,
+% \begin{equation}
+% \begin{eqalign}
+% a &= b, \\
+% c &= d.
+% \end{eqalign}
+% \end{equation}
+% Note that \begin{equation} \end{equation} or equivalent is needed.
+
+% (3) The eqalignno environment is just like Plain TeX's \eqalignno. E.g.,
+% \begin{eqalignno}
+% a &= b, \label{foo}\\
+% c &= d. \label{bar}
+% \end{eqalignno}
+% Note the absence of \begin{equation} \end{equation}. \nonumber can be used
+% to suppress the equation number. eqalignno* is the same except that the
+% equation numbers are suppressed (unless a \yesnumber appears).
+
+% (4) The eqaligntwo environment is a two-equation per line equivalent of
+% eqalignno. E.g.,
+% \begin{eqaligntwo}
+% a &= b, & x &= y, \label{foo} \\
+% c &= d, & z &= w. \label{bar}
+% \end{eqalign}
+% eqaligntwo* is defined similarly.
+
+% (5) The cases environment is just like Plain TeX's \cases. E.g.,
+% \begin{equation}
+% u(x) =
+% \begin{cases}
+% 0, & for $x < 0$,
+% 1, & for $x \ge 0$.
+% \end{cases}
+% \end{equation}
+% Note the first column is treated as math, the second column as text.
+
+% (6) I've borrowed John Hobby's modifications to the eqnarray environment
+% (to fix up the spacing around the operator), and to the \big, \bigg, etc.
+% operators (to make them scale with the point size).
+
+% (7) I've borrowed Stephen Gildea's subequations environment, and fixed it
+% so that it ignores spaces after the environment and so that you can refer
+% both to the overall set of equations and to individual subequations. E.g.,
+% \begin{subequations} \label{foo}
+% \begin{eqalignno}
+% a &= b, \label{foo-a} \\
+% c &= d, \label{foo-b}
+% \end{eqalignno}
+% text text text text ...
+% \begin{equation}
+% e = f. \label{foo-c}
+% \end{equation}
+% \end{subequations}
+% Now \ref{foo}, \ref{foo-a}, \ref{foo-b}, \ref{foo-c}, produce 1, 1a, 1b,
+% 1c.
+
+% --------------------END OF USER DOCUMENTATION--------------------
+
+\typeout{Document Substyle `EQUATION', modified by MPI, Version 1.0, 09.03.89}
+
+
+% Fix up eqnarray* so that \yesnumber and \nonumber do the obvious things
+\newif\if@defeqnsw \@defeqnswtrue
+
+% This is John Hobby's (hobby@research.att.com) version to fix up the spacing.
+\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
+\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+%\global\@eqnswtrue inactivated march 89 G. Kruljac
+\tabskip\@centering\let\\=\@eqncr
+$$\halign to \displaywidth\bgroup\hfil\global\@eqcnt\z@
+ $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
+ \hfil$\displaystyle{{}##{}}$\hfil
+ &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+
+% Here's the eqnarray* environment:
+
+%\let\@seqncr=\@eqncr
+\@namedef{eqnarray*}{\@defeqnswfalse\eqnarray}
+\@namedef{endeqnarray*}{\endeqnarray}
+
+\def\yesnumber{\global\@eqnswtrue}
+
+\def\@@eqncr{\let\@tempa\relax\global\advance\@eqcnt by \@ne
+ \ifcase\@eqcnt \def\@tempa{& & & &}\or \def\@tempa{& & &}\or
+ \def\@tempa{& &}\or \def\@tempa{&}\else\fi
+ \@tempa \if@eqnsw\@eqnnum\stepcounter{equation}\fi
+ \if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+ \global\@eqcnt\z@\cr}
+
+% Several formulas like \eqalign (to go inside \begin{equation}
+% \end{equation} or $$ $$.
+
+\def\@eqnacr{{\ifnum0=`}\fi\@ifstar{\@yeqnacr}{\@yeqnacr}}
+
+\def\@yeqnacr{\@ifnextchar [{\@xeqnacr}{\@xeqnacr[\z@]}}
+
+\def\@xeqnacr[#1]{\ifnum0=`{\fi}\cr \noalign{\vskip\jot\vskip #1\relax}}
+
+\def\eqalign{\null\,\vcenter\bgroup\openup1\jot \m@th \let\\=\@eqnacr
+\ialign\bgroup\strut
+\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\crcr}
+\def\endeqalign{\crcr\egroup\egroup\,}
+
+% \cases
+
+\def\cases{\left\{\,\vcenter\bgroup\normalbaselines\m@th \let\\=\@eqnacr
+ \ialign\bgroup$##\hfil$&\quad##\hfil\crcr}
+\def\endcases{\crcr\egroup\egroup\right.}
+
+% Several formulas like \eqalignno (doesn't need the $$ $$)
+
+\def\eqalignno{\stepcounter{equation}\let\@currentlabel=\theequation
+\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+\let\\=\@eqncr
+$$\displ@y \tabskip\@centering \halign to \displaywidth\bgroup
+ \global\@eqcnt\@ne\hfil
+ $\@lign\displaystyle{##}$\tabskip\z@skip&\global\@eqcnt\tw@
+ $\@lign\displaystyle{{}##}$\hfil\tabskip\@centering&
+ \llap{\@lign##}\tabskip\z@skip\crcr}
+
+\def\endeqalignno{\@@eqncr\egroup
+ \global\advance\c@equation\m@ne$$\global\@ignoretrue}
+
+
+% Here's the eqalignno* environment:
+
+\@namedef{eqalignno*}{\@defeqnswfalse\eqalignno}
+\@namedef{endeqalignno*}{\endeqalignno}
+
+% Two formulas like \eqalignno (doesn't need the $$ $$)
+
+\def\eqaligntwo{\stepcounter{equation}\let\@currentlabel=\theequation
+\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+\let\\=\@eqncr
+$$\displ@y \tabskip\@centering \halign to \displaywidth\bgroup
+ \global\@eqcnt\m@ne\hfil
+ $\@lign\displaystyle{##}$\tabskip\z@skip&\global\@eqcnt\z@
+ $\@lign\displaystyle{{}##}$\hfil\qquad&\global\@eqcnt\@ne
+ \hfil$\@lign\displaystyle{##}$&\global\@eqcnt\tw@
+ $\@lign\displaystyle{{}##}$\hfil\tabskip\@centering&
+ \llap{\@lign##}\tabskip\z@skip\crcr}
+
+\def\endeqaligntwo{\@@eqncr\egroup
+ \global\advance\c@equation\m@ne$$\global\@ignoretrue}
+
+\@namedef{eqaligntwo*}{\@defeqnswfalse\eqaligntwo}
+\@namedef{endeqaligntwo*}{\endeqaligntwo}
+
+% subequations
+%%% File: subeqn.sty
+%%% The subequations environment %%%
+%
+% Within the subequations environment, the only change is that
+% equations are labeled differently. The number stays the same,
+% and lower case letters are appended. For example, if after doing
+% three equations, numbered 1, 2, and 3, you start a subequations
+% environmment and do three more equations, they will be numbered
+% 4a, 4b, and 4c. After you end the subequations environment, the
+% next equation will be numbered 5.
+%
+% Both text and equations can be put inside the subequations environment.
+%
+% If you make any improvements, I'd like to hear about them.
+%
+% Stephen Gildea
+% MIT Earth Resources Lab
+% Cambridge, Mass. 02139
+% mit-erl!gildea
+% gildea@erl.mit.edu
+%
+\newtoks\@stequation
+
+\def\subequations{\refstepcounter{equation}%
+ \edef\@savedequation{\the\c@equation}%
+ \@stequation=\expandafter{\theequation}% %only want \theequation
+ \edef\@savedtheequation{\the\@stequation}% %expanded once
+ \edef\oldtheequation{\theequation}%
+ \setcounter{equation}{0}%
+ \def\theequation{\oldtheequation\alph{equation}}}
+
+\def\endsubequations{%
+ \setcounter{equation}{\@savedequation}%
+ \@stequation=\expandafter{\@savedtheequation}%
+ \edef\theequation{\the\@stequation}%
+ \global\@ignoretrue}
+
+% More from John Hobby
+% Fix Plain's \bigl, \Bigl, etc. macros so that they try to scale with
+% LaTeX size changes. This uses the fact that \@setsize sets \ht\strutbox
+% to be 70% of the normal unstretched baselineskip.
+
+\def\big#1{{\hbox{$\left#1\vcenter to1.428\ht\strutbox{}\right.\n@space$}}}
+\def\Big#1{{\hbox{$\left#1\vcenter to2.142\ht\strutbox{}\right.\n@space$}}}
+\def\bigg#1{{\hbox{$\left#1\vcenter to2.857\ht\strutbox{}\right.\n@space$}}}
+\def\Bigg#1{{\hbox{$\left#1\vcenter to3.571\ht\strutbox{}\right.\n@space$}}}
+
+% More from Schaefer-Siebert / Kruljac
+% kruljac@ds0mpi11
+
+\def\@leqncr{{\ifnum0=`}\fi\@ifstar{\global\@eqpen\@M
+ \@yeqncr}{\global\@eqpen\interdisplaylinepenalty \@lyeqncr}}
+
+\def\@lyeqncr{\@ifnextchar [{\@lxeqncr}{\@lxeqncr[\z@]}}
+
+\def\@lxeqncr[#1]{\ifnum0=`{\fi}\@@leqncr
+ \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}}
+
+
+\def\@@leqncr{\let\@tempa\relax\global\advance\@eqcnt by \@ne
+ \ifcase\@eqcnt \def\@tempa{& & & &}\or \def\@tempa{& & &}\or
+ \def\@tempa{& &}\or \def\@tempa{&}\else\fi
+ \@tempa \if@eqnsw\@leqnnum\stepcounter{equation}\fi
+ \if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+ \global\@eqcnt\z@\cr}
+
+ \def\@leqnnum{{\hspace{\fill}\hbox{\normalsize (\theequation)}}}
+
+\def\lequation#1{\bgroup#1$$ % $$ BRACE MATCHING HACK
+\refstepcounter{equation}}
+
+\def\endlequation{\eqno \@leqnnum % $$ BRACE MATCHING HACK
+$$\egroup\global\@ignoretrue}
+
+\def\leqnarray#1{\stepcounter{equation}\let\@currentlabel=\theequation
+\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+\tabskip\@centering\let\\=\@leqncr
+\bgroup#1
+$$\halign to \displaywidth\bgroup\hfil\global\@eqcnt\z@
+ $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
+ \hfil$\displaystyle{{}##{}}$\hfil
+ &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+
+\def\endleqnarray{\@@leqncr\egroup
+ \global\advance\c@equation\m@ne$$\egroup\global\@ignoretrue}
+
+% Here's the leqnarray* environment:
+
+\@namedef{leqnarray*}{\@defeqnswfalse\leqnarray}
+\@namedef{endleqnarray*}{\endleqnarray}
+
+\endinput
+
diff --git a/macros/latex209/contrib/misc/equationarray.sty b/macros/latex209/contrib/misc/equationarray.sty
new file mode 100644
index 0000000000..07f6aaf9c9
--- /dev/null
+++ b/macros/latex209/contrib/misc/equationarray.sty
@@ -0,0 +1,88 @@
+% Equationarray.doc
+%
+% Combine the capabilities of the eqnarray environment and the array
+% environment.
+%
+% Problem: The eqnarray environment is too restrictive in that it is
+% only prepared to accept three part equations. Some applications
+% require more sophisticated mathematics, so three parts aren't
+% enough. Simultaneously, we would like to have our equations
+% numbered. If the equations aren't to be numbered, then the array
+% environment suffices. If the equations aren't to be aligned with
+% each other, then the equation environment is preferred.
+%
+% Usage:
+%
+% \begin{equationarray}{rrcl}
+% % Equations go here, in the same format as you would use
+% % for arrays.
+% \end{equationarray}
+%
+% Written by:
+% Tony Li, University of Southern California, <tli@sargas.usc.edu>
+% Started 6/15/88.
+% Yes, I know this is a kludge. Suggestions accepted, flames to
+% /dev/null. I never said that I knew what I was doing.
+%
+
+\def\equationarray{\stepcounter{equation} \let\@currentlabel=\theequation
+ \global\@eqnswtrue \global\@eqcnt\z@ \global\@eqargcnt \z@ \let\\=\@equationcr
+ \let\@acol\@arrayacol \let\@classz\@eqnclassz \def\@halignto{to\displaywidth}
+ \@equationarray}
+
+\def\@equationarray#1{\setbox\@arstrutbox=\hbox{\vrule
+ height\arraystretch \ht\strutbox
+ depth\arraystretch \dp\strutbox
+ width\z@}
+ \@mkpream{#1}
+ \edef\@preamble{\halign \noexpand\@halignto
+ \bgroup \tabskip\z@ \@arstrut \@preamble
+ \hfill\tabskip\@centering &\llap{\@sharp}\tabskip\z@\cr}%
+ \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
+ \bgroup \let\par\relax
+ \let\@sharp## \let\protect\relax \lineskip\z@ \baselineskip\z@
+ \tabskip\@centering $$ % $$ BRACE MATCHING HACK
+ \@preamble
+}
+
+\def\@eqnclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \fi
+ \global\advance\@eqargcnt\@ne
+ \edef\@preamble{\@preamble
+ \ifcase \@chnum
+ \hfil$\relax\displaystyle\tabskip\z@\@sharp$\hfil \or
+ $\relax\displaystyle\tabskip\z@\@sharp$\hfil \or
+ \hfil$\relax\displaystyle\tabskip\z@\@sharp$\fi
+ \global\advance\@eqcnt\@ne}}
+
+\def\endequationarray{\@equationcr
+\egroup\global\advance\c@equation\m@ne % $$ BRACE MATCHING HACK
+$$\tabskip\@centering\egroup\global\@ignoretrue}
+
+\def\@equationcr{${\ifnum0=`}\fi\@ifstar{\@xequationcr}{\@xequationcr}}
+\def\@xequationcr{
+ \@ifnextchar[{\@argequationcr}{\ifnum0=`{\fi}${}\@zequationcr
+ \global\@eqnswtrue\global\@eqcnt\z@\cr}}
+
+\def\@argequationcr[#1]{\ifnum0=`{\fi}${}\ifdim #1>\z@
+ \@xargequationcr{#1}\else
+ \@yargequationcr{#1}\fi}
+
+\def\@xargequationcr#1{
+ \@tempdima #1\advance\@tempdima \dp \@arstrutbox
+ \vrule \@height\z@ \@depth\@tempdima \@width\z@ \@zequationcr
+ \global\@eqnswtrue\global\@eqcnt\z@ \cr}
+
+\def\@yargequationcr#1{ \@zequationcr
+ \global\@eqnswtrue\global\@eqcnt\z@ \cr\noalign{\vskip #1}}
+
+\def\@zequationcr{\@wargequationcr\if@eqnsw\@eqnnum
+ \stepcounter{equation}\global\@eqcnt\z@\fi}
+
+\def\@wargequationcr{\ifnum\@eqcnt<\@eqargcnt
+ \@amper \@wargequationcr\fi}
+
+\def\@amper{&}
+
+\newcount\@eqargcnt
diff --git a/macros/latex209/contrib/misc/equations.sty b/macros/latex209/contrib/misc/equations.sty
new file mode 100644
index 0000000000..1f1364ceea
--- /dev/null
+++ b/macros/latex209/contrib/misc/equations.sty
@@ -0,0 +1,217 @@
+% This file, equations.sty (August 1988), contains a collection of macros
+% to aid in constructing displayed equations in LaTeX. Written by
+% Charles Karney
+% Plasma Physics Laboratory Phone: +1 609 243 2607
+% Princeton University MFEnet: Karney@PPC.MFEnet
+% PO Box 451 ARPAnet: Karney%PPC.MFEnet@NMFECC.ARPA
+% Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFEnet@ANLVMS.Bitnet
+% with some ideas and macros borrowed from John Hobby and Stephen Gildea.
+
+% --------------------USER DOCUMENTATION--------------------
+
+% Use this as a style option, e.g.,
+% \documentstyle[equations]{article}
+% These probably don't work in conjunction with the leqno option.
+
+% This implements the following:
+
+% (1) \yesnumber turns on an equation number in an eqnarray* environment
+% (just as \nonumber turns it off in an eqnarray environment). E.g.,
+% \begin{eqnarray*}
+% a &=& b \\
+% & & + c \\
+% & & + d \\
+% & & + e \\
+% & & + f \\
+% & & + g \yesnumber
+% \end{eqnarray*}
+
+% (2) The eqalign environment is just like Plain TeX's \eqalign. E.g.,
+% \begin{equation}
+% \begin{eqalign}
+% a &= b, \\
+% c &= d.
+% \end{eqalign}
+% \end{equation}
+% Note that \begin{equation} \end{equation} or equivalent is needed.
+
+% (3) The eqalignno environment is just like Plain TeX's \eqalignno. E.g.,
+% \begin{eqalignno}
+% a &= b, \label{foo}\\
+% c &= d. \label{bar}
+% \end{eqalignno}
+% Note the absence of \begin{equation} \end{equation}. \nonumber can be used
+% to suppress the equation number. eqalignno* is the same except that the
+% equation numbers are suppressed (unless a \yesnumber appears).
+
+% (4) The eqaligntwo environment is a two-equation per line equivalent of
+% eqalignno. E.g.,
+% \begin{eqaligntwo}
+% a &= b, & x &= y, \label{foo} \\
+% c &= d, & z &= w. \label{bar}
+% \end{eqaligntwo}
+% eqaligntwo* is defined similarly.
+
+% (5) The cases environment is just like Plain TeX's \cases. E.g.,
+% \begin{equation}
+% u(x) =
+% \begin{cases}
+% 0, & for $x < 0$,
+% 1, & for $x \ge 0$.
+% \end{cases}
+% \end{equation}
+% Note the first column is treated as math, the second column as text.
+
+% (6) I've borrowed John Hobby's modifications to the eqnarray environment
+% (to fix up the spacing around the operator), and to the \big, \bigg, etc.
+% operators (to make them scale with the point size).
+
+% (7) I've borrowed Stephen Gildea's subequations environment, and fixed it
+% so that it ignores spaces after the environment and so that you can refer
+% both to the overall set of equations and to individual subequations. E.g.,
+% \begin{subequations} \label{foo}
+% \begin{eqalignno}
+% a &= b, \label{foo-a} \\
+% c &= d, \label{foo-b}
+% \end{eqalignno}
+% text text text text ...
+% \begin{equation}
+% e = f. \label{foo-c}
+% \end{equation}
+% \end{subequations}
+% Now \ref{foo}, \ref{foo-a}, \ref{foo-b}, \ref{foo-c}, produce 1, 1a, 1b,
+% 1c.
+
+% --------------------END OF USER DOCUMENTATION--------------------
+
+% Fix up eqnarray* so that \yesnumber and \nonumber do the obvious things
+\newif\if@defeqnsw \@defeqnswtrue
+
+% This is John Hobby's (hobby@research.att.com) version to fix up the spacing.
+\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
+\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+\global\@eqnswtrue
+\tabskip\@centering\let\\=\@eqncr
+$$\halign to \displaywidth\bgroup\hfil\global\@eqcnt\z@
+ $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
+ \hfil$\displaystyle{{}##{}}$\hfil
+ &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+
+\def\yesnumber{\global\@eqnswtrue}
+
+\def\@@eqncr{\let\@tempa\relax\global\advance\@eqcnt by \@ne
+ \ifcase\@eqcnt \def\@tempa{& & & &}\or \def\@tempa{& & &}\or
+ \def\@tempa{& &}\or \def\@tempa{&}\else\fi
+ \@tempa \if@eqnsw\@eqnnum\stepcounter{equation}\fi
+ \if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+ \global\@eqcnt\z@\cr}
+
+% Several formulas like \eqalign (to go inside \begin{equation}
+% \end{equation} or $$ $$.
+
+\def\@eqnacr{{\ifnum0=`}\fi\@ifstar{\@yeqnacr}{\@yeqnacr}}
+
+\def\@yeqnacr{\@ifnextchar [{\@xeqnacr}{\@xeqnacr[\z@]}}
+
+\def\@xeqnacr[#1]{\ifnum0=`{\fi}\cr \noalign{\vskip\jot\vskip #1\relax}}
+
+\def\eqalign{\null\,\vcenter\bgroup\openup1\jot \m@th \let\\=\@eqnacr
+\ialign\bgroup\strut
+\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\crcr}
+\def\endeqalign{\crcr\egroup\egroup\,}
+
+% \cases
+
+\def\cases{\left\{\,\vcenter\bgroup\normalbaselines\m@th \let\\=\@eqnacr
+ \ialign\bgroup$##\hfil$&\quad##\hfil\crcr}
+\def\endcases{\crcr\egroup\egroup\right.}
+
+% Several formulas like \eqalignno (doesn't need the $$ $$)
+
+\def\eqalignno{\stepcounter{equation}\let\@currentlabel=\theequation
+\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+\let\\=\@eqncr
+$$\displ@y \tabskip\@centering \halign to \displaywidth\bgroup
+ \global\@eqcnt\@ne\hfil
+ $\@lign\displaystyle{##}$\tabskip\z@skip&\global\@eqcnt\tw@
+ $\@lign\displaystyle{{}##}$\hfil\tabskip\@centering&
+ \llap{\@lign##}\tabskip\z@skip\crcr}
+
+\def\endeqalignno{\@@eqncr\egroup
+ \global\advance\c@equation\m@ne$$\global\@ignoretrue}
+
+
+% Here's the eqalignno* environment:
+
+\@namedef{eqalignno*}{\@defeqnswfalse\eqalignno}
+\@namedef{endeqalignno*}{\endeqalignno}
+
+% Two formulas like \eqalignno (doesn't need the $$ $$)
+
+\def\eqaligntwo{\stepcounter{equation}\let\@currentlabel=\theequation
+\if@defeqnsw\global\@eqnswtrue\else\global\@eqnswfalse\fi
+\let\\=\@eqncr
+$$\displ@y \tabskip\@centering \halign to \displaywidth\bgroup
+ \global\@eqcnt\m@ne\hfil
+ $\@lign\displaystyle{##}$\tabskip\z@skip&\global\@eqcnt\z@
+ $\@lign\displaystyle{{}##}$\hfil\qquad&\global\@eqcnt\@ne
+ \hfil$\@lign\displaystyle{##}$&\global\@eqcnt\tw@
+ $\@lign\displaystyle{{}##}$\hfil\tabskip\@centering&
+ \llap{\@lign##}\tabskip\z@skip\crcr}
+
+\def\endeqaligntwo{\@@eqncr\egroup
+ \global\advance\c@equation\m@ne$$\global\@ignoretrue}
+
+\@namedef{eqaligntwo*}{\@defeqnswfalse\eqaligntwo}
+\@namedef{endeqaligntwo*}{\endeqaligntwo}
+
+% subequations
+%%% File: subeqn.sty
+%%% The subequations environment %%%
+%
+% Within the subequations environment, the only change is that
+% equations are labeled differently. The number stays the same,
+% and lower case letters are appended. For example, if after doing
+% three equations, numbered 1, 2, and 3, you start a subequations
+% environmment and do three more equations, they will be numbered
+% 4a, 4b, and 4c. After you end the subequations environment, the
+% next equation will be numbered 5.
+%
+% Both text and equations can be put inside the subequations environment.
+%
+% If you make any improvements, I'd like to hear about them.
+%
+% Stephen Gildea
+% MIT Earth Resources Lab
+% Cambridge, Mass. 02139
+% mit-erl!gildea
+% gildea@erl.mit.edu
+%
+\newtoks\@stequation
+
+\def\subequations{\refstepcounter{equation}%
+ \edef\@savedequation{\the\c@equation}%
+ \@stequation=\expandafter{\theequation}% %only want \theequation
+ \edef\@savedtheequation{\the\@stequation}% %expanded once
+ \edef\oldtheequation{\theequation}%
+ \setcounter{equation}{0}%
+ \def\theequation{\oldtheequation\alph{equation}}}
+
+\def\endsubequations{%
+ \setcounter{equation}{\@savedequation}%
+ \@stequation=\expandafter{\@savedtheequation}%
+ \edef\theequation{\the\@stequation}%
+ \global\@ignoretrue}
+
+% More from John Hobby
+% Fix Plain's \bigl, \Bigl, etc. macros so that they try to scale with
+% LaTeX size changes. This uses the fact that \@setsize sets \ht\strutbox
+% to be 70% of the normal unstretched baselineskip.
+
+\def\big#1{{\hbox{$\left#1\vcenter to1.428\ht\strutbox{}\right.\n@space$}}}
+\def\Big#1{{\hbox{$\left#1\vcenter to2.142\ht\strutbox{}\right.\n@space$}}}
+\def\bigg#1{{\hbox{$\left#1\vcenter to2.857\ht\strutbox{}\right.\n@space$}}}
+\def\Bigg#1{{\hbox{$\left#1\vcenter to3.571\ht\strutbox{}\right.\n@space$}}}
+
+\endinput
diff --git a/macros/latex209/contrib/misc/esperant.sty b/macros/latex209/contrib/misc/esperant.sty
new file mode 100644
index 0000000000..1c6df8ab3c
--- /dev/null
+++ b/macros/latex209/contrib/misc/esperant.sty
@@ -0,0 +1,342 @@
+% This is ESPERANT.TEX or ESPERANT.DOC or ESPERANT.STY,
+% Vers. 1.1.a 10-DEC-1991,
+%
+% (c) 1991 J"org Knappen
+% knappen@vkpmzd.kph.uni-mainz.de
+%
+% Usage conditions: GNU-licence, Version 1.0
+% This includes the right to copy this file free and distribute the
+% copies, as long as no money is taken for it and as long as this file
+% remains unchanged.
+%
+% by J. Knappen, Uni Mainz, using GERMAN.STY 2.3d, collected by
+% H. Partl, TU Wien, deutsch.sty by J. Schrod, Darmstadt,
+% and espo.sty (anonymous).
+% Contributers to these files are included by reference.
+%
+% Thanks to Derk Ederveen and E. T. Grimley-Evans for correcting the terms
+% in \captionsesperanto
+%
+% DOCUMENT STYLE OPTION for writing esperanto texts
+% with TeX version 2.x (Plain TeX) or with LaTeX version 2.09.
+%
+% It can be called via
+% \input esperant
+% or (with LaTeX) via
+% \documentstyle[esperant]{anystyle}
+%
+% The name ``esperant.sty'' (without o) is choosen purposefully, because
+% there are a lot of computers out there, which cannot handle filenames
+% consisting of more than 8 letters.
+%
+% This file is different from ``esperanto.sty'' by J. L. Braams, to be used
+% with the babel system
+%
+% Commands to be used by the end users:
+%
+% ^c, ^g, ^h, ^j, ^s create the esperanto circumflexed consonants
+% ^C, ^G, ^H, ^J, ^S ditto, uppercase versions
+% ^u, ^U create the esperanto u-breve (\u{u})
+% if you need an u-circumflex, write \^u
+% ^| Morpheme boundary to assist correct hyphenation
+%
+% \captionsesperanto switches the captions to esperanto
+% \dateesperanto switches \today to produce the date in e-o
+% \hodiau produces the current date in esperanto
+% \hodiaun produces the current date in esperanto, accusative
+%
+% \captionsenglish switches the captions back to english
+% \dateUSenglish does the same for the date
+% \dateenglish switches to british english date
+%
+% You can change each caption if you want. E. g. if you prefer
+% ``vd. anka^u'' instead of ``vidu anka^u'', say
+% \renewcommand{\seealsoname}{vd.~anka\u{u}}
+%
+% \Esper, \esper allow you to count by the letters of the esperanto
+% alphabet (A, B, C, ^C, D, ...). You can redefine
+% \Alph into \Esper by
+% \let\Alph=\Esper % I leave this purposefully to
+% you as the end user and don't turn it on as default
+%
+% Notes:
+%
+% This file can be used both with Plain TeX and with LaTeX and other
+% macro packages, and with the original TeX and LaTeX fonts. Usage
+% of esperanto hyphenation patterns is recommended to accompany this
+% style file when writing esperanto texts.
+%
+% Derk Ederveen (D.Ederveen@pttrl.nl) has prepared esperanto hyphenation
+% patterns, supporting the ``cx''-notation. Obviously, these ones are not
+% optimal, but a good try. Alternatively, you might try
+% italian or portugese hyphenation patterns. (Both are available on several
+% servers.)
+%
+% The file should be read in vertical mode only (usually at the
+% beginning of the document) to avoid spurious spaces.
+%
+% \undefined must be an undefined control sequence.
+%
+% Multiple calls of this file (e.g. at the beginning of each subfile)
+% will do no harm. Only the first call (i.e., if \EsperantoOn is undefined)
+% performs all the definitions and settings. Later calls only switch
+% to \EsperantoOn.
+%
+% The catcode of @ remains unchanged after processing of this file.
+% All definitions are global, the switching on of the esperanto options
+% is local.
+%
+% The commands \EsperantoOn, \EsperantoOff, \modifiedhaton, modifiedhatoff and
+% \selectlanguage are ``fragile'' with LaTeX and should not be used
+% within arguments of macro calls.
+%
+% In Plain TeX, `\protect' should be \let to `\relax' normally and to
+% something like `\string' inside the arguments of `\write' or `\message'
+% (see LaTeX.TEX for all the details).
+%
+% The current version has been designed for TeX versions 1 and 2.
+% When used with TeX version 3 or with MLTeX by M.Ferguson, the
+% setting of the \language counter and/or calls of \setlanugage
+% have to be inserted into the definition of the \selectlanguage
+% command, with values that are appropriate for the hyphenation patterns
+% loaded into the FMT file by IniTeX.
+%
+% Since ^ has a different catcode (\active) and a different meaning
+% than in original TeX, special care has to be taken if ^ is to be
+% used in its original meaning.
+%
+% WARNINGS:
+%
+% If you want to use `verbatim.sty' by R. Schoepf, this must be read before
+% you read in `esperant.sty'. The same is true for every style option which
+% makes use of the ^^-Notation.
+%
+% If you use `endnotes.sty' by J. Lavigno, you should read it before
+% esperant.sty. Otherwise, it will overwrite \notesname again.
+%
+% \ifundefined{EsperantoOn} or \EsperantoOn=\relax
+\expandafter\ifx\csname EsperantoOn\endcsname\relax
+% \then go ahead \else do nothing
+\else \endinput \fi
+
+\message{Document Style Option `esperant' Version 1.1a of 10-OKT-1991}
+
+% \ifundefined{protect} (plain TeX)
+\ifx\protect\undefined
+% \then define it
+\let\protect=\relax \fi
+
+{% begin a group ...
+ \catcode`\@=11 % \makeatletter
+
+% Part one:
+% Define the \allowhyphens hack
+\gdef\allowhyphens{\penalty\@M \hskip\z@skip}
+% {\nobreak \hskip 0pt plus 0pt\relax}
+%
+% Part two
+% add the ^ to the definitions of dospecials and sanitize:
+% Don't ask me on the meaning of this! (JK)
+%
+\begingroup
+\def\do{\noexpand\do\noexpand}%
+% note that "\xdef" means "\global\edef"
+\xdef\dospecials{\dospecials\do\^}%
+% not ( \ifundefined{@sanitize} or \@sanitize=\relax ) = if LaTeX
+\expandafter\ifx\csname @sanitize\endcsname\relax \else
+ \def\@makeother{\noexpand\@makeother\noexpand}%
+ \xdef\@sanitize{\@sanitize\@makeother\^}%
+\fi
+\endgroup
+
+% Part three:
+% define all the funny things the hat does
+
+\gdef\modifiedhaton{\catcode`\^\active}
+\gdef\modifiedhatoff{\catcode`\^7 }
+
+{\modifiedhaton
+\gdef^{\protect\ph@t}
+\gdef\ph@t#1{\ifmmode\sp{#1}
+ \else\ifx#1u\u u\allowhyphens% ^u gives breve on u
+ \else\ifx#1U\u U\allowhyphens% and ^U gives one on U (rare)
+ \else\ifx#1h{h\llap{\^{}}}\allowhyphens% ^h mustn't be too tall
+ \else\ifx#1j{\^\j}\allowhyphens% ^j requires undotted j
+ \else\ifx#1|\discretionary{-}{}{}\allowhyphens% morpheme boundary
+ \else{\^{#1}}\allowhyphens% Normal circumflexing
+\fi\fi\fi\fi\fi\fi}
+} % end of \modifiedhaton
+
+% Part four:
+% Define the date and the captions of LaTeX
+
+\gdef\dateesperanto{\def\today{la \number\day a de \ifcase\month\or
+ januaro\or februaro\or marto\or aprilo\or majo\or junio\or
+ julio\or a\u{u}gusto\or septembro\or oktobro\or novembro\or decembro\fi,\space
+ \number\year}%
+\global\let\hodiau=\today}
+\gdef\hodiaun{la \number\day an de \ifcase\month\or
+ januaro\or februaro\or marto\or aprilo\or majo\or junio\or
+ julio\or a\u{u}gusto\or septembro\or oktobro\or novembro\or decembro\fi,\space
+ \number\year}
+
+\gdef\dateUSenglish{\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}}
+
+\gdef\dateenglish{\def\today{\ifcase\day\or
+ 1st\or 2nd\or 3rd\or 4th\or 5th\or
+ 6th\or 7th\or 8th\or 9th\or 10th\or
+ 11th\or 12th\or 13th\or 14th\or 15th\or
+ 16th\or 17th\or 18th\or 19th\or 20th\or
+ 21st\or 22nd\or 23rd\or 24th\or 25th\or
+ 26th\or 27th\or 28th\or 29th\or 30th\or
+ 31st\fi
+ ~\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space \number\year}}
+
+% Skip this block, if you allready have LaTeX 2.09 from 1-DEC-1991 or
+% any newer version. If not, read it carefully.
+%
+% Here is, how you can modify the LaTeX document style files and option
+% files, to benefit from the following \captionsxxxxx commands. Def's like
+% \def\tableofcontents{\section*{Contents\markboth{CONTENTS}{CONTENTS}}
+% \@starttoc{toc}}
+% should be redefined by def's like
+% \def\contentsname{Contents} % <---
+% \def\tableofcontents{\section*{\contentsname
+% \markboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}
+% \@starttoc{toc}}
+%
+% (it's best to put all these new lines to the end of the original files),
+% and of course, you should modify the change date in the file header and
+% in the \typeout command.
+% You need not do this yourself - rather, retrieve "International LaTeX"
+% (e.g. from the DANTE server LISTSERV@DHDURZ1 on Bitnet) !
+% Or via ftp from 129.69.1.12 (Stuttgart) or any other of the well-known
+% TeXservers.
+%
+% If your LaTeX dates from 1-Dec-1991 or later, you don't need ILateX
+% any longer -- and if not, update your LaTeX.
+%
+% The list of names is based on the proposal of H. Partl, but is enlarged
+% by the following ones
+% \seename, \seealsoname, and prefacename (J. Schrod, deutsch.sty)
+% \subjectname,
+% and \notesname.
+%
+\gdef\captionsesperanto{%
+\def\contentsname{Enhavo}%
+\def\listfigurename{Listo de figuroj}%
+\def\listtablename{Listo de tabeloj}%
+\def\abstractname{Resumo}%
+\def\partname{Parto}%
+\def\chaptername{\^Capitro}%
+\def\prefacename{Anta\u{u}parolo}%
+\def\appendixname{Apendico}%
+\def\refname{Cita\^joj}%
+\def\bibname{Bibliografio}%
+\def\indexname{Indekso}%
+\def\figurename{Figuro}%
+\def\tablename{Tabelo}%
+\def\pagename{Pa\^go}%
+\def\seename{vidu}% a^u: vd.
+\def\alsoname{vidu anka\u{u}}% a^u: vd. anka\u{u}
+\def\notesname{Rimarkoj}% endnotes.sty
+\def\enclname{Aldono(j)}%
+\def\ccname{Kopie al}%
+\def\headtoname{Al}%
+\def\subjectname{Temo}%
+}
+
+\gdef\captionsenglish{%
+\def\prefacename{Preface}%
+\def\refname{References}%
+\def\abstractname{Abstract}%
+\def\bibname{Bibliography}%
+\def\chaptername{Chapter}%
+\def\appendixname{Appendix}%
+\def\contentsname{Contents}%
+\def\listfigurename{List of Figures}%
+\def\listtablename{List of Tables}%
+\def\indexname{Index}%
+\def\figurename{Figure}%
+\def\tablename{Table}%
+\def\partname{Part}%
+\def\enclname{encl}%
+\def\ccname{cc}%
+\def\headtoname{To}%
+\def\pagename{Page}%
+\def\seename{see}%
+\def\alsoname{see also}%
+\def\notesname{Notes}%
+\def\subjectname{Subject}%
+}
+
+% Part four a:
+% Define \Esper and \esper
+\gdef\esper#1{\@esper{\@nameuse{c@#1}}}
+\gdef\Esper#1{\@Esper{\@nameuse{c@#1}}}
+\gdef\@esper#1{\ifcase#1\or a\or b\or c\or \^c\or d\else\@iesper{#1}\fi}
+\gdef\@iesper#1{\ifcase#1\or \or \or \or \or \or
+ \or e\or f\or g\or \^g\or h\or h\llap\^{}\or i\or j\or \^\j\or k%
+ \or l\or m\or n\or o\or p\or r\or s\or \^s\or t\or u\or \u{u}\or v%
+ \or z\else\@ctrerr\fi}
+\gdef\@Esper#1{\ifcase#1\or A\or B\or C\or \^C\or D\else\@Iesper{#1}\fi}
+\gdef\@Iesper#1{\ifcase#1\or \or \or \or \or \or E\or F\or G\or \^G\or H%
+ \or \^H\or I\or J\or \^J\or K\or L\or M\or N\or O\or P\or R\or S\or \^S\or T%
+ \or U\or \u{U}\or V\or Z\else\@ctrerr\fi}
+
+
+% Part five:
+% Define the new counter language to switch date and captions
+\newcount\l@nguage
+%
+% This will be re-declared as \language if the latter has not yet been
+% declared neither by Ferguson's ``Multilingual T^eX'' nor by TeX 3:
+% \ifundefined{language}
+\expandafter\ifx\csname language\endcsname\relax
+\global\let\language=\l@nguage
+\fi
+%
+\newcount\USenglish \global\USenglish=0
+\newcount\esperanto \global\esperanto=1
+\newcount\english \global\english=2
+%
+\gdef\selectlanguage#1{%
+ \expandafter\ifcase #1\relax
+ \dateUSenglish \captionsenglish \or
+ \dateesperanto \captionsesperanto \or
+ \dateenglish \captionsenglish \fi}
+% Note: If used with TeX version 3 or with multi-lingual TeX by M.Ferguson,
+% commands like
+% \language=#1\relax
+% and/or
+% \setlanguage{...}
+% should be inserted into the above definition in order to switch on the
+% correct hyphenation patterns.
+%
+% \ifundefined{setlanguage} (= TeX version < 3 )
+\expandafter\ifx\csname setlanguage\endcsname\relax
+\global\let\setlanguage=\selectlanguage
+\fi
+%
+
+% Part six:
+% Define the switches between esperanto and original TeX
+
+\gdef\EsperantoOff{\modifiedhatoff}
+\gdef\EsperantoOn{\modifiedhaton}
+
+} % ... return to previous catcodes
+%
+% Now, switch on what is appropriate for esperanto:
+%
+\EsperantoOn
+\selectlanguage{\esperanto}
+
+% This is the end of ESPERANTO.STY/DOC/TEX.
+\endinput
diff --git a/macros/latex209/contrib/misc/espo.sty b/macros/latex209/contrib/misc/espo.sty
new file mode 100644
index 0000000000..62c01ec553
--- /dev/null
+++ b/macros/latex209/contrib/misc/espo.sty
@@ -0,0 +1,52 @@
+%
+% To produce an accented c, type ^c.
+% the uparrow is also used for the breve,
+% to keep finger-training down.
+%
+\def\^#1{\ifx#1u\u u% ^u gives breve on u
+ \else\ifx#1U\u U% and ^u gives one on U (rare)
+ \else\ifx#1h{\rlap{\accent 94{}}h}%^h mustn't be too tall
+ \else\ifx#1j{\accent 94 \j}% ^j requires undotted j
+ \else{\accent 94 #1}\fi\fi\fi\fi} % Normal circumflexing
+\let\superscript=^ % Save current binding of ^
+\catcode`\^=\active % ^ now active
+\def^{\ifmmode\let\ACC=\superscript\else\let\ACC=\^\fi\ACC}
+% Does auto-accent iff not math
+%
+% Some de-anglicizations. The input is the same, however,
+% to preserve the integrity of the documentation.
+%
+\def\tableofcontents{\section*{Enhavoj\@mkboth{ENHAVOJ}{ENHAVOJ}}
+ \@starttoc{toc}}
+\def\listoffigures{\section*{Listo de Figuroj\@mkboth
+ {LISTO DE FIGUROJ}{LISTO DE FIGUROJ}}\@starttoc{lof}}
+\def\listoftables{\section*{Listo de Tabeloj\@mkboth
+ {LISTO DE TABELOJ}{LISTO DE TABELOJ}}\@starttoc{lot}}
+\def\thebibliography#1{\section*{Aludoj\@mkboth
+ {ALUDOJ}{ALUDOJ}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{Indekso}]
+ \@mkboth{INDEKSO}{INDEKSO}\thispagestyle{plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\fnum@figure{Figuro \thefigure}
+\def\fnum@table{Tabelo \thetable}
+\def\abstract{\if@twocolumn
+\section*{Resumo}
+\else \small
+\begin{center}
+{\bf Resumo\vspace{-.5em}\vspace{0pt}}
+\end{center}
+\quotation
+\fi}
+
+\def\today{la \number\day a de \ifcase\month\or
+ januaro\or februaro\or marto\or aprilo\or majo\or junio\or
+ julio\or a^ugusto\or septembro\or oktobro\or novembro\or decembro\fi,\space
+ \number\year}
diff --git a/macros/latex209/contrib/misc/etcetera.tex b/macros/latex209/contrib/misc/etcetera.tex
new file mode 100644
index 0000000000..d119a38176
--- /dev/null
+++ b/macros/latex209/contrib/misc/etcetera.tex
@@ -0,0 +1,45 @@
+% -*- Mode: TeX -*-
+
+\ifx\thisfileis\anUndefinedMacro\input maybeload \fi
+
+\thisfileis{<eb.tex.texlocal>etcetera} % abort loading if we're already loaded
+
+% This file defines a few abbreviations for convenience.
+% Usage:
+% \sectref{foo-section} % if you have \label{foo-section} somewhere;
+% % inserts a section symbol and the section
+% % number
+% blah blah~$\threedots$
+% blah blah~$\fourdots$
+% $x_1 \spdots x_n$ % for a string; dots at the bottom
+% $x_1+\spcdots+x_n$ % for a sum or whatever; dots in the middle
+% \etc.
+% \ie.
+% \eg.
+% \cf.
+% \ibid.
+% \opcit.
+% \etal.
+%
+
+\input redefine % from texlocal
+
+% You may want to redefine \sectref as follows:
+% \renewcommand{\sectref}{section~\ref}
+%
+\newcommand{\sectref}{\S\ref}
+
+\newcommand{\threedots}{\nolinebreak[4]\mathinner{\ldotp\ldotp\ldotp}}
+\newcommand{\fourdots}{\nolinebreak[4]\mathinner{\ldotp\ldotp\ldotp\ldotp}}
+\newcommand{\spdots}{\;\ldots\;}
+\newcommand{\spcdots}{\;\cdots\;}
+\newdef\etc.{\mbox{\it etc.}}
+\newdef\ie.{\mbox{\it i.e.}}
+\newdef\eg.{\mbox{\it e.g.}}
+\newdef\cf.{\mbox{\it cf.}}
+\newdef\ibid.{\mbox{\it ibid.}}
+\newdef\opcit.{\mbox{\it op. cit.}}
+\newdef\etal.{\mbox{\it et al.}}
+
+\newdef\vs.{\mbox{vs.}} % perhaps not italic?
+
diff --git a/macros/latex209/contrib/misc/euler.sty b/macros/latex209/contrib/misc/euler.sty
new file mode 100644
index 0000000000..407405fcce
--- /dev/null
+++ b/macros/latex209/contrib/misc/euler.sty
@@ -0,0 +1,146 @@
+% The following lines establish the use of the Euler Fraktur font.
+% Calling sequence: \documentstyle[...,euler,...]{....}
+% Slightly modified from a version snarfed from LISTSERV at DHDURZ1
+% The modification is using the command \@addto to
+% modify the virtual font size definitions later used
+% by ARTxx.STY or REPxx.STy or so on.
+% I found \@addto in VDM.STY by Mario Wolcko.
+% The advantage is that using this trick you can add
+% different families of fonts to the existing LATEX fonts
+% and the later style options do not remove font families added
+% by previous style option. So you can add selectively
+% e.g. the MSXMxx and MSYMxx families and later also
+% the Euler Fraktur and the cyrillic fonts without any changes
+% in the style files. Without \@addto this is rather difficult
+% to accomplish.
+% Updates 11/20/1988 by E. Neuwirth (A4422DAB at AWIUNI11)
+
+ \def\@addto#1#2{\ifx#1\undefined % do nothing
+ \else \toks0=\expandafter{#1}\toks1={#2}%
+ \global\edef#1{\the\toks0 \the\toks1 }\fi}
+
+
+
+
+\catcode`@=11
+
+\def\relaxnext@{\let\next\relax}
+
+%\font\twfveuf=eufm10 \@magscale5
+\font\twtyeuf=eufm10 \@magscale4
+\font\svtneuf=eufm10 \@magscale3
+\font\frtneuf=eufm10 \@magscale2
+\font\twelveeuf=eufm10 \@magscale1
+\font\eleveneuf=eufm10 \@halfmag
+\font\teneuf=eufm10
+\font\nineeuf=eufm9
+\font\eighteuf=eufm8
+\font\seveneuf=eufm7
+\font\sixeuf=eufm6
+\font\fiveeuf=eufm5
+
+\newfam\euffam
+
+% Hier sind jetzt geaenderte LFONTS Definitionen (fuer LaTeX)
+
+\@addto\@vpt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\fiveeuf}\textfont\euffam=\fiveeuf
+ \scriptfont\euffam=\fiveeuf \scriptscriptfont\euffam=\fiveeuf
+\@setstrut\rm}
+
+
+\@addto\@vipt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\sixeuf}\textfont\euffam=\sixeuf
+ \scriptfont\euffam=\sixeuf \scriptscriptfont\euffam=\sixeuf
+\@setstrut\rm}
+
+
+\@addto\@viipt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\seveneuf}\textfont\euffam=\seveneuf
+ \scriptfont\euffam=\fiveeuf \scriptscriptfont\euffam=\fiveeuf
+\@setstrut \rm}
+
+
+\@addto\@viiipt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\eighteuf}\textfont\euffam=\eighteuf
+ \scriptfont\euffam=\sixeuf \scriptscriptfont\euffam=\fiveeuf
+\@setstrut \rm}
+
+
+\@addto\@ixpt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\nineeuf}\textfont\euffam=\nineeuf
+ \scriptfont\euffam=\sixeuf \scriptscriptfont\euffam=\fiveeuf
+\@setstrut \rm}
+
+
+\@addto\@xpt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\teneuf}\textfont\euffam=\teneuf
+ \scriptfont\euffam=\seveneuf \scriptscriptfont\euffam=\fiveeuf
+\@setstrut \rm}
+
+
+\@addto\@xipt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\eleveneuf}\textfont\euffam=\eleveneuf
+ \scriptfont\euffam=\eighteuf \scriptscriptfont\euffam=\sixeuf
+\@setstrut \rm}
+
+
+\@addto\@xiipt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\twelveeuf}\textfont\euffam=\twelveeuf
+ \scriptfont\euffam=\eighteuf \scriptscriptfont\euffam=\sixeuf
+ \@setstrut \rm}
+
+
+\@addto\@xivpt{\textfont\z@\frtnrm
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\frtneuf}\textfont\euffam=\frtneuf
+ \scriptfont\euffam=\teneuf \scriptscriptfont\euffam=\seveneuf
+\@setstrut \rm}
+
+
+\@addto\@xviipt{\textfont\z@\svtnrm
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\svtneuf}\textfont\euffam=\svtneuf
+ \scriptfont\euffam=\twelveeuf \scriptscriptfont\euffam=\teneuf
+\@setstrut \rm}
+
+
+\@addto\@xxpt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\twtyeuf}\textfont\euffam=\twtyeuf
+ \scriptfont\euffam=\frtneuf \scriptscriptfont\euffam=\twelveeuf
+\@setstrut \rm}
+
+
+\@addto\@xxvpt{
+% Hier AmS-Fonts
+\def\euf{\fam\euffam\twtyeuf}\textfont\euffam=\twtyeuf
+ \scriptfont\euffam=\twtyeuf \scriptscriptfont\euffam=\svtneuf
+\@setstrut \rm}
+
+
+
+
+
+
+
+
+\def\frak{\relaxnext@\ifmmode\let\next\frak@\else
+ \def\next{\Err@{Use \string\frak\space only in math mode}}\fi\next}
+\def\goth{\relaxnext@\ifmmode\let\next\frak@\else
+ \def\next{\Err@{Use \string\goth\space only in math mode}}\fi\next}
+\def\frak@#1{{\frak@@{#1}}}
+\def\frak@@#1{ %\noaccents@
+\fam\euffam#1}
+% End definition of Euler Fraktur font.
+
+\catcode`@=12 % at signs are no longer letters
+
diff --git a/macros/latex209/contrib/misc/exam.sty b/macros/latex209/contrib/misc/exam.sty
new file mode 100644
index 0000000000..80ced00c27
--- /dev/null
+++ b/macros/latex209/contrib/misc/exam.sty
@@ -0,0 +1,394 @@
+%% EXAM.STY -- Examination Style (article version) for LaTeX version 2.09
+%% History: July 21, 1989; Original version (MCTF.STY) July 25, 1988
+%% Author: George D. Greenwade (BED_GDG@SHSU.BITNET)
+%% Center for Business and Economic Research
+%% Sam Houston State University, Huntsville, TX 77341-2056
+%% Huntsville, Texas, USA 77341-2056
+%% (409) 294-1518
+%%
+%% Includes ART11.STY, FULLPAGE.STY, and FANCYHEADINGS.STY as default.
+%% Usage: \documentstyle[exam]{article}
+%% %\key % remove leading comment if key is desired, see below
+%% %\listing % remove leading comment if listing is desired, see below
+%% \courseno{ECO 530} % specify the course number in this field
+%% \examno{One} % specify the exam number in this field
+%% \date{Exam Date} % specify exam date (my preference is to use
+%% % semester and year); default is \today
+%% \prof{Greenwade} % specify the professor's name in this field
+%% \intro{Instruction text} % specify the instruction text in this
+%% % field. Note that this version does NOT
+%% % provide a line for the student's name.
+%% \begin{document}
+%% \maketitle % generate a first page with information
+%% % provided above
+%% \startquestions
+%% %See below for specifics of operation
+%%
+%% % multiple choice example
+%% \qtem{A}{03.015} This is a multiple choice question and:
+%% \startanswers
+%% \atem this is the correct answer.
+%% \atem this is an incorrect answer.
+%% \atem this is another incorrect answer.
+%% \finishanswers
+%%
+%% % true-false example
+%% \qtem{T}{05.027} This is a true statement. \endtf
+%%
+%% % essay example, with a 2 inch blank response area
+%% \ltem{2}{11.045} You have two inches to respond to this. \endessay
+%%
+%% % fill-in-the-blank example
+%% \ftem{missing}{15.23} There is a word \_\_\_\_\_\_\_\_\_\_\_\_\_ .
+%% \endfitb
+%%
+%% \finishquestions
+%% \end{document}
+%%
+%% NOTES
+%% All questions are within a minipage environment to ensure that questions
+%% are not broken across pages.
+%%
+%% A variation of the enumi counter is employed (\qcount) to ensure proper
+%% enumeration of questions.
+%%
+%% There are useful variations of \item within the file to assist in the
+%% generation of exams:
+%%
+%% Exam questions are delimited by \startquestions ... \finishquestions
+%% QUESTION TYPES
+%% -- \qtem{X}{Y} creates a question item for multiple choice and
+%% true/false items, with a blank leading line for responses. In this
+%% case, {X} represents the correct response (\qtema) and {Y} represents
+%% the question number from within the master question data file
+%% (\qmasno). BOTH X AND Y MUST BE SPECIFIED, EVEN IF AS \qtem{}{}
+%% -- \ltem{X}{Y} creates a question item for essay and fill-in-the-blank
+%% items, without a blank leading line for responses. In this case, {X}
+%% represents the vertical blank space for the response (\qtema) and
+%% {Y} represents the question number from within the master question
+%% data file (\qmasno).
+%% BOTH X AND Y MUST BE SPECIFIED, WITH X POSSESSING AN EXPLICIT NUMBER.
+%% THE MINIMAL ENTRY IS \ltem{0}{}
+%% ANSWER TYPES
+%% Answers to question are delimited by:
+%% -- MULTIPLE CHOICE: (Following \qtem{X}{Y} The question text...) a
+%% delimited range begining with \startanswers and ended by \finishanswers;
+%% each answer item is identified with \atem. This creates an enumerated
+%% list (\enumii) of a., b., c., ...
+%% -- TRUE/FALSE: (Following \qtem{X}{Y} The question text...) terminate
+%% text with \endtf , which automatically generates a. True b. False
+%% -- ESSAY/FILL-IN-THE-BLANK: (Following \ltem{X}{Y} The question text...)
+%% terminate test with \endessay , which provides X inches of specified
+%% vertical space for the response. In the case of Fill-in questions,
+%% specify X to zero
+%%
+%% There are two useful preamble declarations (\key and \listing) used to
+%% produce different reports from a .TEX file:
+%% -- no declaration creates an exam, with leading blanks, as specified by
+%% \qtem or \ltem.
+%% -- \key creates an answer key, with the correct answer placed where the
+%% leading blank space was on the exam form. The key format is
+%% identical to the corresponding exam.
+%% -- \listing creates a listing of questions similar to \key, but the
+%% master question number is also provided. This option is handy in
+%% maintaining the master database of questions. In the case of the
+%% \listing output for \ltem items, a note is provided informing of the
+%% vertical space provided for the answer, rather than the physical space
+%% for the answer to conserve printed output.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Get ART11.STY from local collection
+\input{art11.sty}
+
+% This is FULLPAGE.STY, version 2
+% (hardcoded to ensure consistency between users)
+% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988.
+\topmargin 0pt
+\headheight 13.6pt % necessary variation to avoid overfull vboxes
+\headsep 30pt % necessary variation to provide nicer tops of pages
+\advance \topmargin by -\headheight
+\advance \topmargin by -\headsep
+
+\textheight 9.2in
+
+\oddsidemargin 0pt
+\evensidemargin \oddsidemargin
+\marginparwidth 0.5in
+
+\textwidth 6.5in
+% end of FULLPAGE.STY
+
+% This is FANCYHEADINGS.STY
+% (hardcoded to ensure consistency between users)
+% fancyheadings.sty version 1.0
+% Fancy headers and footers.
+% Piet van Oostrum, Dept of Computer Science, University of Utrecht
+% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
+% Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!hp4nl!ruuinf!piet)
+% March, 1989.
+\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}}
+\def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}}
+\def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}}
+
+\def\chead{\@ifnextchar[{\@xchead}{\@ychead}}
+\def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}}
+\def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}}
+
+\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}}
+\def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}}
+\def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}}
+
+\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
+\def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}}
+\def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}}
+
+\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
+\def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}}
+\def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}}
+
+\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
+\def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}}
+\def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}}
+
+\newdimen\headrulewidth
+\newdimen\footrulewidth
+\newdimen\plainheadrulewidth
+\newdimen\plainfootrulewidth
+\newdimen\headwidth
+\newif\if@fancyplain \@fancyplainfalse
+\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
+
+\headrulewidth 0.4pt
+\footrulewidth\z@
+\plainheadrulewidth\z@
+\plainfootrulewidth\z@
+
+\lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}}
+\chead{}
+\rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}}
+\lfoot{}
+\cfoot{\rm\thepage} % page number
+\rfoot{}
+
+\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\hbox
+{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[b]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5}
+
+\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\footrule
+\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[t]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5}
+
+\def\headrule{{\if@fancyplain\headrulewidth\plainheadrulewidth\fi
+\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
+
+\def\footrule{{\if@fancyplain\footrulewidth\plainfootrulewidth\fi
+\vskip-0.3\normalbaselineskip\vskip-\footrulewidth
+\hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}}
+
+\def\ps@fancy{
+\let\@mkboth\markboth
+\@ifundefined{chapter}{\def\sectionmark##1{\markboth
+{\uppercase{\ifnum \c@secnumdepth>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}
+\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}
+{\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}
+\def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection. \ \fi ##1}}}}
+\def\@oddhead{\@fancyhead\relax\@olhead\@ochead\@orhead\hss}
+\def\@oddfoot{\@fancyfoot\relax\@olfoot\@ocfoot\@orfoot\hss}
+\def\@evenhead{\@fancyhead\hss\@elhead\@echead\@erhead\relax}
+\def\@evenfoot{\@fancyfoot\hss\@elfoot\@ecfoot\@erfoot\relax}
+\headwidth\textwidth}
+\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
+\def\ps@plain@fancy{\@fancyplaintrue\ps@fancy}
+% end of FANCYHEADINGS.STY
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% \def's for \prof, \examno, and \courseno %%
+%% \date and \intro %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\prof#1{\edef\prof{#1}}
+\def\examno#1{\edef\examno{#1}}
+\def\courseno#1{\edef\courseno{#1}}
+\def\intro#1{\gdef\intro{#1}}
+\def\date#1{\gdef\@date{#1}}
+\gdef\@date{\today} %Default is today's date
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% \newifs for key and listing of questions %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifkey
+\newif\iflisting
+
+\global\keyfalse
+\global\listingfalse
+
+\def\key{\global\keytrue \global\listingfalse}
+\def\listing{\global\listingtrue \global\keytrue}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Create leading blank answer line %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\ansline{
+\iflisting{\qmasno\ \underline{$\bullet$ \qtema\ $\bullet$}} \else
+\ifkey{\underline{\rule{.15in}{.0mm}$\bullet$ \qtema\
+ $\bullet$\rule{.15in}{.0mm}}} \else
+ \ifnum\qcount<9 {\rule{.5in}{.3mm} \kern 5mm}
+ \else\ifnum\qcount>8 {\rule{.5in}{.3mm} \kern 3mm}
+ \else {\rule{.5in}{.3mm} \kern 3mm}
+\fi \fi \fi \fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Make following period for answer options %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\labelenumii{\alph{enumii}.}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Questions use enumi counter and are %%
+%% inserted appropriately using minipage %%
+%% leading blank line is used and redefined %%
+%% to original status upon exit; define %%
+%% \endtf for questions without subitems %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcount\qcount
+\qcount=-1
+
+%%% QUESTIONS WITH A LEADING BLANK RESPONSE LINE
+
+%% \startquestions is used to create question items WITH a blank answer
+%% line for responses to be entered.
+\def\startquestions{\qcount=-1\def\labelenumi{\ansline \arabic{enumi}.}
+ \ \\ }
+
+%% \qtem is a question and answer set placed on a minipage which HAS a leading
+%% blank line for responses.
+\def\qtem#1#2{\advance \qcount by 1 \noindent
+ \hspace*{.7in} \begin{minipage}{5.7in} \edef\qtema{#1} \edef\qmasno{#2}
+ \begin{enumerate} \setcounter{enumi}{\qcount} \item}
+
+%% \finishquestions is used to end questions and reset \labelenumi so that the
+%% leading blank space is removed (used with \startquestions)
+\def\finishquestions{\def\labelenumi{\arabic{enumi}.}}
+
+%% \ltem is a question and answer set placed on a minipage which does NOT have
+%% a leading blank line for responses.
+\def\ltem#1#2{\advance \qcount by 1 \noindent
+ \hspace*{.7in} \begin{minipage}{5.7in} \edef\qtema{#1} \edef\qmasno{#2}
+\let\ansline\essayline
+ \begin{enumerate} \setcounter{enumi}{\qcount} \item}
+
+\def\essayline{
+\iflisting{\qmasno\ \rule{.25in}{0pt}} \else
+ \ifnum\qcount<9 {\rule{.5in}{0mm} \kern 5mm}
+ \else\ifnum\qcount>8 {\rule{.5in}{0mm} \kern 3mm}
+ \else {\rule{.5in}{.3mm} \kern 3mm}
+\fi \fi \fi}
+
+%% \ftem is a question and answer set placed on a minipage which does NOT have
+%% a leading blank line for responses.
+\def\ftem#1#2{\advance \qcount by 1 \noindent
+ \hspace*{.7in} \begin{minipage}{5.7in} \edef\qtema{#1} \edef\qmasno{#2}
+\let\ansline\essayline
+ \begin{enumerate} \setcounter{enumi}{\qcount} \item}
+
+\def\fillblankline{
+\iflisting{\qmasno\ \qtema} \else
+\ifkey{\underline{\qtema}}\else
+ \ifnum\qcount<9 {\rule{.5in}{0mm} \kern 5mm}
+ \else\ifnum\qcount>8 {\rule{.5in}{0mm} \kern 3mm}
+ \else {\rule{.5in}{.3mm} \kern 3mm}
+\fi \fi \fi \fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Answers use enumii counter and are %%
+%% inserted appropriately using minipage %%
+%% optional "atem" is defined to tighten up %%
+%% vertical space between answers %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newdimen\mcitemsep
+\mcitemsep 0pt
+
+%% \startanswers is used to start an answer set of multiple choice answers
+\def\startanswers{ \vspace*{-2mm} \begin{enumerate} \let\itemsep\mcitemsep}
+
+%% \finishanswers is used to end the answer list and close the minipage
+\def\finishanswers{\ \\ \end{enumerate} \end{enumerate} \end{minipage} }
+
+%% \endtf is used to end a true-false statement which has no multiple choice
+%% answers present (primarily, close the minipage)
+\def\endtf{\begin{enumerate} \atem True \rule{.5in}{0pt} b. False \ \\
+
+\end{enumerate} \end{enumerate} \end{minipage} }
+
+\def\endessay{\ \\ \iflisting{{\sl A vertical space of \qtema\ inches is left
+for this response}\\
+
+} \else
+{\rule{0pt}{\qtema in}} \fi
+\end{enumerate} \end{minipage}}
+
+\def\endfitb{\ \\ \ifkey{{\sl \qtema }\\
+
+} \else {\ \\} \fi \end{enumerate} \end{minipage}}
+
+%% \atem is an answer item used following \startanswers. Note the negative
+%% \vspace* added to tighten up the appearance of the answer set.
+%% Can use \item if happy with standard LaTeX spacing for enumii.
+\def\atem{%\vspace*{-1.5mm}
+ \item}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% \maketitle for test, list, and key headers %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\maketitle{
+\typeout{ }
+
+\iflisting\typeout{Processing a Listing of Questions for \courseno } \else
+\ifkey\typeout{Processing Answer Key for Exam \examno , \courseno} \else
+\typeout{Processing Exam \examno , \courseno , for Professor \prof } \fi\fi
+
+\typeout{ }
+\iflisting{\noindent {\bf \courseno \hfill \today \\
+Listing of Questions \hfill \prof }\\
+\vspace*{2mm}
+
+This is a listing of questions in your exam database. The first number in the
+left column represents the question number in the master database, with a
+number such as 05.012 representing question 12 in chapter 5. The second entry
+in the left column represents the correct answer from among the choices
+presented. The third number in the left column represents the running question
+count for the range of questions in the database specified (this is handy once
+questions are deleted from your database). Finally, the question, as it would
+appear on an exam, is presented.\\ \rule{0pt}{4mm}}
+\else
+\ifkey
+{\noindent {\bf \courseno \hfill \@date \\
+Exam \examno \hfill $\bullet$ ANSWER KEY $\bullet$ \hfill \prof }\\
+\vspace*{2mm}
+
+\intro \ \\ \rule{0pt}{4mm}}
+\else %\ifexam
+{\noindent {\bf \courseno \hfill \@date \\
+Exam \examno \hfill \prof }\\
+\vspace*{2mm}
+
+\intro \ \\ \rule{0pt}{4mm}}
+\fi \fi }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Headers for pages other than first %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lhead{\iflisting{\sl \courseno\ Listing of Questions}
+ \else\ifkey{\sl \courseno, Exam \examno\ Answer Key}
+ \else{\sl \courseno, Exam \examno}\fi \fi}
+\chead{\sl \prof}
+\rhead{\sl Page \thepage}
+\lfoot{}
+\cfoot{}
+\rfoot{}
+\pagestyle{fancy}
+\thispagestyle{empty}
+
diff --git a/macros/latex209/contrib/misc/example.sty b/macros/latex209/contrib/misc/example.sty
new file mode 100644
index 0000000000..bdab7fa192
--- /dev/null
+++ b/macros/latex209/contrib/misc/example.sty
@@ -0,0 +1,412 @@
+% example.sty 20 May 91
+%------------------------------------------------------------
+% Copyright (c) 1988, 1991 by J.Schrod.
+% Distributed under the terms of the GNU General Public License.
+
+%
+% LaTeX style option example
+% tested with style article, should also work with other styles
+% don't use it with twoside or twocolumn option
+%
+% [LaTeX in MAKEPROG]
+
+
+%
+% Author
+% js: Joachim Schrod <xitijsch@ddathd21.bitnet>
+% Contributors
+% (** enough place for your name **)
+%
+
+%
+% VERSION HISTORY (MSCF -- most significant change first)
+%
+% DATE WHO REMARKS
+% 91-05-20 js documentation added for distribution
+% 88-06-29 js created it for THD LaTeX tutorial
+
+
+
+
+%%%%
+%%%%
+%%%% These TeX macros were documented with the documentation system
+%%%% MAKEPROG and automatically converted to the current form.
+%%%% If you have MAKEPROG available you may transform it back to
+%%%% the original input: Remove every occurence of three percents
+%%%% and one optional blank from the beginning of a line and remove
+%%%% every line which starts with four percents. The following lex
+%%%% program will do this:
+%%%%
+%%%% %%
+%%%%
+%%%% ^%%%\ ? ;
+%%%% ^%%%%.*\n ;
+%%%%
+%%%% MAKEPROG may be obtained over the net from the Bitnet-Listserver
+%%%% LISTSERV@DHDURZ1 (filelist WEBWARE), from tuglib@science.utah.edu,
+%%%% or via ftp from june.cs.washington.edu.
+%%%%
+%%%%
+%%% \documentstyle[progltx,example]{article}
+
+
+%%% \nofiles % don't need an aux file
+%%% \hfuzz=18pt % expected overfull hboxes in code
+
+
+%%% \begin{document}
+
+
+%%% \title{The {\tt example\/} Style Option}
+%%% \author{% % LaTeX does not discard unnecessary glue...
+%%% Joachim Schrod%
+%%% \thanks{%
+%%% TU~Darmstadt, Alexanderstr.~10, D-6100 Darmstadt, Germany.\hfil\break
+%%% Email: {\tt xitijsch@ddathd21.bitnet}.%
+%%% }%
+%%% }
+%%% \date{20 May 91}
+
+%%% \maketitle
+
+
+
+%%% \chap What's this style option for?.
+
+%%% This style option makes it easier to produce examples for \TeX{}
+%%% courses. It realizes an |example| environment; the text within such
+%%% an environment is typeset two times: On the left side just like any
+%%% ordinary text, on the right side verbatim. So an author can be sure
+%%% that the verbatim and the typeset part of an \TeX{} example is
+%%% consistent. The usage is simple: Type
+%%% %
+%%% \begin{quote}
+%%% |\begin{example}|
+%%% |Some \TeX{} text.|
+%%% |\end{example}|
+%%% \end{quote}
+%%% %
+%%% and you get
+%%% %
+%%% \begin{example}
+%%% Some \TeX{} text.
+%%% \end{example}
+%%% %
+%%% Just note one important point: {\it The end of the environment must
+%%% be on a line of it's own, there must be no space in front of the
+%%% |\end|, and there must be no text -- even no comment -- behind}. For
+%%% further information have a look at the section on possible
+%%% enhancements.
+
+
+%%% \sect 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~1, or (at your
+%%% option) any later version.
+
+%%% This program is distributed in the hope that it will be useful, but
+%%% {\bf without any warranty\/}; without even the implied warranty of
+%%% {\bf merchantability\/} or {\bf 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.
+
+
+%%% \sect The implementation uses an auxiliary file. This file has the
+%%% extension |tmp|. Be aware of this if you use such a file name in other
+%%% options. The file is not needed outside of the environment.
+
+%%% All public markups start with |Example|, all private ones with
+%%% |example_|. These two prefixes are reserved.
+
+%%% The width of an example column is available for inspection and change
+%%% in the dimension register |\ExampleWidth|.
+
+
+%%% \sect This style option still has at least one problem which you
+%%% should be aware of: I've encountered false indentation while I've
+%%% used it within an item of a |list| environment. I remember that there
+%%% was a difference if it was used with or without text in front of it.
+%%% But I didn't needed this stuff so I decided not to look at.
+
+%%% Might be, that |\everypar| is not handled correctly or that some flags
+%%% should be looked at. (Remember that an |\item| in \LaTeX{} does not
+%%% set anything -- it just stores it away until the start of the next
+%%% paragraph!)
+
+%%% Furthermore I set |\oddsidemargin| and |\evensidemargin| to 0\,pt, but
+%%% I do not remember why. Is this really necessary? (I should have
+%%% documented it in the beginning, nothing lives longer than a
+%%% provision\,\dots)
+
+
+%%% \sect And some future enhancements would be easy to make:
+%%% %
+%%% \begin{itemize}
+
+%%% \item The algorithm for typesetting the verbatim text should be those
+%%% of |progltx|. Then tabulators and all those stuff would be handled
+%%% right.
+
+%%% \item The algorithm for detecting the environment end should be those
+%%% of |progltx|, too. It would allow for comments; a markup which forbids
+%%% a comment behind it should be forbidden.
+
+%%% \item There should be a way to specify texts which are only printed in
+%%% the \TeX{} part resp.\ the verbatim part. This would be helpful for
+%%% inserting help lines, additional information etc. (Implementation is
+%%% straightforward.)
+
+%%% \item The implementation does not care for the |twoside| option. Then
+%%% the order should be mirrored. I.e., verbatim left and \TeX{} text
+%%% right.
+
+%%% \item Other arrangements of \TeX{} text and verbatim text should be
+%%% possible. E.g., on a slide there should not be beside each other but
+%%% below. Perhaps also on a multi-column layout.
+
+%%% \end{itemize}
+
+
+%%% \sect Before we start we declare some shorthands for category codes.
+%%% By declaring the underscore~`(|_|)' as letters we can use it in our
+%%% macros. (I agree with {\sc D.~Knuth} that
+%%% |\identifier_several_words_long| is more readable than
+%%% |\IdentifierSeveralWordsLong| and in every case better than
+%%% |\p@@@s|.) As this is a \LaTeX{} style option the at sign is a letter
+%%% anyhow; so we can use the ``private'' Plain and \LaTeX{} macros; and
+%%% with the underscore we can make our own macros more readable. But as
+%%% we have to restore this category code at the end of this macro file
+%%% we store its former value in the control sequence |\uscode|. This
+%%% method is better than to use a group because not all macros have to
+%%% be defined global this way.
+
+%%% \beginprog
+\chardef\escape=0
+\chardef\open=1
+\chardef\close=2
+\chardef\letter=11
+\chardef\other=12
+%\chardef\active=13 % is defined in Plain already
+
+\chardef\uscode=\catcode`\_ % top level macro file!
+
+\catcode`\_=\letter
+%%% \endprog
+
+
+%%% \sect Now some setup where I don't remember why I've done them,
+%%% perhaps it was only needed in our tutorials. -- But never change a
+%%% running program by yourself, let others do the work\,\dots
+
+%%% \beginprog
+\oddsidemargin=0pt
+\evensidemargin=\oddsidemargin
+%%% \endprog
+
+
+
+
+%%% \chap The Work is Simple.
+
+%%% Guess, the problem of implementation is no problem: We write the whole
+%%% stuff to a file and read it back twice. One time for typesetting it as
+%%% it is, second time for typesetting it verbatim. That's all.
+
+%%% So let's define our file variable and name first:
+
+%%% \beginprog
+\newwrite\example_file
+\def\example_name{\jobname.tmp } % <-- space!
+%%% \endprog
+
+
+%%% \sect Both parts of one example will be placed besides each other. We
+%%% use the margin for the example, too. (There is not much place anyhow.)
+%%% Between the two parts there is |\columnsep| space left.
+
+%%% \beginprog
+\newdimen\ExampleWidth
+ \ExampleWidth=\textwidth
+ \advance\ExampleWidth by \marginparwidth % stick into margins
+ \advance\ExampleWidth by -\columnsep % between columns
+ \divide\ExampleWidth by 2
+%%% \endprog
+
+
+%%% \sect When we're about, we may specify how to set the two parts. We
+%%% may assume that the complete text is in the file |\example_name|. Both
+%%% parts are typeset as minipages (it's better than vtop's for
+%%% |\footnote| examples and such like). Sectioning markups and other
+%%% stuff which setup things must behave as if they were not there --
+%%% nobody wants an entry in his table of contents because he has used a
+%%% |\section| markup in an example.
+
+%%% The horizontal rules are needed for a better (still not correct)
+%%% interline spacing.
+
+%%% {\it FIXME: How about index and glossary entries?}
+
+%%% \beginprog
+\def\ExampleSet{%
+ \begin{minipage}[t]{\ExampleWidth}%
+ \hrule height\z@
+ \def\markboth##1##2{}%
+ \def\markright##1{}%
+ \def\addcontentsline##1##2##3{}%
+ \input \example_name
+ \par
+ \hrule height\z@
+ \end{minipage}%
+ }
+%%% \endprog
+
+
+%%% \sect Grmpfh, the \LaTeX{} |verbatim| environment is sloppy
+%%% implemented (to say it polite). I will establish at least that a tab
+%%% is typeset as 8~spaces; this will help some people.
+
+%%% {\it FIXME: other\/ |verbatim| implementation!}
+
+%%% \beginprog
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\@vobeytabs{\catcode`\^^I\active \let^^I\@xobeytab}
+ \global\let^^I=\@xobeytab% % for \write's
+\endgroup
+\def\@xobeytab{\space\space\space\space\space\space\space\space}
+%%% \endprog
+
+
+%%% \sect The verbatim code is taken from \LaTeX{}:
+
+%%% \beginprog
+\def\ExampleVerb{%
+ \begin{minipage}[t]{\ExampleWidth}%
+ \hrule height\z@
+ \begingroup
+ \small
+ \parindent\z@
+ \rightskip\@flushglue
+ \@makeother\"\@verbatim
+ \frenchspacing \@vobeyspaces \@vobeytabs
+ \input \example_name
+ \endverbatim
+ \endgroup
+ \hrule height\z@
+ \end{minipage}%
+ }
+%%% \endprog
+
+
+
+
+%%% \chap Writing the example to the auxiliary file.
+
+%%% Now we come to the real environment: We open our auxiliary file and
+%%% start copying line by line afterwards. When we see the environment
+%%% end we will finish. As a convenience for input we will ignore empty
+%%% lines at the beginning of the example, this is flagged by |@ignore|.
+
+%%% \beginprog
+\def\example{
+ \par
+ \immediate\openout\example_file\example_name
+ \begingroup
+ \@makeother\"\let\do\@makeother \dospecials
+ \obeylines \obeyspaces
+ \@ignoretrue \copy_line
+ }
+%%% \endprog
+
+
+%%% \sect We need a reference line of the example end to compare against.
+%%% This line we call |\end_of_example|. Of course all catcodes have to
+%%% set up appropriately.
+
+%%% \beginprog
+\begingroup
+ \catcode`\|=\escape % | is temporary escape character
+ \catcode`\[=\open % [ and ] are temporary grouping symbols
+ \catcode`\]=\close
+ \catcode`\{=\other % these are `other' in verbatim mode
+ \catcode`\}=\other
+ \catcode`\\=|other
+ |gdef|end_of_example[\end{example}]
+|endgroup
+%%% \endprog
+
+
+%%% \sect Following the ``golden rules of \TeX{} macro coding,'' we will
+%%% split gathering of the next line and working with it. If the line
+%%% equals our reference line we will stop our envirenment. Of course, we
+%%% must call |\end| ourselves as we have just read it from the input and
+%%% it is already tokenized.
+
+%%% If we are inmidst the example we write the line to the auxiliary file,
+%%% if we shall not skip empty lines as indicated by |@ignore|.
+
+%%% {\it FIXME: The comparison should not be so rude!}
+
+%%% \beginprog
+\begingroup
+ \obeylines \gdef\copy_line#1^^M{\write_line{#1}}%
+\endgroup
+
+\def\write_line#1{%
+ \def\next{#1}%
+ \ifx \next\end_of_example
+ \def\next{\end{example}}% % finish example
+ \else
+ \ifx \next\empty
+ \if@ignore % ignore empty lines at the beginning
+ \else % but write them out later
+ \immediate\write\example_file{\next}%
+ \fi
+ \else
+ \immediate\write\example_file{\next}%
+ \@ignorefalse % at least one non-empty line written
+ \fi
+ \let\next\copy_line % next line of example
+ \fi
+ \next
+ }
+%%% \endprog
+
+
+%%% \sect Now we may handle our real work: The example text is written
+%%% out, we just have to set it two times. But first we must close the
+%%% file. Both parts are set by a |\leftline| which inserts glue by |\hss|
+%%% and will not yield an overfull hbox this way, it just sticks out to
+%%% the right.
+
+%%% We try to mimic a displayed equation in spacing -- it's better than
+%%% nothing (polishing needed).
+
+%%% \beginprog
+\def\endexample{%
+ \endgroup
+ \immediate\closeout\example_file
+ \penalty \predisplaypenalty
+ \vskip \abovedisplayskip
+ \leftline{\ExampleSet \hskip\columnsep \ExampleVerb}%
+ \penalty \postdisplaypenalty
+ \vskip \belowdisplayskip
+ }
+%%% \endprog
+
+
+%%% \sect We must restore our catcode and are finished.
+
+%%% \beginprog
+\catcode`\_=\uscode
+
+\endinput
+%%% \endprog
+
+
+
+%%% \end{document}
diff --git a/macros/latex209/contrib/misc/exercise.mac b/macros/latex209/contrib/misc/exercise.mac
new file mode 100644
index 0000000000..93c7b61521
--- /dev/null
+++ b/macros/latex209/contrib/misc/exercise.mac
@@ -0,0 +1,57 @@
+% Subject: exercise-macros
+% author : Alan R. Rogers
+
+% These macros are modified versions of the \exercise and \answer macros
+% on p. 422 of the TeXbook. The modifications are to make them work under
+% LaTeX.
+% Usage:
+% \documentstyle [12pt,twoside]{report}
+% \input exercise
+% \begin{document}
+% \chapter{Text}
+% \exercise In what season of the year did George Washington spend the
+% winter in Valley forge?
+% \answer 1776
+%
+% \exercise In what year did George Washington spend the winter there?
+% \answer Winter
+%
+% \chapter{Answers}
+% \listanswers % The answers are inserted here.
+% \end{document}
+% BUG: The blank lines after the \answer macros are *mandatory*. If you leave
+% them out TeX will exhaust the file looking for them.
+% Alan R. Rogers (rogers@anthro.utah.edu), U. of Utah, 10/23/88
+
+\newcounter{exno}[chapter]
+
+%\newenvironment{exercise}{\begin{list}{\small\llap{$\bullet$\kern.15em}%
+% {\footnotesize EXERCISE \bf\thechapter.\theexno}}{
+% \usecounter{exno}\small
+% \setlength{\labelwidth}{5em} \setlength{\labelsep}{1em}
+% \setlength{\leftmargin}{6em}
+% \setlength{\itemsep}{0em} \setlength{\topsep}{\parsep}}}
+% {\end{list}\normalsize}
+
+\outer\def\exercise{\addtocounter{exno}{1}
+ \par\small\noindent\llap{$\bullet$\kern.15em}% bullet in margin
+ {\footnotesize EXERCISE \bf\thechapter.\theexno}\par\nopagebreak\noindent}
+
+\def\ansno#1.#2:{\par\noindent
+ \hbox to\parindent{\bf\hss#1.#2.\enspace}\ignorespaces}
+\chardef\other=12
+\newwrite\ans
+\immediate\openout\ans=answers
+\outer\def\answer{\normalsize\par
+ \immediate\write\ans{}
+ \immediate\write\ans{\string\ansno\thechapter.\theexno:}
+ \copytoblankline}
+\def\copytoblankline{\begingroup\setupcopy\copyans}
+\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials
+ \catcode`\|=\other \obeylines}
+{\obeylines \gdef\copyans#1
+ {\def\next{#1}%
+ \ifx\next\empty\let\next=\endgroup %
+ \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}}
+
+\def\listanswers{\immediate\closeout\ans\input answers}
diff --git a/macros/latex209/contrib/misc/exercise.sty b/macros/latex209/contrib/misc/exercise.sty
new file mode 100644
index 0000000000..34da48b709
--- /dev/null
+++ b/macros/latex209/contrib/misc/exercise.sty
@@ -0,0 +1,56 @@
+% Original author: Alan R. Rogers <rogers@anthro.utah.edu>
+% Example usage follows style file
+\newcounter{exno}[chapter]
+
+%\newenvironment{exercise}{\begin{list}{\small\llap{$\bullet$\kern.15em}%
+% {\footnotesize EXERCISE \bf\thechapter.\theexno}}{
+% \usecounter{exno}\small
+% \setlength{\labelwidth}{5em} \setlength{\labelsep}{1em}
+% \setlength{\leftmargin}{6em}
+% \setlength{\itemsep}{0em} \setlength{\topsep}{\parsep}}}
+% {\end{list}\normalsize}
+
+\outer\def\exercise{\addtocounter{exno}{1}
+ \par\small\noindent\llap{$\bullet$\kern.15em}% bullet in margin
+ {\footnotesize EXERCISE \bf\thechapter.\theexno}\par\nopagebreak\noindent}
+
+\def\ansno#1.#2:{\par\noindent
+ \hbox to\parindent{\bf\hss#1.#2.\enspace}\ignorespaces}
+\chardef\other=12
+\newwrite\ans
+\immediate\openout\ans=answers
+\outer\def\answer{\normalsize\par
+ \immediate\write\ans{}
+ \immediate\write\ans{\string\ansno\thechapter.\theexno:}
+ \copytoblankline}
+\def\copytoblankline{\begingroup\setupcopy\copyans}
+\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials
+ \catcode`\|=\other \obeylines}
+{\obeylines \gdef\copyans#1
+ {\def\next{#1}%
+ \ifx\next\empty\let\next=\endgroup %
+ \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}}
+
+\def\listanswers{\immediate\closeout\ans\input answers}
+
+%============================================================================
+% These macros are modified versions of the \exercise and \answer macros
+% on p. 422 of the TeXbook. The modifications are to make them work under
+% LaTeX.
+% Usage:
+% \documentstyle [12pt,twoside,exercise]{report}
+% \begin{document}
+% \chapter{Text}
+% \exercise In what season of the year did George Washington spend the
+% winter in Valley forge?
+% \answer 1776
+%
+% \exercise In what year did George Washington spend the winter there?
+% \answer Winter
+%
+% \chapter{Answers}
+% \listanswers % The answers are inserted here.
+% \end{document}
+% BUG: The blank lines after the \answer macros are *mandatory*. If you leave
+% them out TeX will exhaust the file looking for them.
+% Alan R. Rogers (rogers@anthro.utah.edu), U. of Utah, 10/23/88
diff --git a/macros/latex209/contrib/misc/exercise.tex b/macros/latex209/contrib/misc/exercise.tex
new file mode 100644
index 0000000000..8521d93ea1
--- /dev/null
+++ b/macros/latex209/contrib/misc/exercise.tex
@@ -0,0 +1,54 @@
+% These macros are modified versions of the \exercise and \answer macros
+% on p. 422 of the TeXbook. The modifications are to make them work under
+% LaTeX.
+% Usage:
+% \documentstyle [12pt,twoside]{report}
+% \input exercise
+% \begin{document}
+% \chapter{Text}
+% \exercise In what season of the year did George Washington spend the
+% winter in Valley forge?
+% \answer 1776
+%
+% \exercise In what year did George Washington spend the winter there?
+% \answer Winter
+%
+% \chapter{Answers}
+% \listanswers % The answers are inserted here.
+% \end{document}
+% BUG: The blank lines after the \answer macros are *mandatory*. If you leave
+% them out TeX will exhaust the file looking for them.
+% Alan R. Rogers (rogers@anthro.utah.edu), U. of Utah, 10/23/88
+
+\newcounter{exno}[chapter]
+
+%\newenvironment{exercise}{\begin{list}{\small\llap{$\bullet$\kern.15em}%
+% {\footnotesize EXERCISE \bf\thechapter.\theexno}}{
+% \usecounter{exno}\small
+% \setlength{\labelwidth}{5em} \setlength{\labelsep}{1em}
+% \setlength{\leftmargin}{6em}
+% \setlength{\itemsep}{0em} \setlength{\topsep}{\parsep}}}
+% {\end{list}\normalsize}
+
+\outer\def\exercise{\addtocounter{exno}{1}
+ \par\small\noindent\llap{$\bullet$\kern.15em}% bullet in margin
+ {\footnotesize EXERCISE \bf\thechapter.\theexno}\par\nopagebreak\noindent}
+
+\def\ansno#1.#2:{\par\noindent
+ \hbox to\parindent{\bf\hss#1.#2.\enspace}\ignorespaces}
+\chardef\other=12
+\newwrite\ans
+\immediate\openout\ans=answers
+\outer\def\answer{\normalsize\par
+ \immediate\write\ans{}
+ \immediate\write\ans{\string\ansno\thechapter.\theexno:}
+ \copytoblankline}
+\def\copytoblankline{\begingroup\setupcopy\copyans}
+\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials
+ \catcode`\|=\other \obeylines}
+{\obeylines \gdef\copyans#1
+ {\def\next{#1}%
+ \ifx\next\empty\let\next=\endgroup %
+ \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}}
+
+\def\listanswers{\immediate\closeout\ans\input answers}
diff --git a/macros/latex209/contrib/misc/extradefs.tex b/macros/latex209/contrib/misc/extradefs.tex
new file mode 100644
index 0000000000..c7ac99e5ad
--- /dev/null
+++ b/macros/latex209/contrib/misc/extradefs.tex
@@ -0,0 +1,58 @@
+%
+% Supplied by Kent McPherson
+%
+\def\trademark{{\ooalign
+ {\tiny \hfill \raise .085ex\hbox{R}\hfill \crcr
+ \scriptsize \mathhexbox20D}}}
+%
+% Supplied by Kent McPherson
+%
+\newlength{\ulength}
+\newcommand{\uline}[2]{
+ \settowidth{\ulength}{#2}
+ \parbox{\ulength}{
+ {#2} \\ [-.75\baselineskip]
+ \rule{\ulength}{#1}}
+}
+%
+% Supplied by Kent McPherson
+%
+\newcount\@outlinedepth \@outlinedepth = 0
+
+\@definecounter{outlinei}
+\@definecounter{outlineii}
+\@definecounter{outlineiii}
+\@definecounter{outlineiv}
+
+\def\outline{\ifnum \@outlinedepth >3 \@toodeep\else
+ \advance\@outlinedepth \@ne
+ \edef\@outlinectr{outline\romannumeral\the\@outlinedepth}\list
+ {\csname label\@outlinectr\endcsname}{\usecounter
+ {\@outlinectr}\def\makelabel##1{\hss\llap{##1}}}\fi}
+
+\let\endoutline =\endlist
+
+\def\labeloutlinei{\Roman{outlinei}.}
+\def\theoutlinei{\Roman{outlinei}}
+\def\labeloutlineii{\Alph{outlineii}.}
+\def\theoutlineii{\Alph{outlineii}}
+\def\p@outlineii{\theoutlinei}
+\def\labeloutlineiii{\arabic{outlineiii}.}
+\def\theoutlineiii{\arabic{outlineiii}}
+\def\p@outlineiii{\theoutlinei(\theoutlineii)}
+\def\labeloutlineiv{\alph{outlineiv}.}
+\def\theoutlineiv{\alph{outlineiv}}
+\def\p@outlineiv{\p@outlineiii\theoutlineiii}
+%
+% Supplied by Kent McPherson
+%
+%
+% Produce a list of MIL documents
+\def\documentlabel#1{\def\\{\egroup\hbox\bgroup}
+ \raisebox{0pt}[2.5ex][0ex]{\vtop{\hbox\bgroup#1\egroup}} \hfill}
+\def\documentlist{\list{}{\labelwidth=10em
+ \advance\labelwidth\labelsep
+ \leftmargin\labelwidth \advance\leftmargin\labelsep
+ \advance\leftmargin 2\parindent
+ \let\makelabel\documentlabel \raggedright}}
+\let\enddocumentlist=\endlist
diff --git a/macros/latex209/contrib/misc/fancychapters.sty b/macros/latex209/contrib/misc/fancychapters.sty
new file mode 100644
index 0000000000..d9ae87b12e
--- /dev/null
+++ b/macros/latex209/contrib/misc/fancychapters.sty
@@ -0,0 +1,107 @@
+% $Id: fancychapters.sty,v 1.1 1992/07/10 07:40:27 joke Exp $
+%
+% A macro for fancy chapter headings for use with LaTeX 2.09
+%
+% Copyright (C) 1992 by Joerg Heitkoetter
+% Systems Analysis Group, University of Dortmund, Germany.
+% (joke@ls11.informatik.uni-dortmund.de).
+%
+% This is modified code from bk11.sty, I received from TeXpert
+% Gerd Neugebauer 8/7/92 (gerd@intellektik.informatik.th-darmstadt.de).
+% Thank's for the q&d hack, Gerd!
+%
+% Corrections of typos, \newdimensions, and everything, to handle
+% things relatively by joke.
+%
+% Enjoy!
+
+
+% DESCRIPTION
+%
+% This style option provides the macro \Chapter. It requires the style
+% book (report works as well :-)
+%
+% The first argument is typeset in a \parbox on the right top of the
+% chapter page, using an \emphasized font. The second argument is the
+% chapter's title.
+% An optional argument between, corresponds to the optional argument of
+% the \chapter command. Thus
+%
+% \Chapter{<quote>}{<title>} or \Chapter{<quote>}[<abbrev>]{<title>}
+%
+% are both valid constructs.
+%
+% Two new dimension counters, \fancychapwidth and \fancychapsep handle
+% the width of the quote's \parbox, and it's distance to the begin
+% of the `Chapter X' mark, respectively. See the EXAMPLE below to `grok'
+% how things work. Please note that the real distance between quote
+% and `Chapter X' mark is actually \fancychapsep + 50pt, as the latter
+% is always inserted, before a chapter starts. You could simply use
+% negative values (e.g. \fancychapsep=-50pt) to get around this, but
+% you shouldn't do, unless you're a fan of \uglychapters ;-)
+
+
+% Some new dimensions...
+\newdimen\fancychapwidth
+\newdimen\fancychapsep
+
+% ... and their defaults
+\fancychapwidth=0.5\textwidth
+\fancychapsep=10pt
+
+% the \Chapter ...
+\long\def\Chapter#1{\cleardoublepage
+ \thispagestyle{plain}%
+ \global\@topnum\z@
+
+ \@afterindentfalse
+ \hfill\parbox{\fancychapwidth}{\em #1} % put quotation in a box
+ % flushed right
+ \vspace{\fancychapsep}\par % add distance to chapter head
+ \secdef\@chapter\@schapter}
+
+% That's all folks.
+\endinput
+
+
+% EXAMPLE
+%
+% (1) uncomment the following %%% marked lines
+% (2) save them to a file
+% (3) LaTeX it!
+
+%%%\documentstyle[fancychapters]{report}
+%%%
+%%%\begin{document}
+%%%\Chapter{
+%%%{\scriptsize (Sung to the tune of ``The Impossible Dream'' from MAN OF
+LA MANCHA)}\\[5pt]
+%%% To code the impossible code, \\
+%%% To bring up a virgin machine, \\
+%%% To pop out of endless recursion, \\
+%%% To grok what appears on the screen, \\[5pt]
+%%% To right the unrightable bug, \\
+%%% To endlessly twiddle and thrash, \\
+%%% To mount the unmountable magtape, \\
+%%% To stop the unstoppable crash!
+%%%
+%%% \begin{center}
+%%% {\tt /usr/games/fortune}
+%%% \end{center}
+%%% }{Building Operating Systems}
+%%%
+%%%\fancychapwidth=2in
+%%%\fancychapsep=0pt
+%%%\Chapter{``Nobody feels as helpless as the owner of a sick goldfish.''
+%%%}{Building More Operating Systems}
+%%%
+%%%\fancychapwidth=0.75\textwidth
+%%%\fancychapsep=10pt
+%%%\Chapter{
+%%%``Parents of young organic life forms should be warned, that
+%%%towels can be harmful, if swallowed in large quantities.''
+%%%\\[5pt]
+%%%\rightline{{\rm --- Douglas Adams}}
+%%%}[No More]{Building No More Operating Systems}
+%%%
+%%%\end{document}
diff --git a/macros/latex209/contrib/misc/farticle.sty b/macros/latex209/contrib/misc/farticle.sty
new file mode 100644
index 0000000000..c8581d3b2e
--- /dev/null
+++ b/macros/latex209/contrib/misc/farticle.sty
@@ -0,0 +1,244 @@
+% This is FARTICLE.STY in text format, as of May 15, 1988.
+% article.sty 16-Mar-88
+% B.L. 06/12/88
+
+\typeout{Document Style 'farticle' <16 Mar 88>.}
+\typeout{Francisation de 'farticle'}
+
+
+\def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}}
+\def\ds@twoside{\@twosidetrue \@mparswitchtrue} \def\ds@draft{\overfullrule
+5pt}
+\@options
+ \input sty(art1\@ptsize)\relax
+
+
+\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}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+\let\enddescription\endlist
+
+
+\def\theequation{\arabic{equation}}
+
+
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt
+\tabbingsep \labelsep
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt
+
+ \newcounter{part}
+ \newcounter {section}
+ \newcounter{subsection}[section]
+ \newcounter{subsubsection}[subsection]
+ \newcounter{paragraph}[subsubsection]
+ \newcounter{subparagraph}[paragraph]
+
+\def\thepart{\Roman{part}} \def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\def\tableofcontents{\section*{Table des mati\`eres}
+\markboth{TABLE DES MATI\`ERES}{TABLE DES MATI\`ERES}
+ \@starttoc{toc}}
+\def\l@part#1#2{\addpenalty{\@secpenalty}
+ \addvspace{2.25em plus 1pt} \begingroup
+ \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip
+-\@pnumwidth
+ {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+ \nobreak \endgroup}
+\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
+\@tempdima 1.5em \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip #1\nobreak\hfil
+\nobreak\hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+
+\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{\section*{Liste des Figures\@mkboth
+ {LISTE DES FIGURES}{LISTE DES FIGURES}}\@starttoc{lof}}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\listoftables{\section*{Liste des Tableaux\@mkboth
+ {LISTE DES TABLEAUX}{LISTE DES TABLEAUX}}\@starttoc{lot}}
+\let\l@table\l@figure
+
+
+\def\thebibliography#1{\section*{Bibliographie\@mkboth
+ {BIBLIOGRAPHIE}{BIBLIOGRAPHIE}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+\newcounter{theindex}
+
+\newif\if@restonecol
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{Index}]
+ \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\footnoterule{\kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@}
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ \hbox to 1.8em{\hss$|{\@thefnmark}$}#1}
+
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim \wd\@tempboxa >\hsize #1: #2\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Figure \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+\newcounter{table}
+\def\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Tableau \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox
+ to 0pt{$|{\@thefnmark}$\hss}}
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else \newpage
+ \global\@topnum\z@ \@maketitle \fi\thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+\def\@maketitle{\newpage
+ \null
+ \vskip 2em \begin{center}
+ {\LARGE \@title \par} \vskip 1.5em {\large \lineskip .5em
+\begin{tabular}[t]{c}\@author
+ \end{tabular}\par}
+ \vskip 1em {\large \@date} \end{center}
+ \par
+ \vskip 1.5em}
+\def\abstract{\if@twocolumn
+\section*{Abstract}
+\else \small
+\begin{center}
+{\bf Abstract\vspace{-.5em}\vspace{0pt}}
+\end{center}
+\quotation
+\fi}
+\def\endabstract{\if@twocolumn\else\endquotation\fi}
+
+\mark{{}{}}
+
+\if@twoside \def\ps@headings{\let\@mkboth\markboth
+\def\@oddfoot{}\def\@evenfoot{}\def\@evenhead{\rm \thepage\hfil \sl
+\leftmark}\def\@oddhead{\hbox{}\sl \rightmark \hfil
+\rm\thepage}\def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth
+>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}\def\subsectionmark##1{\markright
+{\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}
+\else \def\ps@headings{\let\@mkboth\markboth
+\def\@oddfoot{}\def\@evenfoot{}\def\@oddhead{\hbox {}\sl \rightmark \hfil
+\rm\thepage}\def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth
+>\z@
+ \thesection\hskip 1em\relax \fi ##1}}}}
+\fi
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+\def\@oddhead{\hbox{}\sl\rightmark \hfil
+\rm\thepage}\def\@oddfoot{}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox
+{}}\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+
+\def\today{\number\day\space\ifcase\month\or
+ Janvier\or F\'evrier\or Mars\or Avril\or Mai\or Juin\or
+ Juillet\or Ao\|ut\or Septembre\or Octobre\or Novembre\or D\'ecembre\fi
+ \space \number\year}
+
+\ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi
diff --git a/macros/latex209/contrib/misc/fixup.sty b/macros/latex209/contrib/misc/fixup.sty
new file mode 100644
index 0000000000..0c9ed889bb
--- /dev/null
+++ b/macros/latex209/contrib/misc/fixup.sty
@@ -0,0 +1,169 @@
+% FIXUP DOCUMENT STYLE OPTION
+% for LaTeX Version 2.09 <25 Jan 1988>
+% by John Hobby (hobby@research.att.com)
+%
+% If the fleqn style option is also used, it should precede this one.
+
+
+\hyphenation{bi-dif-fer-en-tial buzz-word data-path equi-vari-ant gauss-ian
+ hexa-dec-i-mal le-gendre mass-a-chu-setts non-smooth
+ qua-si-smooth stand-alone time-stamp wave-guide white-space}
+
+
+
+
+% Fix Plain's \bigl, \Bigl, etc. macros so that they try to scale with
+% LaTeX size changes. This uses the fact that \@setsize sets \ht\strutbox
+% to be 70% of the normal unstretched baselineskip.
+
+\def\big#1{{\hbox{$\left#1\vcenter to1.428\ht\strutbox{}\right.\n@space$}}}
+\def\Big#1{{\hbox{$\left#1\vcenter to2.142\ht\strutbox{}\right.\n@space$}}}
+\def\bigg#1{{\hbox{$\left#1\vcenter to2.857\ht\strutbox{}\right.\n@space$}}}
+\def\Bigg#1{{\hbox{$\left#1\vcenter to3.571\ht\strutbox{}\right.\n@space$}}}
+
+
+
+
+
+% Fix \sbox and \mbox so that they do not take the box contents as a parameter.
+% This makes environments that depend on catcode changes work inside
+
+\def\sbox#1{\setbox#1\hbox}
+\def\mbox{\leavevmode\hbox}
+
+
+
+
+
+
+
+
+% Apply \addpenalty's trick for not confusing \addvspace so that the \write
+% from \addtocontents or \addcontentsline will not mess up vertical spacing
+
+\def\addvstuff#1{%
+ \ifvmode\ifdim\lastskip=\z@ #1%
+ \else \@tempskipb\lastskip
+ \vskip -\lastskip #1\vskip\@tempskipb
+ \fi
+ \else #1\fi}
+
+\def\addpenalty#1{\ifvmode
+ \if@minipage\else\if@nobreak\else
+ \addvstuff{\penalty#1}%
+ \fi\fi
+ \else\@noitemerr\fi}
+
+\long\def\addtocontents#1#2{%
+ \if@filesw \begingroup
+ \let\label\@gobble \let\index\@gobble
+ \def\protect##1{\string\string\string##1\string\space\space}%
+ \edef\@tempa{\write \@auxout {\string\@writefile{#1}{#2}}}%
+ \addvstuff{\@tempa \if@nobreak \ifvmode\nobreak\fi\fi}%
+ \endgroup\fi}
+
+\def\addcontentsline#1#2#3{%
+ \if@filesw \begingroup
+ \let\label\@gobble \let\index\@gobble
+ \def\protect##1{\string\string\string##1\string\space\space}%
+ \@temptokena{\thepage}%
+ \edef\@tempa{\write \@auxout{\string\@writefile{#1}%
+ {\protect\contentsline{#2}{#3}{\the\@temptokena}}}}%
+ \addvstuff{\@tempa \if@nobreak \ifvmode\nobreak\fi\fi}%
+ \endgroup\fi}
+
+
+
+
+% Make floats use the trick from the minipage environment to avoid extraneous
+% space at the top. e.g., "\begin{figure} \begin{center}..."
+
+\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
+ \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
+ \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
+ \@tfor \@tempa :=#2\do
+ {\if\@tempa h\advance\@tempcnta \@ne\fi
+ \if\@tempa t\advance\@tempcnta \tw@\fi
+ \if\@tempa b\advance\@tempcnta 4\relax\fi
+ \if\@tempa p\advance\@tempcnta 8\relax\fi
+ }\global\count\@currbox\@tempcnta}\@fltovf\fi
+ \global\setbox\@currbox\vbox\bgroup
+ \hsize\columnwidth \@parboxrestore
+ \@minipagetrue
+ \everypar{\global\@minipagefalse\everypar{}}}
+
+
+
+
+% We now redefine the eqnarray environment to correct the space around
+% the operator. Since the fleqn document style option also redefines
+% this environment, we carefully check the previous definition before
+% making any changes. Any changes to the definition in LaTeX itself
+% or in the fleqn document style option will cause the `Warning: unable...'
+% message to appear. If this happens it will be necessary to update the
+% definitions of \@tempa and \@tempb below and incorperate the changes into
+% the new definitions of \eqnarray.
+
+
+% This is the current definition of \eqnarray for the fleqn document style
+% option:
+
+\def\@tempa{\stepcounter{equation}\let\@currentlabel=\theequation
+\global\@eqnswtrue
+\global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr
+\abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi
+\belowdisplayskip\abovedisplayskip
+\belowdisplayshortskip\abovedisplayskip
+\abovedisplayshortskip\abovedisplayskip
+$$\halign to
+\linewidth\bgroup\@eqnsel\hskip\@centering$\displaystyle\tabskip\z@
+{##}$&\global\@eqcnt\@ne \hskip 2\arraycolsep \hfil${##}$\hfil
+&\global\@eqcnt\tw@ \hskip 2\arraycolsep $\displaystyle{##}$\hfil
+\tabskip\@centering&\llap{##}\tabskip\z@\cr}
+
+
+% Here is the corresponding defintion from latex.tex:
+
+\def\@tempb{\stepcounter{equation}\let\@currentlabel=\theequation
+\global\@eqnswtrue
+\global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr
+$$\halign to \displaywidth\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&\llap{##}\tabskip\z@\cr}
+
+
+\ifx\eqnarray\@tempa % If the fleqn document style option is in effect
+
+ \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
+ \global\@eqnswtrue
+ \global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr
+ \abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi
+ \belowdisplayskip\abovedisplayskip
+ \belowdisplayshortskip\abovedisplayskip
+ \abovedisplayshortskip\abovedisplayskip
+ $$\halign to \linewidth\bgroup\hfil
+ $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
+ \hfil$\displaystyle{{}##{}}$\hfil
+ &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+
+\else\ifx\eqnarray\@tempb % Else try the default eqnarray environment
+
+ \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
+ \global\@eqnswtrue
+ \global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr
+ $$\halign to \displaywidth\bgroup\hfil
+ $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
+ \hfil$\displaystyle{{}##{}}$\hfil
+ &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+
+\else \typeout{Warning: Unable to fix unknown version of \string\enarray.}
+\fi\fi
+
+\def\@tempa{} % Free up TeX's memory
+\def\@tempb{}
diff --git a/macros/latex209/contrib/misc/fllater.sty b/macros/latex209/contrib/misc/fllater.sty
new file mode 100644
index 0000000000..22cb45944a
--- /dev/null
+++ b/macros/latex209/contrib/misc/fllater.sty
@@ -0,0 +1,55 @@
+\def\filename{fllater}
+
+
+\def\next{\@insertfalse \@textmin \textfraction\@colht
+ \@tempdima\@pageht \advance\@tempdima\@pagedp
+ \ifdim \@textmin >\@tempdima \@tempdima\@textmin \fi
+ \advance\@tempdima\ht\@currbox \advance\@tempdima\@maxsep
+ \ifdim\@colroom >\@tempdima
+ \ifnum\@colnum >\z@
+ \@currtype\count\@currbox \divide\@currtype\@xxxii
+ \multiply\@currtype\@xxxii
+ \@bitor\@currtype\@deferlist
+ \if@test\else
+ \@bitor\@currtype\@botlist
+ \if@test \@addtobot \else
+ \ifodd\count\@currbox
+ \global\advance\@colnum\m@ne
+ \@cons\@midlist\@currbox
+ \vskip\intextsep \box\@currbox
+ \penalty\interlinepenalty \vskip\intextsep
+ \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
+ \outputpenalty\z@
+ \@inserttrue
+ \else \@addtotoporbot
+ \fi\fi\fi\fi\fi
+ \if@insert\else\@cons\@deferlist\@currbox\fi}
+
+\ifx\@addtocurcol\next
+\let\next\relax
+\def\@addtocurcol{\@insertfalse \@textmin \textfraction\@colht
+ \@tempdima\@pageht \advance\@tempdima\@pagedp
+ \ifdim \@textmin >\@tempdima \@tempdima\@textmin \fi
+ \advance\@tempdima\ht\@currbox \advance\@tempdima\@maxsep
+ \ifdim\@colroom >\@tempdima
+ \ifnum\@colnum >\z@
+ \@currtype\count\@currbox \divide\@currtype\@xxxii
+ \multiply\@currtype\@xxxii
+ \@bitor\@currtype\@deferlist
+ \if@test\else
+ \@bitor\@currtype\@botlist
+ \if@test \@addtobot \else
+ \ifodd\count\@currbox
+ \global\advance\@colnum\m@ne
+ \@cons\@midlist\@currbox
+ \vskip\intextsep \box\@currbox
+ \penalty\interlinepenalty \vskip\intextsep
+ \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
+ \outputpenalty\z@
+ \@inserttrue
+ \else \@addtobot
+ \fi\fi\fi\fi\fi
+ \if@insert\else\@cons\@deferlist\@currbox\fi}
+\else
+\errmessage{Style \filename\space is out of date}
+\fi
diff --git a/macros/latex209/contrib/misc/floatnohead.sty b/macros/latex209/contrib/misc/floatnohead.sty
new file mode 100644
index 0000000000..7c29b5d915
--- /dev/null
+++ b/macros/latex209/contrib/misc/floatnohead.sty
@@ -0,0 +1,13 @@
+% if there are floats around
+% then set pagestyle to be empty
+% Original version posted to comp.text.tex Sebastian Rahtz
+% Modified by Don Hosek so that message is done with \message rather than
+% \typeout--this causes the message to appear when the page is output rather
+% than when it is processed.
+\def\@tryfcolumn #1{\global\@fcolmadefalse \xdef\@trylist{#1}\xdef\@failedlist
+ {}\begingroup \let\@elt\@xtryfc \@trylist \endgroup
+ \if@fcolmade
+ \message{Page with floats and nothing else}
+ \thispagestyle{empty}
+\@vtryfc #1
+\fi}
diff --git a/macros/latex209/contrib/misc/flowchart.sty b/macros/latex209/contrib/misc/flowchart.sty
new file mode 100644
index 0000000000..0df4442fef
--- /dev/null
+++ b/macros/latex209/contrib/misc/flowchart.sty
@@ -0,0 +1,185 @@
+%
+%From: chase@orc.olivetti.com (David Chase)
+%Subject: re: Flow charts in LaTeX
+%Date: Mon, 24 Oct 88 15:34:42 -0700
+%
+%Here is a tool that might be useful; you can use it to get lines
+%which bend (90 degrees) ending in arrows, and you can study it (ha ha)
+%to figure out how it might be extended to do a flow chart.
+%It is included within a program to test demonstrate it. It uses only
+%the LaTeX picture macros for graphics.
+%
+%Note the use of dirty tricks to turn points into dimensionless
+%numbers. There may be a better way, but I couldn't find it. My
+%difficulties with this lead me to believe that either
+%(1) TeX should really provide dimensionless real numbers
+%or
+%(2) Maybe LaTeX should use real lengths instead of dimensionless
+%numbers in the picture environment. I might get tired of always
+%attaching a dimension to things, but it would be LOTS easier to write
+%interesting macros.
+%
+%If anyone can point out to me an easier way to do this, I'd be happy
+%to hear it. People on TeXhax tried to help me a couple of years ago
+%with this, but nothing seemed to work.
+%
+%---------------- BEGINNING OF MACROS ----------------
+% First, a dirty trick
+
+{\catcode`p=12 \catcode`t=12 \gdef\bogusmacro#1pt{#1}}
+\let\getfactor=\bogusmacro
+\def\unpt#1{\expandafter\getfactor\the#1}
+
+% A macro to get us out of the iteration.
+
+\def\gobbleemup#1,#2,#3,{}
+
+% TWAI does all the work, and could probably be rewritten
+% to be much prettier.
+
+\def\twai#1,#2,#3,#4,#5,{
+% \typeout{Twisty arrow increment of |#1| |#2| |#3| |#4| |#5|}
+
+% Turn parameters into PT quantities so we can do simple arithmetic.
+ \xco#1pt\relax
+ \yco#2pt\relax
+ \len#4pt\relax
+ \advance\len -\firstshrink\relax
+% We get \taoval dynamically from our caller
+ \def\firstshrink{\taoval pt}\relax
+% Set things up for selection and iteration
+ \let\drawcommand=\line
+ \def\this{#3}
+ \def\xvec{0}
+ \def\yvec{0}
+ \let\next=\twai
+% Figure out which way we're going now
+ \if\this\uu
+ \addtolength{\yloc}{\len}
+ \def\yvec{1}
+ \corner=0
+ \else
+ \if\this\dd
+ \addtolength{\yloc}{-\len}
+ \def\yvec{-1}
+ \corner=1
+ \else
+ \if\this\ll
+ \addtolength{\xloc}{-\len}
+ \def\xvec{-1}
+ \corner=0
+ \else
+ \if\this\rr
+ \addtolength{\xloc}{\len}
+ \def\xvec{1}
+ \corner=2
+ \else
+ \if\this\ee
+ \relax
+ \else
+ \typeout{Twisty Arrow Increment--arg 2 (\this) not one of {udlre}}
+ \fi\fi\fi\fi\fi
+ \if#5\ee
+% \typeout{Ending vector}
+ \let\drawcommand=\twaiend
+ \advance\len\tarad
+ \fi
+% \typeout{New XL \unpt\xloc\space YL \unpt\yloc}
+% Here we emit the line or ending command
+ \put(\unpt\xco,\unpt\yco){\drawcommand(\xvec,\yvec){\unpt\len}}
+ % Figure out the next line
+ \if#5\uu
+ \advance\yloc \tarad
+ \advance\corner 1
+ \else
+ \if#5\dd
+ \advance\yloc -\tarad
+ \advance\corner 0
+ \else
+ \if#5\ll
+ \advance\xloc -\tarad
+ \advance\corner 2
+ \else
+ \if#5\rr
+ \advance\xloc \tarad
+ \advance\corner 0
+ \else
+ \if#5\ee
+ \let\next=\gobbleemup
+ \corner=4
+ \else
+ typeout{Twisty Arrow Increment--arg 5 (#5) not one of {udlre}}
+ \fi\fi\fi\fi\fi
+% \typeout{Corner center XL \unpt\xloc\space YL \unpt\yloc}
+ \ifcase\corner
+ % case 0 TL
+ \put(\unpt\xloc,\unpt\yloc){\oval(\taoval,\taoval)[tl]}
+ \or
+ % case 1 BL
+ \put(\unpt\xloc,\unpt\yloc){\oval(\taoval,\taoval)[bl]}
+ \or
+ % case 2 TR
+ \put(\unpt\xloc,\unpt\yloc){\oval(\taoval,\taoval)[tr]}
+ \or
+ % case 3 BR
+ \put(\unpt\xloc,\unpt\yloc){\oval(\taoval,\taoval)[br]}
+ \or
+ % case 4 END
+ \relax
+ \fi
+ \advance\xloc \xvec\tarad
+ \advance\yloc \yvec\tarad
+% \typeout{Final XL \unpt\xloc\space YL \unpt\yloc}
+% iterate or finish, depending upon value of 'next'
+ \next\unpt\xloc,\unpt\yloc,#5,
+ }
+\def\twistyarrowgen(#1,#2,#3,#4)#5{{
+ \def\uu{u}
+ \def\dd{d}
+ \def\ll{l}
+ \def\rr{r}
+ \def\ee{e}
+ \countdef\corner=255
+ \newskip{\xco}\newskip{\yco}\newskip{\len}
+ \newskip{\xloc}\newskip{\yloc}
+ \newskip{\tarad}\setlength{\tarad}{#3pt}
+ \newskip{\dummylen}
+ \let\twaiend=#4
+ \setlength{\dummylen}{\tarad}
+ \advance\dummylen \dummylen
+ \def\taoval{\unpt\dummylen}
+ \setlength{\xloc}{#1pt}\setlength{\yloc}{#2pt}
+ \def\firstshrink{\tarad}\relax
+ \twai #1,#2,#5,e,}}
+%
+\def\twistyarrow(#1,#2){\twistyarrowgen(#1,#2,2,\vector)}
+\def\twistyarrowrad(#1,#2,#3){\twistyarrowgen(#1,#2,#3,\vector)}
+%---------------- END OF MACROS ----------------
+%\documentstyle[flowchart]{article}
+%\begin{document}
+%\unitlength=.1in
+%\begin{center}
+%\begin{picture}(30,30)
+%\twistyarrowrad(0,0,1){%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11,r,11,d,10,l,10,%
+%u,11}
+%\end{picture}
+%\end{center}
+%\end{document}
diff --git a/macros/latex209/contrib/misc/font-nostalgia.sty b/macros/latex209/contrib/misc/font-nostalgia.sty
new file mode 100644
index 0000000000..a94c730073
--- /dev/null
+++ b/macros/latex209/contrib/misc/font-nostalgia.sty
@@ -0,0 +1,51 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Mario Wolczko",
+%%% version = "2",
+%%% date = "21 May 1992",
+%%% time = "20:55:58 BST",
+%%% filename = "font-nostalgia.sty",
+%%% address = "Dept of Computer Science
+%%% The University of Manchester
+%%% Oxford Road
+%%% Manchester M13 9PL
+%%% UK",
+%%% telephone = "+44-61-275-6146",
+%%% FAX = "+44-61-275-6236",
+%%% checksum = "47224 51 137 1962",
+%%% email = "mario@cs.man.ac.uk (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, NFSS, fonts",
+%%% supported = "yes",
+%%% docstring = "For New Font Selection Scheme users --
+%%% provides commands with the pre-NFSS meanings of \rm, \bf, etc.",
+%%% }
+%%% ====================================================================
+
+\@ifundefined{extract@font}
+ {\let\oldrm\rm
+ \let\oldbf\bf
+ \let\oldtt\tt
+ \let\oldsf\sf
+ \let\oldsl\sl
+ \let\oldit\it
+ \let\oldsc\sc}
+ {\newcommand\oldrm{\reset@font}
+ \newcommand\oldtt{\family\ttdefault\series\default@series
+ \shape{n}\selectfont}
+ \newcommand\oldsf{\family\sfdefault\series\default@series
+ \shape{n}\selectfont}
+ \def\@psfmtname{pslplain}
+ \ifx\fmtname\@psfmtname % pslatex
+ \newcommand\oldbf{\family\rmdefault\series{b}%
+ \shape{n}\selectfont}
+ \else
+ \newcommand\oldbf{\family\rmdefault\series{bx}%
+ \shape{n}\selectfont}
+ \fi
+ \newcommand\oldit{\family\rmdefault\series\default@series
+ \shape{it}\selectfont}
+ \newcommand\oldsl{\family\rmdefault\series\default@series
+ \shape{sl}\selectfont}
+ \newcommand\oldsc{\family\rmdefault\series\default@series
+ \shape{sc}\selectfont}}
diff --git a/macros/latex209/contrib/misc/fontstyl.txt b/macros/latex209/contrib/misc/fontstyl.txt
new file mode 100644
index 0000000000..d81591fb3e
--- /dev/null
+++ b/macros/latex209/contrib/misc/fontstyl.txt
@@ -0,0 +1,27 @@
+Die drei Style-Files AMSFONTS.STY, EULER.STY und CYRFONT.STY machen
+Fonts, die standardm"a"sig nur unter AmSTeX verf"ugbar sind, auch
+unter LaTeX zug"anglich.
+
+AMSFONTS.STY bindet den erweiterten mathematischen Zeichensatz in
+LaTeX ein und zwar so, da"s einfach die ganzen in AmSTeX zus"atzlich
+definierten Macros auch in LaTeX verwendbar sind.
+
+EULER.STY macht ganz analog den Fraktur-Zeichensatz verf"ugbar.
+Dieser Zeichensatz wird mit den Macros \frak oder \goth verf"ugbar.
+Zu beachten ist aber, da"s dieser Zeichensatz nur f"ur den
+Mathematikmodus entworfen wurde und im normalen Textmodus praktisch
+nicht verwendbar ist.
+
+CYRFONTS.STY macht den cyrillischen Zeichsatz verf"ugbar, die
+entsprechenden Macros wurden aus der AmSTeX-Erweiterung "ubernommen.
+
+Die fr"uheren Versionen dieser files konnten nicht gleichzeitig
+verwendet werden. Verwendete man n"amlich EULER.STY nach
+AMSFONTS.STY, dann wurde ein Teil der AMSFONTS.STY-Definitionen
+wieder gel"oscht. Die neuen Versionen haben dieses Problem nicht, sie
+k"onnen also auch gemeinsam verwendet werden.
+
+Weiters wurde im file AMSFONTS.STY die Definition f"r das \AmSTeX Logo
+eingef"ugt.
+
+
diff --git a/macros/latex209/contrib/misc/format.sty b/macros/latex209/contrib/misc/format.sty
new file mode 100644
index 0000000000..f63725248e
--- /dev/null
+++ b/macros/latex209/contrib/misc/format.sty
@@ -0,0 +1,28 @@
+% Written by Charles Karney (Karney%PPC.MFENET@NMFECC.ARPA) 1986/04/29.
+% Format is a style option which allows the printing of floating point
+% numbers in fixed format. The argument is the counter to use. The
+% optional first argument if the power of ten to multiply counter by. The
+% default is 0. An integer is produced if power is nonnegative.
+% Otherwise, at least one digit appears before decimal point and exactly
+% -power digits after decimal point. Restriction: abs(power)<=6.
+%
+% Example: label an axis with -1.0, -0.8, -0.6, ... 1.0
+% \newcounter{axis} \setcounter{axis}{-10}
+% \multiput(...)(...){11}{\format[-1]{axis}\addtocounter{axis}{2}}
+
+\def\format{\@ifnextchar[{\format@}{\format@[0]}}
+\def\format@[#1]#2{\@tempcnta#1 \@format{\@nameuse{c@#2}}}
+\def\@format#1{\hbox{$
+ \ifnum #1<0 - #1-#1\fi % Here's where to insert a +
+ \ifnum\@tempcnta<0
+ \@tempcnta-\@tempcnta
+ \@tempcnta\ifcase\@tempcnta\or 10 \or 100 \or 1000 \or
+ 10000 \or 100000 \else 1000000 \fi
+ \@tempcntb#1 \divide\@tempcntb \@tempcnta
+ \number\@tempcntb . \multiply\@tempcntb \@tempcnta
+ \advance\@tempcntb -#1 \advance\@tempcnta -\@tempcntb
+ \expandafter\@gobble\number\@tempcnta
+ \else
+ \number #1
+ \ifcase\@tempcnta\or 0\or 00\or 000\or
+ 0000\or 00000\else 000000\fi\fi$}}
diff --git a/macros/latex209/contrib/misc/frenchponct.sty b/macros/latex209/contrib/misc/frenchponct.sty
new file mode 100644
index 0000000000..e8f5cb1904
--- /dev/null
+++ b/macros/latex209/contrib/misc/frenchponct.sty
@@ -0,0 +1,23 @@
+%%%%%%%%%%%%%%%%%%%%%%%% FRENCHPONCT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\catcode`\@=11
+% Origine brochcod.tex Y.Roy
+% Les caracteres de double ponctuation (!?;:) sont
+% saisis precedes d'un espace.
+\catcode`\;=\active
+\catcode`\:=\active
+\catcode`\!=\active
+\catcode`\?=\active
+\def;{\relax\ifhmode\ifdim\lastskip>\z@
+ \unskip\kern\fontdimen2\font \kern-1.4\fontdimen3\font
+ \fi\fi\string;}
+\def:{\relax\ifhmode\ifdim\lastskip>\z@
+ \unskip\penalty\@M\ \fi\fi\string:}
+\def!{\relax\ifhmode\ifdim\lastskip>\z@
+ \unskip\kern\fontdimen2\font
+ \kern-1.4\fontdimen3\font\fi\fi\string!}
+\def?{\relax\ifhmode\ifdim\lastskip>\z@
+ \unskip\kern\fontdimen2\font
+ \kern-1.4\fontdimen3\font\fi\fi\string?}
+
+\frenchspacing
+\catcode`\@=12
diff --git a/macros/latex209/contrib/misc/frenchquote.sty b/macros/latex209/contrib/misc/frenchquote.sty
new file mode 100644
index 0000000000..92523f022b
--- /dev/null
+++ b/macros/latex209/contrib/misc/frenchquote.sty
@@ -0,0 +1,5 @@
+\def\frlquote{\vbox{\offinterlineskip
+ \hbox{${\scriptscriptstyle\langle\!\langle}$}\kern-0.1pt}\hskip
+ -.6pt plus.3pt minus.2pt~}
+\def\frrquote{~\hskip -.6pt plus.3pt minus.2pt\vbox{\offinterlineskip
+ \hbox{$\scriptscriptstyle\rangle\!\rangle$}\kern-0.1pt}}
diff --git a/macros/latex209/contrib/misc/frontiers.sty b/macros/latex209/contrib/misc/frontiers.sty
new file mode 100644
index 0000000000..bfc8da8a72
--- /dev/null
+++ b/macros/latex209/contrib/misc/frontiers.sty
@@ -0,0 +1,203 @@
+% FRONTIERS DOCUMENT STYLE -- released 27 September 1988
+% for LaTeX version 2.09
+% Copyright (C) 1988 by Max Hailperin, except portions
+% Copyright (C) 1985 by Leslie Lamport, or otherwise indicated.
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+%
+%
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+% FOR ANY PARTICULAR PURPOSE.
+%
+% This is a document style option, for cammera-ready copy for the
+% Frontiers '88 symposium (and other IEEE conferences???), to be
+% used with the article document style and the proc document style option.
+% Note that it is will only work if your device can actually produce 11x14
+% output (e.g. an Imagen 3320 with ledger-size paper), or if you convince
+% your dvi driver to scale the output down (and then do an enlargement of
+% the output to send in) -- this results in lower quality, of course.
+%
+% WARNING: The visual design of this style is rather poor. The conference
+% specifications forced some of this, and as a result it didn't seem
+% worth worrying about the rest. Be forewarned however.
+
+\typeout{Document Style Option 'Frontiers' -- released 27 September 1988}
+
+% ****************************************
+% * KEYWORDS *
+% ****************************************
+
+% \keywords{foo, bar, baz} should go at the end of the abstract
+
+\def\keywords#1{\begin{list}{}{\setlength{\leftmargin}{0pt}\setlength
+{\rightmargin}{0pt}\setlength{\topsep}{\baselineskip}\setlength
+{\partopsep}{0pt}}\item[]Keywords: #1\end{list}}
+
+% ****************************************
+% * FOOTNOTES *
+% ****************************************
+\def\@fnsymbol#1{\ifcase#1\or *\or **\or +\or ++\else\@ctrerr\fi\relax}
+
+\def\thefootnote{\fnsymbol{footnote}}
+
+% ****************************************
+% * SECTIONING *
+% ****************************************
+% Slight modification of the geophysics.sty file,
+% Copyright (c) 1987 by Stephen Gildea
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+%
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+% FOR ANY PARTICULAR PURPOSE.
+
+% Headings:
+% for principal heading use \section
+% for lower rank heading use \subsection
+% for still lower rank heading use \subsubsection
+\setcounter{secnumdepth}{0}
+
+% \section is tricky because we want to both support \section* and have
+% the section title uppercased.
+\def\section{\secdef\@sectionb\@sections}
+\def\@sectionb[#1]#2{\@sections{#2}}
+\def\@sections#1{\@startsection
+ {section}{1}{\z@}{-3.5ex plus -1ex minus -.2ex}{2.3ex plus .2ex}{\Large
+\bf}{\uppercase{#1}}}
+
+% the below is modeled on the above, plus the paragraph def from art10.doc
+\def\subsubsection{\secdef\@subsubsectionb\@subsubsections}
+\def\@subsubsectionb[#1]#2{\@subsubsections{#2}}
+\def\@subsubsections#1{\@startsection
+ {subsubsection}{3}{\z@}{3.25ex plus 1ex minus .2ex}{-1sp}{\normalsize
+ \bf}{#1---}}
+
+% the below is less closely modeled on the geophysical stuff, plus art10.doc
+\def\subsection{\secdef\@subsectionb\@subsections}
+\def\@subsectionb[#1]#2{\@subsections{#2}}
+\def\@subsections#1{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus
+ -.2ex}{1.5ex plus .2ex}{\large\bf}{#1}}
+
+% in case people nest more deeply than allowed --- perhaps should be error
+\def\paragraph{\subsubsection}
+\def\subparagraph{\subsubsection}
+
+
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+%
+% All margin dimensions measured from a point one inch from top and side
+% of page. Lamport claims that for some unspecified device(s) dimensions
+% shrink by about 2 percent.
+
+% SIDE MARGINS:
+ \oddsidemargin 0pt % Note that \oddsidemargin = \evensidemargin
+ \evensidemargin 0pt
+
+% VERTICAL SPACING:
+ % Top of page:
+\topmargin -48pt % Nominal distance from top of page to top of
+ % box containing running head.
+\headheight 12pt % Height of box containing running head.
+\headsep 36pt % Space between running head and text.
+% \topskip = 10pt % '\baselineskip' for first line of page.
+ % Bottom of page:
+\footheight 12pt % Height of box containing running foot.
+\footskip 150pt % Distance from baseline of box containing foot
+ % to baseline of last line of text.
+
+
+% DIMENSION OF TEXT:
+
+\textheight 11.55in % Height of text (including footnotes and figures,
+ % excluding running head and foot).
+\textwidth 9in % Width of text line.
+ % For two-column mode:
+\columnsep 1cm % Space between columns
+\columnseprule 0pt % Width of rule between columns.
+
+
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+% The page number is printed in the top center, in "n of m" form.
+
+
+\def\@oddhead{\rm\hfil \thepage\ of \pageref{@last-page} \hfil}
+\def\@evenhead{\@oddhead}
+\def\@oddfoot{}\def\@evenfoot{\@oddfoot}
+
+% This is from latex.tex, except for-vvvvvvvvvvvvvvvvvv
+\def\enddocument{\@checkend{document}\label{@last-page}\clearpage\begingroup
+\if@filesw \immediate\closeout\@mainaux
+\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
+\def\bibcite{\@testdef b}\@tempswafalse \makeatletter\input \jobname.aux
+\if@tempswa \@warning{Label(s) may have changed. Rerun to get
+cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
+
+% ****************************************
+% * TITLE *
+% ****************************************
+%
+% This @maketitle is from proc.doc, except for the uppercasing
+\def\@maketitle{\vbox to 2.25in{\hsize\textwidth
+ \linewidth\hsize \vfil \centering
+ {\LARGE \uppercase\expandafter{\@title} \par} % TITLE set in \LARGE size.
+ \vskip 2em % Vertical space after title.
+ {\large \begin{tabular}[t]{c}\@author \end{tabular}\par}
+ \vfil}}
+
+% ****************************************
+% * BIBLIOGRAPHY *
+% ****************************************
+% Some fancy footwork to get Ref. vs. Refs. depending on how many citeations
+\newif\if@multicitesw
+\newif\if@multiciteauxsw
+
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@multiciteswfalse\@multiciteauxswfalse\@for\@citeb:=#2\do
+{\if@multiciteauxsw\@multiciteswtrue\fi\@multiciteauxswtrue}\@cite
+{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{, \penalty\@m}\@ifundefined
+ {b@\@citeb}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+\hbox{\csname b@\@citeb\endcsname}}}{#1}}
+
+\def\@cite#1#2{{(Ref\if@multicitesw s\fi.\ {#1\if@tempswa , #2\fi})}}
+
+% This is the stuff to change the reference list to 1. instead of [1].
+% Except for the relevant minor differences, it is straight from article.doc.
+\def\@biblabel#1{#1.\hfill}
+
+\def\thebibliography#1{\section*{References\@mkboth
+ {REFERENCES}{REFERENCES}}\list
+ {\arabic{enumi}.}{\settowidth\labelwidth{#1.}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+
+% ****************************************
+% * CAPTIONS *
+% ****************************************
+
+% This makes captions use a period rather than a colon. It is a minor
+% change to code from article.doc.
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1. #2}
+ \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
+ #1. #2\par % THEN set as ordinary paragraph.
+ \else % ELSE center.
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
diff --git a/macros/latex209/contrib/misc/ftn.sty b/macros/latex209/contrib/misc/ftn.sty
new file mode 100644
index 0000000000..dde117846c
--- /dev/null
+++ b/macros/latex209/contrib/misc/ftn.sty
@@ -0,0 +1,46 @@
+% ftn.sty - footnotes inside tabular/array environments
+% Kresten Krab Thorup <krab@iesd.auc.dk> 1991-06-25
+
+\def\inner@ftn{%
+ \@ifnextchar[{\in@xftn}{\in@ftn{}}}
+
+\def\in@xftn[#1]#2{%
+ \in@ftn{[#1]}{#2}}
+
+\def\in@ftn#1#2{%
+ \@temptokena={\footnotetext#1{#2}}%
+ \@temptokenb=\expandafter{\ftn@list}%
+ \xdef\ftn@list{\the\@temptokenb\the\@temptokena}%
+ \footnotemark#1}
+
+\def\exec@ftn{%
+ \let\@temptokena=\ftn@list
+ \let\ftn@list=\empty
+ \@temptokena}
+
+\def\ftn#1{%
+ \expandafter\let\csname o@#1\expandafter\endcsname
+ \expandafter=\csname #1\endcsname
+ \expandafter\let\csname o@end#1\expandafter\endcsname
+ \expandafter=\csname end#1\endcsname
+ \expandafter\def\csname #1\endcsname{\bgroup
+ \let\footnote\inner@ftn\csname o@#1\endcsname}
+ \expandafter\def\csname end#1\endcsname{\csname o@end#1\endcsname
+ \exec@ftn\egroup}}
+
+%
+% INITIALIZING
+%
+
+\newtoks\@temptokenb
+\def\ftn@list{}
+
+% add more to this list...
+
+\ftn{tabular}
+\ftn{array}
+\ftn{minipage}
+\ftn{eqnarray}
+
+
+
diff --git a/macros/latex209/contrib/misc/fullpage.sty b/macros/latex209/contrib/misc/fullpage.sty
new file mode 100644
index 0000000000..67824e30ae
--- /dev/null
+++ b/macros/latex209/contrib/misc/fullpage.sty
@@ -0,0 +1,29 @@
+% This is FULLPAGE.STY by H.Partl, Version 2 as of 15 Dec 1988.
+% Document Style Option to fill the paper just like Plain TeX.
+
+\typeout{Style Option FULLPAGE Version 2 as of 15 Dec 1988}
+
+\topmargin 0pt
+\advance \topmargin by -\headheight
+\advance \topmargin by -\headsep
+
+\textheight 8.9in
+
+\oddsidemargin 0pt
+\evensidemargin \oddsidemargin
+\marginparwidth 0.5in
+
+\textwidth 6.5in
+
+
+% For users of A4 paper: The above values are suited for american 8.5x11in
+% paper. If your output driver performs a conversion for A4 paper, keep
+% those values. If your output driver conforms to the TeX standard (1in/1in),
+% then you should add the following commands to center the text on A4 paper:
+
+% \advance\hoffset by -3mm % A4 is narrower.
+% \advance\voffset by 8mm % A4 is taller.
+
+\endinput
+
+
diff --git a/macros/latex209/contrib/misc/gart11.sty b/macros/latex209/contrib/misc/gart11.sty
new file mode 100644
index 0000000000..953657f594
--- /dev/null
+++ b/macros/latex209/contrib/misc/gart11.sty
@@ -0,0 +1,109 @@
+% This is ART11.STY in text format, as of May 5, 1986.
+% art11.sty 23 Sep 85
+\lineskip 1pt \normallineskip 1pt
+\def\baselinestretch{1}
+
+\def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
+\abovedisplayskip 11pt plus3pt minus6pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6.5pt plus3.5pt
+minus3pt}
+\def\small{\@setsize\small{12pt}\xpt\@xpt
+\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt
+\def\@listi{\topsep 6pt plus 2pt minus 2pt\parsep 3pt plus 2pt minus 1pt
+\itemsep \parsep}}
+\def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
+\abovedisplayskip 8pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 4pt plus 2pt minus
+2pt
+\def\@listi{\topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
+\itemsep \parsep}}
+\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
+\normalsize
+
+\if@twoside \oddsidemargin 14pt \evensidemargin 14pt \marginparwidth 0pt
+\else \oddsidemargin 14pt \evensidemargin 14pt
+ \marginparwidth 0pt
+\fi
+\marginparsep 0pt
+ \topmargin -28pt
+\headheight 25pt \headsep 25pt \footheight 12pt \footskip 30pt
+
+\textheight 640pt \textwidth 425pt \columnsep 10pt \columnseprule 0pt
+
+\footnotesep 7.7pt
+\skip\footins 10pt plus 4pt minus 2pt
+\floatsep 12pt plus 2pt minus 2pt \textfloatsep 20pt plus 2pt minus 4pt
+\intextsep 12pt plus 2pt minus 2pt \@maxsep 20pt \dblfloatsep 12pt plus 2pt
+minus 2pt \dbltextfloatsep 20pt plus 2pt minus 4pt \@dblmaxsep 20pt
+\@fptop 0pt plus 1fil \@fpsep 8pt plus 2fil \@fpbot 0pt plus 1fil
+\@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil
+\marginparpush 5pt
+
+\parskip 9pt plus 1pt minus 1pt \parindent 0pt \topsep 0pt
+\partopsep 0pt \itemsep 0pt
+\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301
+\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty
+-\@lowpenalty
+
+
+\def\part{\par \addvspace{4ex} \@afterindentfalse \secdef\@part\@spart}
+\def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne \refstepcounter{part}
+\addcontentsline{toc}{part}{\thepart \hspace{1em}#1}\else
+\addcontentsline{toc}{part}{#1}\fi { \parindent 0pt \raggedright
+ \ifnum \c@secnumdepth >\m@ne \Large \bf Teil \thepart \par\nobreak \fi \huge
+\bf #2\markboth{}{}\par } \nobreak \vskip 3ex \@afterheading }
+\def\@spart#1{{\parindent 0pt \raggedright
+ \huge \bf
+ #1\par} \nobreak \vskip 3ex \@afterheading }
+\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus
+ -.2ex}{2.3ex plus .2ex}{\Large\bf}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus
+ -.2ex}{1.5ex plus .2ex}{\large\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
+ -1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\bf}}
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}}
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus
+ .2ex}{-1em}{\normalsize\bf}}
+
+
+\setcounter{secnumdepth}{3}
+
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\thesection{\Alph{section}}}
+
+
+\leftmargini 2.5em
+\leftmarginii 2.2em \leftmarginiii 1.87em \leftmarginiv 1.7em \leftmarginv 1em
+\leftmarginvi 1em
+\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+\labelsep .5em
+\parsep 4.5pt plus 2pt minus 1pt
+\def\@listi{\leftmargin\leftmargini}
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 4.5pt plus 2pt minus 1pt
+ \parsep 2pt plus 1pt minus 1pt
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 2pt plus 1pt minus 1pt
+ \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
+ \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}
diff --git a/macros/latex209/contrib/misc/garticle.sty b/macros/latex209/contrib/misc/garticle.sty
new file mode 100644
index 0000000000..ac03cc3f50
--- /dev/null
+++ b/macros/latex209/contrib/misc/garticle.sty
@@ -0,0 +1,233 @@
+% This is GARTICLE.STY in text format, as of June 8, 1987 (PA, TU Wien)
+% garticle.sty 5 Sep 8
+\typeout{Document Style `garticle'. Version vom 8. Juni 1987}
+
+\def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}}
+\def\ds@twoside{\@twosidetrue \@mparswitchtrue} \def\ds@draft{\overfullrule
+5pt}
+\@options
+\input gart1\@ptsize.sty\relax
+
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+\let\enddescription\endlist
+
+
+\def\theequation{\arabic{equation}}
+
+
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt
+\tabbingsep \labelsep
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt
+
+\newcounter{part}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+
+\def\thepart{\Roman{part}} \def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\def\tableofcontents{\section*{Inhalt\markboth{INHALT}{INHALT}}
+ \@starttoc{toc}}
+\def\l@part#1#2{\addpenalty{\@secpenalty}
+ \addvspace{2.25em plus 1pt} \begingroup
+ \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip
+-\@pnumwidth
+ {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+ \nobreak \endgroup}
+\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
+\@tempdima 1.5em \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+\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{\section*{Abbildungsverzeichnis\markboth
+ {ABBILDUNGSVERZEICHNIS}{ABBILDUNGSVERZEICHNIS}}\@starttoc{lof}}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\listoftables{\section*{Tabellenverzeichnis\markboth
+ {TABELLENVERZEICHNIS}{TABELLENVERZEICHNIS}}\@starttoc{lot}}
+\let\l@table\l@figure
+
+
+\def\thebibliography#1{\section*{Literatur\markboth
+ {LITERATUR}{LITERATUR}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+
+\newif\if@restonecol
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{Index}]
+ \markboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\footnoterule{\kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@}
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
+
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Abbildung \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+\newcounter{table}
+\def\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Tabelle \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox
+ to 0pt{$^{\@thefnmark}$\hss}}
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else \newpage
+ \global\@topnum\z@ \@maketitle \fi\thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+\def\@maketitle{\newpage
+ \null
+ \vskip 2em \begin{center}
+ {\LARGE \@title \par} \vskip 1.5em {\large \lineskip .5em
+\begin{tabular}[t]{c}\@author
+ \end{tabular}\par}
+ \vskip 1em {\large \@date} \end{center}
+ \par
+ \vskip 1.5em}
+\def\abstract{\if@twocolumn
+\section*{Zusammenfassung}
+\else \small
+\begin{center}
+{\bf Zusammenfassung\vspace{-.5em}\vspace{0pt}}
+\end{center}
+\quotation
+\fi}
+\def\endabstract{\if@twocolumn\else\endquotation\fi}
+
+\mark{{}{}}
+
+\if@twoside \def\ps@headings{\def\@oddfoot{}\def\@evenfoot{}\def\@evenhead{\rm
+\thepage\hfil \sl \leftmark}\def\@oddhead{\hbox{}\sl \rightmark \hfil
+\rm\thepage}\def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth
+>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}\def\subsectionmark##1{\markright
+{\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}
+\else \def\ps@headings{\def\@oddfoot{}\def\@evenfoot{}\def\@oddhead{\hbox
+{}\sl \rightmark \hfil \rm\thepage}\def\sectionmark##1{\markright
+{\uppercase{\ifnum \c@secnumdepth >\z@
+ \thesection\hskip 1em\relax \fi ##1}}}}
+\fi
+\def\ps@myheadings{\def\@oddhead{\hbox{}\sl\rightmark \hfil
+\rm\thepage}\def\@oddfoot{}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox
+{}}\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+
+\def\today{\number\day . \ifcase\month\or
+ Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
+ Juli\or August\or September\or Oktober\or November\or Dezember\fi
+ \space\number\year}
+
+\ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi
diff --git a/macros/latex209/contrib/misc/geophysics.sty b/macros/latex209/contrib/misc/geophysics.sty
new file mode 100644
index 0000000000..21c39d887a
--- /dev/null
+++ b/macros/latex209/contrib/misc/geophysics.sty
@@ -0,0 +1,105 @@
+% geophysics.sty
+% For Geophysics, a publication of the Society of Exploration Geophysicists.
+%
+% This style option is designed to work with the article document
+% style of LaTeX version 2.09. Use
+% \documentstyle[geophysics]{article}
+%
+% The rules here are from "Instructions to authors" Geophysics January 1986.
+
+% 15 Jan 87
+
+% Copyright (c) 1987 by Stephen Gildea
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+%
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+% FOR ANY PARTICULAR PURPOSE.
+
+% If you make any improvements, I'd like to hear about them.
+
+% Stephen Gildea
+% MIT Earth Resources Lab
+% Cambridge, Mass. 02139
+% mit-erl!gildea
+% gildea@erl.mit.edu
+
+
+\oddsidemargin=.25in
+\topmargin=0in
+\textwidth=6in
+
+% set \textheight to about 8in. Must be multiple of \baselineskip.
+\ifcase \@ptsize
+ % 10 pt (\baselineskip=12pt)
+ \textheight=576pt
+\or % 11 pt (\baselineskip=13.6pt)
+ \textheight=584.8pt
+\or % 12 pt (\baselineskip=15pt)
+ \textheight=585pt
+\fi
+
+%everything is to be double spaced, and 1.5 looks double spaced.
+\def\baselinestretch{1.5}
+
+\parindent=1em
+\parskip=0in
+
+\def\fnum@figure{{\sc Fig.}\ \thefigure}
+
+% Use period instead of colon
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1.\ #2}
+ \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+\def\thebibliography#1{\section*{References\markboth
+ {REFERENCES}{REFERENCES}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}\@bibsetup}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
+
+% Don't put the citation in an hbox.
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{\@citesep}\@ifundefined
+ {b@\@citeb}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}
+
+% undent first line of reference by using negative \itemindent.
+\def\@bibsetup{\itemindent=-\leftmargin}
+
+% Use a semicolon instead of a comma between multiple citations.
+\def\@citesep{; }
+
+% round parens instead of square brackets
+\def\@cite#1#2{({#1\if@tempswa , #2\fi})}
+
+% Labels should not be printed in References
+\def\@biblabel#1{\hfill}
+
+% Headings:
+% for principal heading use \section
+% for lower rank heading use \subsection
+% for still lower rank heading use \subsubsection
+\setcounter{secnumdepth}{0}
+
+% \section is tricky because we want to both support \section* and have
+% the section title uppercased.
+\def\section{\secdef\@sectionb\@sections}
+\def\@sectionb[#1]#2{\@sections{#2}}
+\def\@sections#1{\@startsection
+ {section}{1}{\z@}{14pt}{14pt}{\centering\bf}{\uppercase{#1}}}
+\def\subsection{\@startsection {subsection}{2}{\z@}{14pt}{14pt}{\bf}}
+\def\subsubsection#1{\par\addvspace{14pt}{\bf #1.---\/}\ignorespaces}
+
+\def\acknowledgments{\section{Acknowledgments}}
diff --git a/macros/latex209/contrib/misc/hackalloc.sty b/macros/latex209/contrib/misc/hackalloc.sty
new file mode 100644
index 0000000000..9c26b42d64
--- /dev/null
+++ b/macros/latex209/contrib/misc/hackalloc.sty
@@ -0,0 +1,17 @@
+% -*-LaTeX-*-
+% hackalloc.sty: make allocation local for LaTeX.
+% This redefines the allocation primitive so _all_ allocation becomes
+% block-local after this is loaded; no idea what the side-effects of this
+% may be. If it breaks, change \alloc@ to \localloc@, and either redefine
+% just what you need to use \alloc@, or define \locnew* for local
+% allocation, as in the commented lines.
+% NOTE: lying again... this doesn't work for inserts which are still
+% global.
+
+%\def\locnewdimen{\localloc@1\dimen\dimendef\insc@unt}
+%\def\localloc@#1#2#3#4#5{\advance\count1#1 by 1
+\def\alloc@#1#2#3#4#5{\advance\count1#1 by 1
+ \ch@ck#1#4#2% Check room
+ \allocationnumber=\count1#1
+ #3#5=\allocationnumber
+ \wlog{Locally \string#5=\string#2\the\allocationnumber}}
diff --git a/macros/latex209/contrib/misc/hackarray.sty b/macros/latex209/contrib/misc/hackarray.sty
new file mode 100644
index 0000000000..9dad530466
--- /dev/null
+++ b/macros/latex209/contrib/misc/hackarray.sty
@@ -0,0 +1,64 @@
+%From: bjnw@castle.ed.ac.uk (Brian Wylie)
+%Subject: \bbegin{eqnarray}{rllccl}
+%Keywords: equation+array != eqnarray
+
+%I've been looking for a successor to the LaTeX eqnarray environment
+%which allowed more control over the format and number of "columns", as
+%one might naturally expect to be specified by
+
+% \begin{eqnarray}{rlc|cl}
+% right & left & centre & vline & centre & left \label{eqn2a} \\
+% right & left & centre & vline & centre & left \label{eqn2b}
+% \end{eqnarray}
+
+%Having scoured Clarkson, etc, and failing to come find anything hopeful
+%I've finally plucked up the courage to have a go at it and see what I
+%could come up with (I don't really know any TeX but it tends to frighten
+%me when I look through latex.tex :-).
+
+%I've been pfaffing with it for a bit and haven't really managed to get
+%it completely together. I've included a copy of my attempts for your
+%perusal, and hope that you don't die laughing at the horrible nastiness
+%of this total abortion.
+
+%=========================>8 hackarray.sty 8<============================
+% hackarray.sty
+%
+% Bastard offspring of the eqnarray and tabular environments
+%
+% (Only tested with fleqn.sty, probably won't work with anything else)
+
+\newlength{\tmp}
+\setlength{\tmp}{\textwidth}
+\addtolength{\tmp}{-\mathindent}
+
+\newcommand{\num}{\stepcounter{equation}\makeatletter
+\let\@currentlabel=\theequation{\rm (\theequation)}}
+
+\newenvironment{hackarray}[1]{\begin{displaymath}%
+\begin{tabular*}{\tmp}{#1@{\extracolsep{\fill}}l@{\protect\num}}}%
+{\end{tabular*}\end{displaymath}}
+
+% Use like a tabular environment BUT include an extra column of &'s at end
+% (which aren't specified in the column format) or put a label there.
+% Also remember that all text is formatted in text mode NOT math mode !
+% e.g.
+% \begin{hackarray}{rlc|cl}
+% right & left & centre & vline & centre & left & \label{} \\
+% right & left & centre & vline & centre & left &
+% \end{hackarray}
+\endinput
+=========================>8 hackarray.sty 8<============================
+
+I realise that as a "eqnarray" substitute it's a bit lame to have each
+array element formatted in text mode (rather than math mode), however,
+for my immediate needs this wasn't a serious problem (most of it wasn't
+maths anyway) while there were other more worrying problems (like the
+need for the trailing null column).
+
+As you see, it has a few problems. These may be fixable, but I think
+I've done as much as I can. Any suggestions greatly appreciated,
+including any pointers to code which does things properly.
+
+ Slainte, "Since parallel programming tools exist,
+ Brian. MIMD machines are easy to use". -- Meiko 04/90
diff --git a/macros/latex209/contrib/misc/hangcaption.sty b/macros/latex209/contrib/misc/hangcaption.sty
new file mode 100644
index 0000000000..6a7e3fb5b6
--- /dev/null
+++ b/macros/latex209/contrib/misc/hangcaption.sty
@@ -0,0 +1,113 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% filename = "hangcaption.sty",
+%%% version = "2.00",
+%%% date = "27 August 1992",
+%%% time = "22:23:46 EDT",
+%%% author = "David M. Jones",
+%%% address = "MIT Laboratory for Computer Science
+%%% Room NE43-316
+%%% 545 Technology Square
+%%% Cambridge, MA 02139
+%%% USA",
+%%% telephone = "(617) 253-5936",
+%%% FAX = "(617) 253-3480",
+%%% checksum = "57880 113 520 5319",
+%%% email = "dmjones@theory.lcs.mit.edu",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, caption",
+%%% supported = "no",
+%%% abstract = "Defines a variant of the caption command to
+%%% produce captions with hanging
+%%% indentation.",
+%%% docstring = "This is the debugged version of a modified
+%%% caption macro, \hangcaption, to produce
+%%% captions with hanging indentation, like
+%%% this:
+%%%
+%%% Figure 1.1: XXXXX XXX XXXX XXXX XXX
+%%% XXX XXX XXX XXX XX XXX
+%%%
+%%% The length variable \captionwidth controls
+%%% how the caption is typeset. If the width
+%%% of the caption is less than \captionwidth,
+%%% the \hangcaption is typeset the same way a
+%%% short \caption would be (usually centered).
+%%% Otherwise, it is set as shown above, with a
+%%% total width equal to \captionwidth.
+%%% \captionwidth is set to \hsize normally,
+%%% but you may want to change it temporarily
+%%% to match the width of a \tabular*
+%%% environment, for example.
+%%%
+%%% \hangcaption is used in the same way as
+%%% \caption. To retain compatibility with
+%%% previous versions of this style, the
+%%% \hangcaption is also available under the
+%%% name \isucaption.
+%%%
+%%% I did not write this file. The original
+%%% author is unknown. However, I did fix a bug,
+%%% namely, I removed a superflous "^^" that was
+%%% causing one of the close braces to be
+%%% interpreted as an equals sign, thus messing
+%%% up the brace balancing. I also tacked an
+%%% "\endinput" on to the end of the file and
+%%% added this header, and incorporated a few
+%%% changes suggested by Harm Bakker, George
+%%% Greenwade, and Rainer Schoepf.
+%%%
+%%% v2.00 (27 Aug 1992): altered \numberline to
+%%% use \the... instead of \fnum@... (fix due to
+%%% Harm Bakker <bakker@cs.rulimburg.nl>).
+%%% Changed \isucaption to \hangcaption at George
+%%% Greenwade's <bed_gdg@SHSU.edu> suggestion.
+%%%
+%%% v1.03 (12 August 1992): minor changes to
+%%% header.
+%%%
+%%% v1.02 (12 August 1992): patches by Rainer
+%%% Schoepf <schoepf@sc.ZIB-Berlin.DE> to (a)
+%%% work around a bug in LaTeX and (b) measure
+%%% the caption correctly by including room for
+%%% the colon and the space.
+%%%
+%%% 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.",
+%%% }
+%%% ====================================================================
+
+\newlength\captionwidth \captionwidth=\hsize
+
+\def\hangcaption{\refstepcounter\@captype\@dblarg{\@hangcaption\@captype}}
+
+\long\def\@hangcaption#1[#2]#3{%
+ \baselineskip 14.5\p@
+ \addcontentsline{\csname ext@#1\endcsname}{#1}%
+ {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
+ \par
+ \begingroup
+ \@parboxrestore
+ \setbox\@tempboxa\hbox{\csname fnum@#1\endcsname: #3}%
+ \ifdim \wd\@tempboxa > \captionwidth
+ \begingroup
+ \setbox\@tempboxa\hbox{\csname fnum@#1\endcsname: }%
+ \advance \captionwidth by -\wd\@tempboxa
+ \@makecaption{\csname fnum@#1\endcsname}%
+ {\ignorespaces{\protect\parbox[t]{\captionwidth}{\leavevmode#3}}}%
+ \endgroup
+ \else
+ \begingroup
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}%
+ \endgroup
+ \fi
+ \par\vspace{1.7ex}%
+ \endgroup}
+
+\let\isucaption\hangcaption
+
+\endinput
diff --git a/macros/latex209/contrib/misc/headerfooter.sty b/macros/latex209/contrib/misc/headerfooter.sty
new file mode 100644
index 0000000000..9ddac2cc6e
--- /dev/null
+++ b/macros/latex209/contrib/misc/headerfooter.sty
@@ -0,0 +1,75 @@
+% headerfooter.sty 13 Apr 89
+
+% Use with LaTeX version 2.09:
+% \documentstyle[headerfooter]{article}
+
+% Copyright (c) 1987 by Stephen Gildea
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+%
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+% FOR ANY PARTICULAR PURPOSE.
+
+% If you make any improvements, I'd like to hear about them.
+
+% Stephen Gildea
+% MIT Earth Resources Lab
+% Cambridge, Mass. 02139
+% mit-erl!gildea
+% gildea@erl.mit.edu
+
+% \pageheader{LEFT}{CENTER}{RIGHT}
+% \pagefooter{LEFT}{CENTER}{RIGHT}
+
+% There is no reason why these commands should not be available
+% to the user. Of course, I did fancy up the interface a bit.
+% By mit-erl!gildea 11 October 1986
+% minor changes 14 Oct 87 gildea
+% added \pageheaderlinetrue feature 9 Dec 88 gildea
+% added \pagefooterlinetrue feature 13 Apr 89 gildea
+
+% All of these commands take three arguments, which are printed at
+% the left, center, and right of each page. All three args must be
+% provided even if some of them are empty. The odd and even
+% variations are only useful if you are using the twoside option.
+
+% Example: \pagefooter{}{\thepage}{}
+
+% Say \pageheaderlinetrue if you want the header underlined.
+% Say \pagefooterlinetrue if you want a rule above the footer.
+
+\newif\ifpageheaderline \pageheaderlinefalse
+\newif\ifpagefooterline \pagefooterlinefalse
+
+\newdimen\pageheaderlineskip \pageheaderlineskip=1.5pt
+
+\newdimen\pagefooterlineskip \pagefooterlineskip=\pageheaderlineskip
+
+\def\@headerline#1#2#3{%
+ \ifpageheaderline
+ \vbox{\hbox to \textwidth{\rlap{#1}\hss{#2}\hss\llap{#3}}%
+ \vskip\pageheaderlineskip \hrule}%
+ \else{\rlap{#1}\hss{#2}\hss\llap{#3}}\fi}
+
+\def\@footerline#1#2#3{%
+ \ifpagefooterline
+ \vbox{\hrule \vskip\pagefooterlineskip
+ \hbox to \textwidth{\rlap{#1}\hss{#2}\hss\llap{#3}}}%
+ \else{\rlap{#1}\hss{#2}\hss\llap{#3}}\fi}
+
+\newcommand\oddpageheader[3]{\def\@oddhead{\@headerline{#1}{#2}{#3}}}
+
+\newcommand\evenpageheader[3]{\def\@evenhead{\@headerline{#1}{#2}{#3}}}
+
+\newcommand\oddpagefooter[3]{\def\@oddfoot{\@footerline{#1}{#2}{#3}}}
+
+\newcommand\evenpagefooter[3]{\def\@evenfoot{\@footerline{#1}{#2}{#3}}}
+
+\newcommand\pageheader[3]{%
+ \oddpageheader{#1}{#2}{#3}\evenpageheader{#1}{#2}{#3}}
+
+\newcommand\pagefooter[3]{%
+ \oddpagefooter{#1}{#2}{#3}\evenpagefooter{#1}{#2}{#3}}
diff --git a/macros/latex209/contrib/misc/hex.sty b/macros/latex209/contrib/misc/hex.sty
new file mode 100644
index 0000000000..123507c4cd
--- /dev/null
+++ b/macros/latex209/contrib/misc/hex.sty
@@ -0,0 +1,31 @@
+%% Save file as: HEX.STY Source: FILESERV@SHSU.BITNET
+%% From: domen@euler.crin.fr (Eric Domenjoud)
+%% Date: 7 Oct 91 14:07:20 GMT
+%% Organization: CRIN, Nancy, France
+
+%% \documentstyle[....,hex,....]{......}
+%%
+%% \hex{ctr} gives then the value of ctr in hexadecimal. If you want lowercase
+%% letters, just change A,B,C,D,E,F to lowercase in the definition below.
+
+%-------------------------------------------------------
+
+\newcount\@decnum
+\newcount\@digit
+\def\@hex#1{{\@decnum=#1
+ \ifnum\@decnum>15
+ \@digit=\@decnum
+ \divide\@decnum 16
+ \@hex\@decnum
+ \multiply\@decnum -16
+ \advance\@decnum\@digit
+ \fi
+ \ifnum\@decnum=10 A\else
+ \ifnum\@decnum=11 B\else
+ \ifnum\@decnum=12 C\else
+ \ifnum\@decnum=13 D\else
+ \ifnum\@decnum=14 E\else
+ \ifnum\@decnum=15 F\else
+ \number\@decnum\fi\fi\fi\fi\fi\fi}}
+
+\def\hex#1{\@hex{\nameuse{c@#1}}}
diff --git a/macros/latex209/contrib/misc/hndout.sty b/macros/latex209/contrib/misc/hndout.sty
new file mode 100644
index 0000000000..fed2d72235
--- /dev/null
+++ b/macros/latex209/contrib/misc/hndout.sty
@@ -0,0 +1,75 @@
+% Plymouth Polytechnic Computing Service - HANDOUT Document style
+% Jon Warbrick January 1988
+
+% Copyright (C) Jon Warbrick and Plymouth Polytechnic 1989
+% Permission is granted to reproduce the document in any way providing
+% that it is distributed for free, except for any reasonable charges for
+% printing, distribution, staff time, etc. Direct commercial
+% exploitation is not permitted. Extracts may be made from this
+% document providing an acknolwledgment of the original source is
+% maintained.
+
+% This option re-defines the \maketitle command to generate a standard
+% Computing Service handout banner. It currently only works for an
+% 11pt article (though I may fix it oneday)
+
+% Just modify the textwidth a bit to center the text on the page
+
+\setlength{\textwidth}{6.5in}
+\setlength{\oddsidemargin}{0in}
+\setlength{\evensidemargin}{0in}
+
+% The title is made up of information supplied by the \title, \author
+% and \date commands, along with an extra command \docnumber. The
+% date defaults to the current month and year.
+
+\def\docnumber#1{\gdef\@docnumber{#1}}
+\gdef\@docnumber{X99.99--999}
+\gdef\@title{There and Back Again}
+\gdef\@author{Bilbo Baggins}
+\def\@date{\ifcase\month\or January\or February\or March\or April\or
+ May\or June\or July\or August\or September\or October\or
+ November\or December\fi\space\number\year}
+
+% Commented maketitle to avoid use of postscript printer Yin Kean.
+% \def\maketitle{
+% \begin{picture}(0,100)(55,-8)
+% \put(0,36){\framebox(214,84){Computing Service Logo}} % dummy logo
+% \put(0,120){\special{include TeX>inputs>hologo.ps}}
+% \put(234,112){\parbox[t]{234pt}{\centering\Large\bf\@title}}
+% \put(234,60){\parbox[t]{234pt}{\centering
+% \@docnumber \\\relax \@date \\[1em] \@author}}
+% \put(0,0){\line(1,0){468}}
+% \end{picture}
+% \let\maketitle\relax
+% \gdef\@author{}\gdef\@title{}\gdef\@docnumber{}\gdef\@date{}
+% }
+
+% Technical documents don't look very good with indented paragraphs,
+% so set parindent to zero, and increse parskip. To do this job properly,
+% the space above and below all of the list making enviroments should be
+% reduced by this ammount as well - again I may do this someday.
+
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{7pt plus 2pt minus 1pt}
+
+% Some extra help with including examples of computer input/output is rather
+% handy. Here is a definition of the alltt enviroment (like verbatim, but
+% still recognises \, { and }) and example (like alltt, but indented)
+
+\def\docspecials{\do\ \do\$\do\&%
+ \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
+
+\def\alltt{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
+\leftskip\@totalleftmargin\rightskip\z@
+\parindent\z@\parfillskip\@flushglue\parskip\z@
+\@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par}
+\obeylines \tt \catcode``=13 \@noligs \let\do\@makeother \docspecials
+ \frenchspacing\@vobeyspaces}
+
+\let\endalltt=\endtrivlist
+
+\newenvironment{example}%
+ {\nopagebreak[3]\begin{quote}\begin{alltt}}%
+ {\end{alltt}\end{quote}}
+
diff --git a/macros/latex209/contrib/misc/hvdashln.sty b/macros/latex209/contrib/misc/hvdashln.sty
new file mode 100644
index 0000000000..33e1e8ba57
--- /dev/null
+++ b/macros/latex209/contrib/misc/hvdashln.sty
@@ -0,0 +1,50 @@
+% hvdashln.sty : h(orizontal and )v(ertical )dash(ed )l(i)n(e).sty
+% Copyright (C) 1993, 1999 Hiroshi Nakashima
+% (Kyoto Univ. / Toyohashi Univ. of Tech.)
+% (nakasima@tutics.tut.ac.jp)
+%
+% This program can be redistributed and/or modified under the terms of the
+% LaTeX Project Public License Distributed from CTAN archives in directory
+% macros/latex/base/lppl.txt; either version 1 of the License, or any later
+% version.
+%
+% \hdashline is a dashed counterpart of \hline and
+% \vdashline is a dashed counterpart of \vline of LaTeX's "array" environment.
+%
+% The following parameters are available to control the shape of dashed lines.
+%
+% \hdashlinewidth : length of each dash segment
+% \hdashlinegap : amout of each gap between dash segments
+%
+% Both parameters have a common default value, 4 pt, and thus the shape of a
+% horizontal dashed line will be the following.
+%
+% 4pt
+% |--- --- --- ---|
+% 4pt
+%
+% NOTE:
+% \vdashline will be broken if an array contains tall rows. This problem
+% is fixed in the advanced style named "arydshln" written by the author,
+% which also has new features such as allowing `:' to specify vertical
+% dashed line in preamble and \cdashline being a counterpart of \cline.
+%
+\newcount\hdl@columns \let\hdl@mkpream\@mkpream
+\def\@mkpream{\hdl@columns\@ne \hdl@mkpream}
+\def\@addamp{\if@firstamp\@firstampfalse \else\edef\@preamble{\@preamble
+&}\advance\hdl@columns\@ne\fi}
+\def\hdashline{\multispan{\hdl@columns}\unskip
+\vrule\@height\arrayrulewidth\@width\hdashlinewidth \hskip.5\hdashlinegap
+\xleaders\hbox{\hskip.5\hdashlinegap
+\vrule\@height\arrayrulewidth\@width\hdashlinewidth
+\hskip.5\hdashlinegap}\hfill \hskip.5\hdashlinegap
+\vrule\@height\arrayrulewidth\@width\hdashlinewidth\cr
+\noalign{\vskip-\arrayrulewidth}} \newdimen\hdashlinewidth
+\hdashlinewidth4pt % \newdimen\hdashlinegap \hdashlinegap4pt %
+\def\vdashline{\hskip\arraycolsep \@tempdima\ht\@arstrutbox
+\advance\@tempdima\dp\@arstrutbox \lower\dp\@arstrutbox\vbox to\@tempdima{
+\hrule\@height.5\hdashlinewidth\@width\arrayrulewidth \vskip.5\hdashlinegap
+\xleaders\vbox{\vskip.5\hdashlinegap
+\hrule\@height\hdashlinewidth\@width\arrayrulewidth
+\vskip.5\hdashlinegap}\vfil \vskip.5\hdashlinegap
+\hrule\@height.5\hdashlinewidth\@width\arrayrulewidth}% \hskip\arraycolsep}
diff --git a/macros/latex209/contrib/misc/icassp.sty b/macros/latex209/contrib/misc/icassp.sty
new file mode 100644
index 0000000000..f7d93513a3
--- /dev/null
+++ b/macros/latex209/contrib/misc/icassp.sty
@@ -0,0 +1,231 @@
+% ICASSP DOCUMENT STYLE -- released 15 December 1988
+% for LaTeX version 2.09
+% Copyright (C) 1988 bt John Vlontzos, except portions
+% Copyright (C) 1988 by Max Hailperin, except portions
+% Copyright (C) 1985 by Leslie Lamport, or otherwise indicated.
+% Modified by John Vlontzos
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+%
+%
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+% FOR ANY PARTICULAR PURPOSE.
+%
+% This is a document style option, for cammera-ready copy for the
+% ICASSP '89 conference (and other IEEE conferences???), to be
+% used with the article document style and the proc document style option.
+%
+% WARNING: The visual design of this style is rather poor. The conference
+% specifications forced some of this, and as a result it didn't seem
+% worth worrying about the rest. Be forewarned however.
+
+\typeout{Document Style Option 'icassp' -- released 13 December 1988}
+% ************************************************************************
+% BRIEF DESCRIPTION
+% ************************************************************************
+% * This is a documentstyle that will print your paper
+% in a form suitable for ICASSP or other IEEE conferences (hopefully)
+% * Just take your {article} file and make a few changes detailed
+% below
+% * All columns set to 11truecm
+% * The first two pages are 10in long and cover the first mat
+% * The title is centered on a wide page so it should be printed in
+% landscape mode
+% * If there is only one author use the standard \author macro from {article}
+% if there are 2 authors, use the new macro \authors described below
+% * A macro for thanks is provided (\thanksu{thanks text})
+% * The second page MUST be identified by placing the macro \thisissecondpage
+% anywhere in the second page
+% * The second and subsequent mats are broken into 4 pages each 6.44in long
+% * Section titles are centered, Capitalized and numbered
+% (if you don't want numbering just set \secnumdepth{0})
+% * Sub(sub)sections are lowercase and boldface, flush left
+% * Some notes are included in the macro definitions to make use more clear
+% ****************************************
+% * KEYWORDS *
+% ****************************************
+
+% \keywords{foo, bar, baz} should go at the end of the abstract
+
+\def\keywords#1{\begin{list}{}{\setlength{\leftmargin}{0pt}\setlength
+{\rightmargin}{0pt}\setlength{\topsep}{\baselineskip}\setlength
+{\partopsep}{0pt}}\item[]Keywords: #1\end{list}}
+
+
+% ****************************************
+% * SECTIONING *
+% ****************************************
+% Slight modification of the geophysics.sty file,
+% Copyright (c) 1987 by Stephen Gildea
+% Slight modification of above by John Vlontzos
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+%
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+% FOR ANY PARTICULAR PURPOSE.
+
+% Headings:
+% for principal heading use \section
+% for lower rank heading use \subsection
+% for still lower rank heading use \subsubsection
+\setcounter{secnumdepth}{3}
+%If you don't want section numbers, set secnumdepth to 0
+% \section is tricky because we want to both support \section* and have
+% the section title uppercased.
+\def\section #1{\begin{center} \sectionc{#1} \end{center}}
+\def\sectionc{\secdef\@sectionb\@sections}
+\def\@sectionb[#1]#2{\@sections{#2}}
+\def\@sections#1{\@startsection
+ {section}{1}{\z@}{-3.5ex plus -1ex minus -.2ex}{2.3ex plus .2ex}{\large
+ \bf}{\uppercase{#1}}}
+
+% the below is modeled on the above, plus the paragraph def from art10.doc
+\def\subsubsection{\secdef\@subsubsectionb\@subsubsections}
+\def\@subsubsectionb[#1]#2{\@subsubsections{#2}}
+\def\@subsubsections#1{\@startsection
+ {subsubsection}{3}{\z@}{3.25ex plus 1ex minus .2ex}{-1sp}{\normalsize
+ \bf}{#1---}}
+
+% the below is less closely modeled on the geophysical stuff, plus art10.doc
+\def\subsection{\secdef\@subsectionb\@subsections}
+\def\@subsectionb[#1]#2{\@subsections{#2}}
+\def\@subsections#1{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus
+ -.2ex}{1.5ex plus .2ex}{\large\bf}{#1}}
+
+% in case people nest more deeply than allowed --- perhaps should be error
+\def\paragraph{\subsubsection}
+\def\subparagraph{\subsubsection}
+
+% *************************************************
+% Abstract definition (centered and capitalized)
+% dont forget to \begin{abstract}...\end{abstract}
+% *************************************************
+
+\def\abstract{\if@twocolumn
+\section*{ABSTRACT}
+\else \small
+\begin{center}
+{\bf ABSTRACT\vspace{-.5em}\vspace{0pt}}
+\end{center}
+\quotation
+\fi}
+\def\endabstract{\if@twocolumn\else\endquotation\fi\vspace{.1truein}}
+% ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+%
+% All margin dimensions measured from a point one inch from top and side
+% of page. Lamport claims that for some unspecified device(s) dimensions
+% shrink by about 2 percent.
+
+% SIDE MARGINS:
+ \oddsidemargin 0pt % Note that \oddsidemargin = \evensidemargin
+ \evensidemargin 0pt
+
+% VERTICAL SPACING:
+ % Top of page:
+\topmargin -48truept % Nominal distance from top of page to top of
+ % box containing running head.
+\headheight 0truept % Height of box containing running head.
+\headsep 10truept % Space between running head and text.
+% \topskip = 10pt % '\baselineskip' for first line of page.
+ % Bottom of page:
+\footheight 0pt % Height of box containing running foot.
+\footskip 300pt % Distance from baseline of box containing foot
+ % to baseline of last line of text.
+
+
+% DIMENSION OF TEXT:
+\textheight 10truein % Height of text (including footnotes and figures,
+ % excluding running head and foot).
+\textwidth 10.5truecm % Width of text line.
+ % For two-column mode:
+\columnsep .92truecm % Space between columns
+\columnseprule 0truept % Width of rule between columns.
+
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+% The page number is printed in the top center, in "n of m" form.
+
+
+\def\@oddhead{\rm\hfil \thepage\ of \pageref{@last-page} \hfil}
+\def\@evenhead{\@oddhead}
+\def\@oddfoot{}\def\@evenfoot{\@oddfoot}
+
+% This is from latex.tex, except for-vvvvvvvvvvvvvvvvvv
+\def\enddocument{\@checkend{document}\label{@last-page}\clearpage\begingroup
+\if@filesw \immediate\closeout\@mainaux
+\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
+\def\bibcite{\@testdef b}\@tempswafalse \makeatletter\input \jobname.aux
+\if@tempswa \@warning{Label(s) may have changed. Rerun to get
+cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
+% ****************************************
+% * TITLE *
+% ****************************************
+%
+% This @maketitle is from proc.doc, except for the uppercasing
+% ****************************************
+%AUTHORS is a macro for more than one authors
+% used as \authors {name 1\\ dept1 \\ univ1}{name 2 \\ dept2 \\ univ2}
+% ***************************************
+\def\authors#1#2{\hbox to \hsize{\@tablebox{#1}\hfil\@tablebox{#2}}}
+
+\def\@tablebox#1{\begin{tabular}[t]{@{}l@{}}#1\end{tabular}}
+% **************************************
+%THANKSU is a macro that replacing \thanks.
+%It permits placing of the \thanks in ANY page
+%useful when the first printed page is smaller than the mat provided.
+% just define your footnote using \thanksu and then place it
+% in the appropriate page by using \putthanks anywhere in the page.
+% ****************************************
+\def\thanksu #1{\textwidth 11truecm \newsavebox{\thankw}\savebox
+ {\thankw}[11cm]{\parbox{10.5truecm}{#1}}}
+\def\putthanks{\footnotetext{\leftskip=-25truept \rightskip=25truept
+ \usebox{\thankw}\par}}
+\def\@maketitle{\textwidth 32.8truecm \vbox to 5.9cm{\hsize\textwidth
+ \linewidth\hsize \vfil \centering {\Large \bf \uppercase
+ \expandafter{\@title} \par} % TITLE set in \Large size.
+ \vskip .4cm % Vertical space after title.
+ {\large \begin{tabular}[t]{c}\@author \end{tabular}\par}
+ \vfil}\newpage\textwidth 11truecm}
+% ****************************************
+% Since the first two pages can be printed in a way that
+% covers the whole mat, mark the second page by
+% placing \thisissecondpage ANYWHERE in the second page
+% ***************************************
+\def\thisissecondpage{\textheight 6.44truein}
+% ****************************************
+% * CAPTIONS *
+% ****************************************
+
+% This makes captions use a period rather than a colon. It is a minor
+% change to code from article.doc.
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1. #2}
+ \ifdim \wd\@tempboxa >\textwidth % IF longer than one line:
+ #1. #2\par % THEN set as ordinary paragraph.
+ \else % ELSE center.
+ \hbox to\textwidth{\hfil\box\@tempboxa\hfil}
+ \fi}
+% *****************************************
+% the following macro produces the references heading in capitals
+% and without a section number
+% *****************************************
+\def\thebibliography#1{\setcounter{secnumdepth}{0}\sectionc*{References\@mkboth
+ {REFERENCES}{REFERENCES}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
diff --git a/macros/latex209/contrib/misc/ieeconf.sty b/macros/latex209/contrib/misc/ieeconf.sty
new file mode 100644
index 0000000000..4e6500e027
--- /dev/null
+++ b/macros/latex209/contrib/misc/ieeconf.sty
@@ -0,0 +1,102 @@
+% --------------------------------------------------------------------------
+% I E E C O N F -- style option for IEE Conference proceedings
+% --------------------------------------------------------------------------
+% Version 1.00--0 Adrian F Clark <alien@uk.ac.essex> 20-Aug-1991
+% --------------------------------------------------------------------------
+
+\typeout{IEE Conference Proceedings style v1.00--0 20-Aug-1991}
+
+
+% Page dimensions.
+
+\@twosidetrue % two-sided document
+\twocolumn % two columns of type
+\sloppy % make those columns justify
+\columnsep 11mm % space between columns
+\columnwidth 80mm % width of each column
+\parindent 15pt % paragraph indent
+\parskip 10pt plus 1pt minus 1pt % paragraph skip
+\baselineskip 11pt plus 0.1pt minus 0.1pt % baseline skip
+
+\textheight 254mm % height of text on a page
+\textwidth 171mm % total width of a page
+\oddsidemargin -5mm % shift the page leftwards
+\evensidemargin -5mm % shift the page leftwards
+\topmargin -2mm % shift the page upwards
+\headheight 0pt % no running heads...
+\headsep 0pt % ...so no separation from text
+\marginparwidth 48pt % don't use marginal notes...
+\marginparsep 10pt % ...in conference proceedings
+
+
+% Additional macro, to output the authors' affiliation. Make it
+% default to Essex (since that's where I am!).
+
+\def\affiliation#1{\def\@affiliation{#1}}
+\def\@affiliation{University of Essex, UK}
+
+
+% Macro for outputting the title of the paper, resetting macros and
+% counters, etc.
+
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}}
+ \twocolumn[\@maketitle]
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\relax
+ \gdef\@affiliation{}\let\thanks\relax}
+
+
+% Output the actual title, author and affiliation according to the IEE
+% guidelines.
+
+\def\@maketitle{\vbox to 44mm{\hsize\textwidth
+ \linewidth\hsize \vfil \raggedright
+ {\large \uppercase\expandafter{\@title} \par}
+ \vskip -\parskip\vskip 6mm\relax
+ \noindent\@author\par
+ \vskip -\parskip\vskip 9mm\relax
+ \noindent\@affiliation\par
+ \vskip -\parskip\vskip 15mm\relax}}
+
+
+% Miscellania
+
+\def\copyrightspace{\footnotetext[0]{\mbox{}\vrule height 97pt width 0pt}}
+
+\def\abstract{\section*{Abstract}}
+\def\endabstract{\par}
+
+\pagestyle{empty} % no page numbers
+
+
+% Sectioning macros, since the default ones are too big for this page
+% layout (we also ensure they're set ragged-right).
+% These are modified from the definitions in art10.sty.
+
+% (Arguments to \@startsection: name level indent beforeskip afterskip
+% style.)
+
+\def\section{\@startsection {section}{1}{\z@}{-1.5ex plus -.5ex minus
+ -.2ex}{1ex plus .1ex}{\large\bf\raggedright}}
+
+\def\subsection{\@startsection{subsection}{2}{\z@}{-1.25ex plus -.5ex minus
+ -.2ex}{0.8ex plus .1ex}{\normalsize\bf\raggedright}}
+
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.25ex plus
+ -.5ex minus -.2ex}{0.8ex plus .1ex}{\normalsize\bf\raggedright}}
+
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{1.25ex plus .5ex minus
+ .2ex}{-1em}{\normalsize\bf\raggedright}}
+
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{1.25ex plus .5ex minus
+ .2ex}{-1em}{\normalsize\bf\raggedright}}
+
+% End of ieeconf.sty.
diff --git a/macros/latex209/contrib/misc/ieeeconf.sty b/macros/latex209/contrib/misc/ieeeconf.sty
new file mode 100644
index 0000000000..71425fb62a
--- /dev/null
+++ b/macros/latex209/contrib/misc/ieeeconf.sty
@@ -0,0 +1,56 @@
+% ----------------------------------------------------------------------
+% I E E E C O N F -- style option for IEEE Conferences, including the
+% International Conferences on Pattern Recognition
+% ----------------------------------------------------------------------
+% Based on the template produced by Matthew Ward of Worcester
+% Polytechnic Institute.
+% Version 1.00--0 Adrian F. Clark <alien@essex.ac.uk> 17-Apr-1992
+% ----------------------------------------------------------------------
+
+\typeout{IEEE Conference Proceedings style v1.00--0 17-Apr-1992}
+
+
+% ----------------------------------------------------------------------
+% Other style files.
+% ----------------------------------------------------------------------
+
+\input twocolumn.sty
+
+% ----------------------------------------------------------------------
+% Page dimensions.
+% ----------------------------------------------------------------------
+
+\setlength{\textheight}{8.75in}
+\setlength{\columnsep}{2.0pc}
+\setlength{\textwidth}{6.8in}
+\setlength{\footheight}{0pt}
+\setlength{\topmargin}{0.25in}
+\setlength{\headheight}{0pt}
+\setlength{\headsep}{0pt}
+\setlength{\oddsidemargin}{-.19in}
+\setlength{\parindent}{1pc}
+
+% ----------------------------------------------------------------------
+% Fiddle about with the appearence of the page, etc.
+% ----------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\def\title#1{\gdef\@title{\Large\bf#1}}
+\date{}
+\def\abstract{\thispagestyle{empty}\relax
+ \subsection*{\centering Abstract}\bgroup\em}
+\def\endabstract{\egroup}
+
+\def\subsize{\@setsize\subsize{12pt}\xipt\@xipt}
+
+\def\section{\@startsection{section}{1}{\z@}{2ex plus 1ex minus
+ .2ex}{1ex plus .2ex}{\large\bf}}
+
+\def\subsection{\@startsection{subsection}{2}{\z@}{1ex plus 1ex}
+ {.2ex plus .2ex}{\subsize\bf}}
+
+% ----------------------------------------------------------------------
+% End of ieeeconf.sty.
+% ----------------------------------------------------------------------
+
diff --git a/macros/latex209/contrib/misc/ifthen-addi.sty b/macros/latex209/contrib/misc/ifthen-addi.sty
new file mode 100644
index 0000000000..c7092375a3
--- /dev/null
+++ b/macros/latex209/contrib/misc/ifthen-addi.sty
@@ -0,0 +1,22 @@
+%
+% small extension for ifthen style -- TeX \newif's
+%
+% e.g., \ifthen{\boolean{@twoside}}{}{}
+%
+\def\boolean#1{1=1\fi\noexpand\csname if#1\endcsname\def\noexpand\@tempa{1=1}%
+\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa}
+%
+%
+%
+% \ifthenelse{\dimenequal{10pt}{20pt}}{}{} like #1 = #2
+% \ifthenelse{\dimenless{10pt}{20pt}}{}{} like #1 < #2
+% \ifthenelse{\dimengreater{10pt}{20pt}}{}{} like #1 > #2
+%
+\def\dimenequal#1#2{1=1\fi\noexpand\ifdim #1=#2 \def\noexpand\@tempa{1=1}
+\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa}
+%
+\def\dimenless#1#2{1=1\fi\noexpand\ifdim #1<#2 \def\noexpand\@tempa{1=1}
+\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa}
+%
+\def\dimengreater#1#2{1=1\fi\noexpand\ifdim #1>#2 \def\noexpand\@tempa{1=1}
+\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa}
diff --git a/macros/latex209/contrib/misc/ifthenpl.sty b/macros/latex209/contrib/misc/ifthenpl.sty
new file mode 100644
index 0000000000..c7092375a3
--- /dev/null
+++ b/macros/latex209/contrib/misc/ifthenpl.sty
@@ -0,0 +1,22 @@
+%
+% small extension for ifthen style -- TeX \newif's
+%
+% e.g., \ifthen{\boolean{@twoside}}{}{}
+%
+\def\boolean#1{1=1\fi\noexpand\csname if#1\endcsname\def\noexpand\@tempa{1=1}%
+\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa}
+%
+%
+%
+% \ifthenelse{\dimenequal{10pt}{20pt}}{}{} like #1 = #2
+% \ifthenelse{\dimenless{10pt}{20pt}}{}{} like #1 < #2
+% \ifthenelse{\dimengreater{10pt}{20pt}}{}{} like #1 > #2
+%
+\def\dimenequal#1#2{1=1\fi\noexpand\ifdim #1=#2 \def\noexpand\@tempa{1=1}
+\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa}
+%
+\def\dimenless#1#2{1=1\fi\noexpand\ifdim #1<#2 \def\noexpand\@tempa{1=1}
+\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa}
+%
+\def\dimengreater#1#2{1=1\fi\noexpand\ifdim #1>#2 \def\noexpand\@tempa{1=1}
+\else\def\noexpand\@tempa{1=0}\fi\ifnum\noexpand\@tempa}
diff --git a/macros/latex209/contrib/misc/indent.sty b/macros/latex209/contrib/misc/indent.sty
new file mode 100644
index 0000000000..02d8650f4d
--- /dev/null
+++ b/macros/latex209/contrib/misc/indent.sty
@@ -0,0 +1,120 @@
+%%% Save file as: INDENT.STY Source: FILESERV@SHSU.BITNET
+%%% The following checksum includes all SHSU-generated topmatter.
+%%% checksum = "65425 120 759 5150"
+%
+% \subsection{Environments for Indented Text}
+%
+% \DescribeEnv{indentation}
+% The indentation environment allows us to temporarily reset the margins.
+% This environment takes two arguments, which are the left and right indents.
+% Usually either both will be the same (for a centered indent) or else
+% the right indent will be 0pt (for left indent only).
+%
+% Examples:
+%
+% \begin{verbatim}
+% \begin{indentation}{1.5em}{1.5em}
+% This text will be set in a justified paragraph with narrower
+% margins than usual. The paragraph will be indented 1.5em on
+% each side from the surrounding margins.
+% \end{indentation}
+%
+% \begin{indentation}{.5in}{0pt}
+% This text will be set in a justified paragraph indented at
+% the left but not the right.
+% \end{indentation}
+%
+%
+% \begin{indentation}{1.5em}{1.5em}
+% This text will be indented.
+% \begin{indentation}{1.5em}{1.5em}
+% The indentation environment can be nested, giving indents
+% within indents, so this text will be indented some more.
+% \end{indentation}
+% Now we return to the first indentation level.
+% \end{indentation}
+% \end{verbatim}
+%
+% The method of margin-changing implemented here is identical to that
+% used by \LaTeX's "list" environment. Indeed, this code was written
+% by making a copy of the "list" environment's code, studying it closely,
+% and carefully paring out everything that didn't relate to setting margins.
+% This means that if another
+% environment (such as "center" or "quote") that uses the "list" environment
+% is nested inside the "indentation" environment, or if an "indentation"
+% environment is used inside a "list" environment, everything should
+% work just fine.
+%
+% \begin{macro}{\indentation}
+% The "indentation" environment begins and ends by executing "\par".
+% The first one guarantees that a paragraph that began before the
+% environment will not be affected by the new margins the environment
+% sets up, and that the last paragraph inside the environment will be.
+% The code for resetting the margins uses "\parshape" to maintain the
+% modified margin settings, rather than using "\leftskip" and "\rightskip".
+% This is rather clever, since it leaves us free to use the skip values
+% to produce other special effects (such as centering or ragged right).
+% But because \TeX\ normally resets "\parshape" declarations at the
+% end of each paragraph, we redefine "\par" to perform its usual
+% actions {\em inside a group}. The group is opened, "\@@par" ends
+% the paragraph, the "\parshape" setting is canceled {\em within the
+% group}, and the group ends, restoring the "\parshape" setting.
+% \begin{macrocode}
+\newenvironment{indentation}[2]%
+{%
+ \par
+ \setlength{\leftmargin}{#1}%
+ \setlength{\rightmargin}{#2}%
+ \advance\linewidth -\leftmargin
+ \advance\linewidth -\rightmargin
+ \advance\@totalleftmargin\leftmargin
+ \@setpar{{\@@par}}%
+ \parshape 1 \@totalleftmargin \linewidth
+ \ignorespaces
+}%
+{\par}
+% \end{macrocode}
+% An earlier version of this code used the "list" environment directly.
+% Using the "indentation" environment actually caused a "list" environment
+% with one item to be created. The formatting parameters for the "list"
+% environment were set to make the list appear just like the surrounding
+% text, except for the margin change. That is, "\topsep" was given
+% the value "0pt", "\parsep" was set to "\parskip", and "\listparindent"
+% and "\itemindent" were both set to "\parindent". This worked tolerably
+% well as a first approximation, but ultimately it was unsatisfactory for
+% several reasons, the most important being that an empty "list" environment
+% generates a \LaTeX\ error ("\@noitemerr", to be specific). Instead of
+% choosing special values and writing extra code to overcome the setup
+% that the "list" environment performs that isn't needed for our purposes,
+% I finally decided to simply figure out how the "list" environment resets
+% margins and re-implement just that part in the "indentation" environment.
+% \end{macro}
+%
+% \DescribeEnv{ctrindent}
+% The ctrindent environment uses the indentation environment
+% (defined above) and the standard "\centering" declaration to typeset
+% centered text in reduced margins. This environment takes two
+% arguments, which are the left and right indents. Usually
+% both will be the same, but in principle you could have a paragraph
+% whose lines were centered around a point that was off-center with
+% respect to the surrounding column of text.
+%
+% Example:
+%
+% \begin{verbatim}
+% \begin{ctrindent}{.5in}{.5in}
+% This text will be set in a centered paragraph with narrower
+% margins than usual.
+% \end{ctrindent}
+% \end{verbatim}
+%
+% \begin{macro}{\ctrindent}
+% The "\ctrindent" environment is just an "indentation" environment
+% inside which a "\centering" declaration is in effect.
+% \begin{macrocode}
+\newenvironment{ctrindent}[2]%
+{\begin{indentation}{#1}{#2}\centering}%
+{\end{indentation}}
+% \end{macrocode}
+% \end{macro}
+%
diff --git a/macros/latex209/contrib/misc/inputfile.sty b/macros/latex209/contrib/misc/inputfile.sty
new file mode 100644
index 0000000000..5fa26e2fa4
--- /dev/null
+++ b/macros/latex209/contrib/misc/inputfile.sty
@@ -0,0 +1,43 @@
+%
+% Inputfile style : Designed by R.Tucci, Ciba-Geigy AG Basle, June 29, 1990
+% modified by R.Tucci Feb. 21, 1991
+%
+% The following commands are defined for internal use
+%
+% \@fileindex : To keep the current level of \input{}
+% \@iinput : Redefines the \@iinput command of \latex.tex to
+% save the filename of \input{...}
+% \inputfilename : Returns the filename depending on \@fileindex
+% \@filenamei : Contains the filename for \@fileindex=1
+% \@filenameii : Contains the filename for \@fileindex=2
+% \@filenameiii : Contains the filename for \@fileindex=3
+% \@filename... : ... etc.
+% This Style should be used in the following manner
+%
+% 1. add this file to the \documentstyle[...]
+% 2. use the command \inputfilename somewhere in the text and the current
+% input file name will be substituted
+\typeout{filename environment loaded. WRTC , Version 1.1 22.02.91}
+ %
+ % Redefine \@iinput from latex.tex to keep the filename
+ % available
+\newcount\@fileindex % defines the pointer to the current filename
+\@fileindex=0 % and initialize it.
+\def\@iinput#1{\advance\@fileindex by 1 % increment the pointer
+ % save the filename
+ % the following line dose this Job:
+ % 1. \expandafter prevents to redefine \csname, so
+ % 2. \csname filename\romannumeral\@fileindex\endcsname
+ % expands to the control sequence \filename<x> where <x> is
+ % the roman character representation of \@fileindex. (e.g ii)
+ % 3. \def defines the resulted control sequence of 2. to be #1
+ \expandafter\def\csname filename\romannumeral\@fileindex\endcsname
+{#1}
+ \@@input#1 % now read the file
+ \ifnum\@fileindex>0 % check for end of stack
+ \advance\@fileindex by -1 \fi} % and decrement the pointer
+ % read the current filename if an \input
+ % has been performed, otherwise use \jobname
+\def\inputfilename{\ifnum\@fileindex=0\jobname
+ \else\csname filename\romannumeral\@fileindex\endcsname
+ \fi}
diff --git a/macros/latex209/contrib/misc/invertedparagraphs.tex b/macros/latex209/contrib/misc/invertedparagraphs.tex
new file mode 100644
index 0000000000..f0d510632e
--- /dev/null
+++ b/macros/latex209/contrib/misc/invertedparagraphs.tex
@@ -0,0 +1,25 @@
+% -*- Mode: TeX -*-
+
+\ifx\thisfileis\anUndefinedMacro\input maybeload \fi
+
+\thisfileis{<eb.tex.texlocal>invertedparagraphs} % abort loading if we're already loaded
+
+% This file defines a \begin{invertedparagraphs}...\end{invertedparagraphs}
+% environment that's useful in bibliographies.
+
+\input redefine % from texlocal
+
+% Inverted paragraphs.
+
+\newdimen\invertedparindent
+\invertedparindent=20pt
+
+\newenvironment{invertedparagraphs}{%
+\list{}%
+{\setlength{\listparindent}{-\invertedparindent}%
+\setlength{\leftmargin}{\invertedparindent}%
+\setlength{\labelwidth}{0pt}%
+\setlength{\labelsep}{0pt}%
+\setlength{\itemindent}{0pt}}%
+{\item{}\hspace{-\invertedparindent}}}{\endlist}
+
diff --git a/macros/latex209/contrib/misc/isf.sty b/macros/latex209/contrib/misc/isf.sty
new file mode 100644
index 0000000000..6c30a2d72a
--- /dev/null
+++ b/macros/latex209/contrib/misc/isf.sty
@@ -0,0 +1,95 @@
+% Save file as: ISF.STY Source: FILESERV@SHSU.BITNET
+% Provide access to the italic san serif type style for LaTeX. Once you
+% have included "isf" as a style option, you can use the \isf command to
+% select the italic san serif style, just as you would select the usual
+% italic style with \it, EXCEPT:
+%
+% The various fonts defined here are all "loaded on demand". As
+% discussed in the LaTeX book, Section C.14.4, a loaded on demand
+% font is subject to two restrictions when used in math mode:
+%
+% - The font must be used OUTSIDE of math mode before it is used
+% INSIDE of math mode. The \load command can be used to get
+% around this restriction.
+%
+% - Only a single font size is available within math mode - the
+% display, text, script and scriptscriptfonts will all be the
+% same. This can be avoided ONLY by changing the definitions
+% given here to pre-load the appropriate fonts; see LFONTS.TEX
+% for further information. (Alternatively, \@getfont could be
+% made more clever.) Note that pre-loading the fonts could cause
+% you to fill font space with fonts you never really use.
+%
+% In order to allow other style files that need access to \isf to input this
+% file safely, it is designed so that an attempt to input it a second time -
+% or, more exactly, when command "\isf" is already defined - is ignored.
+%
+% This file can be adapted easily to define other font type styles. The real
+% limit is likely to come from the requirement that each style so defined must
+% be given a unique family number - TeX only supports 16 families and LaTeX
+% as usually configured already uses 10. The right way to avoid this problem
+% is to modify \@getfont so that it ignores a family number of -1. Fonts
+% so specified would not be usable in math mode, but that's no big deal; you
+% don't WANT to use tons of non-math fonts in math mode anyway.
+%
+% As currently written, this file assumes that you have boldface san serif
+% fonts available at the following point sizes:
+%
+% lcmssi8
+% lcmssi8 at 9pt
+% cmssi10
+% cmssi10 at 11pt
+% cmssi10 at 12pt
+% cmssi10 at 17pt
+% cmssi10 at 20pt
+% cmssi10 at 25pt
+%
+% All but the last of these should be commonly available. I'm not sure about
+% the last one; LFONTS.TEX does not assume the availability of ANY 25 pt fonts
+% other than Roman. If necessary, change the definition of \isfxxv@ to
+% \@subfont\isf\it. (Alternatively, if you have italic sans serif fonts
+% at sizes smaller than 8pt, you might want to change the definitions of
+% \isfv@, \isfvi@, and \isfvii@.)
+%
+% Technical note: It is possible to do without the \isf<size>@ macros by
+% including their contents, with a whole bunch of \@prtct's, within the
+% \@addfontinfo definitions. This is a pain to do, and probably doesn't end
+% up saving any space anyway. This way costs you a bunch of extra macros,
+% but it's a LOT easier to understand!
+%
+% Written by George D. Greenwade (BED_GDG@SHSU.BITMET) as a variation of
+% BSF.STY Written by Jerry Leichter (LEICHTER-JERRY@CS.YALE.EDU)
+
+\expandafter\ifx\csname isf\endcsname\relax %Once only, please
+% Note: It's a pain to use \@ifundefined here - we don't want to pass the
+% rest of the definitions as an argument, but we can't easily use \endinput
+% since, with docsty, we can't control where the line breaks occur.
+
+\typeout{Document Option `isf' 25 August 1989 (GDG)}
+\def\isf{\protect\pisf}
+\newfam\sfifam
+\@addfontinfo\@vpt{\@prtct\isfv@}
+ \def\isfv@{\def\pisf{\@subfont\isf\it}}
+\@addfontinfo\@vipt{\@prtct\isfvi@}
+ \def\isfvi@{\def\pisf{\@subfont\isf\it}}
+\@addfontinfo\@viipt{\@prtct\isfvii@}
+ \def\isfvii@{\def\pisf{\@subfont\isf\it}}
+\@addfontinfo\@viiipt{\@prtct\isfviii@}
+ \def\isfviii@{\def\pisf{\@getfont\pisf\sfifam\@viiipt{lsmssi8}}}
+\@addfontinfo\@ixpt{\@prtct\isfx@}
+ \def\isfx@{\def\pisf{\@getfont\pisf\sfifam\@ixpt{lsmssi8\@halfmag}}}
+\@addfontinfo\@xpt{\@prtct\isfx@}
+ \def\isfx@{\def\pisf{\@getfont\pisf\sfifam\@xpt{cmssi10}}}
+\@addfontinfo\@xipt{\@prtct\isfxi@}
+ \def\isfxi@{\def\pisf{\@getfont\pisf\sfifam\@xipt{cmssi10\@halfmag}}}
+\@addfontinfo\@xiipt{\@prtct\isfxii@}
+ \def\isfxii@{\def\pisf{\@getfont\pisf\sfifam\@xiipt{cmssi10\@magscale1}}}
+\@addfontinfo\@xivpt{\@prtct\isfxiv@}
+ \def\isfxiv@{\def\pisf{\@getfont\pisf\sfifam\@xivpt{cmssi10\@magscale2}}}
+\@addfontinfo\@xviipt{\@prtct\isfxvii@}
+ \def\isfxvii@{\def\pisf{\@getfont\pisf\sfifam\@xviipt{cmssi10\@magscale3}}}
+\@addfontinfo\@xxpt{\@prtct\isfxx@}
+ \def\isfxx@{\def\pisf{\@getfont\pisf\sfifam\@xxpt{cmssi10\@magscale4}}}
+\@addfontinfo\@xxvpt{\@prtct\isfxxv@}
+ \def\isfxxv@{\def\pisf{\@getfont\pisf\sfifam\@xxvpt{cmssi10\@magscale5}}}
+\fi
diff --git a/macros/latex209/contrib/misc/isolatin1.sty b/macros/latex209/contrib/misc/isolatin1.sty
new file mode 100644
index 0000000000..9a6850979d
--- /dev/null
+++ b/macros/latex209/contrib/misc/isolatin1.sty
@@ -0,0 +1,174 @@
+% 1-Jun-1992
+%
+% File bases on iso1ibm.tex Version 1.0 of May, 9 1990
+\message{ISO-latin-1 input coding, version 0.9 of 1-Jun-1992.}
+%
+% For input of 8 bits character.
+% This allows reading ISO-8859 Latin-1 codes.
+%
+\chardef \atcode = \the \catcode `\@
+\catcode `\@ = 11
+%
+\catcode160=13 \def^^a0{{\bf?}} % 160 '240, "a0
+\catcode161=13 \def^^a1{!`} % 161 '241, "a1
+\catcode162=13 \def^^a2{{\bf?}} % 162 '242, "a2
+\catcode163=13 \def^^a3{\pounds{}} % 163 '243, "a3
+\catcode164=13 \def^^a4{{\bf?}} % 164 '244, "a4
+\catcode165=13 \def^^a5{{\bf?}} % 165 '245, "a5
+\catcode166=13 \def^^a6{$\vert$} % 166 '246, "a6
+\catcode167=13 \def^^a7{\S{}} % 167 '247, "a7 \S{} ISO-1,
+\catcode168=13 \def^^a8{\"{ }} % 168 '250, "a8
+\catcode169=13 \def^^a9{\copyright{}}% 169, '251, "a9
+\catcode170=13 \def^^aa{{\bf?}} % 170 '252, "aa
+\catcode171=13 % 171 '253, "ab,
+\@ifundefined{lguill}{\def^^ab{$<<$}}{\def^^ab{\lguill}}
+\catcode172=13 \def^^ac{{\bf?}} % 172 '254, "ac
+\catcode173=13 \def^^ad{{\bf?}} % 173 '255 "ad
+\catcode174=13 \def^^ae{{\bf?}} % 174 '256, "ae
+\catcode175=13 \def^^af{{\bf?}} % 175 '257, "af
+\catcode176=13 \def^^b0{{\bf?}} % 176 '260, "b0 ?? \No
+\catcode177=13 \def^^b1{$\pm$} % 177 '261, "b1 ISO-1 plus-minus
+\catcode178=13 \def^^b2{${}^2$} % 178, '262, "b2
+\catcode179=13 \def^^b3{${}^3$} % 179, '263, "b3
+\catcode180=13 \def^^b4{\'{ }} % 180, '264, "b4
+\catcode181=13 \def^^b5{{\bf?}} % 181, '265, "b5
+\catcode182=13 \def^^b6{\P{}} % 182, '266, "b6
+\catcode183=13 \def^^b7{$\cdot$} % 183, '267, "b7
+\catcode184=13 \def^^b8{\c{ }} % 184, '270, "b8
+\catcode185=13 \def^^b9{${}^1$} % 185, '271, "b9
+\catcode186=13 \def^^ba{{\bf?}} % 186, '272, "ba
+\catcode187=13 % 187, '273, "bb
+\@ifundefined{rguill}{\def^^bb{$>>$}}{\def^^bb{\rguill}}
+\catcode188=13 \def^^bc{$\frac 1 4$} % 188, '274, "bc
+\catcode189=13 \def^^bd{$\frac 1 2$} % 189, '275, "bd
+\catcode190=13 \def^^be{$\frac 3 4$} % 190, '276, "be
+\catcode191=13 \def^^bf{?`} % 191, '277, "bf
+\catcode192=13 \def^^c0{\`A} % 192, '300, "c0
+\@ifundefined{@grave@A@grave@}{\def^^c0{\`A}}{\let^^c0=\@grave@A@grave@}
+\catcode193=13 \def^^c1{\'A} % 193, '301, "c1
+\@ifundefined{@acute@A@acute@}{\def^^c1{\'A}}{\let^^c1=\@acute@A@acute@}
+\catcode194=13 \def^^c2{\^A} % 194, '302, "c2
+\@ifundefined{@circflx@A@circflx@}{\def^^c2{\^A}}{\let^^c2=\@circflx@A@circflx@}
+\catcode195=13 \def^^c3{\~A} % 195, '303, "c3
+\@ifundefined{@tileda@A@tilda@}{\def^^c3{\~A}}{\let^^c3=\@tileda@A@tilda@}
+\catcode196=13 \def^^c4{\"A} % 196, '304, "c4
+\@ifundefined{@Umlaut@A@Umlaut@}{\def^^c4{\"A}}{\let^^c4=\@Umlaut@A@Umlaut@}
+\catcode197=13 \def^^c5{\AA{}} % 197, '305, "c5
+\@ifundefined{@A@A@}{\def^^c5{\AA{}}}{\let^^c5=\@A@A@}
+\catcode198=13 \def^^c6{\AE{}} % 198, '306, "c6
+\@ifundefined{@A@E@}{\def^^c6{\AE{}}}{\let^^c6=\@A@E@}
+\catcode199=13 \def^^c7{\c{C}} % 199, '307, "c7
+\@ifundefined{@cedilla@C@cedilla}{\def^^c7{\c{C}}}{\let^^c7=\@cedilla@C@cedilla}
+\catcode200=13 \def^^c8{\`E} % 200, '310, "c8
+\@ifundefined{@grave@E@grave@}{\def^^c8{\`E}}{\let^^c8=\@grave@E@grave@}
+\catcode201=13 \def^^c9{\'E} % 201, '311, "c9
+\@ifundefined{@acute@E@acute@}{\def^^c9{\'E}}{\let^^c9=\@acute@E@acute@}
+\catcode202=13 \def^^ca{\^E} % 202, '312, "ca
+\@ifundefined{@circflx@E@circflx@}{\def^^ca{\^E}}{\let^^ca=\@circflx@E@circflx@}
+\catcode203=13 \def^^cb{{\"E}} % 203, '313, "cb
+\@ifundefined{@Umlaut@E@Umlaut@}{\def^^cb{\"E}}{\let^^cb=\@Umlaut@E@Umlaut@}
+\catcode204=13 \def^^cc{\`I} % 204, '314, "cc
+\@ifundefined{@grave@I@grave@}{\def^^cc{\`I}}{\let^^cc=\@grave@I@grave@}
+\catcode205=13 \def^^cd{\'I} % 205, '315, "cd
+\@ifundefined{@acute@I@acute@}{\def^^cd{\'I}}{\let^^cd=\@acute@I@acute@}
+\catcode206=13 \def^^ce{\^I} % 206, '316, "ce
+\@ifundefined{@circflx@I@circflx@}{\def^^ce{\^I}}{\let^^ce=\@circflx@I@circflx@}
+\catcode207=13 \def^^cf{{\"I}} % 207, '317, "cf
+\@ifundefined{@Umlaut@I@Umlaut@}{\def^^cf{\"I}}{\let^^cf=\@Umlaut@I@Umlaut@}
+\catcode208=13 \def^^d0{\rlap{\raise0.3ex\hbox{--}}D} % 208, '320, "d0
+\@ifundefined{@Eth@}{}{\let^^d0=\@Eth@}
+\catcode209=13 \def^^d1{¥} % 209, '321, "d1
+\@ifundefined{@tileda@N@tilda@}{\def^^d1{\~N}}{\let^^d1\@tileda@N@tilda@}
+\catcode210=13 \def^^d2{\`O} % 210, '322, "d2
+\@ifundefined{@grave@O@grave@}{\def^^d2{\`O}}{\let^^d2=\@grave@O@grave@}
+\catcode211=13 \def^^d3{\'O} % 211, '323, "d3
+\@ifundefined{@acute@O@acute@}{\def^^d3{\'O}}{\let^^d3\@acute@O@acute@}
+\catcode212=13 \def^^d4{\^O} % 212, '324, "d4
+\@ifundefined{@circflx@O@circflx@}{\def^^d4{\^O}}{\let^^d4=\@circflx@O@circflx@}
+\catcode213=13 \def^^d5{\~O} % 213, '325, "d5
+\@ifundefined{@tileda@O@tilda@}{\def^^d5{\~O}}{\let^^d5\@tileda@O@tilda@}
+\catcode214=13 \def^^d6{\"O} % 214, '326, "d6
+\@ifundefined{@Umlaut@O@Umlaut@}{\def^^d6{\"O}}{\let^^d6=\@Umlaut@O@Umlaut@}
+\catcode215=13 \def^^d7{$\times$}% 215, '327, "d7
+\catcode216=13 \def^^d8{\O{}} % 216, '330, "d8
+\@ifundefined{@OOO@}{\def^^d8{\O{}}}{\let^^d8=\@OOO@}
+\catcode217=13 \def^^d9{\`U} % 217, '331, "d9
+\@ifundefined{@grave@U@grave@}{\def^^d9{\`U}}{\let^^d9=\@grave@U@grave@}
+\catcode218=13 \def^^da{\'U} % 218, '332, "da
+\@ifundefined{@acute@U@acute@}{\def^^da{\'U}}{\let^^da=\@acute@U@acute@}
+\catcode219=13 \def^^db{\^U} % 219, '333, "db
+\@ifundefined{@circflx@U@circflx@}{\def^^db{\^U}}{\let^^db=\@circflx@U@circflx@}
+\catcode220=13 \def^^dc{\"U} % 220, '334, "dc
+\@ifundefined{@Umlaut@U@Umlaut@}{\def^^dc{\"U}}{\let^^dc=\@Umlaut@U@Umlaut@}
+\catcode221=13 \def^^dd{{\'Y}} % 221, '335, "dd
+\@ifundefined{@acute@Y@acute@}{\def^^dd{\'Y}}{\let^^dd=\@acute@Y@acute@}
+\catcode222=13 \def^^de{\lower 0.7ex \hbox{l}\hskip-1ex\relax b} % 222, '336, "de
+\@ifundefined{@Thorn@}{}{\let^^de=\@Thorn@}
+\catcode223=13 \def^^df{\ss{}} % 223, '337, "df
+\@ifundefined{@sss@}{\def^^df{\ss{}}}{\let^^df=\@sss@}
+\catcode224=13 \def^^e0{\`a} % 224, '340, "e0
+\@ifundefined{@grave@a@grave@}{\def^^e0{\`a}}{\let^^e0=\@grave@a@grave@}
+\catcode225=13 \def^^e1{\'a} % 225, '341, "e1
+\@ifundefined{@acute@a@acute@}{\def^^e1{\'a}}{\let^^e1=\@acute@a@acute@}
+\catcode226=13 \def^^e2{\^a} % 226, '342, "e2
+\@ifundefined{@circflx@a@circflx@}{\def^^e2{\^a}}{\let^^e2=\@circflx@a@circflx@}
+\catcode227=13 \def^^e3{\~a} % 227, '343, "e3
+\@ifundefined{@tileda@a@tilda@}{\def^^e3{\~a}}{\let^^e3=\@tileda@a@tilda@}
+\catcode228=13 \def^^e4{\"a} % 228, '344, "e4
+\@ifundefined{@Umlaut@a@Umlaut@}{\def^^e4{\"a}}{\let^^e4=\@Umlaut@a@Umlaut@}
+\catcode229=13 \def^^e5{\aa{}} % 229, '345, "e5
+\@ifundefined{@a@a@}{\def^^e5{\aa{}}}{\let^^e5=\@a@a@}
+\catcode230=13 \def^^e6{\ae{}} % 230, '346, "e6
+\@ifundefined{@a@e@}{\def^^e6{\ae{}}}{\let^^e6=\@a@e@}
+\catcode231=13 \def^^e7{\c{c}} % 231, '347, "e7
+\@ifundefined{@cedilla@c@cedilla}{\def^^e7{\c{c}}}{\let^^e7=\@cedilla@c@cedilla}
+\catcode232=13 \def^^e8{\`e} % 232, '350, "e8
+\@ifundefined{@grave@e@grave@}{\def^^e8{\`e}}{\let^^e8=\@grave@e@grave@}
+\catcode233=13 \def^^e9{\'e} % 233, '351, "e9
+\@ifundefined{@acute@e@acute@}{\def^^e9{\'e}}{\let^^e9=\@acute@e@acute@}
+\catcode234=13 \def^^ea{\^e} % 234, '352, "ea
+\@ifundefined{@circflx@e@circflx@}{\def^^ea{\^e}}{\let^^ea=\@circflx@e@circflx@}
+\catcode235=13 \def^^eb{\"e} % 235, '353, "eb
+\@ifundefined{@Umlaut@e@Umlaut@}{\def^^eb{\"e}}{\let^^eb=\@Umlaut@e@Umlaut@}
+\catcode236=13 \def^^ec{\`{\i}} % 236, '354, "ec
+\@ifundefined{@grave@i@grave@}{\def^^ec{\`{\i}}}{\let^^ec=\@grave@i@grave@}
+\catcode237=13 \def^^ed{\'{\i}} % 237, '355, "ed
+\@ifundefined{@acute@i@acute@}{\def^^ed{\'{\i}}}{\let^^ed=\@acute@i@acute@}
+\catcode238=13 \def^^ee{\^{\i}} % 238, '356, "ee
+\@ifundefined{@circflx@i@circflx@}{\def^^ee{\^{\i}}}{\let^^ee=\@circflx@i@circflx@}
+\catcode239=13 \def^^ef{\"{\i}} % 239, '357, "ef
+\@ifundefined{@Umlaut@i@Umlaut@}{\def^^ef{\"{\i}}}{\let^^ef=\@Umlaut@i@Umlaut@}
+\catcode240=13 \def^^f0{$\partial$} % 240, '360, "f0
+\@ifundefined{@eth@}{\def^^f0{$\partial$}}{\let^^f0=\@eth@}
+\catcode241=13 \def^^f1{\~n} % 241, '361, "f1
+\@ifundefined{@tileda@n@tilda@}{\def^^f1{\~n}}{\let^^f1\@tileda@n@tilda@}
+\catcode242=13 \def^^f2{\`o} % 242, '362, "f2
+\@ifundefined{@grave@o@grave@}{\def^^f2{\`o}}{\let^^f2=\@grave@o@grave@}
+\catcode243=13 \def^^f3{\'o} % 243, '363, "f3
+\@ifundefined{@acute@o@acute@}{\def^^f3{\'o}}{\let^^f3\@acute@o@acute@}
+\catcode244=13 \def^^f4{\^o} % 244, '364, "f4
+\@ifundefined{@circflx@o@circflx@}{\def^^f4{\^o}}{\let^^f4=\@circflx@o@circflx@}
+\catcode245=13 \def^^f5{\~o} % 245, '365, "f5
+\@ifundefined{@tileda@o@tilda@}{\def^^f5{\~o}}{\let^^f5\@tileda@o@tilda@}
+\catcode246=13 \def^^f6{\"o} % 246, '366, "f6
+\@ifundefined{@Umlaut@o@Umlaut@}{\def^^f6{\"o}}{\let^^f6=\@Umlaut@o@Umlaut@}
+\catcode247=13 \def^^f7{$\div$} % 247, '367, "f7
+\catcode248=13 \def^^f8{\o{}} % 248, '370, "f8
+\@ifundefined{@ooo@}{\def^^f8{\o{}}}{\let^^f8=\@ooo@}
+\catcode249=13 \def^^f9{\`u} % 249, '371, "f9
+\@ifundefined{@grave@u@grave@}{\def^^f9{\`u}}{\let^^f9=\@grave@u@grave@}
+\catcode250=13 \def^^fa{\'u} % 250, '372, "fa
+\@ifundefined{@acute@u@acute@}{\def^^fa{\'u}}{\let^^fa=\@acute@u@acute@}
+\catcode251=13 \def^^fb{\^u} % 251, '373, "fb
+\@ifundefined{@circflx@u@circflx@}{\def^^fb{\^u}}{\let^^fb=\@circflx@u@circflx@}
+\catcode252=13 \def^^fc{\"u} % 252, '374, "fc
+\@ifundefined{@Umlaut@u@Umlaut@}{\def^^fc{\"u}}{\let^^fc=\@Umlaut@u@Umlaut@}
+\catcode253=13 \def^^fd{\'y} % 253, '375, "fd
+\@ifundefined{@acute@y@acute@}{\def^^fd{\'y}}{\let^^fd=\@acute@y@acute@}
+\catcode254=13 \def^^fe{\lower 0.8ex\hbox{l}\hskip-1ex\relax b} % 254, '376, "fe
+\@ifundefined{@thorn@}{}{\let^^fe=\@thorn@}
+\catcode255=13 \def^^ff{\"y} % 255, '377, "ff
+\@ifundefined{@Umlaut@y@Umlaut@}{\def^^ff{\"y}}{\let^^ff=\@Umlaut@y@Umlaut@}
+\catcode `\@ = \the \atcode
+\endinput
+% End of iso-latin-1.tex
diff --git a/macros/latex209/contrib/misc/ist21.sty b/macros/latex209/contrib/misc/ist21.sty
new file mode 100644
index 0000000000..487a2d28b7
--- /dev/null
+++ b/macros/latex209/contrib/misc/ist21.sty
@@ -0,0 +1,39 @@
+% IST21 DOCUMENT-STYPE OPTION - Wed May 20 17:07:56 BST 1987
+%
+% derived from
+%
+% TITLEPAGE DOCUMENT-STYLE OPTION - released 27 January 1985
+% for LaTeX version 2.09
+% Copyright (C) 1985 by Leslie Lamport
+%
+% This style option produces a title appropriate for BSI IST/21 documents,
+% and general memos.
+%
+% In addition to the normal \title, \author (will give rise to the
+% source of the document) and \date commands, two further values
+% should be set. These are:
+%
+% \project{Project Reference}
+% The project reference for the document. For example,
+% \project{97.21.23} or \project{97.21.9 Q45}
+%
+% \status{Document Status}
+% For example \status{UK Position} or \status{UK Expert Contribution}
+
+\def\project#1{\def\@project{{#1}}} \project{\em 97.21.NN}
+\def\status#1{\def\@status{{#1}}} \status{\em status unset}
+
+\def\maketitle{
+ \setcounter{page}{0}
+ \begin{Large}
+ \begin{description}
+ \item[TITLE:] \@title
+ \item[SOURCE:] \@author
+ \item[DATE:] \@date
+ \item[PROJECT:] \@project
+ \item[STATUS:] \@status
+ \end{description}
+ \end{Large}
+\bigskip
+\null
+}
diff --git a/macros/latex209/contrib/misc/isucaption.sty b/macros/latex209/contrib/misc/isucaption.sty
new file mode 100644
index 0000000000..10823eb3ed
--- /dev/null
+++ b/macros/latex209/contrib/misc/isucaption.sty
@@ -0,0 +1,39 @@
+%NAME: isucaption.sty
+% written by gagac@isumvs.bitnet
+%
+%Figure 1.1: This is the debugged version of a modified caption macro
+% to produce captions with hanging indentation (like this).
+% If the caption is less than a full line, it will be
+% centered. \isucaption is used in the same way as \caption
+% (the name may be changed).
+% The variable \captionwidth may be set to match the width
+% of a \tabular* environment. If set inside a table or
+% figure environment, it will affect only that environment.
+
+\def\isucaption{\refstepcounter\@captype
+ \@dblarg{\@isucaption\@captype}}
+
+\newlength\captionwidth \captionwidth=\hsize
+\long\def\@isucaption#1[#2]#3{
+ \baselineskip 14.5 pt
+ \addcontentsline {\csname ext@#1\endcsname}{#1}
+ {\protect\numberline{\csname fnum@#1\endcsname}{\ignorespaces #2}}
+ \par
+ \begingroup
+ \@parboxrestore
+ \setbox\@tempboxa\hbox{\csname fnum@#1\endcsname #3}
+ \ifdim \wd\@tempboxa >\captionwidth
+ \begingroup
+ \setbox\@tempboxa\hbox{\csname fnum@#1\endcsname^^}
+ \advance \captionwidth by -\wd\@tempboxa
+ \@makecaption{\csname fnum@#1\endcsname}
+ {\ignorespaces{\protect\parbox[t]{\captionwidth}{#3}}}%
+ \endgroup
+ \else
+ \begingroup
+ \@makecaption{\csname fnum@#1\endcsname}
+ {\ignorespaces #3}
+ \endgroup
+ \fi
+ \par\vspace{1.7ex}
+ \endgroup}
diff --git a/macros/latex209/contrib/misc/ital.sty b/macros/latex209/contrib/misc/ital.sty
new file mode 100644
index 0000000000..41c0f5c548
--- /dev/null
+++ b/macros/latex209/contrib/misc/ital.sty
@@ -0,0 +1,73 @@
+% This is ITAL.STY, from TeXmag v3n1, by Dan Bernstein
+% bernsten@phoenix.princeton.edu
+%
+% Italics-without-tears (or how to avoid doing italic correction!)
+%
+% To use the macros, simply type \ital{text} where you would normally
+% type {\it text}, and similarly for \upright. \slant is like \ital.
+% These are not \long macros and are meant for text within a paragraph,
+% so stick to {\it...} for many-paragraph italicisation.
+%
+% First come the basic definitions.
+%
+\newif\if@corr\newif\if@nonzero
+{\@tempskipa 0pt plus 0pt minus 0pt\xdef\zero@skip{\the\@tempskipa}}
+% Now come the macros for dealing with italics. Notice the use of
+% \futurelet to see what token comes after the \ital{...}. These macros
+% aren't perfect; the worst problem is that they can't really look ahead
+% to see if a period or a comma will be added next to the text, and they
+% only see if the next token after the } is a period or a comma. If you
+% have some other macro or character that should also force the italic
+% correction to disappear, add \do{\themacroname} to \no@corr.
+\def\ital#1{{\it #1}\begingroup\futurelet\@tempa\@corr}
+\def\slant#1{{\sl #1}\begingroup\futurelet\@tempa\@corr}
+\def\no@corr{\do{.}\do{,}}
+\def\@corr{\def\do##1{\ifx\@tempa##1\@corrfalse\fi}\@corrtrue\no@corr
+\if@corr\/\fi\endgroup}
+%
+% The problem of roman type within italic type is quite different. The
+% italic correction will always be added at the beginning (if you're
+% typing \ital{... something\upright{,} ...} then you have a very weird
+% idea of the logical structure of your document). However, \upright will
+% almost always be preceded by a space, and maybe even some kerns,
+% penalties, and other glue; so we must ``unspace'' past these items,
+% add the italic correction, and put the spaces back. The \upright macro
+% reflects this; \@unspace removes as many glue/kern/penalty items as
+% possible from the current horizontal list and sets \@tempa to a control
+% sequence that dumps all the glue/kern/penalty items right back on.
+%
+\def\upright#1{\begingroup\@unspace\/\@tempa\endgroup{\@uprightfont #1}}
+\def\@unspace{%
+\def\@tempa{}\loop\@nonzerofalse
+\@tempskipa\lastskip\unskip
+\@tempdima\lastkern\unkern
+\@tempcnta\lastpenalty\unpenalty
+\edef\@tempb{\the\@tempskipa}%
+\ifx\@tempb\zero@skip
+\else\edef\@tempa{\hskip\@tempb\@tempa}\@nonzerotrue\fi
+\ifdim\@tempdima=0pt\else\edef\@tempa{\kern\the\@tempdima\@tempa}\@nonzerotrue\fi
+\ifnum\@tempcnta=0\else\edef\@tempa{\penalty\the\@tempcnta\@tempa}\@nonzerotrue\fi
+\if@nonzero\repeat}
+%
+% \upright (because of \@unspace) has many more caveats than \ital and
+% \slant. As described in the TeXbook, \lastskip and its friends take
+% the last such item off the current list, returning zero if the last item
+% is not such an item. This makes it easy for \@unspace to keep going back,
+% removing skips, kerns, and penalties until they are all zero, but it
+% leads to two problems. The first is that a zero item that you really
+% put in explicitly (probably for some obscure line-breaking reasons)
+% will not be passed through to \@tempa and thus will not be put back. The
+% second is that if you have a sequence of a few such zero items, \@unspace
+% will stop there and won't get all the way back to where it should.
+% Furthermore, a whatsit or similar weird item will also stop \@unspace.
+% The solution to the first two problems is to replace \hskip0pt with
+% \hskip1sp, \kern0pt with \kern1sp, and \penalty0 with \penalty1. Any
+% DVI program that shows a difference of 1sp doesn't round correctly.
+%
+%
+% the font to be used for upright text
+\def\uprightfont#1{\def\@uprightfont{#1}}
+\uprightfont{\rm}
+%
+% and here's a crib of LaTeX' \em (without the protection):
+\def\emph#1{\ifdim \fontdimen\@ne\font >\z@ \upright{#1}\else \ital{#1}\fi}
diff --git a/macros/latex209/contrib/misc/italic.sty b/macros/latex209/contrib/misc/italic.sty
new file mode 100644
index 0000000000..8c47825ac2
--- /dev/null
+++ b/macros/latex209/contrib/misc/italic.sty
@@ -0,0 +1,38 @@
+% Save file as: ITALIC.STY Source: FILESERV@SHSU.BITNET
+%
+% File: ITALIC.STY
+%
+% Author: Hunter Goatley
+% goathunter@WKUVX1.BITNET
+%
+% Date: August 21, 1991
+%
+% Abstract:
+%
+% The macros \ital and \slant are defined to typeset tex in italic
+% (\it) and slanted (\sl) fonts, automatically inserting the italic
+% correction (\/) if necessary. The correction is not inserted if
+% the token following the parameter is a period or a comma, as
+% suggested on page 14 of _The TeXbook_.
+%
+% Based on the \predict macro presented in _TeX for the Impatient_,
+% p. 233.
+%
+% These macros use \toks0 as a temporary.
+%
+% The \futurelet\it@next in \ital and \slant defines \it@next to be
+% whatever the character following the parameter is. \d@slant checks
+% to see if \it@next is a comma or period; if it is neither, the
+% italic correction (\/) is included.
+%
+\catcode`\@=11 % Temporarily make @ a letter
+\def\ital#1{\toks0={#1}\let\slf@nt=\it\futurelet\it@next\d@slant}
+\def\slant#1{\toks0={#1}\let\slf@nt=\sl\futurelet\it@next\d@slant}
+\def\d@slant{{\slf@nt\the\toks0}%
+ \ifx\it@next,% % If \it@next is not a comma
+ \else\ifx\it@next.% % ... and is not a period
+ \else\/% % ... insert the correction (\/)
+ \fi\fi% % ...
+ \let\it@next=\relax% % "Undefine" \it@next
+ }
+\catcode`\@=12 % Reset @ as other
diff --git a/macros/latex209/contrib/misc/jbs.sty b/macros/latex209/contrib/misc/jbs.sty
new file mode 100644
index 0000000000..f2ee96dab3
--- /dev/null
+++ b/macros/latex209/contrib/misc/jbs.sty
@@ -0,0 +1,200 @@
+% Article sub-style JBS.STY
+% Usage: \documentstyle[jbs]{article}
+% REQUIRED COMMANDS LISTED BELOW
+% optional commands listed below
+% \setcounter{page}{foo} --`foo' is first page number for article
+% \begin{document}
+% \leadpagelayout
+% blank line
+% Text as usual
+%
+\typeout { }
+\typeout{Article document style `jbs' for the Journal of Business Strategies}
+\typeout { }
+% Basic layouts for Journal of Business Strategies--released July 3, 1988
+%
+% Copyright (c) 1988 by George D. Greenwade (BED_GDG@SHSU.BITNET)
+% Center for Business and Economic Research
+% Sam Houston State University
+% Huntsville, Texas 77341-2056
+%
+% Must include the following definitions in the preamble of the document:
+%% \vol{foo} -- `foo' is Volume number for the article
+%% \no{foo} -- `foo' is Number in the Volume
+%% \issue{foo} -- `foo' is issue (i.e., Spring or Fall)
+%% \yr{foo} -- `foo' is year of publication
+%% \runhead{foo} -- `foo' is running head for odd-numbered (right-hand) pages
+%% \title{foo} -- `foo' is titlepage title (insert breaks with \cr)
+%% \author{foo} -- `foo' is lead author's name
+%% \affil{foo} -- `foo' is lead author's affiliation (insert breaks with \cr)
+%% Defaults intentionally not specified as each article is
+%% unique in these aspects. Failure to specify any of these
+%% results in "command not specified" error.
+% Optional entries in preamble:
+%% Present design allows for up to two additional co-authors with unique
+%% affiliations (total of three authors and affiliations).
+%% \authorii{foo} -- `foo' is first co-author (second author)
+%% \affilii{foo} -- `foo' is authorii's affiliation
+%% \authoriii{foo} -- `foo' is second co-author (third author)
+%% \affiliii{foo} -- `foo' is authoriii's affiliation
+
+% BASIC SETUPS AND LAYOUTS
+\ds@twoside % First, we use two-sided layout for the JBS.
+\input{art12.sty} % To generate photo-ready copy for reduction to a
+\textwidth6in % finished 6X9 book, we print in 12 point using a
+\textheight9in % 6X9 text definition. This reduces nicely. We
+\topmargin-12pt % have found that virtually all stray toner marks
+\oddsidemargin.75in % are essentially erased out in the reduction process.
+\evensidemargin.75in
+\headheight11pt
+\headsep7mm
+\pagestyle{empty}
+\thispagestyle{plain}
+
+% CREATE BOXES
+\newbox\topheadlinebox % These are the boxes which are utilized in
+\newbox\titlebox % the various centering processes defined below.
+\newbox\bottomheadlinebox
+\newbox\authorbox
+\newbox\affilbox
+
+% DEFINE VARIOUS ARTICLE SPECIFIC VARIABLES
+\def\vol#1{\edef\vol{#1}} % Volume number
+\def\no#1{\edef\no{#1}} % Number within the Volume
+\def\issue#1{\edef\issue{#1}} % Issue (Fall or Spring)
+\def\yr#1{\edef\yr{#1}} % Year of publication
+\def\runhead#1{\edef\runhead{#1}} % Running header (Author: Title)
+
+% DEFINE PAGE HEADERS \evenpageheader and \oddpageheader
+% A variation from HEADERFOOTER.STY, copyright (c) 1987 by Stephen Gildea
+\newcommand\evenpageheader[3]{\def\@evenhead
+ {\rlap{#1}\hss{#2}\hss\llap{#3}}}
+\newcommand\oddpageheader[3]{\def\@oddhead
+ {\rlap{#1}\hss{#2}\hss\llap{#3}}}
+
+% PAGE HEADERS AND LEAD FOOTNOTE
+\evenpageheader{\bf \thepage}{\large\em Journal of Business Strategies}
+{\bf Vol.~\vol, No.~\no}
+\oddpageheader{\bf \issue\ \yr}{\large\em \runhead}{\bf \thepage}
+\long\def\leadfn{\footnotetext[0]{\hspace*{-6mm}\small {\em Journal of Business
+Strategies},
+Volume \vol, Number \no\ (\issue\ \yr)}}
+
+% CENTERING COMMAND \CenterBox
+% A variation from VERTEX.TEX, copyright (c) 1987 by Hal R. Varian
+%% #1 - name of box
+%% #2 - font used in box
+%% #3 - baselineskip for box
+%% #4 - text of box, separated by \cr
+\def\CenterBox#1#2#3#4{%
+\global\setbox#1=\vbox{\baselineskip=#3\halign{#2\hfil##\hfil\cr#4\crcr}}}
+
+% SPECIAL FONT DEFINITIONS USED IN CENTERING OF LEAD PAGE ELEMENTS
+\def\titlefont{\Large\sc}
+\def\authorfont{\large\sl}
+\def\affilfont{\twlrm}
+
+% MAKE NEEDED CENTERED ELEMENTS FOR LEAD PAGE
+\def\CenteredTitle#1{
+ \CenterBox
+ \titlebox
+ \titlefont
+ {20pt}
+ {#1}}
+
+\def\CenteredAuthor#1{
+ \CenterBox
+ \authorbox
+ \authorfont
+ \normalbaselineskip
+ {#1}}
+
+\def\CenteredAffil#1{
+ \CenterBox
+ \affilbox
+ \affilfont
+ {14pt}%\normalbaselineskip
+ {#1}}
+
+% MAKE CENTERED RULES FOR ABOVE AND BELOW TITLEBOX
+%% Upper rule
+\global\setbox\topheadlinebox\vbox{\baselineskip\normalbaselineskip
+\halign{\titlefont\hfil#\hfil\cr{\vrule width6in height.7mm}\crcr}}
+%% Lower rule
+\global\setbox\bottomheadlinebox\vbox{\baselineskip\normalbaselineskip
+\halign{\titlefont\hfil#\hfil\cr{\vrule width6in height.7mm}\crcr}}
+
+% IF MULTIPLE AUTHORS
+\newif\ifauthorii
+\global\authoriifalse
+\newif\ifauthoriii
+\global\authoriiifalse
+
+\def\CenteredAuthorII#1{
+\global\authoriitrue
+\newbox\authoriibox
+ \CenterBox
+ \authoriibox
+ \authorfont
+ \normalbaselineskip
+ {#1}}
+
+\def\CenteredAffilII#1{
+\newbox\affiliibox
+ \CenterBox
+ \affiliibox
+ \affilfont
+ {14pt}%\normalbaselineskip
+ {#1}}
+
+\def\CenteredAuthorIII#1{
+\global\authoriiitrue
+\newbox\authoriiibox
+ \CenterBox
+ \authoriiibox
+ \authorfont
+ \normalbaselineskip
+ {#1}}
+
+\def\CenteredAffilIII#1{
+\newbox\affiliiibox
+ \CenterBox
+ \affiliiibox
+ \affilfont
+ {14pt}%\normalbaselineskip
+ {#1}}
+
+% DEFINE AND PLACE IN BOXES: TITLE, AUTHOR, AND AFFILIATION
+\long\def\title#1{\CenteredTitle{#1}}
+\def\author#1{\CenteredAuthor{#1}}
+\long\def\affil#1{\CenteredAffil{#1}}
+\def\authorii#1{\CenteredAuthorII{#1}}
+\long\def\affilii#1{\CenteredAffilII{#1}}
+\def\authoriii#1{\CenteredAuthorIII{#1}}
+\long\def\affiliii#1{\CenteredAffilIII{#1}}
+
+% DEFINE \leadpagelayout TO INVOKE THE LEAD PAGE LAYOUT
+\def\leadpagelayout{{\vbox{
+\@@line{\hfil\box\topheadlinebox\hfil} % Centered line
+\vskip.3pc
+\@@line{\hfil\box\titlebox\hfil} % Centered title
+\vskip-.2pc
+\@@line{\hfil\box\bottomheadlinebox\hfil} % Centered line
+\vskip.8pc
+\@@line{\hfil\box\authorbox\hfil} % Author's name (centered)
+\vskip.2pc
+\@@line{\hfil\box\affilbox\hfil} % Author's affiliation (centered)
+\ifauthorii
+{\vskip.6pc
+\@@line{\hfil\box\authoriibox\hfil} % 2nd Author's name (centered)
+\vskip.2pc
+\@@line{\hfil\box\affiliibox\hfil}} % 2nd Author's affiliation (centered)
+\fi
+\ifauthoriii
+{\vskip.6pc
+\@@line{\hfil\box\authoriiibox\hfil} % 3rd Author's name (centered)
+\vskip.2pc
+\@@line{\hfil\box\affiliiibox\hfil}} % 3rd Author's affiliation (centered)
+\fi
+\vskip1pc}}
+\leadfn} % Generate lead-page footnote
diff --git a/macros/latex209/contrib/misc/jmb.sty b/macros/latex209/contrib/misc/jmb.sty
new file mode 100644
index 0000000000..7c3240d726
--- /dev/null
+++ b/macros/latex209/contrib/misc/jmb.sty
@@ -0,0 +1,62 @@
+% jmb.sty is identical to apalike.sty 1989 June 19
+%
+% apalike.sty style, used in conjunction with apalike.bst,
+% will produce an apa-like bibliography style:
+%
+% 1) Bibliography entries formatted alphabetically, last name
+% first, each entry having a hanging indentation and no label.
+% 2) References in the following formats:
+% (Author, 1986)
+% (Author and Author, 1986)
+% (Author et al., 1986).
+% 3) Multiple references in the form (Author1, 1986; Author2, 1987)
+%
+% To be used as an optional argument to the \documentstyle command; for example
+% \documentstyle[11pt,apalike]{book}
+%
+% 16-Sep-86, original version by Susan King and Oren Patashnik.
+% 13-Oct-87 changes:
+% Fixed bug in last line by adding the {} that disappeard when
+% the \hbox{} was removed from the pre-APALIKE definition;
+% added club and widow penalties;
+% patched the \newblock LaTeX bug from `-.07em' to simply `.07em';
+% and made this work for document styles that don't define `chapter'.
+%
+%
+% Use parens instead of brackets for \cite, and no label in the bibliography
+%
+\def\@cite#1#2{(#1\if@tempswa , #2\fi)}
+\def\@biblabel#1{}
+
+% Set length of hanging indentation for bibliography entries
+%
+\newlength{\bibhang}
+\setlength{\bibhang}{2em}
+
+% \thebibliography environment depends on whether or not `chapter's can exist
+%
+\@ifundefined{chapter}{\def\thebibliography#1{\section*{References\@mkboth
+ {REFERENCES}{REFERENCES}}\list
+ {\relax}{\setlength{\labelsep}{0em}
+ \setlength{\itemindent}{-\bibhang}
+ \setlength{\leftmargin}{\bibhang}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}}%
+{\def\thebibliography#1{\chapter*{Bibliography\@mkboth
+ {BIBLIOGRAPHY}{BIBLIOGRAPHY}}\list
+ {\relax}{\setlength{\labelsep}{0em}
+ \setlength{\itemindent}{-\bibhang}
+ \setlength{\leftmargin}{\bibhang}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}}
+
+% `; ' goes between cites, and there's no \hbox around individual cites
+%
+\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}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}
diff --git a/macros/latex209/contrib/misc/joe.sty b/macros/latex209/contrib/misc/joe.sty
new file mode 100644
index 0000000000..00b9fae0f5
--- /dev/null
+++ b/macros/latex209/contrib/misc/joe.sty
@@ -0,0 +1,151 @@
+% Article sub-style JOE.STY 1-MAR-1989 17:17:32
+% Updated 2-FEB-1990 09:51:35
+\typeout{Article documentstyle option 'joe' for the Journal of Economics.}
+
+% BASIC SETUPS AND LAYOUTS
+\ds@twoside % First, we use two-sided layout for the JoE.
+\twocolumn % Second, impose two columns
+\sloppy % TeX's sloppy looks better than LaTeX's fussy!
+\flushbottom % Flushbottom since this is for production
+\parindent 1em % Indents, margins, widths, and seps
+\leftmargini 2em % " " " " " " " " " " " " " " " " "
+\leftmarginv .5em % " " " " " " " " " " " " " " " " "
+\leftmarginvi .5em % " " " " " " " " " " " " " " " " "
+\marginparwidth 48pt % V V V V V V V V V V V V V V V V V
+\marginparsep 10pt % ---------------------------------
+\voffset-.4in % Offset the page to fit
+\parskip=0pt plus 1pt % Allow for stretchy paragraph skips
+\textwidth6.6in % Text is 6.6 inches wide
+\textheight9.1in % Text is 9.1 inches high
+\oddsidemargin.2in % Offset for odd-numbered pages
+\evensidemargin.1in % Offset for odd-numbered pages
+\headheight8.2pt % Allow 7.1 points for header text
+\headsep4.5mm % Separate text from headers 4.4 millimeters
+\columnsep.3in % Separate columns .3 inches
+\arraycolsep 2.5pt % Separate columns in arrays by 5 pt total
+\nofiles % Don't use .AUX files, so why create them?
+\renewcommand{\textfraction}{.12}
+\renewcommand{\floatpagefraction}{.8}
+\renewcommand{\dblfloatpagefraction}{.8}
+\newskip\holdsep % New skip for listing environments
+\holdsep 4.5pt plus 2pt minus 1pt % which is defined to standard \itemsep
+\def\shortseps{\itemsep=\parskip} % Use \shortseps to get \itemsep of \parskip
+\def\normalseps{\itemsep=\holdsep} % Use \normalseps to get standard \itemsep
+\pagestyle{empty} % Empty pagestyle, but we will customize below
+
+% DEFINE ARTICLE-SPECIFIC HEADING INFORMATION
+\def\vol#1{\edef\vol{#1}} % Volume number
+\def\yr#1{\edef\yr{#1}} % Year of publication
+\def\runhead#1{\edef\runhead{#1}} % Running header (Author: Title)
+
+% \prelim OPTION TO IDENTIFY PROOF DRAFTS AWAITNG FINAL EDITORIAL APPROVAL
+\newif\ifprelim
+\global\prelimfalse
+\def\prelim{\global\prelimtrue\typeout{Proof Draft}}
+
+% DEFINE PAGE HEADERS \evenpageheader AND \oddpageheader
+% A variation from HEADERFOOTER.STY, copyright (c) 1987 by Stephen Gildea
+\newcommand\evenpageheader[3]{\def\@evenhead
+ {\rlap{#1}\hss{#2}\hss\llap{#3}}}
+\newcommand\oddpageheader[3]{\def\@oddhead
+ {\rlap{#1}\hss{#2}\hss\llap{#3}}}
+
+% PAGE HEADERS AND LEAD FOOTNOTE
+\evenpageheader{\bf \thepage}{\large\sl The Journal of Economics, \vol , \yr}
+{\ifprelim{\bf Proof Draft} \else {}\fi}
+\oddpageheader{\ifprelim{\bf Proof Draft} \else {}\fi}{\large\sl \runhead}{\bf
+ \thepage}
+
+% DEFINE NECESSARY DEMERITS AND OTHER STUFF TO MAKE IT LOOK RIGHT
+\doublehyphendemerits=100000 % No consecutive line hyphens
+\brokenpenalty=10000 % No broken words across columns/pages
+\widowpenalty=10000 % No widows at bottom of page
+\clubpenalty=10000 % No orphans at top of page
+
+% DEFINE \leadpagelayout
+\date{}
+\let\school\thanks
+\let\leadpagelayout\maketitle
+\let\section\subsection
+\def\thesubsection{\Roman{subsection}.}
+\let\subsection\subsubsection
+\def\thesubsubsection{\Alph{subsubsection}.}
+\let\subsubsection\paragraph
+\def\theparagraph{\arabic{paragraph}.}
+
+% DECALIGN.STY included directly in whole
+%\typeout{Document Style option 'decalign'. Released 1 October 1987}
+\def\dsep{} % This is necessary for some unknown reason.
+\def\@testpach#1{\@chclass \ifnum \@lastchclass=\tw@ 4 \else
+ \ifnum \@lastchclass=3 5 \else
+ \z@ \if #1c\@chnum \z@ \else
+ \if #1l\@chnum \@ne \else
+ \if #1r\@chnum \tw@ \else
+ \@chclass \if #1|\@ne \else
+ \if #1@\tw@ \else
+ \if #1p3 \else
+ \if #1d7 \else
+ \ifnum \@lastchclass=7 8 \else \z@ \@preamerr 0\fi
+ \fi \fi \fi \fi \fi \fi \fi \fi
+\fi}
+% Additions to these macros handle the extra classes.
+\def\@mkpream#1{\@firstamptrue\@lastchclass6
+\def\@preamble{}\def\protect{\noexpand\protect\noexpand}\let\@sharp\relax
+\let\@startpbox\relax\let\@endpbox\relax
+\@expast{#1}\expandafter\@tfor \expandafter
+ \@nextchar \expandafter:\expandafter=\@tempa\do{\@testpach\@nextchar
+ \ifnum \@lastchclass=7 \ifnum \@chclass=8 \else\@classviii{.}\fi\fi
+ \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii
+ \or \@classiv \or\@classv \or \or\@classvii \or\@classviii{\@nextchar}%
+ \fi\@lastchclass\@chclass}%
+\ifcase \@lastchclass \@acol
+ \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi}
+\def\@tabular{\leavevmode \hbox \bgroup $\let\@acol\@tabacol
+ \let\@classz\@tabclassz
+ \let\@classiv\@tabclassiv
+ \let\@classviii\@tabclassviii
+ \let\\\@tabularcr\@tabarray}
+\def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz
+ \let\@classiv\@arrayclassiv
+ \let\@classviii\@arrayclassviii
+ \let\\\@arraycr\def\@halignto{}\@tabarray}
+\def\@arrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \or
+ \@acolampacol \or \@acolampacol
+ \fi
+\edef\@preamble{\@preamble
+ \ifcase \@chnum
+ \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil
+ \or \hfil$\relax\@sharp$\fi}}
+\def\@tabclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \or
+ \@acolampacol \or \@acolampacol
+ \fi
+\edef\@preamble{\@preamble
+ \ifcase \@chnum
+ \hfil\ignorespaces\@sharp\unskip\hfil
+ \or \ignorespaces\@sharp\unskip\hfil
+ \or \hfil\hskip\z@ \ignorespaces\@sharp\unskip\fi}}
+\def\@classi{\ifcase \@lastchclass \@acol \@arrayrule \or
+ \@addtopreamble{\hskip \doublerulesep}\@arrayrule\or
+ \or \or \@arrayrule \or
+ \@acol \@arrayrule \or \@arrayrule \or
+ \@acol \@arrayrule \or \@acol \@arrayrule
+ \fi}
+\def\@classiii{\ifcase \@lastchclass \@acolampacol \or
+ \@addamp\@acol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@ampacol \or
+ \@acolampacol \or \@ampacol
+ \fi}
+\def\@classvii{\ifcase \@lastchclass \@acolampacol \or
+ \@addamp\@acol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@ampacol \or
+ \@acolampacol \or \@acolampacol \fi}
+\def\@tabclassviii#1{\@addtopreamble{\catcode`#1=4 \hfil\ignorespaces\@sharp
+ \unskip&#1\@sharp\unskip\hfil}}
+\def\@arrayclassviii#1{\@addtopreamble{\catcode`#1=4 \hfil$\relax\@sharp$&
+ $\relax.\@sharp$\hfil}}
diff --git a/macros/latex209/contrib/misc/kalender.tex b/macros/latex209/contrib/misc/kalender.tex
new file mode 100644
index 0000000000..cb5b2293f7
--- /dev/null
+++ b/macros/latex209/contrib/misc/kalender.tex
@@ -0,0 +1,327 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Tages-Termin-Kalender erstellen %
+% von Andreas Schrell %
+% Windhoevel 2 %
+% 5600 Wuppertal 2 %
+% Tel. 0202/666889 %
+% E-Mail: ma107 at dhafeu11.bitnet %
+% Version 1.0 vom 9.10.1991 %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentstyle{article}
+
+%
+% Wochentag zu einem Datum ermitteln
+%
+\makeatletter
+\newcount\@tag \newcount\@monat \newcount\@jahr
+\newcount\@ja \newcount\@jb \newcount\@ha
+\newcount\@hb \newcount\@hc \newcount\@b \newcount\@f
+\newcount\Tag \newcount\Monat \newcount\Jahr \newcount\WT
+\newcount\Woche \newcount\JT \newcount\RT \newcount\MAXT
+\newcount\WTM
+
+\def\Wochentag #1.#2.#3.{\@tag=#1\@monat=#2\@jahr=#3
+\Tag#1\Monat#2\Jahr#3
+\ifnum\@jahr<100\advance\@jahr by 1900\else\fi
+\ifnum\@monat<3 % if monat<3
+ \advance\@monat by 10 % monat:=monat+10
+ \advance\@jahr by -1 % jahr:=jahr-1
+\else % else
+ \advance\@monat by -2 % monat:=monat-2
+\fi % fi
+\@ja=\@jahr\divide\@ja by 100 % ja:=jahr/100
+\@jb=-\@ja\multiply\@jb by 100
+\advance \@jb by \@jahr % jb:=jahr-ja*100
+\@ha=\@monat\multiply\@ha by 13
+\advance\@ha by -1 % ha:=13*monat-1
+\divide\@ha by 5 % ha:=ha/5
+\@hb=\@jb\divide\@hb by 4 % hb:=jb/4
+\@hc=\@ja\divide\@hc by 4 % hc:=ja/4
+\@b=\@ha\advance\@b by \@hb
+\advance\@b by \@hc % b:=ha+hb+hc
+\@f=\@b\advance\@f by \@jb
+\advance\@f by \@tag % f:=b+jb+tag
+\multiply \@ja by 2
+\advance\@f by -\@ja % f:=f-2*ja
+\maketag}
+
+\newif\ifFeiertag
+\newif\ifMK \MKfalse
+\def\FTT #1 #2 #3 {\ifnum\Monat=#2 \ifnum\Tag=#1
+ \Feiertagtrue\def\Feiertagname{#3}%
+\fi\fi}
+\def\FTM #1 #2 #3 {\ifnum\Monat=#2 \ifnum\WTC=#1
+ \Feiertagtrue\def\Feiertagname{#3}%
+\fi\fi}
+\def\testFeiertage{\Feiertagfalse
+ \ifMK\let\FT\FTM\else\let\FT\FTT\fi
+ \FT 1 1 Neujahr
+ \FT 1 5 Maifeiertag
+ \FT 3 10 {Tag der deutschen Einheit}
+ \FT 1 11 Allerheiligen
+ \FT 25 12 1.~Weihnachtstag
+ \FT 26 12 2.~Weihnachtstag
+\ifnum\Jahr=1991
+ \FT 20 11 Bu\ss-~und~Bettag
+\fi
+\ifnum\Jahr=1992
+ \FT 17 4 Karfreitag
+ \FT 19 4 Ostern
+ \FT 20 4 Ostern
+ \FT 28 5 Himmelfahrt
+ \FT 7 6 Pfingsten
+ \FT 8 6 Pfingsten
+ \FT 18 6 Fronleichnam
+ \FT 18 11 Bu\ss-~und~Bettag
+\fi
+\ifnum\Jahr=1993
+ \FT 9 4 Karfreitag
+ \FT 11 4 Ostern
+ \FT 12 4 Ostern
+ \FT 20 5 Himmelfahrt
+ \FT 30 5 Pfingsten
+ \FT 31 5 Pfingsten
+ \FT 10 6 Fronleichnam
+ \FT 17 11 Bu\ss-~und~Bettag
+\fi
+\ifnum\Jahr=1994
+ \FT 1 4 Karfreitag
+ \FT 3 4 Ostern
+ \FT 4 4 Ostern
+ \FT 12 5 Himmelfahrt
+ \FT 22 5 Pfingsten
+ \FT 23 5 Pfingsten
+ \FT 2 6 Fronleichnam
+ \FT 16 11 Bu\ss-~und~Bettag
+\fi
+}
+
+\def\MAXTberechnen{
+ \MAXT=
+ \ifcase\Monat
+ -1\or 31\or 28\or 31\or 30\or 31\or 30\or 31\or 31\or
+ 30\or 31\or 30\or 31\else \ddt \fi\relax
+ \ifnum\Monat=2
+ \@ha=\Jahr \divide\@ha by 4 \multiply \@ha by 4
+ \ifnum\@ha=\Jahr \advance \MAXT by 1\fi
+ \@ha=\Jahr \divide\@ha by 100 \multiply \@ha by 100
+ \ifnum\@ha=\Jahr \advance \MAXT by -1\fi
+ \@ha=\Jahr \divide\@ha by 400 \multiply \@ha by 400
+ \ifnum\@ha=\Jahr \advance \MAXT by 1\fi
+ \fi\relax}
+
+\def\maketag{\@ha=\@f
+\divide\@ha by 7
+\multiply\@ha by 7
+\advance\@f by -\@ha % f:= f mod 7
+\WT=\@f
+\edef\Tagname{\ifcase\@f
+ Sonntag\or Montag\or Dienstag\or Mittwoch\or Donnerstag\or
+ Freitag\or Samstag\else ????????\fi}
+\edef\Monatname{\ifcase\Monat \ddt\or
+ Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
+ Juli\or August\or September\or Oktober\or November\or
+ Dezember\else ????????\fi}}
+
+\def\nexttag{\advance\@f by 1
+ \advance\JT by 1 \advance\RT by -1
+ \advance\Tag by 1
+ \ifnum\Tag>\MAXT
+ \Tag=1
+ \advance\Monat by 1
+ \ifnum\Monat>12 \Monat=1 \advance\Jahr by 1 \fi
+ \MAXTberechnen
+ \fi\relax
+ \maketag
+ \ifnum\WT=1\advance\Woche by 1\fi\relax
+ \ifnum\Tag=1 \WTM=\WT\fi}
+
+\newcount\Malc \newcount\WTC
+
+\newbox\Monatsbox
+
+\def\Monatskalender{\maketag\MKtrue
+ \WTC=\WTM \ifnum\WTC=0\relax\WTC=7\fi
+ \global\Malc=\WTC
+\setbox\Monatsbox=\vbox{\hsize=4cm\small
+ \noindent\setbox0\hbox{00}\underline{\strut
+ \hbox to \wd0{\hss Mo\hss}\ \ \hbox to \wd0{\hss Di\hss}\ \
+ \hbox to \wd0{\hss Mi\hss}\ \ \hbox to \wd0{\hss Do\hss}\ \
+ \hbox to \wd0{\hss Fr\hss}\ \ \hbox to \wd0{\hss Sa\hss}\ \
+ \hbox to \wd0{\hss\bf So\hss}}\vskip 1mm
+ \noindent
+ \loop
+ \ifnum\WTC>1\relax
+ \advance\WTC by -1
+ \phantom{00}\ \
+ \repeat
+ \WTC=1
+ \loop
+ {\testFeiertage
+ \ifFeiertag\global\let\FTF\it\else\global\let\FTF\relax\fi}%
+ \ifnum\WTC<\MAXT\relax
+ {\ifnum\Malc=7\bf\fi\FTF
+ \ifnum\WTC<10\relax\phantom{0}\fi
+ \ifnum\Tag=\WTC\underline{\the\WTC}\else\the\WTC\fi}%
+ {\ifnum\Malc=7\relax \\ \global\Malc=0\else\ \ \fi}%
+ \global\advance\Malc by 1
+ \advance\WTC by 1
+ \repeat{\ifnum\Malc=7\bf\fi\FTF
+ \ifnum\Tag=\WTC\underline{\the\WTC}\else\the\WTC\fi}\par}\MKfalse}
+
+\arrayrulewidth=0.00333in
+\tabcolsep=2pt \doublerulesep=0pt
+\fboxrule=\arrayrulewidth
+\fboxsep=-\fboxrule
+\pagestyle{empty}
+\oddsidemargin=-1cm
+\topmargin=-1cm
+\advance\vsize by 1cm
+\headheight=0pt
+\headsep=0pt
+
+\def\Initialisierung{\newbox\BoxA
+ \setbox\BoxA\hbox{\begin{tabular*}{12cm}%
+ {|l|@{\extracolsep{\fill}}l@{\extracolsep{0pt}}*{6}{|c}|}
+ \hline
+ \vrule height11pt width0pt
+ Uhr & T\"atigkeit & P & T & S & Pri & Zeit & ok \\
+ \hline\hline
+ \phantom{0}\lower1pt\hbox{7:}\phantom{00}
+ & \hbox to 7cm{\hss} & & & & & & \\ \hline
+ \phantom{0}\lower1pt\hbox{8:} & & & & & & & \\ \hline
+ \phantom{0}\lower1pt\hbox{9:} & & & & & & & \\ \hline
+ \lower1pt\hbox{10:} & & & & & & & \\ \hline
+ \lower1pt\hbox{11:} & & & & & & & \\ \hline
+ \lower1pt\hbox{12:} & & & & & & & \\ \hline
+ \lower1pt\hbox{13:} & & & & & & & \\ \hline
+ \lower1pt\hbox{14:} & & & & & & & \\ \hline
+ \lower1pt\hbox{15:} & & & & & & & \\ \hline
+ \lower1pt\hbox{16:} & & & & & & & \\ \hline
+ \lower1pt\hbox{17:} & & & & & & & \\ \hline
+ \lower1pt\hbox{18:} & & & & & & & \\ \hline
+ \lower1pt\hbox{19:} & & & & & & & \\ \hline
+ \lower1pt\hbox{20:} & & & & & & & \\ \hline
+ \lower1pt\hbox{21:} & & & & & & & \\ \hline
+ \lower1pt\hbox{22:} & & & & & & & \\ \hline \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \multicolumn{2}{|l|}{} & & & & & & \\ \hline
+ \end{tabular*}}}
+
+\def\Tageskalender{\Monatskalender
+ \testFeiertage
+ \vbox{\ifFeiertag\vglue-7mm\fi
+ \ifFeiertag\hbox{\framebox{\vbox to 7mm{\vss\hbox to 12cm{\hss
+ \bf\Feiertagname\hss}\vss}}}\nointerlineskip\fi
+ \hbox{%
+ \framebox{\vbox to 7mm{\vss\hbox to 4cm{\hss
+ \Large\bf\vrule height13pt width0pt\Tagname\hss}\vss}}%
+ \framebox{\vbox to 7mm{\vss\hbox to 8cm{\hss
+ \Large\bf\vrule height13pt width0pt\relax \the\Tag.
+ \Monatname\ (\the\Monat)\ \ \the\Jahr\hss}\vss}}}%
+ \nointerlineskip
+ \hbox{\bf
+ \framebox{\vbox to 7mm{\vss
+ \hbox to 4cm{\hss\vrule height12pt width0pt
+ \the\Woche. Woche\hss}\vss}}%
+ \framebox{\vbox to 7mm{\vss\hbox to 4cm{\hss\vrule height12pt width0pt
+ \the\JT. Tag\hss}\vss}}%
+ \framebox{\vbox to 7mm{\vss\hbox to 4cm{\hss\vrule height12pt width0pt
+ \the\RT\ Resttage
+ \hss}\vss}}}%
+ \vskip 3mm
+ \copy\BoxA
+ \vskip 3mm
+ \hbox{\vbox{\hbox{%
+ \framebox{\vbox to 2cm{\hbox to 7cm{\ Gedenktage:
+ \vrule height11pt width0pt\strut\hss}
+ \hrule height 0.00333in\vss
+ \hrule height 0.00333in\vss
+ \hrule height 0.00333in\vss
+ \hrule height 0.00333in\vss
+}}}%
+ \offinterlineskip
+ \hbox{%
+ \framebox{\vbox to 2cm{\hbox to 7cm{\ Notizen:
+ \vrule height11pt width0pt\strut\hss}
+ \hrule height 0.00333in\vss
+ \hrule height 0.00333in\vss
+ \hrule height 0.00333in\vss
+ \hrule height 0.00333in\vss
+}}}}%
+ \framebox{\vbox to 4cm{\vss
+ \hbox to 5cm{\hss\vbox{\hsize=4cm
+ \hbox{\bf\Monatname\ \the\Jahr}\vskip 4mm
+ \copy\Monatsbox\par}\hss}\vss}}}}%
+}
+
+
+%%%%%%%%%%%%%%%%
+% Es geht los: %
+%%%%%%%%%%%%%%%%
+
+\message{Anfangsdatum (xx.xx.xxxx): }
+\read-1 to \AFD
+
+\newcount\AT
+\message{Anzahl der Tage (eine Seite pro Tag!): }
+\read-1 to \AZT
+\AT=\AZT
+
+\newcount\startt \newcount\startm
+\newif\ifweiter
+
+\expandafter\Wochentag \AFD.
+
+\startt=\Tag\startm=\Monat
+\Tag=1\Monat=1\JT=1\Woche=1
+\Wochentag 1.1.\the\Jahr.
+\MAXTberechnen
+
+\RT=364
+\@ha=\Jahr \divide\@ha by 4 \multiply \@ha by 4
+\ifnum\@ha=\Jahr \advance \RT by 1\fi
+\@ha=\Jahr \divide\@ha by 100 \multiply \@ha by 100
+\ifnum\@ha=\Jahr \advance \RT by -1\fi
+\@ha=\Jahr \divide\@ha by 400 \multiply \@ha by 400
+\ifnum\@ha=\Jahr \advance \RT by 1\fi
+
+\message{Ich berechne die Daten des ersten Tages. }
+\message{Bitte etwas Geduld. }
+\loop
+{\global\weitertrue
+ \ifnum\Monat=\startm
+ \ifnum\Tag=\startt
+ \global\weiterfalse
+ \fi
+ \fi}%
+\ifweiter %\fi
+ \nexttag
+\repeat
+
+\Initialisierung
+
+\makeatother
+
+\begin{document}
+
+\loop
+\ifnum\AT>0 %\fi
+ \advance\AT by -1
+ \message{(\Tagname, \the\Tag. \Monatname\space \the\Jahr,
+ noch zu setzen: \the\AT\space\ifnum\AT=1 Tag\else Tage\fi) ........ }
+ \Tageskalender\clearpage
+ \nexttag
+\repeat
+
+\end{document}
diff --git a/macros/latex209/contrib/misc/labels.sty b/macros/latex209/contrib/misc/labels.sty
new file mode 100644
index 0000000000..2b2f4e5022
--- /dev/null
+++ b/macros/latex209/contrib/misc/labels.sty
@@ -0,0 +1,80 @@
+%%% ======================================================================
+%%% @LaTeX-style{
+%%% filename = "labels.sty",
+%%% version = "1.0",
+%%% date = "17 July 1992",
+%%% time = "13:39:24.74 +0100",
+%%% author = "Norman Gray",
+%%% address = "Department of Physics
+%%% Open University
+%%% Milton Keynes
+%%% MK7 6AA, UK",
+%%% e-mail = "N.O.Gray@open.ac.uk (Internet)",
+%%% telephone = "+44 908 652279",
+%%% FAX = "+44 908 653744",
+%%% archived = "Aston, SHSU",
+%%% keywords = "Labels, cross-referencing",
+%%% abstract = "If this style file is included amongst the
+%%% \documentstyle options, all uses of the \label
+%%% command within the LaTeX file will have the label
+%%% name printed in the margin (except when used in
+%%% a \caption, when it appears in the text).",
+%%% codetable = "ISO/Ascii",
+%%% checksum = "60488 80 330 3319",
+%%% docstring = "Display label names in margin
+%%%
+%%% 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."
+%%% }
+%%% ======================================================================
+
+\let\@@eqnnum=\@eqnnum
+\def\@eqnnum{\@@eqnnum
+% + |\@eqnnum| will produce a note, sticking into the margin beside
+% the equation number, which has the equation's label and number.
+% |\labeln@me| is initialised to |\relax|, redefined within the
+% |\label| macro, and reset to |\relax| here. If it's already equal
+% to |\relax| here, the equation number hasn't been labelled, and so
+% `???' is put in the margin. \-
+\if\labeln@me\relax
+ \margintext{???}%
+\else
+ \margintext{\labeln@me}\global\def\labeln@me{\relax}%
+\fi}
+
+\let\@@makecaption\@makecaption
+\let\@label\label
+\def\@gobblethree#1#2#3{}
+\def\prlabelname#1{% expansion is label name #1 with all catcodes `other'
+\expandafter\expandafter\expandafter\@gobblethree
+ \expandafter\string\csname r@#1\endcsname}
+ % use \r@#1, rather then just \#1 to avoid defining new control sequence
+
+\long\def\@makecaption#1#2{{\def\label##1{{\nintt\{\prlabelname{##1}\}\space
+ }\@label{##1}}\@@makecaption{#1}{#2}}}
+\def\label#1{\@bsphack\@label{#1}%
+\ifmmode
+ \xdef\labeln@me{\prlabelname{#1}}% label name produced with equation number
+\else
+{\setbox0=\vbox to 0pt{\vss\hbox to \hsize{\hfill
+ \margintext{\prlabelname{#1}}}}\dp0=0pt%
+\ifvmode
+ \nointerlineskip\box0\nobreak % fix this box to next one
+\else
+ \vadjust{\box0\nobreak}%
+\fi}%
+\fi
+\@esphack}
+
+%\if@twoside
+% \def\margintext#1{\ifodd\c@page\rlap{\nintt\quad\{#1\}}\else
+% \llap{\nintt\{#1\}\quad\hskip\textwidth}\fi}
+%\else
+% \def\margintext#1{\rlap{\nintt\quad\{#1\}}}
+%\fi
+\def\margintext#1{\rlap{\sevit\quad\{#1\}}}
+\global\def\labeln@me{\relax}
diff --git a/macros/latex209/contrib/misc/lablst.sty b/macros/latex209/contrib/misc/lablst.sty
new file mode 100644
index 0000000000..bacd7e8787
--- /dev/null
+++ b/macros/latex209/contrib/misc/lablst.sty
@@ -0,0 +1,55 @@
+% LABLST.STY -- A document style option for printing label definitions at
+% the end of the document. Use with
+
+% \documentstyle[11pt,lablst]{article}
+
+% for example. WARNING: This redefines \end{document} which may break
+% some document styles.
+
+% This borrows heavily from:
+% LABLST.TEX -- A LaTeX input file for printing label definitions.
+% Copyright (c) 1985 by Leslie Lamport (5 January 1985).
+
+% Putting this functionality into a style option turns out to be much more
+% convenient for users of TeXtures, because of the way files are organized
+% with that system.
+
+% This file was put together on October 18, 1989 by:
+% Charles Karney Phone: +1 609 243 2607
+% Plasma Physics Laboratory FAX: +1 609 243 2160
+% Princeton University MFEnet: Karney@PPC.MFENET
+% PO Box 451 Internet: Karney%PPC.MFENET@CCC.NMFECC.GOV
+% Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFENET@LBL.BITNET
+
+
+\def\enddocument{\@checkend{document}\clearpage\begingroup
+\if@filesw \immediate\closeout\@mainaux
+\@lablst % This line is the sole modification to \enddocument
+\def\global\@namedef##1##2{}\def\newlabel{\@testdef r}%
+\def\bibcite{\@testdef b}\@tempswafalse \makeatletter\input \jobname.aux
+\if@tempswa \@warning{Label(s) may have changed. Rerun to get
+cross-references right}\fi\fi\endgroup\deadcycles\z@\@@end}
+
+\def\@lablst{
+ \parindent 0pt \parskip 0pt
+ \xpt \baselineskip 12pt
+ \newwrite \labfile \relax
+ \immediate\openout \labfile =\jobname.lab\relax
+ {\def\toc{toc}
+ \def\@writefile##1##2{\def\temp{##1}\ifx\temp\toc
+ \immediate\write\labfile{##2}\fi}
+ \def\newlabel##1##2{\immediate\write\labfile{\string\newlabel{##1}{##2}}}
+ \def\bibcite##1##2{\immediate\write\labfile{\string\bibcite{##1}{##2}}}
+ \makeatletter
+ \input \jobname.aux }
+ \immediate\closeout\labfile
+ \def\newlabel##1##2{\par \hbox to \textwidth
+ {\hfill\makebox[10em][l]{\tt ##1}\makebox[3.5em][l]{\first
+ ##2}\hspace{1em}Page:\makebox[3em][r]{\second ##2}\hspace{4em}}}
+ \def\first##1##2{##1}
+ \def\second##1##2{##2}
+ \def\bibcite##1##2{\par\makebox[2in][l]{\tt ##1}[##2]}
+ \input \jobname.lab
+ \clearpage
+}
+\endinput
diff --git a/macros/latex209/contrib/misc/laioobr.sty b/macros/latex209/contrib/misc/laioobr.sty
new file mode 100644
index 0000000000..2749aa7e35
--- /dev/null
+++ b/macros/latex209/contrib/misc/laioobr.sty
@@ -0,0 +1,800 @@
+% laioobr.sty
+% briefstijl voor laioo
+%
+% Auteur: Werenfried Spit
+% First Version: 2 januari 1990
+% Complete revision, including work from brief.sty
+\def\stijlversie{1.3}\def\stijldatum{6 november 1990}
+\gdef\at{\makeatletter @\makeatother}
+%
+% 1.3 verbeteringen uit brief.sty <1.1> ingevoerd (WS)
+%
+\typeout{Document Style 'LaiooBrief'. Versie <\stijlversie>, <\stijldatum>}
+
+\overfullrule 0pt
+\def\@ptsize{0}
+\@namedef{ds@10pt}{\def\@ptsize{0}}
+\@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}}
+\@namedef{ds@twoside}{\@twosidetrue}
+\@twosidefalse
+\def\ds@draft{\overfullrule 15pt}
+\@namedef{ds@a4}{\message{De A4-optie is niet nodig: ik doe de papierafmetingen zelf.}}
+\@namedef{ds@A4}{\relax}
+\@namedef{ds@dutch}{\message{De dutch-optie is niet nodig}}
+\@namedef{ds@dutch}{\relax}
+\@namedef{ds@sober}{\message{De sober-optie is niet nodig}}
+\@namedef{ds@sober}{\relax}
+\@namedef{ds@datehead}{\message{De datehead-optie is niet nodig}}
+\@namedef{ds@datehead}{\relax}
+
+
+\newif\if@typhulp \def\ds@typhulp{\@typhulptrue}
+\newif\if@streepjes \def\ds@streepjes{\@streepjestrue}
+\newif\if@typhulp \def\ds@notyphulp{\@typhulpfalse}
+\newif\if@streepjes \def\ds@nostreepjes{\@streepjesfalse}
+\newif\if@adresrechts \def\ds@adresrechts{\@adresrechtstrue}
+\newif\if@muchfonts \def\ds@muchfonts{\@muchfontstrue} % (WS) ivm ruimte
+ \def\ds@notmuchfonts{\@muchfontsfalse}
+\@muchfontstrue
+\newif\if@onepage \def\ds@onepage{\@onepagetrue}
+\@onepagefalse
+
+\newcount\language \language=0
+ \input dutch.sty % Nederlands
+\def\ds@engels{\language=1 \input english.sty}
+\def\ds@USengels{\language=2 \input english.sty}
+\def\ds@duits{\language=3 \input german.sty}
+
+\@options
+
+
+
+
+\lineskip 1pt \normallineskip 1pt
+\def\baselinestretch{1}
+
+%%%%%%%%%%%%%%%%%%%%%%% point size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifcase \@ptsize\relax
+\def\@normalsize{\@setsize\normalsize{12pt}\xpt\@xpt
+\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt}
+\def\small{\@setsize\small{11pt}\ixpt\@ixpt
+\abovedisplayskip 8.5pt plus 3pt minus 4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus2pt\belowdisplayshortskip 4pt plus2pt minus 2pt}
+\def\footnotesize{\@setsize\footnotesize{9.5pt}\viiipt\@viiipt
+\abovedisplayskip 6pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 3pt plus 1pt minus
+2pt}
+\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
+\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
+\or
+\def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
+\abovedisplayskip 11pt plus3pt minus6pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6.5pt plus3.5pt
+minus3pt}
+\def\small{\@setsize\small{12pt}\xpt\@xpt
+\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt}
+\def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
+\abovedisplayskip 8pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 4pt plus 2pt minus
+2pt}
+\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
+\or
+\def\@normalsize{\@setsize\normalsize{15pt}\xiipt\@xiipt
+\abovedisplayskip 12pt plus3pt minus7pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6.5pt plus3.5pt
+minus3pt}
+\def\small{\@setsize\small{13.6pt}\xipt\@xipt
+\abovedisplayskip 11pt plus3pt minus6pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6.5pt plus3.5pt
+minus3pt}
+\def\footnotesize{\@setsize\footnotesize{12pt}\xpt\@xpt
+\abovedisplayskip 10pt plus2pt minus5pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 6pt plus3pt minus3pt}
+\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{18pt}\xivpt\@xivpt}
+\def\Large{\@setsize\Large{22pt}\xviipt\@xviipt}
+\def\LARGE{\@setsize\LARGE{25pt}\xxpt\@xxpt}
+\def\huge{\@setsize\huge{30pt}\xxvpt\@xxvpt}
+\let\Huge=\huge
+\fi
+\normalsize
+
+%%%%%%%%%%%%%%%%%%%%%% Paper Size %%%%%%%%%%%%%%%%%%%%%%%%%%
+\oddsidemargin=7.6mm
+\evensidemargin=\oddsidemargin
+%V rechter marge is volgens NEN 10mm; voor symmetrie lijkt 33 mij beter.
+\textwidth=134mm
+% \@rightskip=0cm plus 5cm \rightskip=\@rightskip % uitgevulde paragrafen (WS)
+\marginparwidth=0pt \marginparsep=0pt \marginparpush=0pt
+\topmargin-12.4mm
+%V het briefhoofd komt tot 43mm van de bovenkant van het papier
+\headheight=15mm \headsep=0mm
+\newdimen\@firstheadheight \@firstheadheight=39mm
+\newdimen\@otherheadheight \@otherheadheight=\headheight
+\newdimen\@otherheadsep \@otherheadsep=2mm
+\newdimen\@vervolgsep
+\newdimen\footsep \footsep=2.5cm %%analoog aan headsep
+\newdimen\@firsttextheight \@firsttextheight=243mm % eigenlijk 203mm:
+\newdimen\@firstpageskip \@firstpageskip=40mm
+\newdimen\@othertextheight \@othertextheight=243mm
+\textheight=\@firsttextheight % op het timmermansoog
+\if@onepage\@othertextheight=\textheight\fi
+\columnsep 10pt \columnseprule 0pt %V twee koloms brieven? belachelijk!
+\raggedbottom %% hm! zonder raggedbottom gaat het slot mis.
+\footnotesep 12pt \skip\footins 10pt plus 2pt minus 4pt
+\floatsep 12pt plus 2pt minus 2pt
+\textfloatsep 20pt plus 2pt minus 4pt
+\intextsep 12pt plus 2pt minus 2pt
+\dblfloatsep 12pt plus 2pt minus 2pt
+\dbltextfloatsep 20pt plus 2pt minus 4pt
+\@maxsep 20pt
+\@dblmaxsep 20pt
+\@fptop 0pt plus 1fil
+\@fpsep 8pt plus 2fil
+\@fpbot 0pt plus 1fil
+\@dblfptop 0pt plus 1fil
+\@dblfpsep 8pt plus 2fil
+\@dblfpbot 0pt plus 1fil
+
+
+\newdimen\longindentation
+\longindentation=0.4\textwidth
+\newdimen\indentedwidth
+\indentedwidth=\textwidth
+\advance\indentedwidth -\longindentation
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%% opening / afsluiting %%%%%%%%%%%%%%%%%%%%%
+\if@muchfonts \gdef\refkopfont{\footnotesize\sf} % (WS)
+ \gdef\kleinvet{\footnotesize\sf}
+ \gdef\headfont{\large\sf}
+\else \font\refkopfont=cmssq8
+ \font\kleinvet=cmbx7
+ \gdef\headfont{\Large\sf}
+\fi
+
+\def\opening#1{\thispagestyle{firstpage}
+ \begin{figure}[b]{\vskip \@firstpageskip}\end{figure} % de laatste 4cm moeten leeg zijn ivm de vergrote kop en voet
+ \adresveld
+ \prevdepth=-1000pt %% ????
+ \vskip 2mm
+ \if@typhulp \referentieregels \else \referentieblok \fi
+ \vskip 10mm
+ \relax#1
+ \par\vspace*{4.5mm}\nobreak}
+\def\ondertekening#1{\def\fromsig{#1}}\def\fromsig{}
+%V een aanzienlijke verbetering op de LL constructie: nu kun je
+%V de ondertekening na de afsluiting geven.
+\long\def\afsluiting#1{\par\nobreak\vspace{\parskip}
+ \stopbreaks \noindent
+ \ifx\@empty\fromsig
+ \def\ondertekening##1{\def\fromsig{##1}
+ \hskip\longindentation \parbox{.5\textwidth}{\raggedright
+ \ignorespaces #1 \\[2\baselineskip] \fromsig \strut}}
+ \else \parbox{.5\textwidth}{\raggedright
+ \hskip\longindentation \ignorespaces #1 \\[2\parskip]
+ \fromsig \strut}
+ \fi \par}
+
+
+\def\betreft#1{\def\@subject{#1}} \def\@subject{}
+\def\ps{\par\startbreaks}
+\def\cc#1{\par\noindent
+ \parbox[t]{\textwidth}{\@hangfrom{\rm cc: }\ignorespaces
+ #1\strut}\par}
+\def\bijlage#1{\par\noindent
+ \parbox[t]{\textwidth}{\@hangfrom{\rm \bijlagetekst\ }\ignorespaces
+ #1\strut}\par}
+\def\bijlagen#1{\par\noindent
+ \parbox[t]{\textwidth}{\@hangfrom{\rm \bijlagentekst\ }\ignorespaces
+ #1\strut}\par}
+\def\stopletter{}
+
+
+\def\returnaddress{}
+\newcount\labelcount
+
+\def\startlabels{\labelcount=0 \baselineskip=0pt \lineskip=0pt
+\pagestyle{empty}
+\let\@texttop=\relax
+\topmargin -25mm
+\headsep 0pt
+\oddsidemargin -35pt
+\evensidemargin -35pt
+\textheight 297mm
+\@colht\textheight \@colroom\textheight \vsize\textheight
+\textwidth 210mm
+\columnsep 3.79mm
+\baselineskip=0pt
+\lineskip=0pt
+\boxmaxdepth=0pt
+\twocolumn\relax}
+% \def\mlabel#1#2{\setbox0\vbox{%
+% \parbox[b]{3.6in}{\strut\ignorespaces #2}}
+% \vbox to 2in{\vss \box0 \vss}}
+\def\mlabel#1#2{\setbox0\vbox{%
+\parbox[b]{90mm}{\raggedright\strut\ignorespaces #2}}
+ \vbox to 37.125mm{\vss \box0 \vss}}
+
+\long\def\brief#1{\newpage
+ \c@page\@ne
+ \interlinepenalty=200 \@processto{#1}
+ \@defrefveld{\@Ad}{\geadresseerdetekst}{\toname}
+ \ifdim\wd\@Dt=0cm \@defrefveld{\@Dt}{\datumtekst}{\vandaag}\fi
+%% misschien headheight opvoeren en textheight verminderen
+%% voor de vervolgbladen. Nb: op het eerste blad mag niet met
+%% de textheight geklooid worden, omdat dan het adres op de
+%% verkeerde hoogte kan komen.
+ {\setbox\@tempboxa=\vervolghoofd
+ \@tempdima=\ht\@tempboxa
+ \advance\@tempdima by -\@otherheadheight
+ \ifdim\@tempdima>0cm
+ \global\advance\@otherheadheight by \@tempdima
+ \global\advance\@othertextheight by -\@tempdima \fi}
+%% idem voetregel bekijken
+ {\setbox\@tempboxa=\vbox{\voetregel}
+ \global\footskip=\ht\@tempboxa %%moet de teksthoogte niet minder worden?
+ \global\advance\footskip by \footsep}
+ } %V maar niet als die er als is!!!
+\def\endbrief{\stopletter\@@par\pagebreak\@@par
+ \if@filesw \begingroup
+ \def\protect{\string} \let\\=\relax
+ \def\protect##1{\string##1\space}
+ \immediate\write\@auxout{\string\mlabel{\returnaddress}{\toname
+ \\\toaddress}}
+ \endgroup \fi
+ %% en nu forceren dat elke brief zijn eigen referenties heeft.
+ \begingroup \setbox\@tempboxa=\box\@UB \setbox\@tempboxa=\box\@UK
+ \setbox\@tempboxa=\box\@OK \endgroup
+ }
+
+\long\def\brief#1{\newpage
+ \c@page\@ne
+ \interlinepenalty=200 \@processto{#1}}
+\def\endletter{\stopletter\@@par\pagebreak\@@par
+\if@filesw
+\begingroup
+\def\protect{\string}
+\let\\=\relax
+\def\protect##1{\string##1\space}
+\immediate\write\@auxout{\string\mlabel{\returnaddress}{\toname
+\\\toaddress}}
+\endgroup
+\fi}
+\long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty
+ \else \@yproc #1@@@\fi}
+\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
+\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
+\def\stopbreaks{\interlinepenalty \@M
+ \def\par{\@@par\nobreak}\let\\=\@nobreakcr
+ \let\vspace\@nobreakvspace}
+\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
+\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
+ \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
+\def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
+\def\startbreaks{\let\\=\@normalcr
+ \interlinepenalty 200\def\par{\@@par\penalty 200}}
+
+\def\name#1{\def\fromname{#1}}
+\def\signature#1{\def\fromsig{#1}}
+\def\fromsig{}
+\long\def\address#1{\def\fromaddress{#1}}
+\def\fromaddress{}
+\def\stuknummer#1{
+ \def\@stuknummer{#1}
+ \def\@stuknummerbox{
+ \raisebox{18mm}{\hbox to 4\refveldbreedte{ \hfill \fbox{\footnotesize\sf \@stukname ~ #1} }}
+ }}
+\def\@stuknummer{}
+\def\@stuknummerbox{}
+
+%%%%%%%%%%%%%%%%%%%%%%%% adresveld %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef\@hss{\hskip 0cm plus 1filll minus 1filll\relax}
+
+\newdimen\adresveldbreedte
+\newif\if@antwoordadres
+\def\antwoordadres#1{\@antwoordadrestrue\def\@antwoordadres{#1}}
+\def\@antwoordadres{}
+\def\adresveld{\hbox{}\kern-\topskip
+ \kern-12mm
+ \bgroup% \baselineskip=0pt %% dit voorkomt tonnen problemen.
+ \lineskip=0pt %% tonnetjes.
+ \if@adresrechts \adresveldbreedte=4\refveldbreedte
+ \advance\adresveldbreedte by -76mm
+ \def\@tempa{\moveright 76mm}
+ \else \let\@tempa\relax \adresveldbreedte=83mm\fi
+ \setbox\@tempboxa= % geadresseerde plus adres
+ \vtop{\hsize=\adresveldbreedte \@normalsize
+ \rightskip=0cm plus \adresveldbreedte
+ \let\\=\@nobreakcr \toname \\ \toaddress}
+ \if@typhulp {\footnotesize\sf\hrule \@height.05ex \@width\adresveldbreedte} \fi
+ \if@antwoordadres\@tempa\vbox to 0cm{
+ \hbox to \adresveldbreedte{\kleinvet
+ \def\\{\unskip\enspace$\bullet$\enspace\ignorespaces}%
+ \@antwoordadres\hfil}\kern2pt
+ \hrule \vss}\fi
+% \if@typhulp \@tempa\llap{\vbox to 0cm
+% {\vskip9mm\streepje\vss}} \fi
+ \kern 7mm \kern-\ht\@tempboxa \@tempdima=\dp\@tempboxa%
+ \if \@tempboxa > 27mm \typeout{Overfull addressbox}\fi
+ \@tempa\box\@tempboxa \kern-\@tempdima
+ \vskip27mm % totale hoogte adresbox 34mm
+ \hrule \@height.05ex \@width4\refveldbreedte
+ \egroup}
+
+
+%%%%%%%%%%%%%%%%%%%%%% referentieblok %%%%%%%%%%%%%%%%%%%%%%%%%%
+\newdimen\refveldbreedte
+\refveldbreedte=38mm %% 3/2 inch. zie NEN 3516
+\newdimen\halfrefveldbreedte
+\halfrefveldbreedte=25mm
+
+\def\@defrefveld#1#2#3{\setbox#1=\@horrefveld{#2}{#3}}
+\def\@defverrefveld#1#2#3{\setbox#1=\@verrefveld{#2}{#3}}
+\def\@horrefveld#1#2{\hbox{\refkopfont
+ \hbox to\halfrefveldbreedte{#1 \hss}
+ \hbox{#2} }}
+% \def\@refveld#1#2{\vtop{\hsize=\refveldbreedte \parskip=0cm
+% \lineskiplimit=0cm \baselineskip=12pt
+% \rightskip=0cm plus \refveldbreedte
+% minus .5\refveldbreedte
+% \vbox{\refkopfont\baselineskip=10pt #1\strut}
+% #2}}
+\def\@verrefveld#1#2{\hbox to\refveldbreedte{
+ \vtop{\hsize=\refveldbreedte\parskip=0cm%
+ \refkopfont%
+ \hbox to \hsize{#1 \hfil\strut}
+ \viiipt\sf #2 }\hss}}
+\newbox\@UB \newbox\@UK \newbox\@OK \newbox\@Dt \newbox\@Su
+\def\uwbriefvan#1{\@defrefveld{\@UB}{\uwbrieftekst}{#1}}
+\def\uwkenmerk#1{\@defrefveld{\@UK}{\uwkenmerktekst}{#1}}
+\def\onskenmerk#1{\@defrefveld{\@OK}{\onskenmerktekst}{#1}}
+\def\onderwerp#1{\@defrefveld{\@Su}{\betrefttekst}{#1}}
+\def\datum#1{\def\@tempa{}\def\@tempb{#1}\ifx\@tempa\@tempb
+ \setbox\@Dt\hbox{ }\else\@defrefveld{\@Dt}{\datumtekst}{#1}\fi\def\@datum{#1}}
+%V Datum word geinitialiseerd op \vandaag in \brief
+%V als de gebruiker verder niets doet, als hij een leeg argument opgeeft
+%V verschijnt er in het geheel geen datum.
+
+\def\referentieblok{\vbox{\raggedright\refkopfont
+ {\copy\@Dt}
+ {\copy\@UB}
+ {\copy\@UK}
+ {\copy\@OK}
+ {\copy\@Su}
+ }}
+\def\referentieregels{\vbox{
+ \hbox{\@verrefveld{\uwbrieftekst}{\vskip 9mm} \@verrefveld{\uwkenmerktekst}{}
+ \@verrefveld{\onskenmerktekst}{} \@verrefveld{\datumtekst}{} \@hss}
+ \@horrefveld{\betrefttekst:}{} }
+ \vskip 2mm}
+
+\newbox\@Ad %V Geadresseerde: geinitialiseerd in \brief
+\def\vervolgreferentieregel{\vbox
+ {\hbox to 4\refveldbreedte
+ {\normalsize\sf \@datum \hfill \thepage\hss}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%% headers / footers %%%%%%%%%%%%%%%%%%%%%%%
+\def\briefhoofd{}\def\vervolghoofd{\vbox{}}
+\def\oddvervolghoofd{\vbox{}}\def\evenvervolghoofd{\vbox{}}
+\def\maakbriefhoofd
+ {\@ifstar {\@kortvervolgbriefhoofd}{\@langvervolgbriefhoofd}}
+\def\@kortvervolgbriefhoofd
+ #1#2{ \gdef\@stukname{#1}
+ \@maakbriefhoofd{\xxpt\sf #1}{\normalsize\sf #2}
+ \def\oddvervolghoofd{\normalsize\sf
+ \vbox{\hsize=\textwidth %4\refveldbreedte
+ \hbox to \hsize{\strut\hfil #2}
+ {\footnotesize\sf \hrule \@height 0.3ex \@width \hsize}
+ \kern2mm }}
+ \let\vervolghoofd=\oddvervolghoofd
+ \def\evenvervolghoofd{\normalsize\sf
+ \vbox{\hsize=\textwidth %4\refveldbreedte
+ \hbox to \hsize{#1\strut\hfil}
+ {\footnotesize\sf \hrule \@height 0.3ex \@width \hsize}
+ \kern2mm }}
+}
+
+\def\@langvervolgbriefhoofd
+ #1#2{ \gdef@stukname{#1}
+ \@maakbriefhoofd{\xxpt\sf #1}{\normalsize\sf #2}
+ \def\oddvervolghoofd{\normalsize\sf
+ \vbox{\briefhoofd\vskip2mm
+ \vbox{}}}
+ \let\vervolghoofd=\oddvervolghoofd
+ \def\evenvervolghoofd{\normalsize\sf
+ \vbox{\briefhoofd\vskip2mm
+ \vbox{}}}
+}
+\def\@maakbriefhoofd#1#2{\def\briefhoofd{%
+ \vbox{\normalsize\sf
+ \hsize=4\refveldbreedte
+ \hbox to \hsize{#1\strut\hfil}
+ \vskip 1.5mm
+ \hrule \@height.3ex \@width 4\refveldbreedte
+ \vskip 1.5mm
+ \hbox to \hsize {\strut \hfill \hbox{#2} }
+ }}}
+\maakbriefhoofd*{LAIOO}{Landelijk AiO Overleg}
+\gdef\@stukname{laioo} % vanwege de kleine letters
+\newbox\@voetruimte \setbox\@voetruimte=\hbox{}
+\newcount\@voetteller
+\def\voetregel{\hbox to 4.1\refveldbreedte{\leftskip=0pt\parskip=0pt
+ \vtop{\footnotesize\sf
+ \kern-\@firstpageskip
+ \hrule \@height 0.05ex \@width 4\refveldbreedte
+ \vskip 2mm
+ \if\@voetteller>0\copy\@voetruimte\else\defaultbox\fi} \hss}}
+\def\oddvervolgvoetregel{\vbox
+ {\hrule
+ \vskip 2mm
+ \hbox to \textwidth{\footnotesize\sf \@datum \hfill \thepage\hss}}}
+\def\evenvervolgvoetregel{\vbox
+ {\hrule
+ \vskip 2mm
+ \hbox to \textwidth{\footnotesize\sf \thepage \hfill \strut \hss}}}
+\let\vervolgvoetregel=\oddvervolgvoetregel
+\def\voetitem#1#2{\advance\@voetteller by 1
+ \setbox\@voetruimte=\hbox to 4\refveldbreedte
+ {\unhbox\@voetruimte
+ \ifcase\@voetteller \relax \or \relax \or
+ \hfil \else \hfill \fi
+ \@verrefveld{#1}{#2}\hskip0cm plus 3\refveldbreedte}}
+\def\ps@empty{
+ \def\@oddhead{}\def\@oddfoot{}
+ \def\@evenhead{}\def\@evenfoot{}}
+\def\ps@plain{
+ \def\@oddhead{}\def\@evenhead{}
+ \def\@oddfoot{\rm\hfil\thepage}
+ \let\@evenfoot=\@oddfoot}
+%% @hss omdat de kop en voet te breed zijn.
+\def\ps@headings{
+ \if@twoside\def\@oddhead{\vbox to \@otherheadheight
+ {\oddvervolghoofd\vfill
+ \if@streepjes\streepjes{\@otherheadheight}\fi}%
+ \hss}
+ \def\@evenhead{\vbox to \@otherheadheight
+ {\evenvervolghoofd\vfill}%
+ \hss}
+ \else\def\@oddhead{\vbox to \@otherheadheight
+ {\evenvervolghoofd\vfill
+ \if@streepjes\streepjes{\@otherheadheight}\fi}%
+ \hss}
+ \let\@evenhead=\@oddhead\fi
+ \def\@oddfoot{\oddvervolgvoetregel\@hss}
+ \def\@evenfoot{\evenvervolgvoetregel\@hss}
+}
+\def\ps@firstpage{
+\headheight=\@firstheadheight
+\global\textheight=\@othertextheight
+\global\headsep=\@otherheadsep
+ \def\@oddhead{\vbox to \@firstheadheight
+ {\briefhoofd\vfill
+ \hbox{\@stuknummerbox\@hss}
+ \if@streepjes\streepjes{\@firstheadheight}\fi}%
+ \hss}
+ \def\@evenhead{}
+ \def\@oddfoot{\voetregel\@hss}
+ \let\@evenfoot=\@oddfoot}
+
+%%%%%%%%%%%% default footing
+
+\def\location#1#2{\voetitem{Afzender:}{#1}\voetitem{}{#2} }
+\def\@Secretariaat{Secretariaat:}
+\def\@afzender{W.F.M. Spit}
+\def\@fromlocation{R.J. v.d. Graafflaboratorium \\
+ Postbus 80.000 \\
+ 3508~TA~~Utrecht}
+\def\telefoon#1{\def\@phonenr{#1}}
+\def\@phonenr{030--532330}
+\def\email#1{\def\@email{Email: #1}}
+\def\fax#1{\def\@fax{Telefax: #1}}
+\def\telex#1{\def\@telex{Telex: #1}}
+\def\@email{Email: nspit\at fys.ruu.nl}
+\def\@fax{Telefax: 030--518689}
+
+
+% \voetitem{\protect\@Secretariaat}{\protect\@afzender \\ \protect\@fromlocation}
+% \voetitem{}{\protect\telefoon: \protect\@phonenumber \\
+% \@fax \\
+% \@email }
+
+\def\defaultbox{\hbox to 4\refveldbreedte
+{ %\hfil
+ \@verrefveld{\@Secretariaat \hskip.2em}{\protect\@afzender}
+ \hskip-12mm
+ \@verrefveld{}{\protect\@fromlocation}
+ \@verrefveld{}{\protect\telefoon: \protect\@phonenr \\
+ \protect\@fax \\
+ \protect\@email }
+ \hfil
+}}
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% vouwstreepjes %%%%%%%%%%%%%%%%%%%%%%%%%%
+%% momenteel alleen envelop EN-DL-V geimplementeerd
+\def\streepje{\hbox to 2mm{\hrulefill}}
+\def\streepjes#1{\vbox to 0cm
+ {\kern-#1 %% dit brengt ons bovenin het briefhoofd, 13mm onder
+ \hbox to \textwidth %% de rand van het papier
+ {\llap{\perfstreepje\kern24mm}\hfill %% 7mm van rand op 33mm
+ \rlap{\kern18mm\vouwstreepjes}} %% 7mm van rand op 33mm
+ \vss}} %% zie textwidth boven.
+\def\perfstreepje {\vtop{\kern\z@
+ \kern 135mm %% 297/2 - 13
+ \streepje}}
+\def\vouwstreepjes{\vtop{\kern\z@
+ \kern 91mm % 92mm %% 105-13
+ \streepje %% denk maar dat dit geen dikte heeft
+ \kern 50mm %% 155-150
+ \streepje}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\document{\endgroup
+ \@colht\textheight \@colroom\textheight \vsize\textheight
+ \columnwidth\textwidth \@clubpenalty\clubpenalty
+ \if@twocolumn \advance\columnwidth -\columnsep
+ \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
+ \fi
+ \hsize\columnwidth \linewidth\hsize
+ \begingroup\@floatplacement\@dblfloatplacement\endgroup
+ \if@filesw \immediate\openout\@mainaux=\jobname.aux
+ \immediate\write\@mainaux{\string\startlabels\string\@startlabels}\fi
+ \def\do##1{\let ##1\@notprerr}
+ \@preamblecmds
+ \let\do\noexpand
+ \@normalsize\everypar{}}
+\def\enddocument{\@checkend{document}\newpage\begingroup
+\if@filesw \immediate\closeout\@mainaux
+\makeatletter\input \jobname.aux\clearpage
+\fi\endgroup\deadcycles\z@\@@end}
+
+\def\makelabels{\@fileswtrue}
+\def\@startlabels{}
+
+
+\def\@texttop{\ifnum\c@page=1\vskip 0pt % plus 0.00006fil
+\relax\fi}
+%\def\p@sheadings{\def\@oddhead{\sl To \ignorespaces\toname \hfil \today
+%\hfil Page \thepage}\def\@oddfoot{}}
+% \def\ps@headings{%
+% \def\@oddhead{\sl\ignorespaces\toname \hfil \@date\hfil --\ \thepage}%
+% \def\@evenhead{\sl\ignorespaces\toname \hfil \@date\hfil --\ \thepage}%
+% \def\@oddfoot{}\def\@evenfoot{}}
+\def\ps@empty{%
+\def\@oddhead{}\def\@oddfoot{}\def\@evenhead{}\def\@evenfoot{}}
+\def\ps@plain{%
+\def\@oddhead{}\def\@oddfoot{\rm\hfil\thepage \hfil}%
+\def\@evenhead{}\let\@evenfoot\@oddfoot}
+
+\parskip 0.7em \parindent 0pt \topsep 0.4em \partopsep 0pt \itemsep 0.4em
+\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301
+\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty
+-\@lowpenalty
+
+\leftmargini 2.5em
+\leftmarginii 2.2em
+\leftmarginiii 1.87em
+\leftmarginiv 1.7em
+\leftmarginv 1em
+\leftmarginvi 1em
+\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+\labelsep 5pt
+\parsep 0pt
+\let\@listi\relax
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 0.2em
+ \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}
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -15pt\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 15pt}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \it #1}
+\def\description{\list{}{\leftmargin\descriptionmargin
+ \labelwidth\leftmargin \advance\labelwidth -\labelsep
+ \let\makelabel\descriptionlabel}}
+\let\enddescription\endlist
+\newdimen\descriptionmargin
+\descriptionmargin=3em
+
+\def\theequation{\arabic{equation}}
+
+\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth 0.4pt \doublerulesep 2pt
+\tabbingsep \labelsep
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = 0.4pt
+\def\footnoterule{\kern-1\p@
+ \hrule width 0.4\columnwidth
+ \kern 0.6\p@}
+
+\long\def\@makefntext#1{\noindent \hangindent 5pt\hbox
+ to 5pt{\hss $^{\@thefnmark}$}#1}
+
+\c@topnumber=2
+\def\topfraction{0.7}
+\c@bottomnumber=1
+\def\bottomfraction{0.3}
+\c@totalnumber=3
+\def\textfraction{0.2}
+\def\floatpagefraction{0.5}
+\c@dbltopnumber= 2
+\def\dbltopfraction{0.7}
+\def\dblfloatpagefraction{0.5}
+
+
+\smallskipamount=.5\parskip \medskipamount=\parskip
+\bigskipamount=2\parskip
+\frenchspacing
+\ps@empty \pagenumbering{arabic} \onecolumn \@fileswfalse
+% \raggedright
+
+
+% definities die eigenlijk wel in de preamble zouden kunnen
+%
+
+\newcommand{\ij}{i\hspace{-0.12em}j}
+\newcommand{\bau}{{\sc bau}}
+\newcommand{\aio}{{\sc aio}}
+\newcommand{\oio}{{\sc oio}}
+\newcommand{\ruu}{{\sc ruu}}
+\newcommand{\rug}{{\sc rug}}
+\newcommand{\rul}{{\sc rul}}
+\newcommand{\eur}{{\sc eur}}
+\newcommand{\uva}{{\sc uva}}
+\newcommand{\kun}{{\sc kun}}
+\newcommand{\kub}{{\sc kub}}
+\newcommand{\tud}{{\sc tud}}
+\newcommand{\tue}{{\sc tue}}
+\newcommand{\ut}{{\sc ut}}
+\newcommand{\rl}{{\sc rl}}
+\newcommand{\vu}{{\sc vu}}
+\newcommand{\luw}{{\sc luw}}
+\newcommand{\dcp}{{\sc dcp}}
+\newcommand{\nwo}{{\sc nwo}}
+\newcommand{\fom}{{\sc fom}}
+\newcommand{\cor}{{\sc cor}}
+\newcommand{\stw}{{\sc stw}}
+\newcommand{\laioo}{{\sc laioo}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%% talen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\ifcase\language % 0: Nederlands
+ \def\uwbrieftekst{Uw brief van}
+ \def\uwkenmerktekst{Uw kenmerk}
+ \def\onskenmerktekst{Ons kenmerk}
+ \def\datumtekst{Datum}
+ \def\geadresseerdetekst{Geadresseerde}
+ \def\bladnummertekst{Bladnummer}
+ \def\vandaag{\number\day~\ifcase\month\or
+ januari\or februari\or maart\or april\or mei\or juni\or juli\or
+ augustus\or september\or oktober\or november\or december\fi
+ \space \number\year}
+ \def\betrefttekst{Onderwerp}
+ \def\bijlagetekst{Bijlage:}
+ \def\bijlagentekst{Bijlagen:}
+ \def\telefoon{Telefoon}
+\or % 1: Engels
+ \def\uwbrieftekst{Your letter of}
+ \def\uwkenmerktekst{Your reference}
+ \def\onskenmerktekst{Our reference}
+ \def\datumtekst{Date}
+ \def\geadresseerdetekst{To}
+ \def\bladnummertekst{Page}
+ \def\vandaag{\ifcase\day\or
+ 1st\or 2nd\or 3rd\or 4th\or 5th\or
+ 6th\or 7th\or 8th\or 9th\or 10th\or
+ 11th\or 12th\or 13th\or 14th\or 15th\or
+ 16th\or 17th\or 18th\or 19th\or 20th\or
+ 21st\or 22nd\or 23rd\or 24th\or 25th\or
+ 26th\or 27th\or 28th\or 29th\or 30th\or
+ 31st\fi~\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space \number\year}
+ \def\betrefttekst{Subject}
+ \def\bijlagetekst{Enclosure:}
+ \def\bijlagentekst{Enclosures:}
+ \def\telefoon{Telephone}
+\or % 2: Amerikaans
+ \def\uwbrieftekst{Your letter of}
+ \def\uwkenmerktekst{Your reference}
+ \def\onskenmerktekst{Our reference}
+ \def\datumtekst{Date}
+ \def\geadresseerdetekst{To}
+ \def\bladnummertekst{Page}
+ \def\vandaag{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+ \def\betrefttekst{Subject}
+ \def\bijlagetekst{Enclosure:}
+ \def\bijlagentekst{Enclosures:}
+ \def\telefoon{Telephone}
+\or % 3: Duits
+ \def\uwbrieftekst{Ihr Brief von}
+ \def\uwkenmerktekst{Ihr Zeichen}
+ \def\onskenmerktekst{Unser Zeichen}
+ \def\datumtekst{Datum}
+ \def\geadresseerdetekst{An}
+ \def\bladnummertekst{Zettel}
+ \def\vandaag{\number\day.~\ifcase\month\or
+ Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or
+ Juli\or August\or September\or Oktober\or November\or Dezember\fi
+ \space\number\year}
+ \def\betrefttekst{Betrifft}
+ \def\bijlagetekst{Anlage:}
+ \def\bijlagentekst{Anlagen:}
+ \def\telefoon{Telephoon}
+\fi
+% et qui parle Fran\c{c}ais, nowadays?
+
+\newcounter{figure}
+% \def\fnum@figure{\figurename{} \thefigure} %V from Dutch
+\def\thefigure{}
+% \def\fps@figure{tbp}
+\def\ftype@figure{1}
+% \def\ext@figure{lof}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+
+
+%
+\def\today{\vandaag}
+\ps@headings
+\ds@streepjes
+\datum{\vandaag}
+
diff --git a/macros/latex209/contrib/misc/landscape.sty b/macros/latex209/contrib/misc/landscape.sty
new file mode 100644
index 0000000000..3a71b8bc89
--- /dev/null
+++ b/macros/latex209/contrib/misc/landscape.sty
@@ -0,0 +1,12 @@
+% Landscape style file
+% Don Hosek 2/5/88
+\marginparwidth 0pt
+\oddsidemargin 0pt
+\evensidemargin 0pt
+\marginparsep 0pt
+
+\topmargin 0pt
+
+\textwidth 9in
+\textheight 6in
+
diff --git a/macros/latex209/contrib/misc/latex-go-board.tex b/macros/latex209/contrib/misc/latex-go-board.tex
new file mode 100644
index 0000000000..b44b676d7c
--- /dev/null
+++ b/macros/latex209/contrib/misc/latex-go-board.tex
@@ -0,0 +1,68 @@
+%% A Sample of LaTeX Go Board
+%% Youyi Chen
+%% University of Waterloo, Dept. of Statistics and Actuarial Science
+%% ychen@aftermath.waterloo.edu
+%% Sept. 1990
+%%
+\documentstyle[12pt]{article}
+\pagestyle{empty}
+
+\begin{document}
+\centerline{{\Huge No Way Out?}}
+\vspace{.5in}
+\begin{center}
+\setlength{\unitlength}{5mm}
+\begin{picture}(18,18)(1,1)
+
+%% moves
+\put(6,3){\circle*{1}}
+\put(7,3){\circle*{1}}
+\put(8,3){\circle*{1}}
+\put(5,4){\circle*{1}}
+\put(9,4){\circle*{1}}
+\put(5,6){\circle*{1}}
+\put(9,6){\circle*{1}}
+\put(7,6){\circle*{1}}
+\put(7,7){\circle*{1}}
+
+\put(6,4){\circle{1}}
+\put(7,4){\circle{1}}
+\put(8,4){\circle{1}}
+\put(6,5){\circle{1}}
+\put(8,5){\circle{1}}
+%% the board
+%% horizontal
+\multiput(1,1)(0,1){3}{\line(1,0){18}}
+
+\put(1,4){\line(1,0){4}}
+\put(9,4){\line(1,0){10}}
+
+\put(1,5){\line(1,0){4.5}}
+\put(6.5,5){\line(1,0){1}}
+\put(8.5,5){\line(1,0){10.5}}
+
+\multiput(1,6)(0,1){14}{\line(1,0){18}}
+
+%%vertical
+\multiput(1,1)(1,0){5}{\line(0,1){18}}
+
+\put(6,1){\line(0,1){2}}
+\put(6,5.5){\line(0,1){13.5}}
+
+\put(7,1){\line(0,1){2}}
+\put(7,4.5){\line(0,1){14.5}}
+
+\put(8,1){\line(0,1){2}}
+\put(8,5.5){\line(0,1){13.5}}
+
+\multiput(9,1)(1,0){11}{\line(0,1){18}}
+
+%% the stars
+\multiput(4,4)(6,0){3}{\circle*{0.3}}
+\multiput(4,10)(6,0){3}{\circle*{0.3}}
+\multiput(4,16)(6,0){3}{\circle*{0.3}}
+
+\end{picture}
+\end{center}
+\end{document}
+
diff --git a/macros/latex209/contrib/misc/lcaption.sty b/macros/latex209/contrib/misc/lcaption.sty
new file mode 100644
index 0000000000..eb1714782d
--- /dev/null
+++ b/macros/latex209/contrib/misc/lcaption.sty
@@ -0,0 +1,50 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% lcaption.sty 1.0
+%
+% Provides smart formatting of long captions. The captions are
+% formatted like:
+% Figure 1: This is a
+% long text.
+%
+% <-----\CapSize----->
+%
+% If \CapSize is set to ZERO, it will fit the caption to \hsize
+% (the width of the surrounding text)
+%
+% The syntax is \lcaption[short]{long} just like LaTeX's caption command.
+% the [short] argument may be omitted.
+%
+% The command \smartcap will make \caption act like \lcaption. It
+% should be used only once.
+%
+% \CapSize defaults to ZERO, and may be set by a command like:
+%
+% \CapSize=5in
+%
+% Based on original by Lars P. Fischer <fischer@iesd.auc.dk>
+% Parts of the code is taken from latex.tex (c) by Leslie Lamport
+% Put together by Kresten Krab Thorup <Krab@iesd.auc.dk> january 1991
+% You may not redistribute modified versions of this code, unless
+% you name it to something else than lcaption.sty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\typeout{Style Option `lcaption' r1.0 <01/06/91> (KKT)}
+
+\newdimen\CapSize\CapSize\z@
+
+\long\def\@lmakecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1:\ }
+ \@tempdima\hsize\advance\@tempdima-\wd\@tempboxa
+ \ifdim\CapSize=\z@\else
+ \ifdim\@tempdima>\CapSize \@tempdima\CapSize\fi\fi
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim\wd\@tempboxa<\hsize\hfil #1: #2\hfil\par\else
+ \hbox to\hsize{\hfil #1: \parbox[t]\@tempdima{#2}\hfil}
+ \fi}
+
+\def\lcaption{\let\@makecaption\@lmakecaption\caption}
+
+\def\smartcap{\def\caption{\let\@makecaption\@lmakecaption
+\refstepcounter\@captype \@dblarg{\@caption\@captype}}}
+
+
diff --git a/macros/latex209/contrib/misc/lcustom.tex b/macros/latex209/contrib/misc/lcustom.tex
new file mode 100644
index 0000000000..c76a75ad8e
--- /dev/null
+++ b/macros/latex209/contrib/misc/lcustom.tex
@@ -0,0 +1,429 @@
+% LaTeX customization
+
+
+\makeatletter % for a little while
+
+\def\inputverbatim#1{%
+\begingroup \catcode``=13 \@noligs \tt \let\do\@makeother \dospecials
+\obeylines \obeyspaces \frenchspacing \input #1 \endgroup }
+
+% plain TeX compatibility
+
+\def\oldstyle{\xdef\@oldstyle{\the\textfont\@ne}\mit\@oldstyle}
+
+
+% PhD-TeX compatibility
+
+\def\showsummary{%
+ \begingroup
+ \def\note##1{%
+ \ifcase\value{##1}no ##1s\or
+ 1 ##1\else
+ \the\value{##1} ##1s\fi
+ }%
+ \typeout{LaTeX summary: \note{figure}, \note{table}, \note{footnote}.}%
+ \endgroup
+}
+
+\def\smaller{\footnotesize}
+
+
+% Float Support
+
+\def\topfraction{0.85}
+\def\textfraction{0.20}
+\def\floatpagefraction{0.85}
+\def\dbltopfraction{0.85}
+\def\dblfloatpagefraction{0.85}
+
+
+% \tagfigure*[FLOAT]{FILE}{CAPTION}{LABEL}
+% * optional
+% FLOAT float options
+% FILE reads TPIC output in file figureFILE
+% CAPTION for list of figures
+% LABEL for \ref and \pageref
+\def\tagfigure{\@ifstar{\@stagfigure}{\@tagfigure}}
+\def\@tagfigure{\@ifnextchar[{\@@tagfigure}{\@@tagfigure[t]}}
+\def\@stagfigure{\@ifnextchar[{\@@stagfigure}{\@@stagfigure[t]}}
+
+\def\@@tagfigure[#1]#2{%
+ \@@@tagfigure[#1]{\input figure#2\relax\centerline{\box\graph}}}
+\def\@@stagfigure[#1]#2{%
+ \@@@stagfigure[#1]{\input figure#2\relax\centerline{\box\graph}}}
+
+
+% \tagdiagram*[FLOAT]{FILE}{CAPTION}{LABEL}
+% * optional
+% FLOAT float options
+% FILE reads LaTeX input in file diagramFILE
+% CAPTION for list of figures
+% LABEL for \ref and \pageref
+\def\tagdiagram{\@ifstar{\@stagdiagram}{\@tagdiagram}}
+\def\@tagdiagram{\@ifnextchar[{\@@tagdiagram}{\@@tagdiagram[t]}}
+\def\@stagdiagram{\@ifnextchar[{\@@stagdiagram}{\@@stagdiagram[t]}}
+
+\def\@@tagdiagram[#1]#2{\@@@tagfigure[#1]{\input diagram#2\relax}}
+\def\@@stagdiagram[#1]#2{\@@@stagfigure[#1]{\input diagram#2\relax}}
+
+
+% \tagverbatim*[FLOAT]{FILE}{CAPTION}{LABEL}
+% * optional
+% FLOAT float options
+% FILE reads LaTeX input in file FILE and inserts in in verbatim mode.
+% CAPTION for list of figures
+% LABEL for \ref and \pageref
+\def\tagverbatim{\@ifstar{\@stagverbatim}{\@tagverbatim}}
+\def\@tagverbatim{\@ifnextchar[{\@@tagverbatim}{\@@tagverbatim[t]}}
+\def\@stagverbatim{\@ifnextchar[{\@@stagverbatim}{\@@stagverbatim[t]}}
+
+\def\@@tagverbatim[#1]#2{\@@@tagfigure[#1]{\inputverbatim{#2}}}
+\def\@@stagverbatim[#1]#2{\@@@stagfigure[#1]{\inputverbatim{#2}}}
+
+
+\def\@@@tagfigure[#1]#2#3#4{%
+ \begin{figure}[#1]
+ \hrule
+ \vskip .5\baselineskip
+ \begin{minipage}\columnwidth
+ \small#2%
+ \end{minipage}
+ \vskip .5\baselineskip plus .5\baselineskip
+ \begingroup
+ \setbox\z@=\hbox{#4}%
+ \ifdim\wd\z@>\z@
+ \caption{#3}%
+ \label{#4}%
+ \else
+ \captcont{#3}%
+ \fi
+ \endgroup
+ \vskip 2pt
+ \hrule
+ \end{figure}
+}
+
+\def\@@@stagfigure[#1]#2#3#4{%
+ \begin{figure*}[#1]
+ \hrule
+ \vskip .5\baselineskip
+ \begin{minipage}\textwidth
+ \small#2%
+ \end{minipage}
+ \vskip .5\baselineskip plus .5\baselineskip
+ \begingroup
+ \setbox\z@=\hbox{#4}%
+ \ifdim\wd\z@>\z@
+ \caption{#3}%
+ \label{#4}%
+ \else
+ \captcont{#3}%
+ \fi
+ \endgroup
+ \vskip 2pt
+ \hrule
+ \end{figure*}
+}
+
+
+% \tagtable*[FLOAT]{FILE}{CAPTION}{LABEL}
+% * optional
+% FILE read LaTeX input in file tableFILE
+% FLOAT float options
+% CAPTION for list of tables
+% LABEL for \ref and \pageref
+\def\tagtable{\@ifstar{\@stagtable}{\@tagtable}}
+\def\@tagtable{\@ifnextchar[{\@@tagtable}{\@@tagtable[t]}}
+\def\@stagtable{\@ifnextchar[{\@@stagtable}{\@@stagtable[t]}}
+
+\def\@@tagtable[#1]#2#3#4{%
+ \begin{table}[#1]
+ \hrule
+ \vskip .5\baselineskip
+ \begin{minipage}\textwidth
+ \small\input table#2\relax
+ \end{minipage}
+ \vskip .5\baselineskip plus .5\baselineskip
+ \begingroup
+ \setbox\z@=\hbox{#4}%
+ \ifdim\wd\z@>\z@
+ \caption{#3}%
+ \label{#4}%
+ \else
+ \captcont{#3}%
+ \fi
+ \endgroup
+ \vskip 2pt
+ \hrule
+ \end{table}
+}
+
+\def\@@stagtable[#1]#2#3#4{%
+ \begin{table*}[#1]
+ \hrule
+ \vskip .5\baselineskip
+ \begin{minipage}\columnwidth
+ \small\input table#2\relax
+ \end{minipage}
+ \vskip .5\baselineskip plus .5\baselineskip
+ \begingroup
+ \setbox\z@=\hbox{#4}%
+ \ifdim\wd\z@>\z@
+ \caption{#3}%
+ \label{#4}%
+ \else
+ \captcont{#3}%
+ \fi
+ \endgroup
+ \vskip 2pt
+ \hrule
+ \end{table*}
+}
+
+
+% Environments:
+
+% DESCRIBE - similar to DESCRIPTION, but indents extra on left margin of
+% outer list
+
+\def\describe{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \ifnum\@listdepth=1 \advance\leftmargin by2em\fi
+ \let\makelabel\descriptionlabel}}
+\let\enddescribe=\endlist
+
+
+% Document style options:
+% 10pt - Makes ten-point type the normal (default) type size
+% draftnote - Customized draft option
+
+\@namedef{ds@10pt}{\def\@ptsize{0}} %%% for orthogonality
+
+
+\newif\ifdraft \draftfalse
+
+\def\draftstring{{\ifdraft \tt Draft\fi}}
+
+\def\draftext{%
+ \ifdraft
+ \begingroup
+ \tt
+ \ifodd\c@page
+ \LaTeX set \today\ with \fmtname\ v\fmtversion
+ \else
+ Draft \versiontag/ of \versiondate/
+ \fi
+ \endgroup
+ \fi
+}
+
+\def\ds@draftnote{%
+ \drafttrue
+ \@ifundefined{ds@draft}{}{\ds@draft}%
+ \def\ps@plain{%
+ \let\@mkboth=\@gobbletwo
+ \def\@oddhead{\draftext\hfil}%
+ \def\@oddfoot{\draftstring\hfil\rm\thepage\hfil\draftstring}%
+ \def\@evenhead{\hfil\draftext}%
+ \let\@evenfoot=\@oddfoot
+ }%
+ \let\ps@@headings=\ps@headings
+ \def\ps@headings{%
+ \ps@@headings
+ \def\@oddfoot{\draftext\hfil}%
+ \def\@evenfoot{\hfil\draftext}%
+ }%
+}
+
+
+% Page Styles
+
+% \pagestyle{myfootings} similar to the myheadings command but also permits
+% the user to define foot information as well as head information
+% \markleftfoot{left_foot} specifies the foot for odd-numbered
+% pages
+% \markrightfoot{right_foot} specifies the foot for even-numbered
+% pages
+% N.B. DOES NOT USE MARKS TO ACCOMPLISH THIS, OWING TO CONFLICT WITH HEADING
+% ROUTINES
+
+\def\ps@myfootings{\ps@myheadings}
+
+\def\markleftfoot#1{\def\@evenfoot{\hbox{}\sl#1\hfil}}
+\def\markrightfoot#1{\def\@oddfoot{\hfil\sl#1\hbox{}}}
+
+
+% \pagestyle{reprint} similar to plain page style in draft mode
+
+\let\reprintext=\draftext
+\let\reprintstring=\draftstring
+
+\def\ps@reprint{%
+ \def\draftext{%
+ \ifdraft
+ \begingroup
+ \tt
+ \ifodd\c@page
+ \LaTeX set \today
+ \else
+ Draft \versiontag/
+ \fi
+ \endgroup
+ \fi
+ }%
+ \def\@oddhead{\reprintext\hfil\draftext}%
+ \def\@oddfoot{\reprintstring\hfil\rm\thepage}%
+ \def\@evenhead{\draftext\hfil\reprintext}%
+ \def\@evenfoot{\rm\thepage\hfil\reprintstring}%
+}
+
+
+% The Title
+
+\def\title#1{%
+ \gdef\@title{#1}%
+ \gdef\banner{%
+ \newpage\setcounter{page}{1}%
+ \begin{center}\Large#1\end{center}%
+ }%
+}
+
+
+% Miscellany
+
+\def\implies{\quad\supset\ }
+
+\def\tdots{\ldots\thinspace}
+
+\def\boxit#1{\fbox{\sc#1}}
+
+\def\note#1{\ifdraft\marginpar{\tt#1}\fi}
+
+
+% Fractions (from The TUGboat v6 n1, 1985)
+
+\def\myfrac#1/#2{%
+ \leavevmode\kern.1em
+ \raise.5ex\mbox{\the\scriptfont\z@ #1}\kern-.1em
+ /\kern-.15em\lower.25ex\mbox{\the\scriptfont\z@ #2}%
+}
+
+
+% Trademarks...
+
+\input trademark.sty
+
+
+% Continuation Captions...
+
+\input captcont.sty
+
+
+% Startup
+
+\xdef\today{%
+ \ifcase\month
+ \number\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\else
+ \number\month\fi
+ \space\number\day, {\noexpand\mit\number\year}%
+}
+
+\begingroup
+ \count0=\time
+ \count1=\count0
+ \divide\count0 by 60
+ \count2=\count0
+ \multiply\count0 by 60
+ \advance\count1 by -\count0
+ \ifnum\count2>11
+ \ifnum\count2>12 \advance\count2 by -12\fi
+ \def\ampm{pm}%
+ \else
+ \ifnum\count2=0 \advance\count2 by 12\fi
+ \def\ampm{am}%
+ \fi
+ \xdef\daytime{%
+ \ifnum\count2<10 0\fi \the\count2:%
+ \ifnum\count1<10 0\fi \the\count1
+ \ampm
+ }%
+\endgroup
+
+
+\makeatother % back to normal
+
+%
+%Mail-From: BEEBE created at 3-Dec-86 11:41:39
+%Date: Wed 3 Dec 86 11:41:39-MST
+%From: "Nelson H.F. Beebe" <Beebe@UTAH-SCIENCE.ARPA>
+%Subject: Funny behaviour of itemize with long item keys
+%To: jrp%nplpsg%uucp@CS.UCL.AC.UK
+%cc: BEEBE@UTAH-SCIENCE.ARPA
+%X-US-Mail: "Center for Scientific Computation, South Physics,
+%University of Utah, Salt Lake City, UT 84112"
+%X-Telephone: (801) 581-5254
+%Message-ID: <12259892637.20.BEEBE@UTAH-SCIENCE.ARPA>
+%ReSent-Date: Wed 3 Dec 86 16:31:14-MST
+%ReSent-From: "Nelson H.F. Beebe" <Beebe@UTAH-SCIENCE.ARPA>
+%ReSent-To: jrp%nplpsg%uucp@SEISMO.CSS.GOV
+%ReSent-Message-ID: <12259945355.20.BEEBE@UTAH-SCIENCE.ARPA>
+%
+%In TeXHaX #10 you ask for a solution for the itemize
+%environment where long keys do not cause a line break, when
+%they would look nicer if they did.
+%
+%I met this problem in writing my TECO manual, and here is my
+%solution. First, I have two environments:
+%
+%% ======================================================================
+%% commandtable generates a list with the item entered into the index
+%% and the item label flush left in \tt font. It is intended for
+%% documenting TECO commands.
+%\newcommand{\tablelabel}[1]{\mbox{\tt#1}\hfil\INDEX{{\string\tt\space #1}}{#1}}
+%\newenvironment{commandtable}{
+% \begin{list}{}
+% {
+% \let\makelabel\tablelabel
+% \setlength{\labelwidth}{30pt}
+% \setlength{\leftmargin}{1.1\labelwidth}
+% }
+% }{\end{list}}
+%
+%% ======================================================================
+%% commandentry generates a list with the item label flush left in \sf
+%% font. It is intended for the TECO command descriptions.
+%
+%\newcommand{\entrylabel}[1]{\mbox{\sf#1:}\hfil}
+%\newenvironment{commandentry}{
+% \begin{list}{}
+% {
+% \let\makelabel\entrylabel
+% \setlength{\labelwidth}{40pt}
+% \setlength{\leftmargin}{1.1\labelwidth}
+% }
+% }{\end{list}}
+%
+%Then I have a newline macro:
+%\newcommand{\NEWLINE}{\mbox{}\\ \vspace*{-\baselineskip}}
+%
+%Here is how they are used:
+% \begin{commandtable}
+% \item[\protect\CTL{\BS{}}]\NEWLINE{}
+% \begin{commandentry}
+% \item[Action]
+% Returns from a function. If issued at top-level,
+% the interpreter simply terminates, just as if
+% end of input had been reached.
+% \item[Errors]
+% None.
+% \item[Return values]
+% Any arguments in effect are passed back to the
+% caller.
+% \end{commandentry}
+% ...etc...
+% \end{commandtable}
+%
+%The other two macros listed are unimportant, but here they are:
+%\newcommand{\BS}{{\tt\symbol{92}}} % ASCII backslash
+%\newcommand{\NEWLINE}{\mbox{}\\ \vspace*{-\baselineskip}}
diff --git a/macros/latex209/contrib/misc/listoftheorem.sty b/macros/latex209/contrib/misc/listoftheorem.sty
new file mode 100644
index 0000000000..905167dacd
--- /dev/null
+++ b/macros/latex209/contrib/misc/listoftheorem.sty
@@ -0,0 +1,123 @@
+%%
+%% LaTeX Style sheet to permit theorem environments to generate
+%% table-of-contents-like entries similar to those produced
+%% bye the \listoffigures command.
+%% ...Art Mulder, July/90 art@maccs.DCSS.mcmaster.ca
+%% ...!uunet!utai!utgpu!maccs!art
+%%
+%% Permission granted to do whatever you want with this style
+%% file. Use at your own risk, it works for me, but I make no
+%% warranty as to its performance.
+
+%% STEP ONE:
+%% modify one of the 'begin theorem' commands so that it executes an
+%% \addcontentsline, on a file called whatever the theorem is. ie: if
+%% this is a "theo" type theorem, them write on a file called foo.theo
+
+%% %% based on \@thm macro found in latex.tex and modified to suit
+%% %% my purposes
+%%
+%% % \@thm{NAME}{TEXT} ==
+%% % BEGIN
+%% % \addcontentsline{NAME}{figure}{\theNAME}
+%% %% ^ above line added by art mulder
+%% % \refstepcounter{NAME}
+%% % if next char = [
+%% % then \@ythm{NAME}{TEXT}
+%% % else \@xthm{NAME}{TEXT}
+%% % fi
+%% % END
+%%
+%% \def\@thm#1#2{\addcontentsline{#1}{figure}{\protect
+%% \numberline{\csname the#1\endcsname}}
+%% \refstepcounter
+%% {#1}\@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
+%%
+%% THIS ABOVE CODE WORKS, HOWEVER IT MAKES NO PROVISION FOR INCLUDING
+%% THE OPTIONAL ARGUMENT IN THE LISTING. THIS NEXT CODE (UP TO STEP TWO)
+%% DOES INCLUDE THE OPTIONAL ARGUMENT IN THE LISTING.
+
+%% based on \@xthm and \@ythm macros found in latex.tex
+
+% \@xthm{NAME}{TEXT} ==
+% BEGIN
+% \addcontentsline{NAME}{figure}{\theNAME}
+%% ^ above line added by art mulder
+% \@begintheorem{TEXT}{\theNAME}
+% \ignorespaces
+% END
+%
+% \@ythm{NAME}{TEXT}[OPARG] ==
+% BEGIN
+% \addcontentsline{NAME}{figure}{\theNAME OPARG}
+%% ^ above line added by art mulder
+%% Put the Optional Argument into the List-Of file
+% \@opargbegintheorem{TEXT}{\theNAME}{OPARG}
+% \ignorespaces
+% END
+
+\def\@xthm#1#2{\addcontentsline{#1}{figure}{\protect
+ \numberline{\csname the#1\endcsname}}
+ \@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces}
+\def\@ythm#1#2[#3]{\addcontentsline{#1}{figure}{\protect
+ \numberline{\csname the#1\endcsname}{\ignorespaces #3}}
+ \@opargbegintheorem{#2}{\csname
+ the#1\endcsname}{#3}\ignorespaces}
+
+%% STEP TWO:
+%% write \listof{}{} macro to generate lists of desired theorem
+%% environments.
+
+%% based on listoffigures macro from book.doc (or book.sty)
+
+\def\listof#1#2{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{List of #1\@mkboth
+ {LIST OF \uppercase{#1}}{LIST OF \uppercase{#1}}}
+ \@starttoc{#2}\if@restonecol \twocolumn\fi}
+
+%\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}
+
+%%--------------------
+%% INSTRUCTIONS FOR USE:
+%% - read the sections in the LaTeX manual in regards to:
+%% \addcontentsline, \newtheorem
+%% - use a theorem envornment as usual (all changes there are "behind the
+%% scenes" so you don't have to do anything different)
+%% - insert a \listof command in your document wherever you want a
+%% listing to go (DISCLAIMER: I have only tried this at the
+%% front of the book, following the Table of Contents)
+%% - the listof command has the following form:
+%% \listof{HEADING}{THEOREM_ENV_NAME}
+%% where:
+%% HEADING = whatever you want to follow the words
+%% "List Of" in the heading.
+%% THEOREM_ENV_NAME = the environment name that you gave
+%% to your theorem environment.
+
+%% EXAMPLE USAGE:
+%% - define a theorem environment:
+%% \newtheorem{lem}{Lemma}[section]
+%% ^ define a "Lemma" theorem environment, numbered within
+%% chapters (NO CHANGE from before use of
+%% listoftheorem.sty)
+%%
+%% - request a list of theorems
+%% \listof{Lemmas}{lem}
+%% ^ will now get a listing similar to a "list of figures"
+%% entitled "List Of Lemmas".
+%%
+%% - use the lemma theorem environment
+%% \begin{lem}
+%% blah blah
+%% \end{lem}
+%% ^ In addition to what the theorem environment would
+%% normally do, this will write a "list of lemmas"
+%% entry on a file entitled foo.lem, where foo is the name
+%% of the document (as in foo.tex).
+%% Note there is NO CHANGE in use from before use of
+%% listoftheorem.sty
+
+%% BUGS:
+%% - two theorem environments can share a counter (see numbered_like
+%% option in definition of Theorem environments in LaTeX manual)
+%% But there is no way for two theorem environments to share listing.
diff --git a/macros/latex209/contrib/misc/local-suppl.tex b/macros/latex209/contrib/misc/local-suppl.tex
new file mode 100644
index 0000000000..d62e4b0a50
--- /dev/null
+++ b/macros/latex209/contrib/misc/local-suppl.tex
@@ -0,0 +1,105 @@
+\subsubsection{The {\tt a4} and {\tt a4wide} Style Options}
+
+By default, the output page is designed to be printed on US paper.
+The {\tt a4} and {\tt a4wide} style options result in output
+that fits better onto A4 size pages.
+It is sometimes convenient to be able to fit more text onto an A4 page.
+The {\tt a4wide} option accomplishes this by using narrower margins.
+
+\subsubsection{The {\tt tgrind} Style Option}{\label{tagrind}}
+
+It is useful to be able to include program fragments as figures in a
+text. The {\tt tgrind} style option can be used to accomplish this
+fairly painlessly by defining the \verb|\tagrind| command.
+
+The \verb|\tagrind| command has the following proforma:
+\begin{itemize} \tt
+\item[]
+\verb|\tagrind*|[{\it loc\/}]\{{\it file\/}\}\{{\it caption \/}\}\{{\it
+label \/}\}
+\end{itemize}
+
+As usual,
+\begin{itemize}
+\item in two-column format, the ordinary form produces a
+single-column listing and the $\ast$-forms produces a double-column listing;
+
+\item {\it loc\/}
+is a sequence of one to four of the letters \verb|h| ({\it here\/}),
+\verb|t| ({\it top\/}), \verb|b| ({\it bottom\/}) and \verb|p| ({\it
+page\/}) specifying where the listing may be placed.
+
+\item {\it file} specifies the file from which the ground listing
+is to be taken.
+
+\item {\it caption} produces a numbered caption.
+
+\item {\it label} assigns a label to the listing, so that it may be
+referred to by means to the \verb|\ref{|{\it label\/}\verb|}| command.
+
+\end{itemize}
+
+The listing file should be generated using {\tt tgrind} and removing
+the first and last lines of the resulting file. For example, if the C
+source file {\tt file.c} were to be used as a listing,
+\begin{verbatim}
+ tgrind -f -lc file.c | sed -e 1d -e \$d >file.tex
+\end{verbatim}
+would generate a file {\tt file.tex} suitable for use
+with \verb|tagrind|. For example,
+\begin{verbatim}
+\tagrind{file}{This is an example}{eg}
+\end{verbatim}
+
+\subsubsection{The {\tt sfwmac} Style Option}
+
+The {\tt sfwmac} style option defines a set of macros which are
+useful when writing program documentation. The \verb|\pgm{|{\it
+program\/}\verb|}| command expects a program name as an argument.
+The name in printed (in italics) and an index entry is made for it.
+Similarly, the \verb|\man{|{\it program\/}\verb|}(|{\it
+section\/}\verb|)| command may be used to produce references to
+manual page entries.
+The \verb|\arg{|{\it argument\/}\verb|}|, \verb|\switch{|{\it
+switch\/}\verb|}| and \verb|\file{|{\it file\/}\verb|}| commands may be
+used when referring to program arguments and switches and to
+filenames. These produce no index entry.
+
+This style also defines a number of common program names such as
+\latex/, \slitex/, etc. These are produced by means of
+\verb|\LaTeX|, \verb|\SLiTeX| commands and indexed.
+
+Suggestions for additions to the list of defined program names are
+welcome.
+
+\subsubsection{The {\tt trademark} Style Option}
+
+The {\tt trademark} style option defines a number of trademarks and
+trade names. For example, \Unix/ (note the automatically defined
+footnote) was produced by a \verb|\Unix/| command. Note that there
+is no need to append \verb*|\ | or \verb|{}| to prevent the
+swallowing up of succeeding spaces.
+
+Suggestions for additions to the list of trademarks are welcome.
+
+\subsubsection{The {\tt lcustom} Style Option}
+
+This style contains a whole bunch of useful little command
+definitions. The \verb|\inputverbatim{|{\it file\/}\verb|}|
+command inserts the file in verbatim mode. However, it is usually
+better to use the \verb|\tagrind| command described in section
+\ref{tagrind} for this purpose. A number of further commands
+provide a clean way of introducing diagrams and tables from
+subsidiary files. They are similar in form and usage to the to the
+\verb|\tagrind| command.
+
+\subsubsection{The {\tt vdm} Style Option}
+
+The {\tt vdm} style option aids typesetting of VDM specifications: it
+provides macros for typesetting formulae, data types, functions,
+operations and proofs in whatever the currently approved VDM manner
+happens to be. A copy of the user manual for the {\tt vdm} style option
+can be obtained by typing
+\begin{verbatim}
+ latex /usr/lib/tex/macros/vdm.tex
+\end{verbatim}
diff --git a/macros/latex209/contrib/misc/losymbol.sty b/macros/latex209/contrib/misc/losymbol.sty
new file mode 100644
index 0000000000..8325dc6cdb
--- /dev/null
+++ b/macros/latex209/contrib/misc/losymbol.sty
@@ -0,0 +1,65 @@
+%------------------8<--------------------8<------------8<--------------
+%losymbol.sty by gerry van dooren, may 1992, revised august 1992.
+% elecgd@urc.tue.nl
+%
+%definition is nearly analogous to the setup for list of figures
+%and list of tables; use same definition using \@starttoc,
+%however default extension is now .los
+%
+%MODIFICATIONS:
+%
+%1. losymbol.sty can now always be used, without paying attention to the
+% style file used in de main document (using if undefined) <aug 1992>.
+%
+%2. It appeared that, if the list of symbols is larger than one page,
+% the pagenumber of the list in the table of contents was the last page
+% of the list of symbols. This is also repaired by interchanging the
+% \addcontentsline{} and the \starttoc{} statements <july 1992>.
+%
+%PROBLEMS ENCOUNTERED:
+%
+%1. If the explanation of the symbols is longer than the width of the
+% right column, the linespacing is not uniform anymore. The solution
+% to this problem is not yet found <july 1992>.
+%
+\def\losymbolsname{List of symbols}
+\def\listofsymbols{\@ifundefined{chapter}{%
+ \section*{\losymbolsname \@mkboth
+ {\uppercase{\losymbolsname}}{\uppercase{\losymbolsname}}}
+ \addcontentsline{toc}{section}{\losymbolsname}\@starttoc{los}
+ }{%
+ \chapter*{\losymbolsname \@mkboth
+ {\uppercase{\losymbolsname}}{\uppercase{\losymbolsname}}}
+ \addcontentsline{toc}{chapter}{\losymbolsname}\@starttoc{los}
+ }
+}
+%
+%command for putting text in file \jobname.loa is \addsymbol
+%command that is used for actually producing text is called
+%\makenicesymbolline
+\def\addsymbol#1#2{%
+\addtocontents{los}{\protect \makenicesymbolline{#1}{#2}}}
+%
+%physical dimensions of columns
+%
+\newdimen\@lcsym %width of left column
+\@lcsym=3cm %default 3cm
+%
+\newdimen\@mcsym %width of mid column (space)
+\@mcsym=2cm %default 2cm
+%
+\newdimen\@rcsym %width of right column
+\@rcsym=\hsize %initial width=textwidth
+%
+\advance\@rcsym by -\@lcsym %subtract lcsym
+\advance\@rcsym by -\@mcsym %subtract mid
+%
+%command for producing the actual line uses standard minipages
+%to cope with long definitions
+%
+\def\makenicesymbolline#1#2{%
+\begin{minipage}[t]{\@lcsym}#1\end{minipage}%
+$\hspace{\@mcsym}$%
+\begin{minipage}[t]{\@rcsym}#2\end{minipage}\newline}
+%
+%end of losymbol.sty
diff --git a/macros/latex209/contrib/misc/lslide.sty b/macros/latex209/contrib/misc/lslide.sty
new file mode 100644
index 0000000000..925e6688e4
--- /dev/null
+++ b/macros/latex209/contrib/misc/lslide.sty
@@ -0,0 +1,707 @@
+%% Save file as: LSLIDE.STY Source: FILESERV@SHSU.BITNET
+% lslide.sty - version 2.0.1 (April 1992)
+% by Young U. Ryu
+%
+% o There is a sample file in the end of the commented area.
+% LaTeX (or AmSLaTeX) it at least twice and print.
+% ^^^^^
+% The remainder of the original header information and example file are
+% in the file STY.LSLIDE_TEX on FILESERV/Niord.
+%
+% Noted modifications by Keith Farkas <farkas@eecg.toronto.edu> posted
+% to comp.text.tex on 21 Apr 92 15:43:52 GMT:
+% I have added a new vertical centering option to the slide style file
+% writen by Yong Ryu. The new option is \vertgroup and is like \vertcenter
+% with the exception that \vspace{2em} is placed after \subsection
+% rather than \vspace{\vfill}.
+
+\typeout{Presentation Slide Style File for LaTeX/AmSLaTeX, version 2.0.1}
+\typeout{by Young. U. Ryu - March 1992; modified by Keith Farkas - April 1992}
+
+\def\landscape{%
+ \sloppy
+ \textwidth 8.8in
+ \textheight 6in
+ \topmargin -.6in
+ \oddsidemargin -.18in
+ \evensidemargin\oddsidemargin}
+
+\def\portrait{%
+ \sloppy
+ \textwidth 6in
+ \textheight 8.8in
+ \topmargin -.65in
+ \oddsidemargin -.3in
+ \evensidemargin\oddsidemargin}
+
+%
+% Frame for the whole page
+% \@my@box@frame{thinkness}{hspace}{vspace}{...}
+%
+\newdimen \@tempdimc
+\newdimen \@tempdimd
+
+\def\@my@box@frame#1#2#3#4{\vbox{%
+ \setbox\@tempboxa\hbox{#4}%
+ \@tempdima#3
+ \advance\@tempdima #1 \advance\@tempdima \dp\@tempboxa
+ \hbox{\lower \@tempdima%
+ \hbox{\vbox{\hrule depth0pt height #1%
+ \hbox{\vrule depth0pt width #1%
+ \hskip#2%
+ \vbox{\vskip#3 \box\@tempboxa\vskip#3}%
+ \hskip#2%
+ \vrule depth0pt width #1}
+ \hrule depth0pt height #1}}}}}
+
+%
+% Shadow Frame for the whole page:
+% \@my@shadow@box@frame{frame thinkness}{shade thickness}{hspace}{vspace}{...}
+%
+
+\def\@my@shadow@box@frame#1#2#3#4#5{\vbox{%
+ \setbox\@tempboxa\hbox{#5}%
+ \@tempdima#4
+ \advance\@tempdima #1 \advance\@tempdima \dp\@tempboxa
+ \setbox\@tempboxa%
+ \hbox{\lower \@tempdima%
+ \hbox{\vbox{\hrule depth0pt height #1%
+ \hbox{\vrule depth0pt width #1%
+ \hskip#3%
+ \vbox{\vskip#4 \box\@tempboxa\vskip#4}%
+ \hskip#3%
+ \vrule depth0pt width #1}
+ \hrule depth0pt height #1}}}%
+ \@tempdimc\ht\@tempboxa \advance\@tempdimc-#2
+ \advance\@tempdimc\@tempdima
+ \@tempdimd\wd\@tempboxa
+ \hbox{\box\@tempboxa\relax%
+ \lower\@tempdima\hbox{\vrule width#2 height\@tempdimc depth0pt}}
+ \nointerlineskip\moveright#2
+ \vbox{\hrule height#2 width\@tempdimd depth0pt}}}
+
+%
+% Oval frame: by Tomoki Shiratori
+% \@my@oval@frame{thickness}{hspace}{vspace}{...}
+% thickness = \thinlines or \thicklines
+
+\def\@my@oval@frame#1#2#3#4{\vbox{%
+ #1%
+ \setbox0 = \vbox{%
+ \vskip#3\relax
+ #4\relax
+ \vskip#3\relax}%
+ \@tempdimc \ifdim \ht0 >\wd0 \wd0\else \ht0 \fi%
+ \divide\@tempdimc 10\relax
+ \@getcirc{\@tempdimc}%
+ \@tempdimc\ht0%
+ \advance\@tempdimc -\@tempdima%
+ \advance\@tempdimc 2\@wholewidth%
+ \@tempdimd .5\@tempdima \advance\@tempdimd -\@wholewidth%
+ \setbox0 = \hbox{%
+ \raise\@tempdimd\hbox{\vrule height\@tempdimc width\@wholewidth}%
+ \hskip#2\relax
+ \box0\relax
+ \hskip#2\relax
+ \raise\@tempdimd\hbox{\vrule height\@tempdimc width\@wholewidth}}%
+ \@tempdimd\wd0 \@tempdimc\@tempdimd%
+ \advance\@tempdimc -\@tempdima%
+ \vskip -.5\@tempdima \vskip\@wholewidth%
+ \hbox to\@tempdimd{%
+ \@tempcntb\@tempcnta \advance\@tempcntb 3\relax
+ {\@circlefnt \char\@tempcntb\kern -.5\@tempdima}%
+ \vbox{\hrule height\@wholewidth width\@tempdimc}%
+ {\@circlefnt \kern .5\@tempdima \kern -\@wholewidth \char\@tempcnta%
+ \kern -\@tempdima \kern\@wholewidth}}%
+ \vskip -.5\@tempdima%
+ \box0\relax
+ \vskip -.5\@tempdima%
+ \hbox to\@tempdimd{%
+ \@tempcntb\@tempcnta \advance\@tempcntb\tw@\relax
+ {\@circlefnt \char\@tempcntb\kern -.5\@tempdima}%
+ \vbox{\hrule height\@wholewidth width\@tempdimc}%
+ {\advance\@tempcntb\m@ne%
+ \@circlefnt \kern .5\@tempdima \kern -\@wholewidth \char\@tempcntb%
+ \kern -\@tempdima \kern \@wholewidth}}%
+ \vskip -.5\@tempdima \vskip\@wholewidth}}%
+
+%
+% modification of \@outputpage (from latex.tex)
+%
+\def\@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
+ \shipout
+ \vbox{\normalsize \baselineskip\z@ \lineskip\z@
+ \let\par\@@par %% 15 Sep 87
+ \vskip \topmargin \moveright\@themargin
+ \my@frame{%
+ \vbox{\setbox\@tempboxa
+ \vbox to\headheight{\vfil \hbox to\textwidth
+ {\let\label\@gobble \let\index\@gobble
+ \@thehead}} %% 22 Feb 87
+ \dp\@tempboxa\z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip\footskip
+ \hbox to\textwidth{\let\label\@gobble
+ \let\index\@gobble %% 22 Feb 87
+ \@thefoot}}%
+ }% end of my@frame
+ }%
+ \global\@colht\textheight
+ \endgroup\stepcounter{page}\let\firstmark\botmark}
+
+%
+% Heading and Footing
+% In part, from fancyheading.sty
+%
+
+\def\lhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}}
+\def\chead#1{\gdef\@echead{#1}\gdef\@ochead{#1}}
+\def\rhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}}
+
+\def\lfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}}
+\def\cfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}}
+\def\rfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}}
+
+\def\@slidehead#1#2#3#4#5{#1\hbox to\textwidth%
+ {\vbox{\hbox{\rlap{\parbox[b]{\textwidth}%
+ {\raggedright#2\strut}}\hfill\parbox[b]{\textwidth}%
+ {\centering#3\strut}\hfill\llap{\parbox[b]{\textwidth}%
+ {\raggedleft#4\strut}}}}}#5}
+
+\def\@slidefoot#1#2#3#4#5{#1\hbox to\textwidth%
+ {\vbox{\hbox{\rlap{\parbox[t]{\textwidth}%
+ {\raggedright#2\strut}}\hfill\parbox[t]{\textwidth}%
+ {\centering#3\strut}\hfill\llap{\parbox[t]{\textwidth}%
+ {\raggedleft#4\strut}}}}}#5}
+
+\def\ps@slide{%
+ \def\@oddhead{\@slidehead\relax\@olhead\@ochead\@orhead\hss}%
+ \def\@oddfoot{\@slidefoot\relax\@olfoot\@ocfoot\@orfoot\hss}%
+ \def\@evenhead{\@slidehead\hss\@elhead\@echead\@erhead\relax}%
+ \def\@evenfoot{\@slidefoot\hss\@elfoot\@ecfoot\@erfoot\relax}%
+ }
+
+\def\ps@empty{%
+ \def\@oddhead{\@slidehead\relax\space\space\space\hss}%
+ \def\@oddfoot{\@slidefoot\relax\space\space\space\hss}%
+ \def\@evenhead{\@slidehead\hss\space\space\space\relax}%
+ \def\@evenfoot{\@slidefoot\hss\space\space\space\relax}%
+ }
+
+%
+% by modifying \fbox in latex.tex
+% \Fbox{box sep}{box rule width/height}{...}
+%
+\def\Fbox#1#2#3{\@my@box@frame{#2}{#1}{#1}{#3}}
+
+%
+% Places a shadow box
+% \SFbox{box sep}{box rule width/height}{shade rule width/height}{...}
+%
+\def\SFbox#1#2#3#4{\@my@shadow@box@frame{#2}{#3}{#1}{#1}{#4}}
+
+%
+% by modifying \fbox in latex.tex
+% \Underline & \Underbar
+%
+\def\Underline#1{%
+ \leavevmode%
+ \setbox\@tempboxa\hbox{#1}%
+ \@tempdima1pt
+ \advance\@tempdima 3pt
+ \advance\@tempdima \dp\@tempboxa
+ \hbox{\lower \@tempdima%
+ \hbox{\vbox{\hbox{\vbox{\box\@tempboxa\vskip3pt}}%
+ \hrule height1pt}}}}
+
+% from plain.tex
+\def\Underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@
+ \m@th \Underline{\box\z@}$}
+
+%
+% Things to be entered in texts
+%
+\def\title{\@ifnextchar[{\@@Title}{\@Title}}
+\def\@Title#1{\def\slide@title{\uppercase{#1}}
+ \def\slidetitle{#1}}
+\def\@@Title[#1]#2{\def\slide@title{\uppercase{#2}}
+ \def\slidetitle{#1}}
+\def\slide@title{\hspace*{1pt}}
+\def\slidetitle{\hspace*{1pt}}
+
+\def\author{\@ifnextchar[{\@@Author}{\@Author}}
+\def\@@Author[#1]#2{\def\slide@author{#2}%
+ \def\slideauthor{#1}}
+\def\@Author#1{\def\slide@author{#1}
+ \def\slideauthor{#1}}
+\def\slide@author{\hspace*{1pt}}
+\def\slideauthor{\hspace*{1pt}}
+
+\def\organization#1{\def\authororga{#1}}
+\def\authororga{\hspace*{1pt}}
+
+\def\date#1{\def\slidedate{#1}}
+\def\slidedate{\today}
+
+%
+% section and subsection
+%
+\newcounter{sec@ctr}
+\setcounter{sec@ctr}{1}
+
+\def\section{\@ifnextchar[{\@@Section}{\@Section}}
+
+\def\@Section#1{\clearpage
+ \thispagestyle{empty}
+ \vspace*{\fill}
+ \begin{center}
+ \Hugesize\uppercase{#1}
+ \end{center}
+ \vspace*{\fill}
+ \def\sectiontitle{#1}
+ \Add@@secitem{toc}{\thesec@ctr}{#1}
+ \addtocounter{sec@ctr}{1}
+ \clearpage}
+
+\def\@@Section[#1]#2{\clearpage
+ \thispagestyle{empty}
+ \vspace*{\fill}
+ \begin{center}
+ \Hugesize\uppercase{#2}
+ \end{center}
+ \vspace*{\fill}
+ \def\sectiontitle{#1}
+ \Add@@secitem{toc}{\thesec@ctr}{#1}
+ \addtocounter{sec@ctr}{1}
+ \clearpage}
+
+\def\sectiontitle{\relax}
+
+\def\Add@@secitem#1#2#3{\if@filesw \begingroup
+\let\label\@gobble \let\index\@gobble \let\glossary\@gobble
+\def\protect##1{\string\string\string##1\string\space
+ \space}\@temptokena{\thepage}%
+\edef\@tempa{\write \@auxout{\string\@writefile{#1}{\protect
+ \secitem{#2}{#3}{\the\@temptokena}}}}\@tempa
+ \if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi}
+
+\def\subsection#1{\subsec@begin@vspace
+ \addtocounter{sec@ctr}{-1}
+ \Add@@subsecitem{toc}{\thesec@ctr}{#1}
+ \addtocounter{sec@ctr}{1}
+ \hspace*{\fill}
+ \sub@section@frame{\Largesize #1}
+ \hspace*{\fill}
+ \subsec@end@vspace}
+
+\def\Add@@subsecitem#1#2#3{\if@filesw \begingroup
+\let\label\@gobble \let\index\@gobble \let\glossary\@gobble
+\def\protect##1{\string\string\string##1\string\space
+ \space}\@temptokena{\thepage}%
+\edef\@tempa{\write \@auxout{\string\@writefile{#1}{\protect
+ \subsecitem{#2}{#3}{\the\@temptokena}}}}\@tempa
+ \if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi}
+
+%
+% titlepage
+%
+\def\titlepage{\thispagestyle{empty}
+ \vspace*{\fill}
+ \begin{center}
+ \Hugesize \slide@title \\ [2em]
+ \Normalsize\slide@author \\ [.5em]
+ \Normalsize\authororga \\ [1em]
+ \Normalsize\slidedate
+ \end{center}
+ \vspace*{\fill}
+ \setcounter{page}{0}
+ \clearpage}
+
+%
+% tables of contents
+%
+\def\contentsname{CONTENTS}
+
+\newcounter{@@@dum@@@}
+\setcounter{@@@dum@@@}{0}
+
+\def\slidecontents{\@ifnextchar*{\@@slidecontents}{\@slidecontents}}
+
+\def\@slidecontents{\openin1 \jobname.toc \ifeof1 \typeout
+ {No file \jobname.toc}\else\closein1\relax
+ \def\secitem##1##2##3{%
+ \ifnum\value{@@@dum@@@}=0%
+ \setcounter{@@@dum@@@}{1}%
+ \begin{citemize}\contsize\fi
+ \item[$\bullet$] ##2 \dotfill\ ##3\ignorespaces}
+ \def\subsecitem##1##2##3{\ignorespaces}
+ \clearpage
+ \thispagestyle{empty}
+ \addtocounter{page}{-1}
+ \subsec@begin@vspace
+ \hspace*{\fill}
+ \sub@section@frame{\Largesize\contentsname}
+ \hspace*{\fill}
+ \subsec@end@vspace
+ \input{\jobname.toc}
+ \ifnum\value{@@@dum@@@}=1%
+ \setcounter{@@@dum@@@}{0}%
+ \end{citemize}\fi
+ \vspace*{\fill}
+ \clearpage
+ \fi}
+
+\def\@@slidecontents*{\openin1 \jobname.toc \ifeof1 \typeout
+ {No file \jobname.toc}\else\closein1\relax
+ \def\secitem##1##2##3{%
+ \ifnum\value{@@@dum@@@}=0%
+ \setcounter{@@@dum@@@}{1}%
+ \begin{citemize}\contsize\fi
+ \item[$\bullet$] ##2 \hspace{\fill}}
+ \def\subsecitem##1##2##3{\ignorespaces}
+ \clearpage
+ \thispagestyle{empty}
+ \addtocounter{page}{-1}
+ \subsec@begin@vspace
+ \hspace*{\fill}
+ \sub@section@frame{\Largesize\contentsname}
+ \hspace*{\fill}
+ \subsec@end@vspace
+ \input{\jobname.toc}
+ \ifnum\value{@@@dum@@@}=1%
+ \setcounter{@@@dum@@@}{0}%
+ \end{citemize}\fi
+ \vspace*{\fill}
+ \clearpage
+ \fi}
+
+\def\sectioncontents{\@ifnextchar*{\@@sectioncontents}{\@sectioncontents}}
+
+\newcounter{@@@dummy@@@}
+\setcounter{@@@dummy@@@}{0}
+
+\@ifundefined{checkmark}%
+ {\def\mycheckmark{\surd}}%
+ {\def\mycheckmark{\checkmark}}
+
+\def\mysecpointer{\Rightarrow}
+
+\def\@sectioncontents{\openin1 \jobname.toc \ifeof1 \typeout
+ {No file \jobname.toc}\else\closein1\relax
+ \def\secitem##1##2##3{%
+ \ifnum\value{@@@dum@@@}=0%
+ \setcounter{@@@dum@@@}{1}%
+ \begin{citemize}\contsize\fi
+ \ifnum\value{@@@dummy@@@}=1%
+ \setcounter{@@@dummy@@@}{0}%
+ \end{ccitemize}\fi
+ \item[\ifnum\value{sec@ctr}>##1$\mycheckmark\;\bullet$%
+ \else\ifnum\value{sec@ctr}=##1$\mysecpointer\bullet$%
+ \else$\bullet$\fi\fi] ##2 \dotfill\ ##3\ignorespaces}
+ \def\subsecitem##1##2##3{%
+ \ifnum\value{sec@ctr}=##1%
+ \ifnum\value{@@@dummy@@@}=0
+ \setcounter{@@@dummy@@@}{1}
+ \begin{ccitemize}\contsizesize\fi
+ \item[$\bullet$] ##2 \hspace*{\fill}\fi}
+ \clearpage
+ \thispagestyle{empty}
+ \addtocounter{page}{-1}
+ \subsec@begin@vspace
+ \hspace*{\fill}
+ \sub@section@frame{\Largesize\contentsname}
+ \hspace*{\fill}
+ \subsec@end@vspace
+ \input{\jobname.toc}
+ \ifnum\value{@@@dummy@@@}=1%
+ \setcounter{@@@dummy@@@}{0}%
+ \end{ccitemize}\fi
+ \ifnum\value{@@@dum@@@}=1%
+ \setcounter{@@@dum@@@}{0}%
+ \end{citemize}\fi
+ \vspace*{\fill}
+ \clearpage
+ \fi}
+
+\def\@@sectioncontents*{\openin1 \jobname.toc \ifeof1 \typeout
+ {No file \jobname.toc}\else\closein1\relax
+ \def\secitem##1##2##3{%
+ \ifnum\value{@@@dum@@@}=0%
+ \setcounter{@@@dum@@@}{1}%
+ \begin{citemize}\contsize\fi
+ \ifnum\value{@@@dummy@@@}=1%
+ \setcounter{@@@dummy@@@}{0}%
+ \end{ccitemize}\fi
+ \item[\ifnum\value{sec@ctr}>##1$\mycheckmark\;\bullet$%
+ \else\ifnum\value{sec@ctr}=##1$\mysecpointer\bullet$%
+ \else$\bullet$\fi\fi] ##2 \hspace{\fill}}
+ \def\subsecitem##1##2##3{%
+ \ifnum\value{sec@ctr}=##1%
+ \ifnum\value{@@@dummy@@@}=0
+ \setcounter{@@@dummy@@@}{1}
+ \begin{ccitemize}\contsizesize\fi
+ \item[$\bullet$] ##2 \hspace{\fill}\fi}
+ \clearpage
+ \thispagestyle{empty}
+ \addtocounter{page}{-1}
+ \subsec@begin@vspace
+ \hspace*{\fill}
+ \sub@section@frame{\Largesize\contentsname}
+ \hspace*{\fill}
+ \subsec@end@vspace
+ \input{\jobname.toc}
+ \ifnum\value{@@@dummy@@@}=1%
+ \setcounter{@@@dummy@@@}{0}%
+ \end{ccitemize}\fi
+ \ifnum\value{@@@dum@@@}=1%
+ \setcounter{@@@dum@@@}{0}%
+ \end{citemize}\fi
+ \clearpage
+ \vspace*{\fill}
+ \fi}
+
+\def\citemize{\list{\relax}%
+ {\leftmargin=2.5em
+ \rightmargin=.5em
+ \labelwidth=2em
+ \labelsep=.5em
+ \def\makelabel##1{\hss\llap{##1}}}}
+\let\endcitemize =\endlist
+
+\def\ccitemize{\list{\relax}%
+ {\leftmargin=1em
+ \rightmargin=0em
+ \labelwidth=.5em
+ \labelsep=.5em
+ \def\makelabel##1{\hss\llap{##1}}}}
+\let\endccitemize =\endlist
+
+%
+% modifications to enumerate env.
+%
+\def\labelenumi{\theenumi.}
+ \def\theenumi{\arabic{enumi}}
+\def\labelenumii{\theenumi.\theenumii.}
+ \def\theenumii{\arabic{enumii}}
+ \def\p@enumii{\theenumi.}
+\def\labelenumiii{\theenumi.\theenumii.\theenumiii.}
+ \def\theenumiii{\arabic{enumiii}}
+ \def\p@enumiii{\theenumi.\theenumii.}
+\def\labelenumiv{\theenumi.\theenumii.\theenumiii.\theenumiv.}
+ \def\theenumiv{\arabic{enumiv}}
+ \def\p@enumiv{\theenumi.\theenumii.\theenumiii.}
+
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter{\@enumctr}
+ \labelsep = .2em
+ \ifnum \@enumdepth = 1
+ \labelwidth = 1em
+ \leftmargin=\leftskip
+ \advance\leftmargin1.8em
+ \else \ifnum \@enumdepth = 2
+ \labelwidth = 1.6em
+ \leftmargin = 1.8em %\leftmargin = \labelwidth+\labelsep
+ \else \ifnum \@enumdepth = 3
+ \labelwidth = 2.4em
+ \leftmargin = 2.6em
+ \else
+ \labelwidth = 3.2em
+ \leftmargin = 3.4em
+ \fi
+ \fi
+ \fi
+ \def\makelabel##1{\rlap{##1}\hss}}\fi}
+
+%
+% Font sizes
+%
+\def\Hugesize{\Huge} % in art12.sty, \Huge = \huge
+\def\Largesize{\huge} % in art11.sty, \Huge > \huge
+\def\Normalsize{\LARGE}
+\def\Smallsize{\Large}
+
+\def\contsize{\LARGE}
+\def\contsizesize{\Large}
+\def\smallcontentsfonts{%
+ \def\contsize{\Large}
+ \def\contsizesize{\large}}
+
+\def\smallerfonts{%
+ \def\Hugesize{\huge}
+ \def\Largesize{\LARGE}
+ \def\Normalsize{\Large}
+ \def\Smallsize{\large}
+ \def\contsize{\Large}
+ \def\contsizesize{\large}
+ \def\smallcontentsfonts{%
+ \def\contsize{\large}
+ \def\contsizesize{\normalsize}}%
+ }
+%
+% modifications to document env.
+%
+
+\let\@@@@document\document
+\def\document{\@@@@document
+ \Normalsize}
+\let\@@end@@document\enddocument
+\def\enddocument{%
+\if@filesw \newwrite\tf@toc
+ \immediate\openout\tf@toc=\jobname.toc
+ \typeout{Writing toc file \jobname.toc}\fi
+ \@@end@@document}
+
+%
+% slide environment
+%
+\newdimen\defaultskip
+\def\slide{\@ifnextchar[{\@@Slide}{\@Slide}}
+\def\@Slide{\@@Slide[0pt]}
+\def\@@Slide[#1]{\slide@begin@vspace
+ \begingroup
+ \advance\leftskip\defaultskip
+ \advance\rightskip\defaultskip
+ \advance\leftskip#1
+ \advance\rightskip#1
+ \advance\leftmargini\leftskip}
+\def\endslide{\par\endgroup
+ \slide@end@vspace
+ \clearpage}
+
+%
+% Page vertical spacing types
+%
+\def\vertcenter{%
+ \def\subsec@begin@vspace{\vspace*{\fill}}
+ \def\subsec@end@vspace{\vspace*{\fill}}
+ \def\slide@begin@vspace{\vspace*{\fill}}
+ \def\slide@end@vspace{\vspace*{\fill}}%
+ }
+\def\vertgroup{%
+ \def\subsec@begin@vspace{\relax}
+ \def\subsec@end@vspace{\vspace*{2em}}
+ \def\slide@begin@vspace{\vspace*{\fill}}
+ \def\slide@end@vspace{\vspace*{\fill}}%
+ }
+\def\verttop{%
+ \def\subsec@begin@vspace{\relax}
+ \def\subsec@end@vspace{\vspace*{2em}}
+ \def\slide@begin@vspace{\relax}
+ \def\slide@end@vspace{\relax}%
+ }
+
+%
+% Page Frame Definitions
+%
+\def\doubleboxframe{%
+ \def\my@frame##1{%
+ \@my@box@frame{.4em}{.3em}{.3em}%
+ {\@my@box@frame{1.6pt}{.8em}{.8em}{##1}}}}
+
+\def\shadowframe{%
+ \def\my@frame##1{%
+ \@my@shadow@box@frame{1.6pt}{3.2pt}{.8em}{.8em}{##1}}}
+
+\def\ovalframe{%
+ \def\my@frame##1{\@my@oval@frame{\thicklines}{.4em}{.3em}{##1}}}
+
+%
+% Subsection frames
+%
+\def\boxsecframe{\def\sub@section@frame##1{\Fbox{3pt}{1pt}{##1}}}
+\def\shadowsecframe{\def\sub@section@frame##1{\SFbox{3pt}{1pt}{2pt}{##1}}}
+
+%
+% defaults
+%
+% slide head and foot
+\lhead{\slidetitle}
+\chead{\relax} % empty
+\rhead{\sectiontitle}
+\lfoot{\slideauthor}
+\cfoot{\relax} % empty
+\rfoot{\thepage}
+
+%
+\defaultskip=1em
+%
+\pagestyle{slide}
+
+% \portrait vs. \landspace
+\portrait
+
+% no parindent
+\parindent 0pt
+
+% \vertcenter vs. \verttop
+\vertcenter % vertical centering
+
+% \doubleboxframe vs. \shadowframe vs. \ovalframe
+\shadowframe
+
+% \boxsecframe vs. \shadowsecframe
+\shadowsecframe
+
+% hyphenation off. Comment the following line if you want hyphenation on
+\pretolerance=10000
+
+% right-justification off
+% Comment the following two lines if you want right-justification on
+\@rightskip\@flushglue
+\rightskip\@rightskip
+
+%
+% use pointing hand
+%
+%\font\handsfont=hands scaled\magstep5
+%\def\handright{{\handsfont \char"41}}
+%\def\handleft{{\handsfont \char"42}}
+%\def\mysecpointer{\mbox{\handright}\,}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% hands fonts
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%%Do ftp login:
+%%
+%% anonymous@ymir.claremont.edu
+%%
+%%Go to the directory of hands.dir:
+%%
+%% cd tex
+%% cd mf
+%% cd hands
+%%
+%%Get all files:
+%%
+%% mget *
+%%
+%%Modifications to hands.mf
+%%^^^^^^^^^^^^^^^^^^^^^^^^^
+%% ... ...
+%% size=10pt#;
+%% ... ...
+%% thinline#:=6/100em#;
+%%
+%%Run metafont on hands.mf with magnification of:
+%%
+%% 1.2**5
+%%
+%%which is used in lslide.sty
+%%Probably, you may want to generate hands fonts with
+%%all magnifications:
+%%
+%% 1, root(1.2), 1.2, 1.2**2, 1.2**3, 1.2**4, 1.2**5
+%%
diff --git a/macros/latex209/contrib/misc/lslide.tex b/macros/latex209/contrib/misc/lslide.tex
new file mode 100644
index 0000000000..c68fcb9379
--- /dev/null
+++ b/macros/latex209/contrib/misc/lslide.tex
@@ -0,0 +1,412 @@
+%% Save file as: LSLIDE.TEX Source: FILESERV@SHSU.BITNET
+% by Young U. Ryu
+%
+% o There is a sample below. All original header material follows
+% \end{document}
+% LaTeX (or AmSLaTeX) it at least twice and print.
+% ^^^^^
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\documentstyle[12pt,lslide]{article}
+%\documentstyle[12pt,amssymbols,lslide]{article}
+ % <- if amssymbols.sty is available
+%\documentstyle[12pt,amstex,amssymb,lslide]{article}
+ % <- if you use AmSLaTeX
+
+%\landscape
+ % <- if your driver can rotate 90 degrees.
+ % e.x. in emTeX derivers:
+ % hp filename /tr2
+ % \portrait is default.
+
+% Addjust page dimenstions here if necessary. For example:
+%\addtolength{\textwidth}{-.3in}
+%\addtolength{\textheight}{.5in}
+%\addtolength{\topmargin}{.02in}
+%\addtolength{\oddsidemargin}{-.03in}
+%\addtolength{\evensidemargin}{-.03in}
+
+%\verttop
+ % compare it with \vertcenter that is the default
+
+%\doubleboxframe % or \ovalframe
+ % compare them with \shadowframe that is the default
+
+%\boxsecframe
+ % compare it with \shadowsecframe that is the default
+
+\begin{document}
+
+\title[Sample Slides with {\tt lslide.sty}]%
+ {Sample Slides \\
+ with {\tt lslide.sty}}
+
+\author{Thomas Magnum}
+
+\organization{Private Investigator's Association}
+
+\date{March 1992}
+
+\titlepage
+
+\slidecontents
+
+\sectioncontents
+
+\section{Introduction}
+
+\begin{slide}
+\subsection{Problems of Truth-Functional Logic}
+
+\Underbar{Case 1}
+
+\begin{enumerate}
+\item $\neg A$ \\
+ Therefore $A \rightarrow B$
+\item The Padre beach is not poluted. \\
+ Therefore, if the Padre beach is poluted, it is good for surfing.
+\end{enumerate}
+
+\vspace*{\fill}
+
+\Underbar{Case 2}
+
+\begin{enumerate}
+\item $B$ \\
+ Therefore $A \rightarrow B$
+\item The Padre beach is good for surfing. \\
+ Therefore, if the Padre beach is poluted, it is good for surfing.
+\end{enumerate}
+\end{slide}
+
+\begin{slide}[.5in]
+\Underbar{Case 3}
+
+\begin{enumerate}
+\item $A \rightarrow B$ \\
+ $C \rightarrow \neg B$ \\
+ $C \rightarrow A$ \\
+ $C$ \\
+ Therefore $B \wedge \neg B$
+\item If it is a bird, then it can fly. \\
+ If it is penguin, then it cannot fly. \\
+ If it is penguin, then it is a bird. \\
+ It is a bird \\
+ Therefore, it cannot fly.
+\end{enumerate}
+\end{slide}
+
+\sectioncontents
+
+\section{Next Section}
+
+\begin{slide}[1in]
+Whatever it is. What ever it is.
+Whatever it is. What ever it is.
+
+\vspace*{1.5em}
+
+\begin{enumerate}
+\item Item 1 with Normalsize.
+ \begin{enumerate}\Smallsize
+ \item Item 1.1 with Smallsize.
+ \item Item 1.2 with Smallsize.
+ \end{enumerate}
+\item Item 2 with Normalsize.
+\end{enumerate}
+\end{slide}
+
+\end{document}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% End of the sample file%%%
+%
+% Noted modifications by Keith Farkas <farkas@eecg.toronto.edu> posted
+% to comp.text.tex on 21 Apr 92 15:43:52 GMT:
+% I have added a new vertical centering option to the slide style file
+% writen by Yong Ryu. The new option is \vertgroup and is like \vertcenter
+% with the exception that \vspace{2em} is placed after \subsection
+% rather than \vspace{\vfill}.
+%
+% o lslide.sty is a LaTeX/AmSLaTeX style file for
+% presentation slide typesetting.
+% It was developed for my personal use. That is,
+% it is a prototype. It may be improved in the future.
+% See Final Notes, Bugs, Comments, etc.
+%
+% o It generates a title page, tables of contents,
+% separate section heading pages, and slides
+% with heads and foots inside a nice frame.
+%
+% o No hyphenations:
+% Hyphenated words are not easily readable
+% in presentation slides, in my opinion.
+% No right-justifications
+% Right justifications may place too big spaces
+% between words, when hyphenations are turned off.
+%
+% If you want hyphenations and/or right-justifications
+% go to the "defaults" section in the end of this style file
+% and comment commands to make them.
+%
+% o A postscript driver is NOT required.
+% ^^^
+%
+% o Version 2.0.1 Update
+% A. added a third vertical centering option \vertgroup. \vertgroup
+% is like \vertcenter with the exception that \vspace{2em} is
+% placed after \subsection rather than \vspace{\vfill}.
+% Keith Farkas (farkas@eecg.toronto.edu April 21 1992)
+%
+% o Version 2.0 Update
+% A. Frame macros are simplified and redundant macros are removed.
+% B. A bug in \slidecontents & \sectioncontents is fixed.
+% Bug: When filename.toc exists but is empty, the previous
+% version reports `\item ...' missing error.
+% C. Thanks to Tomoki Shiratori, an oval frame is added.
+% D. \typeA & \typeB are renamed to \vertcenter & \verttop.
+% E. \pframeA & \pframeB are renamed to \doubleboxframe & \shadowframe.
+% F. \sframeA & \sframeB are renamed to \boxsecframe & \shadowsecframe.
+%
+% o Version 1.2 Update
+% A. A shadow page frame added.
+% B. \SFbox changed.
+% C. \vertcenter and \verttop def. changed.
+% D. Extra spaces following page no. in tables of contents are removed.
+%
+% o Version 1.1 Update
+% A. Default page dimensions changed.
+% B. \leftmargini of itemize env.: \leftskip is always added.
+% The left skip of itemize env. is (almost) same as
+% that of enumerate env.
+% C. \SFbox added - places a shadow box.
+%
+% o How to use it:
+% A. \documentstyle[12pt,lslide]{article} % <- Minimal Req.
+% \documentstyle[12pt,amssymbols,lslide]{article}
+% % <- use amssymbols.sty for LaTeX if available
+% \documentstyle[12pt,amstex,amssymb,lslide]{article}
+% % <- may be used with AmSLaTeX
+% % Personally, I prefer it because it can
+% % easily handle various shapes/styles of fonts.
+%
+% Or you may use art11.sty to make the whole slide fonts smaller.
+% \documentstyle[11pt,lslide]{article}
+% \documentstyle[11pt,amssymbols,lslide]{article}
+% \documentstyle[11pt,amstex,amssymb,lslide]{article}
+% (To make fonts smaller, you may also use \smallerfonts. See B.)
+% Note: There is no font size difference between art10.sty
+% and art11.sty, when fonts >= \large are used.
+% If you use art10.sty, head and foot fonts of slides
+% become too small.
+%
+% B. \portrait (default)
+% \landscape
+% (Should be placed before \begin{document})
+% If your print driver allows the 90 degree rotation of the
+% output pages:
+% e.g., emTeX drivers - /tr1 or /tr3
+% e.x., hp myslide /tr1
+% e.g., dvi2ps - -elandscape (???)
+% or your printer has a sideway printing mode,
+% you may use \landscape.
+%
+% Probably, you must modify the page dimensions.
+% Place those modifications after \portrait or
+% \landscape. If you use the default (i.e., do not
+% use \portrait or \landscape), place them just after
+% \documentstyle[...]{...}.
+% e.g., \addtolength{\textwidth}{...in}
+% \addtolength{\textheight}{...in}
+% \addtolength{\topmargin}{...in}
+% \addtolength{\oddsidemargin}{...in}
+% \addtolength{\evensidemargin}{...in}
+%
+% \defaultskip=...in or ...pt or ...em or ......
+% horizontal spaces at the left and the right of slide
+% bodies (within the slide frame)
+% The default is:
+% \defaultskip=1em
+%
+% \vertcenter (default)
+% \verttop
+% (Should be placed before \begin{document})
+% \vertcenter option places \vspace*{\fill} on the top and bottom
+% of each slide page and after \subsection. (Vertical centering)
+% \verttop option places \vspace*{.5em} before \subsection and
+% \vspace*{1em} after \subsection; not \vspace on the top
+% or bottom of each slide page.
+% \vertgroup is like \vertcenter but places \vspace{2em} after
+% \subsection
+%
+% \doubleboxframe
+% \shadowframe (default)
+% (Should be placed before \begin{document})
+% \doubleboxframe option places double boxes around each page.
+% \shadowframe option places a shadow box around each page.
+% \ovalframe option places an oval around each page.
+%
+% \boxsecframe
+% \shadowsecframe (default)
+% (Should be placed before \begin{document})
+% \boxsecframe option places a single box around subsection title.
+% \shadowsecframe option places a shadow box around subsection title.
+%
+% \contentsname{...}
+% (Placed before or after \begin{document})
+% Heading of tables of contents. Default is:
+% \contentsname{CONTENTS}
+%
+% \smallerfonts
+% (Placed before \begin{document})
+% Make fonts smaller thoughout the whole file.
+% If you think the default fonts are too big,
+% use this command.
+% Or, you may use art11.sty to make fonts smaller. (See A.)
+%
+% \smallcontentsfonts
+% (Placed before or after \begin{document})
+% Makes fonts for tables of contents smaller.
+% Use when the table of content occupies more than one page.
+% If it is used with \smallerfonts, it must placed after
+% \smallerfonts.
+%
+% C. \title{T} or \title[T1]{T2}
+% (Placed before or after \begin{document})
+% T or T2 goes to the title page.
+% T or T1 goes to the left head of each page.
+% \author{A}
+% (Placed before or after \begin{document})
+% A goes to the title page and left foot of each page.
+% \organization{O}
+% (Placed before or after \begin{document})
+% O goes to the title page.
+% \date{D}
+% (Placed before or after \begin{document})
+% D goes to the title page.
+% \titlepage
+% (Placed after \begin{document})
+% Generates the title page.
+%
+% From now on, everything should be placed after \begin{document}
+%
+% D. \slidecontents or \slidecontents*
+% (Placed outside \begin{slide} ... \end{slide})
+% Generates a Table of Contents that Consists of Section Headings.
+% Usually placed after \titlepage
+% If * is placed, no page numbers will appear.
+%
+% \sectioncontents or sectioncontents*
+% (Placed outside \begin{slide} ... \end{slide})
+% Generates a Table of Contents that Consists of Section Headings
+% and Subsection Heading of the Following Section.
+% Usually placed before \section{...}
+% If * is placed, no page numbers will appear.
+%
+% E. \section{A} or \section[A1]{A2}
+% (Placed outside \begin{slide} ... \end{slide})
+% A or A2 goes to a separate page of section heading
+% A or A1 goes to a table of contents and the right head of each page.
+%
+% F. \subsection{A}
+% (Placed inside \begin{slide} ... \end{slide})
+% A frame box surrounds A.
+% A goes to a table of contents for the section.
+%
+% G. \begin{slide} ... \end{slide}
+% Generates a page of slide.
+% Your slide bodies are to be placed here.
+% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+% \begin{slide}[dimension] ... \end{slide}
+% Adds horizontal spaces by "dimension (e.g. 1in, 3em, etc.)"
+% at the left and the right of the text body (within
+% the frame).
+% Only for that page of slide.
+% cf. \defaultskip = dimension
+% for all pages of slide
+%
+% H. \Underbar{...} and \Underline{...}
+% Same as \underbar and \underline except that the rule
+% is thicker.
+%
+% I. Font size (Notice that all start with a capital letter)
+% \Hugesize
+% \Largesize
+% \Normalsize - default for slides
+% \Smallsize
+%
+% J. Slide head and foot
+% \lhead{...} default: \lhead{\slidetitle}
+% \chead{...} default: \chead{\relax} % empty
+% \rhead{...} default: \rhead{\sectiontitle}
+% \lfoot{...} default: \lfoot{\slideauthor}
+% \cfoot{...} default: \cfoot{\relax} % empty
+% \rfoot{...} default: \rfoot{\thepage}
+%
+% K. Miscellaneous
+% \slidetitle - prints slide title (default: \hspace*{1pt})
+% \slideauthor - prints author name (default: \hspace*{1pt})
+% \authororga - prints organization (default: \hspace*{1pt})
+% \slidedate - prints date (default: \today)
+% \sectiontitle - prints section heading
+%
+% \pagestyle{slide} is default for slides
+% note: \ps@slide is defined in this style file
+% \pagestyle{empty} is default for the title page,
+% tables of contents, and section heading pages.
+%
+% \Fbox{box sep}{rule thickness}{...}
+% Places a box around ...
+% box sep = spaces between ... and box rules
+% rule thickness = as you can guess
+% e.x., \Fbox{3pt}{1pt}{Box Me}
+%
+% \SFbox{box sep}{rule thickness}{shade thickness}{...}
+% Places a shadow box around ...
+% box sep = spaces between ... and box rules
+% e.x., \SFbox{3pt}{1pt}{2pt}{Box Me}
+%
+% L. Final Notes, Bugs, Comments, etc.
+% This is a prototype. It will be extended in the future:
+% - Various types of slide frames are desirable.
+% Users may select.
+% - \begin{note} ... \end{note} is useful.
+% - Top-bottom centering (vertical centering) can be done by \vertcenter.
+% Left-right centering (horizontal centering) may be implemented.
+% - Postscript specific features ???
+% With postscript, lots of things can be done easily (?!).
+% But, I personally discourage postscript specific features,
+% because I myself use non-postscript printers more often.
+% - Probably, new font definitions are needed, instead of
+% using those (i.e. defaults) of LaTeX/AmSLaTeX, 'cause
+% many of them are not used at all and we may need
+% big fonts with various shapes.
+%
+% How to get (bold) sans serif fonts instead of roman fonts:
+% - If you use AmSLaTeX (with the new font scheme), it's simple:
+% \begin{document}\sf
+% \begin{document}\sf\bf
+% Or something more ... (especially to get bold math)
+% - If you use LaTeX, it's not simple.
+% ``\begin{document}\sf\Normalsize'' or
+% ``\begin{document}\sf\Normalsize\bf''
+% handles many (but not all) cases.
+% The best way is to define a style file (or using
+% one if available) which sets \sf (or \sf\bf) as default.
+% Or you may create a .fmt file after modifying
+% lfonts.sty.
+% - Personally, I modified a font file (fontdef.max) for AmSLaTeX
+% and created a lslide.fmt file so that bold sans serif
+% is default for text and bold symbol fonts are
+% default for math.
+% However, unfortunately, not all AmS bold fonts
+% are available!!!
+%
+% Bugs
+% - Probably a few (or many???).
+% - I can't locate them. I need your help...
+%
+% E-mail bugs and comments to
+% young@emx.utexas.edu
+% youngryu@bongo.cc.utexas.edu
+%
+%
diff --git a/macros/latex209/contrib/misc/ltgtsim.sty b/macros/latex209/contrib/misc/ltgtsim.sty
new file mode 100644
index 0000000000..7294ea4fba
--- /dev/null
+++ b/macros/latex209/contrib/misc/ltgtsim.sty
@@ -0,0 +1,15 @@
+% Save file as: LTGTSIM.STY Source: FILESERV@SHSU.BITNET
+% Posted by thompson@stars.gsfc.nasa.gov (BILL THOMPSON) to comp.text.tex
+% on 29 Jul 91 15:41:26 GMT
+
+% The commands \ltsim and \gtsim combine the symbols < ~ and > ~ respectively.
+% The commands \ltsimscript and \gtsimscript do the same in subscripts.
+
+\newcommand{\ltsim}{\protect\raisebox{-0.5ex}{$\:\stackrel{\textstyle <}
+ {\sim}\:$}}
+\newcommand{\gtsim}{\protect\raisebox{-0.5ex}{$\:\stackrel{\textstyle >}
+ {\sim}\:$}}
+\newcommand{\ltsimscript}{\protect\raisebox{-0.5ex}{$\stackrel{\scriptstyle <}
+ {\sim}$}}
+\newcommand{\gtsimscript}{\protect\raisebox{-0.5ex}{$\stackrel{\scriptstyle >}
+ {\sim}$}}
diff --git a/macros/latex209/contrib/misc/makerobust.sty b/macros/latex209/contrib/misc/makerobust.sty
new file mode 100644
index 0000000000..114531cfeb
--- /dev/null
+++ b/macros/latex209/contrib/misc/makerobust.sty
@@ -0,0 +1,112 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "David Carlisle",
+%%% version = "1.01",
+%%% date = "04 May 1993",
+%%% time = "13:48:42 BST",
+%%% filename = "makerobust.sty",
+%%% address = "Computer Science Department
+%%% Manchester University
+%%% Oxford Road
+%%% Manchester
+%%% England
+%%% M13 9PL",
+%%% telephone = "+44 61 275 6139",
+%%% FAX = "+44 61 275 6236",
+%%% checksum = "63663 112 477 4231",
+%%% email = "carlisle@cs.man.ac.uk (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, fragile, robust",
+%%% supported = "yes",
+%%% docstring = "
+%%%
+%%% makerobust.sty
+%%%
+%%% A LaTeX style option defining the \makerobust command.
+%%% \makerobust{\cs} makes the control sequence \cs robust.
+%%%
+%%% If you put \makerobust{\cite} in the preamble, you can write:
+%%% \caption{Taken from \cite{foo}} rather than
+%%% \caption{Taken from \protect\cite{foo}}
+%%%
+%%% The checksum field above was produced by
+%%% Robert Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+%
+% Version 1.00: 19 May 1991
+% Version 1.01: 04 May 1993 (Xiaoming Cai) remove `\` from the internal
+% command names, so that they work when read
+% from a file.
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*x>
+% This file may be used without modification as a style (.sty) file.
+%
+% If you have Mittelbach's doc.sty, this file may be formatted with a
+% command like:
+% latex makerobust.sty
+%
+% If you have the Mittelbach/Duchier/Braams docstrip utility, you may
+% produce a faster loading .sty file.
+% Rename this file to: makerobust.doc
+% Then run this file through *plain* TeX:
+% tex makerobust.doc
+% This should produce the file makerobust.sty.
+% If you do not have plain TeX on your system, you can trick LaTeX into
+% doing the work as follows:
+% latex \def\fmtname{plain} \input makerobust.doc
+% Note that you may need to quote the arguments here to stop your
+% operating system treating the \ characters incorrectly.
+%
+% latex makerobust.doc
+% Will produce a typeset version of the documentation, as above.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname
+ \def\batchfile{makerobust.doc}
+ \input docstrip
+ \preamble
+
+ Do not distribute the stripped version of this file.
+ The checksum in the header refers to the documented version.
+
+ \endpreamble
+ \generateFile{makerobust.sty}{t}{\from{makerobust.doc}{}}
+ \endinput
+\fi
+%
+\ifcat a\noexpand @\let\next\relax\else\def\next{%
+ \documentstyle[doc]{article}\MakePercentIgnore}\fi\next
+%
+%\def\eatmodule<#1>{}\eatmodule
+%</x>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \textwidth=355pt ^^A Allow macrocode text with 72 columns.
+% \CodelineIndex ^^A Code lines numbered.
+% \DisableCrossrefs ^^A No Cross references.
+% \MakeShortVerb{\|} ^^A |\foo| works like \verb+\foo+
+%
+% \title{makerobust.sty}
+% \author{D. P. Carlisle}
+% \date{04 May 93}
+% \begin{document}
+% \maketitle
+%
+% \begin{macro}{\makerobust}
+% |\makerobust| may be used to make a fragile command robust.\\
+% So if in the preamble you have |\makerobust{\cite}| then you may use
+% |\cite| rather than |\protect\cite| in a moving argument, like
+% that of |\caption|.
+% \begin{macrocode}
+\def\makerobust#1{%
+ \@ifundefined{fr@gile\expandafter\@gobble\string#1}%
+ {\expandafter
+ \let\csname fr@gile\expandafter\@gobble\string#1\endcsname#1%
+ \edef#1{\noexpand\protect\expandafter\noexpand
+ \csname fr@gile\expandafter\@gobble\string#1\endcsname}}%
+ {\@warning{\string#1 is already robust (command ignored)}}}%
+% \end{macrocode}
+% \end{macro}
+% \end{document}
+\endinput
diff --git a/macros/latex209/contrib/misc/marginote.sty b/macros/latex209/contrib/misc/marginote.sty
new file mode 100644
index 0000000000..940d5c2fd1
--- /dev/null
+++ b/macros/latex209/contrib/misc/marginote.sty
@@ -0,0 +1,75 @@
+%%% ======================================================================
+%%% @LaTeX-style-file{
+%%% filename = "marginote.sty",
+%%% version = "2.0",
+%%% date = "1 July 1993",
+%%% time = "09:07:08 CDT",
+%%% author = "George D. Greenwade",
+%%% address = "Department of Economics and Business Analysis
+%%% College of Business Administration
+%%% P. O. Box 2118
+%%% Sam Houston State University
+%%% Huntsville, Texas, USA 77341-2118",
+%%% email = "bed_gdg@SHSU.edu (Internet)
+%%% BED_GDG@SHSU (BITNET)
+%%% SHSU::BED_GDG (THENET)",
+%%% telephone = "(409) 294-1266",
+%%% FAX = "(409) 294-3712",
+%%% supported = "yes",
+%%% archived = "SHSU*",
+%%% keywords = "LaTeX, marginal notes",
+%%% codetable = "ISO/ASCII",
+%%% abstract = "Create command \marginote{text} to use marginal
+%%% notes in a document. Each marginal note is
+%%% denoted by the fnsymbol sequence and does not
+%%% alter any know counters other than those created.
+%%% Original version September 12, 1989.",
+%%% modifications = "Modified 1 July 1993 in response to report from
+%%% Bradley C. Kuszmaul <bradley@theory.lcs.mit.edu>
+%%% via David M. Jones <dmjones@theory.lcs.mit.edu>
+%%% that a `gratuitous space' was introduced in the
+%%% \stepcounter{marginalnote} (dumb mistake on my
+%%% part!). Also added this file header and added
+%%% \endinput at the end of the file.",
+%%% checksum = "11442 75 385 3712",
+%%% docstring = "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."
+%%% }
+%%% ======================================================================
+\typeout{LaTeX document substyle 'marginote.sty' July 1, 1993 (GDG)}
+
+\topmargin 0pt %% this code from FULLPAGE.STY
+\advance \topmargin by -\headheight %%
+\advance \topmargin by -\headsep %%
+
+\textheight 8.9in %%
+
+\oddsidemargin 0pt %%
+\evensidemargin \oddsidemargin %%
+\marginparwidth 1.1in %% changed (+.6in) to allow for notes
+
+\textwidth 5.9in %% changed (-.6in) to allow for notes
+ %% end of FULLPAGE.STY
+
+\newcounter{marginalnote}
+\def\themarginalnote{\fnsymbol{marginalnote}}
+\newcount\marginalnotecounter
+\marginalnotecounter=0
+
+\def\marginote#1{\ifmmode %% Can't use \marginpar in math mode, thus ...
+\typeout{ }
+\typeout{\string \marginote \space error. Cannot use \string \marginote \space
+in math mode. Ignoring text.}
+\typeout{ }
+\else \ifnum \marginalnotecounter=9 \setcounter{marginalnote}{0}
+\marginalnotecounter= 0 \fi %% fnsymbol only goes to 9
+\stepcounter{marginalnote}% -- line split -- GDG 1-JUL-1993
+\advance\marginalnotecounter 1
+{$^{\themarginalnote}$\ \marginpar{\raggedright %% \raggedright just looks
+\footnotesize $\themarginalnote.$\ #1}} %% better in such a small space
+\fi}
+\endinput % -- added -- GDG 1-JUL-1993
diff --git a/macros/latex209/contrib/misc/marnote.sty b/macros/latex209/contrib/misc/marnote.sty
new file mode 100644
index 0000000000..3246beca44
--- /dev/null
+++ b/macros/latex209/contrib/misc/marnote.sty
@@ -0,0 +1,61 @@
+% marnote.sty - MarNote 0.1 <03 Jan 92>
+% macros to print a short note vertically in left or right margin on all pages.
+% literal text is rotated appropriately.
+%
+% requires psfig and dvips
+%
+% James Darrell McCauley <jdm5548@diamond.tamu.edu>
+% Department of Agricultural Engineering
+% Texas A&M University
+% College Station, Texas 77843-2117, USA
+%
+% useful for:
+% o printing full citation on pre-prints of papers (so if
+% you give copies to friends, they know where to find
+% it published later).
+% o easily identifying documents in folders or notebooks
+\ifx\undefined\leftnote\else\endinput\fi
+\typeout{MarNote 0.1 <03 Jan 92>} % identity
+\input{psfig} % latest psfig.tex makes sure that this is read only once
+%
+\def\leftnote#1{
+ \special{!userdict begin /bop-hook{gsave 20 50 translate 90 rotate
+ /Times-Roman findfont 11 scalefont setfont
+ 0 0 moveto (#1)
+ show grestore}def end
+ }
+}
+%
+\def\rightnote#1{
+ \special{!userdict begin /bop-hook{gsave 590 50 translate 90 rotate
+ /Times-Roman findfont 11 scalefont setfont
+ 0 0 moveto (#1)
+ show grestore}def end
+ }
+}
+%
+% Special bonus!! a macro to lightly write the word "draft"
+% across a page. Use only one of \leftnote, \rightnote, & \draftcp
+\def\draftcp{
+ \special{!userdict begin /bop-hook{gsave 200 30 translate
+ 65 rotate /Times-Roman findfont 216 scalefont setfont
+ 0 0 moveto 0.99 setgray (DRAFT) show grestore}def end
+ }
+}
+\endinput
+\documentstyle[marnote]{article}
+\title{Example of ``marnote.sty''}
+\author{James Darrell McCauley}
+\date{03 January 1992}
+\begin{document}
+%\draftcp % specifies a draft copy
+\rightnote{``Example of MarNote Style File.'' 1992. McCauley, J.D.
+ To appear in: Style Archives Everywhere.}
+\maketitle
+\end{document}
+
+
+--
+James Darrell McCauley, Grad Res Asst, Spatial Analysis Lab
+Dept of Ag Engr, Texas A&M Univ, College Station, TX 77843-2117, USA
+(Darrell.McCauley@tamu.edu, jdm5548@tamagen.bitnet)
diff --git a/macros/latex209/contrib/misc/mathtext.sty b/macros/latex209/contrib/misc/mathtext.sty
new file mode 100644
index 0000000000..3d54d9fcf0
--- /dev/null
+++ b/macros/latex209/contrib/misc/mathtext.sty
@@ -0,0 +1,12 @@
+% MATHTEXT.STY
+% Author: George D. Greenwade, Director, Center for Business and Economic
+% Research, Sam Houston State University, Huntsville, TX 77341-2056
+% Voice: (409) 294-1518 BITNET: BED_GDG@SHSU
+% Purpose: Brief style file which allows the issuance of \text{foo} to insert
+% text in mathmode, and warns (but processes fragilely) when
+% encountered outside mathmode.
+% Date: January 14, 1989 (GDG)
+\typeout{Document substyle 'mathtext.sty' January 14, 1989 (GDG)}
+\def\text#1{\ifmmode\leavevmode\hbox{#1}\else
+ \typeout{Warning: \string\text \space used outside math mode!}
+ \begingroup\hbox{#1}\endgroup\fi}
diff --git a/macros/latex209/contrib/misc/meparticle.sty b/macros/latex209/contrib/misc/meparticle.sty
new file mode 100644
index 0000000000..6d90a700d0
--- /dev/null
+++ b/macros/latex209/contrib/misc/meparticle.sty
@@ -0,0 +1,324 @@
+% MEParticle.sty 26-Mar-92 balemi@aut.ee.ethz.ch
+% For articles according to the formatting instructions for the
+% proceedings of Mechanical Engineering Publications Limited
+%
+% use with \title{} \author{} \abstract{} \maketitle
+
+
+\typeout{Document Style `MEParticle' <26 Mar 92>.}
+
+
+\def\abstract#1{\gdef\@abstract{#1}}
+\def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}}
+\def\ds@twoside{\@twosidetrue \@mparswitchtrue} \def\ds@draft{\overfullrule
+5pt}
+\@options
+\input art1\@ptsize.sty\relax
+
+
+\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}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+\let\enddescription\endlist
+
+
+\def\theequation{\arabic{equation}}
+
+
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt
+\tabbingsep \labelsep
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt
+
+\newcounter{part}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+
+\def\thepart{\Roman{part}} \def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\def\tableofcontents{\section*{Contents\@mkboth{CONTENTS}{CONTENTS}}
+ \@starttoc{toc}}
+\def\l@part#1#2{\addpenalty{\@secpenalty}
+ \addvspace{2.25em plus 1pt} \begingroup
+ \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip
+-\@pnumwidth
+ {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+ \nobreak \endgroup}
+\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
+\@tempdima 1.5em \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip #1\nobreak\hfil
+\nobreak\hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+
+\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{\section*{List of Figures\@mkboth
+ {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\listoftables{\section*{List of Tables\@mkboth
+ {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}}
+\let\l@table\l@figure
+
+
+\def\thebibliography#1{\section*{REFERENCES\@mkboth
+ {REFERENCES}{REFERENCES}}\list
+ {(\arabic{enumi})}{\settowidth\labelwidth{[#1]}
+ \labelwidth 8mm \leftmargin 8mm
+ \itemsep -1.5mm
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+
+\def\@mklab#1{#1 \hfil}
+
+
+\newif\if@restonecol
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{Index}]
+ \@mkboth{INDEX}{INDEX}\thispagestyle{MEPheadings}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\footnoterule{\kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@}
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
+
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim \wd\@tempboxa >\hsize #1: #2\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Figure \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+\newcounter{table}
+\def\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Table \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+
+\def\maketitle{\par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox
+ to 0pt{$^{\@thefnmark}$\hss}}
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else \newpage
+ \global\@topnum\z@ \@maketitle \fi\thispagestyle{MEPheadings}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+\let\thanks\relax}
+\def\@maketitle{\newpage
+\vskip 55mm \noindent {\bf SYNOPSIS. }\@abstract
+ \par
+ \vskip 1em}
+
+\mark{{}{}}
+
+\if@twoside \def\ps@headings{\let\@mkboth\markboth
+\def\@oddfoot{}\def\@evenfoot{}\def\@evenhead{\rm \thepage\hfil \sl
+\leftmark}\def\@oddhead{\hbox{}\sl \rightmark \hfil
+\rm\thepage}\def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth
+>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}\def\subsectionmark##1{\markright
+{\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}
+\else \def\ps@headings{\let\@mkboth\markboth
+\def\@oddfoot{}\def\@evenfoot{}\def\@oddhead{\hbox {}\sl \rightmark \hfil
+\rm\thepage}\def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth
+>\z@
+ \thesection\hskip 1em\relax \fi ##1}}}}
+\fi
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+\def\@oddhead{\hbox{}\sl\rightmark \hfil
+\rm\thepage}\def\@oddfoot{}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox
+{}}\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+
+
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+\ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi
+
+
+\twocolumn
+
+% FROM art10.sty 22-Dec-87
+\def\section{\@startsection {section}{1}{\z@}{-2.5ex plus -1ex minus
+ -.2ex}{2.3ex plus .2ex}{\bf}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-2.25ex plus -1ex minus
+ -.2ex}{1.5ex plus .2ex}{\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.25ex plus
+ -1ex minus -.2ex}{1.5ex plus .2ex}{\bf}}
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}}
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus
+ .2ex}{-1em}{\normalsize\bf}}
+
+
+\setlength{\columnsep}{6mm}
+\setlength{\topmargin}{-2cm}
+\setlength{\headheight}{23mm}
+\setlength{\headsep}{0.8cm}
+\setlength{\textheight}{240mm}
+\setlength{\oddsidemargin}{0.5cm}
+\setlength{\textwidth}{161mm}
+
+\pagestyle{MEPheadings}
+\newdimen\headwidth
+\newdimen\headrulewidth
+\headrulewidth 0.4pt
+\headwidth \textwidth
+\addtolength\headwidth{-10mm}
+\def\footnoterule{\kern-3\p@
+ \hrule width \columnwidth
+ \kern 2.6\p@}
+
+\def\footernote#1{\def\@footernote{#1}}
+\footernote{}
+\def\@oddfoot{\hfill\@footernote}\def\@evenfoot{\@footernote\hfill}
+
+\def\ps@MEPheadings{\let\@mkboth\@gobbletwo
+\def\@oddhead{\hbox{}\sl\rightmark \hfil
+\rm\thepage}\def\@evenhead{\rm \thepage\hfil\sl\leftmark\hbox{}}
+\def\@oddfoot{\hfill\@footernote}\def\@evenfoot{\@footernote\hfill}
+\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+% Definition for the running heads. The standard command
+% \markboth{author's name}{title of the paper}
+% can be used to manually set the headers
+\def\@evenhead{\hbox to\headwidth{\vbox{\hbox
+{\rlap{\parbox[b]{\headwidth}{\leftmark \strut}\hfil \thepage}}}}\hss}
+\def\@oddhead{\hbox to\headwidth{\vbox{\hbox
+{\rlap{\parbox[b]{\headwidth}{\rightmark\strut}\hfil \thepage}}}}\hss}
+\def\rightmark{\@author\\\@title \gdef\@title{}
+}
+\def\leftmark{\@author\\@title \gdef\@title{}
+}
+\def\markboth#1#2{\def\leftmark{#1}\def\rightmark{#2}}
+
+
+
+\long\def\@makecaption#1#2#3{
+\ifx\figurestring#3
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1.~ #2}
+ \ifdim \wd\@tempboxa >\hsize
+ \setbox\@tempboxa\hbox{#1.~ }
+ \parbox{\hsize}{\raggedright\hangindent \wd\@tempboxa \hangafter=1%
+ \unhbox\@tempboxa#2}
+ \else \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi
+\else
+ \setbox\@tempboxa\hbox{#1~~ #2}
+ \ifdim \wd\@tempboxa >\hsize
+ \setbox\@tempboxa\hbox{#1~~ }
+ \parbox{\hsize}{\raggedright\hangindent \wd\@tempboxa \hangafter=1%
+ \unhbox\@tempboxa#2}
+ \else \hbox to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi
+ \vskip 10pt
+\fi
+}
+
+
+
+
diff --git a/macros/latex209/contrib/misc/merge.sty b/macros/latex209/contrib/misc/merge.sty
new file mode 100644
index 0000000000..b3f033869e
--- /dev/null
+++ b/macros/latex209/contrib/misc/merge.sty
@@ -0,0 +1,178 @@
+%% [merge.sty]
+%%
+%% MERGE -- A Form Letter Option to the LaTeX Letter Style
+%%
+%% by
+%%
+%% Graeme McKinstry
+%% Computing Services Centre
+%% University of Otago
+%% P O Box 56
+%% Dunedin, New Zealand
+%%
+%% graeme%otago.ac.nz@relay.cs.net
+%%
+%% A version of these macros appeared in TUGboat 8 #1, April 1987.
+%%
+%% Merge is a substyle [option] under the Latex style 'Letter' which
+%% merges a standard letter with a separate file containing addresses
+%% and opening lines. Merge will read {address}{opening} pairs from a
+%% specified file and merge them with a form letter by producing a separate
+%% letter environment (containing unique "\begin{letter}{address}" and
+%% "\opening{opening}" commands) for each pair.
+%%
+%% Detailed instructions for preparation of the form letter and the
+%% separate address file appear below, after the macros.
+%%
+%%
+%% 27 July 1988
+%% Special Thanks go to B. Beeton (BNB@SEED.AMS.COM) for
+%% -- supplying the raw TeX and documentation from the TUGBoat article;
+%% -- adding some documentation;
+%% -- and for placing this file in the <tex.tugboat> archives at score.
+%%
+%% 28 July 1988
+%% C. Roberson (csrobe@icase.[arpa|edu], csrobe@[wm]cs.wm.edu)
+%% -- some additional documentation (mostly cleanup for .sty file);
+%% -- changed ID message to a form more similar to LaTeX's;
+%% -- changed "Could not open file" to "Could not open address file"
+%% so user would better understand for which filename TeX
+%% was prompting with the string "\@mergefile=";
+%% -- tested merge.sty; It works! Thanks, Graeme!
+%% -- submitted file to /public/latex-style archives @ cs.rochester.edu.
+%%
+%% 6 September 1988
+%% G. McKinstry
+%% -- enhanced the macros to handle running headlines properly;
+%% -- fixed some other problems from the original version not addressed
+%% fully by C. Roberson;
+%% -- submitted new file to the latex-style archives.
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+% csr - changed next line to conform more to LaTeX greeting.
+\typeout{Letter Sub-Style 'Merge'. Release 6 October 1986 by Graeme McKinstry}
+
+%% The basic algorithm is:
+%% 1. Open the address file.
+%% 2. Read the addresses file getting the address and opening line.
+%% 3. Process the contents of the MERGE environment and store it
+%% in a box (\@store). This is the standard part of the letter.
+%% 4. Produce the start of the letter (your address (including date),
+%% their address, and the opening line).
+%% 5. Make a copy of the standard letter (\@store) and unbox this copy.
+%% 6. Repeat steps 2, 4, and 5 (not 3) until there are no more addresses.
+
+
+\newbox\@store
+\long\def\@contents{\global\setbox\@store=\vbox\bgroup} % store the contents
+\long\def\@endcontents{\egroup} % of the letter
+
+\def\@sendaddress{test}
+\def\@openingtext{test}
+\newif\if@firsttime % For storing the standard letter
+\@firsttimetrue % the first time through.
+
+\newread\@addrfile % allocate an input stream
+
+\def\@openfile{\openin\@addrfile=\@mergefile % open the address file
+\ifeof\@addrfile % i.e., didn't open successfully
+ \loop
+ \immediate\write16{Could not open address file \@mergefile}
+ \closein\@addrfile % close the input stream
+ \read16 to \@mergefile % get another file name
+ \openin\@addrfile=\@mergefile % open up input stream
+ \ifeof\@addrfile
+ \repeat % repeat until successfully opened
+\fi}
+
+% The merge environment (used as the \begin{merge}. The argument (#1) is
+% the name of the file containing the addresses (a default of .tex extension)
+% This file is opened (\@openfile), read (\@readfile), and then the box
+% containing the contents of the standard letter is started (\@contents).
+
+\def\merge#1{\def\@mergefile{#1 }\@openfile
+ \@readfile
+ \@contents}
+
+% Read address file getting the address and opening line. If this is the
+% first through then there is no reason to call \endmerge as this will
+% be called later on (when \end{merge} is used).
+
+\def\@getopeningline{\global\read\@addrfile
+ to\@openingtext} % get the opening line
+
+\def\@readfile{\global\read\@addrfile to\@sendaddress % get the address
+ \ifeof\@addrfile
+ \let\next=\relax
+ \else
+ \@getopeningline
+ \if@firsttime
+ \let\next=\relax
+ \else
+ \let\next=\endmerge
+ \fi
+ \fi\next}
+
+\newbox\@letterbox % For copy of \@store (the box containing the standard
+ % letter.
+\def\endmerge{\if@firsttime\@endcontents\global\@firsttimefalse\fi %
+ % end contents if it is the first time
+ \bgroup\let\oldletter=\letter
+ \def\letter##1\@relax{\oldletter{##1}} % redefines letter
+ \expandafter\letter\@sendaddress\@relax % need to expand \@sendaddress
+ \opening{\@openingtext\vskip2\parskip}
+ \setbox\@letterbox=\copy\@store % copy the contents of the letter
+ \unvbox\@letterbox
+ \endletter\egroup
+ \ifeof\@addrfile
+ \message{End of file}
+ \let\next=\relax
+ \else
+ \let\next=\@readfile % loop round yet again
+ \fi\next}
+
+\endinput
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% A letter, say LETTER.TEX, would be set up as follows:
+
+%% \documentstyle[merge]{letter}
+%%
+%% \address{...} % your address
+%% \signature{...} % your signature
+%%
+%% \begin{document}
+%% \begin{merge}{myaddresses} % MYADDRESSES.TEX contains addresses+openings
+%%
+%% With regard to .... % letter starts
+%%
+%% \closing{...} % closing
+%% \ps{...} % \ps, \encl, \cc, etc.
+%%
+%% \end{merge}
+%% \end{document}
+
+%% The address file, MYADDRESSES.TEX, would contain:
+
+%% {Computing Services Centre, \\ % first address
+%% University of Otago, \\
+%% Dunedin, \\
+%% New Zealand}
+%% {Dear Graeme,} % \opening for first address
+%% {Charles S. Roberson\\ % next address
+%% Dept. of Computer Science\\
+%% College of William and Mary\\
+%% Williamsburg, VA 23185}
+%% {Dear Chip,} % next \opening
+%% .... % etc.
+
+%% NOTES:
+%% Braces are matched, except that if the input is only one line then it
+%% is not necessary to contain it within braces.
+%% It is important to leave NO BLANK LINES at the end of the address file.
+%% Be sure to supply the "\\" for breaking the addresses. -csr
+
+%% [merge.sty]
diff --git a/macros/latex209/contrib/misc/mf.sty b/macros/latex209/contrib/misc/mf.sty
new file mode 100644
index 0000000000..40ce64705a
--- /dev/null
+++ b/macros/latex209/contrib/misc/mf.sty
@@ -0,0 +1,37 @@
+% mf.sty:
+% Document style option to define Metafont logo in all sizes
+% Author: Don Hosek
+% Revision Date: 3/27/89
+% User macros defined: \mf (print Metafont logo)
+% \logo (select MF logo font
+
+% Define \logo in terms of \plogo so that it isn't fragile (see lfonts.tex)
+\def\logo{\protect\plogo}
+
+% We need a family too. [I think this is a waste on LaTeX's part]
+\newfam\logofam
+
+% Define font that will be loaded for logo font here:
+\def\@logof{logo10}
+\def\@logoix{logo9}
+\def\@logoviii{logo8}
+
+% Insert messages for attempted use of \logo at 5-7pt:
+\@addfontinfo\@vpt{\def\plogo{\@prtct\@subfont\@prtct\logo\@prtct\rm}}
+\@addfontinfo\@vipt{\def\plogo{\@prtct\@subfont\@prtct\logo\@prtct\rm}}
+\@addfontinfo\@viipt{\def\plogo{\@prtct\@subfont\@prtct\logo\@prtct\rm}}
+
+% actually get the font for sizes 8-25pt:
+\@getfont\plogo\logofam\@viiipt{\@logoviii}
+\@getfont\plogo\logofam\@ixpt{\@logoix}
+\@getfont\plogo\logofam\@xpt{\@logof}
+\@getfont\plogo\logofam\@xipt{\@logof\@halfmag}
+\@getfont\plogo\logofam\@xiipt{\@logof\@magscale1}
+\@getfont\plogo\logofam\@xivpt{\@logof\@magscale2}
+\@getfont\plogo\logofam\@xviipt{\@logof\@magscale3}
+\@getfont\plogo\logofam\@xxpt{\@logof\@magscale4}
+\@getfont\plogo\logofam\@xxvpt{\@logof\@magscale5}
+
+\def\MF{{\logo META}\-{\logo FONT}}
+
+\endinput
diff --git a/macros/latex209/contrib/misc/misc.sty b/macros/latex209/contrib/misc/misc.sty
new file mode 100644
index 0000000000..9720b4f5dc
--- /dev/null
+++ b/macros/latex209/contrib/misc/misc.sty
@@ -0,0 +1,62 @@
+% podar@sbcs (Sunil Podar) July 14, 1986
+% following commands implemented here (see the comments below for more info):
+% \pmb
+% \timeofday
+% \verbfile
+% \listing
+%----------------------------------------------------------------------------
+% poor man's bold. from pp. 386 of TeXbook. 1.732*0.025=0.0433 (the ratio of
+% em to ex)
+\newdimen\pmboffset
+\pmboffset 0.025em
+\def\pmb#1{\setbox0=\hbox{#1}%
+ \kern-\pmboffset\copy0\kern-\wd0
+ \kern 2\pmboffset\copy0\kern-\wd0
+ \kern-\pmboffset\raise 1.732\pmboffset\box0 }
+%----------------------------------------------------------------------------
+% \timeofday is just like \today; it gives the current time of day in the form
+% hh:mm as in the military style. It eats up a blank so normally one would
+% say: \timeofday\ (i.e. a \<space>.
+\def\timeofday{{\@tempcnta=\time \divide\@tempcnta by 60 \@tempcntb=\@tempcnta
+\multiply\@tempcntb by 60 \advance\@tempcntb by -\time %@tempcntb is -ve here
+\ifnum\@tempcntb < -9 \number\@tempcnta:\number-\@tempcntb
+ \else\number\@tempcnta:0\number-\@tempcntb\fi}}
+%----------------------------------------------------------------------------
+%From: Tim Morgan <morgan@uci-icsa>
+%Subject: verbatim macros
+%Here are some macros which I mostly stole from the TeXbook source and
+%other places. You can say
+%
+% \verbfile{filename}
+%to \input all of "filename" in verbatim mode. The end of the file is the
+%only thing that gets you back out of verbatim -- no characters are special.
+%\listing is the same except that each line of the file is automatically
+%numbered.
+%Tim
+%
+% Produce verbatim listings of various sorts
+
+\def\uncatcodespecials{\def\do##1{\catcode`##1=12 } \dospecials}
+
+\def\setupverbatim{%
+ \par \tt \spaceskip=0pt % Make sure we get fixed tt spacing
+ \obeylines\uncatcodespecials\obeyspaces\verbatimdefs
+}
+{\catcode`\^^M=13{\catcode`\ =13\gdef\verbatimdefs{\def^^M{\ \par}\let =\ }}
+ \gdef\verbatimgobble#1^^M{}}
+%
+% Input a file in verbatim mode. Sometimes useful for including
+% real-life examples into a paper.
+\def\verbfile#1{\begingroup\setupverbatim
+ \parskip=0pt plus .05\baselineskip \parindent=0pt
+ \input#1 \endgroup
+}
+
+% This is the same as the above, but it adds line numbers to each
+% line of the file printed.
+\newcount\lineno
+\def\listing#1{\lineno=0\begingroup\setupverbatim
+ \parskip=0pt plus .05\baselineskip \parindent=20pt
+ \everypar{\advance\lineno by 1 \llap{\the\lineno\ \ }}\input#1
+ \endgroup
+}
diff --git a/macros/latex209/contrib/misc/moreverb.readme b/macros/latex209/contrib/misc/moreverb.readme
new file mode 100644
index 0000000000..e3d3c29fa6
--- /dev/null
+++ b/macros/latex209/contrib/misc/moreverb.readme
@@ -0,0 +1,7 @@
+% NOTE FROM CTAN ADMINISTRATOR: moreverb.sty requires verbatim.sty.
+%Verbatim.sty is no longer supported for LaTeX 2.09, but a verbatim
+%package is available in tex-archive/macros/latex/packages/tools/verbatim.dtx.
+%If you are unable to upgrade to latex2e, a verbatim.sty which MAY work
+%is available in tex-archive/fonts/ams/amsltx11/inputs/verbatim.sty. Do not
+%under any circumstances bother the author of this latter file with any
+%problems you may have.
diff --git a/macros/latex209/contrib/misc/multicolpar.sty b/macros/latex209/contrib/misc/multicolpar.sty
new file mode 100644
index 0000000000..ade42b1585
--- /dev/null
+++ b/macros/latex209/contrib/misc/multicolpar.sty
@@ -0,0 +1,69 @@
+%% Save file as: MULTICOLPAR.STY Source: FILESERV@SHSU.BITNET
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% File multicolpar.sty
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% by
+% Mauro Orlandini <orlandini@lheavx.gsfc.nasa.gov>
+% Modified by Max Hailperin <max@nic.gac.edu>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This LaTeX style, writes different paragraphs in different columns
+% the number of columns is free), as
+% This is the first paragraph | This is the second paragraph and its
+% and text follows... | own text follows...
+%
+% This is the third paragraph | This is the fourth paragraph...
+% and text follows... |
+%
+% This format is useful for translated articles, in which there is the
+% original language in the first column and the translated version in
+% the second.
+%
+% Usage: \begin{multicolpar}{N}
+% ... text ...
+% \end{multicolpar}
+%
+% where N is the number of columns in which the text will be displayed.
+% Warning: Inside the environment, each blank line (ie a \par) will correspond
+% to a paragraph, therefore do not leave blank lines soon after the
+% \begin{multicolpar}{N} command and soon before the \end{multicolpar}
+% command (unless you want so).
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newenvironment{multicolpar}[1]{\begin{trivlist}\item[]%
+\multicolumnparallelparagraphs{#1}{2em}}%
+{\endmulticolumnparallelparagraphs\end{trivlist}}
+
+\newcount\columnsleft \newcount\totalcolumns \newdimen\separation
+
+\def\multicolumnparallelparagraphs#1#2{%
+ \hbadness5000 \vbadness9999 \tolerance9999
+ \totalcolumns=#1 \separation=#2 \let\xpar=\par
+ \vskip\parskip
+ \columnsleft=#1\relax
+ \hbox to\hsize\bgroup
+ \let\par\nextmulticolumnparallelparagraph
+ \dimen0=#2\advance\hsize-\columnsleft\dimen0 \advance\hsize\dimen0
+ \divide\hsize\columnsleft\relax
+ \vtop\bgroup}
+\def\nextmulticolumnparallelparagraph{%
+ \egroup
+ \advance\columnsleft-1
+ \ifnum\columnsleft>0
+ \hfil\vtop\bgroup
+ \else
+ \egroup
+ \xpar\vskip\baselineskip\xpar
+ \multicolumnparallelparagraphs\totalcolumns\separation
+ \fi}
+
+\def\endmulticolumnparallelparagraphs{%
+ \egroup
+ \advance\columnsleft-1
+ \ifnum\columnsleft>0
+ \hfil\vtop\bgroup\hbox to \hsize{}
+ \endmulticolumnparallelparagraphs
+ \else
+ \egroup
+ \xpar
+ \fi}
diff --git a/macros/latex209/contrib/misc/multind.sty b/macros/latex209/contrib/misc/multind.sty
new file mode 100644
index 0000000000..ef91c28df0
--- /dev/null
+++ b/macros/latex209/contrib/misc/multind.sty
@@ -0,0 +1,65 @@
+% indexes document style option for producing multiple indexes
+% for use with the modified bbok style, CHbook.sty
+% Written by F.W. Long, Version 1.1, 12 August 1991.
+
+% Modified by F.W. Long, Version 1.1a, 29 August 1991
+% to get the index heading correctly spaced.
+
+% Modified by F.W. Long, Version 1.1b, 31 August 1991
+% to remove the abbreviation \ix (which should be in the document, not here).
+
+% Modified \makeindex and \index commands to allow multiple indexes
+% in both cases the first parameter is the index name.
+% They now work more like \@starttoc and \addcontentsline.
+% \index is no longer defined inside \makeindex but determines
+% whether the appropriate file is defined before writing to it.
+
+\def\makeindex#1{\begingroup
+ \makeatletter
+ \if@filesw \expandafter\newwrite\csname #1@idxfile\endcsname
+ \expandafter\immediate\openout \csname #1@idxfile\endcsname #1.idx\relax
+ \typeout{Writing index file #1.idx }\fi \endgroup}
+
+\def\index#1{\@bsphack\begingroup
+ \def\protect##1{\string##1\space}\@sanitize
+ \@wrindex{#1}}
+
+% \@wrindex now checks that the appropriate file is defined.
+
+\def\@wrindex#1#2{\let\thepage\relax
+ \xdef\@gtempa{\@ifundefined{#1@idxfile}{}{\expandafter
+ \write\csname #1@idxfile\endcsname{\string
+ \indexentry{#2}{\thepage}}}}\endgroup\@gtempa
+ \if@nobreak \ifvmode\nobreak\fi\fi\@esphack}
+
+% Modified \printindex command to allow multiple indexes.
+% This now takes over much of the work of \theindex.
+% Again, the first parameter is the index name.
+% The second parameter is the index title (as printed).
+
+\newif\if@restonecol
+\def\printindex#1#2{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+ \columnseprule \z@ \columnsep 35pt
+ \newpage \twocolumn[{\Large\bf #2 \vskip4ex}]
+ \markright{\uppercase{#2}}
+ \addcontentsline{toc}{section}{#2}
+ \@input{#1.ind}}
+
+% The following index commands are taken from book.sty.
+% \theindex is modified to not start a chapter.
+
+\def\theindex{\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+% the command \ix allows an abbreviation for the general index
+
+%\def\ix#1{#1\index{general}{#1}}
+
+% define the \see command from makeidx.sty
+
+\def\see#1#2{{\em see\/} #1}
diff --git a/macros/latex209/contrib/misc/newequation.sty b/macros/latex209/contrib/misc/newequation.sty
new file mode 100644
index 0000000000..cd0714c4d8
--- /dev/null
+++ b/macros/latex209/contrib/misc/newequation.sty
@@ -0,0 +1,28 @@
+% newequation.sty
+%
+% 12 Jan 91 Created.
+% clayton@thumper.bellcore.com
+%
+% newequation.sty defines the \newequation command, which defines
+% new equation environments. The command format is
+%
+% \newequation{name}{format}
+%
+% where "name" is the name of the new equation environment and "format"
+% is the format of the equation number. For example,
+%
+% \newequation{define}{(D\arabic{define})}
+%
+% The new environment follows Latex's numbered sections convention:
+% there's a counter called "name" and a command called \the"name" with
+% "format" as its initial definition. See section 5.3 in the Latex
+% user's guide for more on numbering.
+
+\def \newequation#1#2{
+ \@definecounter{#1}
+ \@namedef{the#1}{\hbox{#2}}
+ \@namedef{#1}{$$\refstepcounter{#1}}
+ \@namedef{end#1}{
+ \eqno \csname the#1\endcsname $$\global\@ignoretrue
+ }
+ }
diff --git a/macros/latex209/contrib/misc/nextslide.sty b/macros/latex209/contrib/misc/nextslide.sty
new file mode 100644
index 0000000000..b9d7e3ac3a
--- /dev/null
+++ b/macros/latex209/contrib/misc/nextslide.sty
@@ -0,0 +1,47 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Mario Wolczko",
+%%% version = "3",
+%%% date = "21 May 1992",
+%%% time = "20:58:09 BST",
+%%% filename = "nextslide.sty",
+%%% address = "Dept of Computer Science
+%%% The University of Manchester
+%%% Oxford Road
+%%% Manchester M13 9PL
+%%% UK",
+%%% telephone = "+44-61-275-6146",
+%%% FAX = "+44-61-275-6236",
+%%% checksum = "48653 47 228 1860",
+%%% email = "mario@cs.man.ac.uk (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "SliTeX, page control",
+%%% supported = "yes",
+%%% docstring = "Adds \newslide command to SliTeX, allowing
+%%% (some) other environments (e.g. lists) to span multiple slides.",
+%%% }
+%%% ====================================================================
+%If you, like me, are driven crazy by slitex's insistence that you
+%delimit each and every slide with a \begin{slide}..\end{slide}
+%environment, then some relief is at hand.
+%
+%This style option defines a single command, \newslide, than
+%you can use to replace the sequence
+% \end{slide}
+% \begin{slide}{}
+%
+%It's better than \newpage, because that doesn't increment the page
+%count, and gives you a "slide too long" error -- \newslide doesn't.
+%And unlike \end{slide}\begin{slide}{} you can use \newslide within an
+%environment, eg
+% \begin{enumerate}
+% \item foo
+% \item bar
+% \newslide
+% \item baz
+% \end{enumerate}
+%
+%Given that the functioning part of newslide.sty is only 32 characters
+%long, I don't know why it isn't provided in the first place!
+
+\def\newslide{\endslide\slide{}}
diff --git a/macros/latex209/contrib/misc/nf.sty b/macros/latex209/contrib/misc/nf.sty
new file mode 100644
index 0000000000..c0632061d9
--- /dev/null
+++ b/macros/latex209/contrib/misc/nf.sty
@@ -0,0 +1,170 @@
+%%% Save file as: nf.sty Source: FILESERV@SHSU.BITNET
+%%% The following checksum includes all SHSU-generated topmatter.
+%%% checksum = "41408 170 486 6458"
+% NF (style option to ARTICLE) for Nuclear Fusion
+% NF DOCUMENT SUBSTYLE -- released 17 January 1989
+% Written by Charles Karney (Karney@Princeton.EDU).
+
+% This document style is designed for manuscripts to be submitted to
+% Nuclear Fusion.
+% To use this give NF as an optional argument to \documentstyle. The
+% main style should be ARTICLE. E.g.,
+% \documentstyle[12pt,nf]{article}
+% This provides all the same facilities as the AIP style, except:
+
+% (1) Sections are numbered with arabic numerals, e.g., 2.3.1 (the
+% ARTICLE default).
+
+% (2) Reference numbers in citation and bibliography are enclosed in []'s
+% (the ARTICLE default).
+
+% (3) The style of the subsections, etc. is different.
+
+% (4) Use Fig. instead of FIG. in figure captions, etc.
+
+\typeout{Document Substyle 'NF'. Released 17 January 1989}
+
+\def\thebibliography#1{\par\clearpage\section*{References\@mkboth
+ {REFERENCES}{REFERENCES}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
+
+% \citenum emits the plain citation number without ornament
+% \citea puts it's argument into the ornamentation for citations
+% thus \cite{foo} is equivalent to \citea{\citenum{foo}}
+\def\citenum#1{{\def\@cite##1##2{##1}\cite{#1}}}
+\def\citea#1{\@cite{#1}{}}
+
+% Collapse citation numbers to ranges. Non-numeric and undefined labels
+% are handled. No sorting is done. E.g., 1,3,2,3,4,5,foo,1,2,3,?,4,5
+% gives 1,3,2-5,foo,1-3,?,4,5
+\newcount\@tempcntc
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@ifundefined
+ {b@\@citeb}%
+ {\@citeo\@tempcntb\m@ne\@citea\def\@citea{,\penalty\@m\ }{\bf ?}%
+ \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+ {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}%
+ \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne
+ \@citea\def\@citea{,\penalty\@m\ }\hbox{\csname b@\@citeb\endcsname}%
+ \else
+ \advance\@tempcntb\@ne
+ \ifnum\@tempcntb=\@tempcntc
+ \else\advance\@tempcntb\m@ne\@citeo
+ \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}}
+\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else\@citea\def\@citea{,\penalty\@m\ }%
+ \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else
+ {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else \def\@citea{--}\fi
+ \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi}
+
+% Title page
+\def\@maketitle{\newpage
+ \null
+ \vskip 1em plus 2em minus 1em % Vertical space before date.
+ \ifx\@date\@empty\else
+ \begin{flushright}
+ {\normalsize \@date} % Date set in \large size.
+ \end{flushright}
+ \vskip 2em plus 2em minus 1em % Vertical space above title.
+ \fi
+ \begin{center}
+ {\Large\bf \@title \par} % Title set in \Large size.
+ \vskip 1.5em plus 0em minus .5em % Vertical space after title.
+ {\large % each author set in \large, in a
+ \lineskip .5em plus 0em minus .3em % tabular environment
+ \begin{tabular}[t]{c}\@author
+ \end{tabular}\par}
+\end{center}
+ \par
+ \vskip 1.5em plus .5em minus .5em} % Vertical space after author.
+
+\newif\if@starvariant \@starvariantfalse
+
+\def\abstract{\if@starvariant\else\section*{Abstract}\fi}
+\def\endabstract{\par\clearpage}
+
+\@namedef{abstract*}{\@starvarianttrue\abstract}
+\@namedef{endabstract*}{\endabstract}
+
+\parskip 1.5pt plus 1.5pt % Extra vertical space between paragraphs.
+\tabcolsep 12pt % Double column separation in tables
+
+\def\section{\@startsection {section}{1}{\z@}{3.5ex plus 1ex minus
+ .2ex}{2.3ex plus .2ex}{\large\bf}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{3.25ex plus 1ex minus
+ .2ex}{1.5ex plus .2ex}{\large\sl}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{3.25ex plus
+1ex minus .2ex}{1.5ex plus .2ex}{\normalsize\sl}}
+
+\newif\if@numbersec \@numbersectrue
+\def\appendix{\par\clearpage
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \@addtoreset{equation}{section}
+ \def\theequation{\thesection\arabic{equation}}
+ \def\thesection{\Alph{section}}
+ \def\thesubsection{\arabic{subsection}}
+ \@ifstar{\def\@sectname{Appendix}\@numbersecfalse}
+ {\def\@sectname{Appendix~}\@numbersectrue}}
+
+% Figures
+\def\thefigures#1{\par\clearpage
+ \if@starvariant\section*{Figure\@mkboth
+ {FIGURE}{FIGURE}}\else
+ \section*{Figures\@mkboth
+ {FIGURES}{FIGURES}}\fi
+ \list
+ {Fig.~\arabic{enumi}.}{\labelwidth\parindent\advance\labelwidth -\labelsep
+ \leftmargin\parindent\usecounter{enumi}}}
+\def\figitem#1{\item\label{#1}}
+\let\endthefigures=\endlist
+
+\@namedef{thefigures*}{\@starvarianttrue\thefigures}
+\@namedef{endthefigures*}{\endthefigures}
+
+% Tables
+\def\thetables#1{\par\clearpage
+ \if@starvariant\section*{Table\@mkboth
+ {TABLE}{TABLE}}\else
+ \section*{Tables\@mkboth
+ {TABLES}{TABLES}}\fi
+ \list
+ {Table~\Roman{enumi}.}{\labelwidth-\labelsep
+ \leftmargin0pt\usecounter{enumi}}}
+\def\tableitem#1{\item\label{#1}}
+\let\endthetables=\endlist
+
+\@namedef{thetables*}{\@starvarianttrue\thetables}
+\@namedef{endthetables*}{\endthetables}
+
+% Put period after section number and allow for APPENDIX prefix.
+\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
+ \def\@svsec{}\else
+ \refstepcounter{#1}\edef\@svsec{\ifnum #2=1 \@sectname
+ \if@numbersec\csname the#1\endcsname\fi.\else
+ \csname the#1\endcsname.\fi
+ \hskip 1em }\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
+ \endgroup
+ \csname #1mark\endcsname{#7}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #7}\else
+ \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname
+ {#7}\addcontentsline
+ {toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}\fi
+ #7}}\fi
+ \@xsect{#5}}
+
+\def\@sectname{}
+
+\endinput
diff --git a/macros/latex209/contrib/misc/nl.sty b/macros/latex209/contrib/misc/nl.sty
new file mode 100644
index 0000000000..d7a241e9cf
--- /dev/null
+++ b/macros/latex209/contrib/misc/nl.sty
@@ -0,0 +1,113 @@
+% Met ========== onderstreept nederlandse teksten
+\@ifundefined{chapter}
+{%%%%%%%%%%%%%%% dit is voor article style %%%%%%%%%%%%%%%%%%%%%
+\def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne \refstepcounter{part}
+\addcontentsline{toc}{part}{\thepart \hspace{1em}#1}\else
+\addcontentsline{toc}{part}{#1}\fi { \parindent 0pt \raggedright
+ \ifnum \c@secnumdepth >\m@ne \Large \bf Deel \thepart \par \nobreak \fi \huge
+% ====
+\bf #2\markboth{}{}\par } \nobreak \vskip 3ex \@afterheading }
+\def\tableofcontents{\section*{Inhoud\markboth{INHOUD}{INHOUD}}
+% ====== ====== ======
+ \@starttoc{toc}}
+\def\listoffigures{\section*{Lijst van figuren\markboth
+% ==================
+ {LIJST VAN FIGUREN}{LIJST VAN FIGUREN}}\@starttoc{lof}}
+% ================= =================
+\def\listoftables{\section*{Lijst van tabellen\markboth
+% ==================
+ {LIJST VAN TABELLEN}{LIJST VAN TABELLEN}}\@starttoc{lot}}
+% ================== ==================
+\def\thebibliography#1{\section*{Referenties\markboth
+% ===========
+ {REFERENTIES}{REFERENTIES}}\list
+% =========== ===========
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{Index}]
+% =====
+ \markboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
+% ===== =====
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\abstract{\if@twocolumn
+\section*{Samenvatting}
+% ============
+\else \small
+\begin{center}
+{\bf Samenvatting\vspace{-.5em}\vspace{0pt}}
+% ============
+\end{center}
+\quotation
+\fi}}
+{%%%%%%%%%%%%%% Dit is voor report en book style %%%%%%%%%%%%%%%
+\def\@part[#1]#2{\ifnum \c@secnumdepth >-2\relax \refstepcounter{part}
+\addcontentsline{toc}{part}{\thepart \hspace{1em}#1}\else
+\addcontentsline{toc}{part}{#1}\fi \markboth{}{}
+ \ifnum \c@secnumdepth >-2\relax \huge\bf Deel \thepart \par \vskip 20pt \fi
+% ====
+\Huge \bf #1\@endpart}
+\def\@chapapp{Hoofdstuk}
+% =========
+\def\appendix{\par
+ \setcounter{chapter}{0}
+ \setcounter{section}{0}
+ \def\@chapapp{Appendix}
+% ========
+ \def\thechapter{\Alph{chapter}}}
+\def\tableofcontents{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{Inhoud\@mkboth{INHOUD}{INHOUD}}
+% ====== ====== ======
+ \@starttoc{toc}\if@restonecol\twocolumn\fi}
+\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{Lijst van figuren\@mkboth
+% =================
+ {LIJST VAN FIGUREN}{LIJST VAN FIGUREN}}\@starttoc{lof}\if@restonecol\twocolumn
+% ================= =================
+ \fi}
+\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{Lijst van tabellen\@mkboth
+% ==================
+ {LIJST VAN TABELLEN}{LIJST VAN TABELLEN}}\@starttoc{lot}\if@restonecol
+% ================== ==================
+ \twocolumn\fi}
+\def\thebibliography#1{\chapter*{Referenties\@mkboth
+% ===========
+ {REFERENTIES}{REFERENTIES}}\list
+% ============ ============
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus -.07em}
+ \sloppy
+ \sfcode`\.=1000\relax}
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\@makeschapterhead{Index}]
+% =====
+ \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
+% ===== =====
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\abstract{\titlepage
+\null\vfil
+\begin{center}
+{\bf Samenvatting}
+% ============
+\end{center}}
+}
+%%%%%%%%%%%%%%%%%%% dit is voor allebei %%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\today{\number\day\space\ifcase\month%
+\or jan\or feb\or maart\or apr\or mei\or juni%
+% === === ===== === === ====
+\or juli\or aug\or sept\or okt\or nov\or dec\fi
+% ==== === ==== === === ===
+\space\number\year}
+\def\fnum@figure{Figuur \thefigure}
+% ======
+\def\fnum@table{Tabel \thetable}
+% =====
diff --git a/macros/latex209/contrib/misc/nnfootnote.sty b/macros/latex209/contrib/misc/nnfootnote.sty
new file mode 100644
index 0000000000..3b84844356
--- /dev/null
+++ b/macros/latex209/contrib/misc/nnfootnote.sty
@@ -0,0 +1,33 @@
+% T Mark Ellison 26 Jun 1991
+%
+% This style file defines the command \nnfoottext
+% which allows the user to at any time insert footnote
+% text material without adding a footnote number
+% to either the main page or the note.
+%
+% Sample Use:
+%
+% .....
+% \begin{document}
+% .....
+% \nnfoottext{This is a witty and interesting
+% numberless footnote. Thank-you.}
+% .....
+% \end{document}
+%
+% This was originally developed for the acknowledgement
+% notes similar to the style used by the journal
+% Linguistic Inquiry. The code was adapted from the latex
+% source.
+%
+\long\def\nnfoottext#1{\insert\footins{\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \edef\@thefnmark{}
+ \edef\@currentlabel{}\@makefntext
+ {\rule{\z@}{\footnotesep}\ignorespaces
+ #1\strut}}}
+
+
diff --git a/macros/latex209/contrib/misc/nopagenumbers.sty b/macros/latex209/contrib/misc/nopagenumbers.sty
new file mode 100644
index 0000000000..6a96bf7a99
--- /dev/null
+++ b/macros/latex209/contrib/misc/nopagenumbers.sty
@@ -0,0 +1,15 @@
+%
+% A tiny style file to suppress page numbers on LaTeX pages. I can never
+% remember {\em what} LaTeX calls it!
+%
+% Richard Furuta
+% Department of Computer Science
+% University of Maryland
+% College Park, MD 20742
+%
+% furuta@mimsy.umd.edu
+% seismo!umcp-cs!furuta
+%
+% October 22, 1986, first release
+%
+\pagestyle{empty}
diff --git a/macros/latex209/contrib/misc/noprot.sty b/macros/latex209/contrib/misc/noprot.sty
new file mode 100644
index 0000000000..43d346bb2e
--- /dev/null
+++ b/macros/latex209/contrib/misc/noprot.sty
@@ -0,0 +1,188 @@
+% Style file noprot.sty by Sami Sozuer. (June 1994)
+% This style file eliminates the need for \protect'ion in:
+%
+% 1 - Argument of \thanks
+% 2 - Argument (or optional argument) of \caption
+% 3 - Optional argument of \bibitem
+% 4 - Arguments of \addcontentsline and \addtocontents
+% 5 - Sectioning commands (\chapter \section etc)
+% EXCEPT when the argument of a sectioning command appears in
+% a page heading (as for example is the case with \chapter and \section
+% commands in the book style).
+%
+% The remaining problem of fragile commands within the headings
+% will be addressed later.
+%
+% The elimination of \protect within \caption and sectioning commands
+% is made possible by suppressing the expansion of the arguments
+% of these commands and by writing them into the .aux
+% file as literal strings. This means that values of dynamic quantities
+% cannot be included in these commands any more. If you need to reference
+% a page, use \pageref instead of \the\page or something similar in the
+% argument of \caption and/or sectioning commands.
+% Thanks to David Carlisle for pointing this out.
+%
+% The following is a remedy for such rare cases:
+% ===================================================================
+% Let's assume you have a List of Figures, and that you MUST expand
+% something at the point where \caption is issued, so that its value
+% appears in the List of Figures entry. In the old scheme, you would say:
+%
+% \caption{First part of Caption \value{\MyCounter} Second part of Caption}
+%
+% and the value of the \MyCounter would appear in the List of Figures.
+% But with this style file, you need to use a somewhat more complicated
+% construct similar to the following:
+%
+% \def\CaptionI{First part of Caption}
+% \def\CaptionII{Second part of Caption}
+% \edef\temp{\noexpand\caption{\CaptionI \value{\MyCounter} \CaptionII}}
+% \temp
+%
+% Here, we need the current value of a user-defined counter \MyCounter
+% to be written into the .aux file which is read in the second run
+% of latex to produce the List of Figures. Since its value presumably
+% changes throughout the document, we want its value at the point that
+% the \caption command is issued, rather than its value at the point
+% that the List of Figures is typeset, to appear in the List of Figures.
+% If you don't have a list of figures, then of course you needn't
+% worry about any of this. The same considerations apply also for
+% the arguments of sectioning commands that appear in the Table of Contents.
+%
+% The rationale for using this style file, of course, is that such
+% cases are extremely rare! For one thing, most books/articles
+% rarely contain a List of Figures and/or a List of Tables, and even
+% when you do use one, the chances of needing an immediate expansion
+% in a \caption command are small.
+% ===================================================================
+%%%% Use : in private commands to reduce chances of conflict
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Remember the catcode of :
+\expandafter\edef\csname X:Old:Cat\endcsname{\the\catcode`\:}%
+\catcode`\:=11\relax%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%BEGIN:PROTECT etc
+\long\def\@caption#1[#2]#3{\par
+\X:addcontline{\csname ext@#1\endcsname}{#1}%
+{\string\numberline{\csname the#1\endcsname}}%
+{\ignorespaces #2}%
+ \begingroup
+ \@parboxrestore
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
+ \def\@svsec{}\else
+ \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname\hskip 1em }\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \ifnum #2>\c@secnumdepth
+ \addcontentsline{toc}{#1}{#7}
+ \else
+ \X:addcontline{toc}{#1}{\string\numberline{\csname the#1\endcsname}}{#7}
+ \fi
+ \else
+ \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname{#7}
+ \ifnum #2>\c@secnumdepth
+ \addcontentsline{toc}{#1}{#7}
+ \else
+ \X:addcontline{toc}{#1}{\string\numberline{\csname the#1\endcsname}}{#7}
+ \fi}
+ \fi
+ \@xsect{#5}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #1,#2,#3 expanded; #4 is passed as string
+\def\X:addcontline#1#2#3#4{\if@filesw \begingroup
+\edef\X:argone{#1}%
+\edef\X:argtwo{#2}%
+\edef\X:argtri{#3}%
+\X:STRING{#4}{\argfor}%
+\let\label\@gobble \let\index\@gobble \let\glossary\@gobble
+\def\protect{}%
+\@temptokena{\thepage}%
+%---------------use \edef because #2 and \the\@temptokena should be expandad
+%---------------before passed on to \@writefile, which does *not* expand
+\edef\@tempa%
+{\write \@auxout%
+{%---------------------\contentsline should not be expanded here
+\string\@writefile{\X:argone}{\string\contentsline{\X:argtwo}{\X:argtri\argfor}{\the\@temptokena}}%
+}%
+}\@tempa
+\if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\@writefile#1#2{%
+\X:STRING{#2}{\X:argtu}%
+\@ifundefined{tf@#1}{}{\expandafter
+ \immediate\write\csname tf@#1\endcsname{\X:argtu}}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\X:STRING#1#2{\def\X:STRIP##1>{}\def\X:NEXT{#1}\edef#2{\expandafter\X:STRIP\meaning\X:NEXT}}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #1,#2 expanded; #3 is passed as string
+\def\addcontentsline#1#2#3{\if@filesw \begingroup
+\edef\X:argone{#1}%
+\edef\X:argtwo{#2}%
+\X:STRING{#3}{\X:argtri}%
+\let\label\@gobble \let\index\@gobble \let\glossary\@gobble
+\def\protect{}%
+\@temptokena{\thepage}%
+%---------------use \edef because #2 and \the\@temptokena should be expandad
+%---------------before passed on to \@writefile, which does *not* expand
+\edef\@tempa%
+{\write \@auxout%
+{%---------------------\contentsline should not be expanded here
+\string\@writefile{\X:argone}{\string\contentsline{\X:argtwo}{\X:argtri}{\the\@temptokena}}%
+}%
+}\@tempa
+ \if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\long\def\addtocontents#1#2{\if@filesw \begingroup
+\X:STRING{#2}{\X:argtwo}\relax%
+\edef\X:argone{#1}%
+\let\label\@gobble \let\index\@gobble \let\glossary\@gobble
+\def\protect##1{\string\string\string##1\string\space\space}%
+\edef\@tempa{\write \@auxout {\string\@writefile{\X:argone}{\X:argtwo}}}\@tempa
+\if@nobreak \ifvmode\nobreak\fi\fi\endgroup\fi}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\thanks#1{\footnotemark%
+\begingroup%
+\gdef\X:thanks{#1}%-----------this \gdef should stay
+\def\protect{\noexpand\protect\noexpand}%
+\xdef\@thanks{\@thanks\protect\footnotetext[\the\c@footnote]%
+{\noexpand\X:thanks}}%
+\endgroup}%
+\def\@thanks{}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\@lbibitem[#1]#2{\item[\@biblabel{#1}]%
+\if@filesw
+{%
+\X:STRING{#1}{\X:argone}
+\def\protect##1{}%
+\immediate\write\@auxout{\string\bibcite{#2}{\X:argone}}
+}%
+\fi\ignorespaces}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% The following code is needed for the \label command in a \caption
+%%%% or section argument to work properly, since the argument of
+%%%% a \section or a \caption command is written verbatim into
+%%%% the .aux file without being expanded.
+\let\X:tableofcontents\tableofcontents%
+\def\tableofcontents{\begingroup%
+\let\label\@gobble\let\index\@gobble\let\glossary\@gobble%
+\X:tableofcontents\endgroup}%
+%
+\let\X:listoffigures\listoffigures%
+\def\listoffigures{\begingroup%
+\let\label\@gobble\let\index\@gobble\let\glossary\@gobble%
+\X:listoffigures\endgroup}%
+%
+\let\X:listoftables\listoftables%
+\def\listoftables{\begingroup%
+\let\label\@gobble\let\index\@gobble\let\glossary\@gobble%
+\X:listoftables\endgroup}%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%END:PROTECT etc
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Restore catcode of :
+\catcode`\:=\csname X:Old:Cat\endcsname\relax%
+\expandafter\global\expandafter\let\csname X:Old:Cat\endcsname\undefined%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%that's it!
diff --git a/macros/latex209/contrib/misc/nosecnumbers.sty b/macros/latex209/contrib/misc/nosecnumbers.sty
new file mode 100644
index 0000000000..c630100b9a
--- /dev/null
+++ b/macros/latex209/contrib/misc/nosecnumbers.sty
@@ -0,0 +1,42 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Mario Wolczko",
+%%% version = "2",
+%%% date = "21 May 1992",
+%%% time = "20:59:56 BST",
+%%% filename = "nosecnumbers.sty",
+%%% address = "Dept of Computer Science
+%%% The University of Manchester
+%%% Oxford Road
+%%% Manchester M13 9PL
+%%% UK",
+%%% telephone = "+44-61-275-6146",
+%%% FAX = "+44-61-275-6236",
+%%% checksum = "09542 42 160 1796",
+%%% email = "mario@cs.man.ac.uk (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, section numbers",
+%%% supported = "yes",
+%%% docstring = "Suppresses section numbers in \sections,
+%%% \subsections, etc (but still writes entries for a table of
+%%% contents).",
+%%% }
+%%% ====================================================================
+% nosecnumbers ... equivalent to a global replace of \section,
+% \subsection, etc, with \section* (except that you still get entries in
+% the table of contents).
+
+\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
+ \def\@svsec{}\else
+ \refstepcounter{#1}\edef\@svsec{}\fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
+ \endgroup
+ \csname #1mark\endcsname{#7}\addcontentsline
+ {toc}{#1}{#7}\else
+ \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname
+ {#7}\addcontentsline
+ {toc}{#1}{#7}}\fi
+ \@xsect{#5}}
diff --git a/macros/latex209/contrib/misc/npsfont.sty b/macros/latex209/contrib/misc/npsfont.sty
new file mode 100644
index 0000000000..b9b48bef63
--- /dev/null
+++ b/macros/latex209/contrib/misc/npsfont.sty
@@ -0,0 +1,193 @@
+%% BEGIN npsfont.sty
+%%
+\def\fileversion{v1.0}
+\def\filedate{91/11/20}
+%%
+%% Style option npsfont.sty, for use with LaTeX 2.09
+%% and the New Font Selection Scheme.
+%%
+%% COPYRIGHT 1992, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% 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 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
+%% this file or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+% DESCRIPTION:
+%
+% Defining new PostScript fonts with the New Font Selection Scheme is easy,
+% but these macros make it easier. They save on keystrokes, and most
+% importantly, they make it easy to change the file names used for fonts
+% because you only have to type the file name once instead of 12 times (for
+% the 12 standard LaTeX sizes). An optional argument lets you scale the fonts.
+%
+% These macros are substitutes for the NFSS's \new@fontshape command. For
+% information on the purpose of this command, and on how to select fonts that
+% are defined with it, see the documentation of the NFSS. If you don't have
+% the NFSS, it is available from
+% rusmv1.rus.uni-stuttgart.de
+% in
+% soft/tex/latex-style-supported/New-Font-Selection
+% and from
+% ymir.claremont.edu
+% in
+% [.anonymous.tex.inputs.latex-mainz]
+% The NFSS is undoubtably the best way to use PostScript fonts (or any non-
+% standard fonts) with LaTeX, and is well worth upgrading to.
+%
+% USAGE:
+%
+% \newpsfont[<scaling>]{<family>}{<series>}{<shape>}{<filename>}
+%
+% \newpsfamily[<scaling>]{<family>}{
+% {<series 1>}{<shape 1>}{<filename 1>},
+% {<series 2>}{<shape 2>}{<filename 2>},
+% . . .
+% {<series n>}{<shape n>}{<filename n>}}
+%
+% The scaling argument is optional. Like the \new@fontshape command, these
+% commands can only be used in the preamble.
+%
+% EXAMPLE:
+%
+% Suppose the Helvetica-Oblique virtual font on your system has the name
+% phvro.vf. The following defines the <helvetica> family, <m>edium series, and
+% <it>alic shape to be the Helvetica-Oblique font, at the standard LaTeX
+% font sizes, scaled by .82:
+%
+% \newpsfont[.82]{helvetica}{m}{it}{phvro}
+%
+% This is equivalent to:
+%
+% \new@fontshape{helvetica}{m}{it}{%
+% <5>phvro at 4.1pt%
+% <6>phvro at 4.92pt%
+% <7>phvro at 5.74pt%
+% <8>phvro at 6.56pt%
+% <9>phvro at 7.38pt%
+% <10>phvro at 8.2pt%
+% <11>phvro at 8.979pt%
+% <12>phvro at 9.84pt%
+% <14>phvro at 11.808pt%
+% <17>phvro at 14.1696pt%
+% <20>phvro at 17.0068pt%
+% <25>phvro at 20.4016pt}{}
+%
+% The following command sets up the standard Helvetica family:
+%
+% \newpsfamily[.82]{helvetica}{%
+% {m}{n}{phvr}, %Helvetica
+% {m}{it}{phvro}, %Helvetica-Oblique
+% {m}{sl}{phvro}, %Helvetica-Oblique
+% {bx}{n}{phvb}, %Helvetica-Bold
+% {bx}{it}{phvbo}, %Helvetica-BoldOblique
+% {bx}{sl}{phvbo}} %Helvetica-BoldOblique
+%
+% (Don't forget the commas.) It is equivalent to:
+%
+% \newpsfont[.82]{helvetica}{m}{n}{phvr} %Helvetica
+% \newpsfont[.82]{helvetica}{m}{it}{phvro} %Helvetica-Oblique
+% \newpsfont[.82]{helvetica}{m}{sl}{phvro} %Helvetica-Oblique
+% \newpsfont[.82]{helvetica}{bx}{n}{phvb} %Helvetica-Bold
+% \newpsfont[.82]{helvetica}{bx}{it}{phvbo} %Helvetica-BoldOblique
+% \newpsfont[.82]{helvetica}{bx}{sl}{phvbo} %Helvetica-BoldOblique
+% \extra@def{helvetica}{}{}
+%
+% WHY SCALE FONTS?:
+%
+% Disclaimer: The suggestions that follow come from someone who doesn't know
+% anything about fonts.
+%
+% Mixing fonts that are not designed to be used together is not for purists,
+% but many of us do it anyway. Scaling the fonts can at least correct for
+% differences in the x-heights. This is important if you use Computer
+% Modern fonts for in-line math and some other fonts for text.
+%
+% To find out the x-height of the 10pt size of a font, load this style and
+% use the command
+%
+% \showxheight{<filename>}
+%
+% E.g., \showxheight{phvr} and \showxheight{cmr10} displays
+%
+% x-height of cmr10 at 10pt is 4.30554pt
+% x-height of phvr at 10pt is 5.24998pt
+%
+% on the terminal. Scaling the Helvetica fonts by 4.30554/5.24990 = .82
+% gets the x-heights of these fonts in line. It is best to set the x-heights
+% the same for the medium weight, normal shaped fonts, and then scale the
+% rest of the fonts in the same family by the same amount.
+%
+% David Jones has a psfonts.sty that sets up the standard PostScript fonts,
+% all scaled so that the x-heights match that of the Computer Modern medium
+% roman font. It is available via anonymous ftp from theory.lcs.mit.edu in
+% /pub/dmjones.
+%
+% IMPLEMENTATION:
+%
+% \scale@stdsizes has at its argument a scaling factor. It uses \font@scale
+% to define \scaled@sizes to be the macro whose argument is the name of a
+% font, and which expands to the definitions of the standard \LaTeX{} sizes
+% for New Font Selection Schemes \new@fontshape command.
+%
+\message{\space\space\fileversion\space\space\filedate
+ \space\space<tvz>}
+\@ifundefined{new@psfontshape}{}{\endinput}
+\def\font@scale#1#2#3{\dimen@=#2\dimen@=#3\dimen@
+ \edef\scaled@sizes##1{\scaled@sizes{##1}<#1>##1 at\number\dimen@ sp}}
+\def\scale@stdsizes#1{%
+ \edef\scaled@sizes##1{}%
+ \font@scale{5}{5pt}{#1}%
+ \font@scale{6}{6pt}{#1}%
+ \font@scale{7}{7pt}{#1}%
+ \font@scale{8}{8pt}{#1}%
+ \font@scale{9}{9pt}{#1}%
+ \font@scale{10}{10pt}{#1}%
+ \font@scale{11}{10.95pt}{#1}%
+ \font@scale{12}{12pt}{#1}%
+ \font@scale{14}{14.4pt}{#1}%
+ \font@scale{17}{17.28pt}{#1}%
+ \font@scale{20}{20.74pt}{#1}%
+ \font@scale{25}{24.88pt}{#1}}
+\def\new@psfontshape#1#2#3#4{%
+ \new@fontshape{#1}{#2}{#3}{\scaled@sizes{#4}}{}}
+\def\new@psfont[#1]#2#3#4#5{%
+ \scale@stdsizes{#1}%
+ \new@psfontshape{#2}{#3}{#4}{#5}}
+\def\newpsfont{%
+ \@ifnextchar [{\new@psfont}{\new@psfont[1]}}
+\def\newpsfamily{%
+ \@ifnextchar [{\new@psfamily}{\new@psfamily[1]}}
+\def\new@psfamily[#1]#2#3{%
+ \scale@stdsizes{#1}%
+ \@for\@tempa:=#3\do{%
+ \edef\@tempb{\noexpand\new@psfontshape{#2}\@tempa}
+ \@tempb}%
+ \extra@def{#2}{}{}}
+\def\showxheight#1{%
+ \font\@tempfont=#1 at 10pt%
+ \typeout{^^J x-height of #1 at 10pt is \the\fontdimen5\@tempfont}}
+% The commands are added to \@preamblecmds to save memory.
+\begingroup
+ \def\do{\noexpand\do\noexpand}
+ \xdef\@preamblecmds{\@preamblecmds
+ \do\font@scale
+ \do\scale@stdsizes
+ \do\scaled@sizes
+ \do\new@psfontshape
+ \do\new@psfont
+ \do\newpsfont
+ \do\newpsfamily
+ \do\new@psfamily}
+\endgroup
+\endinput
+%% END npsfont.sty
diff --git a/macros/latex209/contrib/misc/optarg.sty b/macros/latex209/contrib/misc/optarg.sty
new file mode 100644
index 0000000000..9a5218296b
--- /dev/null
+++ b/macros/latex209/contrib/misc/optarg.sty
@@ -0,0 +1,42 @@
+\def\newoptargcommand#1{%
+ \@ifnextchar({\@xoptargcmd{#1}}%
+ {\newcommand{#1}}%
+}
+
+\def\@xoptargcmd#1(#2){%
+% \@ifdefinable#1%
+% {
+ \expandafter\def\expandafter#1\expandafter{%
+ \expandafter
+ \@ifnextchar
+ \expandafter
+ [%
+ \csname\string#1\expandafter\endcsname
+ \expandafter
+ {\csname\string#1\endcsname[#2]}}%
+ \expandafter\@zoptargcmd
+ \csname\string#1\endcsname
+}
+
+\def\@zoptargcmd#1{%
+ \@ifnextchar[{\@zzoptargcmd#1}%
+ {\def#1[####1]}%
+}
+
+\catcode`\?=11\relax
+\long\def\@zzoptargcmd#1[#2]#3{%
+ \@tempcnta#2\relax
+ \let#1\relax
+ \let\@?@\relax
+ \edef\@tempa{\long\def#1[\@?@1]}%
+ \@tempcntb \tw@
+ \@whilenum\@tempcnta>\z@
+ \do{%
+ \edef\@tempa{\@tempa\@?@\the\@tempcntb}%
+ \advance\@tempcntb \@ne
+ \advance\@tempcnta \m@ne}%
+ \let\@?@##%
+ \@tempa{#3}%
+}
+\catcode`\?=12\relax
+\endinput
diff --git a/macros/latex209/contrib/misc/ovalfbox.sty b/macros/latex209/contrib/misc/ovalfbox.sty
new file mode 100644
index 0000000000..78f6f24045
--- /dev/null
+++ b/macros/latex209/contrib/misc/ovalfbox.sty
@@ -0,0 +1,35 @@
+% THIS IS OVALFBOX.STY of August, 3, 1992.
+% Unfortunately, \fboxrule (LaTeX book p.195) does not work,
+% since we use ovals (circle font).
+% Instead, use \thinlines and \thicklines.
+% However, \fboxsep does work!
+\def\ovalfbox#1{%
+ \mbox{% mbox, leaves vertical mode!
+ \begingroup \newdimen\@ovdp
+ \boxmaxdepth\maxdimen
+ \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
+ \setbox\@tempboxa\hbox{#1}%
+ \@ovxx\wd\@tempboxa \advance\@ovxx2\fboxsep
+ \@ovdp\dp\@tempboxa \advance\@ovdp\fboxsep
+ \@ovyy\ht\@tempboxa \advance\@ovyy\@ovdp \advance\@ovyy\fboxsep
+ \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
+ \advance \@tempdimb -2\p@
+ \@getcirc \@tempdimb % sets \@tempboxa en \@tempdima
+ \@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}%
+ \ht\@tempboxa\z@ \dp\@tempboxa\z@
+ \raise-\@ovdp\hbox to\z@{\box\@tempboxa\hss}%
+ \hbox to\@ovxx{\hss\rm #1\hss}%
+ \endgroup}}
+\def\Ovalfbox#1{{\advance\fboxsep 1em \ovalfbox{#1}}}
+% ^^^
+% Change this if you want less/more space
+\endinput
+
diff --git a/macros/latex209/contrib/misc/pagefoots.sty b/macros/latex209/contrib/misc/pagefoots.sty
new file mode 100644
index 0000000000..439569cdf0
--- /dev/null
+++ b/macros/latex209/contrib/misc/pagefoots.sty
@@ -0,0 +1,192 @@
+% Save file as: PAGEFOOTS.STY Source: FILESERV@SHSU.BITNET
+% A footnote-numbering style from Brian T. Schellenberger. v1.0.
+% This is redistributable by anybody to anybody for any price.
+% I only ask that you credit me for it, and that if you make any
+% changes and distribute them to anybody else at all, you (1) send
+% them back to me, and (2) note who made them so that any different
+% versions of this floating around may be distinguished.
+
+% Updates:
+% 10-Mar-89 Brian T. Schellenberger ...!mcnc!rti!sas!bts
+% Initial release.
+% 21-Mar-92 Darrel Hankerson hank@ducvax.auburn.edu
+% \def\@currenvir appears out of place in \definition
+% (reported by Nachum Dershowitz nachum@cs.uiuc.edu)
+
+% The first thing here is my begin definitions environment. It is
+% an environment for programming, and is seperate from the footnote-
+% related stuff. I find it convenient, and it is needed for my other
+% code to work. I also use symbolic names for all catcodes in my
+% programming, but I've gotten that out of this code for greater ease
+% of use by the great wide world out there.
+
+% The footnote code itself.
+% 1. This code resets foot notes on each page. It needs two passes
+% to do this correctly, although it comes as close as possible on
+% the first pass. You generally make two passes with LaTeX anyway,
+% to get cross-references right, so this shouldn't be a problem.
+% It uses the aux file like everything else.
+% 2. It also uses the \fnsymbol to "number" the footnotes. This is
+% controlled by the first line of \newfoots.
+% 3. It gets rid of the usual footnote rule, and inserts more vertical
+% space for footnotes. This is also easy to see/control in the
+% \newfoots command.
+% 4. Most of this code simply makes the "new" footnotes stuff available;
+% you can include all of this except the last line in a style file
+% and only say \newfoots if you want them, or you include it all
+% and say \restorefoots for the files where you don't want it.
+% 5. \restorefoots and/or \newfoots are only guarenteed to work right
+% in the preamble.
+% 6. I don't think I depend on anything funny in LaTeX, but in case
+% this falls apart totally, I am running the 29-Apr-87 LaTeX.
+
+
+%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+%----definitions: within \begin{definitions} (which does not really define
+% a group), spacing means nothing. Use \space for a space character
+% and \par for a blank line, for those rare instances where they are
+% really desired. Also, @ is seen as a letter. All these are reversed
+% and \end{definitions}---\E{even if} they had the same catagories before!
+% These should not be nested but, unfortunately, there is no way to tell.
+
+
+\newif\ifatletter
+
+\newenvironment {definitions}
+ {
+ \endgroup % doesn't really nest
+ \ifcat @a \atlettertrue \else \atletterfalse \fi
+ % \catcode`\ =\ignoreC \catcode`\^^M=\ignoreC
+ \makeatletter \catcode`\ =9 \catcode`\^^M=9
+ }%
+ {
+ % \catcode`\ =\spaceC \catcode`\^^M=\nlC
+ \makeatother \catcode`\ =10 \catcode`\^^M=5
+ \ifatletter \makeatletter \fi
+% \def \@currenvir {definitions} <-- Original location
+ \begingroup % doesn't really nest
+ \def \@currenvir {definitions} % 21-Mar-92 DH
+ }
+
+%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+\begin{definitions}
+
+%-----\my@footnote: stuff for handling my footnote stuff
+
+% NOTE: This corrects it on the second pass, based on the page numbers
+% on the first pass. Both this and other cross-reference stuff
+% will need to be run TWICE again if tables of contents, lists of
+% figures, &c. are paginated with the main material.
+
+\def \my@footnote
+ {
+ \if@minipage\else % In a minipage, we can't cross a page.
+ \edef \tmp@name {ft@\thepage-\the\c@footnote}
+ \expandafter\expandafter\expandafter\ifx
+ \expandafter\csname\tmp@name\endcsname \relax
+ \else
+ % DEFINED: replace footnote marker
+ \edef\tmp@b{\expandafter\csname\tmp@name\endcsname}
+ \begingroup
+ \c@footnote = \tmp@b
+ \xdef \@thefnmark {\thefootnote}
+ \endgroup
+ \fi % end \ifx ... \else DEFINED
+
+ \if@filesw
+ \edef \fttmp@
+ {
+ \write\@auxout
+ {
+ \string\newfoot@mark{\thepage}
+ {\the\c@footnote}{\noexpand\thepage}
+ }
+ }
+ \fttmp@
+ \fi % end \if@filesw
+ \fi % end \if@minipage
+ }
+
+% \newfoot@mark:
+% #1: nominal page it occurs on, as by \thepage.
+% #2: nominal footnote number on that page.
+% #3: actual page it occurs on, as by \thepage.
+
+\newcount\ft@page \ft@page = 0
+\newcount\ft@foot \ft@foot = 0
+
+\def \newfoot@mark #1#2#3
+ {
+ \ifdigit{#3}
+ \ifnum #3 < \ft@page \ft@page=0
+ \else\ifnum #3 > \ft@page \ft@page=#3 \ft@foot=0
+ \fi\fi
+ \else \ft@page=0
+ \fi
+
+ \addtolength\ft@foot{1}
+ \def\tmp@a{#2}
+ \edef\tmp@b{\the\ft@foot}
+ \ifx \tmp@a\tmp@b \else
+ \expandafter \xdef \csname ft@#1-#2\endcsname {\the\ft@foot}
+ \fi
+ }
+
+\newif\ifisdigit
+\def \ifdigit #1 {\digithelp #1 \digithelpend}
+\def \digithelp#1#2\digithelpend
+ {
+ \isdigitfalse
+ \if0#1\isdigittrue\fi \if1#1\isdigittrue\fi \if2#1\isdigittrue\fi
+ \if3#1\isdigittrue\fi \if4#1\isdigittrue\fi \if5#1\isdigittrue\fi
+ \if4#1\isdigittrue\fi \if5#1\isdigittrue\fi \if6#1\isdigittrue\fi
+ \if7#1\isdigittrue\fi \if8#1\isdigittrue\fi \if9#1\isdigittrue\fi
+ \ifisdigit
+ }
+
+
+\def \newfoots
+ {
+ \renewcommand \thefootnote {\fnsymbol{footnote}} %only if you want!
+ \renewcommand \thempfootnote {\arabic{footnote}}
+ \renewcommand \footnoterule {}
+ \skip\footins = 16pt plus 6pt minus 4pt
+ \@addtoreset{footnote}{page}
+ \let \cur@footnote = \my@footnote
+ }
+
+% NOTE: \restorefoots MUST be called before anything else is added to
+% \cl@page => do NOT move the \@@cl@page into the .static. file,
+% and do it at the very end of mytex.sty. Also, if \stdfoots
+% are desired, they should be the first thing restored---and
+% \E{definately} in the preamble.
+
+\def \restorefoots
+ {
+ \renewcommand \thefootnote {\arabic{footnote}}
+ \renewcommand \thempfootnote {\alph{mpfootnote}}
+ \let \footnoterule = \@@footnoterule
+ \skip\footins = \bigskipamount
+ \let \cl@page = \@@cl@page
+ \let \cur@footnote = \relax
+ }
+
+\def \footnote
+ {
+ \@ifnextchar [
+ {\@xfootnote} %else, no optional argument:
+ {
+ \stepcounter{\@mpfn}
+ \xdef\@thefnmark{\thempfn}
+ \cur@footnote
+ \@footnotemark\@footnotetext
+ }
+ }
+
+\end{definitions}
+
+
+\newfoots
+\endinput
diff --git a/macros/latex209/contrib/misc/parskip.sty b/macros/latex209/contrib/misc/parskip.sty
new file mode 100644
index 0000000000..8b29613cf5
--- /dev/null
+++ b/macros/latex209/contrib/misc/parskip.sty
@@ -0,0 +1,33 @@
+% This is PARSKIP.STY by H.Partl, TU Wien, as of 19 Jan 1989.
+% Document Style Option to be used with any style and with any size.
+% It produces the following Paragraph Layout:
+% Zero Parindent and non-zero Parskip. The stretchable glue in \parskip
+% helps LaTeX in finding the best place for page breaks.
+
+\parskip=0.5\baselineskip \advance\parskip by 0pt plus 2pt
+\parindent=\z@
+
+% To accompany this, the vertical spacing in the list environments is changed
+% to use the same as \parskip in all relevant places (for normalsize only):
+% \parsep = \parskip
+% \itemsep = \z@ % add nothing to \parskip between items
+% \topsep = \z@ % add nothing to \parskip before first item
+
+\def\@listI{\leftmargin\leftmargini
+ \topsep\z@ \parsep\parskip \itemsep\z@}
+\let\@listi\@listI
+\@listi
+
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep\z@ \parsep\parskip \itemsep\z@}
+
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep\z@ \parsep\parskip \itemsep\z@}
+
+% Note that listiv, listv and listvi don't change vertical parameters.
+
+\endinput
+
+
diff --git a/macros/latex209/contrib/misc/portland.sty b/macros/latex209/contrib/misc/portland.sty
new file mode 100644
index 0000000000..56ebf455e8
--- /dev/null
+++ b/macros/latex209/contrib/misc/portland.sty
@@ -0,0 +1,124 @@
+% This is PORTLAND.STY by H.Partl, TU Wien, as of 16 Dec 1988.
+% Definition of commands and environments \portrait and \landscape
+% for switching between PORTRAIT and LANDSCAPE printing. To be
+% called as document style option with any available style.
+%
+% Commands:
+% \portrait sets or resets the page layout to the initial values
+% (i.e. the values valid at \begin{document})
+% \landscape sets the page layout such that the horizontal and
+% vertical measures are interchanged with respect to
+% the initial values. The text area will occupy the
+% same position on the page as in \portrait mode.
+% Both command issue a \clearpage before changing the layout.
+%
+% Environments:
+% \begin{portrait} ... \end{portrait}
+% \begin{landscape} ... \end{landscape}
+% Both issue \clearpage at the \begin and at the \end.
+%
+% Implementation Dependencies:
+% You should insert the correct paper height (11in or 197mm or ...)
+% into \paperheight for correct positioning.
+% If your printer driver allows mixing of protrait and landscape pages
+% within one printout, you should insert the corresponding \special
+% commands just after the four \clearpage commands.
+% If your printer only allows printing of the whole document either in
+% protrait or in landscape orientation, you should print the document
+% twice (or selected parts of it) - once in portrait and once in landscape -
+% and then merge the correct pages.
+% If your printer can't print in landscape orientation, then these commands
+% can be used only for small pages that fit onto the paper in both direc-
+% tions.
+
+\newdimen \paperheight % needed for calculation of bottom margin.
+\paperheight 297mm % <--- 11in for US paper or 297mm for A4 paper!
+
+\newdimen\phoffset
+\newdimen\pvoffset
+\newdimen\ptextwidth
+\newdimen\ptextheight
+\newdimen\ptopmargin
+\newdimen\poddsidemargin
+\newdimen\pevensidemargin
+
+\newdimen\lhoffset
+\newdimen\lvoffset
+\newdimen\ltextwidth
+\newdimen\ltextheight
+\newdimen\ltopmargin
+\newdimen\loddsidemargin
+\newdimen\levensidemargin
+
+\def\set@portland@values{%
+% portrait values = current values
+\phoffset\hoffset
+\pvoffset\voffset
+\ptextwidth\textwidth
+\ptextheight\textheight
+\ptopmargin\topmargin
+\poddsidemargin\oddsidemargin
+\pevensidemargin\evensidemargin
+% landscape margins will be measured from zero point
+\lhoffset \z@
+\lvoffset \z@
+% landscape textwidth = portrait textheight
+\ltextwidth \ptextheight
+% landscape textheight = portrait textwidth
+\ltextheight \ptextwidth
+% landscape left margin = portrait bottom margin (same for odd and even)
+\loddsidemargin \paperheight
+\advance \loddsidemargin by -\ptextheight
+\advance \loddsidemargin by -\headsep
+\advance \loddsidemargin by -\headheight
+\advance \loddsidemargin by -\ptopmargin
+\advance \loddsidemargin by -\pvoffset
+\advance \loddsidemargin by -2in
+\levensidemargin \loddsidemargin
+% landscape top margin (incl. head) = portrait oddside left margin
+\ltopmargin \poddsidemargin
+\advance \ltopmargin by -\headheight
+\advance \ltopmargin by -\headsep
+\advance \ltopmargin by \phoffset
+}
+
+\def\portrait{\clearpage \message{ \string\portrait }%
+ \hoffset\phoffset
+ \voffset\pvoffset
+ \textwidth\ptextwidth
+ \textheight\ptextheight
+ \@colht\textheight \@colroom\textheight \vsize\textheight
+ \columnwidth\textwidth \@clubpenalty\clubpenalty
+ \if@twocolumn \advance\columnwidth -\columnsep
+ \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
+ \fi
+ \hsize\columnwidth \linewidth\hsize
+ \topmargin\ptopmargin
+ \oddsidemargin\poddsidemargin
+ \evensidemargin\pevensidemargin
+ }
+
+\def\endportrait{\clearpage \message{ \string\endportrait }}
+
+\def\landscape{\clearpage \message{ \string\landscape }%
+ \hoffset\lhoffset
+ \voffset\lvoffset
+ \textwidth\ltextwidth
+ \textheight\ltextheight
+ \@colht\textheight \@colroom\textheight \vsize\textheight
+ \columnwidth\textwidth \@clubpenalty\clubpenalty
+ \if@twocolumn \advance\columnwidth -\columnsep
+ \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
+ \fi
+ \hsize\columnwidth \linewidth\hsize
+ \topmargin\ltopmargin
+ \oddsidemargin\loddsidemargin
+ \evensidemargin\levensidemargin
+ }
+
+\def\endlandscape{\clearpage \message{ \string\endlandscape }}
+
+\let\set@document@values \document
+\def\document{\set@document@values \set@portland@values}
+
+\endinput
diff --git a/macros/latex209/contrib/misc/psboxit.sty b/macros/latex209/contrib/misc/psboxit.sty
new file mode 100644
index 0000000000..6f9bbd9942
--- /dev/null
+++ b/macros/latex209/contrib/misc/psboxit.sty
@@ -0,0 +1,175 @@
+% psboxes.sty
+%
+% This package enables to put a PostScript drawing behind a TeX box.
+% The drawing is parametrized by the position and the size of the
+% TeX box. To put a gray [rounded] box behind a word use
+% \PScommands % Once at the begining
+%
+% ... text text \psboxit{25 cartouche}{THE WORD} text text
+% \psboxit{box 0.5 setgray fill}{\spbox{ANOTHER WORD}}
+% text text ...
+%
+% * If your boxes are ill sized try to change 16384 to
+% something else (original code used 65536).
+% % 65536 is the internal unit of TeX (scaled point, TeXBook page 57)
+% Those macros were adapted from Tom Sheffler (CMU)'s psframe.sty style. In
+% particular, the spacebox macro was just copied from his style.
+%
+% Je'ro^me MAILLOT, INRIA
+% maillot@bora.inria.fr
+% August 1991
+%
+%
+% A Few PostScript definitions to use with \psboxit
+% Call \PScommands once at the begining of your program, this will
+% define : box roundedbox rectcartouche and cartouche. They are 4
+% PostScript programs. Change the values before setlinewidth end
+% setgray to customize your boxes
+%
+% Ex : \psboxit{25 cartouche}{blah blah}
+% \psboxit{rectcartouche}{blah blah}
+%
+\long\def\PScommands{\special{! TeXDict begin
+/box{% Processes the path of a rectangle.
+% Needs : x0 y0 x1 y1.
+newpath 2 copy moveto 3 copy pop exch lineto 4 copy pop pop
+lineto 4 copy exch pop exch pop lineto closepath } bind def
+%
+%
+/min{ 2 copy gt { exch } if pop } bind def%
+/max{ 2 copy lt { exch } if pop } bind def%
+/roundedbox{% Processes the path of a rounded rectangle.
+% Needs : x0 y0 x1 y1 radius.
+% The bounding box is augmented by +/- radius to allow easily to
+% frame several rounded boxes around the same Texture box. Ex:
+% \psboxit{4 copy 15 roundedbox 25 roundedbox} {\spbox{Some Text}}
+% draws two scaled boxes arond the same word. Delete the `radius
+% sub' and `radius add' commands to suppress that enlargement.
+%
+/radius exch store
+3 2 roll % x0 x1 y1 y0
+2 copy min radius sub /miny exch store
+ max radius add /maxy exch store
+2 copy min radius sub /minx exch store
+ max radius add /maxx exch store
+newpath
+minx radius add miny moveto
+maxx miny maxx maxy radius arcto
+maxx maxy minx maxy radius arcto
+minx maxy minx miny radius arcto
+minx miny maxx miny radius arcto 16 {pop} repeat
+closepath
+}bind def
+%
+%
+/rectcartouche{% Draws a filled and framed box
+% Needs : x0 y0 x1 y1
+box gsave .95 setgray fill grestore 1 setlinewidth stroke }bind def
+%
+%
+/cartouche{% Draws a filled and framed rounded box
+% Needs : x0 y0 x1 y1 radius
+roundedbox gsave .95 setgray fill grestore 1 setlinewidth stroke }bind def
+%
+end }% Closes dictionnary
+}\PScommands%
+%%
+%% PSBOXIT
+%%
+%% \psboxit{PS program}{TeX stuff}
+%%
+%% The bounding box of the TeX stuff is pushed on the PostScript stack
+%% and then the program in the first argument is called
+%%
+%% EXAMPLE: set some text on a gray background, Use the SPBOX macro to
+%% give some space around the text.
+%%
+%% \psboxit{box 0.5 setgray fill}{\spbox{Some Text}}
+%%
+%% See \PScommands for the \box definition
+%%
+\chardef \atcode = \the \catcode `\@
+\catcode `\@ = 11
+
+\long\def\psboxit#1#2{%
+\begingroup\setbox0=\hbox{#2}%
+\dimen0=\ht0 \advance\dimen0 by \dp0%
+ % Write out the PS code to set the current path using HEIGHT,
+ % WIDTH , DEPTH of box0.
+ \hbox{%
+ \special{ps: gsave currentpoint translate
+ 0
+ \number\dp0 \space 15800 div % hand tuned for dvips
+ \number\wd0 \space 15800 div % hand tuned for dvips
+ \number\ht0 \space -15800 div % hand tuned for dvips
+% \number\dp0 \space 16384 div
+% \number\wd0 \space 16384 div
+% \number\ht0 \space -16384 div % Bounding box
+% \number\dp0 \space 65536 div
+% \number\wd0 \space 65536 div
+% \number\ht0 \space -65536 div % Bounding box
+ #1 grestore}%
+ \copy0%
+}%HBOX
+\endgroup%
+}%
+
+% SPACEBOX
+%
+% This macro simply takes some TeX stuff, and puts FOUR sides on it
+% so that the box is the same size as the thing you'd get with
+% an \fbox{} command. (All I did was modify the code for \fbox{}
+% so that all rules were replaced with struts).
+%
+% USAGE: \spbox{text} is just like \fbox{text} but makes no rules
+%
+% REASON: so that if using \pspath{...}{\fbox{stuff}}
+% there is a way to get another box the same size:
+% \pspath{...}{\spbox{stuff}}
+%
+\long\def\spbox#1{\leavevmode\setbox1\hbox{#1}%
+ \dimen0\fboxrule \advance\dimen0 \fboxsep%
+ \advance\dimen0 \dp1%
+ \hbox{\lower \dimen0\hbox%
+ {\vbox{\hrule height \fboxrule width 0pt%
+ \hbox{\vrule width \fboxrule height 0pt \hskip\fboxsep%
+ \vbox{\vskip\fboxsep \box1\vskip\fboxsep}\hskip%
+ \fboxsep\vrule width \fboxrule height 0pt}%
+ \hrule height \fboxrule width 0pt}}}}%
+
+\def\Gbox#1{\psboxit{box 0.9 setgray fill}{#1}}
+%%
+\newsavebox{\gray@box}%
+\newdimen\gray@space
+%
+\long\def\Beginboxitpara#1{\edef\gray@tmp{#1}%
+\gray@space=\fboxsep \advance\gray@space by -\fboxrule
+\par\prevdepth=-1000pt\vskip 0.5\baselineskip\noindent
+\setbox\gray@box=%
+\hbox\bgroup \vrule width \fboxrule
+ \vtop\bgroup \hrule
+ \vbox\bgroup
+ \kern\gray@space
+ \hbox\bgroup
+ \kern\gray@space
+ \vtop\bgroup
+ \hsize=\linewidth\advance\hsize-2\fboxsep\noindent
+ \ignorespaces}
+\def\Endboxitpara{%
+ \egroup
+ \kern\gray@space
+ \egroup
+ \kern\gray@space
+ \egroup \hrule
+ \egroup\vrule width \fboxrule
+ \egroup
+ \psboxit{\gray@tmp}{\box\gray@box}%
+ \vskip 0.5\baselineskip
+\par}
+
+\newenvironment{boxitpara}[1]{\Beginboxitpara{#1}}{\Endboxitpara}
+\newenvironment{boxitpara*}[1]{\Beginboxitpara{#1}\hbox to\hsize{}}%
+{\Endboxitpara}
+
+\catcode `\@ = \the \atcode
+\endinput
diff --git a/macros/latex209/contrib/misc/psfont.sty b/macros/latex209/contrib/misc/psfont.sty
new file mode 100644
index 0000000000..429dd46a2e
--- /dev/null
+++ b/macros/latex209/contrib/misc/psfont.sty
@@ -0,0 +1,117 @@
+% Filename: psfont.sty
+% Author: Alan Jeffrey
+% E-mail: alanje@cogs.sussex.ac.uk
+% Last modified: 14 May 1992
+
+% This is a document style option which defines macros for loading PS fonts.
+
+% Set a flag to declare ourselves loaded:
+
+\def\psfont@loaded{ }
+
+% Load one font:
+
+\def\new@ps@fontshape#1#2#3#4%
+ {\new@fontshape{#1}{#2}{#3}{%
+ <5>#4 at5pt%
+ <6>#4 at6pt%
+ <7>#4 at7pt%
+ <8>#4 at8pt%
+ <9>#4 at9pt%
+ <10>#4%
+ <11>#4 at10.95pt%
+ <12>#4 at12pt%
+ <14>#4 at14.4pt%
+ <17>#4 at17.28pt%
+ <20>#4 at20.736pt%
+ <25>#4 at24.8832pt}{}}
+
+% Load a whole family:
+
+\def\load@ps@font#1#2#3#4#5#6#7#8#9%
+ {\new@ps@fontshape{#1}{m}{n}{#2}
+ \new@ps@fontshape{#1}{m}{it}{#3}
+ \new@ps@fontshape{#1}{m}{sl}{#4}
+ \new@ps@fontshape{#1}{m}{sc}{#5}
+ \new@ps@fontshape{#1}{b}{n}{#6}
+ \new@ps@fontshape{#1}{b}{it}{#7}
+ \new@ps@fontshape{#1}{b}{sl}{#8}
+ \new@ps@fontshape{#1}{b}{sc}{#9}
+ \new@ps@fontshape{#1}{bx}{n}{#6}
+ \new@ps@fontshape{#1}{bx}{it}{#7}
+ \new@ps@fontshape{#1}{bx}{sl}{#8}
+ \new@ps@fontshape{#1}{bx}{sc}{#9}
+ \expandafter\let\csname every@#1@family\endcsname\every@ps@family
+ \extra@def{#1}}
+
+% Some extra characters:
+
+\chardef\currency"A8
+\chardef\cents"A2
+\chardef\yen"A5
+\chardef\florin"A6
+
+% When a new family FOO is loaded, we call \every@FOO@family.
+
+\def\fontfamily#1{\csname every@#1@family\endcsname\edef\f@family{#1}}
+\let\family\fontfamily
+
+% The CM families define the following macros:
+
+\let\cm@pounds\pounds
+\let\cm@S\S
+\let\cm@dag\dag
+\let\cm@ddag\ddag
+\let\cm@P\P
+\let\cm@ldots\ldots
+\let\cm@H\H
+\let\cm@dot\.
+\let\cm@AA\AA
+
+\def\every@cm@family
+ {\let\pounds\cm@pounds
+ \let\S\cm@S
+ \let\dag\cm@dag
+ \let\ddag\cm@ddag
+ \let\P\cm@P
+ \let\ldots\cm@ldots
+ \let\H\cm@H
+ \let\.\cm@dot
+ \let\AA\cm@AA}
+
+\let\every@cmr@family=\every@cm@family
+\let\every@cmtt@family=\every@cm@family
+\let\every@cmss@family=\every@cm@family
+
+% The PS families define the following macros:
+
+\newdimen\aadimen
+
+\chardef\ps@pounds"A3
+\chardef\ps@S"A7
+\chardef\ps@dag"B2
+\chardef\ps@ddag"B3
+\chardef\ps@P"B6
+\chardef\ps@ldots"BC
+\def\ps@H#1{{\accent"CD #1}}
+\def\ps@dot#1{{\accent"C7 #1}}
+\def\ps@AA{\leavevmode\setbox0\hbox{h}\aadimen\ht0
+ \advance\aadimen-1ex\setbox0\hbox{A}\rlap{\raise.67\aadimen
+ \hbox to \wd0{\hss\char'27\hss}}A}
+
+\def\every@ps@family
+ {\let\pounds\ps@pounds
+ \let\S\ps@S
+ \let\dag\ps@dag
+ \let\ddag\ps@ddag
+ \let\P\ps@P
+ \let\ldots\ps@ldots
+ \let\H\ps@H
+ \let\.\ps@dot
+ \let\AA\ps@AA}
+
+% For some reason, the default family is hard wired to be cmr,
+% rather than defined to be \rmdefault...
+
+\def\default@family{\rmdefault}
+
diff --git a/macros/latex209/contrib/misc/psfonts.tex b/macros/latex209/contrib/misc/psfonts.tex
new file mode 100644
index 0000000000..74025abd2c
--- /dev/null
+++ b/macros/latex209/contrib/misc/psfonts.tex
@@ -0,0 +1,146 @@
+% psfonts.tex
+%
+% Frank Jensen (September 30, 1990)
+
+\ifx\psfontsloaded\relax
+\else \let\psfontsloaded=\relax
+
+\def\declare@font #1#2#3#4%
+ {\new@fontshape{#1}{#2}{#3}{%
+ <5>#4 at5pt%
+ <6>#4 at6pt%
+ <7>#4 at7pt%
+ <8>#4 at8pt%
+ <9>#4 at9pt%
+ <10>#4 at10pt%
+ <11>#4 at10.95445pt%
+ <12>#4 at12pt%
+ <14>#4 at14.4pt%
+ <17>#4 at17.28pt%
+ <20>#4 at20.736pt%
+ <25>#4 at24.8832pt}{}}
+
+% Times Family
+
+\declare@font{times}{m}{n}{ptmr}
+\declare@font{times}{b}{n}{ptmb}
+\declare@font{times}{b}{it}{ptmbi}
+\declare@font{times}{c}{n}{ptmrrn}
+\declare@font{times}{m}{sc}{ptmrc}
+\declare@font{times}{m}{it}{ptmri}
+\declare@font{times}{m}{sl}{ptmro}
+\declare@font{times}{x}{n}{ptmrre}
+
+\extra@def{times}{}{}
+
+
+
+% Helvetica Family
+
+\declare@font{helvetica}{m}{n}{phvr}
+\declare@font{helvetica}{b}{n}{phvb}
+\declare@font{helvetica}{b}{it}{phvbo}
+\subst@fontshape{helvetica}{b}{sl}{helvetica}{b}{it}
+\declare@font{helvetica}{c}{n}{phvrrn}
+\declare@font{helvetica}{bc}{n}{phvbrn}
+\declare@font{helvetica}{bc}{it}{phvbon}
+\subst@fontshape{helvetica}{bc}{sl}{helvetica}{bc}{it}
+\declare@font{helvetica}{c}{it}{phvron}
+\subst@fontshape{helvetica}{c}{sl}{helvetica}{c}{it}
+\declare@font{helvetica}{m}{sc}{phvrc}
+\declare@font{helvetica}{m}{it}{phvro}
+\subst@fontshape{helvetica}{m}{sl}{helvetica}{m}{it}
+
+\extra@def{helvetica}{}{}
+
+
+
+% Bookman Family
+
+\declare@font{bookman}{m}{n}{pbkl}
+\declare@font{bookman}{b}{n}{pbkd}
+\declare@font{bookman}{b}{it}{pbkdi}
+\declare@font{bookman}{m}{sc}{pbklc}
+\declare@font{bookman}{m}{it}{pbkli}
+
+\extra@def{bookman}{}{}
+
+
+
+% New Century Schoolbook Family
+
+\declare@font{ncs}{m}{n}{pncr}
+\declare@font{ncs}{b}{n}{pncb}
+\declare@font{ncs}{b}{it}{pncbi}
+\declare@font{ncs}{m}{sc}{pncrc}
+\declare@font{ncs}{m}{it}{pncri}
+
+\extra@def{ncs}{}{}
+
+
+% Courier Family
+
+\declare@font{courier}{m}{n}{pcrr}
+\declare@font{courier}{b}{n}{pcrb}
+\declare@font{courier}{b}{it}{pcrbo}
+\declare@font{courier}{m}{it}{pcrro}
+
+\extra@def{courier}{\hyphenchar #1\m@ne}{}
+
+
+
+% Palatino Family
+
+\declare@font{palatino}{m}{n}{pplr}
+\declare@font{palatino}{b}{n}{pplb}
+\declare@font{palatino}{b}{it}{pplbi}
+\declare@font{palatino}{b}{u}{pplbu}
+\declare@font{palatino}{c}{n}{pplrrn}
+\declare@font{palatino}{m}{sc}{pplrc}
+\declare@font{palatino}{m}{it}{pplri}
+\declare@font{palatino}{m}{sl}{pplro}
+\declare@font{palatino}{m}{u}{pplru}
+\declare@font{palatino}{x}{n}{pplrre}
+
+\extra@def{palatino}{}{}
+
+
+
+% AvantGarde Family
+
+\declare@font{avantgarde}{m}{n}{pagk}
+\declare@font{avantgarde}{b}{n}{pagd}
+\declare@font{avantgarde}{b}{it}{pagdo}
+\subst@fontshape{avantgarde}{b}{sl}{avantgarde}{b}{it}
+\declare@font{avantgarde}{m}{sc}{pagkc}
+\declare@font{avantgarde}{m}{it}{pagko}
+\subst@fontshape{avantgarde}{m}{sl}{avantgarde}{m}{it}
+
+\extra@def{avantgarde}{}{}
+
+
+
+% Futura Family
+
+\declare@font{futura}{c}{n}{pfuc}
+\declare@font{futura}{bc}{n}{pfubc}
+\declare@font{futura}{bc}{sl}{pfuboc}
+\subst@fontshape{futura}{b}{it}{futura}{b}{sl}
+\declare@font{futura}{ebc}{n}{pfuxc}
+\declare@font{futura}{ebc}{sl}{pfuxoc}
+\declare@font{futura}{lc}{n}{pfulc}
+\subst@fontshape{futura}{m}{it}{futura}{m}{sl}
+
+\extra@def{futura}{}{}
+
+
+
+% Default settings
+
+\def\sfdefault{helvetica}
+\def\ttdefault{courier}
+
+\def\bfdefault{b}
+
+\fi
+\endinput
diff --git a/macros/latex209/contrib/misc/psmath.sty b/macros/latex209/contrib/misc/psmath.sty
new file mode 100644
index 0000000000..def9bbd6f4
--- /dev/null
+++ b/macros/latex209/contrib/misc/psmath.sty
@@ -0,0 +1,216 @@
+%%
+%% psmath.sty (Febuary 2 1991 Kresten Krab Thorup)
+%%
+
+%%
+%% BUGREPORTS: krab@iesd.auc.dk
+%%
+
+\message{`PostScript math' style option <february 2 1991>}
+
+\def\@declare@font #1#2#3#4%
+ {\new@fontshape{#1}{#2}{#3}{%
+ <5>#4 at4pt%
+ <6>#4 at5pt%
+ <7>#4 at6pt%
+ <8>#4 at7pt%
+ <9>#4 at8pt%
+ <10>#4 at9pt%
+ <11>#4 at10pt%
+ <12>#4 at11pt%
+ <14>#4 at12pt%
+ <17>#4 at14pt%
+ <20>#4 at17pt%
+ <25>#4 at20pt}{}}
+
+\@declare@font{pssymbol}{m}{it}{psyro}
+\@declare@font{pssymbol}{m}{n}{psyr}
+\extra@def{pssymbol}{}{}
+
+\let\@declare@font\relax
+
+\input psfonts
+
+%
+% Define the new math family
+%
+
+\new@mathversion\mv@times
+
+% Fonts we're going to use...
+
+\define@mathgroup\mv@times{0}
+ {times}{m}{n}
+\define@mathgroup\mv@times{1}
+ {times}{m}{it}
+\define@mathgroup\mv@times{2}
+ {cmsy}{m}{n}
+%\define@mathgroup\mv@times{3}
+% {cmex}{m}{n}
+
+
+\new@mathgroup\timsyi@group
+\define@mathgroup\mv@times\timsyi@group
+ {pssymbol}{m}{it}
+
+\new@mathgroup\timsyn@group
+\define@mathgroup\mv@times\timsyn@group
+ {pssymbol}{m}{n}
+
+\new@mathgroup\timi@group
+\define@mathgroup\mv@times\timi@group
+ {cmm}{m}{it}
+
+\new@mathgroup\lyfam@group
+ \define@mathgroup\mv@times\lyfam@group
+ {lasy}{m}{n}
+
+
+\edef\@tempa{\hexnumber@\timsyi@group} % Math chars from postscript
+ % font psyro
+% lowercase greek
+
+\mathchardef\alpha="0\@tempa 61
+\mathchardef\beta="0\@tempa 62
+\mathchardef\chi="0\@tempa 63
+\mathchardef\delta="0\@tempa 64
+\mathchardef\varepsilon="0\@tempa 65
+\mathchardef\phi="0\@tempa 66
+\mathchardef\gamma="0\@tempa 67
+\mathchardef\eta="0\@tempa 68
+\mathchardef\iota="0\@tempa 69
+\mathchardef\varphi="0\@tempa 6A
+\mathchardef\kappa="0\@tempa 6B
+\mathchardef\lambda="0\@tempa 6C
+\mathchardef\mu="0\@tempa 6D
+\mathchardef\nu="0\@tempa 6E
+\mathchardef\pi="0\@tempa 70
+\mathchardef\theta="0\@tempa 71
+\mathchardef\rho="0\@tempa 72
+\mathchardef\sigma="0\@tempa 73
+\mathchardef\tau="0\@tempa 74
+\mathchardef\upsilon="0\@tempa 75
+\mathchardef\varpi="0\@tempa 76
+\mathchardef\omega="0\@tempa 77
+\mathchardef\xi="0\@tempa 78
+\mathchardef\psi="0\@tempa 79
+\mathchardef\zeta="0\@tempa 7A
+\mathchardef\partial="0\@tempa B6
+\mathchardef\vartheta="0\@tempa 4A
+
+\edef\@tempa{\hexnumber@\timsyn@group} % Math chars from postscript
+ % font psyr
+\mathchardef\angle="0\@tempa D0
+\mathchardef\forall="0\@tempa 22
+\mathchardef\exists="0\@tempa 24
+\mathchardef\aleph="0\@tempa C0
+\mathchardef\Re="0\@tempa C2
+\mathchardef\Im="0\@tempa C1
+\mathchardef\wp="0\@tempa C3
+\mathchardef\nabla="0\@tempa D1
+\mathchardef\infty="0\@tempa A5
+
+\mathchardef\vee="2\@tempa DA
+\mathchardef\wedge="2\@tempa D9
+\mathchardef\cdot="2\@tempa D7
+\mathchardef\ast="2\@tempa 2A
+\mathcode`/="2\@tempa 2F
+\mathchardef\varsigma="0\@tempa 56
+
+\mathchardef\leftrightarrow="3\@tempa AB
+\mathchardef\leftarrow="3\@tempa AC
+\mathchardef\uparrow="3\@tempa AD
+\mathchardef\rightarrow="3\@tempa AE
+\mathchardef\downarrow="3\@tempa AF
+\mathchardef\Leftrightarrow="3\@tempa DB
+\mathchardef\Leftarrow="3\@tempa DC
+\mathchardef\Uparrow="3\@tempa DD
+\mathchardef\Rightarrow="3\@tempa DE
+\mathchardef\Downarrow="3\@tempa DF
+\mathchardef\ldots="3\@tempa BC
+
+\mathchardef\pm="3\@tempa B1
+\mathchardef\geq="3\@tempa B3
+\mathchardef\times="3\@tempa B4
+\mathchardef\div="3\@tempa B8
+\mathchardef\prime="3\@tempa A2
+\mathchardef\bullet="3\@tempa B7
+\mathchardef\equiv="3\@tempa BA
+\mathchardef\approx="3\@tempa BB
+\mathchardef\sim="3\@tempa 7E
+\mathchardef\mid="3\@tempa BD
+\mathchardef\otimes="3\@tempa C4
+\mathchardef\oplus="3\@tempa C5
+\mathchardef\cap="3\@tempa C7
+\mathchardef\cup="3\@tempa C8
+\mathchardef\supset="3\@tempa C9
+\mathchardef\supseteq="3\@tempa CA
+\mathchardef\subset="3\@tempa CC
+\mathchardef\subseteq="3\@tempa CD
+\mathchardef\in="3\@tempa CE
+
+\mathcode`\.="6\@tempa 2E
+\mathcode`\,="6\@tempa 2C
+\mathcode`\f="0\@tempa A6
+
+%
+% Handle the symbols that are missing in the PostScript fonts, to
+% complete family 1
+%
+
+\edef\@tempa{\hexnumber@\timi@group}
+
+\mathchardef\varrho="0\@tempa 25
+\def\vec{\mathaccent"0\@tempa 7E }
+\mathchardef\natural="0\@tempa 5C
+\mathchardef\epsilon="0\@tempa 0F
+\mathchardef\imath="0\@tempa 7B
+\mathchardef\jmath="0\@tempa 7C
+\mathchardef\ell="0\@tempa 60
+\mathchardef\flat="0\@tempa 5B
+\mathchardef\sharp="0\@tempa 5D
+%
+\mathchardef\star="2\@tempa 3F
+\mathchardef\triangleleft="2\@tempa 2E
+\mathchardef\triangleright="2\@tempa 2F
+%
+\mathchardef\smile="3\@tempa 5E
+\mathchardef\frown="3\@tempa 5F
+\mathchardef\leftharpoonup="3\@tempa 28
+\mathchardef\leftharpoondown="3\@tempa 29
+\mathchardef\rightharpoonup="3\@tempa 2A
+\mathchardef\rightharpoondown="3\@tempa 2B
+\mathchardef\lhook="3\@tempa 2C
+\mathchardef\rhook="3\@tempa 2D
+
+% pick up some symbols from the LaTeX symbol font...
+
+\edef\@tempa{\hexnumber@\lyfam@group}
+
+\mathchardef\mho="0\@tempa 30
+\mathchardef\Join="3\@tempa 31
+\mathchardef\Box="0\@tempa 32
+\mathchardef\Diamond="0\@tempa 33
+\mathchardef\leadsto="3\@tempa 3B
+\mathchardef\sqsubset="3\@tempa 3C
+\mathchardef\sqsupset="3\@tempa 3D
+\mathchardef\lhd="3\@tempa 01
+\mathchardef\unlhd="3\@tempa 02
+\mathchardef\rhd="3\@tempa 03
+\mathchardef\unrhd="3\@tempa 04
+
+\def\dots{\ifmmode\ldots\else$\ldots$\fi}
+
+\declare@font{zapf}{m}{it}{pzcmi}
+\extra@def{zapf}{}{}
+
+\newmathalphabet\zapf
+\addtoversion{times}{\zapf}{zapf}{m}{it}
+
+\gdef\cal#1{{\zapf{#1}}}
+%
+% 1 2 3 - GO!
+%
+\mathversion{times}
+%%
+%% End of file `psmath.sty'.
diff --git a/macros/latex209/contrib/misc/pspic.sty b/macros/latex209/contrib/misc/pspic.sty
new file mode 100644
index 0000000000..9bec746f82
--- /dev/null
+++ b/macros/latex209/contrib/misc/pspic.sty
@@ -0,0 +1,209 @@
+\typeout{Document Style `PostScript PICTURE' v1.1b <apr 12 1991>.}
+%
+%----------------------------------------------------------------------
+%
+% PostScript PICTURE
+%
+% For use with DVIPS (by tomas rokicki)
+%
+%
+% By: Kresten Krab Thorup, University of Aalborg, Denmark
+% <krab@iesd.auc.dk>
+% January 1991
+%
+%
+% Thanks to Rett Bull <RBULL@POMONA.CLAREMONT.EDU> for comments and
+% bugreports.
+%----------------------------------------------------------------------
+%
+% ==================================
+% psbox
+% ==================================
+% Bug fixed 91/04/12. Reported by Johannes Sixt.
+% (The `end' at the end of this macro had incidential become `en d')
+\def\psbox#1{%
+ \vbox{%
+ \hbox{%
+ \special{" \number\unitlength.0 65290.17 div dup scale
+ picdict begin
+ /lwidth \number\@wholewidth.0 \number\unitlength.0 div def
+ lwidth setlinewidth
+ \moveto(0,0) #1 end}}}}
+%
+% ==================================
+% Commands for use in \psbox
+% ==================================
+%
+\def\moveto(#1,#2){ /x #1 def /y #2 def x y moveto}
+\def\rline(#1,#2){ newpath
+ x y moveto
+ #1 #2 rlineto
+ linedash 0 setdash stroke
+ /x x #1 add def
+ /y y #2 add def}
+%
+% ==================================
+% Commands for use in LaTeX
+% ==================================
+%
+%----------------------------------------------------------------------
+% \line command of LaTeX
+%----------------------------------------------------------------------
+\def\line(#1,#2)#3{\psbox{%
+ \@ccolour setgray
+ /linedash \linedash def
+ #1 0 eq
+ {/fac{#2 div abs #3 mul}def}
+ {/fac{#3 #1 abs div mul}def}
+ ifelse
+ \rline( #1 fac , #2 fac ) }}
+%----------------------------------------------------------------------
+% \putline(x1,y1)(x2,y2)
+%----------------------------------------------------------------------
+%\def\putline(#1,#2)(#3,#4){\put(#1,#2){\psbox{%
+% \@ccolour setgray
+% /linedash \linedash def
+% \rline(#3 #1 sub,#4 #2 sub)
+%}}}
+%----------------------------------------------------------------------
+% \vector command of LaTeX
+%----------------------------------------------------------------------
+\def\vector(#1,#2)#3{\psbox{%
+ \@ccolour setgray
+ /linedash \linedash def
+ #1 0 eq
+ {/fac{#2 div abs #3 mul}def}
+ {/fac{#3 #1 abs div mul}def}
+ ifelse
+ newpath
+ 0 0 #1 fac #2 fac lwidth lwidth \number\headwidth.0 mul
+ lwidth \number\headlength.0 mul arrow fill}}
+%----------------------------------------------------------------------
+% \putvector(x1,y1)(x2,y2)
+%----------------------------------------------------------------------
+%\def\putvector(#1,#2)(#3,#4){\put(#1,#2){\psbox{%
+% \@ccolour setgray
+% /linedash \linedash def
+% newpath
+% 0 0 #3 #1 sub #4 #2 sub lwidth lwidth \number\headwidth.0 mul
+% lwidth \number\headlength.0 mul arrow fill
+%}}}
+%----------------------------------------------------------------------
+% \circle and \circle* commands of LaTeX
+%----------------------------------------------------------------------
+\def\circle{\@ifstar{\@dot}{\@circle}}
+\def\@circle#1{\psbox{ newpath
+ 0 0 #1 2 div 0 360 arc
+ [] 0 setdash
+ \@ccolour setgray stroke}}
+\def\@dot#1{\psbox{newpath
+ 0 0 #1 2 div 0 360 arc
+ \@ccolour setgray fill}}
+%----------------------------------------------------------------------
+% \ellipse(width,heigth)
+% (suggested by Rett Bull)
+%----------------------------------------------------------------------
+ \def\ellipse(#1,#2){\@ifnextchar[%
+ {\@ellipse(#1,#2)}{\@ellipse(#1,#2)[full]}}
+ \def\@ellipse(#1,#2)#3{\psbox{%
+ #1 #2 scale newpath 0 0 0.5 e#3 arc [] 0 setdash stroke}}
+%----------------------------------------------------------------------
+% \bezier(x1,y1)(x2,y2)(x3,y3)
+%----------------------------------------------------------------------
+\def\bezier(#1,#2)(#3,#4)(#5,#6){%
+\psbox{#1 #2 #3 #4 #5 #6 curveto \@ccolour setgray \linedash 0 setdash stroke}%
+}%
+%----------------------------------------------------------------------
+% \oval command of LaTeX
+%----------------------------------------------------------------------
+\def\oval(#1,#2){\@ifnextchar[{\@oval(#1,#2)}{\@oval(#1,#2)[full]}}
+\def\@oval(#1,#2)[#3]{%
+ \begingroup
+ \@ovxx = #1\unitlength
+ \@ovyy =#2\unitlength
+ \@tempdimb \ifdim \@ovyy >\@ovxx =\@ovxx\else =\@ovyy \fi
+ \ifnum\@tempdimb>\maxovaldiam \@tempdimb=\maxovaldiam \fi
+ \psbox{/rad \number\@tempdimb.0 \number\unitlength.0 div 2 div def
+ /dx #1 2 div rad sub def
+ /dy #2 2 div rad sub def
+ \@ccolour setgray
+ newpath #3 [] 0 setdash stroke }%
+ \endgroup}
+%----------------------------------------------------------------------
+% \ctext{...} Text to be written with the current grayscale
+%----------------------------------------------------------------------
+\def\ctext#1{\special{ps:gsave \@ccolour
+ setgray}{}#1\special{ps:grestore}}
+%----------------------------------------------------------------------
+% Customization
+%----------------------------------------------------------------------
+\def\vectorhead#1#2{\headlength=#1 \headwidth=#2 }
+\def\dashpattern[#1]{\xdef\linedash{[#1] }}
+\def\colour#1{\def\@ccolour{\@nameuse{CC#1}}}
+\def\shade#1{\def\@ccolour{ 1 #1 100 div sub }}
+%
+% ==================================
+% Initialization
+% ==================================
+%
+\newdimen\maxovaldiam
+\maxovaldiam=14mm % Max diameter of LaTeX circle
+%
+\newcount\headlength % length of arrowhead in terms of
+ % linewidth
+\newcount\headwidth % width of arrowhead in terms of linewidth
+\vectorhead{9}{5} % default vectorhead dimentions
+%
+\dashpattern[] % set default type of linedashes
+%
+\def\CCwhite{1 }
+\def\CCblack{0 }
+\def\CCgray{.5 }
+\def\CClightgray{.75 }
+\def\CCdarkgray{.25 }
+\colour{black}
+%----------------------------------------------------------------------
+% The P*stScr*pt dictionary
+%----------------------------------------------------------------------
+\special{!/picdict 200 dict def picdict begin
+%
+% Comamnds needed for ``ellipse''
+%
+ /etr {0 90} def /etl {90 180} def /et {0 180} def
+ /ebr {270 360} def /ebl {180 270} def /eb {180 360} def
+ /el {90 270} def /er {-90 90} def /efull {0 360}def
+%
+% Comamnds needed for ``oval''
+%
+/tr { 0 0 moveto newpath dx dy rad 0 90 arc} def
+/tl { 0 0 moveto newpath -1 dx mul dy rad 90 180 arc} def
+/bl { 0 0 moveto newpath -1 dx mul -1 dy mul rad 180 270 arc} def
+/br { 0 0 moveto newpath dx -1 dy mul rad 270 360 arc} def
+/b { bl stroke newpath br -1 dx mul -1 dy mul rad sub moveto dx 2 mul
+ 0 rlineto} def
+/t { tl stroke newpath tr -1 dx mul dy rad add moveto dx 2 mul 0
+ rlineto } def
+/l { bl stroke newpath tl -1 dx mul rad sub -1 dy mul moveto 0 dy 2
+ mul rlineto } def
+/r { tr stroke newpath br dx rad add -1 dy mul moveto 0 dy 2 mul
+ rlineto } def
+/full { t stroke newpath r stroke newpath b stroke newpath l } def
+/mtrx matrix def
+%
+/arrow {
+/headlength exch def /halfheadthickness exch 2 div def
+/halfthickness exch 2 div def /tipy exch def /tipx exch def /taily
+exch def /tailx exch def /dx tipx tailx sub def /dy tipy taily sub def
+/arrowlength dx dx mul dy dy mul add sqrt def /angle dy dx atan def
+/base arrowlength headlength sub def /savematrix mtrx currentmatrix
+def tailx taily translate angle rotate gsave newpath 0 0 moveto base 0
+lineto linedash 0 setdash stroke grestore base halfheadthickness neg
+moveto arrowlength 0 lineto base halfheadthickness lineto base
+halfthickness lineto closepath savematrix setmatrix
+} def
+%%
+end}
+%----------------------------------------------------------------------
+% end of pspic.sty
+%----------------------------------------------------------------------
+
diff --git a/macros/latex209/contrib/misc/pstimesm.sty b/macros/latex209/contrib/misc/pstimesm.sty
new file mode 100644
index 0000000000..3a8dd9973e
--- /dev/null
+++ b/macros/latex209/contrib/misc/pstimesm.sty
@@ -0,0 +1,80 @@
+% Filename: pstimesm.sty
+% Author: Alan Jeffrey
+% Email: alanje@cogs.sussex.ac.uk
+% Last modified: 26 May 1992
+
+% This is a LaTeX style file for Times with the MathTime fonts.
+
+% 21 May 1992: Created file.
+%
+% 26 May 1992: Added Zapf Chancery calligraphic letters.
+% (Unfortunately, this means that \cal I and O will not be very
+% obvious, but life is hard.)
+
+% To begin with, we load the MathTime macros. Unfortunately, these
+% PLAY SILLY BUGGERS with the catcode of @, which we have to patch.
+% Why oh why oh why...
+
+\newcount\atcatcode
+
+\atcatcode=\catcode`\@
+
+\input mtmacs
+
+\catcode`\@=\atcatcode
+
+% Then we can get on with loading some fonts. First off, we load the
+% Times font.
+
+\input pstimes.sty
+
+% Then we load the MathTime fonts themselves.
+
+\new@ps@fontshape{MTMI}{m}{it}{MTMI}
+\new@ps@fontshape{MTSY}{m}{n}{MTSY}
+\new@ps@fontshape{MTEX}{m}{n}{MTEX}
+
+\new@mathversion\mv@mathtime
+
+\define@mathgroup\mv@mathtime{0}{times}{m}{n}
+\define@mathgroup\mv@mathtime{1}{MTMI}{m}{it}
+\define@mathgroup\mv@mathtime{2}{MTSY}{m}{n}
+\define@mathgroup\mv@mathtime{3}{MTEX}{m}{n}
+
+\addtoversion{mathtime}{\mathsf}{\sfdefault}{m}{n}
+\addtoversion{mathtime}{\mathbf}{\rmdefault}{bx}{n}
+\addtoversion{mathtime}{\mathsc}{\scdefault}{m}{n}
+\addtoversion{mathtime}{\mathit}{\rmdefault}{m}{it}
+\addtoversion{mathtime}{\mathsl}{\rmdefault}{m}{sl}
+\addtoversion{mathtime}{\mathtt}{\ttdefault}{m}{n}
+
+% There are no bold math fonts for MathTime.
+
+\def\boldmath{\@warning{\string\boldmath\space is not available
+ with MathTime}\gdef\boldmath{}}
+
+% The command \cal now generated Zapf Chancery, scaled up by 15.28%,
+% to make the cap height the same as that of Times Roman.
+
+\let\cal\undefined
+\newmathalphabet\cal
+
+\new@fontshape{chancery}{m}{it}{%
+ <5>pzcmi at5.76pt%
+ <6>pzcmi at6.92pt%
+ <7>pzcmi at8.07pt%
+ <8>pzcmi at9.22pt%
+ <9>pzcmi at10.38pt%
+ <10>pzcmi at11.52pt%
+ <11>pzcmi at12.62pt%
+ <12>pzcmi at13.83pt%
+ <14>pzcmi at16.6pt%
+ <17>pzcmi at19.92pt%
+ <20>pzcmi at23.90pt%
+ <25>pzcmi at28.68pt}{}
+
+\addtoversion{mathtime}{\cal}{chancery}{m}{it}
+
+% The default math version is MathTime.
+
+\mathversion{mathtime}
diff --git a/macros/latex209/contrib/misc/qm.sty b/macros/latex209/contrib/misc/qm.sty
new file mode 100644
index 0000000000..16c3413e82
--- /dev/null
+++ b/macros/latex209/contrib/misc/qm.sty
@@ -0,0 +1,53 @@
+% ***************************** QM.STY *****************************
+% Version 1.1
+% 25.5.1994
+%
+% Commands for Bras, Kets, and the like. The commands are working in
+% textmode and mathmode.
+%
+% Since Version 1.1 of this style the arguments of all commands are set to
+% mathmode; e.g. you don't have to write \bra{$\Phi$} but only \bra{\Phi}.
+%
+% Written by:
+% Norbert Christlieb
+% Heussweg 102
+% 20255 Hamburg
+% Germany
+% E-Mail: norbert@philosophie.uni-hamburg.de
+%
+% *******************************************
+\def\fileversion{1.1}
+\def\filedate{May 25, 1994}
+\typeout{Style Option `qm' Version\space\fileversion\space<\filedate>
+ (NC) }
+
+% Command for Bras. Example: with "\bra{1}" you get "<1|".
+\newcommand{\bra}[1]{\mbox{\rm \raisebox{0.15ex}[-0.15ex]{$<$}$#1$
+ \kern-.20em \vrule width.025em height1.6ex depth 0ex}}
+
+% \ket{1}: |1>
+\newcommand{\ket}[1]{\mbox{\rm \vrule width.025em height1.6ex
+ depth 0ex \kern.15em $#1$\raisebox{0.15ex}[-0.15ex]{$>$}}}
+
+% \bracket{1}{2}: <1|2>
+\newcommand{\bracket}[2]{\mbox{\rm \raisebox{0.15ex}[-0.15ex]{$<$}$#1$
+ \kern-.20em \vrule width.025em height1.6ex depth 0ex \kern.20em
+ $#2$\raisebox{0.15ex}[-0.15ex]{$>$}}}
+
+% \expvalue{1}{2}{3}: <1|2|3>
+\newcommand{\expvalue}[3]{\mbox{\rm \raisebox{0.15ex}[-0.15ex]{$<$}$#1$
+ \kern-.20em \vrule width.025em height1.6ex depth 0ex \kern.20em $#2$
+ \kern-.20em \vrule width.025em height1.6ex depth 0ex \kern.15em
+ $#3$\raisebox{0.15ex}[-0.15ex]{$>$}}}
+
+% Operator of the identity: \identop
+\def\identop{\mbox{\tt \large \kern.45em \vrule width.02em height1.35ex
+ depth 0ex \kern-.19em 1}}
+
+% Adjoint Operator
+\newcommand{\adjoint}[1]{\mbox{$#1^{\mbox{\scriptsize \dag}}$}}
+
+
+
+
+
diff --git a/macros/latex209/contrib/misc/quote.sty b/macros/latex209/contrib/misc/quote.sty
new file mode 100644
index 0000000000..73328d49d7
--- /dev/null
+++ b/macros/latex209/contrib/misc/quote.sty
@@ -0,0 +1,119 @@
+% Save file as: QUOTE.STY Source: FILESERV@SHSU.BITNET
+%
+% File: QUOTE.STY
+%
+% Author: Hunter Goatley
+% goathunter@WKUVX1.BITNET
+%
+% Date: August 14, 1991
+%
+% Abstract:
+%
+% This file defines the macros \begindoublequotes and \enddoublequotes,
+% which let TeX replace the double-quote character (") with TeX's
+% left double-quote and right double-quote. For example:
+%
+% "This is a test." ---> ``This is a test.''
+%
+% The double-quote character is still available via \dq. (\" is still
+% treated as the umlaut accent.)
+%
+% This macro makes a couple of assumptions about the double-quotes:
+%
+% 1. Double-quotes are assumed to come in pairs. When replacing
+% double-quotes, the macro alternates between `` and ''. The only
+% exception to this is noted in (2) below.
+% 2. A double-quote at the beginning of a paragraph is always treated
+% as ``. This correctly handles the case where a quotation is
+% continued into a second paragraph:
+%
+% "This is the first paragraph.\par
+% "This is the second paragraph of the same quote."
+%
+% Normal TeX spacing after `` and '' is maintained by saving and
+% restoring the \spacefactor.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% HOW IT WORKS:
+%
+% The double-quote character (") is made active by \begindoublequotes.
+% The " macro keeps track of left-quote/right-quote pairs and inserts
+% the appropriate `` and '' in its place.
+%
+% Each character has a \spacefactor associated with it, which specifies
+% the amount of stretch or shrink that a space following the character
+% can have. Most characters have a factor of 1000, but some punctuation
+% marks have higher spacefactors, most notably the period, which has a
+% \spacefactor of 3000. This means the space following a period can
+% stretch up to 3 times more than the space after a regular character,
+% accounting for the increased space at the end of sentences.
+%
+% The `` and '' ligatures are assigned \spacefactor's of 0, so that the
+% \spacefactor that is applied to the next character is the same as that
+% of the character preceding the quotes. Because " has been redefined as
+% a macro, any spaces following " are swallowed by TeX. It was necessary
+% to have this macro re-insert any needed space so that the following
+% cases worked correctly:
+%
+% "This is a test," she said. --> ``This is a test,'' she said.
+% "This is in a list"; etc. --> ``This is in a list''; etc.
+%
+% Without the added space, the first example becomes:
+%
+% ``This is a test,''she said.
+%
+% The solution was to save the current \spacefactor before inserting a
+% right double-quote, then resetting the \spacefactor after the
+% insertion. The net effect was that the " macro has a \spacefactor
+% of 0, which matches the way TeX treats `` and ''.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+{% % Begin a group for which " is active
+\catcode`\"=\active % Make " an active character
+\catcode`\@=11 % Make @ an active character
+%
+% \begindoublequotes
+%
+% This macro makes " an active character, resets the control sequence
+% \dblqu@te to L (left), and defines \dq as a replacement for ".
+%
+\gdef\begindoublequotes{% % \begindoublequotes enables "
+ \global\catcode`\"=\active % Make " an active character
+ \global\chardef\dq=`\" % Double-quote char. via \dq
+ \global\let\dblqu@te=L % Always start with a left double-quote
+ } % End of macro
+%
+% Define the macro that will be executed whenever " is encountered.
+%
+\gdef"{%
+ % If the double-quote is the first character in a new paragraph,
+ % make sure it becomes a left double-quote. This case can be
+ % detected by checking to see if TeX is currently in vertical mode.
+ % If so, the double-quote is at the beginning of the paragraph
+ % (since " hasn't actually generated any horizontal mode tokens
+ % yet, TeX is still in vertical mode). If the mode is vertical,
+ % set \dblqu@te equal to L.
+ %
+ \ifinner\else\ifvmode\let\dblqu@te=L\fi\fi
+ %
+ % Now insert the appropriate left or right double-quote.
+ %
+ % If \dblqu@te is L, insert a `` and set \dblqu@te to R.
+ %
+ \if L\dblqu@te``\global\let\dblqu@te=R%
+ %
+ % Otherwise, save the current \spacefactor, insert '', set \dblqu@te
+ % to L, and reset the original \spacefactor.
+ %
+ \else
+ \let\xxx=\spacefactor % Save the \spacefactor
+ ''\global\let\dblqu@te=L% % Insert '' and reset \dblqu@te
+ \spacefactor\xxx % Reset the \spacefactor
+ \fi % End of \if L\dblqu@te...
+ } % End of " macro
+} % End of group
+
+\gdef\enddoublequotes{%
+ \catcode`\"=12 %Set " back to other
+ }
diff --git a/macros/latex209/contrib/misc/raggedtab.sty b/macros/latex209/contrib/misc/raggedtab.sty
new file mode 100644
index 0000000000..24bdc45e31
--- /dev/null
+++ b/macros/latex209/contrib/misc/raggedtab.sty
@@ -0,0 +1,11 @@
+% Style option to cause all parboxes to be typeset ragged right:
+
+\def\@arrayparboxrestore{\let\par\@@par
+ \let\-\@dischyph
+ \let\'\@acci \let\`\@accii \let\=\@acciii
+ \parindent\z@ \parskip\z@
+ \everypar{}\linewidth\hsize
+ \@totalleftmargin\z@ \leftskip\z@ \rightskip\@flushglue
+ \@rightskip\@flushglue
+ \parfillskip\@flushglue \lineskip\normallineskip
+ \baselineskip\normalbaselineskip\sloppy}
diff --git a/macros/latex209/contrib/misc/rangecite.sty b/macros/latex209/contrib/misc/rangecite.sty
new file mode 100644
index 0000000000..758f2f5532
--- /dev/null
+++ b/macros/latex209/contrib/misc/rangecite.sty
@@ -0,0 +1,75 @@
+% RANGECITE DOCUMENT-STYLE OPTION FOR ANY STYLE WITH NUMERIC CITATIONS
+%
+% This redefines the LaTex \@cite macro to gather consecutive citation numbers
+% i,i+1,...,j into a range i-j
+%
+% Nachum Dershowitz (nachum@cs.uiuc.edu)
+% Edward M. Reingold (reingold@cs.uiuc.edu)
+%
+% These macros are in the public domain. You may use them and copy them at
+% will, provided you retain the authorship information. We wrote these for
+% temporary use in a single paper, so use them at your own risk!
+%
+% Written 12 Apr 1990
+%
+%
+\newif\if@first%
+\newcounter{@@@first}%
+\newcounter{@@@state}%
+%
+% A simple four-state finite automaton:
+% State 0: No references in current range
+% State 1: One reference in current range
+% State 2: Two references in current range
+% State 3: More than two references in current range
+%
+\newcounter{@@@next}%
+\newcounter{@@@cur}%
+\newcounter{@@@curt}%
+\newcommand{\b@@@ENDLIST}{9999}%
+\def\@citex[#1]#2{%
+ \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \def\@citea{}%
+ \@cite{%
+ \@firsttrue%
+ \setcounter{@@@state}{0}%
+ \@for\@citeb:=#2,@@ENDLIST\do{%
+ \@ifundefined{b@\@citeb}%
+ {{\bf ?}%
+ \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+% else%
+ {\setcounter{@@@next}{\csname b@\@citeb\endcsname}%
+ \ifcase\the@@@state%
+% state 0:
+ \setcounter{@@@state}{1}%
+ \or% state 1:
+ \ifnum\value{@@@next}=\value{@@@curt}%
+ \setcounter{@@@state}{2}%
+ \setcounter{@@@first}{\value{@@@cur}}%
+ \else%
+ \if@first{}\else{,\ }\fi%
+ \the@@@cur%
+ \@firstfalse%
+ \fi%
+ \or% state 2:
+ \ifnum\value{@@@next}=\value{@@@curt}%
+ \setcounter{@@@state}{3}%
+ \else%
+ \setcounter{@@@state}{1}%
+ \if@first{}\else{,\ }\fi%
+ \the@@@first,\ \the@@@cur%
+ \@firstfalse%
+ \fi%
+ \or% state 3:
+ \ifnum\value{@@@next}=\value{@@@curt}%
+ \else%
+ \setcounter{@@@state}{1}%
+ \if@first{}\else{,\ }\fi%
+ \the@@@first-\the@@@cur%
+ \@firstfalse%
+ \fi%
+ \fi%
+ \setcounter{@@@cur}{\value{@@@next}}%
+ \setcounter{@@@curt}{\value{@@@cur}}%
+ \addtocounter{@@@curt}{1}}}}%
+ {#1}}%
diff --git a/macros/latex209/contrib/misc/regel.sty b/macros/latex209/contrib/misc/regel.sty
new file mode 100644
index 0000000000..fa9023136c
--- /dev/null
+++ b/macros/latex209/contrib/misc/regel.sty
Binary files differ
diff --git a/macros/latex209/contrib/misc/remark.sty b/macros/latex209/contrib/misc/remark.sty
new file mode 100644
index 0000000000..771ae1d73e
--- /dev/null
+++ b/macros/latex209/contrib/misc/remark.sty
@@ -0,0 +1,130 @@
+% ****************************************
+% * REMARK ENVIRONMENTS *
+% ****************************************
+%
+% The user creates his own remark-like environments with the command
+% \newremark{NAME}{TEXT}[COUNTER] or
+% \newremark{NAME}[OLDNAME]{TEXT}
+% This defines the environment NAME to be just as one would expect a
+% remark environment to be, except that it prints ``TEXT'' instead of
+% ``Remark''.
+%
+% If OLDNAME is given, then environments NAME and OLDNAME use the same
+% counter, so using a NAME environment advances the number of the next
+% NAME environment, and vice-versa.
+%
+% If COUNTER is given, then environment NAME is numbered within COUNTER.
+% E.g., if COUNTER = subsection, then the first NAME in subsection 7.2
+% is numbered TEXT 7.2.1.
+%
+% The way NAME environments are numbered can be changed by redefining
+% \theNAME.
+%
+% DOCUMENT STYLE PARAMETERS
+%
+% \@rmkcounter{COUNTER} : A command such that
+% \edef\theCOUNTER{\@rmkcounter{COUNTER}}
+% defines \theCOUNTER to produce a number for a remark environment.
+% The default is:
+% BEGIN \noexpand\arabic{COUNTER} END
+%
+% \@rmkcountersep : A separator placed between a remark number and
+% the number of the counter within which it is numbered.
+% E.g., to make the third remark of section 7.2 be numbered
+% 7.2-3, \@rmkcountersep should be \def'ed to '-'. Its
+% default is '.'.
+%
+% \@beginremark{NAME}{NUMBER} : A command that begins a remark
+% environment for a 'remark' named 'NAME NUMBER' --
+% e.g., \@beginremark{Lemma}{3.7} starts Lemma 3.7.
+%
+% \@opargbeginremark{NAME}{NUMBER}{OPARG} : A command that begins a remark
+% environment for a 'remark' named 'NAME NUMBER' with optional
+% argument OPARG -- e.g., \@beginremark{Lemma}{3.7}{Jones}
+% starts `Lemma 3.7 (Jones):'.
+%
+% \@endremark : A command that ends a remark environment.
+%
+% \newremark{NAME}{TEXT}[COUNTER] ==
+% BEGIN
+% if \NAME is definable
+% then \@definecounter{NAME}
+% if COUNTER present
+% then \@addtoreset{NAME}{COUNTER} fi
+% \theNAME == BEGIN \theCOUNTER \@rmkcountersep
+% eval\@rmkcounter{NAME} END
+% else \theNAME == BEGIN eval\@rmkcounter{NAME} END
+% \NAME == \@rmk{NAME}{TEXT}
+% \endNAME == \@endremark
+% else error
+% fi
+% END
+%
+% \newremark{NAME}[OLDNAME]{TEXT}==
+% BEGIN
+% if \NAME is definable
+% then \theNAME == \theOLDNAME
+% \NAME == \@rmk{OLDNAME}{TEXT}
+% \endNAME == \@endremark
+% else error
+% fi
+% END
+%
+% \@rmk{NAME}{TEXT} ==
+% BEGIN
+% \refstepcounter{NAME}
+% if next char = [
+% then \@yrmk{NAME}{TEXT}
+% else \@xrmk{NAME}{TEXT}
+% fi
+% END
+%
+% \@xrmk{NAME}{TEXT} ==
+% BEGIN
+% \@beginremark{TEXT}{\theNAME}
+% \ignorespaces
+% END
+%
+% \@yrmk{NAME}{TEXT}[OPARG] ==
+% BEGIN
+% \@opargbeginremark{TEXT}{\theNAME}{OPARG}
+% \ignorespaces
+% END
+%
+\def\newremark#1{\@ifnextchar[{\@ormk{#1}}{\@nrmk{#1}}}
+
+\def\@nrmk#1#2{%
+\@ifnextchar[{\@xnrmk{#1}{#2}}{\@ynrmk{#1}{#2}}}
+
+\def\@xnrmk#1#2[#3]{\expandafter\@ifdefinable\csname #1\endcsname
+{\@definecounter{#1}\@addtoreset{#1}{#3}%
+\expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand
+ \csname the#3\endcsname \@rmkcountersep \@rmkcounter{#1}}%
+\global\@namedef{#1}{\@rmk{#1}{#2}}\global\@namedef{end#1}{\@endremark}}}
+
+\def\@ynrmk#1#2{\expandafter\@ifdefinable\csname #1\endcsname
+{\@definecounter{#1}%
+\expandafter\xdef\csname the#1\endcsname{\@rmkcounter{#1}}%
+\global\@namedef{#1}{\@rmk{#1}{#2}}\global\@namedef{end#1}{\@endremark}}}
+
+\def\@ormk#1[#2]#3{\expandafter\@ifdefinable\csname #1\endcsname
+ {\global\@namedef{the#1}{\@nameuse{the#2}}%
+\global\@namedef{#1}{\@rmk{#2}{#3}}%
+\global\@namedef{end#1}{\@endremark}}}
+
+\def\@rmk#1#2{\refstepcounter
+ {#1}\@ifnextchar[{\@yrmk{#1}{#2}}{\@xrmk{#1}{#2}}}
+
+\def\@xrmk#1#2{\@beginremark{#2}{\csname the#1\endcsname}\ignorespaces}
+\def\@yrmk#1#2[#3]{\@opargbeginremark{#2}{\csname
+ the#1\endcsname}{#3}\ignorespaces}
+
+%DEFAULT VALUES
+\def\@rmkcounter#1{\noexpand\arabic{#1}}
+\def\@rmkcountersep{.}
+%deleted September 2, 1986 MDK
+%\def\@makermknumber#1#2{\bf #1 #2:}
+\def\@beginremark#1#2{\trivlist \item[\hskip \labelsep{\bf #1\ #2}]}
+\def\@opargbeginremark#1#2#3{\trivlist
+ \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]}
+\def\@endremark{\endtrivlist}
diff --git a/macros/latex209/contrib/misc/rmthm.sty b/macros/latex209/contrib/misc/rmthm.sty
new file mode 100644
index 0000000000..e1770391ef
--- /dev/null
+++ b/macros/latex209/contrib/misc/rmthm.sty
@@ -0,0 +1,23 @@
+% rmthm.sty, by nico@cs.ruu.nl
+% This version is of 14 June 1991.
+% You can change the style in which your \newtheorems are typeset with
+% \renewcommand{\theoremstyle}{...}.
+% Default is \rm (hence the name of this file).
+% You can also specify an end-of-theorem marker with
+% \renewcommand{\theoremclosing}{...}.
+% Default is a box flushed right.
+% If you don't want your theorems to be numbered, number them like
+% the nonumtheorem theorem environment, i.e.
+% \newtheorem{thm}[nonumthm]{Thm}.
+
+\def\@begintheorem#1#2{\theoremstyle
+ \trivlist \item[\hskip \labelsep{\bf #1\ #2}]}
+\def\@opargbegintheorem#1#2#3{\theoremstyle
+ \trivlist \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]}
+\def\@endtheorem{\nopagebreak\theoremclosing\endtrivlist}
+\def\theoremstyle{\rm}
+\def\theoremclosing{\hfill$\Box$}
+\newtheorem{nonumthm}{\relax}
+\renewcommand{\thenonumthm}{\relax}
+
+
diff --git a/macros/latex209/contrib/misc/rnl-slides.sty b/macros/latex209/contrib/misc/rnl-slides.sty
new file mode 100644
index 0000000000..cedc241c53
--- /dev/null
+++ b/macros/latex209/contrib/misc/rnl-slides.sty
@@ -0,0 +1,594 @@
+
+
+ Hallo,
+
+ Jemandem hat gefragt ob es m"oglich w"are einen Rand um einer TeXt
+ herum zu machen. Bernd hat als `hint' gegeben dass das mit
+ \@oddhead und \@evenhead geht.
+ Hierbei ist eine SliTeX Stylefile der genau dass macht. Warnung:
+ die File kann nicht ohne "Anderungen benutzt werden, denn es
+ versucht mit einem \special eine LN03-sixel-File zu lesen.
+ Aber vielleicht hilft es?
+
+ Mit freundlichem Gruss,
+
+ Johannes Braams
+
+PTT Research Neher Laboratorium, P.O. box 421,
+2260 AK Leidschendam, The Netherlands.
+Phone : +31 70 3325051 E-mail : JL_Braams@pttrnl.nl
+Fax : +31 70 3326477
+-------------------------------------------------------------------------------
+% RNL-slides DOCUMENT STYLE
+% for SliTeX version 2.09
+% Copyright (C) 1991 by Johannes Braams
+% This style is based on the SLIDE style, Copyright (C) 1985 by Leslie Lamport
+%
+\def\fileversion{0.2}
+\def\filedate{25 januari 1990}
+\typeout{Documentstyle 'RNL-slides' version \fileversion\space <\filedate>}
+
+\def\@notinslitex{\errmessage{This command not allowed in SLiTeX.}}
+
+%page layout
+\@twosidefalse
+\topmargin -10pt
+\oddsidemargin 17pt
+\evensidemargin 17pt
+
+\def\pl@twoside{\@latexerr{No 'twoside' layout for slides}\@eha}
+
+\advance\hoffset by -1cm
+\advance\voffset by -0.3cm
+\headheight 0pt
+\headsep 2.3pc
+\footheight 0pt
+\footskip 45pt
+\newdimen\boxwidth\newdimen\boxheight
+\boxwidth = 63.2pc \textwidth = \boxwidth \advance\textwidth by -4pc
+\boxheight = 39.5pc \textheight = \boxheight \advance\textheight by -4.6pc
+\columnwidth \textwidth
+\columnsep 10pt
+\columnseprule \z@
+
+%footnotes
+
+\skip\footins 10pt plus 2pt minus 4pt % Space between last line of text and
+ % top of first footnote.
+
+% \skip\@mpfootins : plays same role for footnotes in a minipage as
+% \skip\footins does for ordinary footnotes
+
+\skip\@mpfootins = \skip\footins
+
+\footnotesep 20pt % Height of strut placed at the beginning of every
+ % footnote.
+
+
+
+
+%floats and marginpar
+\marginparwidth 0pt
+\marginparsep 0pt
+\marginparpush 0pt
+
+
+
+
+
+
+
+
+
+% ****************************************
+% * FONTS *
+% ****************************************
+%
+%
+% Note that SLITeX uses a different font-naming and size-defining convention
+% than LaTeX.
+%
+\font\trm lcmss8
+\def\@mainsize{\@visibletrue\tiny}
+\parindent 0pt
+\def\baselinestretch{1}
+
+\def\sc{\@noslifont\sc}
+\def\@noslifont#1{\@warning{No \string#1\space type style in SLiTeX}}
+
+\def\Huge{\huge}
+
+\def\huge{\@nomath\huge\@LARGE\@huge\def\@currsize{\@huge}\rm
+\baselineskip 60pt plus 10pt minus 6pt%
+\lineskip 2pt%
+\def\@parskip{60pt plus 30pt minus 6pt}%
+\parskip\@parskip
+\abovedisplayskip 24pt plus 10pt minus 6pt%
+\belowdisplayskip 24pt plus 10pt minus 6pt%
+\abovedisplayshortskip 12pt plus 8pt%
+\belowdisplayshortskip 12pt plus 8pt%
+\setbox\strutbox=\hbox{\vrule height27pt depth11pt width0pt}%
+\baselineskip\baselinestretch\baselineskip
+\normalbaselineskip\baselineskip}
+
+\def\@huge{\if@visible\fortyonept\else\ifortyonept\fi}
+
+\def\LARGE{\@nomath\LARGE\@LARGE\def\@currsize{\@LARGE}\rm
+\baselineskip 52pt plus 10pt minus 6pt%
+\lineskip 2pt%
+\def\@parskip{52pt plus 30pt minus 6pt}%
+\parskip\@parskip
+\abovedisplayskip 24pt plus 10pt minus 6pt%
+\belowdisplayskip 24pt plus 10pt minus 6pt%
+\abovedisplayshortskip 12pt plus 8pt%
+\belowdisplayshortskip 12pt plus 8pt%
+\setbox\strutbox=\hbox{\vrule height27pt depth11pt width0pt}%
+\baselineskip\baselinestretch\baselineskip
+\normalbaselineskip\baselineskip}
+
+\def\@LARGE{\if@visible\thirtyfourpt\else\ithirtyfourpt\fi}
+
+\def\Large{\@nomath\Large\@Large\def\@currsize{\@Large}\rm
+\baselineskip 48pt plus 10pt minus 6pt%
+\lineskip 2pt%
+\def\@parskip{48pt plus 30pt minus 6pt}%
+\parskip\@parskip
+\abovedisplayskip 24pt plus 10pt minus 6pt%
+\belowdisplayskip 24pt plus 10pt minus 6pt%
+\abovedisplayshortskip 12pt plus 8pt%
+\belowdisplayshortskip 12pt plus 8pt%
+\setbox\strutbox=\hbox{\vrule height27pt depth11pt width0pt}%
+\baselineskip\baselinestretch\baselineskip
+\normalbaselineskip\baselineskip}
+
+\def\@Large{\if@visible\twentyninept\else\itwentyninept\fi}
+
+\def\large{\@nomath\large\@large\def\@currsize{\@large}\rm
+\baselineskip 42pt plus 8pt minus 5pt%
+\lineskip 2pt%
+\def\@parskip{40pt plus 20pt minus 4pt}%
+\parskip\@parskip
+\abovedisplayskip 20pt plus 8pt minus 3pt%
+\belowdisplayskip 20pt plus 8pt minus 3pt%
+\abovedisplayshortskip 10pt plus 5pt%
+\belowdisplayshortskip 10pt plus 5pt%
+\setbox\strutbox=\hbox{\vrule height20pt depth8.5pt width0pt}%
+\baselineskip\baselinestretch\baselineskip
+\normalbaselineskip\baselineskip}
+
+\def\@large{\if@visible\twentyfourpt\else\itwentyfourpt\fi}
+
+
+\def\normalsize{\@nomath\normalsize\@normalsize\def\@currsize{\@normalsize}\rm
+\baselineskip 30pt plus 3pt minus 3pt%
+\lineskip 2pt%
+\def\@parskip{30pt plus 12pt minus 6pt}%
+\parskip\@parskip
+\abovedisplayskip 10pt plus 2pt minus 2pt%
+\belowdisplayskip 6pt plus 2pt minus 2pt%
+\abovedisplayshortskip 6pt plus 2pt%
+\belowdisplayshortskip 6pt plus 2pt%
+\setbox\strutbox=\hbox{\vrule height17pt depth7pt width0pt}%
+\baselineskip\baselinestretch\baselineskip
+\normalbaselineskip\baselineskip}
+
+\def\@normalsize{\if@visible\twentypt\else\itwentypt\fi}
+
+\def\small{\@nomath\small\@small\def\@currsize{\@small}\rm
+\baselineskip 19pt plus 3pt minus 1pt%
+\lineskip 2pt%
+\def\@parskip{15pt plus 10pt minus 6pt}%
+\parskip\@parskip
+\abovedisplayskip 9pt plus 2pt minus 2pt%
+\belowdisplayskip 6pt plus 2pt minus 2pt%
+\abovedisplayshortskip 4pt plus 2pt%
+\belowdisplayshortskip 4pt plus 2pt%
+\setbox\strutbox=\hbox{\vrule height13.5pt depth5.6pt width0pt}%
+\baselineskip\baselinestretch\baselineskip
+\normalbaselineskip\baselineskip}
+
+\def\@small{\if@visible\seventeenpt\else\iseventeenpt\fi}
+
+\let\footnotesize=\small
+
+\let\scriptsize=\small
+
+\def\tiny{\@nomath\tiny\@tiny\def\@currsize{\@tiny}\rm
+\baselineskip 16pt plus 2pt minus 1pt%
+\lineskip 2pt%
+\def\@parskip{11pt plus 11pt minus 5pt}%
+\parskip\@parskip
+\abovedisplayskip 9pt plus 2pt minus 6pt%
+\belowdisplayskip 9pt plus 2pt minus 6pt%
+\abovedisplayshortskip 0pt plus 2pt%
+\belowdisplayshortskip 0pt plus 2pt%
+\setbox\strutbox=\hbox{\vrule height10pt depth4pt width0pt}%
+\baselineskip\baselinestretch\baselineskip
+\normalbaselineskip\baselineskip}
+
+\def\@tiny{\if@visible\fourteenpt\else\ifourteenpt\fi}
+
+%
+%\change{0.2a}{25/01/91}{Redefine {\tt\bsl @arrayparbox} to fit \SLiTeX}
+%
+\def\@arrayparboxrestore{\let\par\@@par
+ \let\-\@dischyph
+ \let\'\@acci \let\`\@accii \let\=\@acciii
+ \parindent\z@ \parskip\@parskip
+ \everypar{}\linewidth\hsize
+ \@totalleftmargin\z@ \leftskip\z@ \rightskip\z@ \@rightskip\z@
+ \parfillskip\@flushglue \lineskip\normallineskip
+ \baselineskip\normalbaselineskip\sloppy}
+
+
+
+
+
+
+
+
+
+% ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+\newbox\rand
+\setbox\rand=\vbox to\boxheight{\hsize\boxwidth\offinterlineskip
+\rlap{\hbox{\rule[-2pt]{\boxwidth}{2pt}}}
+\vskip-2pt
+\rlap{\hbox to \boxwidth{\rule[-\boxheight]{2pt}{\boxheight}\hfill
+ \rule[-\boxheight]{2pt}{\boxheight}}}
+\vskip-2pt
+\rlap{\hbox{\rule{\boxwidth}{2pt}}}
+}
+\ht\rand=\z@ \dp\rand=\z@ \wd\rand=\z@
+
+\newbox\l@g@
+\setbox\l@g@\hbox to 122pt{%
+ \special{ln03:plotfile texinputs:research.six}\hfill\null}
+\newbox\@slidenum
+\def\pagebox#1{%
+\setbox\@slidenum\vbox to 0pt{\vskip 18pt
+\hbox{\hskip-33pt\trm 910128.#1}\vss}
+\box\@slidenum}
+%
+% The page styles of slides is determined by the 'slide' page
+% style, the slide environment executing a \thispagestyle{slide}
+% command. The page styles of overlays and notes are similarly
+% determined by 'overlay' and 'note' page styles. The command
+% standard 'headings', 'plain' and 'empty' page styles work by
+% redefining the 'slide', 'overlay', and 'note' styles.
+%
+
+\def\ps@headings{%
+\def\ps@slide{%
+ \def\@oddfoot{\pagebox{\theslide}\hfill\copy\l@g@}
+ \def\@oddhead{\hskip-2pc\copy\rand\hfill\null}
+ \let\@evenfoot\@oddfoot
+ \let\@evenfoot\@oddfoot
+ }
+\def\ps@overlay{%
+ \def\@oddfoot{\pagebox{\theoverlay}\hfill\copy\l@g@}
+ \def\@oddhead{\hskip-2pc\copy\rand\hfill\null}
+ \let\@evenfoot\@oddfoot
+ \let\@evenfoot\@oddfoot
+ }
+\def\ps@note{%
+ \def\@oddfoot{\pagebox{\thenote}\hfill\copy\l@g@}
+ \def\@oddhead{\hskip-2pc\copy\rand\hfill\null}
+ \let\@evenfoot\@oddfoot
+ \let\@evenfoot\@oddfoot
+ }
+}
+
+\let\ps@plain\ps@headings
+\let\ps@empty\ps@headings
+%
+%\def\ps@plain{\def\ps@slide{%
+%\def\@oddfoot{\@mainsize \mtbox{}\hfil\hbox to 3em{\theslide\hss}}%
+%\def\@oddhead{}%
+%%\def\@evenfoot{\@mainsize \mbox{}\hfil\hbox to 3em{\theslide\hss}}%
+%\def\@evenhead{}}
+%\def\ps@overlay{\def\@oddfoot{\@mainsize
+% \mbox{}\hfil\hbox to 3em{\theoverlay\hss}}%
+%\def\@oddhead{}%
+%\def\@evenfoot{\@mainsize \mbox{}\hfil\hbox to 3em{\theoverlay\hss}}%
+%\def\@evenhead{}}
+%\def\ps@note{\def\@oddfoot{\@mainsize \hbox{}\hfil\thenote}%
+%\def\@oddhead{}%
+%\def\@evenfoot{\@mainsize \hbox{}\hfil\thenote}%
+%\def\@evenhead{}}}
+
+%\def\ps@empty{%
+%\def\ps@slide{\def\@oddhead{}\def\@oddfoot{}%
+%\def\@evenhead{}\def\@evenfoot{}}%
+%\def\ps@overlay{\def\@oddhead{}\def\@oddfoot{}%
+%\def\@evenhead{}\def\@evenfoot{}}%
+%\def\ps@note{\def\@oddhead{}\def\@oddfoot{}%
+%\def\@evenhead{}\def\@evenfoot{}}}
+
+% Default definition the 'slide', 'overlay', and 'note' page styles.
+\ps@headings
+
+% Set ordinary page style to 'empty'
+%\def\@oddhead{}\def\@oddfoot{}%
+%\def\@evenhead{}\def\@evenfoot{}
+
+
+
+% The \@options command causes the execution of every command \ds@FOO
+% which is defined and for which the user typed the FOO option in his
+% \documentstyle command. For every option BAR he typed for which
+% \ds@BAR is not defined, the file BAR.sty will be read after the present
+% (main) .STY file is executed.
+
+\@options
+
+
+
+
+
+
+
+
+
+% ****************************************
+% * ENVIRONMENTS *
+% ****************************************
+%
+% titlepage
+%
+\def\titlepage{\newpage\thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\newpage}
+
+% Default values for list environment.
+
+\leftmargini 38pt
+\leftmarginii 30pt
+\leftmarginiii 20pt
+\leftmarginiv 15pt
+\leftmarginv 15pt
+\leftmarginvi 10pt
+
+\labelsep 10pt
+\tabbingsep \labelsep
+
+\def\@listi{\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+\parsep .5\parskip
+\topsep \parsep
+\itemsep\parskip
+\partopsep 0pt}
+
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \parsep .5\parskip
+ \topsep \parsep
+ \itemsep\parskip}
+
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep}
+
+\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}
+
+
+
+
+% PARAGRAPH-FORMATTING ENVIRONMENTS
+% ---------------------------------
+% VERSE
+% \CR ends line
+% Line continuations indented further.
+% Blank line makes new paragraph with \parskip space
+%
+\def\verse{\let\\=\@centercr \list{}{\itemsep\z@
+ \itemindent -15pt\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 15pt}\item[]}
+\let\endverse\endlist
+
+% QUOTATION
+% Fills lines
+% Indents paragraph
+%
+\def\quotation{\list{}{\listparindent 20pt\relax\itemindent\listparindent
+ \rightmargin\leftmargin}\item[]}
+\let\endquotation=\endlist
+
+% QUOTE -- same as quotation except no paragraph indentation,
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+% LIST-MAKING ENVIRONMENTS
+% ------------------------
+%
+% DESCRIPTION
+%
+% To change the formatting of the label, you must redefine
+% \descriptionlabel.
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+
+\let\enddescription\endlist
+
+
+
+% ENUMERATE
+% Enumeration is done with four counters: enumi, enumii, enumiii
+% and enumiv, where enumN controls the numbering of the Nth level
+% enumeration. The label is generated by the commands \labelenumi
+% ... \labelenumiv. The expansion of \p@enumN\theenumN defines the
+% output of a \ref command.
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+% ITEMIZE
+% Itemization is controlled by four commands: \labelitemi, \labelitemii,
+% \labelitemiii, and \labelitemiv, which define the labels of the various
+% itemization levels.
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+%\change{0.2}{26/01/91}{Added {\tt\bsl freelines} and {\tt centerlist}
+% environment}
+% CENTERLIST
+%
+\def\freelines{\@rightskip 0\p@ plus 2em \rightskip\@rightskip}%
+% \leftskip\z@%
+% \parindent\z@%
+% \parfillskip = 0.1\hsize plus 1fil%
+% \parskip\z@}%
+
+\def\centerlist#1#2{\center\minipage[t]{#2}
+\freelines%\leftmargini=0pt
+\csname #1\endcsname
+\def\endcenterlist{\csname end#1\endcsname\endminipage\endcenter}}
+
+\def\vcenter{\null\vfill}
+\def\endvcenter{\vfill\null}
+
+% Theorem environments
+% \@begintheorem ... \@endtheorem are the commands executed at the
+% beginning and end of a (user-defined) theorem-like environment.
+% Except \@opargbegintheorem is executed when an optional argument is
+% given. Cf. LATEX.TEX.
+%
+% \def\@begintheorem#1#2{\it \trivlist \item[\hskip \labelsep{\bf #1\ #2}]}
+% \def\@opargbegintheorem#1#2#3{\it \trivlist
+% \item[\hskip \labelsep{\bf #1\ #2\ (#3)}]}
+% \def\@endtheorem{\endtrivlist}
+
+% Array and tabular environment parameters
+\arraycolsep 8pt
+\tabcolsep 10pt
+\arrayrulewidth .6pt
+\doublerulesep 3pt
+
+% \fbox parameters
+\fboxsep = 5pt
+\fboxrule = .6pt
+
+% Date
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+
+
+
+
+
+
+
+
+% ****************************************
+% * FOOTNOTES *
+% ****************************************
+%
+
+% Following makes footnotes numbered *, dagger, etc., with numbering
+% begun again on every slide, note, or overlay.
+
+\def\thefootnote{\fnsymbol{footnote}}
+\@addtoreset{footnote}{slide}
+\@addtoreset{footnote}{overlay}
+\@addtoreset{footnote}{note}
+
+% \footnoterule is a macro to draw the rule separating the footnotes from
+% the text. It should take zero vertical space, so it needs a negative
+% skip to compensate for any positive space taken by the rule. (See
+% PLAIN.TEX.) The resulting rule will appear on all color layers, so
+% it's best not to draw a rule.
+
+\let\footnoterule=\relax
+
+% \@makefntext{NOTE} :
+% Must produce the actual footnote, using \@thefnmark as the mark
+% of the footnote and NOTE as the text. It is called when effectively
+% inside a \parbox of width \columnwidth (i.e., with \hsize =
+% \columnwidth). The following macro indents
+% all lines of the footnote by 10pt, and indents the first line of
+% a new paragraph by 1em. To change these dimensions, just substitute
+% the desired value for '10pt' [in both places] or '1em'.
+% The mark is flushright against the footnote.
+%
+% It is much easier to write a macro in which the footnote text is
+% set like an ordinary text paragraph, with no indentation except
+% on the first line of a paragraph, and the first line of the
+% footnote. In that case, all the macro must do is set \parindent
+% to the appropriate value for succeeding paragraphs and put the
+% proper indentation before mark.
+
+\long\def\@makefntext#1{\noindent % Macro to make the text of a footnote
+ \hangindent 10pt\hbox
+ to 10pt{\hss $^{\@thefnmark}$}#1}
+
+% \@makefnmark : A macro to generate the footnote marker that goes
+% in the text.
+
+
+
+
+
+
+
+
+
+
+\def\theequation{\@arabic{\c@equation}}
+
+% The following stuff isn't used, but needs to be defined.
+\def\@figsep{7pt}
+\def\@textfigsep{5pt}
+\def\@captionskip{6pt}
+\def\topfraction{.7}
+\def\bottomfraction{.3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+
+
+
+
+
+
+
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+%
+% Default initializations
+
+\pagenumbering{arabic}
+\onecolumn
+\normalsize
+
+
diff --git a/macros/latex209/contrib/misc/rotate_tex.sty b/macros/latex209/contrib/misc/rotate_tex.sty
new file mode 100644
index 0000000000..771cfa670b
--- /dev/null
+++ b/macros/latex209/contrib/misc/rotate_tex.sty
@@ -0,0 +1,45 @@
+%% Save file as: ROTATE.TEX Source: FILESERV@SHSU.BITNET
+%% NOTE: This file is part of the DVIPS distribution
+%
+% These macros allow you to rotate or flip a \TeX\ box. Very useful for
+% sideways tables or upsidedown answers.
+%
+% To use, create a box containing the information you want to rotate.
+% (An hbox or vbox will do.) Now call \rotr\boxnum to rotate the
+% material and create a new box with the appropriate (flipped) dimensions.
+% \rotr rotates right, \rotl rotates left, \rotu turns upside down, and
+% \rotf flips. These boxes may contain other rotated boxes.
+%
+\newdimen\rotdimen
+\def\vspec#1{\special{ps:#1}}% passes #1 verbatim to the output
+\def\rotstart#1{\vspec{gsave currentpoint currentpoint translate
+ #1 neg exch neg exch translate}}% #1 can be any origin-fixing transformation
+\def\rotfinish{\vspec{currentpoint grestore moveto}}% gets back in synch
+%
+% First, the rotation right. The reference point of the rotated box
+% is the lower right corner of the original box.
+%
+\def\rotr#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1%
+ \hbox to\rotdimen{\hskip\ht#1\vbox to\wd#1{\rotstart{90 rotate}%
+ \box#1\vss}\hss}\rotfinish}
+%
+% Next, the rotation left. The reference point of the rotated box
+% is the upper left corner of the original box.
+%
+\def\rotl#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1%
+ \hbox to\rotdimen{\vbox to\wd#1{\vskip\wd#1\rotstart{270 rotate}%
+ \box#1\vss}\hss}\rotfinish}%
+%
+% Upside down is simple. The reference point of the rotated box
+% is the upper right corner of the original box. (The box's height
+% should be the current font's xheight, \fontdimen5\font,
+% if you want that xheight to be at the baseline after rotation.)
+%
+\def\rotu#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1%
+ \hbox to\wd#1{\hskip\wd#1\vbox to\rotdimen{\vskip\rotdimen
+ \rotstart{-1 dup scale}\box#1\vss}\hss}\rotfinish}%
+%
+% And flipped end for end is pretty ysae too. We retain the baseline.
+%
+\def\rotf#1{\hbox to\wd#1{\hskip\wd#1\rotstart{-1 1 scale}%
+ \box#1\hss}\rotfinish}%
diff --git a/macros/latex209/contrib/misc/rs.sty b/macros/latex209/contrib/misc/rs.sty
new file mode 100644
index 0000000000..ce17e862cb
--- /dev/null
+++ b/macros/latex209/contrib/misc/rs.sty
@@ -0,0 +1,994 @@
+% ===================================================================
+% RS.sty
+% Copyright (C) 1992 Cambridge University Press
+% Version 1.01, 26 January 1993
+% V 0.91 6 Oct 92 JAS.
+% V 0.92 21 Nov 92 JAS.
+% V 0.93 30 Nov 92 JAS.
+% V 0.94 3 Dec 92 Alison Woollatt to include truesize option.
+% V 0.95 3 Dec 92 Alison Woollatt to remove raggedbottom and
+% increase floatpagefraction to 0.9, put letterspacing in author macro,
+% correct proofbox
+% V 1.00 8 Jan 93 Alison Woollatt to correct section headings, equation
+% numbering and referencing in appendices
+% V 1.01 26 Jan 93 Alison Woollatt to include \sect, reduce
+% space in appendix % equation numbering, center running heads
+% V 1.02 26 Apr 93 Jonathan Wainwright to include a selection of
+% AMS symbols from AMSSYMBO.STY (see AMS SYMBOLS) and to change theorem
+% typeface from \it to \sl (see THEOREM)
+%
+% Royal Society: Proceedings document style
+% based on FLM.sty
+% based on ARTICLE DOCUMENT STYLE -- Released 26 April 88
+% for LaTeX version 2.09 by Leslie Lamport
+% ------------------------------------------------------------------
+%
+% INSTRUCTIONS TO EDITOR:
+%
+% Use the following \documentstyle options to select journal
+% for catchline (default = trans):
+% \documentstyle[trans] % Phil. Trans. R. Soc. Lond.
+% \documentstyle[proc] % Proc. R. Soc. Lond.
+%
+% Use the following commands in preamble to control catchline:
+% \series{A} % (the default)
+% \volume{2}
+% \pagerange{0--000}
+% \year{1993}
+%
+% For received date, add the following to end of file after References:
+% \received{Received 9 August 1992; accepted 10 August 1992.}
+%
+% For first paragraph after abstract, insert a \noindent by hand.
+%
+% For Discussion section after References, use \discussion and \comment.
+%
+% The \documentstyle[truesize] option invokes the 10.5/12 font size.
+%
+%======================================================================
+
+\typeout{Document style `Royal Society journal style', V 1.02, 26 April 1993}
+%
+% Journals use two-sided printing.
+%
+\@twosidetrue
+\@mparswitchtrue
+\def\ds@draft{\overfullrule 5pt}
+\def\ds@proc{\gdef\@journal{Proc.\ R.\ Soc.\ Lond.}}
+\def\ds@trans{\gdef\@journal{Phil.\ Trans.\ R.\ Soc.\ Lond.}}
+\def\@journal{Phil.\ Trans.\ R.\ Soc.\ Lond.} % default
+%
+% ****************************************
+% * FONTS *
+% ****************************************
+%
+\let\xvipt\xviipt
+\let\@xvipt\@xviipt
+
+\lineskip 1pt
+\normallineskip 1pt
+\def\baselinestretch{1}
+\def\@normalsize{\@setsize\normalsize{12pt}\xipt\@xipt% 11 on 12
+ \abovedisplayskip 6.5pt plus 1pt minus 1pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 3pt plus 1pt
+ \belowdisplayshortskip \abovedisplayshortskip}
+\def\small{\@setsize\small{10pt}\ixpt\@ixpt% 9 on 10
+ \abovedisplayskip 6pt plus 1pt minus 1pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 3pt plus 1pt
+ \belowdisplayshortskip \abovedisplayshortskip}
+\def\footnotesize{\@setsize\footnotesize{10pt}\viiipt\@viiipt% 8 on 10
+ \abovedisplayskip 5pt plus 1pt minus 1pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 2pt plus 1pt
+ \belowdisplayshortskip \abovedisplayshortskip}
+\def\indexsize{\@setsize\indexsize{9pt}\viiipt\@viiipt} % 8 on 9
+\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt} % 7 on 8
+\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt} % 5 on 6
+\def\large{\@setsize\large{12.5pt}\xipt\@xipt} % 11 on 12.5
+\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt} % 14 on 18
+\def\LARGE{\@setsize\LARGE{19pt}\xvipt\@xvipt} % 16 on 19
+\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt} % 20 on 25
+\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt} % 25 on 30
+%\newfont{\qsmall}{mtr10 scaled 975} % 9.75pt rm, used in quotations
+%\newfont{\qsmall}{Times-Roman at 9.75pt} % 9.75pt rm, used in quotations
+\normalsize
+
+% ****************************************
+% * TRUESIZE *
+% ****************************************
+
+\def\ds@truesize{%
+%
+% define 10.5pt and 16pt
+\font\tenptfiverm = cmr10 at 10.5pt
+\font\tenptfiveit = cmti10 at 10.5pt
+\font\tenptfivemi = cmmi10 at 10.5pt
+ \skewchar\tenptfivemi ='177 % for placement of accents
+\font\tenptfivesy = cmsy10 at 10.5pt
+ \skewchar\tenptfivesy ='60 % for placement of math accents
+\font\tenptfivesl = cmsl10 at 10.5pt
+\font\tenptfivebf = cmbx10 at 10.5pt
+\font\tenptfivett = cmtt10 at 10.5pt
+ \hyphenchar\tenptfivett = -1 % suppress hyphenation in \tt font
+\font\tenptfivesf = cmss10 at 10.5pt
+\font\tenptfively = lasy10 at 10.5pt
+\font\tenptfiveex = cmex10 at 10.5pt
+
+\def\xptv{\textfont\z@\tenptfiverm
+ \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm
+\textfont\@ne\tenptfivemi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi
+\textfont\tw@\tenptfivesy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy
+\textfont\thr@@\tenptfiveex \scriptfont\thr@@\tenptfiveex \scriptscriptfont\thr@@\tenptfiveex
+\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath
+ \textfont\@ne\tenptfivemi
+ \textfont\tw@\tenptfivesy \textfont\lyfam\tenptfively
+ \@boldfalse}\@boldfalse
+\def\boldmath{\@ifundefined{tenptfivemib}{\global\font\tenptfivemib\@mbi
+ \global\font\tenptfivesyb\@mbsy
+ \global\font\tenptfivelyb\@lasyb\relax\@addfontinfo\@xptv
+ {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold
+ \textfont\@ne\tenptfivemib \textfont\tw@\tenptfivesyb
+ \textfont\lyfam\tenptfivelyb \@prtct\@boldtrue}}}{}\@xptv\boldmath}%
+\def\prm{\fam\z@\tenptfiverm}%
+\def\pit{\fam\itfam\tenptfiveit}\textfont\itfam\tenptfiveit \scriptfont\itfam\sevit
+ \scriptscriptfont\itfam\sevit
+\def\psl{\fam\slfam\tenptfivesl}\textfont\slfam\tenptfivesl
+ \scriptfont\slfam\tenptfivesl \scriptscriptfont\slfam\tenptfivesl
+\def\pbf{\fam\bffam\tenptfivebf}\textfont\bffam\tenptfivebf
+ \scriptfont\bffam\tenptfivebf \scriptscriptfont\bffam\tenptfivebf
+\def\ptt{\fam\ttfam\tenptfivett}\textfont\ttfam\tenptfivett
+ \scriptfont\ttfam\tenptfivett \scriptscriptfont\ttfam\tenptfivett
+\def\psf{\fam\sffam\tenptfivesf}\textfont\sffam\tenptfivesf
+ \scriptfont\sffam\tenptfivesf \scriptscriptfont\sffam\tenptfivesf
+\def\psc{\@getfont\psc\scfam\@xptv{\@mcsc}}%
+\def\ly{\fam\lyfam\tenptfively}\textfont\lyfam\tenptfively
+ \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly
+\@setstrut \rm}
+
+\def\@xptv{}
+
+% sixteen point
+ \font\sxtnrm = cmr10 at 16pt % roman MR(6.3.91)
+%% \font\sxtnmi = mtmi10 at 16pt % math italic
+%% \skewchar\sxtnmi ='177 % for placement of accents
+%\font\sxtnmib = mtmib10 at 16pt % bold math italic
+%% \font\sxtnsy = mtsy10 at 16pt % math symbols
+%% \skewchar\sxtnsy ='60 % for placement of math accents
+%\font\sxtnsyb = mtbsy10 at 16pt % bold symbols
+%\font\sxtnit = mtti10 at 16pt % text italic
+%\font\sxtnsl = mtsl10 at 16pt % slanted
+ \font\sxtnbf = cmbx10 at 16pt % extended bold
+%\font\sxtnbfs = mtbxsl10 at 16pt % extended bold slanted
+%\font\sxtntt = mttt10 at 16pt % typewriter
+%\font\sxtntti = mtitt10 at 16pt % italic typewriter
+%\font\sxtntts = mtsltt10 at 16pt % slanted typewriter
+%\font\sxtnsf = mtss10 at 16pt % sans serif
+%\font\sxtnsfi = mtssi10 at 16pt % italic sans serif
+%\font\sxtnsfb = mtssbx10 at 16pt % bold sans serif
+%\font\sxtnsc = mtcsc10 at 16pt % small caps
+%% \font\sxtnly = lasy10 at 16pt % LaTeX symbols
+%\font\sxtnlyb = lasyb10 at 16pt % bold LaTeX symbols
+%\font\sxtnuit = mtu10 at 16pt % unslanted italic
+
+\def\xvipt{\textfont\z@\sxtnrm
+ \scriptfont\z@\twlrm \scriptscriptfont\z@\tenrm
+%%\textfont\@ne\sxtnmi \scriptfont\@ne\twlmi \scriptscriptfont\@ne\tenmi
+%%\textfont\tw@\sxtnsy \scriptfont\tw@\twlsy \scriptscriptfont\tw@\tensy
+%%\textfont\thr@@\tenex \scriptfont\thr@@\tenex \scriptscriptfont\thr@@\tenex
+%%\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath
+%% \textfont\@ne\sxtnmi \textfont\tw@\sxtnsy \textfont\lyfam\sxtnly
+%% \@boldfalse}\@boldfalse
+%%\def\boldmath{\@subfont\boldmath\unboldmath}%
+\def\prm{\fam\z@\sxtnrm}%
+%%\def\pit{\@getfont\pit\itfam\@xvipt{mtti10\@magscale3}}%
+%%\def\psl{\@getfont\psl\slfam\@xvipt{mtsl10\@magscale3}}%
+\def\pbf{\fam\bffam\sxtnbf}\textfont\bffam\sxtnbf
+ \scriptfont\bffam\twlbf \scriptscriptfont\bffam\tenbf
+%%\def\ptt{\@getfont\ptt\ttfam\@xvipt{mttt10\@magscale3}\@nohyphens
+%% \ptt\@xvipt}%
+%%\def\psf{\@getfont\psf\sffam\@xvipt{mtss16}}%
+%%\def\psc{\@getfont\psc\scfam\@xvipt{\@mcsc\@magscale3}}%
+%%\def\ly{\fam\lyfam\sxtnly}\textfont\lyfam\sxtnly
+%% \scriptfont\lyfam\twlly \scriptscriptfont\lyfam\tenly
+\@setstrut \rm}
+
+\def\@xvipt{}
+
+% overwrite sixteenpoint
+\let\xvipt\xvipt
+\let\@xvipt\@xvipt
+
+\def\@normalsize{\@setsize\normalsize{12pt}\xptv\@xptv% 10.5 on 12
+ \abovedisplayskip 6.5pt plus 1pt minus 1pt
+ \belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 3pt plus 1pt
+ \belowdisplayshortskip \abovedisplayshortskip}
+} % end of ds@truesize
+
+\@options
+%
+ % ****************************************
+% * PAGE LAYOUT *
+% ****************************************
+%
+% SIDE MARGINS:
+\oddsidemargin 2pc
+\evensidemargin 2pc
+\marginparwidth 2.0cm
+\marginparsep 10pt
+
+% VERTICAL SPACING:
+\topmargin 2.5pc
+\headheight 12pt
+\headsep 8pt
+\topskip 12pt
+\footheight 8pt
+\footskip 18pt
+\newskip\halflineskip
+\halflineskip=6pt plus .5pt minus .5pt
+%\newskip\affilskip % used by authors to separate affiliations on title page
+%\affilskip=3pt
+
+% DIMENSION OF TEXT:
+\textheight = 48\baselineskip \advance\textheight by \topskip
+\textwidth 32pc
+\columnsep 10pt
+\columnseprule 0pt
+
+% FOOTNOTES:
+\footnotesep 2pt% % space between footnotes
+\skip\footins 18pt plus 1pt% % space between text and first note
+
+% FLOATS:
+%\def\topfigrule{\vskip\floatsep\hbox{\rule{\textwidth}{.4pt}}\vskip-\floatsep}
+\floatsep 10pt plus 2pt minus 1pt
+\textfloatsep=1.4\floatsep
+\intextsep\floatsep
+\@maxsep 15pt
+\dblfloatsep\floatsep
+\dbltextfloatsep\floatsep
+\@dblmaxsep 15pt
+\@fptop 0pt plus 0fil
+\@fpsep 10pt plus 0fil
+\@fpbot 0pt plus 3fil
+\@dblfptop 0pt plus 0fil
+\@dblfpsep 10pt plus 0fil
+\@dblfpbot 0pt plus 3fil
+\marginparpush 5pt
+
+ % ****************************************
+% * PARAGRAPHING *
+% ****************************************
+%
+\parskip \z@ plus .3pt
+\parindent 1em
+\partopsep 0pt plus 1pt
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+\clubpenalty=0
+\widowpenalty=10000
+
+ % ****************************************
+% * PARTS *
+% ****************************************
+%
+\def\part{\par \addvspace{4ex}\@afterindentfalse
+ \secdef\@part\@spart}
+\def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}
+ \addcontentsline{toc}{part}{Part \thepart: #1}
+ \else \addcontentsline{toc}{part}{#1}
+ \fi
+ {\parindent 0pt \centering %changed ggw
+ \ifnum \c@secnumdepth >\m@ne
+ \large\rm PART
+ \ifcase\thepart \or ONE \or TWO \or THREE \or FOUR \or FIVE
+ \or SIX \or SEVEN \or EIGHT \or NINE \or TEN \else \fi
+ \par \nobreak
+ \fi
+ \LARGE \rm #2 \markboth{}{}\par }
+ \nobreak \vskip 3ex \@afterheading}
+\def\@spart#1{{\parindent 0pt \centering % changed ggw
+ \LARGE \rm #1\par}
+ \nobreak \vskip 3ex \@afterheading}
+
+ % ****************************************
+% * SECTIONS *
+% ****************************************
+%
+\def\section{\setcounter{equation}{0}
+ \@startsection {section}{1}{\z@}
+ {19pt plus 2pt minus 1pt}% beforeskip; neg = suppress indent
+ {6pt plus .5pt minus .3pt}% afterskip
+ {\centering\large\bf}}% style
+\def\subsection{\@startsection{subsection}{2}{\z@}
+ {9pt plus 1pt minus 1pt}
+ {3pt plus .1pt minus .1pt}
+ {\centering\normalsize\it}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}
+ {9pt plus 1pt minus 1pt}
+ {3pt plus .1pt minus .1pt}
+ {\raggedright\normalsize\it}}
+\def\paragraph{}
+\def\subparagraph{}
+%
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \def\@svsec{}%
+ \else
+ \refstepcounter{#1}
+ \ifnum #2=1
+ \edef\@svsec{\ifappendix Appendix \fi\csname the#1\endcsname.\hskip 0.5em}
+ \fi
+ \ifnum #2=2
+ \edef\@svsec{{\rm(}\csname the#1\endcsname{\rm)}\hskip 0.5em}
+ \fi
+ \ifnum #2=3
+ \edef\@svsec{{\rm(\csname the#1\endcsname)}\hskip 0.5em}
+ \fi
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup #6\relax
+ \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \ifnum #2=1% sections only
+ \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \ifappendix\protect\hskip\@tempdima Appendix~\csname the#1\endcsname.\ \ #7%
+ \else \protect\numberline{\csname the#1\endcsname.}#7\fi\fi}
+% \protect\numberline{\csname the#1\endcsname.}\ifappendix\else #7\fi\fi}
+ \else
+ \addcontentsline{toc}{#1}{\ifnum #2>2 \else
+ \protect\numberline{{\rm(}{\it\csname the#1\endcsname}{\rm)}}#7\fi}
+ \fi
+ \else %
+ \def\@svsechd{#6\hskip #3\@svsec #8\csname #1mark\endcsname {#7}
+ \addcontentsline{toc}{#1}{\ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname.}\fi#7}
+ }%
+ \fi
+ \@xsect{#5}}
+
+\newif\ifappendix \appendixfalse
+\def\appendix{\par
+ \setcounter{section}{0}
+ \def\thesection{\Alph{section}}
+ \def\thesubsection{\alph{subsection}}
+ \def\thesubsubsection{\roman{subsubsection}}
+ \def\theequation{{\rm \thesection}\ls\arabic{equation}}
+ \appendixtrue}
+
+\setcounter{secnumdepth}{3} % number sections, subsections and subsubsections
+ % but not paragraphs or subparagraphs.
+
+ % ****************************************
+% * PART & SECTION NUMBERS *
+% ****************************************
+%
+% from home:
+\newcounter{part}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+%\newcounter {subparagraph}[paragraph]
+\def\thepart {\arabic{part}}
+\def\thesection {\arabic{section}}
+\def\thesubsection {\alph{subsection}}
+\def\thesubsubsection {\roman{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+%\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+ % ****************************************
+% * SKIPS *
+% ****************************************
+%
+\newskip\@indentskip
+\newskip\smallindent
+\newskip\@footindent
+\newskip\@leftskip
+\@indentskip=2.5em
+\smallindent=1em
+\@footindent=\smallindent
+\@leftskip=\z@
+
+ % ****************************************
+% * LISTS *
+% ****************************************
+%
+\leftmargini\z@
+\labelsep\z@
+\labelwidth\z@
+%
+%\def\makeitemlabel#1{\hspace\labelwidth\hspace\labelsep\hfill #1}
+\def\makeitemlabel#1{\hfill #1}
+%
+% set leftmargin to labelwidth + labelsep of OUTER list:
+\def\@listI{\parsep\z@ \topsep\z@ \partopsep\z@ \itemsep\z@ \rightmargin\z@
+ \leftmargin\labelwidth \advance\leftmargin\labelsep}
+\def\@listi{\@listI \leftmargin\leftmargini \itemindent 1em}
+\def\@listii{\@listI \advance\leftmargin 1em}
+\def\@listiii{\@listI}
+\def\@listiv{\@listI}
+\def\@listv{\@listI}
+\def\@listvi{\@listI}
+\@listi
+%
+% ITEMIZE
+\def\itemize{\ifnum \@itemdepth >3 \@toodeep
+ \else \advance\@itemdepth \@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \list{\csname\@itemitem\endcsname}%
+ {\labelsep .5em \settowidth{\labelwidth}{\csname\@itemitem\endcsname}
+ \let\makelabel\makeitemlabel}%
+ \fi}
+\def\labelitemi{$\bullet$} % ggw
+\def\labelitemii{$\circ$}
+\def\labelitemiii{---} % ggw
+\def\labelitemiv{--} % ggw
+%
+% ENUMERATE
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep
+ \else \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi
+ \@ifnextchar [{\@enumeratetwo}{\@enumeratetwo[i]}}
+\def\@enumeratetwo[#1]{%
+ \list{\csname label\@enumctr\endcsname}%
+ {\settowidth\labelwidth{#1} \labelsep .5em
+ \advance\itemindent\labelsep \advance\itemindent\labelwidth
+ \usecounter{\@enumctr}}}
+%
+\def\labelenumi{(\theenumi)}
+\def\theenumi{\roman{enumi}}
+\def\labelenumii{({\it\theenumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi.\theenumii}
+\def\labelenumiii{\theenumiii.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\p@enumii.\theenumiii}
+\def\labelenumiv{\theenumiv}
+\def\theenumiv{\roman{enumiv}}
+\def\p@enumiv{\p@enumiii.\theenumiv}
+%
+% DESCRIPTION
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@%\itemindent-\leftmargin
+ \ifnum\@listdepth=1\else\advance\leftmargin 1em\fi
+ \let\makelabel\descriptionlabel}}
+\let\enddescription\endlist
+%
+%
+ % ****************************************
+% * DISPLAYED TEXT *
+% ****************************************
+%
+% VERSE
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@
+ \itemindent -\@indentskip
+ \listparindent \itemindent
+ \rightmargin\leftmargin
+ \advance\leftmargin \@indentskip}\item[]}
+\let\endverse\endlist
+%
+% QUOTATION
+\def\quotation{\list{}{\listparindent\smallindent
+ \itemindent\listparindent
+ \leftmargin 1em\rightmargin\leftmargin
+ \topsep\halflineskip
+ \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+%
+% QUOTE
+\let\quote\quotation
+%\def\quote{\par\list{}{\leftmargin\z@\rightmargin\leftmargin}\item[]%
+% \small\rule{0pt}{10pt}\ignorespaces}
+\let\endquote=\endlist
+
+% ****************************************
+% * OTHER ENVIRONMENTS *
+% ****************************************
+%
+% THEOREM
+% The following modifies two internal routines called by Latex's
+% \newtheorem command, which RS.sty users are encouraged to use
+% for their own purposes, such as creating Lemma 1.2, etc.
+%
+\newenvironment{definition}{\par\addvspace{\halflineskip}
+\refstepcounter{theorem}{\it Definition~\thetheorem}.\hskip.5em\ignorespaces}%
+{\vskip\halflineskip\par}
+%
+\def\@begintheorem#1#2{\par\addvspace{\halflineskip}{\bf #1\ #2.}\hskip.5em\sl}
+\def\@opargbegintheorem#1#2#3{\par\vskip\halflineskip
+ {\bf #1\ #2.\ {\rm (#3)}.}\hskip.5em\sl}
+\def\@endtheorem{\vskip\halflineskip\par}
+%
+% PROOF
+\newsavebox{\proofbox}
+\sbox{\proofbox}{\rule{7pt}{7pt}}
+%\def\proof{\list{}{\topsep\halflineskip \labelwidth\z@ \labelsep .5em
+% \let\makelabel\makeitemlabel} \item[{\it Proof.}]}
+%\def\endproof{\hspace*{\fill}\usebox{\proofbox}\endlist}
+\def\proof{\par\addvspace{\halflineskip} {\it Proof.}\hskip.5em\ignorespaces}
+\def\endproof{\hspace*{\fill}\usebox{\proofbox}\vskip\halflineskip\par}
+\@namedef{proof*}{\proof}
+\@namedef{endproof*}{\vskip\halflineskip\par}
+%
+% REMARK works like \newtheorem but without the ability to number,and
+% produces displayed paragraph in same style as proof.
+\def\newremark#1#2{\newenvironment{#1}{%
+ \list{}{\topsep\halflineskip \labelwidth\z@
+ \labelsep .5em\let\makelabel\makeitemlabel} \item[{\it #2.}]}{\endlist}}
+%
+% EQUATION and EQNARRAY
+%
+\def\theequation{\thesection.\arabic{equation}}
+%
+% \jot = 3pt % Extra space added between lines of an eqnarray environment
+% \def\@eqnnum{(\theequation)} % (the default in LaTeX)
+%
+% The following substitution causes \eqnarray to give same spacing
+% around =,>,<, etc. as in one-line equation.
+\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
+\global\@eqnswtrue
+\global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr
+$$\halign to \displaywidth\bgroup\@eqnsel\hskip\@centering
+ $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
+% \hskip 2\arraycolsep \hfil${##}$\hfil
+ \hfil${\;##\;}$\hfil
+% &\global\@eqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil
+ &\global\@eqcnt\tw@ $\displaystyle\tabskip\z@{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+%
+% TITLEPAGE
+%
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+\arraycolsep 5pt
+\tabcolsep 3pt % this is half the space between cols. in a tabular env. ggw
+\arrayrulewidth .5pt
+\doublerulesep 1.5pt
+\tabbingsep \labelsep
+%\skip\@mpfootins = \skip\footins
+\skip\@mpfootins = 0pt
+\fboxsep = 3pt
+\fboxrule = .5pt
+
+ % ****************************************
+% * TITLE AND ABSTRACT *
+% ****************************************
+%
+\def\affiliation#1{\gdef\@affiliation{#1}}
+\gdef\@affiliation{}
+
+\def\maketitle{\appendixfalse\@ifnextchar [{\m@ketitleone}{\m@ketitletwo}}%
+\def\m@ketitletwo{\m@ketitleone[n]}
+\def\m@ketitleone[#1]{
+ \par
+ \begingroup
+% no changes to footnoting necessary; keep at bottom of page -- jas
+% \def\thefootnote{\fnsymbol{footnote}}
+% \def\@makefnmark{\hbox to 0pt{${\@thefnmark}$\hss}}% fnmark now on line -- ggw
+ \newpage \global\@topnum\z@
+ \@maketitle{#1}\thispagestyle{titlepage} \@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax \let\@maketitle\relax \gdef\@affiliation{}
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+
+%\def\and{{\small\bf AND}\ } % not needed for Roy.Soc.
+
+\def\@maketitle#1{
+ \newpage
+ \vspace*{10pt}
+ {\centering \sloppy
+ {\LARGE\bf \@title \par}
+ \vskip 16pt plus 2pt minus 1pt
+ {\sc B\ls y\ls\ \@author \par}
+ \vskip 3pt plus 1pt
+ {\it \@affiliation \par}
+ \par}
+ \vskip 20pt plus 2pt minus 1pt
+}
+
+\def\abstract{\par\normalsize\noindent\ignorespaces}
+\def\endabstract{\par\vskip 9pt plus 1pt minus 1pt
+ \vbox{\centerline{\rule[4pt]{30pc}{.4pt}}}\vskip 9pt plus 1pt minus 1pt\par}
+
+ % ****************************************
+% * PAGE STYLES *
+% ****************************************
+%
+\mark{{}{}}
+\gdef\@author{\mbox{}}
+\def\author{\@ifnextchar [{\@authortwo}{\@authorone}}
+% make \and a simple 'and' for \@shortauthor
+\def\@authortwo[#1]#2{\gdef\@author{#2}\gdef\@shortauthor{#1}}
+\def\@authorone#1{\gdef\@author{#1}
+ \begingroup\def\and{and}\gdef\@shortauthor{#1}\endgroup}
+\def\shortauthor#1{\gdef\@shortauthor{#1}}
+\gdef\@shortauthor{}
+\gdef\@title{\mbox{}} % SFB 0.96
+\def\title{\@ifnextchar [{\@titletwo}{\@titleone}}
+\def\@titletwo[#1]#2{\gdef\@title{#2}\gdef\@shorttitle{#1}}
+\def\@titleone#1{\gdef\@title{#1}\gdef\@shorttitle{#1}}
+\def\shorttitle#1{\gdef\@shorttitle{#1}}
+\gdef\@shorttitle{}
+%
+\def\series#1{\gdef\@series{#1}}
+\gdef\@series{A}
+\def\year#1{\gdef\@year{#1}}
+\gdef\@year{1993}
+\def\volume#1{\gdef\@volume{#1}}
+\gdef\@volume{11}
+\def\pagerange#1{\gdef\@pagerange{#1}}
+\gdef\@pagerange{1--000}
+\newsavebox{\RSfootbox}
+\sbox{\RSfootbox}{\footnotesize{\it\@journal}\ \rm\@series\ (\@year)}
+\def\ps@headings{\let\@mkboth\markboth
+ \def\@oddhead{\phantom{\rm \thepage}\hfil\it \@shorttitle \hfil\rm \thepage}
+ \def\@oddfoot{\usebox{\RSfootbox}\hfil}
+ \def\@evenhead{\rm \thepage \hfil \it \@shortauthor \hfil\phantom{\rm \thepage}}
+ \def\@evenfoot{\@oddfoot}
+ \def\sectionmark##1{\markboth{##1}{}}
+ \def\subsectionmark##1{\markright{##1}}}
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+ \def\@oddhead{\it \rightmark \hfill \rm \thepage}
+ \def\@oddfoot{}
+ \def\@evenhead{\it \leftmark \hfill \rm \thepage}
+ \def\@evenfoot{}
+ \def\sectionmark##1{}
+ \def\subsectionmark##1{}}
+\def\ps@titlepage{\let\@mkboth\@gobbletwo
+ \def\@oddfoot{\raisebox{0pt}[8pt][0pt]{%
+ \parbox[t]{\textwidth}{\footnotesize\usebox{\RSfootbox} {\bf\@volume},
+ {\rm \@pagerange} \hfill {\rm\copyright\ \@year\ The Royal
+ Society}\\[2pt] \makebox[0pt][l]{\it Printed in Great Britain} \hfil
+ {\small\rm\thepage} \hfil}}}
+ \def\@oddhead{}\def\@evenhead{}\let\@evenfoot\@oddfoot
+ \def\sectionmark##1{}\def\subsectionmark##1{}}
+
+ % ****************************************
+% * TABLE OF CONTENTS, ETC. *
+% ****************************************
+%
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{2}
+%\@undottedtocline{LEVEL}{INDENT}{NUMWIDTH}{TITLE}{PAGE}
+\def\@undottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth
+ \else
+ \vskip \z@ plus .2pt
+ {\hangindent #2\relax
+ \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax \@afterindenttrue
+ \interlinepenalty\@M \leavevmode
+ \@tempdima #3\relax {\rm #4}\nobreak \hfill \nobreak
+ \hbox to\@pnumwidth{\hfil\rm #5}\par}\fi} % page number added -- ggw
+\def\tableofcontents{\@restonecolfalse
+ \if@twocolumn\@restonecoltrue\onecolumn\fi
+ \vskip 4pt plus .5pt
+ \centerline{\large\bf Contents} \mbox{}\hfill {\sc page}
+ \vskip 2pt
+ \@starttoc{toc}
+ \if@restonecol\twocolumn\fi \par\vspace{12pt}}
+%
+\def\l@section#1#2{\addpenalty{\@secpenalty}
+ \@tempdima 1.5em
+ \begingroup
+ \parindent\z@ \rightskip\@pnumwidth \parfillskip -\@pnumwidth
+ \rm\leavevmode \advance\leftskip\@tempdima
+ \hskip-\leftskip {#1}\nobreak\hfil
+ \nobreak\hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+\def\l@subsection{\@undottedtocline{2}{1.5em}{1.6em}}
+\def\l@subsubsection{\@undottedtocline{3}{3.8em}{3.2em}}
+%
+% The following are irrelevant for RS -- jas
+% \def\l@paragraph{\@undottedtocline{4}{7.0em}{4.1em}}
+% \def\l@subparagraph{\@undottedtocline{5}{10em}{5em}}
+% \def\listoffigures{\@restonecolfalse
+% \if@twocolumn\@restonecoltrue\onecolumn\fi
+% \section*{List of Figures}% altered -- ggw
+% \@starttoc{lof} \if@restonecol\twocolumn\fi}
+% \def\l@figure{\@undottedtocline{1}{1.5em}{2.3em}}
+% \def\listoftables{\@restonecolfalse
+% \if@twocolumn\@restonecoltrue\onecolumn\fi
+% \section*{List of Tables}% altered -- ggw
+% \@starttoc{lot} \if@restonecol\twocolumn\fi}
+% \let\l@table\l@figure
+
+ % ****************************************
+% * THE INDEX *
+% ****************************************
+%
+\newif\if@restonecol
+\def\theindex{\section*{Index} % changed to U&LC -- ggw
+ \addcontentsline{toc}{section}{Index}
+ \footnotesize \parindent\z@ \parskip\z@ plus .1pt\relax
+ \let\item\@idxitem}
+\def\@idxitem{\par\hangindent 1em}
+\def\subitem {\par\hangindent 1em \hspace*{1em}}
+\def\subsubitem{\par\hangindent 1em\hspace*{1em}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par\vskip\baselineskip \relax}
+
+ % ****************************************
+% * FOOTNOTES *
+% ****************************************
+%
+%\def\footnoterule{}
+\def\footnoterule{\setcounter{footnote}{0}}% To force numbering to start
+% at 1 on each page. Works because numbers are
+% assigned at occurrence of the \footnote{} command; this
+% resets counter after they are printed. This might not work
+% if next footnote falls close enough to page break to have
+% already been 'digested'. --jas
+\def\@makefntext#1{\hskip1em\@thefnmark\hskip.5em\ignorespaces #1}
+\def\@fnsymbol#1{\ifcase#1\or \dag\or \ddag\or \P\or \|\or
+ \dag\dag\or \ddag\ddag\or \P\P\or \|\| \else\@ctrerr\fi\relax}
+% \@makefnmark : A macro to generate the footnote marker from \@thefnmark
+% The default is \hbox{$^\@thefnmark$}, i.e., raised.
+\def\@makefnmark{\hbox{\@thefnmark}}% used in text
+\def\thempfootnote{\hbox{$^\alph{mpfootnote}$}}% have to change this because we
+ %do want minipage footnote marks to be raised (since they are
+ %alphabetic and not symbols).
+
+ % ****************************************
+% * FIGURES AND TABLES *
+% ****************************************
+%
+\setcounter{topnumber}{3}
+\def\topfraction{.9}
+\setcounter{bottomnumber}{0}
+\def\bottomfraction{.9}
+\setcounter{totalnumber}{3}
+\def\textfraction{.1}
+\def\floatpagefraction{.9}
+\setcounter{dbltopnumber}{3}
+\def\dbltopfraction{.9}
+\def\dblfloatpagefraction{.5}
+%
+\long\def\@makecaption#1#2{\vskip3pt\begingroup\small
+ \setbox\@tempboxa\hbox{{\rm #1.} \fcap@type #2}
+ \ifdim \wd\@tempboxa >2\hsize \parbox{\textwidth}{\unhbox\@tempboxa}
+ \else {\centering \unhbox\@tempboxa\par} \fi \endgroup\vskip3pt}
+%
+\newcounter{table}
+\def\thetable{\@arabic\c@table}
+\def\fps@table{tp}
+\def\ftype@table{1}
+\def\ext@table{lot}
+\def\fnum@table{Table~\thetable}
+%\def\table{\@float{table}\rule[4pt]{\textwidth}{.4pt} \vskip\floatsep}
+\def\table{\let\fcap@type\it \@float{table}\small}
+\def\plaintable{\@float{table}}
+\let\endplaintable\end@float
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+\def\fstyle@table{\small\rm}
+\def\fjust@table{\centering}%changed ggw
+\def\fcapjust@table{\centering} %changed ggw
+\def\fcapsize@table{\small\rm}
+\def\fcapstyle@table{\small\it}
+%
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tp}
+\def\ftype@figure{2}
+\def\ext@figure{lof}
+\def\fnum@figure{Figure~\thefigure}
+\def\figure{\let\fcap@type\rm \@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+\def\fstyle@figure{\small\rm}
+\def\fjust@figure{\centering}
+\def\fcapjust@figure{\centering}% changed ggw
+\def\fcapsize@figure{\small\rm}
+\def\fcapstyle@figure{\small\rm}
+\newif\ifwide@float
+\wide@floatfalse
+%
+%\@caption{TYPE}[STEXT]{TEXT}
+\def\@dblfloat{\wide@floattrue\@float}
+\def\end@dblfloat{\if@twocolumn\egroup
+ \ifnum\@floatpenalty <\z@ \@cons\@dbldeferlist\@currbox\fi
+ \ifnum \@floatpenalty =-\@Mii \@esphack\fi\else\end@float\fi
+ \wide@floatfalse}
+
+%this is to preserve the old tabular environment in case it is needed
+\let \oldtabular \tabular
+\let \endoldtabular \endtabular
+
+\def\tabular{\def\@halignto{to \textwidth}\tabskip=\tabcolsep plus 1fil\@tabular}
+% This fixes tabular things so that they are full out l and r; the \tabskip setting
+% is to put tabskip before the first column.
+% The following is to adjust the intercolumn spacing to put in
+% enough stretch. ggw
+\def\@tabarray{\@ifnextchar[{\@tarray}{\@ttarray}}
+\def\@tarray[#1]#2{\t@barray[#1]{@{\tabskip=2\tabcolsep plus 3pt}
+ #2}}
+\def\@ttarray#1{\t@barray[c]{@{\tabskip=2\tabcolsep plus 3pt}
+ #1 }}
+\def\t@barray[#1]#2{\setbox\@arstrutbox=\hbox{\vrule
+ height\arraystretch \ht\strutbox
+ depth\arraystretch \dp\strutbox
+ width\z@}\@mkpream{#2}\edef\@preamble{\halign \noexpand\@halignto
+\bgroup \tabskip\z@ \@arstrut \@preamble \tabskip=\tabcolsep plus 1fil \cr}%
+\let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
+ \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
+ \bgroup \let\par\relax
+ \let\@sharp##\let\protect\relax \lineskip\z@\baselineskip\z@\@preamble}
+
+ % ****************************************
+% * CUP specials *
+% ****************************************
+%
+\def\ls{\kern.15em} % for letterspacing; .15em is a hair less than thinspace
+\renewcommand{\thefootnote}{\mbox{$\fnsymbol{footnote}$}}
+\def\sect#1{\hbox{\S\ls{#1}}} % for a section mark
+\def\hline{\noalign{\ifnum0=`}\fi \vskip 6pt
+ \hrule \@height \arrayrulewidth \vskip 6pt
+ \futurelet \@tempa\@xhline}
+\def\@xhline{\ifx\@tempa\hline \vskip -12pt
+ \vskip \doublerulesep \fi \ifnum0=`{\fi}}
+\newenvironment{acknowledgments}{
+ \par\addvspace{\halflineskip}\noindent\small\ignorespaces}{\par}
+\def\discussion{\par\addvspace{22pt plus 1pt minus 1pt}
+ \centerline{{\it Discussion}} \vskip4pt}
+\def\comment{\par\addvspace{12pt}\noindent\ignorespaces}
+\def\received#1{\par\addvspace{\halflineskip}\centerline{\footnotesize\it #1}}
+ % ****************************************
+% * MISCELLANEOUS *
+% ****************************************
+%
+\def\today{\number\day\ \ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December
+ \fi \ \year}
+
+ % ****************************************
+% * BIBLIOGRAPHY *
+% ****************************************
+% the immediately following code is taken from MSCS.sty, somewhat modified.
+\def\@biblabel#1{#1}
+\def\thebibliography#1{\par\section*{References}
+ \addcontentsline{toc}{section}{\hskip\@tempdima References}
+ \list{}{\labelwidth\z@ \leftmargin 1em \itemindent -1em \itemsep 1pt}
+ \small \parindent\z@
+%\parskip\z@ plus .1pt\relax
+ \parskip 1.5pt plus .1pt\relax
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+%
+% The following code is taken from authordate.sty, by David Rhead, of
+% the Cripps Computing Centre (February 1990), with some modifications
+% by ggw. It is intended for documents
+% that use the author-date citation system. When used in conjunction with
+% authordate1.bst, ... , authordate4.bst, it allows citations of the
+% form \shortcite{bloggs-60} as well as the usual \cite{bloggs-60}.
+% When
+% ... \cite{bloggs-60} ... \shortcite{bloggs-60} ...
+% appears in the input file,
+% ... (Bloggs, 1960) ... (1960) ...
+% appears in the final document.
+%
+% Code taken from apalike.sty.
+%
+\def\@cite#1#2{(#1\if@tempswa , #2\fi)}
+\def\@biblabel#1{}
+
+% Set length of hanging indentation for bibliography entries
+%
+\newlength{\bibhang}
+\setlength{\bibhang}{1em}
+
+% Define default title and page-head text.
+%
+\def\bibtitle{References}
+\def\bibheadtitle{REFERENCES}
+
+% Code taken from aaai.sty.
+%
+% don't box citations, add space between multiple citations, separate with ;
+\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}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}
+% Allow short (name-less) citations, when used in
+% conjunction with a bibliography style that creates labels like
+% \citename{<names>, }<year>
+\let\@internalcite\cite
+\def\cite{\def\citename##1{##1}\@internalcite}
+\def\shortcite{\def\citename##1{}\@internalcite}
+
+% ****************************************
+% * INITIALIZATION *
+% ****************************************
+%
+\ps@headings
+\pagenumbering{arabic}
+\onecolumn \let\onecolumn=\relax
+\def\twocolumn{\typeout{Two column mode not available with RS style.}}
+\flushbottom
+\frenchspacing
+\def\>{\kern .1em}
+\def\bm #1{\mbox{\boldmath $#1$}}
+\def\smfr #1#2{{\textstyle\frac{#1}{#2}}}
+\def\shove{\hskip10000pt minus 1fil}
+%
+% *************************************
+% ********** AMS SYMBOLS ************
+% *************************************
+%
+\font\tenmsx=msxm10 scaled \magstep1
+\font\sevenmsx=msxm8
+\font\fivemsx=msxm6
+\font\tenmsy=msym10 scaled \magstep1
+\font\sevenmsy=msym8
+\font\fivemsy=msym6
+
+\newfam\msxfam
+\newfam\msyfam
+\textfont\msxfam=\tenmsx \scriptfont\msxfam=\sevenmsx
+ \scriptscriptfont\msxfam=\fivemsx
+\textfont\msyfam=\tenmsy \scriptfont\msyfam=\sevenmsy
+ \scriptscriptfont\msyfam=\fivemsy
+
+\def\hexnumber@#1{\ifnum#1<10 \number#1\else
+ \ifnum#1=10 A\else\ifnum#1=11 B\else\ifnum#1=12 C\else
+ \ifnum#1=13 D\else\ifnum#1=14 E\else\ifnum#1=15 F\fi\fi\fi\fi\fi\fi\fi}
+
+\def\msx@{\hexnumber@\msxfam}
+\def\msy@{\hexnumber@\msyfam}
+\mathchardef\boxdot="2\msx@00
+\mathchardef\boxplus="2\msx@01
+\mathchardef\boxtimes="2\msx@02
+\mathchardef\square="0\msx@03
+\mathchardef\blacksquare="0\msx@04
+\mathchardef\lozenge="0\msx@06
+\mathchardef\blacklozenge="0\msx@07
+\mathchardef\boxminus="2\msx@0C
+\mathchardef\geqslant="3\msx@3E
+\mathchardef\leqslant="3\msx@36
+\mathchardef\vartriangleright="3\msx@42
+\mathchardef\vartriangleleft="3\msx@43
+\mathchardef\blacktriangledown="0\msx@48
+\mathchardef\blacktriangleright="3\msx@49
+\mathchardef\blacktriangleleft="3\msx@4A
+\mathchardef\blacktriangle="0\msx@4E
+\mathchardef\triangledown="0\msx@4F
+\mathchardef\hslash="0\msy@7D
+%
+% Redefine two relation symbols \leq and \geq
+%
+\def\leq{\leqslant}
+\def\geq{\geqslant}
+%
+% Newcommands defining shapes
+%
+\newcommand{\triright}{\vartriangleright}
+\newcommand{\trileft}{\vartriangleleft}
+\newcommand{\btridown}{\blacktriangledown}
+\newcommand{\btriright}{\blacktriangleright}
+\newcommand{\btrileft}{\blacktriangleleft}
+\newcommand{\btriup}{\blacktriangle}
+\newcommand{\triup}{\bigtriangleup}
+\newcommand{\tridown}{\triangledown}
+\newcommand{\bsquare}{\blacksquare}
+\newcommand{\blozenge}{\blacklozenge}
diff --git a/macros/latex209/contrib/misc/rssconf.sty b/macros/latex209/contrib/misc/rssconf.sty
new file mode 100644
index 0000000000..cbf4c50db8
--- /dev/null
+++ b/macros/latex209/contrib/misc/rssconf.sty
@@ -0,0 +1,31 @@
+% --------------------------------------------------------------------------
+% R S S C O N F -- style option for RSS Conference proceedings
+% --------------------------------------------------------------------------
+% Version 1.00--0 Adrian F Clark <alien@uk.ac.essex> 22-Jun-1993
+% --------------------------------------------------------------------------
+
+\typeout{RSS Conference Proceedings style v1.00--0 22-Jun-1993}
+
+
+% Page dimensions.
+
+\parindent 15pt % paragraph indent
+\parskip 0pt plus 1pt minus 1pt % paragraph skip
+
+\textheight 252mm % height of text on a page
+\textwidth 164mm % total width of a page
+\oddsidemargin 5mm % shift the page rightwards
+\evensidemargin 5mm % shift the page rightwards
+\topmargin -7mm % shift the page upwards
+\headheight 0pt % no running heads...
+\headsep 0pt % ...so no separation from text
+\marginparwidth 48pt % don't use marginal notes...
+\marginparsep 10pt % ...in conference proceedings
+
+
+\def\abstract{\section*{Abstract}}
+\def\endabstract{\par}
+
+\pagestyle{empty} % no page numbers
+
+% End of rssconf.sty.
diff --git a/macros/latex209/contrib/misc/sc21-wg1.sty b/macros/latex209/contrib/misc/sc21-wg1.sty
new file mode 100644
index 0000000000..c52003945d
--- /dev/null
+++ b/macros/latex209/contrib/misc/sc21-wg1.sty
@@ -0,0 +1,64 @@
+% ISO/TC97/SC21 DOCUMENT-STYPE OPTION - Wed May 20 17:07:56 BST 1987
+%
+% derived from
+%
+% TITLEPAGE DOCUMENT-STYLE OPTION - released 27 January 1985
+% for LaTeX version 2.09
+% Copyright (C) 1985 by Leslie Lamport
+%
+% This style option produces a cover page appropriate for
+% ISO/TC97/SC21 documents.
+%
+% In addition to the normal \title, \author (will give rise to the
+% source of the document) and \date commands, three further values
+% should be set. These are:
+%
+% \nnumber{NNN}
+% The N Number of the document. Put something like \nnumber{\sl XXXX},
+% if you are not sure of the number.
+%
+% \project{Project Reference}
+% The project reference for the document. For example,
+% \project{97.21.23} or \project{97.21.9 Q45}
+%
+% \status{Document Status}
+% For example \status{UK Position} or \status{UK Expert Contribution}
+
+\def\nnumber#1{\def\@nnumber{{#1}}} \nnumber{\em NNNN}
+\def\project#1{\def\@project{{#1}}} \project{\em 97.21.NN}
+\def\status#1{\def\@status{{#1}}} \status{\em status unset}
+
+\def\maketitle{\begin{titlepage}
+ \setcounter{page}{0}
+ \begin{flushright}
+ \shortstack[l]{ ISO/TC 97/SC 21 N {\LARGE \bf \@nnumber} \\
+ {\sl Project: \@status} \\
+ Date: \@date}
+ \end{flushright}
+ \vfil
+ \begin{center}
+ {\LARGE I S O } \\[3ex]
+ {\Large \sc International Organisation for Standardisation } \\[2ex]
+ {\Large \sc Organisation Internationale de Normalisation } \\[5ex]
+ \fbox{
+ \shortstack{
+ {\Huge ISO/TC 97/SC 21} \\[1ex]
+ {\Huge WG 1} \\[2ex]
+ {\LARGE OSI --- Architecture}
+ }
+ }
+ \end{center}
+ \vskip 70pt % To adjust centering.
+ \begin{Large}
+ \begin{description}
+ \item[TITLE:] \@title
+ \item[SOURCE:] \@author
+ \item[DATE:] \@date
+ \item[PROJECT:] \@project
+ \item[STATUS:] \@status
+ \end{description}
+ \end{Large}
+ \vfil
+\null
+\end{titlepage}
+}
diff --git a/macros/latex209/contrib/misc/sc21.sty b/macros/latex209/contrib/misc/sc21.sty
new file mode 100644
index 0000000000..41f7206f1f
--- /dev/null
+++ b/macros/latex209/contrib/misc/sc21.sty
@@ -0,0 +1,65 @@
+% ISO/TC97/SC21 DOCUMENT-STYPE OPTION - Wed May 20 17:07:56 BST 1987
+%
+% derived from
+%
+% TITLEPAGE DOCUMENT-STYLE OPTION - released 27 January 1985
+% for LaTeX version 2.09
+% Copyright (C) 1985 by Leslie Lamport
+%
+% This style option produces a cover page appropriate for
+% ISO/TC97/SC21 documents.
+%
+% In addition to the normal \title, \author (will give rise to the
+% source of the document) and \date commands, three further values
+% should be set. These are:
+%
+% \nnumber{NNN}
+% The N Number of the document. Put something like \nnumber{\sl XXXX},
+% if you are not sure of the number.
+%
+% \project{Project Reference}
+% The project reference for the document. For example,
+% \project{97.21.23} or \project{97.21.9 Q45}
+%
+% \status{Document Status}
+% For example \status{UK Position} or \status{UK Expert Contribution}
+
+\def\nnumber#1{\def\@nnumber{{#1}}} \nnumber{\em NNNN}
+\def\project#1{\def\@project{{#1}}} \project{\em 97.21.NN}
+\def\status#1{\def\@status{{#1}}} \status{\em status unset}
+
+\def\maketitle{\begin{titlepage}
+ \setcounter{page}{0}
+ \begin{flushright}
+ \shortstack[l]{ ISO/TC 97/SC 21 N {\bf \LARGE \@nnumber} \\
+ {\sl Project: \@status} \\
+ Date: \@date}
+ \end{flushright}
+ \vfil
+ \begin{center}
+ {\LARGE I S O } \\[3ex]
+ {\Large \sc International Organisation for Standardisation } \\[2ex]
+ {\Large \sc Organisation Internationale de Normalisation } \\[5ex]
+ \fbox{
+ \shortstack{
+ {\LARGE ISO/TC 97/SC 21} \\[2ex]
+ {\Large \sc Information Retrieval, Transfer } \\
+ {\Large and Management for OSI } \\[2ex]
+ {\large Secretariat: USA (ANSI)}
+ }
+ }
+ \end{center}
+ \vskip 70pt % To adjust centering.
+ \begin{Large}
+ \begin{description}
+ \item[TITLE:] \@title
+ \item[SOURCE:] \@author
+ \item[DATE:] \@date
+ \item[PROJECT:] \@project
+ \item[STATUS:] \@status
+ \end{description}
+ \end{Large}
+ \vfil
+\null
+\end{titlepage}
+}
diff --git a/macros/latex209/contrib/misc/schedule.sty b/macros/latex209/contrib/misc/schedule.sty
new file mode 100644
index 0000000000..63f14d0850
--- /dev/null
+++ b/macros/latex209/contrib/misc/schedule.sty
@@ -0,0 +1,484 @@
+%% File: schedule.doc
+%% Author: Frank Pfenning (fp@cs.cmu.edu)
+%%
+%% Defines macros to draw a schedule.
+%%
+%
+% The schedule file should have the following format
+% (main style and other options depending on your use):
+%
+% \documentstyle[...,schedule,...]{...}
+%
+% \begin{document}
+% ...
+%
+% \begin{schedule}
+% \c d h:mm-h:mm event, more;[righttop][rightbot]
+% ...
+% \end{schedule}
+%
+% ...
+% \end{document}
+%
+% where d is the day, one of M T W H F S U (upper case only!).
+% h is the hour. Everything < 8 is assumed to be pm, but you
+% maybe explicit and use the 24 hour clock.
+% mm are the minutes.
+% event is what will be put into the box for the specified
+% time slot. \\ starts a new line.
+% more (optional) is another line in the box for the event.
+% It will be separated from the event by some extra space.
+% righttop (optional) is text which is placed in the
+% top right corner of the box (in small type).
+% rightbot (optional) like righttop, put at the bottom
+% right corner of the box.
+%
+% NOTES: - The spaces after the day and the time as well as the semi-colon
+% at the end of the line (before optional arguments) are necessary!
+%
+% - Do not use footnotes in schedule items - they wont appear
+% on the page.
+%
+% - For events without duration (beginning time = end time) the `room'
+% entry will appear below the line, the `event' entry above the line.
+%
+% - For short events the type may be too large. Here you may leave out
+% event and room and merely specify `[righttop]' and `[rightbot]',
+% which will appear in small print. For example:
+% \c T 3:30-3:45 ;[See Rick][Short Meeting]
+%
+% - The events do not need to appear in chronological order. This
+% allows you to have a file with all regular events and include it in a
+% schedule for a particular week with
+% \input{filename}
+% anywhere between \begin{schedule} and \end{schedule}.
+%
+% - Sometimes your will get spurious overfull \vbox or \hbox
+% warning messages. The schedule will often look acceptable anyway.
+%
+% PostScript Notes (perhaps site dependent, works at CMU):
+% - When using pslatex, you can shade the background of a class by
+% using replacing \c by one of the following:
+% \cw (white), \cL (very light gray), \cl (light gray),
+% \cd (dark gray), \cD (very dark gray)
+% \c is treated like \cl, but that can be changed through
+% \def\backgrounddefault{<shade>}, where <shade> is one of
+% \white, \Light, \light, \dark, \Dark. When the file is run through
+% latex instead of pslatex, those shadings are ignored.
+% - When there are overlapping classes, the one later in the input file
+% will shadow the earlier one. When output is produced
+% for non-PostScript devices, both will be visible.
+% - When landscape format is desired (with or without the use of
+% \landscape below), create the PostScript file from the dvi file with
+% dvi-ps -o landscape file.dvi > file.ps
+%
+% The variables and their defaults are
+%
+% \schedunitlength 1.1pt - may be used to scale the schedule.
+% \daywidth 80 - width of one day column in multiples of unitlength.
+% \hourlength 60 - length of one hour in multiples of unitlength.
+% \startday 8 - time in hours for schedule to begin.
+% \endday 5 - time in hours for schedule to end.
+% \firstday 0 - 0 for Monday through 6 for Sunday
+% \lastday 4 - 0 for Monday through 6 for Sunday
+%
+% \preamble {} - arbitrary LaTeX-format text to precede the schedule.
+% \schedtopsep 40 - distance between bottom of preamble and schedule box in
+% multiples of unitlength.
+% \postamble {} - arbitrary LaTeX-format text to follow the schedule.
+% \schedbotsep 40 - distance between top of postamble and schedule box in
+% multiple of unitlength.
+%
+% \landscape and \portrait (default) - sets the \daywidth and \hourlength.
+% Defaults for portrait are \daywidth 80 and \hourlength 60,
+% defaults for landscape are \daywidth 120 and \hourlength 40.
+%
+% \markhours and \nomarkhours (default) - forces a grid to be printed into
+% the schedule which makes it easier to write in new events by hand.
+%
+% \showdates and \shownodates (default) - forces the dates of the week
+% to be printed ant the bottom of the schedule. Set the date of
+% Monday using \beginweek.
+% \beginweek 0/1 - The date of the first day on the schedule (usually Monday)
+% in the format month/day. For example:
+% \beginweek 5/13
+% if the week on the schedule begins on May 13. This only has
+% an effect if \showdates was set.
+% \firstdate 0/1 - synonym for \beginweek
+%
+% \singlepagestyle (default inherited from the main document style):
+% - use empty page style, no top margin.
+%
+% These variables may be set BEFORE the 'schedule' environment is entered.
+%
+% Known bugs: Some lines do not match up exactly, I suspect due to the fact
+% that a framed box contains the frame on its outside. One
+% has to come very close to see this, so I am not motivated
+% to fix this.
+%
+% The \firstdate or \beginweek must appear before the
+% \begin{schedule}. This is bothersome if one keeps updating
+% the events, but not the variables from week to week.
+%
+% The postscript gray-level options have not been tested
+% outside CMU.
+%
+% Two examples follow.
+%
+% ---- An individual weekly schedule ----
+% \documentstyle[12pt,fullpage,schedule]{article}
+% \voffset -0.2in % may be useful if its a tight fit.
+% \singlepagestyle
+%
+% \landscape % landscape for previewing.
+% \thicklines
+% \schedunitlength=1.1pt
+% \startday 9 \endday 5
+% \markhours
+% \preamble{\Large Schedule Spring '84}
+% \postamble{\small No classes during fall break Nov 3 -- Nov 10}
+%
+% \begin{document}
+% \begin{schedule}
+% \c M 2:00-3:15 Applied Logic\\Seminar;[][SH 324]
+% \c T 1:30-3:30 Discrete Math;[Statman][WeH 6121]
+% \c T 3:30-5:00 TPS Meeting;[Andrews][TPS Group]
+% \c W 2:00-3:15 Applied Logic\\Seminar;[][DH 2105]
+% \c H 2:00-3:30 Logic Seminar;[][WeH 5427]
+% \end{schedule}
+% \end{document}
+%
+% ---- The schedule of a two-day workshop ----
+% \documentstyle[12pt,fullpage,schedule]{article}
+% \singlepagestyle
+%
+% \hourlength=58 \daywidth=200
+% \thicklines
+% \schedunitlength=1.1pt
+% \startday 9 \endday 7
+% \firstday 4 \lastday 5
+% \preamble{\large Meeting on Metalanguage and Tools for Mechanizing Formal
+% Deductive Theories}
+% \showdates
+% \firstdate 11/13
+%
+% \begin{document}
+% \begin{schedule}
+%
+% \c F 9:00-9:45 Using a Higher-Order\\Logic Programming Language\\
+% to Implement Program Transformations;[D. Miller][UPenn]
+% \c F 9:45-10:30 Building Proof Systems in an Extended \\
+% Logic Programming Language;[A. Felty][Upenn]
+% \cw F 10:30-10:45 Break;[][]
+% \c F 10:45-12:15 The Categorical Abstract Machine\\
+% State of the Art;[P.-L. Curien][ENS]
+% \cw F 12:15-1:15 Lunch;[][]
+% \c F 1:15-1:45 A Very Brief Look at NuPRL;[J. Bates][CMU]
+% \c F 1:45-2:15 Reasoning about Programs\\
+% that Construct Proofs;[R. Constable][Cornell]
+% \cw F 2:15-2:30 Break;[][]
+% \c F 2:30-3:15 Theorem Proving via Partial Reflection;[D. Howe][Cornell]
+% \c F 3:15-3:45 MetaPrl: A Framework for\\Knowledge Based Media;[J. Bates][CMU]
+% \cw F 3:45-4:00 Break;[][]
+% \cd F 4:00-5:00 Discussion:\\The Role of Formal Reasoning\\in Software
+% Development;[][]
+% \cL F 5:00-6:30 Demos:\\
+% PRL (WeH 4114)\\
+% $\lambda$-Prolog (WeH 4623);[][]
+%
+%
+% \c S 9:00-9:45 A Framework for Defining Logics;[R. Harper][Edinburgh]
+% \c S 9:45-10:30 The Logician's Workbench\\
+% in the Ergo Support System;[F. Pfenning][CMU]
+% \cw S 10:30-10:45 Break;[][]
+% \c S 10:45-11:30 A Tactical Approach\\
+% to Algorithm Design;[D. Smith][Kestrel]
+% \c S 11:30-12:15 Reusing Data Structure Designs;[A. Goldberg][Kestrel]
+% \cw S 12:15-1:15 Lunch\\WeH 4605;[][]
+% \c S 1:15-2:00 Paddle: Popart's Development Language;[D. Wile][USC/ISI]
+% \c S 2:00-2:45 Mechanizing Construction and\\
+% Modification of Specifications;[M. Feather][USC/ISI]
+% \cw S 2:45-3:00 Break;[][]
+% \c S 3:00-3:45 The TPS Theorem Proving System;[P. Andrews][CMU]
+% \c S 3:45-4:30 ONTIC: Knowledge Representation\\
+% for Mathematics;[D. McAllester][Cornell]
+% \cL S 4:30-6:00 Demos\\
+% Popart (WeH 4114)\\
+% The LF Proof Editor (WeH 4623)\\
+% TPS (WeH 7211);[][]
+%
+% \put(0,-35){\makebox(\daywidth,20){Wherrett Room, Skibo}}
+% \put(\daywidth,-35){\makebox(\daywidth,20){Wean Hall 7500}}
+%
+% \end{schedule}
+% \end{document}
+%======================================================================
+%
+% Here the definitions begin.
+%
+%
+% File: schedule.sty
+% Author: Frank Pfenning (fp@cs.cmu.edu)
+%
+% Defines macros to draw a schedule.
+% Documentation is in schedule.doc
+%
+% Use this as an option to another documentstyle.
+
+\def\singlepagestyle{\topmargin 0pt\pagestyle{empty}\thispagestyle{empty}}
+
+ % The indented stuff following allows gray levels on postscript devices.
+ % It may only work at this installation (CMU).
+ % Is there a reliable way to tell whether the output device is
+ % postscript?
+ \newif\ifPS
+ \expandafter\ifx\csname PostScript\endcsname\relax
+ \PSfalse
+ \else
+ \PStrue
+ \fi
+
+ \ifPS
+ \def\setgray #1{\special{"#1 setgray"}}
+ % Changes the gray level of the "pen" on the PostScript device
+ % #1 should be a number between 0 and
+ % 0 is black 1 is white
+ % NB Remember to reset the gray level to black.
+ \def\Dark{\def\backgroundgray{\setgray{0.8}}}
+ \def\dark{\def\backgroundgray{\setgray{0.9}}}
+ \def\light{\def\backgroundgray{\setgray{0.95}}}
+ \def\Light{\def\backgroundgray{\setgray{0.99}}}
+ \def\white{\def\backgroundgray{\setgray{1}}}
+ \else
+ \def\Dark{} \def\dark{} \def\light{} \def\Light{} \def\white{}
+ \fi
+
+\def\backgrounddefault{\light}
+
+\newdimen\schedunitlength \schedunitlength=1.1pt
+
+\newcount\hourlength
+\newcount\daywidth
+\def\portrait{\hourlength=60 \daywidth=80}
+\def\landscape{\hourlength=40 \daywidth=120}
+\portrait
+
+\newcount\startday \startday=8
+\newcount\endday \endday=5
+
+\newcount\firstday \firstday=0
+\newcount\lastday \lastday=4
+
+\newcount\schedtopsep \schedtopsep=40
+\newcount\schedbotsep \schedbotsep=40
+
+\newcount\dday \dday=1
+\newcount\mmonth \mmonth=0
+
+\newcount\ypos \newcount\xpos \newcount\ylength
+
+\newcount\tempa \newcount\tempb \newcount\tempc \newcount\tempd
+
+\newcount\schedtop
+
+\newcount\schedwidth \newcount\hschedwidth
+
+\newcount\firstdayoffset
+\newcount\numdays
+
+\def\preamble#1{\gdef\preambletext{#1}}
+\def\beginpreamble#1\endpreamble{\gdef\preambletext{#1}}
+
+\def\postamble#1{\gdef\postambletext{#1}}
+\def\beginpostamble#1\endpostamble{\gdef\postambletext{#1}}
+
+\def\markhours{\gdef\hourlengthmarks{T}}
+\def\nomarkhours{\gdef\hourlengthmarks{N}}
+
+\def\showdates{\gdef\showdatesflag{T}}
+\def\shownodates{\gdef\showdatesflag{N}}
+
+\def\beginweek#1/{\mmonth #1\dday }
+\def\firstdate{\beginweek}
+
+\preamble{}
+\postamble{}
+\nomarkhours
+\shownodates
+
+\def\initdimen{\unitlength=\schedunitlength
+\ypos=0 \xpos=0
+\ylength=0 \tempa=0 \tempb=0 \tempc=0 \tempd=0
+\ifnum \endday<8 \advance\endday by 12\fi
+\ifnum \startday<8 \advance\startday by 12\fi
+\schedtop=\endday \advance\schedtop by -\startday
+\multiply\schedtop by\hourlength
+\firstdayoffset=\firstday \multiply\firstdayoffset by\daywidth
+\numdays=\lastday \advance\numdays by -\firstday
+\schedwidth=\numdays \advance\schedwidth by 1
+ \multiply\schedwidth by\daywidth
+\hschedwidth=\schedwidth \divide\hschedwidth by 2
+}
+
+\def\class#1{\framebox(\daywidth,\ylength){\begin{tabular}{c}
+ \commaparse#1,,\end{tabular}}}
+
+\def\commaparse#1,{\@ifnextchar ,{#1\ignorechar}{#1\\[1.3em]\commaparse}}
+\def\ignorechar#1{}
+
+\def\timeclass#1#2{\put(\xpos,\ypos){\timeboxbegin{#1}}%
+ \put(\xpos,\ypos){\timeboxend{#2}}}
+
+\def\grayput{%
+ \put(\xpos,\ypos){\backgroundgray
+ \rule{\daywidth\unitlength}{\ylength\unitlength}%
+ \black}}
+
+\def\classput#1;{%
+ \put(\xpos,\ypos){\class{#1}}%
+ \@ifnextchar [{\optone}{\relax}%]
+ }
+
+\def\optone[#1]{\put(\xpos,\ypos){\righttopbox{#1}}%
+ \@ifnextchar [{\opttwo}{\relax}%]
+ }
+
+\def\opttwo[#1]{\put(\xpos,\ypos){\rightbotbox{#1}}}
+
+\def\timeboxbegin#1{\makebox(\daywidth,\ylength)[tl]{%
+ \scriptsize{\raisebox{0em}[0.85em]{\scriptsize{\hskip 0.2em #1}}}}}
+
+\def\righttopbox#1{\makebox(\daywidth,\ylength)[tr]{%
+ \scriptsize{\raisebox{0em}[0.85em]{\scriptsize{#1\hskip 0.2em}}}}}
+
+\def\timeboxend#1{\makebox(\daywidth,\ylength)[bl]{%
+ \scriptsize{\raisebox{0.2em}{\scriptsize{\hskip 0.2em #1}}}}}
+
+\def\rightbotbox#1{\makebox(\daywidth,\ylength)[br]{%
+ \scriptsize{\raisebox{0.2em}{\scriptsize{#1\hskip 0.2em}}}}}
+
+\def\daywidthxpos#1{%
+ \advance \xpos by -\firstdayoffset
+ \if M#1\else \advance\xpos by\daywidth
+ \if T#1\else \advance\xpos by\daywidth
+ \if W#1\else \advance\xpos by\daywidth
+ \if H#1\else \advance\xpos by\daywidth
+ \if F#1\else \advance\xpos by\daywidth
+ \if S#1\else \advance\xpos by\daywidth
+ \if U#1\else \advance\xpos by\daywidth\fi\fi\fi\fi\fi\fi\fi}
+
+\def\cD{\Dark\cdefault}
+\def\cd{\dark\cdefault}
+\def\cl{\light\cdefault}
+\def\cL{\Light\cdefault}
+\def\cw{\white\cdefault}
+\def\c{\backgrounddefault\cdefault}
+
+\def\cdefault#1 #2:#3-#4:#5 {%
+ %% First convert time to 24hour clock
+ \ypos=-#2 \ifnum \ypos>-8 \advance\ypos by -12\fi
+ \ylength=#4 \ifnum \ylength<8 \advance\ylength by 12\fi
+ %% Now calculate the length of the entry: hours
+ \advance\ylength by \ypos \multiply\ylength by\hourlength
+ %% Calculate the beginning of the entry in hours
+ \advance\ypos by\startday
+ \multiply\ypos by\hourlength
+ \advance\ypos by\schedtop
+ %% Add the minutes
+ \tempa=#3 \multiply\tempa by\hourlength \divide\tempa by 60
+ \advance\ypos by -\tempa
+ %% Add minutes to length.
+ \tempa=#5 \advance\tempa by -#3
+ \multiply\tempa by\hourlength \divide\tempa by 60
+ \advance\ylength by\tempa
+ %% The lower left corner is at beginning of entry - length of entry
+ \advance\ypos by -\ylength
+ \xpos=0 \daywidthxpos{#1}%
+ \ifPS \grayput\fi
+ \timeclass{#2:#3}{#4:#5}
+ \classput}
+
+
+\def\putday#1{\ifnum \firstday<\tempc \ifnum \tempc<\tempd
+ \put(\tempa,\schedtop){\makebox(\daywidth,20){#1}}%
+ \if T\showdatesflag
+ \put(\tempa,-20){\makebox(\daywidth,20){\the\mmonth/\the\dday}}%
+ \increaseday \fi
+ \advance\tempa by\daywidth \fi \fi
+ \advance\tempc by 1}
+
+\def\nextmonth{\advance\mmonth by 1\dday 1}
+
+\def\increaseday{\advance\dday by 1
+ \ifnum \dday=29\ifnum \mmonth=2\nextmonth\fi\fi
+ \ifnum \dday=31\ifcase \mmonth \or \or \or \or \nextmonth
+ \or \or \nextmonth \or \or
+ \or \nextmonth \or \or \nextmonth
+ \or \fi\fi
+ \ifnum \dday=32\ifcase \mmonth \or \nextmonth \or \or \nextmonth
+ \or \or \nextmonth \or \or \nextmonth
+ \or \nextmonth \or \or \nextmonth
+ \or \or \mmonth 1\dday 1\fi\fi}
+
+\def\schedule{
+
+\initdimen
+
+\begin{center}
+
+\begin{picture}(\schedwidth,\schedtop)(0,0)
+\tempa=\schedtop \advance\tempa by\schedtopsep
+\put(\hschedwidth,\tempa){\makebox(0,0)[b]{\preambletext}}
+\put(0,0){\framebox(\schedwidth,\schedtop){}}
+
+%% One more time stamp than there are hours.
+\tempa=\startday \advance\tempa by -1
+
+\xpos=\startday \ypos=\schedtop
+\loop \ifnum \xpos>12 \advance\xpos by -12\fi
+ \put(0,\ypos){\makebox(0,0)[r]{\the\xpos :00\hskip 1.7em}}%
+ \advance\ypos by -\hourlength \advance\tempa by 1
+ \advance\xpos by 1
+ \ifnum \tempa<\endday \repeat
+
+\tempa=\endday \advance\tempa by -\startday \advance\tempa by 1
+\multiput(0,\schedtop)(0,-\hourlength){\tempa}{%
+ \makebox(0,0)[r]{\vrule height 0.4pt width 1.5em}}
+
+\if T\hourlengthmarks
+ \multiput(\daywidth,\schedtop)(\daywidth,0){\numdays}{%
+ \makebox(0,0)[t]{\vrule height 0.3em width 0.4pt}}
+ \multiput(\daywidth,0)(\daywidth,0){\numdays}{%
+ \makebox(0,0)[b]{\vrule height 0.3em width 0.4pt}}
+ \advance\tempa by -2
+ \tempd=\schedtop \advance\tempd by -\hourlength
+ \tempb=\daywidth \tempc=0
+ \multiput(0,\tempd)(0,-\hourlength){\tempa}{%
+ \makebox(0,0)[l]{\vrule height 0.4pt width 0.3em}}
+ \loop \multiput(\tempb,\tempd)(0,-\hourlength){\tempa}{%
+ \makebox(0,0)[c]{\vrule height 0.2pt depth 0.2pt width 0.3em
+ \vrule height 0.3em depth 0.3em width 0.4pt
+ \vrule height 0.2pt depth 0.2pt width 0.3em}}
+ \advance\tempb by \daywidth
+ \advance\tempc by 1
+ \ifnum \tempc<\numdays \repeat
+ \multiput(\tempb,\tempd)(0,-\hourlength){\tempa}{%
+ \makebox(0,0)[r]{\vrule height 0.4pt width 0.3em}}
+ \fi
+
+\tempa=0 \tempc=1 \tempd=\lastday \advance\tempd by 2
+\putday{Monday}
+\putday{Tuesday}
+\putday{Wednesday}
+\putday{Thursday}
+\putday{Friday}
+\putday{Saturday}
+\putday{Sunday}
+\put(0,-\schedbotsep){\makebox(0,0)[tl]{\postambletext}}
+}
+
+\def\endschedule{
+\end{picture}
+
+\end{center}
+}
diff --git a/macros/latex209/contrib/misc/screen.sty b/macros/latex209/contrib/misc/screen.sty
new file mode 100644
index 0000000000..9190d64e27
--- /dev/null
+++ b/macros/latex209/contrib/misc/screen.sty
@@ -0,0 +1,32 @@
+% SCREEN.STY is used to create a LaTeX document suitable for SCREENVIEWing.
+
+\oddsidemargin=0pt % for 1in left margin (which SCREENVIEW removes!)
+\evensidemargin=0pt % ditto
+\textwidth=400pt % so SCREENVIEW output will fit within 80 columns
+
+% redefine all font sizes to be \normalsize
+\def\tiny{\normalsize}
+\def\scriptsize{\normalsize}
+\def\footnotesize{\normalsize}
+\def\small{\normalsize}
+\def\large{\normalsize}
+\def\Large{\normalsize}
+\def\LARGE{\normalsize}
+\def\huge{\normalsize}
+\def\Huge{\normalsize}
+
+% redefine all font types to be \tt
+\def\em{\tt}
+\def\bf{\tt}
+\def\it{\tt}
+\def\sl{\tt}
+\def\sf{\tt}
+\def\sc{\tt}
+\def\rm{\tt}
+
+% now typeset document using \tt and \raggedright
+\tt
+\raggedright
+
+
+
diff --git a/macros/latex209/contrib/misc/seceqn.sty b/macros/latex209/contrib/misc/seceqn.sty
new file mode 100644
index 0000000000..bedb83d39f
--- /dev/null
+++ b/macros/latex209/contrib/misc/seceqn.sty
@@ -0,0 +1,11 @@
+% Save file as: SECEQN.STY Source: FILESERV@SHSU.BITNET
+% seceqn.sty
+%
+% Substyle file for use with "article" to cause equations to be numbered
+% within sections.
+%
+% 13 Apr 89 Jerry Leichter (LEICHTER-JERRY@CS.YALE.EDU)
+\typeout{Document Option `seceqn': 13 Apr 89}
+\@addtoreset{equation}{section} %Make equation=0 when section steps
+\def\theequation{\thesection.\arabic{equation}}
+ %How an equation number looks
diff --git a/macros/latex209/contrib/misc/secret.sty b/macros/latex209/contrib/misc/secret.sty
new file mode 100644
index 0000000000..65361e6d30
--- /dev/null
+++ b/macros/latex209/contrib/misc/secret.sty
@@ -0,0 +1,85 @@
+%Date: Fri, 24 Nov 89 13:44:13 EST
+%From: Denys Duchier <duchier-denys@YALE.ARPA>
+%Subject: Re: secret.sty?
+%Keywords: LaTeX, secret.sty
+%
+%> Does anyone out there have an option file for report.sty (call
+%> it secret.sty?) which does the following (for use in LaTeXing
+%> classified reports):
+%>
+%> (1) all paragraphs must begin with a (U), (C), or (S) which
+%> denotes unclassified, confidential, and secret, respectively.
+%>
+%> (2) if a paragraph continues on the next page, the (U), (C),
+%> and (S) has to be inserted into the first line of the continuing
+%> paragraph on the next page.
+%
+%I don't think requirement (2) can be satisfied as stated because when
+%TeX exercises its page breaking algorithm, paragraphs have already
+%been formatted and broken into individual lines, each one put in its
+%own box and appended to the vertical list: you can't insert (S) at the
+%top of the next page and have TeX reconsider line breaks.
+%
+%However, it is possible to come close: instead of putting the labels
+%in the running text, we can let them hang out in the margin. The code
+%below appears to work on the example I tried; put it in file
+%secret.sty and use \documentstyle[secret]{article} or something like
+%it at the top of your document.
+%
+%If you type \unclassified (resp. \confidential or \secret) the
+%subsequent paragraphs will begin with (U) (resp. (C) or (S)) hanging
+%out in the margin. \nosecret turns off this behaviour. You can also
+%use them as environments.
+%
+%%--Denys
+%Organization: Computer Science, Yale University, New Haven, CT 06520-2158
+%%% File: secret.sty
+
+\def\@markright#1#2#3#4{\gdef\@themark{{#1}{#4}{#3}}}
+\def\@markextra#1#2#3#4{\gdef\@themark{{#1}{#2}{#4}}}
+\def\@markboth#1#2#3#4#5{\gdef\@themark{{#4}{#5}{#3}}}
+
+\def\@leftmark#1#2#3{#1}
+\def\@rightmark#1#2#3{#2}
+\def\@extramark#1#2#3{#3}
+
+\def\markboth#1#2{{\let\protect\noexpand
+ \let\label\relax \let\index\relax
+ \expandafter\@markboth\@themark
+ {#1}{#2}\mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
+
+\def\markextra#1{{\let\protect\noexpand
+ \let\label\relax \let\index\relax
+ \expandafter\@markextra\@themark
+ {#1}\mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
+
+\def\extrabotmark{\expandafter\@extramark\botmark}
+\def\extrafirstmark{\expandafter\@extramark\firstmark}
+
+\def\@themark{{}{}{}}
+
+\newdimen\@tempdimc
+
+\output{\@tempdimc = \dp255
+ \ifnum\outputpenalty <-\@M\@specialoutput\else
+ \@makecol\@opcol\@floatplacement\@startcolumn
+ \@whilesw\if@fcolmade \fi{\@opcol\@startcolumn}\fi
+ \global\vsize\ifnum\outputpenalty >-\@Miv \@colroom
+ \else \maxdimen\fi
+ \edef\@tempa{\extrabotmark}\ifx\@tempa\empty\else
+ \llap{\@tempa\hskip\labelsep}\advance\@tempdimc
+ -\prevdepth \advance\@tempdimc -\baselineskip
+ \kern\@tempdimc\fi}
+
+\def\@secret#1{\everypar{\markextra{}\llap{#1\hskip\parindent\hskip\labelsep}\markextra{#1}}}
+
+\def\unclassified{\@secret{(U)}}
+\def\confidential{\@secret{(C)}}
+\def\secret{\@secret{(S)}}
+
+\def\nosecret{\markextra{}\everypar{}}
+
+\let\@extraenddocument\enddocument
+\def\enddocument{\nosecret\@extraenddocument}
+
+%--Denys
diff --git a/macros/latex209/contrib/misc/semitic.sty b/macros/latex209/contrib/misc/semitic.sty
new file mode 100644
index 0000000000..eef6f2c527
--- /dev/null
+++ b/macros/latex209/contrib/misc/semitic.sty
@@ -0,0 +1,113 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%Cut with a sharp axe here%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This is a very simple LaTeX substyle to set Semitic languages. It is a very
+% much a hacked HEBREW.TeX distributed with the Hebrew fonts.
+% Graeme McKinstry,
+% Computing Services Centre,
+% University of Otago,
+% Dunedin,
+% New Zealand.
+% E-mail: graeme%otago.ac.nz@relay.cs.net
+%
+% The fonts were designed by Jacques Goldberg:
+% E-mail: phr00jg@technion.bitnet (watch for ZEROES in phr00jg)
+% S-mail: Prof. Jacques Goldberg, Department of Physics
+% TECHNION, 32000 Haifa, Israel.
+% Emergency phone: (972)4-293663
+%
+% WHAT IT DOES:
+% * Reverses order of letters in words.
+% * Reverses order of words on a line (sets right-to-left).
+%
+% Use it as follows:
+% \documentstyle[semitic,...]{...}
+% .
+% .
+% .
+% Normal text here
+% \begin{semitic}
+% Hebrew text in `natural direction'. Type Hebrew paragraph as
+% you would any `normal' paragraph in a LaTeX document.
+% \end{semitic}
+% More text ...
+% .
+% .
+% .
+%
+% NOTES:
+% * There is now no need to put only 1 hebrew word on a line. Treat the
+% Hebrew text as `normal' text.
+% * There can be no space between `\end' and `{semitic}' in
+% `\end{semitic}' (similar to the verbatim environment).
+% * To keep something together enclose it in braces, e.g., {text together}
+% This will stop it being broken over a line but the contents
+% will still be reversed. If more than 1 word then place a ~ between
+% words to maintain space.
+% * To keep something together and to STOP IT BEING REVERSED enclose it
+% in 2 sets of braces, e.g.,
+% {{$\sin(\theta + \frac{\pi}{2}) = \cos \theta$}}
+% * The text is processed in LR mode and then formed into lines. Anything
+% that starts a new paragraph, e.g., displayed maths, will cause problems.
+% This also mean that no blank lines can appear in the environment.
+% * A new paragraph is started before and after the semitic environment.
+
+\font\ivrit=redis10
+\hyphenchar\ivrit=-1
+\font\hebbf=redisbx10
+\hyphenchar\hebbf=-1
+\font\hebsl=rediss10
+\hyphenchar\hebsl=-1
+
+% The two lines below are taken from D. Knuth and P. MacKay
+% TuGBoat vol.8,#1,page 14.
+% Use \hebrew{hebrew~text} for short hebrew passages.
+\gdef\hebrew#1\relax{{\ivrit\reflect#1\empty\tcelfer}}
+\gdef\reflect#1#2\tcelfer{\ifx#1\empty\else\reflect#2\tcelfer#1\fi}
+
+\def\ivrconcat#1#2{#1 #2}
+
+\newbox\ivrbox % The Semitic box to test full line condition
+\newbox\ivrstrbox % The box to hold the current Semitic string
+\setbox\ivrbox=\hbox{}
+\setbox\ivrstrbox=\hbox{}
+
+\def\@esemitic{\end{semitic}} % Used for checking end of environment
+
+\def\semitic{\par\ivrit\let\bf=\hebbf\let\sl=\hebsl
+ \parindent=0pt\@makesemiticline}
+\def\endsemitic{\par}
+
+% \@makesemitic line reads in a word at a time (a word is taken as text
+% terminated by 1 or more spaces).
+% It will then take this word and reverse it (using \reflect) and add it
+% to the FRONT of the line being made. If this word makes the line too
+% long (> \linewidth) then the line is broken before this word and this
+% word is added to the next line.
+
+\def\@makesemiticline#1 {\def\@word{#1}\relax
+ \ifx\@word\empty % removes CR
+ \let\next=\@makesemiticline
+ \else
+ \ifx\@esemitic\@word % i.e., read in \end{semitic}
+ \let\next=\@esemitic % will finish off semitic environment
+ \hbox to\hsize{\hfil \unhbox\ivrstrbox \unskip}
+ \else % semitic word
+ \ifdim\wd\ivrstrbox=0pt % i.e., contains nothing therefore
+ % at beginning of line
+ \setbox\ivrbox=\hbox{\reflect#1\empty\tcelfer}
+ \else % add reversed word to FRONT of line.
+ \setbox\ivrbox=\hbox{\ivrconcat{\reflect#1\empty\tcelfer
+ }{ \unhcopy\ivrstrbox}}
+ \fi
+ \let\next=\@makesemiticline % will loop around yet again
+ \ifdim \linewidth < \wd\ivrbox % line now too long
+ \hbox to\linewidth{\hss % remove \hss to justify
+ \unhcopy\ivrstrbox}
+ \setbox\ivrstrbox=\hbox{\reflect#1\empty\tcelfer}
+ \else % set store string to whole line
+ \setbox\ivrstrbox=\hbox{\unhcopy\ivrbox}\relax
+ \fi
+ \fi
+ \fi\next}
+%%%%%%%%%%%%%%%%%%%%%%%%%%Cut with a sharp axe here%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
diff --git a/macros/latex209/contrib/misc/sentences.tex b/macros/latex209/contrib/misc/sentences.tex
new file mode 100644
index 0000000000..c40b4d084d
--- /dev/null
+++ b/macros/latex209/contrib/misc/sentences.tex
@@ -0,0 +1,133 @@
+% -*- Mode: TeX -*-
+
+\ifx\thisfileis\anUndefinedMacro\input maybeload \fi
+
+\thisfileis{<eb.tex.texlocal>sentences} % abort loading if we're already loaded
+
+\input redefine
+
+% A referenceable "sentences" list environment for Latex. Remember to
+% put "{}" % after the \item command if the sentence begins with "[".
+% There is also a "subsentences" environment.
+
+\makeatletter
+
+\newif\ifinsentences
+\insentencesfalse
+
+\newcounter{sentence}
+\newcounter{subsentence}[sentence]
+
+% These next definitions define the format of the "sentence"
+% and "subsentence" counters. It is tricky to get them right.
+% First of all, the parentheses in "(4)" and "(2iii)" are
+% defined to be part of the printed representation of the
+% "sentence" and "subsentence" counters. This is so that
+% parentheses will be included in \ref - \label constructions.
+% Second, the "subsentence" counter must print out with the
+% "sentence" number included as well; this is similar to
+% what happens with the section and chapter counters.
+% Third, despite the second requirement, the "subsentence"
+% counter must appear without the sentence number when it
+% is actually used to number a subsentence.
+%
+% We use two auxiliary control sequences here and below in order
+% to make it easier to change the subsentence numbering style.
+% The two control sequences are \subsentencenumbering, which should
+% be \let to something like \roman or \alph, and
+% \subsentencepunctuation, which controls the format of subsentence
+% numbers as they appear before the subsentences.
+
+\def\thesentence{(\arabic{sentence})}
+\def\thesubsentence{(\arabic{sentence}\subsentencenumbering{subsentence})}
+
+% These next two definitions are defaults.
+
+\let\subsentencenumbering\roman
+\def\subsentencepunctuation#1{(#1)}
+
+%%% Using \begin{list} and \end{list} in the argument of a
+%%% \newenvironment command doesn't work properly; I have to call
+%%% \list and \endlist directly.
+
+\newenvironment{sentences}{\list{\thesentence}%
+{\edef\sent@nbr{\the\c@sentence}\usecounter{sentence}%
+\setcounter{sentence}{\sent@nbr}%
+\ifinsentences \errmessage{Nested sentences environment.} \fi
+\def\makelabel##1{##1\hfil}%
+\leftmargin\leftmargini\labelwidth\leftmargin
+ \advance\labelwidth-\labelsep
+\insentencestrue}}{\endlist}
+
+\newenvironment{subsentences}{\list
+{\subsentencepunctuation{\subsentencenumbering{subsentence}}}%
+{\edef\sent@nbr{\the\c@subsentence}\usecounter{subsentence}%
+\setcounter{subsentence}{\sent@nbr}%
+\leftmargin\leftmargini\labelwidth\leftmargin
+ \advance\labelwidth-\labelsep
+\def\makelabel##1{##1\hfil}%
+\ifinsentences\relax\else
+ \errmessage{\string\begin{subsentences} not in sentences environment}\fi}}%
+{\endlist}
+
+% These sentence-judgement macros are for use with the sentences
+% environment; they back up over preceding space. They're designed
+% for use just after an \item.
+
+\newcommand{\sentencejudgement}[1]{\strut\llap{#1\hskip 2pt}}
+\newcommand{\bad}{\sentencejudgement{$\ast$}}
+\newcommand{\quest}{\sentencejudgement{?}}
+\newcommand{\qquest}{\sentencejudgement{?\kern -0.5pt?}}
+
+% An abbreviation.
+
+\newcommand{\sentence}[1]{\begin{sentences}\item{#1}\end{sentences}}
+
+% Local references.
+%
+% \nextsentence the next sentence
+% \nextsentence[2] the sentence after the next sentence
+% \nextsentencesub{1} the first subsentence of the next sentence
+% \nextsentencesub[2]{1} the first subsentence of the sentence after
+% the next sentence
+%
+
+\newdef\nextsentence{\@ifnextchar[{\@argnextsentence}{\@argnextsentence[1]}%]
+}
+
+\newdef\@argnextsentence[#1]{\bgroup
+ \advance\c@sentence by #1\relax
+ \thesentence
+ \egroup}
+
+\newdef\nextsentencesub{\@ifnextchar[{\@argnextsentencesub
+ }{\@argnextsentencesub[1]}%]
+}
+
+\newdef\@argnextsentencesub[#1]#2{\bgroup
+ \advance\c@sentence by #1\relax
+ \c@subsentence=#2\relax
+ \thesubsentence
+ \egroup}
+
+% Define labeled brackets. Write ``[\ntype:NP foo bar ...'' to get an
+% NP bracket. \ctype is acceptable as an abbreviation.
+
+\newdef\ntype:#1 {{$_{\mbox{\tiny #1}}$} }
+\newlet\ctype=\ntype % synonmym
+
+% Common symbols with bars over them.
+
+\newcommand{\Bar}[1]{\ifmmode \overline{\mbox{#1}}\else $\Bar{#1}$\fi}
+\newcommand{\Sbar}{\Bar S}
+\newcommand{\Nbar}{\Bar N}
+\newcommand{\Abar}{\Bar A}
+\newcommand{\Xbar}{\Bar X}
+\newcommand{\Twobar}[1]{\Bar{\Bar{#1}}}
+
+\newcommand{\thetabar}{\overline\theta}
+
+% More common symbols.
+
+\newcommand{\wh}{{\it wh}}
+
diff --git a/macros/latex209/contrib/misc/set_sp.sty b/macros/latex209/contrib/misc/set_sp.sty
new file mode 100644
index 0000000000..99d120bcd5
--- /dev/null
+++ b/macros/latex209/contrib/misc/set_sp.sty
@@ -0,0 +1,253 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Geoffrey R. D. Tobin",
+%%% version = "1.0",
+%%% date = "23 Jan 1992",
+%%% time = "15:56:00 AEDT (06:56:00 GMT)",
+%%% filename = "set_sp.sty",
+%%% address = "Department of Electronic Engineering
+%%% La Trobe University
+%%% Bundoora VIC 3083
+%%% Australia",
+%%% telephone = "+ 613 479-1180",
+%%% checksum = "06002 253 1152 10466"
+%%% email = "ecsgrt@luxor.latrobe.edu.au (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, linespacing, NFSS",
+%%% supported = "yes, by email",
+%%% docstring = "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. This
+%%% program, as well as Nelson Beebe's proposal
+%%% for standard file headers, is available via
+%%% anonymous ftp from math.utah.edu.",
+%%% }
+%%% ====================================================================
+% set_sp.sty - version 1 - 15:56 - Thu 23 Jan 1992 - Geoffrey Tobin
+% `merge' of ideas of setspace.sty and of dblsp.sty mods by Mark A. Roth.
+%
+%% FILE: setspace.sty in SYS2.TEX.PUB.ISULATEX.STYLES
+%% AUTHOR: Erica M. S. Harris
+%% DATE: April 1990
+%% DESCR: LaTeX Document style option "setspace"
+%% Usage: \documentstyle[...,setspace,...]{...}
+%% Based on the doublespace option created by Stephen Page.
+%%
+%% This style option provides commands and environments for doing
+%% double and one-and-a-half spacing based on pt size.
+%%
+%% Single spacing is the default.
+%%
+%% Three commands, \doublespacing, \onehalfspacing, and
+%% \singlespacing, are for use in the preamble to set the overall
+%% spacing for the document. If a different spacing is required then
+%% the \setstretch{baselinestretch} command can be used in the
+%% preamble to set the baselinestretch appropriately. The default
+%% spacing with this style option is single spacing.
+%%
+%% Three environments, singlespace, onehalfspace, and doublespace,
+%% allow the spacing to be changed within the document. Both the
+%% onehalfspace and doublespace environments are intended to increase
+%% the spacing, so the onehalfspace environment should not be used in
+%% a double spaced document. If an increased spacing different from
+%% one-and-a-half or double spacing is required then the spacing
+%% environment can be used. The spacing environment takes one
+%% argument which is the larger baselinestretch to use,
+%% e.g., \begin{spacing}{2.5}.
+%%
+%% \footins is adjusted the same as \parskip - appears to work. Lose
+%% stretch parts but don't consider that to be crucial
+%%
+%% Removed code for altering spacing before and after displayed
+%% equations - just looked too much.
+%%
+%% MODS:
+%%
+%% PLEASE REPORT ANY BUGS
+%%
+%% Old Documentation follows:
+%% 1. A new environment "singlespace" is provided, within which single
+%% spacing will apply.
+%% JFL - changed so that it works in regular text and so that
+%% vertical space before and after is correctly computed.
+%% 2. Double spacing is turned off within footnotes and floats (figures
+%% and tables).
+%% 3. Proper double spacing happens below tabular environments and in
+%% other places where LaTeX uses a strut.
+%% 4. Slightly more space is inserted before footnotes.
+%% 5. JFL - fixes spacing before and after displayed math.
+% 6. MAR - fix to work with new font selection scheme if used.
+%%
+% Modified by: Mark A. Roth, mroth@afit.af.mil
+%%
+%% mods: Jean-Francois Lamy
+%% lamy@ai.toronto.edu
+%% lamy@utai.uucp
+%
+% Author: Stephen Page -- sdpage@prg.oxford.ac.uk
+%
+% Original ``doublespace.sty'' released 6 July 1986 - 3 September 1986
+%%
+%% POSSIBLE BUGS:
+%% . Increasing struts may possibly cause some other obscure part of
+%% formatting to fall over.
+%% . \begin{singlespace}\begin{quote} produces the wrong spacing before
+%% the quote (extra glue is inserted).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\doublespacing{\ifcase \@ptsize \relax % 10pt
+ \def\baselinestretch{1.667}
+ \or % 11pt
+ \def\baselinestretch{1.618}
+ \or % 12pt
+ \def\baselinestretch{1.655}
+ \fi} % EMSH
+
+\def\onehalfspacing{\ifcase \@ptsize \relax % 10pt
+ \def\baselinestretch{1.25}
+ \or % 11pt
+ \def\baselinestretch{1.213}
+ \or % 12pt
+ \def\baselinestretch{1.241}
+ \fi} % EMSH
+
+\def\singlespacing{\def\baselinestretch{1}} % EMSH
+
+\def\setstretch#1{\renewcommand{\baselinestretch}{#1}}
+
+%---Stretch the baseline BEFORE calculating the strut size. This improves
+% spacing below tabular environments etc., probably...
+% Comments are welcomed.
+% This change not needed with new font selection scheme-MAR
+
+\ifx\undefined\selectfont %then new font selection scheme not invoked-MAR
+\def\@setsize#1#2#3#4{\@nomath#1 \let\@currsize#1 %
+ \baselineskip #2 %
+ \baselineskip\baselinestretch\baselineskip
+ \parskip\baselinestretch\parskip
+ \setbox\strutbox\hbox{\vrule height.7\baselineskip
+ depth.3\baselineskip width\z@}%
+ \skip\footins \baselinestretch\skip\footins % EMSH
+ \normalbaselineskip\baselineskip#3#4}
+\else %new font selection scheme is defined, set up way to change baselines-MAR
+\def\@newbaseline{ \setnew@baselineskip
+ \baselineskip\baselinestretch\baselineskip
+ \setbox\strutbox\hbox{\vrule\@height.7\baselineskip
+ \@depth.3\baselineskip \@width\z@}%
+ \normalbaselineskip\baselineskip}% -MAR
+\fi %-MAR
+
+%---Increase the space between last line of text and footnote rule.
+%\skip\footins 20pt plus4pt minus4pt % commented out by EMSH.
+
+%---Reset baselinestretch within footnotes and floats.
+
+\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
+ \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
+ \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
+ \@tfor \@tempa :=#2\do
+ {\if\@tempa h\advance\@tempcnta \@ne\fi
+ \if\@tempa t\advance\@tempcnta \tw@\fi
+ \if\@tempa b\advance\@tempcnta 4\relax\fi
+ \if\@tempa p\advance\@tempcnta 8\relax\fi
+ }\global\count\@currbox\@tempcnta}\@fltovf\fi
+ \global\setbox\@currbox\vbox\bgroup
+ \def\baselinestretch{1}
+ \ifx\undefined\selectfont %then new font selection scheme not invoked-MAR
+ \@normalsize % EMSH mod from "\small\normalsize".
+ \else %else new font selection scheme is invoked-MAR
+ \@newbaseline %include new baselinestretch-MAR
+ \fi %-MAR
+ \boxmaxdepth\z@
+ \hsize\columnwidth \@parboxrestore}
+
+\long\def\@footnotetext#1{\insert\footins{\def\baselinestretch{1}\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
+ {\rule{\z@}{\footnotesep}\ignorespaces
+ #1\strut}}}
+
+% A single spaced quote (say) is done by surrounding singlespace with quote.
+%
+\def\singlespace{%
+\vskip\baselineskip%
+\def\baselinestretch{1}%
+\ifx\undefined\selectfont %then new font selection scheme not invoked-MAR
+\ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
+\else %else new font selection scheme is invoked-MAR
+\@newbaseline %include new baselinestretch-MAR
+\fi %-MAR
+% \vskip-\parskip% % EMSH omitted this, so I've commented it out - gt.
+\vskip-\baselineskip}
+
+\def\endsinglespace{\par}
+
+% spacing, doublespace and onehalfspace all are meant to INCREASE the
+% spacing (i.e. calling onehalfspace from within doublespace will not
+% produce a graceful transition between spacings)
+%
+\def\spacing#1{\par%
+ \begingroup % moved from \endspacing by PGBR 1-29-91
+ \def\baselinestretch{#1}%
+ \ifx\undefined\selectfont %then new font selection scheme not invoked-MAR
+ \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi % MAR removed `}'.
+ \else %else new font selection scheme is invoked-MAR
+ \@newbaseline %include new baselinestretch-MAR
+ \fi %-MAR
+} % MAR moved `}' hither.
+
+\def\endspacing{\par%
+ \vskip \parskip%
+ \vskip \baselineskip%
+ \endgroup%
+ \vskip -\parskip%
+ \vskip -\baselineskip%
+% \begingroup %\begingroup used to be here, PGBR 1-29-91
+ }
+
+% one and a half spacing is 1.5 x pt size
+\def\onehalfspace{\ifcase \@ptsize \relax % 10pt
+ \spacing{1.25}
+ \or % 11pt
+ \spacing{1.213}
+ \or % 12pt
+ \spacing{1.241}
+ \fi}
+\let\endonehalfspace=\endspacing
+
+% double spacing is 2 x pt size
+\def\doublespace{\ifcase \@ptsize \relax % 10pt
+ \spacing{1.667}
+ \or % 11pt
+ \spacing{1.618}
+ \or % 12pt
+ \spacing{1.655}
+ \fi}
+\let\enddoublespace=\endspacing %first end independently added by MAR & EMSH.
+
+% gt - EMSH chose to omit display math part that follows.
+% She wrote (see above) that the "altered spacing before and after displayed
+% equations ... just looked too much".
+%
+% Fix up spacing before and after displayed math
+% (arraystretch seems to do a fine job for inside LaTeX displayed math,
+% since array and eqnarray seem to be affected as expected).
+% Changing \baselinestretch and doing a font change also works if done here,
+% but then you have to change @setsize to remove the call to @nomath)
+%
+\everydisplay{
+ \abovedisplayskip \baselinestretch\abovedisplayskip%
+ \belowdisplayskip \abovedisplayskip%
+ \abovedisplayshortskip \baselinestretch\abovedisplayshortskip%
+ \belowdisplayshortskip \baselinestretch\belowdisplayshortskip}
+%
+% end "set_sp.sty"
+%%% ====================================================================
diff --git a/macros/latex209/contrib/misc/settosize.sty b/macros/latex209/contrib/misc/settosize.sty
new file mode 100644
index 0000000000..66267c6c0e
--- /dev/null
+++ b/macros/latex209/contrib/misc/settosize.sty
@@ -0,0 +1,50 @@
+%%% The user needs to be able to specify the width for text, and
+%%% use the largest point size necessary to fill that width.
+%%%
+%%% After macros by Phil Taylor January 1993;
+%%% converted to LaTeX style file (needs NFSS) and changed syntax
+%%% by Sebastian Rahtz, February 1993.
+
+%%% \Fontname: like \fontname, but voids any size specifier
+%%% Usage: \Fontname \font {} %%% don't omit {} !!!
+
+\edef \Fontname
+ {\noexpand \expandafter \noexpand \stripsize \noexpand \fontname \space}
+\def \stripsize #1 #2#{#1}
+
+\newcount \pts@f@r
+\newdimen \set@width
+
+\def\massage@fontname#1 #2:{\def\curr@fontname{#1}}
+
+\def \scaletowidth#1#2{%
+ \set@width #1
+ \edef\f@name{\fontname\font\space:}%
+ \expandafter\massage@fontname\f@name
+ \pts@f@r \f@size
+ \setbox 0 = \hbox{#2}%
+ \ifdim \wd 0 < \set@width
+ \def\@increment{1}%
+ \def\@test{<}%
+ \else
+ \def\@increment{-1}%
+ \def\@test{>}%
+ \fi
+ \loop
+ \font\temp@font=\curr@fontname\space at \the\pts@f@r pt
+ \setbox 0 = \hbox{{\temp@font #2}}%
+ \message {\curr@fontname->\the \pts@f@r...}%
+ \ifdim \wd 0 \@test \set@width
+ \advance \pts@f@r by \@increment
+ \repeat
+ \advance \pts@f@r by -\@increment
+ \message {The calculated font size is \the \pts@f@r pt}%
+ \font\temp@font=\curr@fontname\space at \the\pts@f@r pt
+ \hbox to \set@width {\hss{\temp@font #2}\hss}%
+ }
+\endinput
+
+
+Example:
+
+\scaletowidth{50cm}{Now is the time for the Party}
diff --git a/macros/latex209/contrib/misc/sfwmac.sty b/macros/latex209/contrib/misc/sfwmac.sty
new file mode 100644
index 0000000000..3b75864e59
--- /dev/null
+++ b/macros/latex209/contrib/misc/sfwmac.sty
@@ -0,0 +1,60 @@
+% LaTeX support for writing UNIX-style documentation
+
+
+% UNIX-style references
+
+\def\sfwFILfont{\sl}
+
+\def\@egaux#1#2#3{%
+ \def#1##1{%
+ #2\begingroup \tt \let\do=\@makeother \dospecials
+ \def\@tempa####1##1{####1\endgroup#3}\@tempa
+ }%
+}
+
+\def\pgm#1{\mbox{\it#1}\index{#1}} % programs
+\def\xpgm#1#2{\mbox{\it#1}\index{\noexpand\noexpand\noexpand#2{}}}
+\def\man#1(#2){\xpgm{#1\/}{#1}(#2)} % manual entries
+\@egaux\arg{`{}}{'{}} % arguments to programs
+\@egaux\switch{`{}-}{'{}} % switches to programs
+\def\file#1{\mbox{\sfwFILfont#1}} % filename
+
+
+% Commonly used software systems
+
+\def\sfwPGMfont{\tt}
+
+\def\@sfwdef#1#2{\@sfwaux{#1/}{#2}}
+\def\@sfwaux#1#2{\def#1{\mbox{#2}\index{\noexpand\noexpand\noexpand#1{}}}}
+
+\@sfwdef\EMACS{\sfwPGMfont EMACS}
+\@sfwdef\INFO{\sfwPGMfont INFO}
+\@sfwdef\MLisp{\sfwPGMfont MLisp}
+
+\@sfwdef\SendMail{\sfwPGMfont SendMail}
+\@sfwdef\UUCP{\sfwPGMfont UUCP}
+
+\def\AmS{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em$\cal S$}
+\@sfwaux\AmSTeX{\rm \AmS-\TeX}
+
+\@sfwaux\PhDTeX{\rm P\kern-.05em{\sc h\kern-.025em D}\kern-0.08em\TeX}
+
+\@sfwaux\LaTeX{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em\TeX}
+\@sfwaux\BibTeX{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em\TeX}
+\@sfwaux\SLiTeX{\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em\TeX}
+\@sfwaux\BibTeX{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em\TeX}
+
+\@sfwdef\WEB{\sfwPGMfont WEB}
+
+\@sfwdef\Prolog{\sfwPGMfont Prolog}
+\@sfwdef\Lisp{\sfwPGMfont Lisp}
+
+\@sfwdef\DBUG{\sfwPGMfont DBUG}
+
+\@sfwdef\troff{\sfwPGMfont troff}
+\@sfwdef\nroff{\sfwPGMfont nroff}
+\@sfwdef\Miranda{\sfwPGMfont Miranda}
+\@sfwdef\AiM{\sfwPGMfont AiM}
+\@sfwdef\ASN{\sfwPGMfont ASN.1}
+\@sfwdef\ISODE{\sfwPGMfont ISODE}
+
diff --git a/macros/latex209/contrib/misc/shsulet.sty b/macros/latex209/contrib/misc/shsulet.sty
new file mode 100644
index 0000000000..30db8d9b7f
--- /dev/null
+++ b/macros/latex209/contrib/misc/shsulet.sty
@@ -0,0 +1,394 @@
+% Save file as: SHSULET.STY Source: FILESERV@SHSU.BITNET
+% SHSULET.STY Document Style -- with liberal extractions from
+% Leslie Lamport's ARTICLE.STY
+\typeout{Document Style 'shsulet'. Released August 10, 1989}
+\typeout{Letterhead design -- Sam Houston State University}
+\typeout{}
+% Letterhead style file for use in LaTeX. Default institution is Sam Houston
+% State University. Copyright, 1989, George D. Greenwade
+% Author: George D. Greenwade, Director, Center for Business and Economic
+% Research, Sam Houston State Univeristy, Huntsville, TX 77341-2056
+% Voice: (409) 294-1518 BITNET: BED_GDG@SHSU
+% Original Release: August 10, 1989 (GDG)
+% Modification History: August 14, 1989 \memo option added (GDG)
+%
+% This style is provided for public domain use. The author provides no
+% warranty, express or implied, regarding the fitness of this code for any
+% specific use, nor for any loss associated with its use. Any comments or
+% suggestions regarding enhancement of this style will be welcomed by the
+% author. NOTE: THIS IS A MAIN STYLE FILE AND IS NOT DESIGNED TO BE USED
+% AS A SUB-STYLE OF ANY EXISTING LaTeX STYLE FILES.
+%
+% Usage (example):
+% \documentstyle{shsulet}
+% \sender{George D. Greenwade}
+% \title{Ph.D., Director}
+% \dept{Center for Business and Economic Research}
+% \deptaddress{P. O. Box 2056\\
+% Huntsville, TX 77341-2056 \hfill Bitnet: bed\_gdg@shsu}
+% \deptphone{(409) 294-1518}
+% \toname{Dr. Martin J. Anisman}
+% \toaddress{Office of the President\\
+% Sam Houston State University \\
+% Huntsville, TX 77341-2001}
+% \prepare{GDG:ltx}
+% \cc{Leslie Lamport \\ Donald E. Knuth}
+% \re{Letterhead style file in \LaTeX}
+% \attach{1}{Commands for use in {\tt shsulet.sty}}
+% \encl{2}{{\sl The \TeX book}\\
+% {\sl \LaTeX\ A Document Preparation System}}
+% \letterhead
+%
+% Text of the letter. Paragraphs are block style and a proper skip is provided
+% so that \verb+\\+ characters are not needed.
+%
+% \closing
+%
+% Alternatively, if a memo on letterhead is desired, replace the command
+% \letterhead with the command \memo. This creates a memo-style document.
+
+% The code for shsulet
+
+\def\@ptsize{1} % This style uses a basic article layout
+\@options % in 11 point (hardcoded), which accepts sub-style
+\input art11.sty \relax % arguments (useful for personal styles to define
+ % many standard definitions for a user).
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Standard article definitions %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\labelenumi{\arabic{enumi}.}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{(\alph{enumii})}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+
+\def\verse{\let\\=\@centercr
+ \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent 1.5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\descriptionlabel#1{\hspace\labelsep \bf #1}
+\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+\let\enddescription\endlist
+
+\def\theequation{\arabic{equation}}
+
+\arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt
+\tabbingsep \labelsep
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt
+
+\newcounter{part}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+
+\def\thepart{\Roman{part}} \def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\def\footnoterule{\kern-3\p@
+ \hrule width .4\columnwidth
+ \kern 2.6\p@}
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
+
+\setcounter{topnumber}{2}
+\def\topfraction{.7}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.3}
+\setcounter{totalnumber}{3}
+\def\textfraction{.2}
+\def\floatpagefraction{.5}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{
+ \vskip 10pt
+ \setbox\@tempboxa\hbox{#1: #2}
+ \ifdim \wd\@tempboxa >\hsize \unhbox\@tempboxa\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Figure \thefigure}
+\def\figure{\@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+\newcounter{table}
+\def\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Table \thetable}
+\def\table{\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+% SHSULET Style specific %
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Page layouts
+\textwidth 6.5in
+\textheight 8.8in
+\topmargin .15in
+\topsep .4em
+\oddsidemargin 0in
+\headheight 9pt
+\headsep 12pt
+\parskip .7em
+\parindent 0pt
+\partopsep 0pt
+\itemsep .4em
+\raggedbottom
+
+% Penalties
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+\brokenpenalty=10000 % No broken words across columns/pages
+\widowpenalty=10000 % No widows at bottom of page
+\clubpenalty=10000 % No orphans at top of page
+\widowpenalty=10000 % No widows at bottom of page
+\clubpenalty=10000 % No orphans at top of page
+
+\newdimen\headlinenames
+\headlinenames=\textwidth \advance \headlinenames-5mm
+
+% Information to be included --
+% Legend for notes: f.p.=for personalization, f.l.=for letterhead,
+% f.t.=for text, f.c.=for closing
+\def\instname#1{\gdef\@instname{#1}} % Institution name (f.l.)
+ \gdef\@instname{Sam Houston State University}
+ %--Default institution SHSU
+\def\sender#1{\def\sender{#1}\gdef\@sender{#1}}
+ % Sender's name (f.p.)
+ \gdef\@sender{}
+\def\title#1{\gdef\@title{, #1}} % Sender's title (f.p.)
+ \gdef\@title{} %--Default title empty
+\def\dept#1{\edef\dept{#1}} % Sender's department (f.l.)
+\def\deptphone#1{\edef\deptphone{#1}} % Sender's phone (f.l.)
+\def\deptaddress#1{\def\deptaddress{#1}} % Sender's address (f.l.)
+\def\toname#1{\gdef\@toname{To: #1} \def\toname{#1}}
+ % Recipient's name (f.t.)
+ \gdef\@toname{} %--Default recipient empty
+\def\toaddress#1{\gdef\@toaddress{#1} \def\toaddress{#1}}
+ % Recipients address (f.t.)
+ \gdef\@toaddress{} %--Default address empty
+\def\closingtext#1{\gdef\@closingtext{#1}} % Closing phrase (f.t.)
+ \gdef\@closingtext{Sincerely,} %--Default closing is Sincerely,
+\def\date#1{\gdef\@date{#1}} % Date of letter (f.t.)
+ \gdef\@date{\today} %--Default date is \today
+\def\nodate{\gdef\@date{ }} % Don't date letter
+\def\re#1{\gdef\@re{\vspace*{.1in}\ \\
+RE: #1 }\gdef\topic{#1}} % Subject of letter (f.t.)
+ \gdef\@re{} \gdef\topic{} %--Default subject is empty
+\def\signature#1{\gdef\@signature{#1}} % Sender's signature (f.c.)
+ \gdef\@signature{\sender} %--Default signature is \sender
+\def\runhead#1{\gdef\@runhead{#1}} % User specified left heading
+ \gdef\@runhead{} %--No specialized heading
+\def\downshift#1{\gdef\@downshift{#1}}
+ \gdef\@downshift{0}
+
+\def\headertext{\ifx\@empty \@toname \let\@toname\@runhead \fi
+\ifx\@empty \@toname {\@date} \else
+{\ignorespaces\@toname \hfil \@date } \fi}
+
+\def\personalline{\ifx\@empty\@sender {} \else
+{\vspace*{1mm} \ \\
+\hspace*{-12mm} {\sf \sender\@title} \\ } \fi} % \vspace*{.1in}\ \\
+
+\def\prepare#1{\gdef\@prepare{\ \\ #1\ \\}}
+\gdef\@prepare{}
+
+\def\cc#1{\gdef\@cc{cc: \begin{tabular}[t]{l}
+#1 \\
+\end{tabular}\ \\}}
+\gdef\@cc{}
+
+\def\attach#1#2{\def\attcount{#1} \def\attlist{#2} \gdef\@attach{\ \\
+Attached \ifx\@empty \attcount {} %#1 {}
+\else {(#1)}
+\fi
+\ifx\@empty #2 {}
+\else
+{\begin{tabular}[t]{l}
+#2 \\
+\end{tabular}\ \\}
+\fi
+}}
+\gdef\@attach{}
+
+\def\encl#1#2{\def\enccount{#1} \def\enclist{#2} \gdef\@encl{\ \\
+Enclosed \ifx\@empty \enccount {} %#1 {}
+\else {(#1)}
+\fi
+\ifx\@empty #2 {}
+\else
+{\begin{tabular}[t]{l}
+#2 \\
+\end{tabular}\ \\}
+\fi
+}}
+\gdef\@encl{}
+
+\def\ps@headings{\def\@oddhead{\sl \headertext
+\hfil Page \thepage}\def\@oddfoot{}}
+
+\def\ps@empty{\def\@oddhead{}\def\@oddfoot{}\def\@evenhead{}\def\@evenfoot{}}
+
+\pagestyle{headings}
+\thispagestyle{empty}
+\pagenumbering{arabic}
+
+\def\letterhead{\begin{document}
+\vspace*{-.8in}
+\begin{center}
+{\Huge\bf \@instname}\\
+\end{center}
+{\large \sc
+\begin{tabular}[t]{p{\headlinenames}}
+\dept \hfill \deptphone \\
+\deptaddress \\
+\end{tabular}}\newline
+\rule[.7ex]{6.5in}{.4mm}\\
+\ifx\@empty \personalline \vspace*{-.5in}\\
+ \else
+\personalline \\
+\fi
+\rule{0pt}{\@downshift in}\\
+\@date\\
+\ifx\@empty \@toname {} \else
+{\vspace*{.1in}\ \\
+\hspace*{-2mm}\begin{tabular}{l}
+\toname \\ \end{tabular}\ \\ }\fi
+\ifx\@empty \@toaddress {} \else
+{\hspace*{-2mm}\begin{tabular}{l}
+\toaddress \\
+\end{tabular}\ \\} \fi
+\@re
+}
+
+\def\memo{\begin{document}
+\vspace*{-.8in}
+\begin{center}
+{\Huge\bf \@instname}\\
+\end{center}
+{\large \sc
+\begin{tabular}[t]{p{\headlinenames}}
+\dept \hfill \deptphone \\
+\deptaddress \\
+\end{tabular}}\newline
+\rule[.7ex]{6.5in}{.4mm}\\
+\ifx\@empty \personalline \vspace*{-.5in}\\
+ \else
+\personalline
+\fi
+\vspace*{-3mm}
+\begin{center}
+{\large\bf MEMORANDUM}
+\end{center}
+{%\vspace*{.1in}\ \\
+\hspace*{-2mm}\begin{tabular}{ll}
+To: & \toname \\ %\\
+From: \rule{0pt}{5mm} & \@signature \\ %\\
+Date: \rule{0pt}{5mm} & \@date \\
+%@re
+RE: \rule{0pt}{5mm} & \topic \\
+\end{tabular}\ \\ }
+\closingtext{}
+\signature{\vspace*{-.8in}}
+}
+
+\def\closing{\vspace*{\parskip}
+\begin{minipage}{6in}
+\@closingtext\ \\
+\vspace*{.4in} \ \\
+\@signature\ \\
+\ifx\@empty \@prepare {} \else
+{\@prepare} \fi
+\ifx\@empty \@cc {} \else
+{\@cc} \fi
+\ifx\@empty \@attach {} \else
+{\@attach} \fi
+\ifx\@empty \@encl {} \else
+{\@encl} \fi
+\end{minipage}
+\end{document}
+}
+
+\def\letterheadcopy{\begin{document}
+\vspace*{-.8in}
+\begin{center}
+{\Huge\bf \@instname}\\
+\end{center}
+{\large \sc
+\begin{tabular}[t]{p{\headlinenames}}
+\dept \hfill \deptphone \\
+\deptaddress \\
+\end{tabular}}\newline
+\rule[.7ex]{6.5in}{.4mm}\\
+\ifx\@empty \personalline \vspace*{-.5in}\\
+ \else
+\personalline \\
+\fi
+\rule{0pt}{\@downshift in}\\
+\@date \rule{4in}{0pt}{\huge\bf COPY}\\
+\ifx\@empty \@toname {} \else
+{\vspace*{.1in}\ \\
+\hspace*{-2mm}\begin{tabular}{l}
+\toname \\ \end{tabular}\ \\ }\fi
+\ifx\@empty \@toaddress {} \else
+{\hspace*{-2mm}\begin{tabular}{l}
+\toaddress \\
+\end{tabular}\ \\} \fi
+\@re
+}
+
diff --git a/macros/latex209/contrib/misc/side.sty b/macros/latex209/contrib/misc/side.sty
new file mode 100644
index 0000000000..778569fbe1
--- /dev/null
+++ b/macros/latex209/contrib/misc/side.sty
@@ -0,0 +1,74 @@
+%% Save file as: SIDE.STY Source: FILESERV@SHSU.BITNET
+%+
+% Name:
+% side.sty
+% Purpose:
+% Include sideways (landscape) tables and figures in LaTeX documents
+% by defining new environments called sidetable and sidefigure.
+% Three options are available for placement along the width of the
+% printed page:
+% flush top [t]
+% centered (default) [c]
+% flush bottom [b]
+% Standard LaTeX behavior (flush left) is preserved in the other
+% direction.
+% Usage:
+% \documentstyle[side,...]{...}
+%
+% \begin{sidetable}
+% \caption{\label{mysidetable} A landscape floating table on a page.}
+% \begin{center}
+% \begin{tabular}{|l|c|}
+% \hline
+% Column1&Column2\\
+% Line1&\\
+% &Line2\\
+% \hline
+% \end{tabular}
+% \end{center}
+% \end{sidetable}
+%
+% \begin{sidefigure}
+% \hbox to \textheight{\hss \fbox{CENTERED FIGURE}\hss}
+% \caption{\label{mysidefigure} A landscape floating figure on a page.}
+% \end{sidefigure}
+% Restrictions:
+% Works only with PostScript.
+% Requires rotate.tex (part of dvips distribution)
+% Modification History:
+% write, 17 Oct 91, F.K.Knight and M.F.Ryba, MIT Lincoln Laboratory
+% add placement options, 3 Dec 91, FKK
+%-
+%
+% =====>> Both environments use rotate.tex
+%
+\ifx\undefined\rotl\input{rotate}\fi
+\newbox\rotbox
+
+% from psfig
+\edef\sideRestoreAt{\catcode`@=\number\catcode`@\relax}
+\catcode`\@=11\relax
+%
+% =====>> Sidetable: a rotated table environment.
+% =====>> Since \newenvironment can't take definition with optional args,
+% =====>> mimic code for \parbox in latex.tex.
+%
+\def\sidetable{\@ifnextchar [{\@sidetable}{\@sidetable[c]}}
+\long\def\@sidetable[#1]{\begin{table}[p]%
+ \setbox\rotbox\vbox to \textwidth\bgroup\hsize=\textheight
+ \if #1t\else\vss\fi
+ \if #1b\edef\@sideend{}\else\edef\@sideend{\vss}\fi}
+\long\def\endsidetable{\@sideend\egroup \rotl\rotbox\end{table}}
+%
+% =====>> Sidefigure: a rotated figure environment,
+%
+\def\sidefigure{\@ifnextchar [{\@sidefigure}{\@sidefigure[c]}}
+\long\def\@sidefigure[#1]{\begin{figure}[p]%
+ \setbox\rotbox\vbox to \textwidth\bgroup\hsize=\textheight
+ \if #1t\else\vss\fi
+ \if #1b\edef\@sideend{}\else\edef\@sideend{\vss}\fi}
+\long\def\endsidefigure{\@sideend\egroup \rotl\rotbox\end{figure}}
+%
+% =====>> FINISH
+%
+\sideRestoreAt
diff --git a/macros/latex209/contrib/misc/sines.tex b/macros/latex209/contrib/misc/sines.tex
new file mode 100644
index 0000000000..4d5cbc4daf
--- /dev/null
+++ b/macros/latex209/contrib/misc/sines.tex
@@ -0,0 +1,47 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% macros to calculate sines from 90 to -90
+% Jim Walker, Dept Mathematics, University of South Carolina
+\newdimen\x
+\newdimen\y
+\newdimen\xsquare
+\newdimen\xfourth
+{% change char codes
+ \catcode`\p=12
+ \catcode`\t=12
+ \gdef\numonly#1pt{%
+ \def\xx{#1}%
+ }%
+}%
+\def\MULTyBYx{%
+ \expandafter\numonly\the\x
+ \edef\b{\y=\xx\y}%
+ \b
+}%
+\def\calcsin{% Find sin(\x) and put it in \y. Say \x is in degrees.
+ \x=0.0174533\x % Convert to radians.
+ \y=\x
+ \MULTyBYx
+ \xsquare=\y
+ \MULTyBYx
+ \MULTyBYx
+ \xfourth=\y
+ \y=1pt
+ \advance\y by -0.1666666\xsquare
+ \advance\y by 0.008333333\xfourth
+ \MULTyBYx
+}%
+% Example of use:
+%\x=23pt \calcsin \expandafter\numonly\the\y
+% Now \xx should contain the sine of 23 degrees.
+%\def\sine#1{\x=#1 \calcsin \expandafter\numonly\the\y \message{sine of
+%#1 is \xx}}
+%----------------------------------------------------------
+% given a box with width W and height H, then its height after rotation by R
+% is W * sin(R) + H * cos(R), and it extends W * cos(R) to the right
+% and H * sin(R) to the left
+% (arithmetic courtesy of Nico Poppelier)
+%
+\newdimen\xh\newdimen\xw\newdimen\xtemp\newdimen\xcos\newdimen\xsin
+\newdimen\xleft\newdimen\xright
+\def\MULTxtempBYxcos{\expandafter\numonly\the\xcos\edef\b{\xtemp=\xx\xtemp}\b}%
+\def\MULTxtempBYxsin{\expandafter\numonly\the\xsin\edef\b{\xtemp=\xx\xtemp}\b}%
diff --git a/macros/latex209/contrib/misc/slem.sty b/macros/latex209/contrib/misc/slem.sty
new file mode 100644
index 0000000000..5a60bb6ab0
--- /dev/null
+++ b/macros/latex209/contrib/misc/slem.sty
@@ -0,0 +1,14 @@
+%
+% Modify \em so that is uses \sl rather than \it
+%
+% Richard Furuta
+% Department of Computer Science
+% University of Maryland
+% College Park, MD 20742
+%
+% furuta@mimsy.umd.edu
+% seismo!umcp-cs!furuta
+%
+% October 22, 1986, first release
+%
+\renewcommand{\pem}{\ifdim \fontdimen\@ne\font >\z@ \rm \else \sl \fi}
diff --git a/macros/latex209/contrib/misc/smaller.sty b/macros/latex209/contrib/misc/smaller.sty
new file mode 100644
index 0000000000..0576f422de
--- /dev/null
+++ b/macros/latex209/contrib/misc/smaller.sty
@@ -0,0 +1,40 @@
+%Date: Thu, 1 Feb 90 15:23:02 EST
+%From: Bernie Cosell <cosell@WILMA.BBN.COM>
+%Subject: Relative font sizing in LaTeX
+%Keywords: LaTeX, font sizing
+%
+% Modified 1-May-1990 Don Hosek to allow it to work properly when input
+% by another .sty file.
+%
+%One continual annoyance to me is that LaTeX does absolute font sizing,
+%and so if you have some \newcommand that uses the sizing commands to
+%achieve some graphic effect, you'll discover that your chapter heads
+%and footnotes and such are pretty screwed up [in a recent case, I
+%wanted a fake small-caps-san-serif font, and so I used {\small\sf
+%NOWISTHETIME}, which did just what I wanted in the running text, but
+%was an unmitigated disaster in the chapter heads]. I think that the
+%following is a significant improvement: \smaller and \larger changes
+%the point size *relatively* by one slot, and so I made my definition:
+%{\smaller\sf NOWISTHETIME}, and it all magically works. The
+%definitions are:
+
+\def\smaller{\ifx\@currsize\Huge \protect\huge \else
+ \ifx\@currsize\huge \protect\LARGE \else
+ \ifx\@currsize\LARGE \protect\Large \else
+ \ifx\@currsize\Large \protect\large \else
+ \ifx\@currsize\large \protect\normalsize \else
+ \ifx\@currsize\normalsize \protect\small \else
+ \ifx\@currsize\small \protect\footnotesize \else
+ \ifx\@currsize\footnotesize \protect\scriptsize \else
+ \protect\tiny
+ \fi\fi\fi\fi\fi\fi\fi\fi}
+\def\larger{\ifx\@currsize\tiny \protect\scriptsize \else
+ \ifx\@currsize\scriptsize \protect\footnotesize \else
+ \ifx\@currsize\footnotesize \protect\small \else
+ \ifx\@currsize\small \protect\normalsize \else
+ \ifx\@currsize\normalsize \protect\large \else
+ \ifx\@currsize\large \protect\Large \else
+ \ifx\@currsize\Large \protect\LARGE \else
+ \ifx\@currsize\LARGE \protect\huge \else
+ \protect\Huge
+ \fi\fi\fi\fi\fi\fi\fi\fi}
diff --git a/macros/latex209/contrib/misc/smalltalk.sty b/macros/latex209/contrib/misc/smalltalk.sty
new file mode 100644
index 0000000000..9a30dde0fc
--- /dev/null
+++ b/macros/latex209/contrib/misc/smalltalk.sty
@@ -0,0 +1,161 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Mario Wolczko",
+%%% version = "3",
+%%% date = "21 May 1992",
+%%% time = "21:02:11 BST",
+%%% filename = "smalltalk.sty",
+%%% address = "Dept of Computer Science
+%%% The University of Manchester
+%%% Oxford Road
+%%% Manchester M13 9PL
+%%% UK",
+%%% telephone = "+44-61-275-6146",
+%%% FAX = "+44-61-275-6236",
+%%% checksum = "56043 161 377 5156",
+%%% email = "mario@cs.man.ac.uk (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, Smalltalk programming language",
+%%% supported = "yes",
+%%% docstring = "Useful for typesetting small fragments of
+%%% the Smalltalk programming language",
+%%% }
+%%% ====================================================================
+%
+% example:
+%
+% \begin{smalltalk}
+% \category{Magnitudes-Numbers}
+% \class{Integer}
+% \superclass{Object}
+% \instvars{a b c}
+% \protocol{arithmetic functions}
+% \begin{method}{factorial}
+% | f |
+% self isZero
+% ifTrue: [n _ 1]
+% ifFalse: [n _ self * (self - 1) factorial].
+% ^n
+% \end{method}
+% \classmeths
+% ...
+% \end{smalltalk}
+%
+
+% warning: if you put a Smalltalk environment inside a list (e.g.,
+% itemize, description, etc, then don't have a paragraph skip between
+% it and the next item. Example:
+% \begin{itemize}
+% \item blah blah
+% \begin{smalltalk}
+% code
+% \end{smalltalk} % don't put a blank line after this
+% \item ....
+%
+
+
+\def\@fmtname{lplain}
+\def\@psfmtname{pslplain}
+
+\newenvironment{smalltalk}{\@beginst}{\@endst}
+
+\def\st{\protect\@st}
+\def\@st{\@setSTcatcodes\smalltalkfont} % for in-line code
+
+\newdimen\stindent \stindent=\parindent
+
+\def\@beginst{\everymath{}\vskip1ex \leftskip=\stindent
+ \baselineskip=\stbaselineskip \parskip=0pt
+% \parskip=\stbaselineskip
+ \@setSTcatcodes\@vobeyspaces\obeylines\noindent\smalltalkfont}
+
+\newdimen\stbaselineskip \stbaselineskip\baselineskip
+
+\def\@endst{\vskip1ex
+ \global\everypar={{\setbox0=\lastbox}%
+ \global\everypar={}%
+ \global\let\par=\@@par}
+ \global\let\par=\@undonoindent}
+\def\@undonoindent{\global\everypar={}\global\let\par=\@@par\@@par}
+
+\def\class#1{\noindent\hbox to 7em{\rm class\hfil}\smalltalkfont
+ #1\par\vskip 1ex\relax}
+
+\def\category#1{\noindent\hbox to 7em{\rm category\hfil}\smalltalkfont
+ #1\par\vskip 1ex\relax}
+
+\def\protocol#1{\noindent\hbox to 7em{\rm protocol\hfil}\smalltalkfont
+ #1\par\vskip 1ex\relax}
+
+\def\superclass#1{\noindent\hbox to 7em{\rm superclass\hfil}\smalltalkfont
+ #1\par\vskip 1ex\relax}
+
+\def\instvars#1{\noindent\hbox to 9em{\rm instance variables\hfil}\smalltalkfont
+ #1\par\vskip 1ex\relax}
+
+\def\classmeths{\noindent\rm class methods\par\vskip 1ex\relax}
+
+\newenvironment{method}{\@beginmethod}{\@endmethod}
+
+\ifx\fmtname\@fmtname % standard LaTeX is OK
+ \ifx\selectfont\@undefined
+ \def\smalltalkfont{\sf}
+ \ifcase\@ptsize
+ \font\smalltalkboldfont=cmssbx10
+ \or
+ \font\smalltalkboldfont=cmssbx10 scaled\magstep1
+ \or
+ \font\smalltalkboldfont=cmssbx10 scaled\magstep2
+ \fi
+ \else
+ \def\smalltalkfont{\family{cmss}\series{m}\shape{n}\selectfont}
+ \def\smalltalkboldfont{\family{cmss}\series{bx}\shape{n}\selectfont}
+ \fi
+\else \ifx\fmtname\@psfmtname % so is pslatex
+ \ifx\selectfont\@undefined
+ \def\smalltalkfont{\sf}
+ \ifcase\@ptsize
+ \font\smalltalkboldfont=phvb0 at 9pt
+ \or
+ \font\smalltalkboldfont=phvb0 at 10pt
+ \or
+ \font\smalltalkboldfont=phvb0 at 11pt
+ \fi
+ \else
+ \def\smalltalkfont{\family\sfdefault\series{m}\shape{n}\selectfont}
+ \def\smalltalkboldfont{\family\sfdefault\series{b}\shape{n}\selectfont}
+ \fi
+\else % SliTeX is different
+ \font\smalltalkboldfont=cmssbx10 at 20.74pt
+ \def\smalltalkfont{\rm}
+\fi\fi
+
+\def\@beginmethod#1{\vbox\bgroup\noindent{\smalltalkboldfont#1}}
+
+\def\@st@under{$\leftarrow$}
+\def\@st@uparrow{$\uparrow$}
+\def\@st@bar{$\mid$}
+\def\@st@lt{$\mathchar"313C$}
+\def\@st@gt{$\mathchar"313E$}
+%\def\@st@minus{$\mathchar"2200$}
+
+{\catcode`\_=\active \catcode`\^=\active \catcode`\|=\active
+ \catcode`\<=\active \catcode`\>=\active%\catcode`\-=\active
+ \gdef\@setSTcatcodes{%
+ \@makeother\#\@makeother\%\@makeother\~%
+ \catcode`\_=\active \catcode`\^=\active \catcode`\|=\active
+ \catcode`\<=\active \catcode`\>=\active%\catcode`\-=\active
+ \let_\@st@under \let^\@st@uparrow \let|\@st@bar
+ \let<\@st@lt \let>\@st@gt}} %\let-\@st@minus}}
+
+%{\catcode`\_=\active \catcode`\^=\active \catcode`\|=\active
+% \catcode`\<=\active \catcode`\>=\active%\catcode`\-=\active
+% \gdef\@setSTcatcodes{%
+% \@makeother\#\@makeother\%\@makeother\~%
+% \catcode`\_=\active \catcode`\^=\active \catcode`\|=\active
+% \catcode`\<=\active \catcode`\>=\active%\catcode`\-=\active
+% \def_{$\leftarrow$}\def^{$\uparrow$}\def|{$\mid$}%
+% \def<{$\mathchar"313C$}\def>{$\mathchar"313E$}}}
+% \def-{$\mathchar"2200$}}}
+
+\def\@endmethod{\strut\egroup}
diff --git a/macros/latex209/contrib/misc/sober.sty b/macros/latex209/contrib/misc/sober.sty
new file mode 100644
index 0000000000..2bfd1a71fb
--- /dev/null
+++ b/macros/latex209/contrib/misc/sober.sty
@@ -0,0 +1,147 @@
+% SOBER.STY van Nico Poppelier
+% --------------------------------------
+% Koppen van secties, subsecties, ...
+% --------------------------------------
+%
+% --------------------------------------
+% fontgrootte en regelafstand
+% (met de notatie X/Y wordt bedoeld
+% 'letter X op regelafstand Y')
+% --------------------------------------
+%
+% 10pt 11pt 12pt
+% \scriptsize 7/ 8 8/ 9.5 8/ 9.5
+% \tiny 5/ 6 6/ 7 6/ 7
+% \small 9/11 10/12 11/13.6
+% \footnotesize 8/ 9.5 9/11 10/12
+% \@normalsize 10/12 11/13.6 12/15
+% \large 12/14 12/14 14/18
+% \Large 14/18 14/18 17/22
+% \LARGE 17/22 17/22 20/25
+% \huge 20/25 20/25 25/30
+% \Huge 25/30 25/30 25/30
+%
+% de syntax van \@startsection is:
+% \@startsection
+% {Name}{Level}{Indent}{Before_skip}{After_Skip}{Type_face}
+% Indent : inspring van kop vanaf linkermarge
+% Before_skip: wit boven kopje
+% (< 0 geeft aan dat eerste alinea niet inspringt)
+% After_skip : wit onder kopje indien >= 0
+% horizontaal wit na kopje,
+% met kopje op de regel indien < 0
+%
+% notatie voor <glue>: <dimen>(<stretch>)(<shrink>)
+%
+% in LaTeX's standaard-stijlen (onafhankelijk van \@ptsize):
+%
+% Indent Before_skip After_skip Type_face
+% section 0 -3.5ex (-1ex)(-0.2ex) 2.3ex(0.2ex) \Large\bf
+% subsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \large\bf
+% subsubsection 0 -3.25ex(-1ex)(-0.2ex) 1.5ex(0.2ex) \normalsize\bf
+% paragraph 0 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf
+% subparagraph \parindent 3.25ex( 1ex)( 0.2ex) -1em()() \normalsize\bf
+%
+%
+% in een soberder uitvoering (onafhankelijk van \@ptsize):
+%
+\def\section{\@startsection{section}{1}
+{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}}
+\def\subsection{\@startsection{subsection}{2}
+{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}
+{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\sc}}
+\def\paragraph{\@startsection{paragraph}{4}
+{\z@}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}}
+\def\subparagraph{\@startsection{subparagraph}{4}
+{\parindent}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}}
+%
+% --------------------------------------
+% Hoofdstuk-koppen
+% --------------------------------------
+%
+% LaTeX's book style (standaard documentstijl) definieert
+% de hoofdstuk-koppen onafhankelijk van \@ptsize
+%
+\def\@makechapterhead#1{\vspace*{20pt}%
+{\parindent 0pt\Large\bf \ifnum\c@secnumdepth>\m@ne\thechapter \fi
+ \parbox[t]{0.7\textwidth}{\raggedright #1}\par\nobreak \vskip25pt} }
+%
+\def\@makeschapterhead#1{
+ \vspace*{20pt} { \parindent 0pt \raggedright
+ \LARGE\bf#1\par\nobreak\vskip25pt } }
+%
+% --------------------------------------
+% List-omgevingen (itemize en enumerate)
+% --------------------------------------
+%
+% De volgende parameters zijn relevant in een list-omgeving:
+%
+% \labelsep : afstand tussen label en item
+% \labelwidth : breedte van label
+% \leftmargin : afstand tussen linkermarge en item
+% \rightmargin : afstand tussen item en rechtermarge
+% \listparindent: indentatie voor vervolg-alinea's in item
+% \parsep : verticaal wit tussen vervolg-alinea's in item
+% \itemsep : verticaal wit tussen opeenvolgende item's
+% \topsep,
+% \partopsep : wit boven item 1 = \topsep + \parskip
+% (geen alinea-overgang boven lijst)
+% wit boven item 1 = \topsep + \parskip + \partopsep
+% (alinea-overgang boven lijst)
+%
+% zie verder LaTeX-boek 5.7.1 en C.5.3
+% --------------------------------------
+%
+% De parameters voor niveau 1 worden gedefinieerd op top-niveau en
+% \@listi definieert uitsluitend \leftmargin
+%
+% size = small (9pt, 10pt, 11pt)
+\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep}
+% \topsep 4pt(2pt)(2pt) 6pt(2pt)(2pt) 9pt(3pt)(5pt)
+% \parsep 2pt(1pt)(1pt) 3pt(2pt)(1pt) 4.5pt(2pt)(1pt)
+%
+% size = footnotesize (8pt, 9pt, 10pt)
+\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep}
+% \topsep 3pt(1pt)(1pt) 4pt(2pt)(2pt) 6pt(2pt)(2pt)
+% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 3pt(2pt)(1pt)
+%
+% size = normalsize (and bigger)
+% \parskip 0pt(1pt) 0pt(1pt) 0pt(1pt)
+% \parindent 15pt 17pt 1.5em
+% \topsep 8pt(2pt)(4pt) 9pt(3pt)(5pt) 10pt(4pt)(6pt)
+% \partopsep 2pt(1pt)(1pt) 3pt(1pt)(2pt) 3pt(2pt)(2pt)
+% \itemsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt
+% \parsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt)
+\topsep 0.4ex \partopsep 0pt \itemsep 0pt \parsep 0pt
+%
+% \leftmargini 2.5em \leftmarginii 2.2em \leftmarginiii 1.87em
+% \leftmarginiv 1.7em \leftmarginv 1.0em \leftmarginvi 1.0em
+%
+% \leftmargin\leftmargini
+% \labelwidth\leftmargini\advance\labelwidth-\labelsep
+% \labelsep 0.5em
+%
+% \def\@listi{\leftmargin\leftmargini}
+%
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+% \topsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt)
+% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt)
+ \topsep 0pt \parsep 0pt \itemsep \parsep}
+%
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+% \topsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt)
+% \partopsep 1pt(0pt)(1pt) 1pt(0pt)(1pt) 1pt(0pt)(1pt)
+ \parsep \z@ \topsep 0pt \partopsep 0pt \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}
+
diff --git a/macros/latex209/contrib/misc/spacecites.sty b/macros/latex209/contrib/misc/spacecites.sty
new file mode 100644
index 0000000000..89438fa68f
--- /dev/null
+++ b/macros/latex209/contrib/misc/spacecites.sty
@@ -0,0 +1,20 @@
+% Modifications to the "report" \documentstyle to space out citations
+% in other words, this redefines the citation style to put spaces after
+% the commas: [Furu86, Furu87] instead of [Furu86,Furu87]
+%
+% Richard Furuta
+% Department of Computer Science
+% University of Maryland
+% College Park, MD 20742
+%
+% furuta@mimsy.umd.edu
+% seismo!umcp-cs!furuta
+%
+% October 22, 1986, first release
+%
+\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}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+\hbox{\csname b@\@citeb\endcsname}}}{#1}}
diff --git a/macros/latex209/contrib/misc/spacing.sty b/macros/latex209/contrib/misc/spacing.sty
new file mode 100644
index 0000000000..530c07ff37
--- /dev/null
+++ b/macros/latex209/contrib/misc/spacing.sty
@@ -0,0 +1,51 @@
+\makeatletter
+
+% Single- and double-spacing macros for LATEX
+
+% To use these macros, simply include "spacing" as an optional argument to the
+% \documentsyle command, e.g.,
+%
+% \documentstyle[12pt,spacing]{article}
+%
+% in your LATEX file. The options can appear in any order.
+
+% These macros are designed to be used with \begin and \end in the typical
+% LATEX-environment way, e.g.,
+%
+% \begin{singlespace}
+% .
+% .
+% .
+% \begin{doublespace}
+% .
+% .
+% .
+% \end{doublespace}
+% .
+% .
+% .
+% \end{singlespace}
+
+\def\singlespace{\par%
+ \vskip \parskip%
+ \vskip \baselineskip%
+ \def\baselinestretch{1}%
+ \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
+ \vskip -\parskip%
+ \vskip -\baselineskip}
+
+\def\endsinglespace{\par}
+
+\def\doublespace{\par%
+ \def\baselinestretch{2}%
+ \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi}
+
+\def\enddoublespace{\par%
+ \vskip \parskip%
+ \vskip \baselineskip%
+ \endgroup%
+ \vskip -\parskip%
+ \vskip -\baselineskip%
+ \begingroup}
+
+\makeatother
diff --git a/macros/latex209/contrib/misc/sqmac.tex b/macros/latex209/contrib/misc/sqmac.tex
new file mode 100644
index 0000000000..80e88cf890
--- /dev/null
+++ b/macros/latex209/contrib/misc/sqmac.tex
@@ -0,0 +1,320 @@
+% This should appear in a file named SQMAC.TEX
+\long\def\ig#1{\relax}
+\ig{Thanks to Roberto Minio for this def'n. Compare the def'n of
+\comment in AMSTeX.}
+\ig{ Copyright 1988 Michael Barr
+ Department of Mathematics and Statistics
+ McGill University
+ Montreal, Quebec, Canada
+ H3P 1S4
+
+ inhb@mcgillc.bitnet
+
+ All commercial rights reserved. May be freely distributed
+ for non-commercial use, so long as this notice is included.}
+
+\setlength{\unitlength}{.1em}
+
+\newlength{\ulabeloffset}
+\newlength{\ulabelwidth}
+\newlength{\arrowwidth}
+\newlength{\lnodewidth}
+\newlength{\rnodewidth}
+\newlength{\loffset}
+\newlength{\roffset}
+
+\newcount\tarrowflag
+\newcount\larrowflag
+\newcount\rarrowflag
+\newcount\barrowflag
+\newcount\height
+\newcount\width
+\newcount\arrowlen
+\newcount\labelheight
+
+
+% The following is like \vector, except it makes a monic (tailed) arrow.
+
+\def\mvector(#1,#2)#3
+{
+\begin{picture}(#3,#3)(-2,0)
+\put(0,4){\vector(#1,#2){#3}}
+\put(0,4){\vector(#1,#2){3}}
+\end{picture}
+}
+
+% The following is like \vector, except it makes an epic (2-headed) arrow.
+
+\def\evector(#1,#2)#3
+{
+\arrowlen #3
+\begin{picture}(\arrowlen,\arrowlen)(-2,0)
+\put(0,4){\vector(#1,#2){\arrowlen}}
+\advance \arrowlen by -4
+\put(0,4){\vector(#1,#2){\arrowlen}}
+\end{picture}
+}
+
+
+\catcode`@=11 % unhide @sign definitions
+
+\def\absvector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
+\@linelen=#3
+\ifnum\@xarg =0 \@vvector
+ \else \ifnum\@yarg =0 \@hvector \else \@svector\fi
+\fi}
+
+\catcode`@=12 % @signs are no longer letters
+
+\ig{This definition of \function below is a modification of one due to
+Charles Wells whose idea it was to try to make the length of the arrow
+depend on the sizes of the nodes. Much elaborated, it forms the basis
+of the square macro.}
+
+\newcommand{\setwidths}[4]
+{
+\settowidth{\lnodewidth}{#1}
+\settowidth{\rnodewidth}{#2}
+\setlength{\loffset}{0.5\lnodewidth}
+\setlength{\roffset}{0.5\rnodewidth}
+\addtolength{\loffset}{3\unitlength} %allows a little space
+\addtolength{\roffset}{3\unitlength} %before & after the arrow
+\setlength{\arrowwidth}{#4\unitlength}
+\addtolength{\arrowwidth}{-\loffset}
+\addtolength{\arrowwidth}{-\roffset}
+\setlength{\ulabeloffset}{\loffset}
+\settowidth{\ulabelwidth}{#3}
+\advance\ulabeloffset by .5\arrowwidth
+\advance\ulabeloffset by -.5\ulabelwidth
+}
+
+\newcommand{\dofunc}[4]
+{
+\setwidths{#1}{#2}{#3}{#4}
+\begin{picture}(0,0)
+\put(0,0){\makebox(0,0){#1}}
+\put(-3,0){\hspace{\loffset}\absvector(1,0){\arrowwidth}}
+\put(#4,0){\makebox(0,0){#2}}
+\put(0,4){\hspace{\ulabeloffset}{#3}\hspace{\ulabeloffset}}
+\end{picture}
+}
+
+
+% The four parameters are (lnode,rnode;label,width)
+\def\func(#1,#2;#3;#4)
+{ %begin func
+\makebox(0,0){\dofunc{#1}{#2}{#3}{#4}
+}%end box
+}%end func
+
+
+\ig{The next procedure is to set parameters for a square. The six
+parameters are all numbers. The first 4 flag the four arrows of the
+square as follows:
+
+ top or bottom left or right
+ arrow arrow
+
+ < -3 leftwards, normal upwards, normal ( <----- )
+ -3 leftwards, epic upwards, epic ( <<---- )
+ -2 leftwards, monic upwards, monic ( <----< )
+ -1 leftwards, normal upwards, normal ( <----- )
+ 0 omitted omitted
+ 1 rightwards, normal downwards, normal ( -----> )
+ 2 rightwards, epic downwards, epic ( ---->> )
+ 3 rightwards, monic downwards, monic ( >----> )
+ > 3 rightwards, normal downwards, normal ( -----> )
+
+In other words, when the parameter is positive, the arrow goes in the
+ordinary (linguistic) direction and when negative, in the opposite
+direction. When the parameter is 0, the arrow is omitted. When the
+absolute valute of the parameter is 2, you get a monic (tailed) arrow
+and when it is 3, you get an epic (double headed) arrow. Any other
+non-zero value gives an normal arrow.
+
+The last 2 parameters, for which 60 and 70 are a reasonable values, are
+the distance between the vertical, resp. horizontal arrows in
+increments of .1 em.
+
+The procedure \resetparms sets the first 4 of these parameters to 1 and
+the last two to 60 and 70.
+
+NOTE: ONE OF THE PROCEDURES \setparms OR \resetparms SHOULD BE EXECUTED
+BEFORE A SQUARE IS MADE.
+
+The procedure \square takes 8 parameters, in the format
+[#1`#2`#3`#4;#5`#6`#7`#8] which are in order,
+[NW`NE`SW`SE;t`l`r`b], the first four being the nodes and the last four
+the labels on the arrows.
+
+The top and bottom arrows have their lengths automatically adjusted to
+compensate for the widths of the nodes. Thus 50 will be a reasonable
+value for the width parameter, but only if the labels are not too long.
+The examples below show how these squares may be fitted together to make
+more complicated diagrams. Although it may be possible in principle to
+superimpose the joint arrow, it seems safer to omit one of them. Minor
+arithmetic errors might otherwise result in thick lines. Note, in the
+examples, the use of the procedure \phantom to make the arrow lengths
+proper, while avoiding overlapping nodes.
+
+Note the \hspace and \space used to properly space them. I don't
+understand the spacing rules used in picture mode to figure out how to
+do these automatically and so they are determined by trial and error. I
+suspect they depend on the widths of the nodes and the heights of the
+labels. Also note the blank lines between the two squares in the second
+example. This is necessary for proper spacing.}
+
+\ig{In case you are interested why I used the peculiar syntax for the
+parameters, it is because I didn't like to type braces and I also didn't
+want to use things like parens and commas that I am likely to use as
+parts of nodes and arrows. But feel free to change this syntax.}
+
+\def\setparms[#1`#2`#3`#4;#5`#6]
+{
+\tarrowflag #1
+\larrowflag #2
+\rarrowflag #3
+\barrowflag #4
+\width #5
+\height #6
+}
+
+\newcommand{\resetparms}
+{
+\tarrowflag1
+\larrowflag1
+\rarrowflag1
+\barrowflag1
+\width50
+\height50
+}
+
+\resetparms %initializes defaults
+
+\ig{The parameters are the nodes and arrows in linguistic order.
+Note: if one of the nodes has an asscript, then the other one on
+the same line must too. Use an empty box (e.g. blah_{}) if necessary.}
+\def\square[#1`#2`#3`#4;#5`#6`#7`#8]%
+{
+\advance \height by 30
+\begin{picture}(\width,\height)(0,4)
+\arrowlen\height
+\labelheight\height
+\divide\labelheight by 2
+\advance \height by -15
+\advance \arrowlen by -44
+
+\setwidths{#1}{#2}{#5}{\width}
+\put(0,\height){\makebox(0,0){#1}}
+\ifnum\tarrowflag>0
+ \put(-3,\height){\hspace{\loffset}\absvector(1,0){\arrowwidth}}
+ \ifnum\tarrowflag=3
+ \advance\arrowwidth by -4\unitlength
+ \put(-3,\height){\hspace{\loffset}\absvector(1,0){\arrowwidth}}
+ \fi
+ \ifnum\tarrowflag=2
+ \put(-1,\height){\hspace{\loffset}\absvector(1,0){\unitlength}}
+ \fi
+\else\ifnum\tarrowflag<0
+ \advance\loffset by \arrowwidth
+ \put(-3,\height){\hspace{\loffset}\absvector(-1,0){\arrowwidth}}
+ \ifnum\tarrowflag=-3
+ \advance\arrowwidth by -4\unitlength
+ \put(-3,\height){\hspace{\loffset}\absvector(-1,0){\arrowwidth}}
+ \fi
+ \ifnum\tarrowflag=-2
+ \put(-5,\height){\hspace{\loffset}\absvector(-1,0){\unitlength}}
+ \fi
+\fi\fi
+
+\put(\width,\height){\makebox(0,0){#2}}
+\advance \height by 4
+\put(0,\height){\hspace{\ulabeloffset}{#5}\hspace{\ulabeloffset}}
+
+\advance \height by -11
+\ifnum\larrowflag>0
+ \put(0,\height){\vector(0,-1){\arrowlen}}
+ \ifnum\larrowflag=3
+ \advance\arrowlen by -4
+ \put(0,\height){\vector(0,-1){\arrowlen}}
+ \advance\arrowlen by 4
+ \fi
+ \ifnum\larrowflag=2
+ \advance \height by -2
+ \put(0,\height){\vector(0,-1){1}}
+ \advance \height by 2
+ \fi
+\else\ifnum\larrowflag<0
+ \advance\height by-\arrowlen
+ \put(0,\height){\vector(0,1){\arrowlen}}
+ \ifnum\larrowflag=-3
+ \advance\arrowlen by -4
+ \put(0,\height){\vector(0,1){\arrowlen}}
+ \advance\arrowlen by 4
+ \fi
+ \ifnum\larrowflag=-2
+ \advance \height by 2
+ \put(0,\height){\vector(0,1){1}}
+ \advance \height by -2
+ \fi
+ \advance\height by\arrowlen
+\fi\fi
+
+\ifnum\rarrowflag>0
+ \put(\width,\height){\vector(0,-1){\arrowlen}}
+ \ifnum\rarrowflag=3
+ \advance\arrowlen by -4
+ \put(\width,\height){\vector(0,-1){\arrowlen}}
+ \fi
+ \ifnum\rarrowflag=2
+ \advance \height by -2
+ \put(\width,\height){\vector(0,-1){1}}
+ \fi
+\else\ifnum\rarrowflag<0
+ \advance\height by-\arrowlen
+ \put(\width,\height){\vector(0,1){\arrowlen}}
+ \ifnum\rarrowflag=-3
+ \advance\arrowlen by -4
+ \put(\width,\height){\vector(0,1){\arrowlen}}
+ \advance\arrowlen by 4
+ \fi
+ \ifnum\rarrowflag=-2
+ \advance \height by 2
+ \put(\width,\height){\vector(0,1){1}}
+ \advance \height by -2
+ \fi
+\fi\fi
+
+\put(-3,\labelheight){\makebox(0,0)[r]{#6}}
+\advance \width by 3
+\put(\width,\labelheight){\makebox(0,0)[l]{#7}}
+\advance \width by -3
+
+\setwidths{#3}{#4}{#8}{\width}
+\put(0,15){\makebox(0,0){#3}}
+\ifnum\barrowflag>0
+ \put(-3,15){\hspace{\loffset}\absvector(1,0){\arrowwidth}}
+ \ifnum\barrowflag=3
+ \advance\arrowwidth by -4\unitlength
+ \put(-3,15){\hspace{\loffset}\absvector(1,0){\arrowwidth}}
+ \fi
+ \ifnum\barrowflag=2
+ \put(-1,15){\hspace{\loffset}\absvector(1,0){\unitlength}}
+ \fi
+\else\ifnum\barrowflag<0
+ \advance\loffset by \arrowwidth
+ \put(-3,15){\hspace{\loffset}\absvector(-1,0){\arrowwidth}}
+ \ifnum\barrowflag=-3
+ \advance\arrowwidth by -4\unitlength
+ \put(-3,15){\hspace{\loffset}\absvector(-1,0){\arrowwidth}}
+ \fi
+ \ifnum\barrowflag=-2
+ \put(-5,15){\hspace{\loffset}\absvector(-1,0){\unitlength}}
+ \fi
+\fi\fi
+\put(\width,15){\makebox(0,0){#4}}
+\put(0,7){\hspace{\ulabeloffset}{#8}\hspace{\ulabeloffset}}
+\end{picture}
+}
+ý SMTPUSER HMCVAX 5/14/88
+þ INHB@MCGILLC.BITNET DHOSEK@HMCVAX.BITNE 5/14/88 No subject
diff --git a/macros/latex209/contrib/misc/sqsample.tex b/macros/latex209/contrib/misc/sqsample.tex
new file mode 100644
index 0000000000..e475f637e6
--- /dev/null
+++ b/macros/latex209/contrib/misc/sqsample.tex
@@ -0,0 +1,143 @@
+%This file should be called sqsample.tex
+\documentstyle[12pt]{article}
+\pagestyle{empty}
+\def\colim{\mathop{\rm colim}\nolimits}
+\newcommand{\bp}{\begin{picture}}
+\newcommand{\ep}{\end{picture}}
+\begin{document}
+\input sqmac
+
+\setparms[0`-1`-2`-3;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+\hspace{5em}
+\setparms[-1`-2`-3`-4;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+
+\setparms[-2`-3`-4`0;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+\hspace{5em}
+\setparms[-3`-4`0`-1;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+
+\setparms[-4`0`-1`-2;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+
+\setparms[0`1`2`3;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+\hspace{5em}
+\setparms[1`2`3`4;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+
+\setparms[2`3`4`0;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+\hspace{5em}
+\setparms[3`4`0`1;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+
+\setparms[4`0`1`2;70`70]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+
+%In the diagrams below, the parameters specify that the squares are
+%height 90 units (approximately 90 points) and the left and right arrows
+%are, respectively, monic and epic. The horozontal backspace of 21 units
+%was determined by trial and error and depends in a way I don't
+%understand on the sizes of the nodes. In the second square the upper
+%arrow is monc, the left hand one omitted, the right hand arrow epic and
+%the bottom ordinary. The nodes marked \phantom are used to calculate
+%the lengths of the arrows, but are not actually printed. For more
+%information, see the commentary in the file squarmac.tex.
+
+\begin{center}
+\makebox
+{
+\setparms[1`2`-3`-1;60`90]
+\square[$AAAAA$`$BB$`$DD$`$CCC$;$f$```$g$]
+\hspace{-14\unitlength}
+\setparms[2`0`3`1;60`90]
+\square[\phantom{$BB$}`$EEEE$`\phantom{$CCC$}`$FFF$;$l$``$m$`$n$]
+}
+\end{center}
+
+\newpage
+
+\ig{I have been unable to figure out how to center a diagram like the
+one below, since every attempt to cause a cr gives an error to the
+centering macro. It can be done by eye, of course. It is also hard ot
+prevent a page break here.}
+
+\setparms[1`1`1`1;60`70]
+\square[$AAA$`$BB$`$C$`$DDDD$;$f$`$g$`$h$`$k$]
+
+\tarrowflag0
+\vspace{-31\unitlength}
+\setparms[1`1`1`1;60`80]
+\square[\phantom{$C$}`\phantom{$DDDD$}`$EE$`$FFF$;$l$``$m$`$n$]
+
+\ig{
+In the diagrams below (which, together with the surrounding text, are from
+an actual paper) the fact that there is a blank line above the text and
+not, but a \\ below, is because that is what works. Instead, one could
+have a blank line below and begin the next line with \noindent. If \\
+is used to separate the text above from the square, then \hspace has no
+effect, although \hspace* would probably work. It appears that one
+cannot put such a diagram into a {center} environment. I get an
+"impossible" error message, but I assume that was the real reason.
+
+This illustrates the use of \vector to add other arrows to a diagram.
+In general, I don't know how, except by trial and error, to say exactly
+where these arrows should go, but I assume that with experience, it will
+become easier to place them.
+
+One more comment: If the parameters are set inside a proedure, then they
+will be reset when that environment is exited. On the other hand the
+line \tarrowflag3 above set a parameter globally and then resetting it
+in the first of the diagrams below does not reset it for the second. It
+is probably to ALWAYS set or rest the parameters so that if a diagram is
+moved, or something inserted above it, it will always be correct.}
+
+Now let $A$ be an arbitrary object of ${\cal A}$ that satisfies all the Horn
+sentences. Like any object of ${\cal A}$, $A$ is a filtered colimit of
+finitely presented algebras. Write $A=\colim A_i$. Then we have a
+diagram for each $i$
+
+\hspace{7em}
+\bp(0,70)
+\put(37,44){\vector(-1,-1){26}}
+\setparms[1`1`1`1;40`40]
+\square[$A_i$`$\Phi\Psi A_i$`$A$`$\Phi\Psi A$;$f_i$```$f$]
+\ep\\
+where the diagonal arrow exists because $A$ satisfies all those Horn
+sentences. Since $\Psi$ is a left adjoint, it preserves filtered
+colimits and $\Phi$ does by assumption. Taking colimits, we get
+
+\hspace{6em}
+\bp(0,70)
+\put(63,44){\vector(-2,-1){52}}
+\setparms[1`1`1`1;68`40]
+\square[$\colim A_i$`$\colim\Phi\Psi A_i$`$A$`$\colim\Phi\Psi A$;```]
+\ep
+
+From the fact that both vertical arrows are isomorphisms, it follows by
+an easy diagram chase that the diagonal is too.
+
+\ig{ The following illustrates a minor flaw in the \square macro and two
+possible workarounds. Neither is perfect; the first still doesn't leave
+them lined up perfectly (apparently because superscripts don't go up as
+far as subscripts go down) while the second leaves the nodes on the same
+line, but leaves both of them a bit high with respect to the arrow than
+unadorned nodes. Only a perfectionist will notice anything wrong with
+either of them}
+
+\resetparms\width70
+\square[$AAAAA_1$`$BB$`$CCC$`$DD$;$f$```$g$]
+
+\resetparms\width70
+\square[$AAAAA_1^{}$`$BB$`$CCC$`$DD$;$f$```$g$]
+\hspace{10em}
+\resetparms\width70
+\square[$AAAAA_1$`$BB_{}$`$CCC$`$DD$;$f$```$g$]
+
+
+\end{document}
+ý SMTPUSER HMCVAX 5/14/88
+þ INHB@MCGILLC.BITNET DHOSEK@HMCVAX.BITNE 5/14/88 No subject
diff --git a/macros/latex209/contrib/misc/sshdbk10.sty b/macros/latex209/contrib/misc/sshdbk10.sty
new file mode 100644
index 0000000000..c1a75f7349
--- /dev/null
+++ b/macros/latex209/contrib/misc/sshdbk10.sty
@@ -0,0 +1,59 @@
+% Save file as: SSHDBK10.STY Source: FILESERV@SHSU.BITNET
+% SSHDBK10.STY: Sans Serif headings for BK10 style
+% Change the headings to be in Sans Serif typefaces,
+% Also, take all sizes down a notch (huge, not Huge etc.).
+% The changes are flagged thus.
+% ^^^^
+%
+%----------------------------- part ---------------------------------------
+% From book.sty:
+%
+\def\@part[#1]#2{\ifnum \c@secnumdepth >-2\relax \refstepcounter{part}
+\addcontentsline{toc}{part}{\thepart \hspace{1em}#1}\else
+\addcontentsline{toc}{part}{#1}\fi \markboth{}{}
+ {\centering \ifnum \c@secnumdepth >-2\relax \Large\sf Part \thepart \par
+% ^^^^^^^^^
+\vskip 20pt \fi \huge \sf #1\par}\@endpart}
+% ^^^^^^^^^
+\def\@endpart{\vfil\newpage \if@twoside \hbox{} \thispagestyle{empty}
+ \newpage
+ \fi \if@tempswa \twocolumn \fi}
+\def\@spart#1{{\centering \huge \sf #1\par}\@endpart}
+% ^^^^^^^^^
+%
+%----------------------------- chapter -----------------------------------
+% From bk10.sty:
+%
+\def\@makechapterhead#1{ \vspace*{50pt} { \parindent 0pt \raggedright
+ \ifnum \c@secnumdepth >\m@ne \huge\sf \@chapapp{} \thechapter \par
+ \vskip 20pt \fi \huge \sf #1\par
+% ^^^^^^^^^
+ \nobreak \vskip 40pt } }
+
+\def\@makeschapterhead#1{ \vspace*{50pt} { \parindent 0pt \raggedright
+ \huge \sf #1\par
+%^^^^^^^^^
+ \nobreak \vskip 40pt } }
+
+%----------------------------- section -----------------------------------
+
+\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus
+ -.2ex}{2.3ex plus .2ex}{\Large\sf}}
+% ^^^
+%-------------------------- subsection -----------------------------------
+\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus
+ -.2ex}{1.5ex plus .2ex}{\large\sf}}
+% ^^^
+%-------------------------- subsubsection --------------------------------
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
+-1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\sf}}
+% ^^^
+%---------------------------- paragraph ----------------------------------
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\normalsize\sf}}
+% ^^^
+%--------------------------- subparagraph --------------------------------
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus
+ .2ex}{-1em}{\normalsize\sf}}
+% ^^^
diff --git a/macros/latex209/contrib/misc/steveshacks.tex b/macros/latex209/contrib/misc/steveshacks.tex
new file mode 100644
index 0000000000..d2aea18eb2
--- /dev/null
+++ b/macros/latex209/contrib/misc/steveshacks.tex
@@ -0,0 +1,315 @@
+Return-Path: <spqr@minster.york.ac.uk>
+Received: from minster.york.ac.uk by ftp.tex.ac.uk (4.1/SMI-4.1)
+ id AA04969; Tue, 9 Mar 93 09:31:49 GMT
+From: spqr@minster.york.ac.uk
+Date: Tue, 9 Mar 93 09:29:08
+Message-Id: <swordfish.731669420@minster.york.ac.uk>
+To: archive@ftp.tex.ac.uk
+In-Reply-To: smith@gramian.harvard.edu's message of 2 Mar 93 23:02:22 GMT
+Subject: Steve's LaTeX Hacks
+Status: RO
+
+ From: smith@gramian.harvard.edu (Steven Smith)
+ Newsgroups: comp.text.tex
+ Date: 2 Mar 93 23:02:22 GMT
+ Distribution: comp.text.tex
+ Organization: Harvard Robotics Lab, Harvard University
+
+ I recently submitted a paper to a publisher who demanded that it be in
+ LaTeX format. At first I hated this. But later, I grew to like it as
+ I learned to hack LaTeX to get it to do what I wanted. I've heard
+ several people complain about some of the LaTeX problems that I faced,
+ so I've included my fixes here for people to use.
+
+ The code is arranged in three sections: (i) LaTeX bug fixes, where I
+ fix LaTeX so that it doesn't do things that are plain wrong, (ii) LaTeX
+ hacks, where I hack LaTeX to make it conform to a style that I prefer,
+ and (iii) useful macros from Plain TeX that for some specious reason
+ are not included in LaTeX. I've also included a proof environment
+ that gives Halmos's tombstone.
+
+
+ Note to LaTeX-but-non-TeX users: I highly recommend using Plain
+ TeX macros like \pmatrix etc. You will find typing
+
+ $$\pmatrix{a&b\cr c&d}$$
+
+ much faster and easier than typing
+
+ \[\left(\begin{array}{cc}a&b\\c&d\end{array}\right)\].
+
+ Most of these macros, described in Chapters 16-19 of the TeXbook,
+ are defined in standard LaTeX, so you may use them.
+
+
+ Included below are the following:
+
+ LaTeX bug fixes:
+
+ 1. Fix eqnarray to delete those awful spaces around the relation.
+ 2. Use correct 12-point math extension font.
+ 3. Define correct 12-point \big,...,\Bigg macros.
+
+ LaTeX hacks:
+
+ 1. Add 10-point bold roman subscripts.
+ 2. Put stretchiness and new hooks in the theorem environment.
+ 3. Add an environment for proofs.
+ 4. Change LaTeX's \cite command for bold citations separated by thinspaces.
+ 5. Add Plain TeX's \headline and \footline to plain pagestyle.
+
+ Plain TeX additions:
+
+ 1. Add \eqalign.
+ 2. \overfullrule=5pt (Plain TeX's setting).
+
+
+ The code follows. All of this code should be placed in LaTeX's
+ preamble (between \documentstyle and \begin{document}). If you only
+ take part of this code, be sure to surround it in your preamble with
+ the LaTeX commands \makeatletter and \makeatother. And, of course, if
+ you don't like anything about these macros, you are free to change them.
+
+
+ \makeatletter
+
+ % LaTeX bug fixes:
+
+ % 1. Fix eqnarray to delete those awful spaces around the relation.
+
+ % Fix eqnarray's \def so that it uses the correct spacing (cf. latex.tex).
+ \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
+ \global\@eqnswtrue
+ \global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr
+ $$\halign to \displaywidth\bgroup\@eqnsel\hskip\@centering
+ $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne
+ ${{}##{}}$&\global\@eqcnt\tw@$\displaystyle\tabskip\z@{##}$\hfil
+ \tabskip\@centering&\llap{##}\tabskip\z@\cr}
+
+ % 2. Use correct 12-point math extension font.
+
+ % Use correct 12-point fonts (cf. lfonts.tex).
+ \font\twlex=cmex10 at 12pt
+ \font\eightex=cmex8
+ \font\eightbf=cmbx8
+ \font\sixbf=cmbx6
+
+ \def\xiipt{\textfont\z@\twlrm
+ \scriptfont\z@\egtrm \scriptscriptfont\z@\sixrm
+ \textfont\@ne\twlmi \scriptfont\@ne\egtmi \scriptscriptfont\@ne\sixmi
+ \textfont\tw@\twlsy \scriptfont\tw@\egtsy \scriptscriptfont\tw@\sixsy
+ \textfont\thr@@\twlex \scriptfont\thr@@\eightex \scriptscriptfont\thr@@\eightex
+ \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath
+ \textfont\@ne\twlmi
+ \textfont\tw@\twlsy \textfont\lyfam\twlly
+ \@boldfalse}\@boldfalse
+ \def\boldmath{\@ifundefined{twlmib}{\global\font\twlmib\@mbi\@magscale1\global
+ \font\twlsyb\@mbsy \@magscale1\global\font
+ \twllyb\@lasyb\@magscale1\relax\@addfontinfo\@xiipt
+ {\def\boldmath{\everymath
+ {\mit}\everydisplay{\mit}\@prtct\@nomathbold
+ \textfont\@ne\twlmib \textfont\tw@\twlsyb
+ \textfont\lyfam\twllyb\@prtct\@boldtrue}}}{}\@xiipt\boldmath}%
+ \def\prm{\fam\z@\twlrm}%
+ \def\pit{\fam\itfam\twlit}\textfont\itfam\twlit \scriptfont\itfam\egtit
+ \scriptscriptfont\itfam\sevit
+ \def\psl{\fam\slfam\twlsl}\textfont\slfam\twlsl
+ \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl
+ \def\pbf{\fam\bffam\twlbf}\textfont\bffam\twlbf
+ \scriptfont\bffam\eightbf \scriptscriptfont\bffam\sixbf
+ \def\ptt{\fam\ttfam\twltt}\textfont\ttfam\twltt
+ \scriptfont\ttfam\nintt \scriptscriptfont\ttfam\nintt
+ \def\psf{\fam\sffam\twlsf}\textfont\sffam\twlsf
+ \scriptfont\sffam\tensf \scriptscriptfont\sffam\tensf
+ \def\psc{\@getfont\psc\scfam\@xiipt{\@mcsc\@magscale1}}%
+ \def\ly{\fam\lyfam\twlly}\textfont\lyfam\twlly
+ \scriptfont\lyfam\egtly \scriptscriptfont\lyfam\sixly
+ \@setstrut \rm}
+
+ % 3. Define correct 12-point \big,...,\Bigg macros (cf. lplain.tex).
+
+ \def\big#1{{\hbox{$\left#1\vbox to10\p@{}\right.\n@space$}}}
+ \def\Big#1{{\hbox{$\left#1\vbox to13\p@{}\right.\n@space$}}}%
+ \def\bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}%
+ \def\Bigg#1{{\hbox{$\left#1\vbox to21\p@{}\right.\n@space$}}}%
+
+
+ % LaTeX hacks:
+
+ % 1. Add 10-point bold roman subscripts.
+
+ % Use correct 10-point bold subscript fonts like Plain TeX (cf. lfonts.tex).
+ \font\eightex=cmex8
+ \font\sevenbf=cmbx7
+ \font\fivebf=cmbx5
+
+ \def\xpt{\textfont\z@\tenrm
+ \scriptfont\z@\sevrm \scriptscriptfont\z@\fivrm
+ \textfont\@ne\tenmi \scriptfont\@ne\sevmi \scriptscriptfont\@ne\fivmi
+ \textfont\tw@\tensy \scriptfont\tw@\sevsy \scriptscriptfont\tw@\fivsy
+ \textfont\thr@@\tenex \scriptfont\thr@@\eightex \scriptscriptfont\thr@@\eightex
+ \def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath
+ \textfont\@ne\tenmi
+ \textfont\tw@\tensy \textfont\lyfam\tenly
+ \@boldfalse}\@boldfalse
+ \def\boldmath{\@ifundefined{tenmib}{\global\font\tenmib\@mbi
+ \global\font\tensyb\@mbsy
+ \global\font\tenlyb\@lasyb\relax\@addfontinfo\@xpt
+ {\def\boldmath{\everymath{\mit}\everydisplay{\mit}\@prtct\@nomathbold
+ \textfont\@ne\tenmib \textfont\tw@\tensyb
+ \textfont\lyfam\tenlyb \@prtct\@boldtrue}}}{}\@xpt\boldmath}%
+ \def\prm{\fam\z@\tenrm}%
+ \def\pit{\fam\itfam\tenit}\textfont\itfam\tenit \scriptfont\itfam\sevit
+ \scriptscriptfont\itfam\sevit
+ \def\psl{\fam\slfam\tensl}\textfont\slfam\tensl
+ \scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl
+ \def\pbf{\fam\bffam\tenbf}\textfont\bffam\tenbf
+ \scriptfont\bffam\sevenbf \scriptscriptfont\bffam\fivebf
+ \def\ptt{\fam\ttfam\tentt}\textfont\ttfam\tentt
+ \scriptfont\ttfam\tentt \scriptscriptfont\ttfam\tentt
+ \def\psf{\fam\sffam\tensf}\textfont\sffam\tensf
+ \scriptfont\sffam\tensf \scriptscriptfont\sffam\tensf
+ \def\psc{\@getfont\psc\scfam\@xpt{\@mcsc}}%
+ \def\ly{\fam\lyfam\tenly}\textfont\lyfam\tenly
+ \scriptfont\lyfam\sevly \scriptscriptfont\lyfam\fivly
+ \@setstrut \rm}
+
+ % 2. Put stretchiness and new hooks in the theorem environment.
+
+ \def\thmstretch{plus.5em minus.1em }
+ \def\thmskip{0pt \thmstretch}
+ \def\thmstart{\hskip\thmskip\ignorespaces}
+ \let\thmtextfont=\it
+ \newif\ifthmtitle \thmtitletrue % If TRUE, print text (e.g., ``Theorem'').
+
+ % Macros for paper's structure:
+
+ % These are utility macros:
+ \newtheorem{THEOREM}{Theorem}[section]
+ \newtheorem{PROPOSITION}[THEOREM]{Proposition}
+ \newtheorem{DEFINITION}[THEOREM]{Definition}
+ \newtheorem{LEMMA}[THEOREM]{Lemma}
+ \newtheorem{COROLLARY}[THEOREM]{Corollary}
+ \newtheorem{EXAMPLE}[THEOREM]{Example}
+ \newtheorem{REMARK}[THEOREM]{Remark}
+ \newtheorem{REMARKS}[THEOREM]{Remarks}
+ \newtheorem{DISCUSSION}[THEOREM]{}
+ \newtheorem{ALGORITHM}[THEOREM]{Algorithm}
+ \newtheorem{PROBLEM}[THEOREM]{Problem}
+
+ % Use these environments for their stated purpose.
+ \newenvironment{theorem}%
+ {\let\thmtextfont=\it \thmtitletrue \begin{THEOREM}}%
+ {\end{THEOREM}}
+ \newenvironment{proposition}%
+ {\let\thmtextfont=\it \thmtitletrue \begin{PROPOSITION}}%
+ {\end{PROPOSITION}}
+ \newenvironment{definition}%
+ {\let\thmtextfont=\rm \thmtitletrue \begin{DEFINITION}}%
+ {\end{DEFINITION}}
+ \newenvironment{lemma}%
+ {\let\thmtextfont=\it \thmtitletrue \begin{LEMMA}}%
+ {\end{LEMMA}}
+ \newenvironment{corollary}%
+ {\let\thmtextfont=\it \thmtitletrue \begin{COROLLARY}}%
+ {\end{COROLLARY}}
+ \newenvironment{example}%
+ {\let\thmtextfont=\rm \thmtitletrue \begin{EXAMPLE}}%
+ {\end{EXAMPLE}}
+ \newenvironment{remark}%
+ {\let\thmtextfont=\rm \thmtitletrue \begin{REMARK}}%
+ {\end{REMARK}}
+ \newenvironment{remarks}%
+ {\let\thmtextfont=\rm \thmtitletrue \begin{REMARKS}}%
+ {\end{REMARKS}}
+ \newenvironment{discussion}%
+ {\let\thmtextfont=\rm \thmtitlefalse \begin{DISCUSSION}}%
+ {\end{DISCUSSION}}
+ \newenvironment{algorithm}%
+ {\let\thmtextfont=\rm \thmtitletrue \begin{ALGORITHM}}%
+ {\end{ALGORITHM}}
+ \newenvironment{problem}%
+ {\let\thmtextfont=\rm \thmtitletrue \begin{PROBLEM}}%
+ {\end{PROBLEM}}
+
+ \newenvironment{steps}{\begin{description}}{\end{description}}
+ \def\step[#1]{\item[\rm{\it Step\/}~#1]}
+
+ % Change LaTeX's theorem format somewhat (cf. latex.tex)
+ \def\@begintheorem#1#2{\thmtextfont \trivlist \ifthmtitle
+ \item[\hskip \labelsep{\bf #1\ #2.}]\else
+ \item[\hskip \labelsep{\bf #2.}]\fi\thmstart}
+ \def\@opargbegintheorem#1#2#3{\thmtextfont \trivlist
+ \item[\hskip\labelsep{\bf #1\ #2\ {\rm(#3)}.}]\thmstart}
+
+ % 3. Add an environment for proofs.
+
+ % Proof environment with Halmos's tombstone
+ \newif\ifmathtomb \mathtombfalse
+
+ %\def\tombstone{\unskip\penalty50 % Tombstone breaks to left margin.
+ % \enskip \vrule width.3333em height.7em depth.2em
+ % \ifmmode \global\mathtombtrue \else \global\mathtombfalse \fi}
+
+ \def\tombstone{\unskip\penalty50 % Tombstone breaks to right margin.
+ \hskip 0pt plus-1fill \null\nobreak\hskip 0pt plus1fill
+ \enskip \vrule width.3333em height.7em depth.2em
+ \ifmmode \global\mathtombtrue \else \global\mathtombfalse \fi}
+ % Tombstone scores!
+
+ \newenvironment{proof}% Use \tombstone explicitly in display math
+ {\futurelet\next\pr@oftext}% Optional argument for proof text.
+ {\ifmathtomb \else \tombstone \fi \par
+ \ifmathtomb \else \addvspace{\medskipamount}\fi \global\mathtombfalse}
+ \def\pr@oftext{\ifx\next[\let\temp\opr@@ftext\else\let\temp\pr@@ftext\fi\temp}
+ \def\pr@@ftext{\beginpr@@f{Proof}}
+ \def\opr@@ftext[#1]{\beginpr@@f{#1}}
+ \def\beginpr@@f#1{\par \addvspace{\bigskipamount}\widowpenalty=10000
+ \noindent{\bf #1.}\hskip\labelsep\thmstretch % No widow lines in proofs.
+ \ignorespaces}
+
+ % The text will be ``Proof'' unless an optional argument [] is used.
+ % The syntax should be TeX-equivalent to one of the following:
+ %
+ % \begin{proof} Text. \end{proof}
+ % \begin{proof} Text $$math.\tombstone$$ \end{proof}
+
+ % 4. Change LaTeX's \cite command for bold citations separated by thinspaces.
+
+ \def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{,\penalty\@m\thinspace }\@ifundefined
+ {b@\@citeb}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ \hbox{\bf\csname b@\@citeb\endcsname}}}{#1}}
+ %\hbox{\small\bf\csname b@\@citeb\endcsname}}}{#1}} % Give \small citation #'s.
+
+ % 5. Add Plain TeX's \headline and \footline to plain pagestyle.
+
+ \newtoks\headline \headline={\hfil} % headline is normally blank
+ \newtoks\footline \footline={\hss\rm\thepage\hss}
+ % footline is normally a centered page number in font \tenrm
+
+ % Change \ps@plain to include running headline information (cf. latex.tex).
+ \def\ps@plain{\let\@mkboth\@gobbletwo
+ \def\@oddhead{\the\headline}\let\@evenhead\@oddhead
+ \def\@oddfoot{\the\footline}\let\@evenfoot\@oddfoot}
+ % Odd and even cases are lumped into one macro as in Plain TeX.
+
+ \pagestyle{plain} % Run \pagestyle to incorporate changes.
+
+
+ % Plain TeX additions:
+
+ % 1. Add \eqalign.
+
+ \def\eqalign#1{\null\,\vcenter{\openup\jot\m@th
+ \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil
+ \crcr#1\crcr}}\,}
+
+ % 2. \overfullrule=5pt (Plain TeX's setting).
+
+ \overfullrule=5pt % Plain TeX's setting
+
+ \makeatother
+
diff --git a/macros/latex209/contrib/misc/strukto.sty b/macros/latex209/contrib/misc/strukto.sty
new file mode 100644
index 0000000000..2dc3c19046
--- /dev/null
+++ b/macros/latex209/contrib/misc/strukto.sty
Binary files differ
diff --git a/macros/latex209/contrib/misc/subtabfg.sty b/macros/latex209/contrib/misc/subtabfg.sty
new file mode 100644
index 0000000000..8b0560af92
--- /dev/null
+++ b/macros/latex209/contrib/misc/subtabfg.sty
@@ -0,0 +1,72 @@
+%% FILE: subtabfg in SYS2.TEX.PUB.ISULATEX.STYLES
+%% AUTHOR: Erica M. S. Harris
+%% DATE: August 1990
+%% DESCR: Style option for subnumbering tables and figures.
+%% Use \subfigures to start subnumbering figures; \newsubfigure
+%% to start a new set of subfigures; and \nosubfigures to turn
+%% subfigure numbering off. These commands should be used outside the
+%% figure environment. The subfigures can be labelled and referred to
+%% as usual. If you want to label an entire set of subfigures use the
+%% \figurelabel command after the \caption for one of the subfigures in
+%% the set.
+%% Similarly, Use \subtables to start subnumbering tables;
+%% \newsubtable to start a new set of subtables; and \nosubtables
+%% to turn subtable numbering off. These commands should be used
+%% outside the table environment. The subtables can be labelled and
+%% referred to as usual. If you want to label an entire set of
+%% subtables use the \tablelabel command after the \caption for one
+%% of the subtables in the set.
+%%
+%% MODS:
+%%
+\newcounter{mainfigure}
+
+\def\subfigures{\setcounter{mainfigure}{\c@figure}
+ \stepcounter{mainfigure}
+ \setcounter{figure}{0}
+ \global\let\oldthefigure\thefigure%
+ \@ifundefined{chapter}%
+ {\gdef\thefigure{\themainfigure\alph{figure}}
+ \global\let\thewholefigure\themainfigure}
+ {\gdef\thefigure{\thechapter.\themainfigure\alph{figure}}
+ \gdef\thewholefigure{\thechapter.\themainfigure}}
+ \global\let\@currentfigurelabel\thewholefigure}
+
+\def\newsubfigure{\stepcounter{mainfigure}\setcounter{figure}{0}}
+
+\def\nosubfigures{\setcounter{figure}{\c@mainfigure}
+ \@ifundefined{chapter}{\gdef\thefigure{\arabic{figure}}}%
+ {\gdef\thefigure{\thechapter.\arabic{figure}}}}
+
+\def\@currentfigurelabel{}
+
+\def\figurelabel#1{\@bsphack\if@filesw {\let\thepage\relax
+ \xdef\@gtempa{\write\@auxout{\string
+ \newlabel{#1}{{\@currentfigurelabel}{\thepage}}}}}
+ \@gtempa \if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack}
+
+\newcounter{maintable}
+
+\def\subtables{\setcounter{maintable}{\c@table}
+ \stepcounter{maintable}
+ \setcounter{table}{0}
+ \global\let\oldthetable\thetable%
+ \@ifundefined{chapter}%
+ {\gdef\thetable{\themaintable\alph{table}}
+ \global\let\thewholetable\themaintable}
+ {\gdef\thetable{\thechapter.\themaintable\alph{table}}
+ \gdef\thewholetable{\thechapter.\themaintable}}
+ \global\let\@currenttablelabel\thewholetable}
+
+\def\newsubtable{\stepcounter{maintable}\setcounter{table}{0}}
+
+\def\nosubtables{\setcounter{table}{\c@maintable}
+ \@ifundefined{chapter}{\gdef\thetable{\arabic{table}}}%
+ {\gdef\thetable{\thechapter.\arabic{table}}}}
+
+\def\@currenttablelabel{}
+
+\def\tablelabel#1{\@bsphack\if@filesw {\let\thepage\relax
+ \xdef\@gtempa{\write\@auxout{\string
+ \newlabel{#1}{{\@currenttablelabel}{\thepage}}}}}
+ \@gtempa \if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack}
diff --git a/macros/latex209/contrib/misc/suthesis.sty b/macros/latex209/contrib/misc/suthesis.sty
new file mode 100644
index 0000000000..bf27fe5cb0
--- /dev/null
+++ b/macros/latex209/contrib/misc/suthesis.sty
@@ -0,0 +1,265 @@
+% Stanford University PhD thesis style -- modifications to the report style
+% For LaTeX version 2.09
+%
+% Last edit Tue Sep 13 14:40:26 1988
+% Last edit by Joseph Pallas
+
+\typeout{Document Style Option `suthesis' <13 Sep 88>.}
+
+\long\def\comment#1{}
+\comment{
+
+ Example of use:
+ \documentstyle[12pt,suthesis]{report}
+ \begin{document}
+ \title{How to Write Theses\\
+ With Two Line Titles}
+ \author{John Henry Candidate}
+ \principaladviser{John Parker}
+ \firstreader{John Green}
+ \secondreader{John BigBooty\\(Another Department)}
+
+ \beforepreface
+ \prefacesection{Preface}
+ This thesis tells you all you need to know about...
+ \prefacesection{Acknowledgements}
+ I would like to thank...
+ \afterpreface
+
+ \chapter{Introduction}
+ ...
+ \chapter{Conclusions}
+ ...
+ \appendix
+ \chapter{A Long Proof}
+ ...
+ \bibliographystyle{plain}
+ \bibliography{mybib}
+ \end{document}
+
+Documentation:
+ This style file modifies the standard report style to follow the
+ Graduate Program Offices's "Directions for Preparing Doctoral
+ Dissertations". It sets the margins and interline spacing and
+ disallows page breaks at hyphens.
+
+ The \beforepreface command creates the title page, a copyright page
+ (optionally), and a signature page. Then the user should put
+ preface section(s), using the \prefacesection{section title}
+ command. The \afterpreface command then produces the tables of
+ contents, tables and figures, and sets things up to start
+ the main body (on arabic page 1).
+
+ The following commands can control what goes in the front matter
+ material:
+
+ \title{thesis title}
+ \author{author's name}
+ \dept{author's department}
+ - Computer Science if omitted
+ \principaladviser{the principal advisor's name}
+ (or \principaladvisor, if you prefer advisor spelled with o)
+ \firstreader{the first reader's name}
+ \secondreader{the second reader's name}
+ \submitdate{month year in which submitted to GPO}
+ - date LaTeX'd if omitted
+ \copyrightyear{year degree conferred (next year if submitted in Dec.)}
+ - year LaTeX'd (or next year, in December) if omitted
+ \copyrighttrue or \copyrightfalse
+ - produce or don't produce a copyright page (true by default)
+ \figurespagetrue or \figurespagefalse
+ - produce or don't produce a List of Figures page
+ (true by default)
+ \tablespagetrue or \tablespagefalse
+ - produce or don't produce a List of Tables page
+ (true by default)
+
+This style uses interline spacing that is 1.3 times normal, except
+in the figure and table environments where normal spacing is used.
+That can be changed by doing:
+ \renewcommand{\baselinestretch}{1.6}
+(or whatever you want instead of 1.6)
+Unfortunately, that command probably won't take effect unless it comes
+before the \begin{document} or after something like \small \normalsize.
+
+The example above shows the 12pt substyle being used. This seems to give
+acceptable looking results, but it may be omitted to get smaller print.
+
+}
+
+% First thing we do is make sure that report has been loaded. A
+% common error is to try to use suthesis as a documentstyle.
+\@ifundefined{chapter}{\@latexerr{The `suthesis' option should be used
+with the `report' document style}{You should probably read the
+suthesis documentation.}}{}
+
+% We need 1" margins except on the binding edge, where it is 1 1/2"
+% Theses are single-sided, so we don't care about \evensidemargin
+\oddsidemargin 0.5in \evensidemargin 0in
+\marginparwidth 40pt \marginparsep 10pt
+\topmargin 0pt \headsep .5in
+\textheight 8.1in \textwidth 6in
+
+% Disallow page breaks at hyphens (this will give some underfull vbox's,
+% so an alternative is to use \brokenpenalty=100 and manually search
+% for and fix such page breaks)
+\brokenpenalty=10000
+
+% Use 1.3 times the normal baseline-to-baseline skip
+\renewcommand{\baselinestretch}{1.3}
+
+% Redefine the macro used for floats (including figures and tables)
+% so that single spacing is used.
+% (Note \def\figure{\@float{figure}set single spacing} doesn't work
+% because figure has an optional argument)
+\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
+ \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
+ \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
+ \@tfor \@tempa :=#2\do
+ {\if\@tempa h\advance\@tempcnta \@ne\fi
+ \if\@tempa t\advance\@tempcnta \tw@\fi
+ \if\@tempa b\advance\@tempcnta 4\relax\fi
+ \if\@tempa p\advance\@tempcnta 8\relax\fi
+ }\global\count\@currbox\@tempcnta}\@fltovf\fi
+ \global\setbox\@currbox\vbox\bgroup
+ \def\baselinestretch{1}\@normalsize
+ \boxmaxdepth\z@
+ \hsize\columnwidth \@parboxrestore}
+
+% Redefine the macro used for footnotes to use single spacing
+\long\def\@footnotetext#1{\insert\footins{\def\baselinestretch{1}\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
+ {\rule{\z@}{\footnotesep}\ignorespaces
+ #1\strut}}}
+
+% \author, \title are defined in report; here are the rest of the
+% front matter defining macros
+\def\dept#1{\gdef\@dept{#1}}
+\def\principaladviser#1{\gdef\@principaladviser{#1}}
+\def\advis@r{Adviser} % default spelling
+\def\principaladvisor#1{\gdef\@principaladviser{#1}\gdef\advis@r{Advisor}}
+\def\firstreader#1{\gdef\@firstreader{#1}}
+\def\secondreader#1{\gdef\@secondreader{#1}}
+\def\submitdate#1{\gdef\@submitdate{#1}}
+\def\copyrightyear#1{\gdef\@copyrightyear{#1}} % \author, \title in report
+\def\@title{}\def\@author{}\def\@dept{computer science}
+\def\@principaladviser{}\def\@firstreader{}\def\@secondreader{}
+\def\@submitdate{\ifcase\the\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space \number\the\year}
+% Stanford says that December theses should have the next year as the
+% copyright year
+\ifnum\month=12
+ \@tempcnta=\year \advance\@tempcnta by 1
+ \edef\@copyrightyear{\number\the\@tempcnta}
+\else
+ \def\@copyrightyear{\number\the\year}
+\fi
+\newif\ifcopyright \newif\iffigurespage \newif\iftablespage
+\copyrighttrue \figurespagetrue \tablespagetrue
+
+
+\def\titlep{%
+ \thispagestyle{empty}%
+ \null\vskip1in%
+ \begin{center}
+ \Large\uppercase\expandafter{\@title}
+ \end{center}
+ \vfill
+ \begin{center}
+ \sc a dissertation\\
+ submitted to the department of
+ \lowercase\expandafter{\@dept}\\
+ and the committee on graduate studies\\
+ of stanford university\\
+ in partial fulfillment of the requirements\\
+ for the degree of\\
+ doctor of philosophy
+ \end{center}
+ \vfill
+ \begin{center}
+ \rm By\\
+ \@author\\
+ \@submitdate\\
+ \end{center}\vskip.5in\newpage}
+
+\def\copyrightpage{%
+ \null\vfill
+ \begin{center}
+ \large
+ \copyright\ Copyright \@copyrightyear\ by \@author\\
+ All Rights Reserved
+ \end{center}
+ \vfill\newpage}
+
+\long\def\signature#1{%
+\begin{center}
+\begin{minipage}{4in}
+\parindent=0pt
+I certify that I have read this thesis and that in my opinion
+it is fully adequate, in scope and in quality, as a dissertation for the degree
+of Doctor of Philosophy.
+\par
+\vspace{.5in}
+\hbox to 4in{\hfil\shortstack{\vrule width 3in height 0.4pt\\#1}}
+\end{minipage}
+\end{center}}
+
+\def\signaturepage{%
+ \signature{\@principaladviser\\(Principal \advis@r)}
+ \vfill
+ \signature\@firstreader
+ \vfill
+ \signature\@secondreader
+ \vfill
+ \begin{center}
+ \begin{minipage}{4in}
+ Approved for the University Committee on Graduate Studies:\par
+ \vspace{.5in}
+ \hbox to 4in{\hfil\shortstack{\vrule width 3in height 0.4pt\\
+ Dean of Graduate Studies}}
+ \end{minipage}
+ \end{center}}
+
+\def\beforepreface{
+ \pagenumbering{roman}
+ \pagestyle{plain}
+ \titlep
+ \ifcopyright\copyrightpage\fi
+ \signaturepage}
+
+\def\prefacesection#1{%
+ \chapter*{#1}
+ \addcontentsline{toc}{chapter}{#1}}
+
+\def\afterpreface{\newpage
+ \tableofcontents
+ \newpage
+ \iftablespage
+ \listoftables
+ \newpage
+ \fi
+ \iffigurespage
+ \listoffigures
+ \newpage
+ \fi
+ \pagenumbering{arabic}
+ \pagestyle{headings}}
+
+% Redefine \thebibliography to go to a new page and put an entry in the
+% table of contents
+\let\@ldthebibliography\thebibliography
+\renewcommand{\thebibliography}[1]{\newpage
+ \addcontentsline{toc}{chapter}{Bibliography}
+ \@ldthebibliography{#1}}
+
+% Start out normal
+\pagestyle{headings}
+
diff --git a/macros/latex209/contrib/misc/tabbingbox.tex b/macros/latex209/contrib/misc/tabbingbox.tex
new file mode 100644
index 0000000000..e7e25b22cb
--- /dev/null
+++ b/macros/latex209/contrib/misc/tabbingbox.tex
@@ -0,0 +1,79 @@
+% -*- Mode: TeX -*-
+
+\ifx\thisfileis\anUndefinedMacro\input maybeload \fi
+
+\thisfileis{<eb.tex.texlocal>tabbingbox} % abort loading if already loaded
+
+\input redefine % from texlocal
+
+% TABBING BOXES (LaTex)
+%
+% The \begin{tabbingbox}...\end{tabbingbox} environment saves
+% a tabbing environment in a box. This is one way to make a
+% box out of a bunch of lines and have the width of the
+% box be equal to the width of the longest line. Naturally,
+% tabbing commands are also available in the box, but they aren't
+% used much.
+%
+% An optional position argument [t], [b], or [c] as for \parbox
+% may be supplied. The default is [t].
+%
+% A second optional argument [boxnumber] causes the box to be
+% saved in the indicated box number, instead of being returned.
+% Sample use of this form: \begin{tabbingbox}[b][0]...
+%
+% As a special feature, a [boxnumber] may have the form
+% [G boxnumber] to indicate a global assignment.
+%
+
+\makeatletter
+
+\newbox\@tabbingboxbox
+
+\def\tabbingbox{\@ifnextchar[{\@argXtabbingbox}%]
+{\let\@tabboxnum\@tabbingboxbox\@tabbingbox[t]}}
+
+\def\@argXtabbingbox[#1]{\@ifnextchar
+ [{\@argYtabbingbox[#1]}{\let\@tabboxnum\@tabbingboxbox
+ \@tabbingbox[#1]}%]
+}
+
+\def\@argYtabbingbox[#1][#2]{\def\@tabboxnum{#2}\@tabbingbox[#1]}
+
+\def\@tabbingbox[#1]{\global\setbox\@tabbingboxbox
+ \hbox\bgroup\begingroup\minipage[#1]{\z@}\begingroup\tabbing}
+
+% The weird stuff with \unvbox below patches up a [b]-positioned
+% box, which for some reason gets final glue of zero that causes
+% the vbox to have zero depth and get positioned funny.
+
+\def\endtabbingbox{\global\@minipagetrue\endtabbing\endgroup
+ \endminipage
+ \setbox\@tempboxa\lastbox
+ \ifdim \dp\@tempboxa=\z@
+ \vbox{\unvbox\@tempboxa\unskip}\else\box\@tempboxa\fi
+ \global\@minipagefalse\endgroup
+ \egroup
+ \ifx\@tabboxnum\@tabbingboxbox\box\@tabboxnum
+ \else
+ \xdef\@snarftabbingbox
+ {\if G\expandafter\@car\@tabboxnum\@nil\relax
+ \global\setbox\expandafter\@cdr\@tabboxnum\relax\@nil
+ \else
+ \setbox\@tabboxnum\fi\box\@tabbingboxbox
+ }\aftergroup\@snarftabbingbox
+ \fi}
+
+%\def\endtabbingbox{\global\@minipagetrue\endtabbing\endgroup
+% \endminipage\unskip\endgroup\egroup\global\@minipagefalse
+% \ifx\@tabboxnum\@tabbingboxbox\box\@tabboxnum
+% \else
+% \xdef\@snarftabbingbox
+% {\if G\expandafter\@car\@tabboxnum\@nil\relax
+% \global\setbox\expandafter\@cdr\@tabboxnum\relax\@nil
+% \else
+% \setbox\@tabboxnum\fi\box\@tabbingboxbox
+% }\aftergroup\@snarftabbingbox
+% \fi}
+
+\makeatother
diff --git a/macros/latex209/contrib/misc/tabverb.sty b/macros/latex209/contrib/misc/tabverb.sty
new file mode 100644
index 0000000000..9daa0ec7f6
--- /dev/null
+++ b/macros/latex209/contrib/misc/tabverb.sty
@@ -0,0 +1,91 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% Verbatim With Tabbing and Page Breaks
+%
+% Written by:
+% Michael Fine
+% Distributed Systems Architecture.
+% September 1987
+%
+%
+% This environment is similar to the LaTeX verbatim environment but it
+% interpretes tab characters as usually expected. It has the
+% additional feature that a CTL-L in the verbatim environment invokes
+% the LaTeX macro \newpage (thereby giving you some control over page
+% breaks).
+%
+% There is also a command \inputverbatim which can be used to specify
+% a file to be input and typeset in the verbatim environment.
+%
+% This does not and should be made to work correctly for verbatim* as
+% well. Also, it should probably use a different name.
+%
+% Usage:
+%
+% \setlength{\tabwidth} % or
+% \settowidth{\tabwidth}{text}
+% % default is width of 8 characters of \normalsize\tt
+%
+% Then:
+% \begin{verbatim}
+% Verbatim text set in \tt font with ^L for page ejects
+% and ^I for tabs
+% \end{verbatim}
+%
+% or:
+% \inputverbatim{filename} % input a file of text
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%
+% A version message
+%
+\typeout{Tabbing Verbatim Style <September 29, 1987>}
+
+\newlength{\tabwidth}
+\settowidth{\tabwidth}{\normalsize\tt mmmmmmmm}
+ % default is 8 characters of \tt font in \normalsize
+
+\begingroup
+\catcode`\^^I=\active\def^^L{}
+
+\gdef\@newverbatim{\@verbatim
+ \def\par{\egroup\@@par\noindent
+ \@tempdima 0pt\hbox\bgroup{}}\obeylines
+ \let\ignorespaces\relax % for \@gobblecr
+ \catcode`\^^I\active
+ \def^^I{\egroup\setbox\@tempboxa\lastbox\@tempdimb \wd\@tempboxa
+ \box\@tempboxa
+ \advance\@tempdima by \@tempdimb \computeskip\penalty10000
+ \hskip\@tempdimb\advance\@tempdima by \@tempdimb
+ \hbox\bgroup{}}\def^^L{\egroup\setbox\@tempboxa\lastbox
+ \@tempdimb\wd\@tempboxa
+ \ifdim\@tempdimb=0pt\else\box\@tempboxa\fi
+ {\let\par\@@par\newpage}\noindent\hbox\bgroup\@gobblecr}\relax
+ \def\computeskip{\@tempcnta 0\@tempdimb 0pt\loop
+ \ifdim \@tempdimb<\@tempdima
+ \advance\@tempdimb by \tabwidth \advance \@tempcnta1 \repeat
+ \ifdim\@tempdima=\@tempdimb \advance\@tempcnta1\fi
+ \@tempdimb\@tempcnta \tabwidth \advance \@tempdimb
+ by -\@tempdima}}
+
+\gdef\verbatim{\@newverbatim\frenchspacing\@vobeyspaces
+ \@xverbatim\noindent\hbox\bgroup\@gobblecr}
+
+\gdef\endverbatim{\egroup\setbox\@tempboxa\lastbox
+ \@tempdimb\wd\@tempboxa
+ \ifdim\@tempdimb=0pt\else\box\@tempboxa\fi
+ \let\par\@@par\endtrivlist}
+
+%
+% Now we define \inputverbatim
+%
+% This is similar to \verbatim but does not need \@xverbatim trickery
+% to delimit the begining and end of the verbatim text.
+
+\gdef\inputverbatim#1{{\@newverbatim\frenchspacing\@vobeyspaces
+ \noindent\hbox\bgroup\input{#1}\endverbatim}}
+
+\endgroup
diff --git a/macros/latex209/contrib/misc/techreport.sty b/macros/latex209/contrib/misc/techreport.sty
new file mode 100644
index 0000000000..582cd7f6e7
--- /dev/null
+++ b/macros/latex209/contrib/misc/techreport.sty
@@ -0,0 +1,379 @@
+%$% techreport.sty
+%$% Technical Report style option to the USC Thesis/Dissertation
+%$% document-style.
+%$% $Header: techreport.sty,v 1.7 92/08/13 14:25:21 sdc Exp $
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% @LaTeX-style-file{
+%%% Author = "Steven Douglas Cochran",
+%%% Version = "1.7",
+%%% Date = "13 August 1992",
+%%% Time = "14:25:21 EDT",
+%%% Filename = "techreport.sty",
+%%% Address = "Digital Mapping Laboratory
+%%% School of Computer Science
+%%% Carnegie-Mellon University
+%%% 5000 Forbes Avenue
+%%% Pittsburgh, PA 15213-3890
+%%% USA",
+%%% Telephone = "(412) 268-5654",
+%%% FAX = "",
+%%% checksum = "22179 335 1194 11016",
+%%% Email = "sdc+@CS.CMU.EDU (Internet)",
+%%% CodeTable = "ISO/ASCII",
+%%% Keywords = "LaTeX, Technical Report",
+%%% Archives = "shsu*",
+%%% Supported = "yes",
+%%% Abstract = "LaTeX document-style option to the
+%%% USCthesis style for converting a thesis
+%%% or dissertation into a technical report."
+%%% Note = "Requires Tomas Rokicki's `rotate' style
+%%% option (or equivalent) if the spine-art
+%%% option is used.
+%%% SeeAlso = "USCthesis.sty",
+%%% DocString = "The checksum field above contains a CRC-16
+%%% the checksum as the first value, followed
+%%% by equivalent of the standard UNIX wc
+%%% (word count) utility output of lines,
+%%% words, and characters. This is produced
+%%% by Robert Solovay's checksum utility.",
+%%% }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% $Log: techreport.sty,v $
+%$% Revision 1.7 92/08/13 14:25:21 sdc
+%$% Changed the standard title page to use \@university instead of a
+%$% hardcoded name. The standard (Thesis/Dissertation) titlepage may
+%$% now be replaced by redefining \customtitlepage. Cleaned-up the
+%$% code and comments a little.
+%$%
+%$% Revision 1.6 91/03/23 01:36:48 cochran
+%$% Updated to allow the multiple volumes change to USCthesis.
+%$% Corrected bug which caused the chapters to be allowed to begin on
+%$% an even page if the preface section was not processed.
+%$%
+%$% Revision 1.5 1991/03/20 06:03:05 cochran
+%$% Modified to auto-load and use the standard rotate style.
+%$%
+%$% Revision 1.4 1991/03/15 04:51:49 cochran
+%$% Modified cover page so that it is centered. Added a "(top of
+%$% spine)" message to the spine-art page. (Maybe in the future the
+%$% Printer won't get it upside-down!)
+%$%
+%$% Revision 1.3 1991/02/09 01:04:02 cochran
+%$% Fixed bug in interaction with USCthesis and added the ability
+%$% to change the layout of the copyright line.
+%$%
+%$% Revision 1.1 90/12/03 12:33:31 cochran
+%$% Initial revision.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%$% Usage: \documentstyle[...,twoside,techreport,...]{USCthesis}
+%%%
+%$% and add the following lines before the \begin{preface}:
+%%%
+%$% \reportnumber{IRIS 256}
+%$% \acknowledgment{This research was sponsored by ...}
+%$% \address{Institute for Robotics and Intelligent Systems\\
+%$% School of Engineering\\
+%$% ...}
+%%%
+%%% An additional command has been added which allows the printing
+%%% of the art for the spine of the document. It must be used prior
+%%% to the \begin{preface}.
+%%%
+%%% \printspinetrue
+%%%
+%%% Also there is an optional argument in the \pageleft macro in the
+%%% USCthesis style which allows the gutter margin to be adjusted
+%%% for paper that is not 8.5in across:
+%%%
+%%% \paperleft[-5.75pt]{1.50in}
+%%%
+%%% (However, you will have to know how the printer aligns the pages
+%%% to make use of this feature.)
+%%%
+%%% If the copyright notice is not correct according to your
+%%% organization's practice. You can (re)define the \thecopyright
+%%% macro to give the correct form (the variables \@copyrightyrear
+%%% and \@author should have useful values in them).
+%%%
+%%% If you want the titlepage (i.e. the page inside the cover) to be
+%%% different than the standard (Thesis/Dissertation) one then you
+%%% can (re)define the \customtitlepage macro to be what you want.
+%%% Currently it creates a page that is a cross between the
+%%% techreport cover and a dissertation titlepage and includes the
+%%% following information: \@reportnumber, \@title, \@author,
+%%% \@university, \@majorfield, \@address, \@submitdate,
+%%% \@acknowledgementtext and either \@mastersdegree or
+%%% \@doctorsdegree (depending on the switch \ifthesis). \@volume
+%%% is included if non-empty. One example of a "regular" techreport
+%%% titlepage would be to add the following to your techreport
+%%% between the \documentstyle and the \begin{document}.
+%%%
+%%% \makeatletter
+%%% \def\customtitlepage{%
+%%% \vbox{%
+%%% \null
+%%% \vskip 1.69 true in
+%%% \hbox to 4.57in{%
+%%% \vbox to 2.125in{%
+%%% \vss
+%%% \begin{center}%
+%%% \vskip 0.20 true in plus 1fil
+%%% {\TechTitleSize \@reportnumber \par}%
+%%% \vskip 0.20 true in plus 2fil
+%%% {\TechTitleSize \@title\@acknowledgmentmark \par}%
+%%% \ifx\@volume\@empty\else
+%%% \vskip 0.20 true in plus 1fil
+%%% {\TechRegularSize \@volume \par}%
+%%% \fi
+%%% \vskip 0.20 true in plus 2fil
+%%% {\TechRegularSize\sl \@author \par}%
+%%% \vskip 0.20 true in plus 1fil
+%%% \end{center}%
+%%% \vss}}%
+%%% \vfill
+%%% \ifcopyright
+%%% \begin{center}%
+%%% \thecopyright
+%%% \end{center}%
+%%% \fi
+%%% \@acknowledgmenttext
+%%% \vss}}
+%%% \makeatother
+%%%
+%%% With either the default or the above \customtitlepage, you can
+%%% throw out the coverpage and the spine and use a printed cover
+%%% with a cutout box to show through the title, report number and
+%%% author.
+%%%
+%$% NOTE: This style requires a local rotate.sty that contains the
+%$% macro \rotr. If this style option is not available, the
+%$% \printspinetrue option will not work.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%
+%% Allow larger font sizes (The normal large sizes are disabled in the
+%% USCthesis style.
+%%
+\def\TechTitleSize{\@setsize\TechTitleSize{25pt}\xxpt\@xxpt}
+\def\TechRegularSize{\@setsize\TechRegularSize{18pt}\xivpt\@xivpt}
+
+%%
+%% Now define the functions to handle the titlepage blips.
+%%
+\def\reportnumber#1{%
+ \gdef\@reportnumber{#1}}
+
+\def\@acknowledgmentmark{}
+\def\@acknowledgmenttext{}
+\def\acknowledgment#1{%
+ \gdef\@acknowledgmentmark{$^{1}$}%
+ \gdef\@acknowledgmenttext{%
+ \vbox{%
+ \hrule width 2.5in
+ \vskip 3pt
+ \parbox{\textwidth}{\footnotesize \qquad $^{1}$#1}}}}
+
+\def\address#1{%
+ \gdef\@address{#1}}
+
+%%
+%% Next set up for the control of the spine art
+%%
+\newif\ifprintspine
+\printspinefalse
+
+%%
+%% Allow the copyright message to be changed.
+%%
+\def\thecopyright{%
+ \normalsize Copyright\ \ \copyright\ \ \@copyrightyear\ \ \@author}
+
+%%
+%% Now, we define the title (etc) page(s)
+%%
+\def\customtitlepage{%
+ \vbox to \textheight{%
+ \null
+ \vskip 1.69 true in
+ \hbox to 4.57in{%
+ \vbox to 2.125in{%
+ \vss
+ \begin{center}%
+ \vskip 0.20 true in plus 1fil
+ {\TechTitleSize \@reportnumber \par}%
+ \vskip 0.20 true in plus 2fil
+ {\TechTitleSize \@title\@acknowledgmentmark \par}%
+ \ifx\@volume\@empty\else
+ \vskip 0.20 true in plus 1fil
+ {\TechRegularSize \@volume \par}%
+ \fi
+ \vskip 0.20 true in plus 2fil
+ {\TechRegularSize\sl \@author \par}%
+ \vskip 0.20 true in plus 1fil
+ \end{center}%
+ \vss}}%
+ \vskip 0.15 true in plus 0.05 true in minus 0.05 true in
+ \begin{center}%
+ {\ifthesis
+ A Thesis Presented to the%
+ \else
+ A Dissertation Presented to the%
+ \fi\\
+ FACULTY OF THE \@schoolname\\
+ \@university\\
+ In Partial Fulfillment of the Requirements for the Degree\\
+ \ifthesis
+ \@mastersdegree
+ \else
+ \@doctorsdegree
+ \fi\\
+ \ifshowmajorfield
+ (\@majorfield)%
+ \fi}
+ \vskip 0.35 true in plus 0.11 true in minus 0.11 true in
+ \@address \par
+ \vskip 0.25 true in plus 0.08 true in minus 0.08 true in
+ {\bf \small \@submitdate \par}% should be just month and year
+ \end{center}%
+ \par
+ \vfill
+ \ifcopyright
+ \begin{center}%
+ \thecopyright
+ \end{center}%
+ \fi
+ \@acknowledgmenttext}}
+
+\def\maketitle{%
+ \begin{titlepage}%
+ \setcounter{page}{0}%
+ \advance\evensidemargin 0.25in%
+ \null
+ \vskip 1.54 true in
+ \hbox to 4.3125in{%
+ \vbox to 2.125in{%
+ \vss
+ \begin{center}%
+ \vskip 0.20 true in plus 1fil
+ {\TechTitleSize \@reportnumber \par}%
+ \vskip 0.20 true in plus 2fil
+ {\TechTitleSize \@title \par}%
+ \ifx\@volume\@empty\else
+ \vskip 0.20 true in plus 1fil
+ {\TechRegularSize \@volume \par}%
+ \fi
+ \vskip 0.20 true in plus 2fil
+ {\TechRegularSize\sl \@author \par}%
+ \vskip 0.20 true in plus 1fil
+ \end{center}%
+ \vss}}%
+ \vskip 0.875 true in
+ \begin{center}%
+ {\TechRegularSize \@address \par}%
+ \vskip .25 true in
+ {\TechRegularSize \@submitdate \par}% Should be just month and year
+ \end{center}%
+ \par
+ \vfill
+ \newpage
+ \advance\evensidemargin -0.25in%
+ %%
+ \ifprintspine
+ \makeatletter
+ %% Load the rotate functions if not defined.
+ \expandafter\ifx\csname rotr\endcsname\relax
+ \@input{rotate.sty}%
+ \fi
+ %% If necessary, create a temporary box for use with \rotr.
+ \expandafter\ifx\csname @rotbox\endcsname\relax
+ \newbox\@rotbox
+ \fi
+ \makeatother
+ \setcounter{page}{1}%
+ \rlap{%
+ \hbox to \textwidth{%
+ \TechRegularSize\hfil (Top of Spine)\hfil}}%
+ \nobreak
+ {\setbox\@rotbox=\hbox to \textheight{%
+ \hfil
+ {\TechTitleSize \@reportnumber}%
+ \hfil
+ \hfil
+ {\TechTitleSize \@author}%
+ \hfil}
+ \rotr\@rotbox}%
+ \newpage
+ \fi
+ %%
+ \setcounter{page}{1}%
+ \customtitlepage
+ \end{titlepage}}
+
+%%
+%% Redefine the preface and chapter so that the latter starts on odd pages
+%% (if two-sided and if past the preface section) and the former does
+%% not have this attribute (since each section of the preface
+%% environment acts like a chapter).
+%%
+\newif\if@twosidebody
+\@twosidebodytrue % Default is true
+
+% Update the PREFACE environment. The titlepage is generated when the
+% environment is first entered and the numbering is roman within the preface.
+% The \endpreface switches to arabic numbering.
+\def\preface{%
+ \newpage
+ \if@twoside % Turn off blank even pages during the preface.
+ \global\@twosidebodyfalse
+ \fi
+ \pagenumbering{roman}%
+ \pagestyle{empty}%
+ \begin{singlespace}%
+ \ifproposal
+ \makeproptitle
+ \setcounter{page}{1}%
+ \addtocounter{page}{\@startpageA}% Advance page counter for title page.
+ \else
+ \maketitle
+ \setcounter{page}{1}%
+ \addtocounter{page}{\@startpageA}% Advance page counter for (signature
+ \fi % and) title. At USC, the signature
+ \newpage % page is not counted!
+ \ifx\@volume\@empty\else % Add Volume ID to contents if present.
+ \addtocontents{toc}{\protect\contentsline{part}{\@volume}{}}%
+ \fi
+ \end{singlespace}%
+ \pagestyle{plain}}
+
+\def\endpreface{%
+ \clearpage
+ \global\@twosidebodytrue
+ \if@twoside
+ \ifodd \c@page \else
+ \hbox{}% Add a blank page at the end of the preface
+ \newpage
+ \fi
+ \fi
+ \pagenumbering{arabic}%
+ \pagestyle{plain}%
+ \setcounter{page}{\@startpageB}}
+
+%
+% Now, update the chapter to check for even/odd pages.
+%
+\def\chapter{%
+ \if@twoside
+ \if@twosidebody
+ \cleardoublepage % Start each chapter on an odd page
+ \else
+ \clearpage
+ \fi
+ \else
+ \clearpage
+ \fi
+ \thispagestyle{plain}
+ \global\@topnum\z@
+ \@afterindentfalse
+ \secdef
+ \@chapter
+ \@schapter}
diff --git a/macros/latex209/contrib/misc/tgrind.sty b/macros/latex209/contrib/misc/tgrind.sty
new file mode 100644
index 0000000000..dc567bf6ca
--- /dev/null
+++ b/macros/latex209/contrib/misc/tgrind.sty
@@ -0,0 +1,167 @@
+% LaTeX tgrind environment
+
+% Based on Van Jacobson's ``tgrindmac'', a macro package for TeX grinding
+% Our job here is to simplify it quite a bit and make it conform to LaTeX
+
+\newif\ifcomment\newif\ifstring
+\newcount\linecount\newcount\linenext
+\newbox\linesofar
+\newdimen\TBwid
+\newdimen\ts
+\newbox\tbox
+
+\def\tgrind{%
+% Stuff we ignore for right now.
+\let\Head=\@gobble
+\def\File##1,##2,##3{}
+\let\Proc=\@gobble
+\let\ProcCont=\@gobble
+%
+% Each formfeed in the input is replaced by a "\NewPage" macro. If
+% you really want a page break here, define this as "\vfill\eject".
+\def\NewPage{\filbreak\bigskip}
+%
+% Each line of the program text is enclosed by a "\L{...}". We turn
+% each line into an hbox of size hsize. If we saw a procedure name somewhere
+% in the line (i.e., "procbox" is not null), we right justify "procbox"
+% on the line. Every 10 lines we output a small, right justified line number.
+\def\L##1{\par\hbox to\hsize{\CF\strut\global\advance\linecount by1
+##1\hss\linebox}}
+%
+\linecount=0
+\linenext=9
+\def\linebox{\ifnum\linecount>\linenext\global\advance\linenext by10
+\hbox{\sevrm\the\linecount}\fi}
+%
+% The following weirdness is to deal with tabs. "Pieces" of a line
+% between tabs are output as "\LB{...}". E.g., a line with a tab at
+% column 16 would be output as "\LB{xxx}\Tab{16}\LB{yyy}". (Actually, to
+% reduce the number of characters in the .tex file the \Tab macro
+% supplies the 2nd & subsequent \LB's.) We accumulate the LB stuff in an
+% hbox. When we see a Tab, we grab this hbox (using "\lastbox") and turn
+% it into a box that extends to the tab position. We stash this box in
+% "\linesofar" & use "\everyhbox" to get \linesofar concatenated onto the
+% front of the next piece of the line. (There must be a better way of
+% doing tabs [cf., the Plain.tex tab macros] but I'm not not enough of a
+% TeX wizard to come up with it. Suggestions would be appreciated.)
+\def\LB{\CF\hbox}
+\setbox\linesofar=\null
+\everyhbox={\box\linesofar}
+\def\Tab##1{\setbox\tbox=\lastbox\TBwid=1\wd\tbox\advance\TBwid by 1\ts
+\ifdim\TBwid>##1\ts
+\setbox\linesofar=\hbox{\box\tbox\space}\else
+\setbox\linesofar=\hbox to ##1\ts{\box\tbox\hfil}\fi\LB}
+%
+% A normal space is too thin for code listings. We make spaces & tabs
+% be in "\ts" units (which are the width of a "0" in the current font).
+\setbox\tbox=\hbox{0} \ts=1\wd\tbox \setbox\tbox=\hbox{\hskip 1\ts}
+\def\space{\hskip 1\ts\relax}
+%
+% Font changing stuff for keywords, comments & strings. We put keywords
+% in boldface, comments in text-italic & strings in typewriter. Since
+% we're usually changing the font inside of a \LB macro, we remember the
+% current font in \CF & stick a \CF at the start of each new box.
+% Also, the characters " and ' behave differently in comments than in
+% code, and others behave differently in strings than in code.
+\let\CF=\rm
+\def\K##1{{\bf ##1}} % Keyword
+\def\C{\it\global\let\CF=\it\global\commenttrue\relax} % Comment Start
+\def\CE{\rm\global\let\CF=\rm\global\commentfalse\relax}% Comment End
+\def\S{\tt\global\let\CF=\tt\global\stringtrue\relax} % String Start
+\def\SE{\rm\global\let\CF=\rm\global\stringfalse\relax} % String End
+%
+% Special characters.
+\def\{{\ifmmode\lbrace\else\ifstring{\char'173}\else$\lbrace$\fi\fi}
+\def\}{\ifmmode\rbrace\else\ifstring{\char'175}\else$\rbrace$\fi\fi}
+\def\!{\ifmmode\backslash\else\ifstring{\char'134}\else$\backslash$\fi\fi}
+\def\|{\ifmmode|\else\ifstring{\char'174}\else$|$\fi\fi}
+\def\<{\ifmmode<\else\ifstring<\else$<$\fi\fi}
+\def\>{\ifmmode>\else\ifstring>\else$>$\fi\fi}
+\def\/{\ifmmode/\else\ifstring/\else$/$\fi\fi}
+\def\-{\ifmmode-\else\ifstring-\else$-$\fi\fi}
+\def\_{\ifstring{\char'137}\else\underbar{\ }\fi}
+\def\&{{\char'046}}
+\def\#{{\char'043}}
+\def\%{{\char'045}}
+\def\~{{\char'176}}
+\def\"{\ifcomment''\else{\tt\char'042}\fi}
+\def\'{\ifcomment'\else{\tt\char'047}\fi}
+\def\^{{\char'136}}
+\def\${{\rm\char'044}}
+%
+\raggedright\obeyspaces%\let =\space%
+}
+
+% \tagrind*[FLOAT]{FILE}{CAPTION}{LABEL}
+% * optional
+% FLOAT float options
+% FILE reads LaTeXgrind input in file FILE
+% CAPTION for list of figures
+% LABEL for \ref and \pageref
+\def\tagrind{\@ifstar{\@stagrind}{\@tagrind}}
+
+\def\@tagrind{\@ifnextchar[{\@@tagrind}{\@@tagrind[t]}}
+\def\@stagrind{\@ifnextchar[{\@@stagrind}{\@@stagrind[t]}}
+
+\def\@@tagrind[#1]#2#3#4{%
+ \begin{figure}[#1]
+ \hrule
+ \vskip .5\baselineskip
+ \begin{minipage}\columnwidth\small
+ \begin{tgrind}
+ \input #2\relax
+ \end{tgrind}
+ \end{minipage}
+ \vskip .5\baselineskip plus .5\baselineskip
+ \begingroup
+ \setbox\z@=\hbox{#4}%
+ \ifdim\wd\z@>\z@
+ \caption{#3}%
+ \label{#4}%
+ \else
+ \captcont{#3}%
+ \fi
+ \endgroup
+ \vskip 2pt
+ \hrule
+ \end{figure}
+}
+
+\def\@@stagrind[#1]#2#3#4{%
+ \begin{figure*}[#1]
+ \hrule
+ \vskip .5\baselineskip
+ \begin{minipage}\textwidth\small
+ \begin{tgrind}
+ \input #2\relax
+ \end{tgrind}
+ \end{minipage}
+ \vskip .5\baselineskip plus .5\baselineskip
+ \begingroup
+ \setbox\z@=\hbox{#4}%
+ \ifdim\wd\z@>\z@
+ \caption{#3}%
+ \label{#4}%
+ \else
+ \captcont{#3}%
+ \fi
+ \endgroup
+ \vskip 2pt
+ \hrule
+ \end{figure*}
+}
+
+
+\def\tgrindfile#1{%
+ \par\addvspace{0.1in}
+ \hrule
+ \vskip .5\baselineskip
+ \begin{footnotesize}
+ \begin{tgrind}
+ \input #1\relax
+ \end{tgrind}
+ \end{footnotesize}
+ \vskip .5\baselineskip
+ \hrule
+ \addvspace{0.1in}
+}
diff --git a/macros/latex209/contrib/misc/thebib-plus.readme b/macros/latex209/contrib/misc/thebib-plus.readme
new file mode 100644
index 0000000000..18cf03f757
--- /dev/null
+++ b/macros/latex209/contrib/misc/thebib-plus.readme
@@ -0,0 +1,22 @@
+thebib-plus.sty - This is for people who are using thebibliography or
+ \bibliography as defined in the standard LaTeX styles,
+ but who want the extra features described below.
+
+With this style-option:
+- the default title is "References", but can be changed by putting a
+ \renewcommand{\bibtitle}{...} command before \begin{thebibliography}
+- if the document style is such that \pagestyle{headings} is used,
+ "REFERENCES" goes in the page-heading by default, but can be changed
+ with \renewcommand{\bibheadtitle}{...}
+- thebibliography gives an \addcontentsline command, so that \tableofcontents
+ puts the bibliography (with appropriate title) in the table of contents.
+
+The files are:
+apalike-plus.sty - This is for people who want something like apalike.sty
+ (perhaps because they are using apalike.bst), but who
+ want the extra features described above.
+authordate1-4.sty - This is for people who are using one of the BibTeX
+ author-date style files authordate1.bst, ... ,
+ authordate4.bst. It redefines \cite and thebibliography,
+ and also defines a \shortcite command such that if \cite
+ gives "(Smith, 1970)", \shortcite gives "(1970)".
diff --git a/macros/latex209/contrib/misc/thebib-plus.sty b/macros/latex209/contrib/misc/thebib-plus.sty
new file mode 100644
index 0000000000..ecd0865e68
--- /dev/null
+++ b/macros/latex209/contrib/misc/thebib-plus.sty
@@ -0,0 +1,46 @@
+% This style-option file, thebib-plus.sty, is based on code taken from
+% article.doc and report.doc/book.doc.
+%
+% It differs from the standard code in that:
+% - a command \bibtitle is defined, to generate the bibliography title
+% - a command \bibheadtitle is defined, to generate the text to be used
+% by \pagestyle{headings}
+% - \bibtitle and \bibheadtitle are set to generate "References" and
+% "REFERENCES" respectively.
+% - an \addcontentsline{toc}{...}{\bibtitle} command is issued.
+% Thus:
+% - the default bibliography title is "References", but can be changed by
+% having \renewcommand{\bibtitle}{...} before \begin{thebibliography}
+% or \bibliography
+% - the default page header text is "REFERENCES", but can be changed by
+% \renewcommand{\bibheadtitle}{...}
+% - \tableofcontents will give a table of contents that mentions the
+% bibliography.
+%
+% David Rhead
+% Cripps Computing Centre
+% February 1990
+
+% Define default title and page-head text.
+%
+\def\bibtitle{References}
+\def\bibheadtitle{REFERENCES}
+
+\@ifundefined{chapter}{\def\thebibliography#1{\section*{\bibtitle\@mkboth
+ {\bibheadtitle}{\bibheadtitle}}
+ \addcontentsline{toc}{section}{\bibtitle}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}}%
+{\def\thebibliography#1{\chapter*{\bibtitle\@mkboth
+ {\bibheadtitle}{\bibheadtitle}}
+ \addcontentsline{toc}{chapter}{\bibtitle}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}}
diff --git a/macros/latex209/contrib/misc/threecolumn.sty b/macros/latex209/contrib/misc/threecolumn.sty
new file mode 100644
index 0000000000..df9045bee2
--- /dev/null
+++ b/macros/latex209/contrib/misc/threecolumn.sty
@@ -0,0 +1,182 @@
+% Document sub-style threecolumn.sty May 23, 1989
+%
+% Author: George D. Greenwade, Director, Center for Business and Economic
+% Research, Sam Houston State University, Huntsville, TX 77341-2056
+% Voice: (409) 294-1518 Bitnet: BED_GDG@SHSU.BITNET
+%
+% Date of Release: May 23, 1989 (original version)
+% Revision History:
+%
+% Purpose: To create LaTeX output in three columns without corrupting the
+% general uses of LaTeX. This version is not suggested for use unless the
+% ENTIRE DOCUMENT is to be in a three column output with no multiple column
+% floats.
+%
+% Usage: Preamble: \documentstyle[...,threecolumn]{...}
+% In text: \threecolumn
+%
+% Features: Addition of \photo{height}{caption} to create an empty box of the
+% dimension \columnwidth wide and specified height (#1), with a caption below
+% set in the \sl font. Height MUST be specified, caption may be blank, but
+% must be left as a null entry (i.e., \photo{2in}{} for a 2-inch blank space).
+% \photo is placed on a minipage within a table[ht]. The caption is photo-
+% specific and does not step the table counter (as best as I can tell).
+%
+% Known Limitations (which would be nice ot fix): May 23, 1989
+% (1) \threecolumn does NOT presently handle MULTIPLE COLUMN table and figure
+% floats properly, but does properly handle footnotes; however, there are
+% no apparent float handling problem in \twocolumn or \onecolumn.
+% (2) Switching from \onecolumn to \twocolumn and \onecolumn to \threecolumn
+% behave properly. Switching from \threecolumn to \twocolumn,
+% \threecolumn to \onecolumn, \twocolumn to \theeecolumn, and \twocolumn
+% to \onecolumn generates a blank (but numbered) page. As a rule,
+% \twocolumn presents strange output results in this sub-style.
+% (3) \maketitle is inoperable in \threecolumn.
+%
+% Copyright (c) 1989 by George D. Greenwade
+% Permission to copy all or part of this work is granted, provided that the
+% copies are not made or distributed for resale, and that the copyright notice
+% and this notice are retained.
+%
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO WARRANTY
+% WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK, INCLUDING
+% WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
+% PURPOSE.
+%
+% Please forward all fixes and improvements which do not otherwise corrupt the
+% operation of the LaTeX document processing program to the author.
+\typeout{Document Style Option 'threecolumn'. Released 23 May 1989}
+
+\hoffset -.4in % Generalized page layout for three column
+\voffset -.3in % output. Certainly, these are subject to
+\columnsep 15pt % customization, but these definitions seem to
+\textwidth 7.2in % provide efficient default margins.
+\textheight 9.5in %
+\topmargin 0pt %
+\headsep 0pt %
+\headheight 0pt %
+\oddsidemargin 0pt %
+\pretolerance=500 % Needed pretolerance and tolerance to assure
+\tolerance=10000 % text generally fits the columns
+\doublehyphendemerits=100000 % Inhibit consecutive line hyphens
+\brokenpenalty=10000 % Inhibit broken words across columns/pages
+\widowpenalty=10000 % Inhibit widows at bottom of page
+\clubpenalty=10000 % Inhibit orphans at top of page
+
+\newif\if@threecolumn \@threecolumnfalse % New ifs used in routine
+\newif\if@secondcolumn \@secondcolumnfalse %
+\newif\if@thirdcolumn \@thirdcolumnfalse %
+\newbox\@centercolumn % New box to place center column
+\newdimen\photoblock \photoblock=0pt % New dimension used in \photo
+
+\def\onecolumn{\clearpage % Redefine \onecolumn without corruption
+ \global\columnwidth\textwidth
+ \global\hsize\columnwidth \global\linewidth\columnwidth
+ \global\@twocolumnfalse \global\@threecolumnfalse
+ \global\@secondcolumnfalse \global\@thirdcolumnfalse
+ \@floatplacement}
+
+\def\twocolumn{\clearpage % Redefine \twocolumn without corruption
+ \global\columnwidth\textwidth
+ \global\advance\columnwidth -\columnsep \global\divide\columnwidth\tw@
+ \global\hsize\columnwidth \global\linewidth\columnwidth
+ \global\@twocolumntrue \global\@threecolumnfalse
+ \global\@firstcolumntrue \global\@secondcolumnfalse
+ \global\@thirdcolumnfalse
+ \@dblfloatplacement\@ifnextchar[{\@topnewpage}{}}
+
+\def\threecolumn{\clearpage % Define \threeecolumn (very rough;
+ \global\columnwidth\textwidth % handles floats poorly, if at all)
+ \global\advance\columnwidth -\columnsep
+ \global\advance\columnwidth -\columnsep \global\divide\columnwidth\thr@@
+ \global\hsize\columnwidth \global\linewidth\columnwidth
+ \global\@twocolumnfalse \global\@threecolumntrue \global\@firstcolumntrue
+ \global\@secondcolumnfalse \global\@thirdcolumnfalse
+ \@dblfloatplacement\@ifnextchar[{\@topnewpage}{}}
+
+\def\@doclearpagethree{\ifvoid\footins % Define variation of \@doclearpage
+ \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
+%WAS \setbox\@tempboxa\box\@ccl
+ \setbox\@tempboxa\box\@cclv
+ \xdef\@deferlist{\@toplist\@botlist
+ \@deferlist}\gdef\@toplist{}\gdef\@botlist{}\global\@colroom\@colht
+ \ifx\@currlist
+ \@empty\else\@latexerr{Float(s)
+ lost}\@ehb\gdef\@currlist{}\fi
+ \@makefcolumn\@deferlist
+ \@whilesw\if@fcolmade \fi{\@opcol
+ \@makefcolumn\@deferlist}\if@threecolumn
+ \if@firstcolumn
+ \xdef\@dbldeferlist{\@dbltoplist
+ \@dbldeferlist}\gdef\@dbltoplist{}\global\@colht\textheight
+ \begingroup \@dblfloatplacement \@makefcolumn\@dbldeferlist
+ \@whilesw\if@fcolmade \fi \endgroup
+ \if@secondcolumn
+ {\@outputpage\@makefcolumn\@dbldeferlist} \fi \endgroup
+ \else \vbox{}\clearpage
+ \fi\fi
+ \else\setbox\@cclv\vbox{\box\@cclv\vfil}\@makecol\@opcol
+ \clearpage
+ \fi}
+
+\def\@specialoutput{\ifnum\outputpenalty > -\@Mii % Redefine \@specialoutput
+ \if@threecolumn \@doclearpagethree % to handle \threecolumn
+ \else \@doclearpage \fi % environment.
+ \else
+ \ifnum \outputpenalty <-\@Miii
+ \ifnum\outputpenalty<-\@MM \deadcycles\z@\fi
+ \global\setbox\@holdpg\vbox{\unvbox\@cclv}
+%WAS: \else \setbox\@tempboxa\box\@ccl
+ \else \setbox\@tempboxa\box\@cclv
+ \@pagedp\dp\@holdpg \@pageht\ht\@holdpg
+ \unvbox\@holdpg
+ \ifvoid\footins\else\advance\@pageht\ht\footins
+ \advance\@pageht\skip\footins \advance\@pagedp\dp\footins
+ \insert\footins{\unvbox\footins}\fi
+ \@next\@currbox\@currlist{\ifnum\count\@currbox >\z@
+ \@addtocurcol\else\@addmarginpar\fi}\@latexbug
+ \ifnum \outputpenalty <\z@ \penalty \z@ \fi
+ \fi\fi}
+
+\def\@opcol{\global\@mparbottom\z@ % Redefine \@opcol to handle \threecolumn
+ \if@twocolumn\@outputdblcol \fi % environment without corruption
+ \if@threecolumn\@outputtplcol\else
+ \@outputpage \global\@colht\textheight \fi}
+
+\def\@skipcolumn{\if@firstcolumn % Tentatively define \@skipcolumn (for future
+ \global\@firstcolumnfalse % use in two-column-wide material in the
+ \global\@secondcolumnfalse % \threecolumn environment) NOT EMPLOYED!
+ \global\@thirdcolumntrue \fi
+ \if@secondcolumn \global\@firstcolumntrue \global\@secondcolumnfalse
+ \global\@thirdcolumnfalse \fi}
+
+\def\@outputtplcol{\if@firstcolumn % Define \@outputtplcol (analogous to
+ \global\@firstcolumnfalse % \@outputdblcol, but for \threecolumn)
+ \global\@secondcolumntrue \global\@thirdcolumnfalse
+ \global\setbox\@leftcolumn\box\@outputbox
+\else
+ \if@secondcolumn \global\@secondcolumnfalse \global\@thirdcolumntrue
+ \global\setbox\@centercolumn\box\@outputbox
+\else
+\global\@thirdcolumnfalse \global\@firstcolumntrue
+ \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
+ {\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil
+\hbox to\columnwidth
+ {\hss \box\@centercolumn \hss}\hfil \vrule width\columnseprule\hfil
+ \hbox to\columnwidth{\box\@outputbox \hss}}}\@combinedblfloats
+ \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
+ \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup
+ \fi \fi}
+
+\def\photoblocksize{\global\photoblock=\columnwidth % Define width of the
+ \advance \photoblock -\columnsep % photo block
+ \if@threecolumn \advance \photoblock -\columnsep \fi}
+
+\def\photo#1#2{\photoblocksize % Define \photo{height}{caption} as floating
+ \begin{table}[ht] % blank space for photo insertions to be used
+\begin{minipage}{\photoblock} % in final paste-up.
+\rule{0pt}{#1} \\ % #1 is height
+\end{minipage} % width defaults to column width
+\begin{center} {\sl \ #2} % #2 is caption set in the \sl font face
+\end{center}
+\end{table}}
diff --git a/macros/latex209/contrib/misc/timetab.sty b/macros/latex209/contrib/misc/timetab.sty
new file mode 100644
index 0000000000..8e6969532f
--- /dev/null
+++ b/macros/latex209/contrib/misc/timetab.sty
@@ -0,0 +1,93 @@
+%%
+%% TimeTab Style by Tobias Oetiker Created 1993-4-19
+%% >>>>>>>>>>BETA VERSION <<<<<<<<<<<<<<<<<<<<<<<<<<<
+%%
+%% Works Best with NFSS installed ... (but works anyway)
+%%
+%% Comments to oetiker@stud.ee.ethz.ch please
+%%
+%% This Style implements a new environment to create
+%% timetables as in the example below.
+%%
+%%
+%% Environment: timetab{Unitlength}%
+%% {Horizontal Boxes}{Vetical Boxes}%
+%% {X Box Size}{Y Box Size}
+%% Commands: \Lek{X Location}{Y Location}{Vertical Size in Boxes}{Text}
+%% \BLek similar to \Lek but with bold and larger Font.
+%%
+%% Example: to create a Time Table like This:
+%% _______ ________ ________
+%% | Time | | |
+%% |_______| Other |________|
+%% | | Field | |
+%% | Cente |________| |
+%% | TxT | | |
+%% |_______| | 4.Fie |
+%% | | | |
+%% | |________| |
+%% | | | |
+%% |_______|________|________|
+%%
+%% Enter:
+%% \documentstyle[timetab]{article}
+%% \begin{document}
+%% \begin{timetab}{0.8cm}{3}{5}{3}{1}
+%% \BLek{0}{0}{1}{Time}
+%% \Lek{1}{0}{2}{Other\\Filed}
+%% \Lek{0}{1}{2}{Cente\\TxT}
+%% \Lek{1}{2}{2}{}
+%% \Lek{2}{1}{4}{4.Fie}
+%% \end{timetab}
+%% \end{document}
+%%
+%%
+%% 1993-4-19 Version 0.1 Initial Creation of this Style
+%%
+\newcount\tmfx
+\newcount\tmfy
+\newcount\tmfh
+\newcount\XNR
+\newcount\YNR
+\newcount\Breite
+\newcount\Hoehe
+\newcount\THoehe
+\newcount\TBreite
+
+\newenvironment{timetab}[5]{%
+\setlength{\unitlength}{#1}
+\XNR=#2 % Number of Boxes Horizontal
+\YNR=#3 % Number of Boxes Vertical
+\Breite=#4 % X Size of a Box
+\Hoehe=#5 % Y Size of a Box
+\THoehe=\Hoehe
+\multiply \THoehe by \YNR
+\TBreite=\Breite
+\multiply \TBreite by \XNR
+\begin{picture}(\TBreite,\THoehe)(0,-\THoehe)
+\put(0,0){\line(1,0){\TBreite}}
+\put(0,-\THoehe){\line(1,0){\TBreite}}
+
+\put(0,0){\line(0,-1){\THoehe}}
+\multiput(\Breite,0)(\Breite,0){#2}{\line(0,-1){\THoehe}}%
+}{\end{picture}}
+
+\newcommand{\Lek}[4]{%
+ \tmfh=#3
+ \multiply \tmfh by \Hoehe
+ \tmfx=#1
+ \multiply \tmfx by \Breite
+ \tmfy=#2
+ \advance \tmfy by #3
+ \multiply \tmfy by \Hoehe
+ \put(\tmfx,-\tmfy){%
+ \begin{picture}(\Breite,\tmfh)(0,0)
+ \put(0,0){\makebox(\Breite,\tmfh){%
+ \parbox{\Breite\unitlength}{\centering\footnotesize\sf #4}}}
+ \multiput(0,0)(0,\tmfh){2}{\line(1,0){\Breite}}
+ \end{picture}
+ }
+}
+
+\newcommand{\BLek}[4]{\Lek{#1}{#2}{#3}{\small\sf\bf #4}}
+\endinput
diff --git a/macros/latex209/contrib/misc/topnum.sty b/macros/latex209/contrib/misc/topnum.sty
new file mode 100644
index 0000000000..e0cb50ae17
--- /dev/null
+++ b/macros/latex209/contrib/misc/topnum.sty
@@ -0,0 +1,7 @@
+% Hiermit kriegt man die Seitenzahl oben in die Mitte
+\def\ps@plain{\def\@oddhead{}\def\@oddfoot{\hfil \thepage \hfil}%
+ \def\@evenhead{}\def\@evenfoot{}}
+\def\ps@mypage{\def\@oddhead{\hfil \thepage~\hfil}%
+ \def\@oddfoot{}%
+ \def\@evenhead{}\def\@evenfoot{}}
+\ps@plain
diff --git a/macros/latex209/contrib/misc/trademarks.sty b/macros/latex209/contrib/misc/trademarks.sty
new file mode 100644
index 0000000000..3003534f5b
--- /dev/null
+++ b/macros/latex209/contrib/misc/trademarks.sty
@@ -0,0 +1,81 @@
+% Trademarks...
+
+\def\gobble#1{}
+\def\tradeORGfont{\sc} % used for organizations (e.g., ACM)
+\def\tradeNAMfont{\sf} % used for names (e.g., Ada)
+
+\def\tradeorg#1{%
+ \tradeaux{#1}{\expandafter\gobble\string#1}\empty\tradeORGfont
+}
+\def\tradeorgn#1#2{%
+ \tradeaux{#1}{#2}\empty\tradeORGfont
+}
+\def\tradename#1#2#3{\tradeaux{#1}{#2}{#3}\tradeNAMfont}
+\def\trademark#1#2{%
+ \tradeaux{#1}{\expandafter\gobble\string#1}{#2}\tradeNAMfont
+}
+
+\def\tradeaux#1#2#3#4{%
+ \def#1/{\relax}% % in case #3 references #1
+ \setbox0=\hbox{#3}% % when we make the \hbox
+ \ifdim\wd0>0pt
+ \gdef#1/{%
+ \tradeaux{#1}{#2}\empty{#4}%
+ #1/\footnote{#1/ is a trademark of #3.}%
+ }%
+ \else
+ \gdef#1/{{#4#2}}%
+ \fi
+}
+
+\tradeorg\acm
+\tradeorg\ansi
+\tradeorg\Apple
+\tradename\Ada{Ada}
+ {the Department of Defense (\Ada/ Joint Program Office)}
+\tradename\balance{Balance} {Sequent Computer Systems, Incorporated}
+\tradeorg\bsd
+\tradename\butterfly{Butterfly}{Bolt, Beranek, and Newman, Incorporated}
+\tradeorg\ccitt
+\tradename\cms{CMS} {International Business Machines, Incorporated}
+\tradename\cpm{CP/M} {Digital Research Corporation}
+\tradename\chrysalis{Chrysalis}{Bolt, Beranek, and Newman, Incorporated}
+\tradename\decnet{DECnet} {Digital Equipment Corporation}
+\tradeorgn\dod{DoD}
+\tradename\dynix{DYNIX} {Sequent Computer Systems, Incorporated}
+\tradename\ethernet{Ethernet} {the Xerox Corporation}
+\tradename\eunice{Eunice} \empty
+\tradename\exos{EXOS} {Excelan, Incorporated}
+\tradeorg\IBM
+\tradename\ibmpc{IBM PC} {International Business Machines, Incorporated}
+\tradeorg\HP
+\tradename\IMAGEN{IMAGEN} {IMAGEN Corporation}
+\tradeorg\ieee
+\tradename\lattice{Lattice} {Lattice, Incorporated}
+\tradename\locus{Locus} {Locus Computing Corporation}
+\tradename\mac{Macintosh} {Apple Computer, Incorporated}
+\def\microvax/{$\mu$\vax/}
+\def\microvms/{$\mu$\vms/}
+\tradeorg\milstd
+\tradename\Miranda{Miranda} {Research Software Limited}
+\tradename\msdos{MS-DOS} {Microsoft Corporation}
+\tradename\mvs{MVS} {International Business Machines, Incorporated}
+\tradeorg\NCC
+\tradeorg\NPL
+\tradename\pcdos{PC-DOS} {International Business Machines, Incorporated}
+\tradename\pcinterface{PC-Interface}%
+ {Locus Computing Corporation}
+\tradename\pdp{PDP} {Digital Equipment Corporation}
+\tradename{\tops20}{Tops20} {Digital Equipment Corporation}
+\tradename\Sun{Sun Workstation} {Sun Microsystems Incorporated}
+\tradename\trustedmail{Trusted\ Mail}%
+ {Trusted Technologies, Incorporated}
+\tradeorg\QMS
+\tradename\ultrix{ULTRIX} {Digital Equipment Corporation}
+\tradename\unibus{UNIBUS} {Digital Equipment Corporation}
+\tradename\Unix{{\sc Unix}} {AT\&T Bell Laboratories}
+\tradename\vax{VAX} {Digital Equipment Corporation}
+\tradename\vm{VM} {International Business Machines, Incorporated}
+\tradename\vms{VMS} {Digital Equipment Corporation}
+\tradename\xenix{Xenix} {Microsoft Corporation}
+\tradeorg\Xerox
diff --git a/macros/latex209/contrib/misc/trees.sty b/macros/latex209/contrib/misc/trees.sty
new file mode 100644
index 0000000000..be4c556cd4
--- /dev/null
+++ b/macros/latex209/contrib/misc/trees.sty
@@ -0,0 +1,120 @@
+% treedef.tex
+%
+% These definitions for tree macros are taken from "Trees in TeX",
+% by David Eppstein, as published in TUGboat 6#1, March 1985.
+% David Eppstein's address (as of 15 June 1988) is
+% Computer Science Department
+% Columbia University
+% New York, NY 10027
+% Eppstein@cs.Columbia.edu
+
+\newbox\treebox
+\def\tree{\global\setbox\treebox=\boxtree}
+\def\subtree{\ettext \boxtree}
+\def\leaf#1{\subtree#1\endsubtree}
+
+\def\endsubtree{\ettext \egroup}
+\def\endtree{\endsubtree \settreesizes \typesettree}
+
+\newif\iftreetext\treetextfalse % Whether still aligning text
+\def\boxtree{\hbox\bgroup % Start outer box of tree or subtree
+ \baselineskip 2.5ex % Narrow line spacing slightly
+ \tabskip 0pt % No spurious glue in alignment
+ \vbox\bgroup % Start inner text \vbox
+ \treetexttrue % Remember for \ettext
+ \let\par\crcr \obeylines % New line breaks without explicit \cr
+ \halign\bgroup##\hfil\cr} % Start alignment with simple template
+\def\ettext{\iftreetext % Are we still in inner text \vbox?
+ \crcr\egroup \egroup \fi} % Yes, end alignment and box
+
+\def\cons#1#2{\edef#2{\xmark #1#2}} % Add something to start of list.
+\def\car#1{\expandafter\docar#1\docar} % Take first element of list
+\def\docar\xmark#1\xmark#2\docar{#1} % ..by ignoring rest in expansion.
+\def\cdr#1{\expandafter\docdr#1\docdr#1} % Similarly, drop first element.
+\def\docdr\xmark#1\xmark#2\docdr#3{\def#3{\xmark #2}}
+\def\xmark{\noexpand\xmark} % List separator expands to self.
+\def\nil{\xmark} % Empty list is just a separator.
+
+\def\settreesizes{\setbox0=\copy\treebox \global\let\treesizes\nil \setsizes}
+\newdimen\treewidth % Width of this part of the tree.
+\def\setsizes{\setbox0=\hbox\bgroup % Get a horiz list as a workspace.
+ \unhbox0\unskip % Take tree, unpack it into horiz list.
+ \inittreewidth % Get old width at this level.
+ \sizesubtrees % Recurse through all subtrees.
+ \sizelevel % Now set width from remaining \vbox.
+ \egroup} % All done, finish our \hbox.
+
+\def\inittreewidth{\ifx\treesizes\nil % If this is the first at this level
+ \treewidth=0pt % ..then we have no previous max width.
+ \else \treewidth=\car\treesizes % Otherwise take old max level width
+ \global\cdr\treesizes % ..and advance level width storage
+ \fi} % ..in preparation for next level.
+
+\def\sizesubtrees{\loop % For each box in horiz list (subtree)
+ \setbox0=\lastbox \unskip % ..pull it off list and flush glue.
+ \ifhbox0 \setsizes % If hbox, it's a subtree - recurse
+ \repeat} % ..and loop; end loop on tree text.
+
+\def\sizelevel{\ifdim\treewidth<\wd0 % If greater than previous maximum
+ \treewidth=\wd0 \fi % Then set max to new high
+ \global\cons{\the\treewidth}\treesizes}% In either case, put back on list
+
+\newdimen\treeheight % Height of this part of the tree.
+\newif\ifleaf % Tree has no subtrees (is a leaf).
+\newif\ifbotsub % Bottom subtree of parent.
+\newif\iftopsub % Top subtree of parent.
+\def\typesettree{\medskip \maketree \medskip} % Make whole tree with spacing.
+\def\maketree{\hbox{\treewidth=\car\treesizes % Get width at this level.
+ \cdr\treesizes % Set up width list for recursion.
+ \makesubtreebox\unskip % Set \treebox to text, make subtrees.
+ \ifleaf \makeleaf % No subtrees, add glue.
+ \else \makeparent \fi}} % Have subtrees, stick them at right.
+
+{\catcode`@=11 % Be able to use \voidb@x.
+\gdef\makesubtreebox{\unhbox\treebox % Open up tree or subtree.
+ \unskip\global\setbox\treebox\lastbox % Pick up very last box.
+ \ifvbox\treebox % If we're already at the \vbox
+ \global\leaftrue \let\next\relax % ..then this is a leaf.
+ \else \botsubtrue % Otherwise, we have subtrees.
+ \setbox0\box\voidb@x % Init stack of processed subs
+ \botsubtrue \let\next\makesubtree % ..and call \maketree on them.
+ \fi \next}} % Finish up for whichever it was.
+
+\def\makesubtree{\setbox1\maketree % Call \maketree on this subtree.
+ \unskip\global\setbox\treebox\lastbox % Pick up box before it.
+ \treeheight=\ht1 % Get height of subtree we made
+ \advance\treeheight 2ex % Add some room around the edges
+ \ifhbox\treebox \topsubfalse % If picked up box is a \vbox,
+ \else \topsubtrue \fi % ..this is the top, otherwise not.
+ \addsubtreebox % Stack subtree with the rest.
+ \iftopsub \global\leaffalse % If top, remember not a leaf
+ \let\next\relax \else % ..(after recursion), set return.
+ \botsubfalse \let\next\makesubtree % Otherwise, we have more subtrees.
+ \fi \next} % Do tail recursion or return.
+
+\def\addsubtreebox{\setbox0=\vbox{\subtreebox\unvbox0}}
+\def\subtreebox{\hbox\bgroup % Start \hbox of tree and lines
+ \vbox to \treeheight\bgroup % Start \vbox for vertical rules.
+ \ifbotsub \iftopsub \vfil % If both bottom and top subtree
+ \hrule width 0.4pt % ..vertical rule is just a dot.
+ \else \treehalfrule \fi \vfil % Bottom gets half-height rule.
+ \else \iftopsub \vfil \treehalfrule % Top gets half-height the other way.
+ \else \hrule width 0.4pt height \treeheight \fi\fi % Middle, full height.
+ \egroup % Finish vertical rule \vbox.
+ \treectrbox{\hrule width 1em}\hskip 0.2em\treectrbox{\box1}\egroup}
+
+\def\treectrbox#1{\vbox to \treeheight{\vfil #1\vfil}}
+\def\treehalfrule{\dimen0=\treeheight % Get total height.
+ \divide\dimen0 2\advance\dimen0 0.2pt % Divide by two, add half horiz height.
+ \hrule width 0.4pt height \dimen0} % Make a vertical rule that high.
+
+\def\makeleaf{\box\treebox} % Add leaf box to horiz list.
+\def\makeparent{\ifdim\ht\treebox>\ht0 % If text is higher than subtrees
+ \treeheight=\ht\treebox % ..use that height.
+ \else \treeheight=\ht0 \fi % Otherwise use height of subtrees.
+ \advance\treewidth-\wd\treebox % Take remainder of level width
+ \advance\treewidth 1em % ..after accounting for text and glue.
+ \treectrbox{\box\treebox}\hskip 0.2em % Add text, space before connection.
+ \treectrbox{\hrule width \treewidth}\treectrbox{\box0}} % Add \hrule, subs.
+
+\endinput
diff --git a/macros/latex209/contrib/misc/truecols.doc b/macros/latex209/contrib/misc/truecols.doc
new file mode 100644
index 0000000000..0517057972
--- /dev/null
+++ b/macros/latex209/contrib/misc/truecols.doc
@@ -0,0 +1,398 @@
+\iffalse
+% This is truecols.doc, a sub-style for use with SliTeX.
+% It is documented with the conventions of doc.sty; run it through a
+% suitable driver file to print format the documentation.
+% It is intended for use with ltugboat.sty as it stands.
+% Note that with the old doc.sty you'll get extra space at the front
+% of paras starting with \DescribeMacro.
+% Use docstrip.tex to strip the comments to form truecols.sty.
+
+%% Copyright D.Love, SERC Daresbury Laboratory, 1991
+%% The `doc' version of this style is re-distributable and usuable
+%% under conditions of the GNU copyleft, but please mark any changes,
+%% list them here and report any major enhancements to the author.
+\fi
+\def\filedate{18/4/90}
+\def\fileversion{1.2}
+% \NoBlackBoxes
+% \def\ps{\PS}\def\dvi{{\tt dvi}}\def\pj{Paint\-Jet}
+%^^A can't use \verb in arguments:
+% \def\sp{{\tt\char\escapechar special}}
+% \title{Experiments in \TeX nicolour --- A \SliTeX\ Sub-style for
+% Colour Printers\footnote{File version \fileversion, dated
+% \filedate.}}
+% \author{David Love}
+% \address{SERC Daresbury Laboratory,\\Warrington WA4 4AD, UK}
+% \netaddress{d.love@daresbury.ac.uk}
+%
+% \maketitle
+%
+% \begin{abstract}
+% \noindent
+% \SliTeX\ assumes that colour transparencies will be produced from
+% layers, each printed in a single colour. This sub-style allows a
+% suitable \dvi{} driver to produce multi-coloured
+% slides in one go (i.e., using a single layer). It is customisable
+% for \ps{} printers or simpler colour devices like the the HP \pj{}.
+% \end{abstract}
+%
+% \section{Introduction}
+% \SliTeX{}---a version of \LaTeX{} for making slides---supports colours
+% in its output by producing `colour layers', one per colour \cite{slitex}.
+% It is assumed that these will be copied to transparencies of the
+% appropriate colour and overlapped to make a composite multi-colour
+% slide. Colour is valuable on slides, but this means
+% of producing it is inconvenient and inappropriate if you have
+% a colour printer and a suitable \dvi{} driver for it.
+%
+% This sub-style for \SliTeX{} allows all the colours to be produced
+% in one layer. It is designed for use with colour \ps{} printers or
+% others like the HP \pj{} with suitable \dvi{} drivers, following
+% experiments with these printers at Daresbury.
+% It is intended to provoke discussion
+% of the use of colour with \TeX{}, a subject about which little
+% has been said so far in public, rather than be at all definitive.
+%
+% \section{Approach}
+% Use of colour with \TeX{} is non-standard and has to
+% be done by passing information to the \dvi{} driver. This could be
+% done in one of two ways:
+% \begin{itemize}
+% \item using fonts whose names idenitify them to the driver to
+% be printed in a particular colour but are otherwise
+% identical to the black version (possibly using virtual fonts \cite{vf});
+% \item using the \sp{} mechanism to tell the driver to
+% change colours.
+% \end{itemize}
+% The second option is easier to implement with an existing driver and
+% allows colour for other objects than characters i.e.,
+% rules,\footnote{{\tt \char\escapechar colorslides} doesn't work
+% properly with rules---they come out in each layer.}
+% and has been adopted here.
+% Unfortunately, existing drivers differ in their \verb+\special+
+% mechanisms and few understand colour explicitly.
+% However, drivers which allow you to include arbitrary \ps{} with a
+% \sp{} have this ability implicitly
+% since colour operators are defined in \ps{} \cite{redbook}.
+% (Colour gets rendered in shades of grey on a normal laser printer,
+% which can help with proofing.)
+%
+% There is a proposed standard for \sp{}s \cite{hosek}
+% which includes colour information, but the definition of the
+% \verb+textcolor+ \sp{} is inconveniently related to the \dvi{} stack.
+% Working with existing \ps{} drivers, one has to make
+% some assumptions about them, as detailed below.
+%
+% In the case of the \pj{} printer there does not appear to be an existing
+% driver, so one was produced with a suitable \sp{} defined arbitrarily.
+%
+% \section{\pj{} Driver}
+% The Hewlett-Packard \pj{} can print in colour at 180~dpi, which
+% is quite adequate for making transparencies. A driver for it was
+% produced using the HP Laserjet version from Beebe's family \cite{beebe}
+% as a basis since this has rather similar control sequences.
+% It was extended to maintain four bitmaps independently,
+% allowing three colours other than black to be printed. Allowing
+% more colours would make the code more complicated and slower as well
+% as using more memory for the bitmaps. It supports one
+% \sp{} to allow colour changes between black, red, green
+% and blue. A defect is that the result of overlapping items of
+% different colours is independent of their order in the \dvi{} file,
+% but this simplifies the driver considerably.
+%
+% \section{Assumptions}
+% The necessary assumptions about the driver are largely isolated in
+% the macros \verb+\special@color+
+% and \verb+\colormix+.\footnote{I spell the
+% English way except in code names, where I reluctantly use `color'
+% for consistency with existing code.}
+% Suitable changes could be quite easily made to conform with an
+% eventual standard for \sp{}s or use a different driver.
+%
+% \subsection{\ps}
+% We assume that a \ps{} driver understands
+% \sp{}s of the form
+% \begin{center}
+% \verb*+\special{ps:: +\meta{code}\verb+}+,
+% \end{center}
+% where \meta{code} is
+% arbitrary \ps{} from which the surrounding code output by the driver is not
+% protected. This is appropriate for Rokicki's
+% {\tt dvips} and ArborText's DVILASER/PS\@.
+\iffalse
+% and
+% would be for the Daresbury {\tt dvitops} if it didn't zap the
+% graphics state at each font change.\footnote{This can probably be
+% fixed by messing with the header.}
+\fi
+% We use the RGB colour model \cite[\S 4.8]{redbook}.
+%
+% \subsection{\pj{} or other printer}
+% A non-\ps{} printer should understand a special of the form
+% \verb*+{color +\meta{colour}\verb+}+, where \meta{colour} can take
+% the values {\tt black\rm, \tt red\rm, \tt green\rm\ or \tt blue},
+% determining the colour of all subsequent printing until the next
+% change. The default is assumed to be black.
+%
+% \section{User interface}
+% As well as re-defining some internal \SliTeX{} macros, we make some
+% new ones as described below.
+%
+% \DescribeMacro{\psprinterfalse}
+% The default is to assume the use of a \ps{} printer. Saying
+% \verb+\psprinterfalse+ changes this to produce output suitable for
+% the \pj{} (or similar printer). This should only be done
+% in the preamble.
+%
+% Any colours you use {\em must\/} be declared using
+% \verb+\colors+ \DescribeMacro{\colors}(even red, green, blue and black).
+% \DescribeEnv{slide}
+% They do not need including in the argument of \verb+\begin{slide}+ for
+% use with \verb+\truecolors+, but there needs to be some argument,
+% even if it's null.
+%
+% \DescribeMacro{\truecolors}
+% Like \verb+\blackandwhite+, \verb+\truecolors+ is
+% invoked from the driver file to process a batch of slides described
+% in the file given as its argument. It works like
+% \verb+\blackandwhite+ in that it only makes one layer, but will
+% include the
+% information for the printer to produce the
+% colours in the \dvi{} file. Notes are not printed by
+% \verb+\truecolors+.
+%
+% \subsection{\ps{} specifics}
+% \DescribeMacro{\colormix}
+% Before you use a new \ps{} colour, you have to define how it is
+% mixed from red, green and blue. \verb+\colormix+ does this for you.
+% It takes four arguments. The first is the name of the colour and
+% the others are numeric values for the intensities of red, green and
+% blue respectively in the mixture. (See the description of RGB in
+% \cite{redbook}.) These values must lie in the
+% range 0--1 such that 1 is most intense and 0 is no
+% intensity. Thus you might define yellow by
+% \[\verb+\colormix{yellow}{0}{1}{1}+\]
+% You don't need to define red, green, blue or black---they are done
+% already.
+%
+% You could put blocks of text on a coloured background either by
+% setting it on top of a suitably-sized rule or using explicit \sp s.
+%
+% \subsection{Other printers}
+% Only red, green, blue and black are available. Use of
+% \verb+\colormix+ will produce a warning. Using a non-white
+% background won't work very well with the \pj{}.
+%
+% \subsection{Problem with list environments}
+% A problem occurs if you want the first text in a list environment
+% item to be a different colour to the label since \verb+\special+s
+% before the text appear in the \dvi{} file before the label.
+% A way round this is to insert \verb+\leavevmode+ after \verb+\item+.
+% This sort of problem may occur in other situtaions.
+%
+% \section{Code}
+% \subsection{Driver-independent code}
+% \begin{macrocode}
+\typeout{SliTeX style option `truecols' (v. \fileversion\space of \filedate)}
+% \end{macrocode}
+% \DescribeMacro{\if@truecol}
+% We introduce a new switch to tell us whether we can assume we have
+% true colour printing capability and unset it initially.
+% \begin{macrocode}
+\newif \if@truecol \@truecolfalse
+% \end{macrocode}
+% \DescribeMacro{\the@color}
+% We keep track of the current colour using \verb+\the@color+
+% (to get colours right with grouping).
+% Initially it's black.
+% \begin{macrocode}
+\def\the@color{\black}
+% \end{macrocode}
+% \DescribeMacro{\ifpsprinter}
+% This tells us if we're dealing with a \ps{} printer (the default)
+% or not.
+% \begin{macrocode}
+\newif \ifpsprinter \psprintertrue
+% \end{macrocode}
+% \DescribeMacro{\truecolors}
+% A new \verb+\truecolors+ command is defined, which works like
+% \verb+\blackandwhite+, printing everything in the file given as its
+% argument in one layer. Thus it must set the \verb+\@bw+
+% switch. This slightly unfortunate change to \verb+\@bw+'s
+% meaning makes the alterations easier.
+% \begin{macrocode}
+\newcommand{\truecolors}[1]{\@truecoltrue \blackandwhite{#1}}
+% \end{macrocode}
+%\DescribeMacro{\@color}
+% We modify \verb+\@color+ to take note of the \verb+@truecol+ setting
+% (if \verb+@bw+ is set). If appropriate, it puts out a
+% colour-changing \sp{} using \verb+\special@color+. We can omit the
+% test for a colour change in math mode if we're not depending on
+% invisible fonts.
+% \begin{macrocode}
+\def\@color#1{%
+ \if@truecol \else \@mmodetest \fi % change
+ \if@bw \@visibletrue
+ \if@truecol \special@color{#1}\fi % change
+ \else \@visiblefalse
+ \@for \@x@a :=#1\do{\ifx\@x@a\@currcolor\@visibletrue\fi}\fi
+ \@currsize \@currfont \ignorespaces}
+% \end{macrocode}
+% \DescribeMacro{\endslide}
+% We ensure that the driver colour is
+% reset to black at the end of each slide
+% by setting it in \verb+\endslide+.
+% \begin{macrocode}
+\def\endslide{\@color{black}\par\break}
+% \end{macrocode}
+% \DescribeMacro{\note}
+% We don't want to waste truecolour output on producing notes, which
+% we will if we don't re-define \verb+\note+ (since \verb+@bw+ is set
+% by \verb+\truecolors+). We just add a test on \verb+@truecol+.
+% \begin{macrocode}
+\def\note{%
+ \stepcounter{note}%
+ \if@bw
+ \if@truecol \gdef\@slidesw{F}% added
+ \else
+ \gdef\@slidesw{T}%
+ \if@onlynotesw\@whilenum \c@slide > \@donotehigh\relax
+ \do{\@setlimits\@donotelist\@donotelow\@donotehigh}\ifnum
+ \c@slide < \@donotelow\relax \gdef\@slidesw{F}\fi\fi\fi
+ \else \gdef\@slidesw{F}\fi
+ \if\@slidesw T\newpage\thispagestyle{note}\else
+ \end{note}\@gobbletoend{note}\fi }
+% \end{macrocode}
+% \DescribeMacro{\colors}
+% We re-define \verb+\colors+ to check that we know about those
+% specified. It could, perhaps, be dispensed with at the cost of
+% incompatibility with standard \SliTeX{}. If we're not using \ps{}
+% only the four pre-defined colours are available.
+% \begin{macrocode}
+\def\colors#1{%
+ \@for\@colortemp:=#1\do{%
+ \@ifundefined{\@colortemp @mix}{% change
+ \ifpsprinter
+ \errhelp{You could use I to define it now.}%
+ \errmessage{You need to use \noexpand\colormix to define
+ \@colortemp}%
+ \else
+ \errhelp{It's safe to carry on.}%
+ \errmessage{You can only use black, red, green and blue with
+ this printer, not \@colortemp}%
+ \expandafter\xdef\csname\@colortemp\endcsname{\relax}%
+ \fi
+ }{}
+ \expandafter\xdef\csname\@colortemp\endcsname
+ {\noexpand\@color{\@colortemp}}%
+ }% (do)
+ \ifx\@colorlist\@empty \gdef\@colorlist{#1}%
+ \else \xdef\@colorlist{\@colorlist,#1}\fi}
+% \end{macrocode}
+% \DescribeMacro{\pagestyle}
+% Finally we change the default pagestyle since the alignment marks
+% would only be useful with overlays.
+% \begin{macrocode}
+\pagestyle{plain}
+% \end{macrocode}
+%
+% \subsection{Driver-dependent code}
+% \DescribeMacro{\colormix}
+% The \ps{} user can mix new colours in the RGB model using
+% \verb+\colormix+. It takes four arguments, the name of the colour
+% (which must then be declared with \verb+\colors+) and three real numbers
+% in the range 0--1 describing respectively the intensity of red,
+% green and blue in the result. The result is to define a macro of
+% the form \verb+\+\meta{colour}\verb+@mix+ to be a list of arguments 2--4.
+% \begin{macrocode}
+\def\colormix#1#2#3#4{%
+ \ifpsprinter \else \typeout{Warning: \noexpand\colormix used with
+ \noexpand\psprinterfalse.}\fi
+ \color@range@check{#2}\color@range@check{#3}\color@range@check{#4}%
+ \expandafter\xdef\csname#1@mix\endcsname{#2 #3 #4}}
+% \end{macrocode}
+% \DescribeMacro{\color@range@check}
+% We need to check that the numeric arguments of \verb+\colormix+ are
+% in the range 0--1. Since they're real numbers we
+% convert them to dimensions to test.
+% \begin{macrocode}
+\def\color@range@check#1{%
+ \def\fred{\errhelp{Carry on, but you'll get a PostScript error if
+ you try to print the results.}%
+ \errmessage{\noexpand\colormix arguments must be in the
+ range 0--1}}%
+ \ifdim#1 pt < 0pt \fred \fi \ifdim#1 pt > 1pt \fred \fi }
+% \end{macrocode}
+% \DescribeMacro{\special@color}
+% This has to change the current colour on the output device to that
+% given as its argument,
+% but first has to store the current value and make sure it is
+% re-instated at the end of the current group. (Coloured fonts would
+% avoid the need for this.) Note the \verb+{}+ inserted at the end of
+% the group to avoid spaces being gobbled afterwards as with
+% \verb+{\red foo} bar+. Probably there's a better way of doing this.
+% \begin{macrocode}
+\def\special@color#1{%
+ \def\the@color{\csname#1\endcsname}\aftergroup\the@color
+ \aftergroup{\aftergroup}%
+% \end{macrocode}
+% To change colour with \ps{} we use a \sp{} which
+% will emit code of the form
+% \begin{center} \meta{red level}\verb*+ +\meta{green level}\verb*+ +^^A
+% \meta{blue level}\verb*+ +{\tt setrgbcolor} \end{center}
+% Perhaps this should be parameterised.
+% The three levels are provided by a macro of the form
+% \verb+\+\meta{colour}\verb+@mix+ which must be defined for each
+% \meta{colour} which is used.
+% It might be useful is to
+% define a white font (RGB=[1~1~1]) which could be painted over a
+% coloured region.
+% \begin{macrocode}
+ \ifpsprinter \special{ps:: \csname#1@mix\endcsname\space
+ setrgbcolor\space}%
+% \end{macrocode}
+% For the \pj{} we output
+% \begin{center}\verb*+\special{color +\meta{colour}\verb+}+,
+% \end{center}
+% where \meta{colour} can be {\tt black\rm, \tt red\rm, \tt green \rm
+% or \tt blue} and we assume that \verb+#1+ is one of these.
+% \begin{macrocode}
+ \else \special{color #1}\fi % (\ifpsprinter)
+} % (\def\special@color)
+% \end{macrocode}
+% \DescribeMacro{\black@mix}\DescribeMacro{\red@mix}
+% \DescribeMacro{\blue@mix}\DescribeMacro{\green@mix}
+% Here we define the RGB mixes for the \ps{} colours we support
+% initially. These macros need defining for the \pj{} too, so that we
+% can check on colours the user tries to invoke.
+% \begin{macrocode}
+\def\black@mix{0 0 0} \def\red@mix{1 0 0}
+\def\blue@mix{0 0 1} \def\green@mix{0 1 0}
+% \end{macrocode}
+% \begin{thebibliography}{1}
+% \bibitem{slitex} Leslie Lamport. {\sl \LaTeX{}: A Document
+% Preparation System}; {\tt slitex.tex} dated 10 November 1986; {\tt
+% slides.sty} dated 17 January 1986.
+% \bibitem{vf} Donald Knuth. \TUB, 11(1), 1990, p.~13.
+% \bibitem{redbook} Adobe Systems Inc. {\sl\ps\ Language Reference Manual}.
+% \bibitem{hosek} Don Hosek. Proposed \verb+DVI \special+ command
+% standard. (See \TUB, 10(2), 1989, p.~188.)
+%^^A \bibitem{glv&tjr} Glenn L. Vandenberg and Thomas J. Reid.
+%^^A \sp{} issues. \TUB, 8(3), 1987, p.~287.
+% \bibitem{beebe} Nelson H. F. Beebe. {\sl A \TeX{} DVI Driver Family}.
+% \end{thebibliography}
+% {\tenuit Note added:\enspace } Since doing this work I have become
+% aware of two related pieces of work. One is Ken Yap's article
+% ``Making 35~mm Colour Slides with \SliTeX'' in \TUB{} 11.2 (1990),
+% p.~279. He also used a modified version of a Beebe driver for his
+% raster device, but maintained the colour layers idea. This style
+% provides the `more elegant and general solution' to the problem
+% mentioned in his conclusion.
+%
+% The other work is concerned with specifically \PS{} printers rather
+% than raster ones. It is Leslie Lamport's {\tt ps-slides.sty} which
+% Sebastian Rahtz pointed out to me, available from the Aston archive.
+% Since it is specific to \PS{} it can support fancier facilities. His
+% approach to changing the way standard \SliTeX{} works is somewhat
+% different from mine, which presumably means I was a little misguided.
+% \makesignature
diff --git a/macros/latex209/contrib/misc/uhthesis.sty b/macros/latex209/contrib/misc/uhthesis.sty
new file mode 100644
index 0000000000..5f60e37ddc
--- /dev/null
+++ b/macros/latex209/contrib/misc/uhthesis.sty
@@ -0,0 +1,391 @@
+
+% University of Houston PhD/MS thesis style -- modifications to the report style
+% For LaTeX version 2.09
+%
+% Author: Dimitrios Georgakopoulos (dimitris@cs.uh.edu)
+%
+% The float and footnote macros bellow are stolen from the
+% Stanfford University thesis style.
+
+\typeout{Document Style Option `uhthesis' <31 Aug 90>.}
+
+\long\def\comment#1{}
+\comment{
+
+Example of use:
+ \documentstyle[12pt,uhthesis]{report}
+ \begin{document}
+ \title{Transaction Management in\\ Multidatabase Systems}
+ \author{Dimitrios Georgakopoulos}
+ \adviser{Dr. Marek Rusinkiewicz, Chairman}
+ \firstreader{Dr. Farok Bastani}
+ \secondreader{Dr. Paulina Markenscoff\\Computer Engineering Department}
+
+ \makecoverpages
+ \begin{abstract}
+ This thesis tells you all you need to know about...
+ \end{abstract}
+ \begin{acknowledgements}
+ I would like to thank...
+ \end{acknowledgements}
+ \makecontentspages
+ \chapterpages
+
+ \chapter{Introduction}
+ ...
+ \chapter{Conclusions}
+ ...
+ \appendix
+ \chapter{A Long Proof}
+ ...
+ \bibliographystyle{plain}
+ \bibliography{mybib}
+ \end{document}
+
+Documentation:
+ This style file modifies the standard report style to follow the
+ Dean's Office "Preparing your Thesis/Dissertation for Submission
+ to the college of Natural Sciences and Mathematics: A Guideline".
+
+ The \makecoverpages command creates a copyright page (optionally),
+ the title page and, and the signature page. The \begin{abstact}
+ command creates the abstract page. The abstract itself should be
+ included between a \begin{abstact} and an \end{abstact} command,
+ as usual. Your (optional) acknowlegments should be included in the
+ (optional) \begin{acknowledments} ...\end{acknowledments} section.
+ The \makecontentspages command produces the table of contents, the
+ list of tables (optional) and the list of figures (optinal). Finally,
+ the \chapterpages command sets the page style of the main body of
+ your thesis.
+
+ The following commands can control what goes in the front matter
+ material:
+
+ \title{thesis title}
+ \author{author's name}
+ \degree{author's degree}{type of thesis}
+ - e.g. \degree{Masters of Science}{Thesis}
+ - if \degree is ommitted,
+ \degree{Doctor of Philosophy}{Dissertation} is assumed
+ \department{author's department}
+ - Computer Science if omitted
+ \college{the college or school the thesis is submitted to}
+ - College of Natural Sciences and Mathematics if omitted
+ \adviser{the adviser's name}
+ \firstreader{the first reader's name}
+ \secondreader{the second reader's name}
+ \thirdreader{the third reader's name}
+ \fourthreader{the fourth reader's name}
+ \threereaderstrue or \threereadersfalse
+ - print or don't print a third reader in the
+ signature page (true by default)
+ \fourreaderstrue or \fourreadersfalse
+ - print or don't print a fourth reader in the
+ signature page (true by default)
+ \submitdate{month year in which the thesis is submitted}
+ - date LaTeX'd if omitted
+ \copyrighttrue or \copyrightfalse
+ - produce or don't produce a copyright page (true by default)
+ \figurelisttrue or \figurelistfalse
+ - produce or don't produce a List of Figures page
+ (true by default)
+ \tablelisttrue or \tablelistfalse
+ - produce or don't produce a List of Tables page
+ (true by default)
+
+
+ This style uses interline spacing that is 1.6 times normal, except
+ in the figure and table environments where normal spacing is used.
+ That can be changed by doing:
+ \renewcommand{\baselinestretch}{1.6}
+ (or whatever you want instead of 1.6)
+ Unfortunately, that command probably won't take effect unless it comes
+ before the \begin{document} or after something like \small \normalsize.
+
+ The example above shows the 12pt substyle being used. This seems to give
+ acceptable looking results, but it may be omitted to get smaller print.
+}
+
+% First thing we do is make sure that report has been loaded. A
+% common error is to try to use uhthesis as a documentstyle.
+\@ifundefined{chapter}{\@latexerr{The `uhthesis' option should be used
+with the `report' document style}}{}
+
+% We need 1 1/2" margins except on the right edge, where it is 1"
+% Theses are single-sided, so we don't care about \evensidemargin
+\oddsidemargin 0.5in \evensidemargin 0in
+%\marginparwidth 40pt \marginparsep 10pt
+\topmargin 0in
+\headsep 0.4in
+\textheight 8in
+\textwidth 5.95in
+
+% Disallow page breaks at hyphens (this will give some underfull vbox's,
+% so an alternative is to use \brokenpenalty=100 and manually search
+% for and fix such page breaks)
+\brokenpenalty=10000
+
+% Use 1.6 times the normal baseline-to-baseline skip
+\renewcommand{\baselinestretch}{1.6}
+
+% Roman page numbers in cover pages
+\pagenumbering{roman}
+
+% Redefine the macro used for floats (including figures and tables)
+% so that single spacing is used.
+% (Note \def\figure{\@float{figure}set single spacing} doesn't work
+% because figure has an optional argument)
+\def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else
+ \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname
+ \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n
+ \@tfor \@tempa :=#2\do
+ {\if\@tempa p\advance\@tempcnta \@ne\fi
+ \if\@tempa p\advance\@tempcnta \tw@\fi
+ \if\@tempa p\advance\@tempcnta 4\relax\fi
+ \if\@tempa p\advance\@tempcnta 8\relax\fi
+ }\global\count\@currbox\@tempcnta}\@fltovf\fi
+ \global\setbox\@currbox\vbox\bgroup
+ \def\baselinestretch{1}\@normalsize
+ \boxmaxdepth\z@
+ \hsize\columnwidth \@parboxrestore}
+
+% Redefine the macro used for footnotes to use single spacing
+\long\def\@footnotetext#1{\insert\footins{\def\baselinestretch{1}\footnotesize
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+ \hsize\columnwidth \@parboxrestore
+ \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
+ {\rule{\z@}{\footnotesep}\ignorespaces
+ #1\strut}}}
+
+% \author, \title are defined in report style; here are the rest definitions
+% Define degree & thesis type
+% it takes two arguments: author's degree and thesis/disseration/whatever
+% defaults Doctor of Philosophy and Dissertation
+\def\degree#1#2{
+ \gdef\@degree{#1}
+ \gdef\@thesistype{#2}}
+\def\@degree{\rm Doctor of Philosophy}
+\def\@thesistype{\rm Dissertation}
+
+% Define college/school -- default College of Natural Sciences and Mathematics
+\def\college#1{\gdef\@college{#1}}
+\def\@college{\rm College of Natural Sciences and Mathematics}
+
+% Define department -- default Computer Science
+\def\department#1{\gdef\@department{#1}}
+\def\@department{\rm Computer Science}
+
+% Thesis advisor and committee
+\def\adviser#1{\gdef\@adviser{#1}}
+\def\firstreader#1{\gdef\@firstreader{#1}}
+\def\secondreader#1{\gdef\@secondreader{#1}}
+\def\thirdreader#1{\gdef\@thirdreader{#1}}
+\def\fourthreader#1{\gdef\@fourthreader{#1}}
+\def\submitdate#1{\gdef\@submitdate{#1}}
+
+% \author, \title in report
+\def\@title{}
+\def\@author{}
+\def\@adviser{}
+\def\@firstreader{}
+\def\@secondreader{}
+\def\@thirdreader{}
+\def\@fourthreader{}
+\def\@submitdate{\ifcase\the\month\or
+ January,\or February,\or March,\or April,\or May,\or June,\or
+ July,\or August,\or September,\or October,\or November,\or December,\fi
+ \space \number\the\year}
+
+\newif\ifcopyright
+\copyrighttrue
+
+\newif\iffigurelist
+\figurelisttrue
+
+\newif\iftablelist
+\tablelisttrue
+
+\newif\ifthreereaders
+\threereaderstrue
+
+\newif\iffourreaders
+\fourreaderstrue
+
+%Cover pages
+\def\titlep{%
+ \newpage
+ \thispagestyle{empty}%
+ \setcounter{page}{1}
+ \begin{center}
+ \Large\uppercase\expandafter{\@title}
+ \end{center}
+ \vskip.3in
+ \centerline{\vrule width 1.5in height 0.4pt}
+ \vskip.5in
+ \begin{center}
+ \rm A \expandafter{\@thesistype}\\
+ Presented to\\
+ the Faculty of the Department of
+ \expandafter{\@department}\\
+ University of Houston
+ \vskip.4in
+ \centerline{\vrule width 1.5in height 0.4pt}
+ \vskip.5in
+ In Partial Fulfillment\\
+ of the Requirements for the Degree\\
+ \expandafter{\@degree}
+ \vskip.4in
+ \centerline{\vrule width 1.5in height 0.4pt}
+ \vskip.5in
+ \rm By\\
+ \@author\\
+ \@submitdate\\
+ \end{center}}
+
+\def\copyrightpage{%
+ \newpage
+ \thispagestyle{empty}%
+ \setcounter{page}{1}
+ \null\vskip2.5in
+ \begin{center}
+ \copyright \ COPYRIGHTED BY\\
+ \vskip.5in
+ \underline{\@author}\\
+ \vskip.5in
+ \underline{\@submitdate}
+ \end{center}}
+
+
+\def\signaturepage{%
+ \newpage
+ \begin{center}
+ \Large\uppercase\expandafter{\@title}
+ \end{center}
+ \vspace{.5in}
+ \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\
+ \@author}}
+ \vspace{0.5in}
+ \hspace{2.9in} \rm APPROVED:
+
+ \vspace{.5in}
+ \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@adviser}}
+ \vspace{.5in}
+ \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@firstreader}}
+ \vspace{.5in}
+
+ \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@secondreader}}
+ \vspace{.5in}
+ \ifthreereaders
+ \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@thirdreader}}
+ \fi
+ \vspace{.5in}
+ \iffourreaders
+ \rightline{\shortstack[l]{\vrule width 3in height 0.4pt\\ \@fourthreader}}
+ \fi
+ \vspace{.8in}
+ \leftline{\shortstack[l]{\vrule width 4in height
+ 0.4pt\\Dean, \expandafter{\@college}}}}
+
+\def\makecoverpages{%
+ \ifcopyright\copyrightpage\fi
+ \titlep
+ \signaturepage}
+
+
+%Abstract cover page
+\def\abstractp{%
+ \newpage
+ \begin{center}
+ \Large\uppercase\expandafter{\@title}
+ \end{center}
+ \vskip.3in
+ \centerline{\vrule width 1.5in height 0.4pt}
+ \vskip.5in
+ \begin{center}
+ \rm An Abstract of a \expandafter{\@thesistype}\\
+ Presented to\\
+ the Faculty of the Department of
+ \expandafter{\@department}\\
+ University of Houston
+ \vskip.4in
+ \centerline{\vrule width 1.5in height 0.4pt}
+ \vskip.5in
+ In Partial Fulfillment\\
+ of the Requirements for the Degree\\
+ \expandafter{\@degree}
+ \vskip.4in
+ \centerline{\vrule width 1.5in height 0.4pt}
+ \vskip.5in
+ \rm By\\
+ \@author\\
+ \@submitdate\\
+ \end{center}}
+
+%Abstract
+\def\abstract{
+ \abstractp
+ \newpage
+ \begin{center}
+ \Huge \bf Abstract
+ \end{center}}
+
+%\def\endabstract{}
+
+%Acknowledgements
+\def\acknowledgements{
+ \newpage
+ \begin{center}
+ \Huge \bf Acknowledgements
+ \end{center}}
+
+%\def\endacknowledgements{}
+
+%Table of contents
+\def\makecontentspages{
+ \def\baselinestretch{1}\@normalsize
+ \tableofcontents
+ \newpage
+ \iffigurelist
+ \listoffigures
+ \newpage
+ \fi
+ \iftablelist
+ \listoftables
+ \newpage
+ \fi
+ \def\baselinestretch{1.6}\@normalsize}
+
+%Chapter page definition
+\def\chapterpages{
+ % Put the page number on the top of the page
+% \def\@oddhead{\rm\hfil\thepage\hfil}
+% \def\@oddfoot{}
+% \let\@evenhead\@oddhead
+% \let\@evenfoot\@oddfoot
+
+ \pagenumbering{arabic}}
+
+% Redefine \thebibliography to go to a new page and put an entry in the
+% table of contents
+\let\@ldthebibliography\thebibliography
+\renewcommand{\thebibliography}[1]{
+ \newpage
+ \def\baselinestretch{1}\@normalsize
+ \addcontentsline{toc}{chapter}{Bibliography}
+ \@ldthebibliography{#1}}
+
+% Single space for drafts
+\def\singlespace{
+ \def\baselinestretch{1}\@normalsize}
+
+%That's all folks
+
+
+%Jim Briggs, Ph.D. <-- Dept. of Chem. <-- Univ. of Houston <-- Houston <-- TX
+% <-- 77204-5641 <-- (713)743-3315 <-- JBriggs@UH.EDU
+
+
diff --git a/macros/latex209/contrib/misc/ukdate.sty b/macros/latex209/contrib/misc/ukdate.sty
new file mode 100644
index 0000000000..8a39f217a0
--- /dev/null
+++ b/macros/latex209/contrib/misc/ukdate.sty
@@ -0,0 +1,203 @@
+% --- ------------------------------------------------------------------
+% --- English-style Date Macros for LaTeX, version 1.00--0.
+% --- ------------------------------------------------------------------
+%
+% --- \today (replaces American-style macro of same name) generates
+% --- today's date in the form Thursday 4th October 1066.
+% --- The `th' is raised, reduced in size and underlined in the
+% --- same font style (family) as the rest of the date.
+%
+% --- \st generates a raised, reduced, underlined `st', as in 1st.
+% --- \nd generates a raised, reduced, underlined `nd', as in 2nd.
+% --- \rd generates a raised, reduced, underlined `rd', as in 3rd.
+% --- \th generates a raised, reduced, underlined `th', as in 4th.
+%
+% --- \dayofweek generates the day of the week, based on TeX's values
+% --- of \day, \month and \year.
+%
+% --- \phaseofmoon generates the current phase of the moon, again based
+% --- on TeX's values for \day, \month and \year.
+%
+% --- ------------------------------------------------------------------
+% --- Adrian F. Clark (alien@uk.ac.essex.ese) 26-Oct-1988 10:05:50
+% --- ------------------------------------------------------------------
+
+% --- Counters. Note that we use the same registers as TeX holds other
+% --- things in (e.g., \count0 holds the page number). This requires
+% --- that \@savestyle, \@setstyle, \dayofweek and \phaseofmoon perform
+% --- all their register manipulations within a group. This may seem
+% --- a bit messy, but it saves having eight registers permanently set
+% --- aside just for date calculation.
+
+\def\@cent{\count0 } % century number (1979 == 20)
+\def\@diy{\count1 } % day in the year
+\def\@dow{\count2 } % gets day of the week
+\def\@epact{\count3 } % age of the moon on Jan. 1
+\def\@golden{\count4 } % Moon's golden number
+\def\@leap{\count5 } % leap year fingaler
+\def\@x{\count6 } % temp register
+\def\@y{\count7 } % another temp register
+
+
+% --- A replacement for the ``plain'' TeX and LaTeX \today macro, to
+% --- to output the date in English-style.
+% --- They ensure the smaller text comes out in the right font by saving
+% --- the font family before reducing the size, then restoring it. (This
+% --- was suggested by Leslie Lamport.) Of course, it requires that the
+% --- font in use when today is invoked has a sensible family.
+
+\def\@up#1{{\@savestyle\thinspace$^{\underline{\hbox{%
+ \scriptsize\@setstyle#1\fam=-1 }}}$}}
+\def\st{\@up{st}}
+\def\nd{\@up{nd}}
+\def\rd{\@up{rd}}
+\def\th{\@up{th}}
+
+% --- Macros to save and restore the font family.
+
+\def\@savestyle{\count0=\the\fam}
+\def\@setstyle{\ifcase\count0\rm\or\mit\or\cal\or\rm% what's family 3?
+ \or\it\or\sl\or\bf\or\tt\fi}
+
+% --- The date, English style (e.g. Thursday 4th October 1066).
+
+\def\today{\dayofweek\ \number\day\ifcase\day
+ \or\st\or\nd\or\rd\or\th\or\th\or\th\or\th\or\th\or\th\or\th
+ \or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\th
+ \or\st\or\nd\or\rd\or\th\or\th\or\th\or\th\or\th\or\th\or\th\or\st\fi
+ \space\ifcase\month\or January\or February\or March\or April\or May\or
+ June\or July\or August\or September\or October\or November\or December\fi
+ \space\number\year}
+
+% --- The day of the week ("Sunday", etc.) is inserted into the text
+% --- by \dayofweek. (This uses registers \@dow, \@leap, \@x and \@y.)
+% --- I acquired this from elsewhere; I don't know who wrote it.
+
+\def\dayofweek{{%
+% leap = year + (month - 14)/12;
+ \@leap=\month \advance\@leap by -14 \divide\@leap by 12
+ \advance\@leap by \year
+% dow = (13 * (month + 10 - (month + 10)/13*12) - 1)/5
+ \@dow=\month \advance\@dow by 10
+ \@y=\@dow \divide\@y by 13 \multiply\@y by 12
+ \advance\@dow by -\@y \multiply\@dow by 13
+ \advance\@dow by -1 \divide\@dow by 5
+% dow += day + 77 + 5 * (leap % 100)/4
+ \advance\@dow by \day \advance\@dow by 77
+ \@x=\@leap \@y=\@x \divide\@y by 100 \multiply\@y by 100 \advance\@x by -\@y
+ \multiply\@x by 5 \divide\@x by 4 \advance\@dow by \@x
+% dow += leap / 400
+ \@x=\@leap \divide\@x by 400 \advance\@dow by \@x
+% dow -= leap / 100 * 2;
+% dow = (dow % 7)
+ \@x=\@leap \divide\@x by 100 \multiply\@x by 2 \advance\@dow by -\@x
+ \@x=\@dow \divide\@x by 7 \multiply\@x by 7 \advance\@dow by -\@x
+ \ifcase\@dow Sunday\or Monday\or Tuesday\or Wednesday\or
+ Thursday\or Friday\or Saturday\fi}}
+%
+% --- Likewise, \phaseofmoon inserts the phase of the moon into the
+% --- text. This was written by the same person as \dayofweek.
+% --- The routine calculates the year's epact (the age of the moon on Jan 1.),
+% --- adds this to the number of days in the year, and calculates the phase
+% --- of the moon for this date. It returns the phase as a string, e.g.,
+% --- "new", "full", etc.
+%
+% --- In the algorithm:
+% --- diy is the day of the year - 1 (i.e., Jan 1 is day 0).
+% --- golden is the number of the year in the Mentonic cycle, used to
+% --- determine the position of the calender moon.
+% --- epact is the age of the calender moon (in days) at the beginning
+% --- of the year. To calculate epact, two century-based
+% --- corrections are applied:
+% --- Gregorian: (3 * cent)/4 - 12
+% --- is the number of years such as 1700, 1800 when
+% --- leap year was not held.
+% --- Clavian: (((8 * cent) + 5) / 25) - 5
+% --- is a correction to the Mentonic cycle of about
+% --- 8 days every 2500 years. Note that this will
+% --- overflow 16 bits in the year 409600. Beware.
+% --- The algorithm is accurate for the Gregorian calender only.
+%
+% --- The magic numbers used in the phase calculation are:
+% --- 29.5 The moon's period in days.
+% --- 177 29.5 scaled by 6
+% --- 22 (29.5 / 8) scaled by 6 (this gets the phase)
+% --- 11 ((29.5 / 8) / 2) scaled by 6
+%
+% --- Theoretically, this should yield a number in the range 0 .. 7. However,
+% --- two days per year, things don't work out too well.
+%
+% --- Epact is calculated by the algorithm given in Knuth vol. 1 (Calculation
+% --- of Easter). See also the article on Calenders in the Encyclopaedia
+% --- Britannica and Knuth's algorithm in CACM April 1962, page 209.
+%
+\def\phaseofmoon{{%
+ \@diy=\day \advance\@diy by \ifcase\month % Jan 1 == 0
+ -1\or -1\or 30\or 58\or 89\or 119\or 150\or % Jan .. Jun
+ 180\or 211\or 241\or 272\or 303\or 333\fi % Jul .. Dec
+% if ((month > 2) && ((year % 4 == 0) &&
+% ((year % 400 == 0) || (year % 100 != 0))))
+% diy++; /* Leapyear fixup */
+ \ifnum \month>2
+ \@x=\year \@y=\@x \divide\@y by 4 \multiply\@y by 4 \advance\@x by -\@y
+ \ifnum \@x=0 % month > 2 and maybe leapyear
+ \@x=\year \@y=\@x \divide\@y by 400
+ \multiply\@y by 400 \advance\@x by -\@y
+ \ifnum \@x=0 % 2000 is a leap year
+ \advance\@diy by 1 % so it's one day later
+ \else % not 2000, check other '00's
+ \@x=\year \@y=\@x \divide\@y by 100
+ \multiply\@y by 100 \advance\@x by -\@y
+ \ifnum \@x>0 % not some other '00' year
+ \advance\@diy by 1 % it's still one day later
+ \fi % not odd century
+ \fi % not 2000-type century
+ \fi % not leapish year
+ \fi % not march or later
+% cent = (year / 100) + 1; /* Century number */
+% golden = (year % 19) + 1; /* Golden number */
+ \@cent=\year \divide\@cent by 100 \advance\@cent by 1
+ \@golden=\year
+ \@y=\year \divide\@y by 19 \multiply\@y by 19 \advance\@golden by -\@y
+ \advance\@golden by 1
+% epact = ((11 * golden) + 20 /* Golden number */
+% + (((8 * cent) + 5) / 25) - 5 /* 400 year cycle */
+% - (((3 * cent) / 4) - 12)) % 30; /* Leap year correction */
+ \@epact=11 \multiply\@epact by \@golden
+ \advance\@epact by 20
+ \@x=8 \multiply\@x by \@cent \advance\@x by 5
+ \divide\@x by 25 \advance\@x by -5
+ \advance\@epact by \@x
+ \@x=3 \multiply\@x by \@cent \divide\@x by 4 \advance\@x by -12
+ \advance\@epact by -\@x
+ \@y=\@epact \divide\@y by 30 \multiply\@y by 30 \advance\@epact by -\@y
+% if (epact <= 0)
+% epact += 30; /* Age range is 1 .. 30 */
+% if ((epact == 25 && golden > 11) || epact == 24)
+% epact++;
+ \ifnum \@epact<0
+ \advance\@epact by 30
+ \fi
+ \ifnum \@epact=25
+ \ifnum \@golden>11
+ \advance \@epact by 1
+ \fi
+ \else
+ \ifnum \@epact=24
+ \advance \@epact by 1
+ \fi
+ \fi
+%
+% --- Calculate the phase, using the magic numbers defined above.
+% --- Note that phase may be equal to 8 (== 0) on two days of the year
+% --- due to the way the algorithm was implemented.
+% --- phase = (((((diy + epact) * 6) + 11) % 177) / 22) & 7;
+%
+ \@x=\@diy \advance\@x by \@epact \multiply\@x by 6 \advance\@x by 11
+ \@y=\@x \divide\@y by 177 \multiply\@y by 177 \advance\@x by -\@y
+ \divide\@x by 22
+ \ifcase\@x new\or waxing crescent\or in its first quarter\or
+ waxing gibbous\or full\or waning gibbous\or
+ in its last quarter\or waning crescent\or new\fi}}
+
+% --- End of ukdate.sty
diff --git a/macros/latex209/contrib/misc/underlin.tex b/macros/latex209/contrib/misc/underlin.tex
new file mode 100644
index 0000000000..e2495f63bd
--- /dev/null
+++ b/macros/latex209/contrib/misc/underlin.tex
@@ -0,0 +1,16 @@
+\nofiles
+\documentstyle[doc]{article}
+
+^^A !!!! Warning !!!!
+^^A Comment character in this file is ^^A not %
+^^A after doc.sty was read in.
+
+ \DisableCrossrefs
+^^A \EnableCrossrefs ^^A Uncomment this line if you want
+ ^^A full crossreferences
+ \OnlyDescription ^^A Outcomment this line if you want
+ ^^A the full article
+
+\begin{document}
+ \input{underlin.sty}
+\end{document}
diff --git a/macros/latex209/contrib/misc/unfinished.tex b/macros/latex209/contrib/misc/unfinished.tex
new file mode 100644
index 0000000000..3904365789
--- /dev/null
+++ b/macros/latex209/contrib/misc/unfinished.tex
@@ -0,0 +1,44 @@
+% -*- Mode: TeX -*-
+
+\ifx\thisfileis\anUndefinedMacro\input maybeload \fi
+
+\thisfileis{<eb.tex.texlocal>unfinished} % abort loading if already loaded
+
+% This file defines a LaTex environment that's convenient for marking unfinished
+% sections of a paper.
+%
+% \begin{unfinished}
+% \* explain the hairy stuff
+% \* give examples
+% \end{unfinished}
+%
+% There are also the abbreviations \notfinished and \notwritten.
+%
+% The \begin{unfinished}...\end{unfinished} environment is like an
+% itemize environment, but it also types a warning if it occurs
+% in a document that's not a draft (as determined heuristically by
+% the setting of \overfullrule).
+%
+% To shut off the \unfinished sections entirely in a pinch, you
+% can use the command \killunfinished. Of course, normally
+% you should repair them by finishing them. There may be
+% bugs in the \killunfinished mechanism.
+
+\newcommand{\unfinished}{\ifdim\overfullrule > 0pt\else
+ \typeout{WARNING: Unfinished section not in a draft.}
+ \fi\def\*{\item{}}\bgroup\itemize}
+
+\newdef\endunfinished{\egroup\enditemize}
+
+\newcommand{\unfinisheditem}[1]{\begin{unfinished}
+\item #1
+\end{unfinished}}
+
+\newcommand{\notfinished}{\unfinisheditem{not finished yet}}
+\newcommand{\notwritten}{\unfinisheditem{not written yet}}
+
+\makeatletter
+\newdef\killunfinished{\def\unfinished{\setbox9\vbox\bgroup\itemize}
+\def\endunfinished{\egroup}}
+\makeatother
+
diff --git a/macros/latex209/contrib/misc/unilogo.sty b/macros/latex209/contrib/misc/unilogo.sty
new file mode 100644
index 0000000000..568a05169c
--- /dev/null
+++ b/macros/latex209/contrib/misc/unilogo.sty
@@ -0,0 +1,259 @@
+%
+% ##############################################################################
+% ## ##
+% ## This LaTeX macro generates the University of Stuttgart logo which is ##
+% ## considered as single character. Its size can be arbitrarily selected ##
+% ## from 15mm to 75mm in diameter. If the requested size is out of this ##
+% ## range a framebox containing an error notification is printed instead ##
+% ## of the logo. ##
+% ## ##
+% ## If the mathematical symbol fonts defined within this macro are not ##
+% ## available on a specific installation the macro can be easily adapted ##
+% ## to the available fonts. ##
+% ## ##
+% ## Parameters: P1 = requested size [mm] ##
+% ## ##
+% ##############################################################################
+% ## ##
+% ## Copyright : Universitaet Stuttgart, Institut fuer Nachrichten- ##
+% ## vermittlung und Datenverarbeitung (IND) ##
+% ## Author : Gert Willmann ##
+% ## Date : 25-NOV-1988 ##
+% ## ##
+% ##############################################################################
+%
+
+\newcommand {\UniStuttgartLogo} [1] {\setlength{\unitlength}{#1}
+ %
+ \font \MINUSFOUR = cmsy5 scaled 1000 % About 10pt magstep -4 (font [PIXEL.1500]cmsy5)
+ \font \MINUSTHREE = cmsy5 scaled 1200 % About 10pt magstep -3 (font [PIXEL.1800]cmsy5)
+ \font \MINUSTWO = cmsy7 scaled 1000 % About 10pt magstep -2 (font [PIXEL.1500]cmsy7)
+ \font \MINUSONE = cmsy7 scaled 1200 % About 10pt magstep -1 (font [PIXEL.1800]cmsy7)
+ \font \ZERO = cmsy10 scaled 1000 % Exact 10pt magstep 0 (font [PIXEL.1500]cmsy10)
+ \font \PLUSONE = cmsy10 scaled 1200 % Exact 10pt magstep +1 (font [PIXEL.1800]cmsy10)
+ \font \PLUSTWO = cmsy10 scaled 1440 % Exact 10pt magstep +2 (font [PIXEL.2160]cmsy10)
+ \font \PLUSTHREE = cmsy10 scaled 1728 % Exact 10pt magstep +3 (font [PIXEL.2592]cmsy10)
+ \font \PLUSFOUR = cmsy10 scaled 2073 % Exact 10pt magstep +4 (font [PIXEL.3110]cmsy10)
+ \font \PLUSFIVE = cmsy10 scaled 2488 % Exact 10pt magstep +5 (font [PIXEL.3732]cmsy10)
+ \font \PLUSSIX = cmsy10 scaled 2986 % Exact 10pt magstep +6 (font [PIXEL.4479]cmsy10)
+ %
+ \ifdim \unitlength<15.00mm
+ \def \DIAMOND ##1 {}
+ \else
+ \ifdim \unitlength<18.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\MINUSFOUR\symbol{'005}}}
+ \put (##1) {\makebox(-0.010,-0.010){\PLUSTWO\symbol{'001}}}} % Offset to compensate bad symbol alignment
+ \else
+ \ifdim \unitlength<21.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\MINUSTHREE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSFOUR\symbol{'005}}}
+ \put (##1) {\makebox(-0.010,-0.010){\PLUSTWO\symbol{'001}}}} % Offset to compensate bad symbol alignment
+ \else
+ \ifdim \unitlength<24.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\MINUSTWO\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSFOUR\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSFOUR\symbol{'017}}}}
+ \else
+ \ifdim \unitlength<27.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\MINUSONE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSTHREE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSTHREE\symbol{'017}}}}
+ \else
+ \ifdim \unitlength<31.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\ZERO\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSTWO\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSTWO\symbol{'017}}}}
+ \else
+ \ifdim \unitlength<36.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSONE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSONE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\MINUSONE\symbol{'017}}}}
+ \else
+ \ifdim \unitlength<42.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSTWO\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSONE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSONE\symbol{'017}}}}
+ \else
+ \ifdim \unitlength<49.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSTHREE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSTWO\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSTWO\symbol{'017}}}}
+ \else
+ \ifdim \unitlength<58.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSFOUR\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSTHREE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSTHREE\symbol{'017}}}}
+ \else
+ \ifdim \unitlength<69.00mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSFIVE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSFOUR\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSFOUR\symbol{'017}}}}
+ \else
+ \ifdim \unitlength<75.01mm
+ \def \DIAMOND ##1 {\put (##1) {\makebox(0.000,0.000){\PLUSSIX\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSFIVE\symbol{'005}}}
+ \put (##1) {\makebox(0.000,0.000){\PLUSFIVE\symbol{'017}}}}
+ \else
+ \def \DIAMOND ##1 {}
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ %
+ \begin{picture}(1.000,1.000)(-0.500,-0.500)
+ \ifdim \unitlength<15.00mm
+ \thinlines
+ \put (-0.500,-0.500) {\framebox(1.000,1.000){\scriptsize\it\shortstack{Size\\ too\\ small}}}
+ \typeout {UniStuttgartLogo -- Released 25 November 1988, requested size too small.}
+ \else
+ \ifdim \unitlength<75.01mm
+ \DIAMOND { 0.000, 0.000} % Center (0,0)
+ \DIAMOND {-0.500, 0.000} % X-Axis (*,0)
+ \DIAMOND {-0.342, 0.000}
+ \DIAMOND {-0.205, 0.000}
+ \DIAMOND {-0.091, 0.000}
+ \DIAMOND { 0.091, 0.000}
+ \DIAMOND { 0.205, 0.000}
+ \DIAMOND { 0.342, 0.000}
+ \DIAMOND { 0.500, 0.000}
+ \DIAMOND { 0.000,-0.500} % Y-Axis (0,*)
+ \DIAMOND { 0.000,-0.342}
+ \DIAMOND { 0.000,-0.205}
+ \DIAMOND { 0.000,-0.091}
+ \DIAMOND { 0.000, 0.091}
+ \DIAMOND { 0.000, 0.205}
+ \DIAMOND { 0.000, 0.342}
+ \DIAMOND { 0.000, 0.500}
+ \DIAMOND { 0.041, 0.041} % First quadrant (+,+)
+ \DIAMOND { 0.087, 0.087}
+ \DIAMOND { 0.137, 0.137}
+ \DIAMOND { 0.191, 0.191}
+ \DIAMOND { 0.249, 0.249}
+ \DIAMOND { 0.311, 0.311}
+ \DIAMOND { 0.377, 0.377}
+ \DIAMOND { 0.144, 0.046}
+ \DIAMOND { 0.046, 0.144}
+ \DIAMOND { 0.202, 0.097}
+ \DIAMOND { 0.097, 0.202}
+ \DIAMOND { 0.263, 0.152}
+ \DIAMOND { 0.152, 0.263}
+ \DIAMOND { 0.270, 0.051}
+ \DIAMOND { 0.051, 0.270}
+ \DIAMOND { 0.328, 0.211}
+ \DIAMOND { 0.211, 0.328}
+ \DIAMOND { 0.338, 0.107}
+ \DIAMOND { 0.107, 0.338}
+ \DIAMOND { 0.398, 0.274}
+ \DIAMOND { 0.274, 0.398}
+ \DIAMOND { 0.412, 0.166}
+ \DIAMOND { 0.166, 0.412}
+ \DIAMOND { 0.418, 0.056}
+ \DIAMOND { 0.056, 0.418}
+ \DIAMOND { 0.488, 0.231}
+ \DIAMOND { 0.231, 0.488}
+ \DIAMOND { 0.498, 0.116}
+ \DIAMOND { 0.116, 0.498}
+ \DIAMOND {-0.041, 0.041} % Second quadrant (-,+)
+ \DIAMOND {-0.087, 0.087}
+ \DIAMOND {-0.137, 0.137}
+ \DIAMOND {-0.191, 0.191}
+ \DIAMOND {-0.249, 0.249}
+ \DIAMOND {-0.311, 0.311}
+ \DIAMOND {-0.377, 0.377}
+ \DIAMOND {-0.144, 0.046}
+ \DIAMOND {-0.046, 0.144}
+ \DIAMOND {-0.202, 0.097}
+ \DIAMOND {-0.097, 0.202}
+ \DIAMOND {-0.263, 0.152}
+ \DIAMOND {-0.152, 0.263}
+ \DIAMOND {-0.270, 0.051}
+ \DIAMOND {-0.051, 0.270}
+ \DIAMOND {-0.328, 0.211}
+ \DIAMOND {-0.211, 0.328}
+ \DIAMOND {-0.338, 0.107}
+ \DIAMOND {-0.107, 0.338}
+ \DIAMOND {-0.398, 0.274}
+ \DIAMOND {-0.274, 0.398}
+ \DIAMOND {-0.412, 0.166}
+ \DIAMOND {-0.166, 0.412}
+ \DIAMOND {-0.418, 0.056}
+ \DIAMOND {-0.056, 0.418}
+ \DIAMOND {-0.488, 0.231}
+ \DIAMOND {-0.231, 0.488}
+ \DIAMOND {-0.498, 0.116}
+ \DIAMOND {-0.116, 0.498}
+ \DIAMOND {-0.041,-0.041} % Third quadrant (-,-)
+ \DIAMOND {-0.087,-0.087}
+ \DIAMOND {-0.137,-0.137}
+ \DIAMOND {-0.191,-0.191}
+ \DIAMOND {-0.249,-0.249}
+ \DIAMOND {-0.311,-0.311}
+ \DIAMOND {-0.377,-0.377}
+ \DIAMOND {-0.144,-0.046}
+ \DIAMOND {-0.046,-0.144}
+ \DIAMOND {-0.202,-0.097}
+ \DIAMOND {-0.097,-0.202}
+ \DIAMOND {-0.263,-0.152}
+ \DIAMOND {-0.152,-0.263}
+ \DIAMOND {-0.270,-0.051}
+ \DIAMOND {-0.051,-0.270}
+ \DIAMOND {-0.328,-0.211}
+ \DIAMOND {-0.211,-0.328}
+ \DIAMOND {-0.338,-0.107}
+ \DIAMOND {-0.107,-0.338}
+ \DIAMOND {-0.398,-0.274}
+ \DIAMOND {-0.274,-0.398}
+ \DIAMOND {-0.412,-0.166}
+ \DIAMOND {-0.166,-0.412}
+ \DIAMOND {-0.418,-0.056}
+ \DIAMOND {-0.056,-0.418}
+ \DIAMOND {-0.488,-0.231}
+ \DIAMOND {-0.231,-0.488}
+ \DIAMOND {-0.498,-0.116}
+ \DIAMOND {-0.116,-0.498}
+ \DIAMOND { 0.041,-0.041} % Fourth quadrant (+,-)
+ \DIAMOND { 0.087,-0.087}
+ \DIAMOND { 0.137,-0.137}
+ \DIAMOND { 0.191,-0.191}
+ \DIAMOND { 0.249,-0.249}
+ \DIAMOND { 0.311,-0.311}
+ \DIAMOND { 0.377,-0.377}
+ \DIAMOND { 0.144,-0.046}
+ \DIAMOND { 0.046,-0.144}
+ \DIAMOND { 0.202,-0.097}
+ \DIAMOND { 0.097,-0.202}
+ \DIAMOND { 0.263,-0.152}
+ \DIAMOND { 0.152,-0.263}
+ \DIAMOND { 0.270,-0.051}
+ \DIAMOND { 0.051,-0.270}
+ \DIAMOND { 0.328,-0.211}
+ \DIAMOND { 0.211,-0.328}
+ \DIAMOND { 0.338,-0.107}
+ \DIAMOND { 0.107,-0.338}
+ \DIAMOND { 0.398,-0.274}
+ \DIAMOND { 0.274,-0.398}
+ \DIAMOND { 0.412,-0.166}
+ \DIAMOND { 0.166,-0.412}
+ \DIAMOND { 0.418,-0.056}
+ \DIAMOND { 0.056,-0.418}
+ \DIAMOND { 0.488,-0.231}
+ \DIAMOND { 0.231,-0.488}
+ \DIAMOND { 0.498,-0.116}
+ \DIAMOND { 0.116,-0.498}
+ \typeout {UniStuttgartLogo -- Released 25 November 1988.}
+ \else
+ \thicklines
+ \put (-0.500,-0.500) {\framebox(1.000,1.000){\LARGE\it Size~too~large}}
+ \typeout {UniStuttgartLogo -- Released 25 November 1988, requested size too large.}
+ \fi
+ \fi
+ \end{picture}}
+
diff --git a/macros/latex209/contrib/misc/uscthesis.sty b/macros/latex209/contrib/misc/uscthesis.sty
new file mode 100644
index 0000000000..ce29bfe2a7
--- /dev/null
+++ b/macros/latex209/contrib/misc/uscthesis.sty
@@ -0,0 +1,999 @@
+%$% USCthesis.sty
+%$% USC Thesis/Dissertation document-style
+%$% $Header: USCthesis.sty,v 2.3 92/08/13 14:22:21 sdc Exp $
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% @LaTeX-style-file{
+%%% Author = "Steven Douglas Cochran",
+%%% Version = "2.3",
+%%% Date = "13 August 1992",
+%%% Time = "14:22:21 EDT",
+%%% Filename = "USCthesis.sty",
+%%% Address = "Digital Mapping Laboratory
+%%% School of Computer Science
+%%% Carnegie-Mellon University
+%%% 5000 Forbes Avenue
+%%% Pittsburgh, PA 15213-3890
+%%% USA",
+%%% Telephone = "(412) 268-5654",
+%%% FAX = "",
+%%% checksum = "54671 999 3568 32946",
+%%% Email = "sdc+@CS.CMU.EDU (Internet)",
+%%% CodeTable = "ISO/ASCII",
+%%% Keywords = "LaTeX, Thesis, Dissertation",
+%%% Archives = "shsu*",
+%%% Supported = "yes",
+%%% Abstract = "LaTeX document-style for typesetting
+%%% Theses or Dissertations in accordance
+%%% with the University of Southern
+%%% California Regulations for Format and
+%%% Presentation of Theses and Disertations.
+%%% It provides some alternative ``bells and
+%%% whistles'' such as support for
+%%% multi-volume documents."
+%%% Note = "Requires Stephen Page's `doublespace'
+%%% style option (or equivalent) in addition
+%%% to the standard LaTeX `report' style."
+%%% SeeAlso = "techreport.sty",
+%%% DocString = "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.",
+%%% }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%$% $Log: USCthesis.sty,v $
+%$% Revision 2.3 92/08/13 14:22:21 sdc
+%$% Added \universityname for easy use outside USC. Also the
+%$% \if@techreport switch can be used to turn off the one-side-only
+%$% warning message (for better interface with the techreport style
+%$% option). Placed a check for TeX-3.0 to allow an old TeX to work
+%$% without warnings. Cleaned-up the code and comments a little.
+%$%
+%$% Revision 2.2 92/06/29 10:59:15 sdc
+%$% Added standard file header for style.
+%$%
+%$% Revision 2.1 91/02/09 00:54:08 cochran
+%$% Fixed bug in interaction with techreport.sty.
+%$%
+%$% Revision 2.0 91/01/03 16:12:48 cochran
+%$% Merged divergent branches by cochran@iris.usc.edu (1.10) and by
+%$% tli@almaak.usc.edu (1.11); these are common up to revision 1.8.
+%$% Removed fix in 1.11 which added Reference List to the TOC since
+%$% this is handled by the \references command.
+%$%
+%$% Changes by tli@almaak.usc.edu:
+%$%
+%$% 1.11 (90/09/23) Change title font to 12pt. Change author's
+%$% font to 12pt. Fix Reference List so that it shows up in TOC.
+%$% Break the way that appendices show up in TOC.
+%$%
+%$% 1.10 (90/07/10) Added a hack to make it work with TeX 3.0.
+%$%
+%$% 1.9 (90/01/30) Make subsubsections show up with numbered
+%$% labels and in the TOC.
+%$%
+%$% Changes by cochran@iris.usc.edu:
+%$%
+%$% 1.10 (90/12/29) Added commands and modified \title to allow
+%$% multiple volume dissertations. Fixed bug which caused the
+%$% pagestyle of the TOC to be wrong if there were no
+%$% preceeding prefacesections.
+%$%
+%$% 1.9 (90/12/03) Corrected title size to correspond to the
+%$% University Publications statement that the "Title must be
+%$% the same size as `FACULTY OF ...' and no bold print. Also
+%$% added an optional argument to the \pageleft command to
+%$% allow the fine tuning of the gutter margin in the
+%$% techreport style option.
+%$%
+%$% Revision 1.8 89/09/15 19:39:11 tli
+%$% Change spacing in accordance with University Publications.
+%$%
+%$% Revision 1.7 89/01/27 13:56:04 tli
+%$% Too much space after a saying.
+%$%
+%$% Revision 1.6 89/01/26 14:01:20 tli
+%$% Added the saying environment.
+%$%
+%$% Revision 1.5 88/11/02 10:42:47 cochran
+%$% Minor corrections and removal of unnecessary \makeatletter and
+%$% \makeatother.
+%$%
+%$% Revision 1.4 88/10/20 11:58:38 cochran
+%$% Updated to allow the user more control over spacing to the "blue
+%$% lines," and to be in accordance with the USC Regulations for
+%$% Format and Presentation of Theses and Disertations, published
+%$% March 1987.
+%$%
+%$% Revision 1.3 88/03/16 10:49:19 cochran
+%$% Several small updates to \committee as suggested by peng@USC-IRIS.
+%$%
+%$% Revision 1.1 88/03/05 20:04:51 cochran
+%$% Set penalties, and new margin and page sizes. Fixed bug which
+%$% caused a wrong contents page for long lists of figures or tables.
+%$%
+%$% Revision 1.0 87/03/05 18:29:34 cochran
+%$% Created by combining the best (?) features of the dissertation
+%$% styles written by Herb Barad @ USC-SIPI and Howard Trickey @
+%$% Stanford University.
+%$%
+%$% NOTE: This style assumes the existance of Stephen Page's
+%$% `doublespace' style option in addition to the standard
+%$% LaTeX `report' style.
+%%%
+%%% Example:
+%%%
+%%% \documentstyle[12pt]{USCthesis}
+%%% \begin{document}
+%%% \title[Volume I]{Dissertation Title}
+%%% \author{Terry FullName Candidate}
+%%% \committee{J.~Smith & (Chairperson)\\*
+%%% N.~Jones\\*
+%%% S.~Foobar & (Outside Member)}
+%%% \begin{preface}
+%%% \prefacesection{Dedication}
+%%% This dissertation is dedicated to . . .
+%%% \prefacesection{Acknowledgements}
+%%% I would like to thank . . .
+%%% \begin{singlespace}
+%%% \tableofcontents
+%%% \listoftables
+%%% \listoffigures
+%%% \end{singlespace}
+%%% \prefacesection{Abstract}
+%%% This dissertation contains all knowledge about . . .
+%%% \end{preface}
+%%% \chapter{Introduction}
+%%% . . .
+%%% \chapter{Conclusions}
+%%% . . .
+%%% \begin{singlespace}
+%%% \references{plain}{mybib}
+%%% \appendix
+%%% \chapter{A Long Proof}
+%%% . . .
+%%% \end{singlespace}
+%%% . . .
+%%% \addvolumecontents{thesis_part2}
+%%% \addvolumecontents{thesis_part3}
+%%% \addvolumecontents[lof]{thesis_part2}
+%%% \end{document}
+%%%
+%%% Documentation:
+%%%
+%%% This style file modifies the standard report style to follow the
+%%% "USC Regulations for Format and Presentation of Theses and
+%%% Dissertations" (July 1989) document published by the Office of
+%%% University Publications.
+%%%
+%%% The following options are available for use in the \documentstyle
+%%% (other options also available as report.sty options or as
+%%% option.sty files).
+%%%
+%%% `10pt' (default) `11pt' or `12pt' base typesize.
+%%%
+%%% `dissertation' (default), or `thesis' title page.
+%%%
+%%% `final' (default) or `proposal' layout.
+%%%
+%%% `copyright' (default) or `nocopyright' message on title page.
+%%% This affects the `final' layout only.
+%%%
+%%% `fussy' (default) or `sloppy' word spacing. This affects the
+%%% alignment at the right margin. Fussy will sometimes write
+%%% over the blue line but is very useful for finding problem
+%%% areas during the development of the thesis. Sloppy will
+%%% insure that no line passes the right margin, but may need
+%%% to over stretch the line and thus generate an underfilled
+%%% hbox message.
+%%%
+%%% `clref' (default) or `opref' to set the open or closed format
+%%% of the entries in the references section.
+%%%
+%%% The following may be set PRIOR to the \begin{document} in order
+%%% to make adjustments to fit the text in the "blue lines". The
+%%% values listed below are the defaults:
+%%%
+%%% \pagetop{1.01 true in} % 1 inch plus allowance
+%%% \pageleft{1.51 true in} % 1.5 inches plus allowance
+%%% \pageheight{8.73 true in} % 9 inches minus allowance
+%%% \pagewidth{5.92 true in} % 6 inches minus allowance
+%%% \pagemargin{2.0} % Number of (unstretched) lines
+%%% % between text and page number
+%%% \setstretch{1.3} % Set the "double" spacing
+%%%
+%%% The following commands control what goes on the title page.
+%%%
+%%% \title[volume]{thesis title}
+%%% - The thesis title is set using the \title command.
+%%% The optional volume parameter allows the
+%%% specification of the volume on the title page for
+%%% long papers which are divided.
+%%%
+%%% \author{author's full name}
+%%% - Authors name.
+%%%
+%%% \universityname{UNIVERSITY OF SOUTHERN CALIFORNIA}
+%%% - The university's name (the above is the default).
+%%%
+%%% \schoolname{name of the school granting the degree}
+%%% - "GRADUATE SCHOOL" is the default. Changing this
+%%% also has the effect of turning off the \majorfield
+%%% entry. This affects the `final' layout only.
+%%%
+%%% \degree{degree name}
+%%% - defaults to "Master of Science" or "Doctor of
+%%% Philosophy" depending on whether the `thesis' or
+%%% `dissertation' option is in effect. This affects
+%%% the `final' layout only.
+%%%
+%%% \majorfield{author's major}
+%%% - "Electrical Engineering" if omitted. Changing the
+%%% \schoolname has the effect of turning off the
+%%% display of the major field. If you specify this
+%%% command after changing the \schoolname, both will be
+%%% shown on the titlepage. This affects the `final'
+%%% layout only.
+%%%
+%%% \committee{name1\\* name2\\* name3}
+%%% - Currently this in only used on with the `proposal'
+%%% option, since the signature page MUST be the one
+%%% supplied by the University. This affects the
+%%% `proposal' layout only.
+%%%
+%%% \submitdate{month & year in which submitted to Graduate School}
+%%% - current month & year if omitted.
+%%%
+%%% \copyrightyear{year degree conferred (next year if submitted in Dec.)}
+%%% - current year (or next year, in December) if omitted.
+%%% This affects only the `final' layout and only when
+%%% the `copyright' option is in effect.
+%%%
+%%% The PREFACE environment prints the titlepage and sets up the page
+%%% formatting for the preface pages. To create a preface section
+%%% use the command:
+%%%
+%%% \prefacesection[optional TOC name]{name}
+%%%
+%%% To generate the Table of Contents, and the Lists of Tables and
+%%% Figures, use the commands:
+%%%
+%%% \tableofcontents[CONTENTS]
+%%% \listoftables*[LIST OF TABLES]
+%%% \listoffigures*[LIST OF FIGURES]
+%%%
+%%% the bracketed names are used at the top of the sections and in
+%%% the Table of Contents for the tables and figures. The optional
+%%% `*' in the latter commands suppresses their entry into the Table
+%%% of Contents.
+%%%
+%%% When multiple volumes are present (as indicated by the use of the
+%%% optional argument of the \title command), the Table of Contents
+%%% may be augmented by specifying the name of the other parts of the
+%%% document with the command:
+%%%
+%%% \addvolumecontents[toc]{volumename}
+%%%
+%%% This command should be placed right after the \begin{document}
+%%% command to include prior volumes, and just before the
+%%% \end{document} command to include the contents of later volumes.
+%%% By default (if the optional [] section is ommited) it reads in
+%%% the volumename.toc file (if present). Using [lof] or [lot] work
+%%% in the same way for the lists of figures and tables respectively.
+%%%
+%%% To start the document at a page other than 1 (for later volumes)
+%%% you can use the command:
+%%%
+%%% \startingpagenumber{1}{1}
+%%%
+%%% prior to the \begin{preface} command. The first argument is the
+%%% page number of the titlepage and subsequent pages numbered with
+%%% roman numerals and the second is the number of the first page
+%%% after the preface section. The defaults are shown above.
+%%%
+%%% To include a reference section, use the following command:
+%%%
+%%% \references*[Reference List]{style}{bibfile(s)}
+%%%
+%%% where the `*' is optional and indicates that you DO NOT want this
+%%% section to appear in the Table-of-Contents. "Reference List" is
+%%% the default name if the optional `[]' section of the command is
+%%% not specified (the USC Regulations suggest either `Reference
+%%% List' or `Bibliography'). Both of the remaining entries MUST be
+%%% specified. {Style} is any of "plain", "unsrt", "alpha", "abbrv"
+%%% (or other *.bst format file). The {bibfile(s)} are a list of one
+%%% or more *.bib filenames from which the references are to be taken.
+%%%
+%%% The `saying' environment is used to set a cutesy little quotation
+%%% at the start of the chapter, just after the chapter head. To use:
+%%%
+%%% \begin{saying}
+%%% If this exercise isn't just a joke, the title of \\
+%%% this appendix is a lie.
+%%% \end{saying}
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%
+%% Declare the dissertation style
+%%
+\typeout{Document Style: `USCthesis' Version 2.3 1992.08.13}
+
+%%
+%% Define style option flags
+%%
+\@namedef{ds@10pt}{\def\@ptsize{0}} % Default (defined in report.sty)
+%% \ds@11pt and \ds@12pt are defined in report.sty
+
+\newif\ifthesis
+\def\ds@dissertation{\thesisfalse} % Default
+\def\ds@thesis{\thesistrue}
+
+\newif\ifproposal
+\def\ds@final{\proposalfalse} % Default
+\def\ds@proposal{\proposaltrue}
+
+\newif\ifcopyright
+\copyrighttrue
+\def\ds@nocopyright{\copyrightfalse}
+\def\ds@copyright{\copyrighttrue} % Default
+
+\fussy
+\def\ds@fussy{\fussy} % Default
+\def\ds@sloppy{\sloppy}
+
+\newif\ifopenbib
+\def\ds@clref{\openbibfalse} % Default
+\def\ds@opref{\openbibtrue}
+
+\newif\if@techreport % Internal switch for techreport
+\def\ds@techreport{% style option. Set switch, if
+ \@techreporttrue % the option is present, but
+ \xdef\@optionfiles{% still add to the \@optionfiles
+ \@optionfiles % list.
+ \@elt techreport.sty\relax
+ }}
+
+%%
+%% Define the Layout adjustment commands. Initialization of values is
+%% made after loading the report style.
+%%
+\def\pagetop#1{%
+ \global \topmargin #1 % Nominal distance from page top to
+ \global\advance \topmargin -1.0 true in} % top of boxwith running head.
+
+\def\pageleft{%
+ \@ifnextchar [%
+ {\@pageleft}%
+ {\@pageleft[0pt]}}
+
+\def\@pageleft[#1]#2{%
+ \if@twoside
+ %% Values for two-sided printing: (1/2 inch gutter margin)
+ \global \oddsidemargin #2 % Left margin on odd-numbered pages.
+ \global\advance \oddsidemargin -1.0 true in
+ \global \evensidemargin #2 % Left margin on even-numbered pages.
+ \global\advance \evensidemargin -1.5 true in
+ \global\advance \evensidemargin #1 % Adjustment for fine-tuning gutter
+ % margin
+ \flushbottom
+ \ifproposal\else\if@techreport\else
+ \typeout{Warning: Thesis/Dissertation should be
+ printed on one side only.}
+ \fi\fi
+ \else
+ %% Values for one-sided printing:
+ \global \oddsidemargin #2
+ \global\advance \oddsidemargin -1.0 true in
+ \global \evensidemargin \oddsidemargin
+ \raggedbottom
+ \fi}
+
+\def\pageheight{%
+ \@ifnextchar [%
+ {\@pageheight}%
+ {\@pageheight[\baselineskip]}}
+
+\def\@pageheight[#1]#2{%
+ \global \footheight #1%
+ \global \textheight #2%
+ \global\advance \textheight -\footheight}
+
+\def\pagewidth#1{\global \textwidth #1}
+
+\def\pagemargin#1{\global \footskip #1\baselineskip}
+
+%%
+%% Load the standard `report' style, and `doublespace' macros.
+%%
+\input report.sty\relax
+\input doublespace.sty\relax
+\setstretch{1.3} % Use 1.3 times the normal baseline-to-baseline skip
+
+%%
+%% Modify Penalties
+%%
+\brokenpenalty 10000 % Disallow page breaks at hyphens (this
+ % will give some underfull vbox's, so an
+ % alternative is to use \brokenpenalty=100
+ % and manually search for and fix such page
+ % breaks)
+\clubpenalty 10000 % Disallow club (orphan) lines
+\displaywidowpenalty 10000 % Disallow widow lines before display
+\widowpenalty 10000 % Disallow widow lines
+
+%%
+%% Disallow x- or -xx breaks. But if used in an old TeX, we will just
+%% have to do without and hope for the best.
+%%
+\ifx\undefined\inputlineno\else
+ \lefthyphenmin=2
+ \righthyphenmin=3
+\fi
+
+%%
+%% Set the Page Style Parameters
+%%
+\@addtoreset{equation}{chapter} % Have the equation reset in each chapter
+\headheight 0.0 true pt % Height of box containing running head
+\headsep 0.0 true pt % Size of strut between head and text
+\topskip 10.0 true pt % Baselineskip for the first line of page
+\itemsep 0.0 true pt % Extra vertical space, in addition to
+ % \parskip, added between list items
+\pagetop{1.01 true in} % Set \topmargin
+\pageleft{1.51 true in} % Set \evensidemargin and \oddsidemargin
+\pageheight{8.73 true in} % Set \textheight and \footheight
+\pagewidth{5.92 true in} % Set \textwidth
+\pagemargin{2.0} % Set \footskip
+
+%%
+%% Redefine some font sizes so that things don't get too big.
+%%
+\let\LARGE=\Large
+\let\huge=\Large
+\let\Huge=\Large
+
+%%
+%% Redefine plain style page to move the page number to the lower
+%% right corner.
+%%
+\if@twoside
+ \def\ps@plain{%
+ \def\@oddhead{}%
+ \def\@oddfoot{\hfil\rm\thepage}%
+ \def\@evenhead{}
+ \def\@evenfoot{\rm\thepage\hfil}}%
+\else
+ \def\ps@plain{%
+ \def\@oddhead{}%
+ \def\@oddfoot{\hfil\rm\thepage}%
+ \def\@evenhead{}
+ \let\@evenfoot\@oddfoot}%
+\fi
+
+%%
+%% Define Title Page Macros
+%%
+%% \title and \author is defined in latex.tex, but we will need to
+%% redefine \title to allow the optional argument. Also, the \thanks
+%% command is disabled and such footnotes will be thrown away or will
+%% appear in the wrong place.
+%%
+\def\title{%
+ \@ifnextchar [%
+ {\@title}%
+ {\@title[\@empty]}}
+
+\def\@title[#1]#2{%
+ \gdef\@volume{#1}%
+ \gdef\@title{#2}}
+
+%%
+%% The \addvolumecontents will add the contents of other volumes to
+%% the current volume. This command should be placed after the
+%% \begin{document} for earlier volumes and before the \end{document}
+%% for later ones.
+%%
+\def\thesisinput#1{%
+ \if@filesw
+ \begingroup
+ \let\thesisinput=\@gobble % Inhibit recursive \thesisinput's
+ \@input{#1}%
+ \endgroup
+ \fi}
+
+\def\addvolumecontents{%
+ \@ifnextchar [%
+ {\@addvolumecontents}%
+ {\@addvolumecontents[toc]}}
+
+\long\def\@addvolumecontents[#1]#2{%
+ \if@filesw
+ \begingroup
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \def\protect##1{\string\string\string##1\string\space \space}%
+ \edef\@tempa{%
+ \immediate\write\@auxout{%
+ \string\@writefile{#1}{\protect \thesisinput{#2.#1}}}}%
+ \@tempa
+ \if@nobreak
+ \ifvmode
+ \nobreak
+ \fi
+ \fi
+ \endgroup
+ \fi
+ \relax}
+
+%%
+%% The \startingpagenumber command will change the default starting
+%% page number for the first (title) page of the current volume and
+%% for the first page after the preface section.
+%%
+\def\@startpageA{1}
+\def\@startpageB{1}
+
+\def\startingpagenumber#1#2{%
+ \gdef\@startpageA{#1}%
+ \gdef\@startpageB{#2}}
+
+%%
+%% The following flag is used to suppress the major field name on the
+%% title page when the default school is changed (only the GRADUATE
+%% SCHOOL currently uses a major field). Setting \majorfield after
+%% \schoolname will reset the flag and allow the printing of another
+%% school with a major field in addition.
+%%
+\newif\ifshowmajorfield
+\showmajorfieldtrue
+
+\def\universityname#1{%
+ \gdef\@university{\uppercase{#1}}}
+\def\@university{UNIVERSITY OF SOUTHERN CALIFORNIA}
+
+\def\schoolname#1{%
+ \gdef\@schoolname{#1}%
+ \showmajorfieldfalse}
+\def\@schoolname{GRADUATE SCHOOL}
+
+\def\degree#1{%
+ \ifthesis
+ \gdef\@mastersdegree{#1}%
+ \else
+ \gdef\@doctorsdegree{#1}}
+\def\@mastersdegree{MASTER OF SCIENCE}
+\def\@doctorsdegree{DOCTOR OF PHILOSOPHY}
+
+\def\majorfield#1{%
+ \gdef\@majorfield{#1}%
+ \showmajorfieldtrue}
+\def\@majorfield{Electrical Engineering}
+
+\def\committee#1{\gdef\@committee{#1}}
+\def\@committee{}
+
+\def\submitdate#1{\gdef\@submitdate{#1}}
+\def\@submitdate{%
+ \ifcase \the\month
+ \or January%
+ \or February%
+ \or March%
+ \or April%
+ \or May%
+ \or June%
+ \or July%
+ \or August%
+ \or September%
+ \or October%
+ \or November%
+ \or December%
+ \fi
+ \space
+ \number \the\year}
+
+\def\copyrightyear#1{\gdef\@copyrightyear{#1}}
+%% December dissertations should have the next year as the copyright year
+\ifnum \month=12
+ \@tempcnta=\year
+ \advance\@tempcnta by 1
+ \edef\@copyrightyear{\number \the\@tempcnta}
+\else
+ \def\@copyrightyear{\number \the\year}
+\fi
+
+%%
+%% Create the PREFACE environment. The titlepage is generated when
+%% the environment is first entered and the numbering is roman within
+%% the preface. The \endpreface switches to arabic numbering.
+%%
+\def\preface{%
+ \newpage
+ \pagenumbering{roman}%
+ \pagestyle{empty}%
+ \begin{singlespace}%
+ \ifproposal
+ \makeproptitle
+ \setcounter{page}{1}%
+ \addtocounter{page}{\@startpageA}% Advance page counter for title page.
+ \else
+ \maketitle
+ \setcounter{page}{1}%
+ \addtocounter{page}{\@startpageA}% Advance page counter for (signature
+ \fi % and) title. At USC, the signature
+ \newpage % page is not counted!
+ \ifx\@volume\@empty\else % Add Volume ID to contents if present.
+ \addtocontents{toc}{\protect\contentsline{part}{\@volume}{}}%
+ \fi
+ \end{singlespace}%
+ \pagestyle{plain}}
+
+\def\endpreface{%
+ \newpage
+ \pagenumbering{arabic}%
+ \pagestyle{plain}%
+ \setcounter{page}{\@startpageB}}
+
+%%
+%% Define the PROPOSAL title page
+%%
+\def\makeproptitle{%
+ \begin{titlepage}%
+ \null
+ \vskip 60.0 true pt% To adjust centering.
+ \begin{center}
+ {\Large \@title \par}% Set title in \Large size.
+ \ifx\@volume\@empty\else
+ \vskip 3em% Vertical space before volume.
+ \@volume
+ \fi
+ \vskip 3em% Vertical space after title.
+ \ifthesis
+ {Masters Thesis Proposal}%
+ \else
+ {Ph.D. Dissertation Proposal}%
+ \fi\\*%
+ {submitted by}%
+ \vskip 3em % Vertical space before author.
+ {\lineskip .75em
+ \@author
+ \par}%
+ \vskip 1.5cm % Vertical space before date.
+ {\small
+ \@submitdate
+ \par}%
+ \vskip 1.5in
+ {{\bf Guidance Committee}\\*[1.0 true cm]%
+ \begin{tabular}[t]{ll}\@committee
+ \end{tabular}\par}%
+ \end{center}%
+ \par
+ \vfil
+ \end{titlepage}}
+
+%%
+%% Make the Dissertation titlepage
+%%
+\def\maketitle{%
+ \begin{titlepage}%
+ \setcounter{page}{0}%
+ \null
+ \vfill\vfill
+ \begin{center}%
+ {\@title \par}% Set title the same size as "FACULTY OF ..."
+ \ifx\@volume\@empty\else
+ \vskip 0.16 true in
+ \@volume
+ \fi
+ \vskip 0.16 true in
+ by%
+ \vskip 0.16 true in
+ {\begin{tabular}[t]{c}\@author\\*[1.0 true in]%
+ \hline
+ \end{tabular}%
+ \par}
+ \vskip 1.0 true in
+ \ifthesis
+ A Thesis Presented to the%
+ \else
+ A Dissertation Presented to the%
+ \fi\\*[0.1 true in]%
+ FACULTY OF THE \@schoolname\\*[0.1 true in]%
+ \@university\\*[0.1 true in]%
+ In Partial Fulfillment of the\\*[0.1 true in]%
+ Requirements for the Degree\\*[0.1 true in]%
+ \ifthesis
+ \@mastersdegree
+ \else
+ \@doctorsdegree
+ \fi\\*[0.1 true in]%
+ \ifshowmajorfield
+ (\@majorfield)%
+ \fi\\*[1.0 true cm]%
+ \vfill
+ {\bf \small \@submitdate \par}% should be just month and year
+ \end{center}%
+ \par
+ \vfill
+ \ifcopyright
+ \begin{center}%
+ {\normalsize\ Copyright~ \@copyrightyear\ ~\@author}%
+ \end{center}%
+ \fi
+ \end{titlepage}}
+
+%%
+%% Start a Preface Page
+%%
+\newdimen\prefacetopspace
+\prefacetopspace=1.0 true in
+
+\def\prefacesection{%
+ \@ifnextchar [%
+ {\@prefacesectionB}%
+ {\@prefacesectionA}}
+
+\def\@prefacesectionA#1{%
+ \@prefacesectionB[#1]{#1}}
+
+\def\@prefacesectionB[#1]#2{%
+ \newpage
+ \pagestyle{plain}%
+ \null
+ \vskip\prefacetopspace
+ \begin{center}%
+ \section*{#2}%
+ \end{center}%
+ \addcontentsline{toc}{chapter}{#1}}
+
+%%
+%% Make the Table of Contents and Figures/Tables pages
+%%
+\def\tableofcontents{%
+ \@ifnextchar [%
+ {\@starspeciallist{toc}}%
+ {\@starspeciallist{toc}[Contents]}}
+
+\def\listoftables{%
+ \@ifstar
+ {\@ifnextchar [%
+ {\@starspeciallist{lot}}%
+ {\@starspeciallist{lot}[List Of Tables]}}%
+ {\@ifnextchar [%
+ {\@speciallist{lot}}%
+ {\@speciallist{lot}[List Of Tables]}}}
+
+\def\listoffigures{%
+ \@ifstar
+ {\@ifnextchar [%
+ {\@starspeciallist{lof}}%
+ {\@starspeciallist{lof}[List Of Figures]}}%
+ {\@ifnextchar [%
+ {\@speciallist{lof}}%
+ {\@speciallist{lof}[List Of Figures]}}}
+
+\def\@starspeciallist#1[#2]{%
+ \newpage
+ \@restonecolfalse
+ \if@twocolumn
+ \@restonecoltrue
+ \onecolumn
+ \fi
+ \chapter*{#2}%
+ \@starttoc{#1}%
+ \if@restonecol\twocolumn\fi}
+
+\def\@speciallist#1[#2]{%
+ \newpage
+ \@restonecolfalse
+ \if@twocolumn
+ \@restonecoltrue
+ \onecolumn
+ \fi
+ \chapter*{#2}%
+ \addcontentsline{toc}{chapter}{#2}
+ \@starttoc{#1}%
+ \if@restonecol\twocolumn\fi}
+
+%%
+%% Redefine the report.sty chapter definitions to suppress hyphenation
+%% in the titles.
+%%
+\def\@makechapterhead#1{%
+ \vspace*{50pt}%
+ {\parindent 0pt
+ \raggedright
+ \hyphenpenalty 10000%
+ \ifnum \c@secnumdepth > \m@ne
+ \Large\bf \@chapapp{} \thechapter\par
+ \vskip 20pt
+ \fi
+ \Large\bf #1\par
+ \nobreak
+ \vskip 40pt}
+ \hyphenpenalty 50}
+
+\def\@makeschapterhead#1{%
+ \vspace*{50pt}%
+ {\parindent 0pt
+ \raggedright
+ \hyphenpenalty 10000%
+ \Large\bf #1\par
+ \nobreak
+ \vskip 40pt}
+ \hyphenpenalty 50}
+
+%%
+%% Redefine the report.sty section definitions. The \@startsection
+%% command takes the arguments:
+%%
+%% {Name}{Level}{Indent}{BeforeSkip}{AfterSkip}{Style}
+%%
+%% Also it takes a `*' which suppress the section counting, and if the
+%% `*' is not present an optional [Altheading]{heading} pair.
+%%
+\def\section{\@startsection{section}% Name
+ {1}% Level
+ {\z@}% Indent
+ {-3.5ex plus -1ex minus -.2ex}% BeforeSkip
+ {2.3ex plus .2ex}% AfterSkip
+ {\Large\bf\hyphenpenalty 10000}}% Style
+
+\def\subsection{\@startsection{subsection}% Name
+ {2}% Level
+ {\z@}% Indent
+ {-3.5ex plus -1ex minus -.2ex}% BeforeSkip
+ {1.5ex plus .2ex}% AfterSkip
+ {\large\bf\hyphenpenalty 10000}}% Style
+
+\def\subsubsection{\@startsection{subsubsection}% Name
+ {3}% Level
+ {\z@}% Indent
+ {-3.5ex plus -1ex minus -.2ex}% BeforeSkip
+ {1.5ex plus .2ex}% AfterSkip
+ {\normalsize\bf\hyphenpenalty 10000}}% Style
+
+\def\paragraph{\@startsection{paragraph}% Name
+ {4}% Level
+ {\z@}% Indent
+ {3.25ex plus 1ex minus .2ex}% BeforeSkip
+ {-1em}% AfterSkip
+ {\normalsize\bf\hyphenpenalty 10000}}% Style
+
+\def\subparagraph{\@startsection{subparagraph}% Name
+ {4}% Level
+ {\parindent}% Indent
+ {3.25ex plus 1ex minus .2ex}% BeforeSkip
+ {-1em}% AfterSkip
+ {\normalsize\bf\hyphenpenalty 10000}}% Style
+
+%%
+%% The value of the counter secnumdepth gives the depth of the
+%% highest-level sectioning command that is to produce section
+%% numbers.
+%%
+\setcounter{secnumdepth}{3}
+\setcounter{tocdepth}{3}
+
+%%
+%% Redefine the report.sty `Bibliography' as a `Reference List' chapter.
+%%
+\def\bibliographystyle#1{% But first, turn off standard bib commands.
+ \@latexerr{\string\bibliographystyle\space is undefined.
+ Use \string\references{#1}{bibfile list}}\@eha}
+\def\bibliography#1{%
+ \@latexerr{\string\bibliography\space is undefined.
+ Use \string\references{bibstyle}{#1}}\@eha}
+
+\def\references{%
+ \@ifstar
+ {\@referencesA}%
+ {\@referencesB}}
+
+\def\@referencesA{%
+ \@ifnextchar [%
+ {\@referencesAA}%
+ {\@referencesAA[Reference List]}}%
+
+\def\@referencesAA[#1]#2#3{
+ \gdef\@referencesname{#1}
+ \if@filesw
+ \immediate\write\@auxout{\string\bibstyle{#2}}%
+ \immediate\write\@auxout{\string\bibdata{#3}}%
+ \fi
+ \@input{\jobname.bbl}}
+
+\def\@referencesB{
+ \@ifnextchar [
+ {\@referencesBB}
+ {\@referencesBB[Reference List]}}
+
+\def\@referencesBB[#1]#2#3{
+ \addcontentsline{toc}{chapter}{#1}
+ \gdef\@referencesname{#1}
+ \if@filesw
+ \immediate\write\@auxout{\string\bibstyle{#2}}%
+ \immediate\write\@auxout{\string\bibdata{#3}}%
+ \fi
+ \@input{\jobname.bbl}}
+
+\def\@referencesname{Reference List}
+
+\def\thebibliography#1{
+ \chapter*{\@referencesname\@mkboth{\@referencesname}{\@referencesname}}
+ \list{[\arabic{enumi}]}{
+ \settowidth\labelwidth{[#1]}
+ \leftmargin\labelwidth \advance\leftmargin\labelsep
+ \ifopenbib
+ \listparindent -1.5em
+ \advance\leftmargin-\listparindent
+ \itemindent\listparindent
+ \parsep 0pt%
+ \fi
+ \usecounter{enumi}}%
+ \ifopenbib
+ \def\newblock{\par}
+ \let\\=\@centercr
+ \@rightskip\@flushglue \rightskip\@rightskip
+ \leftskip\z@
+ \else
+ \def\newblock{\hskip .11em plus .33em minus -.07em}%
+ \fi
+ \sloppy
+ \sfcode`\.=1000\relax}
+
+\let\endthebibliography=\endlist
+
+%%
+%% APPENDIX
+%%
+%% The \appendix command must do the following:
+%% -- reset the chapter counter to zero
+%% -- set \@chapapp to Appendix (for messages)
+%% -- redefine the chapter counter to produce appendix numbers
+%% -- reset the section counter to zero
+%% -- redefine the \chapter command if appendix titles and headings
+%% are to look different from chapter titles and headings.
+%%
+%% For USC, the Appendix appears VERY oddly in the table of contents.
+%%
+\def\appendix{
+ \par
+ \setcounter{chapter}{0}
+ \setcounter{section}{0}
+ \def\@chapapp{Appendix}
+ \def\thechapter{\Alph{chapter}}
+ \def\@chapter[##1]##2{
+ \refstepcounter{chapter}
+ \typeout{\@chapapp\space\thechapter.}
+ \addtocontents{toc}{
+ \protect\contentsline{chapter}{Appendix \thechapter}{\relax}}
+ \addcontentsline{toc}{section}{##1}
+ \chaptermark{##1}
+ \addtocontents{lof}{\protect\addvspace{10pt}}% Adds between-chapter space
+ \addtocontents{lot}{\protect\addvspace{10pt}}% to lists of figs & tables.
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{##2}]
+ \else \@makechapterhead{##2}
+ \@afterheading % Routine called after chap
+ \fi}} % and section heading.
+
+%%
+%% Define the `saying' environment
+%% Used to set a cutesy little quotation at the start of the chapter
+%%
+\def\saying{%
+ \trivlist
+ \raggedleft
+ \item[]\em}
+
+\def\endsaying{%
+ \endtrivlist
+ \vspace{20pt}}
+
+%%
+%% Define the starting pagestyle
+%%
+\pagestyle{plain}
diff --git a/macros/latex209/contrib/misc/usenix.sty b/macros/latex209/contrib/misc/usenix.sty
new file mode 100644
index 0000000000..4a742023b6
--- /dev/null
+++ b/macros/latex209/contrib/misc/usenix.sty
@@ -0,0 +1,105 @@
+% usenix.sty
+% For Usenix conference proceedings -- released 1 June 1989
+%
+% This style option is designed to work with the article document
+% style of LaTeX version 2.09. Use
+% \documentstyle[usenix]{article}
+%
+% The rules here are from "Instructions for Usenix Authors and
+% Speakers" in the INSTRUCTIONS from Usenix.
+% I've followed these rules as close as possible but there are a
+% number of "gaps" that I had questions about. I waited several
+% months for a response from Usenix but never got one. If you find
+% any problems with submitting proceedings with this style, please
+% let me know.
+
+
+% Copyright (c) 1989 by David K. Steiner
+% Permission to copy all or part of this work is granted, provided
+% that the copies are not made or distributed for resale, and that
+% the copyright notice and this notice are retained.
+%
+% THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO
+% WARRANTY WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK,
+% INCLUDING WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS
+% FOR ANY PARTICULAR PURPOSE.
+
+% If you make any improvements, I'd like to hear about them.
+
+% Dave Steiner
+% Rutgers University
+% CCIS, Busch Campus
+% PO Box 879
+% Piscataway, NJ 08855-0879
+% steiner@topaz.rutgers.edu
+% ..!rutgers!topaz.rutgers.edu!steiner
+
+\typeout{Document Style Option 'Usenix' -- version 0.9, released 1 June 1989}
+
+% All comments assume basic font is 10pt rm but code should
+% handle any font size changes
+
+% 6x9in centered in a 8.5x11in page
+\oddsidemargin=.25in
+\evensidemargin=.25in
+\marginparwidth=0pt
+\marginparsep=0pt
+\textwidth=6in
+
+\topmargin=0in
+\textheight=9in
+\headheight=0pt
+\headsep=0pt
+
+\parskip=\baselineskip \divide\parskip \tw@
+\parindent=\baselineskip \multiply\parindent \tw@
+
+%Title should be 14pt bold, attribution info should be 12pt italic.
+% Don't include date. Abstract should be 12pt with a 12pt bold title.
+
+\def\maketitle{\par
+ \begingroup
+ \parskip=0pt
+ \def\thefootnote{\fnsymbol{footnote}}
+ \def\@makefnmark{\hbox
+ to 0pt{$^{\@thefnmark}$\hss}}
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else \newpage
+ \global\@topnum\z@ \@maketitle \fi\thispagestyle{plain}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+\def\@maketitle{\newpage
+ \null
+ \vskip 2em \begin{center}
+ {\LARGE\bf \@title \par} \vskip 1.5em {\large\it \lineskip .5em
+\begin{tabular}[t]{c}\@author
+ \end{tabular}\par}
+ \end{center}
+ \par
+ \vskip 1.5em}
+\def\abstract{\if@twocolumn
+\section*{Abstract}
+\else \large
+\begin{center}
+{\bf ABSTRACT\vspace{-.5em}\vspace{0pt}\vskip\baselineskip}
+\end{center}
+\quotation
+\fi}
+\def\endabstract{\if@twocolumn\else\endquotation\fi}
+
+\def\section{\@startsection {section}{1}{\z@}
+ {\parskip}{.1pt plus .2pt}{\normalsize\bf}}
+\def\subsection{\@startsection{subsection}{2}{\z@}
+ {\parskip}{.1pt plus .2pt}{\normalsize\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}
+ {\parskip}{.1pt plus .2pt}{\normalsize\bf}}
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{\parskip}{-1em}{\normalsize\bf}}
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{\parskip}{-1em}{\normalsize\bf}}
+
+% End of usenix.sty
diff --git a/macros/latex209/contrib/misc/userps.sty b/macros/latex209/contrib/misc/userps.sty
new file mode 100644
index 0000000000..d26d9d4ab0
--- /dev/null
+++ b/macros/latex209/contrib/misc/userps.sty
@@ -0,0 +1,54 @@
+% convenient LaTeX pagestyles,
+% defined by various LaTeX users
+%
+% *** WARNING WARNING WARNING ***
+% The macros in this file are NOT guaranteed to work and they are
+% definitely NOT maintained. Do not count on them remaining
+% stable over long periods: if you use them in a thesis (say),
+% copy the ones you use to your own macro file!
+%
+% To invoke the pagestyle named \ps@foo, you can say
+%
+% \pagestyle{foo}
+% or
+% \thispagestyle{foo}
+%
+%
+% Latex users are encouraged to create their own styles and put
+% them in this file. They should keep in mind the following
+% points:
+% 1. All styles added should be documented.
+% 2. The style added must work REGARDLESS of the document
+% style and point size used, or else they should
+% clearly state which styles and sizes they are
+% restricted to.
+% 3. Don't allow spurious spaces into the style macros!!!
+% 4. All styles should be added anonymously unless the
+% author wants to get hundreds of questions about
+% usage!
+%
+
+% DON'T MESS WITH THIS LINE. IT MUST PRECEDE ALL OTHERS!
+\makeatletter % allow @ in macro names
+
+
+% A SAMPLE STYLE:
+%
+% STYLE plaintop : invoked (for example) with \pagestyle{plaintop}
+%
+% This style is like the Plain style (i.e., just a page number is output)
+% but the page number is in the middle of the header line (at the top of
+% the page) and the footer line (at the bottom of the page) is blank.
+%
+\def\ps@plaintop{%
+ \def\@oddhead{\rm\hfil\thepage\hfil}%
+ \def\@oddfoot{}%
+ \def\@evenhead\@oddhead
+ \let\@evenfoot\@oddfoot}
+
+
+%% ADD MORE STYLES HERE.
+
+
+% DON'T MESS WITH THE FOLLOWING LINE. IT MUST BE THE LAST LINE IN THE FILE!!
+\makeatother
diff --git a/macros/latex209/contrib/misc/varfbox.sty b/macros/latex209/contrib/misc/varfbox.sty
new file mode 100644
index 0000000000..11e96ca0dc
--- /dev/null
+++ b/macros/latex209/contrib/misc/varfbox.sty
@@ -0,0 +1,20 @@
+% Save file as: VARFBOX.STY Source: FILESERV@SHSU.BITNET
+\typeout{Document Sub-Style 'varfbox', Version 1 (August 8, 1989) GDG}
+\newdimen\holdrule
+
+\edef\Fbox#1#2{\holdrule=\fboxrule
+\fboxrule=#1mm \fbox{#2} \fboxrule=\holdrule}
+
+% Usage: \Fbox{foo}{Text to box}
+% This is a short style file which allows the user to specify the size of
+% \fboxrule (in mm) as they use the \fbox environment by specifying \Fbox
+%
+% foo is the number of millimeters the \fboxrule should be set to for
+% that box.
+%
+% \fboxrule for normal \fbox environment is not changed.
+%
+% Author: George D. Greenwade, Director, Center for Business and Economic
+% Research, sam Houston State University, Huintsville, TX (409) 294-1518
+% BITNET: BED_GDG@SHSU
+% Revision History: 8-AUG-1989 Original Version GDG
diff --git a/macros/latex209/contrib/misc/verbatimfiles.sty b/macros/latex209/contrib/misc/verbatimfiles.sty
new file mode 100644
index 0000000000..90a4c32f1b
--- /dev/null
+++ b/macros/latex209/contrib/misc/verbatimfiles.sty
@@ -0,0 +1,42 @@
+% Here is a version of Adrian's VERBATIM.STY, for inputting whole files
+% verbatim, which is "more LaTeX-like" in that it uses the actual LaTeX
+% macros which set up the `verbatim' environment.
+%
+% As a matter of interest, it is much nicer for TeX if you input large
+% quantities of "verbatim material" from an "external file" rather than by use
+% of the `verbatim' environment (i.e. putting the material in the main input
+% file. This is because this environment, in common with most (but not all)
+% other "verbatim macros", makes the whole of the "vebatim material" a macro
+% argument and therefore eats up TeTeX's internal memory.
+%
+% Chris Rowley
+%
+
+% --- V E R B A T I M F I L E S . S T Y
+%
+% --- This LaTeX style-file defines two user-callable macros:
+% --- \verbatimfile{<filename>} for verbatim inclusion of a file
+% --- \verbatimlisting{<filename>} for verbatim inclusion with line numbers
+%
+% --- The macros are based on those distributed with Sunil Podar's
+% --- `EPIC.STY' macro package, attributed to Tim Morgan,
+% --- modified to keep internal macros internal by Adrian F. Clark,
+% --- alien@uk.ac.essex.ese
+% --- ---and further latexification by Chris Rowley,
+% --- ca_rowley@uk.ac.open.acs.vax.
+%
+% --- Note that the precise layout of line breaks in this file is important!
+%
+
+\def\verbatimfile#1{\begingroup
+ \@verbatim \frenchspacing \@vobeyspaces
+ \input#1 \endgroup
+}
+
+\newcounter{lineno}
+
+\def\verbatimlisting#1{\setcounter{lineno}{0}%
+ \begingroup \@verbatim \frenchspacing \@vobeyspaces \parindent=20pt
+ \everypar{\stepcounter{lineno}\llap{\thelineno\ \ }}\input#1
+ \endgroup
+}
diff --git a/macros/latex209/contrib/misc/verbinp.sty b/macros/latex209/contrib/misc/verbinp.sty
new file mode 100644
index 0000000000..31e0add2be
--- /dev/null
+++ b/macros/latex209/contrib/misc/verbinp.sty
@@ -0,0 +1,1230 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% VERBINP.TEX / VERBINP.STY %
+% %
+% (c) 1993: Rainer Perske, Zur Gr"afte 10, D-48161 M"unster, Germany %
+% %
+% This file may be copied, distributed and modified only unter the %
+% TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION of %
+% the GNU GENERAL PUBLIC LICENSE, Version 2, and any later version, %
+% as published by Free Software Foundation, Inc., 675 Mass Ave, %
+% Cambridge, MA 02139, USA. %
+% %
+% Direct any comments about this file to: perske@uni-muenster.de %
+% For the date of this version see \message line below %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Einf"ugen von Dateien, die dann verbatim ausgegeben werden. %
+% Die Zeichen hex.A0 bis FF werden optional gem"a"s ISO 8859 Latin 1, %
+% gem"a"s CECP 850 oder gem"a"s CECP 437 gedruckt. Die Steuerzeichen %
+% hex.00 bis 07, 0E bis 20 und 7F bis 9F werden ebenfalls sinnvoll %
+% dargestellt, die Steuerzeichen 08 (BS), 09 (HT), 0A (LF), 0B (VT), %
+% 0C (FF) und OD (CR) werden sinnvoll ausgeführt, wobei LF, VT, FF %
+% und CR alle (nur) als Zeilenenden behandelt werden. %
+% %
+% \verbinput{fn} - Datei fn einf"ugen %
+% \verbinputnum{fn} - Datei fn einf"ugen, links mit Zeilennummern %
+% \verbinputbox{fn} - Datei fn einf"ugen, in Kasten einschlie"sen %
+% \verbcharset{nnn} - Zeichensatz nnn einstellen, dabei ist nnn eine %
+% der Zahlen 88591, 850 oder 437. Die Einstellung gilt lokal %
+% %
+% Diese Datei ist mit \input in die Pr"aambel einzuf"ugen oder als %
+% Style-Datei im \documentstyle-/\documentclass-Befehl anzugeben %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx\verbinputdefined\relax\endinput\else\let\verbinputdefined\relax\fi
+
+\message{Verbatim 8 Bit File Input of 23.Aug.1993}
+
+\begingroup
+\makeatletter% LaTeX-Buchstabe
+\catcode`\:=11% Privater Buchstabe
+\catcode`\^^0c=\active\let^^0c=\relax% Outer-Setzung entsch"arfen
+\gdef\H:{2.4ex}% Zeilenabstand
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Erster Teil: Definition der Sonderzeichen %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Kein Zeichen darf so definiert werden, da"s es mit '{' anf"angt,
+% da sonst wegen \everypar Schwierigkeiten auftreten k"onnen
+
+% Makro zum Setzen der Dimensionen zur Laufzeit
+
+\newdimen{\w:}
+\newdimen{\h:}
+\newdimen{\d:}
+\newdimen{\x:}
+\newdimen{\y:}
+\newdimen{\z:}
+
+% Hilfsmakros
+
+\gdef\cbox:#1{\leavevmode{\tt\setbox0=\hbox to\w:{#1}\ht0=\h:\dp0=\d:\box0 }}
+\gdef\sym:#1{\cbox:{\hss#1\hss}}
+\gdef\bs:{{\hskip-\w:}}
+\gdef\up:#1#2{\raise#1\hbox{#2}}
+\gdef\cntl:#1{\sym:{\char20 \bs:\up:{.3ex}{\char20 }\bs:\up:{-.4ex}{#1}}}
+\gdef\cntl::#1{\sym:{\char94 \bs:\up:{.3ex}{\char94 }\bs:\up:{-.4ex}{#1}}}
+\gdef\G:#1{\leavevmode\lower\d:\vbox to\z:{\vss\hbox to\w:{#1\hss}}}
+\gdef\B:#1#2#3#4{\hbox to0em{\vrule height0ex depth0ex width#1\x:\vrule
+height#2\y: depth-#3\y: width#4\x: \hss}}
+
+% Umdefinierte ASCII-Zeichen
+
+\gdef\:sp{\ }% Feste Blanks
+\gdef\:gr{\kern0pt\char96 }% Keine Ligaturen ?` und !`
+\gdef\:us{\leavevmode\vrule height-.2\d: depth.5\d: width\w:\relax}% Aussehen
+
+% Definition der Akzente und Umlaute als Makros
+
+\gdef\:acute{\char19 }
+\gdef\:angstrom{\char23 }
+\gdef\:macron{\char22 }
+\gdef\:cedilla{\char24 }
+\gdef\:circumflex{\char94 }
+\gdef\:grave{\char18 }
+\gdef\:tilde{\char126 }
+\gdef\:umlaut{\char127 }
+
+\gdef\acu:a{\accent19 a}
+\gdef\acu:A{\accent19 A}
+\gdef\acu:e{\accent19 e}
+\gdef\acu:E{\accent19 E}
+\gdef\acu:i{\accent19 \char16 }
+\gdef\acu:I{\accent19 I}
+\gdef\acu:o{\accent19 o}
+\gdef\acu:O{\accent19 O}
+\gdef\acu:u{\accent19 u}
+\gdef\acu:U{\accent19 U}
+\gdef\acu:y{\accent19 y}
+\gdef\acu:Y{\accent19 Y}
+\gdef\ang:a{\accent23 a}
+\gdef\ang:A{\accent23 A}
+\gdef\ced:C{C\bs:{\char24 }}
+\gdef\ced:c{c\bs:{\char24 }}
+\gdef\cir:a{\accent94 a}
+\gdef\cir:A{\accent94 A}
+\gdef\cir:e{\accent94 e}
+\gdef\cir:E{\accent94 E}
+\gdef\cir:i{\accent94 \char16 }
+\gdef\cir:I{\accent94 I}
+\gdef\cir:o{\accent94 o}
+\gdef\cir:O{\accent94 O}
+\gdef\cir:u{\accent94 u}
+\gdef\cir:U{\accent94 U}
+\gdef\dia:o{\char28 }
+\gdef\dia:O{\char31 }
+\gdef\gra:a{\accent18 a}
+\gdef\gra:A{\accent18 A}
+\gdef\gra:e{\accent18 e}
+\gdef\gra:E{\accent18 E}
+\gdef\gra:i{\accent18 \char16 }
+\gdef\gra:I{\accent18 I}
+\gdef\gra:o{\accent18 o}
+\gdef\gra:O{\accent18 O}
+\gdef\gra:u{\accent18 u}
+\gdef\gra:U{\accent18 U}
+\gdef\lig:ae{\char26 }
+\gdef\lig:AE{\char29 }
+\gdef\til:a{\accent126 a}
+\gdef\til:A{\accent126 A}
+\gdef\til:n{\accent126 n}
+\gdef\til:N{\accent126 N}
+\gdef\til:o{\accent126 o}
+\gdef\til:O{\accent126 O}
+\gdef\uml:a{\accent127 a}
+\gdef\uml:A{\accent127 A}
+\gdef\uml:e{\accent127 e}
+\gdef\uml:E{\accent127 E}
+\gdef\uml:i{\accent127 \char16 }
+\gdef\uml:I{\accent127 I}
+\gdef\uml:o{\accent127 o}
+\gdef\uml:O{\accent127 O}
+\gdef\uml:u{\accent127 u}
+\gdef\uml:U{\accent127 U}
+\gdef\uml:y{\accent127 y}
+\gdef\:eszet{\char25 }
+
+% Definition der graphischen Zeichen im 9x9-Raster als Makros
+
+\gdef\box:full{\G:{\B:0909}}
+\gdef\box:halfhigh{\G:{\B:09{4.5}9}}
+\gdef\box:halfleft{\G:{\B:090{4.5}}}
+\gdef\box:halflow{\G:{\B:0{4.5}09}}
+\gdef\box:halfright{\G:{\B:{4.5}90{4.5}}}
+\gdef\box:light{\G:{\B:1901\B:4901\B:7901}}
+\gdef\box:medium{\G:{\B:{0.5}902\B:{3.5}902\B:{6.5}902}}
+\gdef\box:dark{\G:{\B:{0.5}902\B:{3.5}902\B:{6.5}902\B:0879\B:0549\B:0219}}
+\gdef\box:small{\G:{\B:3633}}
+\gdef\bar:DDLLRR{\G:{\B:0659\B:0432\B:2401\B:6401\B:7432}}
+\gdef\bar:DDLL{\G:{\B:0432\B:2401\B:0656\B:6601}}
+\gdef\bar:DDRR{\G:{\B:2601\B:3656\B:6401\B:7432}}
+\gdef\bar:DLR{\G:{\B:0549\B:4501}}
+\gdef\bar:DL{\G:{\B:0544\B:4501}}
+\gdef\bar:DR{\G:{\B:4501\B:5544}}
+\gdef\bar:LLRR{\G:{\B:0439\B:0659}}
+\gdef\bar:LR{\G:{\B:0549}}
+\gdef\bar:UDLR{\G:{\B:0549\B:4901}}
+\gdef\bar:UDL{\G:{\B:0544\B:4901}}
+\gdef\bar:UDR{\G:{\B:4901\B:5544}}
+\gdef\bar:UD{\G:{\B:4901}}
+\gdef\bar:ULR{\G:{\B:0549\B:4951}}
+\gdef\bar:UL{\G:{\B:0544\B:4941}}
+\gdef\bar:UR{\G:{\B:4941\B:5544}}
+\gdef\bar:UUDDLLRR{\G:{\B:0652\B:2951\B:6951\B:7652\B:0432\B:2401\B:6401\B:7432}}
+\gdef\bar:UUDDLL{\G:{\B:0652\B:2951\B:0432\B:2401\B:6901}}
+\gdef\bar:UUDDRR{\G:{\B:2901\B:6951\B:7652\B:6401\B:7432}}
+\gdef\bar:UUDD{\G:{\B:2901\B:6901}}
+\gdef\bar:UULLRR{\G:{\B:0439\B:0652\B:2951\B:6951\B:7652}}
+\gdef\bar:UULL{\G:{\B:0652\B:2951\B:0436\B:6931}}
+\gdef\bar:UURR{\G:{\B:2931\B:3436\B:6951\B:7652}}
+\gdef\bar:UDLL{\G:{\B:0434\B:0654\B:4901}}
+\gdef\bar:UUDDL{\G:{\B:0542\B:2901\B:6901}}
+\gdef\bar:DDL{\G:{\B:0546\B:2401\B:6501}}
+\gdef\bar:DLL{\G:{\B:0434\B:0654\B:4601}}
+\gdef\bar:UUL{\G:{\B:0546\B:2951\B:6941}}
+\gdef\bar:ULL{\G:{\B:0434\B:0654\B:4931}}
+\gdef\bar:UDRR{\G:{\B:4901\B:5435\B:5655}}
+\gdef\bar:UUDDR{\G:{\B:2901\B:6901\B:7543}}
+\gdef\bar:ULLRR{\G:{\B:0439\B:0659\B:4961}}
+\gdef\bar:UULR{\G:{\B:0549\B:2951\B:6951}}
+\gdef\bar:DLLRR{\G:{\B:0439\B:0659\B:4401}}
+\gdef\bar:DDLR{\G:{\B:0549\B:2401\B:6501}}
+\gdef\bar:UUR{\G:{\B:2547\B:2951\B:6951}}
+\gdef\bar:URR{\G:{\B:4931\B:5435\B:5655}}
+\gdef\bar:DRR{\G:{\B:4601\B:5435\B:5655}}
+\gdef\bar:DDR{\G:{\B:2547\B:2401\B:6501}}
+\gdef\bar:UUDDLR{\G:{\B:2901\B:6901\B:0549}}
+\gdef\bar:UDLLRR{\G:{\B:0439\B:0659\B:4901}}
+
+% Definition der sonstige Zeichen als Makros
+
+\gdef\ctl:at{\cntl:{@}}
+\gdef\ctl:a{\cntl:{A}}
+\gdef\ctl:b{\cntl:{B}}
+\gdef\ctl:c{\cntl:{C}}
+\gdef\ctl:d{\cntl:{D}}
+\gdef\ctl:e{\cntl:{E}}
+\gdef\ctl:f{\cntl:{F}}
+\gdef\ctl:g{\cntl:{G}}
+\gdef\ctl:h{\cntl:{H}}
+\gdef\ctl:i{\cntl:{I}}
+\gdef\ctl:j{\cntl:{J}}
+\gdef\ctl:k{\cntl:{K}}
+\gdef\ctl:l{\cntl:{L}}
+\gdef\ctl:m{\cntl:{M}}
+\gdef\ctl:n{\cntl:{N}}
+\gdef\ctl:o{\cntl:{O}}
+\gdef\ctl:p{\cntl:{P}}
+\gdef\ctl:q{\cntl:{Q}}
+\gdef\ctl:r{\cntl:{R}}
+\gdef\ctl:s{\cntl:{S}}
+\gdef\ctl:t{\cntl:{T}}
+\gdef\ctl:u{\cntl:{U}}
+\gdef\ctl:v{\cntl:{V}}
+\gdef\ctl:w{\cntl:{W}}
+\gdef\ctl:x{\cntl:{X}}
+\gdef\ctl:y{\cntl:{Y}}
+\gdef\ctl:z{\cntl:{Z}}
+\gdef\ctl:a:{\cntl:{[}}
+\gdef\ctl:b:{\cntl:{\char92 }}
+\gdef\ctl:c:{\cntl:{]}}
+\gdef\ctl:d:{\cntl:{\char94 }}
+\gdef\ctl:e:{\cntl:{\char95 }}
+\gdef\ctl::at{\cntl::{@}}
+\gdef\ctl::a{\cntl::{A}}
+\gdef\ctl::b{\cntl::{B}}
+\gdef\ctl::c{\cntl::{C}}
+\gdef\ctl::d{\cntl::{D}}
+\gdef\ctl::e{\cntl::{E}}
+\gdef\ctl::f{\cntl::{F}}
+\gdef\ctl::g{\cntl::{G}}
+\gdef\ctl::h{\cntl::{H}}
+\gdef\ctl::i{\cntl::{I}}
+\gdef\ctl::j{\cntl::{J}}
+\gdef\ctl::k{\cntl::{K}}
+\gdef\ctl::l{\cntl::{L}}
+\gdef\ctl::m{\cntl::{M}}
+\gdef\ctl::n{\cntl::{N}}
+\gdef\ctl::o{\cntl::{O}}
+\gdef\ctl::p{\cntl::{P}}
+\gdef\ctl::q{\cntl::{Q}}
+\gdef\ctl::r{\cntl::{R}}
+\gdef\ctl::s{\cntl::{S}}
+\gdef\ctl::t{\cntl::{T}}
+\gdef\ctl::u{\cntl::{U}}
+\gdef\ctl::v{\cntl::{V}}
+\gdef\ctl::w{\cntl::{W}}
+\gdef\ctl::x{\cntl::{X}}
+\gdef\ctl::y{\cntl::{Y}}
+\gdef\ctl::z{\cntl::{Z}}
+\gdef\ctl::a:{\cntl::{[}}
+\gdef\ctl::b:{\cntl::{\char92 }}
+\gdef\ctl::c:{\cntl::{]}}
+\gdef\ctl::d:{\cntl::{\char94 }}
+\gdef\ctl::e:{\cntl::{\char95 }}
+\gdef\:fixedblank{\char32 }
+\gdef\:invertedexclamationmark{\char14 }
+\gdef\:cent{c\bs:\up:{-.2ex}{\char124 }}
+\gdef\:pound{\sym:{\it\char36 }}
+\gdef\:currency{\up:{.5\y:}{\sym:{$\scriptstyle\cap$}}\bs:
+\up:{\y:}{\sym:{$\scriptstyle\cup$}}}
+\gdef\:Yen{Y\bs:\up:{-\y:}{-}}
+\gdef\:brokenvbar{\G:{\B:4851\B:4411}}
+\gdef\:paragraph{\sym:{S\bs:\up:{-.6ex}{S}}}
+\gdef\:copyright{\cbox:{\kern-.2em(\hss\up:{.2ex}{c}\hss)\kern-.2em}}
+\gdef\:umera{\cbox:{\up:{.3ex}{\char95 }\bs:\up:{.4ex}{a}}}
+\gdef\:frenchleftquotes{\sym:{<\kern-.3em<}}
+\gdef\:not{\sym:{-\llap{\up:{-.66ex}{\char13 }\kern-.18em}}}
+\gdef\:syllablehyphen{\sym:{\it\char45 }}
+\gdef\:registered{\cbox:{\kern-.2em(\hss R\hss)\kern-.2em}}
+\gdef\:degree{\sym:{$^\circ$}}
+\gdef\:plusminus{+\bs:\char95 }
+\gdef\:supertwo{\sym:{$^{\scriptscriptstyle2}$}}
+\gdef\:superthree{\sym:{$^{\scriptscriptstyle3}$}}
+\gdef\:mu{\sym:{$\mu$}}
+\gdef\:paramark{\sym:{\P}}
+\gdef\:middledot{\cbox:{\up:{.5ex}{.}}}
+\gdef\:superone{\sym:{$^{\scriptscriptstyle1}$}}
+\gdef\:umero{\cbox:{\up:{.3ex}{\char95 }\bs:\up:{.4ex}{o}}}
+\gdef\:frenchrightquotes{\sym:{>\kern-.3em>}}
+\gdef\:onefourth{\up:{\y:}{\sym:{$\scriptstyle{1\over4}$}}}
+\gdef\:onehalf{\up:{\y:}{\sym:{$\scriptstyle{1\over2}$}}}
+\gdef\:threefourth{\up:{\y:}{\sym:{$\scriptstyle{3\over4}$}}}
+\gdef\:invertedquestionmark{\char15 }
+\gdef\:Eth{D\bs:-}
+\gdef\:eth{d\bs:{\char22 }}
+\gdef\:Thorn{\sym:{\rlap{\kern-.07em\rm I}\up:{2\y:}{$\scriptscriptstyle\supset$}}}
+\gdef\:thorn{\sym:{\rlap{\kern.08em\vrule height\h: depth\d: width\x:}\up:{0.2ex}{$\scriptscriptstyle\supset$}\kern-\x:}}
+%%%\gdef\:thorn{\cbox:{\kern-.17em\up:{-.2ex}{\char124 }\hss o}}%%%naja%%%{\G:{\B:1701}\bs: o}
+\gdef\:times{\up:{\y:}{\sym:{$\scriptstyle\times$}}}
+\gdef\:div{\up:{\y:}{\sym:{$\scriptstyle\div$}}}
+\gdef\:dotlessi{\char16 }
+\gdef\:doubleunderscore{\char95 \bs:\up:{-\y:}{\char95 }}
+\gdef\:florin{\sym:{\it f}}
+
+\gdef\:alpha{\sym:{$\alpha$}}
+\gdef\:approxequal{\up:{\y:}{\sym:{$\scriptstyle\approx$}}}
+\gdef\:bigmiddledot{\up:{\y:}{\sym:{$\scriptstyle\bullet$}}}
+\gdef\:cut{\sym:{$\cap$}}
+\gdef\:Delta{\char1 }
+\gdef\:delta{\sym:{$\delta$}}
+\gdef\:diameter{\sym:{$\phi$}}
+\gdef\:elementof{\sym:{$\in$}}
+\gdef\:Gamma{\char0 }
+\gdef\:ge{<\bs:\char95 }
+\gdef\:identity{\up:{\y:}{\sym:{$\scriptstyle\equiv$}}}
+\gdef\:infinity{\up:{\y:}{\sym:{$\scriptstyle\infty$}}}
+\gdef\:intlower{\G:{\B:4931\B:2322}}
+\gdef\:intupper{\G:{\B:4601\B:5762}}
+\gdef\:invertednot{\sym:{\rlap{\kern-.18em\up:{-.66ex}{\char13 }}-}}
+\gdef\:le{>\bs:\char95 }
+\gdef\:Omega{\char10 }
+\gdef\:Pesetas{P\bs:\hbox{\kern1\x: t\kern-1\x:}}
+\gdef\:Phi{\char9 }
+\gdef\:Pi{\char5 }
+\gdef\:root{\up:{\y:}{\sym:{$\scriptscriptstyle\surd$}}}
+\gdef\:Sigma{\char6 }
+\gdef\:sigma{\sym:{$\sigma$}}
+\gdef\:supern{\sym:{$^{\rm n}$}}
+\gdef\:tau{\sym:{$\tau$}}
+\gdef\:Theta{\char2 }
+
+\gdef\:null{\ }
+\gdef\:smile{\G:{\B:2985\B:1821\B:7821\B:2215\B:3761\B:5761\B:3543\B:4431}}
+\gdef\:invertedsmile{\G:{\B:2975\B:1822\B:6822\B:2315\B:2655\B:4761\B:2422\B:5422}}
+\gdef\:herz{\up:{\y:}{\sym:{$\scriptstyle\heartsuit$}}}
+\gdef\:karo{\up:{\y:}{\sym:{$\scriptstyle\diamondsuit$}}}
+\gdef\:kreuz{\up:{\y:}{\sym:{$\scriptstyle\clubsuit$}}}
+\gdef\:pik{\up:{\y:}{\sym:{$\scriptstyle\spadesuit$}}}
+\gdef\:bigdot{\sym:{$\bullet$}}
+\gdef\:invertedbigdot{\sym:{$\bullet$}\bs:\G:{\B:0989\B:0109\B:0901\B:8901}}
+\gdef\:circ{\sym:{$\circ$}}
+\gdef\:invertedcirc{\sym:{$\circ$}\bs:\G:{\B:0989\B:0109\B:0901\B:8901}}
+\gdef\:male{o\bs:\up:{3\y:}{\sym:{$\scriptscriptstyle\nearrow$}}}
+\gdef\:female{\up:{2\y:}{o}\bs:\up:{-2\y:}{+}}
+\gdef\:onenote{\G:{\B:1422\B:3831\B:4873\B:4653\B:7851}}
+\gdef\:twonote{\G:{\B:0312\B:2821\B:5422\B:7831\B:3874\B:3654}}
+\gdef\:star{\sym:{$\ast$}}
+\gdef\:trirt{\sym:{$\triangleright$}}
+\gdef\:trilf{\sym:{$\triangleleft$}}
+\gdef\:arrupdn{\up:{\y:}{\sym:{$\scriptstyle\updownarrow$}}}
+\gdef\:doubleexclamationmark{\cbox:{\kern-.1em!\hss!\kern-.1em}}
+\gdef\:bigcursor{\sym:{\vrule height.5ex depth0ex width7\x:}}
+\gdef\:updnbar{\up:{\y:}{\sym:{$\scriptstyle\updownarrow$}\bs:\G:{\B:2105}}}
+\gdef\:arrup{\up:{\y:}{\sym:{$\scriptstyle\uparrow$}}}
+\gdef\:arrdn{\up:{\y:}{\sym:{$\scriptstyle\downarrow$}}}
+\gdef\:arrrt{\up:{\y:}{\sym:{$\scriptscriptstyle\rightarrow$}}}
+\gdef\:arrlf{\up:{\y:}{\sym:{$\scriptscriptstyle\leftarrow$}}}
+\gdef\:mirrorednot{\sym:{\rlap{\kern-.18em\up:{-.10ex}{\char13 }}-}}
+\gdef\:arrlfrt{\up:{\y:}{\sym:{$\scriptscriptstyle\leftrightarrow$}}}
+\gdef\:triup{\up:{\y:}{\sym:{$\scriptstyle\bigtriangleup$}}}
+\gdef\:tridn{\up:{\y:}{\sym:{$\scriptstyle\bigtriangledown$}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Zweiter Teil: Definition der Makros zum Setzen der Sonderzeichen %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef\verb:normalize{
+\catcode`\^^21=11\catcode`\^^22=11\catcode`\^^23=11
+\catcode`\^^24=11\catcode`\^^25=11\catcode`\^^26=11\catcode`\^^27=11
+\catcode`\^^28=11\catcode`\^^29=11\catcode`\^^2a=11\catcode`\^^2b=11
+\catcode`\^^2c=11\catcode`\^^2d=11\catcode`\^^2e=11\catcode`\^^2f=11
+\catcode`\^^30=11\catcode`\^^31=11\catcode`\^^32=11\catcode`\^^33=11
+\catcode`\^^34=11\catcode`\^^35=11\catcode`\^^36=11\catcode`\^^37=11
+\catcode`\^^38=11\catcode`\^^39=11\catcode`\^^3a=11\catcode`\^^3b=11
+\catcode`\^^3c=11\catcode`\^^3d=11\catcode`\^^3e=11\catcode`\^^3f=11
+\catcode`\^^40=11\catcode`\^^41=11\catcode`\^^42=11\catcode`\^^43=11
+\catcode`\^^44=11\catcode`\^^45=11\catcode`\^^46=11\catcode`\^^47=11
+\catcode`\^^48=11\catcode`\^^49=11\catcode`\^^4a=11\catcode`\^^4b=11
+\catcode`\^^4c=11\catcode`\^^4d=11\catcode`\^^4e=11\catcode`\^^4f=11
+\catcode`\^^50=11\catcode`\^^51=11\catcode`\^^52=11\catcode`\^^53=11
+\catcode`\^^54=11\catcode`\^^55=11\catcode`\^^56=11\catcode`\^^57=11
+\catcode`\^^58=11\catcode`\^^59=11\catcode`\^^5a=11\catcode`\^^5b=11
+\catcode`\^^5c=11\catcode`\^^5d=11\catcode`\^^5e=11
+\catcode`\^^61=11\catcode`\^^62=11\catcode`\^^63=11
+\catcode`\^^64=11\catcode`\^^65=11\catcode`\^^66=11\catcode`\^^67=11
+\catcode`\^^68=11\catcode`\^^69=11\catcode`\^^6a=11\catcode`\^^6b=11
+\catcode`\^^6c=11\catcode`\^^6d=11\catcode`\^^6e=11\catcode`\^^6f=11
+\catcode`\^^70=11\catcode`\^^71=11\catcode`\^^72=11\catcode`\^^73=11
+\catcode`\^^74=11\catcode`\^^75=11\catcode`\^^76=11\catcode`\^^77=11
+\catcode`\^^78=11\catcode`\^^79=11\catcode`\^^7a=11\catcode`\^^7b=11
+\catcode`\^^7c=11\catcode`\^^7d=11\catcode`\^^7e=11
+}
+
+\gdef\verb:activate{
+\catcode`\^^00=13\catcode`\^^01=13\catcode`\^^02=13\catcode`\^^03=13
+\catcode`\^^04=13\catcode`\^^05=13\catcode`\^^06=13\catcode`\^^07=13
+\catcode`\^^08=13\catcode`\^^09=13\catcode`\^^0a=13\catcode`\^^0b=13
+\catcode`\^^0c=13\catcode`\^^0d=13\catcode`\^^0e=13\catcode`\^^0f=13
+\catcode`\^^10=13\catcode`\^^11=13\catcode`\^^12=13\catcode`\^^13=13
+\catcode`\^^14=13\catcode`\^^15=13\catcode`\^^16=13\catcode`\^^17=13
+\catcode`\^^18=13\catcode`\^^19=13\catcode`\^^1a=13\catcode`\^^1b=13
+\catcode`\^^1c=13\catcode`\^^1d=13\catcode`\^^1e=13\catcode`\^^1f=13
+\catcode`\^^20=13\catcode`\^^5f=13\catcode`\^^60=13\catcode`\^^7f=13
+\catcode`\^^80=13\catcode`\^^81=13\catcode`\^^82=13\catcode`\^^83=13
+\catcode`\^^84=13\catcode`\^^85=13\catcode`\^^86=13\catcode`\^^87=13
+\catcode`\^^88=13\catcode`\^^89=13\catcode`\^^8a=13\catcode`\^^8b=13
+\catcode`\^^8c=13\catcode`\^^8d=13\catcode`\^^8e=13\catcode`\^^8f=13
+\catcode`\^^90=13\catcode`\^^91=13\catcode`\^^92=13\catcode`\^^93=13
+\catcode`\^^94=13\catcode`\^^95=13\catcode`\^^96=13\catcode`\^^97=13
+\catcode`\^^98=13\catcode`\^^99=13\catcode`\^^9a=13\catcode`\^^9b=13
+\catcode`\^^9c=13\catcode`\^^9d=13\catcode`\^^9e=13\catcode`\^^9f=13
+\catcode`\^^a0=13\catcode`\^^a1=13\catcode`\^^a2=13\catcode`\^^a3=13
+\catcode`\^^a4=13\catcode`\^^a5=13\catcode`\^^a6=13\catcode`\^^a7=13
+\catcode`\^^a8=13\catcode`\^^a9=13\catcode`\^^aa=13\catcode`\^^ab=13
+\catcode`\^^ac=13\catcode`\^^ad=13\catcode`\^^ae=13\catcode`\^^af=13
+\catcode`\^^b0=13\catcode`\^^b1=13\catcode`\^^b2=13\catcode`\^^b3=13
+\catcode`\^^b4=13\catcode`\^^b5=13\catcode`\^^b6=13\catcode`\^^b7=13
+\catcode`\^^b8=13\catcode`\^^b9=13\catcode`\^^ba=13\catcode`\^^bb=13
+\catcode`\^^bc=13\catcode`\^^bd=13\catcode`\^^be=13\catcode`\^^bf=13
+\catcode`\^^c0=13\catcode`\^^c1=13\catcode`\^^c2=13\catcode`\^^c3=13
+\catcode`\^^c4=13\catcode`\^^c5=13\catcode`\^^c6=13\catcode`\^^c7=13
+\catcode`\^^c8=13\catcode`\^^c9=13\catcode`\^^ca=13\catcode`\^^cb=13
+\catcode`\^^cc=13\catcode`\^^cd=13\catcode`\^^ce=13\catcode`\^^cf=13
+\catcode`\^^d0=13\catcode`\^^d1=13\catcode`\^^d2=13\catcode`\^^d3=13
+\catcode`\^^d4=13\catcode`\^^d5=13\catcode`\^^d6=13\catcode`\^^d7=13
+\catcode`\^^d8=13\catcode`\^^d9=13\catcode`\^^da=13\catcode`\^^db=13
+\catcode`\^^dc=13\catcode`\^^dd=13\catcode`\^^de=13\catcode`\^^df=13
+\catcode`\^^e0=13\catcode`\^^e1=13\catcode`\^^e2=13\catcode`\^^e3=13
+\catcode`\^^e4=13\catcode`\^^e5=13\catcode`\^^e6=13\catcode`\^^e7=13
+\catcode`\^^e8=13\catcode`\^^e9=13\catcode`\^^ea=13\catcode`\^^eb=13
+\catcode`\^^ec=13\catcode`\^^ed=13\catcode`\^^ee=13\catcode`\^^ef=13
+\catcode`\^^f0=13\catcode`\^^f1=13\catcode`\^^f2=13\catcode`\^^f3=13
+\catcode`\^^f4=13\catcode`\^^f5=13\catcode`\^^f6=13\catcode`\^^f7=13
+\catcode`\^^f8=13\catcode`\^^f9=13\catcode`\^^fa=13\catcode`\^^fb=13
+\catcode`\^^fc=13\catcode`\^^fd=13\catcode`\^^fe=13\catcode`\^^ff=13
+}
+
+\begingroup
+\verb:activate%
+%
+\gdef\verb:iso{%
+\verb:normalize%
+\verb:activate%
+\let^^00=\ctl:at%
+\let^^01=\ctl:a%
+\let^^02=\ctl:b%
+\let^^03=\ctl:c%
+\let^^04=\ctl:d%
+\let^^05=\ctl:e%
+\let^^06=\ctl:f%
+\let^^07=\ctl:g%
+\let^^08=\verb:BS%
+\let^^09=\verb:HT%
+\let^^0a=\verb:LF%
+\let^^0b=\verb:VT%
+\let^^0c=\verb:FF%
+\let^^0d=\verb:CR%
+\let^^0e=\ctl:n%
+\let^^0f=\ctl:o%
+\let^^10=\ctl:p%
+\let^^11=\ctl:q%
+\let^^12=\ctl:r%
+\let^^13=\ctl:s%
+\let^^14=\ctl:t%
+\let^^15=\ctl:u%
+\let^^16=\ctl:v%
+\let^^17=\ctl:w%
+\let^^18=\ctl:x%
+\let^^19=\ctl:y%
+\let^^1a=\ctl:z%
+\let^^1b=\ctl:a:%
+\let^^1c=\ctl:b:%
+\let^^1d=\ctl:c:%
+\let^^1e=\ctl:d:%
+\let^^1f=\ctl:e:%
+\let^^20=\:sp%
+\let^^5f=\:us%
+\let^^60=\:gr%
+\let^^7f=\:Delta%
+\let^^80=\bar:LR%
+\let^^81=\bar:UD%
+\let^^82=\bar:UR%
+\let^^83=\bar:UL%
+\let^^84=\bar:DL%
+\let^^85=\bar:DR%
+\let^^86=\bar:UDR%
+\let^^87=\bar:ULR%
+\let^^88=\bar:UDL%
+\let^^89=\bar:DLR%
+\let^^8a=\bar:UDLR%
+\let^^8b=\box:light%
+\let^^8c=\box:medium%
+\let^^8d=\box:dark%
+\let^^8e=\:dotlessi%
+\let^^8f=\:doubleunderscore%
+\let^^90=\bar:LLRR%
+\let^^91=\bar:UUDD%
+\let^^92=\bar:UURR%
+\let^^93=\bar:UULL%
+\let^^94=\bar:DDLL%
+\let^^95=\bar:DDRR%
+\let^^96=\bar:UUDDRR%
+\let^^97=\bar:UULLRR%
+\let^^98=\bar:UUDDLL%
+\let^^99=\bar:DDLLRR%
+\let^^9a=\bar:UUDDLLRR%
+\let^^9b=\box:halfhigh%
+\let^^9c=\box:halflow%
+\let^^9d=\box:full%
+\let^^9e=\box:small%
+\let^^9f=\:florin%
+\let^^a0=\:fixedblank%
+\let^^a1=\:invertedexclamationmark%
+\let^^a2=\:cent%
+\let^^a3=\:pound%
+\let^^a4=\:currency%
+\let^^a5=\:Yen%
+\let^^a6=\:brokenvbar%
+\let^^a7=\:paragraph%
+\let^^a8=\:umlaut%
+\let^^a9=\:copyright%
+\let^^aa=\:umera%
+\let^^ab=\:frenchleftquotes%
+\let^^ac=\:not%
+\let^^ad=\:syllablehyphen%
+\let^^ae=\:registered%
+\let^^af=\:macron%
+\let^^b0=\:degree%
+\let^^b1=\:plusminus%
+\let^^b2=\:supertwo%
+\let^^b3=\:superthree%
+\let^^b4=\:acute%
+\let^^b5=\:mu%
+\let^^b6=\:paramark%
+\let^^b7=\:middledot%
+\let^^b8=\:cedilla%
+\let^^b9=\:superone%
+\let^^ba=\:umero%
+\let^^bb=\:frenchrightquotes%
+\let^^bc=\:onefourth%
+\let^^bd=\:onehalf%
+\let^^be=\:threefourth%
+\let^^bf=\:invertedquestionmark%
+\let^^c0=\gra:A%
+\let^^c1=\acu:A%
+\let^^c2=\cir:A%
+\let^^c3=\til:A%
+\let^^c4=\uml:A%
+\let^^c5=\ang:A%
+\let^^c6=\lig:AE%
+\let^^c7=\ced:C%
+\let^^c8=\gra:E%
+\let^^c9=\acu:E%
+\let^^ca=\cir:E%
+\let^^cb=\uml:E%
+\let^^cc=\gra:I%
+\let^^cd=\acu:I%
+\let^^ce=\cir:I%
+\let^^cf=\uml:I%
+\let^^d0=\:Eth%
+\let^^d1=\til:N%
+\let^^d2=\gra:O%
+\let^^d3=\acu:O%
+\let^^d4=\cir:O%
+\let^^d5=\til:O%
+\let^^d6=\uml:O%
+\let^^d7=\:times%
+\let^^d8=\dia:O%
+\let^^d9=\gra:U%
+\let^^da=\acu:U%
+\let^^db=\cir:U%
+\let^^dc=\uml:U%
+\let^^dd=\acu:Y%
+\let^^de=\:Thorn%
+\let^^df=\:eszet%
+\let^^e0=\gra:a%
+\let^^e1=\acu:a%
+\let^^e2=\cir:a%
+\let^^e3=\til:a%
+\let^^e4=\uml:a%
+\let^^e5=\ang:a%
+\let^^e6=\lig:ae%
+\let^^e7=\ced:c%
+\let^^e8=\gra:e%
+\let^^e9=\acu:e%
+\let^^ea=\cir:e%
+\let^^eb=\uml:e%
+\let^^ec=\gra:i%
+\let^^ed=\acu:i%
+\let^^ee=\cir:i%
+\let^^ef=\uml:i%
+\let^^f0=\:eth%
+\let^^f1=\til:n%
+\let^^f2=\gra:o%
+\let^^f3=\acu:o%
+\let^^f4=\cir:o%
+\let^^f5=\til:o%
+\let^^f6=\uml:o%
+\let^^f7=\:div%
+\let^^f8=\dia:o%
+\let^^f9=\gra:u%
+\let^^fa=\acu:u%
+\let^^fb=\cir:u%
+\let^^fc=\uml:u%
+\let^^fd=\acu:y%
+\let^^fe=\:thorn%
+\let^^ff=\uml:y%
+}%
+%
+\gdef\verb:ibm{%
+\verb:normalize%
+\verb:activate%
+\let^^00=\:null%
+\let^^01=\:smile%
+\let^^02=\:invertedsmile%
+\let^^03=\:herz%
+\let^^04=\:karo%
+\let^^05=\:kreuz%
+\let^^06=\:pik%
+\let^^07=\:bigdot%
+\let^^08=\verb:BS%
+\let^^09=\verb:HT%
+\let^^0a=\verb:LF%
+\let^^0b=\verb:VT%
+\let^^0c=\verb:FF%
+\let^^0d=\verb:CR%
+\let^^0e=\:twonote%
+\let^^0f=\:star%
+\let^^10=\:trirt%
+\let^^11=\:trilf%
+\let^^12=\:arrupdn%
+\let^^13=\:doubleexclamationmark%
+\let^^14=\:paramark%
+\let^^15=\:paragraph%
+\let^^16=\:bigcursor%
+\let^^17=\:updnbar%
+\let^^18=\:arrup%
+\let^^19=\:arrdn%
+\let^^1a=\:arrrt%
+\let^^1b=\:arrlf%
+\let^^1c=\:mirrorednot%
+\let^^1d=\:arrlfrt%
+\let^^1e=\:triup%
+\let^^1f=\:tridn%
+\let^^20=\:sp%
+\let^^5f=\:us%
+\let^^60=\:gr%
+\let^^7f=\:Delta%
+\let^^80=\ced:C%
+\let^^81=\uml:u%
+\let^^82=\acu:e%
+\let^^83=\cir:a%
+\let^^84=\uml:a%
+\let^^85=\gra:a%
+\let^^86=\ang:a%
+\let^^87=\ced:c%
+\let^^88=\cir:e%
+\let^^89=\uml:e%
+\let^^8a=\gra:e%
+\let^^8b=\uml:i%
+\let^^8c=\cir:i%
+\let^^8d=\gra:i%
+\let^^8e=\uml:A%
+\let^^8f=\ang:A%
+\let^^90=\acu:E%
+\let^^91=\lig:ae%
+\let^^92=\lig:AE%
+\let^^93=\cir:o%
+\let^^94=\uml:o%
+\let^^95=\gra:o%
+\let^^96=\cir:u%
+\let^^97=\gra:u%
+\let^^98=\uml:y%
+\let^^99=\uml:O%
+\let^^9a=\uml:U%
+\let^^9b=\dia:o%
+\let^^9c=\:pound%
+\let^^9d=\dia:O%
+\let^^9e=\:times%
+\let^^9f=\:florin%
+\let^^a0=\acu:a%
+\let^^a1=\acu:i%
+\let^^a2=\acu:o%
+\let^^a3=\acu:u%
+\let^^a4=\til:n%
+\let^^a5=\til:N%
+\let^^a6=\:umera%
+\let^^a7=\:umero%
+\let^^a8=\:invertedquestionmark%
+\let^^a9=\:registered%
+\let^^aa=\:not%
+\let^^ab=\:onehalf%
+\let^^ac=\:onefourth%
+\let^^ad=\:invertedexclamationmark%
+\let^^ae=\:frenchleftquotes%
+\let^^af=\:frenchrightquotes%
+\let^^b0=\box:light%
+\let^^b1=\box:medium%
+\let^^b2=\box:dark%
+\let^^b3=\bar:UD%
+\let^^b4=\bar:UDL%
+\let^^b5=\acu:A%
+\let^^b6=\cir:A%
+\let^^b7=\gra:A%
+\let^^b8=\:copyright%
+\let^^b9=\bar:UUDDLL%
+\let^^ba=\bar:UUDD%
+\let^^bb=\bar:DDLL%
+\let^^bc=\bar:UULL%
+\let^^bd=\:cent%
+\let^^be=\:Yen%
+\let^^bf=\bar:DL%
+\let^^c0=\bar:UR%
+\let^^c1=\bar:ULR%
+\let^^c2=\bar:DLR%
+\let^^c3=\bar:UDR%
+\let^^c4=\bar:LR%
+\let^^c5=\bar:UDLR%
+\let^^c6=\til:a%
+\let^^c7=\til:A%
+\let^^c8=\bar:UURR%
+\let^^c9=\bar:DDRR%
+\let^^ca=\bar:UULLRR%
+\let^^cb=\bar:DDLLRR%
+\let^^cc=\bar:UUDDRR%
+\let^^cd=\bar:LLRR%
+\let^^ce=\bar:UUDDLLRR%
+\let^^cf=\:currency%
+\let^^d0=\:eth%
+\let^^d1=\:Eth%
+\let^^d2=\cir:E%
+\let^^d3=\uml:E%
+\let^^d4=\gra:E%
+\let^^d5=\:dotlessi%
+\let^^d6=\acu:I%
+\let^^d7=\cir:I%
+\let^^d8=\uml:I%
+\let^^d9=\bar:UL%
+\let^^da=\bar:DR%
+\let^^db=\box:full%
+\let^^dc=\box:halflow%
+\let^^dd=\:brokenvbar%
+\let^^de=\gra:I%
+\let^^df=\box:halfhigh%
+\let^^e0=\acu:O%
+\let^^e1=\:eszet%
+\let^^e2=\cir:O%
+\let^^e3=\gra:O%
+\let^^e4=\til:o%
+\let^^e5=\til:O%
+\let^^e6=\:mu%
+\let^^e7=\:thorn%
+\let^^e8=\:Thorn%
+\let^^e9=\acu:U%
+\let^^ea=\cir:U%
+\let^^eb=\gra:U%
+\let^^ec=\acu:y%
+\let^^ed=\acu:Y%
+\let^^ee=\:macron%
+\let^^ef=\:acute%
+\let^^f0=\:syllablehyphen%
+\let^^f1=\:plusminus%
+\let^^f2=\:doubleunderscore%
+\let^^f3=\:threefourth%
+\let^^f4=\:paramark%
+\let^^f5=\:paragraph%
+\let^^f6=\:div%
+\let^^f7=\:cedilla%
+\let^^f8=\:degree%
+\let^^f9=\:umlaut%
+\let^^fa=\:middledot%
+\let^^fb=\:superone%
+\let^^fc=\:superthree%
+\let^^fd=\:supertwo%
+\let^^fe=\box:small%
+\let^^ff=\:fixedblank%
+}%
+%
+\gdef\verb:pc{%
+\verb:normalize%
+\verb:activate%
+\let^^00=\:null%
+\let^^01=\:smile%
+\let^^02=\:invertedsmile%
+\let^^03=\:herz%
+\let^^04=\:karo%
+\let^^05=\:kreuz%
+\let^^06=\:pik%
+\let^^07=\:bigdot%
+\let^^08=\verb:BS%
+\let^^09=\verb:HT%
+\let^^0a=\verb:LF%
+\let^^0b=\verb:VT%
+\let^^0c=\verb:FF%
+\let^^0d=\verb:CR%
+\let^^0e=\:twonote%
+\let^^0f=\:star%
+\let^^10=\:trirt%
+\let^^11=\:trilf%
+\let^^12=\:arrupdn%
+\let^^13=\:doubleexclamationmark%
+\let^^14=\:paramark%
+\let^^15=\:paragraph%
+\let^^16=\:bigcursor%
+\let^^17=\:updnbar%
+\let^^18=\:arrup%
+\let^^19=\:arrdn%
+\let^^1a=\:arrrt%
+\let^^1b=\:arrlf%
+\let^^1c=\:mirrorednot%
+\let^^1d=\:arrlfrt%
+\let^^1e=\:triup%
+\let^^1f=\:tridn%
+\let^^20=\:sp%
+\let^^5f=\:us%
+\let^^60=\:gr%
+\let^^7f=\:Delta%
+\let^^80=\ced:C%
+\let^^81=\uml:u%
+\let^^82=\acu:e%
+\let^^83=\cir:a%
+\let^^84=\uml:a%
+\let^^85=\gra:a%
+\let^^86=\ang:a%
+\let^^87=\ced:c%
+\let^^88=\cir:e%
+\let^^89=\uml:e%
+\let^^8a=\gra:e%
+\let^^8b=\uml:i%
+\let^^8c=\cir:i%
+\let^^8d=\gra:i%
+\let^^8e=\uml:A%
+\let^^8f=\ang:A%
+\let^^90=\acu:E%
+\let^^91=\lig:ae%
+\let^^92=\lig:AE%
+\let^^93=\cir:o%
+\let^^94=\uml:o%
+\let^^95=\gra:o%
+\let^^96=\cir:u%
+\let^^97=\gra:u%
+\let^^98=\uml:y%
+\let^^99=\uml:O%
+\let^^9a=\uml:U%
+\let^^9b=\:cent%%%
+\let^^9c=\:pound%
+\let^^9d=\:Yen%%%
+\let^^9e=\:Pesetas%%%
+\let^^9f=\:florin%
+\let^^a0=\acu:a%
+\let^^a1=\acu:i%
+\let^^a2=\acu:o%
+\let^^a3=\acu:u%
+\let^^a4=\til:n%
+\let^^a5=\til:N%
+\let^^a6=\:umera%
+\let^^a7=\:umero%
+\let^^a8=\:invertedquestionmark%
+\let^^a9=\:invertednot%%%
+\let^^aa=\:not%
+\let^^ab=\:onehalf%
+\let^^ac=\:onefourth%
+\let^^ad=\:invertedexclamationmark%
+\let^^ae=\:frenchleftquotes%
+\let^^af=\:frenchrightquotes%
+\let^^b0=\box:light%
+\let^^b1=\box:medium%
+\let^^b2=\box:dark%
+\let^^b3=\bar:UD%
+\let^^b4=\bar:UDL%
+\let^^b5=\bar:UDLL%%%
+\let^^b6=\bar:UUDDL%%%
+\let^^b7=\bar:DDL%%%
+\let^^b8=\bar:DLL%%%
+\let^^b9=\bar:UUDDLL%
+\let^^ba=\bar:UUDD%
+\let^^bb=\bar:DDLL%
+\let^^bc=\bar:UULL%
+\let^^bd=\bar:UUL%%%
+\let^^be=\bar:ULL%%%
+\let^^bf=\bar:DL%
+\let^^c0=\bar:UR%
+\let^^c1=\bar:ULR%
+\let^^c2=\bar:DLR%
+\let^^c3=\bar:UDR%
+\let^^c4=\bar:LR%
+\let^^c5=\bar:UDLR%
+\let^^c6=\bar:UDRR%%%
+\let^^c7=\bar:UUDDR%%%
+\let^^c8=\bar:UURR%
+\let^^c9=\bar:DDRR%
+\let^^ca=\bar:UULLRR%
+\let^^cb=\bar:DDLLRR%
+\let^^cc=\bar:UUDDRR%
+\let^^cd=\bar:LLRR%
+\let^^ce=\bar:UUDDLLRR%
+\let^^cf=\bar:ULLRR%%%
+\let^^d0=\bar:UULR%%%
+\let^^d1=\bar:DLLRR%%%
+\let^^d2=\bar:DDLR%%%
+\let^^d3=\bar:UUR%%%
+\let^^d4=\bar:URR%%%
+\let^^d5=\bar:DRR%%%
+\let^^d6=\bar:DDR%%%
+\let^^d7=\bar:UUDDLR%%%
+\let^^d8=\bar:UDLLRR%%%
+\let^^d9=\bar:UL%
+\let^^da=\bar:DR%
+\let^^db=\box:full%
+\let^^dc=\box:halflow%
+\let^^dd=\box:halfleft%%%
+\let^^de=\box:halfright%%%
+\let^^df=\box:halfhigh%
+\let^^e0=\:alpha%%%
+\let^^e1=\:eszet%
+\let^^e2=\:Gamma%%%
+\let^^e3=\:Pi%%%
+\let^^e4=\:Sigma%%%
+\let^^e5=\:sigma%%%
+\let^^e6=\:mu%
+\let^^e7=\:tau%%%
+\let^^e8=\:Phi%%%
+\let^^e9=\:Theta%%%
+\let^^ea=\:Omega%%%
+\let^^eb=\:delta%%%
+\let^^ec=\:infinity%%%
+\let^^ed=\:diameter%%%
+\let^^ee=\:elementof%%%
+\let^^ef=\:cut%%%
+\let^^f0=\:identity%%%
+\let^^f1=\:plusminus%
+\let^^f2=\:ge%%%
+\let^^f3=\:le%%%
+\let^^f4=\:intupper%%%
+\let^^f5=\:intlower%%%
+\let^^f6=\:div%
+\let^^f7=\:approxequal%%%
+\let^^f8=\:degree%
+\let^^f9=\:bigmiddledot%%%
+\let^^fa=\:middledot%
+\let^^fb=\:root%%%
+\let^^fc=\:supern%%%
+\let^^fd=\:supertwo%
+\let^^fe=\box:small%
+\let^^ff=\:fixedblank%
+}%
+\gdef\verb:test{%
+\verb:normalize%
+\verb:activate%
+\let^^00=\ctl:at%
+\let^^01=\ctl:a%
+\let^^02=\ctl:b%
+\let^^03=\ctl:c%
+\let^^04=\ctl:d%
+\let^^05=\ctl:e%
+\let^^06=\ctl:f%
+\let^^07=\ctl:g%
+\let^^08=\verb:BS%
+\let^^09=\verb:HT%
+\let^^0a=\verb:LF%
+\let^^0b=\verb:VT%
+\let^^0c=\verb:FF%
+\let^^0d=\verb:CR%
+\let^^0e=\ctl:n%
+\let^^0f=\ctl:o%
+\let^^10=\ctl:p%
+\let^^11=\ctl:q%
+\let^^12=\ctl:r%
+\let^^13=\ctl:s%
+\let^^14=\ctl:t%
+\let^^15=\ctl:u%
+\let^^16=\ctl:v%
+\let^^17=\ctl:w%
+\let^^18=\ctl:x%
+\let^^19=\ctl:y%
+\let^^1a=\ctl:z%
+\let^^1b=\ctl:a:%
+\let^^1c=\ctl:b:%
+\let^^1d=\ctl:c:%
+\let^^1e=\ctl:d:%
+\let^^1f=\ctl:e:%
+\let^^20=\:sp%
+\let^^5f=\:us%
+\let^^60=\:gr%
+\let^^7f=\:Delta%
+\let^^80=\ctl::at%
+\let^^81=\ctl::a%
+\let^^82=\ctl::b%
+\let^^83=\ctl::c%
+\let^^84=\ctl::d%
+\let^^85=\ctl::e%
+\let^^86=\ctl::f%
+\let^^87=\ctl::g%
+\let^^88=\ctl::h%
+\let^^89=\ctl::i%
+\let^^8a=\ctl::j%
+\let^^8b=\ctl::k%
+\let^^8c=\ctl::l%
+\let^^8d=\ctl::m%
+\let^^8e=\ctl::n%
+\let^^8f=\ctl::o%
+\let^^90=\ctl::p%
+\let^^91=\ctl::q%
+\let^^92=\ctl::r%
+\let^^93=\ctl::s%
+\let^^94=\ctl::t%
+\let^^95=\ctl::u%
+\let^^96=\ctl::v%
+\let^^97=\ctl::w%
+\let^^98=\ctl::x%
+\let^^99=\ctl::y%
+\let^^9a=\ctl::z%
+\let^^9b=\ctl::a:%
+\let^^9c=\ctl::b:%
+\let^^9d=\ctl::c:%
+\let^^9e=\ctl::d:%
+\let^^9f=\ctl::e:%
+\let^^a0=\:null%
+\let^^a1=\:smile%
+\let^^a2=\:invertedsmile%
+\let^^a3=\:herz%
+\let^^a4=\:karo%
+\let^^a5=\:kreuz%
+\let^^a6=\:pik%
+\let^^a7=\:bigdot%
+\let^^a8=\:invertedbigdot%
+\let^^a9=\:circ%
+\let^^aa=\:invertedcirc%
+\let^^ab=\:male%
+\let^^ac=\:female%
+\let^^ad=\:onenote%
+\let^^ae=\:twonote%
+\let^^af=\:star%
+\let^^b0=\:trirt%
+\let^^b1=\:trilf%
+\let^^b2=\:arrupdn%
+\let^^b3=\:doubleexclamationmark%
+\let^^b4=\:paramark%
+\let^^b5=\:paragraph%
+\let^^b6=\:bigcursor%
+\let^^b7=\:updnbar%
+\let^^b8=\:arrup%
+\let^^b9=\:arrdn%
+\let^^ba=\:arrrt%
+\let^^bb=\:arrlf%
+\let^^bc=\:mirrorednot%
+\let^^bd=\:arrlfrt%
+\let^^be=\:triup%
+\let^^bf=\:tridn%
+\let^^c0=\ctl:at%
+\let^^c1=\ctl:a%
+\let^^c2=\ctl:b%
+\let^^c3=\ctl:c%
+\let^^c4=\ctl:d%
+\let^^c5=\ctl:e%
+\let^^c6=\ctl:f%
+\let^^c7=\ctl:g%
+\let^^c8=\ctl:h%
+\let^^c9=\ctl:i%
+\let^^ca=\ctl:j%
+\let^^cb=\ctl:k%
+\let^^cc=\ctl:l%
+\let^^cd=\ctl:m%
+\let^^ce=\ctl:n%
+\let^^cf=\ctl:o%
+\let^^d0=\ctl:p%
+\let^^d1=\ctl:q%
+\let^^d2=\ctl:r%
+\let^^d3=\ctl:s%
+\let^^d4=\ctl:t%
+\let^^d5=\ctl:u%
+\let^^d6=\ctl:v%
+\let^^d7=\ctl:w%
+\let^^d8=\ctl:x%
+\let^^d9=\ctl:y%
+\let^^da=\ctl:z%
+\let^^db=\ctl:a:%
+\let^^dc=\ctl:b:%
+\let^^dd=\ctl:c:%
+\let^^de=\ctl:d:%
+\let^^df=\ctl:e:%
+\let^^e0=\ctl::at%
+\let^^e1=\ctl::a%
+\let^^e2=\ctl::b%
+\let^^e3=\ctl::c%
+\let^^e4=\ctl::d%
+\let^^e5=\ctl::e%
+\let^^e6=\ctl::f%
+\let^^e7=\ctl::g%
+\let^^e8=\ctl::h%
+\let^^e9=\ctl::i%
+\let^^ea=\ctl::j%
+\let^^eb=\ctl::k%
+\let^^ec=\ctl::l%
+\let^^ed=\ctl::m%
+\let^^ee=\ctl::n%
+\let^^ef=\ctl::o%
+\let^^f0=\ctl::p%
+\let^^f1=\ctl::q%
+\let^^f2=\ctl::r%
+\let^^f3=\ctl::s%
+\let^^f4=\ctl::t%
+\let^^f5=\ctl::u%
+\let^^f6=\ctl::v%
+\let^^f7=\ctl::w%
+\let^^f8=\ctl::x%
+\let^^f9=\ctl::y%
+\let^^fa=\ctl::z%
+\let^^fb=\ctl::a:%
+\let^^fc=\ctl::b:%
+\let^^fd=\ctl::c:%
+\let^^fe=\ctl::d:%
+\let^^ff=\ctl::e:%
+}%
+%
+\endgroup
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Dritter Teil: Definition der Makros %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newbox\verbb:x
+\newcount\verb:line
+\newtoks\verb:toks
+\gdef\verb:bar{\up:{-0.6ex}{\vrule width1ptheight\H: depth0ex}}
+\gdef\verb:bol{\setbox\verbb:x=\hbox\bgroup}
+\gdef\verb:egrp{\leavevmode\egroup\ht\verbb:x\h:\dp\verbb:x\d:\box\verbb:x}
+\gdef\verb:eol{\verb:egrp\par}
+\gdef\verb:xbol{\nobreak\leavevmode\verb:bar\space\setbox\verbb:x=\hbox\bgroup}
+\gdef\verb:xeol{\verb:egrp\hfill\verb:bar\par}
+\gdef\verb:cnt{\advance\verb:line by1\hbox to3em{\hfil\the\verb:line\quad}}
+\global\let\verb:cset\verb:iso
+
+\gdef\verb:BS{%
+\leavevmode\egroup% end collecting of current box
+\dimen0\wd\verbb:x% get width of current box
+\advance\dimen0by-\w:% one space back
+\wd\verbb:x\dimen0% set box width of current box
+\setbox0=\box\verbb:x% copy box
+\setbox\verbb:x=\hbox\bgroup\box0% restart box
+}
+
+\gdef\verb:HT{%
+\leavevmode\egroup% end collecting of current box
+\dimen0\wd\verbb:x% get width of current box
+\divide\dimen0by8% integer division by tab distance
+\divide\dimen0by\w:% integer division by character width
+\multiply\dimen0by\w:% integer multiplication by character width
+\advance\dimen0by\w:% advance to next position
+\multiply\dimen0by8% integer multiplication by tab distance
+\wd\verbb:x\dimen0% set box width of current box
+\box\verbb:x% type box
+\setbox\verbb:x=\hbox\bgroup% start next box
+}
+
+\gdef\verb:LF{\verb:CR}
+\gdef\verb:VT{\verb:CR\verb:CR}
+\gdef\verb:FF{\verb:CR\verb:CR\verb:CR}%%%{\verb:eol\vskip0ptplus1fil\break}
+
+\gdef\verb:verb{%
+\verb:cset%
+\frenchspacing\tt\baselineskip=\H:\parindent=0pt\parskip=0pt%
+\setbox0=\hbox{X}%
+\global\w:=\wd0%
+\global\h:=\ht0%
+\setbox0=\hbox{g}%
+\global\d:=\dp0%
+\global\x:=\w:\global\divide\x: by9%
+\global\z:=\h:\global\advance\z: by\d:%
+\global\y:=\H:\global\divide\y: by9%
+}
+
+\gdef\verbcharset#1{%
+\ifnum#1=437\let\verb:cset\verb:pc\else%
+\ifnum#1=850\let\verb:cset\verb:ibm\else%
+\ifnum#1=88591\let\verb:cset\verb:iso\else%
+\ifnum#1=4101962\let\verb:cset\verb:test\else%
+\@latexerr{Unknown verbatim character set}\@eha%
+\fi\fi\fi\fi%
+}
+
+\gdef\verbinput#1{%
+\par%
+\verb:toks=\everypar\everypar{}%
+\begingroup%
+\def\verb:CR{\verb:eol}%
+\verb:verb%
+\everypar{\the\verb:toks\everypar{\verb:bol}\the\everypar}%
+\input#1\endgroup%
+\par%
+}
+
+\gdef\verbinputnum#1{%
+\par%
+\verb:toks=\everypar\everypar{}%
+\begingroup%
+\verb:line=0%
+\def\verb:CR{\verb:eol}%
+\verb:verb%
+\everypar{\the\verb:toks\everypar{\verb:cnt\verb:bol}\the\everypar}%
+\input#1\endgroup%
+\par%
+}
+
+\gdef\verbinputbox#1{%
+\par%
+\begingroup%
+\def\verb:CR{\verb:xeol\verb:xbol}%
+\verb:verb%
+\offinterlineskip%
+\noindent\leaders\hrule height1pt\hfill\kern0pt\par%
+\verb:xbol\verb:xeol\verb:xbol\input#1\relax\verb:xeol\nobreak%
+\noindent\leaders\hrule height1pt\hfill\kern0pt\par\nointerlineskip%
+\endgroup%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endgroup
+
diff --git a/macros/latex209/contrib/misc/verbsubfile.sty b/macros/latex209/contrib/misc/verbsubfile.sty
new file mode 100644
index 0000000000..5bd91e8b74
--- /dev/null
+++ b/macros/latex209/contrib/misc/verbsubfile.sty
@@ -0,0 +1,129 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% VRBSUBFILE.STY
+%
+% Copyright (c) 1993 by Norman Walsh, All Rights Reserved.
+% Copy freely as per the GNU Copyleft.
+%
+% Requires:
+% The New Font Selection Scheme (NFSS)
+% VERBATIM.STY by Rainer Schoepf
+% VRBINPUT.STY by Bernd Raichle.
+%
+% VRBSUBFILE allows you to perform verbatim input of subsections of
+% a file. I wrote it in anticipation of documenting some shell scripts
+% and I want to be able to incorporate a few lines of shell script
+% in verbatim mode then write a few lines or paragraphs of documentation
+% then incorporate a few more lines of shell script, etc.
+%
+% Optionally, verbatim lines are numbered.
+%
+% Comments and suggestions always welcome.
+% Norman Walsh <walsh@cs.umass.edu>
+% Graduate Computer Science Department
+% University of Massachusetts
+% Amherst, MA 01003
+%
+% User interface:
+% VerbatimSubfile[#1]#2#3#4
+% Input lines #2 to #3 of file #4. If present, #1 indicates which lines
+% should be numbered. For example, if #1 is 5, lines 5, 10, 15, etc.
+% will be numbered. By default, lines are not numbered at all.
+%
+% VerbatimSubfileFont[#1]#2
+% Use font #2 for verbatim input lines and, if present, use font #1 for
+% line numbers. By default, #2 is \tt and #1 is \rm\tiny.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\fileversion{v1.0}
+\def\filedate{93/03/01}
+\typeout{Style-Option: `vrbsubfile'
+ \fileversion \space <\filedate> (ndw)}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\newcounter{Verb@LineNo} % current line number
+\newcounter{Verb@LineMod} % modulo to print on
+\newcounter{Verb@LineLoop} % loop count in line number (1..Mod)
+\newcounter{Verb@LineStart} % first line to print
+\newcounter{Verb@LineCount} % number of lines to print
+\newcounter{Verb@PrintFlag} % print this line?
+%
+%%%% Default verbatim font and verbatim line number font
+\def\Verb@sfFont{\tt}
+\def\Verb@sfLineNumFont{\rm\tiny}
+%
+%%%% Macros to change fonts
+\def\Verb@setbothfonts[#1]#2{%
+ \def\Verb@sfFont{#2}%
+ \def\Verb@sfLineNumFont{#1}%
+}
+\def\Verb@setverbfont#1{%
+ \def\Verb@sfFont{#1}%
+}
+\def\VerbatimSubfileFont{\@ifnextchar[{\Verb@setbothfonts}{\Verb@setverbfont}}
+%
+%%%% Internal macro that does the work...
+\def\Verb@subfile#1{\begingroup%
+ \def\verbatim@font{\Verb@sfFont\selectfont}
+ \setcounter{Verb@LineNo}{0}%
+ \setcounter{Verb@LineLoop}{0}%
+ \parskip=0pt
+ \def\verbatim@processline{%
+ \addtocounter{Verb@LineNo}{1}%
+ \addtocounter{Verb@LineLoop}{1}%
+ \setcounter{Verb@PrintFlag}{1}%
+ \ifnum\theVerb@LineStart>0% we haven't reached the first line yet...
+ \setcounter{Verb@PrintFlag}{0}%
+ \addtocounter{Verb@LineStart}{-1}%
+ \else%
+ \ifnum\theVerb@LineCount=0% we're out of the "printable" region
+ \setcounter{Verb@PrintFlag}{0}%
+ \else%
+ \addtocounter{Verb@LineCount}{-1}% decrease the line count
+ \fi%
+ \fi%
+ % debugging...
+ %\typeout{Start: \theVerb@LineStart, Count: \theVerb@LineCount,
+ % Print: \theVerb@PrintFlag, Loop: \theVerb@LineLoop,
+ % Mod: \theVerb@LineMod}%
+ \ifnum\theVerb@PrintFlag=1%
+ \leavevmode%
+ \ifnum\theVerb@LineLoop=\theVerb@LineMod%
+ \llap{{\Verb@sfLineNumFont\selectfont \theVerb@LineNo}%
+ \ \hskip\@totalleftmargin}%
+ \setcounter{Verb@LineLoop}{0}%
+ \else%
+ \llap{\phantom{\Verb@sfLineNumFont\selectfont 0}\ %
+ \hskip\@totalleftmargin}%
+ \fi%
+ \the\verbatim@line\par%
+ \else%
+ \ifnum\theVerb@LineLoop=\theVerb@LineMod%
+ \setcounter{Verb@LineLoop}{0}%
+ \fi%
+ \fi}%
+ \verbatiminput{#1}\endgroup}%
+%
+%%%% Macros to request verbatim subfiles
+\def\Verb@subfilePlain#1#2#3{%
+ \setcounter{Verb@LineMod}{-1}
+ \setcounter{Verb@LineStart}{#1}
+ \setcounter{Verb@LineCount}{#2}
+ \addtocounter{Verb@LineCount}{-\theVerb@LineStart}
+ \addtocounter{Verb@LineCount}{1}
+ \addtocounter{Verb@LineStart}{-1}
+ \Verb@subfile{#3}
+}
+
+\def\Verb@subfileNumbered[#1]#2#3#4{%
+ \setcounter{Verb@LineMod}{#1}
+ \setcounter{Verb@LineStart}{#2}
+ \setcounter{Verb@LineCount}{#3}
+ \addtocounter{Verb@LineCount}{-\theVerb@LineStart}
+ \addtocounter{Verb@LineCount}{1}
+ \addtocounter{Verb@LineStart}{-1}
+ \Verb@subfile{#4}
+}
+
+\def\VerbatimSubfile{\@ifnextchar[{\Verb@subfileNumbered}{\Verb@subfilePlain}}
+%
+%%%% EOF
diff --git a/macros/latex209/contrib/misc/vita.sty b/macros/latex209/contrib/misc/vita.sty
new file mode 100644
index 0000000000..69e899c870
--- /dev/null
+++ b/macros/latex209/contrib/misc/vita.sty
@@ -0,0 +1,131 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% kcb@hss.caltech.edu 9-90
+%% Vita style option along the lines of A Handbook for Scholars.
+%% Use with article style, e.g.: \documentstyle[vita,11pt]{article}
+%% SAMPLE USAGE:
+%%
+%% \documentstyle[vita]{article}
+%% \newcategory{Cookbooks and other nonacademic publications}
+%%
+%% \begin{document}
+%% \name{Woodrow Wilson}
+%% \businessadress{The White House\\Washington D.C.}
+%% \homeaddress{Also The White House\\Washington D.C.}
+%%
+%% \begin{vita}
+%% \begin{Degrees} \item B.S. etc. \item Ph.D. ... \end{Degrees}
+%% ...
+%% \begin{Publications} \item My First One
+%% \item My Last One
+%% \end{Publications}
+%% ...
+%% \begin{References}
+%% My Advisor \\ Big 10 U \and My Mother \\ Home
+%% \end{References}
+%%
+%% \end{vita}
+%% \end{document}
+%%%%%%%%%%%%%%%%%
+%%
+%% Predefined categories include (from a Handbook for Scholars, in order):
+%% Degrees, Additional education, Experience, Honors, Grants,
+%% Memberships, Personal information, References, Publications
+%% and (not from a Handbook for Scholars):
+%% Books, Articles, Reviews, Invited seminars, Professional activities
+%%
+%% Entries in each category are preceded by \item EXCEPT for
+%% references. References are inputted in a format similar to the
+%% \author command. In particular, multiple references are separated
+%% by the \and command.
+%%
+%% The \newcategory command allows you to create new categories. It
+%% takes a single argument, namely the heading for the category.
+%% Categories produced with the \newcategory command should have their
+%% entries preceded by \item.
+%%
+%% Note the use of uppercase letters in the arguments of \begin and
+%% \end for categories. Also note the \begin{vita} and \end{vita}
+%% commands which produce the heading, headers, date, etc.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Command to define new categories:
+\newcommand{\newcategory}[1]{\newenvironment{#1}
+ {\sectionheading{#1}\begin{description}}{\end{description}\par}}
+\newcommand{\sectionheading}[1]{\medskip\pagebreak[2]\par
+ {\small\bf #1}\nopagebreak}
+%%
+%% Category headings defined already: (in order of Handbook for Scholars)
+\newcategory{Degrees}
+\newcategory{Additional education}
+\newcategory{Experience}
+\newcategory{Honors}
+\newcategory{Grants}
+\newcategory{Memberships}
+\newcategory{Personal information}
+\newcategory{Publications}
+%
+% Other predefined categories not from Handbook for Scholars:
+\newcategory{Work in progress}
+\newcategory{Books}
+\newcategory{Articles}
+\newcategory{Reviews}
+\newcategory{Invited seminars}
+\newcategory{Professional activities}
+%%
+%%
+%% New commands
+\def\@name{}
+\def\@homeaddress{}
+\def\@businessaddress{Division of the Humanities and Social Sciences\\
+California Institute of Technology\\Pasadena, CA 91125}
+%
+\newcommand{\name}[1]{\renewcommand{\@name}{#1}}
+\newcommand{\businessaddress}[1]{\renewcommand{\@businessaddress}{#1}}
+\newcommand{\homeaddress}[1]{\renewcommand{\@homeaddress}{#1}}
+%
+% this formats the above information:
+\newenvironment{vita}{\thispagestyle{empty}
+\ifx\@name\@empty\@warning{Missing name command}\fi
+\markright{\protect\small\rm\@name}
+\vspace*{-\headsep}\vspace*{-\headheight}
+\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll@{}}
+\begin{tabular}[t]{@{}l@{}}
+\@name\\
+\@businessaddress
+\end{tabular}
+&
+\ifx\@homeaddress\@empty\@warning{Missing homeaddress}\else
+\begin{tabular}[t]{@{}l@{}}
+{\small home:}\\
+\@homeaddress
+\end{tabular}
+\fi
+\end{tabular*}
+\bigskip}{\par\nopagebreak\vfill\hfill \today}
+%
+%
+\newenvironment{References}{\sectionheading{References}\begin{description}
+ \item[]
+ \begin{tabular}[t]{l}}{\end{tabular}\end{description}\par}
+\renewcommand{\and}{\end{tabular}\item[]\begin{tabular}[t]{l}}
+%
+%
+\renewcommand{\today}{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi,
+ \space\number\year}
+%
+%
+%% Formatting parameters
+\raggedright\sloppy
+\pagestyle{myheadings}
+%
+\parindent 0pt
+\let\@listi\@listii
+\let\@listii\@listiii
+\@listi
+%
+\nofiles
+%%
+%%
diff --git a/macros/latex209/contrib/misc/voorbeeld.sty b/macros/latex209/contrib/misc/voorbeeld.sty
new file mode 100644
index 0000000000..76db699144
--- /dev/null
+++ b/macros/latex209/contrib/misc/voorbeeld.sty
@@ -0,0 +1,143 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Werenfried Spit",
+%%% version = "1.0.1",
+%%% date = "25 October 1993",
+%%% time = "17:00",
+%%% filename = "voorbeeld.sty",
+%%% address = "Departament de Fisica Teorica
+%%% Universitat de Valencia
+%%% c/ Moliner, 50
+%%% E-46100 Burjassot, Valencia
+%%% Espanya",
+%%% telephone = "+34-6-386 4550",
+%%% checksum = "03456 143 633 5962",
+%%% email = "spit@vm.ci.uv.es
+%%% spit@ific.uv.es",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, linguistic examples",
+%%% supported = "yes",
+%%% abstract = "In linguistics people use examples that have the
+%%% lay out of items in a list, but the logical
+%%% structure of mathematical equations: they have
+%%% numbers that are reset only at the beginnings of
+%%% sections or chapters and that can be referenced to.
+%%% Voorbeeld.sty (voorbeeld is dutch for example)
+%%% defines the environment `voorbeelden' for this
+%%% purpose.
+%%% Documentation at the end of this file.",
+%%% docstring = "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.",
+%%% }
+%%% ====================================================================
+%%%%%%%%%%% voorbeeldomgeving %%%%%%%%
+%% (C) Werenfried Spit 08-01-90
+%%
+\newenvironment{voorbeelden}{\thevoorbeelden}{\endthevoorbeelden}
+\newcount\@vbdepth \@vbdepth = 0
+\@definecounter{vbcounti}
+\@definecounter{vbcountii}
+\@definecounter{vbcountiii}
+\@definecounter{vbcountiv}
+\@addtoreset{vbcounti}{section}
+
+
+\def\thevoorbeelden{\ifnum \@vbdepth >3 \@toodeep\else
+ \advance\@vbdepth \@ne
+ \edef\@vbctr{vbcount\romannumeral\the\@vbdepth}\list
+ {\csname label\@vbctr\endcsname}{\ifnum \@vbdepth >1 \usecounter
+ {\@vbctr}\else
+ \@nmbrlisttrue\def
+ \@listctr{vbcounti}\fi\def\makelabel##1{\hss\llap{##1}}}\fi}
+
+\let\endthevoorbeelden =\endlist
+
+\def\labelvbcounti{\bf\arabic{vbcounti}}
+\def\thevbcounti{\arabic{vbcounti}}
+\def\p@vbcountii{\thevbcounti}
+\def\labelvbcountii{\bf\alph{vbcountii}}
+\def\thevbcountii{\alph{vbcountii}}
+
+\def\labelvbcountiii{\roman{vbcountiii}}
+\def\thevbcountiii{\roman{vbcountiii}}
+\def\p@vbcountiii{\thevbcounti(\thevbcountii)}
+\def\labelvbcountiv{\alph{vbcountiv}}
+\def\thevbcountiv{\alph{vbcountiv}}
+\def\p@vbcountiv{\p@vbcountiii\thevbcountiii}
+
+
+\endinput
+%%%%%%% documentation and examples of usage %%%%%%%
+\documentstyle[voorbeeld,a4]{article}
+\begin{document}
+\begin{center}
+{\large\bf Voorbeeld.sty} \\[0.5\baselineskip]
+{\it Werenfried Spit} \\[\baselineskip]
+\end{center}
+
+In linguistical papers one often uses numbered examples. These examples
+look like lists of numbered items, but logically they behave more like
+displayed equations. It should be possible to generate automatic
+references to specific examples, and example counters are reset only
+at the beginning of a new chapter or section.
+This style defines an environment \verb|voorbeelden| that makes typesetting
+such examples easier.
+
+\paragraph{Usage}
+The usage is analogous to that \verb|enumerate|, only now it
+is possible to add labels:
+\begin{quote}
+\begin{voorbeelden}
+\item \begin{voorbeelden} \item Volgens Jan was-ie ziek. \label{Jan}
+ \item * Volgens Jan hij was ziek. \label{Jan*}
+ \end{voorbeelden}
+\end{voorbeelden}
+The starred example (\ref{Jan*}) is an ungrammatical sentence,
+just like (\ref{Eline}):
+\begin{voorbeelden}
+\item Osewoudt ontkende, dat hij Eline had zien lopen. \label{Osewoudt}
+\item * In Elines bed ze bracht heel wat zoete uurtjes door. \label{Eline}
+\end{voorbeelden}
+\end{quote}
+Which was produced by
+\begin{verbatim}
+\begin{voorbeelden}
+\item \begin{voorbeelden} \item Volgens Jan was-ie ziek. \label{Jan}
+ \item * Volgens Jan hij was ziek. \label{Jan*}
+ \end{voorbeelden}
+\end{voorbeelden}
+The starred example (\ref{Jan*}) is an ungrammatical sentence,
+just like (\ref{Eline}):
+\begin{voorbeelden}
+\item Osewoudt ontkende, dat hij Eline had zien lopen. \label{Osewoudt}
+\item * In Elines bed ze bracht heel wat zoete uurtjes door. \label{Eline}
+\end{voorbeelden}
+\end{verbatim}
+The counter for the top level numbering is reset every section, the
+counters for sublevel numberings are reset every item (like an
+\verb|enumerate|). You can have three sublevels nested.
+
+\paragraph{Tuning}
+The counter for the top level numbering is reset every section.
+Change in the style file the line
+\begin{verbatim}
+ \@addtoreset{vbcounti}{section}
+\end{verbatim}
+if you want the resetting to take place at another level.
+
+\paragraph{The name of the game}
+I first wrote this little style for use in a dutch linguistical
+thesis. `Voorbeeld' is the dutch word for example, so it seemed
+most logical to use that as a name. When it was distributed
+wider I chose to keep the name, since there already exists a style
+\verb|example.sty| (which defines an environment \verb|example|
+to show examples of \LaTeX\ usage). Feel free to change the
+name of the environment for your own {\em private} use, (as long
+as you don't also use \verb|example.sty| this should do no harm)
+but don't pass on a changed file.
+\end{document}
+%% end of file %%
diff --git a/macros/latex209/contrib/misc/voorbeelden.sty b/macros/latex209/contrib/misc/voorbeelden.sty
new file mode 100644
index 0000000000..8b59082b12
--- /dev/null
+++ b/macros/latex209/contrib/misc/voorbeelden.sty
@@ -0,0 +1,79 @@
+%>I have been using LaTeX for few months and I have problems with
+%>writing linguistics examples. I would like them to be numbered,
+%>labelled, and displayed as follow:
+
+%>(1) a. Bla, bla, bla...
+%> b. Bla, bla, bla...
+%> c. Bla, bla, bla...
+
+%I wrote the following for someone wanting the same sort of thing.
+%It is called `voorbeelden' (Dutch for examples), but the name
+%could be changed. Use it as
+
+%\begin{voorbeelden}
+%\item \begin{voorbeelden} \item Bla, bla, bla ...
+% \item Bla, bla, bla ...
+% \item Bla, bla, bla ...
+% \end{voorbeelden}
+%\item More bla bla
+%\end{voorbeelden}
+
+%--------------------------------------------------------------------
+%Werenfried Spit
+% R.J. v.d. Graafflaboratorium +31-(0)30-53-2330
+% Postbus 80.000
+% 3508 TA Utrecht spit@fys.ruu.nl
+% The Netherlands spit@hutruu51.bitnet
+%--------------------------------------------------------------------
+
+
+
+
+
+%%%%%%%%%cut here %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%% voorbeeldomgeving %%%%%%%%
+%% (C) Werenfried Spit 08-01-90
+%%
+
+
+
+
+\newenvironment{voorbeelden}{\thevoorbeelden}{\endthevoorbeelden}
+\newcount\@vbdepth \@vbdepth = 0
+\@definecounter{vbcounti}
+\@definecounter{vbcountii}
+\@definecounter{vbcountiii}
+\@definecounter{vbcountiv}
+\@addtoreset{vbcounti}{section}
+
+
+\def\thevoorbeelden{\ifnum \@vbdepth >3 \@toodeep\else
+ \advance\@vbdepth \@ne
+ \edef\@vbctr{vbcount\romannumeral\the\@vbdepth}\list
+ {\csname label\@vbctr\endcsname}{\ifnum \@vbdepth >1 \usecounter
+ {\@vbctr}\else
+ \@nmbrlisttrue\def
+ \@listctr{vbcounti}\fi\def\makelabel##1{\hss\llap{##1}}}\fi}
+
+\let\endthevoorbeelden =\endlist
+
+\def\labelvbcounti{\bf\arabic{vbcounti}}
+\def\thevbcounti{\arabic{vbcounti}}
+\def\p@vbcountii{\thevbcounti}
+\def\labelvbcountii{\bf\alph{vbcountii}}
+\def\thevbcountii{\alph{vbcountii}}
+
+\def\labelvbcountiii{\roman{vbcountiii}}
+\def\thevbcountiii{\roman{vbcountiii}}
+\def\p@vbcountiii{\thevbcounti(\thevbcountii)}
+\def\labelvbcountiv{\alph{vbcountiv}}
+\def\thevbcountiv{\alph{vbcountiv}}
+\def\p@vbcountiv{\p@vbcountiii\thevbcountiii}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%cut here %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/macros/latex209/contrib/misc/warn.sty b/macros/latex209/contrib/misc/warn.sty
new file mode 100644
index 0000000000..54be168431
--- /dev/null
+++ b/macros/latex209/contrib/misc/warn.sty
@@ -0,0 +1,18 @@
+% Written by Kresten Krab Thorup <krab@iesd.auc.dk>
+
+%Here's a little hack, that allow you to get the linenumbers of LaTeX's
+%warning messages.
+
+%The output is like:
+%
+% LaTeX Warning [l.86]: Citation `diggle' on page 91 undefined.
+
+%where [l.86] refers to line 86 in the current file.
+%
+%You should put the following in a style file:
+
+%----------------------------------------------------------------------
+% warn.sty
+%
+\def\@warning#1{\typeout{LaTeX Warning [l.\the\inputlineno]: #1.}}
+%----------------------------------------------------------------------
diff --git a/macros/latex209/contrib/misc/wasy.sty b/macros/latex209/contrib/misc/wasy.sty
new file mode 100644
index 0000000000..df3e44fff9
--- /dev/null
+++ b/macros/latex209/contrib/misc/wasy.sty
@@ -0,0 +1,244 @@
+%% wasy.sty v 1.1 von J"org Knappen 28. 11. 1992
+%% (c) J"org Knappen 1992 knappen@vkpmzd.kph.uni-mainz.de
+%% Copying conditions: GNU licence v1.0
+%% The WASY fonts are loaded and a lot of control sequences are
+%% defined
+%% \wasy acts as a font switch, switching its argument to wasy
+
+\@ifundefined{extract@font}
+ {\errmessage{The style option `wasy' does not make sense if you
+ do not use a format with the new font selection scheme.}
+ \endinput}
+ {}
+
+ \def\RIfM@{\relax\protect\ifmmode}
+ \let\boxz@\fi % \if \fi matching hack
+ \def\boxz@{\box\z@}
+ \def\setboxz@h{\setbox\z@\hbox}
+ \def\wdz@{\wd\z@}
+ \def\noaccents@{\def\accentclass@{0}}
+ \def\Invalid@@{Invalid use of \string}
+ \def\nonmatherr@#1{\err@
+ {\string#1\space allowed only in math mode}\@ehd}
+ \def\err@{\@latexerr}
+
+\newmathalphabet\wasy@
+\addtoversion{normal}\wasy@{wasy}{m}{n}
+\addtoversion{bold}\wasy@{wasy}{b}{n}
+\new@mathgroup\wasy@group
+\define@mathgroup\mv@normal\wasy@group{wasy}{m}{n}
+\define@mathgroup\mv@bold\wasy@group{wasy}{b}{n}
+% Precautions for national styles changing the \catcode of "
+\chardef\dq@code=\catcode`\"
+\catcode`\"=12
+\edef\@wasy{\hexnumber@\wasy@group}
+\def\pwasy{\RIfM@\expandafter\wasy@\else
+ \expandafter\nonmatherr@\expandafter\wasy\fi}
+\def\wasy{\protect\pwasy}
+\new@fontshape{wasy}{m}{n}{%
+ <5>wasy5%
+ <6>wasy6%
+ <7>wasy7%
+ <8>wasy8%
+ <9>wasy9%
+ <10>wasy10%
+ <11>wasy11% This one was computed with the help of the Sauter tools
+% <11>wasy10 at10.95pt% alternative, change the position of the % sign to
+% choose this
+ <12>wasy12%
+ <14>wasy14% Ditto, design_size:=14.4;
+% <14>wasy12 at14.4pt% alternative
+ <17>wasy17%
+% <20>wasy17 at19.71pt%
+ <20>wasy20%
+% <25>wasy17 at24.48pt%
+ <25>wasy25%
+ }{}
+\new@fontshape{wasy}{b}{n}{%
+ <5>wasyb5%
+ <6>wasyb6%
+ <7>wasyb7%
+ <8>wasyb8%
+ <9>wasyb9%
+ <10>wasyb10%
+ <11>wasyb11% This one was computed with the help of the Sauter tools
+% <11>wasyb10 at10.95pt% alternative, change the position of the % sign to
+% choose this
+ <12>wasyb12%
+ <14>wasyb14% Ditto, design_size:=14.4;
+% <14>wasyb12 at14.4pt% alternative
+ <17>wasyb17%
+% <20>wasyb17 at19.71pt%
+ <20>wasyb20%
+% <25>wasyb17 at24.48pt%
+ <25>wasyb25%
+ }{}
+\extra@def{wasy}{}{\noaccents@}
+% The following was extracted from:
+% this is wasyfont.tex version 2.01--92/10
+% Overall changes: Introduced \mathhexbox
+% Changes made due to the nature of the wasy font as a math font
+% Introduced $-signs etc.
+%%%%%% special macro
+\def\overstrike#1#2{{\setbox0\hbox{$#2$}\hbox to \wd0{\hss
+ $#1$\hss}\kern-\wd0\box0}}
+%%%%%% special symbols
+\edef\male{\mathhexbox\@wasy1A}
+\edef\female{\mathhexbox\@wasy19}
+\edef\currency{\mathhexbox\@wasy1B}
+\edef\phone{\mathhexbox\@wasy07}
+\edef\recorder{\mathhexbox\@wasy06}
+\edef\clock{\mathhexbox\@wasy1C}
+\edef\lightning{\mathhexbox\@wasy12}
+\edef\pointer{\mathhexbox\@wasy09}
+\edef\RIGHTarrow{\mathhexbox\@wasy11}
+\edef\LEFTarrow{\mathhexbox\@wasy10}
+\edef\UParrow{\mathhexbox\@wasy4B}
+\edef\DOWNarrow{\mathhexbox\@wasy4C}
+\def\AC{\hbox{\kern0.5pt$\wasy{\photonchar}$\kern0.5pt}}
+\def\HF{\lower0.9pt\hbox to 0pt{\kern0.5pt$\wasy{\photonchar}$\hss}%
+ \raise0.9pt\hbox{\kern0.5pt$\wasy{\photonchar}$\kern0.5pt}}
+
+\edef\VHF{\mathhexbox\@wasy40}
+\edef\Box{\mathhexbox\@wasy32}\let\Square\Box
+\edef\XBox{\mathhexbox\@wasy34}
+\edef\Diamond{\mathhexbox\@wasy33}
+\edef\hexagon{\mathhexbox\@wasy37}
+\edef\pentagon{\mathhexbox\@wasy44}
+\edef\octagon{\mathhexbox\@wasy38}
+\edef\varhexagon{\mathhexbox\@wasy39}
+\edef\hexstar{\mathhexbox\@wasy41}
+\edef\varhexstar{\mathhexbox\@wasy42}
+\edef\davidsstar{\mathhexbox\@wasy43}
+\edef\diameter{\mathhexbox\@wasy1F}
+\edef\invdiameter{\mathhexbox\@wasy15}
+\edef\varangle{\mathhexbox\@wasy1E}
+\edef\lozenge{\mathhexbox\@wasy35}
+\edef\kreuz{\mathhexbox\@wasy36}
+\edef\smiley{\mathhexbox\@wasy2C}
+\edef\frownie{\mathhexbox\@wasy2F}
+\edef\blacksmiley{\mathhexbox\@wasy2D}
+\edef\sun{\mathhexbox\@wasy2E}
+\edef\checked{\mathhexbox\@wasy08}
+\edef\bell{\mathhexbox\@wasy0A}
+\edef\eighthnote{\mathhexbox\@wasy0B}
+\edef\quarternote{\mathhexbox\@wasy0C}
+\edef\halfnote{\mathhexbox\@wasy0D}
+\edef\fullnote{\mathhexbox\@wasy0E}
+\edef\twonotes{\mathhexbox\@wasy0F}
+\edef\brokenvert{\mathhexbox\@wasy7C}
+\edef\therefore{\mathhexbox\@wasy05}
+\edef\ataribox{\mathhexbox\@wasy6D}
+\edef\Circle{\mathhexbox\@wasy23}
+\edef\CIRCLE{\mathhexbox\@wasy20}
+\edef\Leftcircle{\mathhexbox\@wasy49}
+\edef\LEFTCIRCLE{\mathhexbox\@wasy47}
+\edef\Rightcircle{\mathhexbox\@wasy4A}
+\edef\RIGHTCIRCLE{\mathhexbox\@wasy48}
+\edef\LEFTcircle{\hbox to 0pt{\LEFTCIRCLE\hss}\hbox{\Circle}}
+\edef\RIGHTcircle{\hbox to 0pt{\RIGHTCIRCLE\hss}\hbox{\Circle}}
+%%%%%% astronomy
+
+\edef\vernal{\mathhexbox\@wasy17}
+\edef\ascnode{\mathhexbox\@wasy13}
+\edef\descnode{\mathhexbox\@wasy14}
+\edef\fullmoon{\mathhexbox\@wasy23}
+\edef\newmoon{\mathhexbox\@wasy20}
+\edef\leftmoon{\mathhexbox\@wasy24}
+\edef\rightmoon{\mathhexbox\@wasy25}
+\edef\astrosun{\hbox{$\odot$}}
+\edef\mercury{\mathhexbox\@wasy27}
+\edef\venus{\raise0.2ex\hbox{\female}}
+\edef\earth{\lower0.3ex\hbox{\mathhexbox\@wasy26}}
+\edef\mars{\lower0.2ex\hbox{\male}}
+\edef\jupiter{\mathhexbox\@wasy58}
+\edef\saturn{\mathhexbox\@wasy59}
+\edef\uranus{\mathhexbox\@wasy5A}
+\edef\neptune{\mathhexbox\@wasy5B}
+\edef\pluto{\mathhexbox\@wasy5C}
+\edef\conjunction{\mathhexbox\@wasy56}
+\edef\opposition{\mathhexbox\@wasy57}
+%%%%%% the zodiac
+\edef\aries{\mathhexbox\@wasy17}
+\edef\taurus{\mathhexbox\@wasy5D}
+\edef\gemini{\mathhexbox\@wasy5E}
+\edef\cancer{\mathhexbox\@wasy5F}
+\edef\leo{\mathhexbox\@wasy13}
+\edef\virgo{\mathhexbox\@wasy60}
+\edef\libra{\mathhexbox\@wasy61}
+\edef\scorpio{\mathhexbox\@wasy62}
+\edef\sagittarius{\mathhexbox\@wasy63}
+\edef\capricornus{\mathhexbox\@wasy64}
+\edef\aquarius{\mathhexbox\@wasy65}
+\edef\pisces{\mathhexbox\@wasy66}
+%%%%%% APL characters
+\edef\APLstar{\mathhexbox\@wasy45}
+\edef\APLlog{\mathhexbox\@wasy16}
+\edef\APLbox{\mathhexbox\@wasy7E}
+\edef\APLup{\mathhexbox\@wasy00}
+\edef\APLdown{\mathhexbox\@wasy46}
+\edef\APLinput{\mathhexbox\@wasy7D}
+\edef\APLcomment{\mathhexbox\@wasy7F}
+\edef\APLinv{\hbox to 0pt{$\div$\hss}\APLbox}
+\edef\APLuparrowbox{\mathhexbox\@wasy6E}
+\edef\APLdownarrowbox{\mathhexbox\@wasy6F}
+\edef\APLleftarrowbox{\mathhexbox\@wasy70}
+\def\APLrightarrowbox{\mathhexbox\@wasy71}
+\def\notbackslash{\overstrike{\backslash}{-}}
+\def\notslash{\overstrike{/}{-}}
+\def\APLnot#1{\overstrike{\sim}{#1}}
+\def\APLcirc#1{\overstrike{\circ}{#1}}
+\def\APLvert#1{\overstrike{\vert}{#1}}
+\def\APLminus{\raise0.7ex\hbox{$-$}}
+%%%%%% diagrams
+\edef\photonchar{\mathhexbox\@wasy3A}
+\def\photon{\hbox{$\wasy{\photonchar\photonchar\photonchar\photonchar}$}}
+\def\gluon{\hbox{$\wasy{\char"51\char"50\char"50\char"50%
+ \char"50\char"50\char"50\char"52}$}}
+%%%%%% math characters
+\edef\Bowtie{\mathhexbox\@wasy31}
+\edef\leftturn{\mathhexbox\@wasy22}
+\edef\rightturn{\mathhexbox\@wasy21}
+%%%%%% special characters
+\edef\cent{\mathhexbox\@wasy67}
+\edef\permil{\mathhexbox\@wasy68}
+\edef\agemO{\mathhexbox\@wasy30}
+\edef\thorn{\mathhexbox\@wasy69}
+\edef\Thorn{\mathhexbox\@wasy6A}
+\edef\dh{\mathhexbox\@wasy6B}
+\def\Dh{\leavevmode{\setbox0\hbox{D}%
+ \hbox to\wd0{\kern 0.04em\char32\hss D}}}
+\edef\openo{\mathhexbox\@wasy6C}
+\edef\inve{\mathhexbox\@wasy55}
+%%%%%% math operators as mathchars
+\def\invmathchardef#1#2{\mathchardef#2"#1}
+\invmathchardef{3\@wasy01}{\lhd}
+\invmathchardef{3\@wasy03}{\rhd}
+\invmathchardef{3\@wasy10}{\LHD}
+\invmathchardef{3\@wasy11}{\RHD}
+\invmathchardef{3\@wasy02}{\unlhd}
+\invmathchardef{3\@wasy04}{\unrhd}
+\invmathchardef{3\@wasy3C}{\sqsubset}
+\invmathchardef{3\@wasy3D}{\sqsupset}
+\invmathchardef{3\@wasy3E}{\apprle}
+\invmathchardef{3\@wasy3F}{\apprge}
+\invmathchardef{3\@wasy1D}{\varpropto}
+\invmathchardef{0\@wasy18}{\invneg}
+\invmathchardef{3\@wasy3B}{\leadsto}
+\invmathchardef{2\@wasy23}{\ocircle}
+\invmathchardef{3\@wasy16}{\logof}
+\invmathchardef{1\@wasy72}{\varint}
+\invmathchardef{1\@wasy73}{\iint}
+\invmathchardef{1\@wasy74}{\iiint}
+\invmathchardef{1\@wasy75}{\varoint}
+\invmathchardef{1\@wasy76}{\oiint}
+%
+%%%%%% new definitions
+%
+\def\newpropto{\let\propto\varpropto}
+\def\newint{\let\int\varint \let\oint\varoint} % default limits
+
+% Save LaTeX \mho
+\let\mho\amegO
+\catcode`\"=\dq@code
+\endinput
diff --git a/macros/latex209/contrib/misc/windlet.doc b/macros/latex209/contrib/misc/windlet.doc
new file mode 100644
index 0000000000..dc77cd1ddd
--- /dev/null
+++ b/macros/latex209/contrib/misc/windlet.doc
@@ -0,0 +1,184 @@
+\iffalse
+% This is windlet.doc. Print it using doc.sty and an appropriate
+% driver file.
+% Copyright D.Love, SERC Daresbury Laboratory, 1990
+% Distributable and usuable under conditions of the GNU copyleft, but
+% please mark any changes and list them here.
+\fi
+\def\filedate{26/7/90}
+\def\fileversion{1.1}
+% \title{A {\sf letter} Sub-style for Use with Window
+% Envelopes\footnote{File version \fileversion, dated \filedate.}}
+% \author{David Love\\[1ex]{\it SERC Daresbury
+% Laboratory, Warrington WA4 4AD, UK}\\[1ex]
+% ({\tt d.love@daresbury.ac.uk})}
+% \date{}
+%
+% \maketitle
+%
+% \begin{abstract}
+% \noindent This is a sub-style for use with {\sf letter} that can be
+% used with certain types of envelope with windows so that the address
+% will show through the window.
+% \end{abstract}
+%
+% \noindent
+% It is convenient, rather than use a sticky address label for a one-
+% or few-off letter, to use envelopes with transparent windows. We
+% then need to make sure that the {\sf letter} style is suitably
+% altered so print the \verb+\toaddress+ in the correct place for this
+% window. Of course, the values of the positioning will depend on the
+% stationery you use. This version is intended for use with A4 paper
+% i.e., using {\tt a4.sty},
+% and $8.62''\times3.34''$ envelopes as used in my establishment, at
+% least. This will probably be
+% suitable also for other European countries. If not, the dimensions
+% should be readily changeable for your stationery, according to the
+% following diagrams.
+% \par \medskip
+% \setlength{\unitlength}{6mm}
+% \begin{picture}(8.25,6.69)(0,5)
+% \put(0,5){\line(0,1){6.69}} \put(0,11.69){\line(1,0){8.25}}
+% \put(8.25,11.69){\line(0,-1){6.69}}
+% \put(.85,10.2){\vector(-1,0){.85}}\put(0,10.2){\vector(1,0){.85}}
+% \put(.2,10.5){\tt\small $\backslash$lettersideskip}
+% \put(.85,8.4){\framebox(3.35,1.5){\parbox{3\unitlength}{\raggedright
+% \tt\small $\backslash$toaddress region}}}
+% \put(4.0,9.9){\vector(0,1){1.79}}\put(4.0,11.69){\vector(0,-1){1.79}}
+% \put(4.0,10.7){\tt\small ~$\backslash$lettertopskip}
+% \put(.5,7.75){\vector(-1,0){.5}} \put(.5,7.75){~first fold}
+% \put(4.0,7.75){\vector(0,1){.65}}\put(4.0,8.4){\vector(0,-1){.65}}
+% \put(4.0,7.75){\tt\small ~$\backslash$letterfoldskip}
+% \put(4.4,8.4){\vector(0,1){1.5}} \put(4.4,9.9){\vector(0,-1){1.5}}
+% \put(4.4,9){~\tt\small $\backslash$letteraddressheight}
+% \put(3,6){{\large letter}}
+% \end{picture}
+% \hfill
+% \begin{picture}(8.6,4.35)(0,0)
+% \put(0,0){\framebox(8.6,4.35){}}
+% \put(.65,.85){\framebox(3.65,1.55){window}}
+% \put(4.5,.85){\vector(0,1){1.55}} \put(4.5,2.4){\vector(0,-1){1.55}}
+% \put(4.5,1.3){~$1.55''$}
+% \put(.65,.9){\vector(-1,0){.65}}\put(0,.9){\vector(1,0){.65}}
+% \put(.3,.2){$0.65''$}
+% \put(.65,4.35){\vector(0,-1){1.9}}\put(.65,2.45){\vector(0,1){1.9}}
+% \put(.65,3.2){~$1.9''$}
+% \put(5,3.5){{\large envelope}}
+% \end{picture}
+% \par\medskip
+% Here are the default values of the lengths,
+% \DescribeMacro{\lettertopskip}\DescribeMacro{\lettersidepskip}%
+% \DescribeMacro{\letteraddressheight}\DescribeMacro{\letterfoldskip}%
+% appropriate for my stationery.
+% \begin{macrocode}
+\newlength{\lettertopskip} \setlength{\lettertopskip}{1.8in}
+\newlength{\lettersideskip} \setlength{\lettersideskip}{0.8in}
+\newlength{\letteraddressheight}
+\setlength{\letteraddressheight}{1.5in}
+\newlength{\letterfoldskip} \setlength{\letterfoldskip}{0.65in}
+% \end{macrocode}
+%
+% We only need major surgery on \verb+\opening+,\DescribeMacro{\opening}
+% which positions the
+% addresses. The difficulty is positioning boxes in the right
+% absolute place on the paper.
+% \begin{macrocode}
+\def\opening#1{
+% \end{macrocode}
+% The {\sf firstpage} style is defined below.
+% \begin{macrocode}
+ \thispagestyle{firstpage}
+% \end{macrocode}
+% To get to the bottom of the address area, we have to move down by
+% \verb+\lettertopskip+ from the top of the paper. However, we have
+% to take into account the conventional $1''$ border,
+% \verb+\topmargin+, \verb+\headheight+, \verb+\headsep+ and
+% \verb+\baselineskip+ in doing so.
+% \begin{macrocode}
+ \vspace*{\lettertopskip}
+ \vspace*{-\topmargin} \vspace*{-\headheight} \vspace*{-\headsep}
+ \vspace*{-1in} \vspace*{-\baselineskip}
+% \end{macrocode}
+% Now that we're in the right place vertically, we're ready to typeset
+% the addressee details.
+% To get to the left-hand side of the address area, we have to
+% subtract the $1''$ and \verb+\oddsidemargin+ from
+% \verb+lettersideskip+, which will probably mean the address sticks
+% into the margin. The addressee's and sender's addresses go in boxes
+% at the left and right of the page, aligned at their top. This is
+% not the same as in the original, where the sender's address pushed
+% the addressee'd down the page. This all goes into an \verb+\hbox+
+% positioned appropriately relative to the left margin. Since the
+% window is bigger than the address area, we don't need to add extra
+% space around it.
+% \begin{macrocode}
+ \hbox{%
+ \hspace*{\lettersideskip}\hspace*{-\oddsidemargin}\hspace*{-1in}%
+% \end{macrocode}
+% The first thing we do, though, is to put a mark at the left to tell
+% us where to fold the paper. This may get lost, depending on how
+% close to the edge of the paper the printer can go, so might need
+% adjusting for your circumstances. The size of the rule is rather
+% arbitrary.
+% \begin{macrocode}
+ \vbox to 0pt{\vspace*{\letterfoldskip}\hbox to 0pt{%
+ \hspace*{-\lettersideskip}%
+ \hspace*{.2in}% to get to imageable area
+ \rule{.2in}{.2pt}\hss}\vss
+ }%
+% \end{macrocode}
+% Unlike the original, we check for a possible
+% empty argument to \verb+\begin{letter}+, which would cause an
+% error (although there's not much point in using this sub-style if
+% you don't have the address in there!). We add \verb+\vfill+ to
+% centre the address in the window vertically. (It had better not be
+% too long.)
+% \begin{macrocode}
+ \ifx\@empty\toaddress
+ \vbox to \letteraddressheight {\vfill \raggedright \toname \vfill}
+ \else
+ \vbox to \letteraddressheight
+ {\vfill \raggedright \toname \\ \toaddress \vfill}
+ \fi
+% \end{macrocode}
+% The sender's address is set the same way as in the original, but in
+% a different place.
+% \begin{macrocode}
+ \ifx\@empty\fromaddress
+ \relax
+ \else
+ \vbox to \letteraddressheight {
+ \vfill
+ \begin{tabular}[b]{l}
+ \ignorespaces\fromaddress
+ \end{tabular}
+ \vfill
+ }
+ \fi
+ } % (hbox)
+% \end{macrocode}
+% The date always comes out in the same place.
+% \begin{macrocode}
+ \par \smallskip
+ {\raggedleft \@date \par}
+ \bigskip #1 \par \nobreak
+} % (\def\opening)
+% \end{macrocode}
+% The original value of \verb+\@texttop+\DescribeMacro{\@texttop}
+% included \verb+fil+ to centre
+% a short letter on the page; we don't want this.
+% \begin{macrocode}
+\let\@texttop=\relax
+% \end{macrocode}
+%
+% The \verb+\pagestyle+\DescribeEnv{firstpage}
+% for the first page may be chosen appropriately
+% for your institution. This is done by defining \verb+\ps@headings+
+% appropriately. {\tt letter.sty} does this to put the telephone
+% number in the right place for the SRI letterhead, which isn't much
+% use for most of us. In the absence of a better idea, we'll make the
+% style {\sf empty}. If you want special action for this, you'll
+% have to change this definition or include it in a later sub-style.
+% \begin{macrocode}
+\let\ps@firstpage=\ps@empty
+% \end{macrocode}
diff --git a/macros/latex209/contrib/misc/xrefwarn.sty b/macros/latex209/contrib/misc/xrefwarn.sty
new file mode 100644
index 0000000000..37df6b5df3
--- /dev/null
+++ b/macros/latex209/contrib/misc/xrefwarn.sty
@@ -0,0 +1,50 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Nico Verwer",
+%%% version = "1.2",
+%%% date = "24 February 1992",
+%%% filename = "xrefwarn.sty",
+%%% address = "Dept. of Computer Science
+%%% Rijksuniversiteit te Utrecht
+%%% P.O. box 80.089
+%%% 3508 TB Utrecht
+%%% the Netherlands",
+%%% telephone = "+31 30 533921",
+%%% FAX = "+31 30 513791",
+%%% email = "nico@cs.ruu.nl (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, x-ref warnings",
+%%% supported = "yes",
+%%% docstring = "Normally, LaTeX issues a warning every
+%%% time it encounters an undefined cross-
+%%% reference or citation. Thus you will get
+%%% many identical warnings. The effect of
+%%% this style file is that only one warning
+%%% is issued for every cross-reference or
+%%% citation.",
+%%% }
+%%% ====================================================================
+
+\ifx\xrefwarnLoaded\undefined\else\endinput\fi
+\let\xrefwarnLoaded\empty
+
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@citea\def\@citea{,\penalty\@m\ }\@ifundefined
+ {b@\@citeb}{{\bf #2}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}
+ \global\@namedef{b@\@citeb}{{\bf ?}}}%
+\hbox{\csname b@\@citeb\endcsname}}}{#1}}
+
+\def\ref#1{\@ifundefined{r@#1}{{\bf {#1}?}
+ \@ifundefined{rr@#1}{\global\@namedef{rr@#1}{}\@warning
+ {Reference `#1' on page \thepage \space
+ undefined}}{}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter
+ \@car\@tempa \@nil\null}}
+
+\def\pageref#1{\@ifundefined{r@#1}{{\bf {#1}?}
+ \@ifundefined{rr@#1}{\global\@namedef{rr@#1}{}\@warning
+ {Reference `#1' on page \thepage \space
+ undefined}}{}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter
+ \@cdr\@tempa\@nil\null}}
+
diff --git a/macros/latex209/contrib/misc/xxxcustom.tex b/macros/latex209/contrib/misc/xxxcustom.tex
new file mode 100644
index 0000000000..7fde01e36d
--- /dev/null
+++ b/macros/latex209/contrib/misc/xxxcustom.tex
@@ -0,0 +1,95 @@
+% LaTeX customization for XXX
+
+
+\makeatletter
+
+\typeout{LaTeX customization 'XXXcustom'. Version 1.00 - released 17 June 1985
+}
+
+
+% plain TeX compatibility
+
+\def\oldstyle{\xdef\@oldstyle{\the\textfont\@ne}\mit\@oldstyle}
+
+
+% Compatibility with XXX-TeX
+
+\def\smaller{\footnotesize} % smaller than small
+
+\let\nfootnote=\footnote
+
+\let\tell=\typeout
+
+\def\implies{\quad\supset\ }
+
+\def\tdots{\ldots\thinspace}
+
+\let\bop=\newpage
+
+\def\hbreak{\hfil\break}
+
+\def\lp{\par\noindent}
+
+\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
+
+\def\boxit#1{\fbox{\sc#1}}
+
+
+% Draft Stuff
+
+\newif\ifdraft \draftfalse
+
+\def\draftstring{{\ifdraft \tt Draft\fi}}
+
+\def\ds@DScustom{\ifdraft \@ifundefined{ds@draft}{}{\ds@draft}\fi}
+
+
+% Extras
+
+\newdimen\extra@wid \extra@wid=\z@
+
+\def\extra#1#2{%
+ \setbox\z@=\hbox{#2:\quad}
+ \ifnum\extra@wid<\wd\z@ \extra@wid=\wd\z@\fi
+ \def#1##1{%
+ \nobreak
+ \extra@skip
+ \vbox{%
+ \def\@filler{#2:\hfil\global\let\@filler=\empty}%
+ \let\\=\cr
+ \tabskip=\z@
+ \halign{%
+ \hbox to\extra@wid{\@filler}\ignorespaces####\unskip\hfil\cr
+ ##1\cr
+ }%
+ }%
+ \nobreak
+ }%
+}
+
+\def\extra@skip{%
+ \vskip 2\baselineskip
+ \def\extra@skip{\vskip .15in}%
+}
+
+
+% Miscellany
+
+\def\bigquote#1\endbigquote{%
+ \begin{quote}
+ \noindent\llap{``}\ignorespaces#1\unskip''
+ \end{quote}
+}
+
+
+
+% Double Spacing Macro
+
+\def\doublespace{
+ \baselineskip=2\baselinestretch pt
+}
+
+\def\XXXAA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%
+ \rlap{\kern+.45ex\raise.67\dimen@\hbox{\char'27}}A}
+
+\makeatother
diff --git a/macros/latex209/contrib/misc/xxxslides.sty b/macros/latex209/contrib/misc/xxxslides.sty
new file mode 100644
index 0000000000..0dfb7813f1
--- /dev/null
+++ b/macros/latex209/contrib/misc/xxxslides.sty
@@ -0,0 +1,361 @@
+% SLiTeX super-customization for the SLIDES style
+% Instead of
+%
+% \documentstyle[XXXslides]{slides}
+%
+% the correct usage is
+%
+% \documentstyle{XXXslides}
+%
+% which will automatically include slides.sty
+
+\typeout{Document Style 'XXXslides' -- version 1.04, released 28 August 1986}
+
+\@ifundefined{oldstyle}{\input XXXcustom\relax \makeatletter}{}
+\let\@@options=\@options \let\@options=\relax
+\input slides.sty
+\makeatletter % backwards compatibility
+\let\@options=\@@options
+
+
+% Document style options:
+% blackandwhite - don't use a secondary file
+% draft - generate black-boxes when boxes are overfull (NI)
+% landscape - 11 x 8-1/2
+% xxxx - use ``Research and Technology Center'' in logo
+% oval - put an oval around title information
+% pagenumbers - generate page numbers in left-hand corner of footer
+% plain - no logo in footer
+% portrait - 8-1/2 x 11
+% proprietary - use ``PROPRIETARY'' in head/foot
+% small - make the slides a bit smaller than standard SLiTeX
+
+\def\ds@blackandwhite{%
+ \let\@document=\document
+ \def\document{%
+ \@document
+ \blackandwhite{null}
+ \@makingslidestrue
+ }%
+ \let\@enddocument=\enddocument
+ \def\enddocument{\@makingslidesfalse\@enddocument}%
+}
+
+\def\ds@draft{%
+ \overfullrule=5\p@
+ \def\XXX@corner{+}%
+}
+\let\XXX@corner=\empty
+
+\newif\if@landscape \@landscapefalse
+\def\ds@landscape{%
+ \@landscapetrue
+ \textwidth=615\p@ \textheight=470\p@
+ \columnwidth=\textwidth
+}
+\def\ds@portrait{%
+ \@landscapefalse
+ \textwidth=470\p@ \textheight=615\p@
+ \columnwidth=\textwidth
+}
+
+\newif\if@xxxx \@xxxxfalse
+\let\ds@xxxx=\@xxxxtrue
+
+\newif\if@ovaltitle \@ovaltitlefalse
+\let\ds@oval=\@ovaltitletrue
+
+\newif\if@pagenumbers \@pagenumbersfalse
+\let\ds@pagenumbers=\@pagenumberstrue
+
+%%% \def\XXX@logo{%
+%%% \vtop{%
+%%% \halign{\hfil##\hfil\cr
+%%% \headfont NORTHROP\cr
+%%% \if@xxxx \hbox{\lowfont\kern-1.2em\raise.6em
+%%% \hbox{Research and Technology Center}}\cr\fi
+%%% }%
+%%% }%
+%%% }
+\let\XXX@logo=\empty
+\let\XXX@titlelogo=\XXX@logo
+\def\ds@plain{\def\XXX@logo{\XXX@corner}\let\XXX@titlelogo=\empty}
+
+\def\ds@proprietary{%
+ \def\XXX@prop{{\small\bf PROPRIETARY}\hfil}%
+}
+\let\XXX@prop=\empty
+
+\def\ds@small{%
+ \let\Huge=\huge
+ \let\huge=\LARGE
+ \let\LARGE=\Large
+ \let\Large=\large
+ \let\large=\normalsize
+ \let\normalsize=\small
+ \let\small=\tiny
+ \let\footnotesize=\small
+ \let\scriptsize=\small
+
+ \normalsize
+
+ \let\ds@small=\empty
+}
+
+\@namedef{ds@10pt}{\@latexerr{No '10pt' layout for slides}\eha}
+\@namedef{ds@11pt}{\@latexerr{No '11pt' layout for slides}\eha}
+\@namedef{ds@12pt}{\@latexerr{No '12pt' layout for slides}\eha}
+\def\ds@openbib{\@latexerr{No 'openbib' layout for slides}\@eha}
+\def\ds@titlepage{\@latexerr{No 'titlepage' layout for slides}\@eha}
+\def\ds@twocolumn{\@latexerr{No 'twocolumn' layout for slides}\@eha}
+\def\ds@twoside{\@latexerr{No 'twoside' layout for slides}\@eha}
+
+\@options
+
+
+% Parameters different than SLiTeX
+
+%%% \font\headfont=northrop20
+%%% \font\lowfont=bookx9
+%%% \font\notesfont=bookx12
+\def\notesfont{\scriptsize\rm}
+
+% Page Style
+
+\setbox\z@=\hbox{\@mainsize\XXX@logo}
+\ifdim \ht\z@>\footheight
+ \advance\textheight by-\footheight
+ \footheight=\ht\z@
+ \advance\textheight by\footheight
+ \footskip=\footheight \advance\footskip by11\p@
+\fi
+
+\def\ps@XXXslides{%
+ \def\ps@slide{%
+ \def\@oddfoot{%
+ \@mainsize\null
+ \if@pagenumbers \hbox to3em{\theslide\hss}\fi
+ \XXX@notes\hfil\hspace{2in}\XXX@prop\XXX@logo
+ }%
+ \def\@oddhead{\@mainsize\null \XXX@corner\hfil \XXX@prop\XXX@corner}%
+ \let\@evenfoot=\@oddfoot
+ \let\@evenhead=\@oddhead
+ }%
+ \def\ps@overlay{%
+ \def\@oddfoot{%
+ \@mainsize\null
+ \if@pagenumbers \hbox to 3em{\theoverlay\hss}\fi
+ \hfil\XXX@corner
+ }%
+ \def\@oddhead{\@mainsize\null \XXX@corner\hfil \XXX@corner}%
+ \let\@evenfoot=\@oddfoot
+ \let\@evenhead=\@oddhead
+ }%
+ \def\ps@note{%
+ \def\@oddfoot{\@mainsize\null \hfil\thenote}%
+ \let\@oddhead=\empty
+ \let\@evenfoot=\@oddfoot
+ \let\@evenhead=\@oddhead
+ }%
+}
+
+\def\ps@title{%
+ \def\ps@slide{%
+ \def\@oddfoot{\@mainsize\null
+ \XXX@notes\hfil\hspace{2in}\XXX@prop\XXX@titlelogo}%
+ \def\@oddhead{\@mainsize\null \hfil\XXX@prop}%
+ \let\@evenfoot=\@oddfoot
+ \let\@evenhead=\@oddhead
+ }%
+ \def\ps@overlay{%
+ \let\@oddfoot=\empty
+ \let\@oddhead=\empty
+ \let\@evenfoot=\@oddfoot
+ \let\@evenhead=\@oddhead
+ }%
+ \def\ps@note{%
+ \let\@oddfoot=\empty
+ \let\@oddhead=\empty
+ \let\@evenfoot=\@oddfoot
+ \let\@evenhead=\@oddhead
+ }%
+ \ps@slide
+}
+
+
+% Titles (from article.sty)
+
+\def\maketitlepage{\begin{titlepage}\maketitle\end{titlepage}}
+
+\def\maketitle{%
+ \par
+ \begingroup
+ \def\thefootnote{\fnsymbol{footnote}}%
+ \def\@makefnmark{\hbox to\z@{$^{\@thefnmark}$\hss}}%
+ \newpage
+ \global\@topnum=\z@
+ \@maketitle
+ \thispagestyle{title}%
+ \@thanks
+ \endgroup
+ \setcounter{footnote}{\z@}
+ \global\let\@title=\empty
+ \global\let\@author=\empty
+ \global\let\@thanks=\empty
+}
+
+\newcount\title@ht \newcount\title@wd
+\newcount\title@@ht \newcount\title@@wd
+
+\def\@maketitle{%
+ \newpage
+ \null
+ \setbox\z@=\vbox{%
+ \ \vskip .75em
+ \begin{center}
+ {\Large\bf \@title \par}%
+ \vskip .5em
+ {\large\bf
+ \lineskip=.25em
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}
+ \par
+ }%
+ \vskip .5em
+ {\large\bf \@date}%
+ \end{center}
+ \par
+ \vskip .75em
+ }%
+ \if@ovaltitle
+ \title@ht=\ht\z@ \title@wd=\wd\z@
+ \title@@ht=\ht\z@ \title@@wd=\wd\z@
+ \divide\title@@ht by2 \divide\title@@wd by2
+ \unitlength=1sp
+ \fi
+ \box\z@
+ \if@ovaltitle
+ \vskip -\title@ht\unitlength
+ {\centering
+ \begin{picture}(\title@wd,\title@ht)
+ \put(\title@@wd,\title@@ht){\oval(\title@wd,\title@ht)}
+ \end{picture}
+ \par}
+ \fi
+}
+
+\def\ctitle#1{%
+ \begin{center}
+ \large\bf#1%
+ \end{center}
+ \vskip.125in plus.25in
+}
+
+
+% Slides
+
+\def\bwslide{\let\XXX@notes=\empty \slide\empty}
+\let\endbwslide=\endslide
+
+\def\bwoverlay{\overlay\empty}
+\let\endbwoverlay=\endoverlay
+
+
+% Parts (parts is parts...)
+
+\newcounter{part}
+
+\def\part{\secdef\@part\@spart}
+
+\def\@part[#1]#2{%
+ \stepcounter{part}
+ \begin{center}
+ \Large\bf PART \thepart\\
+ \huge\bf #2%
+ \end{center}
+ \vskip1.25in plus.25in
+}
+
+\def\@spart#1{%
+ \begin{center}
+ \huge\bf #1%
+ \end{center}
+ \vskip1.15in plus.25in
+}
+
+\def\thepart{\Roman{part}}
+
+
+% Macros for circled lists (similar to itemize)
+
+\newcount\@xxxxdepth \@xxxxdepth=\z@
+
+\def\xxxx{%
+ \ifnum \@xxxxdepth>2
+ \@toodeep
+ \else
+ \advance\@xxxxdepth by\@ne
+ \edef\@xxxxitem{labelxxxx\romannumeral\the\@xxxxdepth}%
+ \list{\csname\@xxxxitem\endcsname}{%
+ \def\makelabel##1{\hss\llap{##1}}%
+ \labelwidth=\leftmargini \advance\labelwidth-\labelsep
+ \ifcase\@xxxxdepth\or
+ \itemindent=-1em \listparindent=\itemindent
+ \leftmargin=3em
+ \parsep=\the\parsep plus.5\parsep minus.5\parsep
+ \topsep=\parsep
+ \or
+ \itemindent=-2em \listparindent=\itemindent
+ \leftmargin=4em
+ \parsep=\the\parsep plus.5\parsep minus.5\parsep
+ \topsep=\parsep
+ \else
+ \itemindent=-2em \listparindent=\itemindent
+ \leftmargin=2em
+ \fi
+ \rightmargin=\z@
+ }%
+ \fi
+}
+\let\endxxxx=\endlist
+
+\def\labelxxxxi{$\circ$}
+\let\labelxxxxii=\empty
+\let\labelxxxxiii=\empty
+\let\labelxxxxiv=\empty
+
+
+\def\slidenotes#1{\def\XXX@notes{\notesfont#1}}
+\let\XXX@notes=\empty
+
+
+% Macros for figures (PIC support)
+
+\let\slidepoint=\small
+
+\def\diagram{\@ifnextchar[{\@diagram}{\@diagram[]}}
+\def\@diagram[#1]#2{%
+ \let\@d@agram=\empty \let\@di@gram=\empty
+ \@tfor\@tempa:=#1\do{%
+ \if\@tempa p
+ \let\@d@agram=\slidepoint
+ \def\@di@gram{\centerline{\box\graph}}\fi
+ \if\@tempa t
+ \let\@d@agram=\slidepoint\fi
+ }%
+ \@d@agram \input #2\relax \@di@gram
+}
+
+
+% Initialization
+
+\pagestyle{XXXslides}
+
+\uchyph=\z@
+\brokenpenalty=\@M
+\hyphenpenalty=\@M
+\tolerance=500
+\pretolerance=\@M
+\clubpenalty=\@M
+\widowpenalty=\@M \displaywidowpenalty=\@M
diff --git a/macros/latex209/contrib/misc/yearcal.tex b/macros/latex209/contrib/misc/yearcal.tex
new file mode 100644
index 0000000000..ff145138ed
--- /dev/null
+++ b/macros/latex209/contrib/misc/yearcal.tex
@@ -0,0 +1,133 @@
+%%% Save file as: YEARCAL.TEX Source: FILESERV@SHSU.BITNET
+%%% @LaTeX-file{
+%%% author = "Michael Barr",
+%%% version = "1.0",
+%%% date = "1992-06-24",
+%%% time = "16:35 EDT",
+%%% filename = "yearcal.tex",
+%%% address = "Department of Mathematics & Statistics"
+%%% McGill University
+%%% 805 Sherbrooke St. W
+%%% Montreal, QC
+%%% Canada H3A 2K6",
+%%% telephone = "(514) 398-3806",
+%%% FAX = "(514) 398-3899",
+%%% email = "barr@math.mcgill.ca (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, year calendar"
+%%% checksum = "53683 132 503 5111",
+%%% supported = "yes",
+%%% docstring = "
+%%% This LaTeX file prints the correct Gregorian calendar for any
+%%% year between the adoption of the Gregorian calendar (which
+%%% happened during the 18th, 19th and even 20th century,
+%%% depending on country) and the year 4000. That year is
+%%% supposed, according to current plans, not to be a leap year,
+%%% although, strictly speaking, that ought to happen in the year
+%%% 3200.
+%%%
+%%% The current definition of the Gregorian calendar is:
+%%% Years divisible by 4 are leap years; except
+%%% years divisible by 100 are not leap years; except
+%%% years divisible by 400 are leap years; except
+%%% years divisible by 4000 are not leap years.
+%%% So the years 1800 and 1900 were not leap years, but 2000 will be.
+%%% }
+%%% ====================================================================
+
+% The current definition of the Gregorian calendar is:
+% Years divisible by 4 are leap years; except
+% years divisible by 100 are not leap years; except
+% years divisible by 400 are leap years; except
+% years divisible by 4000 are not leap years.
+% So the years 1800 and 1900 were not leap years, but 2000 will be.
+
+
+\typeout{}
+\typein[\theyear]{Please enter the year:}
+\newcount\yearnum \yearnum=\theyear
+
+\documentstyle{article}
+\textwidth 7.05in \oddsidemargin-.255in
+\textheight=9in \headheight =0pt \topmargin=0pt\headsep=0pt
+\footheight=0pt\footskip=0pt
+\pagestyle{empty}\thispagestyle{empty}
+
+\newcount\febdays \febdays=28
+\newcount\yearnuma
+\newcount\yearnumb
+\newcount\firstdate \newcount \lastdate \newcount \datenum
+
+\def\month#1#2#3{\initialdate{#1}{#2}%
+\begin{tabular}{|rrrrrrr|} \hline
+\multicolumn{7}{|c|}{#3}\\ \hline
+Su&Mo&Tu&We&Th&Fr&Sa\\ \hline
+\day{ 1}&\day{ 2}&\day{ 3}&\day{ 4}&\day{ 5}&\day{ 6}&\day{ 7}\\
+\day{ 8}&\day{ 9}&\day{10}&\day{11}&\day{12}&\day{13}&\day{14}\\
+\day{15}&\day{16}&\day{17}&\day{18}&\day{19}&\day{20}&\day{21}\\
+\day{22}&\day{23}&\day{24}&\day{25}&\day{26}&\day{27}&\day{28}\\
+\day{29}&\day{30}&\day{31}&\day{32}&\day{33}&\day{34}&\day{35}\\
+\day{36}&\day{37}&\day{38}&\day{39}&\day{40}&\day{41}&\day{42}\\ \hline
+\end{tabular}\global\advance\firstdate by #2
+\ifnum\firstdate>35 \global\advance\firstdate by -35
+ \else\global\advance \firstdate by -28 \fi}
+\def\day#1{\advance \datenum by#1
+ \ifnum\datenum>0 \ifnum\datenum>\lastdate\else\number\datenum \fi\fi}
+\def\initialdate#1#2{\datenum=1 \advance\datenum by -#1 \lastdate=#2}
+\newcount\xa\newcount\xb\newcount\xc
+\newcount\ya\newcount\yb\newcount\yc\newcount\yd
+\xa=0 \xb=235 {\multiply \xb by 2 \global\xc=\xb }
+\yd=0 \yc=136 {\multiply \yc by 2 \global \yb=\yc }
+{\multiply \yc by 3 \global \ya=\yc }
+
+\begin{document}
+\font\gross=cminch
+
+\def\setup{\yearnuma=\yearnum{%
+\divide\yearnuma by 100
+\multiply\yearnuma by 100
+\ifnum\yearnum=\yearnuma \divide \yearnum by 100 \fi
+\ifodd\yearnum\relax
+\else \divide\yearnum by 2
+ \ifodd\yearnum\relax
+ \else \global\febdays=29
+ \fi
+\fi
+}%
+{%
+\advance\yearnum by -1
+\yearnuma=\yearnum
+\divide\yearnuma by 400 \multiply \yearnuma by -400
+\advance\yearnuma by \yearnum % \yearnuma=\yearnum mod 400
+\firstdate=\yearnuma
+\yearnumb=\yearnuma
+\divide\yearnumb by 100 \divide\yearnuma by 4
+\advance\yearnuma by -\yearnumb % correct leapyear count by centuries
+\advance\firstdate by \yearnuma % add number of leapyears
+\yearnuma=\firstdate
+\divide\yearnuma by 7 \multiply\yearnuma by 7
+\advance\firstdate by -\yearnuma % \firstdate = #leapyears mod 7
+% Now do final correction for year 0.
+\global\firstdate=\ifcase\firstdate2 \or3 \or4 \or5 \or6 \or7 \or1 \fi
+}%
+}%
+
+\setup
+\begin{center}{\gross \number\yearnum }\end{center}
+\unitlength.01in
+\begin{picture}(705,543)
+\put(\xa,\ya){\month{\firstdate}{31}{January}}
+\put(\xb,\ya){\month{\firstdate}{\febdays}{February}}
+\put(\xc,\ya){\month{\firstdate}{31}{March}}
+\put(\xa,\yb){\month{\firstdate}{30}{April}}
+\put(\xb,\yb){\month{\firstdate}{31}{May}}
+\put(\xc,\yb){\month{\firstdate}{30}{June}}
+\put(\xa,\yc){\month{\firstdate}{31}{July}}
+\put(\xb,\yc){\month{\firstdate}{31}{August}}
+\put(\xc,\yc){\month{\firstdate}{30}{September}}
+\put(\xa,\yd){\month{\firstdate}{31}{October}}
+\put(\xb,\yd){\month{\firstdate}{30}{November}}
+\put(\xc,\yd){\month{\firstdate}{31}{December}}
+\end{picture}\newpage
+
+\end{document}}