updated
[latex2e.git] / base / slides.dtx
blobeebaf0a2117ab05605fc194f1a4ecb506dffd7ee
1 % \iffalse meta-comment
3 % Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
4 % The LaTeX3 Project and any individual authors listed elsewhere
5 % in this file. 
6
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
9
10 % It may be distributed and/or modified under the
11 % conditions of the LaTeX Project Public License, either version 1.3c
12 % of this license or (at your option) any later version.
13 % The latest version of this license is in
14 %    http://www.latex-project.org/lppl.txt
15 % and version 1.3c or later is part of all distributions of LaTeX 
16 % version 2005/12/01 or later.
17
18 % This file has the LPPL maintenance status "maintained".
19
20 % The list of all files belonging to the LaTeX base distribution is
21 % given in the file `manifest.txt'. See also `legal.txt' for additional
22 % information.
23
24 % The list of derived (unpacked) files belonging to the distribution 
25 % and covered by LPPL is defined by the unpacking scripts (with 
26 % extension .ins) which are part of the distribution.
27
28 % \fi
29 % \CheckSum{2704}
30 %% \CharacterTable
31 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
32 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
33 %%   Digits        \0\1\2\3\4\5\6\7\8\9
34 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
35 %%   Dollar        \$     Percent       \%     Ampersand     \&
36 %%   Acute accent  \'     Left paren    \(     Right paren   \)
37 %%   Asterisk      \*     Plus          \+     Comma         \,
38 %%   Minus         \-     Point         \.     Solidus       \/
39 %%   Colon         \:     Semicolon     \;     Less than     \<
40 %%   Equals        \=     Greater than  \>     Question mark \?
41 %%   Commercial at \@     Left bracket  \[     Backslash     \\
42 %%   Right bracket \]     Circumflex    \^     Underscore    \_
43 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
44 %%   Right brace   \}     Tilde         \~}
46 % \iffalse
47 % Copyright (C) 1994-97 LaTeX3 project, Frank Mittelbach
48 % and Rainer Sch\"opf, all rights reserved.
50 %    \begin{macrocode}
51 %<+class>\NeedsTeXFormat{LaTeX2e}[1997/06/01]
52 %    \end{macrocode}
54 %    Announce the Class name and its version:
55 % \changes{v2.3b}{1994/05/01}{Removed the use of \cs{fileversion}
56 %    c.s.}
57 % \changes{v2.3b}{1994/05/01}{Added \cs{ProvidesFile} to slides.def.}
58 % \changes{v2.3o}{1995/05/17}{Replaced all \cs{hbox to} with
59 %    \cs{hb@xt@}.}
60 % \changes{v2.3o}{1995/05/17}{Cleaned up the \cs{changes} entries.}
61 % \changes{v2.3p}{1995/05/23}{Corrected some brace mismatches.}
62 % \changes{v2.3q}{1995/09/20}{Replaced \cs{@tempa} by \cs{reserved@a}.}
63 % \changes{v2.3r}{1995/09/27}{Globally replaced scale factor 19.91 by
64 %          19.907 in \cs{DeclareFontShape}, as this gives better
65 %          rounded font sizes at 600dpi (suggested by Denis Roegel).}
66 %    \begin{macrocode}
67 %<+class>\ProvidesClass{slides}
68 %<+cmd>\ProvidesFile{slides.def}
69 %<*driver>
70        \ProvidesFile{slides.drv}
71 %</driver>
72               [1997/08/15 v2.3z
73 %<+class>               Standard LaTeX document class]
74 %<+cmd>               SLiTeX definitions]
75 %    \end{macrocode}
77 % \section{A driver for this document}
79 % \changes{v2.3f}{1994/05/26}{Moved the driver to the front of the
80 %    file; it doesn't print any longer}
82 % The next bit of code contains the documentation driver file for
83 % \TeX{}, i.e., the file that will produce the documentation you are
84 % currently reading. It can be extracted from this file by the
85 % \dst{} program.
86 %    \begin{macrocode}
87 %<*driver>
89 \documentclass{ltxdoc}
90 %    \end{macrocode}
91 %    The following command retrieves the date and version information
92 %    from the file.
93 %    \begin{macrocode}
94 \GetFileInfo{slides.drv}
95 %    \end{macrocode}
96 %    Some commonly used abbreviations:
97 % \changes{v2.3h}{1994/06/01}{Added definition of \cs{SLiTeX}.}
98 %    \begin{macrocode}
99 \DeclareRobustCommand{\SLiTeX}{{%
100    \normalfont S\kern -.06em
101    {\scshape l\kern -.035emi}\kern -.06em
102    \TeX
104 \newcommand*{\Lopt}[1]{\textsf {#1}}
105 \newcommand*{\file}[1]{\texttt {#1}}
106 \newcommand*{\Lcount}[1]{\textsl {\small#1}}
107 \newcommand*{\pstyle}[1]{\textsl {#1}}
108 \newcommand*{\dst}{{\normalfont\scshape docstrip}}
110 %    \end{macrocode}
111 %    Now start the document and input this file.
112 % \changes{v2.3d}{1994/05/12}{Added a missing \cs{begin\{macrocode\}}}
113 %    \begin{macrocode}
114 \begin{document}
115    \DocInput{slides.dtx}
116 \end{document}
117 %</driver>
118 %    \end{macrocode}
119 %\fi
122 % \changes{v2.1b}{1993/12/13}{Removed \cs{CodelineIndex} from the
123 %    driver code.}
124 % \changes{v2.1e}{1993/12/16}{Removed again different definitions for
125 %    font commands font commands in non-compatibility mode.}
127 % \changes{v2.2}{1993/12/18}{Changes to make it work with
128 %    compatibility mode.}
129 % \changes{v2.2a}{1993/12/19}{Removed float parms}
130 % \changes{v2.2d}{1994/01/31}{Removed \cs{@normalsize definition}}
131 % \changes{v2.2g}{1994/03/01}{Removed option makeidx.}
132 % \changes{v2.2g}{1994/03/01}{Moved driver up front.}
133 % \changes{v2.2g}{1994/03/01}{Renamed files \file{slides.ltx} and
134 %    \file{sfontdef.ltx} to \file{slides.def} and \file{sfonts.def}.}
135 % \changes{v2.2l}{1994/03/16}{Removed \cs{typeouts}}
136 % \changes{v2.3}{1994/03/16}{Removed root/slide-file structure except
137 %    for compatibility mode. (LL)}
138 % \changes{v2.3}{1994/03/16}{Added clock option (LL)}
139 % \changes{v2.3}{1994/03/16}{Modified slide, overlay, note
140 %    environments. (LL)}
141 % \changes{v2.3}{1994/03/16}{Added titlepage option and
142 %    \cs{maketitle}. (LL)}
143 % \changes{v2.3c}{1994/05/06}{Changed documentation to use
144 %    `environment' instead of `macro' environment for environments}
145 % \changes{v2.3f}{1994/05/26}{Wrapped two long lines}
146 % \changes{v2.3l}{1994/12/16}{Use \cs{newcommand*} to define commands
147 %    with an argument}
148 % \changes{v2.3n}{1995/04/02}{a slight documentation fix (PR 1517)}
150 % \title{Producing slides with \LaTeXe{}}
151 % \author{Frank Mittelbach}
152 % \date{\filedate}
154 % \maketitle
156 % \section{Introduction}
158 % With \LaTeXe{} it is now no longer necessary to maintain a special
159 % format for producing overhead slides. Instead the standard format
160 % may be used and internally only different font definition files come
161 % into play.
163 % \section{Usage}
165 % For producing slides you have to use |slides| as the
166 % document class. This class is very similar to the |slides| style
167 % that came with \SliTeX{}, in fact it is basically a copy changed to
168 % work under \LaTeXe{}.\footnote{Therefore you should compare the
169 % new class with old \SliTeX{} styles
170 % in case you have local slide classes to see what you have to change
171 % in order to use them with \LaTeXe{}.} Thus you have to say something
172 % like
173 % \begin{verbatim}
174 %   \documentclass[...]{slides}
175 % \end{verbatim}
176 % and process this with \LaTeXe.
178 % \section{Fonts}
180 % Note, that that with NFSS you can easily produce slides with special
181 % fonts just by calling an appropriate style file (like |times|) in a
182 % |\usepackage| command. This works, for example, with all
183 % fonts that are defined to be scaleable (e.g., PostScript fonts) since
184 % they can be used at any size by NFSS.
186 % However, packages like |pandora| won't work because the standard
187 % |.fd| files shipped with NFSS only contain small sizes. You can, of
188 % course, produce additional sizes and change the |.fd| files
189 % accordingly so that they would be useable for slides as well.
191 % \section{Invisible text and color separation}
193 % In the original \SliTeX{} it was possible to produce invisible text
194 % using the |\invisible| command, so that one was able to put several
195 % slides on top of each other (with each slides showing additional
196 % details, etc.). It was also possible to produce `color' slides. This
197 % was done by producing individual slides one for each color and
198 % placing them on top of each other.
200 % The availability of color printers and the |color| package make 
201 % color separation obsolete, so it has been removed.  Although the 
202 % |color| has also made |\invisible| obsolete, the command is 
203 % retained in the \LaTeXe{} implementation, but there
204 % are a few restrictions. Invisible fonts are implemented as special
205 % shapes where the shape names are build by prefixing the normal shape
206 % name with an uppercase |I|. For example, the `normal invisible
207 % shape' would be |In|. When \LaTeX{} is requested to typeset
208 % invisible it will thus change the current shape attribute in this
209 % manner. To make this work it is necessary that the resulting font
210 % shape group is defined. If not, the normal font substitution
211 % mechanism of \LaTeXe{} will change the attribute until it finds a
212 % usable font shape group with the result that the text may become 
213 % visible.
215 % As long as you use the standard fonts for slides this is not a
216 % problem because all the visible font shape groups have invisible
217 % counterparts. However, if you decide on using special fonts, e.g.,
218 % PostScript fonts, your |\DeclareFontShape| settings may not contain
219 % invisible font shape groups and thus you may be unable to use these
220 % features without adding additional |\DeclareFontShape| commands to
221 % your |.fd| files or the preamble of your document.
223 % \StopEventually{}
226 % \section{The Implementation}
228 % \begin{quote}
229 % \textbf{Warning:} The implementation is still very experimental and
230 % may change internally very much. It currently basically consists of a
231 % slightly modified copy of |slides.sty| (which then forms
232 % |slides.cls|) followed by a slightly changed copy of |slitex.tex|.
233 % Documentation is practically
234 % non-existing.  Everybody is invited to help changing this!
235 % \end{quote}
237 % The code is divided into two parts, we first implement the class
238 % related functions and declarations and then define lowlevel stuff
239 % that is necessary within every class. By placing such commands into
240 % a separate file it will be possible to share it with other slide
241 % classes.
243 % \subsection{The class code}
245 % At this point we input the redefinitions that are necessary for
246 % \SLiTeX.
247 % \changes{v2.3g}{1994/05/26}{Use \cs{input} instead of \cs{@@input}}
248 %    \begin{macrocode}
249 %<*class>
250 \input{slides.def}
251 %    \end{macrocode}
254 % Now we are ready for setting up the font tables. As usual, we first
255 % look for a local configuration file |sfonts.cfg|. If there isn't
256 % one, we fall back to the default one (|sfonts.def|).
257 % \changes{v2.2i}{1994/03/08}{Corrected first argument of
258 %    \cs{IfFileExists}: \file{sfonts.def} to \file{sfonts.cfg}.}
259 % \changes{v2.3g}{1994/05/26}{Use \cs{InputIfFileExists} instead of
260 %    \cs{IfFileExists} and \cs{input} instead of \cs{@@input}}
261 %    \begin{macrocode}
262 \InputIfFileExists{sfonts.cfg}
263            {\typeout{**************************************^^J%
264                      *^^J%
265                      * Local config file sfonts.cfg used^^J%
266                      *^^J%
267                      **************************************}}%
268            {\input{sfonts.def}}
269 %    \end{macrocode}
271 % \section{Declaration of Options}
273 % We declare a few options as illegal.
276 % \subsection{Setting Paper Sizes}
278 %    The variables |\paperwidth| and |\paperheight| should reflect the
279 %    physical paper size after trimming. For desk printer output this
280 %    is usually the real paper size since there is no post-processing.
281 %    Classes for real book production will probably add other paper
282 %    sizes and additionally the production of crop marks for trimming.
283 % \changes{v2.1d}{1993/12/14}{Corrected typo, A4 is not 279 mm high}
284 %    \begin{macrocode}
285 \DeclareOption{a4paper}
286    {\setlength\paperheight {297mm}%
287     \setlength\paperwidth  {210mm}}
288 \DeclareOption{a5paper}
289    {\setlength\paperheight {210mm}%
290     \setlength\paperwidth  {148mm}}
291 \DeclareOption{b5paper}
292    {\setlength\paperheight {250mm}%
293     \setlength\paperwidth  {176mm}}
294 \DeclareOption{letterpaper}
295    {\setlength\paperheight {11in}%
296     \setlength\paperwidth  {8.5in}}
297 \DeclareOption{legalpaper}
298    {\setlength\paperheight {14in}%
299     \setlength\paperwidth  {8.5in}}
300 \DeclareOption{executivepaper}
301    {\setlength\paperheight {10.5in}%
302     \setlength\paperwidth  {7.25in}}
303 %    \end{macrocode}
305 %    The option \Lopt{landscape} switches the values of |\paperheight|
306 %    and |\paperwidth|, assuming the dimensions wer given for portrait
307 %    paper.
308 %    \begin{macrocode}
309 \DeclareOption{landscape}
310    {\setlength\@tempdima   {\paperheight}%
311     \setlength\paperheight {\paperwidth}%
312     \setlength\paperwidth  {\@tempdima}}
313 %    \end{macrocode}
315 %  \subsection{The clock option}
317 % The option \Lopt{clock} prints the time at the bottom of each note.
318 % We also define here the commands and counters used to keep track of
319 % time.
320 %    \begin{macrocode}
321 \newif\if@clock \@clockfalse
322 \DeclareOption{clock}{\@clocktrue
323   \AtEndDocument{\typeout{\@arabic\c@minutes\space minutes}}
325 \newcounter{minutes}%
326 \newcounter{seconds}%
327 \newcommand*{\settime}[1]{\setcounter{seconds}{0}\addtime{#1}}%
328 \newcommand*{\addtime}[1]{\addtocounter{seconds}{#1}%
329   \setcounter{minutes}{\value{seconds}}%
330   \global \divide \value{minutes} by 60\relax}
332 %    \end{macrocode}
334 %  \subsection{Two-side or one-side printing}
336 % Two-sided printing is not allowed, so don't declare an option.
337 % But it is necessary to initialize the switch.
338 % \changes{v2.2h}{1994/03/07}{Removed declared option twoside.}
339 %    \begin{macrocode}
340 \@twosidefalse
341 %    \end{macrocode}
344 %  \subsection{Draft option}
346 %    If the user requests \Lopt{draft} we show any overfull boxes.
347 %    We could probably add some more interesting stuff to this option.
348 %    \begin{macrocode}
349 \DeclareOption{draft}{\setlength\overfullrule{5pt}}
350 \DeclareOption{final}{\setlength\overfullrule{0pt}}
351 %    \end{macrocode}
353 %  \subsection{Titlepage option}
354 %    The default is for a |\maketitle| command to make a new page.
355 %    \begin{macrocode}
356 \newif\if@titlepage
357 \@titlepagetrue
358 \DeclareOption{titlepage}{\@titlepagetrue}
359 \DeclareOption{notitlepage}{\@titlepagefalse}
360 %    \end{macrocode}
362 %  \subsection{Twocolumn printing}
364 %    Two-column printing is again forbidden.
365 % \changes{v2.3e}{1994/05/22}{twocolumn produces only a warning}
366 %    \begin{macrocode}
367 \DeclareOption{onecolumn}{}
368 \DeclareOption{twocolumn}{%
369     \ClassWarning{slides}{No 'twocolumn' layout for slides}}
370 %    \end{macrocode}
372 %  \subsection{Equation numbering on the left}
374 %    The option \Lopt{leqno} can be used to get the equation numbers
375 %    on the left side of the equation.
376 % \changes{v2.2g}{1994/03/01}{Option leqno loads \file{leqno.clo}
377 %    file.}
378 %    \begin{macrocode}
379 \DeclareOption{leqno}{\input{leqno.clo}}
380 %    \end{macrocode}
382 %  \subsection{Flush left displays}
384 %    The option \Lopt{fleqn} redefines the displayed math environmens
385 %    in such a way that they come out flush left, with an indentation
386 %    of |\mathindent| from the prevailing left margin.
387 % \changes{v2.2g}{1994/03/01}{Added fleqn option.}
388 %    \begin{macrocode}
389 \DeclareOption{fleqn}{\input{fleqn.clo}}
390 %    \end{macrocode}
393 % \section{Executing Options}
395 %    Here we execute the default options to initialize certain
396 %    variables.
397 %    \begin{macrocode}
398 \ExecuteOptions{letterpaper,final}
399 %    \end{macrocode}
401 %    The |\ProcessOptions| command causes the execution of the code
402 %    for every option \Lopt{FOO}
403 %    which is declared and for which the user typed
404 %    the \Lopt{FOO} option in his
405 %    |\documentclass| command.  For every option \Lopt{BAR} he typed,
406 %    which is not declared, the option is assumed to be a global option.
407 %    All options will be passed as document options to any
408 %    |\usepackage| command in the document preamble.
409 %    \begin{macrocode}
410 \ProcessOptions
411 %    \end{macrocode}
413 %  \section{Loading Packages}
415 %  The standard class files do not load additional packages.
418 % \section{Document Layout}
421 %  In this section we are finally dealing with the nasty typographical
422 %  details.
426 % \subsection{Fonts}
428 %    \begin{macrocode}
429 % FMi:
430 \def\rmdefault{lcmss}        % no roman
431 \def\sfdefault{lcmss}
432 \def\ttdefault{lcmtt}
433 \def\itdefault{sl}
434 \def\sldefault{sl}
435 \def\bfdefault{bx}
436 %    \end{macrocode}
439 %  Since the number of parameters to set are very large it seems
440 %    reasonable to set up one command |\@setfontsize@parms| which will
441 %    do the work for us.
443 %    \LaTeX\ offers the user commands to change the size of the font,
444 %    relative to the `main' size. Each relative size changing command
445 %    |\size| executes the command
446 %    |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
448 %    \begin{description}
449 %    \item[\meta{font-size}] The absolute size of the font to use from
450 %        now on.
452 %    \item[\meta{baselineskip}] The normal value of |\baselineskip|
453 %        for the size of the font selected. (The actual value will be
454 %        |\baselinestretch| * \meta{baselineskip}.)
455 %    \end{description}
457 %    A number of commands, defined in the \LaTeX{} kernel, shorten the
458 %    following  definitions and are used throughout. They are:
459 % \begin{center}
460 % \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
461 %  \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
462 %  \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
463 %  \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
464 %  ...
465 %  \end{tabular}
466 %  \end{center}
468 % \begin{macro}{\ifourteenpt}
469 % \begin{macro}{\iseventeenpt}
470 % \begin{macro}{\itwentypt}
471 % \begin{macro}{\itwentyfourpt}
472 % \begin{macro}{\itwentyninept}
473 % \begin{macro}{\ithirtyfourpt}
474 % \begin{macro}{\ifortyonept}
475 %    For \SLiTeX{}, however, these are not sufficient, and we therefore
476 %    need to add a few extra, larger, sizes.
477 %    \begin{macrocode}
478 \def\ifourteenpt{13.82}
479 \def\iseventeenpt{16.59}
480 \def\itwentypt{19.907}
481 \def\itwentyfourpt{23.89}
482 \def\itwentyninept{28.66}
483 \def\ithirtyfourpt{34.4}
484 \def\ifortyonept{41.28}
485 %    \end{macrocode}
486 % \end{macro}
487 % \end{macro}
488 % \end{macro}
489 % \end{macro}
490 % \end{macro}
491 % \end{macro}
492 % \end{macro}
494 % \begin{macro}{\@setfontsize@parms}
495 %    This routine is used in \SliTeX{} to interface font size setting
496 %    it is modeled after the settings I found in \texttt{slides.sty}, so
497 %    it probably needs an update. But any class is free to redefine
498 %    it, as it is used only as an abbreviation.
499 %    It's syntax is:
500 % \begin{quote}
501 %     |\@setfontsize@parms| \\
502 %     |   |\meta{lineskip} \\
503 %     |   |\meta{parskip} \\
504 %     |   |\meta{abovedisplayskip}  \\
505 %     |   |\meta{belowdisplayskip}  \\
506 %     |   |\meta{abovedisplayshortskip} \\
507 %     |   |\meta{belowdisplayshortskip} \\
508 %     |   |\meta{strut ht} \meta{strut dp}   (without pt)
509 % \end{quote}
511 % For NFSS1 a similar style existed which did run both with a
512 % \SliTeX{} with old font selection or with NFSS1. But when no
513 % separate format is made this doesn't make much sense.
514 % So the following note is history and would only be true if all NFSS
515 % stuff would be removed from the file and placed into the format.
516 % \begin{quote}\small
517 % Note: To interface the old \texttt{sfonts.tex} the \meta{size} must be
518 %    hidden in commands denoting the size by its name prefixed with
519 %    `i', i.e.\ 20pt size is called |\itwentypt| at this point. The
520 %    NFSS interface will define those sizes to expand to the internal
521 %    size, e.g.\ 20 but for the old sfonts the command name, e.g.
522 %    |\itwentypt|, will be used to construct the name |\twentypt| etc.
524 %    This is a crude interface to the old \texttt{sfonts.tex}. It will
525 %    be a bit slower than the old one because it must define |\@tiny|
526 %    etc.\ every time a size changes.
527 % \end{quote}
529 % If classes are set up that are only for use with NFSS then the second
530 % argument may be an ordinary font size!
531 % \changes{v2.0d}{1993/11/12}{Replaced all pt by \cs{p@}, corrected
532 %    definition for \cs{tiny}.}
534 %    \begin{macrocode}
535 \def\@setfontsize@parms#1#2#3#4#5#6#7#8{%
536    \lineskip #1\relax%
537    \parskip #2\relax
538    \abovedisplayskip #3\relax
539    \belowdisplayskip #4\relax
540    \abovedisplayshortskip #5\relax
541    \belowdisplayshortskip #6\relax
543 %    \end{macrocode}
544 %    I don't see a reason why the |\strutbox| has a dim different from
545 %    |\baselineskip| but we will leave it for the moment
546 %    \begin{macrocode}
547   \setbox\strutbox=\hbox{\vrule \@height#7\p@\@depth#8\p@\@width\z@}%
548   \baselineskip\baselinestretch\baselineskip
549   \normalbaselineskip\baselineskip}
550 %    \end{macrocode}
551 %  \end{macro}
553 %    Setting size relations for math scripts:
554 % \changes{v2.2e}{1994/02/07}{Corrected entry for size 23.89.}
555 %    \begin{macrocode}
556 \DeclareMathSizes{13.82}{13.82}{10}{7}
557 \DeclareMathSizes{16.59}{16.59}{12}{7}
558 \DeclareMathSizes{19.907}{19.907}{16.59}{13.82}
559 \DeclareMathSizes{23.89}{23.89}{19.907}{16.59}
560 \DeclareMathSizes{28.66}{28.66}{23.89}{19.907}
561 \DeclareMathSizes{34.4}{34.4}{28.66}{23.89}
562 \DeclareMathSizes{41.28}{41.28}{34.4}{28.66}
563 %    \end{macrocode}
565 % \begin{macro}{\normalsize}
566 %    \begin{macrocode}
567 \def\normalsize{%
568       \@setfontsize\normalsize\itwentypt{28\p@ plus3\p@ minus4\p@}%
569 %            {20}{30\p@ plus3\p@ minus3\p@}%  made a bit shorter
570       \@setfontsize@parms
571             {2pt}%
572             {30\p@ plus18\p@ minus9\p@}%
573             {15\p@ plus3\p@ minus3\p@}%
574             {10\p@ plus3\p@ minus3\p@}%
575             {10\p@ plus3\p@}
576             \abovedisplayshortskip
577             {17}{7}}
578 %    \end{macrocode}
579 % \end{macro}
582 %    We initially choose the normalsize font.
583 %    \begin{macrocode}
584 \normalsize
585 %    \end{macrocode}
587 % \begin{macro}{\small}
588 %    \begin{macrocode}
589 \def\small{\@setfontsize\small\iseventeenpt{19\p@ plus3\p@ minus\p@}%
590            \@setfontsize@parms
591             {2\p@}%
592             {15\p@ plus15\p@ minus7\p@}%
593             {12\p@ plus3\p@ minus3\p@}%
594             {9\p@ plus3\p@ minus3\p@}%
595             {6\p@ plus3\p@}%
596             \abovedisplayshortskip
597             {13.5}{5.6}}
598 %    \end{macrocode}
599 % \end{macro}
601 % \begin{macro}{\footnotesize}
602 % \begin{macro}{\scriptsize}
603 %    \begin{macrocode}
604 \let\footnotesize=\small
605 \let\scriptsize=\small
606 %    \end{macrocode}
607 % \end{macro}
608 % \end{macro}
610 % \begin{macro}{\tiny}
611 %    \begin{macrocode}
612 \def\tiny{\@setfontsize\tiny\ifourteenpt{16\p@ plus2\p@ minus\p@}%
613           \@setfontsize@parms
614             {2pt}%
615             {14\p@ plus3\p@ minus10\p@}%
616             {11\p@ plus3\p@ minus10\p@}%
617             \abovedisplayskip
618             {8\p@ plus3\p@ minus5\p@}%
619             {\z@ plus3\p@}%
620             {10}{4}}
621 %    \end{macrocode}
622 % \end{macro}
624 % Actually copying the code above would be better because this would
625 % correct the error message. Maybe one should remove the first
626 % argument of |\set@font@size@parms|.
628 % \begin{macro}{\large}
629 % \begin{macro}{\Large}
630 % \begin{macro}{\LARGE}
631 % \begin{macro}{\huge}
632 % \begin{macro}{\Huge}
633 %    \begin{macrocode}
634 \def\large{\@setfontsize\large\itwentyfourpt{42\p@ plus8\p@ minus5\p@}%
635            \@setfontsize@parms
636             {2\p@}%
637             {40\p@ plus20\p@ minus4\p@}%
638             {20\p@ plus8\p@ minus3\p@}%
639             \abovedisplayskip
640             {10\p@ plus5\p@}%
641             \abovedisplayshortskip
642             {20}{8.5}}
644 \def\Large{\@setfontsize\Large\itwentyninept{48\p@ plus10\p@ minus6\p@}%
645            \@setfontsize@parms
646             {2\p@}%
647             {48\p@ plus30\p@ minus6\p@}%
648             {24\p@ plus10\p@ minus6\p@}%
649             \abovedisplayskip
650             {12\p@ plus8\p@}%
651             \abovedisplayshortskip
652             {27}{11}}
654 \def\LARGE{\@setfontsize\LARGE\ithirtyfourpt{52\p@ plus10\p@ minus6\p@}%
655            \@setfontsize@parms
656             {2\p@}%
657             {52\p@ plus30\p@ minus6\p@}%
658             {24\p@ plus10\p@ minus6\p@}%
659             \abovedisplayskip
660             {12\p@ plus8\p@}%
661             \abovedisplayshortskip
662             {27}{11}}
664 \def\huge{\@setfontsize\huge\ifortyonept{60\p@ plus10\p@ minus6\p@}%
665            \@setfontsize@parms
666             {2\p@}%
667             {60\p@ plus30\p@ minus6\p@}%
668             {24\p@ plus10\p@ minus6\p@}%
669             \abovedisplayskip
670             {12\p@ plus8\p@}%
671             \abovedisplayshortskip
672             {27}{11}}
674 \let\Huge\huge
675 %    \end{macrocode}
676 % \end{macro}
677 % \end{macro}
678 % \end{macro}
679 % \end{macro}
680 % \end{macro}
682 % \subsection{Paragraphing}
684 % \begin{macro}{\baselinestretch}
685 %    This is used as a multiplier for |\baselineskip|. The default is
686 %    to {\em not\/} stretch the baselines.
687 %    \begin{macrocode}
688 \renewcommand\baselinestretch{}
689 %    \end{macrocode}
690 % \end{macro}
692 % \begin{macro}{\parindent}
693 %    |\parindent| is the width of the paragraph indentation.
694 %    \begin{macrocode}
695 \setlength\parindent{\z@}
696 %    \end{macrocode}
697 % \end{macro}
699 % \begin{macro}{\@lowpenalty}
700 % \begin{macro}{\@medpenalty}
701 % \begin{macro}{\@highpenalty}%
702 %    The commands |\nopagebreak| and |\nolinebreak| put in penalties
703 %    to discourage these breaks at the point they are put in.
704 %    They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
705 %    dependant on their argument.
706 %    \begin{macrocode}
707 \@lowpenalty   51
708 \@medpenalty  151
709 \@highpenalty 301
710 %    \end{macrocode}
711 % \end{macro}
712 % \end{macro}
713 % \end{macro}
715 % \begin{macro}{\clubpenalty}
716 % \begin{macro}{\widowpenalty}
717 %    These penalties are use to discourrage club and widow lines.
718 %    Because we use their default values we only show them here,
719 %    commented out.
720 %    \begin{macrocode}
721 % \clubpenalty  150
722 % \widowpenalty 150
723 %    \end{macrocode}
724 % \end{macro}
725 % \end{macro}
727 % \begin{macro}{\displaywidowpenalty}
728 % \begin{macro}{\predisplaypenalty}
729 % \begin{macro}{\postdisplaypenalty}
730 %    Discourrage (but not so much) widows in front of a math display
731 %    and forbid breaking directly in front of a display. Allow break
732 %    after a display without a penalty. Again the default values are
733 %    used, therefore we only show them here.
734 %    \begin{macrocode}
735 % \displaywidowpenalty 50
736 % \predisplaypenalty   10000
737 % \postdisplaypenalty  0
738 %    \end{macrocode}
739 % \end{macro}
740 % \end{macro}
741 % \end{macro}
743 % \begin{macro}{\interlinepenalty}
744 %    Allow the breaking of a page in the middle of a paragraph.
745 %    \begin{macrocode}
746 % \interlinepenalty 0
747 %    \end{macrocode}
748 % \end{macro}
751 % \begin{macro}{\brokenpenalty}
752 %    We allow the breaking of a page after a hyphenated line.
753 %    \begin{macrocode}
754 % \brokenpenalty 0
755 %    \end{macrocode}
756 % \end{macro}
759 % \subsection{Page Layout}
761 %    All margin dimensions are measured from a point one inch from the
762 %    top and lefthand side of the page.
764 % \subsubsection{Vertical spacing}
766 % \begin{macro}{\headheight}
767 % \begin{macro}{\headsep}
768 % \begin{macro}{\topskip}
769 %    The |\headheight| is the height of the box that will contain the
770 %    running head. The |\headsep| is the distance between the bottom
771 %    of the running head and the top of the text. |\topskip| is the
772 %    |\baselineskip| for the first line on a page.
773 %    \begin{macrocode}
774 \setlength\headheight{14\p@}
775 \setlength\headsep   {15\p@}
776 \setlength\topskip   {30\p@}
777 %    \end{macrocode}
778 % \end{macro}
779 % \end{macro}
780 % \end{macro}
782 % \begin{macro}{\footskip}
783 %    The distance from the baseline of the box which contains the
784 %    running footer to the baseline of last line of text is controlled
785 %    by the |\footskip|.
786 %    Bottom of page:
787 %    \begin{macrocode}
788 \setlength\footskip{25\p@}   %
789 %    \end{macrocode}
790 % \end{macro}
792 % \begin{macro}{\maxdepth}
793 % \begin{macro}{\@maxdepth}
794 % \changes{v2.3c}{1994/05/06}{Added setting of \cs{maxdepth} and
795 %    \cs{@maxdepth}}
796 %    The \TeX\ primitive register |\maxdepth| has a function that is
797 %    similar to that of |\topskip|. The register |\@maxdepth| should
798 %    always contain a copy of |\maxdepth|. In both plain \TeX\ and
799 %    \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
800 %    native \LaTeX2e\ mode we let the value depend on the typesize. We
801 %    set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
802 %    1.5$. As it happens, in these classes |\topskip| is equal to the
803 %    typesize, therefor we set |\maxdepth| to half the value of
804 %    |\topskip|.
805 %    \begin{macrocode}
806 \if@compatibility
807   \setlength\maxdepth{4\p@}
808 \else
809   \setlength\maxdepth{.5\topskip}
811 \setlength\@maxdepth\maxdepth
812 %    \end{macrocode}
813 % \end{macro}
814 % \end{macro}
816 % \subsubsection{The dimension of text}
818 % \begin{macro}{\textwidth}
819 %    When we are in compatibility mode we have to make sure that the
820 %    dimensions of the printed area are not different from what the
821 %    user was used to see.
823 %    \begin{macrocode}
824 \if@compatibility
825   \setlength\textwidth{460\p@}
826 %    \end{macrocode}
827 %    When we are not in compatibility mode we can set some of the
828 %    dimensions differently, taking into account the paper size for
829 %    instance.
830 %    \begin{macrocode}
831 \else
832 %    \end{macrocode}
833 %    First, we calculate the maximum textwidth, which depends on the
834 %    papersize. Then we calculate the approximate length of 65
835 %    characters, which should be the maximum length of a line of text.
836 %    The calculated values are stored in |\@tempdima| and |\@tempdimb|.
837 %    \begin{macrocode}
838   \setlength\@tempdima{\paperwidth}
839   \addtolength\@tempdima{-2in}
840   \setbox\@tempboxa\hbox{\rmfamily im}
841   \setlength\@tempdimb{.5\wd\@tempboxa}
842   \setlength\@tempdimb{65\@tempdimb}
843 %    \end{macrocode}
845 %    Now we can set the |\textwidth|, depending on whether we will be
846 %    setting one or two columns.
848 %    The text should not be wider than the minimum
849 %    of the paperwidth (minus 2 inches for the margins) and the
850 %    maximum length of a line as defined by the number of characters.
851 %    \begin{macrocode}
852   \ifdim\@tempdima>\@tempdimb\relax
853     \setlength\textwidth{\@tempdimb}
854   \else
855     \setlength\textwidth{\@tempdima}
856   \fi
858 %    \end{macrocode}
860 %    Here we modify the width of the text a little to be a whole
861 %    number of points.
862 %    \begin{macrocode}
863 \@settopoint\textwidth
864 %    \end{macrocode}
865 % \end{macro}
867 % \begin{macro}{\columnwidth}
868 % \begin{macro}{\columnsep}
869 % \begin{macro}{\columnseprule}
870 %    \begin{macrocode}
871 \columnwidth \textwidth
872 \columnsep 10pt
873 \columnseprule \z@
874 %    \end{macrocode}
875 % \end{macro}
876 % \end{macro}
877 % \end{macro}
878 % \begin{macro}{\textheight}
879 %    Now that we have computed the width of the text, we have to take
880 %    care of the height. The |\textheight| is the height of text
881 %    (including footnotes and figures, excluding running head and
882 %    foot).
884 %    First make sure that the compatibility mode gets the same
885 %    dimensions as we had with \LaTeX2.09. The number of lines was
886 %    calculated as the floor of the old |\textheight| minus
887 %    |\topskip|, divided by |\baselineskip| for |\normalsize|. The
888 %    old value of |\textheight| was 528pt.
890 %    \begin{macrocode}
891 \if@compatibility
892   \setlength\textheight{600\p@}
893 %    \end{macrocode}
895 %    Again we compute this, depending on the papersize and depending
896 %    on the baselineskip that is used, in order to have a whole number
897 %    of lines on the page.
898 %    \begin{macrocode}
899 \else
900   \setlength\@tempdima{\paperheight}
901 %    \end{macrocode}
903 %    We leave at least a 1 inch margin on the top and the bottom of
904 %    the page.
905 %    \begin{macrocode}
906   \addtolength\@tempdima{-2in}
907 %    \end{macrocode}
909 %    We also have to leave room for the running headers and footers.
910 %    \begin{macrocode}
911   \addtolength\@tempdima{-1in}
912 %    \end{macrocode}
914 %    Then we divide the result by the current |\baselineskip| and
915 %    store this in the count register |\@tempcnta|, which then
916 %    contains the number of lines that fit on this page.
917 %    \begin{macrocode}
918   \divide\@tempdima\baselineskip
919   \@tempcnta=\@tempdima
920 %    \end{macrocode}
922 %    From this we can calculate the height of the text.
923 %    \begin{macrocode}
924   \setlength\textheight{\@tempcnta\baselineskip}
926 %    \end{macrocode}
928 %    The first line on the page has a height of |\topskip|.
929 %    \begin{macrocode}
930 \advance\textheight by \topskip
931 %    \end{macrocode}
932 % \end{macro}
934 % \subsubsection{Margins}
936 % \begin{macro}{\oddsidemargin}
937 % \begin{macro}{\evensidemargin}
938 % \begin{macro}{\marginparwidth}
939 %    First we give the values for the compatibility mode.
941 %    Values for two-sided printing:
942 %    \begin{macrocode}
943 \if@compatibility
944    \setlength\oddsidemargin  {17\p@}
945    \setlength\evensidemargin {17\p@}
946    \setlength\marginparwidth {20\p@}
947 \else
948 %    \end{macrocode}
950 %    When we are not in compatibility mode we can take the dimensions
951 %    of the selected paper into account.
953 %    We center the text on the page, by
954 %    calculating the difference between |textwidth| and
955 %    |\paperwidth|$-$|2in|. Half of that difference is then used for
956 %    the margin. The amount of space that can be used for marginal
957 %    notes is at least 0.8~inch, to which we add any `leftover' space.
958 %    \begin{macrocode}
959   \setlength\@tempdima        {\paperwidth}
960   \addtolength\@tempdima      {-2in}
961   \addtolength\@tempdima      {-\textwidth}
962   \setlength\oddsidemargin    {.5\@tempdima}
963   \setlength\marginparwidth   {.8in}
964   \addtolength\marginparwidth {.5\@tempdima}
965 %    \end{macrocode}
967 %    The |\evensidemargin| can now be computed from the values set
968 %    above.
969 %    \begin{macrocode}
970 \setlength\evensidemargin  {\paperwidth}
971 \addtolength\evensidemargin{-2in}
972 \addtolength\evensidemargin{-\textwidth}
973 \addtolength\evensidemargin{-\oddsidemargin}
975 %    \end{macrocode}
976 % \end{macro}
977 % \end{macro}
978 % \end{macro}
980 % \begin{macro}{\marginparsep}
981 % \begin{macro}{\marginparpush}
982 %    The horizontal space between the main text and marginal notes is
983 %    determined by |\marginparsep|, the minimum vertical separation
984 %    between two marginal notes is controlled by |\marginparpush|.
985 %    \begin{macrocode}
986 \setlength\marginparsep {5\p@}
987 \setlength\marginparpush{5\p@}
988 %    \end{macrocode}
989 % \end{macro}
990 % \end{macro}
992 % \begin{macro}{\topmargin}
993 %    The |\topmargin| is the distance between the top of `the
994 %    printable area' --which is 1 inch below the top of the paper--
995 %    and the top of the box which contains the running head.
997 %    It can now be computed from the values set above.
998 %    \begin{macrocode}
999 \if@compatibility
1000   \setlength\topmargin{-10pt}
1001 \else
1002   \setlength\topmargin{\paperheight}
1003   \addtolength\topmargin{-2in}
1004   \addtolength\topmargin{-\headheight}
1005   \addtolength\topmargin{-\headsep}
1006   \addtolength\topmargin{-\textheight}
1007   \addtolength\topmargin{-\footskip}     % this might be wrong!
1008 %    \end{macrocode}
1009 %    By changing the factor in the next line the complete page
1010 %    can be shifted vertically.
1011 %    \begin{macrocode}
1012   \addtolength\topmargin{-.5\topmargin}
1014 \@settopoint\topmargin
1015 %    \end{macrocode}
1016 % \end{macro}
1019 % \subsubsection{Footnotes}
1021 % \begin{macro}{\footnotesep}
1022 %    |\footnotesep| is the height of the strut placed at the beginning
1023 %    of every footnote. It equals the  height of a normal
1024 %    |\footnotesize| strut in this
1025 %    class, thus no extra space occurs between footnotes.
1026 %    \begin{macrocode}
1027 \setlength\footnotesep{20\p@}
1028 %    \end{macrocode}
1029 % \end{macro}
1031 % \begin{macro}{\footins}
1032 %    |\skip\footins| is the space between the last line of the main
1033 %    text and the top of the first footnote.
1034 %    \begin{macrocode}
1035 \setlength{\skip\footins}{10\p@ \@plus 2\p@ \@minus 4\p@}
1036 %    \end{macrocode}
1037 % \end{macro}
1040 % \subsection{Page Styles}
1042 %    The page style \pstyle{foo} is defined by defining the command
1043 %    |\ps@foo|.   This command should make only local definitions.
1044 %    There should be no stray spaces in the definition, since they
1045 %    could lead to mysterious extra spaces in the output (well, that's
1046 %    something that should be always avoided).
1048 % \begin{macro}{\@evenhead}
1049 % \begin{macro}{\@oddhead}
1050 % \begin{macro}{\@evenfoot}
1051 % \begin{macro}{\@oddfoot}
1052 %    The |\ps@...| command defines the macros |\@oddhead|,
1053 %    |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
1054 %    heads and feet---e.g., |\@oddhead| is the macro to produce the
1055 %    contents of the heading box for odd-numbered pages.  It is called
1056 %    inside an |\hbox| of width |\textwidth|.
1057 % \end{macro}
1058 % \end{macro}
1059 % \end{macro}
1060 % \end{macro}
1063 %  The page styles of slides is determined by the 'slide' page style,
1064 % the slide environment executing a |\thispagestyle{slide}| command.
1065 % The page styles of overlays and notes are similarly determined by
1066 % 'overlay' and 'note' page styles.  The command standard 'headings',
1067 % 'plain' and 'empty' page styles work by redefining the 'slide',
1068 % 'overlay', and 'note' styles.
1070 % \changes{v2.3q}{1995/09/20}{Wrap some long lines, and use \cs{null}.}
1071 % \begin{macro}{\ps@headings}
1072 %    \begin{macrocode}
1073 \if@compatibility
1074 \def\ps@headings{%
1075 \def\ps@slide{\def\@oddfoot{\@mainsize +\hfil\hb@xt@3em{\theslide
1076                                                           \hss}}%
1077  \def\@oddhead{\@mainsize +\hfil +}%
1078  \def\@evenfoot{\@mainsize +\hfil\hb@xt@3em{\theslide\hss}}%
1079  \def\@evenhead{\@mainsize +\hfil +}}
1081 \def\ps@overlay{\def\@oddfoot{\@mainsize +\hfil\hb@xt@3em{\theoverlay
1082                                                            \hss}}%
1083  \def\@oddhead{\@mainsize +\hfil +}%
1084  \def\@evenfoot{\@mainsize +\hfil\hb@xt@3em{\theoverlay\hss}}%
1085  \def\@evenhead{\@mainsize +\hfil +}}
1086 \def\ps@note{\def\@oddfoot{\@mainsize \hbox{}\hfil\thenote}%
1087  \def\@oddhead{}%
1088  \def\@evenfoot{\@mainsize \hbox{}\hfil\thenote}%
1089  \def\@evenhead{}}}
1091 \else %%if@compatibility
1093 \def\ps@headings{%
1094   \def\ps@slide{%
1095     \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
1096     \def\@oddhead{}%
1097     \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
1098     \def\@evenhead{}}
1100   \def\ps@overlay{%
1101     \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
1102     \def\@oddhead{}%
1103     \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
1104     \def\@evenhead{}}
1106   \def\ps@note{%
1107     \def\@oddfoot{%
1108       \@mainsize
1109       \if@clock
1110         \fbox{\large \@arabic\c@minutes\space min}%
1111       \else
1112         \null
1113       \fi
1114       \hfil\thenote}%
1115     \def\@oddhead{}%
1116     \def\@evenfoot{%
1117       \@mainsize
1118       \if@clock
1119         \fbox{\large \@arabic\c@minutes\space min}%
1120       \else
1121         \null
1122       \fi
1123       \hfil\thenote}%
1124     \def\@evenhead{}}}
1125 \fi  %% if@compatibility
1126 %    \end{macrocode}
1127 % \end{macro}
1129 % \begin{macro}{\ps@plain}
1130 %    \begin{macrocode}
1131 \def\ps@plain{\def\ps@slide{%
1132  \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
1133  \def\@oddhead{}%
1134  \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
1135  \def\@evenhead{}}
1136 \def\ps@overlay{\def\@oddfoot{\@mainsize
1137    \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
1138  \def\@oddhead{}%
1139  \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
1140  \def\@evenhead{}}
1141 \def\ps@note{\def\@oddfoot{\@mainsize \hbox{}\hfil\thenote}%
1142  \def\@oddhead{}%
1143  \def\@evenfoot{\@mainsize \hbox{}\hfil\thenote}%
1144  \def\@evenhead{}}}
1145 %    \end{macrocode}
1146 % \end{macro}
1148 % \begin{macro}{\ps@empty}
1149 %    \begin{macrocode}
1150 \def\ps@empty{%
1151 \def\ps@slide{\def\@oddhead{}\def\@oddfoot{}%
1152 \def\@evenhead{}\def\@evenfoot{}}%
1153 \def\ps@overlay{\def\@oddhead{}\def\@oddfoot{}%
1154 \def\@evenhead{}\def\@evenfoot{}}%
1155 \def\ps@note{\def\@oddhead{}\def\@oddfoot{}%
1156 \def\@evenhead{}\def\@evenfoot{}}}
1157 %    \end{macrocode}
1158 % \end{macro}
1160 % Default definition the 'slide', 'overlay', and 'note' page styles.
1161 %    \begin{macrocode}
1162 \ps@headings
1163 %    \end{macrocode}
1164 % Set ordinary page style to 'empty'
1165 %    \begin{macrocode}
1166 \let\@oddhead\@empty\let\@oddfoot\@empty
1167 \let\@evenhead\@empty\let\@evenfoot\@empty
1168 %    \end{macrocode}
1171 % \subsection{Providing math {\em versions}}
1173 %  \LaTeX{} provides two {\em versions\/}. We call them
1174 %  \textsf{normal} and \textsf{bold}, respectively.
1175 %  \SliTeX{} does not have a \textsf{bold} version. But we treat the
1176 %  invisible characters as a version. The only thing we have to take
1177 %  care of is to ensure that we have exactly the same fonts in both
1178 %  versions available.
1180 %    \begin{macrocode}
1181 \DeclareMathVersion{invisible}
1182 %    \end{macrocode}
1184 % Now we define the basic {\em math groups\/} used by \LaTeX{}.  Later
1185 % on, in packages some other {\em math groups}, e.g., the AMS
1186 % symbol fonts, will be defined.
1188 %  As a default I used serif fonts for mathgroup 0 to get things like
1189 % \verb+\log+ look right.
1190 %    \begin{macrocode}
1191 \SetSymbolFont{operators}{normal}
1192                  {OT1}{lcmss}{m}{n}
1194 \SetSymbolFont{letters}{normal}
1195                  {OML}{lcmm}{m}{it}
1196 \SetSymbolFont{symbols}{normal}
1197                  {OMS}{lcmsy}{m}{n}
1198 \SetSymbolFont{largesymbols}{normal}
1199                  {OMX}{lcmex}{m}{n}
1201 \SetSymbolFont{operators}{invisible}
1202                  {OT1}{lcmss}{m}{In}
1203 \SetSymbolFont{letters}{invisible}
1204                  {OML}{lcmm}{m}{Iit}
1205 \SetSymbolFont{symbols}{invisible}
1206                  {OMS}{lcmsy}{m}{In}
1207 \SetSymbolFont{largesymbols}{invisible}
1208                   {OMX}{lcmex}{m}{In}
1211 \def\@mainsize{\visible\tiny}
1212 %    \end{macrocode}
1215 %  \subsection{Environments}
1217 % \begin{environment}{titlepage}
1218 %    This environment starts a new page, with pagestyle \pstyle{empty}
1219 %    and sets the page counter to 0.
1220 %    \begin{macrocode}
1221 \newenvironment{titlepage}
1222      {\newpage
1223       \thispagestyle{empty}%
1224       \setcounter{page}{\z@}}
1225      {\newpage}
1226 %    \end{macrocode}
1227 % \end{environment}
1229 % \subsubsection{General List Parameters}
1231 %    The following commands are used to set the default values for the
1232 %    list environment's parameters. See the \LaTeX{} manual for an
1233 %    explanation of the meaning of the parameters.
1235 % \begin{macro}{\leftmargini}
1236 % \begin{macro}{\leftmarginii}
1237 % \begin{macro}{\leftmarginiii}
1238 % \begin{macro}{\leftmarginiv}
1239 % \begin{macro}{\leftmarginv}
1240 % \begin{macro}{\leftmarginvi}
1241 %    \begin{macrocode}
1242 \setlength\leftmargini   {38\p@}
1243 \setlength\leftmarginii  {30\p@}
1244 \setlength\leftmarginiii {20\p@}
1245 \setlength\leftmarginiv  {15\p@}
1246 \setlength\leftmarginv   {15\p@}
1247 \setlength\leftmarginvi  {10\p@}
1248 %    \end{macrocode}
1249 % \end{macro}
1250 % \end{macro}
1251 % \end{macro}
1252 % \end{macro}
1253 % \end{macro}
1254 % \end{macro}
1256 % \begin{macro}{\@listi}
1257 % \begin{macro}{\@listii}
1258 % \begin{macro}{\@listiii}
1259 % \begin{macro}{\@listiv}
1260 % \begin{macro}{\@listv}
1261 % \begin{macro}{\@listvi}
1262 %    These commands set the values of |\leftmargin|, |\parsep|,
1263 %    |\topsep|, and |\itemsep| for the various levels of lists.
1264 % \changes{v2.3z}{1997/08/15}{Add initialization of \cs{leftmargin} to
1265 %    \cs@listi.}
1266 %    It is even necessary to initialize |\leftmargin| in |\@listi|,
1267 %    i.e. for a level one list, as a list environment may appear
1268 %    inside a \texttt{trivlist}, for example inside a \texttt{theorem}
1269 %    environment.
1270 %    \begin{macrocode}
1271 \def\@listi{\leftmargin\leftmargini
1272             \parsep .5\parskip
1273             \topsep \parsep
1274             \itemsep\parskip
1275             \partopsep \z@}
1277 \def\@listii{\leftmargin\leftmarginii
1278              \labelwidth\leftmarginii
1279              \advance\labelwidth-\labelsep
1280              \parsep .5\parskip
1281              \topsep \parsep
1282              \itemsep\parskip}
1283 \def\@listiii{\leftmargin\leftmarginiii
1284               \labelwidth\leftmarginiii
1285               \advance\labelwidth-\labelsep}
1286 \def\@listiv{\leftmargin\leftmarginiv
1287              \labelwidth\leftmarginiv
1288              \advance\labelwidth-\labelsep}
1289 \def\@listv{\leftmargin\leftmarginv
1290             \labelwidth\leftmarginv
1291             \advance\labelwidth-\labelsep}
1292 \def\@listvi{\leftmargin\leftmarginvi
1293              \labelwidth\leftmarginvi
1294              \advance\labelwidth-\labelsep}
1295 %    \end{macrocode}
1296 % \end{macro}
1297 % \end{macro}
1298 % \end{macro}
1299 % \end{macro}
1300 % \end{macro}
1301 % \end{macro}
1303 %    Here we initialize |\leftmargin| and |\labelwidth|.
1304 %    \begin{macrocode}
1305 \leftmargin\leftmargini
1306 \labelwidth\leftmargini\advance\labelwidth-\labelsep
1307 %    \end{macrocode}
1310 %    \subsubsection{Paragraph-formatting environments}
1312 % \begin{environment}{verse}
1313 %    Inside a |verse| environment, |\\| ends a line, and
1314 %    line continuations are indented further.
1315 %    A blank line makes new paragraph with |\parskip| space.
1316 %    \begin{macrocode}
1317 \newenvironment{verse}{\let\\=\@centercr
1318                        \list{}{\itemsep       \z@
1319                                \itemindent    -15\p@
1320                                \listparindent \itemindent
1321                                \rightmargin   \leftmargin
1322                                \advance\leftmargin 15\p@}%
1323                        \item[]}
1324                       {\endlist}
1325 %    \end{macrocode}
1326 % \end{environment}
1328 % \begin{environment}{quotation}
1329 %    The |quotation| environment fills lines, indents paragraphs.
1330 %    \begin{macrocode}
1331 \newenvironment{quotation}{\list{}{\listparindent 20\p@
1332                                    \itemindent\listparindent
1333                                    \rightmargin\leftmargin}%
1334                            \item[]}
1335                           {\endlist}
1336 %    \end{macrocode}
1337 % \end{environment}
1339 % \begin{environment}{quote}
1340 %    The |quote| environment is the same as the |quotation| environment,
1341 %    except that there is no paragraph indentation.
1342 %    \begin{macrocode}
1343 \newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item[]}
1344                       {\endlist}
1345 %    \end{macrocode}
1346 % \end{environment}
1349 %    \subsubsection{List-making environments}
1352 % \begin{environment}{description}
1353 %    The description environment is defined here -- while the itemize
1354 %    and enumerate environments are defined in \file{latex.dtx}.
1356 %    \begin{macrocode}
1357 \newenvironment{description}{\list{}{\labelwidth\z@
1358                                      \itemindent-\leftmargin
1359                                      \let\makelabel\descriptionlabel}}
1360                             {\endlist}
1361 %    \end{macrocode}
1362 % \end{environment}
1364 % \begin{macro}{\descriptionlabel}
1365 %  To change the formatting of the label, you must redefine
1366 %  |\descriptionlabel|.
1367 %    \begin{macrocode}
1368 \newcommand*{\descriptionlabel}[1]{\hspace\labelsep
1369                                 \normalfont\bfseries #1}
1371 %    \end{macrocode}
1372 % \end{macro}
1374 % \subsubsection{Enumerate}
1376 %    The enumerate environment uses  four counters: \Lcount{enumi},
1377 %    \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
1378 %    \Lcount{enumN} controls the numbering of the Nth level
1379 %    enumeration.
1381 % \begin{macro}{\theenumi}
1382 % \begin{macro}{\theenumii}
1383 % \begin{macro}{\theenumiii}
1384 % \begin{macro}{\theenumiv}
1385 %    The counters are already defined in \file{latex.dtx}, but their
1386 %    representation is changed here.
1388 %    \begin{macrocode}
1389 \renewcommand\theenumi{\@arabic\c@enumi}
1390 \renewcommand\theenumii{\@alph\c@enumii}
1391 \renewcommand\theenumiii{\@roman\c@enumiii}
1392 \renewcommand\theenumiv{\@Alph\c@enumiv}
1393 %    \end{macrocode}
1394 % \end{macro}
1395 % \end{macro}
1396 % \end{macro}
1397 % \end{macro}
1399 % \begin{macro}{\labelenumi}
1400 % \begin{macro}{\labelenumii}
1401 % \begin{macro}{\labelenumiii}
1402 % \begin{macro}{\labelenumiv}
1403 %    The label for each item is generated by the four commands
1404 %    |\labelenumi| \ldots\ |\labelenumiv|.
1405 % \changes{v2.3k}{1994/12/12}{Handle the \cs{label...} commands as in
1406 %    the other class files}
1407 %    \begin{macrocode}
1408 \newcommand\labelenumi{\theenumi.}
1409 \newcommand\labelenumii{(\theenumii)}
1410 \newcommand\labelenumiii{\theenumiii.}
1411 \newcommand\labelenumiv{\theenumiv.}
1412 %    \end{macrocode}
1413 % \end{macro}
1414 % \end{macro}
1415 % \end{macro}
1416 % \end{macro}
1418 % \begin{macro}{\p@enumii}
1419 % \begin{macro}{\p@enumiii}
1420 % \begin{macro}{\p@enumiv}
1421 %    The expansion of |\p@enumN||\theenumN| defines the output of a
1422 %    |\ref| command when referencing an item of the Nth level of an
1423 %    enumerated list.
1424 %    \begin{macrocode}
1425 \renewcommand\p@enumii{\theenumi}
1426 \renewcommand\p@enumiii{\theenumi(\theenumii)}
1427 \renewcommand\p@enumiv{\p@enumiii\theenumiii}
1428 %    \end{macrocode}
1429 % \end{macro}
1430 % \end{macro}
1431 % \end{macro}
1433 % \subsubsection{Itemize}
1436 % \begin{macro}{\labelitemi}
1437 % \begin{macro}{\labelitemii}
1438 % \changes{v2.3x}{1996/08/25}{replaced -{}- with \cs{textendash}}
1439 % \begin{macro}{\labelitemiii}
1440 % \begin{macro}{\labelitemiv}
1441 %    Itemization is controlled by four commands: |\labelitemi|,
1442 %    |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which\
1443 %    define the labels of the various itemization levels.
1444 %    \begin{macrocode}
1445 \newcommand\labelitemi{$\m@th\bullet$}
1446 \newcommand\labelitemii{\normalfont\bfseries \textendash}
1447 \newcommand\labelitemiii{$\m@th\ast$}
1448 \newcommand\labelitemiv{$\m@th\cdot$}
1449 %    \end{macrocode}
1450 %    \end{macro}
1451 %    \end{macro}
1452 %    \end{macro}
1453 %    \end{macro}
1455 % \subsection{Setting parameters for existing environments}
1457 % \subsubsection{Array and tabular}
1459 % \begin{macro}{\arraycolsep}
1460 %    The columns in an array environment are separated by
1461 %    2|\arraycolsep|.% Array and tabular environment parameters
1462 %    \begin{macrocode}
1463 \setlength\arraycolsep{8\p@}
1464 %    \end{macrocode}
1465 % \end{macro}
1467 % \begin{macro}{\tabcolsep}
1468 %    The columns in an tabular environment are separated by
1469 %    2|\tabcolsep|.
1470 %    \begin{macrocode}
1471 \setlength\tabcolsep{10\p@}
1472 %    \end{macrocode}
1473 % \end{macro}
1475 % \begin{macro}{\arrayrulewidth}
1476 %    The width of rules in the array and tabular environments is given
1477 %    by  the length parameter|\arrayrulewidth|.
1478 %    \begin{macrocode}
1479 \setlength\arrayrulewidth{.6\p@}
1480 %    \end{macrocode}
1481 % \end{macro}
1483 % \begin{macro}{\doublerulesep}
1484 %    The space between adjacent rules in the array and tabular
1485 %    environments is given by |\doublerulesep|.
1486 %    \begin{macrocode}
1487 \setlength\doublerulesep{3\p@}
1488 %    \end{macrocode}
1489 % \end{macro}
1491 % \subsubsection{Tabbing}
1493 % \begin{macro}{\tabbingsep}
1494 %    This controls the space that the |\'| command puts in. (See
1495 %    \LaTeX{} manual for an explanation.)
1496 %    \begin{macrocode}
1497 \labelsep 10pt
1498 \setlength\tabbingsep{\labelsep}
1499 %    \end{macrocode}
1500 % \end{macro}
1502 % \subsubsection{Minipage}
1504 % \begin{macro}{\@minipagerestore}
1505 %    The macro |\@minipagerestore| is called upon entry to a minipage
1506 %    environment to set up things that are to be handled differently
1507 %    inside a minipage environment. In the current styles, it does
1508 %    nothing.
1509 % \end{macro}
1511 % \begin{macro}{\@mpfootins}
1512 %    Minipages have their own footnotes; |\skip||\@mpfootins| plays
1513 %    same r\^ole for footnotes in a minipage as |\skip||\footins| does
1514 %    for ordinary footnotes.
1516 %    \begin{macrocode}
1517 \skip\@mpfootins = \skip\footins
1518 %    \end{macrocode}
1519 % \end{macro}
1521 % \subsubsection{Framed boxes}
1523 % \begin{macro}{\fboxsep}
1524 %    The space left by |\fbox| and |\framebox| between the box and the
1525 %    text in it.
1526 % \begin{macro}{\fboxrule}
1527 %    The width of the rules in the box made by |\fbox| and |\framebox|.
1528 %    \begin{macrocode}
1529 \setlength\fboxsep{5\p@}
1530 \setlength\fboxrule{.6\p@}
1531 %    \end{macrocode}
1532 % \end{macro}
1533 % \end{macro}
1535 % \begin{macro}{\theequation}
1536 %    The equation number will be typeset as arabic numerals.
1537 %    \begin{macrocode}
1538 \def\theequation{\@arabic\c@equation}
1539 %    \end{macrocode}
1540 % \end{macro}
1543 % \begin{macro}{\jot}
1544 %    |\jot| is the extra space added between lines of an eqnarray
1545 %    environment. The default value is used.
1546 %    \begin{macrocode}
1547 % \setlength\jot{3pt}
1548 %    \end{macrocode}
1549 % \end{macro}
1551 % \begin{macro}{\@eqnnum}
1552 %    The macro |\@eqnnum| defines how equation numbers are to appear in
1553 %    equations. Again the default is used.
1555 %    \begin{macrocode}
1556 % \def\@eqnnum{(\theequation)}
1557 %    \end{macrocode}
1558 % \end{macro}
1561 % \subsection{Font changing}
1563 % \changes{v2.3j}{1994/11/10}{fixed a few typos}
1565 %    Here we supply the declarative font changing commands that were
1566 %    common in \LaTeX\ version 2.09 and earlier. These commands work
1567 %    in text mode \emph{and} in math mode. They are provided for
1568 %    compatiblity, but one should start using the |\text...| and
1569 %    |\math...| commands instead. These commands are redefined using
1570 %    |\DeclareOldFontCommand|, a command with three arguments: the
1571 %    user command to be defined, \LaTeX\ commands to execute in text
1572 %    mode and \LaTeX\ commands to execute in math mode.
1574 %  \begin{macro}{\rm}
1575 %  \begin{macro}{\tt}
1576 %  \begin{macro}{\sf}
1577 % \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
1578 %    \cs{@renewfontswitch}.}
1579 % \changes{v2.3a}{1994/04/14}{\cs{@renewfontswitch} has become
1580 %    \cs{DeclareOldFontCommand}}
1582 %    The commands to change the family. When in compatibility mode we
1583 %    select the `default' font first, to get \LaTeX2.09 behaviour.
1584 %    \begin{macrocode}
1585 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
1586 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
1587 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
1588 %    \end{macrocode}
1589 %  \end{macro}
1590 %  \end{macro}
1591 %  \end{macro}
1593 %  \begin{macro}{\bf}
1594 %    The command to change to the bold series. One should use
1595 %    |\mdseries| to explicitly switch back to medium series.
1596 % \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
1597 %    \cs{@renewfontswitch}.}
1598 %    \begin{macrocode}
1599 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
1600 %    \end{macrocode}
1601 %  \end{macro}
1603 %  \begin{macro}{\sl}
1604 %  \begin{macro}{\it}
1605 %  \begin{macro}{\sc}
1606 % \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
1607 %    \cs{@renewfontswitch}.}
1608 %    And the commands to change the shape of the font. The slanted and
1609 %    small caps shapes are not available by default as math alphabets,
1610 %    so those changes do nothing in math mode. One should use
1611 %    |\upshape| to explicitly change back to the upright shape.
1612 %    \begin{macrocode}
1613 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
1614 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
1615 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
1616 %    \end{macrocode}
1617 %  \end{macro}
1618 %  \end{macro}
1619 %  \end{macro}
1621 % \begin{macro}{\cal}
1622 % \changes{v2.1d}{1993/12/14}{Macro added}
1623 % \begin{macro}{\mit}
1624 % \changes{v2.1d}{1993/12/14}{Macro added}
1626 %    The commands |\cal| and |\mit| should only be used in math mode,
1627 %    outside math mode they have no effect. Currently the New Font
1628 %    Selection Scheme defines these commands to generate warning
1629 %    messages. Therefore we have to define them `by hand'.
1630 % \changes{v2.3k}{1994/12/12}{Now define \cs{cal} and \cs{mit} using
1631 %    \cs{DeclareRobustCommand*}}
1632 %    \begin{macrocode}
1633 \DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
1634 \DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
1635 %    \end{macrocode}
1636 %  \end{macro}
1637 %  \end{macro}
1639 % \subsection{Footnotes}
1642 % \begin{macro}{\footnoterule}
1643 %    Usually, footnotes are separated from the main body of the text
1644 %    by a small rule. This rule is drawn by the macro |\footnoterule|.
1645 %    We have to make sure that the rule takes no vertical space (see
1646 %    \file{plain.tex}).  The resulting rule will appear on all color
1647 %    layers, so it's best not to draw a rule.
1648 %    \begin{macrocode}
1649 \renewcommand\footnoterule{}
1650 % \let \footnoterule = \relax
1651 %    \end{macrocode}
1652 % \end{macro}
1654 % \begin{macro}{\c@footnote}
1655 % \begin{macro}{\thefootnote}
1656 %    Footnotes are numbered within slides, overlays, and notes and
1657 %    numbered with $\ast$, $\dagger$, etc.
1658 %    \begin{macrocode}
1659 % \newcounter{footnote}
1660 \def\thefootnote{\fnsymbol{footnote}}
1661 \@addtoreset{footnote}{slide}
1662 \@addtoreset{footnote}{overlay}
1663 \@addtoreset{footnote}{note}
1664 %    \end{macrocode}
1665 % \end{macro}
1666 % \end{macro}
1669 % \begin{macro}{\@makefntext}
1670 % \changes{v2.2i}{1994/03/08}{Always call \cs{@makefnmark}.}
1671 %    The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
1672 %    to produce the actual footnote. The macro gets the text of the
1673 %    footnote as its argument and should use |\@makefnmark| to produce
1674 %    the mark of the footnote. The macro |\@makefntext| is called when
1675 %    effectively inside a |\parbox| of width |\columnwidth| (i.e.,
1676 %    with |\hsize| = |\columnwidth|).
1678 %   An example of what can be achieved is given by the following piece
1679 %   of \TeX\ code.
1680 % \begin{verbatim}
1681 %          \long\def\@makefntext#1{%
1682 %             \@setpar{\@@par
1683 %                      \@tempdima = \hsize
1684 %                      \advance\@tempdima-10pt
1685 %                      \parshape \@ne 10pt \@tempdima}%
1686 %             \par
1687 %             \parindent 1em\noindent
1688 %             \hbox to \z@{\hss\@makefnmark}#1}
1689 % \end{verbatim}
1690 %    The effect of this definition is that all lines of the footnote
1691 %    are indented by 10pt, while the first line of a new paragraph is
1692 %    indented by 1em. To change these dimensions, just substitute the
1693 %    desired value for `10pt' (in both places) or `1em'.  The mark is
1694 %    flushright against the footnote.
1696 %    In these document classes we use a simpler macro, in which the
1697 %    footnote text is set like an ordinary text paragraph, with no
1698 %    indentation except on the first line of a paragraph, and the
1699 %    first line of the footnote. Thus, all the macro must do is set
1700 %    |\parindent| to the appropriate value for succeeding paragraphs
1701 %    and put the proper indentation before the mark.
1703 %    \begin{macrocode}
1704 \long\def\@makefntext#1{
1705     \noindent
1706     \hangindent 10\p@
1707     \hb@xt@10\p@{\hss\@makefnmark}#1}
1708 %    \end{macrocode}
1709 % \end{macro}
1711 % \begin{macro}{\@makefnmark}
1712 %    The footnote markers that are printed in the text to point to the
1713 %    footnotes should be produced by the macro |\@makefnmark|. We use
1714 %    the default definition for it.
1715 %    \begin{macrocode}
1716 %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
1717 %    \end{macrocode}
1718 % \end{macro}
1721 % \subsection{The title}
1722 %     The commands |\title|, |\author|, and |\date| are already
1723 %     defined, so here we just define |\maketitle|.
1725 % \changes{v2.3s}{1995/10/10}{Move \cs{par} inside the scope of
1726 %               \cs{Large}, to get even line spacing.}
1727 %    \begin{macrocode}
1728 \newcommand\maketitle{{\centering {\Large \@title \par}%
1729      \@author \par \@date\par}%
1730      \if@titlepage \break \fi}
1731 %    \end{macrocode}
1733 % \section{Initialisation}
1735 % \subsection{Date}
1737 % \begin{macro}{\today}
1738 %    This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
1739 %    to provide the date of the \LaTeX-run.
1740 %    \begin{macrocode}
1741 \newcommand\today{\ifcase\month\or
1742   January\or February\or March\or April\or May\or June\or
1743   July\or August\or September\or October\or November\or December\fi
1744   \space\number\day, \number\year}
1745 %    \end{macrocode}
1746 % \end{macro}
1749 % Default initializations
1751 %    \begin{macrocode}
1752 \pagenumbering{arabic}
1753 \onecolumn
1754 %</class>
1755 %    \end{macrocode}
1757 % \subsection{Basic code}
1759 % The code below is basically a copy of |slitex.tex| with some
1760 % changes.
1762 % Global changes so far:
1764 % \changes{FMi}{1990/06/01}{\cs{gdef}\cs{@slidesw} ... replaced by a
1765 %    \cs{newifG} which is similar to \cs{newif} but uses \cs{global}
1766 %    inside.}
1769 % \subsubsection{Hacks for slide macros}
1771 %    \begin{macrocode}
1772 %<*cmd>
1773 \message{hacks,}
1775 \outer\def\newifG#1{\count@\escapechar \escapechar\m@ne
1776   \expandafter\expandafter\expandafter
1777    \edef\@ifG#1{true}{\global\let\noexpand#1\noexpand\iftrue}%
1778   \expandafter\expandafter\expandafter
1779    \edef\@ifG#1{false}{\global\let\noexpand#1\noexpand\iffalse}%
1780   \@ifG#1{false}\escapechar\count@} % the condition starts out false
1781 \def\@ifG#1#2{\csname\expandafter\ifG@\string#1#2\endcsname}
1782 {\uccode`1=`i \uccode`2=`f \uccode`3=`G \uppercase{\gdef\ifG@123{G}}}
1783  % `ifG' is required
1785 \def\@gobbletoend#1{\def\@argend{#1}\@ggobtoend}
1787 \long\def\@ggobtoend#1\end#2{\fi\def\reserved@a{#2}%
1788 \ifx\reserved@a\@argend\else\@ggobtoend\fi}
1789 %    \end{macrocode}
1790 % FMi: I don't see any reason for this command since |\fi| is hidden
1791 %      anyway in the replacement text
1792 % |\def\@xfi{\fi}|
1793 %    \begin{macrocode}
1794  \message{slides,}
1795 %    \end{macrocode}
1797 % \subsubsection{Slide macros}
1800 % Switches:\\
1801 % \begin{tabular}{ll}
1802 %   |@bw|           & true if making black and white slides \\
1803 %   |@visible|      & true if visible output to be produced.\\
1804 %   |@makingslides| & true if making a slide/overlay/note 
1805 % \end{tabular}
1807 %    \begin{macrocode}
1808 \newif\if@bw
1809 \newif\if@visible
1810 \newif\if@onlyslidesw \@onlyslideswfalse
1811 \newif\if@onlynotesw  \@onlynoteswfalse
1812 \newif\if@makingslides
1813 %    \end{macrocode}
1814 % FMi: |\newifG| replaces |\gdef\@slidesw{T}| stuff
1815 %    \begin{macrocode}
1816 \newifG\ifG@slidesw
1817 %    \end{macrocode}
1818 % Counters\\
1819 % \begin{tabular}{ll}
1820 %  slide   & slide number\\
1821 %  overlay & overlay number for a slide\\
1822 %  note    & note number for a slide
1823 % \end{tabular}
1825 %    \begin{macrocode}
1826 \countdef\c@slide=0 \c@slide=0
1827 \def\cl@slide{}
1828 \countdef\c@overlay=1 \c@overlay=0
1829 \def\cl@overlay{}
1830 \countdef\c@note=2 \c@note=0
1831 \def\cl@note{}
1832 %    \end{macrocode}
1833 %  Add these counters explicitly to the `ckpt list' so that the
1834 %  |\include| mechanism works.
1835 % \changes{v2.3u}{1996/05/09}{Make include work: pr/2140(CAR)}
1836 % \changes{v2.3y}{1997/05/09}{Make include work properly: add the
1837 % counters in case some are already in there: pr/2140+2474(CAR)}
1838 % \changes{v2.3v}{1996/05/11}{Do not add page counter here as it is
1839 %   added below(CAR)}
1840 %    \begin{macrocode}
1841 \g@addto@macro\cl@@ckpt{\@elt{slide}\@elt{overlay}\@elt{note}}
1842 \@addtoreset{overlay}{slide}
1843 \@addtoreset{note}{slide}
1844 %    \end{macrocode}
1845 % Redefine page counter to some other number.
1846 % The page counter will always be zero except when putting out an
1847 % extra page for a slide, note or overlay.
1848 %    \begin{macrocode}
1849 \@definecounter{page}
1850 \@addtoreset{page}{slide}
1851 \@addtoreset{page}{note}
1852 \@addtoreset{page}{overlay}
1854 \def\theslide{\@arabic\c@slide}
1855 \def\theoverlay{\theslide-\@alph\c@overlay}
1856 \def\thenote{\theslide-\@arabic\c@note}
1857 %    \end{macrocode}
1858 % \begin{verbatim}
1859 % \@setlimits \LIST \LOW \HIGH
1861 %    Assumes that \LIST = RANGE1,RANGE2,...,RANGEn  (n>0)
1862 %    Where RANGEi = j or j-k.
1864 %    Then \@setlimits  globally sets
1865 %        (i) \LIST := RANGE2, ... , RANGEn
1866 %       (ii) \LOW  := p
1867 %      (iii) \HIGH := q
1868 %   where either RANGE1 = p-q   or  RANGE1 = p  and  q=p.
1869 %\end{verbatim}
1870 %    \begin{macrocode}
1871 \def\@sl@getargs#1-#2-#3\relax#4#5{\xdef#4{#1}\xdef#5{#2}}
1872 \def\@sl@ccdr#1,#2\relax#3#4{\xdef#3{#1-#1-}\xdef#4{#2}}
1874 \def\@setlimits #1#2#3{\expandafter\@sl@ccdr#1\relax\@sl@gtmp #1%
1875 \expandafter\@sl@getargs\@sl@gtmp\relax#2#3}
1876 %    \end{macrocode}
1877 % \begin{verbatim}
1878 % \onlyslides{LIST} ::=
1879 %  BEGIN
1880 %    @onlyslidesw := true
1881 %    \@doglslidelist :=G LIST,999999,999999
1882 %   if @onlynotesw = true
1883 %     else @onlynotesw := true
1884 %          \@doglnotelist :=G LIST,999999,999999
1885 %   fi
1886 %   message: Only Slides LIST
1887 %  END
1888 %\end{verbatim}
1889 %    \begin{macrocode}
1890 \def\onlyslides#1{\@onlyslideswtrue
1891    \gdef\@doglslidelist{#1,999999,999999}%
1892    \if@onlynotesw \else
1893       \@onlynoteswtrue\gdef\@doglnotelist{999999,999999}\fi
1894    \typeout{Only Slides #1}}
1895 %    \end{macrocode}
1896 %\begin{verbatim}
1897 % \onlynotes{LIST} ::=
1898 %  BEGIN
1899 %    @onlynotesw := true
1900 %    \@doglnotelist :=G LIST,999999,999999
1901 %   if @onlyslidesw = true
1902 %     else \@onlyslidesw := true
1903 %          \@doglslidelist{999999,999999}
1904 %   fi
1905 %   message: Only Notes LIST
1906 %  END
1907 %\end{verbatim}
1908 %    \begin{macrocode}
1909 \def\onlynotes#1{\@onlynoteswtrue
1910    \gdef\@doglnotelist{#1,999999,999999}%
1911    \if@onlyslidesw \else
1912       \@onlyslideswtrue\gdef\@doglslidelist{999999,999999}\fi
1913    \typeout{Only Notes #1}}
1914 %    \end{macrocode}
1915 %\begin{verbatim}
1916 % \setupcounters ::=    (similar to old \blackandwhite #1  ::= )
1917 %    \newpage
1918 %    page counter := 0
1919 %    @bw := T
1920 %    @visible := T
1921 %    if @onlyslidesw = true
1922 %      then  \@doslidelist := \@doglslidelist
1923 %            \@setlimits\@doslidelist\@doslidelow\@doslidehigh
1924 %    fi
1925 %    if @onlynotesw = true
1926 %      then  \@donotelist := \@doglnotelist
1927 %            \@setlimits\@donotelist\@donotelow\@donotehigh
1928 %    fi
1929 %    \normalsize    % Note, this sets font to \rmfamily , which sets
1930 %                     % \@currfont to \rmfamily
1931 %    counter slidenumber := 0
1932 %    counter note        := 0
1933 %    counter overlay     := 0
1934 %    @makingslides       := F  %% \blackandwhite: @makingslides  := T
1935 %                              %%                 input #1
1936 %                              %%                 @makingslides  := F
1937 %\end{verbatim}
1938 %    \begin{macrocode}
1939 \if@compatibility 
1940 % In compatibility mode, need to define \verb+\blackandwhite+, 
1941 % \verb+\colors+, \verb+\colorslides+, etc.
1942 \def\blackandwhite#1{\newpage\setcounter{page}{0}\@bwtrue\@visibletrue
1943 \if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
1944 \@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
1945 \if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
1946 \@setlimits\@donotelist\@donotelow\@donotehigh\fi
1947 \normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
1948 \setcounter{note}{0}\@makingslidestrue\input #1\@makingslidesfalse}
1949 %    \end{macrocode}
1950 %\begin{verbatim}
1951 % \colors{COLORS} ::=
1952 %  for \@colortemp := COLORS
1953 %     do \csname \@colortemp \endcsname == \@color{\@colortemp} od
1954 %  if \@colorlist = empty
1955 %     then \@colorlist := COLORS
1956 %     else \@colorlist := \@colorlist , COLORS
1957 %  fi
1958 %\end{verbatim}
1960 %    \begin{macrocode}
1961 \def\colors#1{\@for\@colortemp:=#1\do{\expandafter
1962   \xdef\csname\@colortemp\endcsname{\noexpand\@color{\@colortemp}}}\ifx
1963   \@colorlist\@empty \gdef\@colorlist{#1}%
1964     \else \xdef\@colorlist{\@colorlist,#1}\fi}
1966 \def\@colorlist{}
1967 %    \end{macrocode}
1968 %\begin{verbatim}
1969 % \colorslides{FILE} ::=
1970 %    \newpage
1971 %    page counter := 0
1972 %    @bw := F
1973 %    for \@currcolor := \@colorlist
1974 %      do  @visible := T
1975 %          if @onlyslidesw = true
1976 %            then  \@doslidelist := \@doglslidelist
1977 %                  \@setlimits\@doslidelist\@doslidelow\@doslidehigh
1978 %          fi
1979 %          if @onlynotesw = true
1980 %            then  \@donotelist := \@doglnotelist
1981 %                  \@setlimits\@donotelist\@donotelow\@donotehigh
1982 %          fi
1983 %          \normalsize
1984 %          counter slide := 0
1985 %          counter overlay := 0
1986 %          counter note    := 0
1987 %          type message
1988 %          generate color layer output page
1989 %          @makingslides := T
1990 %          input #1
1991 %          @makingslides := F
1992 %      od
1993 %\end{verbatim}
1994 %    \begin{macrocode}
1995 \def\colorslides#1{\newpage\setcounter{page}{0}\@bwfalse
1996 \@for\@currcolor:=\@colorlist\do
1997 {\@visibletrue
1998 \if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
1999 \@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
2000 \if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
2001 \@setlimits\@donotelist\@donotelow\@donotehigh\fi
2002 \normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
2003 \setcounter{note}{0}\typeout{color \@currcolor}%
2004 \newpage
2005 \begin{huge}%
2006 \begin{center}%
2007 COLOR LAYER\\[.75in]%
2008 \@currcolor
2009 \end{center}%
2010 \end{huge}%
2011 \newpage
2012 \@makingslidestrue
2013 \input #1
2014 \@makingslidesfalse}}
2016 \else  %% if@compatibility 
2018 \def\setupcounters{\newpage\setcounter{page}{0}\@bwtrue\@visibletrue
2019 \if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
2020 \@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
2021 \if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
2022 \@setlimits\@donotelist\@donotelow\@donotehigh\fi
2023 \normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
2024 \setcounter{note}{0}\@makingslidesfalse}
2026 \AtBeginDocument{\setupcounters}
2027 \fi %% if@compatibility
2028 %    \end{macrocode}
2029 %\begin{verbatim}
2030 % \slide COLORS ::=
2031 %  BEGIN
2032 % \changes{v2.3}{1994/03/16}{Moved \cs{newpage} up front, here and in
2033 %    \cs{note} and \cs{overlay}}
2034 %   \par\break                           
2035 %   \stepcounter{slide}
2036 %   \setcounter{page}{0}                    % in case of non-slide pages
2037 %   \@slidesw :=G T
2038 %   if @onlyslidesw = true                  % set \@slidesw = T iff
2039 %     then                                  % page to be output
2040 %       while \c@slide > \@doslidehigh
2041 %          do  \@setlimits\@doslidelist\@doslidelow\@doslidehigh  od
2042 %       if \c@slide < \@doslidelow
2043 %         then \@slidesw := F
2044 %       fi
2045 %   fi
2046 %   if \@slidesw = T
2047 %      then \@slidesw :=G F
2048 %           \begingroup
2049 %              if @bw = true
2050 %                then  \@slidesw :=G T
2051 %                else \@color{COLORS}
2052 %                     \if@visible then \@slidesw :=G T \fi
2053 %              fi
2054 %            \endgroup
2055 %  fi
2056 %  if \@slidesw = T
2057 %    then @makingslides  := T
2058 %         \thispagestyle{slide}
2059 %    else \end{slide}
2060 %          \@gobbletoend{slide}
2061 %  fi
2062 % END
2064 % \endslide ::=
2065 %  BEGIN
2066 %    \par\break
2067 %  END
2068 %\end{verbatim}
2069 %    \begin{macrocode}
2070 \if@compatibility
2071 \def\slide#1{\stepcounter{slide}\G@slideswtrue\if@onlyslidesw
2072 \@whilenum \c@slide >\@doslidehigh\relax
2073 \do{\@setlimits\@doslidelist\@doslidelow\@doslidehigh}\ifnum
2074 \c@slide <\@doslidelow\relax\G@slideswfalse\fi\fi
2075 \ifG@slidesw
2076   \G@slideswfalse
2077 % FMi this is only a hack at the moment to get things running.
2078 %  \begingroup
2079   \if@bw\G@slideswtrue\else
2080     \@color{#1}\if@visible \G@slideswtrue \fi
2081   \fi
2082 %  \endgroup
2084 \ifG@slidesw \newpage\thispagestyle{slide}%
2085 %    \end{macrocode}
2086 %    This will set up the last color specified in the argument to
2087 %    \verb+\slide+ as the current color. If only back and white  slides
2088 %    are prepared \verb+\last@color+ will be empty and effectly
2089 %    \verb+\relax+ will be generated (hopefully).
2091 %    We need to reset to a default font at the beginning of a slide.
2092 %    (not done yet).
2093 %    \begin{macrocode}
2094 \csname \last@color \endcsname
2095 %    \end{macrocode}
2096 %    \begin{macrocode}
2097 \else\end{slide}\@gobbletoend{slide}\fi}
2099 \else  %% if@compatibility
2101 \def\slide{\par\break
2102 \stepcounter{slide}\setcounter{page}{0}\G@slideswtrue\if@onlyslidesw
2103 \@whilenum \c@slide >\@doslidehigh\relax
2104 \do{\@setlimits\@doslidelist\@doslidelow\@doslidehigh}\ifnum
2105 \c@slide <\@doslidelow\relax\G@slideswfalse\fi\fi
2106 \ifG@slidesw
2107   \G@slideswfalse
2108 % FMi this is only a hack at the moment to get things running.
2109 %  \begingroup
2110   \if@bw\G@slideswtrue\else
2111     \if@visible \G@slideswtrue \fi
2112   \fi
2113 %  \endgroup
2115 \ifG@slidesw \@makingslidestrue\thispagestyle{slide}%
2116 %    \end{macrocode}
2117 %    This will set up the last color specified in the argument to
2118 %    \verb+\slide+ as the current color. If only back and white  slides
2119 %    are prepared \verb+\last@color+ will be empty and effectly
2120 %    \verb+\relax+ will be generated (hopefully).
2122 %    We need to reset to a default font at the beginning of a slide.
2123 %    (not done yet).
2124 %    \begin{macrocode}
2125 \csname \last@color \endcsname
2126 %    \end{macrocode}
2127 %    \begin{macrocode}
2128 \else\end{slide}\@gobbletoend{slide}\fi}
2129 \fi %% if@compatibility
2131 \let\last@color\@empty
2133 \def\endslide{\par\break}
2134 %    \end{macrocode}
2135 %\begin{verbatim}
2136 % \overlay COLORS ::=
2137 %  BEGIN
2138 %   \par\break                           
2139 %   \stepcounter{overlay}
2140 %   \setcounter{page}{0}                    % in case of non-slide pages
2141 %   \@slidesw :=G T
2142 %   if @onlyslidesw = T                     % set \@slidesw = T iff
2143 %     then                                  % page to be output
2144 %       if \c@slide < \@doslidelow
2145 %         then \@slidesw :=G F
2146 %       fi
2147 %  fi
2148 %  if \@slidesw = T
2149 %    \@slidesw :=G F
2150 %    \begingroup
2151 %      if @bw = true
2152 %          then  \@slidesw :=G T
2153 %          else  \@color{COLORS}
2154 %                \if@visible then \@slidesw :=G T \fi
2155 %      fi
2156 %    \endgroup
2157 %  fi
2158 %  if \@slidesw = T
2159 %     then @makingslides  := T
2160 %          \thispagestyle{overlay}
2161 %     else \end{overlay}
2162 %          \@gobbletoend{overlay}
2163 %  fi
2164 % END
2166 % \endoverlay ::=
2167 %  BEGIN
2168 %    \par\break
2169 %  END
2170 %\end{verbatim}
2171 %    \begin{macrocode}
2172 \if@compatibility
2173 \def\overlay#1{\stepcounter{overlay}\G@slideswtrue%
2174 \if@onlyslidesw\ifnum \c@slide <\@doslidelow\relax
2175 \G@slideswfalse\fi\fi
2176 \ifG@slidesw \G@slideswfalse\begingroup\if@bw\G@slideswtrue%
2177 \else\@color{#1}\if@visible \G@slideswtrue\fi\fi\endgroup\fi
2178 \ifG@slidesw \newpage\thispagestyle{overlay}%
2179 \else\end{overlay}\@gobbletoend{overlay}\fi}
2181 \else %%if@compatibility
2183 \def\overlay{\par\break
2184   \stepcounter{overlay}%
2185   \setcounter{page}{0}%
2186   \G@slideswtrue%
2187   \if@onlyslidesw\ifnum \c@slide <\@doslidelow\relax
2188     \G@slideswfalse\fi\fi
2189   \ifG@slidesw \G@slideswfalse
2190     \begingroup\if@bw\G@slideswtrue%
2191                \else\if@visible \G@slideswtrue\fi\fi
2192     \endgroup\fi
2193   \ifG@slidesw \@makingslidestrue\thispagestyle{overlay}%
2194   \else\end{overlay}\@gobbletoend{overlay}\fi}
2195 \fi %%if@compatibility
2197 \def\endoverlay{\par\break}
2198 %    \end{macrocode}
2200 % \changes{v2.0d}{1993/11/12}{Removed extra blank.}
2201 %\begin{verbatim}
2202 % \note ::=
2203 %  BEGIN
2204 %   \par\break                           
2205 %   \stepcounter{note}
2206 %   \setcounter{page}{0}                    % in case of non-slide pages
2207 %   if @bw = T
2208 %     then
2209 %       \@slidesw :=G T
2210 %       if @onlynotesw = true                  % set \@notesw = T iff
2211 %         then                                 % page to be output
2212 %           while \c@slide > \@donotehigh
2213 %              do  \@setlimits\@donotelist\@donotelow\@donotehigh  od
2214 %           if \c@slide < \@donotelow
2215 %             then \@slidesw :=G F
2216 %           fi
2217 %       fi
2218 %     else \@slidesw :=G F
2219 %  fi
2220 %  if \@slidesw = T
2221 %     then @makingslides   := T
2222 %          \thispagestyle{note}
2223 %     else \end{note}
2224 %          \@gobbletoend{note}
2225 %  fi
2226 % END
2228 % \endnote ::=
2229 %  BEGIN
2230 %    \par\break
2231 %  END
2232 %\end{verbatim}
2233 %    \begin{macrocode}
2234 \if@compatibility
2235 \def\note{\stepcounter{note}%
2236    \if@bw
2237       \G@slideswtrue
2238       \if@onlynotesw\@whilenum \c@slide >\@donotehigh\relax
2239       \do{\@setlimits\@donotelist\@donotelow\@donotehigh}\ifnum
2240         \c@slide <\@donotelow\relax \G@slideswfalse\fi\fi
2241       \else\G@slideswfalse\fi
2242       \ifG@slidesw \newpage\thispagestyle{note}\else
2243       \end{note}\@gobbletoend{note}\fi}
2245 \else %%if@compatibility
2247 \def\note{\par\break\stepcounter{note}\setcounter{page}{0}%
2248    \if@bw
2249       \G@slideswtrue
2250       \if@onlynotesw\@whilenum \c@slide >\@donotehigh\relax
2251       \do{\@setlimits\@donotelist\@donotelow\@donotehigh}\ifnum
2252         \c@slide <\@donotelow\relax \G@slideswfalse\fi\fi
2253       \else\G@slideswfalse\fi
2254       \ifG@slidesw \@makingslidestrue\thispagestyle{note}\else
2255       \end{note}\@gobbletoend{note}\fi}
2256 \fi %%if@compatibility
2258 \def\endnote{\par\break}
2259 %    \end{macrocode}
2260 %\begin{verbatim}
2261 % \@color{COLORS} ::=
2262 %  BEGIN
2263 %   if math mode
2264 %     then type warning
2265 %   fi
2266 %   if @bw
2267 %     then \visible
2268 %     else \invisible
2269 %         for \last@color := COLORS
2270 %          do if \last@color = \@currcolor
2271 %               then \visible
2272 %             fi
2273 %          od
2274 %   fi
2275 %   \ignorespaces
2276 % END
2277 %\end{verbatim}
2278 % FMi: |\last@color| will be used in |\slide| to set up first
2279 %      color if no color is given.
2280 % I suppose that this is much too complicated. |\else\@tempswafalse|
2281 % would produce the same effect I imagine.
2282 %    \begin{macrocode}
2283 \def\@color#1{\@mmodetest
2284  {\if@bw \@tempswatrue \else \@tempswafalse
2285    \@for \reserved@a :=#1\do{\ifx\reserved@a\@currcolor\@tempswatrue\fi
2286                          \let\last@color\reserved@a}\fi
2287   \if@tempswa \visible \else \invisible \fi
2288   \ignorespaces}}
2290 \def\@mmodetest#1{\ifmmode\ClassWarning{slides}{Color-changing command
2291        in math mode has been ignored}\else #1\fi}
2293 \def\invisible{\@mmodetest
2294   {\if@visible
2295      \@visiblefalse
2296      \fontshape\f@shape\selectfont
2297      \mathversion{invisible}%
2298    \fi
2299    \ignorespaces}}
2301 \def\visible{\@mmodetest
2302   {\if@visible
2303    \else
2304      \@visibletrue
2305 %    \end{macrocode}
2306 %    Here is the \LaTeXe{} interface hidden. We use a trick to provide
2307 %    ourselves with a sort of additional attribute without making the
2308 %    current mechanism even larger. The trick is that we denote
2309 %    invisible by putting an uppercase |I| in front of the shape name
2310 %    for invisible shapes and remove it again if we want to become
2311 %    visible.
2312 %    \begin{macrocode}
2313      \fontshape{\expandafter\@gobble\f@shape}\selectfont
2314      \mathversion{normal}%
2315    \fi
2316    \ignorespaces}}
2318 \def\fontshape#1{\edef\f@shape{\if@visible \else I\fi #1}}
2319 %    \end{macrocode}
2321 % \subsection{Macros for font handling}
2323 %    We let |\familydefault| point at |\sfdefault|, to make it easier
2324 %    to use the document class slides with packages that set up other
2325 %    fonts. 
2326 %    \begin{macrocode}
2327 \renewcommand{\familydefault}{\sfdefault}
2328 %    \end{macrocode}
2330 %  \changes{v2.3l}{1994/12/16}{Added the declaration of the lasy font
2331 %    family}
2332 %    The \texttt{latexsym} package, which is needed to be able to access
2333 %    the \LaTeX\ symbol fonts (lasy), sets things up so that for sizes
2334 %    larger then 10 point magnifications of \texttt{lasy10} are
2335 %    used. For slides we want to use magnifications of \texttt{lasy8},
2336 %    so we set up the lasy family here to prevent \LaTeX\ from loading
2337 %    \texttt{Ulasy.fd}.
2338 %    \begin{macrocode}
2339 \DeclareFontFamily{U}{lasy}{}{}
2340 \DeclareFontShape{U}{lasy}{m}{n}{%
2341       <12><13.82><16.59><19.907><23.89><28.66><34.4><41.28>lasy8
2343 \DeclareFontShape{U}{lasy}{m}{In}{%
2344       <13.82><16.59><19.907><23.89><28.66><34.4><41.28>ilasy8
2346 %    \end{macrocode}
2348 %    \begin{macrocode}
2349 \message{picture,}
2350 %    \end{macrocode}
2352 %  \subsubsection{Modifications to the picture environment}
2354 %  Below are the new definitions of the picture-drawing macros
2355 %  required for SLiTeX.  Only those commands that actually
2356 %  draw something must be changed so that they do not produce
2357 %  any output when the |@visible| switch is false.
2359 % \changes{v2.2j}{1994/03/11}{Corrected \cs{@oval}, like previous
2360 %    change to \file{latex.dtx}.}
2361 %    \begin{macrocode}
2362 \def\line(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax
2363 \@linelen #3\unitlength
2364 \ifnum\@xarg =\z@ \@vline
2365   \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
2366 \fi\fi}
2368 \def\vector(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax
2369 \@linelen #3\unitlength
2370 \ifnum\@xarg =\z@ \@vvector
2371   \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
2372 \fi\fi}
2374 \def\dashbox#1(#2,#3){%
2375 \leavevmode\if@visible\hb@xt@\z@{\baselineskip \z@
2376 \lineskip \z@
2377 \@dashdim #2\unitlength
2378 \@dashcnt \@dashdim \advance\@dashcnt 200
2379 \@dashdim #1\unitlength\divide\@dashcnt \@dashdim
2380 \ifodd\@dashcnt\@dashdim\z@
2381 \advance\@dashcnt \@ne \divide\@dashcnt \tw@
2382 \else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
2383 \advance\@dashcnt \m@ne
2384 \setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
2385 \@width \@dashdim}\put(0,0){\copy\@dashbox}%
2386 \put(0,#3){\copy\@dashbox}%
2387 \put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
2388 \put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
2389 \multiply\@dashdim \thr@@
2391 \setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
2392 \@width #1\unitlength\hskip #1\unitlength}\@tempcnta\z@
2393 \put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
2394 \do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
2395 \put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
2396 \do{\copy\@dashbox\advance\@tempcnta \@ne }}%
2397 \@dashdim #3\unitlength
2398 \@dashcnt=\@dashdim \advance\@dashcnt 200
2399 \@dashdim #1\unitlength\divide\@dashcnt \@dashdim
2400 \ifodd\@dashcnt \@dashdim=\z@
2401 \advance\@dashcnt \@ne \divide\@dashcnt \tw@
2402 \else
2403 \divide\@dashdim \tw@ \divide\@dashcnt \tw@
2404 \advance\@dashcnt \m@ne
2405 \setbox\@dashbox\hbox{\hskip -\@halfwidth
2406 \vrule \@width \@wholewidth
2407 \@height \@dashdim}\put(0,0){\copy\@dashbox}%
2408 \put(#2,0){\copy\@dashbox}%
2409 \put(0,#3){\lower\@dashdim\copy\@dashbox}%
2410 \put(#2,#3){\lower\@dashdim\copy\@dashbox}%
2411 \multiply\@dashdim \thr@@
2413 \setbox\@dashbox\hbox{\vrule \@width \@wholewidth
2414 \@height #1\unitlength}\@tempcnta\z@
2415 \put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
2416 \do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
2417 \vskip\@dashdim}}\@tempcnta\z@
2418 \put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
2419 \relax\do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
2420 \vskip\@dashdim}}}\fi\@makepicbox(#2,#3)}
2422 \def\@oval(#1,#2)[#3]{\if@visible\begingroup \boxmaxdepth \maxdimen
2423   \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
2424   \@tfor\reserved@a :=#3\do
2425      {\csname @ov\reserved@a false\endcsname}\@ovxx
2426   #1\unitlength \@ovyy #2\unitlength
2427   \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
2428   \advance \@tempdimb -2\p@
2429   \@getcirc \@tempdimb
2430   \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
2431   \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
2432   \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
2433   \@circlefnt \setbox\@tempboxa
2434   \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
2435   \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
2436   \if@ovt \@ovhorz \kern -\@ovxx \fi
2437   \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
2438   \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
2439   \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
2440   \endgroup\fi}
2442 \def\@circle#1{\if@visible \begingroup \boxmaxdepth \maxdimen
2443    \@tempdimb #1\unitlength
2444    \ifdim \@tempdimb >15.5\p@\relax \@getcirc\@tempdimb
2445       \@ovro\ht\@tempboxa
2446      \setbox\@tempboxa\hbox{\@circlefnt
2447       \advance\@tempcnta\tw@ \char \@tempcnta
2448       \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima
2449       \advance\@tempcnta\tw@
2450       \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima
2451         \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
2452       \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
2453    \else  \@circ\@tempdimb{96}\fi\endgroup\fi}
2455 %    \end{macrocode}
2457 % \changes{v2.0d}{1993/11/12}{Removed extra blank.}
2458 %    \begin{macrocode}
2459 \def\@dot#1{%
2460   \if@visible\@tempdimb #1\unitlength \@circ\@tempdimb{112}\fi}
2461 %    \end{macrocode}
2462 % \changes {v2.3m}{1994/03/20}{(DPC) Remove old \cs{@iframebox} and
2463 %    \cs{fbox} defn}
2464 % \changes {v2.3m}{1994/03/20}{(DPC) Add \cs{@frameb@x} defn.}
2465 %    \begin{macrocode}
2466 \def\@frameb@x#1{%
2467   \@tempdima\fboxrule
2468   \advance\@tempdima\fboxsep
2469   \advance\@tempdima\dp\@tempboxa
2470   \leavevmode
2471   \hbox{%
2472     \lower\@tempdima\hbox{%
2473       \vbox{%
2474         \if@visible\hrule\@height\else\vskip\fi\fboxrule
2475         \hbox{%
2476           \if@visible\vrule\@width\else\hskip\fi\fboxrule
2477           #1%
2478           \vbox{%
2479             \vskip\fboxsep
2480             \box\@tempboxa
2481             \vskip\fboxsep}%
2482           #1%
2483           \if@visible\vrule\@width\else\hskip\fi\fboxrule}%
2484         \if@visible\hrule\@height\else\vskip\fi\fboxrule}}}}
2486 %    \end{macrocode}
2488 %    \begin{macrocode}
2489 \long\def\frame#1{\if@visible\leavevmode
2490 \vbox{\vskip-\@halfwidth\hrule \@height\@halfwidth \@depth \@halfwidth
2491   \vskip-\@halfwidth\hbox{\hskip-\@halfwidth \vrule \@width\@wholewidth
2492   \hskip-\@halfwidth #1\hskip-\@halfwidth \vrule \@width \@wholewidth
2493   \hskip -\@halfwidth}\vskip -\@halfwidth\hrule \@height \@halfwidth
2494   \@depth \@halfwidth\vskip -\@halfwidth}\else #1\fi}
2495 %    \end{macrocode}
2497 % \changes{v2.0d}{1993/11/12}{Corrected \cs{@math} to \cs{m@th} in
2498 %    definition of \cs{underline}.}
2500 %    \begin{macrocode}
2501 \message{mods,}
2502 %    \end{macrocode}
2505 %  \subsubsection{Other modifications to \TeX{} and \LaTeX{} commands}
2507 % |\rule|
2508 %    \begin{macrocode}
2509 \def\@rule[#1]#2#3{\@tempdima#3\advance\@tempdima #1\leavevmode
2510  \hbox{\if@visible\vrule
2511   \@width#2 \@height\@tempdima \@depth-#1\else
2512 \vrule \@width \z@ \@height\@tempdima \@depth-#1\vrule
2513  \@width#2 \@height\z@\fi}}
2515 % \_  (Added 10 Nov 86)
2517 \def\_{\leavevmode \kern.06em \if@visible\vbox{\hrule \@width.3em}\else
2518    \vbox{\hrule \@height \z@ \@width.3em}\vbox{\hrule \@width \z@}\fi}
2519 %    \end{macrocode}
2520 %\begin{verbatim}
2521 % \overline, \underline, \frac and \sqrt
2523 % \@mathbox{STYLE}{BOX}{MTEXT} : Called in math mode, typesets MTEXT and
2524 %   stores result in BOX, using style STYLE.
2526 % \@bphant{BOX}    : Creates a phantom with dimensions BOX.
2527 % \@vbphant{BOX}   : Creates a phantom with ht of BOX and zero width.
2528 % \@hbphant{BOX}   : Creates a phantom with width of BOX
2529 %                    and zero ht & dp.
2530 % \@hvsmash{STYLE}{MTEXT} : Creates a copy of MTEXT with zero height and
2531 %                           width in style STYLE.
2532 %\end{verbatim}
2533 %    \begin{macrocode}
2534 \def\@mathbox#1#2#3{\setbox#2\hbox{$\m@th#1{#3}$}}
2536 \def\@vbphantom#1{\setbox\tw@\null \ht\tw@\ht #1\dp\tw@\dp #1%
2537    \box\tw@}
2539 \def\@bphantom#1{\setbox\tw@\null
2540    \wd\tw@\wd #1\ht\tw@\ht #1\dp\tw@\dp #1%
2541    \box\tw@}
2543 \def\@hbphantom#1{\setbox\tw@\null \wd\tw@\wd #1\ht\tw@\z@ \dp\tw@\z@
2544    \box\tw@}
2546 \def\@hvsmash#1#2{\@mathbox#1\z@{#2}\ht\z@\z@ \dp\z@\z@ \wd\z@\z@
2547    \box\z@}
2549 \def\underline#1{\relax\ifmmode
2550   \@xunderline{#1}\else $\m@th\@xunderline{\hbox{#1}}$\relax\fi}
2552 \def\@xunderline#1{\mathchoice{\@xyunderline\displaystyle{#1}}%
2553    {\@xyunderline
2554     \textstyle{#1}}{\@xyunderline\scriptstyle{#1}}{\@xyunderline
2555       \scriptscriptstyle{#1}}}
2557 \def\@xyunderline#1#2{%
2558    \@mathbox#1\@smashboxa{#2}\@hvsmash#1{\copy\@smashboxa}%
2559    \if@visible \@hvsmash#1{\@@underline{\@bphantom\@smashboxa}}\fi
2560   \@mathbox#1\@smashboxb{\@@underline{\box\@smashboxa}}%
2561    \@bphantom\@smashboxb}
2563 \let\@@overline=\overline
2565 \def\overline#1{\mathchoice{\@xoverline\displaystyle{#1}}{\@xoverline
2566     \textstyle{#1}}{\@xoverline\scriptstyle{#1}}{\@xoverline
2567       \scriptscriptstyle{#1}}}
2569 \def\@xoverline#1#2{%
2570    \@mathbox#1\@smashboxa{#2}\@hvsmash#1{\copy\@smashboxa}%
2571    \if@visible \@hvsmash#1{\@@overline{\@bphantom\@smashboxa}}\fi
2572    \@mathbox#1\@smashboxb{\@@overline{\box\@smashboxa}}%
2573    \@bphantom\@smashboxb}
2574 %    \end{macrocode}
2576 % \changes{v2.0b}{1993/04/14}{Corrected \cs{frac} command.}
2577 % \changes{v2.0d}{1993/11/12}{Removed \cs{vcenter} in \cs{@frac}.}
2579 %\begin{verbatim}
2580 % \@frac {STYLE}{DENOMSTYLE}{NUM}{DEN}{FONTSIZE} :
2581 %   Creates \frac{NUM}{DENOM}
2582 %   in style STYLE with NUM and DENOM in style DENOMSTYLE
2583 %   FONTSIZE should be \textfont \scriptfont or \scriptscriptfont
2584 %\end{verbatim}
2585 %    Added a group around the first argument of |\frac| to prevent
2586 %    changes (for example font changes) to modify the contents of the
2587 %    second argument.
2588 % \changes{v2.1c}{1993/12/13}{Added group around first arg.}
2589 %    \begin{macrocode}
2590 \def\frac#1#2{\mathchoice
2591    {\@frac\displaystyle\textstyle{#1}{#2}\textfont}{\@frac
2592          \textstyle\scriptstyle{#1}{#2}\textfont}{\@frac
2593          \scriptstyle\scriptscriptstyle{#1}{#2}\scriptfont}{\@frac
2594          \scriptscriptstyle\scriptscriptstyle{#1}{#2}\scriptscriptfont}}
2596 \def\@frac#1#2#3#4#5{%
2597    \@mathbox#1\@smashboxc{{\begingroup#3\endgroup\over#4}}%
2598    \setbox\tw@\null
2599    \ht\tw@ \ht\@smashboxc
2600    \dp\tw@ \dp\@smashboxc
2601    \wd\tw@ \wd\@smashboxc
2602    \box\if@visible\@smashboxc\else\tw@\fi}
2604 \def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\@xysqrt#1{#2}$}%
2605   \dimen@\ht\z@ \advance\dimen@-\dp\z@
2606   \mskip5mu\raise.6\dimen@\copy\rootbox \mskip-10mu\box\z@}
2607 %    \end{macrocode}
2608 % \changes{v2.3w}{1996/05/15}{Removed use of obsolete command
2609 %                             \cs{@@sqrt} (CAR)}
2610 %    \begin{macrocode}
2611 \def\sqrt{\@ifnextchar[{\@sqrt}{\@xsqrt}}
2612 \def\@sqrt[#1]{\root #1\of}
2613 \def\@xsqrt#1{\mathchoice{\@xysqrt\displaystyle{#1}}{\@xysqrt
2614      \textstyle{#1}}{\@xysqrt\scriptstyle{#1}}{\@xysqrt
2615     \scriptscriptstyle{#1}}}
2616 \def\@xysqrt#1#2{\@mathbox#1\@smashboxa{#2}\if@visible
2617     \@hvsmash#1{\sqrtsign{\@bphantom\@smashboxa}}\fi
2618     \phantom{\sqrtsign{\@vbphantom\@smashboxa}}\box\@smashboxa}
2620 \newbox\@smashboxa
2621 \newbox\@smashboxb
2622 \newbox\@smashboxc
2623 %    \end{macrocode}
2625 % array and tabular environments: changes to `\verb+|+', |\hline|,
2626 % |\cline|, and |\vline|,
2627 % added 8 Jun 88
2628 %    \begin{macrocode}
2629 \def\@arrayrule{\if@visible\@addtopreamble{\hskip -.5\arrayrulewidth
2630    \vrule \@width \arrayrulewidth\hskip -.5\arrayrulewidth}\fi}
2631 %    \end{macrocode}
2633 % \changes{v2.3t}{1996/01/31}{Change in \cs{cline} calling interface}
2634 %    \begin{macrocode}
2635 \def\cline#1{\if@visible\@cline#1\@nil\fi}
2637 \def\hline{\noalign{\ifnum0=`}\fi
2638     \if@visible \hrule \@height \arrayrulewidth
2639       \else \hrule \@width \z@
2640     \fi
2641     \futurelet \reserved@a\@xhline}
2643 \def\vline{\if@visible \vrule \@width \arrayrulewidth
2644             \else \vrule \@width \arrayrulewidth \@height \z@
2645            \@depth \z@ \fi}
2646 %    \end{macrocode}
2648 %    \begin{macrocode}
2649 \message{output,}
2650 %    \end{macrocode}
2652 % \subsubsection{Changes to \LaTeX{} output routine}
2654 %\begin{verbatim}
2655 %  \@makecol ==
2656 %    BEGIN
2657 % % Following test added for slides to check if extra page
2658 %     if @makingslides = T
2659 %     then if \c@page > 0
2660 %             then if \c@note > 0
2661 %                     then type 'Note \thenote too long.'
2662 %                     else if \c@overlay > 0
2663 %                            then type 'Overlay \theoverlay too long.'
2664 %                            else type 'Slide \theslide too long'
2665 %     fi     fi     fi     fi
2666 %     ifvoid \insert\footins
2667 %        then  \@outputbox := \box255
2668 %        else  \@outputbox := \vbox {\unvbox255
2669 %                                    \vskip \skip\footins
2670 %                                    \footnoterule
2671 %                                    \unvbox\@footinsert
2672 %                                   }
2673 %    fi
2674 %    \@freelist :=G \@freelist * \@midlist
2675 %    \@midlist  :=G empty
2676 %    \@combinefloats
2677 %    \@outputbox := \vbox to \@colht{\boxmaxdepth := \maxdepth
2678 %                                     \vfil     %%\vfil added for slides
2679 %                                     \unvbox\@outputbox
2680 %                                     \vfil }   %%\vfil added for slides
2681 %    \maxdepth :=G \@maxdepth
2682 %    END
2683 %\end{verbatim}
2684 % FMi simple hack to allow none centered slides Should be revised
2685 % of course.
2686 %    \begin{macrocode}
2687 \let\@topfil\vfil
2689 \def\@makecol{\if@makingslides\ifnum\c@page>\z@ \@extraslide\fi\fi
2690 \ifvoid\footins \setbox\@outputbox\box\@cclv \let\@botfil\vfil
2691    \else\let\@botfil\relax\setbox\@outputbox
2692      \vbox{\unvbox\@cclv\vfil
2693            \vskip\skip\footins\footnoterule\unvbox\footins\vskip
2694             \z@ plus.1fil\relax}\fi
2695   \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
2696      \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth
2697         \@topfil\unvbox\@outputbox\@botfil}\global\maxdepth\@maxdepth}
2699 \def\@extraslide{\ifnum\c@note>\z@
2700     \ClassWarning{slides}{Note \thenote\space too long}\else
2701      \ifnum\c@overlay>\z@
2702         \ClassWarning{slides}{Overlay \theoverlay\space too long}\else
2703         \ClassWarning{slides}{Slide \theslide\space too long}\fi\fi}
2704 %    \end{macrocode}
2706 %    \begin{macrocode}
2707 \message{init}
2708 %    \end{macrocode}
2711 % \subsubsection{Special \SLiTeX{} initializations}
2713 %FMi why not allow for ref's ?
2714 %    \begin{macrocode}
2715 %   \nofiles
2717 \@visibletrue
2718 %</cmd>
2719 %    \end{macrocode}
2722 % \Finale
2724 \endinput