%% %% 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ğ %% %% 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 <> ne connait pas <<\val>>\MessageBreak <> 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 <> ne connait pas <<\TdSM@DecoChoix>>\MessageBreak <> 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 <> ne connait pas <<\TdSM@PlaSiChoix>>\MessageBreak <> 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'.