updated
[latex2e.git] / base / fontdef.dtx
blobd3acfab29f79c97aa4221b1c73d2758ec869997e
1 % \iffalse meta-comment
3 % Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
4 % The LaTeX3 Project and any individual authors listed elsewhere
5 % in this file. 
6
7 % This file is part of the LaTeX base system.
8 % -------------------------------------------
9
10 % It may be distributed and/or modified under the
11 % conditions of the LaTeX Project Public License, either version 1.3c
12 % of this license or (at your option) any later version.
13 % The latest version of this license is in
14 %    http://www.latex-project.org/lppl.txt
15 % and version 1.3c or later is part of all distributions of LaTeX 
16 % version 2005/12/01 or later.
17
18 % This file has the LPPL maintenance status "maintained".
19
20 % The list of all files belonging to the LaTeX base distribution is
21 % given in the file `manifest.txt'. See also `legal.txt' for additional
22 % information.
23
24 % The list of derived (unpacked) files belonging to the distribution 
25 % and covered by LPPL is defined by the unpacking scripts (with 
26 % extension .ins) which are part of the distribution.
27
28 % \fi
29 % \iffalse
30 %%% From File: fontdef.dtx
31 %<*dtx>
32            \ProvidesFile{fontdef.dtx}
33 %</dtx>
34 %<text,   >\ProvidesFile{fonttext.ltx}
35 %<math,   >\ProvidesFile{fontmath.ltx}
36 %<+cfgtext>\ProvidesFile{fonttext.cfg}
37 %<+cfgmath>\ProvidesFile{fontmath.cfg}
38 %<+cfgprel>\ProvidesFile{preload.cfg}
39 %<driver, >\ProvidesFile{fontdef.drv}
40 % \fi
41 %          \ProvidesFile{fontdef.dtx}
42            [2004/02/04 v2.3a LaTeX Kernel
43 % \iftrue  (\else
44 %<text,   >(Text 
45 %<math,   >(Math
46 %<+cfgtext>(Uncustomised text  
47 %<+cfgmath>(Uncustomised math
48 %<+cfgprel>(Uncustomised preload
49 % \fi
50            font setup)]
52 % \CheckSum{1463}
53 %% \CharacterTable
54 %%  {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
55 %%   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
56 %%   Digits        \0\1\2\3\4\5\6\7\8\9
57 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
58 %%   Dollar        \$     Percent       \%     Ampersand     \&
59 %%   Acute accent  \'     Left paren    \(     Right paren   \)
60 %%   Asterisk      \*     Plus          \+     Comma         \,
61 %%   Minus         \-     Point         \.     Solidus       \/
62 %%   Colon         \:     Semicolon     \;     Less than     \<
63 %%   Equals        \=     Greater than  \>     Question mark \?
64 %%   Commercial at \@     Left bracket  \[     Backslash     \\
65 %%   Right bracket \]     Circumflex    \^     Underscore    \_
66 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
67 %%   Right brace   \}     Tilde         \~}
69 %\iffalse        This is a META comment
71 % File `fontdef.dtx'.
72 % Copyright (C) 1989-1999 Frank Mittelbach and Rainer Sch\"opf,
73 % All rights reserved.
75 %\fi
77 % \changes{v2.1a}{1993/12/01}{Update for LaTeX2e}
78 % \changes{v2.2a}{1994/10/14}{New coding}
79 % \changes{v2.2i}{1994/12/02}{Commented out \cs{ldots}. ASAJ.}
80 % \changes{v2.2j}{1995/05/11}{Updates to some plain macros}
81 % \changes{v2.2l}{1995/10/03}{\cs{@@sqrt} from patch file for /1701}
82 % \changes{v2.2o}{1996/05/17}{\cs{@@sqrt} removed, at last}
83 % \changes{v2.2p}{1996/11/20}{lowercase fd and enc.def file names /1044}
84 % \changes{v2.2x}{1999/01/05}{Need special protection for character
85 %     \texttt{\char62} in \cs{changes} entry.}
87 % \title{The \texttt{fontdef.dtx} file\thanks
88 %         {This file has version number \fileversion, dated \filedate}}
89 % \author{Frank Mittelbach \and Rainer Sch\"opf}
91 % \def\dst{{\normalfont\scshape docstrip}}
92 % \setcounter{StandardModuleDepth}{1}
95 % \maketitle
97 % \section{Introduction}
99 % This file is used to generate the files \texttt{fonttext.ltx} (text
100 % font declarations) and \texttt{fontmath.ltx} (math font
101 % declarations), which are used during the format generation.  It
102 % contains the declaration of the standard text encodings used at the
103 % site as well as a minimal subset of font shape groups that NFSS will
104 % look at to ensure that the specified encodings are valid.
106 % The math part contains the setup for math encodings as well as the
107 % default math symbol declarations that belong to the encoding.
109 % It is possible to change this setup (by using other fonts, or
110 % defaults) without losing the ability to
111 % process documents written at other sites. Portability in this sense
112 % means that a document will compile without errors. It does not mean,
113 % however, that identical output will be produced. For this it is
114 % necessary that the distributed setup is used at both installations.
116 % \section{Customization}
118 % You are not allowed to change this source file!  If you want to
119 % change the default encodings and/or the font shape groups preloaded
120 % you should should create a copy of \texttt{fonttext.ltx}
121 % under the name \texttt{fonttext.cfg} and change this copy. If
122 % \LaTeXe{} finds a file of this name it will use it, otherwise it
123 % uses the standard file which is \texttt{fontdef.ltx}.
125 % If you don't plan to use Computer Modern much or at all, it might
126 % (!)  be a good idea to make your own \texttt{fonttext.cfg}. Look at
127 % the comments below (docstrip module `text') to see what should
128 % should go into such a file.
130 % To change the math font setup use a copy of \texttt{fontmath.ltx}
131 % under the name \texttt{fontmath.cfg} and change this copy. However,
132 % dealing with this interface is even more a job for an expert than
133 % changing the text font setup --- in short, we don't encourage either.
135 % \begin{quote}
136 %   \textbf{Warning:} please note that we don't support customised
137 %   \LaTeX{} versions. Thus, before sending in a bug report please try
138 %   your test file with a \LaTeX{} format which is not customised and
139 %   send in the log from that version (unless the problem goes away).
140 % \end{quote}
142 % Please note: the following standard encodings  have to
143 % be defined in all local variants of \texttt{font....cfg} to guarantee
144 % that all \LaTeX{} installations behave in the same way. 
145 % \begin{center}
146 % \begin{tabular}{ll}
147 %   |T1|      &    Cork \TeX{} text encoding \\
148 %   |OT1|      &   old \TeX{} text encoding \\
149 %   |U|        &   unknown encoding \\
150 %   |OML|      &   old \TeX{} math letters encoding \\
151 %   |OMS|      &   old \TeX{} math symbols encoding \\
152 %   |OMX|      &   old \TeX{} math extension symbols encoding 
153 % \end{tabular}
154 % \end{center}
155 % Notice that some of these encodings are `old' in the sense that we
156 % hope that they will be superseded soon by encoding standards defined
157 % by the \TeX{} user community. Therefore this set of default encodings
158 % may change in the future.
160 % The first candidate is |OT1| which will soon be replaced by |T1|, the
161 % official \TeX{} text encoding.
163 % \begin{quote}\textbf{Warning:}
164 % If you add additional encodings to this file there is no guarantee
165 % any longer that files processable at your installation will also be
166 % processable at other installations. Thus, if you make use of
167 % such an encoding in your document, e.g.~if you intend to typeset in
168 % Cyrillic (|OT2| encoding), you need to specify this encoding in the
169 % preamble of your document prior to sending it to another
170 % installation. Once the encoding is specified in that place in your
171 % document, the document is processable at all \LaTeX{} installations
172 % (provided they have suitable fonts installed).
174 % For this reason we suggest that you define a short package file that
175 % sets up an additional encoding used at your site (rather than
176 % putting the encoding into this file) since this package can easily
177 % be shipped with your document.
178 % \end{quote}
181 % \StopEventually{}
183 % \section{The \texttt{docstrip} modules}
185 % The following modules are used to direct \texttt{docstrip} in
186 % generating external files:
187 % \begin{center}
188 % \begin{tabular}{ll}
189 %   driver & produce a documentation driver file \\
190 %   text   & produce the file \texttt{fonttext.ltx}\\
191 %   math   & produce the file \texttt{fontmath.ltx}\\
192 %   cfgtext   & produce a dummy \texttt{fonttext.cfg} file\\
193 %   cfgmath   & produce a dummy \texttt{fontmath.cfg} file\\
194 % \end{tabular}
195 % \end{center}
196 % A typical \texttt{docstrip} command file would then have entries like:
197 % \begin{verbatim}
198 %\generateFile{fonttext.ltx}{t}{\from{fontdef.dtx}{text}}
199 %\end{verbatim}
202 % \section{A driver for this document}
204 % The next bit of code contains the documentation driver file for
205 % \TeX{}, i.e.~the file that will produce the documentation you are
206 % currently reading. It will be extracted from this file by the 
207 % \dst{} program.
208 %    \begin{macrocode}
209 %<*driver>
210 \documentclass{ltxdoc}
211 \GetFileInfo{fontdef.dtx}
212 \begin{document}
213    \DocInput{fontdef.dtx}
214 \end{document}
215 %</driver>
216 %    \end{macrocode}
220 % \section{The \texttt{fonttext.ltx} file}
222 %    The identification is done earlier on with a |\ProvidesFile|
223 %    declaration.
224 %    \begin{macrocode}
225 %<*text>
226 \typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
227 %    \end{macrocode}
229 %  \subsection{Encodings}
231 %    This file declares the standard encodings for text and math
232 %    fonts. All others should be declared in packages or in the
233 %    documents directly.
235 %    For every text encoding there are normally a number of encoding
236 %    specific commands, e.g.~accents, special characters, etc.  (The
237 %    definition for such a command might have to change when the
238 %    encoding is changed, because the character is in a different
239 %    position, or not available at all, or the accent is produced in a
240 %    different way.)  This is handled by a general mechanism which is
241 %    described in \texttt{ltoutenc.dtx}.
243 %    By convention, text  encoding specific declarations, including the
244 %    declaration |\DeclareFontEncoding|, are kept in separate file of
245 %    the form \meta{enc}\texttt{enc.def}, e.g.~\texttt{ot1enc.def}. This
246 %    allows other applications to make use of the declarations as
247 %    well.
248 %    
249 %    Similar to the default encoding, the loading of the encoding
250 %    files for the two major text encodings shouldn't be changed.
251 %    In particular, the \texttt{inputenc} package depends on this.
252 % \changes{v2.2s}{1997/12/20}{Added documentation}
253 %    
254 % \changes{v2.1d}{1994/01/05}{Removed nf prefix from file names.}
255 % \changes{v2.1f}{1994/05/14}{Removed .def files.}
256 % \changes{v2.1g}{1994/05/1g}{Removed \cs{DeclareFontEncoding} for ot1
257 %                             and t1 and input .def files instead}
258 % \changes{v2.2c}{1994/10/25}{Added OMSenc.def}
259 % \changes{v2.2d}{1994/10/31}{Added OMLenc.def ...}
260 % \changes{v2.2e}{1994/10/31}{... and moved further down}
261 % \changes{v2.2f}{1994/11/07}{(DPC) Updated to use \cs{ProvidesFile}}
262 % \changes{v2.2h}{1994/11/16}{(DPC) Removed \cmd\{ and \cmd\}}
263 %    \begin{macrocode}
264 \input {omlenc.def}
265 \input  {t1enc.def}
266 \input {ot1enc.def}       % <- should come after T1 for speed
267 \input {omsenc.def}
268 %    \end{macrocode}
270 %    We then set set the default text font encoding. This will
271 %    hopefully change some day to |T1|. This setting should \emph{not}
272 %    be changed to produce a portable format.
273 %    \begin{macrocode}
274 \fontencoding{OT1}
275 %    \end{macrocode}
277 %    If different encodings for text fonts are in use one could put
278 %    the common setup into |\DeclareFontEncodingDefaults|. There is
279 %    now a better mechanism so using this interface is discouraged!
280 %    \begin{macrocode}
281 \DeclareFontEncodingDefaults{}{}
282 %    \end{macrocode}
283 %    
284 %    Then we define the default substitution for every encoding.
285 %    This release of \LaTeXe{} assumes that the ec fonts are
286 %    available. It is possible to change this to point to some other
287 %    font family (e.g., Times with the appropriate encoding if it is
288 %    available) without making documents non-portable. However, in
289 %    such a case documents will produce different page breaks at other
290 %    sites. The substitution defaults can all be changed without
291 %    losing portability as long as there are font shape definitions
292 %    for the selected substitutions.
293 %    \begin{macrocode}
294 \DeclareFontSubstitution{T1}{cmr}{m}{n}
295 \DeclareFontSubstitution{OT1}{cmr}{m}{n}
296 %    \end{macrocode}
298 %    For every encoding declaration, \LaTeXe{} will try to verify that
299 %    the given substitution information makes sense, i.e.~that it is
300 %    impossible to go into an endless loop if font substitution
301 %    happens. This is done at the moment the |\begin{document}| is
302 %    encountered. \LaTeXe{} will then check that for every encoding the
303 %    substitution defaults form a valid font shape group, which means
304 %    that it will check if there is a |\DeclareFontShape| declaration
305 %    for this combination. We will therefore load the corresponding
306 %    |.fd| files now. If we don't do this they would be loaded at
307 %    verification time (i.e.~at |\begin{document}| which would delay
308 %    processing unnecessarily.
310 %    \begin{quote}
311 %       \textbf{Warning:} Please note that this means that you have to
312 %       regenerate the format whenever you change any of these
313 %       \texttt{.fd} files since \LaTeXe{} will not read \texttt{.fd}
314 %       files if it already knows about the encoding/family
315 %       combination.
316 %    \end{quote}
318 % \changes{v2.2m}{1995/11/01}{add \cs{nfss@catcodes} for internal/1932}
319 % The |\nfss@catcodes| ensures that white space is ignored in any
320 % definitions made in the fd files.
321 %    \begin{macrocode}
322 \begingroup
323 \nfss@catcodes
324 \input  {t1cmr.fd}
325 \input  {ot1cmr.fd}
326 \endgroup
327 %    \end{macrocode}
329 %    We also load some other font definition files which are normally
330 %    needed in a document. This is only done for processing speed and
331 %    you can comment the next two lines out to save some memory. If
332 %    necessary these files are then loaded when your document is
333 %    processed. (Loading |.fd| files is a less drastic step compared
334 %    to preloading fonts because the number of fonts is limited 255 at
335 %    (nearly) every \TeX{} installation, while the amount of main memory
336 %    is not a limiting factor at most installations.)
338 %    \begin{macrocode}
339 \begingroup
340 \nfss@catcodes
341 \input {ot1cmss.fd}
342 \input {ot1cmtt.fd}
343 \endgroup
344 %    \end{macrocode}
345 %    
346 %    Even with all the precautions it is still possible that NFSS will
347 %    run into problems, for example, when a |.fd| file contains
348 %    corrupted data. To guard against such cases NFSS has a very
349 %    low-level fallback font that is installed with the following line.
350 %    \begin{macrocode}
351 \DeclareErrorFont{OT1}{cmr}{m}{n}{10}
352 %    \end{macrocode}
353 %    This means, ``if everything else fails use Computer Modern Roman
354 %    normal shape at 10pt in the old text encoding''.
355 %    You can change the font used but the encoding should be the same
356 %    as the one specified with |\fontencoding| above.
359 % \subsection{Defaults}
361 %    To allow the use of |\rmfamily|, |\sffamily|, etc.\ in documents
362 %    even if non-standard families are used we provide nine macros
363 %    which hold the name of the corresponding families, series, and so
364 %    on. This makes it easy to use other font families (like Times
365 %    Roman, etc.). One simply has to redefine these defaults.
367 %    All these hooks have to be defined in this file but you can
368 %    change their meaning (except for |\encodingdefault|) without
369 %    making documents non-portable.
372 % \begin{macro}{\rmdefault}
373 % \begin{macro}{\sfdefault}
374 % \begin{macro}{\ttdefault}
375 %    The following three definitions set up the meaning for
376 %    |\rmfamily|, |\sffamily|, and |\ttfamily|.
377 %    \begin{macrocode}
378 \newcommand\rmdefault{cmr}
379 \newcommand\sfdefault{cmss}
380 \newcommand\ttdefault{cmtt}
381 %    \end{macrocode}
382 % \end{macro}
383 % \end{macro}
384 % \end{macro}
386 % \begin{macro}{\bfdefault}
387 % \begin{macro}{\mddefault}
388 %    Series changing commands are influenced by the following hooks.
389 %    \begin{macrocode}
390 \newcommand\bfdefault{bx}
391 \newcommand\mddefault{m}
392 %    \end{macrocode}
393 % \end{macro}
394 % \end{macro}
396 % \begin{macro}{\itdefault}
397 % \begin{macro}{\sldefault}
398 % \begin{macro}{\scdefault}
399 % \begin{macro}{\updefault}
400 %    Shape changing commands use the following hooks.
401 %    \begin{macrocode}
402 \newcommand\itdefault{it}
403 \newcommand\sldefault{sl}
404 \newcommand\scdefault{sc}
405 \newcommand\updefault{n}
406 %    \end{macrocode}
407 % \end{macro}
408 % \end{macro}
409 % \end{macro}
410 % \end{macro}
412 % \begin{macro}{\encodingdefault}
413 % \begin{macro}{\familydefault}
414 % \begin{macro}{\seriesdefault}
415 % \begin{macro}{\shapedefault}
416 %    Finally we have the hooks that describe the behaviour of
417 %    the |\normalfont| command. To stay portable, the definition of
418 %    |\encodingdefault| should \emph{not} be changed and should match
419 %    the setting above for |\fontencoding|. All other values can be
420 %    set according to your taste.
421 %    \begin{macrocode}
422 \newcommand\encodingdefault{OT1}
423 \newcommand\familydefault{\rmdefault}
424 \newcommand\seriesdefault{\mddefault}
425 \newcommand\shapedefault{\updefault}
426 %    \end{macrocode}
427 % \end{macro}
428 % \end{macro}
429 % \end{macro}
430 % \end{macro}
433 %    This finishes the low-level setup in \texttt{fonttext.ltx}.
434 %    \begin{macrocode}
435 %</text>
436 %    \end{macrocode}
438 %    
441 % \section{The \texttt{fontmath.ltx} file}
443 %    The identification is done earlier on with a |\ProvidesFile|
444 %    declaration.
445 %    \begin{macrocode}
446 %<*math>
447 \typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
448 %    \end{macrocode}
450 % \subsection{The font encodings used}
452 %    \begin{macrocode}
453 \DeclareFontEncoding{OML}{}{}
454 \DeclareFontEncoding{OMS}{}{}
455 \DeclareFontEncoding{OMX}{}{}
456 %    \end{macrocode}
457 %    Finally a declaration for |U| encoding which serves for all fonts
458 %    that do not fit standard encodings. For math this sets up
459 %    |\noaccents@| providing for AMS-\LaTeX{}. This macro is used
460 %    therein to handle accented characters if they are not supported
461 %    by the font. In other words, if fonts with |U| encoding are used
462 %    in math, all accents (like from |\breve|) are obtained from some
463 %    other font that has them.
464 %    \begin{macrocode}
465 \DeclareFontEncoding{U}{}{\noaccents@}
466 %    \end{macrocode}
467 %    The encodings for math are next:
468 %    \begin{macrocode}
469 \DeclareFontSubstitution{OML}{cmm}{m}{it}
470 \DeclareFontSubstitution{OMS}{cmsy}{m}{n}
471 \DeclareFontSubstitution{OMX}{cmex}{m}{n}
472 \DeclareFontSubstitution{U}{cmr}{m}{n}
473 %    \end{macrocode}
475 %    \begin{macrocode}
476 \begingroup
477 \nfss@catcodes
478 \input  {omlcmm.fd}
479 \input  {omscmsy.fd}
480 \input  {omxcmex.fd}
481 \input  {ucmr.fd}
482 \endgroup
483 %    \end{macrocode}
485 %  \subsubsection{Symbolfont and Alphabet declarations}  
487 %    We now define the basic symbol fonts used by \LaTeX{}.
488 %    These four symbol fonts must be defined by this file.
490 %    It is possible to make the symbol fonts point to other external
491 %    fonts without losing the ability to process  documents written
492 %    at other sites, as long as one defines the same symbol font names
493 %    with the same encodings, e.g.~|operators| with |OT1| etc.
494 %    If other encodings are used documents become non-portable.
495 %    Such a change should therefore be done in a package file.
497 % \changes{v2.1e}{1994/01/19}{Added missing setting for symbols in
498 %                             bold version.}
499 %    \begin{macrocode}
500 \DeclareSymbolFont{operators}   {OT1}{cmr} {m}{n}
501 \DeclareSymbolFont{letters}     {OML}{cmm} {m}{it}
502 \DeclareSymbolFont{symbols}     {OMS}{cmsy}{m}{n}
503 \DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}
504 %    \end{macrocode}
506 %    \begin{macrocode}
507 \SetSymbolFont{operators}{bold}{OT1}{cmr} {bx}{n}
508 \SetSymbolFont{letters}  {bold}{OML}{cmm} {b}{it}
509 \SetSymbolFont{symbols}  {bold}{OMS}{cmsy}{b}{n}
510 %    \end{macrocode}
511 %    
512 %    Below are the seven math alphabets which are defined by NFSS.
513 %    Again they must be defined by this file.
514 %    However, as before you can change the fonts used without losing
515 %    portability, but you should be careful when changing the encoding
516 %    since that may make documents come out wrong.
517 %    \begin{macrocode}
518 \DeclareSymbolFontAlphabet{\mathrm}    {operators}
519 \DeclareSymbolFontAlphabet{\mathnormal}{letters}
520 \DeclareSymbolFontAlphabet{\mathcal}   {symbols}
521 \DeclareMathAlphabet      {\mathbf}{OT1}{cmr}{bx}{n}
522 \DeclareMathAlphabet      {\mathsf}{OT1}{cmss}{m}{n}
523 \DeclareMathAlphabet      {\mathit}{OT1}{cmr}{m}{it}
524 \DeclareMathAlphabet      {\mathtt}{OT1}{cmtt}{m}{n}
525 %    \end{macrocode}
526 %    Given the currently available fonts we cannot bold-en |\mathbf|
527 %    and |\mathtt| but in principle one could use `ultra bold' or
528 %    something. The alphabets defined via |\DeclareSymbolFontAlphabet|
529 %    will change automatically in a new math version if the
530 %    corresponding symbol font changes.
531 %    \begin{macrocode}
532 \SetMathAlphabet\mathsf{bold}{OT1}{cmss}{bx}{n}
533 \SetMathAlphabet\mathit{bold}{OT1}{cmr}{bx}{it}
534 %    \end{macrocode}
537 % \subsection{Math font sizes}
538 % \changes{v2.2f}{1994/11/07}
539 %     {(DPC) Add \cs{DeclareMathSizes} declarations}
541 %    The declarations below declare the text, script and scriptscript
542 %    size to be used for each text font size.
544 %    All occurences of sizes longer than a single character are replaced
545 %    with the macro name that holds them, saving a number of 
546 %    tokens (but losing a bit of speed, so this may not stay this way).
547 %    \begin{macrocode}
548  \DeclareMathSizes{5}{5}{5}{5}
549  \DeclareMathSizes{6}{6}{5}{5}
550  \DeclareMathSizes{7}{7}{5}{5}
551  \DeclareMathSizes{8}{8}{6}{5}
552  \DeclareMathSizes{9}{9}{6}{5}
553  \DeclareMathSizes{\@xpt}{\@xpt}{7}{5}
554  \DeclareMathSizes{\@xipt}{\@xipt}{8}{6}
555  \DeclareMathSizes{\@xiipt}{\@xiipt}{8}{6}
556  \DeclareMathSizes{\@xivpt}{\@xivpt}{\@xpt}{7}
557  \DeclareMathSizes{\@xviipt}{\@xviipt}{\@xiipt}{\@xpt}
558  \DeclareMathSizes{\@xxpt}{\@xxpt}{\@xivpt}{\@xiipt}
559  \DeclareMathSizes{\@xxvpt}{\@xxvpt}{\@xxpt}{\@xviipt}
560 %    \end{macrocode}
562 % \subsection{The math symbol assignments}
564 %    We start by setting up math codes for most of the characters
565 %    typed in directly from the keyboard. Most of them are normally
566 %    already setup up in the same way by Ini\TeX{}. However, we repeat
567 %    them here to have a complete setup which can be exchanged with
568 %    another if desired.
570 % \subsubsection{The letters}
571 %    \begin{macrocode}
572 \DeclareMathSymbol{a}{\mathalpha}{letters}{`a}
573 \DeclareMathSymbol{b}{\mathalpha}{letters}{`b}
574 \DeclareMathSymbol{c}{\mathalpha}{letters}{`c}
575 \DeclareMathSymbol{d}{\mathalpha}{letters}{`d}
576 \DeclareMathSymbol{e}{\mathalpha}{letters}{`e}
577 \DeclareMathSymbol{f}{\mathalpha}{letters}{`f}
578 \DeclareMathSymbol{g}{\mathalpha}{letters}{`g}
579 \DeclareMathSymbol{h}{\mathalpha}{letters}{`h}
580 \DeclareMathSymbol{i}{\mathalpha}{letters}{`i}
581 \DeclareMathSymbol{j}{\mathalpha}{letters}{`j}
582 \DeclareMathSymbol{k}{\mathalpha}{letters}{`k}
583 \DeclareMathSymbol{l}{\mathalpha}{letters}{`l}
584 \DeclareMathSymbol{m}{\mathalpha}{letters}{`m}
585 \DeclareMathSymbol{n}{\mathalpha}{letters}{`n}
586 \DeclareMathSymbol{o}{\mathalpha}{letters}{`o}
587 \DeclareMathSymbol{p}{\mathalpha}{letters}{`p}
588 \DeclareMathSymbol{q}{\mathalpha}{letters}{`q}
589 \DeclareMathSymbol{r}{\mathalpha}{letters}{`r}
590 \DeclareMathSymbol{s}{\mathalpha}{letters}{`s}
591 \DeclareMathSymbol{t}{\mathalpha}{letters}{`t}
592 \DeclareMathSymbol{u}{\mathalpha}{letters}{`u}
593 \DeclareMathSymbol{v}{\mathalpha}{letters}{`v}
594 \DeclareMathSymbol{w}{\mathalpha}{letters}{`w}
595 \DeclareMathSymbol{x}{\mathalpha}{letters}{`x}
596 \DeclareMathSymbol{y}{\mathalpha}{letters}{`y}
597 \DeclareMathSymbol{z}{\mathalpha}{letters}{`z}
598 %    \end{macrocode}
600 %    \begin{macrocode}
601 \DeclareMathSymbol{A}{\mathalpha}{letters}{`A}
602 \DeclareMathSymbol{B}{\mathalpha}{letters}{`B}
603 \DeclareMathSymbol{C}{\mathalpha}{letters}{`C}
604 \DeclareMathSymbol{D}{\mathalpha}{letters}{`D}
605 \DeclareMathSymbol{E}{\mathalpha}{letters}{`E}
606 \DeclareMathSymbol{F}{\mathalpha}{letters}{`F}
607 \DeclareMathSymbol{G}{\mathalpha}{letters}{`G}
608 \DeclareMathSymbol{H}{\mathalpha}{letters}{`H}
609 \DeclareMathSymbol{I}{\mathalpha}{letters}{`I}
610 \DeclareMathSymbol{J}{\mathalpha}{letters}{`J}
611 \DeclareMathSymbol{K}{\mathalpha}{letters}{`K}
612 \DeclareMathSymbol{L}{\mathalpha}{letters}{`L}
613 \DeclareMathSymbol{M}{\mathalpha}{letters}{`M}
614 \DeclareMathSymbol{N}{\mathalpha}{letters}{`N}
615 \DeclareMathSymbol{O}{\mathalpha}{letters}{`O}
616 \DeclareMathSymbol{P}{\mathalpha}{letters}{`P}
617 \DeclareMathSymbol{Q}{\mathalpha}{letters}{`Q}
618 \DeclareMathSymbol{R}{\mathalpha}{letters}{`R}
619 \DeclareMathSymbol{S}{\mathalpha}{letters}{`S}
620 \DeclareMathSymbol{T}{\mathalpha}{letters}{`T}
621 \DeclareMathSymbol{U}{\mathalpha}{letters}{`U}
622 \DeclareMathSymbol{V}{\mathalpha}{letters}{`V}
623 \DeclareMathSymbol{W}{\mathalpha}{letters}{`W}
624 \DeclareMathSymbol{X}{\mathalpha}{letters}{`X}
625 \DeclareMathSymbol{Y}{\mathalpha}{letters}{`Y}
626 \DeclareMathSymbol{Z}{\mathalpha}{letters}{`Z}
627 %    \end{macrocode}
628 %    
629 % \subsubsection{The digits}
631 %    \begin{macrocode}
632 \DeclareMathSymbol{0}{\mathalpha}{operators}{`0}
633 \DeclareMathSymbol{1}{\mathalpha}{operators}{`1}
634 \DeclareMathSymbol{2}{\mathalpha}{operators}{`2}
635 \DeclareMathSymbol{3}{\mathalpha}{operators}{`3}
636 \DeclareMathSymbol{4}{\mathalpha}{operators}{`4}
637 \DeclareMathSymbol{5}{\mathalpha}{operators}{`5}
638 \DeclareMathSymbol{6}{\mathalpha}{operators}{`6}
639 \DeclareMathSymbol{7}{\mathalpha}{operators}{`7}
640 \DeclareMathSymbol{8}{\mathalpha}{operators}{`8}
641 \DeclareMathSymbol{9}{\mathalpha}{operators}{`9}
642 %    \end{macrocode}
644 %    
645 % \subsubsection{Punctuation, brace, etc. keys}
647 %    \begin{macrocode}
648 \DeclareMathSymbol{!}{\mathclose}{operators}{"21}
649 \DeclareMathSymbol{*}{\mathbin}{symbols}{"03} % \ast
650 \DeclareMathSymbol{+}{\mathbin}{operators}{"2B}
651 \DeclareMathSymbol{,}{\mathpunct}{letters}{"3B}
652 \DeclareMathSymbol{-}{\mathbin}{symbols}{"00}
653 \DeclareMathSymbol{.}{\mathord}{letters}{"3A}
654 \DeclareMathSymbol{:}{\mathrel}{operators}{"3A}
655 \DeclareMathSymbol{;}{\mathpunct}{operators}{"3B}
656 \DeclareMathSymbol{=}{\mathrel}{operators}{"3D}
657 \DeclareMathSymbol{?}{\mathclose}{operators}{"3F}
658 %    \end{macrocode}
659 % The following symbols are defined as delimiters below
660 % which automatically defines them as math symbols.
661 %    \begin{macrocode}
662 %\DeclareMathSymbol{(}{\mathopen}{operators}{"28}
663 %\DeclareMathSymbol{)}{\mathclose}{operators}{"29}
664 %\DeclareMathSymbol{/}{\mathord}{letters}{"3D}
665 %\DeclareMathSymbol{[}{\mathopen}{operators}{"5B}
666 %\DeclareMathSymbol{]}{\mathclose}{operators}{"5D}
667 %\DeclareMathSymbol{|}{\mathord}{symbols}{"6A}
668 %\DeclareMathSymbol{<}{\mathrel}{letters}{"3C}
669 %\DeclareMathSymbol{>}{\mathrel}{letters}{"3E}
670 %    \end{macrocode}
671 %    
672 %    Should all of the following being activated by default? Probably
673 %    not.
674 %    \begin{macrocode}
675 %\DeclareMathSymbol{`\{}{\mathopen}{symbols}{"66}
676 %\DeclareMathSymbol{`\}}{\mathclose}{symbols}{"67}
677 %\DeclareMathSymbol{`\\}{\mathord}{symbols}{"6E} % \backslash
678 \mathcode`\ ="8000 % \space
679 \mathcode`\'="8000 % ^\prime
680 \mathcode`\_="8000 % \_
681 %    \end{macrocode}
684 % \subsubsection{Delimitercodes for characters}
685 % \changes{v2.2q}{1997/01/08}
686 %     {Use \cs{DeclareMathDelimiter} to set delimiter codes}
687 % \changes{v2.2u}{1998/04/15}
688 %     {Use new syntax for \cs{DeclareMathDelimiter}}
689 %    [to be completed]
691 %    Finally, Ini\TeX{} sets all |\delcode| values to -1, except
692 %    |\delcode`.=0|
693 %    \begin{macrocode}
694 \DeclareMathDelimiter{(}{\mathopen} {operators}{"28}{largesymbols}{"00}
695 \DeclareMathDelimiter{)}{\mathclose}{operators}{"29}{largesymbols}{"01}
696 \DeclareMathDelimiter{[}{\mathopen} {operators}{"5B}{largesymbols}{"02}
697 \DeclareMathDelimiter{]}{\mathclose}{operators}{"5D}{largesymbols}{"03}
698 %    \end{macrocode}
700 % The next two are considered to be relations when not used in the context
701 % of a delimiter! And worse, they do even represent different glyphs when 
702 % being used as delimiter and not as delimiter. This is a user level syntax
703 % inherited from plain \TeX{}. Therefore we explicitly redefine the math
704 % symbol definitions for these symbols afterwards.
705 % \changes{v2.2v}{1998/04/17}
706 %     {Reinsert symbol defs for \texttt{<} and \texttt{\char62} chars.}
707 %    \begin{macrocode}
708 \DeclareMathDelimiter{<}{\mathopen}{symbols}{"68}{largesymbols}{"0A}
709 \DeclareMathDelimiter{>}{\mathclose}{symbols}{"69}{largesymbols}{"0B}
710 \DeclareMathSymbol{<}{\mathrel}{letters}{"3C}
711 \DeclareMathSymbol{>}{\mathrel}{letters}{"3E}
712 %    \end{macrocode}
713 % And here is another case where the non-delimiter version produces a
714 % glyph different from the delimiter version.
715 % \changes{v2.2w}{1998/04/18}
716 %     {Reinsert symbol def for \texttt{/} char.}
717 %    \begin{macrocode}
718 \DeclareMathDelimiter{/}{\mathord}{operators}{"2F}{largesymbols}{"0E}
719 \DeclareMathSymbol{/}{\mathord}{letters}{"3D}
720 %    \end{macrocode}
722 %    \begin{macrocode}
723 \DeclareMathDelimiter{|}{\mathord}{symbols}{"6A}{largesymbols}{"0C}
724 %    \end{macrocode}
726 %    \begin{macrocode}
727 \expandafter\DeclareMathDelimiter\@backslashchar
728                         {\mathord}{symbols}{"6E}{largesymbols}{"0F}
729 %    \end{macrocode}
730 % N.B. |{| and |}| should NOT get delcodes;
731 % otherwise parameter grouping fails!
734 % \subsection{Symbols accessed via control sequences}
736 % \subsubsection{Greek letters}
738 %    \begin{macrocode}
739 \DeclareMathSymbol{\alpha}{\mathord}{letters}{"0B}
740 \DeclareMathSymbol{\beta}{\mathord}{letters}{"0C}
741 \DeclareMathSymbol{\gamma}{\mathord}{letters}{"0D}
742 \DeclareMathSymbol{\delta}{\mathord}{letters}{"0E}
743 \DeclareMathSymbol{\epsilon}{\mathord}{letters}{"0F}
744 \DeclareMathSymbol{\zeta}{\mathord}{letters}{"10}
745 \DeclareMathSymbol{\eta}{\mathord}{letters}{"11}
746 \DeclareMathSymbol{\theta}{\mathord}{letters}{"12}
747 \DeclareMathSymbol{\iota}{\mathord}{letters}{"13}
748 \DeclareMathSymbol{\kappa}{\mathord}{letters}{"14}
749 \DeclareMathSymbol{\lambda}{\mathord}{letters}{"15}
750 \DeclareMathSymbol{\mu}{\mathord}{letters}{"16}
751 \DeclareMathSymbol{\nu}{\mathord}{letters}{"17}
752 \DeclareMathSymbol{\xi}{\mathord}{letters}{"18}
753 \DeclareMathSymbol{\pi}{\mathord}{letters}{"19}
754 \DeclareMathSymbol{\rho}{\mathord}{letters}{"1A}
755 \DeclareMathSymbol{\sigma}{\mathord}{letters}{"1B}
756 \DeclareMathSymbol{\tau}{\mathord}{letters}{"1C}
757 \DeclareMathSymbol{\upsilon}{\mathord}{letters}{"1D}
758 \DeclareMathSymbol{\phi}{\mathord}{letters}{"1E}
759 \DeclareMathSymbol{\chi}{\mathord}{letters}{"1F}
760 \DeclareMathSymbol{\psi}{\mathord}{letters}{"20}
761 \DeclareMathSymbol{\omega}{\mathord}{letters}{"21}
762 \DeclareMathSymbol{\varepsilon}{\mathord}{letters}{"22}
763 \DeclareMathSymbol{\vartheta}{\mathord}{letters}{"23}
764 \DeclareMathSymbol{\varpi}{\mathord}{letters}{"24}
765 \DeclareMathSymbol{\varrho}{\mathord}{letters}{"25}
766 \DeclareMathSymbol{\varsigma}{\mathord}{letters}{"26}
767 \DeclareMathSymbol{\varphi}{\mathord}{letters}{"27}
768 \DeclareMathSymbol{\Gamma}{\mathalpha}{operators}{"00}
769 \DeclareMathSymbol{\Delta}{\mathalpha}{operators}{"01}
770 \DeclareMathSymbol{\Theta}{\mathalpha}{operators}{"02}
771 \DeclareMathSymbol{\Lambda}{\mathalpha}{operators}{"03}
772 \DeclareMathSymbol{\Xi}{\mathalpha}{operators}{"04}
773 \DeclareMathSymbol{\Pi}{\mathalpha}{operators}{"05}
774 \DeclareMathSymbol{\Sigma}{\mathalpha}{operators}{"06}
775 \DeclareMathSymbol{\Upsilon}{\mathalpha}{operators}{"07}
776 \DeclareMathSymbol{\Phi}{\mathalpha}{operators}{"08}
777 \DeclareMathSymbol{\Psi}{\mathalpha}{operators}{"09}
778 \DeclareMathSymbol{\Omega}{\mathalpha}{operators}{"0A}
779 %    \end{macrocode}
782 % \subsubsection{Ordinary symbols}
784 %    \begin{macrocode}
785 \DeclareMathSymbol{\aleph}{\mathord}{symbols}{"40}
786 \def\hbar{{\mathchar'26\mkern-9muh}}
787 \DeclareMathSymbol{\imath}{\mathord}{letters}{"7B}
788 \DeclareMathSymbol{\jmath}{\mathord}{letters}{"7C}
789 \DeclareMathSymbol{\ell}{\mathord}{letters}{"60}
790 \DeclareMathSymbol{\wp}{\mathord}{letters}{"7D}
791 \DeclareMathSymbol{\Re}{\mathord}{symbols}{"3C}
792 \DeclareMathSymbol{\Im}{\mathord}{symbols}{"3D}
793 \DeclareMathSymbol{\partial}{\mathord}{letters}{"40}
794 \DeclareMathSymbol{\infty}{\mathord}{symbols}{"31}
795 \DeclareMathSymbol{\prime}{\mathord}{symbols}{"30}
796 \DeclareMathSymbol{\emptyset}{\mathord}{symbols}{"3B}
797 \DeclareMathSymbol{\nabla}{\mathord}{symbols}{"72}
798 \def\surd{{\mathchar"1270}}
799 \DeclareMathSymbol{\top}{\mathord}{symbols}{"3E}
800 \DeclareMathSymbol{\bot}{\mathord}{symbols}{"3F}
801 \def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr
802       \not\mathrel{\mkern14mu}\crcr
803       \noalign{\nointerlineskip}
804       \mkern2.5mu\leaders\hrule \@height.34pt\hfill\mkern2.5mu\crcr}}}}
805 \DeclareMathSymbol{\triangle}{\mathord}{symbols}{"34}
806 \DeclareMathSymbol{\forall}{\mathord}{symbols}{"38}
807 \DeclareMathSymbol{\exists}{\mathord}{symbols}{"39}
808 \DeclareMathSymbol{\neg}{\mathord}{symbols}{"3A}
809     \let\lnot=\neg
810 \DeclareMathSymbol{\flat}{\mathord}{letters}{"5B}
811 \DeclareMathSymbol{\natural}{\mathord}{letters}{"5C}
812 \DeclareMathSymbol{\sharp}{\mathord}{letters}{"5D}
813 \DeclareMathSymbol{\clubsuit}{\mathord}{symbols}{"7C}
814 \DeclareMathSymbol{\diamondsuit}{\mathord}{symbols}{"7D}
815 \DeclareMathSymbol{\heartsuit}{\mathord}{symbols}{"7E}
816 \DeclareMathSymbol{\spadesuit}{\mathord}{symbols}{"7F}
817 %    \end{macrocode}
820 % \subsubsection{Large Operators}
822 %    \begin{macrocode}
823 \DeclareMathSymbol{\coprod}{\mathop}{largesymbols}{"60}
824 \DeclareMathSymbol{\bigvee}{\mathop}{largesymbols}{"57}
825 \DeclareMathSymbol{\bigwedge}{\mathop}{largesymbols}{"56}
826 \DeclareMathSymbol{\biguplus}{\mathop}{largesymbols}{"55}
827 \DeclareMathSymbol{\bigcap}{\mathop}{largesymbols}{"54}
828 \DeclareMathSymbol{\bigcup}{\mathop}{largesymbols}{"53}
829 \DeclareMathSymbol{\intop}{\mathop}{largesymbols}{"52}
830     \def\int{\intop\nolimits}
831 \DeclareMathSymbol{\prod}{\mathop}{largesymbols}{"51}
832 \DeclareMathSymbol{\sum}{\mathop}{largesymbols}{"50}
833 \DeclareMathSymbol{\bigotimes}{\mathop}{largesymbols}{"4E}
834 \DeclareMathSymbol{\bigoplus}{\mathop}{largesymbols}{"4C}
835 \DeclareMathSymbol{\bigodot}{\mathop}{largesymbols}{"4A}
836 \DeclareMathSymbol{\ointop}{\mathop}{largesymbols}{"48}
837     \def\oint{\ointop\nolimits}
838 \DeclareMathSymbol{\bigsqcup}{\mathop}{largesymbols}{"46}
839 \DeclareMathSymbol{\smallint}{\mathop}{symbols}{"73}
840 %    \end{macrocode}
843 % \subsubsection{Binary symbols}
845 % \changes{v2.3a}{2004/02/04}
846 %     {Added bigtriangle synonyms for stmaryrd}
847 %    \begin{macrocode}
848 \DeclareMathSymbol{\triangleleft}{\mathbin}{letters}{"2F}
849 \DeclareMathSymbol{\triangleright}{\mathbin}{letters}{"2E}
850 \DeclareMathSymbol{\bigtriangleup}{\mathbin}{symbols}{"34}
851 \DeclareMathSymbol{\bigtriangledown}{\mathbin}{symbols}{"35}
852    \let \varbigtriangledown \bigtriangledown
853    \let \varbigtriangleup \bigtriangleup
854 %    \end{macrocode}
856 % These last two synonyms are needed because the \textsf{stamryrd}
857 % package redefines them as Operators.
859 %    \begin{macrocode}
860 \DeclareMathSymbol{\wedge}{\mathbin}{symbols}{"5E}
861    \let\land=\wedge
862 \DeclareMathSymbol{\vee}{\mathbin}{symbols}{"5F}
863    \let\lor=\vee
864 \DeclareMathSymbol{\cap}{\mathbin}{symbols}{"5C}
865 \DeclareMathSymbol{\cup}{\mathbin}{symbols}{"5B}
866 \DeclareMathSymbol{\ddagger}{\mathbin}{symbols}{"7A}
867 \DeclareMathSymbol{\dagger}{\mathbin}{symbols}{"79}
868 \DeclareMathSymbol{\sqcap}{\mathbin}{symbols}{"75}
869 \DeclareMathSymbol{\sqcup}{\mathbin}{symbols}{"74}
870 \DeclareMathSymbol{\uplus}{\mathbin}{symbols}{"5D}
871 \DeclareMathSymbol{\amalg}{\mathbin}{symbols}{"71}
872 \DeclareMathSymbol{\diamond}{\mathbin}{symbols}{"05}
873 \DeclareMathSymbol{\bullet}{\mathbin}{symbols}{"0F}
874 \DeclareMathSymbol{\wr}{\mathbin}{symbols}{"6F}
875 \DeclareMathSymbol{\div}{\mathbin}{symbols}{"04}
876 \DeclareMathSymbol{\odot}{\mathbin}{symbols}{"0C}
877 \DeclareMathSymbol{\oslash}{\mathbin}{symbols}{"0B}
878 \DeclareMathSymbol{\otimes}{\mathbin}{symbols}{"0A}
879 \DeclareMathSymbol{\ominus}{\mathbin}{symbols}{"09}
880 \DeclareMathSymbol{\oplus}{\mathbin}{symbols}{"08}
881 \DeclareMathSymbol{\mp}{\mathbin}{symbols}{"07}
882 \DeclareMathSymbol{\pm}{\mathbin}{symbols}{"06}
883 \DeclareMathSymbol{\circ}{\mathbin}{symbols}{"0E}
884 \DeclareMathSymbol{\bigcirc}{\mathbin}{symbols}{"0D}
885 \DeclareMathSymbol{\setminus}{\mathbin}{symbols}{"6E}
886 \DeclareMathSymbol{\cdot}{\mathbin}{symbols}{"01}
887 \DeclareMathSymbol{\ast}{\mathbin}{symbols}{"03}
888 \DeclareMathSymbol{\times}{\mathbin}{symbols}{"02}
889 \DeclareMathSymbol{\star}{\mathbin}{letters}{"3F}
890 %    \end{macrocode}
893 % \subsubsection{Relations}
895 %    \begin{macrocode}
896 \DeclareMathSymbol{\propto}{\mathrel}{symbols}{"2F}
897 \DeclareMathSymbol{\sqsubseteq}{\mathrel}{symbols}{"76}
898 \DeclareMathSymbol{\sqsupseteq}{\mathrel}{symbols}{"77}
899 \DeclareMathSymbol{\parallel}{\mathrel}{symbols}{"6B}
900 \DeclareMathSymbol{\mid}{\mathrel}{symbols}{"6A}
901 \DeclareMathSymbol{\dashv}{\mathrel}{symbols}{"61}
902 \DeclareMathSymbol{\vdash}{\mathrel}{symbols}{"60}
903 \DeclareMathSymbol{\nearrow}{\mathrel}{symbols}{"25}
904 \DeclareMathSymbol{\searrow}{\mathrel}{symbols}{"26}
905 \DeclareMathSymbol{\nwarrow}{\mathrel}{symbols}{"2D}
906 \DeclareMathSymbol{\swarrow}{\mathrel}{symbols}{"2E}
907 \DeclareMathSymbol{\Leftrightarrow}{\mathrel}{symbols}{"2C}
908 \DeclareMathSymbol{\Leftarrow}{\mathrel}{symbols}{"28}
909 \DeclareMathSymbol{\Rightarrow}{\mathrel}{symbols}{"29}
910 \def\neq{\not=} \let\ne=\neq
911 \DeclareMathSymbol{\leq}{\mathrel}{symbols}{"14}
912    \let\le=\leq
913 \DeclareMathSymbol{\geq}{\mathrel}{symbols}{"15}
914    \let\ge=\geq
915 \DeclareMathSymbol{\succ}{\mathrel}{symbols}{"1F}
916 \DeclareMathSymbol{\prec}{\mathrel}{symbols}{"1E}
917 \DeclareMathSymbol{\approx}{\mathrel}{symbols}{"19}
918 \DeclareMathSymbol{\succeq}{\mathrel}{symbols}{"17}
919 \DeclareMathSymbol{\preceq}{\mathrel}{symbols}{"16}
920 \DeclareMathSymbol{\supset}{\mathrel}{symbols}{"1B}
921 \DeclareMathSymbol{\subset}{\mathrel}{symbols}{"1A}
922 \DeclareMathSymbol{\supseteq}{\mathrel}{symbols}{"13}
923 \DeclareMathSymbol{\subseteq}{\mathrel}{symbols}{"12}
924 \DeclareMathSymbol{\in}{\mathrel}{symbols}{"32}
925 \DeclareMathSymbol{\ni}{\mathrel}{symbols}{"33}
926     \let\owns=\ni
927 \DeclareMathSymbol{\gg}{\mathrel}{symbols}{"1D}
928 \DeclareMathSymbol{\ll}{\mathrel}{symbols}{"1C}
929 \DeclareMathSymbol{\not}{\mathrel}{symbols}{"36}
930 \DeclareMathSymbol{\leftrightarrow}{\mathrel}{symbols}{"24}
931 \DeclareMathSymbol{\leftarrow}{\mathrel}{symbols}{"20}
932    \let\gets=\leftarrow
933 \DeclareMathSymbol{\rightarrow}{\mathrel}{symbols}{"21}
934    \let\to=\rightarrow
935 \DeclareMathSymbol{\mapstochar}{\mathrel}{symbols}{"37}
936    \def\mapsto{\mapstochar\rightarrow}
937 \DeclareMathSymbol{\sim}{\mathrel}{symbols}{"18}
938 \DeclareMathSymbol{\simeq}{\mathrel}{symbols}{"27}
939 \DeclareMathSymbol{\perp}{\mathrel}{symbols}{"3F}
940 \DeclareMathSymbol{\equiv}{\mathrel}{symbols}{"11}
941 \DeclareMathSymbol{\asymp}{\mathrel}{symbols}{"10}
942 \DeclareMathSymbol{\smile}{\mathrel}{letters}{"5E}
943 \DeclareMathSymbol{\frown}{\mathrel}{letters}{"5F}
944 \DeclareMathSymbol{\leftharpoonup}{\mathrel}{letters}{"28}
945 \DeclareMathSymbol{\leftharpoondown}{\mathrel}{letters}{"29}
946 \DeclareMathSymbol{\rightharpoonup}{\mathrel}{letters}{"2A}
947 \DeclareMathSymbol{\rightharpoondown}{\mathrel}{letters}{"2B}
948 %    \end{macrocode}
950 %    Here cometh much profligate robustification of math constructs.
951 %    Warning: some of these commands may become non-robust if an
952 %    AMS package is loaded.
954 %    Further potential problems: some math font packages may make
955 %    unfortunate assumptions about some of these definitions that are
956 %    not true of the robust versions we need.
957 % \changes{v2.3}{2004/02/02}
958 %     {Many things from here on made robust}
959 %    \begin{macrocode}
960 \DeclareRobustCommand
961   \cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign
962 \def\@vereq#1#2{\lower.5\p@\vbox{\lineskiplimit\maxdimen\lineskip-.5\p@
963     \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
964 \DeclareRobustCommand
965   \notin{\mathrel{\m@th\mathpalette\c@ncel\in}}
966 \def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}
967 \DeclareRobustCommand
968   \rightleftharpoons{\mathrel{\mathpalette\rlh@{}}}
969 \def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt
970           \hbox{$#1\rightharpoonup$}\crcr
971         $#1\leftharpoondown$}}}}
972 \DeclareRobustCommand
973   \doteq{\buildrel\textstyle.\over=}
974 %    \end{macrocode}
976 % \subsubsection{Arrows}
978 %    \begin{macrocode}
979 \DeclareRobustCommand
980   \joinrel{\mathrel{\mkern-3mu}}
981 \DeclareRobustCommand
982   \relbar{\mathrel{\smash-}} % \smash, because - 
983                                % has the same height as +
984 %    \end{macrocode}
985 %    In contrast to \texttt{plain.tex} |\Relbar| got braces around the
986 %    equal sign to guard against it being ``math active'' expanding to
987 %    |\futurelet...|. This might be the case when packages are
988 %    implementing shorthands for math, e.g. |=>| meaning |\Rightarrow|
989 %    etc. It would actually be better not to use |=| in such
990 %    definitions but instead define something like |\mathequalsign|
991 %    and use this. However we can't do this now as it would break
992 %    other math layouts where characters are in different places
993 %    (since those wouldn't know about the need for a new command name).
994 % \changes{v2.2z}{2001/06/04}{Guard against math active equal sign in
995 %    \cs{Relbar} (pr/3333)}
996 %    \begin{macrocode}
997 \DeclareRobustCommand
998   \Relbar{\mathrel{=}}
999 \DeclareMathSymbol{\lhook}{\mathrel}{letters}{"2C}
1000    \def\hookrightarrow{\lhook\joinrel\rightarrow}
1001 \DeclareMathSymbol{\rhook}{\mathrel}{letters}{"2D}
1002    \def\hookleftarrow{\leftarrow\joinrel\rhook}
1003 \DeclareRobustCommand
1004   \bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft}
1005 %    \end{macrocode}
1006 %    
1007 % \changes{v2.2z}{2001/06/04}{Guard against math active equal and pipe
1008 %    sign in \cs{models} (pr/3333)}
1009 %    \begin{macrocode}
1010 \DeclareRobustCommand
1011   \models{\mathrel{|}\joinrel\Relbar}
1012 \DeclareRobustCommand
1013   \Longrightarrow{\Relbar\joinrel\Rightarrow}
1014 %    \end{macrocode}
1016 % LaTeX Change: |\longrightarrow| and |\longleftarrow| redefined to make
1017 %   then robust.
1018 %    \begin{macrocode}
1019 \DeclareRobustCommand\longrightarrow
1020      {\relbar\joinrel\rightarrow}
1021 \DeclareRobustCommand\longleftarrow
1022      {\leftarrow\joinrel\relbar}
1023 %    \end{macrocode}
1025 %    \begin{macrocode}
1026 \DeclareRobustCommand
1027   \Longleftarrow{\Leftarrow\joinrel\Relbar}
1028 \DeclareRobustCommand
1029   \longmapsto{\mapstochar\longrightarrow}
1030 \DeclareRobustCommand
1031   \longleftrightarrow{\leftarrow\joinrel\rightarrow}
1032 \DeclareRobustCommand
1033   \Longleftrightarrow{\Leftarrow\joinrel\Rightarrow}
1034 \DeclareRobustCommand
1035   \iff{\;\Longleftrightarrow\;}
1036 %    \end{macrocode}
1039 % \subsubsection{Punctuation symbols}
1041 %    \begin{macrocode}
1042 \DeclareMathSymbol{\ldotp}{\mathpunct}{letters}{"3A}
1043 \DeclareMathSymbol{\cdotp}{\mathpunct}{symbols}{"01}
1044 \DeclareMathSymbol{\colon}{\mathpunct}{operators}{"3A}
1045 %    \end{macrocode}
1048 % This is commented out, since |\ldots| is now defined in ltoutenc.dtx.
1049 %    \begin{macrocode}
1050 %\def\@ldots{\mathinner{\ldotp\ldotp\ldotp}}
1051 %\DeclareRobustCommand\ldots
1052 %          {\relax\ifmmode\@ldots\else\mbox{$\m@th\@ldots\,$}\fi}
1053 %    \end{macrocode}
1055 %    \begin{macrocode}
1056 \DeclareRobustCommand
1057   \cdots{\mathinner{\cdotp\cdotp\cdotp}}
1058 \DeclareRobustCommand
1059   \vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@
1060     \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
1061 \DeclareRobustCommand
1062   \ddots{\mathinner{\mkern1mu\raise7\p@
1063     \vbox{\kern7\p@\hbox{.}}\mkern2mu
1064     \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}}
1065 %    \end{macrocode}
1068 % \subsubsection{Math accents}
1070 %    \begin{macrocode}
1071 \DeclareMathAccent{\acute}{\mathalpha}{operators}{"13}
1072 \DeclareMathAccent{\grave}{\mathalpha}{operators}{"12}
1073 \DeclareMathAccent{\ddot}{\mathalpha}{operators}{"7F}
1074 \DeclareMathAccent{\tilde}{\mathalpha}{operators}{"7E}
1075 \DeclareMathAccent{\bar}{\mathalpha}{operators}{"16}
1076 \DeclareMathAccent{\breve}{\mathalpha}{operators}{"15}
1077 \DeclareMathAccent{\check}{\mathalpha}{operators}{"14}
1078 \DeclareMathAccent{\hat}{\mathalpha}{operators}{"5E}
1079 \DeclareMathAccent{\vec}{\mathord}{letters}{"7E}
1080 \DeclareMathAccent{\dot}{\mathalpha}{operators}{"5F}
1081 \DeclareMathAccent{\widetilde}{\mathord}{largesymbols}{"65}
1082 \DeclareMathAccent{\widehat}{\mathord}{largesymbols}{"62}
1083 %    \end{macrocode}
1084 %    For some reason plain \TeX{} never bothered to provide
1085 %    a ring accent in math (although it is available in the fonts), 
1086 %    but since we got a request for it here we go:
1087 % \changes{v2.2t}{1998/04/11}{Added \cs{mathring} accent (pr2785)}
1088 %    \begin{macrocode}
1089 \DeclareMathAccent{\mathring}{\mathalpha}{operators}{"17}
1090 %    \end{macrocode}
1091 %    
1093 % \subsubsection{Radicals}
1095 % \changes{v2.2o}{1996/05/17}{\cs{@@sqrt} removed, at last}
1096 %    \begin{macrocode}
1097 \DeclareMathRadical{\sqrtsign}{symbols}{"70}{largesymbols}{"70}
1098 %    \end{macrocode}
1101 % \subsubsection{Over and under something, etc}
1103 %    \begin{macrocode}
1104 \def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr
1105       \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
1106       $\hfil\displaystyle{#1}\hfil$\crcr}}}
1107 \def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr
1108       \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}%
1109       $\hfil\displaystyle{#1}\hfil$\crcr}}}
1110 \def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}%
1111       \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}%
1112       $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
1113 \def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
1114    $\hfil\displaystyle{#1}\hfil$\crcr
1115    \noalign{\kern3\p@\nointerlineskip}%
1116    \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}
1117 %    \end{macrocode}
1118 %    (quite a waste of tokens, IMHO --- Frank)
1119 %    \begin{macrocode}
1120 \def\skew#1#2#3{{\muskip\z@#1mu\divide\muskip\z@\tw@ \mkern\muskip\z@
1121     #2{\mkern-\muskip\z@{#3}\mkern\muskip\z@}\mkern-\muskip\z@}{}}
1122 %    \end{macrocode}
1124 % \changes{v2.2n}{1995/11/21}{Incorporate changed figures,
1125 %                              as in plain.tex}
1126 %    \begin{macrocode}
1127 \def\rightarrowfill{$\m@th\smash-\mkern-7mu%
1128   \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
1129   \mkern-7mu\mathord\rightarrow$}
1130 \def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu%
1131   \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill
1132   \mkern-7mu\smash-$}
1133 \DeclareMathSymbol{\braceld}{\mathord}{largesymbols}{"7A}
1134 \DeclareMathSymbol{\bracerd}{\mathord}{largesymbols}{"7B}
1135 \DeclareMathSymbol{\bracelu}{\mathord}{largesymbols}{"7C}
1136 \DeclareMathSymbol{\braceru}{\mathord}{largesymbols}{"7D}
1137 \def\downbracefill{$\m@th \setbox\z@\hbox{$\braceld$}%
1138   \braceld\leaders\vrule \@height\ht\z@ \@depth\z@\hfill\braceru
1139   \bracelu\leaders\vrule \@height\ht\z@ \@depth\z@\hfill\bracerd$}
1140 \def\upbracefill{$\m@th \setbox\z@\hbox{$\braceld$}%
1141   \bracelu\leaders\vrule \@height\ht\z@ \@depth\z@\hfill\bracerd
1142   \braceld\leaders\vrule \@height\ht\z@ \@depth\z@\hfill\braceru$}
1143 %    \end{macrocode}
1145 % \subsubsection{Delimiters}
1147 %    \begin{macrocode}
1148 \DeclareMathDelimiter{\lmoustache}   % top from (, bottom from )
1149    {\mathopen}{largesymbols}{"7A}{largesymbols}{"40}
1150 \DeclareMathDelimiter{\rmoustache}   % top from ), bottom from (
1151    {\mathclose}{largesymbols}{"7B}{largesymbols}{"41}
1152 \DeclareMathDelimiter{\arrowvert}    % arrow without arrowheads
1153    {\mathord}{symbols}{"6A}{largesymbols}{"3C}  
1154 \DeclareMathDelimiter{\Arrowvert}    % double arrow without arrowheads
1155    {\mathord}{symbols}{"6B}{largesymbols}{"3D}
1156 \DeclareMathDelimiter{\Vert}
1157    {\mathord}{symbols}{"6B}{largesymbols}{"0D}  
1158 \let\|=\Vert
1159 \DeclareMathDelimiter{\vert}
1160    {\mathord}{symbols}{"6A}{largesymbols}{"0C} 
1161 \DeclareMathDelimiter{\uparrow}
1162    {\mathrel}{symbols}{"22}{largesymbols}{"78}
1163 \DeclareMathDelimiter{\downarrow}
1164    {\mathrel}{symbols}{"23}{largesymbols}{"79}
1165 \DeclareMathDelimiter{\updownarrow}
1166    {\mathrel}{symbols}{"6C}{largesymbols}{"3F}
1167 \DeclareMathDelimiter{\Uparrow}
1168    {\mathrel}{symbols}{"2A}{largesymbols}{"7E}
1169 \DeclareMathDelimiter{\Downarrow}
1170    {\mathrel}{symbols}{"2B}{largesymbols}{"7F}
1171 \DeclareMathDelimiter{\Updownarrow}
1172    {\mathrel}{symbols}{"6D}{largesymbols}{"77}
1173 \DeclareMathDelimiter{\backslash}    % for double coset G\backslash H
1174    {\mathord}{symbols}{"6E}{largesymbols}{"0F}  
1175 \DeclareMathDelimiter{\rangle}
1176    {\mathclose}{symbols}{"69}{largesymbols}{"0B}
1177 \DeclareMathDelimiter{\langle}
1178    {\mathopen}{symbols}{"68}{largesymbols}{"0A}
1179 \DeclareMathDelimiter{\rbrace}
1180    {\mathclose}{symbols}{"67}{largesymbols}{"09}
1181 \DeclareMathDelimiter{\lbrace}
1182    {\mathopen}{symbols}{"66}{largesymbols}{"08}
1183 \DeclareMathDelimiter{\rceil}
1184    {\mathclose}{symbols}{"65}{largesymbols}{"07}
1185 \DeclareMathDelimiter{\lceil}
1186    {\mathopen}{symbols}{"64}{largesymbols}{"06}
1187 \DeclareMathDelimiter{\rfloor}
1188    {\mathclose}{symbols}{"63}{largesymbols}{"05}
1189 \DeclareMathDelimiter{\lfloor}
1190    {\mathopen}{symbols}{"62}{largesymbols}{"04}
1191 %    \end{macrocode}
1193 %  \begin{macro}{\lgroup}
1194 %  \begin{macro}{\rgroup}
1195 %  \begin{macro}{\bracevert}
1196 %    There are three plain \TeX{} delimiters which are not fully
1197 %    supported by NFSS, since they partly point into a bold cmr font.
1198 %    Allocating a full symbol font, just to have three delimiters
1199 %    seems a bit too much given the limited space available.  For this
1200 %    reason only the extensible sizes are supported.  If this is not
1201 %    desired one can use, without losing portability, define |\mathbf|
1202 %    and |\mathtt| as font symbol alphabet (setting up
1203 %    \texttt{cmr/bx/n} and \texttt{cmtt/m/n} as symbol fonts first)
1204 %    and modify the delimiter declarations to point with their
1205 %    small variant to those symbol fonts. (This is done in
1206 %    \texttt{oldlfont.dtx} so look there for examples.)
1207 %    \begin{macrocode}
1208 \DeclareMathDelimiter{\lgroup} % extensible ( with sharper tips
1209      {\mathopen}{largesymbols}{"3A}{largesymbols}{"3A}
1210 \DeclareMathDelimiter{\rgroup} % extensible ) with sharper tips
1211      {\mathclose}{largesymbols}{"3B}{largesymbols}{"3B}
1212 \DeclareMathDelimiter{\bracevert} % the vertical bar that extends braces
1213      {\mathord}{largesymbols}{"3E}{largesymbols}{"3E}
1214 %    \end{macrocode}
1215 %  \end{macro}
1216 %  \end{macro}
1217 %  \end{macro}
1219 % \subsection{Math versions of text commands}
1221 % \changes{v2.2k}{1995/06/05}{Moved math commands from ltoutenc.dtx.}
1223 % The |\mathunderscore| here is really a text definition, so it has
1224 % been put back into |ltoutenc.dtx| (by Chris, 30/04/97) and should
1225 % be removed from here.
1227 % These symbols are the math versions of text commands such as |\P|,
1228 % |\$|, etc.
1229 % \begin{macro}{\mathparagraph}
1230 % \changes{v2.2q}{1997/01/08}
1231 %     {Define using \cs{DeclareMathSymbol}}
1232 % \begin{macro}{\mathsection}
1233 % \begin{macro}{\mathdollar}
1234 % \begin{macro}{\mathsterling}
1235 % \begin{macro}{\mathunderscore}
1236 %    These math symbols are not in plain \TeX.
1237 %    \begin{macrocode}
1238 \DeclareMathSymbol{\mathparagraph}{\mathord}{symbols}{"7B}
1239 \DeclareMathSymbol{\mathsection}{\mathord}{symbols}{"78}
1240 \DeclareMathSymbol{\mathdollar}{\mathord}{operators}{"24}
1241 %    \end{macrocode}
1243 %    \begin{macrocode}
1244 \def\mathsterling{\mathit{\mathchar"7024}}
1245 \def\mathunderscore{\kern.06em\vbox{\hrule\@width.3em}}
1246 %    \end{macrocode}
1247 % \end{macro}
1248 % \end{macro}
1249 % \end{macro}
1250 % \end{macro}
1251 % \end{macro}
1253 % \begin{macro}{\mathellipsis}
1254 %    This is plain \TeX's |\ldots|.  
1255 %    \begin{macrocode}
1256 \def\mathellipsis{\mathinner{\ldotp\ldotp\ldotp}}%
1257 %    \end{macrocode}
1258 % \end{macro}
1260 % \subsection{Other special functions and parameters}
1262 % \subsubsection{Biggggg}
1264 %    \begin{macrocode}
1265 \def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}
1266 \def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}
1267 \def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}
1268 \def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}
1269 \def\n@space{\nulldelimiterspace\z@ \m@th}
1270 %    \end{macrocode}
1274 % \subsubsection{The log-like functions}
1276 % \begin{macro}{\operator@font}
1277 %    The |\operator@font| determines the symbol font used for log-like
1278 %    functions.
1279 %    \begin{macrocode}
1280 \def\operator@font{\mathgroup\symoperators}
1281 %    \end{macrocode}
1282 %  \end{macro}
1285 % \subsubsection{Parameters}
1287 %    \begin{macrocode}
1288 \thinmuskip=3mu
1289 \medmuskip=4mu plus 2mu minus 4mu
1290 \thickmuskip=5mu plus 5mu
1291 %    \end{macrocode}
1294 %    This finishes the low-level setup in \texttt{fontmath.ltx}.
1295 %    \begin{macrocode}
1296 %</math>
1297 %    \end{macrocode}
1300 % \section{Default cfg files}
1302 %    We provide default \texttt{cfg} files here to ensure that
1303 %    on installations that search large file trees we do not pick up
1304 %    some strange customisation files from somewhere.
1305 % \changes{v2.2y}{2001/06/02}{Provide default cfg files (pr/3264)}
1306 %    \begin{macrocode}
1307 %<*cfgtext|cfgmath|cfgprel>
1311 %% Load the standard setup:
1313 %<+cfgtext>\input{fonttext.ltx}
1314 %<+cfgmath>\input{fontmath.ltx}
1315 %<+cfgprel>\input{preload.ltx}
1317 %% Small changes could go here; see documentation in cfgguide.tex for
1318 %% allowed modifications.
1320 %% In particular it is not allowed to misuse this configuration file
1321 %% to modify internal LaTeX commands!
1323 %% If you use this file as the basis for configuration please change
1324 %% the \ProvidesFile lines to clearly identify your modification, e.g.,
1326 %<+cfgtext>%%  \ProvidesFile{fonttext.cfg}[2001/06/01
1327 %<+cfgmath>%%  \ProvidesFile{fonttext.cfg}[2001/06/01
1328 %<+cfgprel>%%   \ProvidesFile{preload.cfg}[2001/06/01
1329 %%                              Customised local font setup]
1332 %</cfgtext|cfgmath|cfgprel>
1333 %    \end{macrocode}
1335 % \Finale
1337 \endinput