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.
30 % \title{Compatibility mode for \LaTeXe{} emulating \LaTeX~2.09}
31 % \author{Alan Jeffrey and Frank Mittelbach}
37 %% {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
38 %% 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
39 %% Digits \0\1\2\3\4\5\6\7\8\9
40 %% Exclamation \! Double quote \" Hash (number) \#
41 %% Dollar \$ Percent \% Ampersand \&
42 %% Acute accent \' Left paren \( Right paren \)
43 %% Asterisk \* Plus \+ Comma \,
44 %% Minus \- Point \. Solidus \/
45 %% Colon \: Semicolon \; Less than \<
46 %% Equals \= Greater than \> Question mark \?
47 %% Commercial at \@ Left bracket \[ Backslash \\
48 %% Right bracket \] Circumflex \^ Underscore \_
49 %% Grave accent \` Left brace \{ Vertical bar \|
50 %% Right brace \} Tilde \~}
52 % \changes{v0.01}{1993/12/11}{Created the file, including:
53 % setting the compatibility flag,
54 % inputting oldlfont.sty,
55 % setting the default encoding to be OT1, and
56 % inputting the latex209.rc file}
57 % \changes{v0.02}{1993/12/12}{Changed the package filename to
58 % latex209.sty, and added the provides-package command.}
59 % \changes{v0.03}{1993/12/16}{Added an empty mark, replaced
60 % provides-package with provides-file, added the compatibility hook.}
61 % \changes{v0.04}{1993/12/16}{Moved oldlfont.sty out of the
62 % compatibility hook and back into latex209.cmp. Redefined
63 % newfontswitch to ignore redefinitions. Set the LaTeX 2e commands
65 % \changes{v0.05}{1993/12/17}
66 % {Removed the \cs{mark}, since it is now in the kernel.}
67 % \changes{v0.06}{1993/12/18}{Replaced the redefinition of
68 % \cs{@newfontswitch} to a redefinition of \cs{@renewfontswitch}.
70 % \changes{v0.07}{1993/12/18}{Fixed a bug with \cs{@missingfileerror}.}
71 % \changes{v0.08}{1993/12/18}{Added the obsolete .sty files.}
72 % \changes{v0.09}{1993/12/20}{Removed art10.sty and friends.}
73 % \changes{v0.10}{1994/01/14}{Replaced latex209.rc by latex209.cfg.}
74 % \changes{v0.11}{1994/01/21}{Replaced latex209.cmp by latex209.def.
75 % Moved half of oldlfont.dtx to here. Split the package dst option
76 % into head and tail.}
77 % \changes{v0.12}{1994/01/24}
78 % {Added \cs{normalshape} and \cs{mediumseries}, and
79 % declared the `oldlfont' option to stop oldlfont.sty from being
81 % \changes{v0.13}{1994/01/31}{removed setting of \cs{normalsize}. FMi}
82 % \changes{v0.14}{1994/02/07}{Added it back again.}
83 % \changes{v0.15}{1994/02/10}{Renamed \cs{@compatibility} to
84 % \cs{@documentclasshook}. Added the check for whether
85 % \cs{normalsize} or \cs{@normalsize} needs defined.}
86 % \changes{v0.16}{1994/02/11}{Replaced the allocation of temporary
87 % dimens for \cs{footheight}, \cs{@maxsep} and \cs{@dblmaxsep}
88 % by real dimen variables.}
89 % \changes{v0.17}{1994/03/02}{Moved the documentation to the front, so
90 % this file can be processed directly without a driver file.
91 % Added \cs{@ptscale}, \cs{@halfmag}, \cs{@magscale}, and set the
92 % default font to be CMR at 10pt.}
93 % \changes{v0.18}{1994/03/11}{Restored the old definition of \cs{verb}.
94 % Set the catcodes of the non-alphanumerics.}
95 % \changes{v0.19}{1994/04/05}{Switched off more 2e features: \cs{lrbox},
96 % \cs{width}, \cs{height}, \cs{depth} in box dimensions, and the new
97 % optional arguments to \cs{parbox}, \cs{minipage} and
98 % \cs{newcommand}. The code was provided by DPC. Fixed a misplaced
99 % </head!>. Made the \cs{ProvidesPackage} and \cs{ProvidesClass}
100 % warnings log messages. Removed \cs{filedate}.}
101 % \changes{v0.20}{1994/04/20}
102 % {Restored the 2.09 definition of \cs{@noligs}.}
103 % \changes{v0.21}{1994/04/24}
104 % {Restored the 2.09 definition of \cs{@lquote}.}
105 % \changes{v0.22}{1994/05/02}{Added \cs{@latex@e@command}.}
106 % \changes{v0.23}{1994/05/11}{Added bezier.sty.}
107 % \changes{v0.24}{1994/05/14}{Removed \cs{@@@} and switched the box
108 % commands back on, for use in packages.}
109 % \changes{v0.24}{1994/05/14}{Changed the 2e command error help.}
110 % \changes{v0.24}{1994/05/14}{Removed date from announcement of
112 % \changes{v0.25}{1994/05/14}{Added the newlfont option, and rewrote the
114 % \changes{v0.26}{1994/05/15}{Added the margid and nomargid options.}
115 % \changes{v0.27}{1994/05/16}{Fixed a bug with the margid option.}
116 % \changes{v0.28}{1994/05/16}{Fixed a bug with \cs{mediumseries}.}
117 % \changes{v0.29}{1994/05/17}{Fixed a bug with \cs{newlfont}.}
118 % \changes{v0.29}{1994/05/17}{Removed extra spaces from the missing
120 % \changes{v0.29}{1994/05/17}{Made the bezier package use \cs{iffalse}
121 % to comment itself out, rather than \%\%, which caused it to
122 % appear in every 2.09 file.}
123 % \changes{v0.30}{1994/05/18}{Added \cs{@finalstrut}.}
124 % \changes{v0.31}{1994/05/20}{New definition of \cs{@finalstrut}.}
125 % \changes{v0.31}{1994/05/20}{Added the t1enc package.}
126 % \changes{v0.32}{1994/05/20}{Added SLiTeX.}
127 % \changes{v0.33}{1994/06/01}{Fixed bug with SLiTeX.}
128 % \changes{v0.34}{1994/08/22}{Replaced l2euser by usrguide.}
129 % \changes{v0.34}{1994/08/22}{Added a default definition for \cs{+}.}
130 % \changes{v0.35}{1994/09/23}
131 % {Added spaces to the old font scale commands.}
132 % \changes{v0.36}{1994/10/17}{Added an empty \cs{mark} back again.}
133 % \changes{v0.37}{1994/10/20}{Corrected a typo.}
134 % \changes{v0.38}{1994/11/16}{Removed \cs{LaTeXe} from this list}
135 % \changes{v0.39}{1994/11/28}{Added old behaviour of floats and space.}
136 % \changes{v0.40}{1995/05/05}{Make \cs{verb} use \cs{tt} font in
138 % \changes{v0.49}{1995/10/26}{Added code for fleqn.sty, leqno.sty,
140 % \changes{v0.50}{1995/12/08}{Switched of \cs{@inmathwarn}.}
141 % \changes{v0.53}{2015/02/22}{Dropped \cs{@no@font@optfalse} in various places
142 % - no longer provided by ltfsscmp.dtx.}
144 % \MaintainedByLaTeXTeam{latex}
147 % \section{Introduction}
149 % The file |latex209.def| is read in by \LaTeXe{} whenever it finds a
150 % |\documentstyle| rather than |\documentclass| command at the
151 % beginning of the file. This indicates a \LaTeX~2.09 document, which
152 % should be processed in {\em compatibility mode}.
154 % Any document which compiled under \LaTeX~2.09 should compile under
155 % compatibility mode, unless it uses low-level commands such as
158 % \section{The docstrip modules}
160 % The following modules are used in the implementation to direct
161 % docstrip in generating the external files:
163 % \begin{tabular}{ll}
164 % driver & produce a documentation driver file \\
165 % head & produce the beginning of |latex209.def| \\
166 % tail & produce the end of |latex209.def| \\
167 % article & produce |article.sty| \\
168 % book & produce |book.sty| \\
169 % report & produce |report.sty| \\
170 % slides & produce |slides.sty| \\
171 % letter & produce |letter.sty| \\
172 % bezier & produce |bezier.sty| \\
173 % fleqn & produce |fleqn.sty| \\
174 % leqno & produce |leqno.sty| \\
175 % openbib & produce |openbib.sty|
178 % Between the |head| and |tail| of |latex209.def|, the code for
179 % |oldlfont.sty| is included, so \LaTeX~2.09 documents will
180 % automatically be run simulating the OFSS.
181 % \changes{v0.09}{1993/12/20}{Removed artN.sty, bkN.sty and repN.sty.}
182 % \changes{v0.11}{1994/01/21}{Split package into head and tail.}
183 % \changes{v0.23}{1994/05/11}{Added bezier option.}
189 % This section contains the driver for this documentation.
192 \documentclass{ltxdoc}
196 \DocInput{latex209.dtx}
201 % \section{Beginning of latex209.def}
203 % \changes{v0.11}{1994/01/21}{oldlfont.dtx is now also used to generate
206 % This section describes the beginning of the file |latex209.def|.
211 % \subsection{Identification}
213 % This file needs to be run with \LaTeXe.
215 \NeedsTeXFormat{LaTeX2e}
219 \ProvidesFile{latex209.def}[2015/02/22 v0.53 Standard LaTeX file]
221 % \changes{v0.24}{1994/05/14}{Removed date.}
222 % \changes{v0.40}{1995/03/21}
223 % {(DPC) Do not execute this file twice latex/1460}
224 % Announce compatibility mode to the user.
225 % \changes{v0.52}{1998/05/13}{Added experimental
226 % long typeout to possibly avoid prs like 2807}
229 \expandafter\endinput
232 \@spaces\@spaces\space Entering LaTeX 2.09 COMPATIBILITY MODE^^J\space
233 *************************************************************^^J\space
234 \space\space\space!!WARNING!!\space
235 \space\space\space!!WARNING!!\space
236 \space\space\space!!WARNING!!\space
237 \space\space\space!!WARNING!!\space\space\space ^^J\space
239 This mode attempts to provide an emulation of the LaTeX 2.09^^J\space
240 author environment so that OLD documents can be successfully^^J\space
241 processed. It should NOT be used for NEW documents!^^J\space
243 New documents should use Standard LaTeX conventions and start^^J\space
244 with the \string\documentclass\space command.^^J\space
246 Compatibility mode is UNLIKELY TO WORK with LaTeX 2.09 style^^J\space
247 files that change any internal macros, especially not with^^J\space
248 those that change the FONT SELECTION or OUTPUT ROUTINES.^^J\space
250 Therefore such style files MUST BE UPDATED to use^^J\space
251 \@spaces\@spaces\space Current Standard LaTeX: LaTeX2e.^^J\space
252 If you suspect that you may be using such a style file, which^^J\space
253 is probably very, very old by now, then you should attempt to^^J\space
254 get it updated by sending a copy of this error message to the^^J\space
255 author of that file.^^J\space
256 *************************************************************^^J}
260 % \subsection{Compatibility flag}
262 % \begin{macro}{\@compatibilitytrue}
263 % \LaTeXe{} has a flag |\if@compatibility| which can be used by
264 % document classes or packages to determine whether they are running
265 % in compatibility mode or not. This flag is set true by this file.
271 % \subsection{Removing features}
273 % \changes{v0.22}{1994/05/02}{Added \cs{latex@e@command}.}
274 % \changes{v0.36}{1994/10/17}{Redid switching off commands.}
275 % \changes{v0.38}{1994/11/16}{Removed \cs{LaTeXe} from this list}
277 % \begin{macro}{\usepackage}
278 % \begin{macro}{\listfiles}
279 % \begin{macro}{\ensuremath}
280 % \begin{macro}{\lrbox}
281 % \begin{macro}{\newcommand}
282 % These \LaTeXe{} commands are switched off in compatibility mode.
283 % This is done by saving the old definition, and redefining the
284 % command to call |\@latex@e@error| before executing the old version.
287 \expandafter\let\csname @@\string#1\endcsname#1%
289 \noexpand\@latex@e@error{\noexpand#2}%
290 \expandafter\noexpand\csname @@\string#1\endcsname
293 \@tempa\usepackage\usepackage
294 \@tempa\listfiles\listfiles
295 \@tempa\ensuremath\ensuremath
296 \@tempa\lrbox{\begin{lrbox}}%
297 \@tempa\@xargdef{\newcommand{cmd}[args][def]}%
305 % \changes{v0.22}{1994/05/02}
306 % {Added \cs{if@latex@e@errors} and \cs{@@@}.}
308 % {1994/05/14}{Removed \cs{if@latex@e@errors} and \cs{@@@}.}
309 % \changes{v0.24}{1994/05/14}{Changed the error help.}
310 % \changes{v0.36}{1994/10/17}{Initialized \cs{@latex@e@error} to do
311 % nothing, and switched it on at the begin document.}
313 % \begin{macro}{\@latex@e@error}
314 % \begin{macro}{\@latex@e@error@}
315 % This error is produced if a user uses a \LaTeXe{} command in
316 % compatibility mode. This is to encourage users to move over to
317 % using |\documentclass| as quickly as possible. During the preamble
318 % the error does nothing (so that packages can use \LaTeXe{} commands)
319 % but it is redefined to be an error message at |\begin{document}|.
321 \let\@latex@e@error\@gobble
322 \def\@latex@e@error@#1{%
324 LaTeX2e command \string#1\space in LaTeX 2.09 document%
326 This is a LaTeX 2.09 document, but it contains
328 If you want to use the new features of LaTeX2e,
330 should begin with \string\documentclass\space
331 rather than \string\documentstyle
338 % \changes{v0.36}{1994/10/17}
339 % {Allow 2e commands to be redefined once with \cs{newcommand}.}
340 % \changes{v0.40}{1995/03/21}{
341 % (DPC) Add \cs{r} to the list of 2e commands latex/1424}
343 % \begin{macro}{\@ifdefinable}
344 % \begin{macro}{\@old@ifdefinable}
345 % \begin{macro}{\@@ifdefinable}
346 % \begin{macro}{\@latex@e@commands}
347 % We trap the |\@notdefinable| error message to check to see if the
348 % command is a \LaTeXe{} command, in which case we allow the
349 % definition to happen. We keep a list of commands which are
350 % allowed to be redefined this way in |\@latex@e@commands|, and
351 % remove an entry each time it is defined.
353 \let\@old@ifdefinable\@ifdefinable
354 \long\def\@ifdefinable#1{%
355 \def\@tempa##1#1##2#1##3#1##4\@tempa{%
356 \def\@latex@e@commands{##1##2}%
357 ##3% ##3 will either be \iftrue or \iffalse
358 \expandafter\@firstofone
360 \expandafter\@old@ifdefinable\expandafter#1%
363 \expandafter\@tempa\@latex@e@commands#1\iftrue#1\iffalse#1\@tempa%
365 \let\@@ifdefinable\@ifdefinable
366 \def\@latex@e@commands{%
367 \usepackage\listfiles\ensuremath\LaTeXe\lrbox
368 \th\dh\ng\dj\TH\DH\NG\DJ\k\r\SS
369 \guillemotleft\guillemotright\guilsinglleft
370 \guilsinglright\quotedblbase\quotesinglbase
378 % \begin{macro}{\@begin@tempboxa}
379 % \changes{v0.22}{1994/05/02}{Commented out the redefinition of
380 % \cs{@begin@tempboxa}.}
381 % If we were to switch off the new |\width|, |\height| and |\depth|
382 % commands, this is how to do it. This isn't done, since these
383 % commands may be used in packages.
385 %\long\def\@begin@tempboxa#1#2{%
387 % \setbox\@tempboxa#1{{#2}}}
391 % \subsection{Document class hook}
393 % \begin{macro}{\@documentclasshook}
394 % \changes{v0.15}{1994/02/10}{Renamed from \cs{@compatibility} to
395 % \cs{@documentclasshook}. Added the check for \cs{@normalsize} and
396 % \cs{normalsize} being defined.}
397 % \changes{v0.22}{1994/05/02}{Moved switching off commands into the
398 % document class hook.}
399 % \changes{v0.24}{1994/05/14}{Switched the box commands back on, for use
401 % \changes{v0.36}{1994/10/17}{Changed the way the 2e command error is
403 % \changes{v0.51}{1996/05/24}{(DPC) Reimplemented for /2153.}
404 % This macro is called by each use of |\documentclass|. We define
405 % it to define |\@normalsize| and |\normalsize| if necessary,
406 % to input each unused option as a package, and to switch off the new
407 % \LaTeXe{} commands. However, we leave on the commands
408 % |\settoheight|, |\settowidth| and the new options to |\parbox| and
409 % |\minipage|, since these are likely to be used in packages.
411 % The intention of the strange |\normalsize| tests below are that after
412 % the |\documentstyle| command has completed, then
413 % if neither of the commands |\normalsize|
414 % nor |\@normalsize| were defined by the main style or one of its
415 % `substyles' or `options', then |\@normalsize| will be undefined and
416 % |\normalsize| will generate an error saying it hasn't been defined.
418 % If the style defined either |\normalsize| or \@|normalsize| then
419 % these two commands will be |\let| equal to each other, with the
420 % definition given by the style file.
422 % If the style defines both |\normalsize| and |\@normalsize| then
423 % those two definitions are kept.
425 \def\@documentclasshook{%
426 \RequirePackage\@unusedoptionlist
427 \let\@unusedoptionlist\@empty
428 \def\@tempa{\@normalsize}%
429 \ifx\normalsize\@tempa
430 \let\normalsize\@normalsize
432 \ifx\@normalsize\@undefined
433 \let\@normalsize\normalsize
435 \ifx\normalsize\@undefined
436 \let\normalsize\original@normalsize
438 \let\@latex@e@error\@latex@e@error@}
442 % \begin{macro}{\original@normalsize}
443 % \changes{v0.51}{1996/05/24}{(DPC) Macro added /2153.}
444 % Save the original definition of |\normalsize| (which generates an
447 \let\original@normalsize\normalsize
451 % \begin{macro}{\normalsize}
452 % \changes{v0.14}{1994/02/07}{Added \cs{normalsize}.}
453 % Some styles don't define |\normalsize|, just |\@normalsize|.
455 \def\normalsize{\@normalsize}
459 % \subsection{Compatibility with \LaTeX~2.09 document styles}
461 % \begin{macro}{\@missingfileerror}
462 % If a |.cls| file is missing, we look to see if there is
463 % a file of the same name with a |.sty| extension.
464 % \changes{v0.06}{1993/12/18}{Corrected a typo
465 % \cs{@saved@missingfileerror}
466 % should have been \cs{saved@missingfileerror}.}
467 % \changes{v0.07}{1993/12/18}{Corrected a typo, I'd forgotten to pass
468 % the arguments of \cs{@missingfileerror} on to
469 % \cs{saved@missingfileerror}.}
470 % \changes{v0.29}{1994/05/17}{Removed extraneous spaces.}
472 \@ifundefined{saved@missingfileerror}{
473 \let\saved@missingfileerror=\@missingfileerror
475 \def\@missingfileerror#1#2{%
477 \InputIfFileExists{#1.\@pkgextension}{%
478 \wlog{Compatibility mode: loading #1.\@pkgextension
479 \space rather than #1.#2.}%
481 \saved@missingfileerror{#1}{#2}%
484 \saved@missingfileerror{#1}{#2}%
490 % \begin{macro}{\@obsoletefile}
491 % For compatibility with the document styles which |\input| the
492 % standard \LaTeX~2.09 document styles, we distribute
493 % files called |article.sty|, |book.sty|, |report.sty|,
494 % |slides.sty| and |letter.sty|. These use the command
495 % |\@obsoletefile|, which the \LaTeXe{} kernel defines to produce a
496 % warning message. We redefine it to just produce a message in the
497 % log file, and to pass any options from the old filename to the
499 % \changes{v0.08}{1993/12/19}{Added this command.}
500 % \changes{v0.10}{1994/01/14}{Added the option-passing.}
502 \def\@obsoletefile#1#2{%
503 \expandafter\let\csname opt@#1\expandafter\endcsname
504 \csname opt@\@currname.\@currext\endcsname
505 \wlog{Compatibility mode: inputting `#1'
506 instead of obsolete `#2'.}}
510 % \begin{macro}{\footheight}
511 % \begin{macro}{\@maxsep}
512 % \begin{macro}{\@dblmaxsep}
513 % \LaTeX~2.09 supported these parameters, so for compatibility with
514 % old document styles we allocate them.
515 % \changes{v0.16}{1994/02/11}{Replaced the allocation of temporary
516 % dimens for \cs{footheight}, \cs{@maxsep} and \cs{@dblmaxsep} by
517 % real dimen variables.}
527 % \changes{v0.36}{1994/10/17}{Added an empty \cs{mark}.}
529 % {1994/10/20}{Corrected a type with the empty \cs{mark}.}
531 % \begin{macro}{\mark}
532 % \LaTeX~2.09 initialized an empty mark. Who knows, someone may have
539 % \subsection{Layout}
541 % \begin{macro}{\sloppy}
542 % \changes{v0.06}{1993/12/18}{Added \cs{sloppy}}
543 % There is a new version of |\sloppy| in \LaTeXe, so we restore the
546 \def\sloppy{\tolerance \@M \hfuzz .5\p@ \vfuzz .5\p@}
550 % \begin{macro}{\@finalstrut}
551 % \changes{v0.30}{1994/05/18}{Added \cs{@finalstrut}.}
552 % \changes{v0.31}{1994/05/20}{New definition of \cs{@finalstrut}.}
553 % The strut which is used in a footnote has changed. This restores
554 % the old definition.
556 \def\@finalstrut#1{\unskip\strut}
560 % \begin{macro}{\@marginparreset}
561 % \begin{macro}{\@floatboxreset}
562 % \changes{v0.39}{1994/11/28}{Added old behaviour of floats and space.}
563 % \changes{v0.45}{1995/05/25}{(CAR) Changed method of restoring
564 % old behaviour of floats and space.}
565 % Restore the old spacing around floats.
567 \let \@marginparreset \@empty
568 \let \@floatboxreset \@empty
573 % \begin{macro}{\proclaim}
574 % \changes{v0.41}{1995/04/24}
575 % {Move here from ltplain.dtx}
578 \outer\def\proclaim #1. #2\par{%
580 \noindent{\bfseries#1.\enspace}{\slshape#2\par}%
581 \ifdim\lastskip<\medskipamount
582 \removelastskip\penalty55\medskip
587 % \begin{macro}{\hang}
588 % \begin{macro}{\textindent}
589 % \changes{v0.42}{1995/04/27}
590 % {Move here from ltplain.dtx}
593 \def\hang{\hangindent\parindent}
594 \def\textindent#1{\indent\llap{#1\enspace}\ignorespaces}
598 % \begin{macro}{\ttraggedright}
599 % \changes{v0.41}{1995/04/24}
600 % {Move here from ltplain.dtx}
602 \def\ttraggedright{\reset@font\ttfamily\rightskip\z@ plus2em\relax}
607 % \begin{macro}{\@footnotemark}
608 % \changes{v0.43}{1995/05/12}
610 % \LaTeXe\ version has |\nobreak| to allow hyphenation.
614 \ifhmode\edef\@x@sf{\the\spacefactor}\fi
616 \ifhmode\spacefactor\@x@sf\fi
621 % \begin{macro}{\@textsuperscript}
622 % \changes{v0.48}{1995/07/07}
623 % {macro added for latex/1722}
624 % Fudge this command to remove the text font command which
625 % is always the first thing in the argument. This is needed
626 % as in compatibility mode footnotes are processed in math mode,
627 % but the standard classes call |\@textsuperscript| in the definition
630 \def\@textsuperscript#1{$\m@th^{\@gobble#1}$}
636 % \begin{macro}{\@makefnmark}
637 % \changes{v0.44}{1995/05/20}{macro added}
638 % \LaTeXe\ version uses |\textsuperscript| rather than
641 \def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
645 % \begin{macro}{\thempfootnote}
646 % \changes{v0.44}{1995/05/20}{macro added}
647 % \LaTeXe\ version has an additional |\itshape| which would not
648 % work (and would not make sense) in math mode.
650 \def\thempfootnote{\@alph\c@mpfootnote}
654 % \begin{macro}{\@fnsymbol}
655 % \changes{v0.46}{1995/06/30}{macro added}
656 % \LaTeX\ version uses |\ensuremath| which does not work in
657 % compatibility mode.
659 \def\@fnsymbol#1{\ifcase#1\or *\or \dagger\or \ddagger\or
660 \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger
661 \or \ddagger\ddagger \else\@ctrerr\fi}
665 % \begin{macro}{\@inmathwarn}
666 % \changes{v0.50}{1995/12/08}{Switched off \cs{@inmathwarn}}
667 % \LaTeX\ (1995/12/01) checks for text commands being used in math
668 % mode. We switch this off in compatibility mode.
670 \let\@inmathwarn\@gobble
674 % \subsection{Verbatim}
676 % \changes{v0.18}{1994/03/11}{Added the changes to \cs{verb}}
677 % \changes{v0.40}{1995/05/05}{Make \cs{verb} use \cs{tt} font in
679 % \begin{macro}{\verb}
680 % \begin{macro}{\@sverb}
681 % We restore the old definition of |\verb|, but using
682 % |\verbatim@font| rather than |\tt|. The use of |\bgroup| and
683 % |\egroup| allows us to prefix it with |\hbox| in math mode.
686 \relax\ifmmode\hbox\fi\bgroup
689 \let\do\@makeother \dospecials
690 \@ifstar{\@sverb}{\@verb}%
693 \def\@tempa ##1#1{\leavevmode\null##1\egroup}%
700 % \begin{macro}{\verbatim@nolig@list}
701 % \changes{v0.20}{1994/04/20}{Added the redefinition of
702 % \cs{verbatim@nolig@list}.}
703 % The only ligatures which should be switched off in 2.09 mode are
704 % the Spanish punctuation.
706 \def\verbatim@nolig@list{\do\`}
710 % \begin{macro}{\@lquote}
711 % \changes{v0.21}{1994/04/24}{Added the definition of \cs{@lquote}.}
712 % We restore the old definition of |\@lquote| in case any packages
715 \def\@lquote{\leavevmode{\kern\z@}`}
720 % \subsection{Character codes}
722 % \changes{v0.18}{1994/03/11}{Added the catcode changes}
724 % By default, \LaTeXe{} makes the input charactes 0--8, 11, 14--31 and
725 % 128--255 illegal. In compatibility mode, we restore their old
730 \loop\ifnum\@tempcnta<32
731 \catcode\@tempcnta=12
732 \advance\@tempcnta by 1
734 \catcode`\^^I=10\relax%
735 \catcode`\^^L=13\relax%
736 \catcode`\^^M=5\relax%
739 \loop\ifnum\@tempcnta<256
740 \catcode\@tempcnta=12
741 \advance\@tempcnta by 1
745 % \subsection{Miscellaneous commands}
747 % \begin{macro}{\SLiTeX}
748 % The \textsc{Sli\TeX} logo.
750 \DeclareRobustCommand{\SLiTeX}{{%
751 \normalfont S\kern -.06em
752 {\scshape l\kern -.035emi}\kern -.06em
758 % The |\+| command should be defined, so that it can be used in
765 % \begin{macro}{\@cla}
766 % \begin{macro}{\@clb}
767 % \changes{v0.47}{1995/09/25}
768 % {(DPC) Declare old \cs{cline} registers}
769 % \begin{macro}{\mscount}
770 % \LaTeX2.09 (and early versions of \LaTeXe) used these count registers
771 % in the definition of |\cline| and |\multispan|.
772 % Declare them here in case they were used for any other purposes.
782 % \begin{macro}{\@imakepicbox}
783 % \changes{v0.48}{1995/10/16}
784 % {(DPC) emulate old behaviour of picture mode makebox}
785 % picture mode version
787 \long\def\@imakepicbox(#1,#2)[#3]#4{%
788 \vbox to#2\unitlength
789 {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss
791 \@tfor\reserved@a :=#3\do{%
793 \let\mb@l\relax\let\mb@r\relax
795 \expandafter\let\csname mb@\reserved@a\endcsname\relax
798 \hb@xt@ #1\unitlength{\mb@l #4\mb@r}%
801 % This kern ensures that a |b| option aligns on the bottom of the
802 % text rather than the baseline. this is the documented behaviour in
803 % the \LaTeX Book. The kern is removed in compatibility mode.
805 % Remove kern for bug compatibility with 2.09.
812 % \begin{macro}{\supereject}
814 \def\supereject{\par\penalty-\@MM}
818 % \begin{macro}{\nofiles}
819 % \changes{v0.51}{1996/05/24}{(DPC) Old definition, without \cs{write}
820 % added to \cs{protected@write}, for latex/2146}
821 % This old version might change the vertical spacing when it is used.
822 % Some old document might depend on that changed spacing so\ldots
826 \typeout{No auxiliary output files.^^J}%
827 \long\def\protected@write##1##2##3{}%
829 \let\makeglossary\relax}
833 % \subsection{Packages and classes}
835 % \begin{macro}{\ProvidesPackage}
836 % \begin{macro}{\ProvidesClass}
837 % We redefine |\ProvidesPackage| and |\ProvidesClass| to produce a
838 % log message rather than a warning if they find an unexpected
841 \def\ProvidesPackage#1{%
843 \ifx\@gtempa\@currname\else
844 \wlog{Compatibility mode: \@cls@pkg\space`\@currname' requested,
847 \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
848 \let\ProvidesClass=\ProvidesPackage
852 % That ends the head of |latex209.def|.
857 % \section{Middle of latex209.def}
859 % At this point, the code for |oldlfont.sty| is read in by the
860 % installation script.
862 % \section{End of latex209.def}
864 % This section describes the end of |latex209.def|.
869 % \subsection{Font commands}
871 % \changes{v0.12}{1994/01/24}{Added the oldlfont option.}
872 % \changes{v0.25}{1994/05/14}{Added the newlfont option, rewrote the
873 % oldlfont option to change math grouping.}
874 % \changes{v0.26}{1994/05/15}{Added the margid and nomargid options.}
875 % \changes{v0.27}{1994/05/16}{Replaced \# by \#\# in margid.}
876 % \changes{v0.28}{1994/05/17}{Replaced \cs{input} newlfont.sty by
877 % \cs{OptionNotUsed} in \cs{ds@newlfont}.}
879 % \begin{macro}{\ds@oldlfont}
880 % \begin{macro}{\ds@newlfont}
881 % \begin{macro}{\ds@margid}
882 % \begin{macro}{\ds@nomargid}
883 % We declare |oldlfont|, |newlfont|, |margid| and |nomargid|
884 % options to mimic the \LaTeX~2.09 NFSS1 options.
887 %FM \@no@font@optfalse
888 \let\math@bgroup\@empty
889 \let\math@egroup\@empty
890 \let\@@math@bgroup\math@bgroup
891 \let\@@math@egroup\math@egroup
894 %FM \@no@font@optfalse
898 %FM \@no@font@optfalse
899 \let\math@bgroup\bgroup
900 \def\math@egroup##1{##1\egroup}%
901 \let \@@math@bgroup \math@bgroup
902 \let \@@math@egroup \math@egroup
904 \let\ds@nomargid\ds@oldlfont
905 \@onlypreamble\ds@oldfont
906 \@onlypreamble\ds@newfont
907 \@onlypreamble\ds@margid
908 \@onlypreamble\ds@nomargid
915 % \begin{macro}{\encodingdefault}
916 % The default encoding for old documents is OT1 rather than T1.
918 \renewcommand{\encodingdefault}{OT1}
922 % \begin{macro}{\cmex/m/n/10}
923 % Just in case a document style relies on |\cmex/m/n/10| to exist
924 % (which may have been hard-wired to |\fam3|) we load the font.
926 \expandafter\font\csname cmex/m/n/10\endcsname=cmex10
931 % \changes{v0.12}{1994/01/24}
932 % {Added \cs{normalshape} and \cs{mediumseries}.}
933 % \changes{v0.28}{1994/05/16}{\cs{mediumseries} was using
934 % \cs{fontshape} rather than \cs{fontseries}.}
936 % \begin{macro}{\normalshape}
937 % \begin{macro}{\mediumseries}
938 % These commands were used in older versions of NFSS.
940 \def\normalshape{\fontshape\shapedefault\selectfont}
941 \def\mediumseries{\fontseries\seriesdefault\selectfont}
945 % \begin{macro}{\DeclareOldFontCommand}
946 % We redefine |\DeclareOldFontCommand| to do nothing. This means
947 % that any new document classes will have their redefinitions of
948 % |\rm|, |\bf| etc.~ignored.
949 % \changes{v0.06}{1993/12/18}{Replaced \cs{@newfontswitch} by
950 % \cs{@renewfontswitch}.}
951 % \changes{v0.11}{1994/01/21}{Removed \cs{RequirePackage}{oldlfont}.}
952 % \changes{v0.19}{1994/04/05}{Replaced \cs{@renewfontswitch} by
953 % \cs{DeclareOldFontCommand}.}
955 \def \DeclareOldFontCommand #1#2#3{%
956 \wlog{Compatibility mode: definition
957 of \string#1\space ignored.}%
963 % {1994/03/02}{Added \cs{@halfmag}, \cs{@magscale} and \cs{@ptscale}}
965 % {1994/09/23}{Added spaces to the old font scale commands.}
967 % \begin{macro}{\@halfmag}
968 % \begin{macro}{\@magscale}
969 % \begin{macro}{\@ptscale}
970 % Some font-specifying commands from \LaTeX~2.09.
972 \def\@halfmag{ scaled \magstephalf}
973 \def\@magscale#1{ scaled \magstep#1 }
974 \def\@ptscale#1{ scaled #100 }
980 % \begin{macro}{\font}
981 % The current font is set to be CMR 10pt, to match \LaTeX~2.09.
983 \fontencoding{OT1} \fontfamily{cmr}
984 \fontsize{10}{12} \fontseries{m} \fontshape{n}
989 % \changes{v0.11}{1994/01/21}{Added the rest of this subsection, which
990 % used to be in oldlfont.dtx.}
992 % \begin{macro}{\load}
993 % The |\load| command is no longer needed, it is therefore
994 % defined to do nothing.
1000 % Here are three delimiters which have be partly disabled by
1001 % NFSS2 (the small variants) since the corresponding fonts are
1002 % normally not preloaded as math symbol fonts.
1004 \DeclareMathDelimiter{\lgroup} % extensible ( with sharper tips
1005 {\mathopen}{bold}{"28}{largesymbols}{"3A}
1006 \DeclareMathDelimiter{\rgroup} % extensible ) with sharper tips
1007 {\mathclose}{bold}{"29}{largesymbols}{"3B}
1008 \DeclareMathDelimiter{\bracevert} % the vertical bar that extends braces
1009 {\mathord}{typewriter}{"7C}{largesymbols}{"3E}
1012 % In old documents we might find some usages of |\bffam| etc. Thus
1013 % we add the following code:
1017 \let\itfam\symitalic
1018 \let\ttfam\symtypewriter
1019 \let\scfam\symsmallcaps
1020 \let\slfam\symslanted
1021 \let\rmfam\symoperators
1024 % Below are the |\..pt| commands with hopefully the same
1025 % functionality as in the old \texttt{lfonts.tex}. Notice that the
1026 % |\baselineskip| parameter wasn't set by these commands so that
1027 % using them now shouldn't set this either. Thus we go low-level.
1028 % This means that the commands are now fragile but I think they
1029 % have been fragile before.
1031 \newcommand\vpt {\edef\f@size{\@vpt}\rm}
1032 \newcommand\vipt {\edef\f@size{\@vipt}\rm}
1033 \newcommand\viipt {\edef\f@size{\@viipt}\rm}
1034 \newcommand\viiipt{\edef\f@size{\@viiipt}\rm}
1035 \newcommand\ixpt {\edef\f@size{\@ixpt}\rm}
1036 \newcommand\xpt {\edef\f@size{\@xpt}\rm}
1037 \newcommand\xipt {\edef\f@size{\@xipt}\rm}
1038 \newcommand\xiipt {\edef\f@size{\@xiipt}\rm}
1039 \newcommand\xivpt {\edef\f@size{\@xivpt}\rm}
1040 \newcommand\xviipt{\edef\f@size{\@xviipt}\rm}
1041 \newcommand\xxpt {\edef\f@size{\@xxpt}\rm}
1042 \newcommand\xxvpt {\edef\f@size{\@xxvpt}\rm}
1045 % \subsection{User customization}
1047 % For sites which customized their version of \LaTeX~2.09, we provide
1048 % a file |latex209.cfg|, which is loaded every time we enter
1049 % compatibility mode. If the file doesn't exist, we don't do
1052 \InputIfFileExists{latex209.cfg}{}{}
1054 % That ends the file |latex209.def|.
1059 % \section{Obsolete style files}
1061 % \changes{v0.08}{1993/12/19}{Added this section.}
1062 % \changes{v0.09}{1993/12/20}{Removed artN.sty, bkN.sty and repN.sty.}
1063 % \changes{v0.23}{1994/05/11}{Added bezier.sty.}
1064 % \changes{v0.31}{1994/05/20}{Added t1enc.sty.}
1066 % For each of the standard \LaTeX~2.09 document styles, we produce a
1067 % file which points to the appropriate \LaTeXe{} document class file.
1068 % This means that any styles which say |\input article.sty| should
1072 %<*article|book|report|letter|slides>
1073 \NeedsTeXFormat{LaTeX2e}
1074 %</article|book|report|letter|slides>
1076 \@obsoletefile{article.cls}{article.sty}
1080 \@obsoletefile{book.cls}{book.sty}
1084 \@obsoletefile{report.cls}{report.sty}
1088 \@obsoletefile{letter.cls}{letter.sty}
1092 \@obsoletefile{slides.cls}{slides.sty}
1096 % We also produce empty |fleqn.sty| and |leqno.sty| files in case
1097 % anyone has |\input| one of them.
1100 \@obsoletefile{fleqn.clo}{fleqn.sty}
1104 \@obsoletefile{leqno.clo}{leqno.sty}
1108 % We also produce an empty |openbib.sty| in case anyone has |\input|
1109 % |openbib.sty|. The |openbib| class option is now part of the kernel.
1114 The openbib option is now part of LaTeX thus this package is no
1115 longer necessary. It is only retained for upward compatibility.
1116 See the 2nd edition of the LaTeX book, or the file usrguide.tex
1117 which comes with the LaTeX distribution, for more details.
1122 % We also produce an empty |bezier.sty| in case anyone has |\input|
1123 % |bezier.sty|. The |\bezier| command is now part of the kernel.
1128 The \bezier command is now part of LaTeX thus this package is no
1129 longer necessary. It is only retained for upward compatibility.
1130 Also, please note that LaTeX now offers an extended bezier command
1131 which automatically calculates the number of points needed for the
1132 plot. See the 2nd edition of the LaTeX book, or the file
1133 usrguide.tex which comes with the LaTeX distribution, for more
1139 % We also produce a |t1enc| package, for compatibility with the
1140 % Companion. This has been replaced by the |fontenc| package.
1143 \NeedsTeXFormat{LaTeX2e}
1144 \ProvidesPackage{t1enc}[1994/06/01 Standard LaTeX package]
1145 \renewcommand{\encodingdefault}{T1}
1146 \fontencoding{T1}\selectfont
1149 % \DeleteShortVerb{\|}