% \iffalse meta-comment
%
% Copyright 1993-1995 the LaTeX3 project and any individual authors
% listed elsewhere in this file.  All rights reserved.
% 
% For further copyright information see the file legal.txt, and any
% other copyright notices in this file.
% 
% This file is part of the LaTeX2e system.
% ----------------------------------------
%   This system is distributed in the hope that it will be useful,
%   but WITHOUT ANY WARRANTY; without even the implied warranty of
%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% 
%   For error reports concerning UNCHANGED versions of this file no more
%   than one year old, see bugs.txt.
% 
%   Please do not request updates from us directly.  Primary
%   distribution is through the CTAN archives.
% 
% 
% IMPORTANT COPYRIGHT NOTICE:
% 
% You are NOT ALLOWED to distribute this file alone.
% 
% You are allowed to distribute this file under the condition that it is
% distributed together with all the files listed in manifest.txt.
% 
% If you receive only some of these files from someone, complain!
% 
% Permission is granted to copy this file to another file with a clearly
% different name and to customize the declarations in that copy to serve
% the needs of your installation, provided that you comply with
% the conditions in the file legal.txt.
% 
% However, NO PERMISSION is granted to produce or to distribute a
% modified version of this file under its original name.
%  
% You are NOT ALLOWED to change this file.
% 
% 
% \fi
% \iffalse
%%% File: ltoutenc
%<*driver>
% \fi
\ProvidesFile{ltoutenc.dtx}
             [1995/06/09 v1.7l LaTeX Kernel (font encodings)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltoutenc.dtx}
\title{\filename}
\date{\filedate}
\author{%
  Johannes Braams\and
  David Carlisle\and
  Alan Jeffrey\and
  Frank Mittelbach\and
  Chris Rowley\and
  Rainer Sch\"opf}
\begin{document}
   \maketitle
   \DocInput{\filename}
\end{document}
%</driver>
% \fi
%
% \CheckSum{1179}
%
% \CharacterTable
%  {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
%   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
%   Digits        \0\1\2\3\4\5\6\7\8\9
%   Exclamation   \!     Double quote  \"     Hash (number) \#
%   Dollar        \$     Percent       \%     Ampersand     \&
%   Acute accent  \'     Left paren    \(     Right paren   \)
%   Asterisk      \*     Plus          \+     Comma         \,
%   Minus         \-     Point         \.     Solidus       \/
%   Colon         \:     Semicolon     \;     Less than     \<
%   Equals        \=     Greater than  \>     Question mark \?
%   Commercial at \@     Left bracket  \[     Backslash     \\
%   Right bracket \]     Circumflex    \^     Underscore    \_
%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%   Right brace   \}     Tilde         \~}
%
% \changes{v1.7h}{1995/04/21}{Added \cs{null} \cs{k}  latex/1274}
% \changes{v1.7f}{1994/12/14}{Added braces to \cs{copyright} so it
%    works unbraced in subscripts.} 
% \changes{v1.7f}{1994/12/14}{Added check for math mode in
%    \cs{@changed@cmd}.} 
% \changes{v1.7f}{1994/12/14}{Commented out \cs{textasciicircum},
%    \cs{textasciitilde}, \cs{textbackslash}, \cs{textbar},
%    \cs{textgreater}, \cs{texthyphenchar}, \cs{texthyphen} and
%    \cs{textless} to save memory.}
% \changes{v1.7e}{1994/12/10}{Added documentation for the OML encoding.}
% \changes{v1.7e}{1994/12/10}{Replaced width with \cs{@width} and
%    ditto height in vrules.}
% \changes{v1.7d}{1994/12/08}{Added \cs{null} and \cs{sh@ft} to \cs{b}
%    and \cs{d}.}
% \changes{v1.7c}{1994/12/05}{Added braces to \cs{textcircled}.}
% \changes{v1.7b}{1994/12/02}{Fixed a bug with \cs{a}.}
% \changes{v1.7a}{1994/11/30}{Added new code for encoding-specific
%    commands.  These now expand in the mouth, which means that
%    ligaturing and kerning can happen.}
% \changes{v1.6i}{1994/11/22}{Fixed empty accents.  Again.}
% \changes{v1.6i}{1994/11/22}{Corrected \cs{dots} so that there's no
%    kerning in monowidth fonts.}
% \changes{v1.6i}{1994/11/22}{Corrected typo with
%    \cs{mathunderscore}.} 
% \changes{v1.6h}{1994/11/17}{(DPC) \cs{@tempa} to \cs{reserved@a}}
% \changes{v1.6d}{1994/11/02}{Wrapped lines $>$ 70 characters.}
% \changes{v1.6d}{1994/10/30}{Added math commands.}
% \changes{v1.6d}{1994/10/30}{Added OML encoding.}
% \changes{v1.6d}{1994/10/30}{Added \cs{textcircled}.}
% \changes{v1.6d}{1994/10/30}{Added \cs{DeclareTextCompositeCommand}.}
% \changes{v1.6c}{1994/10/29}{Renamed \cs{P}, \cs{S}, \cs{dag} and 
%    \cs{ddag} to \cs{textparagraph}, \cs{textsection},
%    \cs{textdagger} and \cs{textdaggerdbl}.}
% \changes{v1.6b}{1994/10/27}{Removed the enc.def files}
% \changes{v1.6a}{1994/10/25}{Added \cs{ProvideTextCommand},
%    \cs{UseTextSymbol},
%    \cs{UseTextAccent},
%    \cs{DeclareTextSymbolDefault},
%    \cs{DeclareTextAccentDefault},
%    \cs{DeclareTextCommandDefault}, and
%    \cs{ProvideTextCommandDefault}.}
% \changes{v1.5m}{1994/10/18}{Added new definitions of \cs{patterns}
%    and \cs{hyphenation}.}
% \changes{v1.5l}{1994/10/07}{Moved the ogonek accent.}
% \changes{v1.5k}{1994/05/18}{Removed braces from \cs{pounds} and
%    \cs{dollar}.}
% \changes{v1.5k}{1994/05/18}{Replaced \cs{defaultencoding} with
%    \cs{encodingdefault}.}
% \changes{v1.5k}{1994/05/18}{Made dotted-i produce `i'.}
% \changes{v1.5j}{1994/05/17}{Added braces to \cs{pounds} so it works
%    as a subscript.}
% \changes{v1.5i}{1994/05/16}{Fixed a bug with \cs{d}.}
% \changes{v1.5h}{1994/05/16}{Added \cs{NG}, \cs{ng}, \cs{TH},
%    \cs{th}, \cs{DH}, \cs{dh}, \cs{DJ} and \cs{dj}.}
% \changes{v1.5h}{1994/05/16}{Added \cs{r} (ring accent) and \cs{k}
%    (ogonek) accents.}
% \changes{v1.5h}{1994/05/16}{Removed \cs{P} from the OT1 definitions
%    file.}
% \changes{v1.5h}{1994/05/16}{Fixed a bug with \cs{pounds}.}
% \changes{v1.5g}{1994/05/16}{Made fontenc.sty use the new mixed-case
%    encoding files.}
% \changes{v1.5f}{1994/05/16}{Revert code so that the encoding
%                    given is used in \cs{DeclareTextCommand} (FMi)}
% \changes{v1.5f}{1994/05/16}{enc files now have uc encoding name
%                             parts (FMi)}
% \changes{v1.5e}{1994/05/14}{Replaced \cs{ENC@cmd} by \cs{ENC-cmd}.}
% \changes{v1.5d}{1994/05/14}{Rewrote \cs{DeclareTextCommand} to define
%    its argument to use the current encoding by default, rather than
%    the encoding provided to \cs{DeclareTextCommand}.}
% \changes{v1.5d}{1994/05/14}{Tidied up the documentation.}
% \changes{v1.5c}{1994/05/14}{Added the fontenc package.}
% \changes{v1.5c}{1994/05/14}{Fixed a bug which caused an infinite loop
%    if \cs{f@encoding} was incorrectly set.}
% \changes{v1.5c}{1994/05/14}{Moved fontsmpl to its own dtx file.}
% \changes{v1.5b}{1994/05/13}{Added \cmd\{, \cmd\} and \cmd\$.}
% \changes{v1.5b}{1994/05/13}
%    {Replaces \cs{space} by `~' in \cs{csname}.}
% \changes{v1.5b}{1994/05/13}{Renamed \cs{DeclareProtectedCommand} to
%    \cs{DeclareRobustCommand}.}
% \changes{v1.5a}{1994/05/11}{Renamed the commands again.  Made the
%    encoding part of the command syntax.  Added the
%    \cs{DeclareTextCommand} interface.  Used
%    \cs{DeclareProtectedCommand}.}
% \changes{v1.4a}{1994/05/01}{Renamed the commands, removed the
%    \cs{EncodingSpecific} command.  Turned all slots into decimal.
%    Added \cs{a}.}
% \changes{v1.3d}{1993/12/18}{Some T1 stuff had drifted into the OT1
%    file.}
% \changes{v1.3c}{1993/12/18}{A new syntax, separating
%    accent-definitions from encoing-specific definitions, and
%    allowing encoding-specific `chardef, `let, etc.}
% \changes{v1.3b}{1993/12/18}{Corrected typos.}
% \changes{v1.3a}{1993/12/18}{Replaced OT3 by XXX}
% \changes{v1.3}{1993/12/17}{Added `EncodingSpecificAccent,
%   `EncodingSpecificAccentedLetter and `EncodingSpecificCommand.}
% \changes{v1.2b}{1993/12/13}{Corrected file name in driver code.}
% \changes{v1.2a}{1993/12/11}{Corrected for t1enc, math.}
% \changes{v1.2}{1993/12/10}{Added source code for t1enc.sty.}
% \changes{v1.1}{1993/12/07}{Made all character numbers decimal.}
% \changes{v1.1}{1993/12/07}{Removed a lot of equal signs and the 
%   like.}
%
% \section{Font encodings}
%
%    This section of the kernel contains commands for declaring
%    encoding-specific
%    commands, such as accents.  It also contains the code for the
%    |OMLenc.def|,
%    |OMSenc.def|, |T1enc.def| and |OT1enc.def| files, which define
%    the |OLM|,
%    |OMS|, |T1| and |OT1| encodings, and the |fontenc| package
%    for selecting encodings.
%
%    The |fontenc| package has options for encodings, of which the
%    last option is the default encoding.  For example, to use the
%    |OT2|, |OT3| and |T1| encodings, with |T1| as the default, you
%    say: 
%\begin{verbatim}
%    \usepackage[OT2,OT3,T1]{fontenc}
%\end{verbatim}
%    The syntax for declaring encoding-specific commands is:
%    \begin{quote}
%      |\DeclareTextCommand{|^^A
%         \meta{command}|}{|^^A
%         \meta{encoding}|}|\\\hspace*{\fill}|[|^^A
%         \meta{number}|][|^^A
%         \meta{default}|]{|^^A
%         \meta{commands}|}|
%    \end{quote}
%    This command is like |\newcommand|, except that it defines a
%    command which is specific to one encoding.  The resulting command
%    is always robust, even if its definition is fragile.  For example,
%    the definition of |\aa| in the |OT1| encoding is:
%\begin{verbatim}
%    \DeclareTextCommand{\aa}{OT1}{{\accent23a}}
%\end{verbatim}
%    |\DeclareTextCommand| takes the same optional arguments as
%    |\newcommand|.
%    \begin{quote}
%      |\ProvideTextCommand{|^^A
%         \meta{command}|}{|^^A
%         \meta{encoding}|}|\\\hspace*{\fill}|[|^^A
%         \meta{number}|][|^^A
%         \meta{default}|]{|^^A
%         \meta{commands}|}|
%    \end{quote}
%    This acts like |\DeclareTextCommand|, but does nothing if the 
%    command is already defined.
%    \begin{quote}
%      |\DeclareTextSymbol{|^^A
%         \meta{command}|}{|^^A
%         \meta{encoding}|}{|^^A
%         \meta{slot}|}|
%    \end{quote}
%    This command defines a text symbol, with a particular slot in that
%    encoding.  The commands:
%\begin{verbatim}
%    \DeclareTextSymbol{\ss}{OT1}{25}
%    \DeclareTextCommand{\ss}{OT1}{{\char25}}
%\end{verbatim}
%    have the same effect, but the |\DeclareTextSymbol| is faster.
%    \begin{quote}
%      |\DeclareTextAccent{|^^A
%         \meta{command}|}{|^^A
%         \meta{encoding}|}{|^^A
%         \meta{slot}|}|
%    \end{quote}
%    This command declares a text accent.  The commands:
%\begin{verbatim}
%    \DeclareTextAccent{\"}{OT1}{127}
%    \DeclareTextCommand{\"}{OT1}[1]{{\accent127#1}}
%\end{verbatim}
%    have the same effect.
%    \begin{quote}
%      |\DeclareTextComposite{|^^A
%         \meta{command}|}{|^^A
%         \meta{encoding}|}{|^^A
%         \meta{slot}|}|
%    \end{quote}
%    This command declares a composite letter, for example in the |T1|
%    encoding |\'{a}| is slot 225, which is declared by:
%\begin{verbatim}
%    \DeclareTextComposite{\'}{T1}{a}{225}
%\end{verbatim}
%    The \emph{command} should have been declared with
%    |\DeclareTextAccent|, or as a one-argument |\DeclareTextCommand|.
%
%    |\DeclareTextComposite| is the most common example of using 
%    the declaration
%    |\DeclareTextCompositeCommand|, which can define a composite 
%    to be an arbitrary piece of text.
%    \begin{quote}
%      |\DeclareTextCompositeCommand{|^^A
%         \meta{command}|}{|^^A
%         \meta{encoding}|}{|^^A
%         \meta{text}|}|
%    \end{quote}
%    For example, you can declare that |\'i| is the same as |\'\i| by 
%    saying: 
%\begin{verbatim}
%    \DeclareTextCompositeCommand{\'}{OT1}{i}{\'\i}
%\end{verbatim}
%    The \emph{command} should have been declared with
%    |\DeclareTextAccent|, or as a one-argument |\DeclareTextCommand|.
%
%    The commands defined using the above commands can be used in two 
%    ways.  Normally they can used by just calling the command in the 
%    appropriate encoding, for example |\ss|.  However, sometimes you
%    may wish to use a command in an encoding where it is not defined.
%    If the command has no arguments, then you can use it in another 
%    encoding by calling |\UseTextSymbol|:
%    \begin{quote}
%      |\UseTextSymbol{|^^A
%         \meta{encoding}|}{|^^A
%         \meta{command}|}|
%    \end{quote}
%    For example, |\UseTextSymbol{\ss}{OT1}| has the same effect as: 
%\begin{verbatim}
%    {\fontencoding{OT1}\selectfont\ss}
%\end{verbatim}
%    If the command 
%    has one argument then you can use it in another encoding by
%    calling  
%    |\UseTextAccent|: 
%    \begin{quote}
%      |\UseTextAccent{|^^A
%         \meta{encoding}|}{|^^A
%         \meta{command}|}{|^^A
%         \meta{text}|}|
%    \end{quote}
%    For example, if the current encoding is |OT2| then 
%    |\UseTextAccent{OT1}{\'}{a}| has the same effect as:
%\begin{verbatim}
%    {\fontencoding{OT1}\selectfont\'{\fontencoding{OT2}\selectfont a}}
%\end{verbatim}
%    You can also declare a default definition for a text command, which
%    will be used if the current encoding has no appropriate definition.
%    \begin{quote}
%      |\DeclareTextCommandDefault{|^^A
%         \meta{command}|}{|^^A
%         \meta{definition}|}|
%    \end{quote}
%    For example, the default definition of the command
%    |\textonequarter| (which produces the fraction $\frac14$) is
%    built using math mode: 
%\begin{verbatim}
%    \DeclareTextCommandDefault{\textonequarter}{$\frac14$}
%\end{verbatim}
%    There is a matching |\Provide| command which will not override an 
%    existing default definition: 
%    \begin{quote}
%      |\ProvideTextCommandDefault{|^^A
%         \meta{command}|}{|^^A
%         \meta{definition}|}|
%    \end{quote}
%    The most common use for these commands is to use symbols from
%    other encodings, so there are some optimizations provided:
%    \begin{quote}
%      |\DeclareTextSymbolDefault{|^^A
%         \meta{command}|}|^^A
%         \meta{encoding}|}|\\
%      |\DeclareTextAccentDefault{|^^A
%         \meta{command}|}|^^A
%         \meta{encoding}|}|
%    \end{quote}
%    are short for:
%    \begin{quote}
%      |\DeclareTextCommandDefault{|^^A
%         \meta{command}|}|\\\hspace*{\fill}^^A
%         |{\UseTextSymbol{|^^A
%         \meta{encoding}|}{|\meta{command}|}}| \\
%      |\DeclareTextCommandDefault[1]{|^^A
%         \meta{command}|}|\\\hspace*{\fill}^^A
%         |{\UseTextAccent{|^^A
%         \meta{encoding}|}{|\meta{command}|}{#1}}| 
%    \end{quote}
%    For example, to make |OT1| the default encoding for |\ss| and
%    |\'| you say:
%\begin{verbatim}
%    \DeclareTextSymbolDefault{\ss}{OT1}
%    \DeclareTextAccentDefault{\'}{OT1}
%\end{verbatim}
%    Note that you can use these commands on any zero- or one-argument 
%    commands declared with |\DeclareText*| or |\ProvideText*|, not
%    just those defined using |\DeclareTextSymbol| or
%    |\DeclareTextAccent|. 
%
% \StopEventually{}
%
% \subsection{Docstrip modules}
%
%    This |.dtx| file is be used to generate several related files
%    containing font encoding definitions. The mutually exculsive
%    docstrip options are:
%    \begin{center}
%    \begin{tabular}{lp{10cm}}
%      |T1|       & generates |T1enc.def| for the Cork encoding, \\
%      |OT1|      & generates |OT1enc.def| for Knuth's CM encoding, \\
%      |OMS|      & generates |OMSenc.def| for Knuth's 
%                   math symbol encoding, \\
%      |OML|      & generates |OMLenc.def| for Knuth's 
%                   math letters encoding, \\
%      |package|  & generates |fontenc.sty| for 
%                   selecting encodings, \\
%      |2ekernel| & for the kernel commands.
%    \end{tabular}
%    \end{center}
% \changes{1.0d}{1993/07/17}{changed `catcoding @}
% \changes{1.0f}{1993/08/13}{Protected against active @ sign.}
% \changes{1.0g}{1993/08/16}{Needs space after `string}
% \changes{1.1}{1993/12/07}{Protected all special characters with
%                          `string.}
% \changes{1.3}{1993/12/17}{Removed the catcode hackery, since the file
%    is only read as a package in the preamble, and removed all the
%    messages on the screen, which just confuse users.  Replaced them
%    by the appropriate `ProvidesPackage commands. Added XXXenc.}
% \changes{1.3b}{1993/12/18}{Fixed typos with `ProvidesPackage lines.
%    Added the `NeedsTeXFormat line.  Added the last argument to
%    `DeclareEncoding.  Moved the use of the encodings to after their
%    declaration. }
% \changes{1.4a}{1994/04/29}{Removed Rokicki's OT1 variant encoding.
%    Moved the driver to the top.}
% \changes{1.5a}{1994/05/11}{Made T1 and OT1 generate packages rather
%    than def files.  Renamed the `package' module to `teststy'.}
% \changes{1.5d}{1994/05/14}{Moved the driver to the top.}
%
% \subsection{Definitions for the kernel}
%
% \subsubsection{Declaration commands}
%
% \changes{1.3}{1993/12/17}{Added this section}
% \changes{1.3c}{1993/12/18}{Split `EncodingSpecificAccent up into
%    `EncodingSpecific and `DeclareAccent.}
% \changes{1.4a}{1994/04/29}{Removed \cs{EncodingSpecific}.  Renamed
%    all the commands.  Added \cs{DeclareTextGlyph} and
%    \cs{UndeclareTextCommand}.}
% \changes{v1.5a}{1994/05/11}{Reimplemented \cs{DeclareTextCommand}
%    using \cs{@changed@cmd} and \cs{DeclareProtectedCommand}.}
% \changes{v1.5c}{1994/05/14}{Fixed a bug which caused an infinite loop
%    if \cs{f@encoding} was incorrectly set.}
% \changes{v1.5d}{1994/05/14}{Rewrote \cs{DeclareTextCommand} to define
%    its argument to use the current encoding by default, rather than
%    the encoding provided to \cs{DeclareTextCommand}.}
% \changes{v1.6a}{1994/10/25}{Added the \cs{Provide} commands,
%    and the default definitions.}
%
% This section contains definitions for commands such as accents which
% depend on the current encoding.  These commands will usually be kept
% in |.def| files, for example |OT1enc.def| contains the definitions
% for the |OT1| encoding.
%    \begin{macrocode}
%<*2ekernel>
\message{font encodings,}
%    \end{macrocode}
%
% \changes{v1.5d}{1994/10/27}{Rewrote \cs{DeclareTextSymbol} to define
%    its argument to use the current encoding by default, to fit with 
%    \cs{DeclareTextCommand}.}
%
% \changes{v1.7a}{1994/11/30}{Redefined \cs{@changed@cmd} to expand in
%    the mouth.}
% \changes{v1.7a}{1994/11/30}{Removed \cs{@changed@x@mouth} since
%    \cs{@changed@x} now expands in the mouth.}
%
% \begin{macro}{\DeclareTextCommand}
% \begin{macro}{\ProvideTextCommand}
% \begin{macro}{\DeclareTextSymbol}
% \begin{macro}{\@dec@text@cmd}
% \begin{macro}{\@changed@cmd}
% \begin{macro}{\@changed@x}
% \begin{macro}{\@changed@x@err}
%    If you say:
%\begin{verbatim}
%    \DeclareTextCommand{\foo}{T1}...
%\end{verbatim}
%    then |\foo| is defined to be |\T1-cmd \foo \T1\foo|,
%    where |\T1\foo| is \emph{one} control sequence, not two!
%    We then call |\newcommand| to define |\T1\foo|.
%    \begin{macrocode}
\def\DeclareTextCommand{%
   \@dec@text@cmd\newcommand
}
\def\ProvideTextCommand{%
   \@dec@text@cmd\providecommand
}
\def\DeclareTextSymbol#1#2#3{%
   \@dec@text@cmd\chardef#1{#2}#3\relax
}
\def\@dec@text@cmd#1#2#3{%
   \expandafter\def\expandafter#2%
      \expandafter{%
         \csname#3-cmd\expandafter\endcsname
         \expandafter#2%
         \csname#3\string#2\endcsname
      }%
   \let\@ifdefinable\@rc@ifdefinable
   \expandafter#1\csname#3\string#2\endcsname
}
%    \end{macrocode}
%    The declarations are only available before |\begin{document}|.
% \changes{v1.7h}{1995/05/21}{Added several \cs{@onlypreamble}}
% \changes{v1.7k}{1995/06/05}{Removed \cs{protected@cmd} and replaced
%    with explicit \cs{noexpand}.}
%    \begin{macrocode}
\@onlypreamble\DeclareTextCommand
\@onlypreamble\DeclareTextSymbol
%    \end{macrocode}
%    The sneaky bit in all this is what |\T1-cmd \foo \T1\foo| does.  
%    There's five possibilities, depending on the current values of
%    |\protect|, |\cf@encoding| and |\ifmmode|:
%    \begin{itemize}
%    \item If |\protect| is |\@typeset@protect| and |\cf@encoding| is
%       |T1|, then we execute |\T1\foo|.  This should be the normal
%       behaviour, and is optimized for speed.
%    \item If |\protect| is |\@typeset@protect|, |\cf@encoding| is
%       (say) |OT1|, and |\OT1\foo| is defined, then we execute
%       |\OT1\foo|. 
%    \item If |\protect| is |\@typeset@protect|, |\cf@encoding| is
%       (say) |OT1|, we're in text mode,
%       and |\OT1\foo| is undefined, then we define
%       |\OT1\foo| to be the default value of |\foo|, and execute
%       |\OT1\foo|. 
%    \item If |\protect| is |\@typeset@protect|, |\cf@encoding| is
%       (say) |OT1|, we're in math mode,
%       and |\OT1\foo| is undefined, then we execute the default value
%       of |\foo|.  (This is necessary so that things like
%       |$X_\copyright$| work properly.)
%    \item If |\protect| is not |\@typeset@protect| then we execute
%       |\noexpand\foo|.  For example, if we are writing to a file,
%       then this results in |\foo| being written.  If we are in a
%       |\mark|, then |\foo| will be put in the mark---since |\foo| is
%       robust, it will then survive all the things which may happen
%       to it whilst it's a |\mark|.
%    \end{itemize}
%    So after all that, we will either execute the appropriate
%    definition of |\foo| for the current encoding, or we will execute
%    |\noexpand\foo|.
%
%    The default value of |\foo| is |\?\foo| if it is defined, and an
%    error message otherwise.
%
%    When the encoding is changed from |T1| to |OT1|, |\T1-cmd| is
%    defined to be |\@changed@cmd| and |\OT1-cmd| is defined to be
%    |\@current@cmd|.  This means that the test for what the current
%    encoding is can be performed quickly.
%    \begin{macrocode}
\def\@current@cmd#1{%
   \ifx\protect\@typeset@protect\else
      \noexpand#1\expandafter\@gobble
   \fi
}
\def\@changed@cmd#1#2{%
   \ifx\protect\@typeset@protect
      \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
         \expandafter\ifx\csname ?\string#1\endcsname\relax
            \expandafter\def\csname ?\string#1\endcsname{%
               \@changed@x@err{#1}%
            }%
         \fi
         \ifmmode\else
            \expandafter\let
               \csname\cf@encoding \string#1\expandafter\endcsname
               \csname ?\string#1\endcsname
         \fi
         \csname ?\string#1%
            \expandafter\expandafter\expandafter\endcsname
      \else
         \csname\cf@encoding\string#1%
            \expandafter\expandafter\expandafter\endcsname
      \fi
   \else
      \noexpand#1%  
   \fi
}
\def\@changed@x@err#1{%
   \@latex@error{%
      Command \protect#1 undefined in encoding \cf@encoding%
   }\@eha
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \changes{v1.7k}{1995/06/05}{Allowed \cs{ProvideTextCommandDefault}
%    after the preamble.} 
%
% \begin{macro}{\DeclareTextCommandDefault}
% \begin{macro}{\ProvideTextCommandDefault}
%    These define commands with encoding |?|.
%    Note that |\DeclareTextCommandDefault| can only be used in the
%    preamble, but that the |\Provide| version is allowed in inputenc
%    |.def| files, so is allowed anywhere.
%    \begin{macrocode}
\def\DeclareTextCommandDefault#1{%
   \DeclareTextCommand#1?%
}
\def\ProvideTextCommandDefault#1{%
   \ProvideTextCommand#1?%
}
\@onlypreamble\DeclareTextCommandDefault
%\@onlypreamble\ProvideTextCommandDefault
%    \end{macrocode}
%    They require |\?-cmd| to be initialized as |\@changed@cmd|.
%    \begin{macrocode}
\expandafter\let\csname?-cmd\endcsname\@changed@cmd
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \changes{v1.5a}{1994/05/11}{Reimplemented \cs{DeclareTextAccent}
%    using \cs{DeclareTextCommand}.}
%
% \begin{macro}{\DeclareTextAccent}
%    This is just a disguise for defining a \TeX~|\accent| command.
%    \begin{macrocode}
\def\DeclareTextAccent#1#2#3{%
   \DeclareTextCommand#1{#2}[1]{{\accent#3 ##1}}
}
\@onlypreamble\DeclareTextAccent
%    \end{macrocode}
% \end{macro}
%
% \changes{v1.7a}{1994/11/30}{Rewrote \cs{@text@composite} so it
%    allows an empty argument, or an argument containing lots of
%    commands.}  
%
% \changes{v1.7l}{1995/06/09}{Rewrote \cs{DeclareTextComposite} to
%    define the composite as a no-argument command rather than a
%    two-argument command.}  
%
% \begin{macro}{\DeclareTextCompositeCommand}
% \begin{macro}{\DeclareTextComposite}
% \begin{macro}{\@text@composite}
% \begin{macro}{\@text@composite@x}
% \begin{macro}{\@strip@args}
%    Another amusing game to play with |\expandafter|, |\csname|, and
%    |\string|.
%
%    When you say |\DeclareTextCompositeCommand{\foo}{T1}{a}{bar}|,
%    we first check to make sure that |\T1\foo| is a one-argument
%    macro, by making sure that its |\meaning| begins |macro:#1-|, and
%    call an error if it isn't.  Assuming all's well, we look to see
%    if the expansion of |\T1\foo| begins with |\@text@composite|, and
%    if it doesn't, we redefine |\T1\foo| to be:
%\begin{verbatim}
%    #1 -> \@text@composite \T1\foo #1\@empty \@text@composite {...}
%\end{verbatim}
%    where |...| is the
%    previous definition of |\T1\foo|.  Finally, we define |\\T1\foo-a|
%    to expand to |bar|.
%    \begin{macrocode}
\def\DeclareTextCompositeCommand#1#2#3#4{%
   \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname
   \edef\reserved@b{\string##1}%
   \edef\reserved@c{%
     \expandafter\@strip@args\meaning\reserved@a:-\@strip@args}%
   \ifx\reserved@b\reserved@c
      \expandafter\expandafter\expandafter\ifx
         \expandafter\@car\reserved@a\relax\relax\@nil
         \@text@composite
      \else
         \edef\reserved@b##1{%
            \def\expandafter\noexpand
               \csname#2\string#1\endcsname####1{%
               \noexpand\@text@composite
                  \expandafter\noexpand\csname#2\string#1\endcsname
                  ####1\noexpand\@empty\noexpand\@text@composite
                  {##1}%
            }%
         }%
         \expandafter\reserved@b\expandafter{\reserved@a{##1}}%
      \fi
      \expandafter\def\csname\expandafter\string\csname
         #2\endcsname\string#1-\string#3\endcsname{#4}%
   \else
      \@latex@error{%
         \string\DeclareTextCompositeCommand\space used on
         inappropriate command \protect#1%
      }\@eha
   \fi
}
\@onlypreamble\DeclareTextCompositeCommand
%    \end{macrocode}
%    This all works because:
%\begin{verbatim}
%    \@text@composite \T1\foo A\@empty \@text@composite {...}
%\end{verbatim}
%    expands to
%    |\\T1\foo-A| if |\\T1\foo-A| has been defined, and |{...}|
%    otherwise. 
%
%    Note that |\@text@composite| grabs the first token of the
%    argument and puts just that in the 
%    csname.  This is so that |\'{\textit{e}}| will work---it checks
%    whether |\\T1\'-\textit| is defined (which presumbaly it isn't)
%    and so expands to |{\accent 1 \textit{e}}|.
%
%    This trick won't always work, for example |\'{{\itshape e}}| will
%    expand to (with spaces added for clarity):
%\begin{verbatim}
%    \csname \string \T1\' - \string {\itshape e} \@empty \endcsname
%\end{verbatim}
%    which will die pretty horribly.  Unfortunately there's not much
%    can be done about this if we're going to use |\csname| lookups as a
%    fast way of accessing composites.
%
%    This has an unfortunate `malfeature' though, which is that in
%    the T1 encoding, |\'{aa}| produces \'a.  This is not the expected
%    behaviour, and should perhaps be fixed if the fix doesn't affect
%    performance too badly.
%
%    Finally, it's worth noting that the |\@empty| is used in
%    |\@text@composite| so that accents will work even when the
%    argument is empty.  If you say |\'{}| then this looks up
%    |\\T1\'-\@empty|, which ought to be |\relax|, and so all is well.
%    If we didn't include the |\@empty|, then |\'{}| would expand to:
%\begin{verbatim}
%    \csname \string \T1\' - \string \endcsname
%\end{verbatim}
%    so the |\endcsname| would be |\string|'ed and the whole of the
%    rest of the document would be put inside the |\csname|.  This
%    would not be good.
%    \begin{macrocode}
\def\@text@composite#1#2#3\@text@composite{%
   \expandafter\@text@composite@x
      \csname\string#1-\string#2\endcsname
}
\def\@text@composite@x#1#2{%
   \ifx#1\relax
      #2%
   \else
      #1%
   \fi
}
%    \end{macrocode}
%    The |\@strip@args| command just strips the arguments part out of
%    the |\meaning| of a description |macro:...->...|.
%    \begin{macrocode}
\def\@strip@args#1:#2-#3\@strip@args{#2}
%    \end{macrocode}
%    The command |\DeclareTextComposite| uses these commands to
%    declare a command which expands out to a letter.
%    \begin{macrocode}
\def\DeclareTextComposite#1#2#3#4{%
   \def\reserved@a{\DeclareTextCompositeCommand#1{#2}{#3}}%
   \bgroup
      \lccode`\@=#4%
      \lowercase{%
   \egroup
      \reserved@a @%
   }%    
}
\@onlypreamble\DeclareTextComposite
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\UseTextSymbol}
% \begin{macro}{\UseTextAccent}
% \begin{macro}{\@use@text@encoding}
%    These fragile commands access glyphs from different encodings.
%    They use grotty low-level calls to the font selection scheme for
%    speed, and in order to make sure that |\UseTextSymbol| doesn't
%    do anything which you're not allowed to do between an |\accent|
%    and its glyph.
%    \begin{macrocode}
\def\UseTextSymbol#1#2{%
   \let\@curr@enc\cf@encoding
   \@use@text@encoding{#1}%
   #2%
   \@use@text@encoding\@curr@enc
}
\def\UseTextAccent#1#2#3{%
   \let\@curr@enc\cf@encoding
   \@use@text@encoding{#1}%
   #2{\@use@text@encoding\@curr@enc\selectfont#3}%
   \@use@text@encoding\@curr@enc
}
\def\@use@text@encoding#1{%
   \edef\f@encoding{#1}%
   \xdef\font@name{%
      \csname\curr@fontshape/\f@size\endcsname
   }%
   \pickup@font
   \font@name
   \@@enc@update
}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\DeclareTextSymbolDefault}
% \begin{macro}{\DeclareTextAccentDefault}
%    Some syntactic sugar.  Again, these should probably be optimized
%    for speed. 
%    \begin{macrocode}
\def\DeclareTextSymbolDefault#1#2{%
   \DeclareTextCommandDefault#1{\UseTextSymbol{#2}#1}%
}
\def\DeclareTextAccentDefault#1#2{%
   \DeclareTextCommandDefault#1{\UseTextAccent{#2}#1}%
}
\@onlypreamble\DeclareTextSymbolDefault
\@onlypreamble\DeclareTextAccentDefault
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{Hyphenation}
%
% \changes{v1.5l}{1994/10/18}{Added new definitions of \cs{patterns}
%    and \cs{hyphenation}.}
% \changes{v1.6g}{1994/11/05}{Added setting of \cs{@typeset@protect}
%    to \cs{patterns} and \cs{hyphenation}.}
% \changes{v1.6g}{1994/11/30}{Removed new definitions of \cs{patterns}
%    and \cs{hyphenation}, since encoding-specific commands now expand
%    in the mouth.}
%
% \begin{macro}{\patterns}
% \begin{macro}{\@@patterns}
% \begin{macro}{\hyphenation}
% \begin{macro}{\@@hyphenation}
%    We redefine |\patterns| and |\hyphenation| to allow the use of 
%    commands declared with |\DeclareText*| to be used inside them.
%    \begin{macrocode}
%\let\@@patterns\patterns
%\let\@@hyphenation\hyphenation
%\def\patterns{%
%   \bgroup
%      \let\protect\@empty
%      \let\@typeset@protect\@empty
%      \let\@changed@x\@changed@x@mouth
%   \afterassignment\egroup   
%   \@@patterns
%}
%\def\hyphenation{%
%   \bgroup
%      \let\protect\@empty
%      \let\@typeset@protect\@empty
%      \let\@changed@x\@changed@x@mouth
%   \afterassignment\egroup   
%   \@@hyphenation
%}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Miscellania}
%
% \changes{1.4a}{1994/05/01}{Added the \cs{a} command.}
% \changes{1.7a}{1994/11/30}{Redefined \cs{a} for the new scheme.}
% \changes{1.7b}{1994/12/02}{Redefined \cs{a} properly.}
% \changes{1.7g}{1995/03/03}{Corrected an error in documentation
%               referring to the tabular rather than the tabbing
%               environment.}
%
% \begin{macro}{\a}
%    The |\a| command is used to access the accent commands even when
%    they have been redefined (for example by the |tabbing|
%    environment). 
%    \begin{macrocode}
\def\a#1{\expandafter\@changed@cmd\csname#1\endcsname\relax}
%    \end{macrocode}
% \end{macro}
%
% \changes{v1.6a}{1994/10/25}{Added the files OT1enc.def, T1enc.def and 
%    OMSenc.def.} 
% \changes{v1.6b}{1994/10/27}{Removed the files OT1enc.def, T1enc.def
%    and OMSenc.def.} 
% 
% \subsubsection{Default encodings}
%
% We define the default encodings for most commands to be either OT1
% or OMS. 
%
% The naming conventions in the kernel are not what we would use if we 
% were starting from scratch\dots  
% Those defined by DEK (like |\ae| and |\ss|) or by the \TeX{} Users
% Group Technical Working Group on multi-lingual typesetting (like 
% |\th| and |\ng|) have short names.  Those which were added to the 
% kernel in 1993 and early 1994 are named after their Adobe glyph
% names (like |\guillemotleft| and |\quotedblbase|).  Unfortunately,
% this naming scheme won't work for all glyphs, since some names (like 
% |\space|) are already used, and some (like |\endash|) are very
% likely to be defined by users.  So we're now using the naming scheme
% of |\text| followed by the Adobe name, (like |\textendash| and 
% |\textsterling|).  Except that some glyphs don't have Adobe names,
% so we're using the names used by fontinst for those (like 
% |\textcompwordmark|).  Sigh.
%
% \changes{v1.6a}{1994/10/25}{Added the defaults.} 
% \changes{v1.6b}{1994/10/27}{Added more defaults for OT1.} 
% \changes{v1.6c}{1994/10/29}{Added commands like \cs{dots} for use in 
%    text and math.} 
% 
% Some accents from OT1:
%    \begin{macrocode}
\DeclareTextAccentDefault{\"}{OT1}
\DeclareTextAccentDefault{\'}{OT1}
\DeclareTextAccentDefault{\.}{OT1}
\DeclareTextAccentDefault{\=}{OT1}
\DeclareTextAccentDefault{\H}{OT1}
\DeclareTextAccentDefault{\^}{OT1}
\DeclareTextAccentDefault{\`}{OT1}
\DeclareTextAccentDefault{\b}{OT1}
\DeclareTextAccentDefault{\c}{OT1}
\DeclareTextAccentDefault{\d}{OT1}
\DeclareTextAccentDefault{\r}{OT1}
\DeclareTextAccentDefault{\u}{OT1}
\DeclareTextAccentDefault{\v}{OT1}
\DeclareTextAccentDefault{\~}{OT1}
%    \end{macrocode}
% Some symbols from OT1:
%    \begin{macrocode}
\DeclareTextSymbolDefault{\AA}{OT1}
\DeclareTextSymbolDefault{\AE}{OT1}
\DeclareTextSymbolDefault{\L}{OT1}
\DeclareTextSymbolDefault{\OE}{OT1}
\DeclareTextSymbolDefault{\O}{OT1}
\DeclareTextSymbolDefault{\aa}{OT1}
\DeclareTextSymbolDefault{\ae}{OT1}
\DeclareTextSymbolDefault{\i}{OT1}
\DeclareTextSymbolDefault{\j}{OT1}
\DeclareTextSymbolDefault{\l}{OT1}
\DeclareTextSymbolDefault{\oe}{OT1}
\DeclareTextSymbolDefault{\o}{OT1}
\DeclareTextSymbolDefault{\ss}{OT1}
\DeclareTextSymbolDefault{\textdollar}{OT1}
\DeclareTextSymbolDefault{\textemdash}{OT1}
\DeclareTextSymbolDefault{\textendash}{OT1}
\DeclareTextSymbolDefault{\textexclamdown}{OT1}
%\DeclareTextSymbolDefault{\texthyphenchar}{OT1}
%\DeclareTextSymbolDefault{\texthyphen}{OT1}
\DeclareTextSymbolDefault{\textquestiondown}{OT1}
\DeclareTextSymbolDefault{\textquotedblleft}{OT1}
\DeclareTextSymbolDefault{\textquotedblright}{OT1}
\DeclareTextSymbolDefault{\textquoteleft}{OT1}
\DeclareTextSymbolDefault{\textquoteright}{OT1}
\DeclareTextSymbolDefault{\textsterling}{OT1}
%    \end{macrocode}
% Some symbols from OMS (some are commented out to save memory for the
% moment---they may be added later):
%    \begin{macrocode}
%\DeclareTextSymbolDefault{\textbackslash}{OMS}
%\DeclareTextSymbolDefault{\textbar}{OMS}
\DeclareTextSymbolDefault{\textbraceleft}{OMS}
\DeclareTextSymbolDefault{\textbraceright}{OMS}
\DeclareTextSymbolDefault{\textbullet}{OMS}
\DeclareTextSymbolDefault{\textdaggerdbl}{OMS}
\DeclareTextSymbolDefault{\textdagger}{OMS}
\DeclareTextSymbolDefault{\textparagraph}{OMS}
\DeclareTextSymbolDefault{\textperiodcentered}{OMS}
\DeclareTextSymbolDefault{\textsection}{OMS}
\DeclareTextAccentDefault{\textcircled}{OMS}
%    \end{macrocode}
%
% \changes{v1.6d}{1994/10/30}{Added OML encoding.}
% \changes{v1.6d}{1994/10/30}{Made \cs{textless} and \cs{textgreater} 
%    come from OML.}
% \changes{v1.6d}{1994/10/30}{Added \cs{t}.}
% \changes{v1.7k}{1995/06/05}{Commented out \cs{textless} and
%    \cs{textgreater}.} 
%
% Some symbols from OML:
%    \begin{macrocode}
%\DeclareTextSymbolDefault{\textless}{OML}
%\DeclareTextSymbolDefault{\textgreater}{OML}
\DeclareTextAccentDefault{\t}{OML}
%    \end{macrocode}
%
% \changes{v1.6d}{1994/10/30}{Added \cs{textcircled}.}
% \changes{v1.6d}{1994/10/30}{Rewrote \cs{copyright} to use
%    \cs{textcircled}.} 
% \changes{v1.6d}{1994/10/30}{Removed \cs{textregistered}.}
% \changes{v1.7k}{1995/06/05}{Save some tokens in
%    \cs{textvisiblespace} and \cs{textunderscore}.}
%
% Some defaults we can fake:
%    \begin{macrocode}
\DeclareTextCommandDefault{\copyright}{{\textcircled{c}}}
%\DeclareTextCommandDefault{\textasciicircum}{\^{}}
%\DeclareTextCommandDefault{\textasciitilde}{\~{}}
\DeclareTextCommandDefault{\textcompwordmark}{\kern\z@}
\DeclareTextCommandDefault{\textunderscore}{%
   \leavevmode\mathunderscore
}
\DeclareTextCommandDefault{\textvisiblespace}{%
   \mbox{\kern.06em\vrule \@height.3ex}%
   \vbox{\hrule \@width.3em}%
   \hbox{\vrule \@height.3ex}%
}
\DeclareTextCommandDefault{\textellipsis}{%
   .\kern\fontdimen3\font
   .\kern\fontdimen3\font
   .\kern\fontdimen3\font
}
%    \end{macrocode}
%
% \subsubsection{Math material}
%
% \changes{v1.6f}{1994/11/04}{Added \cmd\_.}
%
%    Some commands can be used in both text and math mode:
%    \begin{macrocode}
\DeclareRobustCommand{\$}{\ifmmode\mathdollar\else\textdollar\fi}
\DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi}
\DeclareRobustCommand{\}}{\ifmmode\rbrace\else\textbraceright\fi}
\DeclareRobustCommand{\P}{\ifmmode\mathparagraph\else\textparagraph\fi}
\DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}
\DeclareRobustCommand{\dag}{\ifmmode{\dagger}\else\textdagger\fi}
\DeclareRobustCommand{\ddag}{\ifmmode{\ddagger}\else\textdaggerdbl\fi}
\DeclareRobustCommand{\_}{%
   \ifmmode\mathunderscore\else\textunderscore\fi
}
\DeclareRobustCommand{\pounds}{%
   \ifmmode\mathsterling\else\textsterling\fi
}
\DeclareRobustCommand{\dots}{%
   \ifmmode\mathellipsis\else\textellipsis\fi
}
\let\ldots\dots
%</2ekernel>
%    \end{macrocode}
% 
% \changes{v1.6d}{1994/10/30}{Moved math commands here from ltmath.}
% \changes{v1.6f}{1994/11/04}{Added \cs{mathunderscore}.}
% \changes{v1.7k}{1995/06/05}{Moved math commands to fontdef.dtx.}
%
% 
% \changes{1.4a}{1994/05/01}{Added the \cs{SaveAtCatcode} and
%    \cs{RestoreAtCatcode} commands.}
%
% \changes{1.5a}{1994/05/12}{Removed the \cs{SaveAtCatcode} and
%    \cs{RestoreAtCatcode} commands.}
%
% \subsection{The fontenc package}
%
% \changes{v1.5c}{1994/05/14}{Added the fontenc package}
% \changes{v1.5g}{1994/05/16}{Removed the lowercasing of the filename.}
% \changes{v1.7a}{1994/11/30}{Always load the enc.def file, so that
%    the default encoding for the commands will change.}
%
% This package allows authors to specify which encodings they will use.
% For each encoding |FOO|, the package looks to see if the encoding
% |FOO| has already been declared.  If it hasn't, the file |FOOenc.def|
% is loaded.  The default encoding is set to be |FOO|.
%
%    \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fontenc}[1994/12/14 v1.7f Standard LaTeX package]
\DeclareOption*{%
   \let\encodingdefault\CurrentOption
   \InputIfFileExists{\CurrentOption enc.def}{}{%
      \@warning{Encoding file `\CurrentOption enc.def' not found}%
   }%
}
\ProcessOptions*
\fontencoding\encodingdefault\selectfont
%</package>
%    \end{macrocode}
%
% \subsection{Definitions for the OT1 encoding}
%
% \changes{1.3}{1993/12/17}{Removed all the hackery for use in
%    `DeclareFontEncoding', and redid everything using
%    `DeclareTextFoo.}
% \changes{1.3b}{1993/12/18}{Replaced the missing last argument to
%    `DeclareFontEncoding.}
% \changes{1.3c}{1993/12/18}{Rewrote for the new syntax of
%    `EncodingSpecific.}
% \changes{1.4a}{1994/05/01}{Rewrote for the new syntax.}
% \changes{1.5a}{1994/05/12}{Rewrote for the new syntax.}
% \changes{1.5h}{1994/05/16}{\cs{pounds} was still using u rather than
%    ui shape.}
% \changes{1.6b}{1994/10/27}{Added:
%   \cs{textemdash}
%   \cs{textendash}
%   \cs{textexclamdown}
%   \cs{texthyphenchar}
%   \cs{texthyphen}
%   \cs{textquestiondown}
%   \cs{textquotedblleft}
%   \cs{textquotedblright}
%   \cs{textquoteleft}
%   \cs{textquoteright}
% }
%
% The definitions for the `\TeX{} text' (OT1) encoding.
%
%    \begin{macrocode}
%<*OT1>
\ProvidesFile{OT1enc.def}[1994/12/14 Standard LaTeX file]
%    \end{macrocode}
%    Declare the encoding.
%    \begin{macrocode}
\DeclareFontEncoding{OT1}{}{}
%    \end{macrocode}
%    Declare the accents.
%    \begin{macrocode}
\DeclareTextAccent{\"}{OT1}{127}
\DeclareTextAccent{\'}{OT1}{19}
\DeclareTextAccent{\.}{OT1}{95}
\DeclareTextAccent{\=}{OT1}{22}
\DeclareTextAccent{\^}{OT1}{94}
\DeclareTextAccent{\`}{OT1}{18}
\DeclareTextAccent{\~}{OT1}{126}
\DeclareTextAccent{\H}{OT1}{125}
\DeclareTextAccent{\u}{OT1}{21}
\DeclareTextAccent{\v}{OT1}{20}
\DeclareTextAccent{\r}{OT1}{23}
%    \end{macrocode}
%    Some accents have to be built by hand:
% \changes{v1.7j}{1995/05/21}{Updated some plain macros}
%    \begin{macrocode}
\DeclareTextCommand{\b}{OT1}[1]
   {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%
     \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}}
\DeclareTextCommand{\c}{OT1}[1]
   {\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1%
    \else{\ooalign{\unhbox\z@\crcr\hidewidth\char24\hidewidth}}\fi}
\DeclareTextCommand{\d}{OT1}[1]
   {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}}}
%    \end{macrocode}
%    Declare the text symbols.
%    \begin{macrocode}
\DeclareTextSymbol{\AE}{OT1}{29}
\DeclareTextSymbol{\OE}{OT1}{30}
\DeclareTextSymbol{\O}{OT1}{31}
\DeclareTextSymbol{\ae}{OT1}{26}
\DeclareTextSymbol{\i}{OT1}{16}
\DeclareTextSymbol{\j}{OT1}{17}
\DeclareTextSymbol{\oe}{OT1}{27}
\DeclareTextSymbol{\o}{OT1}{28}
\DeclareTextSymbol{\ss}{OT1}{25}
\DeclareTextSymbol{\textemdash}{OT1}{124}
\DeclareTextSymbol{\textendash}{OT1}{123}
\DeclareTextSymbol{\textexclamdown}{OT1}{60}
%\DeclareTextSymbol{\texthyphenchar}{OT1}{`\-}
%\DeclareTextSymbol{\texthyphen}{OT1}{`\-}
\DeclareTextSymbol{\textquestiondown}{OT1}{62}
\DeclareTextSymbol{\textquotedblleft}{OT1}{92}
\DeclareTextSymbol{\textquotedblright}{OT1}{`\"}
\DeclareTextSymbol{\textquoteleft}{OT1}{`\`}
\DeclareTextSymbol{\textquoteright}{OT1}{`\'}
%    \end{macrocode}
%    Some symbols which are faked from others:
%    \begin{macrocode}
\DeclareTextCommand{\aa}{OT1}
   {{\accent23a}}
\DeclareTextCommand{\L}{OT1}
   {\leavevmode\setbox0\hbox{L}\hb@xt@\wd0{\hss\char32L}}
\DeclareTextCommand{\l}{OT1}
   {{\char32l}}
\DeclareTextCommand{\AA}{OT1}
   {\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%
    \rlap{\raise.67\dimen@\hbox{\char'27}}A}
\DeclareTextCommand{\SS}{OT1}
   {SS}
%    \end{macrocode}
%    In the OT1 encoding, \pounds~and \$ share a slot.
%    \begin{macrocode}
\DeclareTextCommand{\textdollar}{OT1}{{%
   \ifdim \fontdimen\@ne\font >\z@
      \slshape
   \else
      \upshape
   \fi
   \char`\$}}
\DeclareTextCommand{\textsterling}{OT1}{{%
   \ifdim \fontdimen\@ne\font >\z@
      \itshape
   \else
      \fontshape{ui}\selectfont
   \fi
   \char`\$}}
%</OT1>
%    \end{macrocode}
%
% \subsection{Definitions for the T1 encoding}
%
% \changes{1.3}{1993/12/17}{Removed all the hackery for use in
%    `DeclareFontEncoding', and redid everything using
%    `DeclareTextFoo.}
% \changes{1.3b}{1993/12/18}{Replaced the missing last argument to
%    `DeclareFontEncoding.}
% \changes{1.3c}{1993/12/18}{Rewrote for the new syntax of
%    `EncodingSpecific.}
% \changes{1.4a}{1994/05/01}{Rewrote for the new syntax.}
% \changes{1.5a}{1994/05/12}{Rewrote for the new syntax.}
% \changes{1.6a}{1994/10/25}{Added \cs{textdollar}, 
%    \cs{textlbrace}, \cs{textrbrace}, \cs{textsterling},
%    \cs{textunderline}.} 
% \changes{1.6a}{1994/10/25}{Removed
%    \cs{textlbrace}, \cs{textrbrace}, \cs{textunderline} to give them 
%    their proper names.}
% \changes{1.6b}{1994/10/27}{Added 
%   \cs{textasciicircum}
%   \cs{textasciitilde}
%   \cs{textbackslash}
%   \cs{textbar}
%   \cs{textbraceleft}
%   \cs{textbraceright}
%   \cs{textcompwordmark}
%   \cs{textemdash}
%   \cs{textendash}
%   \cs{textexclamdown}
%   \cs{textgreater}
%   \cs{texthyphenchar}
%   \cs{texthyphen}
%   \cs{textless}
%   \cs{textquestiondown}
%   \cs{textquotedblleft}
%   \cs{textquotedblright}
%   \cs{textquotedbl}
%   \cs{textquoteleft}
%   \cs{textquoteright}
%   \cs{textunderscore}
%   \cs{textvisiblespace}
% }
%
% The definitions for the `Extended \TeX{} text' (T1) encoding.
%
%    \begin{macrocode}
%<*T1>
\ProvidesFile{T1enc.def}[1994/12/14 Standard LaTeX file]
%    \end{macrocode}
%    Declare the encoding.
%    \begin{macrocode}
\DeclareFontEncoding{T1}{}{}
%    \end{macrocode}
%    Declare the accents.
%    \begin{macrocode}
\DeclareTextAccent{\`}{T1}{0}
\DeclareTextAccent{\'}{T1}{1}
\DeclareTextAccent{\^}{T1}{2}
\DeclareTextAccent{\~}{T1}{3}
\DeclareTextAccent{\"}{T1}{4}
\DeclareTextAccent{\H}{T1}{5}
\DeclareTextAccent{\r}{T1}{6}
\DeclareTextAccent{\v}{T1}{7}
\DeclareTextAccent{\u}{T1}{8}
\DeclareTextAccent{\=}{T1}{9}
\DeclareTextAccent{\.}{T1}{10}
%    \end{macrocode}
%    Some accents have to be built by hand:
%    \begin{macrocode}
\DeclareTextCommand{\b}{T1}[1]
   {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}%
     \vbox to.2ex{\hbox{\char9}\vss}\hidewidth}}}
\DeclareTextCommand{\c}{T1}[1]
   {\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent11 #1%
     \else{\ooalign{\hidewidth\char11\hidewidth
        \crcr\unhbox\z@}}\fi}
\DeclareTextCommand{\d}{T1}[1]
   {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}.\hidewidth}}}
\DeclareTextCommand{\k}{T1}[1]
   {\oalign{\null#1\crcr\hidewidth\char12}}
%    \end{macrocode}
%    Declare the text symbols.
%    \begin{macrocode}
\DeclareTextSymbol{\AA}{T1}{197}
\DeclareTextSymbol{\AE}{T1}{198}
\DeclareTextSymbol{\DH}{T1}{208}
\DeclareTextSymbol{\DJ}{T1}{208}
\DeclareTextSymbol{\L}{T1}{138}
\DeclareTextSymbol{\NG}{T1}{141}
\DeclareTextSymbol{\OE}{T1}{215}
\DeclareTextSymbol{\O}{T1}{216}
\DeclareTextSymbol{\SS}{T1}{223}
\DeclareTextSymbol{\TH}{T1}{222}
\DeclareTextSymbol{\aa}{T1}{229}
\DeclareTextSymbol{\ae}{T1}{230}
\DeclareTextSymbol{\dh}{T1}{240}
\DeclareTextSymbol{\dj}{T1}{158}
\DeclareTextSymbol{\guillemotleft}{T1}{19}
\DeclareTextSymbol{\guillemotright}{T1}{20}
\DeclareTextSymbol{\guilsinglleft}{T1}{14}
\DeclareTextSymbol{\guilsinglright}{T1}{15}
\DeclareTextSymbol{\i}{T1}{25}
\DeclareTextSymbol{\j}{T1}{26}
\DeclareTextSymbol{\l}{T1}{170}
\DeclareTextSymbol{\ng}{T1}{173}
\DeclareTextSymbol{\oe}{T1}{247}
\DeclareTextSymbol{\o}{T1}{248}
\DeclareTextSymbol{\quotedblbase}{T1}{18}
\DeclareTextSymbol{\quotesinglbase}{T1}{13}
\DeclareTextSymbol{\ss}{T1}{255}
%\DeclareTextSymbol{\textasciicircum}{T1}{`\^}
%\DeclareTextSymbol{\textasciitilde}{T1}{`\~}
%\DeclareTextSymbol{\textbackslash}{T1}{`\\}
%\DeclareTextSymbol{\textbar}{T1}{`\|}
\DeclareTextSymbol{\textbraceleft}{T1}{`\{}
\DeclareTextSymbol{\textbraceright}{T1}{`\}}
\DeclareTextSymbol{\textcompwordmark}{T1}{23}
\DeclareTextSymbol{\textdollar}{T1}{`\$}
\DeclareTextSymbol{\textemdash}{T1}{22}
\DeclareTextSymbol{\textendash}{T1}{21}
\DeclareTextSymbol{\textexclamdown}{T1}{189}
%\DeclareTextSymbol{\textgreater}{T1}{`\>}
%\DeclareTextSymbol{\texthyphenchar}{T1}{127}
%\DeclareTextSymbol{\texthyphen}{T1}{`\-}
%\DeclareTextSymbol{\textless}{T1}{`\<}
\DeclareTextSymbol{\textquestiondown}{T1}{190}
\DeclareTextSymbol{\textquotedblleft}{T1}{16}
\DeclareTextSymbol{\textquotedblright}{T1}{17}
\DeclareTextSymbol{\textquotedbl}{T1}{`\"}
\DeclareTextSymbol{\textquoteleft}{T1}{`\`}
\DeclareTextSymbol{\textquoteright}{T1}{`\'}
\DeclareTextSymbol{\textsection}{T1}{159}
\DeclareTextSymbol{\textsterling}{T1}{191}
\DeclareTextSymbol{\textunderscore}{T1}{95}
\DeclareTextSymbol{\textvisiblespace}{T1}{32}
\DeclareTextSymbol{\th}{T1}{254}
%    \end{macrocode}
%    Declare the composites.
%    \begin{macrocode}
\DeclareTextComposite{\.}{T1}{i}{`\i}
\DeclareTextComposite{\u}{T1}{A}{128}
\DeclareTextComposite{\k}{T1}{A}{129}
\DeclareTextComposite{\'}{T1}{C}{130}
\DeclareTextComposite{\v}{T1}{C}{131}
\DeclareTextComposite{\v}{T1}{D}{132}
\DeclareTextComposite{\v}{T1}{E}{133}
\DeclareTextComposite{\k}{T1}{E}{134}
\DeclareTextComposite{\u}{T1}{G}{135}
\DeclareTextComposite{\'}{T1}{L}{136}
\DeclareTextComposite{\v}{T1}{L}{137}
\DeclareTextComposite{\'}{T1}{N}{139}
\DeclareTextComposite{\v}{T1}{N}{140}
\DeclareTextComposite{\H}{T1}{O}{142}
\DeclareTextComposite{\'}{T1}{R}{143}
\DeclareTextComposite{\v}{T1}{R}{144}
\DeclareTextComposite{\'}{T1}{S}{145}
\DeclareTextComposite{\v}{T1}{S}{146}
\DeclareTextComposite{\c}{T1}{S}{147}
\DeclareTextComposite{\v}{T1}{T}{148}
\DeclareTextComposite{\c}{T1}{T}{149}
\DeclareTextComposite{\H}{T1}{U}{150}
\DeclareTextComposite{\r}{T1}{U}{151}
\DeclareTextComposite{\"}{T1}{Y}{152}
\DeclareTextComposite{\'}{T1}{Z}{153}
\DeclareTextComposite{\v}{T1}{Z}{154}
\DeclareTextComposite{\.}{T1}{Z}{155}
\DeclareTextComposite{\.}{T1}{I}{157}
\DeclareTextComposite{\u}{T1}{a}{160}
\DeclareTextComposite{\k}{T1}{a}{161}
\DeclareTextComposite{\'}{T1}{c}{162}
\DeclareTextComposite{\v}{T1}{c}{163}
\DeclareTextComposite{\v}{T1}{d}{164}
\DeclareTextComposite{\v}{T1}{e}{165}
\DeclareTextComposite{\k}{T1}{e}{166}
\DeclareTextComposite{\u}{T1}{g}{167}
\DeclareTextComposite{\'}{T1}{l}{168}
\DeclareTextComposite{\v}{T1}{l}{169}
\DeclareTextComposite{\'}{T1}{n}{171}
\DeclareTextComposite{\v}{T1}{n}{172}
\DeclareTextComposite{\H}{T1}{o}{174}
\DeclareTextComposite{\'}{T1}{r}{175}
\DeclareTextComposite{\v}{T1}{r}{176}
\DeclareTextComposite{\'}{T1}{s}{177}
\DeclareTextComposite{\v}{T1}{s}{178}
\DeclareTextComposite{\c}{T1}{s}{179}
\DeclareTextComposite{\v}{T1}{t}{180}
\DeclareTextComposite{\c}{T1}{t}{181}
\DeclareTextComposite{\H}{T1}{u}{182}
\DeclareTextComposite{\r}{T1}{u}{183}
\DeclareTextComposite{\"}{T1}{y}{184}
\DeclareTextComposite{\'}{T1}{z}{185}
\DeclareTextComposite{\v}{T1}{z}{186}
\DeclareTextComposite{\.}{T1}{z}{187}
\DeclareTextComposite{\`}{T1}{A}{192}
\DeclareTextComposite{\'}{T1}{A}{193}
\DeclareTextComposite{\^}{T1}{A}{194}
\DeclareTextComposite{\~}{T1}{A}{195}
\DeclareTextComposite{\"}{T1}{A}{196}
\DeclareTextComposite{\r}{T1}{A}{197}
\DeclareTextComposite{\c}{T1}{C}{199}
\DeclareTextComposite{\`}{T1}{E}{200}
\DeclareTextComposite{\'}{T1}{E}{201}
\DeclareTextComposite{\^}{T1}{E}{202}
\DeclareTextComposite{\"}{T1}{E}{203}
\DeclareTextComposite{\`}{T1}{I}{204}
\DeclareTextComposite{\'}{T1}{I}{205}
\DeclareTextComposite{\^}{T1}{I}{206}
\DeclareTextComposite{\"}{T1}{I}{207}
\DeclareTextComposite{\~}{T1}{N}{209}
\DeclareTextComposite{\`}{T1}{O}{210}
\DeclareTextComposite{\'}{T1}{O}{211}
\DeclareTextComposite{\^}{T1}{O}{212}
\DeclareTextComposite{\~}{T1}{O}{213}
\DeclareTextComposite{\"}{T1}{O}{214}
\DeclareTextComposite{\`}{T1}{U}{217}
\DeclareTextComposite{\'}{T1}{U}{218}
\DeclareTextComposite{\^}{T1}{U}{219}
\DeclareTextComposite{\"}{T1}{U}{220}
\DeclareTextComposite{\'}{T1}{Y}{221}
\DeclareTextComposite{\`}{T1}{a}{224}
\DeclareTextComposite{\'}{T1}{a}{225}
\DeclareTextComposite{\^}{T1}{a}{226}
\DeclareTextComposite{\~}{T1}{a}{227}
\DeclareTextComposite{\"}{T1}{a}{228}
\DeclareTextComposite{\r}{T1}{a}{229}
\DeclareTextComposite{\c}{T1}{c}{231}
\DeclareTextComposite{\`}{T1}{e}{232}
\DeclareTextComposite{\'}{T1}{e}{233}
\DeclareTextComposite{\^}{T1}{e}{234}
\DeclareTextComposite{\"}{T1}{e}{235}
\DeclareTextComposite{\`}{T1}{i}{236}
\DeclareTextComposite{\`}{T1}{\i}{236}
\DeclareTextComposite{\'}{T1}{i}{237}
\DeclareTextComposite{\'}{T1}{\i}{237}
\DeclareTextComposite{\^}{T1}{i}{238}
\DeclareTextComposite{\^}{T1}{\i}{238}
\DeclareTextComposite{\"}{T1}{i}{239}
\DeclareTextComposite{\"}{T1}{\i}{239}
\DeclareTextComposite{\~}{T1}{n}{241}
\DeclareTextComposite{\`}{T1}{o}{242}
\DeclareTextComposite{\'}{T1}{o}{243}
\DeclareTextComposite{\^}{T1}{o}{244}
\DeclareTextComposite{\~}{T1}{o}{245}
\DeclareTextComposite{\"}{T1}{o}{246}
\DeclareTextComposite{\`}{T1}{u}{249}
\DeclareTextComposite{\'}{T1}{u}{250}
\DeclareTextComposite{\^}{T1}{u}{251}
\DeclareTextComposite{\"}{T1}{u}{252}
\DeclareTextComposite{\'}{T1}{y}{253}
%</T1>
%    \end{macrocode}
%
% \changes{1.4a}{1994/05/01}{Removed the uc/lc table settings, since
%    the T1 uc/lc table is now the default.}
%
% \subsection{Definitions for the OMS encoding}
%
% \changes{v1.6a}{1994/10/25}{Added the OMS encoding.}
% \changes{v1.6b}{1994/10/27}{Renamed \cs{textlbrace} to 
%    \cs{textbraceleft} and \cs{textrbrace} to \cs{textbraceright}.}
% \changes{v1.6b}{1994/10/27}{Added \cs{textbackslash}.}
% \changes{v1.6d}{1994/10/30}{Added \cs{textcircled}.}
%
% The definitions for the `\TeX{} math symbol' (OMS) encoding.  Even 
% though this is meant to be a math font, it includes some of the
% standard \LaTeX{} text symbols.
%
%    \begin{macrocode}
%<*OMS>
\ProvidesFile{OMSenc.def}[1994/12/14 Standard LaTeX file]
%    \end{macrocode}
%    Declare the encoding.
%    \begin{macrocode}
\DeclareFontEncoding{OMS}{}{}
%    \end{macrocode}
%    Declare the symbols.
%    \begin{macrocode}
%\DeclareTextSymbol{\textbackslash}{OMS}{"6E}
%\DeclareTextSymbol{\textbar}{OMS}{"6A}
\DeclareTextSymbol{\textbraceleft}{OMS}{"66}
\DeclareTextSymbol{\textbraceright}{OMS}{"67}
\DeclareTextSymbol{\textbullet}{OMS}{"0F}
\DeclareTextSymbol{\textdaggerdbl}{OMS}{"7A}
\DeclareTextSymbol{\textdagger}{OMS}{"79}
\DeclareTextSymbol{\textparagraph}{OMS}{"7B}
\DeclareTextSymbol{\textperiodcentered}{OMS}{"01}
\DeclareTextSymbol{\textsection}{OMS}{"78}
\DeclareTextCommand{\textcircled}{OMS}[1]{{%
   \ooalign{%
      \hfil \raise .07ex\hbox {\upshape#1}\hfil \crcr 
      \char"0D
   }%
}}
%</OMS>
%    \end{macrocode}
%
% \subsection{Definitions for the OML encoding}
%
% \changes{v1.6d}{1994/10/30}{Added the OML encoding.}
%
% The definitions for the `\TeX{} math italic' (OML) encoding.  Even 
% though this is meant to be a math font, it includes some of the
% standard \LaTeX{} text symbols.
%
%    \begin{macrocode}
%<*OML>
\ProvidesFile{OMLenc.def}[1994/12/14 Standard LaTeX file]
%    \end{macrocode}
%    Declare the encoding.
%    \begin{macrocode}
\DeclareFontEncoding{OML}{}{}
%    \end{macrocode}
%    Declare the symbols.
%    \begin{macrocode}
%\DeclareTextSymbol{\textless}{OML}{`\<}
%\DeclareTextSymbol{\textgreater}{OML}{`\>}
\DeclareTextAccent{\t}{OML}{"7F}
%</OML>
%    \end{macrocode}
%
% \changes{1.3}{1993/12/17}{Made Rockiki's encoding a proper encoding
%    scheme rather than a variant of OT1.}
% \changes{1.3b}{1993/12/18}{Replaced the missing last argument to
%    `DeclareFontEncoding.}
% \changes{1.3c}{1993/12/18}{Rewrote for the new syntax of
%    `EncodingSpecific.}
% \changes{1.4a}{1994/05/01}{Removed Rockiki's encoding.}
%
%
% \Finale
%
\endinput
