home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-02-07 | 47.8 KB | 1,370 lines |
- % File LPLAIN - Created 29 October 1985 from plain version 1.5CM
- % - Last modified 20 October 1988 to take into account
- % changes to PLAIN.TEX reported by Arthur Ogawa
- % - Modified February 8, 1990 by Dominik Wujastyk to
- % match the PLAIN.TEX meant for TeX 3.0 (\fmtname{plain},
- % \fmtversion{3.0}).
- % - Modified March 15, 1990 by Frank Mittelbach to
- % allow the use of this file both in TeX 2 and 3
- % - Modified June 21, 1991 by RmS to clear the
- % contents of \box0.
- % - Modified July 1, 1991, by RmS to correct \multispan bug.
- % - Modified August 14, 1991, By RmS to make \cases work
- % with NFSS.
- % - Modified October 30, 1991, by RmS to remove \catcode and
- % \mathcode assignments for control characters.
- % - Modified November 1, 1991, by RmS to remove ^^A and ^^K
- % control characters.
- % - Modified November 4, 1991, by RmS to add missing \m@th
- % assignments and to introduce the file lhyphen.tex.
- % - Modified November 7, 1991, by RmS to make it work with
- % MLTeX version 2.
- % - Modified March 17, 1992, by RmS to match changes in
- % plain.tex of March 16, 1992.
- %
- % This is the LaTeX version of the plain TeX format that's described in
- % The TeXbook. All modifications can be found by searching for
- % the word 'LaTeX'.
- % N.B.: A version number is defined at the very end of this file;
- % please change that number whenever the file is modified!
- % And don't modify the file under any circumstances.
- %
- %% \CharacterTable
- %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
- %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
- %% Digits \0\1\2\3\4\5\6\7\8\9
- %% Exclamation \! Double quote \" Hash (number) \#
- %% Dollar \$ Percent \% Ampersand \&
- %% Acute accent \' Left paren \( Right paren \)
- %% Asterisk \* Plus \+ Comma \,
- %% Minus \- Point \. Solidus \/
- %% Colon \: Semicolon \; Less than \<
- %% Equals \= Greater than \> Question mark \?
- %% Commercial at \@ Left bracket \[ Backslash \\
- %% Right bracket \] Circumflex \^ Underscore \_
- %% Grave accent \` Left brace \{ Vertical bar \|
- %% Right brace \} Tilde \~}
- %%
-
- \catcode`\{=1 % left brace is begin-group character
- \catcode`\}=2 % right brace is end-group character
- \catcode`\$=3 % dollar sign is math shift
- \catcode`\&=4 % ampersand is alignment tab
- \catcode`\#=6 % hash mark is macro parameter character
- \catcode`\^=7 % circumflex and uparrow are for superscripts
- \catcode`\_=8 % underline and downarrow are for subscripts
- \catcode`\^^I=10 % ascii tab is a blank space
- \chardef\active=13 \catcode`\~=\active % tilde is active
- \catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par"
-
- \message{Preloading the plain format: codes,}
-
- % We had to define the \catcodes right away, before the message line,
- % since \message uses the { and } characters.
- % When INITEX (the TeX initializer) starts up,
- % it has defined the following \catcode values:
- % \catcode`\^^@=9 % ascii null is ignored
- % \catcode`\^^M=5 % ascii return is end-line
- % \catcode`\\=0 % backslash is TeX escape character
- % \catcode`\%=14 % percent sign is comment character
- % \catcode`\ =10 % ascii space is blank space
- % \catcode`\^^?=15 % ascii delete is invalid
- % \catcode`\A=11 ... \catcode`\Z=11 % uppercase letters
- % \catcode`\a=11 ... \catcode`\z=11 % lowercase letters
- % all others are type 12 (other)
-
- % Here is a list of the characters that have been specially catcoded:
- \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\_\do\%\do\~}
- % (not counting ascii null, tab, linefeed, formfeed, return, delete)
- % Each symbol in the list is preceded by \do, which can be defined
- % if you want to do something to every item in the list.
-
- % We make @ signs act like letters, temporarily, to avoid conflict
- % between user names and internal control sequences of plain format.
- \catcode`@=11
-
- % INITEX sets up \mathcode x=x, for x=0..255, except that
- % \mathcode x=x+"7100, for x = `A to `Z and `a to `z;
- % \mathcode x=x+"7000, for x = `0 to `9.
- % The following changes define internal codes as recommended
- % in Appendix C of The TeXbook:
- \mathcode`\ ="8000 % \space
- \mathcode`\!="5021
- \mathcode`\'="8000 % ^\prime
- \mathcode`\(="4028
- \mathcode`\)="5029
- \mathcode`\*="2203 % \ast
- \mathcode`\+="202B
- \mathcode`\,="613B
- \mathcode`\-="2200
- \mathcode`\.="013A
- \mathcode`\/="013D
- \mathcode`\:="303A
- \mathcode`\;="603B
- \mathcode`\<="313C
- \mathcode`\=="303D
- \mathcode`\>="313E
- \mathcode`\?="503F
- \mathcode`\[="405B
- \mathcode`\\="026E % \backslash
- \mathcode`\]="505D
- \mathcode`\_="8000 % \_
- \mathcode`\{="4266
- \mathcode`\|="026A
- \mathcode`\}="5267
-
- % INITEX sets \uccode`x=`X and \uccode `X=`X for all letters x,
- % and \lccode`x=`x, \lccode`X=`x; all other values are zero.
- % No changes to those tables are needed in plain TeX format.
-
- % INITEX sets \sfcode x=1000 for all x, except that \sfcode`X=999
- % for uppercase letters. The following changes are needed:
- \sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0
- % The \nonfrenchspacing macro will make further changes to \sfcode values.
-
- % Finally, INITEX sets all \delcode values to -1, except \delcode`.=0
- \delcode`\(="028300
- \delcode`\)="029301
- \delcode`\[="05B302
- \delcode`\]="05D303
- \delcode`\<="26830A
- \delcode`\>="26930B
- \delcode`\/="02F30E
- \delcode`\|="26A30C
- \delcode`\\="26E30F
- % N.B. { and } should NOT get delcodes; otherwise parameter grouping fails!
-
- % To make the plain macros more efficient in time and space,
- % several constant values are declared here as control sequences.
- % If they were changed, anything could happen; so they are private symbols.
- \chardef\@ne=1
- \chardef\tw@=2
- \chardef\thr@@=3
- \chardef\sixt@@n=16
- \chardef\@cclv=255
- \mathchardef\@cclvi=256
- \mathchardef\@m=1000
- \mathchardef\@M=10000
- \mathchardef\@MM=20000
-
- % Allocation of registers
-
- % Here are macros for the automatic allocation of \count, \box, \dimen,
- % \skip, \muskip, and \toks registers, as well as \read and \write
- % stream numbers, \fam codes, \language codes, and \insert numbers.
-
- \message{registers,}
-
- % When a register is used only temporarily, it need not be allocated;
- % grouping can be used, making the value previously in the register return
- % after the close of the group. The main use of these macros is for
- % registers that are defined by one macro and used by others, possibly at
- % different nesting levels. All such registers should be defined through
- % these macros; otherwise conflicts may occur, especially when two or more
- % more macro packages are being used at once.
-
- % The following counters are reserved:
- % 0 to 9 page numbering
- % 10 count allocation
- % 11 dimen allocation
- % 12 skip allocation
- % 13 muskip allocation
- % 14 box allocation
- % 15 toks allocation
- % 16 read file allocation
- % 17 write file allocation
- % 18 math family allocation
- % 19 language allocation
- % 20 insert allocation
- % 21 the most recently allocated number
- % 22 constant -1
- % New counters are allocated starting with 23, 24, etc. Other registers are
- % allocated starting with 10. This leaves 0 through 9 for the user to play
- % with safely, except that counts 0 to 9 are considered to be the page and
- % subpage numbers (since they are displayed during output). In this scheme,
- % \count 10 always contains the number of the highest-numbered counter that
- % has been allocated, \count 14 the highest-numbered box, etc.
- % Inserts are given numbers 254, 253, etc., since they require a \count,
- % \dimen, \skip, and \box all with the same number; \count 20 contains the
- % lowest-numbered insert that has been allocated. Of course, \box255 is
- % reserved for \output; \count255, \dimen255, and \skip255 can be used freely.
-
- % It is recommended that macro designers always use
- % \global assignments with respect to registers numbered 1, 3, 5, 7, 9, and
- % always non-\global assignments with respect to registers 0, 2, 4, 6, 8, 255.
- % This will prevent ``save stack buildup'' that might otherwise occur.
-
- \count10=22 % allocates \count registers 23, 24, ...
- \count11=9 % allocates \dimen registers 10, 11, ...
- \count12=9 % allocates \skip registers 10, 11, ...
- \count13=9 % allocates \muskip registers 10, 11, ...
- \count14=9 % allocates \box registers 10, 11, ...
- \count15=9 % allocates \toks registers 10, 11, ...
- \count16=-1 % allocates input streams 0, 1, ...
- \count17=-1 % allocates output streams 0, 1, ...
- \count18=3 % allocates math families 4, 5, ...
- \count19=0 % allocates \language codes 1, 2, ...
- \count20=255 % allocates insertions 254, 253, ...
- \countdef\insc@unt=20 % the insertion counter
- \countdef\allocationnumber=21 % the most recent allocation
- \countdef\m@ne=22 \m@ne=-1 % a handy constant
- \def\wlog{\immediate\write\m@ne} % write on log file (only)
-
- % Here are abbreviations for the names of scratch registers
- % that don't need to be allocated.
-
- \countdef\count@=255
- \dimendef\dimen@=0
- \dimendef\dimen@i=1 % global only
- \dimendef\dimen@ii=2
- \skipdef\skip@=0
- \toksdef\toks@=0
-
- % Now, we define \newcount, \newbox, etc. so that you can say \newcount\foo
- % and \foo will be defined (with \countdef) to be the next counter.
- % To find out which counter \foo is, you can look at \allocationnumber.
- % Since there's no \boxdef command, \chardef is used to define a \newbox,
- % \newinsert, \newfam, and so on.
- % LaTeX change: remove \outer from \newcount and \newdimen (FMi)
- % This is necessary to use \newcount inside \if...
- % later on.
-
- \def\newcount{\alloc@0\count\countdef\insc@unt}
- \def\newdimen{\alloc@1\dimen\dimendef\insc@unt}
- \outer\def\newskip{\alloc@2\skip\skipdef\insc@unt}
- \outer\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}
- \outer\def\newbox{\alloc@4\box\chardef\insc@unt}
- \let\newtoks=\relax % we do this to allow plain.tex to be read in twice
- \outer\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
- \outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi}
- \outer\def\newread{\alloc@6\read\chardef\sixt@@n}
- \outer\def\newwrite{\alloc@7\write\chardef\sixt@@n}
- \outer\def\newfam{\alloc@8\fam\chardef\sixt@@n}
- \outer\def\newlanguage{\alloc@9\language\chardef\@cclvi}
- \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
- \ch@ck#1#4#2% make sure there's still room
- \allocationnumber=\count1#1%
- \global#3#5=\allocationnumber
- \wlog{\string#5=\string#2\the\allocationnumber}}
- \outer\def\newinsert#1{\global\advance\insc@unt by\m@ne
- \ch@ck0\insc@unt\count
- \ch@ck1\insc@unt\dimen
- \ch@ck2\insc@unt\skip
- \ch@ck4\insc@unt\box
- \allocationnumber=\insc@unt
- \global\chardef#1=\allocationnumber
- \wlog{\string#1=\string\insert\the\allocationnumber}}
- \def\ch@ck#1#2#3{\ifnum\count1#1<#2%
- \else\errmessage{No room for a new #3}\fi}
-
- % Here are some examples of allocation.
- \newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen>
- \newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow
-
- % LaTeX change: the PLAIN \centering dimension conflicts with
- % LaTeX's \centering command, so it is redefined to \@centering.
- % This dimension is used by LaTeX.
-
- \newskip\@centering \@centering=0pt plus 1000pt minus 1000pt
-
- \newdimen\p@ \p@=1pt % this saves macro space and time
- \newdimen\z@ \z@=0pt % can be used both for 0pt and 0
- \newskip\z@skip \z@skip=0pt plus0pt minus0pt
- \newbox\voidb@x % permanently void box register
-
- % And here's a different sort of allocation:
- % For example, \newif\iffoo creates \footrue, \foofalse to go with \iffoo.
- \outer\def\newif#1{\count@\escapechar \escapechar\m@ne
- \expandafter\expandafter\expandafter
- \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}%
- \expandafter\expandafter\expandafter
- \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}%
- \@if#1{false}\escapechar\count@} % the condition starts out false
- \def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname}
- {\uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}} % `if' is required
-
- \message{compatibility for TeX 2, }
-
- % If this file is used in an old TeX we define the new features
- % of TeX 3.0 as simple macros or counters so that files that uses
- % these features can be processed in such an environment
- % (They will however produce some other results).
-
- \ifx\undefined\inputlineno
- \newcount\inputlineno
- \inputlineno-1 % this could be used to detect that
- % an old TeX is in force
- \ifx\undefined\language % extra test for MLTeX 2, RmS 91/11/07
- \newcount\language
- \fi
- \newcount\lefthyphenmin
- \newcount\righthyphenmin
- \newcount\errorcontextlines
- \newcount\holdinginserts
- \newdimen\emergencystretch
- \newcount\badness
- \let\noboundary\relax
- \newcount\setlanguage
- \fi
-
- % Assign initial values to TeX's parameters
-
- \message{parameters,}
-
- % All of TeX's numeric parameters are listed here,
- % but the code is commented out if no special value needs to be set.
- % INITEX makes all parameters zero except where noted.
-
- \pretolerance=100
- \tolerance=200 % INITEX sets this to 10000
- \hbadness=1000
- \vbadness=1000
- \linepenalty=10
- \hyphenpenalty=50
- \exhyphenpenalty=50
- \binoppenalty=700
- \relpenalty=500
- \clubpenalty=150
- \widowpenalty=150
- \displaywidowpenalty=50
- \brokenpenalty=100
- \predisplaypenalty=10000
- % \postdisplaypenalty=0
- % \interlinepenalty=0
- % \floatingpenalty=0, set during \insert
- % \outputpenalty=0, set before TeX enters \output
- \doublehyphendemerits=10000
- \finalhyphendemerits=5000
- \adjdemerits=10000
- % \looseness=0, cleared by TeX after each paragraph
- % \pausing=0
- % \holdinginserts=0
- % \tracingonline=0
- % \tracingmacros=0
- % \tracingstats=0
- % \tracingparagraphs=0
- % \tracingpages=0
- % \tracingoutput=0
- \tracinglostchars=1
- % \tracingcommands=0
- % \tracingrestores=0
- % \language=0
- \uchyph=1
- % \lefthyphenmin=2 \righthyphenmin=3 set below
- % \globaldefs=0
- % \maxdeadcycles=25 % INITEX does this
- % \hangafter=1 % INITEX does this, also TeX after each paragraph
- % \fam=0
- % \mag=1000 % INITEX does this
- % \escapechar=`\\ % INITEX does this
- \defaulthyphenchar=`\-
- \defaultskewchar=-1
- % \endlinechar=`\^^M % INITEX does this
- \newlinechar=-1
- \delimiterfactor=901
- % \time=now % TeX does this at beginning of job
- % \day=now % TeX does this at beginning of job
- % \month=now % TeX does this at beginning of job
- % \year=now % TeX does this at beginning of job
- \showboxbreadth=5
- \showboxdepth=3
- \errorcontextlines=5
-
- \hfuzz=0.1pt
- \vfuzz=0.1pt
- \overfullrule=5pt
- \hsize=6.5in
- \vsize=8.9in
- \maxdepth=4pt
- \splitmaxdepth=\maxdimen
- \boxmaxdepth=\maxdimen
- % \lineskiplimit=0pt, changed by \normalbaselines
- \delimitershortfall=5pt
- \nulldelimiterspace=1.2pt
- \scriptspace=0.5pt
- % \mathsurround=0pt
- % \predisplaysize=0pt, set before TeX enters $$
- % \displaywidth=0pt, set before TeX enters $$
- % \displayindent=0pt, set before TeX enters $$
- \parindent=20pt
- % \hangindent=0pt, zeroed by TeX after each paragraph
- % \hoffset=0pt
- % \voffset=0pt
-
- % \baselineskip=0pt, changed by \normalbaselines
- % \lineskip=0pt, changed by \normalbaselines
- \parskip=0pt plus 1pt
- \abovedisplayskip=12pt plus 3pt minus 9pt
- \abovedisplayshortskip=0pt plus 3pt
- \belowdisplayskip=12pt plus 3pt minus 9pt
- \belowdisplayshortskip=7pt plus 3pt minus 4pt
- % \leftskip=0pt
- % \rightskip=0pt
- \topskip=10pt
- \splittopskip=10pt
- % \tabskip=0pt
- % \spaceskip=0pt
- % \xspaceskip=0pt
- \parfillskip=0pt plus 1fil
-
- \thinmuskip=3mu
- \medmuskip=4mu plus 2mu minus 4mu
- \thickmuskip=5mu plus 5mu
-
- % We also define special registers that function like parameters:
- \newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt
- \newskip\medskipamount \medskipamount=6pt plus 2pt minus 2pt
- \newskip\bigskipamount \bigskipamount=12pt plus 4pt minus 4pt
- \newskip\normalbaselineskip \normalbaselineskip=12pt
- \newskip\normallineskip \normallineskip=1pt
- \newdimen\normallineskiplimit \normallineskiplimit=0pt
- \newdimen\jot \jot=3pt
- \newcount\interdisplaylinepenalty \interdisplaylinepenalty=100
- \newcount\interfootnotelinepenalty \interfootnotelinepenalty=100
-
- % Definitions for preloaded fonts
-
- \def\magstephalf{1095 }
- \def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax}
-
- % Fonts assigned to \preloaded are not part of "plain TeX",
- % but they are preloaded so that other format packages can use them.
- % For example, if another set of macros says "\font\ninerm=cmr9",
- % TeX will not have to reload the font metric information for cmr9.
-
- % LaTeX font definitions are taken from the file LFONTS.TEX,
- % so all of PLAIN's font definitions are commented out.
-
- %\message{fonts,}
- %
- %\font\tenrm=cmr10 % roman text
- %\font\preloaded=cmr9
- %\font\preloaded=cmr8
- %\font\sevenrm=cmr7
- %\font\preloaded=cmr6
- %\font\fiverm=cmr5
- %
- %\font\teni=cmmi10 % math italic
- %\font\preloaded=cmmi9
- %\font\preloaded=cmmi8
- %\font\seveni=cmmi7
- %\font\preloaded=cmmi6
- %\font\fivei=cmmi5
- %
- %\font\tensy=cmsy10 % math symbols
- %\font\preloaded=cmsy9
- %\font\preloaded=cmsy8
- %\font\sevensy=cmsy7
- %\font\preloaded=cmsy6
- %\font\fivesy=cmsy5
- %
- %\font\tenex=cmex10 % math extension
- %
- %\font\preloaded=cmss10 % sans serif
- %\font\preloaded=cmssq8
- %
- %\font\preloaded=cmssi10 % sans serif italic
- %\font\preloaded=cmssqi8
- %
- %\font\tenbf=cmbx10 % boldface extended
- %\font\preloaded=cmbx9
- %\font\preloaded=cmbx8
- %\font\sevenbf=cmbx7
- %\font\preloaded=cmbx6
- %\font\fivebf=cmbx5
- %
- %\font\tentt=cmtt10 % typewriter
- %\font\preloaded=cmtt9
- %\font\preloaded=cmtt8
- %
- %\font\preloaded=cmsltt10 % slanted typewriter
- %
- %\font\tensl=cmsl10 % slanted roman
- %\font\preloaded=cmsl9
- %\font\preloaded=cmsl8
- %
- %\font\tenit=cmti10 % text italic
- %\font\preloaded=cmti9
- %\font\preloaded=cmti8
- %\font\preloaded=cmti7
- %
- %\message{more fonts,}
- %\font\preloaded=cmu10 % unslanted text italic
- %
- %\font\preloaded=cmmib10 % bold math italic
- %\font\preloaded=cmbsy10 % bold math symbols
- %
- %\font\preloaded=cmcsc10 % caps and small caps
- %
- %\font\preloaded=cmssbx10 % sans serif bold extended
- %
- %\font\preloaded=cmdunh10 % Dunhill style
- %
- %\font\preloaded=cmr7 scaled \magstep4 % for titles
- %\font\preloaded=cmtt10 scaled \magstep2
- %\font\preloaded=cmssbx10 scaled \magstep2
- %
- %\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols
- %
- %% Additional \preloaded fonts can be specified here.
- %% (And those that were \preloaded above can be eliminated.)
- %
- %\let\preloaded=\undefined % preloaded fonts must be declared anew later.
- %
- %\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177
- %\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60
- %
- %\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm
- %\def\rm{\fam\z@\tenrm}
- %\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei
- %\def\mit{\fam\@ne} \def\oldstyle{\fam\@ne\teni}
- %\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
- %\def\cal{\fam\tw@}
- %\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
- %\newfam\itfam \def\it{\fam\itfam\tenit} % \it is family 4
- %\textfont\itfam=\tenit
- %\newfam\slfam \def\sl{\fam\slfam\tensl} % \sl is family 5
- %\textfont\slfam=\tensl
- %\newfam\bffam \def\bf{\fam\bffam\tenbf} % \bf is family 6
- %\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf
- %\scriptscriptfont\bffam=\fivebf
- %\newfam\ttfam \def\tt{\fam\ttfam\tentt} % \tt is family 7
- %\textfont\ttfam=\tentt
-
- % Macros for setting ordinary text
- \message{macros,}
-
- \def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m
- \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}
- \def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000%
- \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 }
-
- \def\normalbaselines{\lineskip\normallineskip
- \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit}
-
- \def\^^M{\ } % control <return> = control <space>
- \def\^^I{\ } % same for <tab>
-
- \def\lq{`} \def\rq{'}
- \def\lbrack{[} \def\rbrack{]}
-
- \let\endgraf=\par \let\endline=\cr
-
- \def\space{ }
- \def\empty{}
- \def\null{\hbox{}}
-
- \let\bgroup={ \let\egroup=}
-
- % In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}'
- % since this allows, for example, `\let\par=\cr \obeylines \halign{...'
- {\catcode`\^^M=\active % these lines must end with %
- \gdef\obeylines{\catcode`\^^M\active \let^^M\par}%
- \global\let^^M\par} % this is in case ^^M appears in a \write
- \def\obeyspaces{\catcode`\ \active}
- {\obeyspaces\global\let =\space}
-
- \def\loop#1\repeat{\def\body{#1}\iterate}
- \def\iterate{\body \let\next\iterate \else\let\next\relax\fi \next}
- \let\repeat=\fi % this makes \loop...\if...\repeat skippable
-
- \def\thinspace{\kern .16667em }
- \def\negthinspace{\kern-.16667em }
- \def\enspace{\kern.5em }
-
- \def\enskip{\hskip.5em\relax}
- \def\quad{\hskip1em\relax}
- \def\qquad{\hskip2em\relax}
-
- \def\smallskip{\vskip\smallskipamount}
- \def\medskip{\vskip\medskipamount}
- \def\bigskip{\vskip\bigskipamount}
-
- \def\nointerlineskip{\prevdepth-1000\p@}
- \def\offinterlineskip{\baselineskip-1000\p@
- \lineskip\z@ \lineskiplimit\maxdimen}
-
- \def\vglue{\afterassignment\vgl@\skip@=}
- \def\vgl@{\par \dimen@\prevdepth \hrule height\z@
- \nobreak\vskip\skip@ \prevdepth\dimen@}
- \def\hglue{\afterassignment\hgl@\skip@=}
- \def\hgl@{\leavevmode \count@\spacefactor \vrule width\z@
- \nobreak\hskip\skip@ \spacefactor\count@}
-
- \def~{\penalty\@M \ } % tie
- \def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-'
-
- \def\break{\penalty-\@M}
- \def\nobreak{\penalty \@M}
- \def\allowbreak{\penalty \z@}
-
- \def\filbreak{\par\vfil\penalty-200\vfilneg}
- \def\goodbreak{\par\penalty-500 }
- \def\eject{\par\break}
- \def\supereject{\par\penalty-\@MM}
-
- \def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi}
- \def\smallbreak{\par\ifdim\lastskip<\smallskipamount
- \removelastskip\penalty-50\smallskip\fi}
- \def\medbreak{\par\ifdim\lastskip<\medskipamount
- \removelastskip\penalty-100\medskip\fi}
- \def\bigbreak{\par\ifdim\lastskip<\bigskipamount
- \removelastskip\penalty-200\bigskip\fi}
-
- % \line changed to \@@line because LaTeX redefines \line
- \def\@@line{\hbox to\hsize}
- \def\leftline#1{\@@line{#1\hss}}
- \def\rightline#1{\@@line{\hss#1}}
- \def\centerline#1{\@@line{\hss#1\hss}}
- % end of LaTeX \line -> \@@line change
-
- \def\rlap#1{\hbox to\z@{#1\hss}}
- \def\llap#1{\hbox to\z@{\hss#1}}
-
- \def\m@th{\mathsurround=\z@}
- \def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@
- \m@th \underline{\box\z@}$}
-
- \newbox\strutbox
- \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}
- \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
-
- \def\hidewidth{\hskip\hideskip} % for alignment entries that can stick out
- \def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign
- \newcount\mscount
- \def\multispan#1{\omit \mscount#1\relax
- \loop\ifnum\mscount>\@ne \sp@n\repeat}
- \def\sp@n{\span\omit\advance\mscount\m@ne}
-
- % LaTeX has its own tabbing environment, so PLAIN's is disabled.
- %
- %\newif\ifus@ \newif\if@cr
- %\newbox\tabs \newbox\tabsyet \newbox\tabsdone
- %
- %\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null}
- %\def\settabs{\setbox\tabs\null \futurelet\next\sett@b}
- %\let\+=\relax % in case this file is being read in twice
- %\def\sett@b{\ifx\next\+\let\next\relax
- % \def\next{\afterassignment\s@tt@b\let\next}%
- % \else\let\next\s@tcols\fi\next}
- %\def\s@tt@b{\let\next\relax\us@false\m@ketabbox}
- %\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+
- %\outer\def\+{\tabalign}
- %\def\s@tcols#1\columns{\count@#1 \dimen@\hsize
- % \loop\ifnum\count@>\z@ \@nother \repeat}
- %\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@
- % \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}%
- % \advance\dimen@-\dimen@ii \advance\count@\m@ne}
- %
- %\def\m@ketabbox{\begingroup
- % \global\setbox\tabsyet\copy\tabs
- % \global\setbox\tabsdone\null
- % \def\cr{\@crtrue\crcr\egroup\egroup
- % \ifus@\unvbox\z@\lastbox\fi\endgroup
- % \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}%
- % \setbox\z@\vbox\bgroup\@crfalse
- % \ialign\bgroup&\t@bbox##\t@bb@x\crcr}
- %
- %\def\t@bbox{\setbox\z@\hbox\bgroup}
- %\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column
- % \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet
- % \global\setbox\@ne\lastbox}% now \box\@ne holds its size
- % \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}%
- % \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi
- % \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi
- % \box\z@}
-
- \def\hang{\hangindent\parindent}
- \def\textindent#1{\indent\llap{#1\enspace}\ignorespaces}
- \def\item{\par\hang\textindent}
- %% RmS 91/11/04: Removed \itemitem since never needed/useful on LaTeX.
- %\def\itemitem{\par\indent \hangindent2\parindent \textindent}
- \def\narrower{\advance\leftskip\parindent
- \advance\rightskip\parindent}
-
- % LaTeX has its own sectioning macros
- %\outer\def\beginsection#1\par{\vskip\z@ plus.3\vsize\penalty-250
- % \vskip\z@ plus-.3\vsize\bigskip\vskip\parskip
- % \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent}
-
- \outer\def\proclaim #1. #2\par{\medbreak
- \noindent{\bf#1.\enspace}{\sl#2\par}%
- \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi}
-
- \def\raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
- \def\ttraggedright{\tt\rightskip\z@ plus2em\relax} % for use with \tt only
-
- \chardef\%=`\%
- \chardef\&=`\&
- \chardef\#=`\#
- \chardef\$=`\$
- \chardef\ss="19
- \chardef\ae="1A
- \chardef\oe="1B
- \chardef\o="1C
- \chardef\AE="1D
- \chardef\OE="1E
- \chardef\O="1F
- \chardef\i="10 \chardef\j="11 % dotless letters
- \def\aa{\accent23a}
- \def\l{\char32l}
- \def\L{\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}}
-
- \def\leavevmode{\unhbox\voidb@x} % begins a paragraph, if necessary
- \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}
- \def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%
- \rlap{\raise.67\dimen@\hbox{\char'27}}A}
-
- \def\mathhexbox#1#2#3{\leavevmode
- \hbox{$\m@th \mathchar"#1#2#3$}}
- \def\dag{\mathhexbox279}
- \def\ddag{\mathhexbox27A}
- \def\S{\mathhexbox278}
- \def\P{\mathhexbox27B}
-
- \def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%
- \ialign{##\crcr#1\crcr}}} % put characters over each other
- \def\ooalign{\lineskiplimit-\maxdimen \oalign}
-
- % LaTeX change: \d, \b, \c redefined to work in a moving argument.
- \def\pd#1{\oalign{#1\crcr\hidewidth.\hidewidth}}
- \def\d{\protect\pd}
-
- \def\pb#1{\oalign{#1\crcr\hidewidth
- \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
- \def\b{\protect\pb}
-
- \def\pc#1{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1%
- \else{\ooalign{\unhbox\z@\crcr\hidewidth\char24\hidewidth}}\fi}
- \def\c{\protect\pc}
- % end of LaTeX change to \d, \b, \c
-
- \def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\mathhexbox20D}}}
-
- % LaTeX change: \ldots is redefined to do essentially what Plain's \dots does,
- % so ...
- \def\dots{\ldots}
-
- \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}
-
- \def\`#1{{\accent18 #1}}
- \def\'#1{{\accent19 #1}}
- \def\v#1{{\accent20 #1}} \let\^^_=\v
- \def\u#1{{\accent21 #1}} \let\^^S=\u
- \def\=#1{{\accent22 #1}}
- \def\^#1{{\accent94 #1}} \let\^^D=\^
- \def\.#1{{\accent95 #1}}
- \def\H#1{{\accent"7D #1}}
- \def\~#1{{\accent"7E #1}}
- \def\"#1{{\accent"7F #1}}
-
- % LaTeX change: Make \t work in a moving argument.
- \def\pt#1{{\edef\next{\the\font}\the\textfont1\accent"7F\next#1}}
- \def\t{\protect\pt}
-
- % LaTeX change: \kern\z@ added to end of \hrulefill and \dotfill
- % to make them work in `tabular' and `array' environments.
- % (Change made 24 July 1987).
- \def\hrulefill{\leaders\hrule\hfill\kern\z@}
- \def\dotfill{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill\kern\z@}
-
- \def\rightarrowfill{$\m@th\mathord-\mkern-6mu%
- \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
- \mkern-6mu\mathord\rightarrow$}
- \def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-6mu%
- \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
- \mkern-6mu\mathord-$}
- \mathchardef\braceld="37A \mathchardef\bracerd="37B
- \mathchardef\bracelu="37C \mathchardef\braceru="37D
- \def\downbracefill{$\m@th\braceld\leaders\vrule\hfill\braceru
- \bracelu\leaders\vrule\hfill\bracerd$}
- \def\upbracefill{$\m@th\bracelu\leaders\vrule\hfill\bracerd
- \braceld\leaders\vrule\hfill\braceru$}
-
- % LaTeX change: \bye is eliminated.
- %\outer\def\bye{\par\vfill\supereject\end}
-
- % Macros for math setting
- \message{math definitions,}
-
- \let\sp=^ \let\sb=_
- \def\,{\mskip\thinmuskip}
- \def\>{\mskip\medmuskip}
- \def\;{\mskip\thickmuskip}
- \def\!{\mskip-\thinmuskip}
- \def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}
- {\catcode`\'=\active \gdef'{^\bgroup\prim@s}}
- \def\prim@s{\prime\futurelet\next\pr@m@s}
- \def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t
- \else\let\nxt\egroup\fi\fi \nxt}
- \def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup}
- {\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math
-
- {\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_
-
- \mathchardef\alpha="010B
- \mathchardef\beta="010C
- \mathchardef\gamma="010D
- \mathchardef\delta="010E
- \mathchardef\epsilon="010F
- \mathchardef\zeta="0110
- \mathchardef\eta="0111
- \mathchardef\theta="0112
- \mathchardef\iota="0113
- \mathchardef\kappa="0114
- \mathchardef\lambda="0115
- \mathchardef\mu="0116
- \mathchardef\nu="0117
- \mathchardef\xi="0118
- \mathchardef\pi="0119
- \mathchardef\rho="011A
- \mathchardef\sigma="011B
- \mathchardef\tau="011C
- \mathchardef\upsilon="011D
- \mathchardef\phi="011E
- \mathchardef\chi="011F
- \mathchardef\psi="0120
- \mathchardef\omega="0121
- \mathchardef\varepsilon="0122
- \mathchardef\vartheta="0123
- \mathchardef\varpi="0124
- \mathchardef\varrho="0125
- \mathchardef\varsigma="0126
- \mathchardef\varphi="0127
- \mathchardef\Gamma="7000
- \mathchardef\Delta="7001
- \mathchardef\Theta="7002
- \mathchardef\Lambda="7003
- \mathchardef\Xi="7004
- \mathchardef\Pi="7005
- \mathchardef\Sigma="7006
- \mathchardef\Upsilon="7007
- \mathchardef\Phi="7008
- \mathchardef\Psi="7009
- \mathchardef\Omega="700A
-
- \mathchardef\aleph="0240
- \def\hbar{{\mathchar'26\mkern-9muh}}
- \mathchardef\imath="017B
- \mathchardef\jmath="017C
- \mathchardef\ell="0160
- \mathchardef\wp="017D
- \mathchardef\Re="023C
- \mathchardef\Im="023D
- \mathchardef\partial="0140
- \mathchardef\infty="0231
- \mathchardef\prime="0230
- \mathchardef\emptyset="023B
- \mathchardef\nabla="0272
- \def\surd{{\mathchar"1270}}
- \mathchardef\top="023E
- \mathchardef\bot="023F
- \def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr
- \not\mathrel{\mkern14mu}\crcr
- \noalign{\nointerlineskip}
- \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}
- \mathchardef\triangle="0234
- \mathchardef\forall="0238
- \mathchardef\exists="0239
- \mathchardef\neg="023A \let\lnot=\neg
- \mathchardef\flat="015B
- \mathchardef\natural="015C
- \mathchardef\sharp="015D
- \mathchardef\clubsuit="027C
- \mathchardef\diamondsuit="027D
- \mathchardef\heartsuit="027E
- \mathchardef\spadesuit="027F
-
- \mathchardef\coprod="1360
- \mathchardef\bigvee="1357
- \mathchardef\bigwedge="1356
- \mathchardef\biguplus="1355
- \mathchardef\bigcap="1354
- \mathchardef\bigcup="1353
- \mathchardef\intop="1352 \def\int{\intop\nolimits}
- \mathchardef\prod="1351
- \mathchardef\sum="1350
- \mathchardef\bigotimes="134E
- \mathchardef\bigoplus="134C
- \mathchardef\bigodot="134A
- \mathchardef\ointop="1348 \def\oint{\ointop\nolimits}
- \mathchardef\bigsqcup="1346
- \mathchardef\smallint="1273
-
- \mathchardef\triangleleft="212F
- \mathchardef\triangleright="212E
- \mathchardef\bigtriangleup="2234
- \mathchardef\bigtriangledown="2235
- \mathchardef\wedge="225E \let\land=\wedge
- \mathchardef\vee="225F \let\lor=\vee
- \mathchardef\cap="225C
- \mathchardef\cup="225B
- \mathchardef\ddagger="227A
- \mathchardef\dagger="2279
- \mathchardef\sqcap="2275
- \mathchardef\sqcup="2274
- \mathchardef\uplus="225D
- \mathchardef\amalg="2271
- \mathchardef\diamond="2205
- \mathchardef\bullet="220F
- \mathchardef\wr="226F
- \mathchardef\div="2204
- \mathchardef\odot="220C
- \mathchardef\oslash="220B
- \mathchardef\otimes="220A
- \mathchardef\ominus="2209
- \mathchardef\oplus="2208
- \mathchardef\mp="2207
- \mathchardef\pm="2206
- \mathchardef\circ="220E
- \mathchardef\bigcirc="220D
- \mathchardef\setminus="226E % for set difference A\setminus B
- \mathchardef\cdot="2201
- \mathchardef\ast="2203
- \mathchardef\times="2202
- \mathchardef\star="213F
-
- \mathchardef\propto="322F
- \mathchardef\sqsubseteq="3276
- \mathchardef\sqsupseteq="3277
- \mathchardef\parallel="326B
- \mathchardef\mid="326A
- \mathchardef\dashv="3261
- \mathchardef\vdash="3260
- \mathchardef\nearrow="3225
- \mathchardef\searrow="3226
- \mathchardef\nwarrow="322D
- \mathchardef\swarrow="322E
- \mathchardef\Leftrightarrow="322C
- \mathchardef\Leftarrow="3228
- \mathchardef\Rightarrow="3229
- \def\neq{\not=} \let\ne=\neq
- \mathchardef\leq="3214 \let\le=\leq
- \mathchardef\geq="3215 \let\ge=\geq
- \mathchardef\succ="321F
- \mathchardef\prec="321E
- \mathchardef\approx="3219
- \mathchardef\succeq="3217
- \mathchardef\preceq="3216
- \mathchardef\supset="321B
- \mathchardef\subset="321A
- \mathchardef\supseteq="3213
- \mathchardef\subseteq="3212
- \mathchardef\in="3232
- \mathchardef\ni="3233 \let\owns=\ni
- \mathchardef\gg="321D
- \mathchardef\ll="321C
- \mathchardef\not="3236
- \mathchardef\leftrightarrow="3224
- \mathchardef\leftarrow="3220 \let\gets=\leftarrow
- \mathchardef\rightarrow="3221 \let\to=\rightarrow
- \mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow}
- \mathchardef\sim="3218
- \mathchardef\simeq="3227
- \mathchardef\perp="323F
- \mathchardef\equiv="3211
- \mathchardef\asymp="3210
- \mathchardef\smile="315E
- \mathchardef\frown="315F
- \mathchardef\leftharpoonup="3128
- \mathchardef\leftharpoondown="3129
- \mathchardef\rightharpoonup="312A
- \mathchardef\rightharpoondown="312B
-
- \def\joinrel{\mathrel{\mkern-3mu}}
- \def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as +
- \def\Relbar{\mathrel=}
- \mathchardef\lhook="312C \def\hookrightarrow{\lhook\joinrel\rightarrow}
- \mathchardef\rhook="312D \def\hookleftarrow{\leftarrow\joinrel\rhook}
- \def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft}
- \def\models{\mathrel|\joinrel=}
- \def\Longrightarrow{\Relbar\joinrel\Rightarrow}
-
- % LaTeX Change: \longrightarrow and \longleftarrow redefined to make
- % then robust.
- \def\longrightarrow{\protect\@lra}
- \def\@lra{\relbar\joinrel\rightarrow}
- \def\longleftarrow{\protect\@lla}
- \def\@lla{\leftarrow\joinrel\relbar}
- % End of LaTeX change to \longrightarrow and \longleftarrow
-
- \def\Longleftarrow{\Leftarrow\joinrel\Relbar}
- \def\longmapsto{\mapstochar\longrightarrow}
- \def\longleftrightarrow{\leftarrow\joinrel\rightarrow}
- \def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow}
- \def\iff{\;\Longleftrightarrow\;}
-
- \mathchardef\ldotp="613A % ldot as a punctuation mark
- \mathchardef\cdotp="6201 % cdot as a punctuation mark
- \mathchardef\colon="603A % colon as a punctuation mark
-
- % LaTeX change: make \ldots work outside math mode too.
- \def\@ldots{\mathinner{\ldotp\ldotp\ldotp}}
- \def\ldots{\protect\pldots}
- \def\pldots{\relax\ifmmode\@ldots\else\mbox{$\m@th\@ldots\,$}\fi}
- % End of LaTeX change to \ldots
-
- \def\cdots{\mathinner{\cdotp\cdotp\cdotp}}
- \def\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@
- \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
- \def\ddots{\mathinner{\mkern1mu\raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu
- \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}}
-
- \def\acute{\mathaccent"7013 }
- \def\grave{\mathaccent"7012 }
- \def\ddot{\mathaccent"707F }
- \def\tilde{\mathaccent"707E }
- \def\bar{\mathaccent"7016 }
- \def\breve{\mathaccent"7015 }
- \def\check{\mathaccent"7014 }
- \def\hat{\mathaccent"705E }
- \def\vec{\mathaccent"017E }
- \def\dot{\mathaccent"705F }
- \def\widetilde{\mathaccent"0365 }
- \def\widehat{\mathaccent"0362 }
- \def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr
- \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
- $\hfil\displaystyle{#1}\hfil$\crcr}}}
- \def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr
- \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
- $\hfil\displaystyle{#1}\hfil$\crcr}}}
- \def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}
- \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}
- $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
- \def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
- $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}
- \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}
- \def\skew#1#2#3{{#2{#3\mkern#1mu}\mkern-#1mu}{}}
-
- \def\lmoustache{\delimiter"437A340 } % top from (, bottom from )
- \def\rmoustache{\delimiter"537B341 } % top from ), bottom from (
- \def\lgroup{\delimiter"462833A } % extensible ( with sharper tips
- \def\rgroup{\delimiter"562933B } % extensible ) with sharper tips
- \def\arrowvert{\delimiter"26A33C } % arrow without arrowheads
- \def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads
- \def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces
- \def\Vert{\delimiter"26B30D } \let\|=\Vert
- \def\vert{\delimiter"26A30C }
- \def\uparrow{\delimiter"3222378 }
- \def\downarrow{\delimiter"3223379 }
- \def\updownarrow{\delimiter"326C33F }
- \def\Uparrow{\delimiter"322A37E }
- \def\Downarrow{\delimiter"322B37F }
- \def\Updownarrow{\delimiter"326D377 }
- \def\backslash{\delimiter"26E30F } % for double coset G\backslash H
- \def\rangle{\delimiter"526930B }
- \def\langle{\delimiter"426830A }
- \def\rbrace{\delimiter"5267309 } \let\}=\rbrace
- \def\lbrace{\delimiter"4266308 } \let\{=\lbrace
- \def\rceil{\delimiter"5265307 }
- \def\lceil{\delimiter"4264306 }
- \def\rfloor{\delimiter"5263305 }
- \def\lfloor{\delimiter"4262304 }
-
- \def\bigl{\mathopen\big}
- \def\bigm{\mathrel\big}
- \def\bigr{\mathclose\big}
- \def\Bigl{\mathopen\Big}
- \def\Bigm{\mathrel\Big}
- \def\Bigr{\mathclose\Big}
- \def\biggl{\mathopen\bigg}
- \def\biggm{\mathrel\bigg}
- \def\biggr{\mathclose\bigg}
- \def\Biggl{\mathopen\Bigg}
- \def\Biggm{\mathrel\Bigg}
- \def\Biggr{\mathclose\Bigg}
- \def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}
- \def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}
- \def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}
- \def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}
- \def\n@space{\nulldelimiterspace\z@ \m@th}
-
- \def\choose{\atopwithdelims()}
- \def\brack{\atopwithdelims[]}
- \def\brace{\atopwithdelims\{\}}
-
- \def\sqrt{\radical"270370 }
-
- \def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}}%
- {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}}
- \newbox\rootbox
- \def\root#1\of{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}
- \mathpalette\r@@t}
- \def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}
- \dimen@\ht\z@ \advance\dimen@-\dp\z@
- \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu \box\z@}
- \newif\ifv@ \newif\ifh@
- \def\vphantom{\v@true\h@false\ph@nt}
- \def\hphantom{\v@false\h@true\ph@nt}
- \def\phantom{\v@true\h@true\ph@nt}
- \def\ph@nt{\ifmmode\def\next{\mathpalette\mathph@nt}%
- \else\let\next\makeph@nt\fi\next}
- \def\makeph@nt#1{\setbox\z@\hbox{#1}\finph@nt}
- \def\mathph@nt#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt}
- \def\finph@nt{\setbox\tw@\null
- \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
- \ifh@ \wd\tw@\wd\z@\fi \box\tw@}
- \def\mathstrut{\vphantom(}
- \def\smash{\relax % \relax, in case this comes first in \halign
- \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh
- \fi\next}
- \def\makesm@sh#1{\setbox\z@\hbox{#1}\finsm@sh}
- \def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh}
- \def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@}
-
- \def\cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign
- \def\@vereq#1#2{\lower.5\p@\vbox{\baselineskip\z@skip\lineskip-.5\p@
- \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
- \def\notin{\mathrel{\m@th\mathpalette\c@ncel\in}}
- \def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}
- \def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}}
- \def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt
- \hbox{$#1\rightharpoonup$}\crcr
- $#1\leftharpoondown$}}}}
- \def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}}
- \def\doteq{\buildrel\textstyle.\over=}
-
- \def\log{\mathop{\rm log}\nolimits}
- \def\lg{\mathop{\rm lg}\nolimits}
- \def\ln{\mathop{\rm ln}\nolimits}
- \def\lim{\mathop{\rm lim}}
- \def\limsup{\mathop{\rm lim\,sup}}
- \def\liminf{\mathop{\rm lim\,inf}}
- \def\sin{\mathop{\rm sin}\nolimits}
- \def\arcsin{\mathop{\rm arcsin}\nolimits}
- \def\sinh{\mathop{\rm sinh}\nolimits}
- \def\cos{\mathop{\rm cos}\nolimits}
- \def\arccos{\mathop{\rm arccos}\nolimits}
- \def\cosh{\mathop{\rm cosh}\nolimits}
- \def\tan{\mathop{\rm tan}\nolimits}
- \def\arctan{\mathop{\rm arctan}\nolimits}
- \def\tanh{\mathop{\rm tanh}\nolimits}
- \def\cot{\mathop{\rm cot}\nolimits}
- \def\coth{\mathop{\rm coth}\nolimits}
- \def\sec{\mathop{\rm sec}\nolimits}
- \def\csc{\mathop{\rm csc}\nolimits}
- \def\max{\mathop{\rm max}}
- \def\min{\mathop{\rm min}}
- \def\sup{\mathop{\rm sup}}
- \def\inf{\mathop{\rm inf}}
- \def\arg{\mathop{\rm arg}\nolimits}
- \def\ker{\mathop{\rm ker}\nolimits}
- \def\dim{\mathop{\rm dim}\nolimits}
- \def\hom{\mathop{\rm hom}\nolimits}
- \def\det{\mathop{\rm det}}
- \def\exp{\mathop{\rm exp}\nolimits}
- \def\Pr{\mathop{\rm Pr}}
- \def\gcd{\mathop{\rm gcd}}
- \def\deg{\mathop{\rm deg}\nolimits}
-
- \def\bmod{\mskip-\medmuskip\mkern5mu
- \mathbin{\rm mod}\penalty900\mkern5mu\mskip-\medmuskip}
- \def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)}
-
- %% RmS 91/08/14 inserted extra braces around entry for NFSS
- \def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th
- \ialign{$##\hfil$&\quad{##}\hfil\crcr#1\crcr}}\right.}
- \def\matrix#1{\null\,\vcenter{\normalbaselines\m@th
- \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
- \mathstrut\crcr\noalign{\kern-\baselineskip}
- #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}
- \def\pmatrix#1{\left(\matrix{#1}\right)}
- \newdimen\p@renwd
-
- % LaTeX: following command is moved after the \tenex font is defined
- % by LFONTS
- %\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
-
- \def\bordermatrix#1{\begingroup \m@th
- \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}%
- \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil
- &&\quad\hfil$##$\hfil\crcr
- \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%
- #1\crcr\omit\strut\cr}}%
- \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
- \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
- \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne
- \global\setbox\@ne\vbox{\box\@ne\kern2\p@}%
- \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}%
- \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}
-
- \def\openup{\afterassignment\@penup\dimen@=}
- \def\@penup{\advance\lineskip\dimen@
- \advance\baselineskip\dimen@
- \advance\lineskiplimit\dimen@}
-
- % LaTeX change: \eqalign eliminated, since it is replaced by the
- % eqnarray environment.
- %
- %\def\eqalign#1{\null\,\vcenter{\openup\jot\m@th
- % \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil
- % \crcr#1\crcr}}\,}
-
- \newif\ifdt@p
- \def\displ@y{\global\dt@ptrue\openup\jot\m@th
- \everycr{\noalign{\ifdt@p \global\dt@pfalse
- \vskip-\lineskiplimit \vskip\normallineskiplimit
- \else \penalty\interdisplaylinepenalty \fi}}}
- \def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y
- \def\displaylines#1{\displ@y
- \halign{\hbox to\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr
- #1\crcr}}
-
- % LaTeX: The following \eqalign type macros are eliminated, since
- % they are replaced by the eqnarray environment.
- %
- %\def\eqalignno#1{\displ@y \tabskip\centering
- % \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
- % &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
- % &\llap{$\@lign##$}\tabskip\z@skip\crcr
- % #1\crcr}}
- %\def\leqalignno#1{\displ@y \tabskip\centering
- % \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
- % &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
- % &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr
- % #1\crcr}}
-
- % Definitions related to output
-
- % LaTeX uses its own output routine
- %
- %\message{output routines,}
- %
- %\countdef\pageno=0 \pageno=1 % first page is number 1
- %\newtoks\headline \headline={\hfil} % headline is normally blank
- %\newtoks\footline \footline={\hss\tenrm\folio\hss}
- % % footline is normally a centered page number in font \tenrm
- %\newif\ifr@ggedbottom
- %\def\raggedbottom{\topskip 10\p@ plus60\p@ \r@ggedbottomtrue}
- %\def\normalbottom{\topskip 10\p@ \r@ggedbottomfalse} % undoes \raggedbottom
- %\def\folio{\ifnum\pageno<\z@ \romannumeral-\pageno \else\number\pageno \fi}
- %\def\nopagenumbers{\footline{\hfil}} % blank out the footline
- %\def\advancepageno{\ifnum\pageno<\z@ \global\advance\pageno\m@ne
- % \else\global\advance\pageno\@ne \fi} % increase |pageno|
-
- % LaTeX does use the same insert for footnotes as PLAIN
- \newinsert\footins
-
- %\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
- % \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
- % #1\@sf\vfootnote{#1}}
- %\def\vfootnote#1{\insert\footins\bgroup
- % \interlinepenalty\interfootnotelinepenalty
- % \splittopskip\ht\strutbox % top baseline for broken footnotes
- % \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
- % \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
- % \textindent{#1}\footstrut\futurelet\next\fo@t}
- %\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t
- % \else\let\next\f@t\fi \next}
- %\def\f@@t{\bgroup\aftergroup\@foot\let\next}
- %\def\f@t#1{#1\@foot}
- %\def\@foot{\strut\egroup}
- %\def\footstrut{\vbox to\splittopskip{}}
-
- % LaTeX leaves these initializations for the \footins insert.
- %
- \skip\footins=\bigskipamount % space added when footnote is present
- \count\footins=1000 % footnote magnification factor (1 to 1)
- \dimen\footins=8in % maximum footnotes per page
-
- %\newinsert\topins
- %\newif\ifp@ge \newif\if@mid
- %\def\topinsert{\@midfalse\p@gefalse\@ins}
- %\def\midinsert{\@midtrue\@ins}
- %\def\pageinsert{\@midfalse\p@getrue\@ins}
- %\skip\topins=\z@skip % no space added when a topinsert is present
- %\count\topins=1000 % magnification factor (1 to 1)
- %\dimen\topins=\maxdimen % no limit per page
- %\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup} % start a \vbox
- %\def\endinsert{\egroup % finish the \vbox
- % \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@
- % \advance\dimen@\pagetotal \advance\dimen@-\pageshrink
- % \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
- % \if@mid \bigskip\box\z@\bigbreak
- % \else\insert\topins{\penalty100 % floating insertion
- % \splittopskip\z@skip
- % \splitmaxdepth\maxdimen \floatingpenalty\z@
- % \ifp@ge \dimen@\dp\z@
- % \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
- % \else \box\z@\nobreak\bigskip\fi}\fi\endgroup}
-
- %\output{\plainoutput}
- %\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%
- % \advancepageno
- % \ifnum\outputpenalty>-\@MM \else\dosupereject\fi}
- %\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \pagecontents}}
- %\def\makeheadline{\vbox to\z@{\vskip-22.5\p@
- % \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}
- %\def\makefootline{\baselineskip24\p@\line{\the\footline}}
- %\def\dosupereject{\ifnum\insertpenalties>\z@ % something is being held over
- % \line{}\kern-\topskip\nobreak\vfill\supereject\fi}
- %
- %\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
- % \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255
- % \ifvoid\footins\else % footnote info is present
- % \vskip\skip\footins
- % \footnoterule
- % \unvbox\footins\fi
- % \ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-
- % LaTeX keeps PLAIN TeX's \footnoterule as the default
- %
- \def\footnoterule{\kern-3\p@
- \hrule width 2truein \kern 2.6\p@} % the \hrule is .4pt high
-
- % Hyphenation, miscellaneous macros, and initial values for standard layout
- \message{hyphenation}
-
- \lefthyphenmin=2 \righthyphenmin=3 % disallow x- or -xx breaks
- \input lhyphen
-
- % \magnification doesn't work in LaTeX
- %
- %\def\magnification{\afterassignment\m@g\count@}
- %\def\m@g{\mag\count@
- % \hsize6.5truein\vsize8.9truein\dimen\footins8truein}
-
- %% FMi & RmS 91/08/26: added \errorcontextlines=\maxdimen,
- %% suggested by J. Schrod
-
- \def\tracingall{\tracingcommands\tw@\tracingstats\tw@
- \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne
- \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
- \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode
- \errorcontextlines\maxdimen\tracingonline\@ne}
-
- \def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen\tenrm
- \pretolerance\m@ne\tolerance\m@ne\hbadness0\showboxdepth0\ #1}}
-
- % input LaTeX fonts and commands
-
- %% Initialize \reset@font for use with Old font selection
-
- \let\reset@font\empty
-
- \input lfonts
- \input latex
-
- % LaTeX change: moved from above.
- \setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
-
- % RmS 91/06/21: clear \box0
- \setbox0=\box\voidb@x
-
- % LaTeX: default values
- \normalbaselines
- % LaTeX: select 10pt font size and \rm style
- \xpt
-
- \nonfrenchspacing % punctuation affects the spacing
- \catcode`@=12 % at signs are no longer letters
-
- % LaTeX: File called LPLAIN
- % Identify the current format
- \def\fmtname{lplain}\def\fmtversion{2.09-March 25, 1992}
-
- \typeout{Input any local modifications here.}
-
- \endinput
-