1 % \iffalse meta-comment
4 % The LaTeX3 Project and any individual authors listed elsewhere
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
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.
18 % This file has the LPPL maintenance status "maintained".
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
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.
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 \~}
47 % Copyright (C) 1994-97 LaTeX3 project, Frank Mittelbach
48 % and Rainer Sch\"opf, all rights reserved.
51 %<+class>\NeedsTeXFormat{LaTeX2e}[1997/06/01]
54 % Announce the Class name and its version:
55 % \changes{v2.3b}{1994/05/01}{Removed the use of \cs{fileversion}
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
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).}
67 %<+class>\ProvidesClass{slides}
68 %<+cmd>\ProvidesFile{slides.def}
70 \ProvidesFile{slides.drv}
73 %<+class> Standard LaTeX document class]
74 %<+cmd> SLiTeX definitions]
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
89 \documentclass{ltxdoc}
91 % The following command retrieves the date and version information
94 \GetFileInfo{slides.drv}
96 % Some commonly used abbreviations:
97 % \changes{v2.3h}{1994/06/01}{Added definition of \cs{SLiTeX}.}
99 \DeclareRobustCommand{\SLiTeX}{{%
100 \normalfont S\kern -.06em
101 {\scshape l\kern -.035emi}\kern -.06em
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}}
111 % Now start the document and input this file.
112 % \changes{v2.3d}{1994/05/12}{Added a missing \cs{begin\{macrocode\}}}
115 \DocInput{slides.dtx}
122 % \changes{v2.1b}{1993/12/13}{Removed \cs{CodelineIndex} from the
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
148 % \changes{v2.3n}{1995/04/02}{a slight documentation fix (PR 1517)}
150 % \title{Producing slides with \LaTeXe{}}
151 % \author{Frank Mittelbach}
155 % \MaintainedByLaTeXTeam{latex}
157 % \section{Introduction}
159 % With \LaTeXe{} it is now no longer necessary to maintain a special
160 % format for producing overhead slides. Instead the standard format
161 % may be used and internally only different font definition files come
166 % For producing slides you have to use |slides| as the
167 % document class. This class is very similar to the |slides| style
168 % that came with \SliTeX{}, in fact it is basically a copy changed to
169 % work under \LaTeXe{}.\footnote{Therefore you should compare the
170 % new class with old \SliTeX{} styles
171 % in case you have local slide classes to see what you have to change
172 % in order to use them with \LaTeXe{}.} Thus you have to say something
175 % \documentclass[...]{slides}
177 % and process this with \LaTeXe.
181 % Note, that that with NFSS you can easily produce slides with special
182 % fonts just by calling an appropriate style file (like |times|) in a
183 % |\usepackage| command. This works, for example, with all
184 % fonts that are defined to be scaleable (e.g., PostScript fonts) since
185 % they can be used at any size by NFSS.
187 % However, packages like |pandora| won't work because the standard
188 % |.fd| files shipped with NFSS only contain small sizes. You can, of
189 % course, produce additional sizes and change the |.fd| files
190 % accordingly so that they would be useable for slides as well.
192 % \section{Invisible text and color separation}
194 % In the original \SliTeX{} it was possible to produce invisible text
195 % using the |\invisible| command, so that one was able to put several
196 % slides on top of each other (with each slides showing additional
197 % details, etc.). It was also possible to produce `color' slides. This
198 % was done by producing individual slides one for each color and
199 % placing them on top of each other.
201 % The availability of color printers and the |color| package make
202 % color separation obsolete, so it has been removed. Although the
203 % |color| has also made |\invisible| obsolete, the command is
204 % retained in the \LaTeXe{} implementation, but there
205 % are a few restrictions. Invisible fonts are implemented as special
206 % shapes where the shape names are build by prefixing the normal shape
207 % name with an uppercase |I|. For example, the `normal invisible
208 % shape' would be |In|. When \LaTeX{} is requested to typeset
209 % invisible it will thus change the current shape attribute in this
210 % manner. To make this work it is necessary that the resulting font
211 % shape group is defined. If not, the normal font substitution
212 % mechanism of \LaTeXe{} will change the attribute until it finds a
213 % usable font shape group with the result that the text may become
216 % As long as you use the standard fonts for slides this is not a
217 % problem because all the visible font shape groups have invisible
218 % counterparts. However, if you decide on using special fonts, e.g.,
219 % PostScript fonts, your |\DeclareFontShape| settings may not contain
220 % invisible font shape groups and thus you may be unable to use these
221 % features without adding additional |\DeclareFontShape| commands to
222 % your |.fd| files or the preamble of your document.
227 % \section{The Implementation}
230 % \textbf{Warning:} The implementation is still very experimental and
231 % may change internally very much. It currently basically consists of a
232 % slightly modified copy of |slides.sty| (which then forms
233 % |slides.cls|) followed by a slightly changed copy of |slitex.tex|.
234 % Documentation is practically
235 % non-existing. Everybody is invited to help changing this!
238 % The code is divided into two parts, we first implement the class
239 % related functions and declarations and then define lowlevel stuff
240 % that is necessary within every class. By placing such commands into
241 % a separate file it will be possible to share it with other slide
244 % \subsection{The class code}
246 % At this point we input the redefinitions that are necessary for
248 % \changes{v2.3g}{1994/05/26}{Use \cs{input} instead of \cs{@@input}}
255 % Now we are ready for setting up the font tables. As usual, we first
256 % look for a local configuration file |sfonts.cfg|. If there isn't
257 % one, we fall back to the default one (|sfonts.def|).
258 % \changes{v2.2i}{1994/03/08}{Corrected first argument of
259 % \cs{IfFileExists}: \file{sfonts.def} to \file{sfonts.cfg}.}
260 % \changes{v2.3g}{1994/05/26}{Use \cs{InputIfFileExists} instead of
261 % \cs{IfFileExists} and \cs{input} instead of \cs{@@input}}
263 \InputIfFileExists{sfonts.cfg}
264 {\typeout{**************************************^^J%
266 * Local config file sfonts.cfg used^^J%
268 **************************************}}%
272 % \section{Declaration of Options}
274 % We declare a few options as illegal.
277 % \subsection{Setting Paper Sizes}
279 % The variables |\paperwidth| and |\paperheight| should reflect the
280 % physical paper size after trimming. For desk printer output this
281 % is usually the real paper size since there is no post-processing.
282 % Classes for real book production will probably add other paper
283 % sizes and additionally the production of crop marks for trimming.
284 % \changes{v2.1d}{1993/12/14}{Corrected typo, A4 is not 279 mm high}
286 \DeclareOption{a4paper}
287 {\setlength\paperheight {297mm}%
288 \setlength\paperwidth {210mm}}
289 \DeclareOption{a5paper}
290 {\setlength\paperheight {210mm}%
291 \setlength\paperwidth {148mm}}
292 \DeclareOption{b5paper}
293 {\setlength\paperheight {250mm}%
294 \setlength\paperwidth {176mm}}
295 \DeclareOption{letterpaper}
296 {\setlength\paperheight {11in}%
297 \setlength\paperwidth {8.5in}}
298 \DeclareOption{legalpaper}
299 {\setlength\paperheight {14in}%
300 \setlength\paperwidth {8.5in}}
301 \DeclareOption{executivepaper}
302 {\setlength\paperheight {10.5in}%
303 \setlength\paperwidth {7.25in}}
306 % The option \Lopt{landscape} switches the values of |\paperheight|
307 % and |\paperwidth|, assuming the dimensions wer given for portrait
310 \DeclareOption{landscape}
311 {\setlength\@tempdima {\paperheight}%
312 \setlength\paperheight {\paperwidth}%
313 \setlength\paperwidth {\@tempdima}}
316 % \subsection{The clock option}
318 % The option \Lopt{clock} prints the time at the bottom of each note.
319 % We also define here the commands and counters used to keep track of
322 \newif\if@clock \@clockfalse
323 \DeclareOption{clock}{\@clocktrue
324 \AtEndDocument{\typeout{\@arabic\c@minutes\space minutes}}
326 \newcounter{minutes}%
327 \newcounter{seconds}%
328 \newcommand*{\settime}[1]{\setcounter{seconds}{0}\addtime{#1}}%
329 \newcommand*{\addtime}[1]{\addtocounter{seconds}{#1}%
330 \setcounter{minutes}{\value{seconds}}%
331 \global \divide \value{minutes} by 60\relax}
335 % \subsection{Two-side or one-side printing}
337 % Two-sided printing is not allowed, so don't declare an option.
338 % But it is necessary to initialize the switch.
339 % \changes{v2.2h}{1994/03/07}{Removed declared option twoside.}
345 % \subsection{Draft option}
347 % If the user requests \Lopt{draft} we show any overfull boxes.
348 % We could probably add some more interesting stuff to this option.
350 \DeclareOption{draft}{\setlength\overfullrule{5pt}}
351 \DeclareOption{final}{\setlength\overfullrule{0pt}}
354 % \subsection{Titlepage option}
355 % The default is for a |\maketitle| command to make a new page.
359 \DeclareOption{titlepage}{\@titlepagetrue}
360 \DeclareOption{notitlepage}{\@titlepagefalse}
363 % \subsection{Twocolumn printing}
365 % Two-column printing is again forbidden.
366 % \changes{v2.3e}{1994/05/22}{twocolumn produces only a warning}
368 \DeclareOption{onecolumn}{}
369 \DeclareOption{twocolumn}{%
370 \ClassWarning{slides}{No 'twocolumn' layout for slides}}
373 % \subsection{Equation numbering on the left}
375 % The option \Lopt{leqno} can be used to get the equation numbers
376 % on the left side of the equation.
377 % \changes{v2.2g}{1994/03/01}{Option leqno loads \file{leqno.clo}
380 \DeclareOption{leqno}{\input{leqno.clo}}
383 % \subsection{Flush left displays}
385 % The option \Lopt{fleqn} redefines the displayed math environments
386 % in such a way that they come out flush left, with an indentation
387 % of |\mathindent| from the prevailing left margin.
388 % \changes{v2.2g}{1994/03/01}{Added fleqn option.}
390 \DeclareOption{fleqn}{\input{fleqn.clo}}
394 % \section{Executing Options}
396 % Here we execute the default options to initialize certain
399 \ExecuteOptions{letterpaper,final}
402 % The |\ProcessOptions| command causes the execution of the code
403 % for every option \Lopt{FOO}
404 % which is declared and for which the user typed
405 % the \Lopt{FOO} option in his
406 % |\documentclass| command. For every option \Lopt{BAR} he typed,
407 % which is not declared, the option is assumed to be a global option.
408 % All options will be passed as document options to any
409 % |\usepackage| command in the document preamble.
414 % \section{Loading Packages}
416 % The standard class files do not load additional packages.
419 % \section{Document Layout}
422 % In this section we are finally dealing with the nasty typographical
431 \def\rmdefault{lcmss} % no roman
432 \def\sfdefault{lcmss}
433 \def\ttdefault{lcmtt}
440 % Since the number of parameters to set are very large it seems
441 % reasonable to set up one command |\@setfontsize@parms| which will
442 % do the work for us.
444 % \LaTeX\ offers the user commands to change the size of the font,
445 % relative to the `main' size. Each relative size changing command
446 % |\size| executes the command
447 % |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
449 % \begin{description}
450 % \item[\meta{font-size}] The absolute size of the font to use from
453 % \item[\meta{baselineskip}] The normal value of |\baselineskip|
454 % for the size of the font selected. (The actual value will be
455 % |\baselinestretch| * \meta{baselineskip}.)
458 % A number of commands, defined in the \LaTeX{} kernel, shorten the
459 % following definitions and are used throughout. They are:
461 % \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
462 % \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
463 % \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
464 % \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
469 % \begin{macro}{\ifourteenpt}
470 % \begin{macro}{\iseventeenpt}
471 % \begin{macro}{\itwentypt}
472 % \begin{macro}{\itwentyfourpt}
473 % \begin{macro}{\itwentyninept}
474 % \begin{macro}{\ithirtyfourpt}
475 % \begin{macro}{\ifortyonept}
476 % For \SLiTeX{}, however, these are not sufficient, and we therefore
477 % need to add a few extra, larger, sizes.
479 \def\ifourteenpt{13.82}
480 \def\iseventeenpt{16.59}
481 \def\itwentypt{19.907}
482 \def\itwentyfourpt{23.89}
483 \def\itwentyninept{28.66}
484 \def\ithirtyfourpt{34.4}
485 \def\ifortyonept{41.28}
495 % \begin{macro}{\@setfontsize@parms}
496 % This routine is used in \SliTeX{} to interface font size setting
497 % it is modeled after the settings I found in \texttt{slides.sty}, so
498 % it probably needs an update. But any class is free to redefine
499 % it, as it is used only as an abbreviation.
502 % |\@setfontsize@parms| \\
503 % | |\meta{lineskip} \\
504 % | |\meta{parskip} \\
505 % | |\meta{abovedisplayskip} \\
506 % | |\meta{belowdisplayskip} \\
507 % | |\meta{abovedisplayshortskip} \\
508 % | |\meta{belowdisplayshortskip} \\
509 % | |\meta{strut ht} \meta{strut dp} (without pt)
512 % For NFSS1 a similar style existed which did run both with a
513 % \SliTeX{} with old font selection or with NFSS1. But when no
514 % separate format is made this doesn't make much sense.
515 % So the following note is history and would only be true if all NFSS
516 % stuff would be removed from the file and placed into the format.
517 % \begin{quote}\small
518 % Note: To interface the old \texttt{sfonts.tex} the \meta{size} must be
519 % hidden in commands denoting the size by its name prefixed with
520 % `i', i.e.\ 20pt size is called |\itwentypt| at this point. The
521 % NFSS interface will define those sizes to expand to the internal
522 % size, e.g.\ 20 but for the old sfonts the command name, e.g.
523 % |\itwentypt|, will be used to construct the name |\twentypt| etc.
525 % This is a crude interface to the old \texttt{sfonts.tex}. It will
526 % be a bit slower than the old one because it must define |\@tiny|
527 % etc.\ every time a size changes.
530 % If classes are set up that are only for use with NFSS then the second
531 % argument may be an ordinary font size!
532 % \changes{v2.0d}{1993/11/12}{Replaced all pt by \cs{p@}, corrected
533 % definition for \cs{tiny}.}
536 \def\@setfontsize@parms#1#2#3#4#5#6#7#8{%
539 \abovedisplayskip #3\relax
540 \belowdisplayskip #4\relax
541 \abovedisplayshortskip #5\relax
542 \belowdisplayshortskip #6\relax
545 % I don't see a reason why the |\strutbox| has a dim different from
546 % |\baselineskip| but we will leave it for the moment
548 \setbox\strutbox=\hbox{\vrule \@height#7\p@\@depth#8\p@\@width\z@}%
549 \baselineskip\baselinestretch\baselineskip
550 \normalbaselineskip\baselineskip}
554 % Setting size relations for math scripts:
555 % \changes{v2.2e}{1994/02/07}{Corrected entry for size 23.89.}
557 \DeclareMathSizes{13.82}{13.82}{10}{7}
558 \DeclareMathSizes{16.59}{16.59}{12}{7}
559 \DeclareMathSizes{19.907}{19.907}{16.59}{13.82}
560 \DeclareMathSizes{23.89}{23.89}{19.907}{16.59}
561 \DeclareMathSizes{28.66}{28.66}{23.89}{19.907}
562 \DeclareMathSizes{34.4}{34.4}{28.66}{23.89}
563 \DeclareMathSizes{41.28}{41.28}{34.4}{28.66}
566 % \begin{macro}{\normalsize}
569 \@setfontsize\normalsize\itwentypt{28\p@ plus3\p@ minus4\p@}%
570 % {20}{30\p@ plus3\p@ minus3\p@}% made a bit shorter
573 {30\p@ plus18\p@ minus9\p@}%
574 {15\p@ plus3\p@ minus3\p@}%
575 {10\p@ plus3\p@ minus3\p@}%
577 \abovedisplayshortskip
583 % We initially choose the normalsize font.
588 % \begin{macro}{\small}
590 \def\small{\@setfontsize\small\iseventeenpt{19\p@ plus3\p@ minus\p@}%
593 {15\p@ plus15\p@ minus7\p@}%
594 {12\p@ plus3\p@ minus3\p@}%
595 {9\p@ plus3\p@ minus3\p@}%
597 \abovedisplayshortskip
602 % \begin{macro}{\footnotesize}
603 % \begin{macro}{\scriptsize}
605 \let\footnotesize=\small
606 \let\scriptsize=\small
611 % \begin{macro}{\tiny}
613 \def\tiny{\@setfontsize\tiny\ifourteenpt{16\p@ plus2\p@ minus\p@}%
616 {14\p@ plus3\p@ minus10\p@}%
617 {11\p@ plus3\p@ minus10\p@}%
619 {8\p@ plus3\p@ minus5\p@}%
625 % Actually copying the code above would be better because this would
626 % correct the error message. Maybe one should remove the first
627 % argument of |\set@font@size@parms|.
629 % \begin{macro}{\large}
630 % \begin{macro}{\Large}
631 % \begin{macro}{\LARGE}
632 % \begin{macro}{\huge}
633 % \begin{macro}{\Huge}
635 \def\large{\@setfontsize\large\itwentyfourpt{42\p@ plus8\p@ minus5\p@}%
638 {40\p@ plus20\p@ minus4\p@}%
639 {20\p@ plus8\p@ minus3\p@}%
642 \abovedisplayshortskip
645 \def\Large{\@setfontsize\Large\itwentyninept{48\p@ plus10\p@ minus6\p@}%
648 {48\p@ plus30\p@ minus6\p@}%
649 {24\p@ plus10\p@ minus6\p@}%
652 \abovedisplayshortskip
655 \def\LARGE{\@setfontsize\LARGE\ithirtyfourpt{52\p@ plus10\p@ minus6\p@}%
658 {52\p@ plus30\p@ minus6\p@}%
659 {24\p@ plus10\p@ minus6\p@}%
662 \abovedisplayshortskip
665 \def\huge{\@setfontsize\huge\ifortyonept{60\p@ plus10\p@ minus6\p@}%
668 {60\p@ plus30\p@ minus6\p@}%
669 {24\p@ plus10\p@ minus6\p@}%
672 \abovedisplayshortskip
683 % \subsection{Paragraphing}
685 % \begin{macro}{\baselinestretch}
686 % This is used as a multiplier for |\baselineskip|. The default is
687 % to {\em not\/} stretch the baselines.
689 \renewcommand\baselinestretch{}
693 % \begin{macro}{\parindent}
694 % |\parindent| is the width of the paragraph indentation.
696 \setlength\parindent{\z@}
700 % \begin{macro}{\@lowpenalty}
701 % \begin{macro}{\@medpenalty}
702 % \begin{macro}{\@highpenalty}%
703 % The commands |\nopagebreak| and |\nolinebreak| put in penalties
704 % to discourage these breaks at the point they are put in.
705 % They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
706 % dependent on their argument.
716 % \begin{macro}{\clubpenalty}
717 % \begin{macro}{\widowpenalty}
718 % These penalties are use to discourrage club and widow lines.
719 % Because we use their default values we only show them here,
728 % \begin{macro}{\displaywidowpenalty}
729 % \begin{macro}{\predisplaypenalty}
730 % \begin{macro}{\postdisplaypenalty}
731 % Discourrage (but not so much) widows in front of a math display
732 % and forbid breaking directly in front of a display. Allow break
733 % after a display without a penalty. Again the default values are
734 % used, therefore we only show them here.
736 % \displaywidowpenalty 50
737 % \predisplaypenalty 10000
738 % \postdisplaypenalty 0
744 % \begin{macro}{\interlinepenalty}
745 % Allow the breaking of a page in the middle of a paragraph.
747 % \interlinepenalty 0
752 % \begin{macro}{\brokenpenalty}
753 % We allow the breaking of a page after a hyphenated line.
760 % \subsection{Page Layout}
762 % All margin dimensions are measured from a point one inch from the
763 % top and lefthand side of the page.
765 % \subsubsection{Vertical spacing}
767 % \begin{macro}{\headheight}
768 % \begin{macro}{\headsep}
769 % \begin{macro}{\topskip}
770 % The |\headheight| is the height of the box that will contain the
771 % running head. The |\headsep| is the distance between the bottom
772 % of the running head and the top of the text. |\topskip| is the
773 % |\baselineskip| for the first line on a page.
775 \setlength\headheight{14\p@}
776 \setlength\headsep {15\p@}
777 \setlength\topskip {30\p@}
783 % \begin{macro}{\footskip}
784 % The distance from the baseline of the box which contains the
785 % running footer to the baseline of last line of text is controlled
786 % by the |\footskip|.
789 \setlength\footskip{25\p@} %
793 % \begin{macro}{\maxdepth}
794 % \begin{macro}{\@maxdepth}
795 % \changes{v2.3c}{1994/05/06}{Added setting of \cs{maxdepth} and
797 % The \TeX\ primitive register |\maxdepth| has a function that is
798 % similar to that of |\topskip|. The register |\@maxdepth| should
799 % always contain a copy of |\maxdepth|. In both plain \TeX\ and
800 % \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
801 % native \LaTeX2e\ mode we let the value depend on the typesize. We
802 % set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
803 % 1.5$. As it happens, in these classes |\topskip| is equal to the
804 % typesize, therefor we set |\maxdepth| to half the value of
808 \setlength\maxdepth{4\p@}
810 \setlength\maxdepth{.5\topskip}
812 \setlength\@maxdepth\maxdepth
817 % \subsubsection{The dimension of text}
819 % \begin{macro}{\textwidth}
820 % When we are in compatibility mode we have to make sure that the
821 % dimensions of the printed area are not different from what the
822 % user was used to see.
826 \setlength\textwidth{460\p@}
828 % When we are not in compatibility mode we can set some of the
829 % dimensions differently, taking into account the paper size for
834 % First, we calculate the maximum textwidth, which depends on the
835 % papersize. Then we calculate the approximate length of 65
836 % characters, which should be the maximum length of a line of text.
837 % The calculated values are stored in |\@tempdima| and |\@tempdimb|.
839 \setlength\@tempdima{\paperwidth}
840 \addtolength\@tempdima{-2in}
841 \setbox\@tempboxa\hbox{\rmfamily im}
842 \setlength\@tempdimb{.5\wd\@tempboxa}
843 \setlength\@tempdimb{65\@tempdimb}
846 % Now we can set the |\textwidth|, depending on whether we will be
847 % setting one or two columns.
849 % The text should not be wider than the minimum
850 % of the paperwidth (minus 2 inches for the margins) and the
851 % maximum length of a line as defined by the number of characters.
853 \ifdim\@tempdima>\@tempdimb\relax
854 \setlength\textwidth{\@tempdimb}
856 \setlength\textwidth{\@tempdima}
861 % Here we modify the width of the text a little to be a whole
864 \@settopoint\textwidth
868 % \begin{macro}{\columnwidth}
869 % \begin{macro}{\columnsep}
870 % \begin{macro}{\columnseprule}
872 \columnwidth \textwidth
879 % \begin{macro}{\textheight}
880 % Now that we have computed the width of the text, we have to take
881 % care of the height. The |\textheight| is the height of text
882 % (including footnotes and figures, excluding running head and
885 % First make sure that the compatibility mode gets the same
886 % dimensions as we had with \LaTeX2.09. The number of lines was
887 % calculated as the floor of the old |\textheight| minus
888 % |\topskip|, divided by |\baselineskip| for |\normalsize|. The
889 % old value of |\textheight| was 528pt.
893 \setlength\textheight{600\p@}
896 % Again we compute this, depending on the papersize and depending
897 % on the baselineskip that is used, in order to have a whole number
898 % of lines on the page.
901 \setlength\@tempdima{\paperheight}
904 % We leave at least a 1 inch margin on the top and the bottom of
907 \addtolength\@tempdima{-2in}
910 % We also have to leave room for the running headers and footers.
912 \addtolength\@tempdima{-1in}
915 % Then we divide the result by the current |\baselineskip| and
916 % store this in the count register |\@tempcnta|, which then
917 % contains the number of lines that fit on this page.
919 \divide\@tempdima\baselineskip
920 \@tempcnta=\@tempdima
923 % From this we can calculate the height of the text.
925 \setlength\textheight{\@tempcnta\baselineskip}
929 % The first line on the page has a height of |\topskip|.
931 \advance\textheight by \topskip
935 % \subsubsection{Margins}
937 % \begin{macro}{\oddsidemargin}
938 % \begin{macro}{\evensidemargin}
939 % \begin{macro}{\marginparwidth}
940 % First we give the values for the compatibility mode.
942 % Values for two-sided printing:
945 \setlength\oddsidemargin {17\p@}
946 \setlength\evensidemargin {17\p@}
947 \setlength\marginparwidth {20\p@}
951 % When we are not in compatibility mode we can take the dimensions
952 % of the selected paper into account.
954 % We center the text on the page, by
955 % calculating the difference between |textwidth| and
956 % |\paperwidth|$-$|2in|. Half of that difference is then used for
957 % the margin. The amount of space that can be used for marginal
958 % notes is at least 0.8~inch, to which we add any `leftover' space.
960 \setlength\@tempdima {\paperwidth}
961 \addtolength\@tempdima {-2in}
962 \addtolength\@tempdima {-\textwidth}
963 \setlength\oddsidemargin {.5\@tempdima}
964 \setlength\marginparwidth {.8in}
965 \addtolength\marginparwidth {.5\@tempdima}
968 % The |\evensidemargin| can now be computed from the values set
971 \setlength\evensidemargin {\paperwidth}
972 \addtolength\evensidemargin{-2in}
973 \addtolength\evensidemargin{-\textwidth}
974 \addtolength\evensidemargin{-\oddsidemargin}
981 % \begin{macro}{\marginparsep}
982 % \begin{macro}{\marginparpush}
983 % The horizontal space between the main text and marginal notes is
984 % determined by |\marginparsep|, the minimum vertical separation
985 % between two marginal notes is controlled by |\marginparpush|.
987 \setlength\marginparsep {5\p@}
988 \setlength\marginparpush{5\p@}
993 % \begin{macro}{\topmargin}
994 % The |\topmargin| is the distance between the top of `the
995 % printable area' --which is 1 inch below the top of the paper--
996 % and the top of the box which contains the running head.
998 % It can now be computed from the values set above.
1001 \setlength\topmargin{-10pt}
1003 \setlength\topmargin{\paperheight}
1004 \addtolength\topmargin{-2in}
1005 \addtolength\topmargin{-\headheight}
1006 \addtolength\topmargin{-\headsep}
1007 \addtolength\topmargin{-\textheight}
1008 \addtolength\topmargin{-\footskip} % this might be wrong!
1010 % By changing the factor in the next line the complete page
1011 % can be shifted vertically.
1013 \addtolength\topmargin{-.5\topmargin}
1015 \@settopoint\topmargin
1020 % \subsubsection{Footnotes}
1022 % \begin{macro}{\footnotesep}
1023 % |\footnotesep| is the height of the strut placed at the beginning
1024 % of every footnote. It equals the height of a normal
1025 % |\footnotesize| strut in this
1026 % class, thus no extra space occurs between footnotes.
1028 \setlength\footnotesep{20\p@}
1032 % \begin{macro}{\footins}
1033 % |\skip\footins| is the space between the last line of the main
1034 % text and the top of the first footnote.
1036 \setlength{\skip\footins}{10\p@ \@plus 2\p@ \@minus 4\p@}
1041 % \subsection{Page Styles}
1043 % The page style \pstyle{foo} is defined by defining the command
1044 % |\ps@foo|. This command should make only local definitions.
1045 % There should be no stray spaces in the definition, since they
1046 % could lead to mysterious extra spaces in the output (well, that's
1047 % something that should be always avoided).
1049 % \begin{macro}{\@evenhead}
1050 % \begin{macro}{\@oddhead}
1051 % \begin{macro}{\@evenfoot}
1052 % \begin{macro}{\@oddfoot}
1053 % The |\ps@...| command defines the macros |\@oddhead|,
1054 % |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
1055 % heads and feet---e.g., |\@oddhead| is the macro to produce the
1056 % contents of the heading box for odd-numbered pages. It is called
1057 % inside an |\hbox| of width |\textwidth|.
1064 % The page styles of slides is determined by the 'slide' page style,
1065 % the slide environment executing a |\thispagestyle{slide}| command.
1066 % The page styles of overlays and notes are similarly determined by
1067 % 'overlay' and 'note' page styles. The command standard 'headings',
1068 % 'plain' and 'empty' page styles work by redefining the 'slide',
1069 % 'overlay', and 'note' styles.
1071 % \changes{v2.3q}{1995/09/20}{Wrap some long lines, and use \cs{null}.}
1072 % \begin{macro}{\ps@headings}
1076 \def\ps@slide{\def\@oddfoot{\@mainsize +\hfil\hb@xt@3em{\theslide
1078 \def\@oddhead{\@mainsize +\hfil +}%
1079 \def\@evenfoot{\@mainsize +\hfil\hb@xt@3em{\theslide\hss}}%
1080 \def\@evenhead{\@mainsize +\hfil +}}
1082 \def\ps@overlay{\def\@oddfoot{\@mainsize +\hfil\hb@xt@3em{\theoverlay
1084 \def\@oddhead{\@mainsize +\hfil +}%
1085 \def\@evenfoot{\@mainsize +\hfil\hb@xt@3em{\theoverlay\hss}}%
1086 \def\@evenhead{\@mainsize +\hfil +}}
1087 \def\ps@note{\def\@oddfoot{\@mainsize \hbox{}\hfil\thenote}%
1089 \def\@evenfoot{\@mainsize \hbox{}\hfil\thenote}%
1092 \else %%if@compatibility
1096 \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
1098 \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
1102 \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
1104 \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
1111 \fbox{\large \@arabic\c@minutes\space min}%
1120 \fbox{\large \@arabic\c@minutes\space min}%
1126 \fi %% if@compatibility
1130 % \begin{macro}{\ps@plain}
1132 \def\ps@plain{\def\ps@slide{%
1133 \def\@oddfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
1135 \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theslide\hss}}%
1137 \def\ps@overlay{\def\@oddfoot{\@mainsize
1138 \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
1140 \def\@evenfoot{\@mainsize \mbox{}\hfil\hb@xt@3em{\theoverlay\hss}}%
1142 \def\ps@note{\def\@oddfoot{\@mainsize \hbox{}\hfil\thenote}%
1144 \def\@evenfoot{\@mainsize \hbox{}\hfil\thenote}%
1149 % \begin{macro}{\ps@empty}
1152 \def\ps@slide{\def\@oddhead{}\def\@oddfoot{}%
1153 \def\@evenhead{}\def\@evenfoot{}}%
1154 \def\ps@overlay{\def\@oddhead{}\def\@oddfoot{}%
1155 \def\@evenhead{}\def\@evenfoot{}}%
1156 \def\ps@note{\def\@oddhead{}\def\@oddfoot{}%
1157 \def\@evenhead{}\def\@evenfoot{}}}
1161 % Default definition the 'slide', 'overlay', and 'note' page styles.
1165 % Set ordinary page style to 'empty'
1167 \let\@oddhead\@empty\let\@oddfoot\@empty
1168 \let\@evenhead\@empty\let\@evenfoot\@empty
1172 % \subsection{Providing math {\em versions}}
1174 % \LaTeX{} provides two {\em versions\/}. We call them
1175 % \textsf{normal} and \textsf{bold}, respectively.
1176 % \SliTeX{} does not have a \textsf{bold} version. But we treat the
1177 % invisible characters as a version. The only thing we have to take
1178 % care of is to ensure that we have exactly the same fonts in both
1179 % versions available.
1182 \DeclareMathVersion{invisible}
1185 % Now we define the basic {\em math groups\/} used by \LaTeX{}. Later
1186 % on, in packages some other {\em math groups}, e.g., the AMS
1187 % symbol fonts, will be defined.
1189 % As a default I used serif fonts for mathgroup 0 to get things like
1190 % \verb+\log+ look right.
1192 \SetSymbolFont{operators}{normal}
1195 \SetSymbolFont{letters}{normal}
1197 \SetSymbolFont{symbols}{normal}
1199 \SetSymbolFont{largesymbols}{normal}
1202 \SetSymbolFont{operators}{invisible}
1204 \SetSymbolFont{letters}{invisible}
1206 \SetSymbolFont{symbols}{invisible}
1208 \SetSymbolFont{largesymbols}{invisible}
1212 \def\@mainsize{\visible\tiny}
1216 % \subsection{Environments}
1218 % \begin{environment}{titlepage}
1219 % This environment starts a new page, with pagestyle \pstyle{empty}
1220 % and sets the page counter to 0.
1222 \newenvironment{titlepage}
1224 \thispagestyle{empty}%
1225 \setcounter{page}{\z@}}
1230 % \subsubsection{General List Parameters}
1232 % The following commands are used to set the default values for the
1233 % list environment's parameters. See the \LaTeX{} manual for an
1234 % explanation of the meaning of the parameters.
1236 % \begin{macro}{\leftmargini}
1237 % \begin{macro}{\leftmarginii}
1238 % \begin{macro}{\leftmarginiii}
1239 % \begin{macro}{\leftmarginiv}
1240 % \begin{macro}{\leftmarginv}
1241 % \begin{macro}{\leftmarginvi}
1243 \setlength\leftmargini {38\p@}
1244 \setlength\leftmarginii {30\p@}
1245 \setlength\leftmarginiii {20\p@}
1246 \setlength\leftmarginiv {15\p@}
1247 \setlength\leftmarginv {15\p@}
1248 \setlength\leftmarginvi {10\p@}
1257 % \begin{macro}{\@listi}
1258 % \begin{macro}{\@listii}
1259 % \begin{macro}{\@listiii}
1260 % \begin{macro}{\@listiv}
1261 % \begin{macro}{\@listv}
1262 % \begin{macro}{\@listvi}
1263 % These commands set the values of |\leftmargin|, |\parsep|,
1264 % |\topsep|, and |\itemsep| for the various levels of lists.
1265 % \changes{v2.3z}{1997/08/15}{Add initialization of \cs{leftmargin} to
1267 % It is even necessary to initialize |\leftmargin| in |\@listi|,
1268 % i.e. for a level one list, as a list environment may appear
1269 % inside a \texttt{trivlist}, for example inside a \texttt{theorem}
1272 \def\@listi{\leftmargin\leftmargini
1278 \def\@listii{\leftmargin\leftmarginii
1279 \labelwidth\leftmarginii
1280 \advance\labelwidth-\labelsep
1284 \def\@listiii{\leftmargin\leftmarginiii
1285 \labelwidth\leftmarginiii
1286 \advance\labelwidth-\labelsep}
1287 \def\@listiv{\leftmargin\leftmarginiv
1288 \labelwidth\leftmarginiv
1289 \advance\labelwidth-\labelsep}
1290 \def\@listv{\leftmargin\leftmarginv
1291 \labelwidth\leftmarginv
1292 \advance\labelwidth-\labelsep}
1293 \def\@listvi{\leftmargin\leftmarginvi
1294 \labelwidth\leftmarginvi
1295 \advance\labelwidth-\labelsep}
1304 % Here we initialize |\leftmargin| and |\labelwidth|.
1306 \leftmargin\leftmargini
1307 \labelwidth\leftmargini\advance\labelwidth-\labelsep
1311 % \subsubsection{Paragraph-formatting environments}
1313 % \begin{environment}{verse}
1314 % Inside a |verse| environment, |\\| ends a line, and
1315 % line continuations are indented further.
1316 % A blank line makes new paragraph with |\parskip| space.
1318 \newenvironment{verse}{\let\\=\@centercr
1319 \list{}{\itemsep \z@
1321 \listparindent \itemindent
1322 \rightmargin \leftmargin
1323 \advance\leftmargin 15\p@}%
1329 % \begin{environment}{quotation}
1330 % The |quotation| environment fills lines, indents paragraphs.
1332 \newenvironment{quotation}{\list{}{\listparindent 20\p@
1333 \itemindent\listparindent
1334 \rightmargin\leftmargin}%
1340 % \begin{environment}{quote}
1341 % The |quote| environment is the same as the |quotation| environment,
1342 % except that there is no paragraph indentation.
1344 \newenvironment{quote}{\list{}{\rightmargin\leftmargin}\item[]}
1350 % \subsubsection{List-making environments}
1353 % \begin{environment}{description}
1354 % The description environment is defined here -- while the itemize
1355 % and enumerate environments are defined in \file{latex.dtx}.
1358 \newenvironment{description}{\list{}{\labelwidth\z@
1359 \itemindent-\leftmargin
1360 \let\makelabel\descriptionlabel}}
1365 % \begin{macro}{\descriptionlabel}
1366 % To change the formatting of the label, you must redefine
1367 % |\descriptionlabel|.
1369 \newcommand*{\descriptionlabel}[1]{\hspace\labelsep
1370 \normalfont\bfseries #1}
1375 % \subsubsection{Enumerate}
1377 % The enumerate environment uses four counters: \Lcount{enumi},
1378 % \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
1379 % \Lcount{enumN} controls the numbering of the Nth level
1382 % \begin{macro}{\theenumi}
1383 % \begin{macro}{\theenumii}
1384 % \begin{macro}{\theenumiii}
1385 % \begin{macro}{\theenumiv}
1386 % The counters are already defined in \file{latex.dtx}, but their
1387 % representation is changed here.
1390 \renewcommand\theenumi{\@arabic\c@enumi}
1391 \renewcommand\theenumii{\@alph\c@enumii}
1392 \renewcommand\theenumiii{\@roman\c@enumiii}
1393 \renewcommand\theenumiv{\@Alph\c@enumiv}
1400 % \begin{macro}{\labelenumi}
1401 % \begin{macro}{\labelenumii}
1402 % \begin{macro}{\labelenumiii}
1403 % \begin{macro}{\labelenumiv}
1404 % The label for each item is generated by the four commands
1405 % |\labelenumi| \ldots\ |\labelenumiv|.
1406 % \changes{v2.3k}{1994/12/12}{Handle the \cs{label...} commands as in
1407 % the other class files}
1409 \newcommand\labelenumi{\theenumi.}
1410 \newcommand\labelenumii{(\theenumii)}
1411 \newcommand\labelenumiii{\theenumiii.}
1412 \newcommand\labelenumiv{\theenumiv.}
1419 % \begin{macro}{\p@enumii}
1420 % \begin{macro}{\p@enumiii}
1421 % \begin{macro}{\p@enumiv}
1422 % The expansion of |\p@enumN||\theenumN| defines the output of a
1423 % |\ref| command when referencing an item of the Nth level of an
1426 \renewcommand\p@enumii{\theenumi}
1427 \renewcommand\p@enumiii{\theenumi(\theenumii)}
1428 \renewcommand\p@enumiv{\p@enumiii\theenumiii}
1434 % \subsubsection{Itemize}
1437 % \begin{macro}{\labelitemi}
1438 % \begin{macro}{\labelitemii}
1439 % \changes{v2.3x}{1996/08/25}{replaced -{}- with \cs{textendash}}
1440 % \begin{macro}{\labelitemiii}
1441 % \begin{macro}{\labelitemiv}
1442 % Itemization is controlled by four commands: |\labelitemi|,
1443 % |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which\
1444 % define the labels of the various itemization levels.
1446 \newcommand\labelitemi{$\m@th\bullet$}
1447 \newcommand\labelitemii{\normalfont\bfseries \textendash}
1448 \newcommand\labelitemiii{$\m@th\ast$}
1449 \newcommand\labelitemiv{$\m@th\cdot$}
1456 % \subsection{Setting parameters for existing environments}
1458 % \subsubsection{Array and tabular}
1460 % \begin{macro}{\arraycolsep}
1461 % The columns in an array environment are separated by
1462 % 2|\arraycolsep|.% Array and tabular environment parameters
1464 \setlength\arraycolsep{8\p@}
1468 % \begin{macro}{\tabcolsep}
1469 % The columns in an tabular environment are separated by
1472 \setlength\tabcolsep{10\p@}
1476 % \begin{macro}{\arrayrulewidth}
1477 % The width of rules in the array and tabular environments is given
1478 % by the length parameter|\arrayrulewidth|.
1480 \setlength\arrayrulewidth{.6\p@}
1484 % \begin{macro}{\doublerulesep}
1485 % The space between adjacent rules in the array and tabular
1486 % environments is given by |\doublerulesep|.
1488 \setlength\doublerulesep{3\p@}
1492 % \subsubsection{Tabbing}
1494 % \begin{macro}{\tabbingsep}
1495 % This controls the space that the |\'| command puts in. (See
1496 % \LaTeX{} manual for an explanation.)
1499 \setlength\tabbingsep{\labelsep}
1503 % \subsubsection{Minipage}
1505 % \begin{macro}{\@minipagerestore}
1506 % The macro |\@minipagerestore| is called upon entry to a minipage
1507 % environment to set up things that are to be handled differently
1508 % inside a minipage environment. In the current styles, it does
1512 % \begin{macro}{\@mpfootins}
1513 % Minipages have their own footnotes; |\skip||\@mpfootins| plays
1514 % same r\^ole for footnotes in a minipage as |\skip||\footins| does
1515 % for ordinary footnotes.
1518 \skip\@mpfootins = \skip\footins
1522 % \subsubsection{Framed boxes}
1524 % \begin{macro}{\fboxsep}
1525 % The space left by |\fbox| and |\framebox| between the box and the
1527 % \begin{macro}{\fboxrule}
1528 % The width of the rules in the box made by |\fbox| and |\framebox|.
1530 \setlength\fboxsep{5\p@}
1531 \setlength\fboxrule{.6\p@}
1536 % \begin{macro}{\theequation}
1537 % The equation number will be typeset as arabic numerals.
1539 \def\theequation{\@arabic\c@equation}
1544 % \begin{macro}{\jot}
1545 % |\jot| is the extra space added between lines of an eqnarray
1546 % environment. The default value is used.
1548 % \setlength\jot{3pt}
1552 % \begin{macro}{\@eqnnum}
1553 % The macro |\@eqnnum| defines how equation numbers are to appear in
1554 % equations. Again the default is used.
1557 % \def\@eqnnum{(\theequation)}
1562 % \subsection{Font changing}
1564 % \changes{v2.3j}{1994/11/10}{fixed a few typos}
1566 % Here we supply the declarative font changing commands that were
1567 % common in \LaTeX\ version 2.09 and earlier. These commands work
1568 % in text mode \emph{and} in math mode. They are provided for
1569 % compatibility, but one should start using the |\text...| and
1570 % |\math...| commands instead. These commands are redefined using
1571 % |\DeclareOldFontCommand|, a command with three arguments: the
1572 % user command to be defined, \LaTeX\ commands to execute in text
1573 % mode and \LaTeX\ commands to execute in math mode.
1575 % \begin{macro}{\rm}
1576 % \begin{macro}{\tt}
1577 % \begin{macro}{\sf}
1578 % \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
1579 % \cs{@renewfontswitch}.}
1580 % \changes{v2.3a}{1994/04/14}{\cs{@renewfontswitch} has become
1581 % \cs{DeclareOldFontCommand}}
1583 % The commands to change the family. When in compatibility mode we
1584 % select the `default' font first, to get \LaTeX2.09 behaviour.
1586 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
1587 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
1588 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
1594 % \begin{macro}{\bf}
1595 % The command to change to the bold series. One should use
1596 % |\mdseries| to explicitly switch back to medium series.
1597 % \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
1598 % \cs{@renewfontswitch}.}
1600 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
1604 % \begin{macro}{\sl}
1605 % \begin{macro}{\it}
1606 % \begin{macro}{\sc}
1607 % \changes{v2.2}{1993/12/18}{Changed \cs{@newfontswitch} to
1608 % \cs{@renewfontswitch}.}
1609 % And the commands to change the shape of the font. The slanted and
1610 % small caps shapes are not available by default as math alphabets,
1611 % so those changes do nothing in math mode. One should use
1612 % |\upshape| to explicitly change back to the upright shape.
1614 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
1615 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
1616 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
1622 % \begin{macro}{\cal}
1623 % \changes{v2.1d}{1993/12/14}{Macro added}
1624 % \begin{macro}{\mit}
1625 % \changes{v2.1d}{1993/12/14}{Macro added}
1627 % The commands |\cal| and |\mit| should only be used in math mode,
1628 % outside math mode they have no effect. Currently the New Font
1629 % Selection Scheme defines these commands to generate warning
1630 % messages. Therefore we have to define them `by hand'.
1631 % \changes{v2.3k}{1994/12/12}{Now define \cs{cal} and \cs{mit} using
1632 % \cs{DeclareRobustCommand*}}
1634 \DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
1635 \DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
1640 % \subsection{Footnotes}
1643 % \begin{macro}{\footnoterule}
1644 % Usually, footnotes are separated from the main body of the text
1645 % by a small rule. This rule is drawn by the macro |\footnoterule|.
1646 % We have to make sure that the rule takes no vertical space (see
1647 % \file{plain.tex}). The resulting rule will appear on all color
1648 % layers, so it's best not to draw a rule.
1650 \renewcommand\footnoterule{}
1651 % \let \footnoterule = \relax
1655 % \begin{macro}{\c@footnote}
1656 % \begin{macro}{\thefootnote}
1657 % Footnotes are numbered within slides, overlays, and notes and
1658 % numbered with $\ast$, $\dagger$, etc.
1660 % \newcounter{footnote}
1661 \def\thefootnote{\fnsymbol{footnote}}
1662 \@addtoreset{footnote}{slide}
1663 \@addtoreset{footnote}{overlay}
1664 \@addtoreset{footnote}{note}
1670 % \begin{macro}{\@makefntext}
1671 % \changes{v2.2i}{1994/03/08}{Always call \cs{@makefnmark}.}
1672 % The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
1673 % to produce the actual footnote. The macro gets the text of the
1674 % footnote as its argument and should use |\@makefnmark| to produce
1675 % the mark of the footnote. The macro |\@makefntext| is called when
1676 % effectively inside a |\parbox| of width |\columnwidth| (i.e.,
1677 % with |\hsize| = |\columnwidth|).
1679 % An example of what can be achieved is given by the following piece
1682 % \long\def\@makefntext#1{%
1684 % \@tempdima = \hsize
1685 % \advance\@tempdima-10pt
1686 % \parshape \@ne 10pt \@tempdima}%
1688 % \parindent 1em\noindent
1689 % \hbox to \z@{\hss\@makefnmark}#1}
1691 % The effect of this definition is that all lines of the footnote
1692 % are indented by 10pt, while the first line of a new paragraph is
1693 % indented by 1em. To change these dimensions, just substitute the
1694 % desired value for `10pt' (in both places) or `1em'. The mark is
1695 % flushright against the footnote.
1697 % In these document classes we use a simpler macro, in which the
1698 % footnote text is set like an ordinary text paragraph, with no
1699 % indentation except on the first line of a paragraph, and the
1700 % first line of the footnote. Thus, all the macro must do is set
1701 % |\parindent| to the appropriate value for succeeding paragraphs
1702 % and put the proper indentation before the mark.
1705 \long\def\@makefntext#1{
1708 \hb@xt@10\p@{\hss\@makefnmark}#1}
1712 % \begin{macro}{\@makefnmark}
1713 % The footnote markers that are printed in the text to point to the
1714 % footnotes should be produced by the macro |\@makefnmark|. We use
1715 % the default definition for it.
1717 %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
1722 % \subsection{The title}
1723 % The commands |\title|, |\author|, and |\date| are already
1724 % defined, so here we just define |\maketitle|.
1726 % \changes{v2.3s}{1995/10/10}{Move \cs{par} inside the scope of
1727 % \cs{Large}, to get even line spacing.}
1729 \newcommand\maketitle{{\centering {\Large \@title \par}%
1730 \@author \par \@date\par}%
1731 \if@titlepage \break \fi}
1734 % \section{Initialisation}
1738 % \begin{macro}{\today}
1739 % This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
1740 % to provide the date of the \LaTeX-run.
1742 \newcommand\today{\ifcase\month\or
1743 January\or February\or March\or April\or May\or June\or
1744 July\or August\or September\or October\or November\or December\fi
1745 \space\number\day, \number\year}
1750 % Default initializations
1753 \pagenumbering{arabic}
1758 % \subsection{Basic code}
1760 % The code below is basically a copy of |slitex.tex| with some
1763 % Global changes so far:
1765 % \changes{FMi}{1990/06/01}{\cs{gdef}\cs{@slidesw} ... replaced by a
1766 % \cs{newifG} which is similar to \cs{newif} but uses \cs{global}
1770 % \subsubsection{Hacks for slide macros}
1776 \outer\def\newifG#1{\count@\escapechar \escapechar\m@ne
1777 \expandafter\expandafter\expandafter
1778 \edef\@ifG#1{true}{\global\let\noexpand#1\noexpand\iftrue}%
1779 \expandafter\expandafter\expandafter
1780 \edef\@ifG#1{false}{\global\let\noexpand#1\noexpand\iffalse}%
1781 \@ifG#1{false}\escapechar\count@} % the condition starts out false
1782 \def\@ifG#1#2{\csname\expandafter\ifG@\string#1#2\endcsname}
1783 {\uccode`1=`i \uccode`2=`f \uccode`3=`G \uppercase{\gdef\ifG@123{G}}}
1786 \def\@gobbletoend#1{\def\@argend{#1}\@ggobtoend}
1788 \long\def\@ggobtoend#1\end#2{\fi\def\reserved@a{#2}%
1789 \ifx\reserved@a\@argend\else\@ggobtoend\fi}
1791 % FMi: I don't see any reason for this command since |\fi| is hidden
1792 % anyway in the replacement text
1798 % \subsubsection{Slide macros}
1802 % \begin{tabular}{ll}
1803 % |@bw| & true if making black and white slides \\
1804 % |@visible| & true if visible output to be produced.\\
1805 % |@makingslides| & true if making a slide/overlay/note
1811 \newif\if@onlyslidesw \@onlyslideswfalse
1812 \newif\if@onlynotesw \@onlynoteswfalse
1813 \newif\if@makingslides
1815 % FMi: |\newifG| replaces |\gdef\@slidesw{T}| stuff
1820 % \begin{tabular}{ll}
1821 % slide & slide number\\
1822 % overlay & overlay number for a slide\\
1823 % note & note number for a slide
1827 \countdef\c@slide=0 \c@slide=0
1829 \countdef\c@overlay=1 \c@overlay=0
1831 \countdef\c@note=2 \c@note=0
1834 % Add these counters explicitly to the `ckpt list' so that the
1835 % |\include| mechanism works.
1836 % \changes{v2.3u}{1996/05/09}{Make include work: pr/2140(CAR)}
1837 % \changes{v2.3y}{1997/05/09}{Make include work properly: add the
1838 % counters in case some are already in there: pr/2140+2474(CAR)}
1839 % \changes{v2.3v}{1996/05/11}{Do not add page counter here as it is
1842 \g@addto@macro\cl@@ckpt{\@elt{slide}\@elt{overlay}\@elt{note}}
1843 \@addtoreset{overlay}{slide}
1844 \@addtoreset{note}{slide}
1846 % Redefine page counter to some other number.
1847 % The page counter will always be zero except when putting out an
1848 % extra page for a slide, note or overlay.
1850 \@definecounter{page}
1851 \@addtoreset{page}{slide}
1852 \@addtoreset{page}{note}
1853 \@addtoreset{page}{overlay}
1855 \def\theslide{\@arabic\c@slide}
1856 \def\theoverlay{\theslide-\@alph\c@overlay}
1857 \def\thenote{\theslide-\@arabic\c@note}
1860 % \@setlimits \LIST \LOW \HIGH
1862 % Assumes that \LIST = RANGE1,RANGE2,...,RANGEn (n>0)
1863 % Where RANGEi = j or j-k.
1865 % Then \@setlimits globally sets
1866 % (i) \LIST := RANGE2, ... , RANGEn
1869 % where either RANGE1 = p-q or RANGE1 = p and q=p.
1872 \def\@sl@getargs#1-#2-#3\relax#4#5{\xdef#4{#1}\xdef#5{#2}}
1873 \def\@sl@ccdr#1,#2\relax#3#4{\xdef#3{#1-#1-}\xdef#4{#2}}
1875 \def\@setlimits #1#2#3{\expandafter\@sl@ccdr#1\relax\@sl@gtmp #1%
1876 \expandafter\@sl@getargs\@sl@gtmp\relax#2#3}
1879 % \onlyslides{LIST} ::=
1881 % @onlyslidesw := true
1882 % \@doglslidelist :=G LIST,999999,999999
1883 % if @onlynotesw = true
1884 % else @onlynotesw := true
1885 % \@doglnotelist :=G LIST,999999,999999
1887 % message: Only Slides LIST
1891 \def\onlyslides#1{\@onlyslideswtrue
1892 \gdef\@doglslidelist{#1,999999,999999}%
1893 \if@onlynotesw \else
1894 \@onlynoteswtrue\gdef\@doglnotelist{999999,999999}\fi
1895 \typeout{Only Slides #1}}
1898 % \onlynotes{LIST} ::=
1900 % @onlynotesw := true
1901 % \@doglnotelist :=G LIST,999999,999999
1902 % if @onlyslidesw = true
1903 % else \@onlyslidesw := true
1904 % \@doglslidelist{999999,999999}
1906 % message: Only Notes LIST
1910 \def\onlynotes#1{\@onlynoteswtrue
1911 \gdef\@doglnotelist{#1,999999,999999}%
1912 \if@onlyslidesw \else
1913 \@onlyslideswtrue\gdef\@doglslidelist{999999,999999}\fi
1914 \typeout{Only Notes #1}}
1917 % \setupcounters ::= (similar to old \blackandwhite #1 ::= )
1922 % if @onlyslidesw = true
1923 % then \@doslidelist := \@doglslidelist
1924 % \@setlimits\@doslidelist\@doslidelow\@doslidehigh
1926 % if @onlynotesw = true
1927 % then \@donotelist := \@doglnotelist
1928 % \@setlimits\@donotelist\@donotelow\@donotehigh
1930 % \normalsize % Note, this sets font to \rmfamily , which sets
1931 % % \@currfont to \rmfamily
1932 % counter slidenumber := 0
1934 % counter overlay := 0
1935 % @makingslides := F %% \blackandwhite: @makingslides := T
1937 % %% @makingslides := F
1941 % In compatibility mode, need to define \verb+\blackandwhite+,
1942 % \verb+\colors+, \verb+\colorslides+, etc.
1943 \def\blackandwhite#1{\newpage\setcounter{page}{0}\@bwtrue\@visibletrue
1944 \if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
1945 \@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
1946 \if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
1947 \@setlimits\@donotelist\@donotelow\@donotehigh\fi
1948 \normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
1949 \setcounter{note}{0}\@makingslidestrue\input #1\@makingslidesfalse}
1952 % \colors{COLORS} ::=
1953 % for \@colortemp := COLORS
1954 % do \csname \@colortemp \endcsname == \@color{\@colortemp} od
1955 % if \@colorlist = empty
1956 % then \@colorlist := COLORS
1957 % else \@colorlist := \@colorlist , COLORS
1962 \def\colors#1{\@for\@colortemp:=#1\do{\expandafter
1963 \xdef\csname\@colortemp\endcsname{\noexpand\@color{\@colortemp}}}\ifx
1964 \@colorlist\@empty \gdef\@colorlist{#1}%
1965 \else \xdef\@colorlist{\@colorlist,#1}\fi}
1970 % \colorslides{FILE} ::=
1974 % for \@currcolor := \@colorlist
1976 % if @onlyslidesw = true
1977 % then \@doslidelist := \@doglslidelist
1978 % \@setlimits\@doslidelist\@doslidelow\@doslidehigh
1980 % if @onlynotesw = true
1981 % then \@donotelist := \@doglnotelist
1982 % \@setlimits\@donotelist\@donotelow\@donotehigh
1985 % counter slide := 0
1986 % counter overlay := 0
1989 % generate color layer output page
1990 % @makingslides := T
1992 % @makingslides := F
1996 \def\colorslides#1{\newpage\setcounter{page}{0}\@bwfalse
1997 \@for\@currcolor:=\@colorlist\do
1999 \if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
2000 \@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
2001 \if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
2002 \@setlimits\@donotelist\@donotelow\@donotehigh\fi
2003 \normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
2004 \setcounter{note}{0}\typeout{color \@currcolor}%
2008 COLOR LAYER\\[.75in]%
2015 \@makingslidesfalse}}
2017 \else %% if@compatibility
2019 \def\setupcounters{\newpage\setcounter{page}{0}\@bwtrue\@visibletrue
2020 \if@onlyslidesw \xdef\@doslidelist{\@doglslidelist}%
2021 \@setlimits\@doslidelist\@doslidelow\@doslidehigh\fi
2022 \if@onlynotesw \xdef\@donotelist{\@doglnotelist}%
2023 \@setlimits\@donotelist\@donotelow\@donotehigh\fi
2024 \normalsize\setcounter{slide}{0}\setcounter{overlay}{0}%
2025 \setcounter{note}{0}\@makingslidesfalse}
2027 \AtBeginDocument{\setupcounters}
2028 \fi %% if@compatibility
2033 % \changes{v2.3}{1994/03/16}{Moved \cs{newpage} up front, here and in
2034 % \cs{note} and \cs{overlay}}
2036 % \stepcounter{slide}
2037 % \setcounter{page}{0} % in case of non-slide pages
2039 % if @onlyslidesw = true % set \@slidesw = T iff
2040 % then % page to be output
2041 % while \c@slide > \@doslidehigh
2042 % do \@setlimits\@doslidelist\@doslidelow\@doslidehigh od
2043 % if \c@slide < \@doslidelow
2044 % then \@slidesw := F
2048 % then \@slidesw :=G F
2051 % then \@slidesw :=G T
2052 % else \@color{COLORS}
2053 % \if@visible then \@slidesw :=G T \fi
2058 % then @makingslides := T
2059 % \thispagestyle{slide}
2061 % \@gobbletoend{slide}
2072 \def\slide#1{\stepcounter{slide}\G@slideswtrue\if@onlyslidesw
2073 \@whilenum \c@slide >\@doslidehigh\relax
2074 \do{\@setlimits\@doslidelist\@doslidelow\@doslidehigh}\ifnum
2075 \c@slide <\@doslidelow\relax\G@slideswfalse\fi\fi
2078 % FMi this is only a hack at the moment to get things running.
2080 \if@bw\G@slideswtrue\else
2081 \@color{#1}\if@visible \G@slideswtrue \fi
2085 \ifG@slidesw \newpage\thispagestyle{slide}%
2087 % This will set up the last color specified in the argument to
2088 % \verb+\slide+ as the current color. If only back and white slides
2089 % are prepared \verb+\last@color+ will be empty and effectively
2090 % \verb+\relax+ will be generated (hopefully).
2092 % We need to reset to a default font at the beginning of a slide.
2095 \csname \last@color \endcsname
2098 \else\end{slide}\@gobbletoend{slide}\fi}
2100 \else %% if@compatibility
2102 \def\slide{\par\break
2103 \stepcounter{slide}\setcounter{page}{0}\G@slideswtrue\if@onlyslidesw
2104 \@whilenum \c@slide >\@doslidehigh\relax
2105 \do{\@setlimits\@doslidelist\@doslidelow\@doslidehigh}\ifnum
2106 \c@slide <\@doslidelow\relax\G@slideswfalse\fi\fi
2109 % FMi this is only a hack at the moment to get things running.
2111 \if@bw\G@slideswtrue\else
2112 \if@visible \G@slideswtrue \fi
2116 \ifG@slidesw \@makingslidestrue\thispagestyle{slide}%
2118 % This will set up the last color specified in the argument to
2119 % \verb+\slide+ as the current color. If only back and white slides
2120 % are prepared \verb+\last@color+ will be empty and effectively
2121 % \verb+\relax+ will be generated (hopefully).
2123 % We need to reset to a default font at the beginning of a slide.
2126 \csname \last@color \endcsname
2129 \else\end{slide}\@gobbletoend{slide}\fi}
2130 \fi %% if@compatibility
2132 \let\last@color\@empty
2134 \def\endslide{\par\break}
2137 % \overlay COLORS ::=
2140 % \stepcounter{overlay}
2141 % \setcounter{page}{0} % in case of non-slide pages
2143 % if @onlyslidesw = T % set \@slidesw = T iff
2144 % then % page to be output
2145 % if \c@slide < \@doslidelow
2146 % then \@slidesw :=G F
2153 % then \@slidesw :=G T
2154 % else \@color{COLORS}
2155 % \if@visible then \@slidesw :=G T \fi
2160 % then @makingslides := T
2161 % \thispagestyle{overlay}
2162 % else \end{overlay}
2163 % \@gobbletoend{overlay}
2174 \def\overlay#1{\stepcounter{overlay}\G@slideswtrue%
2175 \if@onlyslidesw\ifnum \c@slide <\@doslidelow\relax
2176 \G@slideswfalse\fi\fi
2177 \ifG@slidesw \G@slideswfalse\begingroup\if@bw\G@slideswtrue%
2178 \else\@color{#1}\if@visible \G@slideswtrue\fi\fi\endgroup\fi
2179 \ifG@slidesw \newpage\thispagestyle{overlay}%
2180 \else\end{overlay}\@gobbletoend{overlay}\fi}
2182 \else %%if@compatibility
2184 \def\overlay{\par\break
2185 \stepcounter{overlay}%
2186 \setcounter{page}{0}%
2188 \if@onlyslidesw\ifnum \c@slide <\@doslidelow\relax
2189 \G@slideswfalse\fi\fi
2190 \ifG@slidesw \G@slideswfalse
2191 \begingroup\if@bw\G@slideswtrue%
2192 \else\if@visible \G@slideswtrue\fi\fi
2194 \ifG@slidesw \@makingslidestrue\thispagestyle{overlay}%
2195 \else\end{overlay}\@gobbletoend{overlay}\fi}
2196 \fi %%if@compatibility
2198 \def\endoverlay{\par\break}
2201 % \changes{v2.0d}{1993/11/12}{Removed extra blank.}
2206 % \stepcounter{note}
2207 % \setcounter{page}{0} % in case of non-slide pages
2211 % if @onlynotesw = true % set \@notesw = T iff
2212 % then % page to be output
2213 % while \c@slide > \@donotehigh
2214 % do \@setlimits\@donotelist\@donotelow\@donotehigh od
2215 % if \c@slide < \@donotelow
2216 % then \@slidesw :=G F
2219 % else \@slidesw :=G F
2222 % then @makingslides := T
2223 % \thispagestyle{note}
2225 % \@gobbletoend{note}
2236 \def\note{\stepcounter{note}%
2239 \if@onlynotesw\@whilenum \c@slide >\@donotehigh\relax
2240 \do{\@setlimits\@donotelist\@donotelow\@donotehigh}\ifnum
2241 \c@slide <\@donotelow\relax \G@slideswfalse\fi\fi
2242 \else\G@slideswfalse\fi
2243 \ifG@slidesw \newpage\thispagestyle{note}\else
2244 \end{note}\@gobbletoend{note}\fi}
2246 \else %%if@compatibility
2248 \def\note{\par\break\stepcounter{note}\setcounter{page}{0}%
2251 \if@onlynotesw\@whilenum \c@slide >\@donotehigh\relax
2252 \do{\@setlimits\@donotelist\@donotelow\@donotehigh}\ifnum
2253 \c@slide <\@donotelow\relax \G@slideswfalse\fi\fi
2254 \else\G@slideswfalse\fi
2255 \ifG@slidesw \@makingslidestrue\thispagestyle{note}\else
2256 \end{note}\@gobbletoend{note}\fi}
2257 \fi %%if@compatibility
2259 \def\endnote{\par\break}
2262 % \@color{COLORS} ::=
2270 % for \last@color := COLORS
2271 % do if \last@color = \@currcolor
2279 % FMi: |\last@color| will be used in |\slide| to set up first
2280 % color if no color is given.
2281 % I suppose that this is much too complicated. |\else\@tempswafalse|
2282 % would produce the same effect I imagine.
2284 \def\@color#1{\@mmodetest
2285 {\if@bw \@tempswatrue \else \@tempswafalse
2286 \@for \reserved@a :=#1\do{\ifx\reserved@a\@currcolor\@tempswatrue\fi
2287 \let\last@color\reserved@a}\fi
2288 \if@tempswa \visible \else \invisible \fi
2291 \def\@mmodetest#1{\ifmmode\ClassWarning{slides}{Color-changing command
2292 in math mode has been ignored}\else #1\fi}
2294 \def\invisible{\@mmodetest
2297 \fontshape\f@shape\selectfont
2298 \mathversion{invisible}%
2302 \def\visible{\@mmodetest
2307 % Here is the \LaTeXe{} interface hidden. We use a trick to provide
2308 % ourselves with a sort of additional attribute without making the
2309 % current mechanism even larger. The trick is that we denote
2310 % invisible by putting an uppercase |I| in front of the shape name
2311 % for invisible shapes and remove it again if we want to become
2314 \fontshape{\expandafter\@gobble\f@shape}\selectfont
2315 \mathversion{normal}%
2319 \def\fontshape#1{\edef\f@shape{\if@visible \else I\fi #1}}
2322 % \subsection{Macros for font handling}
2324 % We let |\familydefault| point at |\sfdefault|, to make it easier
2325 % to use the document class slides with packages that set up other
2328 \renewcommand{\familydefault}{\sfdefault}
2331 % \changes{v2.3l}{1994/12/16}{Added the declaration of the lasy font
2333 % The \texttt{latexsym} package, which is needed to be able to access
2334 % the \LaTeX\ symbol fonts (lasy), sets things up so that for sizes
2335 % larger then 10 point magnifications of \texttt{lasy10} are
2336 % used. For slides we want to use magnifications of \texttt{lasy8},
2337 % so we set up the lasy family here to prevent \LaTeX\ from loading
2338 % \texttt{Ulasy.fd}.
2340 \DeclareFontFamily{U}{lasy}{}{}
2341 \DeclareFontShape{U}{lasy}{m}{n}{%
2342 <12><13.82><16.59><19.907><23.89><28.66><34.4><41.28>lasy8
2344 \DeclareFontShape{U}{lasy}{m}{In}{%
2345 <13.82><16.59><19.907><23.89><28.66><34.4><41.28>ilasy8
2353 % \subsubsection{Modifications to the picture environment}
2355 % Below are the new definitions of the picture-drawing macros
2356 % required for SLiTeX. Only those commands that actually
2357 % draw something must be changed so that they do not produce
2358 % any output when the |@visible| switch is false.
2360 % \changes{v2.2j}{1994/03/11}{Corrected \cs{@oval}, like previous
2361 % change to \file{latex.dtx}.}
2363 \def\line(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax
2364 \@linelen #3\unitlength
2365 \ifnum\@xarg =\z@ \@vline
2366 \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
2369 \def\vector(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax
2370 \@linelen #3\unitlength
2371 \ifnum\@xarg =\z@ \@vvector
2372 \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
2375 \def\dashbox#1(#2,#3){%
2376 \leavevmode\if@visible\hb@xt@\z@{\baselineskip \z@
2378 \@dashdim #2\unitlength
2379 \@dashcnt \@dashdim \advance\@dashcnt 200
2380 \@dashdim #1\unitlength\divide\@dashcnt \@dashdim
2381 \ifodd\@dashcnt\@dashdim\z@
2382 \advance\@dashcnt \@ne \divide\@dashcnt \tw@
2383 \else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
2384 \advance\@dashcnt \m@ne
2385 \setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
2386 \@width \@dashdim}\put(0,0){\copy\@dashbox}%
2387 \put(0,#3){\copy\@dashbox}%
2388 \put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
2389 \put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
2390 \multiply\@dashdim \thr@@
2392 \setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
2393 \@width #1\unitlength\hskip #1\unitlength}\@tempcnta\z@
2394 \put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
2395 \do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
2396 \put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
2397 \do{\copy\@dashbox\advance\@tempcnta \@ne }}%
2398 \@dashdim #3\unitlength
2399 \@dashcnt=\@dashdim \advance\@dashcnt 200
2400 \@dashdim #1\unitlength\divide\@dashcnt \@dashdim
2401 \ifodd\@dashcnt \@dashdim=\z@
2402 \advance\@dashcnt \@ne \divide\@dashcnt \tw@
2404 \divide\@dashdim \tw@ \divide\@dashcnt \tw@
2405 \advance\@dashcnt \m@ne
2406 \setbox\@dashbox\hbox{\hskip -\@halfwidth
2407 \vrule \@width \@wholewidth
2408 \@height \@dashdim}\put(0,0){\copy\@dashbox}%
2409 \put(#2,0){\copy\@dashbox}%
2410 \put(0,#3){\lower\@dashdim\copy\@dashbox}%
2411 \put(#2,#3){\lower\@dashdim\copy\@dashbox}%
2412 \multiply\@dashdim \thr@@
2414 \setbox\@dashbox\hbox{\vrule \@width \@wholewidth
2415 \@height #1\unitlength}\@tempcnta\z@
2416 \put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
2417 \do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
2418 \vskip\@dashdim}}\@tempcnta\z@
2419 \put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
2420 \relax\do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
2421 \vskip\@dashdim}}}\fi\@makepicbox(#2,#3)}
2423 \def\@oval(#1,#2)[#3]{\if@visible\begingroup \boxmaxdepth \maxdimen
2424 \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
2425 \@tfor\reserved@a :=#3\do
2426 {\csname @ov\reserved@a false\endcsname}\@ovxx
2427 #1\unitlength \@ovyy #2\unitlength
2428 \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
2429 \advance \@tempdimb -2\p@
2430 \@getcirc \@tempdimb
2431 \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
2432 \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
2433 \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
2434 \@circlefnt \setbox\@tempboxa
2435 \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
2436 \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
2437 \if@ovt \@ovhorz \kern -\@ovxx \fi
2438 \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
2439 \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
2440 \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
2443 \def\@circle#1{\if@visible \begingroup \boxmaxdepth \maxdimen
2444 \@tempdimb #1\unitlength
2445 \ifdim \@tempdimb >15.5\p@\relax \@getcirc\@tempdimb
2447 \setbox\@tempboxa\hbox{\@circlefnt
2448 \advance\@tempcnta\tw@ \char \@tempcnta
2449 \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima
2450 \advance\@tempcnta\tw@
2451 \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima
2452 \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
2453 \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
2454 \else \@circ\@tempdimb{96}\fi\endgroup\fi}
2458 % \changes{v2.0d}{1993/11/12}{Removed extra blank.}
2461 \if@visible\@tempdimb #1\unitlength \@circ\@tempdimb{112}\fi}
2463 % \changes {v2.3m}{1994/03/20}{(DPC) Remove old \cs{@iframebox} and
2465 % \changes {v2.3m}{1994/03/20}{(DPC) Add \cs{@frameb@x} defn.}
2469 \advance\@tempdima\fboxsep
2470 \advance\@tempdima\dp\@tempboxa
2473 \lower\@tempdima\hbox{%
2475 \if@visible\hrule\@height\else\vskip\fi\fboxrule
2477 \if@visible\vrule\@width\else\hskip\fi\fboxrule
2484 \if@visible\vrule\@width\else\hskip\fi\fboxrule}%
2485 \if@visible\hrule\@height\else\vskip\fi\fboxrule}}}}
2490 \long\def\frame#1{\if@visible\leavevmode
2491 \vbox{\vskip-\@halfwidth\hrule \@height\@halfwidth \@depth \@halfwidth
2492 \vskip-\@halfwidth\hbox{\hskip-\@halfwidth \vrule \@width\@wholewidth
2493 \hskip-\@halfwidth #1\hskip-\@halfwidth \vrule \@width \@wholewidth
2494 \hskip -\@halfwidth}\vskip -\@halfwidth\hrule \@height \@halfwidth
2495 \@depth \@halfwidth\vskip -\@halfwidth}\else #1\fi}
2498 % \changes{v2.0d}{1993/11/12}{Corrected \cs{@math} to \cs{m@th} in
2499 % definition of \cs{underline}.}
2506 % \subsubsection{Other modifications to \TeX{} and \LaTeX{} commands}
2510 \def\@rule[#1]#2#3{\@tempdima#3\advance\@tempdima #1\leavevmode
2511 \hbox{\if@visible\vrule
2512 \@width#2 \@height\@tempdima \@depth-#1\else
2513 \vrule \@width \z@ \@height\@tempdima \@depth-#1\vrule
2514 \@width#2 \@height\z@\fi}}
2516 % \_ (Added 10 Nov 86)
2518 \def\_{\leavevmode \kern.06em \if@visible\vbox{\hrule \@width.3em}\else
2519 \vbox{\hrule \@height \z@ \@width.3em}\vbox{\hrule \@width \z@}\fi}
2522 % \overline, \underline, \frac and \sqrt
2524 % \@mathbox{STYLE}{BOX}{MTEXT} : Called in math mode, typesets MTEXT and
2525 % stores result in BOX, using style STYLE.
2527 % \@bphant{BOX} : Creates a phantom with dimensions BOX.
2528 % \@vbphant{BOX} : Creates a phantom with ht of BOX and zero width.
2529 % \@hbphant{BOX} : Creates a phantom with width of BOX
2531 % \@hvsmash{STYLE}{MTEXT} : Creates a copy of MTEXT with zero height and
2532 % width in style STYLE.
2535 \def\@mathbox#1#2#3{\setbox#2\hbox{$\m@th#1{#3}$}}
2537 \def\@vbphantom#1{\setbox\tw@\null \ht\tw@\ht #1\dp\tw@\dp #1%
2540 \def\@bphantom#1{\setbox\tw@\null
2541 \wd\tw@\wd #1\ht\tw@\ht #1\dp\tw@\dp #1%
2544 \def\@hbphantom#1{\setbox\tw@\null \wd\tw@\wd #1\ht\tw@\z@ \dp\tw@\z@
2547 \def\@hvsmash#1#2{\@mathbox#1\z@{#2}\ht\z@\z@ \dp\z@\z@ \wd\z@\z@
2550 \def\underline#1{\relax\ifmmode
2551 \@xunderline{#1}\else $\m@th\@xunderline{\hbox{#1}}$\relax\fi}
2553 \def\@xunderline#1{\mathchoice{\@xyunderline\displaystyle{#1}}%
2555 \textstyle{#1}}{\@xyunderline\scriptstyle{#1}}{\@xyunderline
2556 \scriptscriptstyle{#1}}}
2558 \def\@xyunderline#1#2{%
2559 \@mathbox#1\@smashboxa{#2}\@hvsmash#1{\copy\@smashboxa}%
2560 \if@visible \@hvsmash#1{\@@underline{\@bphantom\@smashboxa}}\fi
2561 \@mathbox#1\@smashboxb{\@@underline{\box\@smashboxa}}%
2562 \@bphantom\@smashboxb}
2564 \let\@@overline=\overline
2566 \def\overline#1{\mathchoice{\@xoverline\displaystyle{#1}}{\@xoverline
2567 \textstyle{#1}}{\@xoverline\scriptstyle{#1}}{\@xoverline
2568 \scriptscriptstyle{#1}}}
2570 \def\@xoverline#1#2{%
2571 \@mathbox#1\@smashboxa{#2}\@hvsmash#1{\copy\@smashboxa}%
2572 \if@visible \@hvsmash#1{\@@overline{\@bphantom\@smashboxa}}\fi
2573 \@mathbox#1\@smashboxb{\@@overline{\box\@smashboxa}}%
2574 \@bphantom\@smashboxb}
2577 % \changes{v2.0b}{1993/04/14}{Corrected \cs{frac} command.}
2578 % \changes{v2.0d}{1993/11/12}{Removed \cs{vcenter} in \cs{@frac}.}
2581 % \@frac {STYLE}{DENOMSTYLE}{NUM}{DEN}{FONTSIZE} :
2582 % Creates \frac{NUM}{DENOM}
2583 % in style STYLE with NUM and DENOM in style DENOMSTYLE
2584 % FONTSIZE should be \textfont \scriptfont or \scriptscriptfont
2586 % Added a group around the first argument of |\frac| to prevent
2587 % changes (for example font changes) to modify the contents of the
2589 % \changes{v2.1c}{1993/12/13}{Added group around first arg.}
2591 \def\frac#1#2{\mathchoice
2592 {\@frac\displaystyle\textstyle{#1}{#2}\textfont}{\@frac
2593 \textstyle\scriptstyle{#1}{#2}\textfont}{\@frac
2594 \scriptstyle\scriptscriptstyle{#1}{#2}\scriptfont}{\@frac
2595 \scriptscriptstyle\scriptscriptstyle{#1}{#2}\scriptscriptfont}}
2597 \def\@frac#1#2#3#4#5{%
2598 \@mathbox#1\@smashboxc{{\begingroup#3\endgroup\over#4}}%
2600 \ht\tw@ \ht\@smashboxc
2601 \dp\tw@ \dp\@smashboxc
2602 \wd\tw@ \wd\@smashboxc
2603 \box\if@visible\@smashboxc\else\tw@\fi}
2605 \def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\@xysqrt#1{#2}$}%
2606 \dimen@\ht\z@ \advance\dimen@-\dp\z@
2607 \mskip5mu\raise.6\dimen@\copy\rootbox \mskip-10mu\box\z@}
2609 % \changes{v2.3w}{1996/05/15}{Removed use of obsolete command
2610 % \cs{@@sqrt} (CAR)}
2612 \def\sqrt{\@ifnextchar[{\@sqrt}{\@xsqrt}}
2613 \def\@sqrt[#1]{\root #1\of}
2614 \def\@xsqrt#1{\mathchoice{\@xysqrt\displaystyle{#1}}{\@xysqrt
2615 \textstyle{#1}}{\@xysqrt\scriptstyle{#1}}{\@xysqrt
2616 \scriptscriptstyle{#1}}}
2617 \def\@xysqrt#1#2{\@mathbox#1\@smashboxa{#2}\if@visible
2618 \@hvsmash#1{\sqrtsign{\@bphantom\@smashboxa}}\fi
2619 \phantom{\sqrtsign{\@vbphantom\@smashboxa}}\box\@smashboxa}
2626 % array and tabular environments: changes to `\verb+|+', |\hline|,
2627 % |\cline|, and |\vline|,
2630 \def\@arrayrule{\if@visible\@addtopreamble{\hskip -.5\arrayrulewidth
2631 \vrule \@width \arrayrulewidth\hskip -.5\arrayrulewidth}\fi}
2634 % \changes{v2.3t}{1996/01/31}{Change in \cs{cline} calling interface}
2636 \def\cline#1{\if@visible\@cline#1\@nil\fi}
2638 \def\hline{\noalign{\ifnum0=`}\fi
2639 \if@visible \hrule \@height \arrayrulewidth
2640 \else \hrule \@width \z@
2642 \futurelet \reserved@a\@xhline}
2644 \def\vline{\if@visible \vrule \@width \arrayrulewidth
2645 \else \vrule \@width \arrayrulewidth \@height \z@
2653 % \subsubsection{Changes to \LaTeX{} output routine}
2658 % % Following test added for slides to check if extra page
2659 % if @makingslides = T
2660 % then if \c@page > 0
2661 % then if \c@note > 0
2662 % then type 'Note \thenote too long.'
2663 % else if \c@overlay > 0
2664 % then type 'Overlay \theoverlay too long.'
2665 % else type 'Slide \theslide too long'
2667 % ifvoid \insert\footins
2668 % then \@outputbox := \box255
2669 % else \@outputbox := \vbox {\unvbox255
2670 % \vskip \skip\footins
2672 % \unvbox\@footinsert
2675 % \@freelist :=G \@freelist * \@midlist
2676 % \@midlist :=G empty
2678 % \@outputbox := \vbox to \@colht{\boxmaxdepth := \maxdepth
2679 % \vfil %%\vfil added for slides
2680 % \unvbox\@outputbox
2681 % \vfil } %%\vfil added for slides
2682 % \maxdepth :=G \@maxdepth
2685 % FMi simple hack to allow none centered slides Should be revised
2690 \def\@makecol{\if@makingslides\ifnum\c@page>\z@ \@extraslide\fi\fi
2691 \ifvoid\footins \setbox\@outputbox\box\@cclv \let\@botfil\vfil
2692 \else\let\@botfil\relax\setbox\@outputbox
2693 \vbox{\unvbox\@cclv\vfil
2694 \vskip\skip\footins\footnoterule\unvbox\footins\vskip
2695 \z@ plus.1fil\relax}\fi
2696 \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
2697 \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth
2698 \@topfil\unvbox\@outputbox\@botfil}\global\maxdepth\@maxdepth}
2700 \def\@extraslide{\ifnum\c@note>\z@
2701 \ClassWarning{slides}{Note \thenote\space too long}\else
2702 \ifnum\c@overlay>\z@
2703 \ClassWarning{slides}{Overlay \theoverlay\space too long}\else
2704 \ClassWarning{slides}{Slide \theslide\space too long}\fi\fi}
2712 % \subsubsection{Special \SLiTeX{} initializations}
2714 %FMi why not allow for ref's ?