From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/base/slides.dtx | 2733 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 2733 insertions(+)
 create mode 100644 macros/latex/base/slides.dtx

(limited to 'macros/latex/base/slides.dtx')

diff --git a/macros/latex/base/slides.dtx b/macros/latex/base/slides.dtx
new file mode 100644
index 0000000000..4ccd6824e6
--- /dev/null
+++ b/macros/latex/base/slides.dtx
@@ -0,0 +1,2733 @@
+% \iffalse meta-comment
+%
+% Copyright 1993-2016
+% The LaTeX3 Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the LaTeX base system.
+% -------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%    https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% The list of all files belonging to the LaTeX base distribution is
+% given in the file `manifest.txt'. See also `legal.txt' for additional
+% information.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+%
+% \fi
+%
+% \iffalse
+% Copyright (C) 1994-97 LaTeX3 project, Frank Mittelbach
+% and Rainer Sch\"opf, all rights reserved.
+%
+%    \begin{macrocode}
+%<+class>\NeedsTeXFormat{LaTeX2e}[1997/06/01]
+%    \end{macrocode}
+%
+%    Announce the Class name and its version:
+% \changes{v2.3b}{1994/05/01}{Removed the use of \cs{fileversion}
+%    c.s.}
+% \changes{v2.3b}{1994/05/01}{Added \cs{ProvidesFile} to slides.def.}
+% \changes{v2.3o}{1995/05/17}{Replaced all \cs{hbox to} with
+%    \cs{hb@xt@}.}
+% \changes{v2.3o}{1995/05/17}{Cleaned up the \cs{changes} entries.}
+% \changes{v2.3p}{1995/05/23}{Corrected some brace mismatches.}
+% \changes{v2.3q}{1995/09/20}{Replaced \cs{@tempa} by \cs{reserved@a}.}
+% \changes{v2.3r}{1995/09/27}{Globally replaced scale factor 19.91 by
+%          19.907 in \cs{DeclareFontShape}, as this gives better
+%          rounded font sizes at 600dpi (suggested by Denis Roegel).}
+%    \begin{macrocode}
+%<+class>\ProvidesClass{slides}
+%<+cmd>\ProvidesFile{slides.def}
+%<*driver>
+       \ProvidesFile{slides.drv}
+%</driver>
+              [2016/03/29 v2.4a
+%<+class>               Standard LaTeX document class]
+%<+cmd>               SLiTeX definitions]
+%    \end{macrocode}
+%
+% \section{A driver for this document}
+%
+% \changes{v2.3f}{1994/05/26}{Moved the driver to the front of the
+%    file; it doesn't print any longer}
+%
+% The next bit of code contains the documentation driver file for
+% \TeX{}, i.e., the file that will produce the documentation you are
+% currently reading. It can be extracted from this file by the
+% \dst{} program.
+%    \begin{macrocode}
+%<*driver>
+]
+\documentclass{ltxdoc}
+%    \end{macrocode}
+%    The following command retrieves the date and version information
+%    from the file.
+%    \begin{macrocode}
+\GetFileInfo{slides.drv}
+%    \end{macrocode}
+%    Some commonly used abbreviations:
+% \changes{v2.3h}{1994/06/01}{Added definition of \cs{SLiTeX}.}
+%    \begin{macrocode}
+\DeclareRobustCommand{\SLiTeX}{{%
+   \normalfont S\kern -.06em
+   {\scshape l\kern -.035emi}\kern -.06em
+   \TeX
+}}
+\newcommand*{\Lopt}[1]{\textsf {#1}}
+\newcommand*{\file}[1]{\texttt {#1}}
+\newcommand*{\Lcount}[1]{\textsl {\small#1}}
+\newcommand*{\pstyle}[1]{\textsl {#1}}
+\newcommand*{\dst}{{\normalfont\scshape docstrip}}
+%
+%    \end{macrocode}
+%    Now start the document and input this file.
+% \changes{v2.3d}{1994/05/12}{Added a missing \cs{begin\{macrocode\}}}
+%    \begin{macrocode}
+\begin{document}
+   \DocInput{slides.dtx}
+\end{document}
+%</driver>
+%    \end{macrocode}
+%\fi
+%
+%
+% \changes{v2.1b}{1993/12/13}{Removed \cs{CodelineIndex} from the
+%    driver code.}
+% \changes{v2.1e}{1993/12/16}{Removed again different definitions for
+%    font commands font commands in non-compatibility mode.}
+%
+% \changes{v2.2}{1993/12/18}{Changes to make it work with
+%    compatibility mode.}
+% \changes{v2.2a}{1993/12/19}{Removed float parms}
+% \changes{v2.2d}{1994/01/31}{Removed \cs{@normalsize definition}}
+% \changes{v2.2g}{1994/03/01}{Removed option makeidx.}
+% \changes{v2.2g}{1994/03/01}{Moved driver up front.}
+% \changes{v2.2g}{1994/03/01}{Renamed files \file{slides.ltx} and
+%    \file{sfontdef.ltx} to \file{slides.def} and \file{sfonts.def}.}
+% \changes{v2.2l}{1994/03/16}{Removed \cs{typeouts}}
+% \changes{v2.3}{1994/03/16}{Removed root/slide-file structure except
+%    for compatibility mode. (LL)}
+% \changes{v2.3}{1994/03/16}{Added clock option (LL)}
+% \changes{v2.3}{1994/03/16}{Modified slide, overlay, note
+%    environments. (LL)}
+% \changes{v2.3}{1994/03/16}{Added titlepage option and
+%    \cs{maketitle}. (LL)}
+% \changes{v2.3c}{1994/05/06}{Changed documentation to use
+%    `environment' instead of `macro' environment for environments}
+% \changes{v2.3f}{1994/05/26}{Wrapped two long lines}
+% \changes{v2.3l}{1994/12/16}{Use \cs{newcommand*} to define commands
+%    with an argument}
+% \changes{v2.3n}{1995/04/02}{a slight documentation fix (PR 1517)}
+%
+% \title{Producing slides with \LaTeXe{}}
+% \author{Frank Mittelbach}
+% \date{\filedate}
+%
+% \maketitle
+% \MaintainedByLaTeXTeam{latex}
+%
+% \section{Introduction}
+%
+% With \LaTeXe{} it is now no longer necessary to maintain a special
+% format for producing overhead slides. Instead the standard format
+% may be used and internally only different font definition files come
+% into play.
+%
+% \section{Usage}
+%
+% For producing slides you have to use |slides| as the
+% document class. This class is very similar to the |slides| style
+% that came with \SliTeX{}, in fact it is basically a copy changed to
+% work under \LaTeXe{}.\footnote{Therefore you should compare the
+% new class with old \SliTeX{} styles
+% in case you have local slide classes to see what you have to change
+% in order to use them with \LaTeXe{}.} Thus you have to say something
+% like
+% \begin{verbatim}
+%   \documentclass[...]{slides}
+% \end{verbatim}
+% and process this with \LaTeXe.
+%
+% \section{Fonts}
+%
+% Note, that that with NFSS you can easily produce slides with special
+% fonts just by calling an appropriate style file (like |times|) in a
+% |\usepackage| command. This works, for example, with all
+% fonts that are defined to be scaleable (e.g., PostScript fonts) since
+% they can be used at any size by NFSS.
+%
+% However, packages like |pandora| won't work because the standard
+% |.fd| files shipped with NFSS only contain small sizes. You can, of
+% course, produce additional sizes and change the |.fd| files
+% accordingly so that they would be useable for slides as well.
+%
+% \section{Invisible text and color separation}
+%
+% In the original \SliTeX{} it was possible to produce invisible text
+% using the |\invisible| command, so that one was able to put several
+% slides on top of each other (with each slides showing additional
+% details, etc.). It was also possible to produce `color' slides. This
+% was done by producing individual slides one for each color and
+% placing them on top of each other.
+%
+% The availability of color printers and the |color| package make
+% color separation obsolete, so it has been removed.  Although the
+% |color| has also made |\invisible| obsolete, the command is
+% retained in the \LaTeXe{} implementation, but there
+% are a few restrictions. Invisible fonts are implemented as special
+% shapes where the shape names are build by prefixing the normal shape
+% name with an uppercase |I|. For example, the `normal invisible
+% shape' would be |In|. When \LaTeX{} is requested to typeset
+% invisible it will thus change the current shape attribute in this
+% manner. To make this work it is necessary that the resulting font
+% shape group is defined. If not, the normal font substitution
+% mechanism of \LaTeXe{} will change the attribute until it finds a
+% usable font shape group with the result that the text may become
+% visible.
+%
+% As long as you use the standard fonts for slides this is not a
+% problem because all the visible font shape groups have invisible
+% counterparts. However, if you decide on using special fonts, e.g.,
+% PostScript fonts, your |\DeclareFontShape| settings may not contain
+% invisible font shape groups and thus you may be unable to use these
+% features without adding additional |\DeclareFontShape| commands to
+% your |.fd| files or the preamble of your document.
+%
+% \StopEventually{}
+%
+%
+% \section{The Implementation}
+%
+% \begin{quote}
+% \textbf{Warning:} The implementation is still very experimental and
+% may change internally very much. It currently basically consists of a
+% slightly modified copy of |slides.sty| (which then forms
+% |slides.cls|) followed by a slightly changed copy of |slitex.tex|.
+% Documentation is practically
+% non-existing.  Everybody is invited to help changing this!
+% \end{quote}
+%
+% The code is divided into two parts, we first implement the class
+% related functions and declarations and then define lowlevel stuff
+% that is necessary within every class. By placing such commands into
+% a separate file it will be possible to share it with other slide
+% classes.
+%
+% \subsection{The class code}
+%
+% At this point we input the redefinitions that are necessary for
+% \SLiTeX.
+% \changes{v2.3g}{1994/05/26}{Use \cs{input} instead of \cs{@@input}}
+%    \begin{macrocode}
+%<*class>
+\input{slides.def}
+%    \end{macrocode}
+%
+%
+% Now we are ready for setting up the font tables. As usual, we first
+% look for a local configuration file |sfonts.cfg|. If there isn't
+% one, we fall back to the default one (|sfonts.def|).
+% \changes{v2.2i}{1994/03/08}{Corrected first argument of
+%    \cs{IfFileExists}: \file{sfonts.def} to \file{sfonts.cfg}.}
+% \changes{v2.3g}{1994/05/26}{Use \cs{InputIfFileExists} instead of
+%    \cs{IfFileExists} and \cs{input} instead of \cs{@@input}}
+%    \begin{macrocode}
+\InputIfFileExists{sfonts.cfg}
+           {\typeout{**************************************^^J%
+                     *^^J%
+                     * Local config file sfonts.cfg used^^J%
+                     *^^J%
+                     **************************************}}%
+           {\input{sfonts.def}}
+%    \end{macrocode}
+%
+% \section{Declaration of Options}
+%
+% We declare a few options as illegal.
+%
+%
+% \subsection{Setting Paper Sizes}
+%
+%    The variables |\paperwidth| and |\paperheight| should reflect the
+%    physical paper size after trimming. For desk printer output this
+%    is usually the real paper size since there is no post-processing.
+%    Classes for real book production will probably add other paper
+%    sizes and additionally the production of crop marks for trimming.
+% \changes{v2.1d}{1993/12/14}{Corrected typo, A4 is not 279 mm high}
+%    \begin{macrocode}
+\DeclareOption{a4paper}
+   {\setlength\paperheight {297mm}%
+    \setlength\paperwidth  {210mm}}
+\DeclareOption{a5paper}
+   {\setlength\paperheight {210mm}%
+    \setlength\paperwidth  {148mm}}
+\DeclareOption{b5paper}
+   {\setlength\paperheight {250mm}%
+    \setlength\paperwidth  {176mm}}
+\DeclareOption{letterpaper}
+   {\setlength\paperheight {11in}%
+    \setlength\paperwidth  {8.5in}}
+\DeclareOption{legalpaper}
+   {\setlength\paperheight {14in}%
+    \setlength\paperwidth  {8.5in}}
+\DeclareOption{executivepaper}
+   {\setlength\paperheight {10.5in}%
+    \setlength\paperwidth  {7.25in}}
+%    \end{macrocode}
+%
+%    The option \Lopt{landscape} switches the values of |\paperheight|
+%    and |\paperwidth|, assuming the dimensions wer given for portrait
+%    paper.
+%    \begin{macrocode}
+\DeclareOption{landscape}
+   {\setlength\@tempdima   {\paperheight}%
+    \setlength\paperheight {\paperwidth}%
+    \setlength\paperwidth  {\@tempdima}}
+%    \end{macrocode}
+%
+%  \subsection{The clock option}
+
+% The option \Lopt{clock} prints the time at the bottom of each note.
+% We also define here the commands and counters used to keep track of
+% time.
+%    \begin{macrocode}
+\newif\if@clock \@clockfalse
+\DeclareOption{clock}{\@clocktrue
+  \AtEndDocument{\typeout{\@arabic\c@minutes\space minutes}}
+}%
+\newcounter{minutes}%
+\newcounter{seconds}%
+\newcommand*{\settime}[1]{\setcounter{seconds}{0}\addtime{#1}}%
+\newcommand*{\addtime}[1]{\addtocounter{seconds}{#1}%
+  \setcounter{minutes}{\value{seconds}}%
+  \global \divide \value{minutes} by 60\relax}
+
+%    \end{macrocode}
+%
+%  \subsection{Two-side or one-side printing}
+%
+% Two-sided printing is not allowed, so don't declare an option.
+% But it is necessary to initialize the switch.
+% \changes{v2.2h}{1994/03/07}{Removed declared option twoside.}
+%    \begin{macrocode}
+\@twosidefalse
+%    \end{macrocode}
+%
+%
+%  \subsection{Draft option}
+%
+%    If the user requests \Lopt{draft} we show any overfull boxes.
+%    We could probably add some more interesting stuff to this option.
+%    \begin{macrocode}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+%    \end{macrocode}
+%
+%  \subsection{Titlepage option}
+%    The default is for a |\maketitle| command to make a new page.
+%    \begin{macrocode}
+\newif\if@titlepage
+\@titlepagetrue
+\DeclareOption{titlepage}{\@titlepagetrue}
+\DeclareOption{notitlepage}{\@titlepagefalse}
+%    \end{macrocode}
+%
+%  \subsection{Twocolumn printing}
+%
+%    Two-column printing is again forbidden.
+% \changes{v2.3e}{1994/05/22}{twocolumn produces only a warning}
+%    \begin{macrocode}
+\DeclareOption{onecolumn}{}
+\DeclareOption{twocolumn}{%
+    \ClassWarning{slides}{No 'twocolumn' layout for slides}}
+%    \end{macrocode}
+%
+%  \subsection{Equation numbering on the left}
+%
+%    The option \Lopt{leqno} can be used to get the equation numbers
+%    on the left side of the equation.
+% \changes{v2.2g}{1994/03/01}{Option leqno loads \file{leqno.clo}
+%    file.}
+%    \begin{macrocode}
+\DeclareOption{leqno}{\input{leqno.clo}}
+%    \end{macrocode}
+%
+%  \subsection{Flush left displays}
+%
+%    The option \Lopt{fleqn} redefines the displayed math environments
+%    in such a way that they come out flush left, with an indentation
+%    of |\mathindent| from the prevailing left margin.
+% \changes{v2.2g}{1994/03/01}{Added fleqn option.}
+%    \begin{macrocode}
+\DeclareOption{fleqn}{\input{fleqn.clo}}
+%    \end{macrocode}
+%
+%
+% \section{Executing Options}
+%
+%    Here we execute the default options to initialize certain
+%    variables.
+%    \begin{macrocode}
+\ExecuteOptions{letterpaper,final}
+%    \end{macrocode}
+%
+%    The |\ProcessOptions| command causes the execution of the code
+%    for every option \Lopt{FOO}
+%    which is declared and for which the user typed
+%    the \Lopt{FOO} option in his
+%    |\documentclass| command.  For every option \Lopt{BAR} he typed,
+%    which is not declared, the option is assumed to be a global option.
+%    All options will be passed as document options to any
+%    |\usepackage| command in the document preamble.
+%    \begin{macrocode}
+\ProcessOptions
+%    \end{macrocode}
+%
+%  \section{Loading Packages}
+%
+%  The standard class files do not load additional packages.
+%
+%
+% \section{Document Layout}
+%
+%
+%  In this section we are finally dealing with the nasty typographical
+%  details.
+%
+%
+%
+% \subsection{Fonts}
+%
+%    \begin{macrocode}
+% FMi:
+\def\rmdefault{lcmss}        % no roman
+\def\sfdefault{lcmss}
+\def\ttdefault{lcmtt}
+\def\itdefault{sl}
+\def\sldefault{sl}
+\def\bfdefault{bx}
+%    \end{macrocode}
+%
+%
+%  Since the number of parameters to set are very large it seems
+%    reasonable to set up one command |\@setfontsize@parms| which will
+%    do the work for us.
+%
+%    \LaTeX\ offers the user commands to change the size of the font,
+%    relative to the `main' size. Each relative size changing command
+%    |\size| executes the command
+%    |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
+%
+%    \begin{description}
+%    \item[\meta{font-size}] The absolute size of the font to use from
+%        now on.
+%
+%    \item[\meta{baselineskip}] The normal value of |\baselineskip|
+%        for the size of the font selected. (The actual value will be
+%        |\baselinestretch| * \meta{baselineskip}.)
+%    \end{description}
+%
+%    A number of commands, defined in the \LaTeX{} kernel, shorten the
+%    following  definitions and are used throughout. They are:
+% \begin{center}
+% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
+%  \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
+%  \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
+%  \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
+%  ...
+%  \end{tabular}
+%  \end{center}
+%
+% \begin{macro}{\ifourteenpt}
+% \begin{macro}{\iseventeenpt}
+% \begin{macro}{\itwentypt}
+% \begin{macro}{\itwentyfourpt}
+% \begin{macro}{\itwentyninept}
+% \begin{macro}{\ithirtyfourpt}
+% \begin{macro}{\ifortyonept}
+%    For \SLiTeX{}, however, these are not sufficient, and we therefore
+%    need to add a few extra, larger, sizes.
+%    \begin{macrocode}
+\def\ifourteenpt{13.82}
+\def\iseventeenpt{16.59}
+\def\itwentypt{19.907}
+\def\itwentyfourpt{23.89}
+\def\itwentyninept{28.66}
+\def\ithirtyfourpt{34.4}
+\def\ifortyonept{41.28}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@setfontsize@parms}
+%    This routine is used in \SliTeX{} to interface font size setting
+%    it is modeled after the settings I found in \texttt{slides.sty}, so
+%    it probably needs an update. But any class is free to redefine
+%    it, as it is used only as an abbreviation.
+%    It's syntax is:
+% \begin{quote}
+%     |\@setfontsize@parms| \\
+%     |   |\meta{lineskip} \\
+%     |   |\meta{parskip} \\
+%     |   |\meta{abovedisplayskip}  \\
+%     |   |\meta{belowdisplayskip}  \\
+%     |   |\meta{abovedisplayshortskip} \\
+%     |   |\meta{belowdisplayshortskip} \\
+%     |   |\meta{strut ht} \meta{strut dp}   (without pt)
+% \end{quote}
+%
+% For NFSS1 a similar style existed which did run both with a
+% \SliTeX{} with old font selection or with NFSS1. But when no
+% separate format is made this doesn't make much sense.
+% So the following note is history and would only be true if all NFSS
+% stuff would be removed from the file and placed into the format.
+% \begin{quote}\small
+% Note: To interface the old \texttt{sfonts.tex} the \meta{size} must be
+%    hidden in commands denoting the size by its name prefixed with
+%    `i', i.e.\ 20pt size is called |\itwentypt| at this point. The
+%    NFSS interface will define those sizes to expand to the internal
+%    size, e.g.\ 20 but for the old sfonts the command name, e.g.
+%    |\itwentypt|, will be used to construct the name |\twentypt| etc.
+%
+%    This is a crude interface to the old \texttt{sfonts.tex}. It will
+%    be a bit slower than the old one because it must define |\@tiny|
+%    etc.\ every time a size changes.
+% \end{quote}
+%
+% If classes are set up that are only for use with NFSS then the second
+% argument may be an ordinary font size!
+% \changes{v2.0d}{1993/11/12}{Replaced all pt by \cs{p@}, corrected
+%    definition for \cs{tiny}.}
+%
+%    \begin{macrocode}
+\def\@setfontsize@parms#1#2#3#4#5#6#7#8{%
+   \lineskip #1\relax%
+   \parskip #2\relax
+   \abovedisplayskip #3\relax
+   \belowdisplayskip #4\relax
+   \abovedisplayshortskip #5\relax
+   \belowdisplayshortskip #6\relax
+%
+%    \end{macrocode}
+%    I don't see a reason why the |\strutbox| has a dim different from
+%    |\baselineskip| but we will leave it for the moment
+%    \begin{macrocode}
+  \setbox\strutbox=\hbox{\vrule \@height#7\p@\@depth#8\p@\@width\z@}%
+  \baselineskip\baselinestretch\baselineskip
+  \normalbaselineskip\baselineskip}
+%    \end{macrocode}
+%  \end{macro}
+%
+%    Setting size relations for math scripts:
+% \changes{v2.2e}{1994/02/07}{Corrected entry for size 23.89.}
+%    \begin{macrocode}
+\DeclareMathSizes{13.82}{13.82}{10}{7}
+\DeclareMathSizes{16.59}{16.59}{12}{7}
+\DeclareMathSizes{19.907}{19.907}{16.59}{13.82}
+\DeclareMathSizes{23.89}{23.89}{19.907}{16.59}
+\DeclareMathSizes{28.66}{28.66}{23.89}{19.907}
+\DeclareMathSizes{34.4}{34.4}{28.66}{23.89}
+\DeclareMathSizes{41.28}{41.28}{34.4}{28.66}
+%    \end{macrocode}
+%
+% \begin{macro}{\normalsize}
+%    \begin{macrocode}
+\def\normalsize{%
+      \@setfontsize\normalsize\itwentypt{28\p@ plus3\p@ minus4\p@}%
+%            {20}{30\p@ plus3\p@ minus3\p@}%  made a bit shorter
+      \@setfontsize@parms
+            {2pt}%
+            {30\p@ plus18\p@ minus9\p@}%
+            {15\p@ plus3\p@ minus3\p@}%
+            {10\p@ plus3\p@ minus3\p@}%
+            {10\p@ plus3\p@}
+            \abovedisplayshortskip
+            {17}{7}}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+%    We initially choose the normalsize font.
+%    \begin{macrocode}
+\normalsize
+%    \end{macrocode}
+%
+% \begin{macro}{\small}
+%    \begin{macrocode}
+\def\small{\@setfontsize\small\iseventeenpt{19\p@ plus3\p@ minus\p@}%
+           \@setfontsize@parms
+            {2\p@}%
+            {15\p@ plus15\p@ minus7\p@}%
+            {12\p@ plus3\p@ minus3\p@}%
+            {9\p@ plus3\p@ minus3\p@}%
+            {6\p@ plus3\p@}%
+            \abovedisplayshortskip
+            {13.5}{5.6}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footnotesize}
+% \begin{macro}{\scriptsize}
+%    \begin{macrocode}
+\let\footnotesize=\small
+\let\scriptsize=\small
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tiny}
+%    \begin{macrocode}
+\def\tiny{\@setfontsize\tiny\ifourteenpt{16\p@ plus2\p@ minus\p@}%
+          \@setfontsize@parms
+            {2pt}%
+            {14\p@ plus3\p@ minus10\p@}%
+            {11\p@ plus3\p@ minus10\p@}%
+            \abovedisplayskip
+            {8\p@ plus3\p@ minus5\p@}%
+            {\z@ plus3\p@}%
+            {10}{4}}
+%    \end{macrocode}
+% \end{macro}
+%
+% Actually copying the code above would be better because this would
+% correct the error message. Maybe one should remove the first
+% argument of |\set@font@size@parms|.
+%
+% \begin{macro}{\large}
+% \begin{macro}{\Large}
+% \begin{macro}{\LARGE}
+% \begin{macro}{\huge}
+% \begin{macro}{\Huge}
+%    \begin{macrocode}
+\def\large{\@setfontsize\large\itwentyfourpt{42\p@ plus8\p@ minus5\p@}%
+           \@setfontsize@parms
+            {2\p@}%
+            {40\p@ plus20\p@ minus4\p@}%
+            {20\p@ plus8\p@ minus3\p@}%
+            \abovedisplayskip
+            {10\p@ plus5\p@}%
+            \abovedisplayshortskip
+            {20}{8.5}}
+
+\def\Large{\@setfontsize\Large\itwentyninept{48\p@ plus10\p@ minus6\p@}%
+           \@setfontsize@parms
+            {2\p@}%
+            {48\p@ plus30\p@ minus6\p@}%
+            {24\p@ plus10\p@ minus6\p@}%
+            \abovedisplayskip
+            {12\p@ plus8\p@}%
+            \abovedisplayshortskip
+            {27}{11}}
+
+\def\LARGE{\@setfontsize\LARGE\ithirtyfourpt{52\p@ plus10\p@ minus6\p@}%
+           \@setfontsize@parms
+            {2\p@}%
+            {52\p@ plus30\p@ minus6\p@}%
+            {24\p@ plus10\p@ minus6\p@}%
+            \abovedisplayskip
+            {12\p@ plus8\p@}%
+            \abovedisplayshortskip
+            {27}{11}}
+
+\def\huge{\@setfontsize\huge\ifortyonept{60\p@ plus10\p@ minus6\p@}%
+           \@setfontsize@parms
+            {2\p@}%
+            {60\p@ plus30\p@ minus6\p@}%
+            {24\p@ plus10\p@ minus6\p@}%
+            \abovedisplayskip
+            {12\p@ plus8\p@}%
+            \abovedisplayshortskip
+            {27}{11}}
+
+\let\Huge\huge
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Paragraphing}
+%
+% \begin{macro}{\baselinestretch}
+%    This is used as a multiplier for |\baselineskip|. The default is
+%    to {\em not\/} stretch the baselines.
+%    \begin{macrocode}
+\renewcommand\baselinestretch{}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parindent}
+%    |\parindent| is the width of the paragraph indentation.
+%    \begin{macrocode}
+\setlength\parindent{\z@}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@lowpenalty}
+% \begin{macro}{\@medpenalty}
+% \begin{macro}{\@highpenalty}%
+%    The commands |\nopagebreak| and |\nolinebreak| put in penalties
+%    to discourage these breaks at the point they are put in.
+%    They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
+%    dependent on their argument.
+%    \begin{macrocode}
+\@lowpenalty   51
+\@medpenalty  151
+\@highpenalty 301
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\clubpenalty}
+% \begin{macro}{\widowpenalty}
+%    These penalties are use to discourrage club and widow lines.
+%    Because we use their default values we only show them here,
+%    commented out.
+%    \begin{macrocode}
+% \clubpenalty  150
+% \widowpenalty 150
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\displaywidowpenalty}
+% \begin{macro}{\predisplaypenalty}
+% \begin{macro}{\postdisplaypenalty}
+%    Discourrage (but not so much) widows in front of a math display
+%    and forbid breaking directly in front of a display. Allow break
+%    after a display without a penalty. Again the default values are
+%    used, therefore we only show them here.
+%    \begin{macrocode}
+% \displaywidowpenalty 50
+% \predisplaypenalty   10000
+% \postdisplaypenalty  0
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\interlinepenalty}
+%    Allow the breaking of a page in the middle of a paragraph.
+%    \begin{macrocode}
+% \interlinepenalty 0
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\brokenpenalty}
+%    We allow the breaking of a page after a hyphenated line.
+%    \begin{macrocode}
+% \brokenpenalty 0
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Page Layout}
+%
+%    All margin dimensions are measured from a point one inch from the
+%    top and lefthand side of the page.
+%
+% \subsubsection{Vertical spacing}
+%
+% \begin{macro}{\headheight}
+% \begin{macro}{\headsep}
+% \begin{macro}{\topskip}
+%    The |\headheight| is the height of the box that will contain the
+%    running head. The |\headsep| is the distance between the bottom
+%    of the running head and the top of the text. |\topskip| is the
+%    |\baselineskip| for the first line on a page.
+%    \begin{macrocode}
+\setlength\headheight{14\p@}
+\setlength\headsep   {15\p@}
+\setlength\topskip   {30\p@}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\footskip}
+%    The distance from the baseline of the box which contains the
+%    running footer to the baseline of last line of text is controlled
+%    by the |\footskip|.
+%    Bottom of page:
+%    \begin{macrocode}
+\setlength\footskip{25\p@}   %
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maxdepth}
+% \begin{macro}{\@maxdepth}
+% \changes{v2.3c}{1994/05/06}{Added setting of \cs{maxdepth} and
+%    \cs{@maxdepth}}
+%    The \TeX\ primitive register |\maxdepth| has a function that is
+%    similar to that of |\topskip|. The register |\@maxdepth| should
+%    always contain a copy of |\maxdepth|. In both plain \TeX\ and
+%    \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
+%    native \LaTeX2e\ mode we let the value depend on the typesize. We
+%    set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
+%    1.5$. As it happens, in these classes |\topskip| is equal to the
+%    typesize, therefor we set |\maxdepth| to half the value of
+%    |\topskip|.
+%    \begin{macrocode}
+\if@compatibility
+  \setlength\maxdepth{4\p@}
+\else
+  \setlength\maxdepth{.5\topskip}
+\fi
+\setlength\@maxdepth\maxdepth
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{The dimension of text}
+%
+% \begin{macro}{\textwidth}
+%    When we are in compatibility mode we have to make sure that the
+%    dimensions of the printed area are not different from what the
+%    user was used to see.
+%
+%    \begin{macrocode}
+\if@compatibility
+  \setlength\textwidth{460\p@}
+%    \end{macrocode}
+%    When we are not in compatibility mode we can set some of the
+%    dimensions differently, taking into account the paper size for
+%    instance.
+%    \begin{macrocode}
+\else
+%    \end{macrocode}
+%    First, we calculate the maximum textwidth, which depends on the
+%    papersize. Then we calculate the approximate length of 65
+%    characters, which should be the maximum length of a line of text.
+%    The calculated values are stored in |\@tempdima| and |\@tempdimb|.
+%    \begin{macrocode}
+  \setlength\@tempdima{\paperwidth}
+  \addtolength\@tempdima{-2in}
+  \setbox\@tempboxa\hbox{\rmfamily im}
+  \setlength\@tempdimb{.5\wd\@tempboxa}
+  \setlength\@tempdimb{65\@tempdimb}
+%    \end{macrocode}
+%
+%    Now we can set the |\textwidth|, depending on whether we will be
+%    setting one or two columns.
+%
+%    The text should not be wider than the minimum
+%    of the paperwidth (minus 2 inches for the margins) and the
+%    maximum length of a line as defined by the number of characters.
+%    \begin{macrocode}
+  \ifdim\@tempdima>\@tempdimb\relax
+    \setlength\textwidth{\@tempdimb}
+  \else
+    \setlength\textwidth{\@tempdima}
+  \fi
+\fi
+%    \end{macrocode}
+%
+%    Here we modify the width of the text a little to be a whole
+%    number of points.
+%    \begin{macrocode}
+\@settopoint\textwidth
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\columnwidth}
+% \begin{macro}{\columnsep}
+% \begin{macro}{\columnseprule}
+%    \begin{macrocode}
+\columnwidth \textwidth
+\columnsep 10pt
+\columnseprule \z@
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\textheight}
+%    Now that we have computed the width of the text, we have to take
+%    care of the height. The |\textheight| is the height of text
+%    (including footnotes and figures, excluding running head and
+%    foot).
+%
+%    First make sure that the compatibility mode gets the same
+%    dimensions as we had with \LaTeX2.09. The number of lines was
+%    calculated as the floor of the old |\textheight| minus
+%    |\topskip|, divided by |\baselineskip| for |\normalsize|. The
+%    old value of |\textheight| was 528pt.
+%
+%    \begin{macrocode}
+\if@compatibility
+  \setlength\textheight{600\p@}
+%    \end{macrocode}
+%
+%    Again we compute this, depending on the papersize and depending
+%    on the baselineskip that is used, in order to have a whole number
+%    of lines on the page.
+%    \begin{macrocode}
+\else
+  \setlength\@tempdima{\paperheight}
+%    \end{macrocode}
+%
+%    We leave at least a 1 inch margin on the top and the bottom of
+%    the page.
+%    \begin{macrocode}
+  \addtolength\@tempdima{-2in}
+%    \end{macrocode}
+%
+%    We also have to leave room for the running headers and footers.
+%    \begin{macrocode}
+  \addtolength\@tempdima{-1in}
+%    \end{macrocode}
+%
+%    Then we divide the result by the current |\baselineskip| and
+%    store this in the count register |\@tempcnta|, which then
+%    contains the number of lines that fit on this page.
+%    \begin{macrocode}
+  \divide\@tempdima\baselineskip
+  \@tempcnta=\@tempdima
+%    \end{macrocode}
+%
+%    From this we can calculate the height of the text.
+%    \begin{macrocode}
+  \setlength\textheight{\@tempcnta\baselineskip}
+\fi
+%    \end{macrocode}
+%
+%    The first line on the page has a height of |\topskip|.
+%    \begin{macrocode}
+\advance\textheight by \topskip
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Margins}
+%
+% \begin{macro}{\oddsidemargin}
+% \begin{macro}{\evensidemargin}
+% \begin{macro}{\marginparwidth}
+%    First we give the values for the compatibility mode.
+%
+%    Values for two-sided printing:
+%    \begin{macrocode}
+\if@compatibility
+   \setlength\oddsidemargin  {17\p@}
+   \setlength\evensidemargin {17\p@}
+   \setlength\marginparwidth {20\p@}
+\else
+%    \end{macrocode}
+%
+%    When we are not in compatibility mode we can take the dimensions
+%    of the selected paper into account.
+%
+%    We center the text on the page, by
+%    calculating the difference between |textwidth| and
+%    |\paperwidth|$-$|2in|. Half of that difference is then used for
+%    the margin. The amount of space that can be used for marginal
+%    notes is at least 0.8~inch, to which we add any `leftover' space.
+%    \begin{macrocode}
+  \setlength\@tempdima        {\paperwidth}
+  \addtolength\@tempdima      {-2in}
+  \addtolength\@tempdima      {-\textwidth}
+  \setlength\oddsidemargin    {.5\@tempdima}
+  \setlength\marginparwidth   {.8in}
+  \addtolength\marginparwidth {.5\@tempdima}
+%    \end{macrocode}
+%
+%    The |\evensidemargin| can now be computed from the values set
+%    above.
+%    \begin{macrocode}
+\setlength\evensidemargin  {\paperwidth}
+\addtolength\evensidemargin{-2in}
+\addtolength\evensidemargin{-\textwidth}
+\addtolength\evensidemargin{-\oddsidemargin}
+\fi
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\marginparsep}
+% \begin{macro}{\marginparpush}
+%    The horizontal space between the main text and marginal notes is
+%    determined by |\marginparsep|, the minimum vertical separation
+%    between two marginal notes is controlled by |\marginparpush|.
+%    \begin{macrocode}
+\setlength\marginparsep {5\p@}
+\setlength\marginparpush{5\p@}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\topmargin}
+%    The |\topmargin| is the distance between the top of `the
+%    printable area' --which is 1 inch below the top of the paper--
+%    and the top of the box which contains the running head.
+%
+%    It can now be computed from the values set above.
+%    \begin{macrocode}
+\if@compatibility
+  \setlength\topmargin{-10pt}
+\else
+  \setlength\topmargin{\paperheight}
+  \addtolength\topmargin{-2in}
+  \addtolength\topmargin{-\headheight}
+  \addtolength\topmargin{-\headsep}
+  \addtolength\topmargin{-\textheight}
+  \addtolength\topmargin{-\footskip}     % this might be wrong!
+%    \end{macrocode}
+%    By changing the factor in the next line the complete page
+%    can be shifted vertically.
+%    \begin{macrocode}
+  \addtolength\topmargin{-.5\topmargin}
+\fi
+\@settopoint\topmargin
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Footnotes}
+%
+% \begin{macro}{\footnotesep}
+%    |\footnotesep| is the height of the strut placed at the beginning
+%    of every footnote. It equals the  height of a normal
+%    |\footnotesize| strut in this
+%    class, thus no extra space occurs between footnotes.
+%    \begin{macrocode}
+\setlength\footnotesep{20\p@}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\footins}
+%    |\skip\footins| is the space between the last line of the main
+%    text and the top of the first footnote.
+%    \begin{macrocode}
+\setlength{\skip\footins}{10\p@ \@plus 2\p@ \@minus 4\p@}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Page Styles}
+%
+%    The page style \pstyle{foo} is defined by defining the command
+%    |\ps@foo|.   This command should make only local definitions.
+%    There should be no stray spaces in the definition, since they
+%    could lead to mysterious extra spaces in the output (well, that's
+%    something that should be always avoided).
+%
+% \begin{macro}{\@evenhead}
+% \begin{macro}{\@oddhead}
+% \begin{macro}{\@evenfoot}
+% \begin{macro}{\@oddfoot}
+%    The |\ps@...| command defines the macros |\@oddhead|,
+%    |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
+%    heads and feet---e.g., |\@oddhead| is the macro to produce the
+%    contents of the heading box for odd-numbered pages.  It is called
+%    inside an |\hbox| of width |\textwidth|.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%  The page styles of slides is determined by the 'slide' page style,
+% the slide environment executing a |\thispagestyle{slide}| command.
+% The page styles of overlays and notes are similarly determined by
+% 'overlay' and 'note' page styles.  The command standard 'headings',
+% 'plain' and 'empty' page styles work by redefining the 'slide',
+% 'overlay', and 'note' styles.
+%
+% \changes{v2.3q}{1995/09/20}{Wrap some long lines, and use \cs{null}.}
+% \begin{macro}{\ps@headings}
+%    \begin{macrocode}
+\if@compatibility
+\def\ps@headings{%
+\def\ps@slide{\def\@oddfoot{\@mainsize +\hfil\hb@xt@3em{\theslide
+                                                          \hss}}%
+ \def\@oddhead{\@mainsize +\hfil +}%
+ \def\@evenfoot{\@mainsize +\hfil\hb@xt@3em{\theslide\hss}}%
+ \def\@evenhead{\@mainsize +\hfil +}}
+
+\def\ps@overlay{\def\@oddfoot{\@mainsize +\hfil\hb@xt@3em{\theoverlay
+                                                           \hss}}%
+ \def\@oddhead{\@mainsize +\hfil +}%
+ \def\@evenfoot{\@mainsize +\hfil\hb@xt@3em{\theoverlay\hss}}%
+ \def\@evenhead{\@mainsize +\hfil +}}
+\def\ps@note{\def\@oddfoot{\@mainsize \hbox{}\hfil\thenote}%
+ \def\@oddhead{}%
+ \def\@evenfoot{\@mainsize \hbox{}\hfil\thenote}%
+ \def\@evenhead{}}}
+%
+\else %%if@compatibility
+%
+\def\ps@headings{%
+  \def\ps@slide{%
+    \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
+    \def\@oddhead{}%
+    \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
+    \def\@evenhead{}}
+
+  \def\ps@overlay{%
+    \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
+    \def\@oddhead{}%
+    \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
+    \def\@evenhead{}}
+
+  \def\ps@note{%
+    \def\@oddfoot{%
+      \@mainsize
+      \if@clock
+        \fbox{\large \@arabic\c@minutes\space min}%
+      \else
+        \null
+      \fi
+      \hfil\thenote}%
+    \def\@oddhead{}%
+    \def\@evenfoot{%
+      \@mainsize
+      \if@clock
+        \fbox{\large \@arabic\c@minutes\space min}%
+      \else
+        \null
+      \fi
+      \hfil\thenote}%
+    \def\@evenhead{}}}
+\fi  %% if@compatibility
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@plain}
+%    \begin{macrocode}
+\def\ps@plain{\def\ps@slide{%
+ \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
+ \def\@oddhead{}%
+ \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
+ \def\@evenhead{}}
+\def\ps@overlay{\def\@oddfoot{\@mainsize
+   \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
+ \def\@oddhead{}%
+ \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
+ \def\@evenhead{}}
+\def\ps@note{\def\@oddfoot{\@mainsize \hbox{}\hfil\thenote}%
+ \def\@oddhead{}%
+ \def\@evenfoot{\@mainsize \hbox{}\hfil\thenote}%
+ \def\@evenhead{}}}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ps@empty}
+%    \begin{macrocode}
+\def\ps@empty{%
+\def\ps@slide{\def\@oddhead{}\def\@oddfoot{}%
+\def\@evenhead{}\def\@evenfoot{}}%
+\def\ps@overlay{\def\@oddhead{}\def\@oddfoot{}%
+\def\@evenhead{}\def\@evenfoot{}}%
+\def\ps@note{\def\@oddhead{}\def\@oddfoot{}%
+\def\@evenhead{}\def\@evenfoot{}}}
+%    \end{macrocode}
+% \end{macro}
+%
+% Default definition the 'slide', 'overlay', and 'note' page styles.
+%    \begin{macrocode}
+\ps@headings
+%    \end{macrocode}
+% Set ordinary page style to 'empty'
+%    \begin{macrocode}
+\let\@oddhead\@empty\let\@oddfoot\@empty
+\let\@evenhead\@empty\let\@evenfoot\@empty
+%    \end{macrocode}
+%
+%
+% \subsection{Providing math {\em versions}}
+%
+%  \LaTeX{} provides two {\em versions\/}. We call them
+%  \textsf{normal} and \textsf{bold}, respectively.
+%  \SliTeX{} does not have a \textsf{bold} version. But we treat the
+%  invisible characters as a version. The only thing we have to take
+%  care of is to ensure that we have exactly the same fonts in both
+%  versions available.
+%
+%    \begin{macrocode}
+\DeclareMathVersion{invisible}
+%    \end{macrocode}
+%
+% Now we define the basic {\em math groups\/} used by \LaTeX{}.  Later
+% on, in packages some other {\em math groups}, e.g., the AMS
+% symbol fonts, will be defined.
+%
+%  As a default I used serif fonts for mathgroup 0 to get things like
+% \verb+\log+ look right.
+%    \begin{macrocode}
+\SetSymbolFont{operators}{normal}
+                 {OT1}{lcmss}{m}{n}
+
+\SetSymbolFont{letters}{normal}
+                 {OML}{lcmm}{m}{it}
+\SetSymbolFont{symbols}{normal}
+                 {OMS}{lcmsy}{m}{n}
+\SetSymbolFont{largesymbols}{normal}
+                 {OMX}{lcmex}{m}{n}
+
+\SetSymbolFont{operators}{invisible}
+                 {OT1}{lcmss}{m}{In}
+\SetSymbolFont{letters}{invisible}
+                 {OML}{lcmm}{m}{Iit}
+\SetSymbolFont{symbols}{invisible}
+                 {OMS}{lcmsy}{m}{In}
+\SetSymbolFont{largesymbols}{invisible}
+                  {OMX}{lcmex}{m}{In}
+
+
+\def\@mainsize{\visible\tiny}
+%    \end{macrocode}
+%
+%
+%  \subsection{Environments}
+%
+% \begin{environment}{titlepage}
+%    This environment starts a new page, with pagestyle \pstyle{empty}
+%    and sets the page counter to 0.
+%    \begin{macrocode}
+\newenvironment{titlepage}
+     {\newpage
+      \thispagestyle{empty}%
+      \setcounter{page}{\z@}}
+     {\newpage}
+%    \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{General List Parameters}
+%
+%    The following commands are used to set the default values for the
+%    list environment's parameters. See the \LaTeX{} manual for an
+%    explanation of the meaning of the parameters.
+%
+% \begin{macro}{\leftmargini}
+% \begin{macro}{\leftmarginii}
+% \begin{macro}{\leftmarginiii}
+% \begin{macro}{\leftmarginiv}
+% \begin{macro}{\leftmarginv}
+% \begin{macro}{\leftmarginvi}
+%    \begin{macrocode}
+\setlength\leftmargini   {38\p@}
+\setlength\leftmarginii  {30\p@}
+\setlength\leftmarginiii {20\p@}
+\setlength\leftmarginiv  {15\p@}
+\setlength\leftmarginv   {15\p@}
+\setlength\leftmarginvi  {10\p@}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@listi}
+% \begin{macro}{\@listii}
+% \begin{macro}{\@listiii}
+% \begin{macro}{\@listiv}
+% \begin{macro}{\@listv}
+% \begin{macro}{\@listvi}
+%    These commands set the values of |\leftmargin|, |\parsep|,
+%    |\topsep|, and |\itemsep| for the various levels of lists.
+% \changes{v2.3z}{1997/08/15}{Add initialization of \cs{leftmargin} to
+%    \cs@listi.}
+%    It is even necessary to initialize |\leftmargin| in |\@listi|,
+%    i.e. for a level one list, as a list environment may appear
+%    inside a \texttt{trivlist}, for example inside a \texttt{theorem}
+%    environment.
+%    \begin{macrocode}
+\def\@listi{\leftmargin\leftmargini
+            \parsep .5\parskip
+            \topsep \parsep
+            \itemsep\parskip
+            \partopsep \z@}
+
+\def\@listii{\leftmargin\leftmarginii
+             \labelwidth\leftmarginii
+             \advance\labelwidth-\labelsep
+             \parsep .5\parskip
+             \topsep \parsep
+             \itemsep\parskip}
+\def\@listiii{\leftmargin\leftmarginiii
+              \labelwidth\leftmarginiii
+              \advance\labelwidth-\labelsep}
+\def\@listiv{\leftmargin\leftmarginiv
+             \labelwidth\leftmarginiv
+             \advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+            \labelwidth\leftmarginv
+            \advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+             \labelwidth\leftmarginvi
+             \advance\labelwidth-\labelsep}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%    Here we initialize |\leftmargin| and |\labelwidth|.
+%    \begin{macrocode}
+\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+%    \end{macrocode}
+%
+%
+%    \subsubsection{Paragraph-formatting environments}
+%
+% \begin{environment}{verse}
+%    Inside a |verse| environment, |\\| ends a line, and
+%    line continuations are indented further.
+%    A blank line makes new paragraph with |\parskip| space.
+%    \begin{macrocode}
+\newenvironment{verse}{\let\\=\@centercr
+                       \list{}{\itemsep       \z@
+                               \itemindent    -15\p@
+                               \listparindent \itemindent
+                               \rightmargin   \leftmargin
+                               \advance\leftmargin 15\p@}%
+                       \item[]}
+                      {\endlist}
+%    \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{quotation}
+%    The |quotation| environment fills lines, indents paragraphs.
+%    \begin{macrocode}
+\newenvironment{quotation}{\list{}{\listparindent 20\p@
+                                   \itemindent\listparindent
+                                   \rightmargin\leftmargin}%
+                           \item[]}
+                          {\endlist}
+%    \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{quote}
+%    The |quote| environment is the same as the |quotation| environment,
+%    except that there is no paragraph indentation.
+%    \begin{macrocode}
+\newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item[]}
+                      {\endlist}
+%    \end{macrocode}
+% \end{environment}
+%
+%
+%    \subsubsection{List-making environments}
+%
+%
+% \begin{environment}{description}
+%    The description environment is defined here -- while the itemize
+%    and enumerate environments are defined in \file{latex.dtx}.
+%
+%    \begin{macrocode}
+\newenvironment{description}{\list{}{\labelwidth\z@
+                                     \itemindent-\leftmargin
+                                     \let\makelabel\descriptionlabel}}
+                            {\endlist}
+%    \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\descriptionlabel}
+%  To change the formatting of the label, you must redefine
+%  |\descriptionlabel|.
+%    \begin{macrocode}
+\newcommand*{\descriptionlabel}[1]{\hspace\labelsep
+                                \normalfont\bfseries #1}
+
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Enumerate}
+%
+%    The enumerate environment uses  four counters: \Lcount{enumi},
+%    \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
+%    \Lcount{enumN} controls the numbering of the Nth level
+%    enumeration.
+%
+% \begin{macro}{\theenumi}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiii}
+% \begin{macro}{\theenumiv}
+%    The counters are already defined in \file{latex.dtx}, but their
+%    representation is changed here.
+%
+%    \begin{macrocode}
+\renewcommand\theenumi{\@arabic\c@enumi}
+\renewcommand\theenumii{\@alph\c@enumii}
+\renewcommand\theenumiii{\@roman\c@enumiii}
+\renewcommand\theenumiv{\@Alph\c@enumiv}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\labelenumi}
+% \begin{macro}{\labelenumii}
+% \begin{macro}{\labelenumiii}
+% \begin{macro}{\labelenumiv}
+%    The label for each item is generated by the four commands
+%    |\labelenumi| \ldots\ |\labelenumiv|.
+% \changes{v2.3k}{1994/12/12}{Handle the \cs{label...} commands as in
+%    the other class files}
+%    \begin{macrocode}
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\p@enumii}
+% \begin{macro}{\p@enumiii}
+% \begin{macro}{\p@enumiv}
+%    The expansion of |\p@enumN||\theenumN| defines the output of a
+%    |\ref| command when referencing an item of the Nth level of an
+%    enumerated list.
+%    \begin{macrocode}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Itemize}
+%
+%
+% \begin{macro}{\labelitemi}
+% \begin{macro}{\labelitemii}
+% \changes{v2.3x}{1996/08/25}{replaced -{}- with \cs{textendash}}
+% \begin{macro}{\labelitemiii}
+% \begin{macro}{\labelitemiv}
+%    Itemization is controlled by four commands: |\labelitemi|,
+%    |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which\
+%    define the labels of the various itemization levels.
+%    \begin{macrocode}
+\newcommand\labelitemi{$\m@th\bullet$}
+\newcommand\labelitemii{\normalfont\bfseries \textendash}
+\newcommand\labelitemiii{$\m@th\ast$}
+\newcommand\labelitemiv{$\m@th\cdot$}
+%    \end{macrocode}
+%    \end{macro}
+%    \end{macro}
+%    \end{macro}
+%    \end{macro}
+%
+% \subsection{Setting parameters for existing environments}
+%
+% \subsubsection{Array and tabular}
+%
+% \begin{macro}{\arraycolsep}
+%    The columns in an array environment are separated by
+%    2|\arraycolsep|.% Array and tabular environment parameters
+%    \begin{macrocode}
+\setlength\arraycolsep{8\p@}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tabcolsep}
+%    The columns in an tabular environment are separated by
+%    2|\tabcolsep|.
+%    \begin{macrocode}
+\setlength\tabcolsep{10\p@}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\arrayrulewidth}
+%    The width of rules in the array and tabular environments is given
+%    by  the length parameter|\arrayrulewidth|.
+%    \begin{macrocode}
+\setlength\arrayrulewidth{.6\p@}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\doublerulesep}
+%    The space between adjacent rules in the array and tabular
+%    environments is given by |\doublerulesep|.
+%    \begin{macrocode}
+\setlength\doublerulesep{3\p@}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Tabbing}
+%
+% \begin{macro}{\tabbingsep}
+%    This controls the space that the |\'| command puts in. (See
+%    \LaTeX{} manual for an explanation.)
+%    \begin{macrocode}
+\labelsep 10pt
+\setlength\tabbingsep{\labelsep}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Minipage}
+%
+% \begin{macro}{\@minipagerestore}
+%    The macro |\@minipagerestore| is called upon entry to a minipage
+%    environment to set up things that are to be handled differently
+%    inside a minipage environment. In the current styles, it does
+%    nothing.
+% \end{macro}
+%
+% \begin{macro}{\@mpfootins}
+%    Minipages have their own footnotes; |\skip||\@mpfootins| plays
+%    same r\^ole for footnotes in a minipage as |\skip||\footins| does
+%    for ordinary footnotes.
+%
+%    \begin{macrocode}
+\skip\@mpfootins = \skip\footins
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Framed boxes}
+%
+% \begin{macro}{\fboxsep}
+%    The space left by |\fbox| and |\framebox| between the box and the
+%    text in it.
+% \begin{macro}{\fboxrule}
+%    The width of the rules in the box made by |\fbox| and |\framebox|.
+%    \begin{macrocode}
+\setlength\fboxsep{5\p@}
+\setlength\fboxrule{.6\p@}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\theequation}
+%    The equation number will be typeset as arabic numerals.
+%    \begin{macrocode}
+\def\theequation{\@arabic\c@equation}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\jot}
+%    |\jot| is the extra space added between lines of an eqnarray
+%    environment. The default value is used.
+%    \begin{macrocode}
+% \setlength\jot{3pt}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@eqnnum}
+%    The macro |\@eqnnum| defines how equation numbers are to appear in
+%    equations. Again the default is used.
+%
+%    \begin{macrocode}
+% \def\@eqnnum{(\theequation)}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Font changing}
+%
+% \changes{v2.3j}{1994/11/10}{fixed a few typos}
+%
+%    Here we supply the declarative font changing commands that were
+%    common in \LaTeX\ version 2.09 and earlier. These commands work
+%    in text mode \emph{and} in math mode. They are provided for
+%    compatibility, but one should start using the |\text...| and
+%    |\math...| commands instead. These commands are redefined using
+%    |\DeclareOldFontCommand|, a command with three arguments: the
+%    user command to be defined, \LaTeX\ commands to execute in text
+%    mode and \LaTeX\ commands to execute in math mode.
+%
+%  \begin{macro}{\rm}
+%  \begin{macro}{\tt}
+%  \begin{macro}{\sf}
+% \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
+%    \cs{@renewfontswitch}.}
+% \changes{v2.3a}{1994/04/14}{\cs{@renewfontswitch} has become
+%    \cs{DeclareOldFontCommand}}
+%
+%    The commands to change the family. When in compatibility mode we
+%    select the `default' font first, to get \LaTeX2.09 behaviour.
+%    \begin{macrocode}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+%    \end{macrocode}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+%
+%  \begin{macro}{\bf}
+%    The command to change to the bold series. One should use
+%    |\mdseries| to explicitly switch back to medium series.
+% \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
+%    \cs{@renewfontswitch}.}
+%    \begin{macrocode}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+%    \end{macrocode}
+%  \end{macro}
+%
+%  \begin{macro}{\sl}
+%  \begin{macro}{\it}
+%  \begin{macro}{\sc}
+% \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
+%    \cs{@renewfontswitch}.}
+%    And the commands to change the shape of the font. The slanted and
+%    small caps shapes are not available by default as math alphabets,
+%    so those changes do nothing in math mode. One should use
+%    |\upshape| to explicitly change back to the upright shape.
+%    \begin{macrocode}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
+%    \end{macrocode}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+%
+% \begin{macro}{\cal}
+% \changes{v2.1d}{1993/12/14}{Macro added}
+% \begin{macro}{\mit}
+% \changes{v2.1d}{1993/12/14}{Macro added}
+%
+%    The commands |\cal| and |\mit| should only be used in math mode,
+%    outside math mode they have no effect. Currently the New Font
+%    Selection Scheme defines these commands to generate warning
+%    messages. Therefore we have to define them `by hand'.
+% \changes{v2.3k}{1994/12/12}{Now define \cs{cal} and \cs{mit} using
+%    \cs{DeclareRobustCommand*}}
+%    \begin{macrocode}
+\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
+\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
+%    \end{macrocode}
+%  \end{macro}
+%  \end{macro}
+%
+% \subsection{Footnotes}
+%
+%
+% \begin{macro}{\footnoterule}
+%    Usually, footnotes are separated from the main body of the text
+%    by a small rule. This rule is drawn by the macro |\footnoterule|.
+%    We have to make sure that the rule takes no vertical space (see
+%    \file{plain.tex}).  The resulting rule will appear on all color
+%    layers, so it's best not to draw a rule.
+%    \begin{macrocode}
+\renewcommand\footnoterule{}
+% \let \footnoterule = \relax
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c@footnote}
+% \begin{macro}{\thefootnote}
+%    Footnotes are numbered within slides, overlays, and notes and
+%    numbered with $\ast$, $\dagger$, etc.
+%    \begin{macrocode}
+% \newcounter{footnote}
+\def\thefootnote{\fnsymbol{footnote}}
+\@addtoreset{footnote}{slide}
+\@addtoreset{footnote}{overlay}
+\@addtoreset{footnote}{note}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\@makefntext}
+% \changes{v2.2i}{1994/03/08}{Always call \cs{@makefnmark}.}
+%    The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
+%    to produce the actual footnote. The macro gets the text of the
+%    footnote as its argument and should use |\@makefnmark| to produce
+%    the mark of the footnote. The macro |\@makefntext| is called when
+%    effectively inside a |\parbox| of width |\columnwidth| (i.e.,
+%    with |\hsize| = |\columnwidth|).
+%
+%   An example of what can be achieved is given by the following piece
+%   of \TeX\ code.
+% \begin{verbatim}
+%          \long\def\@makefntext#1{%
+%             \@setpar{\@@par
+%                      \@tempdima = \hsize
+%                      \advance\@tempdima-10pt
+%                      \parshape \@ne 10pt \@tempdima}%
+%             \par
+%             \parindent 1em\noindent
+%             \hbox to \z@{\hss\@makefnmark}#1}
+% \end{verbatim}
+%    The effect of this definition is that all lines of the footnote
+%    are indented by 10pt, while the first line of a new paragraph is
+%    indented by 1em. To change these dimensions, just substitute the
+%    desired value for `10pt' (in both places) or `1em'.  The mark is
+%    flushright against the footnote.
+%
+%    In these document classes we use a simpler macro, in which the
+%    footnote text is set like an ordinary text paragraph, with no
+%    indentation except on the first line of a paragraph, and the
+%    first line of the footnote. Thus, all the macro must do is set
+%    |\parindent| to the appropriate value for succeeding paragraphs
+%    and put the proper indentation before the mark.
+%
+%    \begin{macrocode}
+\long\def\@makefntext#1{
+    \noindent
+    \hangindent 10\p@
+    \hb@xt@10\p@{\hss\@makefnmark}#1}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makefnmark}
+%    The footnote markers that are printed in the text to point to the
+%    footnotes should be produced by the macro |\@makefnmark|. We use
+%    the default definition for it.
+%    \begin{macrocode}
+%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{The title}
+%     The commands |\title|, |\author|, and |\date| are already
+%     defined, so here we just define |\maketitle|.
+%
+% \changes{v2.3s}{1995/10/10}{Move \cs{par} inside the scope of
+%               \cs{Large}, to get even line spacing.}
+%    \begin{macrocode}
+\newcommand\maketitle{{\centering {\Large \@title \par}%
+     \@author \par \@date\par}%
+     \if@titlepage \break \fi}
+%    \end{macrocode}
+
+% \section{Initialisation}
+%
+% \subsection{Date}
+%
+% \begin{macro}{\today}
+%    This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
+%    to provide the date of the \LaTeX-run.
+%    \begin{macrocode}
+\newcommand\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}
+%    \end{macrocode}
+% \end{macro}
+%
+%
+% Default initializations
+%
+%    \begin{macrocode}
+\pagenumbering{arabic}
+\onecolumn
+%</class>
+%    \end{macrocode}
+%
+% \subsection{Basic code}
+%
+% The code below is basically a copy of |slitex.tex| with some
+% changes.
+%
+% Global changes so far:
+%
+% \changes{FMi}{1990/06/01}{\cs{gdef}\cs{@slidesw} ... replaced by a
+%    \cs{newifG} which is similar to \cs{newif} but uses \cs{global}
+%    inside.}
+%
+%
+% \subsubsection{Hacks for slide macros}
+%
+%    \begin{macrocode}
+%<*cmd>
+\message{hacks,}
+
+\outer\def\newifG#1{\count@\escapechar \escapechar\m@ne
+  \expandafter\expandafter\expandafter
+   \edef\@ifG#1{true}{\global\let\noexpand#1\noexpand\iftrue}%
+  \expandafter\expandafter\expandafter
+   \edef\@ifG#1{false}{\global\let\noexpand#1\noexpand\iffalse}%
+  \@ifG#1{false}\escapechar\count@} % the condition starts out false
+\def\@ifG#1#2{\csname\expandafter\ifG@\string#1#2\endcsname}
+{\uccode`1=`i \uccode`2=`f \uccode`3=`G \uppercase{\gdef\ifG@123{G}}}
+ % `ifG' is required
+
+\def\@gobbletoend#1{\def\@argend{#1}\@ggobtoend}
+
+\long\def\@ggobtoend#1\end#2{\fi\def\reserved@a{#2}%
+\ifx\reserved@a\@argend\else\@ggobtoend\fi}
+%    \end{macrocode}
+% FMi: I don't see any reason for this command since |\fi| is hidden
+%      anyway in the replacement text
+% |\def\@xfi{\fi}|
+%    \begin{macrocode}
+ \message{slides,}
+%    \end{macrocode}
+%
+% \subsubsection{Slide macros}
+%
+%
+% Switches:\\
+% \begin{tabular}{ll}
+%   |@bw|           & true if making black and white slides \\
+%   |@visible|      & true if visible output to be produced.\\
+%   |@makingslides| & true if making a slide/overlay/note
+% \end{tabular}
+%
+%    \begin{macrocode}
+\newif\if@bw
+\newif\if@visible
+\newif\if@onlyslidesw \@onlyslideswfalse
+\newif\if@onlynotesw  \@onlynoteswfalse
+\newif\if@makingslides
+%    \end{macrocode}
+% FMi: |\newifG| replaces |\gdef\@slidesw{T}| stuff
+%    \begin{macrocode}
+\newifG\ifG@slidesw
+%    \end{macrocode}
+% Counters\\
+% \begin{tabular}{ll}
+%  slide   & slide number\\
+%  overlay & overlay number for a slide\\
+%  note    & note number for a slide
+% \end{tabular}
+%
+%    \begin{macrocode}
+\countdef\c@slide=0 \c@slide=0
+\def\cl@slide{}
+\countdef\c@overlay=1 \c@overlay=0
+\def\cl@overlay{}
+\countdef\c@note=2 \c@note=0
+\def\cl@note{}
+%    \end{macrocode}
+%  Add these counters explicitly to the `ckpt list' so that the
+%  |\include| mechanism works.
+% \changes{v2.3u}{1996/05/09}{Make include work: pr/2140(CAR)}
+% \changes{v2.3y}{1997/05/09}{Make include work properly: add the
+% counters in case some are already in there: pr/2140+2474(CAR)}
+% \changes{v2.3v}{1996/05/11}{Do not add page counter here as it is
+%   added below(CAR)}
+%    \begin{macrocode}
+\g@addto@macro\cl@@ckpt{\@elt{slide}\@elt{overlay}\@elt{note}}
+\@addtoreset{overlay}{slide}
+\@addtoreset{note}{slide}
+%    \end{macrocode}
+% Redefine page counter to some other number.
+% The page counter will always be zero except when putting out an
+% extra page for a slide, note or overlay.
+%    \begin{macrocode}
+\@definecounter{page}
+\@addtoreset{page}{slide}
+\@addtoreset{page}{note}
+\@addtoreset{page}{overlay}
+
+\def\theslide{\@arabic\c@slide}
+\def\theoverlay{\theslide-\@alph\c@overlay}
+\def\thenote{\theslide-\@arabic\c@note}
+%    \end{macrocode}
+% \begin{verbatim}
+% \@setlimits \LIST \LOW \HIGH
+%
+%    Assumes that \LIST = RANGE1,RANGE2,...,RANGEn  (n>0)
+%    Where RANGEi = j or j-k.
+%
+%    Then \@setlimits  globally sets
+%        (i) \LIST := RANGE2, ... , RANGEn
+%       (ii) \LOW  := p
+%      (iii) \HIGH := q
+%   where either RANGE1 = p-q   or  RANGE1 = p  and  q=p.
+%\end{verbatim}
+%    \begin{macrocode}
+\def\@sl@getargs#1-#2-#3\relax#4#5{\xdef#4{#1}\xdef#5{#2}}
+\def\@sl@ccdr#1,#2\relax#3#4{\xdef#3{#1-#1-}\xdef#4{#2}}
+
+\def\@setlimits #1#2#3{\expandafter\@sl@ccdr#1\relax\@sl@gtmp #1%
+\expandafter\@sl@getargs\@sl@gtmp\relax#2#3}
+%    \end{macrocode}
+% \begin{verbatim}
+% \onlyslides{LIST} ::=
+%  BEGIN
+%    @onlyslidesw := true
+%    \@doglslidelist :=G LIST,999999,999999
+%   if @onlynotesw = true
+%     else @onlynotesw := true
+%          \@doglnotelist :=G LIST,999999,999999
+%   fi
+%   message: Only Slides LIST
+%  END
+%\end{verbatim}
+%    \begin{macrocode}
+\def\onlyslides#1{\@onlyslideswtrue
+   \gdef\@doglslidelist{#1,999999,999999}%
+   \if@onlynotesw \else
+      \@onlynoteswtrue\gdef\@doglnotelist{999999,999999}\fi
+   \typeout{Only Slides #1}}
+%    \end{macrocode}
+%\begin{verbatim}
+% \onlynotes{LIST} ::=
+%  BEGIN
+%    @onlynotesw := true
+%    \@doglnotelist :=G LIST,999999,999999
+%   if @onlyslidesw = true
+%     else \@onlyslidesw := true
+%          \@doglslidelist{999999,999999}
+%   fi
+%   message: Only Notes LIST
+%  END
+%\end{verbatim}
+%    \begin{macrocode}
+\def\onlynotes#1{\@onlynoteswtrue
+   \gdef\@doglnotelist{#1,999999,999999}%
+   \if@onlyslidesw \else
+      \@onlyslideswtrue\gdef\@doglslidelist{999999,999999}\fi
+   \typeout{Only Notes #1}}
+%    \end{macrocode}
+%\begin{verbatim}
+% \setupcounters ::=    (similar to old \blackandwhite #1  ::= )
+%    \newpage
+%    page counter := 0
+%    @bw := T
+%    @visible := T
+%    if @onlyslidesw = true
+%      then  \@doslidelist := \@doglslidelist
+%            \@setlimits\@doslidelist\@doslidelow\@doslidehigh
+%    fi
+%    if @onlynotesw = true
+%      then  \@donotelist := \@doglnotelist
+%            \@setlimits\@donotelist\@donotelow\@donotehigh
+%    fi
+%    \normalsize    % Note, this sets font to \rmfamily , which sets
+%                     % \@currfont to \rmfamily
+%    counter slidenumber := 0
+%    counter note        := 0
+%    counter overlay     := 0
+%    @makingslides       := F  %% \blackandwhite: @makingslides  := T
+%                              %%                 input #1
+%                              %%                 @makingslides  := F
+%\end{verbatim}
+%    \begin{macrocode}
+\if@compatibility
+% In compatibility mode, need to define \verb+\blackandwhite+,
+% \verb+\colors+, \verb+\colorslides+, etc.
+\def\blackandwhite#1{\newpage\setcounter{page}{0}\@bwtrue\@visibletrue
+\if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
+\@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
+\if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
+\@setlimits\@donotelist\@donotelow\@donotehigh\fi
+\normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
+\setcounter{note}{0}\@makingslidestrue\input #1\@makingslidesfalse}
+%    \end{macrocode}
+%\begin{verbatim}
+% \colors{COLORS} ::=
+%  for \@colortemp := COLORS
+%     do \csname \@colortemp \endcsname == \@color{\@colortemp} od
+%  if \@colorlist = empty
+%     then \@colorlist := COLORS
+%     else \@colorlist := \@colorlist , COLORS
+%  fi
+%\end{verbatim}
+%
+%    \begin{macrocode}
+\def\colors#1{\@for\@colortemp:=#1\do{\expandafter
+  \xdef\csname\@colortemp\endcsname{\noexpand\@color{\@colortemp}}}\ifx
+  \@colorlist\@empty \gdef\@colorlist{#1}%
+    \else \xdef\@colorlist{\@colorlist,#1}\fi}
+
+\def\@colorlist{}
+%    \end{macrocode}
+%\begin{verbatim}
+% \colorslides{FILE} ::=
+%    \newpage
+%    page counter := 0
+%    @bw := F
+%    for \@currcolor := \@colorlist
+%      do  @visible := T
+%          if @onlyslidesw = true
+%            then  \@doslidelist := \@doglslidelist
+%                  \@setlimits\@doslidelist\@doslidelow\@doslidehigh
+%          fi
+%          if @onlynotesw = true
+%            then  \@donotelist := \@doglnotelist
+%                  \@setlimits\@donotelist\@donotelow\@donotehigh
+%          fi
+%          \normalsize
+%          counter slide := 0
+%          counter overlay := 0
+%          counter note    := 0
+%          type message
+%          generate color layer output page
+%          @makingslides := T
+%          input #1
+%          @makingslides := F
+%      od
+%\end{verbatim}
+%    \begin{macrocode}
+\def\colorslides#1{\newpage\setcounter{page}{0}\@bwfalse
+\@for\@currcolor:=\@colorlist\do
+{\@visibletrue
+\if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
+\@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
+\if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
+\@setlimits\@donotelist\@donotelow\@donotehigh\fi
+\normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
+\setcounter{note}{0}\typeout{color \@currcolor}%
+\newpage
+\begin{huge}%
+\begin{center}%
+COLOR LAYER\\[.75in]%
+\@currcolor
+\end{center}%
+\end{huge}%
+\newpage
+\@makingslidestrue
+\input #1
+\@makingslidesfalse}}
+%
+\else  %% if@compatibility
+%
+\def\setupcounters{\newpage\setcounter{page}{0}\@bwtrue\@visibletrue
+\if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
+\@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
+\if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
+\@setlimits\@donotelist\@donotelow\@donotehigh\fi
+\normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
+\setcounter{note}{0}\@makingslidesfalse}
+
+\AtBeginDocument{\setupcounters}
+\fi %% if@compatibility
+%    \end{macrocode}
+%\begin{verbatim}
+% \slide COLORS ::=
+%  BEGIN
+% \changes{v2.3}{1994/03/16}{Moved \cs{newpage} up front, here and in
+%    \cs{note} and \cs{overlay}}
+%   \par\break
+%   \stepcounter{slide}
+%   \setcounter{page}{0}                    % in case of non-slide pages
+%   \@slidesw :=G T
+%   if @onlyslidesw = true                  % set \@slidesw = T iff
+%     then                                  % page to be output
+%       while \c@slide > \@doslidehigh
+%          do  \@setlimits\@doslidelist\@doslidelow\@doslidehigh  od
+%       if \c@slide < \@doslidelow
+%         then \@slidesw := F
+%       fi
+%   fi
+%   if \@slidesw = T
+%      then \@slidesw :=G F
+%           \begingroup
+%              if @bw = true
+%                then  \@slidesw :=G T
+%                else \@color{COLORS}
+%                     \if@visible then \@slidesw :=G T \fi
+%              fi
+%            \endgroup
+%  fi
+%  if \@slidesw = T
+%    then @makingslides  := T
+%         \thispagestyle{slide}
+%    else \end{slide}
+%          \@gobbletoend{slide}
+%  fi
+% END
+%
+% \endslide ::=
+%  BEGIN
+%    \par\break
+%  END
+%\end{verbatim}
+%    \begin{macrocode}
+\if@compatibility
+\def\slide#1{\stepcounter{slide}\G@slideswtrue\if@onlyslidesw
+\@whilenum \c@slide >\@doslidehigh\relax
+\do{\@setlimits\@doslidelist\@doslidelow\@doslidehigh}\ifnum
+\c@slide <\@doslidelow\relax\G@slideswfalse\fi\fi
+\ifG@slidesw
+  \G@slideswfalse
+% FMi this is only a hack at the moment to get things running.
+%  \begingroup
+  \if@bw\G@slideswtrue\else
+    \@color{#1}\if@visible \G@slideswtrue \fi
+  \fi
+%  \endgroup
+\fi
+\ifG@slidesw \newpage\thispagestyle{slide}%
+%    \end{macrocode}
+%    This will set up the last color specified in the argument to
+%    \verb+\slide+ as the current color. If only back and white  slides
+%    are prepared \verb+\last@color+ will be empty and effectively
+%    \verb+\relax+ will be generated (hopefully).
+%
+%    We need to reset to a default font at the beginning of a slide.
+%    (not done yet).
+%    \begin{macrocode}
+\csname \last@color \endcsname
+%    \end{macrocode}
+%    \begin{macrocode}
+\else\end{slide}\@gobbletoend{slide}\fi}
+%
+\else  %% if@compatibility
+%
+\def\slide{\par\break
+\stepcounter{slide}\setcounter{page}{0}\G@slideswtrue\if@onlyslidesw
+\@whilenum \c@slide >\@doslidehigh\relax
+\do{\@setlimits\@doslidelist\@doslidelow\@doslidehigh}\ifnum
+\c@slide <\@doslidelow\relax\G@slideswfalse\fi\fi
+\ifG@slidesw
+  \G@slideswfalse
+% FMi this is only a hack at the moment to get things running.
+%  \begingroup
+  \if@bw\G@slideswtrue\else
+    \if@visible \G@slideswtrue \fi
+  \fi
+%  \endgroup
+\fi
+\ifG@slidesw \@makingslidestrue\thispagestyle{slide}%
+%    \end{macrocode}
+%    This will set up the last color specified in the argument to
+%    \verb+\slide+ as the current color. If only back and white  slides
+%    are prepared \verb+\last@color+ will be empty and effectively
+%    \verb+\relax+ will be generated (hopefully).
+%
+%    We need to reset to a default font at the beginning of a slide.
+%    (not done yet).
+%    \begin{macrocode}
+\csname \last@color \endcsname
+%    \end{macrocode}
+%    \begin{macrocode}
+\else\end{slide}\@gobbletoend{slide}\fi}
+\fi %% if@compatibility
+
+\let\last@color\@empty
+
+\def\endslide{\par\break}
+%    \end{macrocode}
+%\begin{verbatim}
+% \overlay COLORS ::=
+%  BEGIN
+%   \par\break
+%   \stepcounter{overlay}
+%   \setcounter{page}{0}                    % in case of non-slide pages
+%   \@slidesw :=G T
+%   if @onlyslidesw = T                     % set \@slidesw = T iff
+%     then                                  % page to be output
+%       if \c@slide < \@doslidelow
+%         then \@slidesw :=G F
+%       fi
+%  fi
+%  if \@slidesw = T
+%    \@slidesw :=G F
+%    \begingroup
+%      if @bw = true
+%          then  \@slidesw :=G T
+%          else  \@color{COLORS}
+%                \if@visible then \@slidesw :=G T \fi
+%      fi
+%    \endgroup
+%  fi
+%  if \@slidesw = T
+%     then @makingslides  := T
+%          \thispagestyle{overlay}
+%     else \end{overlay}
+%          \@gobbletoend{overlay}
+%  fi
+% END
+%
+% \endoverlay ::=
+%  BEGIN
+%    \par\break
+%  END
+%\end{verbatim}
+%    \begin{macrocode}
+\if@compatibility
+\def\overlay#1{\stepcounter{overlay}\G@slideswtrue%
+\if@onlyslidesw\ifnum \c@slide <\@doslidelow\relax
+\G@slideswfalse\fi\fi
+\ifG@slidesw \G@slideswfalse\begingroup\if@bw\G@slideswtrue%
+\else\@color{#1}\if@visible \G@slideswtrue\fi\fi\endgroup\fi
+\ifG@slidesw \newpage\thispagestyle{overlay}%
+\else\end{overlay}\@gobbletoend{overlay}\fi}
+%
+\else %%if@compatibility
+%
+\def\overlay{\par\break
+  \stepcounter{overlay}%
+  \setcounter{page}{0}%
+  \G@slideswtrue%
+  \if@onlyslidesw\ifnum \c@slide <\@doslidelow\relax
+    \G@slideswfalse\fi\fi
+  \ifG@slidesw \G@slideswfalse
+    \begingroup\if@bw\G@slideswtrue%
+               \else\if@visible \G@slideswtrue\fi\fi
+    \endgroup\fi
+  \ifG@slidesw \@makingslidestrue\thispagestyle{overlay}%
+  \else\end{overlay}\@gobbletoend{overlay}\fi}
+\fi %%if@compatibility
+
+\def\endoverlay{\par\break}
+%    \end{macrocode}
+%
+% \changes{v2.0d}{1993/11/12}{Removed extra blank.}
+%\begin{verbatim}
+% \note ::=
+%  BEGIN
+%   \par\break
+%   \stepcounter{note}
+%   \setcounter{page}{0}                    % in case of non-slide pages
+%   if @bw = T
+%     then
+%       \@slidesw :=G T
+%       if @onlynotesw = true                  % set \@notesw = T iff
+%         then                                 % page to be output
+%           while \c@slide > \@donotehigh
+%              do  \@setlimits\@donotelist\@donotelow\@donotehigh  od
+%           if \c@slide < \@donotelow
+%             then \@slidesw :=G F
+%           fi
+%       fi
+%     else \@slidesw :=G F
+%  fi
+%  if \@slidesw = T
+%     then @makingslides   := T
+%          \thispagestyle{note}
+%     else \end{note}
+%          \@gobbletoend{note}
+%  fi
+% END
+%
+% \endnote ::=
+%  BEGIN
+%    \par\break
+%  END
+%\end{verbatim}
+%    \begin{macrocode}
+\if@compatibility
+\def\note{\stepcounter{note}%
+   \if@bw
+      \G@slideswtrue
+      \if@onlynotesw\@whilenum \c@slide >\@donotehigh\relax
+      \do{\@setlimits\@donotelist\@donotelow\@donotehigh}\ifnum
+        \c@slide <\@donotelow\relax \G@slideswfalse\fi\fi
+      \else\G@slideswfalse\fi
+      \ifG@slidesw \newpage\thispagestyle{note}\else
+      \end{note}\@gobbletoend{note}\fi}
+%
+\else %%if@compatibility
+%
+\def\note{\par\break\stepcounter{note}\setcounter{page}{0}%
+   \if@bw
+      \G@slideswtrue
+      \if@onlynotesw\@whilenum \c@slide >\@donotehigh\relax
+      \do{\@setlimits\@donotelist\@donotelow\@donotehigh}\ifnum
+        \c@slide <\@donotelow\relax \G@slideswfalse\fi\fi
+      \else\G@slideswfalse\fi
+      \ifG@slidesw \@makingslidestrue\thispagestyle{note}\else
+      \end{note}\@gobbletoend{note}\fi}
+\fi %%if@compatibility
+
+\def\endnote{\par\break}
+%    \end{macrocode}
+%\begin{verbatim}
+% \@color{COLORS} ::=
+%  BEGIN
+%   if math mode
+%     then type warning
+%   fi
+%   if @bw
+%     then \visible
+%     else \invisible
+%         for \last@color := COLORS
+%          do if \last@color = \@currcolor
+%               then \visible
+%             fi
+%          od
+%   fi
+%   \ignorespaces
+% END
+%\end{verbatim}
+% FMi: |\last@color| will be used in |\slide| to set up first
+%      color if no color is given.
+% I suppose that this is much too complicated. |\else\@tempswafalse|
+% would produce the same effect I imagine.
+%    \begin{macrocode}
+\def\@color#1{\@mmodetest
+ {\if@bw \@tempswatrue \else \@tempswafalse
+   \@for \reserved@a :=#1\do{\ifx\reserved@a\@currcolor\@tempswatrue\fi
+                         \let\last@color\reserved@a}\fi
+  \if@tempswa \visible \else \invisible \fi
+  \ignorespaces}}
+
+\def\@mmodetest#1{\ifmmode\ClassWarning{slides}{Color-changing command
+       in math mode has been ignored}\else #1\fi}
+
+\def\invisible{\@mmodetest
+  {\if@visible
+     \@visiblefalse
+     \fontshape\f@shape\selectfont
+     \mathversion{invisible}%
+   \fi
+   \ignorespaces}}
+
+\def\visible{\@mmodetest
+  {\if@visible
+   \else
+     \@visibletrue
+%    \end{macrocode}
+%    Here is the \LaTeXe{} interface hidden. We use a trick to provide
+%    ourselves with a sort of additional attribute without making the
+%    current mechanism even larger. The trick is that we denote
+%    invisible by putting an uppercase |I| in front of the shape name
+%    for invisible shapes and remove it again if we want to become
+%    visible.
+%    \begin{macrocode}
+     \fontshape{\expandafter\@gobble\f@shape}\selectfont
+     \mathversion{normal}%
+   \fi
+   \ignorespaces}}
+
+\def\fontshape#1{\edef\f@shape{\if@visible \else I\fi #1}}
+%    \end{macrocode}
+%
+% \subsection{Macros for font handling}
+%
+%    We let |\familydefault| point at |\sfdefault|, to make it easier
+%    to use the document class slides with packages that set up other
+%    fonts.
+%    \begin{macrocode}
+\renewcommand{\familydefault}{\sfdefault}
+%    \end{macrocode}
+%
+%  \changes{v2.3l}{1994/12/16}{Added the declaration of the lasy font
+%    family}
+%    The \texttt{latexsym} package, which is needed to be able to access
+%    the \LaTeX\ symbol fonts (lasy), sets things up so that for sizes
+%    larger then 10 point magnifications of \texttt{lasy10} are
+%    used. For slides we want to use magnifications of \texttt{lasy8},
+%    so we set up the lasy family here to prevent \LaTeX\ from loading
+%    \texttt{Ulasy.fd}.
+%    \begin{macrocode}
+\DeclareFontFamily{U}{lasy}{}{}
+\DeclareFontShape{U}{lasy}{m}{n}{%
+      <12><13.82><16.59><19.907><23.89><28.66><34.4><41.28>lasy8
+}{}
+\DeclareFontShape{U}{lasy}{m}{In}{%
+      <13.82><16.59><19.907><23.89><28.66><34.4><41.28>ilasy8
+}{}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\message{picture,}
+%    \end{macrocode}
+%
+%  \subsubsection{Modifications to the picture environment}
+%
+%  Below are the new definitions of the picture-drawing macros
+%  required for SLiTeX.  Only those commands that actually
+%  draw something must be changed so that they do not produce
+%  any output when the |@visible| switch is false.
+%
+% \changes{v2.2j}{1994/03/11}{Corrected \cs{@oval}, like previous
+% \changes{v2.4a}{2016/03/29}{initialise in \cs{@oval}tests added for latex/4452}
+%    change to \file{latex.dtx}.}
+%    \begin{macrocode}
+\def\line(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax
+\@linelen #3\unitlength
+\ifnum\@xarg =\z@ \@vline
+  \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
+\fi\fi}
+
+\def\vector(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax
+\@linelen #3\unitlength
+\ifnum\@xarg =\z@ \@vvector
+  \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
+\fi\fi}
+
+\def\dashbox#1(#2,#3){%
+\leavevmode\if@visible\hb@xt@\z@{\baselineskip \z@
+\lineskip \z@
+\@dashdim #2\unitlength
+\@dashcnt \@dashdim \advance\@dashcnt 200
+\@dashdim #1\unitlength\divide\@dashcnt \@dashdim
+\ifodd\@dashcnt\@dashdim\z@
+\advance\@dashcnt \@ne \divide\@dashcnt \tw@
+\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
+\advance\@dashcnt \m@ne
+\setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
+\@width \@dashdim}\put(0,0){\copy\@dashbox}%
+\put(0,#3){\copy\@dashbox}%
+\put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
+\put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
+\multiply\@dashdim \thr@@
+\fi
+\setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
+\@width #1\unitlength\hskip #1\unitlength}\@tempcnta\z@
+\put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
+\do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
+\put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
+\do{\copy\@dashbox\advance\@tempcnta \@ne }}%
+\@dashdim #3\unitlength
+\@dashcnt=\@dashdim \advance\@dashcnt 200
+\@dashdim #1\unitlength\divide\@dashcnt \@dashdim
+\ifodd\@dashcnt \@dashdim=\z@
+\advance\@dashcnt \@ne \divide\@dashcnt \tw@
+\else
+\divide\@dashdim \tw@ \divide\@dashcnt \tw@
+\advance\@dashcnt \m@ne
+\setbox\@dashbox\hbox{\hskip -\@halfwidth
+\vrule \@width \@wholewidth
+\@height \@dashdim}\put(0,0){\copy\@dashbox}%
+\put(#2,0){\copy\@dashbox}%
+\put(0,#3){\lower\@dashdim\copy\@dashbox}%
+\put(#2,#3){\lower\@dashdim\copy\@dashbox}%
+\multiply\@dashdim \thr@@
+\fi
+\setbox\@dashbox\hbox{\vrule \@width \@wholewidth
+\@height #1\unitlength}\@tempcnta\z@
+\put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
+\do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
+\vskip\@dashdim}}\@tempcnta\z@
+\put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
+\relax\do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
+\vskip\@dashdim}}}\fi\@makepicbox(#2,#3)}
+%    \end{macrocode}
+% (re)declare these booleans as they not defined in old format
+% (or with latexrelease package)
+%    \begin{macrocode}
+\newif\if@ovvline \@ovvlinetrue 
+\newif\if@ovhline \@ovhlinetrue
+%    \end{macrocode}
+%    \begin{macrocode}
+\def\@oval(#1,#2)[#3]{\if@visible\begingroup \boxmaxdepth \maxdimen
+  \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
+%    \end{macrocode}
+%    \begin{macrocode}
+  \@ovvlinefalse \@ovhlinefalse
+%    \end{macrocode}
+%    \begin{macrocode}
+  \@tfor\reserved@a :=#3\do
+     {\csname @ov\reserved@a false\endcsname}%
+  \@ovxx#1\unitlength \@ovyy #2\unitlength
+%    \end{macrocode}
+%    \begin{macrocode}
+  \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx \@ovvlinetrue
+  \else \@ovyy \ifdim \@ovyy =\@ovxx \else \@ovhlinetrue \fi\fi
+%    \end{macrocode}
+%    \begin{macrocode}
+  \advance \@tempdimb -2\p@
+  \@getcirc \@tempdimb
+  \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
+  \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
+  \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
+%    \end{macrocode}
+%    \begin{macrocode}
+  \ifdim \@ovdx >\z@ \@ovhlinetrue \fi
+  \ifdim \@ovdy >\z@ \@ovvlinetrue \fi
+%    \end{macrocode}
+%    \begin{macrocode}
+  \@circlefnt \setbox\@tempboxa
+  \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
+  \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
+  \if@ovt \@ovhorz \kern -\@ovxx \fi
+  \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
+  \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
+  \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
+  \endgroup\fi}
+
+\def\@circle#1{\if@visible \begingroup \boxmaxdepth \maxdimen
+   \@tempdimb #1\unitlength
+   \ifdim \@tempdimb >15.5\p@\relax \@getcirc\@tempdimb
+      \@ovro\ht\@tempboxa
+     \setbox\@tempboxa\hbox{\@circlefnt
+      \advance\@tempcnta\tw@ \char \@tempcnta
+      \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima
+      \advance\@tempcnta\tw@
+      \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima
+        \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
+      \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
+   \else  \@circ\@tempdimb{96}\fi\endgroup\fi}
+
+%    \end{macrocode}
+%
+% \changes{v2.0d}{1993/11/12}{Removed extra blank.}
+%    \begin{macrocode}
+\def\@dot#1{%
+  \if@visible\@tempdimb #1\unitlength \@circ\@tempdimb{112}\fi}
+%    \end{macrocode}
+% \changes {v2.3m}{1994/03/20}{(DPC) Remove old \cs{@iframebox} and
+%    \cs{fbox} defn}
+% \changes {v2.3m}{1994/03/20}{(DPC) Add \cs{@frameb@x} defn.}
+%    \begin{macrocode}
+\def\@frameb@x#1{%
+  \@tempdima\fboxrule
+  \advance\@tempdima\fboxsep
+  \advance\@tempdima\dp\@tempboxa
+  \leavevmode
+  \hbox{%
+    \lower\@tempdima\hbox{%
+      \vbox{%
+        \if@visible\hrule\@height\else\vskip\fi\fboxrule
+        \hbox{%
+          \if@visible\vrule\@width\else\hskip\fi\fboxrule
+          #1%
+          \vbox{%
+            \vskip\fboxsep
+            \box\@tempboxa
+            \vskip\fboxsep}%
+          #1%
+          \if@visible\vrule\@width\else\hskip\fi\fboxrule}%
+        \if@visible\hrule\@height\else\vskip\fi\fboxrule}}}}
+
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\long\def\frame#1{\if@visible\leavevmode
+\vbox{\vskip-\@halfwidth\hrule \@height\@halfwidth \@depth \@halfwidth
+  \vskip-\@halfwidth\hbox{\hskip-\@halfwidth \vrule \@width\@wholewidth
+  \hskip-\@halfwidth #1\hskip-\@halfwidth \vrule \@width \@wholewidth
+  \hskip -\@halfwidth}\vskip -\@halfwidth\hrule \@height \@halfwidth
+  \@depth \@halfwidth\vskip -\@halfwidth}\else #1\fi}
+%    \end{macrocode}
+%
+% \changes{v2.0d}{1993/11/12}{Corrected \cs{@math} to \cs{m@th} in
+%    definition of \cs{underline}.}
+%
+%    \begin{macrocode}
+\message{mods,}
+%    \end{macrocode}
+%
+%
+%  \subsubsection{Other modifications to \TeX{} and \LaTeX{} commands}
+%
+% |\rule|
+%    \begin{macrocode}
+\def\@rule[#1]#2#3{\@tempdima#3\advance\@tempdima #1\leavevmode
+ \hbox{\if@visible\vrule
+  \@width#2 \@height\@tempdima \@depth-#1\else
+\vrule \@width \z@ \@height\@tempdima \@depth-#1\vrule
+ \@width#2 \@height\z@\fi}}
+
+% \_  (Added 10 Nov 86)
+
+\def\_{\leavevmode \kern.06em \if@visible\vbox{\hrule \@width.3em}\else
+   \vbox{\hrule \@height \z@ \@width.3em}\vbox{\hrule \@width \z@}\fi}
+%    \end{macrocode}
+%\begin{verbatim}
+% \overline, \underline, \frac and \sqrt
+%
+% \@mathbox{STYLE}{BOX}{MTEXT} : Called in math mode, typesets MTEXT and
+%   stores result in BOX, using style STYLE.
+%
+% \@bphant{BOX}    : Creates a phantom with dimensions BOX.
+% \@vbphant{BOX}   : Creates a phantom with ht of BOX and zero width.
+% \@hbphant{BOX}   : Creates a phantom with width of BOX
+%                    and zero ht & dp.
+% \@hvsmash{STYLE}{MTEXT} : Creates a copy of MTEXT with zero height and
+%                           width in style STYLE.
+%\end{verbatim}
+%    \begin{macrocode}
+\def\@mathbox#1#2#3{\setbox#2\hbox{$\m@th#1{#3}$}}
+
+\def\@vbphantom#1{\setbox\tw@\null \ht\tw@\ht #1\dp\tw@\dp #1%
+   \box\tw@}
+
+\def\@bphantom#1{\setbox\tw@\null
+   \wd\tw@\wd #1\ht\tw@\ht #1\dp\tw@\dp #1%
+   \box\tw@}
+
+\def\@hbphantom#1{\setbox\tw@\null \wd\tw@\wd #1\ht\tw@\z@ \dp\tw@\z@
+   \box\tw@}
+
+\def\@hvsmash#1#2{\@mathbox#1\z@{#2}\ht\z@\z@ \dp\z@\z@ \wd\z@\z@
+   \box\z@}
+
+\def\underline#1{\relax\ifmmode
+  \@xunderline{#1}\else $\m@th\@xunderline{\hbox{#1}}$\relax\fi}
+
+\def\@xunderline#1{\mathchoice{\@xyunderline\displaystyle{#1}}%
+   {\@xyunderline
+    \textstyle{#1}}{\@xyunderline\scriptstyle{#1}}{\@xyunderline
+      \scriptscriptstyle{#1}}}
+
+\def\@xyunderline#1#2{%
+   \@mathbox#1\@smashboxa{#2}\@hvsmash#1{\copy\@smashboxa}%
+   \if@visible \@hvsmash#1{\@@underline{\@bphantom\@smashboxa}}\fi
+  \@mathbox#1\@smashboxb{\@@underline{\box\@smashboxa}}%
+   \@bphantom\@smashboxb}
+
+\let\@@overline=\overline
+
+\def\overline#1{\mathchoice{\@xoverline\displaystyle{#1}}{\@xoverline
+    \textstyle{#1}}{\@xoverline\scriptstyle{#1}}{\@xoverline
+      \scriptscriptstyle{#1}}}
+
+\def\@xoverline#1#2{%
+   \@mathbox#1\@smashboxa{#2}\@hvsmash#1{\copy\@smashboxa}%
+   \if@visible \@hvsmash#1{\@@overline{\@bphantom\@smashboxa}}\fi
+   \@mathbox#1\@smashboxb{\@@overline{\box\@smashboxa}}%
+   \@bphantom\@smashboxb}
+%    \end{macrocode}
+%
+% \changes{v2.0b}{1993/04/14}{Corrected \cs{frac} command.}
+% \changes{v2.0d}{1993/11/12}{Removed \cs{vcenter} in \cs{@frac}.}
+%
+%\begin{verbatim}
+% \@frac {STYLE}{DENOMSTYLE}{NUM}{DEN}{FONTSIZE} :
+%   Creates \frac{NUM}{DENOM}
+%   in style STYLE with NUM and DENOM in style DENOMSTYLE
+%   FONTSIZE should be \textfont \scriptfont or \scriptscriptfont
+%\end{verbatim}
+%    Added a group around the first argument of |\frac| to prevent
+%    changes (for example font changes) to modify the contents of the
+%    second argument.
+% \changes{v2.1c}{1993/12/13}{Added group around first arg.}
+%    \begin{macrocode}
+\def\frac#1#2{\mathchoice
+   {\@frac\displaystyle\textstyle{#1}{#2}\textfont}{\@frac
+         \textstyle\scriptstyle{#1}{#2}\textfont}{\@frac
+         \scriptstyle\scriptscriptstyle{#1}{#2}\scriptfont}{\@frac
+         \scriptscriptstyle\scriptscriptstyle{#1}{#2}\scriptscriptfont}}
+
+\def\@frac#1#2#3#4#5{%
+   \@mathbox#1\@smashboxc{{\begingroup#3\endgroup\over#4}}%
+   \setbox\tw@\null
+   \ht\tw@ \ht\@smashboxc
+   \dp\tw@ \dp\@smashboxc
+   \wd\tw@ \wd\@smashboxc
+   \box\if@visible\@smashboxc\else\tw@\fi}
+
+\def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\@xysqrt#1{#2}$}%
+  \dimen@\ht\z@ \advance\dimen@-\dp\z@
+  \mskip5mu\raise.6\dimen@\copy\rootbox \mskip-10mu\box\z@}
+%    \end{macrocode}
+% \changes{v2.3w}{1996/05/15}{Removed use of obsolete command
+%                             \cs{@@sqrt} (CAR)}
+%    \begin{macrocode}
+\def\sqrt{\@ifnextchar[{\@sqrt}{\@xsqrt}}
+\def\@sqrt[#1]{\root #1\of}
+\def\@xsqrt#1{\mathchoice{\@xysqrt\displaystyle{#1}}{\@xysqrt
+     \textstyle{#1}}{\@xysqrt\scriptstyle{#1}}{\@xysqrt
+    \scriptscriptstyle{#1}}}
+\def\@xysqrt#1#2{\@mathbox#1\@smashboxa{#2}\if@visible
+    \@hvsmash#1{\sqrtsign{\@bphantom\@smashboxa}}\fi
+    \phantom{\sqrtsign{\@vbphantom\@smashboxa}}\box\@smashboxa}
+
+\newbox\@smashboxa
+\newbox\@smashboxb
+\newbox\@smashboxc
+%    \end{macrocode}
+%
+% array and tabular environments: changes to `\verb+|+', |\hline|,
+% |\cline|, and |\vline|,
+% added 8 Jun 88
+%    \begin{macrocode}
+\def\@arrayrule{\if@visible\@addtopreamble{\hskip -.5\arrayrulewidth
+   \vrule \@width \arrayrulewidth\hskip -.5\arrayrulewidth}\fi}
+%    \end{macrocode}
+%
+% \changes{v2.3t}{1996/01/31}{Change in \cs{cline} calling interface}
+%    \begin{macrocode}
+\def\cline#1{\if@visible\@cline#1\@nil\fi}
+
+\def\hline{\noalign{\ifnum0=`}\fi
+    \if@visible \hrule \@height \arrayrulewidth
+      \else \hrule \@width \z@
+    \fi
+    \futurelet \reserved@a\@xhline}
+
+\def\vline{\if@visible \vrule \@width \arrayrulewidth
+            \else \vrule \@width \arrayrulewidth \@height \z@
+           \@depth \z@ \fi}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\message{output,}
+%    \end{macrocode}
+%
+% \subsubsection{Changes to \LaTeX{} output routine}
+%
+%\begin{verbatim}
+%  \@makecol ==
+%    BEGIN
+% % Following test added for slides to check if extra page
+%     if @makingslides = T
+%     then if \c@page > 0
+%             then if \c@note > 0
+%                     then type 'Note \thenote too long.'
+%                     else if \c@overlay > 0
+%                            then type 'Overlay \theoverlay too long.'
+%                            else type 'Slide \theslide too long'
+%     fi     fi     fi     fi
+%     ifvoid \insert\footins
+%        then  \@outputbox := \box255
+%        else  \@outputbox := \vbox {\unvbox255
+%                                    \vskip \skip\footins
+%                                    \footnoterule
+%                                    \unvbox\@footinsert
+%                                   }
+%    fi
+%    \@freelist :=G \@freelist * \@midlist
+%    \@midlist  :=G empty
+%    \@combinefloats
+%    \@outputbox := \vbox to \@colht{\boxmaxdepth := \maxdepth
+%                                     \vfil     %%\vfil added for slides
+%                                     \unvbox\@outputbox
+%                                     \vfil }   %%\vfil added for slides
+%    \maxdepth :=G \@maxdepth
+%    END
+%\end{verbatim}
+% FMi simple hack to allow none centered slides Should be revised
+% of course.
+%    \begin{macrocode}
+\let\@topfil\vfil
+
+\def\@makecol{\if@makingslides\ifnum\c@page>\z@ \@extraslide\fi\fi
+\ifvoid\footins \setbox\@outputbox\box\@cclv \let\@botfil\vfil
+   \else\let\@botfil\relax\setbox\@outputbox
+     \vbox{\unvbox\@cclv\vfil
+           \vskip\skip\footins\footnoterule\unvbox\footins\vskip
+            \z@ plus.1fil\relax}\fi
+  \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
+     \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth
+        \@topfil\unvbox\@outputbox\@botfil}\global\maxdepth\@maxdepth}
+
+\def\@extraslide{\ifnum\c@note>\z@
+    \ClassWarning{slides}{Note \thenote\space too long}\else
+     \ifnum\c@overlay>\z@
+        \ClassWarning{slides}{Overlay \theoverlay\space too long}\else
+        \ClassWarning{slides}{Slide \theslide\space too long}\fi\fi}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\message{init}
+%    \end{macrocode}
+%
+%
+% \subsubsection{Special \SLiTeX{} initializations}
+%
+%FMi why not allow for ref's ?
+%    \begin{macrocode}
+%   \nofiles
+
+\@visibletrue
+%</cmd>
+%    \end{macrocode}
+%
+%
+% \Finale
+%
+\endinput
-- 
cgit v1.2.3

