home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / useful / dist / text / tex / pastex / macros / latex / nfss2 / nfsscode.tex < prev    next >
Text File  |  1993-08-05  |  66KB  |  2,135 lines

  1. %% 
  2. %% This is file `nfsscode.tex', generated 
  3. %% on <1993/8/5> with the docstrip utility (2.0r).
  4. %% 
  5. %% The original source files were:
  6. %% 
  7. %% fam.dtx  (with options: `compat')
  8. %% nftrace.dtx 
  9. %% setsize.dtx 
  10. %% latint.dtx  (with options: `compat')
  11. %% lfonts.dtx  (with options: `compat')
  12. %% basefont.dtx  (with options: `basef')
  13. %% nffntcmd.dtx  (with options: `style')
  14. %% 
  15. %% Copyright (C) 1989--1993 by Frank Mittelbach, Rainer Schoepf. 
  16. %% All rights reserved. 
  17. %% 
  18. %% This file is part of the NFSS2 (New Font Selection Scheme) package. 
  19. %% 
  20. %% This package is distributed in the hope that it will be useful, 
  21. %% but WITHOUT ANY WARRANTY; without even the implied warranty of 
  22. %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
  23. %% 
  24. %% 
  25. %% IMPORTANT NOTICE: 
  26. %% 
  27. %% For error reports in case of UNCHANGED versions see readme files. 
  28. %% 
  29. %% Please do not request updates from us directly. Distribution is 
  30. %% done through Mail-Servers and TeX organizations. 
  31. %% 
  32. %% You are not allowed to change this file. You may however copy 
  33. %% this file to a file with a different name and then change the copy 
  34. %% if you obey the restrictions on file changes described in 
  35. %% readme.mz. 
  36. %% 
  37. %% You are allowed to distribute this file under the condition that 
  38. %% it is distributed together with all files mentioned in readme.mz8. 
  39. %% If you receive only some of these files from someone, complain! 
  40. %% 
  41. %% You are NOT ALLOWED to distribute this file alone. You are NOT 
  42. %% ALLOWED to take money for the distribution or use of either this 
  43. %% file or a changed version, except for a nominal charge for copying 
  44. %% etc. 
  45. \def\filename{fam}
  46. \def\fileversion{v2.0f}
  47. \def\filedate{93/05/16}
  48. \def\docdate {93/05/16}
  49.  
  50.  
  51. %% \CharacterTable
  52. %%  {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
  53. %%   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
  54. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  55. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  56. %%   Dollar        \$     Percent       \%     Ampersand     \&
  57. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  58. %%   Asterisk      \*     Plus          \+     Comma         \,
  59. %%   Minus         \-     Point         \.     Solidus       \/
  60. %%   Colon         \:     Semicolon     \;     Less than     \<
  61. %%   Equals        \=     Greater than  \>     Question mark \?
  62. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  63. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  64. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  65. %%   Right brace   \}     Tilde         \~}
  66. %% Copyright (C) 1989-1993 Frank Mittelbach and Rainer Sch\"opf,
  67. %% all rights reserved.
  68. \immediate\write\sixt@@n{File: `fam'
  69.  \space\space\space\space\space\space\space\space
  70.  \space       \fileversion \space <\filedate>  (FMi and RmS)}
  71. \immediate\write\sixt@@n{English Documentation
  72.  \space\space\space\space\space    <\docdate>  (FMi and RmS)}
  73. \def\@spaces{\space\space\space\space}
  74. \def\@gobble#1{}
  75. \def\@empty{}
  76. \def\@height{height}
  77. \def\@depth{depth}
  78. \def\@width{width}
  79. \def\@namedef#1{\expandafter\def\csname#1\endcsname}
  80. \def\@ifnextchar#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}%
  81.     \futurelet\@tempc\@ifnch}
  82. \def\@ifnch{\ifx \@tempc \@sptoken \let\@tempd\@xifnch
  83.       \else \ifx \@tempc \@tempe\let\@tempd\@tempa
  84.             \else\let\@tempd\@tempb\fi \fi \@tempd}
  85. \def\:{\let\@sptoken= } \:
  86. \def\:{\@xifnch} \expandafter\def\: {\futurelet\@tempc\@ifnch}
  87. \def\@nomath#1{\relax\ifmmode
  88.    \font@warning{Don't use \noexpand#1in math mode}\fi}
  89. \def\no@alphabet@error#1#2{\relax \ifmmode
  90.     \errhelp\no@alphabet@help
  91.     \errmessage{Math alphabet identifier \string#2 is undefined
  92.                 in math version `#1'.} \fi}
  93. \newhelp\no@alphabet@help
  94.    {Your requested math alphabet is undefined in the current
  95.     math version.^^JCheck the spelling or use the
  96.     \string\SetMathAlphabet\space command.}
  97. \def\new@mathgroup{\alloc@8\mathgroup\chardef\sixt@@n}
  98. \let\mathgroup\fam
  99. \let\newfam\new@mathgroup
  100. \def\new@fontshape#1#2#3#4{%
  101.      \warn@rel@i\new@fontshape\DeclareFontShape
  102.      \expandafter\scan@fontshape\@gobble#4<\@nil><<%
  103.      \DeclareFontShape{U}{#1}{#2}{#3}{\next}}
  104. \def\scan@fontshape{%
  105.   \def\next{}%
  106.   \def\@tempe{}%        holds last info
  107.   \scan@@fontshape
  108. }
  109.  
  110. \def\warn@rel@i#1#2{%
  111.  \font@warning{***  NFSS release 1 command
  112.                \noexpand#1found\f@warn@break
  113.    ***  Update this file to use release 2 command
  114.         \string#2.\f@warn@break
  115.    ***  Internal recovery is probably possible}%
  116. }
  117.  
  118. \def\scan@@fontshape#1>#2#3<{%
  119.   \ifx\@nil#1%
  120.     \edef\next{\next\@tempe}%
  121.   \else
  122.     \def\@tempb{#1}%       nick names
  123.     \def\@tempc{#3}%
  124.     \in@{ at}{#3}%
  125.     \ifin@
  126.       \in@{pt}{#3}%  not a proof but a good chance
  127.       \ifin@
  128. \def\@tempa##1 at##2pt\@nil{%
  129.    \def\@tempb{##2}%
  130.    \def\@tempc{##1}%
  131.    }%
  132. \@tempa#3\@nil
  133.       \fi
  134.     \fi
  135.     \ifnum 0<0#2
  136.       \edef\@tempd{subf*\@tempc}%
  137.       \ifcase #2\or
  138.       \or
  139.       \else
  140.         \errmessage{*** What's this? NFSS release 0? ***}%
  141.       \fi
  142.     \else
  143.       \edef\@tempd{#2\@tempc}%
  144.     \fi
  145.     \ifx\@tempd\@tempe
  146.       \edef\next{\next<\@tempb>}%
  147.     \else
  148.       \edef\next{\next\@tempe<\@tempb>}%  add old info
  149.       \let\@tempe\@tempd
  150.     \fi
  151.     \expandafter\scan@@fontshape
  152.   \fi
  153. }
  154.  
  155. \def\DeclareFontShape{\begingroup
  156.    \catcode`\ 9%
  157.    \catcode`\^^M9%
  158.    \@makeother\<%
  159.    \@makeother\>%
  160.    \@makeother\*%
  161.    \@makeother\.%
  162.    \@makeother\-%
  163.    \DeclareFontShape@}
  164. \def\DeclareFontShape@#1#2#3#4#5#6{%
  165.    \expandafter\ifx\csname #1+#2\endcsname\undefined
  166.      \@latexerr{Font family `#1+#2' unknown}\@eha
  167.    \else
  168.      \expandafter
  169.        \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand
  170.    \csname #5\endcsname}%
  171.      \def\@tempa{#6}%
  172.      \global
  173.      \expandafter\let\csname#5\expandafter\endcsname
  174. \ifx\@tempa\@empty
  175.   \@empty
  176. \else
  177.   \@tempa
  178. \fi
  179.    \fi
  180.   \endgroup
  181.   }
  182. \def\subst@fontshape#1#2#3#4#5#6{%
  183.      \warn@rel@i\subst@fontshape\DeclareFontShape
  184.      \DeclareFontShape{U}{#1}{#2}{#3}{<->sub*#4/#5/#6}{}}
  185. \def\@makeother#1{\catcode`#1=12\relax}
  186. \def\do@subst@correction{%
  187.        \xdef\subst@correction{%
  188.           \font@name
  189.           \global\expandafter\font
  190.             \csname \curr@fontshape/\f@size\endcsname
  191.             \noexpand\fontname\font
  192.            \relax}%
  193.        \aftergroup\subst@correction
  194. }
  195. \def\extra@def#1#2#3{%
  196.      \warn@rel@i\extra@def\DeclareFontFamily
  197.      \DeclareFontFamily{U}{#1}{}%
  198. }
  199. \def\DeclareFontFamily#1#2#3{%
  200.  \@ifundefined{T@#1}%
  201.     {%
  202.      \@latexerr{Encoding scheme  `#1' unknown}\@eha
  203.     }%
  204.     {%
  205.      \def\@tempa{#3}%
  206.      \global
  207.      \expandafter\let\csname #1+#2\expandafter\endcsname
  208.             \ifx \@tempa\@empty
  209.               \@empty
  210.             \else \@tempa
  211.             \fi
  212.     }%
  213. }
  214. \let\cdp@list\@empty
  215. \def\DeclareFontEncoding{%
  216.    \begingroup
  217.    \catcode`\ 9%
  218.    \catcode`\^^M9%
  219.    \DeclareFontEncoding@}
  220. \def\DeclareFontEncoding@#1#2#3{%
  221.   \endgroup
  222.   \expandafter
  223.   \ifx\csname T@#1\endcsname\relax
  224.      \def\cdp@elt{\noexpand\cdp@elt}%
  225.      \xdef\cdp@list{\cdp@list\cdp@elt{#1}%
  226.                     {\default@family}{\default@series}%
  227.                     {\default@shape}}%
  228.   \fi
  229.   \global\@namedef{T@#1}{#2}%
  230.   \global\@namedef{M@#1}{\default@M#3}%
  231.   }
  232.  
  233. \def\DeclareFontSubstitution#1#2#3#4{%
  234.   \expandafter
  235.   \ifx\csname T@#1\endcsname\relax
  236.     \@latexerr{Encoding scheme  `#1' unknown}\@eha
  237.   \else
  238.     \begingroup
  239.        \def\@tempa{#1}%
  240.        \toks@{}%
  241.        \def\cdp@elt##1##2##3##4{%
  242.           \def\@tempb{##1}%
  243.           \ifx\@tempa\@tempb
  244.              \addto@hook\toks@{\cdp@elt{#1}{#2}{#3}{#4}}%
  245.           \else
  246.              \addto@hook\toks@{\cdp@elt{##1}{##2}{##3}{##4}}%
  247.           \fi}%
  248.         \cdp@list
  249.         \xdef\cdp@list{\the\toks@}%
  250.     \endgroup
  251.     \global
  252.     \@namedef{D@#1}{%
  253.    \def\default@family{#2}%
  254.    \def\default@series{#3}%
  255.    \def\default@shape{#4}%
  256.    }%
  257.   \fi
  258.  }
  259.  
  260. \def\DeclareFontEncodingDefaults#1#2{%
  261.   \ifx\relax#1\else
  262.     \ifx\default@T\@empty\else
  263.       \font@log{Overwriting encoding scheme text defaults}%
  264.     \fi
  265.     \gdef\default@T{#1}%
  266.   \fi
  267.   \ifx\relax#2\else
  268.     \ifx\default@T\@empty\else
  269.       \font@log{Overwriting encoding scheme math defaults}%
  270.     \fi
  271.     \gdef\default@M{#2}%
  272.   \fi
  273. }
  274. \let\default@T\@empty
  275. \let\default@M\@empty
  276.  
  277. \def\default@mextra#1{%
  278.   \warn@rel@i\default@mextra\DeclareFontEncodingDefaults
  279.   \DeclareFontEncodingDefaults{\relax}{#1}%
  280. }
  281. \def\preload@sizes{%
  282.      \warn@rel@i\preload@sizes\DeclarePreloadSizes
  283.      \DeclarePreloadSizes{U}%
  284. }
  285. \def\DeclarePreloadSizes#1#2#3#4#5{%
  286.  \@ifundefined{T@#1}%
  287.    {\@latexerr{Encoding scheme  `#1' unknown}\@eha}%
  288.    {%
  289.    \begingroup
  290.     \def\next##1,{%
  291.         \if>##1>%
  292.           \let\next\relax
  293.         \else
  294.           \xdef\font@name{\csname#1/#2/#3/#4/##1\endcsname}%
  295.           \pickup@font
  296.           \global\expandafter\let\font@name\relax
  297.         \fi
  298.         \next}%
  299.      \next#5,,%
  300.    \endgroup
  301.    }%
  302. }
  303. \newif\ifmath@fonts \math@fontstrue
  304. \def\define@mathsizes#1#2#3{%
  305.     \@defaultunits\dimen@#1pt\relax\@nnil
  306.     \expandafter \def
  307.     \csname S@\strip@pt\dimen@\endcsname
  308.           {\gdef\tf@size{#1}\gdef\sf@size{#2}%
  309.                            \gdef\ssf@size{#3}%
  310.            }}
  311. \def\define@nomathsize#1{\expandafter \let
  312.     \csname S@#1\endcsname \math@fontsfalse}
  313. \def\fontencoding#1{%
  314.     \expandafter\ifx\csname T@#1\endcsname\relax
  315.       \@latexerr{Encoding scheme `#1' unknown}\@eha
  316.     \else
  317.       \edef\@tempa{#1}%
  318.       \ifx\@tempa\f@encoding
  319.       \else
  320.         \let\f@encoding\@tempa
  321.         \default@T
  322.         \csname T@#1\endcsname
  323.         \csname D@#1\endcsname
  324.       \fi
  325.     \fi
  326. }
  327.  
  328. \def\fontfamily#1{\edef\f@family{#1}}
  329. \def\fontseries#1{\edef\f@series{#1}}
  330. \def\fontshape#1{\edef\f@shape{#1}}
  331. \def\usefont#1#2#3#4{\fontencoding{#1}\fontfamily{#2}%
  332.              \fontseries{#3}\fontshape{#4}\selectfont
  333.              \ignorespaces}
  334. \def\fontsize#1#2{%
  335.     \@defaultunits\@tempdimb#1pt\relax\@nnil
  336.     \edef\f@size{\strip@pt\@tempdimb}%
  337.     \@defaultunits\@tempskipa #2pt\relax\@nnil
  338.     \edef\f@baselineskip{\the\@tempskipa}}
  339.  
  340. \def\@defaultunits{\afterassignment\remove@to@nnil}
  341. \begingroup
  342.   \catcode`P=12
  343.   \catcode`T=12
  344.   \lowercase{
  345.     \def\x{\def\rem@pt##1.##2PT{##1\ifnum##2>\z@.##2\fi}}}
  346.   \expandafter\endgroup\x
  347. \def\strip@pt{\expandafter\rem@pt\the}
  348. \def\mathversion#1{\@nomath\mathversion
  349.           \expandafter\ifx\csname mv@#1\endcsname\relax
  350.           \@latexerr{Math version `#1' is not defined}\@eha\else
  351.           \edef\math@version{#1}\glb@settings\aftergroup\glb@settings
  352.           \fi}
  353. \def\pickup@font{%
  354.     \expandafter \ifx \font@name \relax
  355.        \define@newfont
  356.     \fi}
  357. {\catcode`\/=12
  358. \gdef\split@name#1/#2/#3/#4/#5\@nil{\def\f@encoding{#1}%
  359.                                     \def\f@family{#2}%
  360.                                     \def\f@series{#3}%
  361.                                     \def\f@shape{#4}%
  362.                                     \def\f@size{#5}}}
  363. \def\curr@fontshape{\f@encoding/\f@family/\f@series/\f@shape}
  364. \def\define@newfont{%
  365.   \begingroup
  366.     \escapechar\m@ne
  367.     \expandafter\expandafter\expandafter
  368.        \split@name\expandafter\string\font@name\@nil
  369.       \try@load@fontshape % try always
  370.     \expandafter\ifx
  371.        \csname\curr@fontshape\endcsname \relax
  372.       \wrong@fontshape\else
  373.       \extract@font\fi
  374.   \endgroup}
  375.  
  376. \def\try@load@fontshape{%
  377.    \expandafter
  378.    \ifx\csname \f@encoding+\f@family\endcsname\relax
  379.      \font@log{Try loading font information for
  380.                    \f@encoding+\f@family}%
  381.     \global\expandafter\let
  382.        \csname\f@encoding+\f@family\endcsname\@empty
  383.      \makeatletter
  384.      \catcode`\ 9\relax
  385.      \catcode`\^^M9\relax
  386.      \catcode`\\\z@
  387.      \catcode`\{\@ne
  388.      \catcode`\}\tw@
  389.      \catcode`\%14\relax
  390.      \@input{\fd@prefix\f@encoding\f@family.fd}%
  391.    \fi
  392. }
  393. \def\makeatletter{\catcode`\@11\relax}
  394. \def\@input#1{\openin15 #1 \ifeof15 \typeout
  395.   {No file #1.}\else\closein15 \relax\@@input #1 \fi}
  396. \let\@@input\input
  397. \input fdprefix.tex
  398. \ifx\fd@prefix\@empty
  399.  \let\fd@prefix\@empty
  400. \fi
  401. \def\DeclareErrorFont#1#2#3#4#5{%
  402.       \xdef\error@fontshape{%
  403.           \noexpand\expandafter\noexpand\split@name\noexpand\string
  404.           \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
  405.           \noexpand\@nil}%
  406.       \gdef\f@encoding{#1}%
  407.       \gdef\default@family{#2}%
  408.       \gdef\default@series{#3}%
  409.       \gdef\default@shape{#4}%
  410.       \global\let\f@family\default@family
  411.       \global\let\f@series\default@series
  412.       \global\let\f@shape\default@shape
  413.       \gdef\f@size{#5}%
  414.       \gdef\f@baselineskip{#5pt}%
  415. }
  416. \DeclareErrorFont{OT1}{cmr}{m}{n}{10}
  417. \def\wrong@fontshape{%
  418.     \csname D@\f@encoding\endcsname      % install defaults if in math
  419.     \edef\@tempa{\csname\curr@fontshape\endcsname}%
  420.   \ifx\last@fontshape\@tempa
  421.      \errmessage{Corrupted NFSS tables}%
  422.      \error@fontshape
  423.   \else
  424.     \let\f@shape\default@shape
  425.     \expandafter\ifx\csname\curr@fontshape\endcsname\relax
  426.        \let\f@series\default@series
  427.         \expandafter
  428.           \ifx\csname\curr@fontshape\endcsname\relax
  429.            \let\f@family\default@family
  430.         \fi \fi
  431.   \fi
  432.     \font@warning{Font shape `\@tempa' undefined\f@warn@break
  433.                   using `\curr@fontshape' instead}%
  434.     \global\let\last@fontshape\@tempa
  435.     \global\expandafter\expandafter\expandafter\let\expandafter\@tempa
  436.            \csname\curr@fontshape\endcsname
  437.     \xdef\font@name{%
  438.       \csname\curr@fontshape/\f@size\endcsname}%
  439.     \pickup@font}
  440. \def\strip@prefix#1>{}
  441. \def\err@rel@i#1#2{%
  442.  \errhelp{The new release of NFSS doesn't support the
  443.           #1 command^^Jany longer.
  444.           Please upgrade your file to the syntax of NFSS
  445.           release 2^^Jusing the #2 command.}%
  446.   \errmessage{***  NFSS release 1 command \noexpand#1found%
  447.            ^^J***  Recovery not possible. Use \string#2}%
  448.   \batchmode\input.\relax
  449. }
  450. \def\define@mathalphabet#1#2#3#4#5#6{%
  451.       \err@rel@i\define@mathalphabet\DeclareMathAlphabet
  452. }
  453. \let\install@mathalphabet\gdef
  454. \def\define@mathgroup#1#2#3#4#5{%
  455.       \err@rel@i\define@mathgroup\DeclareSymbolFont
  456. }
  457. \let\math@fonts\@empty
  458. \def\extract@alph@from@version#1#2#3{%
  459.      \def\@tempa##1\install@mathalphabet#3##2##3\@nil{%
  460.          \def\@tempb{##2}%
  461.          \def\@tempc####1{\gdef#1{##1####1##3}}}%
  462.      \expandafter\@tempa#1\@nil
  463.      \def\@tempa\select@group#3##1##2\@nil{%
  464.         \@tempc{%
  465.            \getanddefine@fonts{#2}##2%
  466.            \install@mathalphabet#3{\use@mathgroup##1{#2}}}%
  467.         \gdef#3{\use@mathgroup##1{#2}}}%
  468.      \expandafter\@tempa\@tempb\@nil
  469.      }
  470. \let\math@bgroup\begingroup
  471. \def\math@egroup#1{#1\endgroup}
  472. \def\glb@settings{\begingroup
  473.      \expandafter\ifx\csname S@\f@size\endcsname\relax
  474.        \calculate@math@sizes
  475.      \fi
  476.      \csname S@\f@size\endcsname
  477.       \ifmath@fonts
  478.         \escapechar\m@ne
  479.         \csname mv@\math@version \endcsname
  480.       \else
  481.         \math@fontstrue
  482.       \fi
  483.     \globaldefs\@ne
  484.     \math@fonts
  485.     \let \glb@currsize \f@size
  486.   \endgroup}
  487. \def\calculate@math@sizes{%
  488.   \font@warning{Calculating math sizes for size <\f@size>}%
  489.   \dimen@\f@size \p@
  490.   \@tempdimb .7\dimen@
  491.   \dimen@ .5\dimen@
  492.   \expandafter\xdef\csname S@\f@size\endcsname{%
  493.     \gdef\noexpand\tf@size{\f@size}%
  494.     \gdef\noexpand\sf@size{\strip@pt\@tempdimb}%
  495.     \gdef\noexpand\ssf@size{\strip@pt\dimen@}%
  496.     \noexpand\math@fontstrue}}
  497. \ifx\noaccents@\undefined
  498.   \let\noaccents@\@empty
  499. \fi
  500. \def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen
  501.   \reset@font
  502.   \pretolerance\m@ne\tolerance\m@ne\hbadness\z@\showboxdepth\z@\ #1}}
  503. \def\addto@hook#1#2{#1\expandafter{\the#1#2}}
  504. \ifx\inputlineno\undefined
  505.   \let\on@line\@empty
  506. \else
  507.   \ifnum\inputlineno=\m@ne
  508.     \let\on@line\@empty
  509.   \else
  510.     \def\on@line{ on input line \the\inputlineno}
  511.   \fi
  512. \fi
  513.  
  514.  
  515.  
  516. \def\filename{nftrace}
  517. \def\fileversion{v2.1h}
  518. \def\filedate{93/07/16}
  519. \def\docdate {93/07/16}
  520.  
  521.  
  522. %% Copyright (C) 1989-1993 Frank Mittelbach and Rainer Sch\"opf,
  523. %% all rights reserved.
  524.  \immediate\write\sixt@@n{File: `nftrace' \@spaces
  525.  \fileversion\space <\filedate>  (FMi and RmS)}
  526. \immediate\write\sixt@@n{English Documentation
  527.  \@spaces\space  <\docdate>  (FMi and RmS)}
  528. \def\extract@font{%
  529.    \get@external@font
  530.    \global\expandafter\font\font@name\external@font\relax
  531.     \font@name \relax
  532.     \csname \f@encoding+\f@family\endcsname
  533.     \csname\curr@fontshape\endcsname
  534.     \relax
  535.        }
  536. \def\get@external@font{%
  537.    \let\external@font\@empty
  538.    \edef\font@info{\expandafter\expandafter\expandafter\string
  539.         \csname \curr@fontshape \endcsname}%
  540.    \try@size@range
  541.    \ifx\external@font\@empty
  542.       \try@size@substitution
  543.       \ifx\external@font\@empty
  544.          \errmessage{Font \expandafter \string\font@name\space
  545.                      not found}%
  546.          \error@fontshape
  547.          \get@external@font
  548.    \fi\fi
  549. }
  550.  
  551. \def\selectfont{%
  552.     \xdef\font@name{%
  553.       \csname\curr@fontshape/\f@size\endcsname}%
  554.     \pickup@font
  555.     \font@name
  556.       \@tempskipa \f@baselineskip\relax
  557.       \baselineskip \baselinestretch\@tempskipa
  558.     \setbox\strutbox\hbox{\vrule\@height.7\baselineskip
  559.         \@depth.3\baselineskip \@width\z@}%
  560.     \normalbaselineskip\baselineskip
  561.     \ifx \glb@currsize \f@size
  562.      \else
  563.      \glb@settings \the\every@size
  564.        \aftergroup\glb@settings \fi
  565.     }
  566. \def\baselinestretch{1}
  567. \newtoks\every@size
  568. \every@size={}
  569. \def\use@mathgroup#1#2{\relax\ifmmode
  570.      \math@bgroup
  571.          \expandafter\ifx\csname M@\f@encoding\endcsname#1\else
  572.          #1\fi
  573.          \mathgroup#2\relax
  574.      \expandafter\math@egroup\fi}%
  575. \def\getanddefine@fonts#1#2{%
  576.   \xdef\font@name{\csname \string#2/\tf@size\endcsname}%
  577.   \pickup@font \let\textfont@name\font@name
  578.   \xdef\font@name{\csname \string#2/\sf@size\endcsname}%
  579.   \pickup@font \let\scriptfont@name\font@name
  580.   \xdef\font@name{\csname \string#2/\ssf@size\endcsname}%
  581.   \pickup@font
  582.   \edef\math@fonts{\math@fonts
  583.                \textfont#1\textfont@name
  584.                \scriptfont#1\scriptfont@name
  585.                \scriptscriptfont#1\font@name}%
  586.     }
  587. \def\tracingfonts{\font@warning{Command \noexpand\tracingfonts
  588.                   not provided.\f@warn@break
  589.                   Use `nftrace' option in \string\documentstyle\space
  590.                   command.\f@warn@break Command found:}%
  591.                   \count@}
  592. \def\font@warning#1{%
  593.           \font@trace{#1}%
  594.           }
  595. \def\font@trace#1{\immediate\write\sixt@@n
  596.                  {^^JNFSS Info: #1\on@line.^^J}}
  597.  
  598. \def\font@log#1{%
  599.           \immediate\write\m@ne{NFSS Note: #1\on@line.}}
  600. \def\ifnot@nil#1{\def\@tempa{#1}%
  601.   \ifx\@tempa\@nnil \expandafter\@gobble\else \expandafter\@iden\fi}
  602. \def\@iden#1{#1}
  603. \def\remove@to@nnil#1\@nnil{}
  604. \def\remove@angles#1>{\set@simple@size@args}
  605. \def\remove@star#1*{#1}
  606. \def\gobble@font@spec#1\@nil<\@nnil{}
  607. \def\extract@sizefn#1*#2\@nil{%
  608.   \if>#2>\set@size@funct@args#1\@nil
  609.          \let\sizefn@info\@empty
  610.   \else\expandafter\set@size@funct@args\remove@star#2\@nil
  611.        \def\sizefn@info{#1}\fi
  612.   }
  613. %% this could be replaced by \try@size@range making the subst slower!
  614. \def\try@simple@size{%
  615.     \def\@tempa{\def\extract@fontinfo####1}%
  616.     \expandafter\@tempa\expandafter<\f@size>##2<##3\@nnil{%
  617.           \ifnot@nil{##2}%
  618.     {\set@simple@size@args##2<##3\@nnil
  619.              \execute@size@function\sizefn@info
  620.             }}%
  621.     \expandafter\expandafter
  622.     \expandafter\extract@fontinfo\expandafter\font@info
  623.     \expandafter<\f@size>\@nil<\@nnil
  624. }
  625. \def\set@simple@size@args#1<{%
  626.           \if<#1<%
  627.     \expandafter\remove@angles
  628.   \else
  629.             \extract@sizefn#1*\@nil
  630.     \expandafter\remove@to@nnil
  631.   \fi}
  632. \def\extract@rangefontinfo#1<#2>{%
  633.        \is@range#2->\@nil#2>}
  634. \def\is@range#1-#2\@nil{%
  635.    \if>#2\expandafter\check@single\else
  636.       \expandafter\check@range\fi}
  637. \newdimen\lower@bound
  638. \newdimen\upper@bound
  639. \def\check@range#1-#2>#3<#4\@nnil{%
  640.   \ifnot@nil{#3}{%
  641.      \def\next{\extract@rangefontinfo<#4\@nnil}%
  642.      \upper@bound0#2\p@
  643.      \ifdim\upper@bound=\z@ \upper@bound\maxdimen\fi
  644.      \ifdim \f@size \p@<\upper@bound
  645.        \lower@bound0#1\p@
  646.        \ifdim \f@size \p@<\lower@bound
  647.         \else
  648.           \set@simple@size@args#3<#4\@nnil
  649.   \execute@size@function\sizefn@info
  650.          \ifx\external@font\@empty
  651.          \else
  652.            \let\next\@empty
  653.          \fi
  654.        \fi
  655.      \fi
  656.      \next}}
  657. \def\check@single#1>#2<#3\@nnil{%
  658.      \def\next{\extract@rangefontinfo<#3\@nnil}%
  659.      \ifdim \f@size \p@=#1\p@
  660.         \set@simple@size@args#2<#3\@nnil
  661.         \execute@size@function\sizefn@info
  662.         \ifx\external@font\@empty
  663.         \else
  664.           \let\next\@empty
  665.         \fi
  666.      \fi
  667.      \next}
  668. \def\set@size@funct@args{\@ifnextchar[%
  669.   \set@size@funct@args@{\set@size@funct@args@[]}}
  670. \def\set@size@funct@args@[#1]#2\@nil{%
  671.   \def\mandatory@arg{#2}%
  672.   \def\optional@arg{#1}}
  673. \def\DeclareSizeFunction#1#2{\@namedef{s@fct@#1}{#2}}
  674. \def\execute@size@function#1{%
  675.       \csname s@fct@#1\endcsname
  676. }
  677. \def\f@warn@break{^^J\@spaces\@spaces\@spaces}
  678. \def\f@warn@break{^^JNFSS \@spaces\space\space}
  679. \def\try@size@range{%
  680.     \expandafter\extract@rangefontinfo\font@info <-*>\@nil<\@nnil
  681. }
  682.  
  683. \def\try@size@substitution{%
  684.     \@tempdimb\z@
  685.     \@tempdimc\maxdimen
  686.     \let\lower@font@size\@empty
  687.     \let\higher@font@size\@empty
  688.     \expandafter\extract@subfontinfo\font@info <\number\@M>\@nil<\@nnil
  689.     \dimen@-\f@size\p@
  690.     \advance\@tempdimb\dimen@
  691.     \@tempdimb-\@tempdimb
  692.     \advance\@tempdimc\dimen@
  693.     \ifdim\@tempdimb<\@tempdimc
  694.       \subst@size\lower@font@size\@tempdimb
  695.       \subst@size\higher@font@size\@tempdimc
  696.     \else
  697.       \subst@size\higher@font@size\@tempdimc
  698.       \subst@size\lower@font@size\@tempdimb
  699.    \fi}
  700. \def\subst@size#1#2{%
  701.   \ifx#1\@empty\else
  702.    \ifx\external@font\@empty
  703.       \ifdim#2>\fontsubmax
  704.         \global\fontsubmax#2% #2 should be register
  705.       \fi
  706.       \let\f@user@size\f@size
  707.       \let\f@size#1%
  708.       \ifdim#2>\fontsubfuzz
  709.         \font@warning{Font shape `\curr@fontshape'
  710.                     in size <\f@user@size> not
  711.                     available.\f@warn@break
  712.                     size <\f@size> substituted}%
  713.       \fi
  714.       \try@simple@size
  715.       \do@subst@correction
  716.   \fi
  717.  \fi}
  718. \newdimen\fontsubmax
  719. \newdimen\fontsubfuzz
  720. \fontsubmax=0pt
  721. \fontsubfuzz=.4pt
  722. \def\extract@subfontinfo#1<#2>{%
  723.   \is@simple#2->\is@simple}
  724. \def\is@simple#1-#2\is@simple{%
  725.    \let\next\extract@subfontinfo
  726.    \if>#2%
  727.       \dimen@ #1\p@
  728.       \ifdim \f@size\p@<\dimen@
  729.         \ifdim \dimen@ <\@M\p@
  730.           \def\higher@font@size{#1}%
  731.   \@tempdimc\dimen@
  732.         \fi
  733. \let\next\gobble@font@spec
  734.       \else
  735. \def\lower@font@size{#1}%
  736. \@tempdimb\dimen@
  737.       \fi
  738.     \fi\next}
  739. \DeclareSizeFunction{}{\empty@sfcnt\font@warning}
  740. \DeclareSizeFunction{s}{\empty@sfcnt\font@log}
  741.  
  742. \def\empty@sfcnt#1{%
  743.       \@tempdimb \f@size\p@
  744.       \ifx\optional@arg\@empty
  745.       \else
  746.         \@tempdimb \optional@arg\@tempdimb
  747.         #1{Font shape `\curr@fontshape'
  748.             will be\f@warn@break
  749.             scaled to size \the\@tempdimb}%
  750.       \fi
  751.       \edef\external@font{\mandatory@arg\space at\the\@tempdimb}}
  752. \DeclareSizeFunction{gen}{\gen@sfcnt\font@warning}
  753. \DeclareSizeFunction{sgens}{\gen@sfcnt\font@log}
  754.  
  755. \def\gen@sfcnt{%
  756.       \edef\mandatory@arg{\mandatory@arg\f@size}%
  757.       \empty@sfcnt}
  758. \DeclareSizeFunction{sub}{\sub@sfcnt\font@warning}
  759. \DeclareSizeFunction{ssub}{\sub@sfcnt\font@log}
  760. \def\sub@sfcnt#1{%
  761.     \edef\mandatory@arg{\f@encoding/\mandatory@arg}%
  762.     \begingroup
  763.      \expandafter\split@name\mandatory@arg/\@nil
  764.      \try@load@fontshape
  765.     \endgroup
  766.     \let\f@user@size\f@size
  767.     \expandafter
  768.     \ifx\csname\mandatory@arg\endcsname\relax
  769.       \errmessage{No declaration for shape \mandatory@arg}%
  770.       \error@fontshape
  771.     \else
  772.       #1{Font shape `\curr@fontshape' in size <\f@size> not
  773.                     available.\f@warn@break
  774.                     Font shape `\mandatory@arg' tried instead}%
  775.       \expandafter\split@name\mandatory@arg/\@nil
  776.     \fi
  777.     \edef\f@size{\f@user@size}%
  778.     \get@external@font
  779.     \do@subst@correction
  780. }
  781. \DeclareSizeFunction{subf}{\subf@sfcnt\font@warning}
  782. \DeclareSizeFunction{ssubf}{\subf@sfcnt\font@log}
  783. \def\subf@sfcnt#1{%
  784.       #1{Font shape `\curr@fontshape'
  785.     in size \f@size\space
  786.     not available.\f@warn@break
  787.     external font `\mandatory@arg'
  788.     used}%
  789.       \empty@sfcnt#1%
  790.       }
  791. \DeclareSizeFunction{fixed}{\fixed@sfcnt\font@warning}
  792. \DeclareSizeFunction{sfixed}{\fixed@sfcnt\font@log}
  793. \def\fixed@sfcnt#1{%
  794.   \ifx\optional@arg\@empty
  795.     \let\external@font\mandatory@arg
  796.   \else
  797.     \edef\external@font{\mandatory@arg\space at\optional@arg pt}%
  798.   \fi
  799.   #1{External font `\external@font' loaded for size <\f@size>}%
  800. }
  801.  
  802.  
  803. \def\filename{setsize}
  804. \def\fileversion{v2.0b}
  805. \def\filedate{93/07/19}
  806. \def\docdate {93/03/01}
  807.  
  808.  
  809. %% File `setsize.dtx'.
  810. %% Copyright (C) 1989-1993 Frank Mittelbach and Rainer Sch\"opf,
  811. %% all rights reserved.
  812.  
  813. \immediate\write\sixt@@n{File: `setsize' \space
  814.  \@spaces \fileversion \space <\filedate> (FMi and RmS)}
  815. \immediate\write\sixt@@n{English Documentation
  816.       \space \@spaces <\docdate> (FMi and RmS)}
  817.  \def\normalsize{\@normalsize}
  818.  \def\@vpt{5}
  819.  \def\@vipt{6}
  820.  \def\@viipt{7}
  821.  \def\@viiipt{8}
  822.  \def\@ixpt{9}
  823.  \def\@xpt{10}
  824.  \def\@xipt{10.95}
  825.  \def\@xiipt{12}
  826.  \def\@xivpt{14.4}
  827.  \def\@xviipt{17.28}
  828.  \def\@xxpt{20.74}
  829.  \def\@xxvpt{24.88}
  830.  \define@mathsizes{5}{5}{5}
  831.  \define@mathsizes{6}{5}{5}
  832.  \define@mathsizes{7}{5}{5}
  833.  \define@mathsizes{8}{6}{5}
  834.  \define@mathsizes{9}{6}{5}
  835.  \define@mathsizes{\@xpt}{7}{5}
  836.  \define@mathsizes{\@xipt}{8}{6}
  837.  \define@mathsizes{\@xiipt}{8}{6}
  838.  \define@mathsizes{\@xivpt}{\@xpt}{7}
  839.  \define@mathsizes{\@xviipt}{\@xiipt}{\@xpt}
  840.  \define@mathsizes{\@xxpt}{\@xivpt}{\@xiipt}
  841.  \define@mathsizes{\@xxvpt}{\@xxpt}{\@xviipt}
  842.  
  843. \def\filename{latint}
  844. \def\fileversion{v2.0d}
  845. \def\filedate{93/05/06}
  846. \def\docdate {93/03/18}
  847.  
  848.  
  849. \immediate\write\sixt@@n{File: `latint' \space\space
  850.  \@spaces\fileversion\space <\filedate>  (FMi and RmS)}
  851. \immediate\write\sixt@@n{English Documentation
  852.  \@spaces\space <\docdate>  (FMi and RmS)}
  853. \newif\if@tempswa
  854. \def\in@#1#2{%
  855.  \def\in@@##1#1##2##3\in@@{%
  856.   \ifx\in@##2\in@false\else\in@true\fi}%
  857.  \in@@#2#1\in@\in@@}
  858. \newif\ifin@
  859. \let\version@list=\@empty
  860. \def\@gobblefour#1#2#3#4{}
  861. \def\newmathalphabet{%
  862.   \warn@rel@i\newmathalphabet\DeclareMathAlphabet
  863.   \@ifstar\newmathalphabet@@@
  864.           \newmathalphabet@@}
  865. \def\newmathalphabet@@#1{\DeclareMathAlphabet#1{U}{}{}{}}
  866. \def\newmathalphabet@@@#1#2#3#4{%
  867.        \DeclareMathAlphabet{#1}{U}{#2}{#3}{#4}}
  868. \let\alpha@list\@empty
  869. \def\addtoversion#1#2{%
  870.   \warn@rel@i\addtoversion\SetMathAlphabet
  871.   \SetMathAlphabet#2{#1}{U}}
  872. \count18=-1
  873.  
  874. \def\typeout#1{\begingroup
  875.   \let\protect\string
  876.   \immediate\write\@unused{#1}\endgroup}
  877.  
  878. \def\stepcounter #1{\global\advance\csname c@#1\endcsname\@ne
  879.   \begingroup\let\@elt\@stpelt \csname cl@#1\endcsname\endgroup }
  880.  
  881.  
  882. \long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
  883.   #1\endcsname\relax#2\else#3\fi}
  884.  
  885. \def\@latexerr#1#2{\errmessage{#1}} % during installation of nfss
  886.  
  887. \chardef\@unused=17
  888.  
  889.  
  890. \dimendef\@tempdima=4
  891. \dimendef\@tempdimb=6
  892. \newdimen\@tempdimc
  893.  
  894. \newif\ifrestore@version \restore@versiontrue
  895.  
  896. \def\select@group#1#2#3{\relax\ifmmode
  897.   \begingroup
  898.      \escapechar\m@ne
  899.     \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
  900.     \globaldefs\@ne  \math@fonts
  901.   \endgroup
  902.   \ifrestore@version
  903.      \global\restore@versionfalse
  904.      \xdef\restore@mathversion
  905.           {\expandafter\noexpand\csname mv@\math@version\endcsname
  906.            \global\csname c@mv@\math@version\endcsname
  907.            \number\csname c@mv@\math@version\endcsname\relax}%
  908.      \aftergroup\dorestore@version
  909.   \fi
  910.   \xdef#1{\noexpand\use@mathgroup\noexpand#2%
  911.           {\number\csname c@mv@\math@version\endcsname}}%
  912.   \stepcounter{mv@\math@version}%
  913.  \else \expandafter\non@alpherr\fi
  914.  #1}
  915.  
  916. \def\non@alpherr#1{\@latexerr{%
  917.     \expandafter\@leftmark\string#1 allowed only in math mode}\@ehd}
  918.  
  919. \def\dorestore@version
  920.  {\ifmmode
  921.     \aftergroup\dorestore@version
  922.   \else
  923.     \global\restore@versiontrue
  924.     \begingroup
  925.       \let\getanddefine@fonts\@gobbletwo
  926.       \restore@mathversion
  927.     \endgroup
  928.   \fi}%
  929.  
  930. \def\document@select@group#1#2#3{\relax\ifmmode
  931.   \begingroup
  932.      \escapechar\m@ne
  933.     \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
  934.     \globaldefs\@ne  \math@fonts
  935.   \endgroup
  936.   \expandafter\extract@alph@from@version
  937.       \csname mv@\math@version\expandafter\endcsname
  938.       \expandafter{\number\csname
  939.                     c@mv@\math@version\endcsname}%
  940.        #1%
  941.   \stepcounter{mv@\math@version}%
  942.   \else \expandafter\non@alpherr\fi
  943.   #1}
  944.  
  945. \def\process@table{%
  946.     \def\cdp@elt##1##2##3##4{%
  947.         \font@log{Check substitution defaults for
  948.                   ##1/##2/##3/##4}%
  949.         \expandafter
  950.         \ifx\csname##1/##2/##3/##4\endcsname\relax
  951.           \begingroup
  952.            \def\f@encoding{##1}\def\f@family{##2}%
  953.            \try@load@fontshape
  954.           \endgroup
  955.         \fi
  956.         \expandafter
  957.         \ifx\csname##1/##2/##3/##4\endcsname\relax
  958.              \errhelp{For encoding scheme ##1 the defaults
  959.                       ##2/##3/##4 do not form a valid font shape}%
  960.              \errmessage{This NFSS system isn't set up properly.}%
  961.         \else
  962.              \font@log{... okay}%
  963.         \fi}%
  964.     \cdp@list
  965.     \begingroup
  966.        \escapechar\m@ne
  967.        \error@fontshape
  968.        \expandafter\ifx\csname \curr@fontshape\endcsname\relax
  969.   \begingroup
  970.     \try@load@fontshape
  971.    \endgroup
  972.        \fi
  973.        \expandafter\ifx\csname \curr@fontshape\endcsname\relax
  974.  \errhelp{The sytem maintainer forgot to specify a suitable
  975.   substitution
  976.   font shape using the \noexpand\DeclareErrorFont
  977.   command}%
  978.  \errmessage{This NFSS system isn't set up properly}%
  979.        \fi
  980.     \endgroup
  981.     \let\select@group\document@select@group
  982.     \fontencoding{\encodingdefault}%
  983.     \fontfamily{\familydefault}%
  984.     \fontseries{\seriesdefault}%
  985.     \fontshape{\shapedefault}%
  986.     \begingroup
  987.      \def\do##1{\global\let##1\@notprerr}%
  988.      \do\@@DeclareMathDelimiter
  989.      \do\@DeclareMathDelimiter
  990.      \do\DeclareFontEncoding
  991.      \do\DeclareFontEncoding@
  992.      \do\DeclareFontEncodingDefaults
  993.      \do\DeclareFontSubstitution
  994.      \do\DeclareErrorFont
  995.      \do\DeclareMathAccent
  996.      \do\DeclareMathAlphabet
  997.      \do\DeclareMathDelimiter
  998.      \do\DeclareMathRadical
  999.      \do\DeclareMathSymbol
  1000.      \do\DeclareMathVersion
  1001.      \do\DeclarePreloadSizes
  1002.      \do\DeclareSizeFunction
  1003.      \do\DeclareSymbolFont
  1004.      \do\DeclareSymbolFontAlphabet
  1005.      \do\SetMathAlphabet
  1006.      \do\SetMathAlphabet@
  1007.      \do\SetSymbolFont
  1008.      \do\SetSymbolFont@
  1009.      \do\alpha@elt
  1010.      \do\alpha@list
  1011.      \do\cdp@elt
  1012.      \do\cdp@list
  1013.      \do\define@mathsizes
  1014.      \do\define@nomathsize
  1015.      \do\dorestore@version
  1016.      \do\get@cdp
  1017.      \do\group@elt
  1018.      \do\group@list
  1019.      \do\ifrestore@version
  1020.      \do\mathchar@type
  1021.      \do\new@mathalphabet
  1022.      \do\new@mathgroup
  1023.      \do\new@mathversion
  1024.      \do\new@symbolfont
  1025.      \do\process@table
  1026.      \do\restore@mathversion
  1027.      \do\restore@versionfalse
  1028.      \do\restore@versiontrue
  1029.      \do\set@@mathdelimiter
  1030.      \do\set@mathaccent
  1031.      \do\set@mathchar
  1032.      \do\set@mathchar
  1033.      \do\set@mathdelimiter
  1034.      \do\set@mathradical
  1035.      \do\set@mathsymbol
  1036.      \do\set@mathsymbol
  1037.      \do\version@elt
  1038.      \do\version@list
  1039.      \do\addtoversion
  1040.      \do\default@mextra
  1041.      \do\define@mathalphabet
  1042.      \do\define@mathgroup
  1043.      \do\extra@def
  1044.      \do\new@fontshape
  1045.      \do\newmathalphabet
  1046.      \do\newmathalphabet@@
  1047.      \do\newmathalphabet@@@
  1048.      \do\preload@sizes
  1049.      \do\scan@fontshape
  1050.      \do\scan@@fontshape
  1051.      \do\subst@fontshape
  1052.  \endgroup
  1053.  \everyjob{}%
  1054. }
  1055.  
  1056. \def\DeclareMathVersion#1{%
  1057.   \expandafter\new@mathversion\csname mv@#1\endcsname}
  1058.  
  1059. \def\new@mathversion#1{%
  1060.   \expandafter\in@\expandafter#1\expandafter{\version@list}%
  1061.   \ifin@
  1062.     \font@warning{Redeclaring math version
  1063.                `\expandafter\@gobblefour\string#1'}%
  1064.   \else
  1065.     \global\expandafter\newcount\csname c@\expandafter
  1066.                                 \@gobble\string#1\endcsname
  1067.     \def\version@elt{\noexpand\version@elt\noexpand}%
  1068.     \edef\version@list{\version@list\version@elt#1}%
  1069.   \fi
  1070.   \toks@{}%
  1071.   \count@\z@
  1072.   \def\group@elt##1##2{%
  1073.        \advance\count@\@ne
  1074.        \addto@hook\toks@{\getanddefine@fonts##1##2}%
  1075.        }%
  1076.   \group@list
  1077.   \global\csname c@\expandafter\@gobble\string#1\endcsname\count@
  1078.   \def\alpha@elt##1##2##3{%
  1079.        \ifx##2\no@alphabet@error
  1080.  \toks@\expandafter{\the\toks@\install@mathalphabet##1%
  1081.      {\no@alphabet@error##1}}%
  1082.        \else
  1083.  \toks@\expandafter{\the\toks@\install@mathalphabet##1%
  1084.      {\select@group##1##2##3}}%
  1085.        \fi
  1086.           }%
  1087.   \alpha@list
  1088.   \xdef#1{\the\toks@}%
  1089. }
  1090.  
  1091. \def\DeclareSymbolFont#1#2#3#4#5{%
  1092.  \@tempswafalse
  1093.  \edef\@tempb{#2}%
  1094.  \def\cdp@elt##1##2##3##4{\def\@tempc{##1}%
  1095.       \ifx\@tempb\@tempc \@tempswatrue\fi}%
  1096.  \cdp@list
  1097.  \if@tempswa
  1098.    \@ifundefined{sym#1}{%
  1099.       \expandafter\new@mathgroup\csname sym#1\endcsname
  1100.       \expandafter\new@symbolfont\csname sym#1\endcsname
  1101.                         {#2}{#3}{#4}{#5}}%
  1102.      {%
  1103.       \font@warning{Redeclaring symbol font `#1'}%
  1104.       \def\group@elt##1##2{%
  1105.           \expandafter\ifx\csname sym#1\endcsname##1%
  1106.                \expandafter\addto@hook\expandafter
  1107.                   \toks@\expandafter{\expandafter\group@elt
  1108.                   \expandafter##1\csname#2/#3/#4/#5\endcsname}%
  1109.              \else
  1110.                \addto@hook\toks@{\group@elt##1##2}%
  1111.              \fi
  1112.           }%
  1113.       \toks@{}%
  1114.       \group@list
  1115.       \def\version@elt##1{%
  1116.           \expandafter
  1117.           \SetSymbolFont@\expandafter##1\csname#2/#3/#4/#5\expandafter
  1118.               \endcsname \csname sym#1\endcsname
  1119.           }%
  1120.       \version@list
  1121.      }%
  1122.   \else
  1123.     \@latexerr{Encoding scheme  `#2' unknown}\@eha
  1124.   \fi
  1125.   }
  1126. \let\group@list\@empty
  1127.  
  1128. \def\new@symbolfont#1#2#3#4#5{%
  1129.     \toks@\expandafter{\group@list}%
  1130.     \edef\group@list{\the\toks@\noexpand\group@elt\noexpand#1%
  1131.                      \expandafter\noexpand\csname#2/#3/#4/#5\endcsname}%
  1132.     \def\version@elt##1{\toks@\expandafter{##1}%
  1133.                    \edef##1{\the\toks@\noexpand\getanddefine@fonts
  1134.                    #1\expandafter\noexpand\csname#2/#3/#4/#5\endcsname}%
  1135.                   \global\advance\csname c@\expandafter
  1136.                                  \@gobble\string##1\endcsname\@ne
  1137.                  }%
  1138.     \version@list
  1139. }
  1140.  
  1141. \def\SetSymbolFont#1#2#3#4#5#6{%
  1142.  \@tempswafalse
  1143.  \edef\@tempb{#3}%
  1144.  \def\cdp@elt##1##2##3##4{\def\@tempc{##1}%
  1145.       \ifx\@tempb\@tempc \@tempswatrue\fi}%
  1146.  \cdp@list
  1147.  \if@tempswa
  1148.   \expandafter\SetSymbolFont@
  1149.     \csname mv@#2\expandafter\endcsname\csname#3/#4/#5/#6\expandafter
  1150.     \endcsname \csname sym#1\endcsname
  1151.  \else
  1152.   \@latexerr{Encoding scheme  `#3' unknown}\@eha
  1153.  \fi
  1154. }
  1155.  
  1156. \def\SetSymbolFont@#1#2#3{%
  1157.   \expandafter\in@\expandafter#1\expandafter{\version@list}%
  1158.   \ifin@
  1159.     \expandafter\in@\expandafter#3\expandafter{\group@list}%
  1160.     \ifin@
  1161.       \begingroup
  1162.         \expandafter\get@cdp\string#2\@nil\@tempa
  1163. \toks@{}%
  1164.         \def\install@mathalphabet##1##2{%
  1165.      \addto@hook\toks@{\install@mathalphabet##1{##2}}%
  1166.             }%
  1167. \def\getanddefine@fonts##1##2{%
  1168.   \ifnum##1=#3%
  1169.      \addto@hook\toks@{\getanddefine@fonts#3#2}%
  1170.              \expandafter\get@cdp\string##2\@nil\@tempb
  1171.              \ifx\@tempa\@tempb\else
  1172.                 \font@warning{Encoding `\@tempa' has changed
  1173.                     to `\@tempb' for symbol font\f@warn@break
  1174.                    `\expandafter\@gobblefour\string#3' in the
  1175.                     math version `\expandafter
  1176.                     \@gobblefour\string#1'}%
  1177.              \fi
  1178.      \font@log{%
  1179. Overwriting symbol font
  1180. `\expandafter\@gobblefour\string#3' in
  1181.  version `\expandafter
  1182. \@gobblefour\string#1'\f@warn@break
  1183.                 \@spaces \expandafter\@gobble\string##2 -->
  1184.                          \expandafter\@gobble\string#2}%
  1185.   \else
  1186.      \addto@hook\toks@{\getanddefine@fonts##1##2}%
  1187.   \fi}%
  1188.  #1%
  1189.  \xdef#1{\the\toks@}%
  1190.       \endgroup
  1191.     \else
  1192.        \@latexerr{Symbol font `\expandafter\@gobblefour\string#3'
  1193.                   not defined}\@eha
  1194.     \fi
  1195.   \else
  1196.     \@latexerr{Math version `\expandafter\@gobblefour\string#1' is not
  1197.        defined}{You probably mispelled the name of the math
  1198.        version.^^JOr you have to specify another document
  1199.        style option^^Jin the \string\documentstyle\space
  1200.        command.}%
  1201.   \fi
  1202. }
  1203.  
  1204. \def\get@cdp#1#2/#3\@nil#4{\def#4{#2}}
  1205.  
  1206. \def\DeclareMathAlphabet#1#2#3#4#5{%
  1207.  \@tempswafalse
  1208.  \edef\@tempb{#2}%
  1209.  \def\cdp@elt##1##2##3##4{\def\@tempc{##1}%
  1210.       \ifx\@tempb\@tempc \@tempswatrue\fi}%
  1211.  \cdp@list
  1212.  \if@tempswa
  1213.    \ifx#1\undefined
  1214.       \new@mathalphabet#1{#2}{#3}{#4}{#5}%
  1215.    \else
  1216.      \edef\@tempa{\noexpand\in@{\string\select@group}%
  1217.          {\expandafter\meaning\csname @\expandafter
  1218.           \@gobble\string#1\endcsname}}%
  1219.      \@tempa
  1220.      \ifin@
  1221.        \font@warning{Redeclaring math alphabet \string#1}%
  1222.        \def\version@elt##1{%
  1223.          \expandafter\SetMathAlphabet@\expandafter
  1224.             ##1\csname#2/#3/#4/#5\expandafter\endcsname
  1225.             \csname M@#3\expandafter\endcsname
  1226.             \csname @\expandafter\@gobble\string#1\endcsname#1}%
  1227.        \version@list
  1228.      \else
  1229.        \edef\@tempa{\noexpand\in@{\string\use@mathgroup}%
  1230.          {\expandafter\meaning\csname @\expandafter
  1231.           \@gobble\string#1\endcsname}}%
  1232.        \@tempa
  1233.        \ifin@
  1234.          \font@warning{Redeclaring math alphabet \string#1}%
  1235.          \new@mathalphabet#1{#2}{#3}{#4}{#5}%
  1236.        \else
  1237.          \@latexerr{Command `\string#1' already defined}\@eha
  1238.        \fi
  1239.      \fi
  1240.   \fi
  1241.  \else
  1242.   \@latexerr{Encoding scheme  `#2' unknown}\@eha
  1243.  \fi
  1244.   }
  1245.  
  1246. \def\new@mathalphabet#1#2#3#4#5{%
  1247.     \toks@\expandafter{\alpha@list}%
  1248.     \edef#1{\expandafter\noexpand\csname @\expandafter
  1249.             \@gobble\string#1\endcsname
  1250.             \if/#5/%
  1251.                \noexpand\no@alphabet@error
  1252.                \noexpand\no@alphabet@error
  1253.             \else
  1254.                \expandafter\noexpand\csname M@#2\endcsname
  1255.                \expandafter\noexpand\csname#2/#3/#4/#5\endcsname
  1256.             \fi
  1257.            }%
  1258.     \toks2\expandafter{#1}%
  1259.     \edef\alpha@list{\the\toks@\noexpand\alpha@elt\the\toks2}%
  1260.     \def\version@elt##1{\toks@\expandafter{##1}%
  1261.                    \edef##1{\the\toks@\install@mathalphabet
  1262.                             \expandafter\noexpand
  1263.                             \csname @\expandafter\@gobble
  1264.                                \string#1\endcsname
  1265.                            {\if/#5/%
  1266.                              \noexpand\no@alphabet@error
  1267.                              \noexpand#1%
  1268.                             \else
  1269.                              \noexpand\select@group\the\toks2
  1270.                             \fi}}%
  1271.                  }%
  1272.     \version@list
  1273.     \expandafter\edef\csname @\expandafter\@gobble
  1274.                 \string#1\endcsname{\if/#5/%
  1275.               \noexpand\no@alphabet@error
  1276.               \noexpand#1%
  1277.             \else
  1278.               \noexpand\select@group\the\toks2
  1279.             \fi}%
  1280.     \edef#1{\noexpand\protect
  1281.             \expandafter\noexpand\csname @\expandafter
  1282.             \@gobble\string#1\endcsname}%
  1283. }
  1284.  
  1285. \def\no@alphabet@error#1{\relax \ifmmode
  1286.     \errhelp\no@alphabet@help
  1287.     \errmessage{Math alphabet identifier \noexpand#1is undefined
  1288.                 in math version `\math@version'.} \fi}
  1289.  
  1290. \let\alpha@list\@empty
  1291.  
  1292. \def\SetMathAlphabet#1#2#3#4#5#6{%
  1293.  \@tempswafalse
  1294.  \edef\@tempb{#3}%
  1295.  \def\cdp@elt##1##2##3##4{\def\@tempc{##1}%
  1296.       \ifx\@tempb\@tempc \@tempswatrue\fi}%
  1297.  \cdp@list
  1298.  \if@tempswa
  1299.   \expandafter\SetMathAlphabet@
  1300.     \csname mv@#2\expandafter\endcsname\csname#3/#4/#5/#6\expandafter
  1301.     \endcsname \csname M@#3\expandafter\endcsname
  1302.     \csname @\expandafter\@gobble\string#1\endcsname#1%
  1303.  \else
  1304.   \@latexerr{Encoding scheme  `#3' unknown}\@eha
  1305.  \fi
  1306. }
  1307.  
  1308. \def\SetMathAlphabet@#1#2#3#4#5{%
  1309.   \expandafter\in@\expandafter#1\expandafter{\version@list}%
  1310.   \ifin@
  1311.     \expandafter\in@\expandafter#4\expandafter{\alpha@list}%
  1312.     \ifin@
  1313.       \begingroup
  1314. \toks@{}%
  1315.         \def\getanddefine@fonts##1##2{%
  1316.      \addto@hook\toks@{\getanddefine@fonts##1##2}%
  1317.             }%
  1318.         \def\@tempc##1##2##3##4{%                % for message below
  1319.             \expandafter\@gobble\string##4}
  1320. \def\install@mathalphabet##1##2{%
  1321.   \ifx##1#4%
  1322.      \addto@hook\toks@{\install@mathalphabet#4{\select@group#4#3#2}}%
  1323.              \font@log{Overwriting math alphabet
  1324.            `\string#5' in version `\expandafter
  1325.          \@gobblefour\string#1'\f@warn@break
  1326.                  \@spaces \@tempc##2 -->
  1327.                         \expandafter\@gobble\string#2}%
  1328.   \else
  1329.      \addto@hook\toks@{\install@mathalphabet##1{##2}}%
  1330.   \fi
  1331.           }%
  1332.         #1%
  1333.         \xdef#1{\the\toks@}%
  1334.       \endgroup
  1335.     \else
  1336.        \edef\@tempa{\noexpand\in@{\string\use@mathgroup}{\meaning#4}}%
  1337.        \@tempa
  1338.        \ifin@
  1339.          \def\@tempb##1##2##3{\def\@tempb{##3}\def\@tempc{##2}}%
  1340.          \expandafter\@tempb#4%
  1341.          \begingroup
  1342.            \def\install@mathalphabet##1##2{%
  1343.        \addto@hook\toks@{\install@mathalphabet##1{##2}}%
  1344.                }%
  1345.     \def\getanddefine@fonts##1##2{%
  1346.               \addto@hook\toks@{\getanddefine@fonts##1##2}%
  1347.       \ifnum##1=\@tempb
  1348.                  \expandafter
  1349.                  \addto@hook\expandafter\toks@
  1350.                  \expandafter{\expandafter\install@mathalphabet
  1351.                  \expandafter#4\expandafter
  1352.                        {\expandafter\select@group\expandafter
  1353.                          #4\@tempc##2}}%
  1354.               \fi
  1355.                       }%
  1356.            \def\version@elt##1{%
  1357.                \toks@{}%
  1358.                ##1%
  1359.        \xdef##1{\the\toks@}%
  1360.               }%
  1361.            \version@list
  1362.          \endgroup
  1363.          \expandafter\gdef\expandafter\alpha@list\expandafter
  1364.              {\alpha@list
  1365.               \alpha@elt #4\no@alphabet@error \no@alphabet@error}%
  1366.          \gdef#4{\no@alphabet@error #5}% fake things :-)
  1367.          \SetMathAlphabet@{#1}{#2}{#3}#4#5%
  1368.        \else
  1369.          \@latexerr{Command `\string#5' not defined as a math alphabet}%
  1370.             {Use \noexpand\DeclareMathAlphabet to define it.}%
  1371.        \fi
  1372.     \fi
  1373.   \else
  1374.     \@latexerr{Math version `\expandafter\@gobblefour\string#1' is not
  1375.        defined}{You probably mispelled the name of the math
  1376.        version.^^JOr you have to specify another document
  1377.        style option^^Jin the \string\documentstyle\space
  1378.        command.}%
  1379.   \fi
  1380. }
  1381.  
  1382.  
  1383. \def\DeclareMathAccent#1#2#3#4{%
  1384.   \expandafter\in@\csname sym#3\expandafter\endcsname
  1385.      \expandafter{\group@list}%
  1386.   \ifin@
  1387.     \begingroup
  1388.       \uppercase{\count\z@=#4}%
  1389.       \count\tw@\count\z@
  1390.       \divide\count\z@\sixt@@n
  1391.       \count@\count\z@
  1392.       \multiply\count@\sixt@@n
  1393.       \advance\count\tw@-\count@
  1394.       \if\relax\noexpand#1% is command?
  1395. \edef\@tempa{\noexpand\in@{\string\mathaccent}{\meaning#1}}%
  1396. \@tempa
  1397. \ifin@
  1398.   \expandafter\set@mathaccent
  1399.      \csname sym#3\endcsname#1#2%
  1400.      {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1401.   \font@log{Redeclaring math accent \string#1}%
  1402. \else
  1403.   \ifx#1\undefined
  1404.     \expandafter\set@mathaccent
  1405.        \csname sym#3\endcsname#1#2%
  1406.        {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1407.   \else
  1408.     \@latexerr{Command `\string#1' already defined}\@eha
  1409.   \fi
  1410. \fi
  1411.       \else
  1412.        \@latexerr{Not a command name: `\noexpand#1'}\@eha
  1413.       \fi
  1414.     \endgroup
  1415.   \else
  1416.     \@latexerr{Symbol font `#3' is not defined}\@eha
  1417.   \fi
  1418. }
  1419.  
  1420. \def\set@mathaccent#1#2#3#4{%
  1421.   \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
  1422.  
  1423. \def\DeclareMathSymbol#1#2#3#4{%
  1424.   \expandafter\in@\csname sym#3\expandafter\endcsname
  1425.      \expandafter{\group@list}%
  1426.   \ifin@
  1427.     \begingroup
  1428.       \uppercase{\count\z@=#4}%
  1429.       \count\tw@\count\z@
  1430.       \divide\count\z@\sixt@@n
  1431.       \count@\count\z@
  1432.       \multiply\count@\sixt@@n
  1433.       \advance\count\tw@-\count@
  1434.       \if\relax\noexpand#1% is command?
  1435. \edef\@tempa{\noexpand\in@{\string\mathchar}{\meaning#1}}%
  1436. \@tempa
  1437. \ifin@
  1438.   \expandafter\set@mathsymbol
  1439.      \csname sym#3\endcsname#1#2%
  1440.      {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1441.   \font@log{Redeclaring math symbol \string#1}%
  1442. \else
  1443.   \ifx#1\undefined
  1444.     \expandafter\set@mathsymbol
  1445.        \csname sym#3\endcsname#1#2%
  1446.        {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1447.   \else
  1448.     \@latexerr{Command `\string#1' already defined}\@eha
  1449.   \fi
  1450. \fi
  1451.       \else
  1452.         \expandafter\set@mathchar
  1453.   \csname sym#3\endcsname#1#2
  1454.   {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1455.       \fi
  1456.     \endgroup
  1457.   \else
  1458.     \@latexerr{Symbol font `#3' is not defined}\@eha
  1459.   \fi
  1460. }
  1461.  
  1462. \def\set@mathchar#1#2#3#4{%
  1463.   \global\mathcode`#2="\mathchar@type#3\hexnumber@#1#4\relax}
  1464.  
  1465. \def\set@mathsymbol#1#2#3#4{%
  1466.   \global\mathchardef#2"\mathchar@type#3\hexnumber@#1#4\relax}
  1467.  
  1468.  
  1469.  
  1470. \def\DeclareMathDelimiter#1{%
  1471.    \if\relax\noexpand#1%
  1472.       \def\next{\@DeclareMathDelimiter#1}%
  1473.    \else
  1474.       \def\next{\@@DeclareMathDelimiter#1}%
  1475.    \fi
  1476.    \next
  1477. }
  1478.  
  1479. \def\@DeclareMathDelimiter#1#2#3#4#5#6{%
  1480.   \expandafter\in@\csname sym#3\expandafter\endcsname
  1481.      \expandafter{\group@list}%
  1482.   \ifin@
  1483.     \expandafter\in@\csname sym#5\expandafter\endcsname
  1484.        \expandafter{\group@list}%
  1485.     \ifin@
  1486.       \begingroup
  1487. \uppercase{\count\z@=#4}%
  1488. \count\tw@\count\z@
  1489. \divide\count\z@\sixt@@n
  1490. \count@\count\z@
  1491. \multiply\count@\sixt@@n
  1492. \advance\count\tw@-\count@
  1493. \edef\@tempc{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1494.       %
  1495. \uppercase{\count\z@=#6}%
  1496. \count\tw@\count\z@
  1497. \divide\count\z@\sixt@@n
  1498. \count@\count\z@
  1499. \multiply\count@\sixt@@n
  1500. \advance\count\tw@-\count@
  1501. \edef\@tempd{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1502.       %
  1503. \edef\@tempa{\noexpand\in@{\string\delimiter}{\meaning#1}}%
  1504. \@tempa
  1505. \ifin@
  1506.   \expandafter\set@mathdelimiter
  1507.      \csname sym#3\expandafter\endcsname\csname sym#5\endcsname#1#2%
  1508.      \@tempc\@tempd
  1509.   \font@log{Redeclaring math delimiter \string#1}%
  1510. \else
  1511.   \ifx#1\undefined
  1512.     \expandafter\set@mathdelimiter
  1513.       \csname sym#3\expandafter\endcsname\csname sym#5\endcsname#1#2%
  1514.       \@tempc\@tempd
  1515.   \else
  1516.     \@latexerr{Command `\string#1' already defined}\@eha
  1517.   \fi
  1518. \fi
  1519.       \endgroup
  1520.     \else
  1521.       \@latexerr{Symbol font `#5' is not defined}\@eha
  1522.     \fi
  1523.   \else
  1524.     \@latexerr{Symbol font `#3' is not defined}\@eha
  1525.   \fi
  1526. }
  1527.  
  1528. \def\@@DeclareMathDelimiter#1#2#3#4#5{%
  1529.   \expandafter\in@\csname sym#2\expandafter\endcsname
  1530.      \expandafter{\group@list}%
  1531.   \ifin@
  1532.     \expandafter\in@\csname sym#4\expandafter\endcsname
  1533.        \expandafter{\group@list}%
  1534.     \ifin@
  1535.       \begingroup
  1536. \uppercase{\count\z@=#3}%
  1537. \count\tw@\count\z@
  1538. \divide\count\z@\sixt@@n
  1539. \count@\count\z@
  1540. \multiply\count@\sixt@@n
  1541. \advance\count\tw@-\count@
  1542. \edef\@tempc{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1543.       %
  1544. \uppercase{\count\z@=#5}%
  1545. \count\tw@\count\z@
  1546. \divide\count\z@\sixt@@n
  1547. \count@\count\z@
  1548. \multiply\count@\sixt@@n
  1549. \advance\count\tw@-\count@
  1550. \edef\@tempd{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1551. \expandafter\set@@mathdelimiter
  1552.    \csname sym#2\expandafter\endcsname\csname sym#4\endcsname#1%
  1553.    \@tempc\@tempd
  1554.       \endgroup
  1555.     \else
  1556.       \@latexerr{Symbol font `#4' is not defined}\@eha
  1557.     \fi
  1558.   \else
  1559.     \@latexerr{Symbol font `#2' is not defined}\@eha
  1560.   \fi
  1561. }
  1562.  
  1563. \def\set@mathdelimiter#1#2#3#4#5#6{%
  1564.   \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5%
  1565.                                      \hexnumber@#2#6\relax}}
  1566.  
  1567. \def\set@@mathdelimiter#1#2#3#4#5{%
  1568.   \global\delcode`#3="\hexnumber@#1#4\hexnumber@#2#5\relax}
  1569.  
  1570. \def\DeclareMathRadical#1#2#3#4#5{%
  1571.   \edef\@tempa{\noexpand\in@{\string\radical}{\meaning#1}}%
  1572.   \@tempa
  1573.   \ifin@
  1574.     \expandafter\in@\csname sym#2\expandafter\endcsname
  1575.        \expandafter{\group@list}%
  1576.     \ifin@
  1577.       \expandafter\in@\csname sym#4\expandafter\endcsname
  1578.  \expandafter{\group@list}%
  1579.       \ifin@
  1580.         \begingroup
  1581.   \uppercase{\count\z@=#3}%
  1582.   \count\tw@\count\z@
  1583.   \divide\count\z@\sixt@@n
  1584.   \count@\count\z@
  1585.   \multiply\count@\sixt@@n
  1586.   \advance\count\tw@-\count@
  1587.   \edef\@tempc{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1588.   \uppercase{\count\z@=#5}%
  1589.   \count\tw@\count\z@
  1590.   \divide\count\z@\sixt@@n
  1591.   \count@\count\z@
  1592.   \multiply\count@\sixt@@n
  1593.   \advance\count\tw@-\count@
  1594.   \edef\@tempd{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  1595.   \expandafter\set@mathradical
  1596.      \csname sym#2\expandafter\endcsname
  1597.              \csname sym#4\endcsname#1%
  1598.      \@tempc\@tempd
  1599.         \endgroup
  1600.       \else
  1601. \@latexerr{Symbol font `#4' is not defined}\@eha
  1602.       \fi
  1603.     \else
  1604.       \@latexerr{Symbol font `#2' is not defined}\@eha
  1605.     \fi
  1606.   \else
  1607.     \@latexerr{Command `\string#1' already defined}\@eha
  1608.   \fi
  1609. }
  1610.  
  1611. \def\set@mathradical#1#2#3#4#5{%
  1612.   \xdef#3{\delimiter"\hexnumber@#1#4\hexnumber@#2#5\relax}}
  1613.  
  1614. \let\mathalpha\relax % just a dummy currently
  1615.  
  1616. \def\mathchar@type#1{%
  1617.   \ifodd 2#11 #1\else             % is this non-negative number?
  1618.     \ifx#1\mathord 0\else
  1619.      \ifx#1\mathop   1\else
  1620.        \ifx#1\mathbin 2\else
  1621.  \ifx#1\mathrel 3\else
  1622.    \ifx#1\mathopen 4\else
  1623.      \ifx#1\mathclose 5\else
  1624.        \ifx#1\mathpunct 6\else
  1625.    7%                     % anything else is variable ord
  1626.        \fi
  1627.      \fi
  1628.    \fi
  1629.  \fi
  1630.        \fi
  1631.      \fi
  1632.     \fi
  1633.   \fi}
  1634.  
  1635. \def\DeclareSymbolFontAlphabet#1#2{%
  1636.    \expandafter\DeclareSymbolFontAlphabet@
  1637.      \csname @\expandafter\@gobble\string#1\endcsname{#2}#1}
  1638.  
  1639. \def\DeclareSymbolFontAlphabet@#1#2#3{%
  1640.     \@tempswatrue
  1641.   \expandafter\in@\csname sym#2\expandafter\endcsname
  1642.      \expandafter{\group@list}%
  1643.   \ifin@
  1644.     \expandafter\in@\expandafter#1\expandafter{\alpha@list}%
  1645.     \ifin@
  1646.       \font@warning{Redeclaring math alphabet \string#3}%
  1647.       \toks@{}%
  1648.       \def\alpha@elt##1##2##3{%
  1649.           \ifx##1#1\else\addto@hook\toks@{\alpha@elt##1##2##3}\fi}%
  1650.       \alpha@list
  1651.       \xdef\alpha@list{\the\toks@}%
  1652.       \def\version@elt##1{%
  1653.           \begingroup
  1654.     \toks@{}%
  1655.             \def\getanddefine@fonts####1####2{%
  1656.                \addto@hook\toks@{\getanddefine@fonts####1####2}}%
  1657.             \def\install@mathalphabet####1####2{%
  1658.                \ifx####1#1\else
  1659.                  \addto@hook\toks@{\install@mathalphabet
  1660.                                     ####1{####2}}\fi}%
  1661.     ##1%
  1662.             \xdef##1{\the\toks@}%
  1663.           \endgroup
  1664.           }%
  1665.       \version@list
  1666.     \else
  1667.       \ifx#3\undefined
  1668.       \else
  1669. \edef\@tempa{\noexpand\in@{\string\use@mathgroup}{\meaning#1}}%
  1670. \@tempa
  1671. \ifin@
  1672.           \font@warning{Redeclaring math alphabet \string#3}%
  1673.         \else
  1674.           \@tempswafalse
  1675.           \@latexerr{Command `\string#3' already defined}\@eha
  1676.         \fi
  1677.       \fi
  1678.     \fi
  1679.    \else
  1680.      \@tempswafalse
  1681.      \@latexerr{Unknown symbol font `#2'}\@eha
  1682.    \fi
  1683.    \if@tempswa
  1684.      \def\group@elt##1##2{%
  1685. \expandafter\ifx\csname sym#2\endcsname##1%
  1686. \expandafter\@tempa\string##2\@nil
  1687. \fi}%
  1688.      \def\@tempa##1##2/##3\@nil{%
  1689. \def\@tempa{##2}}%
  1690.      \group@list
  1691.      \edef#1{\noexpand\use@mathgroup
  1692.      \expandafter\noexpand\csname M@\@tempa\endcsname
  1693.      \csname sym#2\endcsname}%
  1694.      \def#3{\protect#1}%
  1695.    \fi
  1696. }
  1697. \def\filename{lfonts}
  1698. \def\fileversion{v2.0c}
  1699. \def\filedate{93/07/16}
  1700. \def\docdate {93/07/16}
  1701.  
  1702.  
  1703. %% File `lfonts.dtx'.
  1704. %% Copyright (C) 1989-1993 Frank Mittelbach and Rainer Sch\"opf,
  1705. %% all rights reserved.
  1706. \immediate\write\sixt@@n{File:
  1707.          `lfonts' \space\space
  1708.  \@spaces\fileversion\space <\filedate> (FMi and RmS)}
  1709. \immediate\write\sixt@@n{English Documentation
  1710.              \@spaces\space  <\docdate> (FMi and RmS)}
  1711.  \input fontdef.tex
  1712.  \input preload.tex
  1713. \let\p@fontfamily=\fontfamily
  1714. \def\fontfamily{\protect\p@fontfamily}
  1715. \let\p@fontencoding=\fontencoding
  1716. \def\fontencoding{\protect\p@fontencoding}
  1717. \let\p@fontseries=\fontseries
  1718. \def\fontseries{\protect\p@fontseries}
  1719. \let\p@fontshape=\fontshape
  1720. \def\fontshape{\protect\p@fontshape}
  1721. \let\p@fontsize=\fontsize
  1722. \def\fontsize{\protect\p@fontsize}
  1723. \let\p@selectfont=\selectfont
  1724. \def\selectfont{\protect\p@selectfont}
  1725. \let\p@mathversion=\mathversion
  1726. \def\mathversion{\protect\p@mathversion}
  1727. \DeclareMathVersion{normal}
  1728. \DeclareMathVersion{bold}
  1729. \DeclareSymbolFont{operators}{OT1}{cmr}{m}{n}
  1730. \DeclareSymbolFont{letters}{OML}{cmm}{m}{it}
  1731. \DeclareSymbolFont{symbols}{OMS}{cmsy}{m}{n}
  1732. \DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}
  1733.  
  1734. \SetSymbolFont{operators}{bold}{OT1}{cmr}{bx}{n}
  1735. \SetSymbolFont{letters}{bold}{OML}{cmm}{b}{it}
  1736. \font\tenex = cmex10
  1737. \DeclareSymbolFontAlphabet{\mathrm}{operators}
  1738. \DeclareSymbolFontAlphabet{\mathnormal}{letters}
  1739. \DeclareSymbolFontAlphabet{\mathcal}{symbols}
  1740. \def\mit{\warn@rel@i\mit\mathnormal
  1741.          \mathnormal}
  1742. \def\cal{\warn@rel@i\cal\mathcal
  1743.          \mathcal}
  1744. \def\rm{\protect\prm}
  1745. \def\sf{\protect\psf}
  1746. \def\tt{\protect\ptt}
  1747. \def\bf{\protect\pbf}
  1748. \def\sl{\protect\psl}
  1749. \def\sc{\protect\psc}
  1750. \def\it{\protect\pit}
  1751. \def\encodingdefault{OT1}
  1752. \def\familydefault{\rmdefault}
  1753. \def\seriesdefault{\mediumseriesdefault}
  1754. \def\shapedefault{\normalshapedefault}
  1755. \def\rmdefault{cmr}
  1756. \def\sfdefault{cmss}
  1757. \def\ttdefault{cmtt}
  1758. \def\bfdefault{bx}
  1759. \def\itdefault{it}
  1760. \def\sldefault{sl}
  1761. \def\scdefault{sc}
  1762. \def\mediumseriesdefault{m}
  1763. \def\normalshapedefault{n}
  1764. \def\mediumseries{\protect\pmediumseries}
  1765. \def\pmediumseries{\fontseries\mediumseriesdefault\selectfont}
  1766. \def\normalshape{\protect\pnormalshape}
  1767. \def\pnormalshape{\fontshape\normalshapedefault\selectfont}
  1768. \def\boldmath{\@nomath\boldmath
  1769.               \mathversion{bold}}
  1770. \def\unboldmath{\@nomath\unboldmath
  1771.               \mathversion{normal}}
  1772. \def\math@version{normal}
  1773. \def\oldstylenums#1{%
  1774.    {%
  1775.     \spaceskip\fontdimen\tw@\font
  1776.     \usefont{OML}{cmm}{\f@series}{it}%
  1777.     \mathgroup\symletters #1}%
  1778. }
  1779. \def\hexnumber@#1{\ifcase\number#1
  1780.  0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or
  1781.  9\or A\or B\or C\or D\or E\or F\fi}
  1782. \def\operator@font{\mathgroup\symoperators}
  1783. \def\log{\mathop{\operator@font log}\nolimits}
  1784. \def\lg{\mathop{\operator@font lg}\nolimits}
  1785. \def\ln{\mathop{\operator@font ln}\nolimits}
  1786. \def\lim{\mathop{\operator@font lim}}
  1787. \def\limsup{\mathop{\operator@font lim\,sup}}
  1788. \def\liminf{\mathop{\operator@font lim\,inf}}
  1789. \def\sin{\mathop{\operator@font sin}\nolimits}
  1790. \def\arcsin{\mathop{\operator@font arcsin}\nolimits}
  1791. \def\sinh{\mathop{\operator@font sinh}\nolimits}
  1792. \def\cos{\mathop{\operator@font cos}\nolimits}
  1793. \def\arccos{\mathop{\operator@font arccos}\nolimits}
  1794. \def\cosh{\mathop{\operator@font cosh}\nolimits}
  1795. \def\tan{\mathop{\operator@font tan}\nolimits}
  1796. \def\arctan{\mathop{\operator@font arctan}\nolimits}
  1797. \def\tanh{\mathop{\operator@font tanh}\nolimits}
  1798. \def\cot{\mathop{\operator@font cot}\nolimits}
  1799. \def\coth{\mathop{\operator@font coth}\nolimits}
  1800. \def\sec{\mathop{\operator@font sec}\nolimits}
  1801. \def\csc{\mathop{\operator@font csc}\nolimits}
  1802. \def\max{\mathop{\operator@font max}}
  1803. \def\min{\mathop{\operator@font min}}
  1804. \def\sup{\mathop{\operator@font sup}}
  1805. \def\inf{\mathop{\operator@font inf}}
  1806. \def\arg{\mathop{\operator@font arg}\nolimits}
  1807. \def\ker{\mathop{\operator@font ker}\nolimits}
  1808. \def\dim{\mathop{\operator@font dim}\nolimits}
  1809. \def\hom{\mathop{\operator@font hom}\nolimits}
  1810. \def\det{\mathop{\operator@font det}}
  1811. \def\exp{\mathop{\operator@font exp}\nolimits}
  1812. \def\Pr{\mathop{\operator@font Pr}}
  1813. \def\gcd{\mathop{\operator@font gcd}}
  1814. \def\deg{\mathop{\operator@font deg}\nolimits}
  1815.  
  1816. \def\bmod{\mskip-\medmuskip\mkern5mu
  1817.   \mathbin{\operator@font mod}\penalty900\mkern5mu\mskip-\medmuskip}
  1818. \def\pmod#1{\allowbreak\mkern18mu({\operator@font mod}\,\,#1)}
  1819. \def\${{\protect\pdollar}}
  1820. \def\pdollar{\nfss@text{\ifdim \fontdimen\@ne\font >\z@
  1821.               \sl \else \normalshape \fi\char`\$}}
  1822. \def\pounds{{\protect\ppounds}}
  1823. \def\ppounds{\nfss@text{\ifdim \fontdimen\@ne\font >\z@
  1824.     \it \else \fontshape u\selectfont \fi \char'44}}
  1825. \def\nfss@text{\mbox}
  1826.  
  1827. \def\copyright{{\protect\pcopyright}}
  1828. \def\pcopyright{\ooalign{\hfil
  1829.      \raise.07ex\hbox{\mediumseries\normalshape c}\hfil\crcr
  1830.      \mathhexbox20D}}
  1831. \newif\if@twocolumn
  1832. \newif\if@filesw
  1833. \newif\if@specialpage
  1834. \newif \if@twoside
  1835. \ifx\undefined\reset@font
  1836. \errhelp{The
  1837.          LaTeX
  1838.          that you use was released before December 1, 91.^^J^^J%
  1839.          At that time several changes have been introduced into
  1840.          LaTeX and the standard^^Jstyles to support this version of
  1841.          NFSS.^^J^^J%
  1842.          NFSS will probably work with your version but you might
  1843.          encounter problems^^Jin certain situations (most of them are
  1844.          described in the `nfss.bug' file).^^J^^J%
  1845.          Since the new
  1846.          LaTeX
  1847.          release also fix many bugs we suggest
  1848.          that you upgrade^^Jas soon as possible.^^J^^J}
  1849. \errmessage{Old LaTeX version! Type `h'}
  1850. \def\xpt
  1851.  {%
  1852.    \def\@tabclassz{\ifcase \@lastchclass
  1853.           \@acolampacol \or \@ampacol \or
  1854.           \or \or \@addamp \or
  1855.           \@acolampacol \or
  1856.           \@firstampfalse \@acol \fi
  1857.     \edef\@preamble{\@preamble{%
  1858.       \ifcase \@chnum
  1859.         \hfil\ignorespaces\@sharp\unskip\hfil
  1860.        \or \ignorespaces\@sharp\unskip\hfil
  1861.        \or \hfil\hskip\z@
  1862.           \ignorespaces\@sharp\unskip\fi}}}%
  1863.   \def\@ishortstack##1{\halign{\mb@l {####}%
  1864.            \unskip\mb@r\cr ##1\crcr}\egroup}%
  1865.   \def\cases##1{\left\{\,\vcenter{%
  1866.       \normalbaselines\m@th\ialign{%
  1867.          $####\hfil$&\quad{####}\hfil\crcr
  1868.          ##1\crcr}}\right.}%
  1869. \def\document{\endgroup
  1870.   \@colht\textheight  \@colroom\textheight \vsize\textheight
  1871.    \columnwidth\textwidth \@clubpenalty\clubpenalty
  1872.    \if@twocolumn \advance\columnwidth -\columnsep
  1873.       \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
  1874.    \fi
  1875.   \hsize\columnwidth \linewidth\hsize
  1876.   \begingroup\@floatplacement\@dblfloatplacement
  1877.    \makeatletter\let\@writefile\@gobbletwo
  1878.    \@input{\jobname.aux}\endgroup
  1879.   \if@filesw \immediate\openout\@mainaux=\jobname.aux
  1880.     \immediate\write\@mainaux{\relax}\fi
  1881.   \process@table
  1882.   \let\glb@currsize\@empty
  1883.   \def\do####1{\let ####1\@notprerr}%
  1884.   \@preamblecmds
  1885.   \let\do\noexpand
  1886.   \@normalsize
  1887.   \everypar{}}%
  1888.   \def\@begintheorem##1##2{\trivlist
  1889.     \item[\hskip \labelsep{\bf ##1\ ##2}]\it}%
  1890.   \def\@opargbegintheorem##1##2##3{\trivlist
  1891.       \item[\hskip \labelsep{\bf ##1\ ##2\ (##3)}]\it}%
  1892.   \def\@outputpage{\begingroup %\catcode`\ =10
  1893.      \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
  1894.     \if@specialpage
  1895.      \global\@specialpagefalse
  1896.           \csname ps@\@specialstyle\endcsname\fi
  1897.      \if@twoside
  1898.        \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
  1899.             \let\@themargin\oddsidemargin
  1900.           \else \let\@thehead\@evenhead
  1901.           \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
  1902.      \fi\fi
  1903.      \shipout\vbox{%
  1904.            \reset@font
  1905.            \normalsize
  1906.            \baselineskip\z@ \lineskip\z@
  1907.            \let\par\@@par %% 15 Sep 87
  1908.            \vskip \topmargin \moveright\@themargin
  1909.            \vbox{\setbox\@tempboxa
  1910.                    \vbox to\headheight{\vfil \hbox to\textwidth
  1911.                              {\let\label\@gobble \let\index\@gobble
  1912.                               \@thehead}}%% 22 Feb 87
  1913.                  \dp\@tempboxa\z@
  1914.                  \box\@tempboxa
  1915.                  \vskip \headsep
  1916.                  \box\@outputbox
  1917.                  \baselineskip\footskip
  1918.                  \hbox to\textwidth{\let\label\@gobble
  1919.                            \let\index\@gobble  %% 22 Feb 87
  1920.                            \@thefoot}}}\global\@colht\textheight
  1921.            \endgroup\stepcounter{page}\let\firstmark\botmark}%
  1922.     \def\p@LaTeX{L\kern-.36em
  1923.            {\setbox0\hbox{T}%
  1924.             \vbox to\ht0{\hbox{%
  1925.                \csname S@\f@size\endcsname
  1926.                                \math@fontsfalse
  1927.                                \fontsize\sf@size\z@\selectfont
  1928.                                A}%
  1929.                          \vss}%
  1930.            }%
  1931.            \kern-.15em
  1932.            \TeX\@}%
  1933.     \edef\next{\expandafter\@rightmark\the\everyjob}%
  1934.     \everyjob\expandafter{\expandafter
  1935.        \typeout\expandafter{\next\space with NFSS2}%
  1936.        }%
  1937.  \def\xpt{\fontsize{10}{12pt}\selectfont}}
  1938. \else
  1939.  \def\xpt
  1940.    {%
  1941.      \def\p@LaTeX{L\kern-.36em
  1942.            {\setbox0\hbox{T}%
  1943.             \vbox to\ht0{\hbox{%
  1944.                \csname S@\f@size\endcsname
  1945.                                \fontsize\sf@size\z@\selectfont
  1946.                                A}%
  1947.                          \vss}%
  1948.            }%
  1949.            \kern-.15em
  1950.            \TeX\@}%
  1951.     \edef\next{\expandafter\@rightmark\the\everyjob}%
  1952.     \everyjob\expandafter{\expandafter
  1953.        \typeout\expandafter{\next\space with NFSS2}%
  1954.        }%
  1955. \let\xpt\undefined
  1956.   }
  1957. \fi
  1958. \def\reset@font{\protect\p@reset@font}
  1959. \def\p@reset@font{\usefont{\encodingdefault}%
  1960.                           {\familydefault}%
  1961.                           {\seriesdefault}%
  1962.                           {\shapedefault}}
  1963. \def\fileversion{v2.0c}
  1964. \def\filedate{93/06/20}
  1965. \def\docdate {93/06/20}
  1966.  
  1967. %% \CharacterTable
  1968. %%  {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
  1969. %%   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
  1970. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  1971. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  1972. %%   Dollar        \$     Percent       \%     Ampersand     \&
  1973. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  1974. %%   Asterisk      \*     Plus          \+     Comma         \,
  1975. %%   Minus         \-     Point         \.     Solidus       \/
  1976. %%   Colon         \:     Semicolon     \;     Less than     \<
  1977. %%   Equals        \=     Greater than  \>     Question mark \?
  1978. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  1979. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  1980. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  1981. %%   Right brace   \}     Tilde         \~}
  1982. %%
  1983. \immediate
  1984.  \write\sixt@@n{File: `basefont' \@spaces
  1985.  \fileversion\space <\filedate> (FMi and RmS)}
  1986. \immediate
  1987.  \write\sixt@@n{English Documentation
  1988.           \@spaces\space <\docdate> (FMi and RmS)}
  1989. \def\newfont#1#2{\@ifdefinable#1{\global
  1990.                         \font#1=#2\relax}}
  1991. \def\symbol#1{\char #1\relax}
  1992. \def\@gobbletwo#1#2{}
  1993. \let\load\@gobbletwo
  1994. \def\@setsize#1#2#3#4{\@nomath#1%
  1995.     \ifx\protect\relax
  1996.       \let\@currsize#1%
  1997.     \fi
  1998.     \fontsize{#4}{#2}\selectfont}
  1999. \def\prm{\not@math@alphabet\rm\mathrm
  2000.          \fontfamily\rmdefault\selectfont}
  2001. \def\psf{\not@math@alphabet\sf\mathsf
  2002.          \fontfamily\sfdefault\selectfont}
  2003. \def\ptt{\not@math@alphabet\tt\mathtt
  2004.          \fontfamily\ttdefault\selectfont}
  2005. \def\psl{\not@math@alphabet\sl\relax
  2006.          \fontshape\sldefault\selectfont}
  2007. \def\psc{\not@math@alphabet\sc\relax
  2008.          \fontshape\scdefault\selectfont}
  2009. \def\pit{\not@math@alphabet\it\mathit
  2010.          \fontshape\itdefault\selectfont}
  2011. \def\pbf{\not@math@alphabet\bf\mathbf
  2012.          \fontseries\bfdefault\selectfont}
  2013. \def\em{\protect\pem}
  2014. \def\pem{\@nomath\em \ifdim \fontdimen\@ne\font >\z@
  2015.                        \normalshape \else \it \fi}
  2016. \def\not@math@alphabet#1#2{%
  2017.    \relax
  2018.    \ifmmode
  2019.      \ifx#2\relax
  2020.        \errhelp{%
  2021.             In NFSS fonts you need to define a new math alphabet^^J%
  2022.             if you want to use a special font in math mode.%
  2023.             }%
  2024.      \else
  2025.        \errhelp{%
  2026.             Please use the math alphabet #2instead of
  2027.             the #1command.%
  2028.             }%
  2029.      \fi
  2030.      \errmessage{Don't use \noexpand#1in math mode}%
  2031.    \fi}
  2032. \DeclareFontEncoding{OT1}{\@@input nfot1.def\relax}{}
  2033. \DeclareMathAlphabet\mathbf{OT1}{cmr}{bx}{n}
  2034. \DeclareMathAlphabet\mathsf{OT1}{cmss}{m}{n}
  2035. \DeclareMathAlphabet\mathit{OT1}{cmr}{m}{it}
  2036. \DeclareMathAlphabet\mathtt{OT1}{cmtt}{m}{n}
  2037. \SetMathAlphabet\mathsf{bold}{OT1}{cmss}{bx}{n}
  2038. \SetMathAlphabet\mathit{bold}{OT1}{cmr}{bx}{it}
  2039. \DeclareFontEncoding{T1}{\@@input nft1.def\relax}{}
  2040. \def\not@base#1{\@latexerr
  2041.   {Commmand \noexpand#1not provided in base NFSS}%
  2042.   {Use nfnewfnt or amsfonts options}}
  2043. \def\mho{\not@base\mho}
  2044. \def\Join{\not@base\Join}
  2045. \def\Box{\not@base\Box}
  2046. \def\Diamond{\not@base\Diamond}
  2047. \def\leadsto{\not@base\leadsto}
  2048. \def\sqsubset{\not@base\sqsubset}
  2049. \def\sqsupset{\not@base\sqsupset}
  2050. \def\lhd{\not@base\lhd}
  2051. \def\unlhd{\not@base\unlhd}
  2052. \def\rhd{\not@base\rhd}
  2053. \def\unrhd{\not@base\unrhd}
  2054. \def\fileversion{v2.0e}
  2055. \def\filedate{93/06/12}
  2056. \def\docdate {93/06/12}
  2057.  
  2058. %% \CharacterTable
  2059. %%  {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
  2060. %%   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
  2061. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  2062. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  2063. %%   Dollar        \$     Percent       \%     Ampersand     \&
  2064. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  2065. %%   Asterisk      \*     Plus          \+     Comma         \,
  2066. %%   Minus         \-     Point         \.     Solidus       \/
  2067. %%   Colon         \:     Semicolon     \;     Less than     \<
  2068. %%   Equals        \=     Greater than  \>     Question mark \?
  2069. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  2070. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  2071. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  2072. %%   Right brace   \}     Tilde         \~}
  2073. \wlog{Style Option: `nffntcmd'
  2074.   \fileversion\space <\filedate> (FMi)}
  2075. \wlog{English Documentation
  2076.   \space\space\space\space\space
  2077.   \space\space\space\space <\docdate> (FMi)}
  2078. \def\textrm{\protect\ptextrm}
  2079. \def\textsf{\protect\ptextsf}
  2080. \def\texttt{\protect\ptexttt}
  2081. \def\ptextrm{\do@text@\relax\rm\relax}
  2082. \def\ptextsf{\do@text@\relax\sf\relax}
  2083. \def\ptexttt{\do@text@\relax\tt\relax}
  2084. \def\textbf{\protect\ptextbf}
  2085. \def\ptextbf{\do@text@\relax\bf\relax}
  2086. \ifx\mediumseries\undefined\else
  2087.   \def\textmedium{\protect\ptextmedium}
  2088.   \def\ptextmedium{\do@text@\relax\mediumseries\relax}
  2089. \fi
  2090.  
  2091. \def\textit{\protect\ptextit}
  2092. \def\textsl{\protect\ptextsl}
  2093. \def\textsc{\protect\ptextsc}
  2094. \def\ptextit{\do@text@\relax\it\/}
  2095. \def\ptextsl{\do@text@\relax\sl\/}
  2096. \def\ptextsc{\do@text@\sw@slant\sc\relax}
  2097. \ifx\normalshape\undefined\else
  2098.   \def\textnormal{\protect\ptextnormal}
  2099.   \def\ptextnormal{\do@text@\sw@slant\normalshape\relax}
  2100. \fi
  2101. \def\emph{\protect\pemph}
  2102. \def\pemph{\do@text@\sw@slant\em\/}
  2103. \def\nocorr{\kern\z@}
  2104. \def\sw@slant{%
  2105.   \futurelet\next\sw@@slant}
  2106. \def\sw@@slant{%
  2107.   \ifx\next\nocorr
  2108.   \else
  2109.     \ifx\next\kern
  2110.     \else
  2111.       \sw@@@slant
  2112.     \fi
  2113.   \fi}
  2114. \def\sw@@@slant{%
  2115.   \relax\ifhmode
  2116.     \ifdim\lastskip>\z@
  2117.       \skip@\lastskip
  2118.       \unskip\/\hskip\skip@
  2119.     \fi
  2120.   \fi
  2121. }
  2122. \def\do@text@#1#2#3#4{%
  2123.   \relax\ifmmode
  2124.     \expandafter\nfss@text
  2125.   \fi
  2126.     {#1#2#4#3}%
  2127. }
  2128. \ifx\nfss@text\undefined
  2129.   \def\nfss@text{\leavevmode\hbox}
  2130. \fi
  2131. \let\protect\relax
  2132. \endinput
  2133. %% 
  2134. %% End of file `nfsscode.tex'.
  2135.