%%
%% This is file `tdsfrmath.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% tdsfrmath.dtx  (with options: `package')
%% This is a generated file.
%% 
%% Copyright (C) 2008 by Yvon Henel
%% dit Ğle TeXnicien de surfaceğ <le.texnicien.de.surface@wanadoo.fr>
%% 
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.2 of this license
%% or (at your option) any later version.  The latest version of this
%% license is in:
%% 
%%    http://www.latex-project.org/lppl.txt
%% 
%% and version 1.2 or later is part of all distributions of LaTeX version
%% 1999/12/01 or later.
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\def\PackageName{tdsfrmath}
\def\fileversion{v1.3}
\def\filedate{2009/06/22}
\def\fileinfo{macros pour les maths
              par Le TeXnicien de surface}
\ProvidesPackage{tdsfrmath}
   [\filedate\space\fileversion\space\fileinfo]
\RequirePackage{ifthen}
\RequirePackage{xkeyval}
\RequirePackage{xstring}
\newcommand{\TdSM@separateur}{\string,\,}
\define@choicekey*+[TdSM]{tdsfrmath.sty}{nupletsep}[\val\nr]%
  {virgule,pointvirgule}{%
    \ifcase\nr\relax
    \renewcommand{\TdSM@separateur}{\string,\,}\or
    \renewcommand{\TdSM@separateur}{\,\string;\,}\fi
  }{%
    \PackageWarningNoLine{tdsfrmath}{la clef <<nupletsep>> ne connait pas
      <<\val>>\MessageBreak <<nupletsep=virgule>> en vigueur}
  }
\let\val\relax
\define@choicekey*+[TdSM]{tdsfrmath.sty}{ensdeco}[\TdSM@DecoChoix\nr]%
  {ehsb,ebsb,ehsh,ebsh,sbeb,sheh}{%
    \PackageInfo{tdsfrmath}{Vous avez choisi \TdSM@DecoChoix\@gobble}
  }{%
    \PackageWarningNoLine{tdsfrmath}{la clef <<ensdeco>> ne connait pas
      <<\TdSM@DecoChoix>>\MessageBreak <<ensdeco=ehsb>> en vigueur}%
    \def\TdSM@DecoChoix{ehsb}}
\define@choicekey*+[TdSM]{tdsfrmath.sty}{placesigne}[\TdSM@PlaSiChoix\nr]%
  {haut,bas}{%
    \PackageInfo{tdsfrmath}{Vous avez choisi \TdSM@PlaSiChoix\@gobble}
  }{%
    \PackageWarningNoLine{tdsfrmath}{la clef <<placesigne>> ne connait pas
      <<\TdSM@PlaSiChoix>>\MessageBreak <<placesigne=haut>> en vigueur}%
    \def\TdSM@PlaSiChoix{haut}}
\define@boolkey+[TdSM]{tdsfrmath.sty}[TdSM@]{CharPoCal}[true]{}%
  {\PackageWarningNoLine{tdsfrmath}{CharPoCal attend la valeur
      << true >> ou << false >>}}
\define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{calpack}[]{}
\define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{calcomd}[]{}
\define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{caloptn}[]{}
\define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{CharPoGdT}[true]{}
\define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{gdtpack}[]{}
\define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{gdtcomd}[]{}
\define@cmdkey[TdSM]{tdsfrmath.sty}[TdSM@]{gdtoptn}[]{}
\define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{taupe}[true]{}
\define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{ArgArcMaj}[true]{}
\define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{suite}[true]{}
\define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{suitedeco}[true]{}
\define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{SepDefEnsExt}[true]{}
\define@boolkey[TdSM]{tdsfrmath.sty}[TdSM@]{avecmathdesign}[true]{}
\ExecuteOptionsX[TdSM]{%
  avecmathdesign=false,%
  taupe=false,%
  ArgArcMaj=false,%
  suite=false,%
  suitedeco=false,%
  nupletsep=virgule,%
  SepDefEnsExt=true,%
  placesigne=haut,%
  ensdeco=ehsb,%
  CharPoCal=true,calpack=mathrsfs,calcomd=mathscr,caloptn=***,%
  CharPoGdT=false,gdtpack=***,gdtcomd=***,gdtoptn=***}
\ProcessOptionsX[TdSM]\relax
\let\nr\relax
\RequirePackage{amsmath}
\ifTdSM@avecmathdesign\else\RequirePackage{amssymb}\fi
\RequirePackage{xspace}
\RequirePackage{xargs}
\RequirePackage{suffix}
\ifTdSM@taupe
\RequirePackage{stmaryrd}
\AtEndOfPackage{%
  \InputIfFileExists{taupe.sto}{%
    \PackageInfo{tdsfrmath}{fichier taupe.sto inclus\@gobble}}{%
    \PackageWarningNoLine{tdsfrmath}{fichier taupe.sto introuvable}}}
\fi
\ifTdSM@suite
\AtEndOfPackage{%
  \InputIfFileExists{suite.sto}{%
    \PackageInfo{tdsfrmath}{fichier suite.sto inclus\@gobble}}{%
    \PackageWarningNoLine{tdsfrmath}{fichier suite.sto introuvable}}}
\fi
\ifTdSM@avecmathdesign
\def\TdSM@MathCalPol{\mathscr}
\PackageInfo{tdsfrmath}{On compte sur mathdesign !\MessageBreak
  La police calligraphique est << mathscr >> \@gobble}
\else
\ifTdSM@CharPoCal
  \PackageInfo{tdsfrmath}{La clef CharPoCal est vraie \@gobble}
  \IfFileExists{\TdSM@calpack.sty}{%
    \ifthenelse{\equal{\TdSM@caloptn}{***}}%
      {\RequirePackage{\TdSM@calpack}}
      {\RequirePackage[\TdSM@caloptn]{\TdSM@calpack}}
    \def\TdSM@MathCalPol{\csname\TdSM@calcomd\endcsname}
    \@ifundefined{TdSM@MathCalPol}%
    {\PackageWarningNoLine{tdsfrmath}{La macro
        << \TdSM@calcomd\space >> n'est pas connue\MessageBreak
        par l'extension \TdSM@calpack\space!\MessageBreak Revoyez
        la valeur de la clef << calcomd >> SVP}}%
    {\PackageInfo{tdsfrmath}{La police calligraphique est obtenue via
        << \TdSM@calcomd\space >>\@gobble}}}%
  {\PackageWarningNoLine{tdsfrmath}
    {Extension \TdSM@calpack\space pas vue sur la
      machine.\MessageBreak
      La police calligraphique est << mathcal >>}
    \def\TdSM@MathCalPol{\mathcal}}
\else
  \PackageInfo{tdsfrmath}{La clef CharPoCal est fausse.\MessageBreak
    La police calligraphique est << mathcal >> \@gobble}
  \def\TdSM@MathCalPol{\mathcal}
\fi
\fi
\newcommand\TdSM@DefinirGrasDefaut{%
  \def\TdSM@MathGdTPol{\mathbb}%
  \PackageInfo{tdsfrmath}{Gras de tableau obtenu par mathbb\@gobble}}
\newcommand\TdSM@SiDefaut[1]{\ifthenelse{\equal{#1}{***}}}
\ifTdSM@CharPoGdT
\PackageInfo{tdsfrmath}{La clef << CharPoGdT >> est vraie\@gobble}
\TdSM@SiDefaut{\TdSM@gdtpack}
{\TdSM@SiDefaut{\TdSM@gdtcomd}
  {\PackageWarningNoLine{tdsfrmath}
    {Je ne comprends pas ce que vous voulez !\MessageBreak
      Vous demandez une autre police de gras de tableau\MessageBreak
      sans donner ni extension (clef gdtpack)\MessageBreak
      ni commande (clef gdtcomd).\MessageBreak
      Revoyez la documentation SVP}
    \TdSM@DefinirGrasDefaut}
  {\def\TdSM@MathGdTPol{\csname\TdSM@gdtcomd\endcsname}
    \@ifundefined{TdSM@MathGdTPol}%
   {\PackageWarningNoLine{tdsfrmath}
     {La macro << \TdSM@gdtcomd\space >> n'est pas connue !\MessageBreak
       Revoyez la valeur de la clef << gdtcomd >> SVP}
     \TdSM@DefinirGrasDefaut}%
   {\PackageInfo{tdsfrmath}
     {Le gras de tableau est obtenu via << \TdSM@gdtcomd\space
       >>\@gobble}}}}
{\IfFileExists{\TdSM@gdtpack.sty}
  {\TdSM@SiDefaut{\TdSM@gdtoptn}
    {\RequirePackage{\TdSM@gdtpack}}
   {\RequirePackage[\TdSM@gdtoptn]{\TdSM@gdtpack}}
   \TdSM@SiDefaut{\TdSM@gdtcomd}
   {\TdSM@DefinirGrasDefaut}
   {\def\TdSM@MathGdTPol{\csname\TdSM@gdtcomd\endcsname}
     \@ifundefined{TdSM@MathGdTPol}
     {\PackageWarningNoLine{tdsfrmath}
       {La macro << \TdSM@gdtcomd\space >> n'est pas connue\MessageBreak
         par l'extension \TdSM@gdtpack\space!\MessageBreak
         Revoyez la valeur de la clef << gdtcomd >> SVP.}}
    {\PackageInfo{tdsfrmath}
      {Le gras de tableau est obtenu via << \TdSM@gdtcomd\space
        >>\@gobble}}}}
  {\PackageWarningNoLine{tdsfrmath}
    {Extension \TdSM@gdtpack\space pas vue sur la machine}
    \TdSM@DefinirGrasDefaut}}
\else
\PackageInfo{tdsfrmath}{La clef << CharPoGdT >> est fausse\@gobble}
\TdSM@DefinirGrasDefaut
\fi
\ifthenelse{\equal{\TdSM@DecoChoix}{ehsb}}%
  {\newcommand\TdSM@Decoration[2]{^{#1}_{#2}}}{%
\ifthenelse{\equal{\TdSM@DecoChoix}{sheh}}%
  {\newcommand\TdSM@Decoration[2]{^{#2#1}}}{%
\ifthenelse{\equal{\TdSM@DecoChoix}{ehsb}}%
  {\newcommand\TdSM@Decoration[2]{^{#1}_{#2}}}{%
\ifthenelse{\equal{\TdSM@DecoChoix}{ebsb}}%
  {\newcommand\TdSM@Decoration[2]{_{#1#2}}}{%
\ifthenelse{\equal{\TdSM@DecoChoix}{sbeb}}%
  {\newcommand\TdSM@Decoration[2]{_{#2#1}}}{%
\ifthenelse{\equal{\TdSM@DecoChoix}{ebsh}}%
  {\newcommand\TdSM@Decoration[2]{^{#2}_{#1}}}{%
}}}}}}
\let\TdSM@DecoChoix=\relax
\ifthenelse{\equal{\TdSM@PlaSiChoix}{haut}}%
  {\newcommand\TdSM@PlaceSigne[1]{^{#1}}}%
  {\newcommand\TdSM@PlaceSigne[1]{_{#1}}}
\let\TdSM@PlaSiChoix=\relax
\newcommandx\EnsembleDeNombre[4]{%
  \ensuremath{%
    \grastab{#1}{%
    \edef\TdSM@arg{\@firstofone#2}%
    \ifthenelse{\equal{\TdSM@arg}{1}}{}{%
    \ifthenelse{\equal{\TdSM@arg}{0}}{\mspace{#4mu}\left[#3\right]}{%
    \ifthenelse{\equal{\TdSM@arg}{*}}{^{\ast}}{%
    \ifthenelse{\equal{\TdSM@arg}{+}}{\TdSM@PlaceSigne{+}}{%
    \ifthenelse{\equal{\TdSM@arg}{-}}{\TdSM@PlaceSigne{-}}{%
    \ifthenelse{\equal{\TdSM@arg}{+*}\or\equal{\TdSM@arg}{*+}}{%
      \TdSM@Decoration{\ast}{+}}{%
    \ifthenelse{\equal{\TdSM@arg}{-*}\or\equal{\TdSM@arg}{*-}}{%
      \TdSM@Decoration{\ast}{-}}{%
    \IfBeginWith{\TdSM@arg}{-}{%
      _{\StrBehind{\TdSM@arg}{-}}\mspace{#4mu}\left[#3\right]}{%
      ^{\TdSM@arg}}}}}}}}}}}\xspace}
\newcommandx\N[2][1=1,2=X]%
     {\EnsembleDeNombre{N}{#1}{#2}{\TdSMReculParenthese}}
\newcommandx\Z[2][1=1,2=X]%
     {\EnsembleDeNombre{Z}{#1}{#2}{\TdSMReculParenthese}}
\newcommandx\Q[2][1=1,2=X]%
     {\EnsembleDeNombre{Q}{#1}{#2}{\TdSMReculParenthese}}
\newcommandx\R[2][1=1,2=X]%
     {\EnsembleDeNombre{R}{#1}{#2}{\TdSMReculParenthese}}
\newcommandx\C[2][1=1,2=X]%
     {\EnsembleDeNombre{C}{#1}{#2}{\TdSMReculParenthese}}
\WithSuffix\newcommand\N*{\N[*]}
\WithSuffix\newcommand\Z*{\Z[*]}
\WithSuffix\newcommand\Q*{\Q[*]}
\WithSuffix\newcommand\R*{\R[*]}
\WithSuffix\newcommand\C*{\C[*]}
\WithSuffix\newcommand\Q+{\Q[+]}
\WithSuffix\newcommand\R+{\R[+]}
\WithSuffix\newcommand\Q-{\Q[-]}
\WithSuffix\newcommand\R-{\R[-]}
\WithSuffix\newcommand\R>{\R[+*]}
\WithSuffix\newcommand\R<{\R[-*]}
\DeclareRobustCommand{\TdSM@Rcomplet}{\ensuremath{\overline{\R}}}
\WithSuffix\newcommand\TdSM@Rcomplet+{\ensuremath{\overline{\R+}}}
\WithSuffix\newcommand\R/{\TdSM@Rcomplet}
\newcommand\TdSMnuplet[1]{\TdSM@nuplet #1 \@nil}
\def\TdSM@nuplet #1#2 #3{%
  \ifx\@nil #3%
  #1#2%
  \else
  #1#2\TdSM@separateur%
  \TdSM@nupletaux #3\fi}
\def\TdSM@nupletaux#1\fi{
  \fi\TdSM@nuplet#1}
\newboolean{TdSM@horstexterequis}
\setboolean{TdSM@horstexterequis}{false}
\newcommandx{\EncloreExtensible}[4][1=1]{%
  \ifthenelse{#1=0}%
  {\setboolean{TdSM@horstexterequis}{true}}%
  {\setboolean{TdSM@horstexterequis}{false}}%
  \ifmmode\ifinner\else
    \setboolean{TdSM@horstexterequis}{true}%
  \fi\else\fi
  {\ensuremath{%
      \ifthenelse{\boolean{TdSM@horstexterequis}}%
      {\displaystyle\def\TdS@v@nt{\left #2}\def\TdS@pr@s{\right #3}}%
      {\ifthenelse{\equal{#2}{.}}%
        {\def\TdS@v@nt{\relax}}%
        {\def\TdS@v@nt{\mathopen#2}}%
       \ifthenelse{\equal{#3}{.}}%
         {\def\TdS@pr@s{\relax}}
         {\def\TdS@pr@s{\mathclose#3}}}%
      \TdS@v@nt #4 \TdS@pr@s}}}
\newcommandx{\parent}[2][1=1]{\EncloreExtensible[#1]{(}{)}{#2}}
\newcommandx{\accol}[2][1=1]{\EncloreExtensible[#1]{\{}{\}}{#2}}
\newcommandx{\crochet}[2][1=1]{\EncloreExtensible[#1]{[}{]}{#2}}
\newcommandx{\varabs}[2][1=1]{%
  \EncloreExtensible[#1]{\lvert}{\rvert}{#2}}
\newcommandx{\norme}[2][1=1]{\EncloreExtensible[#1]{\lVert}{\rVert}{#2}}
\newcommand{\nuplet}[2][1]{\parent[#1]{\TdSMnuplet{#2}}}
\newcommand{\anuplet}[2][1]{\accol[#1]{\TdSMnuplet{#2}}}
\newcommand\TdSMReculParenthese{-2}
\newcommandx\rnuplet[3][1=1,3=\TdSMReculParenthese]{%
  \mspace{#3mu}\nuplet[#1]{#2}}
\newcommand{\definirvecteur}[4][***]{%
  \ifthenelse{\equal{#1}{***}}%
  {\@ifundefined{vect#2}%
    {\expandafter\def\csname vect#2\endcsname{%
        \TdSM@fairevecteur{#2}{#3}{#4}\xspace}}%
    {\PackageError{tdsfrmath}%
      {Erreur il y a un vecteur de nom << #2 >>}%
      {Vous pouvez utiliser la macro << redefinivecteur >>
       \MessageBreak
       si c'est bien le nom que vous vouliez}}}%
  {\@ifundefined{vect#1}%
    {\expandafter\def\csname vect#1\endcsname{%
        \TdSM@fairevecteur{#2}{#3}{#4}\xspace}}%
    {\PackageError{tdsfrmath}%
      {Erreur il y a un vecteur de nom << #1 >>}%
      {Vous pouvez utiliser la macro << redefinivecteur >>
       \MessageBreak
       si c'est bien le nom que vous vouliez}}}}
\newcommand{\redefinirvecteur}[4][***]{%
  \ifthenelse{\equal{#1}{***}}%
  {\@ifundefined{vect#2}%
    {\PackageError{tdsfrmath}%
      {Erreur il n'y a pas de vecteur de nom << #2 >>}%
      {Vous pouvez utiliser la macro << definivecteur >>
       \MessageBreak
       si c'est bien le nom que vous vouliez}}
    {\expandafter\let\csname vect#1\endcsname=\relax%
     \definirvecteur[#1]{#2}{#3}{#4}}}%
  {\@ifundefined{vect#1}%
    {\PackageError{tdsfrmath}%
      {Erreur il n'y a pas de vecteur de nom << #1 >>}%
      {Vous pouvez utiliser la macro << definivecteur >>
       \MessageBreak
       si c'est bien le nom que vous vouliez}}
    {\expandafter\let\csname vect#1\endcsname=\relax%
     \definirvecteur[#1]{#2}{#3}{#4}}}}
\definirvecteur[i]{\imath}{-1}{3}
\definirvecteur[j]{\jmath}{0}{5}
\definirvecteur{k}{-1}{1}
\definirvecteur{u}{0}{3}
\definirvecteur{v}{0}{3}
\newcommand\TdSM@fairevecteur[3]{%
  \ensuremath{\overrightarrow{\mspace{#2mu}{#1}\mspace{#3mu}}}}
\newcommandx\vecteur[3][1=1,3=5]{\TdSM@fairevecteur{#2}{#1}{#3}}
\WithSuffix\newcommandx\vecteur*[3][1=1,3=5]{\vecteur{\text{#2}}}
\newcommand{\V}{\vecteur}
\newcommand\TdSM@ErreurArgBase{%
  \PackageError{tdsfrmath}{Argument optionnel hors limites}{%
    L'argument optionnel vaut 2 par defaut\MessageBreak
    mais ne prend que les valeurs 1, 2 ou 3.}}
\newcommand{\base}[1][2]{%
  \ifcase #1\TdSM@ErreurArgBase\or
  \nuplet{\vecti}\or
  \nuplet{\vecti{} \vectj}\or
  \nuplet{\vecti{} \vectj{} \vectk}\or
  \TdSM@ErreurArgBase\fi\xspace}
\newcommandx{\repere}[2][1=2,2=O]{%
  \ifcase #1\TdSM@ErreurArgBase\or
  \nuplet{#2 \vecti}\or
  \nuplet{#2 \vecti{} \vectj}\or
  \nuplet{#2 \vecti{} \vectj{} \vectk}\or
  \TdSM@ErreurArgBase\fi\xspace}
\newcommand{\rog}{rep\`ere orthogonal \repere}
\newcommand{\ron}{rep\`ere orthonormal \repere}
\newcommand{\rond}{rep\`ere orthonormal direct \repere}
\newcommand{\repcom}{\nuplet{O \vectu{} \vectv}\xspace}
\newcommand{\roncom}{rep\`ere orthonormal \repcom}
\newcommand{\rondcom}{rep\`ere orthonormal direct \repcom}
\newcommand{\Repere}{\nuplet{O I J}}
\WithSuffix\newcommand\Repere*{\nuplet{\text{O} \text{I} \text{J}}}
\newcommand{\Rog}{rep\`ere orthogonal \Repere}
\newcommand{\Ron}{rep\`ere orthonormal \Repere}
\newcommand{\Rond}{rep\`ere orthonormal direct \Repere}
\newcommand*\E{\ensuremath{\textup{e}}\xspace}
\newcommand*\eu[1]{\ensuremath{\E^{#1}}}
\newcommand\I{\ensuremath{\textup{i}}\xspace}
\newmuskip\TdSM@reculintegrande
\newmuskip\TdSM@avancedx
\TdSM@reculintegrande=6mu
\TdSM@avancedx=4mu
\newcommand\FixeReculIntegrande[1]{\TdSM@reculintegrande=#1mu}
\newcommand\FixeAvanceDx[1]{\TdSM@avancedx=#1mu}
\providecommand*\D{\textup{d}}
\newcommandx{\intgen}[5][1=1,2=\the\TdSM@reculintegrande]{%
  \ensuremath{%
  \ifnum #1=0\displaystyle\fi
  \int_{#3}^{#4}\mspace{-#2}{#5}}}
\newcommandx{\integrer}[7]%
[1=1,2=\the\TdSM@reculintegrande,7=\the\TdSM@avancedx]{%
  \ensuremath{%
  \ifnum #1=0\displaystyle\fi
  \int_{#3}^{#4}{\mspace{-#2}{#5}\mspace{#7}\D{#6}}}}
\newcommandx{\integrale}[7]%
[1=1,2=\the\TdSM@reculintegrande,7=\the\TdSM@avancedx]{%
  \integrer[#1][#2]{#3}{#4}{#5(#6)}{#6}[#7]}
\newcommandx{\intabfx}[3]%
[1=1,2=\the\TdSM@reculintegrande,3=\the\TdSM@avancedx]{%
  \integrale[#1][#2]{a}{b}{f}{x}[#3]\xspace}
\newcommand{\plusinf}{\ensuremath{+\infty}\xspace}
\newcommand{\moinsinf}{\ensuremath{-\infty}\xspace}
\newcommand{\TdSM@dedans}[3]{\mspace{#1mu}\TdSMnuplet{#2}\mspace{#3mu}}
\newcommandx{\interff}[4][1=1,2=1,4=0]%
  {\crochet[#1]{\TdSM@dedans{#2}{#3}{#4}}}
\newcommandx{\interoo}[4][1=1,2=1,4=0]{%
  \EncloreExtensible[#1]{]}{[}{\TdSM@dedans{#2}{#3}{#4}}}
\newcommandx{\interof}[4][1=1,2=1,4=0]{%
  \EncloreExtensible[#1]{]}{]}{\TdSM@dedans{#2}{#3}{#4}}}
\newcommandx{\interfo}[4][1=1,2=1,4=0]{%
  \EncloreExtensible[#1]{[}{[}{\TdSM@dedans{#2}{#3}{#4}}}
\newcommandx{\intferab}[2][1=1,2=0]{\interff[#1]{a b}[#2]}
\newcommand{\mdfrac}[2]{\ensuremath{\dfrac{#1}{#2}}}
\newcommand{\mfrac}[2]{\ensuremath{\frac{#1}{#2}}}
\newcommand*{\manus}[1]{%
  \ensuremath{\TdSM@MathCalPol{\MakeUppercase{#1}}}}
\newcommand*{\grastab}[1]{%
  \ensuremath{\TdSM@MathGdTPol{#1}}}
\newcommand*{\cnp}[2]{\ensuremath{\binom{#1}{#2}}}
\newcommand*{\dans}{\longrightarrow}
\newcommand*{\donne}{\longmapsto}
\newcommand*{\vide}{\ensuremath{\varnothing}\xspace}
\newcommand*{\ppq}{\ensuremath{\leqslant}}
\newcommand*{\pgq}{\ensuremath{\geqslant}}
\newcommand*{\TdSMsepdefens}{/}
\ifTdSM@SepDefEnsExt
\newcommandx*{\ensemble}[4][1=3,4=3]{%
  \accol{{#2}%
    \mspace{#1mu}%
    \ifthenelse{\boolean{TdSM@horstexterequis}}{\middle}{}%
    \TdSMsepdefens
    \mspace{#4mu}%
    {#3}}}
\else
\newcommandx*{\ensemble}[4]{%
  \accol{{#2}\mspace{#1mu}\TdSMsepdefens\mspace{#4mu}{#3}}}
\fi
\endinput
%%
%% End of file `tdsfrmath.sty'.
