\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
