1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
\ifx\@bases@loaded\undefined % ne me chargez qu'une seule fois
% ======================================================================
% ======================== BASES =======================================
% ======================================================================
\let\ampersand@\relax
\let\dsize\displaystyle
\let\tsize\textstyle
\let\ssize\scriptstyle
\let\sssize\scriptscriptstyle
\def\NoBlackBoxes{\global\overfullrule\z@}
\def\BlackBoxes{\global\overfullrule5\p@}
\toksdef\toks@@=2
\newdimen\ex@
\ex@.2326ex
\newskip\XdimenA
\newskip\XdimenB
\newbox\XboxA
% reservation verticale
\def\need#1{{\ifhmode\unskip\par\fi
\XdimenA=\pagegoal
\advance\XdimenA by -\pagetotal
\ifdim\pagetotal>\z@
\ifdim\XdimenA>\z@
\ifdim\XdimenA<#1%
\vfil\eject\typeout{WARNING- EJECT BY NEED}
\fi
\fi
\fi}
}
\def\binrel@@#1{\ifdim\wd2<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@
\mathrel{#1}\else{#1}\fi\fi}
\def\binrel@#1{\setbox\z@\hbox{\thinmuskip0mu
\medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}%
\setbox\@ne\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip
\@ne mu${}#1{}\m@th$}%
\setbox\tw@\hbox{\hskip\wd\@ne\hskip-\wd\z@}}
\def\relaxnext@{\let\next\relax}
\let\DOTSI\relax
\let\DOTSB\relax
\def\LimitsOnInts{\global\let\ilimits@\displaylimits}
\def\NoLimitsOnInts{\global\let\ilimits@\nolimits}
\NoLimitsOnInts
%------ MAGIC
\newif\ifmath@
{\uccode`7=`\\ \uccode`8=`m \uccode`9=`a \uccode`0=`t \uccode`?=`h
\uppercase{\gdef\math@#1#2#3#4#5#6\math@{\global\math@false\ifx 7#1\ifx 8#2%
\ifx 9#3\ifx 0#4\ifx ?#5\xdef\meaning@{#6}\global\math@true\fi\fi\fi\fi\fi}}}
\newif\ifmathch@
{\uccode`7=`c \uccode`8=`h \uccode`9=`\"
\uppercase{\gdef\mathch@#1#2#3#4#5#6\mathch@{\global\mathch@false
\ifx 7#1\ifx 8#2\ifx 9#5\global\mathch@true\xdef\meaning@{9#6}\fi\fi\fi}}}
\newcount\classnum@
\def\getmathch@#1.#2\getmathch@{\classnum@#1 \divide\classnum@4096
\ifcase\number\classnum@\or\or\gdef\thedots@{\dotsb@}\or
\gdef\thedots@{\dotsb@}\fi}
\newif\ifmathbin@
{\uccode`4=`b \uccode`5=`i \uccode`6=`n
\uppercase{\gdef\mathbin@#1#2#3{%
\def\next@##1\mathbin@{\ifx\space@\next\global\mathbin@true\fi}%
\global\mathbin@false\def\next##1\mathbin@{}%
\ifx 4#1\ifx 5#2\ifx 6#3\def\next{\futurelet\next\next@}\fi\fi\fi\next}}}
\newif\ifmathrel@
{\uccode`4=`r \uccode`5=`e \uccode`6=`l
\uppercase{\gdef\mathrel@#1#2#3{%
\def\next@##1\mathrel@{\ifx\space@\next\global\mathrel@true\fi}%
\global\mathrel@false\def\next##1\mathrel@{}%
\ifx 4#1\ifx 5#2\ifx 6#3\def\next{\futurelet\next\next@}\fi\fi\fi\next}}}
\newif\ifmacro@
{\uccode`5=`m \uccode`6=`a \uccode`7=`c
\uppercase{\gdef\macro@#1#2#3#4\macro@{\global\macro@false
\ifx 5#1\ifx 6#2\ifx 7#3\global\macro@true
\xdef\meaning@{\macro@@#4\macro@@}\fi\fi\fi}}}
\def\macro@@#1->#2\macro@@{#2}
\newif\ifDOTS@
\newcount\DOTSCASE@
{\uccode`6=`\\ \uccode`7=`D \uccode`8=`O \uccode`9=`T \uccode`0=`S
\uppercase{\gdef\DOTS@#1#2#3#4#5{\global\DOTS@false\def\next##1\DOTS@{}%
\ifx 6#1\ifx 7#2\ifx 8#3\ifx 9#4\ifx 0#5\let\next\DOTS@@\fi\fi\fi\fi\fi
\next}}}
\let\DOTSX\relax
{\uccode`3=`B \uccode`4=`I \uccode`5=`X
\uppercase{\gdef\DOTS@@#1{%
\def\next{\futurelet\next\next@}%
\def\next@##1\DOTS@{\ifx\space@\next\global\DOTS@true\fi}%
\ifx 3#1\global\DOTSCASE@\z@\else
\ifx 4#1\global\DOTSCASE@\@ne\else
\ifx 5#1\global\DOTSCASE@\tw@\else\def\next##1\DOTS@{}%
\fi\fi\fi\next}}}
\newif\ifnot@
{\uccode`5=`\\ \uccode`6=`n \uccode`7=`o \uccode`8=`t
\uppercase{\gdef\not@#1#2#3#4{%
\def\next@##1\not@{\ifx\space@\next\global\not@true\fi}%
\global\not@false\def\next##1\not@{}%
\ifx 5#1\ifx 6#2\ifx 7#3\ifx 8#4\def\next{\futurelet\next\next@}\fi\fi\fi\fi
\next}}}
\newif\ifkeybin@
\def\keybin@{\keybin@true
\ifx\next+\else\ifx\next=\else\ifx\next<\else\ifx\next>\else\ifx\next-\else
\ifx\next*\else\ifx\next:\else\keybin@false\fi\fi\fi\fi\fi\fi\fi}
\def\dots{\ifmmode\let\next\mdots@\else\let\next\tdots@\fi\next}
\def\tdots@{\unskip\relaxnext@
\def\next@{$\mathinner{\ldotp\ldotp\ldotp}\,
\ifx\next,$\else\ifx\next.\,$\else\ifx\next;\,$\else\ifx\next:\,$\else
\ifx\next?\,$\else\ifx\next!\,$\else$ \fi\fi\fi\fi\fi\fi}%
\ \futurelet\next\next@}
\def\mdots@{\futurelet\next\mdots@@}
\def\mdots@@{\gdef\thedots@{\dotso@}%
\ifx,\next\gdef\thedots@{\dotsc}\else
\ifx\not\next\gdef\thedots@{\dotsb@}\else
\keybin@
\ifkeybin@\gdef\thedots@{\dotsb@}\else
\xdef\meaning@{\meaning\next.........}\xdef\meaning@@{\meaning@}%
\expandafter\math@\meaning@\math@
\ifmath@
\expandafter\mathch@\meaning@\mathch@\ifmathch@
\expandafter\getmathch@\meaning@\getmathch@\fi\else
\expandafter\macro@\meaning@@\macro@
\ifmacro@\expandafter\not@\meaning@\not@
\ifnot@\gdef\thedots@{\dotsb@}\else
\expandafter\DOTS@\meaning@\DOTS@
\ifDOTS@
\ifcase\number\DOTSCASE@\gdef\thedots@{\dotsb@}%
\or\gdef\thedots@{\dotsi}\else\fi\else
\expandafter\math@\meaning@\math@
\ifmath@\expandafter\mathbin@\meaning@\mathbin@
\ifmathbin@\gdef\thedots@{\dotsb@}\else
\expandafter\mathrel@\meaning@\mathrel@
\ifmathrel@\gdef\thedots@{\dotsb@}%
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
\thedots@}
\def\plainldots@{\mathinner{\ldotp\ldotp\ldotp}}
\def\plaincdots@{\mathinner{\cdotp\cdotp\cdotp}}
\def\dotsi{\!\plaincdots@}
\newif\ifextra@
\newif\ifrightdelim@
\def\rightdelim@{\global\rightdelim@true
\ifx\next)\else
\ifx\next]\else
\ifx\next\rbrack\else
\ifx\next\}\else
\ifx\next\rbrace\else
\ifx\next\rangle\else
\ifx\next\rceil\else
\ifx\next\rfloor\else
\ifx\next\rgroup\else
\ifx\next\rmoustache\else
\ifx\next\right\else
\ifx\next\bigr\else
\ifx\next\biggr\else
\ifx\next\Bigr\else
\ifx\next\Biggr\else\global\rightdelim@false
\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
\def\extra@{\global\extra@false\rightdelim@
\ifrightdelim@\global\extra@true\else
\ifx\next$\global\extra@true\else
\xdef\meaning@{\meaning\next.........}%
\expandafter\macro@\meaning@\macro@
\ifmacro@\expandafter\DOTS@\meaning@\DOTS@
\ifDOTS@
\ifnum\DOTSCASE@=\tw@\global\extra@true\fi\fi\fi\fi\fi}
\def\extrap@#1{%
\ifx\next,\def\next{#1\,}\else
\ifx\next;\def\next{#1\,}\else
\ifx\next.\def\next{#1\,}\else\extra@
\ifextra@\def\next{#1\,}\else
\let\next#1\fi\fi\fi\fi\next}
%\def\ldots{\relaxnext@
% \def\next@{\extrap@\plainldots@}%
% \futurelet\next\next@}
%\def\cdots{\relaxnext@
% \def\next@{\extrap@\plaincdots@}%
% \futurelet\next\next@}
\let\hdots\ldots
\let\dotsb@\plaincdots@
\let\dotsb\cdots
\def\dotso@{%
\def\next@{\extra@\plainldots@\ifextra@\,\fi}%
\futurelet\next\next@}
\def\dotso{\relaxnext@
\def\next@{\extrap@\plainldots@}%
\futurelet\next\next@}
\def\dotsc{\relaxnext@
\def\next@{%
\ifx\next;\plainldots@\,\else
\ifx\next.\plainldots@\,\else\extra@\plainldots@
\ifextra@\,\fi\fi\fi}%
\futurelet\next\next@}
%JPFD 20000907% \def\cdot{\relax\mathchar"2201 }
\let\dotsm\dotsb
\def\LimitsOnNames{\global\let\nlimits@\displaylimits}
\def\NoLimitsOnNames{\global\let\nlimits@\nolimits@}
\LimitsOnNames
\def\nolimits@{\relaxnext@
\def\next@{\ifx\next\limits\def\next\limits{\nolimits}\else
\def\next{\nolimits}\fi\next}%
\futurelet\next\next@}
\def\newmcodes@{\mathcode`\'="0027 \mathcode`\*="002A \mathcode`\.="613A
\mathcode`\-="002D \mathcode`\/="002F \mathcode`\:="603A }
% \strut is defined in PLAIN . The structure of \strutt is equivalent.
\newbox\struttbox
\def\strutt{\relax\ifmmode\copy\struttbox\else\unhcopy\struttbox\fi}
\def\relaxnext@{\let\next\relax}
\newhelp\defaulthelp@{Sorry, I already gave what help I could...^^J
Maybe you should try asking a human\string?^^J
An error might have occurred before I noticed any problems.^^J
``If all else fails, read the instructions.''}
\def\Err@#1{\errhelp\defaulthelp@\errmessage{BASES STYLE error= #1}}
\def\onlydmatherr@#1{\Err@{\string#1\space allowed only in display math mode}}
\def\Invalid@#1{\def#1{\Err@{Invalid use of \string#1}}}
\def\Let@{\relax\iffalse{\fi\let\\=\cr\iffalse}\fi}
%\Invalid@\vspace
\def\vspace@{\def\vspace##1{\noalign{\vskip##1\relax}}}
\newskip\centering@
\centering@\z@ plus\@m\p@
\def\allowdisplaybreak@{\def\allowdisplaybreak{\noalign{\allowbreak}}}
\def\displaybreak@{\def\displaybreak{\noalign{\break}}}
\def\eat@#1{}
\def\textfonti{\the\textfont\@ne}
\def\textfontii{\the\textfont\tw@}
\def\textfont@#1#2{\def#1{\relax\ifmmode
\Err@{Use \string#1\space only in text}\else#2\fi}}
\def\text{\relaxnext@\ifmmode\let\next\text@\else\let\next\text@@\fi\next}
\def\text@@#1{\leavevmode\hbox{#1}}
\def\mathhexbox@#1#2#3{\text{$\m@th\mathchar"#1#2#3$}}
\newcount\footmarkcount@
\footmarkcount@\z@
\newcount\footmarkcount@@
\def\text@#1{\footmarkcount@@\footmarkcount@\mathchoice
{\hbox{\everymath{\displaystyle}\def\textfonti{\the\textfont\@ne}%
\def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}
{\hbox{\everymath{\textstyle}\def\textfonti{\the\textfont\@ne}%
\def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}
{\hbox{\everymath{\scriptstyle}\def\textfonti{\the\scriptfont\@ne}%
\def\textfontii{\the\scriptfont\tw@}\textdef@@ S\rm#1}}
{\hbox{\everymath{\scriptscriptstyle}\def\textfonti
{\the\scriptscriptfont\@ne}%
\def\textfontii{\the\scriptscriptfont\tw@}\textdef@@ s\rm#1}}%
\advance\footmarkcount@-\footmarkcount@@
\divide\footmarkcount@4 \global\advance\footmarkcount@\footmarkcount@@}
\def\textdef@@#1{\textdef@#1\rm\textdef@#1\bf\textdef@#1\sl\textdef@#1\it}
\def\rmfam{0}
\def\textdef@#1#2{%
\def\next{\csname\expandafter\eat@\string#2fam\endcsname}%
\if S#1\edef#2{\the\scriptfont\next\relax}%
\else\if s#1\edef#2{\the\scriptscriptfont\next\relax}%
\else\edef#2{\the\textfont\next\relax}\fi\fi}
\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
%BUG%\ifundefined{overlay}
%BUG%\scriptfont\itfam\tenit \scriptscriptfont\itfam\tenit
%BUG%\scriptfont\slfam\tensl \scriptscriptfont\slfam\tensl
%BUG%\else
%BUG%\scriptfont\itfam\twentyit \scriptscriptfont\itfam\twentyit
%BUG%\scriptfont\slfam\twentyit \scriptscriptfont\slfam\twentyit
%BUG%\fi
\newif\ifinalign@
\newif\ifingather@
\newif\ifinany@
\newbox\strutbox@
\setbox\strutbox@\hbox{\vrule height8\p@ depth3\p@ width\z@}
\def\strut@{\copy\strutbox@}
\let\@bases@loaded\plainldots@
\else
\typeout{bases.sty already loaded}
\fi
|