diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/base/latex209.dtx |
Initial commit
Diffstat (limited to 'macros/latex/base/latex209.dtx')
-rw-r--r-- | macros/latex/base/latex209.dtx | 1136 |
1 files changed, 1136 insertions, 0 deletions
diff --git a/macros/latex/base/latex209.dtx b/macros/latex/base/latex209.dtx new file mode 100644 index 0000000000..cc5563c632 --- /dev/null +++ b/macros/latex/base/latex209.dtx @@ -0,0 +1,1136 @@ +% \iffalse meta-comment +% +% Copyright 1993-2018 +% The LaTeX3 Project and any individual authors listed elsewhere +% in this file. +% +% This file is part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% +% \title{Compatibility mode for \LaTeXe{} emulating \LaTeX~2.09} +% \author{Alan Jeffrey and Frank Mittelbach} +% \date{1995/12/27} +% +% +% +% \changes{v0.01}{1993/12/11}{Created the file, including: +% setting the compatibility flag, +% inputting oldlfont.sty, +% setting the default encoding to be OT1, and +% inputting the latex209.rc file} +% \changes{v0.02}{1993/12/12}{Changed the package filename to +% latex209.sty, and added the provides-package command.} +% \changes{v0.03}{1993/12/16}{Added an empty mark, replaced +% provides-package with provides-file, added the compatibility hook.} +% \changes{v0.04}{1993/12/16}{Moved oldlfont.sty out of the +% compatibility hook and back into latex209.cmp. Redefined +% newfontswitch to ignore redefinitions. Set the LaTeX 2e commands +% to be errors.} +% \changes{v0.05}{1993/12/17} +% {Removed the \cs{mark}, since it is now in the kernel.} +% \changes{v0.06}{1993/12/18}{Replaced the redefinition of +% \cs{@newfontswitch} to a redefinition of \cs{@renewfontswitch}. +% Added \cs{sloppy.}} +% \changes{v0.07}{1993/12/18}{Fixed a bug with \cs{@missingfileerror}.} +% \changes{v0.08}{1993/12/18}{Added the obsolete .sty files.} +% \changes{v0.09}{1993/12/20}{Removed art10.sty and friends.} +% \changes{v0.10}{1994/01/14}{Replaced latex209.rc by latex209.cfg.} +% \changes{v0.11}{1994/01/21}{Replaced latex209.cmp by latex209.def. +% Moved half of oldlfont.dtx to here. Split the package dst option +% into head and tail.} +% \changes{v0.12}{1994/01/24} +% {Added \cs{normalshape} and \cs{mediumseries}, and +% declared the `oldlfont' option to stop oldlfont.sty from being +% loaded.} +% \changes{v0.13}{1994/01/31}{removed setting of \cs{normalsize}. FMi} +% \changes{v0.14}{1994/02/07}{Added it back again.} +% \changes{v0.15}{1994/02/10}{Renamed \cs{@compatibility} to +% \cs{@documentclasshook}. Added the check for whether +% \cs{normalsize} or \cs{@normalsize} needs defined.} +% \changes{v0.16}{1994/02/11}{Replaced the allocation of temporary +% dimens for \cs{footheight}, \cs{@maxsep} and \cs{@dblmaxsep} +% by real dimen variables.} +% \changes{v0.17}{1994/03/02}{Moved the documentation to the front, so +% this file can be processed directly without a driver file. +% Added \cs{@ptscale}, \cs{@halfmag}, \cs{@magscale}, and set the +% default font to be CMR at 10pt.} +% \changes{v0.18}{1994/03/11}{Restored the old definition of \cs{verb}. +% Set the catcodes of the non-alphanumerics.} +% \changes{v0.19}{1994/04/05}{Switched off more 2e features: \cs{lrbox}, +% \cs{width}, \cs{height}, \cs{depth} in box dimensions, and the new +% optional arguments to \cs{parbox}, \cs{minipage} and +% \cs{newcommand}. The code was provided by DPC. Fixed a misplaced +% </head!>. Made the \cs{ProvidesPackage} and \cs{ProvidesClass} +% warnings log messages. Removed \cs{filedate}.} +% \changes{v0.20}{1994/04/20} +% {Restored the 2.09 definition of \cs{@noligs}.} +% \changes{v0.21}{1994/04/24} +% {Restored the 2.09 definition of \cs{@lquote}.} +% \changes{v0.22}{1994/05/02}{Added \cs{@latex@e@command}.} +% \changes{v0.23}{1994/05/11}{Added bezier.sty.} +% \changes{v0.24}{1994/05/14}{Removed \cs{@@@} and switched the box +% commands back on, for use in packages.} +% \changes{v0.24}{1994/05/14}{Changed the 2e command error help.} +% \changes{v0.24}{1994/05/14}{Removed date from announcement of +% 2.09 mode.} +% \changes{v0.25}{1994/05/14}{Added the newlfont option, and rewrote the +% oldlfont option.} +% \changes{v0.26}{1994/05/15}{Added the margid and nomargid options.} +% \changes{v0.27}{1994/05/16}{Fixed a bug with the margid option.} +% \changes{v0.28}{1994/05/16}{Fixed a bug with \cs{mediumseries}.} +% \changes{v0.29}{1994/05/17}{Fixed a bug with \cs{newlfont}.} +% \changes{v0.29}{1994/05/17}{Removed extra spaces from the missing +% file error.} +% \changes{v0.29}{1994/05/17}{Made the bezier package use \cs{iffalse} +% to comment itself out, rather than \%\%, which caused it to +% appear in every 2.09 file.} +% \changes{v0.30}{1994/05/18}{Added \cs{@finalstrut}.} +% \changes{v0.31}{1994/05/20}{New definition of \cs{@finalstrut}.} +% \changes{v0.31}{1994/05/20}{Added the t1enc package.} +% \changes{v0.32}{1994/05/20}{Added SLiTeX.} +% \changes{v0.33}{1994/06/01}{Fixed bug with SLiTeX.} +% \changes{v0.34}{1994/08/22}{Replaced l2euser by usrguide.} +% \changes{v0.34}{1994/08/22}{Added a default definition for \cs{+}.} +% \changes{v0.35}{1994/09/23} +% {Added spaces to the old font scale commands.} +% \changes{v0.36}{1994/10/17}{Added an empty \cs{mark} back again.} +% \changes{v0.37}{1994/10/20}{Corrected a typo.} +% \changes{v0.38}{1994/11/16}{Removed \cs{LaTeXe} from this list} +% \changes{v0.39}{1994/11/28}{Added old behaviour of floats and space.} +% \changes{v0.40}{1995/05/05}{Make \cs{verb} use \cs{tt} font in +% math mode.} +% \changes{v0.49}{1995/10/26}{Added code for fleqn.sty, leqno.sty, +% openbib.sty.} +% \changes{v0.50}{1995/12/08}{Switched of \cs{@inmathwarn}.} +% \changes{v0.53}{2015/02/22}{Dropped \cs{@no@font@optfalse} in various places +% - no longer provided by ltfsscmp.dtx.} +% +% \MaintainedByLaTeXTeam{latex} +% \maketitle +% +% \section{Introduction} +% +% The file |latex209.def| is read in by \LaTeXe{} whenever it finds a +% |\documentstyle| rather than |\documentclass| command at the +% beginning of the file. This indicates a \LaTeX~2.09 document, which +% should be processed in {\em compatibility mode}. +% +% Any document which compiled under \LaTeX~2.09 should compile under +% compatibility mode, unless it uses low-level commands such as +% |\tenrm|. +% +% \section{The docstrip modules} +% +% The following modules are used in the implementation to direct +% docstrip in generating the external files: +% \begin{center} +% \begin{tabular}{ll} +% driver & produce a documentation driver file \\ +% head & produce the beginning of |latex209.def| \\ +% tail & produce the end of |latex209.def| \\ +% article & produce |article.sty| \\ +% book & produce |book.sty| \\ +% report & produce |report.sty| \\ +% slides & produce |slides.sty| \\ +% letter & produce |letter.sty| \\ +% bezier & produce |bezier.sty| \\ +% fleqn & produce |fleqn.sty| \\ +% leqno & produce |leqno.sty| \\ +% openbib & produce |openbib.sty| +% \end{tabular} +% \end{center} +% Between the |head| and |tail| of |latex209.def|, the code for +% |oldlfont.sty| is included, so \LaTeX~2.09 documents will +% automatically be run simulating the OFSS. +% \changes{v0.09}{1993/12/20}{Removed artN.sty, bkN.sty and repN.sty.} +% \changes{v0.11}{1994/01/21}{Split package into head and tail.} +% \changes{v0.23}{1994/05/11}{Added bezier option.} +% +% \StopEventually{} +% +% \section{Driver} +% +% This section contains the driver for this documentation. +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\DisableCrossrefs +% \OnlyDescription +\begin{document} + \DocInput{latex209.dtx} +\end{document} +%</driver> +% \end{macrocode} +% +% \section{Beginning of latex209.def} +% +% \changes{v0.11}{1994/01/21}{oldlfont.dtx is now also used to generate +% latex209.dtx.} +% +% This section describes the beginning of the file |latex209.def|. +% \begin{macrocode} +%<*head> +% \end{macrocode} +% +% \subsection{Identification} +% +% This file needs to be run with \LaTeXe. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% Describe the file. +% \begin{macrocode} +\ProvidesFile{latex209.def}[2018/08/11 v0.54 Standard LaTeX file] +% \end{macrocode} +% \changes{v0.24}{1994/05/14}{Removed date.} +% \changes{v0.40}{1995/03/21} +% {(DPC) Do not execute this file twice latex/1460} +% Announce compatibility mode to the user. +% \changes{v0.52}{1998/05/13}{Added experimental +% long typeout to possibly avoid prs like 2807} +% \begin{macrocode} +\if@compatibility + \expandafter\endinput +\else + \typeout{^^J\space +\@spaces\@spaces\space Entering LaTeX 2.09 COMPATIBILITY MODE^^J\space + *************************************************************^^J\space + \space\space\space!!WARNING!!\space + \space\space\space!!WARNING!!\space + \space\space\space!!WARNING!!\space + \space\space\space!!WARNING!!\space\space\space ^^J\space + ^^J\space + This mode attempts to provide an emulation of the LaTeX 2.09^^J\space + author environment so that OLD documents can be successfully^^J\space + processed. It should NOT be used for NEW documents!^^J\space + ^^J\space + New documents should use Standard LaTeX conventions and start^^J\space + with the \string\documentclass\space command.^^J\space + ^^J\space + Compatibility mode is UNLIKELY TO WORK with LaTeX 2.09 style^^J\space + files that change any internal macros, especially not with^^J\space + those that change the FONT SELECTION or OUTPUT ROUTINES.^^J\space +^^J\space + Therefore such style files MUST BE UPDATED to use^^J\space +\@spaces\@spaces\space Current Standard LaTeX: LaTeX2e.^^J\space + If you suspect that you may be using such a style file, which^^J\space + is probably very, very old by now, then you should attempt to^^J\space + get it updated by sending a copy of this error message to the^^J\space + author of that file.^^J\space + *************************************************************^^J} + \fi +% \end{macrocode} +% +% \subsection{Compatibility flag} +% +% \begin{macro}{\@compatibilitytrue} +% \LaTeXe{} has a flag |\if@compatibility| which can be used by +% document classes or packages to determine whether they are running +% in compatibility mode or not. This flag is set true by this file. +% \begin{macrocode} +\@compatibilitytrue +% \end{macrocode} +% \end{macro} +% +% \subsection{Removing features} +% +% \changes{v0.22}{1994/05/02}{Added \cs{@latex@e@command}.} +% \changes{v0.36}{1994/10/17}{Redid switching off commands.} +% \changes{v0.38}{1994/11/16}{Removed \cs{LaTeXe} from this list} +% +% \begin{macro}{\usepackage} +% \begin{macro}{\listfiles} +% \begin{macro}{\ensuremath} +% \begin{macro}{\lrbox} +% \begin{macro}{\newcommand} +% These \LaTeXe{} commands are switched off in compatibility mode. +% This is done by saving the old definition, and redefining the +% command to call |\@latex@e@error| before executing the old version. +% \begin{macrocode} +\def\@tempa#1#2{% + \expandafter\let\csname @@\string#1\endcsname#1% + \edef#1{% + \noexpand\@latex@e@error{\noexpand#2}% + \expandafter\noexpand\csname @@\string#1\endcsname + }% +} +\@tempa\usepackage\usepackage +\@tempa\listfiles\listfiles +\@tempa\ensuremath\ensuremath +\@tempa\lrbox{\begin{lrbox}}% +\@tempa\@xargdef{\newcommand{cmd}[args][def]}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{v0.22}{1994/05/02} +% {Added \cs{if@latex@e@errors} and \cs{@@@}.} +% \changes{v0.24} +% {1994/05/14}{Removed \cs{if@latex@e@errors} and \cs{@@@}.} +% \changes{v0.24}{1994/05/14}{Changed the error help.} +% \changes{v0.36}{1994/10/17}{Initialized \cs{@latex@e@error} to do +% nothing, and switched it on at the begin document.} +% +% \begin{macro}{\@latex@e@error} +% \begin{macro}{\@latex@e@error@} +% This error is produced if a user uses a \LaTeXe{} command in +% compatibility mode. This is to encourage users to move over to +% using |\documentclass| as quickly as possible. During the preamble +% the error does nothing (so that packages can use \LaTeXe{} commands) +% but it is redefined to be an error message at |\begin{document}|. +% \begin{macrocode} +\let\@latex@e@error\@gobble +\def\@latex@e@error@#1{% + \@latexerr{% + LaTeX2e command \string#1\space in LaTeX 2.09 document% + }{% + This is a LaTeX 2.09 document, but it contains + \string#1.^^J% + If you want to use the new features of LaTeX2e, + your document^^J% + should begin with \string\documentclass\space + rather than \string\documentstyle + }% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{v0.36}{1994/10/17} +% {Allow 2e commands to be redefined once with \cs{newcommand}.} +% \changes{v0.40}{1995/03/21}{ +% (DPC) Add \cs{r} to the list of 2e commands latex/1424} +% +% \begin{macro}{\@ifdefinable} +% \begin{macro}{\@old@ifdefinable} +% \begin{macro}{\@@ifdefinable} +% \begin{macro}{\@latex@e@commands} +% We trap the |\@notdefinable| error message to check to see if the +% command is a \LaTeXe{} command, in which case we allow the +% definition to happen. We keep a list of commands which are +% allowed to be redefined this way in |\@latex@e@commands|, and +% remove an entry each time it is defined. +% \begin{macrocode} +\let\@old@ifdefinable\@ifdefinable +\long\def\@ifdefinable#1{% + \def\@tempa##1#1##2#1##3#1##4\@tempa{% + \def\@latex@e@commands{##1##2}% + ##3% ##3 will either be \iftrue or \iffalse + \expandafter\@firstofone + \else + \expandafter\@old@ifdefinable\expandafter#1% + \fi + }% + \expandafter\@tempa\@latex@e@commands#1\iftrue#1\iffalse#1\@tempa% +} +\let\@@ifdefinable\@ifdefinable +\def\@latex@e@commands{% + \usepackage\listfiles\ensuremath\LaTeXe\lrbox + \th\dh\ng\dj\TH\DH\NG\DJ\k\r\SS + \guillemetleft\guillemetright + \guillemotleft\guillemotright\guilsinglleft + \guilsinglright\quotedblbase\quotesinglbase +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@begin@tempboxa} +% \changes{v0.22}{1994/05/02}{Commented out the redefinition of +% \cs{@begin@tempboxa}.} +% If we were to switch off the new |\width|, |\height| and |\depth| +% commands, this is how to do it. This isn't done, since these +% commands may be used in packages. +% \begin{verbatim} +%\long\def\@begin@tempboxa#1#2{% +% \begingroup +% \setbox\@tempboxa#1{{#2}}} +% \end{verbatim} +% \end{macro} +% +% \subsection{Document class hook} +% +% \begin{macro}{\@documentclasshook} +% \changes{v0.15}{1994/02/10}{Renamed from \cs{@compatibility} to +% \cs{@documentclasshook}. Added the check for \cs{@normalsize} and +% \cs{normalsize} being defined.} +% \changes{v0.22}{1994/05/02}{Moved switching off commands into the +% document class hook.} +% \changes{v0.24}{1994/05/14}{Switched the box commands back on, for use +% in packages.} +% \changes{v0.36}{1994/10/17}{Changed the way the 2e command error is +% activated.} +% \changes{v0.51}{1996/05/24}{(DPC) Reimplemented for /2153.} +% This macro is called by each use of |\documentclass|. We define +% it to define |\@normalsize| and |\normalsize| if necessary, +% to input each unused option as a package, and to switch off the new +% \LaTeXe{} commands. However, we leave on the commands +% |\settoheight|, |\settowidth| and the new options to |\parbox| and +% |\minipage|, since these are likely to be used in packages. +% +% The intention of the strange |\normalsize| tests below are that after +% the |\documentstyle| command has completed, then +% if neither of the commands |\normalsize| +% nor |\@normalsize| were defined by the main style or one of its +% `substyles' or `options', then |\@normalsize| will be undefined and +% |\normalsize| will generate an error saying it hasn't been defined. +% +% If the style defined either |\normalsize| or \@|normalsize| then +% these two commands will be |\let| equal to each other, with the +% definition given by the style file. +% +% If the style defines both |\normalsize| and |\@normalsize| then +% those two definitions are kept. +% \begin{macrocode} +\def\@documentclasshook{% + \RequirePackage\@unusedoptionlist + \let\@unusedoptionlist\@empty + \def\@tempa{\@normalsize}% + \ifx\normalsize\@tempa + \let\normalsize\@normalsize + \fi + \ifx\@normalsize\@undefined + \let\@normalsize\normalsize + \fi + \ifx\normalsize\@undefined + \let\normalsize\original@normalsize + \fi + \let\@latex@e@error\@latex@e@error@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\original@normalsize} +% \changes{v0.51}{1996/05/24}{(DPC) Macro added /2153.} +% Save the original definition of |\normalsize| (which generates an +% error) +% \begin{macrocode} +\let\original@normalsize\normalsize +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\normalsize} +% \changes{v0.14}{1994/02/07}{Added \cs{normalsize}.} +% Some styles don't define |\normalsize|, just |\@normalsize|. +% \begin{macrocode} +\def\normalsize{\@normalsize} +% \end{macrocode} +% \end{macro} +% +% \subsection{Compatibility with \LaTeX~2.09 document styles} +% +% \begin{macro}{\@missingfileerror} +% If a |.cls| file is missing, we look to see if there is +% a file of the same name with a |.sty| extension. +% \changes{v0.06}{1993/12/18}{Corrected a typo +% \cs{@saved@missingfileerror} +% should have been \cs{saved@missingfileerror}.} +% \changes{v0.07}{1993/12/18}{Corrected a typo, I'd forgotten to pass +% the arguments of \cs{@missingfileerror} on to +% \cs{saved@missingfileerror}.} +% \changes{v0.29}{1994/05/17}{Removed extraneous spaces.} +% \begin{macrocode} +\@ifundefined{saved@missingfileerror}{ + \let\saved@missingfileerror=\@missingfileerror +}{} +\def\@missingfileerror#1#2{% + \ifx#2\@clsextension + \InputIfFileExists{#1.\@pkgextension}{% + \wlog{Compatibility mode: loading #1.\@pkgextension + \space rather than #1.#2.}% + }{% + \saved@missingfileerror{#1}{#2}% + }% + \else + \saved@missingfileerror{#1}{#2}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@obsoletefile} +% For compatibility with the document styles which |\input| the +% standard \LaTeX~2.09 document styles, we distribute +% files called |article.sty|, |book.sty|, |report.sty|, +% |slides.sty| and |letter.sty|. These use the command +% |\@obsoletefile|, which the \LaTeXe{} kernel defines to produce a +% warning message. We redefine it to just produce a message in the +% log file, and to pass any options from the old filename to the +% new filename. +% \changes{v0.08}{1993/12/19}{Added this command.} +% \changes{v0.10}{1994/01/14}{Added the option-passing.} +% \begin{macrocode} +\def\@obsoletefile#1#2{% + \expandafter\let\csname opt@#1\expandafter\endcsname + \csname opt@\@currname.\@currext\endcsname + \wlog{Compatibility mode: inputting `#1' + instead of obsolete `#2'.}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\footheight} +% \begin{macro}{\@maxsep} +% \begin{macro}{\@dblmaxsep} +% \LaTeX~2.09 supported these parameters, so for compatibility with +% old document styles we allocate them. +% \changes{v0.16}{1994/02/11}{Replaced the allocation of temporary +% dimens for \cs{footheight}, \cs{@maxsep} and \cs{@dblmaxsep} by +% real dimen variables.} +% \begin{macrocode} +\newdimen\footheight +\newdimen\@maxsep +\newdimen\@dblmaxsep +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{v0.36}{1994/10/17}{Added an empty \cs{mark}.} +% \changes{v0.37} +% {1994/10/20}{Corrected a type with the empty \cs{mark}.} +% +% \begin{macro}{\mark} +% \LaTeX~2.09 initialized an empty mark. Who knows, someone may have +% relied on it: +% \begin{macrocode} +\mark{{}{}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Layout} +% +% \begin{macro}{\sloppy} +% \changes{v0.06}{1993/12/18}{Added \cs{sloppy}} +% There is a new version of |\sloppy| in \LaTeXe, so we restore the +% old one. +% \begin{macrocode} +\def\sloppy{\tolerance \@M \hfuzz .5\p@ \vfuzz .5\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@finalstrut} +% \changes{v0.30}{1994/05/18}{Added \cs{@finalstrut}.} +% \changes{v0.31}{1994/05/20}{New definition of \cs{@finalstrut}.} +% The strut which is used in a footnote has changed. This restores +% the old definition. +% \begin{macrocode} +\def\@finalstrut#1{\unskip\strut} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@marginparreset} +% \begin{macro}{\@floatboxreset} +% \changes{v0.39}{1994/11/28}{Added old behaviour of floats and space.} +% \changes{v0.45}{1995/05/25}{(CAR) Changed method of restoring +% old behaviour of floats and space.} +% Restore the old spacing around floats. +% \begin{macrocode} +\let \@marginparreset \@empty +\let \@floatboxreset \@empty +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\proclaim} +% \changes{v0.41}{1995/04/24} +% {Move here from ltplain.dtx} +% From plain \TeX. +% \begin{macrocode} +\outer\def\proclaim #1. #2\par{% + \medbreak + \noindent{\bfseries#1.\enspace}{\slshape#2\par}% + \ifdim\lastskip<\medskipamount + \removelastskip\penalty55\medskip + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hang} +% \begin{macro}{\textindent} +% \changes{v0.42}{1995/04/27} +% {Move here from ltplain.dtx} +% From plain \TeX. +% \begin{macrocode} +\def\hang{\hangindent\parindent} +\def\textindent#1{\indent\llap{#1\enspace}\ignorespaces} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\ttraggedright} +% \changes{v0.41}{1995/04/24} +% {Move here from ltplain.dtx} +% \begin{macrocode} +\def\ttraggedright{\reset@font\ttfamily\rightskip\z@ plus2em\relax} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@footnotemark} +% \changes{v0.43}{1995/05/12} +% {macro added} +% \LaTeXe\ version has |\nobreak| to allow hyphenation. +% \begin{macrocode} +\def\@footnotemark{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\fi + \@makefnmark + \ifhmode\spacefactor\@x@sf\fi + \relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@textsuperscript} +% \changes{v0.48}{1995/07/07} +% {macro added for latex/1722} +% Fudge this command to remove the text font command which +% is always the first thing in the argument. This is needed +% as in compatibility mode footnotes are processed in math mode, +% but the standard classes call |\@textsuperscript| in the definition +% of |\thanks|. +% \begin{macrocode} +\def\@textsuperscript#1{$\m@th^{\@gobble#1}$} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\@makefnmark} +% \changes{v0.44}{1995/05/20}{macro added} +% \LaTeXe\ version uses |\textsuperscript| rather than +% math mode. +% \begin{macrocode} +\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\thempfootnote} +% \changes{v0.44}{1995/05/20}{macro added} +% \LaTeXe\ version has an additional |\itshape| which would not +% work (and would not make sense) in math mode. +% \begin{macrocode} +\def\thempfootnote{\@alph\c@mpfootnote} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@fnsymbol} +% \changes{v0.46}{1995/06/30}{macro added} +% \LaTeX\ version uses |\ensuremath| which does not work in +% compatibility mode. +% \begin{macrocode} +\def\@fnsymbol#1{\ifcase#1\or *\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@inmathwarn} +% \changes{v0.50}{1995/12/08}{Switched off \cs{@inmathwarn}} +% \LaTeX\ (1995/12/01) checks for text commands being used in math +% mode. We switch this off in compatibility mode. +% \begin{macrocode} +\let\@inmathwarn\@gobble +% \end{macrocode} +% \end{macro} +% +% \subsection{Verbatim} +% +% \changes{v0.18}{1994/03/11}{Added the changes to \cs{verb}} +% \changes{v0.40}{1995/05/05}{Make \cs{verb} use \cs{tt} font in +% math mode.} +% \begin{macro}{\verb} +% \begin{macro}{\@sverb} +% We restore the old definition of |\verb|, but using +% |\verbatim@font| rather than |\tt|. The use of |\bgroup| and +% |\egroup| allows us to prefix it with |\hbox| in math mode. +% \begin{macrocode} +\def\verb{% + \relax\ifmmode\hbox\fi\bgroup + \@noligs + \verbatim@font + \let\do\@makeother \dospecials + \@ifstar{\@sverb}{\@verb}% +} +\def\@sverb#1{% + \def\@tempa ##1#1{\leavevmode\null##1\egroup}% + \@tempa +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\verbatim@nolig@list} +% \changes{v0.20}{1994/04/20}{Added the redefinition of +% \cs{verbatim@nolig@list}.} +% The only ligatures which should be switched off in 2.09 mode are +% the Spanish punctuation. +% \begin{macrocode} +\def\verbatim@nolig@list{\do\`} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@lquote} +% \changes{v0.21}{1994/04/24}{Added the definition of \cs{@lquote}.} +% We restore the old definition of |\@lquote| in case any packages +% use it. +% \begin{macrocode} +\def\@lquote{\leavevmode{\kern\z@}`} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Character codes} +% +% \changes{v0.18}{1994/03/11}{Added the catcode changes} +% +% By default, \LaTeXe{} makes the input charactes 0--8, 11, 14--31 and +% 128--255 illegal. In compatibility mode, we restore their old +% meanings. +% \begin{macrocode} +\catcode0=9 +\@tempcnta=1 +\loop\ifnum\@tempcnta<32 + \catcode\@tempcnta=12 + \advance\@tempcnta by 1 +\repeat% +\catcode`\^^I=10\relax% +\catcode`\^^L=13\relax% +\catcode`\^^M=5\relax% +\catcode127=15 +\@tempcnta=128 +\loop\ifnum\@tempcnta<256 + \catcode\@tempcnta=12 + \advance\@tempcnta by 1 +\repeat +% \end{macrocode} +% +% \subsection{Miscellaneous commands} +% +% \begin{macro}{\SLiTeX} +% The \textsc{Sli\TeX} logo. +% \begin{macrocode} +\DeclareRobustCommand{\SLiTeX}{{% + \normalfont S\kern -.06em + {\scshape l\kern -.035emi}\kern -.06em + \TeX}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\+} +% The |\+| command should be defined, so that it can be used in +% |\renewcommand|. +% \begin{macrocode} +\let\+\@empty +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@cla} +% \begin{macro}{\@clb} +% \changes{v0.47}{1995/09/25} +% {(DPC) Declare old \cs{cline} registers} +% \begin{macro}{\mscount} +% \LaTeX2.09 (and early versions of \LaTeXe) used these count registers +% in the definition of |\cline| and |\multispan|. +% Declare them here in case they were used for any other purposes. +% \begin{macrocode} +\newcount\@cla +\newcount\@clb +\newcount\mscount +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@imakepicbox} +% \changes{v0.48}{1995/10/16} +% {(DPC) emulate old behaviour of picture mode makebox} +% picture mode version +% \begin{macrocode} +\long\def\@imakepicbox(#1,#2)[#3]#4{% + \vbox to#2\unitlength + {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss + \let\mb@t\vss + \@tfor\reserved@a :=#3\do{% + \if s\reserved@a + \let\mb@l\relax\let\mb@r\relax + \else + \expandafter\let\csname mb@\reserved@a\endcsname\relax + \fi}% + \mb@t + \hb@xt@ #1\unitlength{\mb@l #4\mb@r}% + \mb@b +% \end{macrocode} +% This kern ensures that a |b| option aligns on the bottom of the +% text rather than the baseline. this is the documented behaviour in +% the \LaTeX Book. The kern is removed in compatibility mode. +% +% Remove kern for bug compatibility with 2.09. +% \begin{macrocode} +% \kern\z@ + }} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\supereject} +% \begin{macrocode} +\def\supereject{\par\penalty-\@MM} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\nofiles} +% \changes{v0.51}{1996/05/24}{(DPC) Old definition, without \cs{write} +% added to \cs{protected@write}, for latex/2146} +% This old version might change the vertical spacing when it is used. +% Some old document might depend on that changed spacing so\ldots +% \begin{macrocode} +\def\nofiles{% + \@fileswfalse + \typeout{No auxiliary output files.^^J}% + \long\def\protected@write##1##2##3{}% + \let\makeindex\relax + \let\makeglossary\relax} +% \end{macrocode} +% \end{macro} +% +% \subsection{Packages and classes} +% +% \begin{macro}{\ProvidesPackage} +% \begin{macro}{\ProvidesClass} +% We redefine |\ProvidesPackage| and |\ProvidesClass| to produce a +% log message rather than a warning if they find an unexpected +% file. +% \begin{macrocode} +\def\ProvidesPackage#1{% + \xdef\@gtempa{#1}% + \ifx\@gtempa\@currname\else + \wlog{Compatibility mode: \@cls@pkg\space`\@currname' requested, + but `#1' provided.}% + \fi + \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%] +\let\ProvidesClass=\ProvidesPackage +% \end{macrocode} +% \end{macro} +% \end{macro} +% That ends the head of |latex209.def|. +% \begin{macrocode} +%</head> +% \end{macrocode} +% +% \section{Middle of latex209.def} +% +% At this point, the code for |oldlfont.sty| is read in by the +% installation script. +% +% \section{End of latex209.def} +% +% This section describes the end of |latex209.def|. +% \begin{macrocode} +%<*tail> +% \end{macrocode} +% +% \subsection{Font commands} +% +% \changes{v0.12}{1994/01/24}{Added the oldlfont option.} +% \changes{v0.25}{1994/05/14}{Added the newlfont option, rewrote the +% oldlfont option to change math grouping.} +% \changes{v0.26}{1994/05/15}{Added the margid and nomargid options.} +% \changes{v0.27}{1994/05/16}{Replaced \# by \#\# in margid.} +% \changes{v0.28}{1994/05/17}{Replaced \cs{input} newlfont.sty by +% \cs{OptionNotUsed} in \cs{ds@newlfont}.} +% +% \begin{macro}{\ds@oldlfont} +% \begin{macro}{\ds@newlfont} +% \begin{macro}{\ds@margid} +% \begin{macro}{\ds@nomargid} +% We declare |oldlfont|, |newlfont|, |margid| and |nomargid| +% options to mimic the \LaTeX~2.09 NFSS1 options. +% \begin{macrocode} +\def\ds@oldlfont{% +%FM \@no@font@optfalse + \let\math@bgroup\@empty + \let\math@egroup\@empty + \let\@@math@bgroup\math@bgroup + \let\@@math@egroup\math@egroup +} +\def\ds@newlfont{% +%FM \@no@font@optfalse + \OptionNotUsed +} +\def\ds@margid{% +%FM \@no@font@optfalse + \let\math@bgroup\bgroup + \def\math@egroup##1{##1\egroup}% + \let \@@math@bgroup \math@bgroup + \let \@@math@egroup \math@egroup +} +\let\ds@nomargid\ds@oldlfont +\@onlypreamble\ds@oldfont +\@onlypreamble\ds@newfont +\@onlypreamble\ds@margid +\@onlypreamble\ds@nomargid +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\encodingdefault} +% The default encoding for old documents is OT1 rather than T1. +% \begin{macrocode} +\renewcommand{\encodingdefault}{OT1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\cmex/m/n/10} +% Just in case a document style relies on |\cmex/m/n/10| to exist +% (which may have been hard-wired to |\fam3|) we load the font. +% \begin{macrocode} +\expandafter\font\csname cmex/m/n/10\endcsname=cmex10 +% \end{macrocode} +% \end{macro} +% +% +% \changes{v0.12}{1994/01/24} +% {Added \cs{normalshape} and \cs{mediumseries}.} +% \changes{v0.28}{1994/05/16}{\cs{mediumseries} was using +% \cs{fontshape} rather than \cs{fontseries}.} +% +% \begin{macro}{\normalshape} +% \begin{macro}{\mediumseries} +% These commands were used in older versions of NFSS. +% \begin{macrocode} +\def\normalshape{\fontshape\shapedefault\selectfont} +\def\mediumseries{\fontseries\seriesdefault\selectfont} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\DeclareOldFontCommand} +% We redefine |\DeclareOldFontCommand| to do nothing. This means +% that any new document classes will have their redefinitions of +% |\rm|, |\bf| etc.~ignored. +% \changes{v0.06}{1993/12/18}{Replaced \cs{@newfontswitch} by +% \cs{@renewfontswitch}.} +% \changes{v0.11}{1994/01/21}{Removed \cs{RequirePackage}{oldlfont}.} +% \changes{v0.19}{1994/04/05}{Replaced \cs{@renewfontswitch} by +% \cs{DeclareOldFontCommand}.} +% \begin{macrocode} +\def \DeclareOldFontCommand #1#2#3{% + \wlog{Compatibility mode: definition + of \string#1\space ignored.}% +} +% \end{macrocode} +% \end{macro} +% +% \changes{v0.17} +% {1994/03/02}{Added \cs{@halfmag}, \cs{@magscale} and \cs{@ptscale}} +% \changes{v0.35} +% {1994/09/23}{Added spaces to the old font scale commands.} +% +% \begin{macro}{\@halfmag} +% \begin{macro}{\@magscale} +% \begin{macro}{\@ptscale} +% Some font-specifying commands from \LaTeX~2.09. +% \begin{macrocode} +\def\@halfmag{ scaled \magstephalf} +\def\@magscale#1{ scaled \magstep#1 } +\def\@ptscale#1{ scaled #100 } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\font} +% The current font is set to be CMR 10pt, to match \LaTeX~2.09. +% \begin{macrocode} +\fontencoding{OT1} \fontfamily{cmr} +\fontsize{10}{12} \fontseries{m} \fontshape{n} +\selectfont +% \end{macrocode} +% \end{macro} +% +% \changes{v0.11}{1994/01/21}{Added the rest of this subsection, which +% used to be in oldlfont.dtx.} +% +% \begin{macro}{\load} +% The |\load| command is no longer needed, it is therefore +% defined to do nothing. +% \begin{macrocode} +\let\load\@gobbletwo +% \end{macrocode} +% \end{macro} +% +% Here are three delimiters which have be partly disabled by +% NFSS2 (the small variants) since the corresponding fonts are +% normally not preloaded as math symbol fonts. +% \begin{macrocode} +\DeclareMathDelimiter{\lgroup} % extensible ( with sharper tips + {\mathopen}{bold}{"28}{largesymbols}{"3A} +\DeclareMathDelimiter{\rgroup} % extensible ) with sharper tips + {\mathclose}{bold}{"29}{largesymbols}{"3B} +\DeclareMathDelimiter{\bracevert} % the vertical bar that extends braces + {\mathord}{typewriter}{"7C}{largesymbols}{"3E} +% \end{macrocode} +% +% In old documents we might find some usages of |\bffam| etc. Thus +% we add the following code: +% \begin{macrocode} +\let\bffam\symbold +\let\sffam\symsans +\let\itfam\symitalic +\let\ttfam\symtypewriter +\let\scfam\symsmallcaps +\let\slfam\symslanted +\let\rmfam\symoperators +% \end{macrocode} +% +% Below are the |\..pt| commands with hopefully the same +% functionality as in the old \texttt{lfonts.tex}. Notice that the +% |\baselineskip| parameter wasn't set by these commands so that +% using them now shouldn't set this either. Thus we go low-level. +% This means that the commands are now fragile but I think they +% have been fragile before. +% \begin{macrocode} +\newcommand\vpt {\edef\f@size{\@vpt}\rm} +\newcommand\vipt {\edef\f@size{\@vipt}\rm} +\newcommand\viipt {\edef\f@size{\@viipt}\rm} +\newcommand\viiipt{\edef\f@size{\@viiipt}\rm} +\newcommand\ixpt {\edef\f@size{\@ixpt}\rm} +\newcommand\xpt {\edef\f@size{\@xpt}\rm} +\newcommand\xipt {\edef\f@size{\@xipt}\rm} +\newcommand\xiipt {\edef\f@size{\@xiipt}\rm} +\newcommand\xivpt {\edef\f@size{\@xivpt}\rm} +\newcommand\xviipt{\edef\f@size{\@xviipt}\rm} +\newcommand\xxpt {\edef\f@size{\@xxpt}\rm} +\newcommand\xxvpt {\edef\f@size{\@xxvpt}\rm} +% \end{macrocode} +% +% \subsection{User customization} +% +% For sites which customized their version of \LaTeX~2.09, we provide +% a file |latex209.cfg|, which is loaded every time we enter +% compatibility mode. If the file doesn't exist, we don't do +% anything. +% \begin{macrocode} +\InputIfFileExists{latex209.cfg}{}{} +% \end{macrocode} +% That ends the file |latex209.def|. +% \begin{macrocode} +%</tail> +% \end{macrocode} +% +% \section{Obsolete style files} +% +% \changes{v0.08}{1993/12/19}{Added this section.} +% \changes{v0.09}{1993/12/20}{Removed artN.sty, bkN.sty and repN.sty.} +% \changes{v0.23}{1994/05/11}{Added bezier.sty.} +% \changes{v0.31}{1994/05/20}{Added t1enc.sty.} +% +% For each of the standard \LaTeX~2.09 document styles, we produce a +% file which points to the appropriate \LaTeXe{} document class file. +% This means that any styles which say |\input article.sty| should +% still work. +% +% \begin{macrocode} +%<*article|book|report|letter|slides> +\NeedsTeXFormat{LaTeX2e} +%</article|book|report|letter|slides> +%<*article> +\@obsoletefile{article.cls}{article.sty} +\LoadClass{article} +%</article> +%<*book> +\@obsoletefile{book.cls}{book.sty} +\LoadClass{book} +%</book> +%<*report> +\@obsoletefile{report.cls}{report.sty} +\LoadClass{report} +%</report> +%<*letter> +\@obsoletefile{letter.cls}{letter.sty} +\LoadClass{letter} +%</letter> +%<*slides> +\@obsoletefile{slides.cls}{slides.sty} +\LoadClass{slides} +%</slides> +% \end{macrocode} +% We also produce empty |fleqn.sty| and |leqno.sty| files in case +% anyone has |\input| one of them. +% \begin{macrocode} +%<*fleqn> +\@obsoletefile{fleqn.clo}{fleqn.sty} +\input{fleqn.clo} +%</fleqn> +%<*leqno> +\@obsoletefile{leqno.clo}{leqno.sty} +\input{leqno.clo} +%</leqno> +% \end{macrocode} +% We also produce an empty |openbib.sty| in case anyone has |\input| +% |openbib.sty|. The |openbib| class option is now part of the kernel. +% \begin{macrocode} +%<*openbib> +\iffalse + +The openbib option is now part of LaTeX thus this package is no +longer necessary. It is only retained for upward compatibility. +See the 2nd edition of the LaTeX book, or the file usrguide.tex +which comes with the LaTeX distribution, for more details. + +\fi +%</openbib> +% \end{macrocode} +% We also produce an empty |bezier.sty| in case anyone has |\input| +% |bezier.sty|. The |\bezier| command is now part of the kernel. +% \begin{macrocode} +%<*bezier> +\iffalse + +The \bezier command is now part of LaTeX thus this package is no +longer necessary. It is only retained for upward compatibility. +Also, please note that LaTeX now offers an extended bezier command +which automatically calculates the number of points needed for the +plot. See the 2nd edition of the LaTeX book, or the file +usrguide.tex which comes with the LaTeX distribution, for more +details. + +\fi +%</bezier> +% \end{macrocode} +% We also produce a |t1enc| package, for compatibility with the +% Companion. This has been replaced by the |fontenc| package. +% \begin{macrocode} +%<*t1enc> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{t1enc}[1994/06/01 Standard LaTeX package] +\renewcommand{\encodingdefault}{T1} +\fontencoding{T1}\selectfont +%</t1enc> +% \end{macrocode} +% \DeleteShortVerb{\|} +% \Finale +\endinput |