summaryrefslogtreecommitdiff
path: root/obsolete/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 /obsolete/macros/latex209/contrib/misc
Initial commit
Diffstat (limited to 'obsolete/macros/latex209/contrib/misc')
-rw-r--r--obsolete/macros/latex209/contrib/misc/10pt.sty7
-rw-r--r--obsolete/macros/latex209/contrib/misc/9pt.sty126
-rw-r--r--obsolete/macros/latex209/contrib/misc/a4wide.sty36
-rw-r--r--obsolete/macros/latex209/contrib/misc/a5.sty30
-rw-r--r--obsolete/macros/latex209/contrib/misc/algorithm.sty108
-rw-r--r--obsolete/macros/latex209/contrib/misc/alltt.sty32
-rw-r--r--obsolete/macros/latex209/contrib/misc/amsfonts.sty414
-rw-r--r--obsolete/macros/latex209/contrib/misc/amssymbols.sty292
-rw-r--r--obsolete/macros/latex209/contrib/misc/askinclude.sty96
-rw-r--r--obsolete/macros/latex209/contrib/misc/braille.sty49
-rw-r--r--obsolete/macros/latex209/contrib/misc/briefdoc.tex283
-rw-r--r--obsolete/macros/latex209/contrib/misc/captcont.sty16
-rw-r--r--obsolete/macros/latex209/contrib/misc/changebar.sty155
-rw-r--r--obsolete/macros/latex209/contrib/misc/chappg.sty15
-rw-r--r--obsolete/macros/latex209/contrib/misc/citesort.sty56
-rw-r--r--obsolete/macros/latex209/contrib/misc/doublespace.sty208
-rw-r--r--obsolete/macros/latex209/contrib/misc/endfloat.sty350
-rw-r--r--obsolete/macros/latex209/contrib/misc/endnote.sty34
-rw-r--r--obsolete/macros/latex209/contrib/misc/endnotes.sty325
-rw-r--r--obsolete/macros/latex209/contrib/misc/float.sty815
-rw-r--r--obsolete/macros/latex209/contrib/misc/fnpara.sty138
-rw-r--r--obsolete/macros/latex209/contrib/misc/index.doc1367
-rw-r--r--obsolete/macros/latex209/contrib/misc/nar.sty282
-rw-r--r--obsolete/macros/latex209/contrib/misc/natsci.sty61
-rw-r--r--obsolete/macros/latex209/contrib/misc/nofm.sty56
-rw-r--r--obsolete/macros/latex209/contrib/misc/preprint.sty149
-rw-r--r--obsolete/macros/latex209/contrib/misc/refman.sty502
-rw-r--r--obsolete/macros/latex209/contrib/misc/shadethm.sty187
-rw-r--r--obsolete/macros/latex209/contrib/misc/shadow.sty84
-rw-r--r--obsolete/macros/latex209/contrib/misc/showlabels.sty28
-rw-r--r--obsolete/macros/latex209/contrib/misc/spie.sty126
-rw-r--r--obsolete/macros/latex209/contrib/misc/subfigure.sty446
-rw-r--r--obsolete/macros/latex209/contrib/misc/texnames.sty13
-rw-r--r--obsolete/macros/latex209/contrib/misc/threepart.sty40
-rw-r--r--obsolete/macros/latex209/contrib/misc/twoup.sty20
-rw-r--r--obsolete/macros/latex209/contrib/misc/varioref.sty168
-rw-r--r--obsolete/macros/latex209/contrib/misc/xr.sty207
37 files changed, 7321 insertions, 0 deletions
diff --git a/obsolete/macros/latex209/contrib/misc/10pt.sty b/obsolete/macros/latex209/contrib/misc/10pt.sty
new file mode 100644
index 0000000000..661bd79c25
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/10pt.sty
@@ -0,0 +1,7 @@
+%%% Save file as: 10pt.sty Source: FILESERV@SHSU.BITNET
+%%% The following checksum includes all SHSU-generated topmatter.
+%%% checksum = "57724 7 44 319"
+% A simple style file to give you 10pt text. It does nothing but makes
+% \documentstyle[10pt]{article}
+% equivalent to
+% \documentstyle{article}
diff --git a/obsolete/macros/latex209/contrib/misc/9pt.sty b/obsolete/macros/latex209/contrib/misc/9pt.sty
new file mode 100644
index 0000000000..92cd1623b1
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/9pt.sty
@@ -0,0 +1,126 @@
+% 9pt.sty 17-Apr-90 Patrick van der Smagt
+% changed lines are preceded by a comment marker
+%
+% Available font sizes: vpt, vipt, viipt, viiipt, ixpt, xpt,
+% xipt, xiipt, xivpt, xviipt, xxpt, xxvpt
+%
+\def\@normalsize{\@setsize\normalsize{10.8pt}\ixpt\@ixpt
+\abovedisplayskip 8pt plus2pt minus4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3pt\belowdisplayshortskip 5pt plus3pt
+minus3pt\let\@listi\@listI}
+%
+\def\small{\@setsize\small{9.6pt}\viiipt\@viiipt
+\abovedisplayskip 7.5pt plus 3pt minus 4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus2pt\belowdisplayshortskip 4pt plus2pt minus 2pt
+\def\@listi{\leftmargin\leftmargini \topsep 3pt plus 2pt minus 2pt\parsep 2pt
+plus 1pt minus 1pt
+\itemsep \parsep}}
+%
+\def\footnotesize{\@setsize\footnotesize{7.5pt}\viipt\@viipt
+\abovedisplayskip 5pt plus 2pt minus 4pt\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus 1pt\belowdisplayshortskip 3pt plus 1pt minus
+2pt
+%
+\def\@listi{\leftmargin\leftmargini \topsep 2.5pt plus 1pt minus 1pt\parsep 2pt
+plus 1pt minus 1pt
+\itemsep \parsep}}
+%
+\def\scriptsize{\@setsize\scriptsize{7.2pt}\vipt\@vipt}
+%
+\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
+%
+\def\large{\@setsize\large{12pt}\xpt\@xpt}
+%
+\def\Large{\@setsize\Large{14.4pt}\xiipt\@xiipt}
+%
+\def\LARGE{\@setsize\LARGE{16.8pt}\xivpt\@xivpt}
+%
+\def\huge{\@setsize\huge{20.4pt}\xviipt\@xviipt}
+%
+\def\Huge{\@setsize\Huge{24pt}\xxpt\@xxpt}
+\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 \footskip 30pt
+
+\textheight = 43\baselineskip
+\advance\textheight by \topskip
+\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 \partopsep 2pt plus 1pt minus 1pt
+\@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 Part \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 25pt
+\leftmarginii 22pt \leftmarginiii 18.7pt \leftmarginiv 17pt \leftmarginv 10pt
+\leftmarginvi 10pt
+\leftmargin\leftmargini
+\labelsep 5pt
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+%
+\def\@listI{\leftmargin\leftmargini \parsep 3.5pt plus 2pt minus 1pt\topsep 6pt
+plus 1pt minus 3pt\itemsep 2.5pt plus 2pt minus 1pt}
+\let\@listi\@listI
+\@listi
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+%
+ \topsep 3.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/obsolete/macros/latex209/contrib/misc/a4wide.sty b/obsolete/macros/latex209/contrib/misc/a4wide.sty
new file mode 100644
index 0000000000..2985221f9b
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/a4wide.sty
@@ -0,0 +1,36 @@
+%
+% "moretext" document style option.
+% Jean-Francois Lamy, July 86
+%
+% Redefines the margins so that they are more in line with
+% what we are used to see.
+%
+
+\input a4.sty
+
+\ifcase \@ptsize
+ % mods for 10 pt
+ \oddsidemargin 0.15 in % Left margin on odd-numbered pages.
+ \evensidemargin 0.35 in % Left margin on even-numbered pages.
+ \marginparwidth 1 in % Width of marginal notes.
+ \oddsidemargin 0.25 in % Note that \oddsidemargin = \evensidemargin
+ \evensidemargin 0.25 in
+ \marginparwidth 0.75 in
+ \textwidth 5.875 in % Width of text line.
+\or % mods for 11 pt
+ \oddsidemargin 0.1 in % Left margin on odd-numbered pages.
+ \evensidemargin 0.15 in % Left margin on even-numbered pages.
+ \marginparwidth 1 in % Width of marginal notes.
+ \oddsidemargin 0.125 in % Note that \oddsidemargin = \evensidemargin
+ \evensidemargin 0.125 in
+ \marginparwidth 0.75 in
+ \textwidth 6.125 in % Width of text line.
+\or % mods for 12 pt
+ \oddsidemargin -10 pt % Left margin on odd-numbered pages.
+ \evensidemargin 10 pt % Left margin on even-numbered pages.
+ \marginparwidth 1 in % Width of marginal notes.
+ \oddsidemargin 0 in % Note that \oddsidemargin = \evensidemargin
+ \evensidemargin 0 in
+ \marginparwidth 0.75 in
+ \textwidth 6.375 true in % Width of text line.
+\fi
diff --git a/obsolete/macros/latex209/contrib/misc/a5.sty b/obsolete/macros/latex209/contrib/misc/a5.sty
new file mode 100644
index 0000000000..cf619734e5
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/a5.sty
@@ -0,0 +1,30 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Mario Wolczko",
+%%% version = "10",
+%%% date = "21 May 1992",
+%%% time = "20:51:10 BST",
+%%% filename = "a5.sty",
+%%% email = "mario@acm.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, A5 page size, page layout",
+%%% supported = "no",
+%%% docstring = "Sets page layout to A5 size, with equal
+%%% spaces to left, middle and right and top:side:bottom space =
+%%% 2:3:4. See also a5comb.sty, a4.sty"
+%%% }
+%%% ====================================================================
+%
+% This file is in the public domain.
+%
+% based on ratios suggested by Dick Wakefield
+
+\headheight=12truept \headsep=18truept
+\topmargin= -35.62truept % Nominal distance from top of paper to top of page
+% top paper margin of 48.72pt
+% (between top of page and top of text, excluding header)
+\textwidth=313truept
+\evensidemargin=-0.47truept \oddsidemargin=-35.77truept
+\textheight=426truept % 10pt only (\baselineskip=12pt)
+
+\footskip=36truept \footheight=12truept
diff --git a/obsolete/macros/latex209/contrib/misc/algorithm.sty b/obsolete/macros/latex209/contrib/misc/algorithm.sty
new file mode 100644
index 0000000000..4ad31b578e
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/algorithm.sty
@@ -0,0 +1,108 @@
+%%%%%%%%%%% ALGORITHMS STYLE %%%%%%%%%%%
+% This style defines an environment for algorithms with the following
+% features:
+%
+% 1) Defines an Theorem like environment (not exactly one) for
+% algorithms called ``algorithm''.
+% \begin{algorithm}{NAME} ... \end{algorithm}
+% NAME is the NAME of the algorithm.
+% Algorithms are numbered using a counter called ``algorithm''.
+%
+% 2) Inside this environment, the following commands are defined.
+%
+% \= Put the small left arrow commonly used for assignment.
+%
+% \invariant{INVARIANT} Use to describe invariants, put its parameter
+% between ``{}'' in math mode.
+%
+% \begin{Block} ... \end{Block} Environment use to start a indented
+% block of instructions \end{Block} put
+% an ``end'' to close the block.
+%
+% \nextBlock{SEPARATOR} Inside a Block, it allows to put a separator
+% of parts of the indented block. Usefull for
+% constructions like ``IF..THEN..ELSE..END''
+% i.e. If cond then
+% \begin{Block}
+% then part
+% \nextBlock{else}
+% else part
+% \end{Block}
+%
+% 3) \Blockindent and \algorithmindent are length that specify the
+% indentention of Blocks and of the algorithm resp.
+%
+% 4) Instructions are separated by ``\\'', ``\par'' or by leaving a
+% blank line. Before an ``\end{Block}'' a ``\\'' can't be used.
+%
+%
+% Created by Jose Alberto Fernandez R.
+% e-mail: alberto@cs.umd.edu
+%
+
+%
+\newcounter{algorithm}
+\newtheorem{Alg@orithm}[algorithm]{Algorithm}
+% Invariants
+\newcommand{\inv@ariant}[1]{\mbox{$\{#1\}$}}
+% Steps environment
+\newenvironment{ste@ps}[1]{
+\begin{list}{}
+{\setlength\labelsep{0in}
+\addtolength\partopsep\topsep
+\addtolength\partopsep\parsep
+\setlength\parsep{0in}
+\setlength\topsep{0in}
+\setlength\itemsep{0in}
+\setlength\labelwidth{0in}
+\setlength\rightmargin{0in}
+\setlength\leftmargin{#1}}
+}{
+\end{list}
+}
+
+% Block environment
+% Indentation of the Block
+\newlength{\Blockindent}
+% NextBlock command
+\newcommand{\next@Block}[1]{
+\end{ste@ps}
+#1
+\begin{ste@ps}{\Blockindent}
+\item
+}
+
+\newenvironment{Blo@ck}{
+\let\nextBlock\next@Block
+\begin{ste@ps}{\Blockindent}
+\item
+}{
+\end{ste@ps}
+end
+}
+% Algorithm environment
+% Assign command
+\newcommand{\ass@ign}{\mbox{$\leftarrow$}}
+% Indentation of the algorithm
+\newlength{\algorithmindent}
+% Algorithm definition
+\newenvironment{algorithm}[1]{
+\let\=\ass@ign
+\let\invariant\inv@ariant
+\let\Block\Blo@ck
+\let\endBlock\endBlo@ck
+\begin{Alg@orithm} #1
+\rm\par
+\begin{ste@ps}{\algorithmindent}
+\item
+}{
+\end{ste@ps}
+\bf end
+\end{Alg@orithm}
+}
+
+% Setting default indentation
+\setlength{\algorithmindent}{1em}
+\setlength{\Blockindent}{2em}
+
+% End of algorithm.sty
diff --git a/obsolete/macros/latex209/contrib/misc/alltt.sty b/obsolete/macros/latex209/contrib/misc/alltt.sty
new file mode 100644
index 0000000000..b7290b7563
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/alltt.sty
@@ -0,0 +1,32 @@
+% ALLTT DOCUMENT-STYLE OPTION - released 17 December 1987
+% for LaTeX version 2.09
+% Copyright (C) 1987 by Leslie Lamport
+
+% Defines the `alltt' environment, which is like the `verbatim'
+% environment except that `\', `\{', and `\}' have their usual meanings.
+% Thus, other commands and environemnts can appear within an `alltt'
+% environment. Here are some things you may want to do in an `alltt'
+% environment:
+%
+% * Change fonts--e.g., by typing `{\em empasized text\/}'.
+%
+% * Insert text from a file foo.tex by typing `input{foo}'. Beware that
+% each <return> stars a new line, so if foo.tex ends with a <return>
+% you can wind up with an extra blank line if you're not careful.
+%
+% * Insert a math formula. Note that `$' just produces a dollar sign,
+% so you'll have to type `\(...\)' or `\[...\]'. Also, `^' and `_'
+% just produce their characters; use `\sp' or `\sb' for super- and
+% subscripts, as in `\(x\sp{2}\)'.
+
+\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
diff --git a/obsolete/macros/latex209/contrib/misc/amsfonts.sty b/obsolete/macros/latex209/contrib/misc/amsfonts.sty
new file mode 100644
index 0000000000..754deb1baf
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/amsfonts.sty
@@ -0,0 +1,414 @@
+% This style file makes it possible to work with the AmS fonts
+% in LaTeX
+% calling sequence: \documentstyle[...,amsfonts,...]{....}
+% Slightly modified from a version snarfed from LISTSERV at DHDURZ1
+% One modification is that \Huge also uses the same sizes
+% like the CMR family of fonts.
+% The other 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 an add selectively
+% e.g. the MSXMxx and MSYMxx families and later also
+% the Euler Fraktur and the cyrillic fonts without anz 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
+
+ \font\twtymsx=msxm10 \@magscale4
+ \font\svtnmsx=msxm10 \@magscale3
+ \font\frtnmsx=msxm10 \@magscale2
+ \font\twelvemsx=msxm10 \@magscale1
+ \font\elevenmsx=msxm10 \@halfmag
+ \font\tenmsx=msxm10
+ \font\ninemsx=msxm9
+ \font\eightmsx=msxm8
+ \font\sevenmsx=msxm7
+ \font\sixmsx=msxm6
+ \font\fivemsx=msxm5
+ %
+ \font\twtymsy=msym10 \@magscale4
+ \font\svtnmsy=msym10 \@magscale3
+ \font\frtnmsy=msym10 \@magscale2
+ \font\twelvemsy=msym10 \@magscale1
+ \font\elevenmsy=msym10 \@halfmag
+ \font\tenmsy=msym10
+ \font\ninemsy=msym9
+ \font\eightmsy=msym8
+ \font\sevenmsy=msym7
+ \font\sixmsy=msym6
+ \font\fivemsy=msym5
+
+
+\newfam\msxfam
+\newfam\msyfam
+
+% Hier sind jetzt geaenderte LFONTS Definitionen (fuer LaTeX)
+
+\@addto\@vpt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\fivemsx}\textfont\msxfam=\fivemsx
+ \scriptfont\msxfam=\fivemsx \scriptscriptfont\msxfam=\fivemsx
+\def\msy{\fam\msyfam\fivemsy}\textfont\msyfam=\fivemsy
+ \scriptfont\msyfam=\fivemsy \scriptscriptfont\msyfam=\fivemsy
+\@setstrut\rm}
+
+
+\@addto\@vipt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\sixmsx}\textfont\msxfam=\sixmsx
+ \scriptfont\msxfam=\sixmsx \scriptscriptfont\msxfam=\sixmsx
+\def\msy{\fam\msyfam\sixmsy}\textfont\msyfam=\sixmsy
+ \scriptfont\msyfam=\sixmsy \scriptscriptfont\msyfam=\sixmsy
+\@setstrut\rm}
+
+
+\@addto\@viipt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\sevenmsx}\textfont\msxfam=\sevenmsx
+ \scriptfont\msxfam=\fivemsx \scriptscriptfont\msxfam=\fivemsx
+\def\msy{\fam\msyfam\sevenmsy}\textfont\msyfam=\sevenmsy
+ \scriptfont\msyfam=\fivemsy \scriptscriptfont\msyfam=\fivemsy
+\@setstrut \rm}
+
+
+\@addto\@viiipt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\eightmsx}\textfont\msxfam=\eightmsx
+ \scriptfont\msxfam=\sixmsx \scriptscriptfont\msxfam=\fivemsx
+\def\msy{\fam\msyfam\eightmsy}\textfont\msyfam=\eightmsy
+ \scriptfont\msyfam=\sixmsy \scriptscriptfont\msyfam=\fivemsy
+\@setstrut \rm}
+
+
+\@addto\@ixpt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\ninemsx}\textfont\msxfam=\ninemsx
+ \scriptfont\msxfam=\sixmsx \scriptscriptfont\msxfam=\fivemsx
+\def\msy{\fam\msyfam\ninemsy}\textfont\msyfam=\ninemsy
+ \scriptfont\msyfam=\sixmsy \scriptscriptfont\msyfam=\fivemsy
+\@setstrut \rm}
+
+
+\@addto\@xpt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\tenmsx}\textfont\msxfam=\tenmsx
+ \scriptfont\msxfam=\sevenmsx \scriptscriptfont\msxfam=\fivemsx
+\def\msy{\fam\msyfam\tenmsy}\textfont\msyfam=\tenmsy
+ \scriptfont\msyfam=\sevenmsy \scriptscriptfont\msyfam=\fivemsy
+\@setstrut \rm}
+
+
+\@addto\@xipt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\elevenmsx}\textfont\msxfam=\elevenmsx
+ \scriptfont\msxfam=\eightmsx \scriptscriptfont\msxfam=\sixmsx
+\def\msy{\fam\msyfam\elevenmsy}\textfont\msyfam=\elevenmsy
+ \scriptfont\msyfam=\eightmsy \scriptscriptfont\msyfam=\sixmsy
+\@setstrut \rm}
+
+
+\@addto\@xiipt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\twelvemsx}\textfont\msxfam=\twelvemsx
+ \scriptfont\msxfam=\eightmsx \scriptscriptfont\msxfam=\sixmsx
+\def\msy{\fam\msyfam\twelvemsy}\textfont\msyfam=\twelvemsy
+ \scriptfont\msyfam=\eightmsy \scriptscriptfont\msyfam=\sixmsy
+ \@setstrut \rm}
+
+
+\@addto\@xivpt{\textfont\z@\frtnrm
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\frtnmsx}\textfont\msxfam=\frtnmsx
+ \scriptfont\msxfam=\tenmsx \scriptscriptfont\msxfam=\sevenmsx
+\def\msy{\fam\msyfam\frtnmsy}\textfont\msyfam=\frtnmsy
+ \scriptfont\msyfam=\tenmsy \scriptscriptfont\msyfam=\sevenmsy
+\@setstrut \rm}
+
+
+\@addto\@xviipt{\textfont\z@\svtnrm
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\svtnmsx}\textfont\msxfam=\svtnmsx
+ \scriptfont\msxfam=\twelvemsx \scriptscriptfont\msxfam=\tenmsx
+\def\msy{\fam\msyfam\svtnmsy}\textfont\msyfam=\svtnmsy
+ \scriptfont\msyfam=\twelvemsy \scriptscriptfont\msyfam=\tenmsy
+\@setstrut \rm}
+
+
+\@addto\@xxpt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\twtymsx}\textfont\msxfam=\twtymsx
+ \scriptfont\msxfam=\frtnmsx \scriptscriptfont\msxfam=\twelvemsx
+\def\msy{\fam\msyfam\twtymsy}\textfont\msyfam=\twtymsy
+ \scriptfont\msyfam=\frtnmsy \scriptscriptfont\msyfam=\twelvemsy
+\@setstrut \rm}
+
+
+\@addto\@xxvpt{
+% Hier AmS-Fonts
+\def\msx{\fam\msxfam\twtymsx}\textfont\msxfam=\twtymsx
+ \scriptfont\msxfam=\twtymsx \scriptscriptfont\msxfam=\svtnmsx
+\def\msy{\fam\msyfam\twtymsy}\textfont\msyfam=\twtymsy
+ \scriptfont\msyfam=\twtymsy \scriptscriptfont\msyfam=\svtnmsy
+\@setstrut \rm}
+
+
+%\def\text{\relaxnext@\ifmmode\let\next\text@\else\let\next\text@@\fi\next}
+%\def\text@@#1{\leavevmode\hbox{#1}}
+
+\def\relaxnext@{\let\next\relax}
+
+\def\accentfam@{7}
+\def\noaccents@{\def\accentfam@{0}}
+
+\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\mathhexbox@#1#2#3{\hbox{$\m@th\mathchar"#1#2#3$}}
+
+\edef\msx@{\hexnumber@\msxfam}
+\edef\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\centerdot="2\msx@05
+\mathchardef\lozenge="0\msx@06
+\mathchardef\blacklozenge="0\msx@07
+\mathchardef\circlearrowright="3\msx@08
+\mathchardef\circlearrowleft="3\msx@09
+\mathchardef\rightleftharpoons="3\msx@0A
+\mathchardef\leftrightharpoons="3\msx@0B
+\mathchardef\boxminus="2\msx@0C
+\mathchardef\Vdash="3\msx@0D
+\mathchardef\Vvdash="3\msx@0E
+\mathchardef\vDash="3\msx@0F
+\mathchardef\twoheadrightarrow="3\msx@10
+\mathchardef\twoheadleftarrow="3\msx@11
+\mathchardef\leftleftarrows="3\msx@12
+\mathchardef\rightrightarrows="3\msx@13
+\mathchardef\upuparrows="3\msx@14
+\mathchardef\downdownarrows="3\msx@15
+\mathchardef\upharpoonright="3\msx@16
+\let\restriction\upharpoonright
+\mathchardef\downharpoonright="3\msx@17
+\mathchardef\upharpoonleft="3\msx@18
+\mathchardef\downharpoonleft="3\msx@19
+\mathchardef\rightarrowtail="3\msx@1A
+\mathchardef\leftarrowtail="3\msx@1B
+\mathchardef\leftrightarrows="3\msx@1C
+\mathchardef\rightleftarrows="3\msx@1D
+\mathchardef\Lsh="3\msx@1E
+\mathchardef\Rsh="3\msx@1F
+\mathchardef\rightsquigarrow="3\msx@20
+\mathchardef\leftrightsquigarrow="3\msx@21
+\mathchardef\looparrowleft="3\msx@22
+\mathchardef\looparrowright="3\msx@23
+\mathchardef\circeq="3\msx@24
+\mathchardef\succsim="3\msx@25
+\mathchardef\gtrsim="3\msx@26
+\mathchardef\gtrapprox="3\msx@27
+\mathchardef\multimap="3\msx@28
+\mathchardef\therefore="3\msx@29
+\mathchardef\because="3\msx@2A
+\mathchardef\doteqdot="3\msx@2B
+\let\Doteq\doteqdot
+\mathchardef\triangleq="3\msx@2C
+\mathchardef\precsim="3\msx@2D
+\mathchardef\lesssim="3\msx@2E
+\mathchardef\lessapprox="3\msx@2F
+\mathchardef\eqslantless="3\msx@30
+\mathchardef\eqslantgtr="3\msx@31
+\mathchardef\curlyeqprec="3\msx@32
+\mathchardef\curlyeqsucc="3\msx@33
+\mathchardef\preccurlyeq="3\msx@34
+\mathchardef\leqq="3\msx@35
+\mathchardef\leqslant="3\msx@36
+\mathchardef\lessgtr="3\msx@37
+\mathchardef\backprime="0\msx@38
+\mathchardef\risingdotseq="3\msx@3A
+\mathchardef\fallingdotseq="3\msx@3B
+\mathchardef\succcurlyeq="3\msx@3C
+\mathchardef\geqq="3\msx@3D
+\mathchardef\geqslant="3\msx@3E
+\mathchardef\gtrless="3\msx@3F
+\mathchardef\sqsubset="3\msx@40
+\mathchardef\sqsupset="3\msx@41
+\mathchardef\vartriangleright="3\msx@42
+\mathchardef\vartriangleleft ="3\msx@43
+\mathchardef\trianglerighteq="3\msx@44
+\mathchardef\trianglelefteq="3\msx@45
+\mathchardef\bigstar="0\msx@46
+\mathchardef\between="3\msx@47
+\mathchardef\blacktriangledown="0\msx@48
+\mathchardef\blacktriangleright="3\msx@49
+\mathchardef\blacktriangleleft="3\msx@4A
+\mathchardef\vartriangle="0\msx@4D
+\mathchardef\blacktriangle="0\msx@4E
+\mathchardef\triangledown="0\msx@4F
+\mathchardef\eqcirc="3\msx@50
+\mathchardef\lesseqgtr="3\msx@51
+\mathchardef\gtreqless="3\msx@52
+\mathchardef\lesseqqgtr="3\msx@53
+\mathchardef\gtreqqless="3\msx@54
+\mathchardef\Rrightarrow="3\msx@56
+\mathchardef\Lleftarrow="3\msx@57
+\mathchardef\veebar="2\msx@59
+\mathchardef\barwedge="2\msx@5A
+\mathchardef\doublebarwedge="2\msx@5B
+\mathchardef\angle="0\msx@5C
+\mathchardef\measuredangle="0\msx@5D
+\mathchardef\sphericalangle="0\msx@5E
+\mathchardef\varpropto="3\msx@5F
+\mathchardef\smallsmile="3\msx@60
+\mathchardef\smallfrown="3\msx@61
+\mathchardef\Subset="3\msx@62
+\mathchardef\Supset="3\msx@63
+\mathchardef\Cup="2\msx@64
+\let\doublecup\Cup
+\mathchardef\Cap="2\msx@65
+\let\doublecap\Cap
+\mathchardef\curlywedge="2\msx@66
+\mathchardef\curlyvee="2\msx@67
+\mathchardef\leftthreetimes="2\msx@68
+\mathchardef\rightthreetimes="2\msx@69
+\mathchardef\subseteqq="3\msx@6A
+\mathchardef\supseteqq="3\msx@6B
+\mathchardef\bumpeq="3\msx@6C
+\mathchardef\Bumpeq="3\msx@6D
+\mathchardef\lll="3\msx@6E
+\let\llless\lll
+\mathchardef\ggg="3\msx@6F
+\let\gggtr\ggg
+\mathchardef\circledS="0\msx@73
+\mathchardef\pitchfork="3\msx@74
+\mathchardef\dotplus="2\msx@75
+\mathchardef\backsim="3\msx@76
+\mathchardef\backsimeq="3\msx@77
+\mathchardef\complement="0\msx@7B
+\mathchardef\intercal="2\msx@7C
+\mathchardef\circledcirc="2\msx@7D
+\mathchardef\circledast="2\msx@7E
+\mathchardef\circleddash="2\msx@7F
+\def\ulcorner{\delimiter"4\msx@70\msx@70 }
+\def\urcorner{\delimiter"5\msx@71\msx@71 }
+\def\llcorner{\delimiter"4\msx@78\msx@78 }
+\def\lrcorner{\delimiter"5\msx@79\msx@79 }
+\def\yen{{\mathhexbox@\msx@55 }}
+\def\checkmark{{\mathhexbox@\msx@58 }}
+\def\circledR{{\mathhexbox@\msx@72 }}
+\def\maltese{{\mathhexbox@\msx@7A }}
+\mathchardef\lvertneqq="3\msy@00
+\mathchardef\gvertneqq="3\msy@01
+\mathchardef\nleq="3\msy@02
+\mathchardef\ngeq="3\msy@03
+\mathchardef\nless="3\msy@04
+\mathchardef\ngtr="3\msy@05
+\mathchardef\nprec="3\msy@06
+\mathchardef\nsucc="3\msy@07
+\mathchardef\lneqq="3\msy@08
+\mathchardef\gneqq="3\msy@09
+\mathchardef\nleqslant="3\msy@0A
+\mathchardef\ngeqslant="3\msy@0B
+\mathchardef\lneq="3\msy@0C
+\mathchardef\gneq="3\msy@0D
+\mathchardef\npreceq="3\msy@0E
+\mathchardef\nsucceq="3\msy@0F
+\mathchardef\precnsim="3\msy@10
+\mathchardef\succnsim="3\msy@11
+\mathchardef\lnsim="3\msy@12
+\mathchardef\gnsim="3\msy@13
+\mathchardef\nleqq="3\msy@14
+\mathchardef\ngeqq="3\msy@15
+\mathchardef\precneqq="3\msy@16
+\mathchardef\succneqq="3\msy@17
+\mathchardef\precnapprox="3\msy@18
+\mathchardef\succnapprox="3\msy@19
+\mathchardef\lnapprox="3\msy@1A
+\mathchardef\gnapprox="3\msy@1B
+\mathchardef\nsim="3\msy@1C
+\mathchardef\napprox="3\msy@1D
+\mathchardef\varsubsetneq="3\msy@20
+\mathchardef\varsupsetneq="3\msy@21
+\mathchardef\nsubseteqq="3\msy@22
+\mathchardef\nsupseteqq="3\msy@23
+\mathchardef\subsetneqq="3\msy@24
+\mathchardef\supsetneqq="3\msy@25
+\mathchardef\varsubsetneqq="3\msy@26
+\mathchardef\varsupsetneqq="3\msy@27
+\mathchardef\subsetneq="3\msy@28
+\mathchardef\supsetneq="3\msy@29
+\mathchardef\nsubseteq="3\msy@2A
+\mathchardef\nsupseteq="3\msy@2B
+\mathchardef\nparallel="3\msy@2C
+\mathchardef\nmid="3\msy@2D
+\mathchardef\nshortmid="3\msy@2E
+\mathchardef\nshortparallel="3\msy@2F
+\mathchardef\nvdash="3\msy@30
+\mathchardef\nVdash="3\msy@31
+\mathchardef\nvDash="3\msy@32
+\mathchardef\nVDash="3\msy@33
+\mathchardef\ntrianglerighteq="3\msy@34
+\mathchardef\ntrianglelefteq="3\msy@35
+\mathchardef\ntriangleleft="3\msy@36
+\mathchardef\ntriangleright="3\msy@37
+\mathchardef\nleftarrow="3\msy@38
+\mathchardef\nrightarrow="3\msy@39
+\mathchardef\nLeftarrow="3\msy@3A
+\mathchardef\nRightarrow="3\msy@3B
+\mathchardef\nLeftrightarrow="3\msy@3C
+\mathchardef\nleftrightarrow="3\msy@3D
+\mathchardef\divideontimes="2\msy@3E
+\mathchardef\varnothing="0\msy@3F
+\mathchardef\nexists="0\msy@40
+\mathchardef\mho="0\msy@66
+\mathchardef\eth="0\msy@67
+\mathchardef\beth="0\msy@69
+\mathchardef\gimel="0\msy@6A
+\mathchardef\daleth="0\msy@6B
+\mathchardef\lessdot="3\msy@6C
+\mathchardef\gtrdot="3\msy@6D
+\mathchardef\ltimes="2\msy@6E
+\mathchardef\rtimes="2\msy@6F
+\mathchardef\shortmid="3\msy@70
+\mathchardef\shortparallel="3\msy@71
+\mathchardef\smallsetminus="2\msy@72
+\mathchardef\thicksim="3\msy@73
+\mathchardef\thickapprox="3\msy@74
+\mathchardef\approxeq="3\msy@75
+\mathchardef\succapprox="3\msy@76
+\mathchardef\precapprox="3\msy@77
+\mathchardef\curvearrowleft="3\msy@78
+\mathchardef\curvearrowright="3\msy@79
+\mathchardef\digamma="0\msy@7A
+\mathchardef\varkappa="0\msy@7B
+\mathchardef\hslash="0\msy@7D
+\mathchardef\hbar="0\msy@7E
+\mathchardef\backepsilon="3\msy@7F
+\def\Bbb{\relaxnext@\ifmmode\let\next\Bbb@\else
+ \def\next{\Err@{Use \string\Bbb\space only in math mode}}\fi\next}
+\def\Bbb@#1{{\Bbb@@{#1}}}
+\def\Bbb@@#1{\noaccents@\fam\msyfam#1}
+%\def\fontlist@{\\{\tenrm}\\{\sevenrm}\\{\fiverm}\\{\teni}\\{\seveni}%
+%\\{\fivei}\\{\tensy}\\{\sevensy}\\{\fivesy}\\{\tenex}\\{\tenbf}\\{\sevenbf}%
+%\\{\fivebf}\\{\tensl}\\{\tenit}%
+% AmS-Fonts Anfang
+%\\{\tenmsx}\\{\sevenmsx}\\{\fivemsx}\\{\tenmsy}\\{\sevenmsy}\\{\fivemsy }%
+% AmS-Fonts Anfang
+
+\def\AmSTeX{{$\cal A$}\kern-.1667em\lower.5ex\hbox
+ {$\cal M$}\kern-.125em{$\cal S$}-\TeX}
+
+\catcode`@=12 % at signs are no longer letters
diff --git a/obsolete/macros/latex209/contrib/misc/amssymbols.sty b/obsolete/macros/latex209/contrib/misc/amssymbols.sty
new file mode 100644
index 0000000000..fda9335849
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/amssymbols.sty
@@ -0,0 +1,292 @@
+% Adapted by Charles Karney (Karney%PPC.MFENET@NMFECC.ARPA) 1986/07/28.
+% This style option loads up the AMS symbol fonts and associated symbol
+% definitions. See the Nov 85 issue of TUGBoat for a listing of these
+% symbols. Only \textfont, \scriptfont, and \scriptscriptfont sizes are
+% provided. 10pt, 11pt, 12pt styles are supported.
+
+%% This is the LATEX version of MSSYMB.TEX.
+%% Changes:
+%% (1) take out the \catcode`\@ business (LaTeX takes care of this)
+%% (2) Set font sizes according to \@ptsize
+
+%
+% ***** MSSYMB.TeX ***** 4 Nov 85
+%
+% This file contains the definitions for the symbols in the two
+% "extra symbols" fonts created at the American Math. Society.
+
+%% \catcode`\@=11
+
+%% \font\tenmsx=msxm10
+%% \font\sevenmsx=msxm7
+%% \font\fivemsx=msxm5
+%% \font\tenmsy=msym10
+%% \font\sevenmsy=msym7
+%% \font\fivemsy=msym5
+
+\ifcase\@ptsize
+ \font\tenmsx=msxm10
+ \font\sevenmsx=msxm7
+ \font\fivemsx=msxm5
+ \font\tenmsy=msym10
+ \font\sevenmsy=msym7
+ \font\fivemsy=msym5
+\or
+ \font\tenmsx=msxm10 scaled \magstephalf
+ \font\sevenmsx=msxm8
+ \font\fivemsx=msxm6
+ \font\tenmsy=msym10 scaled \magstephalf
+ \font\sevenmsy=msym8
+ \font\fivemsy=msym6
+\or
+ \font\tenmsx=msxm10 scaled \magstep1
+ \font\sevenmsx=msxm8
+ \font\fivemsx=msxm6
+ \font\tenmsy=msym10 scaled \magstep1
+ \font\sevenmsy=msym8
+ \font\fivemsy=msym6
+\fi
+
+\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\centerdot="2\msx@05
+\mathchardef\lozenge="0\msx@06
+\mathchardef\blacklozenge="0\msx@07
+\mathchardef\circlearrowright="3\msx@08
+\mathchardef\circlearrowleft="3\msx@09
+\mathchardef\rightleftharpoons="3\msx@0A
+\mathchardef\leftrightharpoons="3\msx@0B
+\mathchardef\boxminus="2\msx@0C
+\mathchardef\Vdash="3\msx@0D
+\mathchardef\Vvdash="3\msx@0E
+\mathchardef\vDash="3\msx@0F
+\mathchardef\twoheadrightarrow="3\msx@10
+\mathchardef\twoheadleftarrow="3\msx@11
+\mathchardef\leftleftarrows="3\msx@12
+\mathchardef\rightrightarrows="3\msx@13
+\mathchardef\upuparrows="3\msx@14
+\mathchardef\downdownarrows="3\msx@15
+\mathchardef\upharpoonright="3\msx@16
+\let\restriction=\upharpoonright
+\mathchardef\downharpoonright="3\msx@17
+\mathchardef\upharpoonleft="3\msx@18
+\mathchardef\downharpoonleft="3\msx@19
+\mathchardef\rightarrowtail="3\msx@1A
+\mathchardef\leftarrowtail="3\msx@1B
+\mathchardef\leftrightarrows="3\msx@1C
+\mathchardef\rightleftarrows="3\msx@1D
+\mathchardef\Lsh="3\msx@1E
+\mathchardef\Rsh="3\msx@1F
+\mathchardef\rightsquigarrow="3\msx@20
+\mathchardef\leftrightsquigarrow="3\msx@21
+\mathchardef\looparrowleft="3\msx@22
+\mathchardef\looparrowright="3\msx@23
+\mathchardef\circeq="3\msx@24
+\mathchardef\succsim="3\msx@25
+\mathchardef\gtrsim="3\msx@26
+\mathchardef\gtrapprox="3\msx@27
+\mathchardef\multimap="3\msx@28
+\mathchardef\therefore="3\msx@29
+\mathchardef\because="3\msx@2A
+\mathchardef\doteqdot="3\msx@2B
+\let\Doteq=\doteqdot
+\mathchardef\triangleq="3\msx@2C
+\mathchardef\precsim="3\msx@2D
+\mathchardef\lesssim="3\msx@2E
+\mathchardef\lessapprox="3\msx@2F
+\mathchardef\eqslantless="3\msx@30
+\mathchardef\eqslantgtr="3\msx@31
+\mathchardef\curlyeqprec="3\msx@32
+\mathchardef\curlyeqsucc="3\msx@33
+\mathchardef\preccurlyeq="3\msx@34
+\mathchardef\leqq="3\msx@35
+\mathchardef\leqslant="3\msx@36
+\mathchardef\lessgtr="3\msx@37
+\mathchardef\backprime="0\msx@38
+\mathchardef\risingdotseq="3\msx@3A
+\mathchardef\fallingdotseq="3\msx@3B
+\mathchardef\succcurlyeq="3\msx@3C
+\mathchardef\geqq="3\msx@3D
+\mathchardef\geqslant="3\msx@3E
+\mathchardef\gtrless="3\msx@3F
+\mathchardef\sqsubset="3\msx@40
+\mathchardef\sqsupset="3\msx@41
+\mathchardef\vartriangleright="3\msx@42
+\mathchardef\vartriangleleft="3\msx@43
+\mathchardef\trianglerighteq="3\msx@44
+\mathchardef\trianglelefteq="3\msx@45
+\mathchardef\bigstar="0\msx@46
+\mathchardef\between="3\msx@47
+\mathchardef\blacktriangledown="0\msx@48
+\mathchardef\blacktriangleright="3\msx@49
+\mathchardef\blacktriangleleft="3\msx@4A
+\mathchardef\vartriangle="3\msx@4D
+\mathchardef\blacktriangle="0\msx@4E
+\mathchardef\triangledown="0\msx@4F
+\mathchardef\eqcirc="3\msx@50
+\mathchardef\lesseqgtr="3\msx@51
+\mathchardef\gtreqless="3\msx@52
+\mathchardef\lesseqqgtr="3\msx@53
+\mathchardef\gtreqqless="3\msx@54
+\mathchardef\Rrightarrow="3\msx@56
+\mathchardef\Lleftarrow="3\msx@57
+\mathchardef\veebar="2\msx@59
+\mathchardef\barwedge="2\msx@5A
+\mathchardef\doublebarwedge="2\msx@5B
+\mathchardef\angle="0\msx@5C
+\mathchardef\measuredangle="0\msx@5D
+\mathchardef\sphericalangle="0\msx@5E
+\mathchardef\varpropto="3\msx@5F
+\mathchardef\smallsmile="3\msx@60
+\mathchardef\smallfrown="3\msx@61
+\mathchardef\Subset="3\msx@62
+\mathchardef\Supset="3\msx@63
+\mathchardef\Cup="2\msx@64
+\let\doublecup=\Cup
+\mathchardef\Cap="2\msx@65
+\let\doublecap=\Cap
+\mathchardef\curlywedge="2\msx@66
+\mathchardef\curlyvee="2\msx@67
+\mathchardef\leftthreetimes="2\msx@68
+\mathchardef\rightthreetimes="2\msx@69
+\mathchardef\subseteqq="3\msx@6A
+\mathchardef\supseteqq="3\msx@6B
+\mathchardef\bumpeq="3\msx@6C
+\mathchardef\Bumpeq="3\msx@6D
+\mathchardef\lll="3\msx@6E
+\let\llless=\lll
+\mathchardef\ggg="3\msx@6F
+\let\gggtr=\ggg
+\mathchardef\circledS="0\msx@73
+\mathchardef\pitchfork="3\msx@74
+\mathchardef\dotplus="2\msx@75
+\mathchardef\backsim="3\msx@76
+\mathchardef\backsimeq="3\msx@77
+\mathchardef\complement="0\msx@7B
+\mathchardef\intercal="2\msx@7C
+\mathchardef\circledcirc="2\msx@7D
+\mathchardef\circledast="2\msx@7E
+\mathchardef\circleddash="2\msx@7F
+\def\ulcorner{\delimiter"4\msx@70\msx@70 }
+\def\urcorner{\delimiter"5\msx@71\msx@71 }
+\def\llcorner{\delimiter"4\msx@78\msx@78 }
+\def\lrcorner{\delimiter"5\msx@79\msx@79 }
+\def\yen{\mathhexbox\msx@55 }
+\def\checkmark{\mathhexbox\msx@58 }
+\def\circledR{\mathhexbox\msx@72 }
+\def\maltese{\mathhexbox\msx@7A }
+\mathchardef\lvertneqq="3\msy@00
+\mathchardef\gvertneqq="3\msy@01
+\mathchardef\nleq="3\msy@02
+\mathchardef\ngeq="3\msy@03
+\mathchardef\nless="3\msy@04
+\mathchardef\ngtr="3\msy@05
+\mathchardef\nprec="3\msy@06
+\mathchardef\nsucc="3\msy@07
+\mathchardef\lneqq="3\msy@08
+\mathchardef\gneqq="3\msy@09
+\mathchardef\nleqslant="3\msy@0A
+\mathchardef\ngeqslant="3\msy@0B
+\mathchardef\lneq="3\msy@0C
+\mathchardef\gneq="3\msy@0D
+\mathchardef\npreceq="3\msy@0E
+\mathchardef\nsucceq="3\msy@0F
+\mathchardef\precnsim="3\msy@10
+\mathchardef\succnsim="3\msy@11
+\mathchardef\lnsim="3\msy@12
+\mathchardef\gnsim="3\msy@13
+\mathchardef\nleqq="3\msy@14
+\mathchardef\ngeqq="3\msy@15
+\mathchardef\precneqq="3\msy@16
+\mathchardef\succneqq="3\msy@17
+\mathchardef\precnapprox="3\msy@18
+\mathchardef\succnapprox="3\msy@19
+\mathchardef\lnapprox="3\msy@1A
+\mathchardef\gnapprox="3\msy@1B
+\mathchardef\nsim="3\msy@1C
+\mathchardef\napprox="3\msy@1D
+\mathchardef\varsubsetneq="3\msy@20
+\mathchardef\varsupsetneq="3\msy@21
+\mathchardef\nsubseteqq="3\msy@22
+\mathchardef\nsupseteqq="3\msy@23
+\mathchardef\subsetneqq="3\msy@24
+\mathchardef\supsetneqq="3\msy@25
+\mathchardef\varsubsetneqq="3\msy@26
+\mathchardef\varsupsetneqq="3\msy@27
+\mathchardef\subsetneq="3\msy@28
+\mathchardef\supsetneq="3\msy@29
+\mathchardef\nsubseteq="3\msy@2A
+\mathchardef\nsupseteq="3\msy@2B
+\mathchardef\nparallel="3\msy@2C
+\mathchardef\nmid="3\msy@2D
+\mathchardef\nshortmid="3\msy@2E
+\mathchardef\nshortparallel="3\msy@2F
+\mathchardef\nvdash="3\msy@30
+\mathchardef\nVdash="3\msy@31
+\mathchardef\nvDash="3\msy@32
+\mathchardef\nVDash="3\msy@33
+\mathchardef\ntrianglerighteq="3\msy@34
+\mathchardef\ntrianglelefteq="3\msy@35
+\mathchardef\ntriangleleft="3\msy@36
+\mathchardef\ntriangleright="3\msy@37
+\mathchardef\nleftarrow="3\msy@38
+\mathchardef\nrightarrow="3\msy@39
+\mathchardef\nLeftarrow="3\msy@3A
+\mathchardef\nRightarrow="3\msy@3B
+\mathchardef\nLeftrightarrow="3\msy@3C
+\mathchardef\nleftrightarrow="3\msy@3D
+\mathchardef\divideontimes="2\msy@3E
+\mathchardef\varnothing="0\msy@3F
+\mathchardef\nexists="0\msy@40
+\mathchardef\mho="0\msy@66
+\mathchardef\thorn="0\msy@67
+\mathchardef\beth="0\msy@69
+\mathchardef\gimel="0\msy@6A
+\mathchardef\daleth="0\msy@6B
+\mathchardef\lessdot="3\msy@6C
+\mathchardef\gtrdot="3\msy@6D
+\mathchardef\ltimes="2\msy@6E
+\mathchardef\rtimes="2\msy@6F
+\mathchardef\shortmid="3\msy@70
+\mathchardef\shortparallel="3\msy@71
+\mathchardef\smallsetminus="2\msy@72
+\mathchardef\thicksim="3\msy@73
+\mathchardef\thickapprox="3\msy@74
+\mathchardef\approxeq="3\msy@75
+\mathchardef\succapprox="3\msy@76
+\mathchardef\precapprox="3\msy@77
+\mathchardef\curvearrowleft="3\msy@78
+\mathchardef\curvearrowright="3\msy@79
+\mathchardef\digamma="0\msy@7A
+\mathchardef\varkappa="0\msy@7B
+\mathchardef\hslash="0\msy@7D
+\mathchardef\hbar="0\msy@7E
+\mathchardef\backepsilon="3\msy@7F
+% Use the next 4 lines with AMS-TeX:
+%\def\Bbb{\relaxnext@\ifmmode\let\next\Bbb@\else
+% \def\next{\Err@{Use \string\Bbb\space only in math mode}}\fi\next}
+%\def\Bbb@#1{{\Bbb@@{#1}}}
+%\def\Bbb@@#1{\noaccents@\fam\msyfam#1}
+% Use the next 4 lines if NOT using AMS-TeX:
+\def\Bbb{\ifmmode\let\next\Bbb@\else
+ \def\next{\errmessage{Use \string\Bbb\space only in math mode}}\fi\next}
+\def\Bbb@#1{{\Bbb@@{#1}}}
+\def\Bbb@@#1{\fam\msyfam#1}
+
+%% \catcode`\@=12
diff --git a/obsolete/macros/latex209/contrib/misc/askinclude.sty b/obsolete/macros/latex209/contrib/misc/askinclude.sty
new file mode 100644
index 0000000000..ed0b74d1e8
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/askinclude.sty
@@ -0,0 +1,96 @@
+% askinclude.sty - interactive asking of included files
+%
+% VERSION 1.0 November 7, 1991
+%
+% (c) 1991 by Pablo A. Straub. Permission is granted to copy and use this
+% in any way and for any purpose, except direct commercial advantage,
+% provided that you retain this copyright notice.
+%
+% HISTORY
+%
+% 0.95 11/05/91 First beta-test version (asked two questions)
+% 0.99 11/05/91 Second beta-test version (asks one question; uses * and -.)
+% 1.0 11/07/91 Changed prompts (sent to comp.text.tex)
+%
+% Please send enhancements and corrections to straub@cs.umd.edu.
+%
+% USAGE
+%
+% \documentstyle[...,askinclude,...]{...}
+%
+% HOW IT WORKS
+%
+% The askinclude style option asks the user which files to include. If
+% the user presses return, the files from the previous run are included
+% automatically (except on the first run, in which case all files are
+% included); if the answer is * all files are included; if the answer
+% is - no files are included; otherwise the specified files (separated
+% by commas, with no embedded spaces) are included.
+%
+% RESTRICTIONS
+%
+% This file redefines \document, the command executed with \begin{document}.
+% It may be incompatible with other styles that also redefine \document.
+%
+% The user's input is not validated. Anything that is not a * or a - or an
+% empty line is passed to \includeonly.
+%
+% ACKNOWLEDGEMENT
+%
+% Tom Scavo (scavo@cie.uoregon.edu) suggested saving the include file list
+% from the previous run and a simplified user interface.
+
+
+\def\@includeonly{\@gobble} % assume we do not include from last run
+
+\def\@inputs{*} % assume all files included
+
+
+% determine which files to include
+
+\def\@star{*} % used for comparing user's answer
+\def\@minus{-} % ditto
+
+\typeout { }
+\typeout {Enter file(s) to include (separated by commas and no spaces),}
+\typeout {or enter * for all files, or enter - for none, or}
+\typein [\inputfiles]{press Return if this run is the same as the last.}
+
+\ifx\inputfiles\@star % all files included
+ % do nothing
+\else \ifx\inputfiles\@minus % no files included
+ \includeonly{}
+ \def\@inputs{}
+\else \ifx\inputfiles\empty % include according to previous run
+ \def\@includeonly#1{%
+ \gdef\@inputs{#1}
+ \ifx\@inputs\@star \else \global\@partswtrue\global\edef\@partlist{#1}\fi}
+\else
+ \def\@inputs{\inputfiles} % include these files
+ \includeonly{\inputfiles}
+\fi\fi\fi
+
+
+% \document - redefinition of \begin{document} to handle last included files
+
+\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
+ \makeatletter\let\@writefile\@gobbletwo
+ \@input{\jobname.aux}\endgroup
+ \if@filesw \immediate\openout\@mainaux=\jobname.aux
+ \immediate\write\@mainaux{\relax}%
+ \immediate\write\@mainaux{\string\@includeonly\string{\@inputs\string}}%NEW
+ \fi
+ \def\@includeonly{} %NEW
+ \def\do##1{\let ##1\@notprerr}
+ \@preamblecmds
+ \let\do\noexpand
+ \@normalsize\everypar{}}
+
+% END OF FILE askinclude.sty
diff --git a/obsolete/macros/latex209/contrib/misc/braille.sty b/obsolete/macros/latex209/contrib/misc/braille.sty
new file mode 100644
index 0000000000..f8f974dc48
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/braille.sty
@@ -0,0 +1,49 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% LaTeX-Style zur Definition der 6-Punkt Braille-Schrift-Umgebung
+% V. 1.0 11.11.88
+%
+% copyright FernUniversit\"at Hagen Nicht-kommerzielle
+% Rechenzentrum Weitergabe an wissenschaft-
+% J. Breuer / G. Barg liche Institutionen erlaubt
+% EARN: RZB02 at DHAFEU11
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Zugeh\"orige Dateien:
+% braille.sty diese Datei
+% braille.tfm
+% braille.pk (bzw. braille.1500pk) oder:
+% braille.pxl (bzw. braille.1500pxl)
+% Ausgabe-Zeichenvorrat:
+% alle druckbaren Zeichen nach deutscher 7 Bit ASCII /
+% 6-Punkt Braille-Zuordnung (also ohne Gro\ss{}buchstaben)
+% Aufruf:
+% \begin{braille} ... \end{braille}
+% Eingabe:
+% Gro\ss{}- und Kleinbuchstaben benutzbar,
+% Umlaute und und Esszet nach der \"ublichen TeX-Konvention
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newenvironment{braille}%
+{\font\braille=braille
+\braille
+\def\"##1{\if##1a\char91%
+\else\if##1o\char92%
+\else\if##1u\char93%
+\else\if##1A\char91%
+\else\if##1O\char92%
+\else\if##1U\char93%
+\else\if##1s\char126%
+\fi\fi\fi\fi\fi\fi\fi}%
+\def\ss##1{\char126}%
+\begin{raggedright}
+\spaceskip=18pt
+\xspaceskip=18pt
+\newcount\oldtolerance \oldtolerance=\tolerance
+\newcount\oldpretolerance \oldpretolerance=\pretolerance
+\newcount\oldhyphenpenalty \oldhyphenpenalty=\hyphenpenalty
+\tolerance=10000\pretolerance=-10000\hyphenpenalty=0%trennt trotz flatterrand
+}%
+{
+\tolerance=\oldtolerance
+\pretolerance=\oldpretolerance
+\hyphenpenalty=\oldhyphenpenalty
+\end{raggedright}
+}%
diff --git a/obsolete/macros/latex209/contrib/misc/briefdoc.tex b/obsolete/macros/latex209/contrib/misc/briefdoc.tex
new file mode 100644
index 0000000000..315ae6b1e7
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/briefdoc.tex
@@ -0,0 +1,283 @@
+\documentstyle[a4]{artikel1}
+
+\begin{document}
+\title{De Nederlandse Briefstijl}
+\author{Victor Eijkhout}
+\maketitle
+
+\begin{abstract}
+Een bescheiden handleiding voor de Nederlandse briefstijl,
+met opmerkingen over het wat, hoe en waarom.
+\end{abstract}
+
+\section{Verantwoording}
+
+De Nederlandse \LaTeX-stijl `brief' conformeert zich aan
+NEN-normen\footnote{Mijn zeer grote dank aan Jan Grootenhuis
+die mijn aandacht vestigde op het bestaan van de normbladen.}
+1026 voor briefpapier, 3162 voor het indelen van documenten,
+1025 voor enveloppen, en 3516 voor het ontwerp van formulieren.
+
+Briefontwerp is controversieel. Iedereen heeft een smaak, en
+met name bij briefpapier is die vaak zeer uitgesproken.
+Ik wil beklemtonen dat ik bij de implementatie van de briefstijl
+bijna nergens mijn smaak nodig heb gehad. Dankzij de NEN-normen
+is het ontwerp van briefpapier een zaak van exacte wetenschap,
+niet van schone kunsten.
+
+Deze stijl is redelijk incompatibel met de \LaTeX\ `letter' stijl.
+Hij is in bescheiden mate met opties in te stellen,
+en de sleutelwoorden kunnen uit een aantal talen
+gekozen worden. Alle teksten zijn verder geparametriseerd.
+Het is dus goed mogelijk stijlopties te maken om deze stijl
+aan een specifieke omgeving aan te passen.
+
+Als de gebruiker geen gebruik maakt van een voorgedrukt briefhoofd,
+kan hij zijn eigen briefhoofd in \LaTeX\ implementeren, of
+door de stijl een briefhoofd geleverd krijgen. Het ontwerp van
+dit briefhoofd is de enige plaats waar mijn smaak zich heeft
+doen gelden, maar zelfs dit ontwerp heb ik gejat uit een NEN-norm.
+
+Opmerking: zeker bij het gebruik van vensterenveloppen is het
+voor de briefstijl
+van cruciaal belang dat de gebruikte printer goed afgesteld
+staat. Dit valt te controleren aan de hand van het adres:
+dit dient op 33mm van de linker kantlijn te staan, terwijl
+de `baseline' van de eerste regel zich 59mm onder de bovenrand
+van het papier dient te bevinden.
+
+\section{Velden van het briefpapier}
+
+Deze sectie behandelt de indeling van brieven aan de hand
+van NEN-norm~1026.
+
+\subsection{Marges}
+
+Alle marges conformeren zich aan NEN-1026, behalve de
+rechtermarge die ik voor een evenwichtiger bladverdeling
+gelijk gemaakt heb aan de linkermarge.
+Met een gezette brief ziet dit er beduidend beter uit.
+
+De linkermarge is 33 millimeter; er zijn nog geen voorzieningen
+voor de versmalde marge van 20 millimeter, die voor facturen
+beter is.
+Dit zal misschien ooit een optie worden.
+
+Om aan te sluiten by traditionele getypte briefopmaak
+is `raggedright' bij verstek ingeschakeld.
+Aangezien briefhoofd, referentieregels, en voetregel de brief
+vrij breed kunnen maken, is de corpsgrootte bij verstek 11-punt.
+10~en~12 zijn opties.
+
+\subsection{Briefhoofd}
+
+Het moeilijkste deel van een brief, en de voornaamste plek waar
+de ontwerper van briefpapier zijn creativiteit kwijt kan
+is het briefhoofd.
+In de huidige stijl heeft de gebruiker drie mogelijkheden.
+
+Een. Hij gebruikt voorgedrukt briefpapier. Als dit zich een
+beetje aan NEN-normen houdt is er verder niets aan de hand.
+
+Twee. De gebruiker kan zelf een macro \verb.\briefhoofd. schrijven.
+Als dit binnen de hoogte van
+\verb.\@headheight. blijft, is er niets aan de hand;
+voorkeursbreedte is \verb.4\refveldbreedte., dat wil zeggen, de
+breedte van de referentieregel.
+
+Drie. Er is een macro van twee argumenten, `maakbriefhoofd',
+die een briefhoofd levert dat ge\"\i nspireerd is op de
+voorbeeldbrief in NEN-1026. Voorbeeld:
+\begin{verbatim}
+\maakbriefhoofd{WG13}{Werkgroep 13\\ Mathematisch Instituut
+ \\ Toernooiveld 5\\ 6525 ED Nijmegen}\end{verbatim}
+Het eerste argument levert
+een tekst op die links boven een verticale lijn gezet wordt.
+Het links aanlijnen gebeurt met \verb.\hfil., dus met een
+\verb.\hfill. in het argument kan een deel van het hoofd naar
+rechts worden geschoven.
+
+Het tweede argument van `maakbriefhoofd' wordt als een blokje tekst
+rechts onder de lijn in het briefhoofd gehangen.
+In principe is dit argument er voor het adres van de afzender.
+Er is echter een mogelijkheid het antwoordadres
+in het adresveld op te nemen, zie hier onder.
+In het briefhoofd kan dan een omschrijving als
+`adviesburo voor gespecialiseerde algemeenheden' staan.
+
+Het tekstblok in het tweede argument lijnt links met de datum en
+het vierde voetitem (zie onder), en blijft idealiter binnen
+de marge van de pagina. Er worden echter geen
+`overfull box' meldingen gegeven als de tekst te breed is.
+
+Er is een `sterretje'-versie van `maakbriefhoofd';
+deze geeft op de vervolgbladen alleen het eerste argument
+plus de streep. Dat maakt de kop van de pagina wat minder
+zwaar.
+
+\subsection{Adresveld}
+
+Het adresveld wordt zodanig geplaatst dat het in het
+venster van een vensterenvelop zichtbaar is als het
+venster 5cm onder de bovenrand van de envelop begint.
+Omdat er zowel vensterenveloppen zijn met het venster
+links als rechts, is er een optie {\tt adresrechts}
+die het adresveld rechts plaatst. De voorkeurspositie
+is echter links; er blijft dan namelijk rechts een
+`ontvangerruimte' waar de geadresseerde stempels (`binnen
+gekomen dd.') en dergelijke kan zetten.
+
+Het adresveld komt op dezelfde manier tot stand als in de
+oude `letter' stijl: de gebruiker geeft
+\begin{verbatim}
+\begin{brief}{Jan \TeX er\\ Overfullplein 10000 \\ Baselinestad}
+\end{verbatim}
+in, en hieruit destilleert \LaTeX\ de naam en het verdere
+adres van de geadresseerde.
+De naam komt nog voor op de vervolgbladen.
+
+Het schijnt van de PTT te mogen dat er (helemaal boven) in het ruitje
+van de vensterenvelop een antwoordadres wordt opgenomen,
+als dat maar gebeurt zodanig dat het geen verwarring
+schept met het adres. Er is een commando \verb.\antwoordadres.
+dat een adres als argument accepteert,
+met de regels gescheiden door~\verb.\\..
+Voorbeeld:
+\begin{verbatim}
+\maakbriefhoofd{WG13}{De de facto standaard \\ in Vaderlandse
+ \\ \TeX verwerking}
+\antwoordadres{Mathematisch Instituut \\ Toernooiveld 5
+ \\ 6525 ED Nijmegen}\end{verbatim}
+
+
+\subsection{De Referentieregels}
+
+Direct onder het adresveld volgt ruimte voor gegevens
+van de geadresseerde, `Uw brief van' en `Uw kenmerk',
+en van afzender, `Ons kenmerk' en `Datum'.
+
+Voor deze referentiegegevens staan de gebruiker
+de commando's \verb.\uwbriefvan., \verb.\uwkenmerk.,
+\verb.\onskenmerk., en \verb.\datum. ter beschikking.
+Deze macro's hebben elk \'e\'en argument tussen accolades.
+De datum wordt automatisch ingevuld; niet ingevulde
+gegevens worden niet opgenomen.
+
+De teksten die hier in de kopjes staan worden
+in eerste instantie door de taalopties bepaald.
+Verstekwaarde is natuurlijk `nederlands', maar er
+zijn `engels', `amerikaans', en `duits' beschikbaar.
+Ik houd me aanbevolen voor correcte terminologie
+in andere talen; enkele fouten in de Duitse termen
+zijn op aanwijzing van Marc van Woerkom verbeterd.
+Wie geeft me de Franse termen?
+
+De teksten in de referentieregel
+zijn waardes van de macros
+\verb.\uwbriefvantekst., \verb.\uwkenmerktekst.,
+\verb.\onskenmerktekst., en \verb.\datumtekst..
+Het is dus mogelijk `doorkiesnummer' in plaats van `ons kenmerk'
+te krijgen door deze tekst
+als `onskernmerktekst' te declareren, bij voorbeeld
+met \verb.\renewcommand. in het preamble.
+
+
+\subsection{De tekst van de brief}
+
+Hier hoeft op deze plaats niets over gezegd te worden,
+anders dan dat de aanhef, net als in de `letter' stijl
+met \verb.\opening. gebeurt. Er is een `betreft' commando.
+
+Ook de afsluiting staat in het \LaTeX-boek beschreven,
+maar de commandonamen zijn Nederlands geworden:
+`ondertekening' (was `signature'),
+`afsluiting' (was `closing'), `ps', en `cc' Dit is Engels,
+maar bijna niemand weet wat het betekent.
+Verder is er zowel een `bijlage' als
+`bijlagen' (was~`encl').
+
+
+\subsection{Voetruimte}
+
+`In de voetruimte' (ik citeer NEN-1026) `komen die gegevens
+van de afzender die niet reeds in het briefhoofd zijn
+vermeld'. De keuze hiervan wordt aan de gebruiker overgelaten.
+Enkele suggesties zijn: kantooradres, telefoonnummer van de
+centrale, faxnummer, inschrijvingsnummer en -plaats in het
+handelsregister.
+
+Er kunnen maximaal vier voetitems zijn.
+Items verschijnen op de pagina in de volgorder waarin de
+gebruiker ze gedeclareerd heeft.
+Bij twee items of meer is het laatste rechtsgeplaatst. Goeie truc.
+
+Omdat hier beduidend meer keuze is dan bij de referentieregel,
+moet de gebruiker zelf het hoofdje en de daaronder
+geplaatste tekst van items in de voetregel voorschrijven.
+De macro van twee argumenten \verb.\voetitem. staat
+hem/haar daartoe ter beschikking. Elke van de argumenten
+kan meer dan \'e\'en regel lang zijn, gebruik~\verb.\\..
+Voorbeeld:
+\begin{verbatim}
+\voetitem{fax:}{12345 Winat nl}
+\voetitem{telefoon:}{080-613169\\ bgg: 612986}
+\voetitem{telefoon\\ priv\'e:}{080-448664}\end{verbatim}
+
+\subsection{Hulplijntjes; vouwstreepjes}
+
+Door een optie `streepjes' in te schakelen, is het briefpapier
+van hulpstreepjes te voorzien.
+
+Volgens NEN-1026 heeft briefpapier een instelstreepje halverwege,
+niet voor vouwen in twee\"en zoals hele volksstammen denken, maar
+voor het aanlijnen van de perforator.
+Aan de rechterzijde van het blad zijn twee vouwstreepjes, een
+voor vouwen in drie\"en, en een voor vouwen in twee\"en.
+Geen van beide bevindt zich op de helft of een-derde van de
+papierhoogte. Omdat enveloppen hoger zijn dan een A4-tje gedeeld
+door 2 of~3 zou dat ook niet kunnen. Vensters, weet U wel?
+
+Ik ben uitgegaan van envelopformaten EN-C5 ($162\times229$mm
+voor een A4 in twee\"en) en EN-DL ($110\times220$ voor
+een A4 in drie\"en) volgens NEN-1025 en ISO 269-1979.
+Vouwstreepjes bevinden zich op 105mm en 155mm onder de
+bovenrand van het papier.
+
+
+\section{Vervolgbladen}
+
+Boven elk vervolgblad komt het briefhoofd (mogelijk verkort,
+zie boven) en een verkorte
+vorm van de referentieregel; deze regel bevat het
+bladnummer.
+
+Als het briefhoofd met daaronder de `vervolgreferentieregel'
+(galgje! galgje!) te veel ruimte innemen, gaat de extra ruimte
+af van de teksthoogte. Voor dit mechanisme durf ik niet
+voor de volle achtien-en-een-half procent in te staan.
+Het lijkt in ieder geval te werken.
+
+
+\section{Opties}
+
+De optie `adresrechts' is boven al genoemd, evenals `streepjes';
+verder is er nog een optie `typhulp' die een
+hulplijntje voor het aanlijnen van het adres zet. Misschien leuk
+als je deze stijl gebruikt voor briefpapier dat daarna voor de
+typmachine gebruikt wordt.
+
+Belangrijker zijn natuurlijk de taalopties.
+
+Voor mensen met te goede of slechte ogen zijn er de 10- en
+12-punts opties. Let op: de kopjes in de referentie- en
+voetregel blijven in {\tt cmssq8} staan.
+
+Puur voor het genoegen van de implementator van de briefstijl
+is er de optie `USletter' die het papier 19.7 millimeter
+korter maakt.
+
+\section{Labels}
+
+Pijnlijk punt. Dit moet nog gedaan worden.
+\end{document}
+
diff --git a/obsolete/macros/latex209/contrib/misc/captcont.sty b/obsolete/macros/latex209/contrib/misc/captcont.sty
new file mode 100644
index 0000000000..70f662ee25
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/captcont.sty
@@ -0,0 +1,16 @@
+% SubStyle file to permit the use of captions in continuations of floats.
+%
+% \captcont is like \caption, except that it doesn't update the counter, and
+% it doesn't make an entry in the list of figures or list of tables.
+
+\def\captcont{\@dblarg{\@captcont\@captype}}
+
+\long\def\@captcont#1[#2]#3{
+% \addcontentsline{\csname ext@#1\endcsname}{#1}{\protect\numberline{\csname
+% the#1\endcsname}{\ignorespaces #2}}
+ \par
+ \begingroup
+ \@parboxrestore
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
diff --git a/obsolete/macros/latex209/contrib/misc/changebar.sty b/obsolete/macros/latex209/contrib/misc/changebar.sty
new file mode 100644
index 0000000000..c0532ade63
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/changebar.sty
@@ -0,0 +1,155 @@
+% Change bar document-style option for LaTeX.
+%
+% Copyright (C) 1990 by David B. Johnson (dbj@titan.rice.edu).
+
+% 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}}
+
+\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}
+
+
diff --git a/obsolete/macros/latex209/contrib/misc/chappg.sty b/obsolete/macros/latex209/contrib/misc/chappg.sty
new file mode 100644
index 0000000000..8ed6c14249
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/chappg.sty
@@ -0,0 +1,15 @@
+% Author: Max Hailperin <max@nic.gac.edu>
+% Define \thepage to output chapter-page (such as 1-3, 5-2, etc.)
+% and have each chapter's page number begin on 1.
+% Original source: TeXMaG Vol. 5, No. 3 (part 1)
+%
+% \documentstyle[chappg]{report} or whatnot:
+
+\renewcommand{\thepage}{\arabic{chapter}-\arabic{page}}% chapter-page numbering
+\@addtoreset{page}{chapter}% reset page number when chapter is stepped
+% The next magic makes the page counter be reset to one rather than zero
+\def\@stpelt#1{\global\csname c@#1\endcsname
+ \expandafter\ifx \csname#1\endcsname \page
+ \@ne
+ \else
+ \z@ \fi}
diff --git a/obsolete/macros/latex209/contrib/misc/citesort.sty b/obsolete/macros/latex209/contrib/misc/citesort.sty
new file mode 100644
index 0000000000..de21ebb252
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/citesort.sty
@@ -0,0 +1,56 @@
+%NAME: citesort.sty
+% A replacement for \@citex which sorts citation numbers as well as
+% compressing and allowing breaks. Based on cite.sty by Donald
+% Arseneau.
+%
+% for use in LaTeX say, \documentstyle[...,citesort,...]{...}
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Allow, but strongly discourage, line breaks within a long
+% series of citations. Compress lists of successive numbers
+% to one number range, e.g., 5,6,7,8,9 --> 5--9. Compatible
+% with versions of \@cite that use exponents.
+% -- Donald Arseneau 1989
+%
+% Modified to sort the numbers so they come out in increasing order,
+% regardless of the way they appear in the source. O(N^2) sort!
+% Ian Green, CUED, 10-Dec-1991. Improvements to img@eng.cam.ac.uk
+% please. Version 1
+
+\newcount\@minsofar
+\newcount\@min
+\newcount\@cite@temp
+\def\@citex[#1]#2{%
+\if@filesw \immediate \write \@auxout {\string \citation {#2}}\fi
+\@tempcntb\m@ne \let\@h@ld\relax \def\@citea{}%
+\@min\m@ne%
+\@cite{%
+ \@for \@citeb:=#2\do {\@ifundefined {b@\@citeb}%
+ {\@h@ld\@citea\@tempcntb\m@ne{\bf ?}%
+ \@warning {Citation `\@citeb ' on page \thepage \space undefined}}%
+{\@minsofar\z@ \@for \@scan@cites:=#2\do {%
+ \@ifundefined{b@\@scan@cites}%
+ {\@cite@temp\m@ne}
+ {\@cite@temp\number\csname b@\@scan@cites \endcsname \relax}%
+\ifnum\@cite@temp > \@min% select the next one to list
+ \ifnum\@minsofar = \z@
+ \@minsofar\number\@cite@temp
+ \edef\@scan@copy{\@scan@cites}\else
+ \ifnum\@cite@temp < \@minsofar
+ \@minsofar\number\@cite@temp
+ \edef\@scan@copy{\@scan@cites}\fi\fi\fi}\@tempcnta\@min
+ \ifnum\@minsofar > \z@ % some more
+ \advance\@tempcnta\@ne
+ \@min\@minsofar
+ \ifnum\@tempcnta=\@minsofar % Number follows previous--hold on to it
+ \ifx\@h@ld\relax
+ \edef \@h@ld{\@citea\csname b@\@scan@copy\endcsname}%
+ \else \edef\@h@ld{\ifmmode{-}\else--\fi\csname b@\@scan@copy\endcsname}%
+ \fi
+ \else \@h@ld\@citea\csname b@\@scan@copy\endcsname
+ \let\@h@ld\relax
+ \fi % no more
+\fi}%
+\def\@citea{,\penalty\@highpenalty\,}}\@h@ld}{#1}}
+
+% end of citesort.sty
diff --git a/obsolete/macros/latex209/contrib/misc/doublespace.sty b/obsolete/macros/latex209/contrib/misc/doublespace.sty
new file mode 100644
index 0000000000..34b33e1f0c
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/doublespace.sty
@@ -0,0 +1,208 @@
+%% Copyright 1986 Stephen Page
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `unmaintained'.
+%
+% This work consists of the file doublespace.sty.
+%
+% The licence statement above was added by Clea F. Rees on behalf of
+% Stephen Page on 2008/10/31.
+%------------------------------------------------------------------------------
+%
+% LaTeX Document style option "doublespace"
+% -- usage: \documentstyle[...,doublespace,...]{...}
+%
+% This style option produces a double-spaced document by redefining
+% the LaTeX parameter \baselinestretch to 2.
+%
+% It also fixes a number of problems with standard LaTeX, as 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 is 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
+% 7. KPC - fix superfluous space bug.
+% 8. HGS - fixed for use with NFSS2
+%
+% Note: This version sets a baselinestretch of 2. If this is too much,
+% put \setstretch{1.7} (or some appropriate value) before the
+% \begin{document} command. To print the document with single spacing
+% again, without removing "singlespace" environments, just put a
+% \setstretch{1} at the top of the document.
+%
+% PLEASE REPORT ANY BUGS
+%
+% Modified by: Kaja P. Christiansen, kaja@daimi.aau.dk
+%
+% Modified by: Mark A. Roth, mroth@afit.af.mil
+%
+% Modified by: Jean-Francois Lamy
+% lamy@ai.toronto.edu
+% lamy@utai.uucp
+%
+% Modified by: Hendrik G. Seliger (HGS)
+% hank@Blimp.automat.uni-essen.de
+%
+% Author: Stephen Page -- sdpage@prg.oxford.ac.uk
+% sdpage%prg.oxford.ac.uk@cs.ucl.ac.uk
+%
+% Release date: 6 July 1986 - September 3, 1986
+%
+% Known bugs:
+% . It might be nice if spacing before the footnote rule (\footins)
+% were provided in a tidier way.
+% . 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), use \begin{quote}\begin{singlespace}
+% . shouldn't @setsize stretch parskip as well?
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%---Set up double spacing
+
+\def\baselinestretch{2}
+
+
+%---New command "\setstretch" (slightly more mnemonic... and easier to type)
+
+\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%-KPC
+ \let\@currsize#1\baselineskip
+ #2\baselineskip\baselinestretch\baselineskip
+ \parskip\baselinestretch\parskip
+ \setbox\strutbox\hbox{\vrule height.7\baselineskip
+ depth.3\baselineskip width\z@}%-KPC
+ \normalbaselineskip\baselineskip#3#4}
+\else %new font selection scheme is defined, set up way to change baselines-MAR
+ % NFSS2 does not have \setnew@baselineskip anymore - HGS
+\def\@newbaseline{%
+ \ifx\undefined\setnew@baselineskip% HGS
+ \baselineskip\f@baselineskip\relax%
+ \else% HGS
+ \setnew@baselineskip%
+ \fi% HGS
+ \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.
+% This is a very untidy way to do it!
+
+\skip\footins 20pt plus4pt minus4pt
+
+
+%---Reset baselinestretch within footnotes and floats. Originally stolen
+% from Stanford thesis style.
+
+\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
+ \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}}}
+
+% Stolen from MIT.
+%
+% A single spaced quote (say) is done by surrounding singlespace with quote.
+%
+\def\singlespace{%
+\vskip\parskip%
+\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%
+\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
+ \else %else new font selection scheme is invoked-MAR
+ \@newbaseline %include new baselinestretch-MAR
+ \fi %-MAR
+}
+
+\def\endspacing{\par%
+ \vskip \parskip%
+ \vskip \baselineskip%
+ \endgroup%
+ \vskip -\parskip%
+ \vskip -\baselineskip%
+} %\begingroup used to be here, PGBR 1-29-91
+
+\def\onehalfspace{\spacing{1.5}}
+\let\endonehalfspace=\endspacing
+
+\def\doublespace{\spacing{2}}
+\let\enddoublespace=\endspacing %corrected--first end missing-MAR
+
+% 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}
+
diff --git a/obsolete/macros/latex209/contrib/misc/endfloat.sty b/obsolete/macros/latex209/contrib/misc/endfloat.sty
new file mode 100644
index 0000000000..8427156bc5
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/endfloat.sty
@@ -0,0 +1,350 @@
+%% Save file as: ENDFLOAT.STY Source: FILESERV@SHSU.BITNET
+% Name: endfloat.sty
+% Description: LaTeX style to put figures and tables at end of article
+% Keywords: LaTeX, style-option, float, figure, table
+% Author: James Darrell McCauley <jdm5548@diamond.tamu.edu>
+% Latest Version: Version 2.0 <02 Jun 1992>
+% Archives: pasture.ecn.purdue.edu, shsu.edu or FILESERV@SHSU.BITNET
+% Note: See USAGE, CHANGE LOG, and BUGS below.
+% See also: comment.sty, endnotes.sty
+%
+% WHAT IS THIS STYLE FOR?
+% The purpose of this style is to put all figures on pages by themselves
+% at the end of an article in a section named Figures. Likewise for tables.
+% Reference can be made in the text of where the figure should have been
+% (only caption appears - see \markersintext [default] and \nomarkersintext
+% below. \ref and \label always works on the ones at the end). This is
+% usually required when preparing submissions to journals.
+%
+% WARNING!
+% This creates two extra files: \jobname.fff and \jobname.ttt
+% It may also necessitate another latex cycle because of the float
+% movement (when you use \label and \ref) and bibtex.
+%
+% WHY WRITE THIS STYLE?
+% Many journals require tables and figures to be separated from the text
+% when you submit those ugly doublespaced copies. They also usually want
+% a list of figures/tables before these sections (capability added in v2.0).
+%
+% I am writing a set of styles that look exactly like a journal, but just
+% by adding one style option, I wanted the user to meet the requirements
+% for formatting submissions. I encourage others to do the same.
+%
+% USAGE:
+% if you use: \documentstyle{article}
+% change it to: \documentstyle[endfloat]{article}
+% That's all you have to do. This will produce two extra files with
+% .ttt and .fff extensions (for tables and figures, respectively).
+%
+% This puts all figures and tables at the end of your document
+% and creates a List of Figures and/or List of Tables section
+% at the end (when appropriate). If you do not want a these, they
+% can be turned off by putting \nofiglist and \notablist in the
+% preamble of your document.
+%
+% It also leaves notes in the text (i.e., ``[Figure 4 about here.]'').
+% If you would rather not have these, this can be turned off by
+% putting \nomarkersintext in the preamble of your document. If you
+% do not like this marker, you can change it by using \renewcommand
+% (see PREPARING A FOREIGN LANGUAGE VERSION below).
+%
+% HOW DID I WRITE THIS?
+%
+% Overview: redefine the figure and table environment following % bj
+% the \begin{comment} ... \end{comment} environment of % bj
+% comment.sty by Victor Eijkhout <eijkhout@csrd.uiuc.edu>.
+% Instead of processing what was between \begin{...} and \end{...},
+% every line is written to a file (\jobname.fff for figures, \jobname.ttt
+% for tables). Then, when you do an \end{document}, the figure section
+% is processed, then the table section is processed. This could easily
+% be reversed (tables first) if necessary.
+%
+% After initial versions, I received much help from Ronald Kappert
+% and Brian Junker (see CHANGE LOG below). <Thanks guys!>
+% If anyone has any bugs/suggestions to report, mail them to
+% jdm5548@diamond.tamu.edu.
+% Darrell McCauley <02 Jun 1992>
+%
+% PREPARING A FOREIGN LANGUAGE VERSION
+%
+% 10-03-92: Announcements in any language can be generated with
+% a \renewcommand{\figureplace} or \renewcommand{\tableplace}
+% with default
+%\def\figureplace{\bf\figurename~\thepostfig should be placed near here.}
+% and
+%\def\tableplace{\bf\tablename~\theposttbl should be placed near here.}
+% The name of figures and tables is governed by standard
+% LaTeX variables \figurename and \tablename.
+% The name of the section with the figures can be governed with
+% a \renewcommand{\figuresection}{...Name of Figs. section...}
+% Ditto for \tablesection. Default is \def\tablesection{Tables}
+% and \def\figuresection{Figures}.
+%
+% URC (RJHK)
+%
+% CHANGE LOG
+% (if you make any changes to this, record them here)
+% <25 Feb 1992> v0.1 - created by Darrell McCauley <jdm5548@diamond.tamu.edu>
+% <01 Mar 1992> v1.0 - cleaned up and released <jdm5548@diamond.tamu.edu>
+%
+% <10 Mar 1992> v1.0 - some adaptions for LaTeX 2.09 <14-1-92> and
+% international namegiving by Ronald Kappert
+% <R.Kappert@urc.kun.nl>.
+% <13 Mar 1992> v1.1 - verified that floats were used before a section was
+% created for them. <jdm5548@diamond.tamu.edu>
+% <14 Mar 1992> v1.2 - corrected typo that may have caused figures not
+% to be printed. <jdm5548@diamond.tamu.edu>
+%
+% <27 May 1992> ???? - (1) changed "comment" to "figure" and "komment" to
+% "table" throughout, to avoid collisions with other
+% style files' definitions of "\comment". Also
+% fixes "\begin{table} ends with \end{komment}"
+% error generated by my (older) version of PC TeX.
+%
+% (2) Fixed gobble of float position specifiers.
+% There are two ways to do this: (a) \write
+% \ifnextchar[{\gobbleuntilnext}{} into every
+% environment written to \jobname.fff, etc.; (b)
+% save LaTeX's old def's of \figure and \table
+% and re-use them when processing fig's and tables.
+% I chose the latter approach, for maximum
+% consistency with LaTeX, other style files, etc.
+%
+% (3) Added def's of \tablename and \figurename,
+% which my version of PC-TeX seemed to need.
+% <backward compatability for earlier versions :-> %jdm
+%
+% (4) Moved formatting of figure/table markers to
+% \figureplace and \tableplace.
+%
+% (5) Style change: in-text markers are now
+% centered reminders like "[Figure 4 about here.]".
+%
+% (6) Style change: added list of tables and
+% figures to the table and figure sections.
+% Change back to old format with \nofiglist and
+% \notablist.
+%
+% (7) Changed default to \markersintext.
+%
+% (8) Fixed trivial typo in \@openposttbls
+%
+% All changes marked "% bj" at end of line.
+% Brian Junker <brian@stat.cmu.edu>
+% <02 Jun 1992> v2.0 - incorporated changes made by Junker (see above).
+% Corrected problem of extra blank spaces in
+% the output when \nomarkersintext was in effect
+% (bug reported by <schultz@unixg.ubc.ca>).
+% <jdm5548@diamond.tamu.edu>
+% BUGS:
+% <14 Mar 1992> still needs to gobble float position specifiers.
+%
+\newif\if@domarkers
+\def\markersintext{
+ \@domarkerstrue }
+\def\nomarkersintext{
+ \@domarkersfalse
+}
+%\nomarkersintext
+\markersintext % bj
+
+\newif\if@tablist % bj
+\def\dotablist{\@tablisttrue} % bj
+\def\notablist{\@tablistfalse} % bj
+\dotablist % bj
+
+\newif\if@figlist % bj
+\def\dofiglist{\@figlisttrue} % bj
+\def\nofiglist{\@figlistfalse} % bj
+\dofiglist % bj
+
+\newcounter{postfig}
+\newwrite\@postfigs
+\newif\if@postfigsopen \global\@postfigsopenfalse
+ \def\@openpostfigs{\immediate\openout\@postfigs=\jobname.fff\relax
+ \message{(\jobname.fff)}%
+ \global\@postfigsopentrue}
+
+\newcounter{posttbl}
+\newwrite\@posttbls
+\newif\if@posttblsopen \global\@posttblsopenfalse
+
+\def\@openposttbls{\immediate\openout\@posttbls=\jobname.ttt\relax
+ \message{(\jobname.ttt)}% % bj
+ \global\@posttblsopentrue}
+
+\def\makeinnocent#1{\catcode`#1=12 }
+
+%\def\figureplace{\bf\figurename~\thepostfig should be placed near here.} % bj
+%\def\tableplace{\bf\tablename~\theposttbl should be placed near here.} % bj
+
+\@ifundefined{figurename}{\def\figurename{Figure}}{} % bj
+\@ifundefined{tablename}{\def\tablename{Table}}{} % bj
+
+\def\figureplace{\begin{center} % bj
+[\figurename~\thepostfig\ about here.] % bj
+\end{center}} % bj
+\def\tableplace{\begin{center} % bj
+[\tablename~\theposttbl\ about here.] % bj
+\end{center}} % bj
+
+\def\@gobbleuntilnext[#1]{}
+%\let\eatarg\@gobbleuntilnext % bj
+%\let\ifnextchar\@ifnextchar % bj
+
+\let\@bfig\figure % bj
+\let\@efig\endfigure % bj
+\let\@btab\table % bj
+\let\@etab\endtable % bj
+\let\endfigure\relax % bj
+\let\endtable\relax % bj
+
+%
+% the {blank space } appearing with \nomarkersintext was fixed by adding
+% a percent sign (%) at strategic locations, determined by setting
+% \tracingcommands=1 % Darrell
+%
+
+\def\figure{%
+% \if@nextchar[{
+ \if@postfigsopen \else \@openpostfigs \fi%
+ \immediate\write\@postfigs{\string\begin{figure}}%
+% \immediate\write\@postfigs{\string\ifnextchar[{\string\eatarg}{}} % bj
+ \if@domarkers%
+ \addtocounter{postfig}{1}% % bj
+ \figureplace% % bj
+ \fi%
+ \def\@currenvir{figure}%
+ \begingroup%
+ \let\do\makeinnocent \dospecials%
+ \makeinnocent\^^L% and whatever other special cases
+ \endlinechar`\^^M \catcode`\^^M=12 \xfigure}%
+{\catcode`\^^M=12 \endlinechar=-1 %
+ \gdef\xfigure#1^^M{\def\test{#1}%
+ \ifx\test\endfiguretest%
+ \def\next{\endgroup\end{figure}%
+ \immediate\write\@postfigs{\string\end{figure}}%
+ \immediate\write\@postfigs{\string\clearpage}%
+ \immediate\write\@postfigs{ }}%
+ \else\ifx\test\enddblfiguretest%
+ \def\next{\endgroup\end{figure}%
+ \immediate\write\@postfigs{\string\end{figure}}%
+ \immediate\write\@postfigs{\string\clearpage}%
+ \immediate\write\@postfigs{ }}%
+ % skip over float position specifier (fps)
+ \else\@ifnextchar[%
+ \@whilesw \ifx\test\CB \fi%
+ \@gobble%
+ \else%
+ \if@postfigsopen \else \@openpostfigs \fi%
+ \immediate\write\@postfigs{#1}%
+ \let\next\xfigure%
+ \fi \fi \next}%
+}%
+
+%hello
+{\escapechar=-1%
+ \xdef\CB{]}%
+ \xdef\endfiguretest{\string\\end\string\{figure\string\}}%
+ \xdef\enddblfiguretest{\string\\end\string\{figure*\string\}}%
+}%
+
+\def\table{\if@posttblsopen \else \@openposttbls \fi
+ \immediate\write\@posttbls{\string\begin{table}}%
+% \immediate\write\@posttbls{\string\ifnextchar[{\string\eatarg}{}} % bj
+ \if@domarkers
+ \addtocounter{posttbl}{1} % bj
+ \tableplace % bj
+ \fi
+ \def\@currenvir{table}%
+ \begingroup
+ \let\do\makeinnocent \dospecials
+ \makeinnocent\^^L% and whatever other special cases
+ \endlinechar`\^^M \catcode`\^^M=12 \xtable}
+{\catcode`\^^M=12 \endlinechar=-1 %
+ \gdef\xtable#1^^M{\def\test{#1}
+ \ifx\test\enddbltabletest
+ \def\next{\endgroup\end{table}
+ \immediate\write\@posttbls{\string\end{table}}
+ \immediate\write\@posttbls{\string\clearpage}
+ \immediate\write\@posttbls{ }}
+ \else\ifx\test\endtabletest
+ \def\next{\endgroup\end{table}
+ \immediate\write\@posttbls{\string\end{table}}
+ \immediate\write\@posttbls{\string\clearpage}
+ \immediate\write\@posttbls{ }}
+ \else
+ \if@posttblsopen \else \@openposttbls \fi
+ \immediate\write\@posttbls{#1}%
+ \let\next\xtable
+ \fi \fi \next}
+}
+
+{\escapechar=-1
+ \xdef\enddbltabletest{\string\\end\string\{table*\string\}}
+ \xdef\endtabletest{\string\\end\string\{table\string\}}
+}
+%% end of stuff from comment.sty
+
+% \let\figure=\figure
+%\ let\table=\table
+\@namedef{figure*}{\figure}
+\@namedef{table*}{\table}
+\def\endfloat{\endfigure}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\figuresection{Figures}
+\def\tablesection{Tables}
+
+\def\processfigures{
+ \if@postfigsopen
+ \immediate\closeout\@postfigs \global\@postfigsopenfalse
+% \let\figure={\@float{figure}} % bj
+% \let\endfigure=\end@float % bj
+ \let\figure\@bfig % bj
+ \let\endfigure\@efig % bj
+ \clearpage % bj
+ \if@figlist % bj
+ {\normalsize\listoffigures} % bj
+ \clearpage % bj
+ \else % bj
+ \section*{\figuresection} % bj
+ \markboth{\uppercase{\figuresection}}{\uppercase{\figuresection}}% bj
+ \fi % bj
+ { % bj
+ \def\baselinestretch{1}\tiny\normalsize % bj
+ \@input{\jobname.fff} % bj
+ } % bj
+ \fi}
+
+\def\processtables{
+\if@posttblsopen
+ \immediate\closeout\@posttbls \global\@posttblsopenfalse
+% \let\table={\@float{table}} % bj
+% \let\endtable=\end@float % bj
+ \let\table\@btab % bj
+ \let\endtable\@etab % bj
+ \clearpage % bj
+ \if@tablist % bj
+ {\normalsize\listoftables} % bj
+ \clearpage % bj
+ \else % bj
+ \section*{\tablesection} % bj
+ \markboth{\uppercase{\tablesection}}{\uppercase{\tablesection}}% bj
+ \fi % bj
+ { % bj
+ \def\baselinestretch{1}\tiny\normalsize % bj
+ \@input{\jobname.ttt} % bj
+ }
+ \fi}
+
+\def\enddocument{\onecolumn\processfigures\clearpage\processtables
+\@checkend{document}\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}
+
+\endinput
diff --git a/obsolete/macros/latex209/contrib/misc/endnote.sty b/obsolete/macros/latex209/contrib/misc/endnote.sty
new file mode 100644
index 0000000000..0a6f9af68e
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/endnote.sty
@@ -0,0 +1,34 @@
+% Use \endnote{1}{text}. At the end of your document, type
+% \producenotes to actually flush all end notes to be printed.
+%
+% macros for making endnotes instead of footnotes
+% We make @ signs act like letters, temporarily, to avoid conflict
+% between user names and internal control sequences of plain format.
+\catcode`@=11
+\newbox\endnotebox
+
+\def\setendnotefont#1{\gdef\endnotefont{#1}}
+\setendnotefont{\normalsize\rm}
+\@definecounter{endnotei}
+\def\theendnotei{\arabic{endnotei}}
+\def\labelendnotei{(\theendnotei)}
+
+\def\endnote#1{\let\@sf\empty
+ \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
+ \stepcounter{endnotei} $^{\theendnotei}$\@sf% \vendnote
+ {\global\setbox\endnotebox=
+ \vbox{\parindent=0pt\endnotefont\unvbox\endnotebox\bgroup \theendnotei.\
+ #1\@endnote}}}
+
+\def\no@te{\ifcat\bgroup\noexpand\next \let\next\n@@te
+ \else\let\next\n@t\fi }%\next}
+
+\def\n@@te{\bgroup\aftergroup\@endnote\let\next}
+
+\def\n@t#1{#1\@endnote}
+
+\def\@endnote{\strut\unskip\hfil \penalty -\@M\relax \egroup} %
+
+\def\producenotes{%
+\ifvoid\endnotebox\else\medskip\unvbox\endnotebox\par\fi}
+\catcode`@=12 % at signs are no longer letters
diff --git a/obsolete/macros/latex209/contrib/misc/endnotes.sty b/obsolete/macros/latex209/contrib/misc/endnotes.sty
new file mode 100644
index 0000000000..4d28e593ad
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/endnotes.sty
@@ -0,0 +1,325 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Save file as: ENDNOTES.STY
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% ****************************************
+% * ENDNOTES *
+% ****************************************
+%
+% Date of this version: 24 September 1991.
+%
+% Based on the FOOTNOTES section of
+% LATEX.TEX (VERSION 2.09 - RELEASE OF 19 April 1986), with
+% "footnote" changed to "endnote" and "fn" changed to "en" (where
+% appropriate), with all the minipage stuff pulled out, and with
+% some small changes for the different operation of endnotes.
+%
+% Uses an extra external file, with .ENT extension, to hold the
+% text of the endnotes. This may be deleted after the run; a new
+% version is generated each time.
+%
+% This code does not obey \nofiles. Perhaps it should.
+%
+% John Lavagnino (lav@brandeis.bitnet), 9/23/88
+% Department of English and American Literature,
+% Brandeis University
+%
+% To turn all the footnotes in your documents into endnotes, say
+%
+% \let\footnote=\endnote
+%
+% in your preamble, and then add something like
+%
+% \newpage
+% \begingroup
+% \parindent 0pt
+% \parskip 2ex
+% \def\enotesize{\normalsize}
+% \theendnotes
+% \endgroup
+%
+% as the last thing in your document.
+%
+% ****************************************
+% * CHANGE LOG *
+% ****************************************
+%
+% JL Modified to include \addtoendnotes. JL, 10/22/89.
+%
+% JK Modification by J"org Knappen 25. 2. 1991:
+% JK
+% JK Introduced \notesname in the spirit of international \LaTeX.
+% JK \notesname is set per default to be {Notes}, but can easily
+% JK be redifined, e.g. for german language
+% JK \renewcommand{\notesname}{Anmerkungen}
+%
+% DW Modification by Dominik Wujastyk, London, 19 September 1991:
+% DW
+% DW Moved the line
+% DW \edef\@currentlabel{\csname p@endnote\endcsname\@theenmark}
+% DW out of the definition of \@endnotetext and into the definition
+% DW of \@doanenote so that \label and \ref commands work correctly in
+% DW endnotes. Otherwise, the \label just pointed to the last section
+% DW heading (or whatever) preceding the \theendnotes command.
+%
+% JL Revised documentation and macros. 24 Sept 1991.
+%
+% ****************************************
+% * ENDNOTE COMMANDS *
+% ****************************************
+%
+%
+% \endnote{NOTE} : User command to insert a endnote.
+%
+% \endnote[NUM]{NOTE} : User command to insert a endnote numbered
+% NUM, where NUM is a number -- 1, 2,
+% etc. For example, if endnotes are numbered
+% *, **, etc. within pages, then \endnote[2]{...}
+% produces endnote '**'. This command does not
+% step the endnote counter.
+%
+% \endnotemark[NUM] : Command to produce just the endnote mark in
+% the text, but no endnote. With no argument,
+% it steps the endnote counter before generating
+% the mark.
+%
+% \endnotetext[NUM]{TEXT} : Command to produce the endnote but no
+% mark. \endnote is equivalent to
+% \endnotemark \endnotetext .
+%
+% \addtoendnotes{TEXT} : Command to add text or commands to current
+% endnotes file: for inserting headings,
+% pagebreaks, and the like into endnotes
+% sections. TEXT a moving argument:
+% \protect required for fragile commands.
+%
+% ****************************************
+% * ENDNOTE USER COMMANDS *
+% ****************************************
+%
+% Endnotes use the following parameters, similar to those relating
+% to footnotes:
+%
+% \enotesize : Size-changing command for endnotes.
+%
+% \theendnote : In usual LaTeX style, produces the endnote number.
+%
+% \@theenmark : Holds the current endnote's mark--e.g., \dag or '1' or 'a'.
+%
+% \@makeenmark : A macro to generate the endnote marker from \@theenmark
+% The default definition is \hbox{$^\@theenmark$}.
+%
+% \@makeentext{NOTE} :
+% Must produce the actual endnote, using \@theenmark as the mark
+% of the endnote and NOTE as the text. It is called when effectively
+% inside a \parbox, with \hsize = \columnwidth. For example, it might
+% be as simple as
+% $^{\@theenmark}$ NOTE
+%
+%
+% ****************************************
+% * ENDNOTE PSEUDOCODE *
+% ****************************************
+%
+% \endnote{NOTE} ==
+% BEGIN
+% \stepcounter{endnote}
+% \@theenmark :=G eval (\theendnote)
+% \@endnotemark
+% \@endnotetext{NOTE}
+% END
+%
+% \endnote[NUM]{NOTE} ==
+% BEGIN
+% begingroup
+% counter endnote :=L NUM
+% \@theenmark :=G eval (\theendnote)
+% endgroup
+% \@endnotemark
+% \@endnotetext{NOTE}
+% END
+%
+% \@endnotetext{NOTE} ==
+% BEGIN
+% write to \@enotes file: "\@doanenote{ENDNOTE MARK}"
+% begingroup
+% \next := NOTE
+% set \newlinechar for \write to \space
+% write to \@enotes file: \meaning\next
+% (that is, "macro:->NOTE)
+% endgroup
+% END
+%
+% \addtoendnotes{TEXT} ==
+% BEGIN
+% open endnotes file if not already open
+% begingroup
+% let \protect to \string
+% set \newlinechar for \write to \space
+% write TEXT to \@enotes file
+% endgroup
+% END
+%
+% \endnotemark ==
+% BEGIN \stepcounter{endnote}
+% \@theenmark :=G eval(\theendnote)
+% \@endnotemark
+% END
+%
+% \endnotemark[NUM] ==
+% BEGIN
+% begingroup
+% endnote counter :=L NUM
+% \@theenmark :=G eval(\theendnote)
+% endgroup
+% \@endnotemark
+% END
+%
+% \@endnotemark ==
+% BEGIN
+% \leavevmode
+% IF hmode THEN \@x@sf := \the\spacefactor FI
+% \@makeenmark % put number in main text
+% IF hmode THEN \spacefactor := \@x@sf FI
+% END
+%
+% \endnotetext ==
+% BEGIN \@theenmark :=G eval (\theendnote)
+% \@endnotetext
+% END
+%
+% \endnotetext[NUM] ==
+% BEGIN begingroup counter endnote :=L NUM
+% \@theenmark :=G eval (\theendnote)
+% endgroup
+% \@endnotetext
+% END
+%
+% ****************************************
+% * ENDNOTE MACROS *
+% ****************************************
+%
+
+\@definecounter{endnote}
+\def\theendnote{\arabic{endnote}}
+
+% Default definition
+\def\@makeenmark{\hbox{$^{\@theenmark}$}}
+
+\newdimen\endnotesep
+
+\def\endnote{\@ifnextchar[{\@xendnote}{\stepcounter
+ {endnote}\xdef\@theenmark{\theendnote}\@endnotemark\@endnotetext}}
+
+\def\@xendnote[#1]{\begingroup \c@endnote=#1\relax
+ \xdef\@theenmark{\theendnote}\endgroup
+ \@endnotemark\@endnotetext}
+
+% Here begins endnote code that's really different from the footnote
+% code of LaTeX.
+
+\let\@doanenote=0
+\let\@endanenote=0
+
+\newwrite\@enotes
+\newif\if@enotesopen \global\@enotesopenfalse
+
+\def\@openenotes{\immediate\openout\@enotes=\jobname.ent\relax
+ \global\@enotesopentrue}
+
+% The stuff with \next and \meaning is a trick from the TeXbook, 382,
+% there intended for setting verbatim text, but here used to avoid
+% macro expansion when the footnote text is written. \next will have
+% the entire text of the footnote as one long line, which might well
+% overflow limits on output line length; the business with \newlinechar
+% makes every space become a newline in the \@enotes file, so that all
+% of the lines wind up being quite short.
+
+\long\def\@endnotetext#1{%
+ \if@enotesopen \else \@openenotes \fi
+ \immediate\write\@enotes{\@doanenote{\@theenmark}}%
+ \begingroup
+ \def\next{#1}%
+ \newlinechar='40
+ \immediate\write\@enotes{\meaning\next}%
+ \endgroup
+ \immediate\write\@enotes{\@endanenote}}
+
+% \addtoendnotes works the way the other endnote macros probably should
+% have, requiring the use of \protect for fragile commands.
+
+\long\def\addtoendnotes#1{%
+ \if@enotesopen \else \@openenotes \fi
+ \begingroup
+ \newlinechar='40
+ \let\protect\string
+ \immediate\write\@enotes{#1}%
+ \endgroup}
+
+% End of unique endnote code
+
+\def\endnotemark{\@ifnextchar[{\@xendnotemark
+ }{\stepcounter{endnote}\xdef\@theenmark{\theendnote}\@endnotemark}}
+
+\def\@xendnotemark[#1]{\begingroup \c@endnote #1\relax
+ \xdef\@theenmark{\theendnote}\endgroup \@endnotemark}
+
+\def\@endnotemark{\leavevmode\ifhmode
+ \edef\@x@sf{\the\spacefactor}\fi \@makeenmark
+ \ifhmode\spacefactor\@x@sf\fi\relax}
+
+\def\endnotetext{\@ifnextchar
+ [{\@xendnotenext}{\xdef\@theenmark{\theendnote}\@endnotetext}}
+
+\def\@xendnotenext[#1]{\begingroup \c@endnote=#1\relax
+ \xdef\@theenmark{\theendnote}\endgroup \@endnotetext}
+
+
+% \theendnotes actually prints out the endnotes.
+
+% The user may want separate endnotes for each chapter, or a big
+% block of them at the end of the whole document. As it stands,
+% either will work; you just say \theendnotes wherever you want the
+% endnotes so far to be inserted. However, you must add
+% \setcounter{endnote}{0} after that if you want subsequent endnotes
+% to start numbering at 1 again.
+
+% \enoteformat is provided so user can specify some special formatting
+% for the endnotes. It needs to set up the paragraph parameters, start
+% the paragraph, and print the label. The \leavemode stuff is to make
+% and undo a dummy paragraph, to get around the games \section*
+% plays with paragraph indenting.
+
+\def\notesname{Notes}% <------ JK
+\def\enoteheading{\section*{\notesname
+ \@mkboth{\uppercase{\notesname}}{\uppercase{\notesname}}}%
+ \leavevmode\par\vskip-\baselineskip}
+
+\def\enoteformat{\rightskip\z@ \leftskip\z@ \parindent=1.8em
+ \leavevmode\llap{\hbox{$^{\@theenmark}$}}}
+
+\def\enotesize{\footnotesize}
+
+% The definition of \ETC. is needed only for versions of TeX prior
+% to 2.992. Those versions limited \meaning expansions to 1000
+% characters; in 2.992 and beyond there is no limit. At Brandeis the
+% BIGLATEX program changed the code in the token_show procedure of
+% TeX to eliminate this problem, but most ``big'' versions of TeX
+% will not solve this problem.
+
+\def\theendnotes{\immediate\closeout\@enotes \global\@enotesopenfalse
+ \begingroup
+ \makeatletter
+ \def\@doanenote##1##2>{\def\@theenmark{##1}\par\begingroup
+ \edef\@currentlabel{\csname p@endnote\endcsname\@theenmark} %DW
+ \enoteformat}
+ \def\@endanenote{\par\endgroup}%
+ \def\ETC.{\errmessage{Some long endnotes will be truncated; %
+ use BIGLATEX to avoid this}%
+ \def\ETC.{\relax}}
+ \enoteheading
+ \enotesize
+ \@input{\jobname.ent}%
+ \endgroup}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
diff --git a/obsolete/macros/latex209/contrib/misc/float.sty b/obsolete/macros/latex209/contrib/misc/float.sty
new file mode 100644
index 0000000000..3ff0fd8b81
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/float.sty
@@ -0,0 +1,815 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% filename = "float.sty",
+%%% version = "1.1c",
+%%% date = "18 December 1992",
+%%% time = "10:00:00 CET",
+%%% author = "Anselm Lingnau",
+%%% address = "Hochschulrechenzentrum/FB Mathematik
+%%% Johann Wolfgang Goethe-Universit\"at
+%%% Postfach 11 19 32
+%%% DW-6000 Frankfurt am Main
+%%% Germany",
+%%% telephone = "+49 798 2554",
+%%% checksum = "56253 815 4764 35676"
+%%% email = "lingnau@math.uni-frankfurt.de (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, figure, table, floats",
+%%% supported = "yes",
+%%% docstring = "
+%%%
+%%% float.sty
+%%%
+%%% A LaTeX style option which defines a \newfloat command
+%%% to define new classes of floats in the spirit of \newtheorem.
+%%% Floats can be defined to use any of various 'float styles'.
+%%% float.sty also incorporates the functionality of David Carlisle's
+%%% here.sty, giving floats a [H] option, meaning 'do not float',
+%%% or 'PUT IT HERE'.
+%%%
+%%% Documentation requires Frank Mittelbach's doc.sty.",
+%%% }
+%%% ========================================================================
+%
+% Beware of file version and date in banner at top of implementation below.
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% * Version 1.1a, added here.sty functionality.
+% * Version 1.1b, \@Esphack in place of \@esphack. Removed spurious
+% * whitespace. Fixed documentation. Thanks to David Carlisle.
+% * Version 1.1c, \@Esphack hack for compatibility with old LaTeXes. Fixed
+% * checksums. Removed spurious blank line at end of file. Thanks again.
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*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 float.sty
+%
+% If you have the Mittelbach/Duchier/Braams docstrip utility, you may
+% produce a faster loading .sty file. Rename this file to: float.doc
+% Then run this file through *plain* TeX:
+% tex float.doc
+% This should produce the file float.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 float.doc
+% Note that you may need to quote the arguments here to stop your
+% operating system treating the \ characters incorrectly.
+%
+% latex float.doc
+% will produce a typeset version of the documentation, as above.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname
+ \def\batchfile{float.doc}
+ \input docstrip
+ \preamble
+ Do not distribute the stripped version of this file.
+
+ \endpreamble
+ \generateFile{float.sty}{t}{\from{float.doc}{}}
+ \endinput
+\fi
+%
+\ifcat a\noexpand @\let\next\relax\else\def\next{%
+ \documentstyle[float,doc]{article}\MakePercentIgnore}\fi\next
+%
+%\def\eatmodule<#1>{}\eatmodule
+%</x>
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \textwidth=355pt ^^A Allow macrocode text with 72 columns
+% \CodelineIndex ^^A Code lines numbered
+% \EnableCrossrefs ^^A No Cross References
+% \MakeShortVerb{\|} ^^A |\foo| works like \verb+|\foo|
+% \CheckSum{467}
+%
+% \DoNotIndex{\@Esphack,\@Mii,\@Miv,\@cons,\@currlist,\@dblarg,\@dbldeferlist}
+% \DoNotIndex{\@dblfloat,\@dottedtocline,\@eha,\@esphack,\@float}
+% \DoNotIndex{\@floatpenalty,\@ifnextchar,\@ifundefined,\@latexerr}
+% \DoNotIndex{\@mkboth,\@namedef,\@nameuse,\@parboxrestore,\@spaces}
+% \DoNotIndex{\@starttoc,\@tempa,\@tempboxa,\@tempdima,\@warning}
+% \DoNotIndex{\addcontentsline,\advance,\arabic,\bf,\bgroup,\box,\chapter}
+% \DoNotIndex{\columnwidth,\csname,\def,\dimen,\docdate,\edef,\egroup,\else}
+% \DoNotIndex{\endcsname,\endinput,\expandafter,\fi,\filedate,\fileversion}
+% \DoNotIndex{\global,\hbadness,\hbox,\hfil,\hrule,\hsize,\ht,\if@twocolumn}
+% \DoNotIndex{\ifdim,\iffalse,\ifnum,\iftrue,\ifvbox,\ifx,\ignorespaces}
+% \DoNotIndex{\intextsep,\kern,\let,\long,\moveleft,\newbox,\newcount}
+% \DoNotIndex{\newcounter,\newif,\noexpand,\normalsize,\numberline,\par}
+% \DoNotIndex{\parindent,\penalty,\prevdepth,\protect,\refstepcounter,\relax}
+% \DoNotIndex{\rm,\section,\setbox,\space,\textheight,\the,\typeout,\unvbox}
+% \DoNotIndex{\uppercase,\vadjust,\vbox,\vrule,\vskip,\wd,\wlog,\z@}
+%
+% \title{An Improved Environment for Floats}
+% \author{Anselm Lingnau\thanks{Hochschulrechenzentrum/Fachbereich Mathematik,
+% Johann Wolfgang Goethe-Universit\"at, Postfach 11\,19\,32,
+% DW-6000 Frankfurt am Main.
+% E-Mail: {\tt lingnau@math.uni-frankfurt.de}}%
+% \thanks{Part of this style option is based on
+% {\tt here.sty} by David Carlisle ({\tt carlisle@cs.man.ac.uk}),
+% who also provided helpful criticism.}}
+% \date{8 October 1992}
+% \floatstyle{ruled}
+% \newfloat{Program}{tbp}{lop}[section]
+% \floatstyle{plain}
+% \newfloat{Example}{t}{lox}[section]
+% \floatstyle{boxed}
+% \restylefloat{table}
+% \begin{document}
+% \maketitle
+%
+% \begin{abstract}
+% This style option improves the interface for defining floating
+% objects such as figures and tables in \LaTeX{}.
+% It adds the notion of a `float style' that governs appearance
+% of floats.
+% New kinds of floats may be defined using a |\newfloat| command
+% analogous to |\newtheorem|.
+% This style option also incorporates the functionality
+% of David Carlisle's {\tt here.sty},
+% giving floating environments a {\tt [H]} option which means `PUT IT HERE'
+% (as opposed to the standard {\tt [h]} option which means
+% `You may put it here if you like').
+% \end{abstract}
+%
+% \section{Introduction}
+%
+% Among the features of \LaTeX\ are `floating' figures and tables
+% that drift from where they appear in the input text to, say, the top
+% of a page. The contents and formatting of floats is pretty much up
+% to the user, except that there is a |\caption| command that
+% governs formatting of the caption --- it is centered if it is short,
+% and formatted as a paragraph if it is longer than a single line of text.
+% Sometimes other types of floating objects, e.g., algorithms or programs,
+% are desirable, but they must be defined by analogy to the existing
+% floats since there is no simple command for doing this. This goes
+% beyond the knowledge or inclination of the average \LaTeX\ user.
+%
+% In this style option, I present an interface to floating objects
+% that attempts to fix some of these shortcomings.
+% First of all, I introduce the notion of a `float style'.
+% A float style governs the appearance of a class of floats like a page style
+% governs the appearance of a page (\LaTeX\ has page styles {\tt plain},
+% {\tt empty} and {\tt headings}, among others). This style option
+% provides some exemplary float styles:
+% \begin{description}
+% \item[plain] This is the float style that \LaTeX\ normally applies to
+% its floats, i.e., nothing in particular. The only difference is
+% that the caption comes out {\em below\/} the body of the float,
+% regardless of where it is given in the text.
+% \item[boxed] The body of the float is printed inside a box. The caption
+% goes below that box.
+% \item[ruled] This float style is patterned on the table style of
+% {\sl Concrete Mathematics}. The caption is printed at the top of the
+% float, surrounded by rules; another rule finishes off the float.
+% \end{description}
+%
+% \begin{Program}
+% \begin{verbatim}
+% #include <stdio.h>
+%
+% int main(int argc, char **argv)
+% {
+% int i;
+% for (i = 0; i < argc; ++i)
+% printf("argv[%d] = %s\n", i, argv[i]);
+% return 0;
+% }
+% \end{verbatim}
+% \caption{The first program. This hasn't got anything to do with the style
+% but is included as an example. Note the {\tt ruled} float style.%
+% \label{prog1.1}}
+% \end{Program}
+% To facilitate the definition of new floating objects, {\tt float.sty}
+% supports the |\newfloat| command. This command is comparable to
+% |\newtheorem| in that it allows the user to add a new class of floats
+% at the document level. No style option hacking is necessary.
+% There's also a |\listof| command that prints a listing of all the
+% floats of a given type, like |\listoffigures| and |\listoftables|
+% in vanilla \LaTeX.
+%
+% \section{The User Interface --- New Floats}
+%
+% \DescribeMacro{\newfloat}
+% The most important command in {\tt float.sty} is the |\newfloat|
+% command. As mentioned above, it is patterned on |\newtheorem|.
+% The |\newfloat| command takes three required and one optional
+% argument; it is of the form\\[2pt]
+% \hspace*{\MacroIndent}|\newfloat{|\meta{type}|}{|^^A
+% \meta{placement}|}{|\meta{ext}|}[|\meta{within}{\tt]}\\[2pt]
+% \meta{type} is the `type' of the new class of floats, like {\tt program}
+% or {\tt algorithm}. After the appropriate |\newfloat|, commands
+% like |\begin{program}| or |\end{algorithm*}| will be available.
+% \meta{placement} gives the default placement parameters for this class
+% of floats. The placement parameters are the same as in standard \LaTeX,
+% i.e., {\tt t}, {\tt b}, {\tt p} and {\tt h} for `top', `bottom',
+% `page' and `here', respectively.
+% When \LaTeX\ writes the captions to an auxiliary file for the list
+% of figures (or whatever), it'll use the job name followed by \meta{ext}
+% as a file name.
+% Finally, the optional argument \meta{within} determines whether floats
+% of this class will be numbered within some sectional unit of the document.
+% For example, if \meta{within}$=${\tt chapter}, the floats will be numbered
+% within chapters. (In standard \LaTeX, this happens with figures and tables
+% in the {\tt report} and {\tt book} document styles.)
+% As an example, Program~\ref{prog1.1} above was created by a command
+% sequence similar to that shown in the following Example.
+% \begin{Example}[H]
+% \begin{verse}
+% |\floatstyle{ruled}|\\
+% |\newfloat{Program}{tbp}{lop}[section]|\\
+% \dots\ loads o' stuff \dots\\
+% |\begin{Program}|\\
+% |\begin{verbatim}|\\
+% \dots\ program text \dots\\
+% |\end{verbatim}|\\
+% |\caption{|\dots\ caption \dots|}|\\
+% |\end{Program}|
+% \end{verse}
+% \caption{This is another silly floating Example. Except that this one
+% doesn't actually float because it uses the {\tt[H]} optional parameter
+% to appear {\bf Here}. (Gotcha.)}
+% \end{Example}
+%
+% \DescribeMacro{\floatstyle}
+% The |\floatstyle| command sets a default float style. This float style
+% will be used for all the floats that are subsequently defined using
+% |\newfloat|, until another |\floatstyle| command appears.
+% The |\floatstyle| command takes one argument, the name of a float
+% style. For instance, |\floatstyle{ruled}|. Specifying a string that
+% does not name a valid float style is an error.
+%
+% \DescribeMacro{\floatname}
+% The |\floatname| command lets you define the {\em float name\/} that
+% \LaTeX\ uses in the caption of a float, i.e., `Figure' for a figure
+% and so on. For example, |\floatname{program}{Program}|.
+% The |\newfloat| command sets the float name to its argument
+% \meta{type} if no other name has been specified before.
+%
+% \DescribeMacro{\floatplacement}
+% The |\floatplacement| command resets the default placement specifier
+% of a class of floats. E.g., |\floatplacement{figure}{tp}|.
+%
+% \DescribeMacro{\restylefloat}
+% The |\restylefloat| command is necessary to change styles for the
+% standard float types {\tt figure} and {\tt table}. Since these aren't
+% usually defined via |\newfloat|, they don't have a style associated
+% with them. Thus you have to say, for example,\\[2pt]
+% \hspace*{\MacroIndent}|\floatstyle{ruled}|\\
+% \hspace*{\MacroIndent}|\restylefloat{table}|\\[2pt]
+% to have tables come out {\tt ruled}. The command also lets you change
+% style for floats that you define via |\newfloat|, although this
+% is, typographically speaking, not a good idea.
+% See table~\ref{table1} for an example.
+% \DeleteShortVerb{\|}
+% \begin{table} \def\B#1{$\displaystyle{n\choose#1}$}
+% \begin{center} \begin{tabular}{c|ccccc}
+% $n$&\B0&\B1&\B2&\B3&\B4\\ \hline
+% 0 & 1\\
+% 1 & 1&1\\
+% 2 & 1&2&1\\
+% 3 & 1&3&3&1\\
+% 4 & 1&4&6&4&1
+% \end{tabular} \end{center}
+% \caption{Pascal's triangle. This is a re-styled \LaTeX\ {\tt table}.%
+% \label{table1}}
+% \end{table}
+% \MakeShortVerb{\|}
+%
+% \DescribeMacro{\listof}
+% The |\listof| command produces a list of all the floats of a given
+% class. Its syntax is\\[2pt]
+% \hspace*{\MacroIndent}|\listof{|\meta{type}|}{|\meta{title}^^A
+% |}|\\[2pt]
+% \meta{type} is the float type given in the |\newfloat| command.
+% \meta{title} is used for the title of the list as well as the headings
+% if the current page style includes them. Otherwise, the |\listof|
+% command is analogous to the built-in \LaTeX\ commands
+% |\listoffigures| and |\listoftables|.
+%
+% \section{The User Interface --- {\tt[H]} Placement Specifier}
+%
+% Many people find \LaTeX's float placement specifiers too restrictive.
+% A Commonly Uttered Complaint (CUC) calls for a way to place a float
+% exactly at the spot where it occurs in the input file, i.e., to {\em not\/}
+% have it float at all.
+% It seems that the {\tt[h]} specifier should do that, but in fact it
+% only suggests to \LaTeX\ something along the lines of ``put the float
+% here if it's OK with you''. As it turns out, \LaTeX\ hardly ever feels
+% inclined to actually do that. This situation can be improved by
+% judicious manipulation of float style parameters.
+%
+% The same effect can be achieved by changing the actual method of
+% placing floats. David Carlisle's {\tt here.sty} introduces a new float
+% placement specifier, namely {\tt[H]}, which, when added to a float,
+% tells \LaTeX\ to ``put it HERE, period''. If there isn't enough space
+% left on the page, the float is carried over to the next page together
+% with whatever follows, even though there might still be room left for
+% some of that.
+% This style option provides the {\tt[H]} specifier for newly defined
+% classes of floats as well as the predefined {\tt figure}s and
+% {\tt table}s, thereby superseding {\tt here.sty}. David suggests
+% that the {\tt here.sty} be withdrawn from the archives in due course.
+%
+% The {\tt[H]} specifier may simply be added to the float as an optional
+% argument, like all the other specifiers.
+% It may {\em not\/} be used in conjunction with any other placement
+% specifiers, so {\tt[Hhtbp]} is illegal.
+% Neither may it be used as the default placement specifier for a whole
+% class of floats.
+% The following table is
+% defined like this:
+% \begin{verse}
+% |\begin{table}[H]|\\
+% |\begin{tabular}{cl}|\\
+% |\tt t & Top of the page\\|\\
+% \dots\ more stuff \dots\\
+% \end{verse}
+% (It seems that I have to add some extraneous chatter here just so that
+% the float actually comes out right in the middle of a printed page.
+% When I \LaTeX ed the documentation just now it turned out that there
+% was a page break that fell exactly between the ``So now'' line and the
+% float. This wouldn't Prove Anything. Bother.)
+% So now we have the following float placement specifiers:
+% \begin{table}[H]
+% \begin{tabular}{cl}
+% \tt t & Top of the page\\
+% \tt b & Bottom of the page\\
+% \tt p & Page of floats\\
+% \tt h & Here, if possible\\
+% \tt H & Here, definitely
+% \end{tabular}
+% ^^A\caption{Could it be that this just needs a caption?}
+% \end{table}
+%
+% \typeout{End of the Introduction.}
+% \typein[\answer]%
+% {Do you want an annotated listing of the macro definitions (y/n) ?}
+% \def\next{y}\ifx\answer\next\else\expandafter\stop\fi
+% \StopEventually{\PrintIndex}
+%
+% \section{Implementation}
+%
+% As usual, the file identifies itself in the log file.
+% But only if this file's macros aren't yet defined.
+% `Old' versions of \LaTeX\ (those before March 1992) don't have |\@Esphack|.
+% We do an |\@esphack| hack to get around that.
+% \begin{macrocode}
+\@ifundefined{newfloat}{}{\endinput}
+\wlog{Style-Option: `float' 1.1c 18 Dec 92 (AL)}
+\@ifundefined{@Esphack}{\let\@Esphack\@esphack}{}
+% \end{macrocode}
+% In \LaTeX, floats are assigned `type numbers' that are powers of two.
+% Since there are only two classes of floats, their type numbers are
+% hardwired into the document styles. We need to be somewhat more flexible,
+% and thus we initialize a counter to hold the next type number to be
+% assigned. This counter will be incremented appropriately later.
+% \begin{macrocode}
+\newcount\float@type
+\@ifundefined{c@figure}{\float@type=1}{\float@type=4}
+% \end{macrocode}
+% To warm up, we'll look at some of the simpler commands first.
+% \begin{macro}{\floatstyle}
+% The |\floatstyle| command puts its argument into the
+% |\float@style| macro as the name of the new float style.
+% But if the argument doesn't denote a float style, an error message
+% is output instead: Each float style \meta{style} has a corresponding command
+% |\fs@|\meta{style} that contains the appropriate declarations.
+% If the control sequence |\fs@|\meta{arg} (which goes with the
+% argument \meta{arg} to |\floatstyle|) is undefined, i.e.,
+% equals |\relax| under |\ifx|, then the float style \meta{arg}
+% is unknown, and we call |\float@error{|\meta{arg}|}| for the
+% error message.
+% \begin{macrocode}
+\def\floatstyle#1{\expandafter\ifx\csname fs@#1\endcsname\relax
+ \float@error{#1}\else\def\float@style{#1}\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\float@error}
+% Here's the error message. |\@eha| is the help message that says
+% `Your command was ignored.'
+% \begin{macrocode}
+\def\float@error#1{\@latexerr{Unknown float style `#1'}\@eha}
+% \end{macrocode}
+% \end{macro}
+%
+% The next two commands are even simpler. \LaTeX\ says that
+% |\fps@|\meta{float} contains the default placement specifier for
+% the class of floats \meta{float}. |\fname@|\meta{float} expands
+% to the name that appears in \meta{float} captions, e.g., `Figure'.
+% (This is our own definition.)
+% \begin{macrocode}
+\def\floatname#1#2{\@namedef{fname@#1}{#2}}
+\def\floatplacement#1#2{\@namedef{fps@#1}{#2}}
+% \end{macrocode}
+%
+% \begin{macro}{\restylefloat}
+% The |\restylefloat| command sets up everything so that subsequent
+% commands like |\begin{|\meta{float}|}| use the appropriate
+% float style. It defines |\fst@|\meta{float} to expand to a command
+% that sets up the currently selected float style (|\fs@|\meta{style}).
+% Then it defines the commands |\begin{|\meta{float}|}|,
+% |\end{|\meta{float}|}|, |\begin{|\meta{float}|*}| and
+% |\end{|\meta{float}|*}|.
+% \begin{macrocode}
+\def\restylefloat#1{\expandafter\edef\csname
+ fst@#1\endcsname{\expandafter\noexpand\csname
+ fs@\float@style\endcsname}%
+ \@namedef{#1}{\bgroup\@nameuse{fst@#1}\@float{#1}}%
+ \@namedef{#1*}{\bgroup\@nameuse{fst@#1}\@dblfloat{#1}}%
+ \expandafter\let\csname end#1\endcsname\float@end
+ \expandafter\let\csname end#1*\endcsname\float@dblend}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newfloat}
+% Now we can explain how to define a new class of floats. Recall that
+% the three required arguments to |\newfloat| are \meta{type},
+% \meta{placement} and \meta{ext}, respectively. First we save the
+% latter two.
+% \begin{macrocode}
+\def\newfloat#1#2#3{\@namedef{ext@#1}{#3}
+ \floatplacement{#1}{#2}%
+% \end{macrocode}
+% Then we figure out a default value for the `caption name' of this
+% class of floats. If the |\fname@|\meta{type} isn't already defined,
+% we tentatively use \meta{type} as the name. This is convenient if
+% \meta{type} is, say, {\tt Program}, since no |\floatname| command
+% is necessary at all.
+% \begin{macrocode}
+ \expandafter\ifx\csname fname@#1\endcsname\relax
+ \floatname{#1}{#1}\fi
+% \end{macrocode}
+% Then we set up the type number for \LaTeX\ in |\ftype@|\meta{type}.
+% Afterwards we have to set the |\float@type| to the next greater power
+% of two, so that it is ready for the next |\newfloat|. Fortunately,
+% we just have to double it by adding. We don't bother to check for overflow
+% since it is pretty unlikely that somebody will define 25 different classes
+% of floats. Finally, we call |\restylefloat| to define the style and
+% commands for this class of floats.
+% \begin{macrocode}
+ \expandafter\edef\csname ftype@#1\endcsname{\the\float@type}%
+ \advance\float@type by\float@type
+ \restylefloat{#1}%
+% \end{macrocode}
+% Now all that's left is to assemble the |\fnum@|\meta{type} macro
+% that \LaTeX\ wants to use in its captions. Basically it is just
+% `caption name'${}+{}$`counter value', disguised so that the command
+% {\em names\/} appear in the definition instead of their expansions.
+% \begin{macrocode}
+ \expandafter\edef\csname fnum@#1\endcsname%
+ {\expandafter\noexpand\csname fname@#1\endcsname{}
+ \expandafter\noexpand\csname the#1\endcsname}
+% \end{macrocode}
+% Finally, we have to take care of the optional argument, \meta{within}.
+% If the optional argument is present, we pass control to |\@xnewfloat|.
+% Otherwise, we just define the counter for this class of floats.
+% By default, the numbers come out |\arabic|.
+% \begin{macrocode}
+ \@ifnextchar[{\@xnewfloat{#1}}%
+ {\@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}%
+ {}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@xnewfloat}
+% Here we deal with the optional argument to |\newfloat|. We have
+% to create a new counter as per |\newcounter{|\meta{type}|}|
+% and add that counter to the list of counters to be reset whenever
+% counter \meta{within} is stepped. The standard command
+% |\newcounter{|\meta{type}|}[|\meta{within}{\tt]} takes care of that.
+% However, we can't define the \meta{type} counter if it's already defined.
+% While this case is simply ignored when \meta{within} is not present,
+% we issue a warning here since what comes out is probably not what the user
+% expects.
+% \begin{macrocode}
+\def\@xnewfloat#1[#2]{\@ifundefined{c@#1}{\newcounter{#1}[#2]%
+ \expandafter\edef\csname the#1\endcsname{%
+ \expandafter\noexpand\csname
+ the#2\endcsname.\noexpand\arabic{#1}}}%
+ {\@warning{Can't redefine counter variable for #1.}}}
+% \end{macrocode}
+% \end{macro}
+%
+% We have to adapt some of \LaTeX's internal macros to our needs.
+% There are several things that have to be changed around
+% in order to provide the functionality of David Carlisle's {\tt here.sty}.
+% The following is thus lifted from {\tt here.sty}, with changes and with
+% David's permission:
+%
+% \begin{macro}{\@Hxfloat}
+% We save the original version of |\@xfloat|. (This macro is called from
+% |\@float|, which we used above to define the environment commands for a
+% new class of floats.)
+% \begin{macrocode}
+\let\@Hxfloat\@xfloat
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@xfloat}
+% The new version of |\@xfloat| looks for a |[H]| argument.
+% If it is present |\@HHfloat| is called, otherwise the original macro
+% (renamed to |\@Hxfloat|) is called.
+% \begin{macrocode}
+\def\@xfloat#1[{\@ifnextchar{H}{\@HHfloat{#1}[}{\@Hxfloat{#1}[}}
+% \end{macrocode}
+% \end{macro}
+% Later on we'll need a box to save a |[H]| float.
+% \begin{macrocode}
+\newbox\float@box
+\newif\if@flstyle
+% \end{macrocode}
+% \begin{macro}{\@HHfloat}
+% First gobble the |[H]|. Note that {\tt H} should not be used in
+% conjunction with the other placement options, nor as the value of the
+% default placement, as set in |\fps@|{\it type}.
+% \begin{macrocode}
+\def\@HHfloat#1[H]{%
+% \end{macrocode}
+% Locally redefine the end of the environment.
+% \begin{macrocode}
+ \expandafter\let\csname end#1\endcsname\float@endH
+% \end{macrocode}
+% We don't get a |\@currbox| if we don't actually use the float mechanism.
+% Therefore we fake one using the |\float@box| defined above.
+% \begin{macrocode}
+ \let\@currbox\float@box
+% \end{macrocode}
+% Now we save the current float class name for use in constructing the
+% |\caption|. The caption box (defined below) is initialised to an empty
+% box to avoid trouble with floats not having a caption. Then we start the
+% box that'll hold the float itself.
+% |\parindent| is set to zero for compatibility with the standard {\tt [h]}
+% option.
+% \begin{macrocode}
+ \def\@captype{#1}\setbox\@floatcapt=\vbox{}%
+ \expandafter\ifx\csname fst@#1\endcsname\relax
+ \@flstylefalse\else\@flstyletrue\fi
+ \setbox\@currbox=\vbox\bgroup\parindent\z@
+% \end{macrocode}
+% The final |\ignorespaces| is needed to gobble any spaces or newlines
+% after the {\tt[H]} tokens.
+% \begin{macrocode}
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\float@makebox}
+% Basically, we must arrange for `style commands' to be executed
+% at certain points during the generation of the float.
+% \LaTeX\ puts a float into a vertical box |\@currbox| which it takes
+% off a list of empty boxes for insertions. When the |\float@makebox| macro
+% is called, |\@currbox| contains the complete float, minus the caption
+% --- we'll see later that we use our own |\caption| command to
+% put the caption into a |\vbox| of its own. This is the only way
+% we can control the position of the caption by the float style,
+% regardless of where the caption appears in the float's input text itself.
+% So the `style commands' are |\@fs@pre|, which is inserted at the
+% very beginning of the float, |\@fs@mid|, which comes between the
+% float and the caption (or the caption and the float, if captions are put
+% at the top), and |\@fs@post|, which finishes off the float.
+% The caption may appear at the top or at the bottom of the float,
+% as defined by |\@fs@iftopcapt|. Therefore, before we hand the
+% float to \LaTeX\ for positioning, it is taken apart and reassembled
+% using the style commands.
+% \begin{macrocode}
+\def\float@makebox{%
+ \vbox{\hsize\columnwidth \@parboxrestore
+ \@fs@pre\@fs@iftopcapt
+ \ifvbox\@floatcapt\unvbox\@floatcapt\par\@fs@mid\fi
+ \unvbox\@currbox
+ \else\unvbox\@currbox
+ \ifvbox\@floatcapt\par\@fs@mid\unvbox\@floatcapt\fi
+ \fi\par\@fs@post\vskip\z@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\float@end}
+% The internal macro |\end@float| appears here under the name of |\float@end|.
+% The main thing which is changed is that we call |\float@makebox| to
+% reconstruct the float according to the float style.
+% \begin{macrocode}
+\def\float@end{\egroup
+ \global\setbox\@currbox\float@makebox
+% \end{macrocode}
+% Now \LaTeX\ takes over again.
+% \begin{macrocode}
+ \ifnum\@floatpenalty <\z@ \@cons\@currlist\@currbox
+ \ifdim \ht\@currbox >\textheight
+ \ht\@currbox\textheight \fi
+ \ifnum\@floatpenalty < -\@Mii
+ \penalty -\@Miv \@tempdima\prevdepth
+ \vbox{}\prevdepth \@tempdima \penalty\@floatpenalty
+ \else \vadjust{\penalty -\@Miv
+ \vbox{}\penalty\@floatpenalty}\@Esphack
+ \fi\fi\egroup}
+% \end{macrocode}
+% (The final |\egroup| is not present in the original definition;
+% we need it to finish off the |\bgroup| that precedes the
+% |\@nameuse| in the |\begin{|\meta{float}|}| commands.
+% This is to keep the style commands local.)
+% \end{macro}
+%
+% \begin{macro}{\float@endH}
+% The |\float@endH| command is, again, derived from {\tt here.sty}. It'll
+% deal correctly with a non-floating float, inserting the proper amounts
+% of white space above and below.
+% \begin{macrocode}
+\def\float@endH{\egroup \vskip\intextsep
+ \if@flstyle\float@makebox\else\box\@currbox\fi
+ \vskip\intextsep\egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\float@dblend}
+% The |\float@dblend| macro is an almost-verbatim copy of
+% |\end@dblfloat| but for the last part, from |\fi\egroup| on.
+% The |\egroup| is, of course, necessary because of the |\bgroup|
+% at the very beginning of the float. And we have to call |\float@end|
+% instead of |\end@float|, naturally.
+% \begin{macrocode}
+\def\float@dblend{\if@twocolumn
+ \par\vskip\z@\egroup
+ \ifnum\@floatpenalty <\z@ \@cons\@dbldeferlist\@currbox\fi
+ \ifnum \@floatpenalty =-\@Mii \@Esphack\fi\egroup\else\float@end\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% Now for the caption routines.
+% We use a box, |\@floatcapt|, to hold the caption while the float
+% is assembled.
+% \begin{macrocode}
+\newbox\@floatcapt
+% \end{macrocode}
+%
+% \begin{macro}{\caption}
+% This is the only \LaTeX\ macro that this document style supersedes.
+% Our |\caption| command checks whether there is a custom style
+% defined for the current float (whose type can be found in |\@captype|).
+% If so, the caption routines from {\tt float.sty} are used, otherwise
+% we call the vanilla \LaTeX\ routines.
+% The |\@flcapt| conditional is used to tell the float-assembly routines
+% that there actually {\em is\/} a caption. We need this to properly handle
+% {\tt figure}s and {\tt table}s that have been restyled.
+% \begin{macrocode}
+\def\caption{\refstepcounter\@captype
+ \expandafter\ifx\csname fst@\@captype\endcsname\relax
+ \let\@tempf\@caption
+ \else\let\@tempf\float@caption\fi \@dblarg{\@tempf\@captype}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\float@caption}
+% The |\float@caption| macro takes care of entering the caption into
+% the appropriate listing. It also controls the typesetting of the caption
+% itself, although a style-dependent macro |\@fs@capt| is called
+% to handle the specifics. Note that because the caption is saved in a box
+% instead of being output to the float right away, you cannot simply put
+% a legend after the caption proper; it has to follow the |\caption|
+% command in an optional argument.
+%
+% First of all, we call |\addcontentsline| to update the list of
+% floats of this class. Note that |\float@caption| is |\long|
+% to allow for paragraph breaks in its arguments.
+% \begin{macrocode}
+\long\def\float@caption#1[#2]#3{\addcontentsline{\csname
+ ext@#1\endcsname}{#1}{\protect\numberline{\csname
+ the#1\endcsname}{\ignorespaces #2}}
+% \end{macrocode}
+% Now we collect the caption proper. The caption name and number are
+% taken from |\fnum@|\meta{float}, where \meta{float} is the class
+% of float we're currently handling.
+% \begin{macrocode}
+ \global\setbox\@floatcapt\vbox\bgroup\@parboxrestore
+ \normalsize\@fs@capt{\csname fnum@#1\endcsname}{\ignorespaces #3}%
+% \end{macrocode}
+% Finally we check for the presence of the optional argument. If there is
+% one, we call |\float@ccon| to pick it up; otherwise, the |\egroup|
+% finishes off the box.
+% \begin{macrocode}
+ \@ifnextchar[{\float@ccon}{\egroup}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\float@ccon}
+% The |\float@ccon| macro expands to the optional argument of a
+% |\caption| command, followed by |\par\egroup|. Note that this
+% precludes using |\verb| \& Co.\ in the optional argument; the
+% interested reader is urged to fix this problem as an exercise.
+% \begin{macrocode}
+\long\def\float@ccon[#1]{#1\par\egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\listof}
+% The |\listof| command reads the desired list of floats from the
+% appropriate auxiliary file. The file is then restarted.
+% Currently the list appears at the chapter or the section level, depending
+% on whether chapters are supported in the document style at all.
+% First of all, we check whether the float style that's supposed to be
+% listed is actually defined. If not, we output a |\float@error|.
+% \begin{macrocode}
+\def\listof#1#2{\expandafter\ifx\csname
+ ext@#1\endcsname\relax\float@error{#1}%
+% \end{macrocode}
+% All's well until now. We determine whether the list is going to be a
+% chapter or a section, and we define the |\l@|\meta{float} command
+% that \LaTeX\ needs for formatting the list.
+% After that, we call |\@starttoc| with the correct file extension
+% to do the actual work.
+% \begin{macrocode}
+ \else
+ \@ifundefined{chapter}{\def\@tempa{\section*}}%
+ {\def\@tempa{\chapter*}}%
+ \@tempa{#2\@mkboth{\uppercase{#2}}{\uppercase{#2}}}%
+ \expandafter\def\csname
+ l@#1\endcsname{\@dottedtocline{1}{1.5em}{2.3em}}%
+ \@starttoc{\csname ext@#1\endcsname}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{The Float Styles}
+%
+% Finally, we define the three standard float styles that were outlined
+% in the Introduction. Every float style \meta{style} corresponds to a
+% command |\fs@|\meta{style} which contains the definitions of the
+% style commands, namely
+% \begin{center}\begin{tabular}{rl}
+% |\@fs@pre|&top of the float\\
+% |\@fs@mid|&between float and caption\\
+% |\@fs@post|&bottom of the float\\
+% |\@fs@capt|&formatting routine for caption\\
+% |\@fs@cfont|&font for caption name \& number
+% \end{tabular}\end{center}
+%
+% \begin{macro}{\floatc@plain}
+% The |\floatc@plain| macro formats a caption the way \LaTeX\ does
+% it: if the caption is fairly short, it is centered, otherwise it is
+% formatted as a paragraph. The only difference is that the portion
+% containing the caption name and number uses the |\@fs@captfont|.
+% \begin{macrocode}
+\def\floatc@plain#1#2{\setbox\@tempboxa\hbox{{\@fs@cfont #1:} #2}%
+ \ifdim\wd\@tempboxa>\hsize {\@fs@cfont #1:} #2\par
+ \else\hbox to\hsize{\hfil\box\@tempboxa\hfil}\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\fs@plain}
+% The {\tt plain} float style is similar to what \LaTeX\ does of its
+% own accord; the only difference is that the caption is guaranteed
+% to come out at the bottom of the float.
+% \begin{macrocode}
+\def\fs@plain{\def\@fs@cfont{\rm}\let\@fs@capt\floatc@plain
+ \def\@fs@pre{}\def\@fs@post{}\def\@fs@mid{\vskip10pt\relax}%
+ \let\@fs@iftopcapt\iffalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\floatc@ruled}
+% The |\floatc@ruled| command is even simpler than the
+% |\floatc@plain| macro. The caption is simply printed `as is'.
+% \begin{macrocode}
+\def\floatc@ruled#1#2{{\@fs@cfont #1} #2\par}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fs@ruled}
+% In the {\tt ruled} float style, the caption appears at the top of the
+% float, preceded and followed by horizontal rules.
+% Another rule followes the whole of the float.
+% \begin{macrocode}
+\def\fs@ruled{\def\@fs@cfont{\bf}\let\@fs@capt\floatc@ruled
+ \def\@fs@pre{\hrule height.8pt depth0pt \kern2pt}%
+ \def\@fs@post{\kern2pt\hrule\relax}%
+ \def\@fs@mid{\kern2pt\hrule\kern2pt}%
+ \let\@fs@iftopcapt\iftrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fs@boxed}
+% The {\tt boxed} float style puts the float into a box (which is slightly
+% larger than the usual |\textwidth|). The caption appears below
+% the box.
+% \begin{macrocode}
+\@namedef{fs@boxed}{\def\@fs@cfont{\bf}\let\@fs@capt\floatc@plain
+ \def\@fs@pre{\dimen0=\hsize \advance\dimen0 by6.8pt \hbadness10000
+ \moveleft3.4pt\vbox\bgroup\hsize=\dimen0\hrule
+ \hbox to\dimen0\bgroup\vrule\kern3pt\vbox\bgroup\kern3pt}%
+ \def\@fs@mid{\kern3pt\egroup\kern3pt\vrule\egroup
+ \hrule\egroup\kern2pt}%
+ \def\@fs@post{}\let\@fs@iftopcapt\iffalse}
+% \end{macrocode}
+% \end{macro}
+%
+% Before we finish, we set the float style to {\tt plain}.
+% \begin{macrocode}
+\floatstyle{plain}
+% \end{macrocode}
+% Other float styles can be added without much ado.
+% If there are many more float styles, it should be worthwhile
+% to invent a scheme similar to that used in Frank Mittelbach's
+% {\tt theorem} option in order to conserve space, i.e., put the
+% float styles into individual files that can be loaded on demand.
+% I would like to hear from people who define interesting
+% float styles.
+% \Finale
+% \end{document}
+\endinput
diff --git a/obsolete/macros/latex209/contrib/misc/fnpara.sty b/obsolete/macros/latex209/contrib/misc/fnpara.sty
new file mode 100644
index 0000000000..03e909b7e3
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/fnpara.sty
@@ -0,0 +1,138 @@
+% FNPARA.STY
+% A LaTeX style to typeset footnotes in run-on paragraphs.
+% See end of this file (after \endinput) for comments.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% From LaTeX.tex :
+\long\def\@footnotetext#1{\insert\footins{\footnotesize
+%CCCC ---the next four lines are probably redundant, since:
+% the paragraphing takes place later;
+% and this style of footnote never gets split.
+ \interlinepenalty\interfootnotelinepenalty
+ \splittopskip\footnotesep
+ \splitmaxdepth \dp\strutbox
+%CCCC ---these two lines will need to be reproduced when doing the unboxing.
+ \hsize\columnwidth
+ \@parboxrestore
+%CCCC
+ \floatingpenalty \@MM
+\edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}
+%CCCC --- need to set each footnote in an hbox and apply
+% the fudge factor here:
+ \setbox0=\hbox{%
+ \@makefntext
+%CCCC --- this needs a parameter
+% --- the rule should be moved to the beginning of the footnote
+% paragraph:
+% --- but the \ignorespaces should be left here.
+% \rule{\z@}{\footnotesep}
+ {\ignorespaces
+ #1\strut
+%CCCC --- penalty to help line breaking in footnote para goes here:
+% value from TeXbook.
+ \penalty -10
+ \hskip\footglue
+ } % end of parameter
+ } % end of \hbox
+ \dp0=0pt \ht0=\fudgefactor\wd0 \box0
+ } % end of \footins
+ } % end of \def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%CCCC --- from TeXbook
+\newskip\footglue \footglue=1em plus.3em minus.3em
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Cut down from ARTICLE.TEX :
+\long\def\@makefntext#1{{$^{\@thefnmark}$}\nobreak\hskip.5em\relax#1}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% From LaTeX.TEX:
+\def\@makecol{\ifvoid\footins \setbox\@outputbox\box\@cclv
+ \else\setbox\@outputbox
+ \vbox{\boxmaxdepth \maxdepth
+ \unvbox\@cclv\vskip\skip\footins\footnoterule
+ \global\setbox1\vbox{\makefootnoteparagraph}\unvbox1}\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}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% From TeXbook, p.398 ff., AVOIDING the redefinition of \\ in LaTeX!!
+{\catcode`p=12 \catcode`t=12 \gdef\@ennumber#1pt{#1}}
+
+{\footnotesize \newdimen\footnotebaselineskip
+%CCCC --definitely needed:
+ \global
+ \footnotebaselineskip=\normalbaselineskip}
+
+\dimen0=\footnotebaselineskip \multiply\dimen0 by 1024
+\divide \dimen0 by \columnwidth \multiply\dimen0 by 64
+\xdef\fudgefactor{\expandafter\@ennumber\the\dimen0 }
+
+\def\makefootnoteparagraph{\unvbox\footins \makehboxofhboxes
+ \setbox0=\hbox{\unhbox0 \removehboxes}
+%CCCC ---now we are ready to set the paragraph:
+ \hsize\columnwidth
+ \@parboxrestore
+ \baselineskip=\footnotebaselineskip
+ \noindent
+%CCCC ---this is where the strut is needed:
+ \rule{\z@}{\footnotesep}%
+ \unhbox0\par}
+\def\makehboxofhboxes{\setbox0=\hbox{}
+ \loop\setbox2=\lastbox \ifhbox2 \setbox0=\hbox{\box2\unhbox0}\repeat}
+\def\removehboxes{\setbox0=\lastbox
+ \ifhbox0{\removehboxes}\unhbox0 \fi}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+
+ FNPARA.STY
+ A LaTeX style to typeset footnotes in run-on paragraphs.
+
+History:
+
+A vain attempt at this LaTeX modification was tried in late
+September 1988 by Dominik Wujastyk, and sent to TeXhax and UKTeX
+for comment. Chris Rowley came up with a working
+version a few days later, but it still needs thorough testing.
+
+The Style:
+
+This LaTeX style changes the way LaTeX does footnotes. With this
+style invoked (\documentstyle[fnpara]{article}), footnotes will
+be typeset in a running paragraph, instead of one above another.
+It is suitable for texts such as critical editions, which contain
+many short footnotes.
+
+This is based on the TeX macros described by Knuth in the
+TeXbook, Dirty Tricks, pages 398--400. It is not tested beyond
+some simple examples. In particular, it has not been tested
+properly in connection with even the simplest of environments, nor with
+other floats.
+
+(In fact, ordinary LaTeX footnotes sometimes do not work well
+if they need splitting (e.g. producing blank pages,
+or appearing in shufled form): but these
+problems should not affect this style.
+I --CR-- have sent in a Bug Report about some
+of these problems.)
+
+Be aware of Knuth's note on the limitations of this method of
+doing the job: the TeX stack is used four times per footnote,
+and the stack is limited (TeXbook pp. 300--301). So if you have
+very many footnotes (in the hundreds) and encounter
+ "! TeX capacity exceeded, sorry [... save size ...]"
+errors, you may need to break your text into smaller sections.
+Fortunately, this is very easy to do with LaTeX. And the
+footnote counter can be reset to make the joins seamless.
+
+Chris Rowley
+Office tel: (England) 01 794 0575
+Janet: CA_ROWLEY@UK.AC.OPEN.ACS.VAX
+
+Dominik Wujastyk
+Office tel: (England) 01 387 4477 x 3013
+Janet: Wujastyk@UK.AC.UCL.EUCLID
+
+
+October 3, 1988
diff --git a/obsolete/macros/latex209/contrib/misc/index.doc b/obsolete/macros/latex209/contrib/misc/index.doc
new file mode 100644
index 0000000000..7060e05772
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/index.doc
@@ -0,0 +1,1367 @@
+% \iffalse
+% ====================================================================
+% @LaTeX-style-file{
+% author = "David M. Jones",
+% version = "3.02",
+% date = "15 September 1993",
+% time = "15:11:39 EDT",
+% filename = "index.doc",
+% 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 = "61047 1367 6478 49767",
+% email = "dmjones@theory.lcs.mit.edu",
+% codetable = "ISO/ASCII",
+% keywords = "LaTeX, index",
+% supported = "yes",
+% docstring = "This is a reimplementation of LaTeX's
+% indexing macros to provide better support
+% for indexing in LaTeX. For example, it
+% supports multiple indexes in a single
+% document and provides a more robust \index
+% command.
+%
+% 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.",
+%
+% }
+% ====================================================================
+% \fi
+%
+% \iffalse
+%
+% HOW TO INSTALL THIS FILE:
+%
+% If you have the latest versions of DocStrip and doc.sty installed on
+% your system, type "tex index.doc" to unpack the files index.sty and
+% sample.tex. Then install index.sty wherever style files belong on
+% your system and read the comments at the beginning of sample.tex to
+% see how to run the test. Finally, format the documentation by
+% executing the following three commands:
+%
+% latex index.doc
+% makeindex -s gind.ist index
+% latex index.doc
+%
+% If you don't already have DocStrip and doc.sty installed on your
+% system, you should get them from one of the following sources:
+%
+% ftp.uni-stuttgart.de:soft/tex/macros/latex/distribs/doc
+% pip.shsu.edu:tex-archive/macros/latex/distribs/doc
+% ftp.tex.ac.uk:tex-archive//macros/latex/distribs/doc
+%
+% If for some reason you really can't install the doc package on your
+% system, then you can name this file index.sty and use it as a style
+% file. However, you will likely notice some slowness in loading this
+% file, due to the large number of comments that have to be skipped
+% over.
+%
+% CAUTION: Use only as directed. Do not take internally. May cause
+% rash if applied directly to skin. Federal law prohibits
+% distributing without a proscription.
+%
+% __ __
+% / \ / \
+% / \ / \
+% / \ \ / \ \
+% / ) \ / ) \
+% \ ( / \ ( /
+% \ \ / \ \ /
+% \ / \ /
+% \__/ \__/
+% || ||
+% || ||
+% ------ ------
+%
+% Now the real fun starts. This file is designed to serve 4 (or 5, if
+% you prefer) distinct functions:
+%
+% (1) In the absence of DocStrip, it can be named index.sty and used
+% as a LaTeX style file.
+%
+% (2) It is a DocStrip batch file that can be used to unpack index.sty
+% and sample.tex. This function is triggered when the file is used as
+% an input file for plain TeX, i.e., when the command "tex index.doc"
+% is executed.
+%
+% (3) It is the driver file for the documentation of index.sty. This
+% function is triggered when the file is used as an input file for
+% LaTeX, i.e., when the command "latex index.doc" is executed.
+%
+% (4) It is the source file for steps 2 and 3.
+%
+% To make this work, we have to be able to determine which of these
+% cases we are in and take appropriate action.
+%
+% The next few lines of code accomplish this. First, note that if
+% this file is used as input to the doc.sty \DocInput command, then
+% the \iffalse ... \fi will cause this code to be ignored. Similarly,
+% the <install> guard prevents this code from being copied into any
+% output files by DocStrip.
+%
+% Next comes the more interesting code. We need two auxiliary
+% commands to make sure that the correct commands get executed at the
+% correct time. In order to avoid impinging on the user's namespace,
+% I use two macro names from index.sty.
+%
+% \proofmodetrue: This is a no-op, unless we are producing
+% documentation (i.e., the user has typed "latex index.doc"), in
+% which case it expands to the appropriate initialization code,
+% namely a \documentstyle command, plus \MakePercentIgnore to set
+% things up for doc.sty, and a call to \csname iffalse\endcsname
+% to match the fi that follows. (The earlier iffalse was ignored
+% because when that line was read, % was still a comment character
+% and not an ignored character.)
+%
+% \renewindex: This eats its argument unless this file is being used
+% as a DocStrip batchfile (i.e., the user has typed "tex
+% index.doc"), in which case it simply regurgitates its argument.
+% The commands inside the \renewindex commands are just normal
+% DocStrip batchfile commands.
+%
+% Before doing anything else, we check to make sure that \newindex is
+% not already defined. If it is, that means this file has already
+% been loaded once as a style file (or else someone else has already
+% defined a \newindex command), which means we should not load the
+% file a second time. (This is the same test that will be used later
+% to determine whether or not index.sty has already been loaded. So,
+% if you are using index.doc as index.sty, this test will actually be
+% made twice, but that should be ok.)
+%
+% Finally, we determine whether we are inside plain TeX or LaTeX by
+% checking to see if \documentstyle is defined. If we are inside
+% LaTeX, we check to see if we are being used as a style file or a
+% documentation file by checking to see if the \catcode of @ is 11
+% (letter) or not.
+%
+% The braces around the first two blocks of code below are necessary
+% because DocStrip will open this file and start reading it
+% line-by-line. The braces ensure that the entire \ifx ... \fi
+% structures are picked up at once.
+%
+% No doubt strange and terrible things will happen if you feed this
+% file to any dialect of TeX other than plain TeX or LaTeX.
+%
+% The blame for much of the following code goes to David Wald
+% <wald@theory.lcs.mit.edu>, who forced me to adopt this approach
+% after I had already come up with a safer alternative that was almost
+% as easy to unpack. If anything goes wrong, it's his fault.
+%
+% \fi
+%
+% \iffalse
+%<*install>
+{\expandafter\ifx\csname newindex\endcsname\relax\else\endinput\fi}
+{
+ \global\let\proofmodetrue\relax
+ \expandafter\ifx\csname documentstyle\endcsname\relax
+ \gdef\renewindex#1{#1}
+ \else
+ \gdef\renewindex#1{}
+ \ifcat a\noexpand @\else
+ \gdef\proofmodetrue{%
+ \documentstyle[doc]{article}\MakePercentIgnore
+ \csname iffalse\endcsname
+ }
+ \fi
+ \fi
+}
+\renewindex{\def\batchfile{index.doc}}
+\renewindex{\input docstrip.tex }
+\renewindex{\generateFile{index.sty}{t}{\from{index.doc}{style}}}
+\renewindex{\generateFile{sample.tex}{t}{\from{index.doc}{test}}}
+\renewindex{\endinput}
+\proofmodetrue
+%</install>
+% \fi
+
+\def\fileversion{v3.02}
+\def\filedate{15 September 1993}
+\def\docdate {15 September 1993}
+
+%% \CheckSum{692}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%
+% \DoNotIndex{\!,\/,\?,\@,\^,\_}
+% \DoNotIndex{\@@par,\@M,\@auxout,\@bsphack,\@esphack,\@depth,\@ehc}
+% \DoNotIndex{\@for,\@flushglue,\@gobble,\@gobbletwo,\@height,\@idxitem}
+% \DoNotIndex{\@ifnextchar,\@ifstar,\@ifundefined,\@input,\@latexerr}
+% \DoNotIndex{\@makeschapterhead,\@namedef,\@nameuse,\@nil}
+% \DoNotIndex{\@nobreakfalse,\@restonecolfalse,\@restonecoltrue}
+% \DoNotIndex{\@tempa,\@tempf,\@temptokena,\@themark,\@width}
+% \DoNotIndex{\active,\aindex,\baselineskip,\begin,\begingroup,\box}
+% \DoNotIndex{\c@page,\catcode,\chapter,\char,\chardef,\closeout}
+% \DoNotIndex{\CodelineIndex,\sp,\sb,\label,\leavevmode,\mark}
+% \DoNotIndex{\mark,\newinsert,\newwrite,\newtoks,\xdef}
+% \DoNotIndex{\columnsep,\columnseprule,\columnwidth,\csname,\def}
+% \DoNotIndex{\dimen,\do,\DocInput,\documentstyle,\edef,\else,\em}
+% \DoNotIndex{\EnableCrossrefs,\end,\endcsname,\endgroup,\endinput}
+% \DoNotIndex{\everypar,\expandafter,\fi,\filedate,\fileversion}
+% \DoNotIndex{\footnotesize,\gdef,\global,\glossary,\hangindent}
+% \DoNotIndex{\if@filesw,\if@nobreak,\if@twocolumn,\if@twoside}
+% \DoNotIndex{\hsize,\hskip,\ifhmode,\ifmmode,\ifodd,\ifvmode,\ifx}
+% \DoNotIndex{\immediate,\insert,\item,\jobname,\long}
+% \DoNotIndex{\let,\lineskip,\marginparsep,\marginparwidth,\maxdimen}
+% \DoNotIndex{\makeatletter,\noexpand,\openout,\protect,\rlap}
+% \DoNotIndex{\min,\newpage,\nobreak,\normalbaselineskip}
+% \DoNotIndex{\normallineskip,\p@,\par,\parfillskip,\parindent,\parskip}
+% \DoNotIndex{\penalty,\relax,\section,\sin,\sloppy,\space,\string}
+% \DoNotIndex{\tableofcontents,\the,\thepage,\thispagestyle,\toks,\tt}
+% \DoNotIndex{\twocolumn,\typeout,\uppercase,\vbox,\vrule,\vskip,\vss}
+% \DoNotIndex{\write,\z@,\z@skip}
+%
+% \MakeShortVerb{\=}
+%
+% \setcounter{StandardModuleDepth}{1}
+%
+% \CodelineIndex
+%
+% \title{A new implementation of \LaTeX's indexing
+% commands\thanks{This file has version number \fileversion,
+% last revised \filedate, documentation dated \docdate. The
+% definitive version of this file is
+% {\tt theory.lcs.mit.edu:pub/tex/index.doc}.}}
+%
+% \author{David M. Jones}
+%
+% \date{\filedate}
+%
+% \begin{document}
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% This style file reimplements \LaTeX's indexing macros to provide
+% better and more robust support for indexes. In particular, it
+% provides the following features:
+% \begin{enumerate}
+%
+% \item
+% Support for multiple indexes.
+%
+% \item
+% A $*$-variant of the =\index= command that, in addition to putting
+% it's argument in the index, also typesets it in the running text.
+%
+% \item
+% A =\shortindexingon= command that makes =^= and =_= shorthand for
+% =\index= and =\index*=, respectively (but only outside of math mode,
+% of course). This can be turned of with the =\shortindexingoff=
+% command.
+%
+% \item
+% The {\tt showidx} style option has been merged into this file. The
+% command =\proofmodetrue= can be used to enable the printing of index
+% entries in the margin of pages. The size and style of font can be
+% controlled with the =\indexproofstyle= command.
+%
+% \item
+% A two-stage process for creating the raw index files, similar to
+% that used to create tables of contents. This means that if you have
+% a large document consisting of several =\include='d files, you no
+% longer lose the index if you format only part of the document with
+% =\includeonly=.
+%
+% \item
+% The =\index= command has been rewritten to be more robust. In
+% particular, it no longer depends on =\catcode= changes to work
+% properly, so the new =\index= command can be used in places that the
+% original couldn't, such as inside the arguments of other macros.
+%
+% \end{enumerate}
+%
+%
+% \section{Creating an index with \LaTeX}
+%
+% Conceptually, there are three stages to creating an index with
+% \LaTeX. First, the raw index information has to be written out to a
+% file. Then, the raw information needs to be processed and turned
+% into a finished index. Finally, the finished index has to be read
+% back in by \LaTeX\ and formated.
+%
+% In \LaTeX, this is accomplished with the commands =\makeindex=,
+% =\index=, =\printindex=, and (most often) with the auxiliary program
+% {\tt makeindex}. Assuming that your main file is called {\tt
+% foo.tex}, =\makeindex= opens the file {\tt foo.idx} and initializes
+% it for holding the raw index entries and =\index= is used to put raw
+% index entries into {\tt foo.idx}. Then the raw index file is
+% processed by {\tt makeindex}, which puts the finished index in {\tt
+% foo.ind}. Finally, the =\printindex= command is used in your
+% \LaTeX\ document to indicate where the file {\tt foo.idx} should be
+% read back in, i.e., where the index should appear in your document.
+%
+% This style modifies the =\makeindex=, =\index=, and =\printindex=
+% commands, as described below.
+%
+%
+% \section{The user interface}
+%
+% There are four pieces of information associated with each index:
+% \begin{enumerate}
+%
+% \item
+% A short, unique tag that identifies the index.
+%
+% \item
+% The extension of the output file where the raw index information
+% will be put by \LaTeX.
+%
+% \item
+% The extension of the input file where the processed information will
+% be put by {\tt makeindex} to be read in later by \LaTeX.
+%
+% \item
+% The title of the index.
+%
+% \end{enumerate}
+%
+%
+% \DescribeMacro{\newindex}
+% Correspondingly, the =\newindex= command takes four arguments. For
+% example, if you wanted to declare an author index, you might use the
+% following:
+% \begin{verbatim}
+% \newindex{aut}{adx}{and}{Name Index}
+% \end{verbatim}
+% Here, =aut= is the tag used to identify the author index, and ``Name
+% Index'' is the title of the index. If the name of your main file is
+% =root.tex=, then \LaTeX\ will write the raw index entries to the
+% file =root.adx=, and you will execute the following {\tt makeindex}
+% command to process the author index:
+% \begin{verbatim}
+% makeindex -o root.and root.adx
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\renewindex}
+% The =\renewindex= command takes the same four arguments as the
+% =\newindex= command and can be used to redefine indexes that have
+% been previously declared.
+%
+%
+% \DescribeMacro{\makeindex}
+% For backwards compatibility, the =\makeindex= command is redefined
+% to use =\newindex=. It is essentially equivalent to
+% \begin{verbatim}
+% \newindex{default}{idx}{ind}{Index}
+% \end{verbatim}
+% The index labeled =default= is special: it is the one that will be
+% used by =\index= and =\printindex= unless another index is
+% specified (see below).
+%
+%
+% \DescribeMacro{\printindex}
+% The =\printindex= command is modified by the addition of an optional
+% argument, which is the tag of the index that should be printed.
+%
+%
+% \DescribeMacro{\index}
+% The =\index= command is modified in two ways. First, there is a
+% $*$-variant of the command that, in addition to putting its
+% argument in an index, also typesets it on the page. Second,
+% =\index= now takes an optional argument that should be the tag of
+% the index where its argument should be put. If no such tag is
+% supplied, the =default= index (such as that opened by =\makeindex=
+% above) is used.
+%
+%
+% \DescribeMacro{\shortindexingon}
+% \DescribeMacro{\shortindexingoff}
+% Perhaps the most dubious feature of =index.sty= is that it allows
+% you to define the characters =^= and =_= to be abbreviations for
+% =\index*= and =\index= outside of math mode. These abbreviations
+% are enables by the =\shortindexingon= command and disabled by the
+% =\shortindexingoff= command. Both of these commands make their
+% changes locally rather than globally, so they can be used to enable
+% or disable the abbreviations within a group. (This might be useful,
+% for example, if you wanted the abbreviations turned on throughout
+% most of the documentation, but turned off in one particular
+% environment.) In addition,
+% \DescribeMacro{shortindexingon}=shortindexingon= can be used as an
+% environment if that seems appropriate.
+%
+%
+% \DescribeMacro{\proofmodetrue}
+% \DescribeMacro{\proofmodefalse}
+% \DescribeMacro{\indexproofstyle}
+% As mentioned above, the =showidx= document-style option has been
+% merged into =index.sty=. It can be turned on with =\proofmodetrue=
+% and turned off with =\proofmodefalse=. When it is turned on,
+% all\footnote{Well, most, at least. There are some circumstances
+% under which the index entries won't show up in the proofs, although
+% they will show up in the index.} index entries will be put in the
+% margin of the page where they appear. By default, they appear in
+% the typewriter font at =\footnotesize=, but the user can override
+% this with the =\indexproofstyle= command, for example,
+% \begin{verbatim}
+% \indexproofstyle{\footnotesize\it}
+% \end{verbatim}
+% will cause them to be put in italics instead.
+%
+%
+% \DescribeMacro{\disableindex}
+% There are some circumstances where it might be helpful to suppress
+% the writing of a particular raw index file. The =\disableindex=
+% command is provided for this purpose. It takes one argument, a
+% comma-separated list of tags of the indexes that should be disabled.
+% This command should come {\em before\/} the declarations for the
+% indexes that are being disabled\footnote{This limits its usefulness
+% somewhat, but since the output file for an index is opened when the
+% index is declared, the damage has already been done. We could close
+% the file, but we can't prevent a new output stream from being
+% allocated and we can't keep the old file from being truncated.}.
+% One situation where the =\disableindex= command might be useful is
+% if you have so many indexes that you are exhausting \TeX's supply of
+% output streams\footnote{\TeX\ only has 16 output streams, which are
+% allocated with the {\tt\string\newwrite} command. The standard
+% \LaTeX\ styles use from 3 to 7 of these, which should leave room for
+% up to 9 indexes. Of course, if you have extra output files, then
+% there will be fewer output streams left for indexes.}. For example,
+% suppose you have 10 indexes, but only 5 output streams available for
+% indexes. Then you could add a =\disableindex= command to the top of
+% your file to suppress the writing of all but 5 of the indexes.
+% (Note that the index entries would still get written to the =.aux=
+% file; they just wouldn't get copied to the individual raw index
+% files at the end of the run.) At the end of the run, you could then
+% re-run your main file a couple of times with different indexes
+% disabled until you had created all of the raw index files. This is
+% somewhat clumsy, but safer than any alternative I've come up
+% with\footnote{A less clumsy (for the user, at least) solution would
+% be to read the =.aux= file multiple times at the end of the run,
+% each time writing just one of the raw index files. The main
+% disadvantage of this scheme is that it would require a modification
+% of {\tt\string\enddocument}.}.
+%
+%
+% \section{Caveats}
+%
+% In order to implement this style file, it's been necessary to modify
+% a number of \LaTeX\ commands seemingly unrelated to indexing,
+% namely, =\@starttoc=, =\raggedbottom=, =\flushbottom=,
+% =\addcontentsline=, =\markboth=, and =\markright=. Naturally, this
+% could cause incompatibilities between {\tt index.sty} and any style
+% files that either redefine these same commands or make specific
+% assumptions about how they operate. See Section~\ref{sec:thecode}
+% for explanations of why these various commands needed modification.
+%
+% It's also been necessary to modify the =\theindex= environment, but
+% I've tried to do so very conservatively. If your style file uses
+% =\indexname= and your definition of =\theindex= doesn't take any
+% arguments, you should be ok. Otherwise, you'll have to redefine the
+% =\theindex= environment yourself if you don't want the \LaTeX\ {\tt
+% book.sty} default.
+%
+% In the current implementation, {\tt index.sty} uses one output
+% stream for each index. Since there are a limited number of output
+% indexes, this means that there is a limit on the number of indexes
+% you can have in a document. See the description of =\disableindex=
+% for a fuller discussion of this problem and one way around it.
+%
+%
+% \section{To do's}
+%
+% It might be nice if the =\index*= command parsed its argument so
+% that, for example, instead of writing `=\index{sin@$\sin$}$\sin$=',
+% one could write `=\index*{sin@$\sin$}='. However, this fraught with
+% numerous dangers, and I'm both too lazy and too cowardly to
+% undertake it now.
+%
+% Maybe the user should be given the option of deciding which
+% characters are used for the shortindexing abbreviations
+%
+% The documentation should be carefully read, edited, and finished.
+% (In particular, I should add some scathing comments about some of
+% the problems that made it necessary to redefine so many of \LaTeX's
+% commands.)
+%
+% Maybe it would be nice if this package were compatible with plain
+% \TeX.
+%
+% \StopEventually{}
+%
+% \section{The code}
+% \label{sec:thecode}
+%
+% As is customary, we first make sure the file is loaded only once.
+% Then we print an identifying message to the terminal.
+% loaded
+% \begin{macrocode}
+%<*style>
+\@ifundefined{newindex}{}{\endinput}
+
+\typeout{Style-Option: `index' \fileversion\space <\filedate> (dmj)}
+% \end{macrocode}
+%
+% \begin{macro}{\@ifundefined}
+% We begin by redefining the \LaTeX\ command =\@ifundefined= to
+% prevent it from expanding its arguments prematurely. This also
+% requires us to redefine =\@leftmark= and =\@rightmark= to make them
+% =\long=. The following three definitions are borrowed from {\tt
+% amsart.sty}, v1.1b $\langle$31 Jul 1991$\rangle$. I rely heavily
+% upon this more robust definition of =\@ifundefined=.
+% \begin{macrocode}
+\def\@ifundefined#1{%
+ \expandafter\ifx\csname#1\endcsname\relax
+ \expandafter\@leftmark
+ \else
+ \expandafter\@rightmark
+ \fi
+}
+
+\long\def\@leftmark#1#2{#1}
+\long\def\@rightmark#1#2{#2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\disableindex}
+% The =\disableindex= should come before the declarations of the
+% indexes it refers to. (Question: If an index has been disabled,
+% should it show up in index proofs? Maybe there should be a separate
+% command to disable index proofs on and index-by-index basis.)
+% \begin{macrocode}
+\def\disableindex#1{%
+ \@for\@tempa:=#1\do{%
+ \@namedef{disable@\@tempa}{}%
+ \@ifundefined{tf@\@tempa}{}{%
+ \typeout{index.sty> Warning! It's too late to disable the
+ `\@tempa' index; the output}%
+ \typeout{index.sty> file \jobname.\@tempa\space has already
+ been opened for output. You should}%
+ \typeout{index.sty> put the \string\disableindex\space
+ command before the declaration of the}%
+ \typeout{index.sty> `\@tempa' index.}%
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@newindex}
+% \begin{macro}{\newindex}
+% \begin{macro}{\renewindex}
+% The =\newindex= and =\renewindex= commands are defined on analogy
+% with the =\[re]newcommand= macros. Each index is identified by a
+% unique tag, which is specified in the first argument of =\newindex=.
+% Most of the information about the index labeled \meta{tag} is kept
+% in the macro =\idx@=\meta{tag}, so we can check to see if a
+% particular index has already been defined by checking whether
+% =\idx@=\meta{tag} is defined. =\newindex= and =\renewindex= both
+% check to see if their first argument is already associated with an
+% index and then either issue an appropriate error message or call
+% =\@newindex=.
+%
+% The =\if@newindex= flag will be used to keep =\renewindex= from
+% re-allocating =\write= and =\toks= registers later.
+% \begin{macrocode}
+\newif\if@newindex
+
+\def\newindex#1{%
+ \@ifundefined{idx@#1}%
+ {\@newindextrue\@newindex{#1}}%
+ {%
+ \@latexerr{Index type `\string#1' already defined}\@ehc
+ \expandafter\@gobble\@gobbletwo
+ }%
+}
+
+\def\renewindex#1{%
+ \@ifundefined{idx@#1}%
+ {%
+ \@newindextrue
+ \@latexerr{Index type `\string#1' not defined}\@ehc
+ }%
+ {\@newindexfalse}%
+ \@newindex{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@preamblecmds}
+% Neither =\newindex=, =\renewindex=, nor =\disableindex= should be
+% used anywhere except inside style files or in the preamble of a
+% document, so we add them to the =\@preamblecmds= list.
+% \begin{macrocode}
+\begingroup
+ \def\do{\noexpand\do\noexpand}%
+ \xdef\@preamblecmds{%
+ \@preamblecmds
+ \do\newindex
+ \do\renewindex
+ \do\disableindex
+ }
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@newindex}
+% =\@newindex= does most of the work. First, it picks up the first
+% three arguments of the =\[re]newindex= command and stores the second
+% two in an appropriate =\idx@= macro. The title of the index is
+% treated differently, however, since it is potentially fragile in a
+% particularly odd way. To prevent mishaps, it is stored in a token
+% register. In addition to stashing away the information about the
+% index, =\@newindex= also opens an appropriate output files if we are
+% writing auxiliary files (i.e., unless =\nofiles= has been called).
+%
+% \begin{macro}{\my@newtoks}
+% Since we need to declare new token registers on the fly, we need a
+% non-=\outer= version of =\newtoks=.
+% \begin{macrocode}
+\def\my@newtoks{\csname newtoks\endcsname}
+
+\def\@newindex#1#2#3{%
+ \@namedef{idx@#1}{#2:#3}%
+ \if@filesw
+ \@ifundefined{disable@#1}{%
+ \if@newindex
+ \expandafter\newwrite\csname tf@#1\endcsname
+ \expandafter\my@newtoks\csname idxtitle@#1\endcsname
+ \else
+ \immediate\closeout\@nameuse{tf@#1}%
+ \fi
+ \immediate\openout\@nameuse{tf@#1}=\jobname.#2 %
+ \typeout{index.sty> Writing index file \jobname.#2 }%
+ }
+ {\typeout{index.sty> Index `#2' disabled -- not opening
+ \jobname.#2 }}%
+ \fi
+ \expandafter\csname idxtitle@#1\endcsname
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@second}
+% This is a useful macro for retreiving the second field of an index
+% specification.
+% \begin{macrocode}
+\def\@second#1:#2\@nil{#2}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@nearverbatim}
+% \begin{macro}{\@meaning}
+% =\@nearverbatim\foo= is much like =\meaning\foo=, except that it
+% suppresses the ``=macro ->='' string produced when =\meaning=
+% expands a macro. It is used by =\@wrindex= and =\@vwritefile= to
+% produce an ``almost verbatim'' copy of their arguments. This method
+% replaces the use of =\@sanitize= from latex.tex and allows indexing
+% macros to be used in places (such as inside macro arguments) where
+% the original =\index= command could not. Thanks to Donald Arseneau
+% $\langle${\tt asnd@erich.triumf.ca}$\rangle$ for pointing out this
+% trick to me. (For more information on this trick, see Dirty Trick
+% \#3 of the \TeX book, page 382).
+%
+% As defined, \@nearverbatim only works on macros. It would be nice
+% if it could work with other tokens, but it's more important that it
+% work only by expansion, which means we can't put in tests to see
+% what the next token is.
+% \begin{macrocode}{\@nearverbatim}
+\def\@nearverbatim{\expandafter\@meaning\meaning}
+
+\def\@meaning#1>{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Now we define the =\index= macro itself. The following definitions
+% are adapted from {\tt latex.tex} v2.09 $\langle$25 March
+% 1992$\rangle$.
+%
+% \begin{macro}{\makeindex}
+% First we redefine =\makeindex= to define the default index using
+% =\newindex=. We use =\edef= to make sure that =\indexname= gets
+% expanded here. Otherwise we'll get into an infinite loop later on
+% when we try to redefine =\indexname= inside the =\theindex=
+% environment.
+% \begin{macrocode}
+\edef\makeindex{%
+ \noexpand\newindex{default}{idx}{ind}{%
+ \expandafter\ifx\csname indexname\endcsname\relax
+ Index%
+ \else
+ \indexname
+ \fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@silentindex}
+% \begin{macro}{\if@addtoindex}
+% \begin{macro}{\if@proofmode}
+% We need three new flags. The first, =\if@silentindex=, indicates
+% whether the entry should be typeset in running text, as well as
+% written out to the index; this is used to implement the =\index*=
+% command. The second, =\if@addtoindex=, indicates whether entries
+% should be written to the index; this is used to disable the =\index=
+% command inside of page headings and tables of contents. The third,
+% =\ifproofmode=, indicates whether index entries should be put in the
+% margin of the page for proofing purposes.
+% \begin{macrocode}
+\newif\if@silentindex\@silentindextrue
+
+\newif\if@addtoindex\@addtoindextrue
+
+\newif\ifproofmode\proofmodefalse
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\index}
+% \begin{macro}{\p@index}
+% \begin{macro}{\x@index}
+% =\index= will be made self-protecting (a la =\em=, etc.) so it can
+% be used inside, for example, sectioning commands. Unfortunately, to
+% really make =\index= robust, we have to redefine some of \LaTeX's
+% commands for dealing with tables of contents and page headings.
+% (See below.) $*$sigh$*$
+% \begin{macrocode}
+\def\index{\protect\p@index}
+
+\def\p@index{%
+ \if@silentindex\@bsphack\fi
+ \@ifstar{\@silentindexfalse\@xindex}{\@silentindextrue\@xindex}%
+}
+
+\def\@xindex{\@ifnextchar[{\@index}{\@index[default]}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@index}
+% \begin{macro}{\@@index}
+% \begin{macro}{\@wrindex}
+% The following is much more complicated than it should have to be.
+% First, note the check to see if =\index= is equal to =\@gobble=.
+% This is so I don't have to redefine =\@outputpage=, which
+% temporarily disables =\label=, =\index=, and =\glossary= by
+% =\let='ing them equal to =\@gobble=. (For this reason, we have to
+% be very careful to make sure that =\index= has expanded to
+% =\p@index= before it gets to =\@outputpage=.) Second, note that if
+% =\if@addtoindex= is false, we don't complain about undefined index
+% types. This is because if your page headings, for example, are
+% being typeset in all uppercase, you might end up with something like
+% =\index[AUT]{...}= instead of =\index[aut]{...}=.
+% \begin{macrocode}
+\def\@index[#1]{%
+ \ifx\index\@gobble
+ \@addtoindexfalse
+ \fi
+ \def\@tempf{\@@index{#1}}%
+ \if@addtoindex
+ \@ifundefined{idx@#1}%
+ {%
+ \def\@tempf{%
+ \@latexerr{Index type `\string#1' undefined}%
+ \@ehc
+ \@silentindextrue
+ \@gobble
+ }%
+ }%
+ {}%
+ \fi
+ \@tempf
+}
+
+\def\@@index#1#2{%
+ \if@addtoindex
+ \if@filesw\@wrindex{#1}{#2}\fi
+ \ifproofmode\@showidx{#2}\fi
+ \fi
+ \if@silentindex\expandafter\@esphack\else\@silentindextrue#2\fi
+}
+
+\def\@wrindex#1#2{%
+ \begingroup
+ \let\thepage\relax
+ \def\@tempa{#2}%
+ \edef\@tempa{%
+ \write\@auxout{%
+ \string\@vwritefile{#1}{%
+ \string\indexentry{\@nearverbatim\@tempa}{\thepage}%
+ }%
+ }%
+ }%
+ \expandafter\endgroup\@tempa
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\seename}
+% \begin{macro}{\see}
+% \begin{macro}{\printindex}
+% \begin{macro}{\@printindex}
+% The following are adapted from {\tt makeidx.sty}, v2.09 $\langle$21
+% Oct 91$\rangle$.
+% \begin{macrocode}
+\@ifundefined{seename}{\def\seename{see}}{}
+
+\def\see#1#2{{\em \seename\/} #1}
+
+\def\printindex{\@ifnextchar [{\@printindex}{\@printindex[default]}}
+
+\def\@printindex[#1]{%
+ \def\@indextype{#1}%
+ \@ifundefined{idx@#1}%
+ {\@latexerr{Index type `\string#1' undefined}\@ehc}%
+ {%
+ \edef\@tempa{\@nameuse{idx@#1}}%
+ \@input{\jobname.\expandafter\@second\@tempa\@nil}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@indexstar@}
+% Now we set things up for =\shortindexing=. First, we define a
+% one-token shorthand for =\index*=. This will be needed in the
+% definition of =\idx@activehat=.
+% \begin{macrocode}
+\def\@indexstar@{\index*}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\idx@activehat}
+% \begin{macro}{\idx@activebar}
+% Next, we define the values that =^= and =_= will have when
+% shortindexing is turned on.
+% \begin{macrocode}
+\def\idx@activehat{%
+ \relax
+ \ifmmode\expandafter\sp\else\expandafter\@indexstar@\fi
+}
+
+\def\idx@activebar{
+ \relax
+ \ifmmode\expandafter\sb\else\expandafter\index\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\shortindexingon}
+% \begin{macro}{\shortindexingoff}
+% Now we define the =\shortindexingon= and =\shortindexinoff= commands
+% to turn shortindexing on and off (surprise!). =\shortindexingon=
+% saves the old definitions and =\catcode='s of =^= and =_= so they
+% can later be restored by =\shortindexingoff=. Both of these make
+% their changes local to any enclosing group, so they can be used as
+% declarations to disable or enable shortindexing temporarily. In
+% addition, {\tt shortindexingon} can also be used as an environment.
+%
+% This is potentially very confusing. My basic rationale (if it can
+% be described as such) was that under normal circumstances, one would
+% put =\shortindexingon= in the preamble of one's document, and never
+% want to turn it off. =\shortindexingoff= is an attempt to make
+% allowance for the contingency that someone might want to turn
+% shortindexing off, either permanently or temporarily.
+% \begin{macrocode}
+\newif\if@shortindexing
+
+\begingroup
+
+ \catcode`\^=\active
+ \catcode`\_=\active
+
+ \gdef\shortindexingon{%
+ \@shortindexingtrue
+ \chardef\old@idxhatcode=\catcode`\^\relax
+ \chardef\old@idxbarcode=\catcode`\_\relax
+ \catcode`\^=\active
+ \catcode`\_=\active
+ \let\old@idxhat=^%
+ \let\old@idxbar=_%
+ \let^\idx@activehat
+ \let_\idx@activebar
+ }
+
+ \gdef\shortindexingoff{%
+ \if@shortindexing
+ \@shortindexingfalse
+ \let^=\old@idxhat
+ \let_=\old@idxbar
+ \catcode`\^=\old@idxhatcode
+ \catcode`\_=\old@idxbarcode
+ \fi
+ }
+
+\endgroup
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Now we redefine =\theindex=. We try to make the minimal possible
+% change, but if the user's style doesn't know about =\indexname=, we
+% have no alternative but to redefine the entire environment and issue
+% a warning.
+%
+% Thanks to Alan Jeffrey $\langle${\tt
+% alanje@cogs.sussex.ac.uk}$\rangle$ for pointing out how the package
+% should behave when =\indexname= is already defined and for the code
+% to implement that case.
+% \begin{macrocode}
+\expandafter\ifx\csname indexname\endcsname\relax
+
+ \typeout{index.sty> Uh oh! It looks like your document style
+ doesn't use \string\indexname.}
+ \typeout{index.sty> I'll have to redefine the
+ \string\theindex\space environment, using}
+ \typeout{index.sty> the `book' style default.}
+
+ \def\indexname{Index}
+% \end{macrocode}
+% The following is adapted from {\tt book.sty} v2.09 $\langle$14 Jan
+% 92$\rangle$.
+% \begin{macrocode}
+ \def\theindex{%
+ \@restonecoltrue
+ \if@twocolumn\@restonecolfalse\fi
+ \columnseprule\z@ \columnsep 35\p@
+ \edef\@indexname{%
+ \expandafter\the\@nameuse{idxtitle@\@indextype}%
+ }%
+ \twocolumn[\@makeschapterhead{\@indexname}]%
+ \@mkboth{\uppercase{\@indexname}}{\uppercase{\@indexname}}%
+ \thispagestyle{plain}%
+ \parindent\z@
+ \parskip\z@ plus .3\p@\relax\let\item\@idxitem
+ }
+
+\else
+
+ \@temptokena={%
+ \edef\indexname{\the\@nameuse{idxtitle@\@indextype}}%
+ }
+ \toks0=\expandafter{\theindex}
+ \edef\theindex{\the\@temptokena\the\toks0}
+
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@vwritefile}
+% \begin{macro}{\x@vwritefile}
+% \begin{macro}{\y@vwritefile}
+% Now we define the =\@vwritefile= macro, which copies information
+% from the =aux= file to one of the other auxiliary files.
+% =\@vwritefile= performs essentially the same function as
+% =\@writefile=, except that it does not expand it second argument
+% (i.e., it writes it out verbatim (well, almost verbatim)).
+%
+% NOTE: There doesn't seem to be any reason why =\@writefile= *should*
+% expand its second argument and in fact, we later redefine
+% =\addcontentsline= to use =\@vwritefile= instead of =\@writefile=.
+% A slight extension of this idea could be used to solve the problem
+% of fragility in sectioning commands.
+%
+% =\@vwritefile=, like =\@writefile=, should be disabled when the
+% =aux= file is being read by =\begin{document}=. To avoid having to
+% redefine =\document=, we make the behaviour of =\@vwritefile=
+% conditional on the current meaning of =\@writefile=.
+% \begin{macrocode}
+\def\@vwritefile{%
+ \ifx\@writefile\@gobbletwo
+ \expandafter\@gobbletwo
+ \else
+ \expandafter\x@vwritefile
+ \fi
+}
+
+\def\x@vwritefile#1{%
+ \@ifundefined{tf@#1}{\@gobbletwo}{\y@vwritefile}{#1}%
+}
+
+\long\def\y@vwritefile#1#2{%
+ \def\@tempa{#2}%
+ \immediate\write\csname tf@#1\endcsname{\@nearverbatim\@tempa}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Now we take some code from {\tt showidx.sty} and merge it into our
+% new system. There are four reasons for redefining the commands here
+% rather than just inputting {\tt showidx.sty} (or requiring the user
+% to do so). First, {\tt showidx.sty} ends with a call to
+% =\flushbottom=, which I want to avoid. Second, the instructions for
+% successfully using {\tt showidx.sty} along with {\tt index.sty}
+% would be somewhat tricky. This way, I can just tell users not to
+% use {\tt showidx.sty} at all. Third, I need to make some
+% alterations to =\@showidx= anyway. In particular, (a) I need to add
+% the =\@sanitizeat= command so this works correctly with AMS-\LaTeX\
+% and (b) I want to add the =\indexproofstyle= command so the user can
+% customize the size and font used for the index proofs. Finally,
+% {\tt showidx.sty} has at least two annoying bugs in it. See the
+% edit-history for version 2.01 for a description.
+%
+% \begin{macro}{\@indexbox}
+% This code is adapted from {\tt showidx.sty}, v2.09 $\langle$16 Jun
+% 1991$\rangle$.
+% \begin{macrocode}
+\newinsert\@indexbox
+
+\dimen\@indexbox=\maxdimen
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@sanitizeat}
+% The definition of =\@sanitizeat= is slightly tricky, since we need
+% =@= to be active when this macro is defined, but we also need it to
+% be part of the control sequence name.
+% \begin{macrocode}
+\begingroup
+ \catcode`\@=\active
+ \expandafter\gdef\csname\string @sanitizeat\endcsname
+ {\def @{\char`\@}}
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\indexproofstyle}
+% \begin{macro}{\@showidx}
+% \begin{macro}{\@leftidx}
+% \begin{macro}{\@rightidx}
+% \begin{macro}{\@mkidx}
+% \begin{macro}{\raggedbottom}
+% \begin{macro}{\flushbottom}
+% \begin{macro}{\@texttop}
+% Note the cautious way of calling =\reset@font=, which is necessary
+% for this to work correctly under both the Old and New Font Selection
+% Schemes.
+% \begin{macrocode}
+\newtoks\indexproofstyle
+
+\indexproofstyle{\footnotesize\csname reset@font\endcsname\tt}
+
+\def\@showidx#1{%
+ \insert\@indexbox{%
+ \@sanitizeat
+ \the\indexproofstyle
+ \hsize\marginparwidth
+ \hangindent\marginparsep \parindent\z@
+ \everypar{}\let\par\@@par \parfillskip\@flushglue
+ \lineskip\normallineskip
+ \baselineskip .8\normalbaselineskip\sloppy
+ \raggedright \leavevmode
+ \vrule \@height .7\normalbaselineskip \@width \z@\relax#1\relax
+ \vrule \@height\z@ \@depth.3\normalbaselineskip \@width\z@\relax
+ }%
+ \ifhmode\penalty\@M \hskip\z@skip\fi
+}
+
+\def\@leftidx{\hskip-\marginparsep \hskip-\marginparwidth}
+
+\def\@rightidx{\hskip\columnwidth \hskip\marginparsep}
+
+\def\@mkidx{%
+ \vbox to \z@{%
+ \rlap{%
+ \if@twocolumn
+ \if@firstcolumn \@leftidx \else \@rightidx \fi
+ \else
+ \if@twoside
+ \ifodd\c@page \@rightidx \else \@leftidx \fi
+ \else
+ \@rightidx
+ \fi
+ \fi
+ \box\@indexbox
+ }%
+ \vss
+ }%
+}
+
+\def\raggedbottom{%
+ \def\@textbottom{\vskip\z@ plus.0001fil}%
+ \let\@texttop\@mkidx
+}
+
+\def\flushbottom{\let\@textbottom\relax \let\@texttop\@mkidx}
+
+\let\@texttop\@mkidx
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Now, this next bit really gets up my nose. The only way to make
+% sure that the =\index= command gets handled correctly when used
+% inside of sectioning commands is to redefine a bunch of \LaTeX's
+% table of contents and running-heads macros. $*$blech$*$ Fragility
+% rears its ugly head again. (Incidentally, it should be possible to
+% use the =\@nearverbatim= trick to make arguments of sectioning
+% commands robust. I'll have to explore this.)
+%
+% These are based on {\tt latex.tex} 2.09 $\langle$25 March
+% 1992$\rangle$.
+%
+% \begin{macro}{\addcontentsline}
+% We need to redefine =\addcontentsline= to keep it from expanding
+% =\index= commands too far. In particular, we have removed =\index=
+% from the list of macros that are set equal to =\@gobble= and we
+% substitute =\@vwritefile= for =\@writefile=. This latter change
+% also means that we can simplify the definition of =\protect=
+% somewhat.
+% \begin{macrocode}
+\def\addcontentsline#1#2#3{%
+ \if@filesw
+ \begingroup
+ \let\label\@gobble
+ \let\glossary\@gobble
+ \def\protect##1{\string##1\space}%
+ \@temptokena{\thepage}%
+ \edef\@tempa{%
+ \write\@auxout{%
+ \string\@vwritefile{#1}{\string\contentsline{#2}{#3}%
+ {\the\@temptokena}}%
+ }%
+ }%
+ \@tempa
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@starttoc}
+% We need to redefine =\@starttoc= to =\@addtoindexfalse= so that items
+% don't get written to the index from within tables of contents. The
+% only change here is the addition of =\@addtoindexfalse=.
+% \begin{macrocode}
+\def\@starttoc#1{%
+ \begingroup
+ \@addtoindexfalse
+ \makeatletter
+ \@input{\jobname.#1}%
+ \if@filesw
+ \expandafter\newwrite\csname tf@#1\endcsname
+ \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
+ \fi
+ \global\@nobreakfalse
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\markboth}
+% \begin{macro}{\markright}
+% Finally, we have to redefine =\markboth= and =\markright= to keep
+% them from disabling the expansion of =\index= while putting section
+% heads into the =\mark=. Otherwise, we'd end up with ``=\index='' in
+% the mark, which would cause problems when =\@outputpage= redefines
+% =\index= to be equal to =\@gobble=. Instead, we want =\index= to
+% expand to =\p@index= in the =\mark=, so we retain control over what
+% happens in \@outputpage.
+%
+% This time, the only change is to remove =\index= from the list of
+% macros that are =\let= equal to =\relax=.
+% \begin{macrocode}
+\def\markboth#1#2{%
+ \gdef\@themark{{#1}{#2}}%
+ \begingroup
+ \let\protect\noexpand
+ \let\label\relax
+ \let\glossary\relax
+ \mark{\@themark}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+
+\def\markright#1{%
+ \begingroup
+ \let\protect\noexpand
+ \let\label\relax
+ \let\glossary\relax
+ \expandafter\@markright\@themark{#1}%
+ \mark{\@themark}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+%</style>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \section{Edit history}
+%
+% \begin{description}
+%
+% \item[v1.00 (4 Mar 1993)]
+% initial version, posted to comp.text.tex.
+%
+% \item[v1.01 (4 Mar 1993)]
+% added =\renewindex= command and checking to make sure index is (or
+% is not) defined in =\newindex=, =\index= and =\printindex=. Also
+% tightened up the code in various places and added check to make sure
+% file is only loaded once.
+%
+% \item[v2.00 (24 Mar 1993)]
+% added support for =\index*=, proofmode, =\shortindexingon= and
+% =\shortindexingoff=.
+%
+% \item[v2.01 (24 Jun 1993)]
+% Fixed 3 bugs. (1) If proofmode was turned on, then something like
+% ``=\index{WORD}WORD='' would suppress the hyphenation of WORD. This
+% was fixed by adding ``=\penalty\@M\hskip\z@skip='' to the end of
+% =\@showidx=. (This is just the definition of =\allowhyphens=
+% borrowed from german.sty, v2 $\langle$4 Nov 1988$\rangle$). (2) The
+% =\hbox= in =\@mkidx= was being set at its natural width, which had a
+% tendency to interfere with the width of the page. The =\hbox= is
+% now replaced by =\rlap=. (3) If the title of an index (i.e., the
+% fourth argument of =\newindex=) contained a particularly fragile
+% command like~=\d=, havoc would ensue when =\theindex= tried to
+% extract the title. Titles are now kept in token registers to
+% prevent such unpleasantness. Bugs (2) and (3) were reported by
+% Dominik Wujastyk $\langle$D.Wujastyk@ucl.ac.uk$\rangle$ on 24 June
+% 1993. Note that bugs (1) and (2) are actually bugs in showidx.sty,
+% v2.09 $\langle$16 Jun 1991$\rangle$.
+%
+% \item[v2.02 (25 Jun 1993)]
+% Rewrote the code that implements the short indexing commands (=^=
+% and =_=) to make index.sty compatible with other style files that
+% need to make =^= and =_= active in some contexts. See the code for
+% more details.
+%
+% \item[v2.03 (30 Jun 1993)]
+% Once again rewrote the code that implements the short indexing
+% commands. Dumped the shortindexing environment and rewrote the
+% =\shortindexingon= and =\shortindxingoff= commands to save and
+% restore the =\catcode='s and meanings of =^= and =_= in the safest
+% possible (I hope) order. Also added the =\if@shortindexing= flag to
+% keep =\shortindexingoff= from doing anything if it is called outside
+% of the scope of a =\shortindexingon= command. (Question: Should
+% =\shortindexingon= check that flag before doing anything?)
+%
+% \item[v2.04 (beta) (14 Jul 1993)]
+% Added =\disableindex= command. Added =\newindex= and =\renewindex=
+% to =\@preamblecmds=. Add =\if@newindex= flag to =\@newindex= to
+% prevent =\renewindex= from re-allocating new =\write= and =\toks=
+% registers. Rewrote using {\tt doc.sty} and {\tt DocStrip}. Also
+% cleaned up the code somewhat.
+%
+% \item[v3.00 (15 Jul 1993)]
+% Made further minor tweaks to code and internal documentation.
+% Booted version number up to 3.00 and released on the world.
+%
+% \item[v3.01 (19 Jul 1993)]
+% Fixed {\tt DocStrip} CheckSum.
+%
+% \item[v3.02 (15 Sep 1993)]
+% Corrected spelling of =\@shortindexingfalse= in definition of
+% =\shortindexingoff=. Thanks to Hendrik G. Seliger $\langle
+% hank@Blimp.automat.uni-essen.de\rangle$ for this bug report. Also
+% added redefinitions of =\@leftmark= and =\@rightmark= to fix a bug
+% reported by Dominik Wujastyk $\langle$D.Wujastyk@ucl.ac.uk$\rangle$.
+%
+% \end{description}
+%
+% \DisableCrossrefs
+%
+% \section{The sample file}
+%
+% \begin{macrocode}
+%<test>%% This is a sample file for index.sty. To run the sample,
+%<test>%% execute the following commands:
+%<test>%%
+%<test>%% latex sample.tex
+%<test>%% makeindex sample
+%<test>%% makeindex -o sample.and sample.adx
+%<test>%% makeindex -o sample.nnd sample.ndx
+%<test>%% latex sample.tex
+%<test>
+%<test>\documentstyle[index]{book}
+%<test>
+%<test>\makeindex
+%<test>\newindex{aut}{adx}{and}{Name Index}
+%<test>\newindex{not}{ndx}{nnd}{List of Notation}
+%<test>
+%<test>\shortindexingon
+%<test>
+%<test>\proofmodetrue
+%<test>
+%<test>\def\aindex{\index*[aut]}
+%<test>
+%<test>\begin{document}
+%<test>
+%<test>\tableofcontents
+%<test>
+%<test>\newpage
+%<test>
+%<test>\chapter{Here is a ^[aut]{chapter} title}
+%<test>
+%<test>\section{Section header\index[aut]{section}}
+%<test>
+%<test>Here is some text.\index{subject}
+%<test>
+%<test>Here is \index[not]{notation}some more \index[not]{sin@$\sin$}
+%<test>text.
+%<test>
+%<test>Here is some ^{more} _[not]{notation} text.
+%<test>
+%<test>Here is yet more \aindex{text}.
+%<test>
+%<test>\section{Another Section header _[aut]{section2}}
+%<test>
+%<test>And here is some math: $x^1_b$.
+%<test>
+%<test>Here is an ^[aut]{index} entry \fbox{inside an
+%<test>\index[not]{min@$\min$}fbox}
+%<test>
+%<test>\fbox{Here is an ^[aut]{entry} in a box.}
+%<test>
+%<test>\printindex[not]
+%<test>
+%<test>\printindex[aut]
+%<test>
+%<test>\printindex
+%<test>
+%<test>\end{document}
+% \end{macrocode}
+%
+% \PrintIndex
+% \PrintChanges
+%
+% \Finale
+%
+% \end{document}
+\endinput
diff --git a/obsolete/macros/latex209/contrib/misc/nar.sty b/obsolete/macros/latex209/contrib/misc/nar.sty
new file mode 100644
index 0000000000..59a0a10766
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/nar.sty
@@ -0,0 +1,282 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "Tom Schneider",
+%%% version = "2.00",
+%%% date = "10 Sep 1991",
+%%% filename = "nar.sty",
+%%% address = "National Cancer Institute
+%%% Laboratory of Mathematical Biology
+%%% Frederick, Maryland 21701-1013
+%%% USA",
+%%% checksum = "64913 282 628 9329",
+%%% email = "toms@ncifcrf.gov (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "nucleic acid research",
+%%% supported = "yes",
+%%% docstring = "This LaTeX style file is for the journal
+%%% Nucleic Acid Research. It should be used
+%%% as a major style, with
+%%% \documentstyle[...]{nar}.
+%%%
+%%% 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."
+%%% }
+%%% ====================================================================
+
+% version = 2.00 of nar.sty 1990 April 30
+%
+% from:
+% article.sty 16-Mar-88
+
+%
+% All cases of 'newcounter' were commented out because these
+% were `already used' by LaTeX. Why this is necessary, I don't know!
+%
+
+\typeout{Document Style `nar' <16 Mar 88>.}
+%\typeout{Document Style `article' <16 Mar 88>.}
+
+
+\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
+
+
+% This next line alters the cite from [] to () (worked the first time!!!)
+\def\@cite#1#2{({#1\if@tempswa , #2\fi})}
+% Modified from line 6317 in the DEFAULT DEFINITIONS of the file latex.tex,
+% which is: LATEX VERSION 2.09 - RELEASE OF 27 October 1986
+
+\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}
+\let\endthebibliography=\endlist
+
+
+\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{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{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{\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
diff --git a/obsolete/macros/latex209/contrib/misc/natsci.sty b/obsolete/macros/latex209/contrib/misc/natsci.sty
new file mode 100644
index 0000000000..9114409fcd
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/natsci.sty
@@ -0,0 +1,61 @@
+%NAME: natsci.sty
+% natsci.sty 22 Feb 89
+
+% Correctly formats citations in the NATSCI bibliography style.
+% You also need the file natsci.bst to get the most out of this.
+
+% Use with LaTeX version 2.09 article document style
+% and the natsci bibliography style:
+% \documentstyle[natsci]{article}
+% \begin{document}
+% \bibliographystyle{natsci}
+
+% 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
+
+% This definition has to be changed slightly for different document
+% styles such as report.
+\def\thebibliography#1{\section*{References\@mkboth
+ {REFERENCES}{REFERENCES}}\list
+ %% default is no labels, for those not using \cite or BibTeX
+ {}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \usecounter{enumi}\@bibsetup}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \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 a reference by using negative \itemindent.
+\def\@bibsetup{\itemindent=-\leftmargin \itemsep=0pt}
+
+% 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}
diff --git a/obsolete/macros/latex209/contrib/misc/nofm.sty b/obsolete/macros/latex209/contrib/misc/nofm.sty
new file mode 100644
index 0000000000..062c1b6738
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/nofm.sty
@@ -0,0 +1,56 @@
+% nofm.sty
+%
+% This is a LaTeX document style option for "n of m" style pagination.
+% It produces a centered header in the above style, and no footer;
+% variations to put the information elsewhere, incorporate other
+% information, or include the word "page" should be easy. This option
+% works by recording the last page's page number in the .aux file
+% (using the standard label/pageref mechanism). Therefore, you will
+% have to run LaTeX a second time if the number of pages changes, in
+% order to get correct output.
+%
+% -- Max Hailperin, 9/27/88
+%
+% 25 Feb 91 - Don't clobber \pagestyle, redefine \ps@plain.
+% Define \@lastpageref to eliminate warnings.
+% clayton@thumper.bellcore.com
+
+
+% Make the plain page style be the same as the empty page style to
+% avoid having a footer-centered page number on the first page and on
+% index pages (in article style, anyway).
+
+\let \ps@plain = \ps@empty
+
+
+% The below is reproduced from the latex.tex file, version 2.09 of 27 October
+% 1986, Copyright (C) 1985 by Leslie Lamport, with the exception of the
+% marked change in the first line----vvvvvvvvvvvvvvvvvv.
+
+\def\enddocument{\@checkend{document}\label{@lastpage}\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}
+
+
+% Define a special-purpose \pageref to avoid having a "Reference
+% @lastpage undefined" warning on every page.
+
+\def\@lastpageref{%
+ \@ifundefined{r@@lastpage}{{\bf ??}}%
+ {\edef\@tempa{\@nameuse{r@@lastpage}}%
+ \expandafter\@cdr\@tempa\@nil\null
+ }%
+}
+
+
+% The page number is centered in the header. Change the definitions
+% to make it something else.
+
+\def \@oddhead{\rm\hfil\thepage\ of \@lastpageref\hfil}
+\def \@evenhead{\@oddhead}
+\def \@oddfoot{}
+\def \@evenfoot{\@oddfoot}
+
diff --git a/obsolete/macros/latex209/contrib/misc/preprint.sty b/obsolete/macros/latex209/contrib/misc/preprint.sty
new file mode 100644
index 0000000000..f6da168d40
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/preprint.sty
@@ -0,0 +1,149 @@
+% aps12.sty
+% March 12, 1989 version
+\global\twelvepointontrue
+
+\lineskip 2pt \normallineskip 2pt%<== were 1pt each
+\def\baselinestretch{1}%
+
+\def\@normalsize{\@setsize\normalsize{16pt%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
+
+
+
+\if@twoside \oddsidemargin 21pt \evensidemargin 59pt \marginparwidth 85pt
+\else \oddsidemargin 39.5pt \evensidemargin 39.5pt
+ \marginparwidth 68pt
+\fi
+\marginparsep 10pt
+ \topmargin 27pt \headheight 12pt \headsep 25pt \footheight 12pt \footskip
+30pt
+
+\textheight 536.5pt \textwidth 390pt \columnsep 10pt \columnseprule 0pt
+
+\footnotesep 8.4pt
+\skip\footins 10.8pt plus 4pt minus 2pt
+\floatsep 14pt plus 2pt minus 4pt \textfloatsep 20pt plus 2pt minus 4pt
+\intextsep 14pt plus 4pt minus 4pt \@maxsep 20pt \dblfloatsep 14pt plus 2pt
+minus 4pt \dbltextfloatsep 20pt plus 2pt minus 4pt \@dblmaxsep 20pt
+\@fptop 0pt plus 1fil \@fpsep 10pt plus 2fil \@fpbot 0pt plus 1fil
+\@dblfptop 0pt plus 1fil \@dblfpsep 10pt plus 2fil \@dblfpbot 0pt plus 1fil
+\marginparpush 7pt
+
+\parskip 0pt plus 1pt \parindent 1.5em \topsep 10pt plus 4pt minus 6pt
+\partopsep 3pt plus 2pt minus 2pt \itemsep 5pt plus 2.5pt 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 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 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}
+
diff --git a/obsolete/macros/latex209/contrib/misc/refman.sty b/obsolete/macros/latex209/contrib/misc/refman.sty
new file mode 100644
index 0000000000..02e177cdc7
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/refman.sty
@@ -0,0 +1,502 @@
+% This is REFMAN.STY by H.Partl, TU Wien, Version 1.1 of 4 Oct 1989.
+% Revised 30.08.93
+% --------------------------------------------------------------------------
+% Modifikations:
+% 30.08.93 by Wolfgang Kaspar; kaspar@uni-muenster.de
+% The correction of a LaTeX bug that occurs when marginpars and footnotes
+% appear on the same page (by Chris Rowley, TUGboat 9/2 Aug.88) is
+% no longer needed.
+% --------------------------------------------------------------------------
+% Document Style Option to `article' and `report',
+% for technical reference manuals, users' guides and articles,
+% with a design similar to that of the PostScript Reference Manual:
+% All pages have a wide left margin and no right margin, and section
+% headings and other `guiding' material appear in that margin.
+% Supports one-column only. REFMAN should be specified as the LAST
+% optional argument of the \documentstyle command, e.g.
+% \documentstyle[11pt,twoside,german,refman]{article}
+%
+% It CAN be used with twoside, fleqn and others.
+% It can NOT be used with twocolumn, titlepage, fullpage, a4, a4wide
+% and others.
+%
+% +-----------------------------------------------------------------+
+% ! This style file has been designed for reference manuals, users' !
+% ! guides, short instants, and related papers at the EDP centre of !
+% ! the Technical University of Vienna. It must be re-designed and !
+% ! changed before application at any other institution or for any !
+% ! other purpose. !
+% +-----------------------------------------------------------------+
+% Copyright H.Partl TU Wien 1988.
+
+% Process this file only once:
+\@ifundefined{leftmarginwidth}{}{\endinput}
+
+\typeout{ TU Wien Refman Style - Version 1.1 as of 4 Oct 1989, revised 30.08.93 }
+
+\newdimen\leftmarginwidth % value of odd & evensidemargin, set below.
+\newdimen\fullwidth % = \textwidth + \leftmarginwidth
+\newdimen\emptyheadtopmargin % used by some pagestyles
+\newdimen\emptyfoottopmargin % dto.
+
+% \longhrule and \longthickhrule are defined for \hrule's of width \fullwidth
+
+\def\longhrule{\par\hbox to \linewidth{\hss
+ \vrule width \fullwidth height 0.4pt depth 0pt}\par}
+\def\longthickhrule{\par\hbox to \linewidth{\hss
+ \vrule width \fullwidth height 1.0pt depth 0pt}\par}
+
+% Re-definitions of the \section commands to use \fullwidth and smaller
+% vertical skips and smaller fonts.
+% (Note that the afterskip must be >zero, not =zero)
+
+\def\secshape{\leftskip=-\leftmarginwidth % use \fullwidth
+ \rightskip=\@flushglue % raggedright
+ \hyphenpenalty=2000} % no hyphenation
+
+\def\section{\@startsection {section}{1}{\z@}{-2ex plus -1ex minus
+ -.2ex}{0.5ex plus .2ex}{\secshape\large\bf}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-1.5ex plus -.5ex minus
+ -.2ex}{0.5ex plus .2ex}{\secshape\normalsize\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-1.5ex plus
+-.5ex minus -.2ex}{0.5ex plus .2ex}{\secshape\normalsize\rm}}
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{2ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}}
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{2ex plus 1ex minus
+ .2ex}{-1em}{\normalsize\bf}}
+
+% For ARTICLE:
+% Re-definitions of \maketitle and \part (\clearpage, \fullwidth, \hrules).
+% This \maketitle prints the \title only.
+% A \makeauthor command is defined to print the \author (to be used either
+% just after \maketitle or at the end of the article, without \thanks).
+
+\def\@redefinemaketitle{
+
+\def\maketitle{\par
+ \begingroup
+ \if@twocolumn
+ \twocolumn[\@maketitle]
+ \else \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle \fi\thispagestyle{plain}
+ \endgroup
+ \setcounter{footnote}{0}}
+
+\def\@maketitle{\clearpage
+ \longthickhrule\bigskip
+ {\secshape\parskip\z@\parindent\z@ \Large\bf \@title\par}
+ \bigskip\longthickhrule\bigskip}
+
+\def\makeauthor{\par\nopagebreak\vskip 2ex plus 1ex minus 1ex
+ \begin{flushright}\normalsize\sl \@author \end{flushright}\par
+ \vskip 2ex plus 1ex minus 1ex\relax }
+
+\def\and{\\*}
+\def\thanks{\footnote}
+
+% In \part, only \thepart (the Roman part number) is printed, without
+% the word `Part' in front of it, and \markboth is replaced by \@mkboth
+% to preserve the marks with the myheadings and myfootings page styles.
+
+\def\part{\par \clearpage \thispagestyle{plain}
+ \@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
+ \longhrule\medskip
+ {\secshape\parskip\z@\parindent\z@ \Large\rm
+ \ifnum \c@secnumdepth >\m@ne \thepart.\quad \fi ##2\par}
+ \medskip\longhrule\bigskip \@mkboth{}{}\@afterheading }
+
+\def\@spart##1{\longhrule\medskip
+ {\secshape\parskip\z@\parindent\z@ \Large\rm ##1\par}
+ \medskip\longhrule\bigskip \@afterheading }
+
+} % end of \@redefinemaketitle
+
+% For REPORT:
+% Re-definition of \chapter (\clearpage, \fullwidth, \hrules).
+% However, \maketitle and \part remain unchanged.
+
+\def\@redefinechapter{
+
+\def\@makechapterhead##1{\longthickhrule\bigskip
+ {\secshape\parskip\z@\parindent\z@ \Large\bf
+ \ifnum \c@secnumdepth >\m@ne \@chapapp{} \thechapter.\quad \fi
+ ##1\par}
+ \bigskip\longthickhrule\bigskip}
+
+\def\@makeschapterhead##1{\longthickhrule\bigskip
+ {\secshape\parskip\z@\parindent\z@ \Large\bf ##1\par}
+ \bigskip\longthickhrule\bigskip}
+
+% No word `Chapter'/`Kapitel' before the chapter number, but the word
+% `Appendix'/`Anhang' will still be inserted after \appendix !
+\def\@chapapp{}
+
+% Note that \chapter itself is defined like this:
+% \def\chapter{\clearpage \thispagestyle{plain} \global\@topnum\z@
+% \@afterindentfalse \secdef\@chapter\@schapter}
+% This definition and those of \@chapter and \@schapter remain unchanged.
+
+} % end of \@redefinechapter
+
+% Now, do either the first one or the second one, depending on the main
+% document style (article= \chapter undefined, or report= \chapter defined).
+% (Note that \par must not appear inside \@ifundefined, therefore this
+% indirect approach is taken.)
+
+\@ifundefined{chapter}{\@redefinemaketitle}{\@redefinechapter}
+
+% Re-defintion of the \marginpar command to use always the left margin
+% (never the right margin). Be careful that Marginpars do not come to
+% near to each other!
+
+\def\@addmarginpar{\@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
+ \@tempcnta\m@ne % always to left margin <---
+ \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}}
+
+% Special Marginpars:
+% \marginlabel{X} puts X into a flushright Marginpar.
+% To be used like description-items or short
+% \subsubsection* headings.
+% \attention puts ! --> to the left of the text.
+% To mark an important piece of text.
+% \seealso{X} puts a small ---> X to the very left.
+% To mark a reference within the text.
+% These three commands start with an empty \mbox, i.e. they can be used
+% before the first word of a paragraph and still have the desired
+% effect, namely that the marginal stuff appears next to the first
+% line of this paragraph, not at the last line of the previous one.
+% They end with \ignorespaces, i.e. blanks (spaces) after the argument's
+% } are allowed and do NOT appear in the printed text.
+% Like all \marginpar's, they cannot be used in math mode or inside boxes.
+
+\def\marginlabel#1{\mbox{}\marginpar{\raggedleft #1}\ignorespaces}
+\def\attention{\mbox{}\marginpar{\raggedleft \large\bf ! $\rightarrow$}}
+\def\seealso#1{\mbox{}\marginpar{\small $\rightarrow$ #1}\ignorespaces}
+
+% The description environment is redefined such that the item labels use
+% the whole left margin (and are in roman, right bound, with colon).
+% \labelwidth = \leftmarginwidth + previous\@totalleftmargin +
+% + new\leftmargin - \labelsep
+% \descriptioncolontrue and -false can be used to select whether a colon
+% is added to the item label.
+% \descriptionlefttrue and -false can be used to select whether the item labels
+% are set left bound or right bound.
+
+\newif\ifdescriptioncolon \descriptioncolontrue
+\newif\ifdescriptionleft \descriptionleftfalse
+\def\descriptionlabel#1{\ifdescriptionleft\else \hfil \fi
+ \rm #1\ifdescriptioncolon :\fi
+ \ifdescriptionleft \hfil \fi}
+\def\description{\list{}{\labelsep=\marginparsep
+ \labelwidth=\leftmarginwidth \advance\labelwidth by \@totalleftmargin
+ \advance\labelwidth by \leftmargin \advance\labelwidth by -\labelsep
+ \let\makelabel=\descriptionlabel}}
+\let\enddescription=\endlist
+
+% The maxipage environment is a minipage that uses the \fullwidth,
+% with \hrules above and below. Marginpars are not allowed.
+% To be used for wide tables, long math equations, and the like.
+% It cannot be split across pages.
+% It can be used in floats, e.g. like
+% \begin{table}\begin{maxipage}
+% ... a wide table ... \caption{the caption}
+% \end{maxipage}\end{table}
+% \maxipageruletrue and -false can be used to select whether \hrule's are
+% added to the minpage.
+
+\newif\ifmaxipagerule \maxipageruletrue
+\def\maxipage{\par % (here a \vskip\parskip will happen by the final \par)
+ \mbox{}\kern-\leftmarginwidth \kern-\@totalleftmargin
+ \begin{minipage}{\fullwidth}
+ \medskip \ifmaxipagerule \hrule\medskip \fi
+ \parskip = 0.5\baselineskip % <--- same as outside minipage
+ \def\marginpar{\typeout{Marginpar not allowed within Maxipage.}}}
+\def\endmaxipage{\par \vskip\parskip
+ \medskip \ifmaxipagerule \hrule\medskip \fi
+ \end{minipage}\par}
+
+% The fullpage environment changes the page layout such that normal text
+% and all environments use the \fullwidth. Marginpars are not allowed.
+% Both \begin{fullpage} and \end{fullpage} start a new page before switching
+% to the other layout.
+% To be used for one or several special pages where the full line length is
+% needed.
+
+\def\fullpage{\clearpage \leftmarginwidth\z@ \textwidth=\fullwidth
+ \oddsidemargin=\z@ \evensidemargin\z@
+ \hsize=\fullwidth \linewidth=\fullwidth \columnwidth=\fullwidth
+ \def\marginpar{\typeout{Marginpar not allowed within Fullpage.}}}
+\def\endfullpage{\clearpage}
+
+% The example environment is a verse enironment with \tt font and with
+% trying to avoid page breaks at the \begin{example}. Lines in the example
+% should be separated by \\*.
+
+\def\example{\@beginparpenalty=\@highpenalty \verse \tt }
+\let\endexample=\endverse
+
+% Page Styles:
+% The pagestyles plain, headings and myheadings are redefined and new
+% pagestyles footings and myfootings are defined, which all use the
+% \fullwidth, with \thepage on the outer side of the (odd/even) page
+% and some with a \hrule below the head line or above the foot line.
+% My favourite is
+% \pagestyle{myfootings}
+% \markboth{the title of the paper}{the title of the paper}
+% (Note that the \markboth is not destroyed by the new \part command.)
+
+% The pagestyles headings and myheadings set \topmargin to \emptyfoottopmargin.
+% The pagestyles footings and myfootings set \topmargin to \emptyheadtopmargin.
+% The pagestyles empty and plain do not change \topmargin.
+% Therefore, within one document,
+% - you may switch between headings, myheadings, empty, and plain,
+% - or you may switch between footings, myfootings, empty, and plain,
+% - but you should not mix (my)headings with (my)footings pages.
+
+% As a compromise between article (section+subsection) and report
+% (chapter+section), \sectionmark (without uppercase) will be put on
+% both side pages in the headings and footings style (neither chapter
+% nor subsection).
+
+\def\ps@plain{\let\@mkboth\@gobbletwo
+ \def\@oddhead{}\def\@evenhead{}%
+ \def\@oddfoot{\rm\hfil\thepage}%
+ \def\@evenfoot{\hss \hbox to \fullwidth{\normalsize\rm\thepage\hfil}}}
+
+\if@twoside % If two-sided printing.
+\def\ps@headings{\let\@mkboth\markboth \topmargin\emptyfoottopmargin
+\def\@oddfoot{}\def\@evenfoot{}% No feet.
+\def\@evenhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth
+ \hbox to \fullwidth{\normalsize\rm\thepage \hfil
+ \small\sl \leftmark}%
+ \vskip 3pt \hrule}}%
+\def\@oddhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth
+ \hbox to \fullwidth{\small\sl \rightmark \hfil
+ \normalsize\rm\thepage}%
+ \vskip 3pt \hrule}}%
+\def\sectionmark##1{\markboth
+ {{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}%
+ {{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}}%
+\def\subsectionmark##1{}}
+\else % If one-sided printing.
+\def\ps@headings{\let\@mkboth\markboth \topmargin\emptyfoottopmargin
+\def\@oddfoot{}\def\@evenfoot{}% No feet.
+\def\@oddhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth
+ \hbox to \fullwidth{\small\sl \rightmark \hfil
+ \normalsize\rm\thepage}%
+ \vskip 3pt \hrule}}%
+\def\sectionmark##1{\markright {{\ifnum \c@secnumdepth >\z@
+ \thesection\hskip 1em\relax \fi ##1}}}}
+\fi
+
+\if@twoside % If two-sided printing.
+\def\ps@footings{\let\@mkboth\markboth \topmargin\emptyheadtopmargin
+\def\@oddhead{}\def\@evenhead{}% No heads.
+\def\@evenfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt
+ \hbox to \fullwidth{\normalsize\rm\thepage \hfil
+ \small\sl\leftmark}}}%
+\def\@oddfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt
+ \hbox to \fullwidth{\small\sl\rightmark \hfil
+ \normalsize\rm\thepage}}}%
+\def\sectionmark##1{\markboth
+ {{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}%
+ {{\ifnum \c@secnumdepth >\z@ \thesection\hskip 1em\relax \fi ##1}}}%
+\def\subsectionmark##1{}}
+\else % If one-sided printing.
+\def\ps@footings{\let\@mkboth\markboth \topmargin\emptyheadtopmargin
+\def\@oddhead{}\def\@evenhead{}% No heads.
+\def\@oddfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt
+ \hbox to \fullwidth{\small\sl\rightmark \hfil
+ \normalsize\rm\thepage}}}%
+\def\sectionmark##1{\markright {{\ifnum \c@secnumdepth >\z@
+ \thesection\hskip 1em\relax \fi ##1}}}}
+\fi
+
+\def\ps@myheadings{\let\@mkboth\@gobbletwo \topmargin\emptyfoottopmargin
+\def\@evenhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth
+ \hbox to \fullwidth{\normalsize\rm\thepage \hfil
+ \small\sl\leftmark}%
+ \vskip 3pt \hrule}}%
+\def\@oddhead{\hss\vbox to 0pt{\vss \hsize=\fullwidth
+ \hbox to \fullwidth{\small\sl\rightmark \hfil
+ \normalsize\rm\thepage}%
+ \vskip 3pt \hrule}}%
+\def\@oddfoot{}\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+\def\ps@myfootings{\let\@mkboth\@gobbletwo \topmargin\emptyheadtopmargin
+\def\@evenfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt
+ \hbox to \fullwidth{\normalsize\rm\thepage \hfil
+ \small\sl\leftmark}}}%
+\def\@oddfoot{\hss\vbox to 0pt{\vss \hsize=\fullwidth \hrule \vskip 3pt
+ \hbox to \fullwidth{\small\sl\rightmark \hfil
+ \normalsize\rm\thepage}}}%
+\def\@oddhead{}\def\@evenhead{}\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+% The \condbreak{length} command is defined for conditional pagebreaks:
+% If less then length vertical space remains on the current page, then
+% a new page is started. This means that the following stuff remains
+% together (either on the current or the next page).
+
+\def\condbreak#1{\vskip 0pt plus #1\pagebreak[3]\vskip 0pt plus -#1\relax}
+
+% The \noparskip command is defined to take away the vertical Parskip,
+% just like \noindent takes away the horizontal Parindent.
+
+\def\noparskip{\vskip-\parskip}
+
+% Correction of a LaTeX bug that occurs when marginpars and footnotes
+% appear on the same page (by Chris Rowley, TUGboat 9/2 Aug.88)
+%
+% no longer needed. 30.08.93 kaspar@uni-muenster.de
+
+%\def\@specialoutput{\ifnum\outputpenalty > -\@Mii
+% \@doclearpage
+% \else
+% \ifnum \outputpenalty <-\@Miii
+% \ifnum\outputpenalty<-\@MM \deadcycles\z@\fi
+% \global\setbox\@holdpg\vbox{\unvbox\@cclv}
+% \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@
+%% moved --->
+% \ifvoid\footins\else\advance\@pageht\ht\footins
+% \advance\@pageht\skip\footins \advance\@pagedp\dp\footins
+% \insert\footins{\unvbox\footins}\fi
+% \@addtocurcol\else
+%% moved and changed --->
+% \ifvoid\footins\else
+% \insert\footins{\unvbox\footins}\fi
+% \@addmarginpar\fi}\@latexbug
+% \ifnum \outputpenalty <\z@ \penalty \z@ \fi
+% \fi\fi}
+
+
+% Setting of the Layout Parameters and Dimensions:
+% ------------------------------------------------
+
+% Switch to \onecolumn and disable \twocolumn.
+\onecolumn
+\let\onecolumn=\relax
+\def\twocolumn{\typeout{Twocolumn not allowed with Refman.}}
+
+% Horizontal Layout:
+% \fullwidth = \leftmarginwidth + \textwidth
+% \odd&evensidemargin = \leftmarginwidth - 3mm
+% (DIN-A4 paper is about 6mm narrower than 8.5 Inch.)
+% \marginparwidth = \leftmarginwidth - \marginparsep
+
+% \textwidth, \columnwidth, \linewidth remain unchanged from art10...rep12
+\fullwidth=6.5in
+\leftmarginwidth=\fullwidth \advance\leftmarginwidth by -\textwidth
+\oddsidemargin=\leftmarginwidth \advance\oddsidemargin by -3mm
+\evensidemargin=\oddsidemargin
+\marginparwidth=\leftmarginwidth \advance\marginparwidth by -\marginparsep
+
+% The horizontal layout can be changed in the preamble with the command
+% \setleftmarginwidth{length}
+% This sets \leftmarginwidth=length and \textwidth=\fullwidth-<length> .
+% Example: \setleftmarginwidth{2.5in} ---> 2.5 : 4 = 4 : 6.5
+
+\newdimen\templength@
+\def\setleftmarginwidth#1{\templength@=#1\relax
+ \leftmarginwidth=\templength@
+ \textwidth=\fullwidth \advance\textwidth by -\templength@
+ \oddsidemargin=\leftmarginwidth \advance\oddsidemargin by -3mm
+ \evensidemargin=\oddsidemargin
+ \marginparwidth=\leftmarginwidth \advance\marginparwidth by -\marginparsep
+ \hsize=\textwidth \linewidth=\textwidth \columnwidth=\textwidth }
+
+% Vertical Layout (for DIN-A4 paper):
+% The Top Margin is made smaller by 4.5 baselineskips,
+% the Head and Foot separations are increased by 0.5 baselineskips each,
+% the Textheight is increased by 10 lines.
+% On DIN-A4 paper (which is about 2 lines higher than 11 Inch), this
+% makes the Bootom Margin equal to the Top Margin.
+% \raggedbottom is switched on (even for twoside).
+% With some pagestyles, the page contents are shifted up or down a bit,
+% by using \emptyheadtopmargin or \emptyfoottopmargin, respectively.
+
+\advance\topmargin by -4.5\baselineskip
+\advance\headsep by 0.5\baselineskip
+\advance\footskip by 0.5\baselineskip
+\advance\textheight by 10\baselineskip
+\@colht=\textheight \@colroom=\textheight
+\emptyheadtopmargin=\topmargin \advance\emptyheadtopmargin by -1\baselineskip
+\emptyfoottopmargin=\topmargin \advance\emptyfoottopmargin by 1\baselineskip
+\raggedbottom
+
+% Zero minimal vertical separation between Marginpars (because we use a lot
+% of them, and all must find room above each other).
+
+\marginparpush=\z@
+
+% 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@
+
+% Redefinition of the vertical spacing in the list environments
+% to use the same as \parskip in all relevant places (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.
+
+
+% Switch on the new version of the plain pagestyle.
+\pagestyle{plain}
+
+% This is the end of REFMAN.STY.
+\endinput
diff --git a/obsolete/macros/latex209/contrib/misc/shadethm.sty b/obsolete/macros/latex209/contrib/misc/shadethm.sty
new file mode 100644
index 0000000000..a974cb7e21
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/shadethm.sty
@@ -0,0 +1,187 @@
+\typeout{ LaTeX 2.09 substyle: ShadeThm <94/07/11 jh>}
+% ShadeThm.sty
+% Shaded theorem environments in LaTeX 2.09 with \newshadetheorem instead of
+% \newtheorem. Requires PostScript.
+%
+% USAGE
+% Used as a LaTeX substyle
+% \documentstyle[...,shadethm,...]{...}
+% it allows declarations like
+% \newshadetheorem{theorem}{Theorem}
+% so that
+% \begin{theorem} $e=mc^2$ \end{theorem}
+% will produce the usual theorem text, only placed in a shaded box.
+%
+% REMARKS
+% (1) You can of course have non-shaded environments, also. The
+% \newtheorem command still works (but see Remark (2)).
+% (2) Numbering within:
+% LaTeX allows you to say \newtheorem{guess}{Conjecture}[section] so
+% that at each new section the conjectures are numbered starting again
+% at 1. So does \newshadetheorem.
+% LaTeX also allows you to say \newtheorem{remark}[guess]{Remark} so
+% that remark and guess use the same counter:
+% \begin{guess}
+% Dinosaurs are small at one end, large in the middle,
+% and very small again at the other end.
+% \end{guess}
+% \begin{remark}
+% This conjecture is due to me.
+% \end{remark}
+% gets printed as
+% Conjecture 1 Dinosaurs are small at one end, large in the middle, and
+% very small again at the other end.
+% Remark 2 This conjecture is due to me.
+% The \newshadetheorem allows the same thing, but with one change. If you want
+% to refer to a theorem environment `xxx' that was declared with
+% \newshadetheorem{xxx}{Xxx} then you must call it `shadexxx': e.g.,
+% \newshadetheorem{thm}{Theorem}
+% \newshadetheorem{note}[shadethm]{Note}
+% (references to non-shaded theorem environments, of course, go as usual).
+% (3) Uses fancybox.sty and pstricks.sty. They are available, for instance,
+% in the TeX-archive at pip.shsu.edu. In particular, they require PostScript
+% for the shade. If you want to figure out a way to, for example, use PiCTeX
+% to shade, then that could work also. (I use dvips; PSTricks may work with
+% other PS drivers but it definitely works with dvips.)
+%
+% INSTALLATION
+% Put this where your TeX looks for .sty files. In emTeX that is probably
+% c:\emtex\texinput\shadethm.sty.
+% There are three parameters to set the default for (try it as it is, first).
+% (i) thmshade the darkness of the shading
+% (ii) shadeparindent the paragraph indentation inside the shaded text
+% (iii) frameboxsep the length by which the shade box surrounds the text
+% Find them by using your editor to find `PARAMETER'.
+% If you want this file to input fancybox and pstricks (that is, you don't
+% want to ask for them yourself) uncomment those lines.
+%
+% BUGS
+% 1) Page breaks are a problem since it sets the theorem before it shades it.
+% 2) I haven't tested it with the new LaTeX.
+%
+% HISTORY
+% 94VII11 jim hefferon hefferon@smcvax.smcvt.edu. First written (after lots
+% of sporadic tries, over months; I couldn't get any of the extant shading
+% macros to work with theorems) from a hint in TvZ's Fancybox writeup.
+% It's all so easy once you know how.
+%
+%\input{fancybox.sty}
+%\input{pstricks.sty}
+
+% PARAMETER: thmshade
+% Set the default darkness for the shading.
+% I find .97 looks good out of my printer, but a darker shade like .92 is
+% needed to make it copy well. (PostScript sets 0 as black and 1 as white.)
+% This can be reset in each document, say with \newgray{thmshade}{.92}
+% (or with \newrgbcolor{thmshade}{num1 num2 num3} for color, I think).
+\newgray{thmshade}{.97}
+
+% PARAMETER: saveparindent
+% Normally, in theorems, paragraphs retain their usual indent. But inside
+% a minipage they lose their indent, so I need to restore it once I'm inside
+% the minipage that is to be shaded. This can be changed inside of each
+% document, say with \resetlength{\saveparindent}{0pt}.
+\newlength{\saveparindent} %to have paragraphs default to their
+\setlength{\saveparindent}{\parindent} %usual indent inside the minipage
+
+% PARAMETER: frameboxsep
+% I think the shading looks best if the text doesn't run all the way to the
+% exact edge of the gray. That is, I like the gray to overlap outside the text
+% box a little. That amount is this number. This can be changed inside of
+% each document, say with \resetlength{\frameboxsep}{.2ex}.
+\newlength{\frameboxsep} % user can change in a .sty file or on
+\setlength{\frameboxsep}{2pt} % a per-document basis.
+
+\newbox{\shadesavebox} % no `@'; users can redefine shadebox if they want
+\newenvironment{shadebox}% % shadow boxes or something.
+{\beginsbox{\shadesavebox}\begin{minipage}{\textwidth}%
+\setlength{\parindent}{\saveparindent}}%
+{\end{minipage}\endsbox%
+{\begin{trivlist}\item[]%
+\psframebox*[fillcolor=thmshade,boxsep=false,framesep=\frameboxsep]{%
+\usebox{\shadesavebox}}%
+\end{trivlist}}}
+
+% The definition of \newshadetheorem is modelled on the one for \newtheorem
+% in latex.tex.
+% The invocation possibilities are:
+% \newshadetheorem{NAME}{TEXT}[COUNTER]
+% e.g., \newshadetheorem{theorem}{Theorem}[section] meaning to allow
+% one to say \begin{theorem} $e=mc^2$ \end{theorem} to produce
+% Theorem 1.1.1 e=mc2
+% shaded and numbered by section.
+% \newshadetheorem{NAME}[OLDNAME]{TEXT}
+% e.g., \newshadetheorem{remark}[theorem]{Remark} meaning to allow
+% one to say \begin{remark} Obvious. \end{remark} to produce
+% Remark 1.1.2 Obvious.
+% shaded and numbered with the same counter used for theorems.
+% The flowchart for parsing the arguments goes like this.
+% 1) \newshadetheorem{#1} (note #1<--NAME)
+% 2) If the next character is `[' then we have the second case. This
+% is handled by \shade@othm
+% 3) If not, go to \shade@nthm. There are two cases here, either there
+% is an optional argument (this is handled by \shade@xnthm) or there is
+% not (this is handled by \shade@ynthm).
+% (Possibly these cases could be folded somewhat as all use the same tail.)
+% Notice I have to have different names for the theorem and the environment.
+% I elected to call the theorem `xxx' by the name `shadexxx' so the user
+% just says `\begin{xxx} ...' for the environment. (All this is, of course,
+% just adapted from Lamport's code.)
+%
+\def\newshadetheorem#1{\@ifnextchar[{\shade@othm{#1}}{\shade@nthm{#1}}}
+
+\def\shade@othm#1[#2]#3{%
+\newtheorem{shade#1}[#2]{#3}%
+\newenvironment{#1}%
+{\begin{shadebox}\begin{shade#1}}%
+{\end{shade#1}\end{shadebox}}}
+
+\def\shade@nthm#1#2{\@ifnextchar[{\shade@xnthm{#1}{#2}}{\shade@ynthm{#1}{#2}}}
+
+\def\shade@xnthm#1#2[#3]{%
+\newtheorem{shade#1}{#2}[#3]%
+\newenvironment{#1}%
+{\begin{shadebox}\begin{shade#1}}%
+{\end{shade#1}\end{shadebox}}}
+
+\def\shade@ynthm#1#2{%
+\newtheorem{shade#1}{#2}%
+\newenvironment{#1}%
+{\begin{shadebox}\begin{shade#1}}%
+{\end{shade#1}\end{shadebox}}}
+
+\endinput %end shadethm.sty
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-test.tex-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+\documentstyle[fancybox,pstricks,shadethm]{article}
+
+\newshadetheorem{theorem}{Theorem}
+\newshadetheorem{cor}[shadetheorem]{Corollary}
+\newtheorem{remark}[shadetheorem]{Remark}
+
+\begin{document}
+Here is some initial text before the shaded box.
+
+\begin{theorem}
+This is the text to be shaded.
+\end{theorem}
+
+This is some text after the first shade.
+It is separated from the environments by a blank line; that is
+all handled as usual in \LaTeX.
+
+\begin{cor}
+This is more text to be shaded.
+It is numbered with the same counter as the environment above.
+
+Multiple paragraphs will be handled with the usual paragraph indentation,
+unless of course the user asks for a different paragraph indentation inside
+the environment.
+\end{cor}
+
+\begin{remark}
+More text.
+This time not set in shade, however it is numbered in the same sequence.
+\end{remark}
+
+Finishing text.
+\end{document}
diff --git a/obsolete/macros/latex209/contrib/misc/shadow.sty b/obsolete/macros/latex209/contrib/misc/shadow.sty
new file mode 100644
index 0000000000..4c4d5e76a6
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/shadow.sty
@@ -0,0 +1,84 @@
+%%% ======================================================================
+%%% @LaTeX-style-file{
+%%% filename = "shadow.sty",
+%%% version = "1.2.1",
+%%% date = "16 September 1996",
+%%% time = "16:26:21.52 MET",
+%%% author = "Mauro Orlandini",
+%%% address = "TeSRE Institute/CNR
+%%% Area della Ricerca di Bologna
+%%% Via Gobetti 101
+%%% 40129 Bologna - Italy",
+%%% Email = "orlandini@tesre.bo.cnr.it (Internet)
+%%% 38045::ORLANDINI (DECnet)",
+%%% telephone = "+39 51 639-8667",
+%%% FAX = "+39 51 639-8723",
+%%% supported = "yes",
+%%% archived = "TeX archive",
+%%% keywords = "shadow",
+%%% abstract = "The command \shabox has the same meaning of the
+%%% LaTeX command \fbox except for the fact that a
+%%% "shadow" is added to the bottom and the right side
+%%% of the box. It computes the right dimension of the
+%%% box, even if the text spans over more than one
+%%% line; in this case a warning messagge is given.",
+%%% codetable = "ISO/ASCII",
+%%% checksum = "15806 84 430 4506",
+%%% docstring = "There are three parameters governing:
+%%% 1. the width of the lines delimiting the box:
+%%% \sboxrule
+%%% 2. the separation between the edge of the box and
+%%% its contents: \sboxsep
+%%% 3. the dimension of the shadow: \sdim
+%%% Sintax: \shabox{<text>}
+%%% where <text> is the text to be put in the
+%%% framed box. It can be an entire paragraph.
+%%% Adapted from the file dropshadow.tex by
+%%% drstrip@cd.sandia.gov.
+%%% V1.1 Works in a double column environment.
+%%% V1.2 When there is an online shadow box, it
+%%% will be centered on the line (in V1.1 the
+%%% box was aligned with the baseline).
+%%% (Courtesy by Mike Piff)
+%%% V1.2.1 Dropped of unwanted CRs by Ralf Nitsch
+%%%
+%%% 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{Style Option: `shadow' v1.2.1 <16 September 1996> (M.O.)}
+\newdimen\txtwdth \newdimen\sht \newdimen\shw \newbox\shbox
+\newdimen\sboxsep \newdimen\sboxrule \newdimen\sdim
+\sboxsep = 10pt
+\sdim = 4pt
+\sboxrule = .4pt
+\def\shabox#1{\setbox\@tempboxa\hbox{#1}% <-- V1.2.1 Added by R. Nitsch
+\shw\wd\@tempboxa
+\if@twocolumn\txtwdth\columnwidth\else\txtwdth\textwidth\fi
+\ifdim\shw<\txtwdth
+ \leavevmode\setbox\@tempboxa\hbox{#1}% <-- V1.2.1 Added by R. Nitsch
+\else
+ \typeout{Shadow Warning: Box dimension greater than textwidth.}
+ \setbox\@tempboxa\vbox{\hsize\txtwdth\advance\hsize-2\sboxsep
+ \advance\hsize-2\sboxrule \advance\hsize-2\sdim \advance\hsize-15pt#1}
+\fi
+ \setbox\shbox\hbox{\@tempdima\sboxrule
+ \advance\@tempdima \sboxsep \advance\@tempdima \dp\@tempboxa
+ \hbox{\lower \@tempdima\hbox
+ {\vbox{\hrule \@height \sboxrule
+ \hbox{\vrule \@width \sboxrule \hskip\sboxsep
+ \vbox{\vskip\sboxsep \box\@tempboxa\vskip\sboxsep}\hskip
+ \sboxsep\vrule \@width \sboxrule}
+ \hrule \@height \sboxrule}}}}% <-- V1.2.1 Added by R. Nitsch
+\sht\ht\shbox \advance\sht-\sdim
+\leavevmode\vbox{\baselineskip0pt\lineskip0pt\vtop{%% V1.2
+ %% Added \vtop
+ %% From M.Piff
+ \hbox{\copy\shbox\vrule width\sdim height\sht}
+ \hbox{\kern\sdim\vrule height\sdim width \wd\shbox}}}}
+
+\endinput
diff --git a/obsolete/macros/latex209/contrib/misc/showlabels.sty b/obsolete/macros/latex209/contrib/misc/showlabels.sty
new file mode 100644
index 0000000000..47d445c670
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/showlabels.sty
@@ -0,0 +1,28 @@
+% showlabels.sty
+% gil@svax.cs.cornell.edu (Gil Neiger)
+%
+% Change \label, \ref, and \pageref to show labels in line
+%
+
+\def\ref#1{\@ifundefined{r@#1}{\mbox{\tt#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}{\mbox{\tt#1?}\@warning
+ {Reference `#1' on page \thepage \space
+ undefined}}{\edef\@tempa{\@nameuse{r@#1}}\expandafter
+ \@cdr\@tempa\@nil\null}}
+
+\def\label#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
+ \mbox{\tt[#1]}}
+
+\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}{\mbox{\tt\@citeb?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+\hbox{\csname b@\@citeb\endcsname}}}{#1}}
diff --git a/obsolete/macros/latex209/contrib/misc/spie.sty b/obsolete/macros/latex209/contrib/misc/spie.sty
new file mode 100644
index 0000000000..d8c965cea3
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/spie.sty
@@ -0,0 +1,126 @@
+\typeout{Document Style Option `spie proceedings style'.}
+%
+% Prepared by Rick Zaccone <zaccone@bucknell.edu> on 6/3/91.
+% Modified by Adrian F Clark <alien@uk.ac.essex> on 11-Jan-1992.
+%
+% Usage:
+% \documentstyle[spie]{article}
+%
+% The user needs to make a few adjustments manually:
+%
+% 1. Section titles should be in upper case.
+% 2. Title, subsection, subsubsection, etc. should be in lower case except
+% for the first letter.
+% 3. Format authors as follows
+% \author{author1 \\[12pt]
+% affiliation\\
+% affiliation\\[12pt]
+% author2 \\[12pt]
+% affiliation\\
+% affiliation\\[12pt]}
+%
+% 4. No date: use \date{}
+% --------------------------------------------------------------------
+
+% No headers or footers
+
+\oddsidemargin -.15in \evensidemargin -.15in \topmargin .1in
+\headheight 0in \headsep 0in
+\footheight 0in \footskip 0in
+\pagestyle{empty} % No page numbers
+
+
+% Page parameters
+
+\parskip 12pt
+\textheight 8.8in \textwidth 6.8in
+\floatsep 6pt plus 2pt minus 4pt \textfloatsep 30pt plus 20pt minus 10pt
+
+
+% Center section headings and make them produce indexted next lines (ugh)
+
+\def\section{\@startsection {section}{1}{\z@}{3.5ex plus -1ex minus
+ -.2ex}{2.3ex plus .2ex}{\centering\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}}
+
+
+% Add theorem, lemma, and definition environments
+
+\def\@begintheorem#1#2{\par\bgroup{\sc #1\ #2. }\it\ignorespaces}
+\def\@opargbegintheorem#1#2#3{\par\bgroup{\sc #1\ #2\ (#3). }\it\ignorespaces}
+\def\@endtheorem{\egroup}
+\def\proof{\par{\it Proof}. \ignorespaces}
+\def\endproof{{\ \vbox{\hrule\hbox{%
+ \vrule height1.3ex\hskip0.8ex\vrule}\hrule
+ }}\par}
+\newtheorem{theorem}{Theorem}[section]
+\newtheorem{lemma}[theorem]{Lemma}
+\newtheorem{definition}[theorem]{Definition}
+
+
+% The abstract
+
+\def\abstract{
+\section*{ABSTRACT}
+}
+\def\endabstract{}
+
+% Citations are superscripts (taken from aip.sty)
+
+% Superscript citations -- skip optional arg to \cite
+% Move citation after period and comma.
+
+\def\@cite#1#2{\unskip\nobreak\relax
+ \def\@tempa{$\m@th^{\hbox{\the\scriptfont0 #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}
+
+% \citenum emits the plain citation number without ornament
+% \citea puts its 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{,}%
+ \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}
+
+
+% Give the references section a section number
+
+\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}
+\let\endthebibliography=\endlist
diff --git a/obsolete/macros/latex209/contrib/misc/subfigure.sty b/obsolete/macros/latex209/contrib/misc/subfigure.sty
new file mode 100644
index 0000000000..b8a448e7f9
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/subfigure.sty
@@ -0,0 +1,446 @@
+%$% subfigure.sty
+%$% Subfigure/table command for use with the LaTeX figure environment.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Copyright (C) 1988-1995 Steven Douglas Cochran.
+%%%
+%%% The subfigure style is made available for academic and research
+%%% purposes only. No commercial license is hereby granted. Copying
+%%% and other reproduction is authorized only for research, education,
+%%% and other non-commercial purposes. No warranties, either
+%%% expressed or impiled, are made regarding the operation, use, or
+%%% results of the subfigure style.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% @LaTeX-style-file{
+%%% Author = "Steven Douglas Cochran",
+%%% Version = "2.0 (LaTeX209 version)",
+%%% Date = "1995 Mar 06",
+%%% Time = "12:43:14 EDT",
+%%% Filename = "subfigure.sty",
+%%% Address = "Digital Mapping Laboratory
+%%% School of Computer Science
+%%% Carnegie-Mellon University
+%%% 5000 Forbes Avenue
+%%% Pittsburgh, PA 15213-3891
+%%% USA",
+%%% Telephone = "(412) 268-5654",
+%%% FAX = "(412) 268-5576",
+%%% checksum = "23098 438 1899 18286",
+%%% Email = "sdc+@CS.CMU.EDU (Internet)",
+%%% CodeTable = "ISO/ASCII",
+%%% Keywords = "LaTeX, float, figure, table",
+%%% Supported = "yes",
+%%% Abstract = "LaTeX document-style option for
+%%% providing support for the inclusion of
+%%% small `sub' figures and tables. It
+%%% simplifies the positioning, captioning
+%%% and labeling of them within a single
+%%% figure or table environment.",
+%%% 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: subfigure.sty,v $
+%$% Revision 2.0 95/03/06 12:43:14 sdc
+%$% This version of `subfigure' is the first to be ported to LaTeX2e
+%$% (with backward compatibility to LaTeX 2.09). "\subfigure" and
+%$% "\subtable" are now identical and the environment controls
+%$% internal differences between them. Now, the caption setting
+%$% portion of "\@subfloat" is broken into the separate macros
+%$% "\@makesubfigurecaption" and "\@makesubtablecaption" to allow a
+%$% separate hook for the modification of how the caption is
+%$% constructed and to allow the table and figure captions to be
+%$% different. In addition, support of the `normal', `hang',
+%$% `center', `centerlast', 'nooneline'; `scriptsize', \ldots,
+%$% `Large'; `up', `it', `sl', `sc', `md', `bf', `rm', `sf', and `tt'
+%$% package options were added for compatibility with the caption.sty
+%$% by H.A. Sommerfeldt.}
+%$%
+%$% Revision 1.6 93/05/13 12:58:34 sdc
+%$% Changed to use the \thefigure macro in building the referenced
+%$% label. The old form caused a problem when used with the
+%$% report.sty as pointed out by Andrew Anselmo
+%$% (anselmo@cumesb.mech.columbia.edu). Also modified to restrict
+%$% the scope of the subfigure \label to the body of the subfigure.
+%$% Added \@thesubfigure to allow a separate labeling of the
+%$% subfigure in the figure and in the text. By default it is the
+%$% same as \thesubfigure with space appended. Added some hooks to
+%$% print the subfigure captions to the list-of-figures file if
+%$% desired. Finally, added the corresponding support for sub-tables
+%$% as well as sub-figures. NOTE: the optional caption is now a
+%$% moving argument and any fragile commands that appear in the
+%$% caption must be preceded by a \protect (just like that of the
+%$% \caption command).
+%$%
+%$% Revision 1.5 92/08/11 23:13:12 sdc
+%$% Fixed a bug which caused an problem with captions that contained
+%$% expressions like \sqrt; This was pointed out by Tom Scavo
+%$% (scavo@cie.uoregon.edu). A separate bug was fixed which caused
+%$% different sized captions to be misaligned; This problem was
+%$% pointed out by Simon Marshall (S.Marshal@Hull.ac.uk). Also
+%$% cleaned up the code a mite and *changed* the figure spacing so that
+%$% if no optional section is given, then the figure is only followed
+%$% by \subfigbottomskip and not that plus (\subfigcapskip + \strut
+%$% height). This should make it easier to adjust spacing as desired.
+%$%
+%$% Revision 1.4 92/06/27 10:40:34 sdc
+%$% Added a hack to allow the \label command to be used within the
+%$% body of the subfigure giving a reference label in the form
+%$% \arabic{thefigure}\thesubfigure. Added standard file header for
+%$% style.
+%$%
+%$% Revision 1.3 90/10/22 17:04:28 cochran
+%$% Changed test for empty caption inside of \@subfigure to compare
+%$% tokens and not the caption vs. \@empty. The former (incorrect)
+%$% test caused an error when the first two letters of the caption
+%$% were the same.
+%$%
+%$% Revision 1.2 89/08/30 07:18:29 cochran
+%$% Added a separate bottom margin and expanded the comments.
+%$%
+%$% Revision 1.1 88/11/02 11:03:46 cochran
+%$% Initial revision.
+%$%
+%$% 05 Mar 86 cochran@dworkin.usc.edu (USC-IRIS)
+%$% Created.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%$% Usage: \documentstyle[...,subfigure,...]{...}
+%$%
+%$% \subfigure[CAPTIONtext]{FIGUREbox}
+%%%
+%%% Creates a subfigure box with an optional CAPTION under a FIGURE.
+%%% The FIGURE is centered with \subfigtopskip of vertical space added
+%%% above. If there is a CAPTION, then \subfigcapskip vertical space
+%%% is added below the FIGURE followed by the CAPTION. Finally,
+%%% \subfigbottomskip of vertical space added at the bottom.
+%%%
+%%% If a CAPTION is given (including a null CAPTION `[]') then the
+%%% subfigure is labeled with a counter formatted by the macro
+%%% `\thesubfigure' which returns `(a)', `(b)', etc. If desired,
+%%% this macro may be redefined. The counter used for labeling the
+%%% subfigures is `subfigure' and is incremented for each subfigure
+%%% regardless of whether a CAPTION was printed.
+%%%
+%$% \subfigure[CAPTIONtext]{FIGUREbox}
+%%%
+%%% The subtable command is symmetric to the subfigure command defined
+%%% above.
+%%%
+%%% One example of use is to surround the figure in a center
+%%% environment or to specifying \centering:
+%%%
+%%% *---------*
+%%% \newcommand{\goodgap}{% | .. . | *---------*
+%%% \hspace{\subfigtopskip}% | . . | | . . . |
+%%% \hspace{\subfigbottomskip}} | .. . . | | . . .. |
+%%% ... *---------* *---------*
+%%% \begin{figure}% (a) First (b) Second
+%%% \centering Figure
+%%% \subfigure[First]{...}\goodgap
+%%% \subfigure[Second Figure]{...}\\ *---------*
+%%% \subfigure[Third]{\label{3figs-c}...}% | . .. . |
+%%% \caption{Three Subfigures.} | . .. . |
+%%% \label{3figs} *---------*
+%%% \end{figure} (c) Third
+%%% ... Figure 1. Three Subfigures.
+%%% Figure~\ref{3figs} contains
+%%% two top `subfigures' and Figure 1 contains two top `sub-
+%%% Figure~\ref{3figs-c}. figures' and Figure 1(c).
+%%%
+%%% A second example is to change the way that the subfigures are labeled
+%%% and to have the subfigure captions printed in the list-of-figures.
+%%%
+%%% \renewcommand{\thesubfigure}{\thefigure.\arabic{subfigure}}
+%%% \makeatletter
+%%% \renewcommand{\@thesubfigure}{\thesubfigure:\space}
+%%% \renewcommand{p@subfigure}{}
+%%% \makeatother
+%%% ...
+%%% \setcounter{lofdepth}{2}
+%%% \listoffigures
+%%% ...
+%%% \begin{figure}%
+%%% \begin{center}%
+%%% \subfigure[First]{% *--------------* *--------------*
+%%% \label{fig:first}% | .. . . | | . ... .. . . |
+%%% ...}% | . . . . | | . . . . .. |
+%%% \goodgap | .. . . . . | | . . . .. .. |
+%%% \subfigure[Second]{% *--------------* *--------------*
+%%% \label{fig:second}%
+%%% ...}% 1.1: First 1.2: Second
+%%% \end{center}%
+%%% \caption{Two Subfigures.} Figure 1. Two Subfigures.
+%%% \end{figure}
+%%% ... See subfigures 1.1 and 1.2.
+%%% See subfigures \ref{fig:first}
+%%% and \ref{fig:second}.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Options:
+%%%
+%%% I. Subfloat caption shape.
+%%% By default the caption paragraphs are centered under the
+%%% subfigure or table with a little indentation at each side.
+%%% There are three options that may be used to change the shape
+%%% of the centered paragraph -- they only have an effect when the
+%%% caption is more than one line long. These should be set in
+%%% the preamble of your LaTeX file:
+%%%
+%%% \subcaphangtrue Causes the label to be a hanging
+%%% indentation to the caption paragraph.
+%%% \subcapcentertrue Causes each line of the paragraph
+%%% to be separately centered.
+%%% \subcapcenterlasttrue Causes the last line only to be
+%%% centered.
+%%% \subcapnooneline If a caption fits on one line it
+%%% will, by default, be centered.
+%%% This option left-justifies the one
+%%% line caption.
+%%%
+%%% The hang option may be used in addition to either center
+%%% option. (If both center options are true it is the same as if
+%%% only the \subcapcenter was true.)
+%%%
+%%%
+%%% II. Subfloat label font.
+%%% The subfloat label font may be separately set by changing the
+%%% definition of \subcaplabelfont. For example:
+%%%
+%%% \newcommand{\subcaplabelfont}{\it}
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%
+%%% Identification
+%%%
+\ifx\if@compatibility\undefined\else
+ \NeedsTeXFormat{LaTeX2e}
+ \ProvidesPackage{subfigure}[1995/03/06 v2.0 subfigure package]
+ \typeout{Package: subfigure 1995/03/06 v2.0}
+\fi
+
+%%%
+%%% Initialization and Shared constants
+%%%
+\newif\ifsubcaphang
+\newif\ifsubcapcenter
+\newif\ifsubcapcenterlast
+\newif\ifsubcapnooneline
+
+%%
+%% Common values (mention of `subfig' in names is for upward compatibility)
+%%
+\newcommand{\subfigtopskip}{10pt} % Length from the top of the subfloat
+ % box to the begining of the FIGURE box.
+\newcommand{\subfigbottomskip}{10pt} % Length from the bottom of the CAPTION
+ % to the bottom of the subfloat.
+\newcommand{\subfigcapskip}{10pt} % Length from the bottom of the FIGURE box
+ % to the begining of the CAPTION.
+\newcommand{\subfigcapmargin}{10pt} % Indentation of the caption from the
+ % sides of the subfloat box (This should
+ % always be positive).
+\newcommand{\subcapsize}{} % Size of the CAPTION font.
+\newcommand{\subcaplabelfont}{} % Font of the caption label.
+
+%%
+%% Subfigure values
+%%
+\newcounter{subfigure}[figure] % Subfigure counter.
+\def\thesubfigure{(\alph{subfigure})} % Generate CAPTION label (text).
+\newcommand{\@thesubfigure}{% % Generate CAPTION label (figure).
+ {\subcaplabelfont\thesubfigure}\space}
+\let\p@subfigure\thefigure % Figure number for \label.
+
+\let\ext@subfigure\ext@figure % Default SubFigure file extension.
+\newcommand{\l@subfigure}{% % How to print an LOF subfigure line.
+ \@dottedxxxline{\ext@subfigure}{2}{3.9em}{2.3em}}
+\newcounter{lofdepth} % LOF depth counter.
+\setcounter{lofdepth}{1} % Default is to NOT print an LOF line.
+
+%%
+%% Subtable values
+%%
+\newcounter{subtable}[table] % Subtable counter.
+\def\thesubtable{(\alph{subtable})} % Generate CAPTION label (text).
+\newcommand{\@thesubtable}{% % Generate CAPTION label (figure).
+ {\subcaplabelfont\thesubtable}\space}
+\let\p@subtable\thetable % Figure number for \label.
+
+\let\ext@subtable\ext@table % Default SubTable file extension.
+\newcommand{\l@subtable}{% % How to print an LOT subtable line.
+ \@dottedxxxline{\ext@subtable}{2}{3.9em}{2.3em}}
+\newcounter{lotdepth} % LOT depth counter.
+\setcounter{lotdepth}{1} % Default is to NOT print an LOT line.
+
+
+%%
+%% Declaration of options
+%%
+\ifx\if@compatibility\undefined
+ \subcaphangfalse
+ \subcapcenterfalse
+ \subcapcenterlastfalse
+ \subcapnoonelinefalse
+ \def\subcapsize{\footnotesize}
+\else
+ \DeclareOption{normal}{%
+ \subcaphangfalse
+ \subcapcenterfalse
+ \subcapcenterlastfalse}
+ \DeclareOption{hang}{\subcaphangtrue}
+ \DeclareOption{center}{\subcapcentertrue}
+ \DeclareOption{centerlast}{\subcapcenterlasttrue}
+ \DeclareOption{nooneline}{\subcapnoonelinetrue}
+ \DeclareOption{isu}{\ExecuteOption{hang}}
+ \DeclareOption{anne}{\ExecuteOption{centerlast}}
+
+ \DeclareOption{scriptsize}{\renewcommand{\subcapsize}{\scriptsize}}
+ \DeclareOption{footnotesize}{\renewcommand{\subcapsize}{\footnotesize}}
+ \DeclareOption{small}{\renewcommand{\subcapsize}{\small}}
+ \DeclareOption{normalsize}{\renewcommand{\subcapsize}{\normalsize}}
+ \DeclareOption{large}{\renewcommand{\subcapsize}{\large}}
+ \DeclareOption{Large}{\renewcommand{\subcapsize}{\Large}}
+ \DeclareOption{up}{\renewcommand{\subcaplabelfont}{\upshape}}
+ \DeclareOption{it}{\renewcommand{\subcaplabelfont}{\itshape}}
+ \DeclareOption{sl}{\renewcommand{\subcaplabelfont}{\slshape}}
+ \DeclareOption{sc}{\renewcommand{\subcaplabelfont}{\scshape}}
+ \DeclareOption{md}{\renewcommand{\subcaplabelfont}{\mdseries}}
+ \DeclareOption{bf}{\renewcommand{\subcaplabelfont}{\bfseries}}
+ \DeclareOption{rm}{\renewcommand{\subcaplabelfont}{\rmfamily}}
+ \DeclareOption{sf}{\renewcommand{\subcaplabelfont}{\sffamily}}
+ \DeclareOption{tt}{\renewcommand{\subcaplabelfont}{\ttfamily}}
+
+ \ExecuteOptions{normal,footnotesize}
+ \ProcessOptions
+\fi
+
+
+%%%
+%%% Define the subfigure and subtable commands
+%%%
+\newcommand{\subfigure}{%
+ \bgroup
+ % Since the table caption is usually generated later, we
+ % must locally anticipate the future value of its counter.
+ \advance\csname c@\@captype\endcsname\@ne
+ \refstepcounter{sub\@captype}%
+ \leavevmode
+ \@ifnextchar [%
+ {\@subfloat{sub\@captype}}%
+ {\@subfloat{sub\@captype}[\@empty]}}
+\let\subtable\subfigure
+
+%%%
+%%% Define the common subfloat macro
+%%%
+\def\@subfloat#1[#2]#3{%
+ \setbox\@tempboxa \hbox{#3}%
+ \@tempdima=\wd\@tempboxa
+ \vtop{%
+ %% Put the top spacing and the figure in the top box
+ \vbox{%
+ \vskip\subfigtopskip
+ \box\@tempboxa}%
+ %% Now skip down and add the caption paragraph
+ %% (unless #2 == \@empty)
+ \ifx \@empty#2\relax \else
+ \vskip\subfigcapskip
+ \@subcaption{#1}{#2}%
+ \fi
+ %% Finally add the bottom spacing.
+ \vskip\subfigbottomskip}%
+ \egroup}
+
+\newcommand{\@subfigcaptionlist}{}
+
+\newcommand{\@subcaption}[2]{%
+ \begingroup
+ \let\label\@gobble
+ \def\protect{\string\string\string}%
+ \xdef\@subfigcaptionlist{%
+ \@subfigcaptionlist,%
+ {\protect\numberline {\@currentlabel}%
+ \noexpand{\ignorespaces #2}}}%
+ \endgroup
+ \@nameuse{@make#1caption}{\@nameuse{@the#1}}{#2}}
+
+\newcommand{\@makesubfigurecaption}[2]{%
+ \setbox\@tempboxa \hbox{%
+ \subcapsize
+ \ignorespaces #1%
+ \ignorespaces #2}%
+ \@tempdimb=-\subfigcapmargin
+ \multiply\@tempdimb\tw@
+ \advance\@tempdimb\@tempdima
+ \hbox to\@tempdima{%
+ \hfil
+ \ifdim \wd\@tempboxa >\@tempdimb
+ \subfig@caption{#1}{#2}%
+ \else\ifsubcapnooneline
+ \subfig@caption{#1}{#2}%
+ \else
+ \box\@tempboxa
+ \fi\fi
+ \hfil}}
+
+\let\@makesubtablecaption\@makesubfigurecaption
+
+\newcommand{\subfig@caption}[2]{%
+ \ifsubcaphang
+ \sbox{\@tempboxa}{%
+ \subcapsize
+ \ignorespaces #1}%
+ \addtolength{\@tempdimb}{-\wd\@tempboxa}%
+ \usebox{\@tempboxa}%
+ \subfig@captionpar{\@tempdimb}{#2}%
+ \else
+ \subfig@captionpar{\@tempdimb}{#1#2}%
+ \fi}
+
+\newcommand{\subfig@captionpar}[2]{%
+ \parbox[t]{#1}{%
+ \strut
+ \ifsubcapcenter
+ \setlength{\leftskip}{\@flushglue}%
+ \setlength{\rightskip}{\@flushglue}%
+ \setlength{\parfillskip}{\z@skip}%
+ \else\ifsubcapcenterlast
+ \addtolength{\leftskip}{0pt plus 1fil}%
+ \addtolength{\rightskip}{0pt plus -1fil}%
+ \setlength{\parfillskip}{0pt plus 2fil}%
+ \fi\fi
+ \subcapsize
+ \ignorespaces #2}}
+
+%%%
+%%% Generalized wrapper for the \@dottedtocline macro. This checks for
+%%% the level based on the output file (#1) and not using only
+%%% \@tocdepth.
+%%%
+\newcommand{\@dottedxxxline}[6]{%
+ \ifnum #2>\@nameuse{c@#1depth}\else
+ \@dottedtocline{0}{#3}{#4}{#5}{#6}
+ \fi}
+
+%%%
+%%% Finally, wrap the \@caption macro to dump any sub-captions saved
+%%% after calling the standard \@caption.
+%%%
+\let\subfig@oldcaption\@caption
+
+\long\def\@caption#1[#2]#3{%
+ \subfig@oldcaption{#1}[{#2}]{#3}%
+ \@for \@tempa:=\@subfigcaptionlist \do {%
+ \ifx\@empty\@tempa\relax \else
+ \addcontentsline
+ {\@nameuse{ext@sub#1}}%
+ {sub#1}%
+ {\@tempa}%
+ \fi}%
+ \gdef\@subfigcaptionlist{}}
+\endinput
+
+%%%
+%%% End of file `subfigure.sty'.
diff --git a/obsolete/macros/latex209/contrib/misc/texnames.sty b/obsolete/macros/latex209/contrib/misc/texnames.sty
new file mode 100644
index 0000000000..7314a8de47
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/texnames.sty
@@ -0,0 +1,13 @@
+\font\mf=logo10
+\hyphenchar\mf=-1
+\newcommand{\METAFONT}{{\mf METAFONT}}
+\newcommand{\AMSTEX}{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em
+ $\cal S$-\TeX}
+\newcommand{\AMSTeX}{\AMSTEX}
+\newcommand{\BibTeX}{{\sc Bib}\TeX}
+\newcommand{\VorTeX}{{V\kern-2.7pt\lower.5ex\hbox{O\kern-1.4pt R}\kern-2.6pt
+ T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}}
+\newcommand\FergTeX{T\kern-.1667em\lower.5ex\hbox{\^E}\kern-.125emX}
+\font\gut=cminch
+\hyphenchar\gut=-1
+\newcommand{\Gut}{{\gut GUT}{\Huge \kern-1em\hbox{enberg}}}
diff --git a/obsolete/macros/latex209/contrib/misc/threepart.sty b/obsolete/macros/latex209/contrib/misc/threepart.sty
new file mode 100644
index 0000000000..8d9104688d
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/threepart.sty
@@ -0,0 +1,40 @@
+% Three part head and foot macros. 1/87
+% Lance Berc
+% Olsen & Associates mcvax!unizh!olsen!lance@seismo.css.gov
+% Seefeldstrasse 233
+% CH-8008 Zurich
+
+% How users can set the head and foot text.
+\def\lhead#1{\gdef\@lhead{#1}} \def\lfoot#1{\gdef\@lfoot{#1}}
+\def\chead#1{\gdef\@chead{#1}} \def\cfoot#1{\gdef\@cfoot{#1}}
+\def\rhead#1{\gdef\@rhead{#1}} \def\rfoot#1{\gdef\@rfoot{#1}}
+
+% Initialization of the head and foot text.
+% By default the page number is at the center of the foot and everything
+% else is empty.
+\def\@lhead{} \def\@lfoot{}
+\def\@chead{} \def\@cfoot{{\rm \thepage}}
+\def\@rhead{} \def\@rfoot{}
+
+% Put together a three part header or footer given the left, center and
+% right text. The \lap commands put the text into an hbox of zero size,
+% so overlapping text is not detected (it just overlaps).
+\def\@threepart#1#2#3{\rlap{#1} \hfil {#2} \hfil \llap{#3}}
+
+% Swap the notices on odd and even pages when twosided.
+\def\ps@threepartheadings
+ {
+ \def\@oddhead{\@threepart{\@lhead}{\@chead}{\@rhead}}
+ \def\@oddfoot{\@threepart{\@lfoot}{\@cfoot}{\@rfoot}}
+
+ \if@twoside
+ \def\@evenhead{\@threepart{\@rhead}{\@chead}{\@lhead}}
+ \def\@evenfoot{\@threepart{\@rfoot}{\@cfoot}{\@lfoot}}
+ \else
+ \def\@evenhead{\@threepart{\@lhead}{\@chead}{\@rhead}}
+ \def\@evenfoot{\@threepart{\@lfoot}{\@cfoot}{\@rfoot}}
+ \fi
+ }
+
+% Default page style
+\ps@threepartheadings
diff --git a/obsolete/macros/latex209/contrib/misc/twoup.sty b/obsolete/macros/latex209/contrib/misc/twoup.sty
new file mode 100644
index 0000000000..b9fb4796d0
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/twoup.sty
@@ -0,0 +1,20 @@
+% Gary Levin gary@sun.mcs.clarkson.edu
+%
+% to format files for two up printing use the following style file
+% feel free to modify before you install. the units are pretty good, so
+% don't fiddle much. leaves enough room for punching holes at the top.
+%
+% once latex'ed, reorganize the file using
+% dvidvi '2:0(-0.35in,-0.25in),1(4.65in,-0.25in)' $1.dvi twoup.dvi
+% then print using dvi2ps -L
+% probably should package as a shell file
+%
+\newcommand\twoup{
+\topmargin 0.00in
+\oddsidemargin 0.00in
+\evensidemargin 0.00in
+\headheight 0.25in
+\headsep 0.20in
+\textheight 6.50in
+\pagestyle{headings}
+}
diff --git a/obsolete/macros/latex209/contrib/misc/varioref.sty b/obsolete/macros/latex209/contrib/misc/varioref.sty
new file mode 100644
index 0000000000..0d895e04bc
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/varioref.sty
@@ -0,0 +1,168 @@
+%%
+%% This is file `varioref.sty', generated
+%% on <1993/5/1> with the docstrip utility (2.1e).
+%%
+%% The original source files were:
+%%
+%% varioref.doc (with options: `style')
+%%
+%%
+%% Copyright (C) 1992,1993 by Frank Mittelbach. All rights reserved.
+%%
+%%
+%% IMPORTANT NOTICE:
+%%
+%% You are not allowed to change this file. You may however copy this
+%% file to a file with a different name and then change the copy.
+%%
+%% You are NOT ALLOWED to distribute this file alone. You are NOT
+%% ALLOWED to take money for the distribution or use of this file (or a
+%% changed version) except for a nominal charge for copying etc.
+%%
+%% You are allowed to distribute this file under the condition that it is
+%% distributed together with all files mentioned in readme.mz7.
+%%
+%% If you receive only some of these files from someone, complain!
+%%
+%% However, if these files are distributed by established suppliers as
+%% part of a complete TeX distribution, and the structure of the
+%% distribution would make it difficult to distribute the whole set of
+%% files, *those parties* are allowed to distribute only some of the
+%% files provided that it is made clear that the user will get a complete
+%% distribution-set upon request to that supplier (not me). Notice that
+%% this permission is not granted to the end user.
+%%
+%% For error reports in case of UNCHANGED versions see readme files.
+%%
+%%
+%%
+
+\def\filename{varioref}
+\def\fileversion{v0.1g}
+\def\filedate{93/02/14}
+\def\docdate {93/02/14}
+
+%% \CheckSum{257}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+%% Style-option varioref to use with LaTeX v2.09
+%% Copyright (C) 1992-1993 Frank Mittelbach, all rights reserved.
+\@ifundefined{c@vrcnt}{}{\endinput}
+\typeout{Style option: `varioref'
+ \fileversion\space <\filedate> (FMi)}
+\typeout{English documentation
+ \@spaces\@spaces\space<\docdate> (FMi)}
+\newcounter{vrcnt}
+\def\vpageref{\protect\p@vpageref}
+\def\p@vpageref{\@ifnextchar[%
+ \@vpageref{\@vpageref[\reftextcurrent]}%
+}
+\def\@vpageref[#1]{\@ifnextchar[%
+ \@@vpageref{\@@vpageref[#1][\unskip\space]}}
+\def\@@vpageref[#1][#2]#3{%
+ \leavevmode\unskip
+ \global\advance\c@vrcnt\@ne
+ \@ifundefined{r@vr@\the\c@vrcnt}%
+ {\@namedef{r@vr@\the\c@vrcnt}{{??}{??}}}{}%
+ \edef\@tempa{\expandafter\expandafter\expandafter
+ \@cdr\csname r@vr@\the\c@vrcnt\endcsname
+ \@nil}%
+ \@ifundefined{r@xvr@\the\c@vrcnt}%
+ {\@namedef{r@xvr@\the\c@vrcnt}{{??}{??}}}{}%
+ \edef\@tempb{\expandafter\expandafter\expandafter
+ \@cdr\csname r@xvr@\the\c@vrcnt\endcsname
+ \@nil}%
+ {\let\@currentlabel\@empty\label{xvr@\the\c@vrcnt}}%
+ \ifx\@tempa\@tempb\else
+ \vref@err{***^^J%
+ * Warning: \noexpand\vref over page boundary
+ \@tempa-\@tempb\space (may loop)^^J%
+ ***}%
+ \fi
+ \@ifundefined{r@#3}{\@namedef{r@#3}{{??}{??}}}{}%
+ \edef\@tempb{\expandafter\expandafter\expandafter
+ \@cdr\csname r@#3\endcsname
+ \@nil}%
+ \space
+ \ifx\@tempa\@tempb
+ #1%
+ \else
+ #2%
+ \is@pos@number\@tempb
+ {%
+ \is@pos@number\@tempa
+ {\@tempcnta\@tempa
+ \advance\@tempcnta\@ne
+ }%
+ {\@tempcnta\maxdimen}%
+ \ifnum \@tempb =\@tempcnta
+ \ifodd\@tempcnta
+ \if@twoside
+ \reftextfaceafter
+ \else
+ \reftextafter
+ \fi
+ \else
+ \reftextafter
+ \fi
+ \else
+ \advance\@tempcnta-2
+ \ifnum \@tempb =\@tempcnta
+ \ifodd\@tempcnta
+ \reftextbefore
+ \else
+ \if@twoside
+ \reftextfacebefore
+ \else
+ \reftextbefore
+ \fi
+ \fi
+ \else
+ \reftextfaraway{#3}%
+ \fi
+ \fi
+ }%
+ {\reftextfaraway{#3}}%
+ \fi
+ {\let\@currentlabel\@empty\label{vr@\the\c@vrcnt}}%
+}
+\def\vrefwarning{\let\vref@err\typeout}
+\let\vref@err\errmessage
+\def\vref{\protect\p@vref}
+\def\p@vref#1{%
+ \unskip~\ref{#1}%
+ \@vpageref[\unskip]{#1}%
+}
+\def\is@pos@number#1{\is@pos@num0#1\space\@nil}
+\def\is@pos@num{\afterassignment\is@pos@num@ \count@}
+\def\is@pos@num@#1\@nil{%
+ \if0#10%
+ \expandafter\@firstarg \else
+ \expandafter\@secondarg \fi}
+\def\@firstarg#1#2{#1}
+\def\@secondarg#1#2{#2}
+\def\reftextvario#1#2{\ifodd\c@vrcnt #1\else#2\fi}
+\def\reftextfaceafter {on the \reftextvario{facing}{next} page}
+\def\reftextfacebefore{on the \reftextvario{facing}{preceding} page}
+\def\reftextafter {on the \reftextvario{following}{next} page}
+\def\reftextbefore {on the \reftextvario{preceding page}{page before}}
+\def\reftextcurrent {on \reftextvario{this}{the current} page}
+\def\reftextfaraway#1{on page~\pageref{#1}}
+\def\fullref#1{\ref{#1} on page~\pageref{#1}}
+\endinput
+%%
+%% End of file `varioref.sty'.
diff --git a/obsolete/macros/latex209/contrib/misc/xr.sty b/obsolete/macros/latex209/contrib/misc/xr.sty
new file mode 100644
index 0000000000..b4b11da30c
--- /dev/null
+++ b/obsolete/macros/latex209/contrib/misc/xr.sty
@@ -0,0 +1,207 @@
+%%% ====================================================================
+%%% @LaTeX-style-file{
+%%% author = "David Carlisle",
+%%% version = "5.01",
+%%% date = "20 July 1993",
+%%% time = "10:57:34 BST",
+%%% filename = "xr.sty",
+%%% address = "Computer Science Department
+%%% Manchester University
+%%% Oxford Road
+%%% Manchester
+%%% England
+%%% M13 9PL",
+%%% telephone = "+44 61 275 6139",
+%%% FAX = "+44 61 275 6236",
+%%% checksum = "04455 207 971 7348",
+%%% email = "carlisle@cs.man.ac.uk (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "LaTeX, \ref, \pageref, \label",
+%%% supported = "yes",
+%%% docstring = "
+%%%
+%%% xr.sty
+%%%
+%%% A style which allows the use \[page]ref in one file to access
+%%% labels defined by \label in another document.
+%%% Each such file which is to be cross referenced is declared with
+%%% the \externaldocument command.
+%%%
+%%% Versions 1-4 of this style were written by Jean-Pierre Drucbert
+%%%
+%%% Version 5 re-implements the main mechanism, and adds an
+%%% optional argument to allow the user to resolve conflicts if two
+%%% files use the same \label.
+%%%
+%%% The checksum field above was produced by
+%%% Robert Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+%
+% Version 5.00 07 July 1993
+% New mechanism (\read instead of \input).
+%
+% Version 5.01 20 July 1993
+% V5.00 did not import aux files of \include'ed files. (Reported by
+% Jean-Pierre Drucbert.)
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%<*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 xr.sty
+%
+% If you have the Mittelbach/Duchier/Braams docstrip utility, you may
+% produce a faster loading .sty file. Rename this file to: xr.doc
+% Then run this file through *plain* TeX:
+% tex xr.doc
+% This should produce the file xr.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 xr.doc
+% Note that you may need to quote the arguments here to stop your
+% operating system treating the \ characters incorrectly.
+%
+% latex xr.doc
+% Will produce a typeset version of the documentation, as above.
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\plain{plain}\ifx\fmtname\plain\csname fi\endcsname
+ \def\batchfile{xr.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{xr.sty}{t}{\from{xr.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{xr.sty}
+% \author{D. P. Carlisle^^A
+% \thanks{The Author of Versions 1--4 was Jean-Pierre Drucbert}}
+% \date{20 July 1993}
+%
+% \begin{document}
+% \maketitle
+%
+% This style implements a system for eXternal References.
+%
+% If one document needs to refer to sections of another, say "aaa.tex",
+% then this style may be given as a "\documentstyle" option in the main
+% file, and the command "\externaldocument{aaa}" given in the preamble.
+%
+% Then you may use "\ref" and "\pageref" to refer to anything which has
+% been given a "\label" in either "aaa.tex" or the main document.
+% You may declare any number of such external documents.
+%
+% If any of the external documents, or the main document, use the same
+% "\label" then an error will occur as the label will be multiply
+% defined. To overcome this problem "\externaldocument" has an optional
+% argument. If you declare "\externaldocument[A-]{aaa}" Then all
+% references from "aaa" are prefixed by "A-". So for instance, if a
+% section of "aaa" had "\label{intro}", then this could be referenced
+% with "\ref{A-intro}". The prefix need not be "A-", it can be any
+% string chosen to ensure that all the labels imported from external
+% files are unique. Note however that if your style declares certain
+% active characters (":" in French, \verb|"| in German) then these
+% characters can not usually be used in "\label", and similarly may not
+% be used in the optional argument to "\externaldocument".
+%
+% \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}
+% Check for the optional argument.
+% \begin{macrocode}
+\def\externaldocument{\@ifnextchar[{\XR@}{\XR@[]}}
+% \end{macrocode}
+%
+% Save the optional prefix. Start processing the first "aux" file.
+% \begin{macrocode}
+\def\XR@[#1]#2{{%
+ \makeatletter
+ \def\XR@prefix{#1}%
+ \XR@next#2.aux\relax\\}}
+% \end{macrocode}
+%
+% Process the next "aux" file in the list and remove it from the head of
+% the list of files to process.
+% \begin{macrocode}
+\def\XR@next#1\relax#2\\{%
+ \edef\XR@list{#2}%
+ \XR@loop{#1}}
+% \end{macrocode}
+%
+% Check whether the list of "aux" files is empty.
+% \begin{macrocode}
+\def\XR@aux{%
+ \ifx\XR@list\@empty\else\expandafter\XR@explist\fi}
+% \end{macrocode}
+%
+
+% Expand the list of aux files, and call "\XR@next" to process the first
+% one.
+% \begin{macrocode}
+\def\XR@explist{\expandafter\XR@next\XR@list\\}
+% \end{macrocode}
+%
+% If the "aux" file exists, loop through line by line, looking for
+% "\newlabel" and "\@input". Otherwise process the next file in the
+% list.
+% \begin{macrocode}
+\def\XR@loop#1{\openin\@inputcheck#1\relax
+ \ifeof\@inputcheck
+ \typeout{^^JNo file #1^^JLABELS NOT IMPORTED.^^J}%
+ \expandafter\XR@aux
+ \else
+ \typeout{IMPORTING LABELS FROM #1}%
+ \expandafter\XR@read\fi}
+% \end{macrocode}
+%
+% Read the next line of the aux file.
+% \begin{macrocode}
+\def\XR@read{%
+ \read\@inputcheck to\XR@line
+% \end{macrocode}
+% The "..." make sure that "\XR@test" always has sufficient arguments.
+% \begin{macrocode}
+ \expandafter\XR@test\XR@line...\XR@}
+% \end{macrocode}
+%
+% Look at the first token of the line.
+% If it is "\newlabel", do the "\newlabel". If it is "\@input", add the
+% filename to the list of files to process. Otherwise ignore.
+% Go around the loop if not at end of file. Finally process the next
+% file in the list.
+% \begin{macrocode}
+\long\def\XR@test#1#2#3#4\XR@{%
+ \ifx#1\newlabel
+ \newlabel{\XR@prefix#2}{#3}%
+ \else\ifx#1\@input
+ \edef\XR@list{\XR@list#2\relax}%
+ \fi\fi
+ \ifeof\@inputcheck\expandafter\XR@aux
+ \else\expandafter\XR@read\fi}
+% \end{macrocode}
+%
+% \end{document}
+\endinput