\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{minipfm}[6/8/2010 Des macros pour les profs de maths]
%%% version allégée de profmath.sty pour utilisation avec le site prof.math (compilation d'exercices)


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Chargement de fichiers de macros nécessaires à la définition des macros de 
%%% ce fichier.
\RequirePackage{amsmath}
\RequirePackage{ifthen}
\RequirePackage{calc}
\RequirePackage{xspace}
%\RequirePackage{yhmath}% pour les arcs
\ifx\undefined\psline\RequirePackage[fr]{pfmfig}\fi% pour les figures en PSTricks
\RequirePackage{eurosym}% pour le symbole de l'euro
\RequirePackage{fixltx2e}% pour la commande TextOrMath
%\RequirePackage{ifpdf}% pour tablor
\RequirePackage[xcas]{pro-courbes}
\RequirePackage[xcas]{pro-tablor}
%\RequirePackage[dvips]{graphicx}
\RequirePackage{lmodern}
\RequirePackage[utf8]{inputenc}
\RequirePackage[french]{babel}
\RequirePackage{frcursive}% pour les réponses en cursive
\RequirePackage{fancybox} % pour le cadre entourant le titre (ombré)
\RequirePackage{calrsfs} % pour les lettres calligraphiées
\RequirePackage{answers}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% 	MACROS DE MISE EN PAGE, DE LISTES, DE TABLEAUX, ETC.
%%% 


%%% Traitement du cas où ce fichier de macros n'a pas été chargé depuis profmath.cls ou tout autre fichier de classe définissant \exo,\qst, etc.
%%% Ceci permet d'utiliser les exercices de la base du site Internet prof.math.free.fr sans la classe profmath.cls.
%\ifx\qst\undefined\RequirePackage{pfmexos}\fi% gestion des exercices


%%% TABFIG			21-10-99
%%% Met côte à côte un texte donné dans #1 et une figure donnée dans #2
%%% (par exemple) voir ref1, chap 8.

\newlength{\largeurtexte}
\newlength{\largeurfigure}
\long\def\tabfig#1#2{\par\leavevmode\unskip%
\settowidth{\largeurfigure}{#2}
\setlength{\largeurtexte}{\hsize - \largeurfigure - 2em} 
\kern -0.7em\hbox{\vtop{\hsize \largeurtexte #1}%
\quad\vrule\quad\vtop{\hsize \largeurfigure \null #2}}
}


%%% MULTILIGNE
%%% Pour la mise en page d'égalités multiples sur plusieurs lignes
%%% Exemple : 
%%% \multiligne{
%%%		\cos(a+b) 
%%%		& = &
%%%		\cos(a-(-b)) = \cos a \cos(-b) - \sin a \sin(-b)
%%%		\\
%%%		& = &
%%%		\cos a \cos b - \sin a \sin b.
%%% 		}

\newcommand{\multiligne}[1]
{\hskip -0.3em\ensuremath{\begin{array}[t]{ccl}#1\end{array}}}


%%% TABLEAU, réf1, p 207		26-10-2001
%%% En voici un exemple \tableau{gd|dgc}
%%% \tableau{gd|cg}
%%% salut & mes & bons & amis
%%% \\
%%% salutsalutsalut & salutsalutles & salutsalutamis &s alutsalutsalut
%%% \fintableau
%%% La macro utilise tabular ou array suivant le mode.

\newcommand{\tableau}[1]{
\def\@newpreamb{}
\def\@trad##1{
\if ##1g{\gdef\@letr{l}}
\else{\if ##1d{\gdef\@letr{r}}
\else{\gdef\@letr{##1}}\fi}\fi
\let\@pream\@newpreamb
\edef\@newpreamb{\@pream\@letr}
}
\def\@traduc ##1{\ifx ##1-\let\@traduc=\relax
		\else\@trad{##1}\fi\@traduc}
\@traduc #1-
\ifmmode\begin{array}{\@newpreamb}%
\else\begin{tabular}{\@newpreamb}%
%\else{\@newpreamb}%
\fi}
\newcommand{\fintableau}{\ifmmode\end{array}%
\else\end{tabular}%
\fi}



% Les macros suivantes peuvent servir dans les tableaux de signes, etc.

\newcommand{\zerotab}{\vline\hbox to 0cm{\hspace{-0.29em}0}}
\newcommand{\valint}{\vline\hspace{2pt}\vline}
\newcommand{\septab}{\vline}
% L'utilisation de centering nécessite de remplacer le retour à la ligne \\ par 
% un retour chariot \cr
\newcommand{\moins}{\centering\ensuremath{-}}
\newcommand{\plus}{\centering $+$}




%%% ENCADREMENTS DE TEXTES

% Encadre un mot ou une formule en mode texte ou mathématique
\newcommand{\encadre}[1]{\ifmmode\boxed{#1}\else\fbox{#1}\fi}


% Crée un cadre centré sur le reste de la ligne pour #1 (si #1 fait moins d'une ligne).
% Un paramètre prop peut être passé si le cadre est en première ligne d'une propriété.
\newcommand{\enc}[2][]{\ifthenelse{\equal{#1}{prop}}{\mbox{}\par\nobreak\vskip-\baselineskip%
\noindent}{}%
\hfill\fbox{#2}\hfill}

% Idem avec des espaces desssus et dessous
\newcommand{\Enc}[2][]{\smallskip\enc[#1]{#2}\smallskip}

% Formule finissant une phrase
\newcommand{\encpoint}[2][]{\ifthenelse{\equal{#1}{prop}}{\mbox{}\par\nobreak\vskip-\baselineskip\noindent}{}%
\hfill\fbox{#2}.\hfill}
\newcommand{\Encpoint}[2][]{\smallskip\encpoint[#1]{#2}\smallskip}


% Crée un ``petit'' cadre justifié à gauche pour #1 (si #1 fait moins d'une ligne).
% Un paramètre prop peut être passé si le cadre est en première ligne d'une propriété.
\newcommand{\pcadre}[2][]{\ifthenelse{\equal{#1}{prop}}{\mbox{}\par\nobreak\vskip-\baselineskip\noindent}{}%
\fbox{#2}}

% Idem avec des espaces desssus et dessous
\newcommand{\Pcadre}[2][]{\smallskip\pcadre[#1]{#2}\smallskip}

% Formule finissant une phrase
\newcommand{\pcadrepoint}[2][]{\ifthenelse{\equal{#1}{prop}}{\mbox{}\par\nobreak\vskip-\baselineskip%
\noindent}{}%
\fbox{#2}.}

\newcommand{\Pcadrepoint}[2][]{\smallskip\pcadrepoint[#1]{#2}\smallskip}






% Crée un cadre faisant la largeur de la page (à utiliser quand #1 % fait plus d'une ligne)
% le \cr à la place de \\ permet des constructions du genre
% \cadre{\centering Mon texte sur plusieurs lignes...}
\newcommand{\cadre}[2][]{\ifthenelse{\equal{#1}{prop}}{\mbox{}\par\nobreak\vskip-\baselineskip%
\noindent}{}%
\begin{tabular}{|p{\columnwidth-5mm}|}%
\hline%
#2%
\cr\hline%
\end{tabular}}

% variante avec espace ajouté
\newcommand{\Cadre}[2][]{\medskip\cadre[#1]{#2}\medskip}

% variante avec cadre double
\newcommand{\cadredouble}[2][]{\ifthenelse{\equal{#1}{prop}}{\mbox{}\par\nobreak\vskip-\baselineskip%
\noindent}{}%
\begin{tabular}{||p{\columnwidth-5mm}||}%
\hline%
#2%
\cr\hline%
\end{tabular}}


% encadrement avec une boîte ombrée (requiert fancybox)
\newenvironment{cadreombre}
{\shadowbox\bgroup\vbox\bgroup\medskip}{\egroup\egroup}


% encadrement avec une boîte ovale (requiert fancybox)
\newenvironment{cadreoval}
{\ovalbox\bgroup\vbox\bgroup\medskip}{\egroup\egroup}




%%% ESPACEMENTS
%%% écarte les lignes d'un tableau ou deux lignes de texte, 
%%% "trait vertical invisible", réf1
\newcommand{\tvi}{\vrule height 1.33ex depth 0.58ex width 0pt}
\newcommand{\gtvi}{\vrule height 1.6ex depth 0.83ex width 0pt}
\newcommand{\tgtvi}{\vrule height 2ex depth 1.2ex width 0pt}
\newcommand{\ttgtvi}{\vrule height 3ex depth 1.5ex width 0pt}
\newcommand{\ptvi}{\vrule height 1.2ex depth 0.5ex width 0pt}
\newcommand{\tptvi}{\vrule height 0.83ex depth 0.25ex width 0pt}

%%% trait de séparation centré
\newcommand{\sep}{\noindent\par\smallskip\hfil\rule{\linewidth/3}{0.4mm}\hfil\par\smallskip}



%%% créé une boite vide : utile pour laisser de la place dans un document réponse 
%%% \espacevide{largeur}{hauteur} en précisant l'unité de dimension (cm, ex, pt...)

\newcommand{\espacevide}[2]{\vbox to #2{\hbox to #1{}}}

%%% centre un texte
\newcommand{\centrer}[1]{\hspace*{\stretch{1}}{#1}\hspace*{\stretch{1}}}



%%% Ce qui suit permet d'obtenir des symboles >= et <= "normaux"
%%% voir réf.1, p 36
\font\msamdix=msam10
\font\msamsept=msam7
\font\msamcinq=msam5
\newfam\famillemsam
\textfont\famillemsam=\msamdix
\scriptfont\famillemsam=\msamsept
\scriptscriptfont\famillemsam=\msamcinq
\def\hexa #1{\ifcase #1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or A\or B\or C\or D\or E\or F\fi}
\mathchardef\le="3\hexa\famillemsam36
\mathchardef\ge="3\hexa\famillemsam3E
%%%

%\providecommand{\dps}{\displaystyle}
\providecommand{\dsp}{\displaystyle}

% Changement de syntaxe : $\cal{C}$ devient \cal C, réf.1 p39
\let\vieuxcal=\cal
\def\cal #1{\ensuremath{{\vieuxcal #1}}}





%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% 		MACROS POUR LES EXPRESSIONS MATHEMATIQUES
%%%
%%% ENSEMBLES
%%%
%%% Ecrit le nom IR, IR* et IR+ de l'ensemble des réels
%%% Pb : lettres trop grandes en indice (exemple : (u_n)_{n\in\N})

\newcommand{\R}{\mbox{I\hspace{-.15em}R}\xspace}
\newcommand{\Ret}{\mbox{I\hspace{-.15em}R$^*$}\xspace}
\newcommand{\Rplus}{\mbox{I\hspace{-.15em}R$^+$}\xspace}
\newcommand{\Rmoins}{\mbox{I\hspace{-.15em}R$^-$}\xspace}
\newcommand{\Rpluset}{\mbox{I\hspace{-.15em}R$^{+*}$}\xspace}
\newcommand{\Rmoinset}{\mbox{I\hspace{-.15em}R$^{-*}$}\xspace}
%%% Ecrit le nom N, N* de l'ensemble des entiers naturels
\newcommand{\N}{\mbox{I\hspace{-.15em}N}\xspace}
\newcommand{\Net}{\mbox{I\hspace{-.15em}N$^*$}\xspace}
%%% Ecrit le nom D de l'ensemble des décimaux
\newcommand{\D}{\mbox{I\hspace{-.15em}D}\xspace}
%%% Ecrit le nom C, C* de l'ensemble des complexes
\newcommand{\C}{\mbox{\,l\hspace{-.47em}C}\xspace}
\newcommand{\Cet}{\mbox{\,l\hspace{-.47em}C$^*$}\xspace}
%%% Ecrit le nom Z, Z* de l'ensemble des entiers relatifs
\newcommand{\Z}{\mbox{Z\hspace{-.3em}Z}\xspace}
\newcommand{\Zet}{\mbox{Z\hspace{-.3em}Z$^*$}\xspace}
%% Ecrit le nom Q, Q* de l'ensemble des rationnels
\newcommand{\Q}{\mbox{l\hspace{-.47em}Q}\xspace}
\newcommand{\Qet}{\mbox{l\hspace{-.47em}Q$^*$}\xspace}
%%%
%%% Symboles liés aux ensembles
\newcommand{\union}{\ensuremath{\cup}\xspace}
\newcommand{\inter}{\ensuremath{\cap}\xspace}
\newcommand{\dans}{\ensuremath{\in}\xspace}
\newcommand{\inclus}{\ensuremath{\subset}\xspace}
\newcommand{\vide}{\ensuremath{\emptyset}\xspace}
\newcommand{\reunion}[3]{\ensuremath{\dps \overset{#2}{\underset{#1}{\bigcup}}{#3}}}
\newcommand{\intersection}[3]{\ensuremath{\dps \overset{#2}{\underset{#1}{\bigcap}}{#3}}}


%%% INTERVALLES
\newcommand{\intff}[2]{\ensuremath{\left[\, #1\> ;\> #2\, \right]}}
\newcommand{\intoo}[2]{\ensuremath{\ \left]\, #1\> ;\> #2\, \right[\ }}
\newcommand{\intof}[2]{\ensuremath{\ \left]\, #1\> ;\> #2\, \right]}}
\newcommand{\intfo}[2]{\ensuremath{\left[\,#1\>;\>#2\,\right[\ }}
\newcommand{\intffab}{\intff{a}{b}\xspace}
\newcommand{\intooab}{\intoo{a}{b}\xspace}
\newcommand{\intrpl}{\intfo{0}{+\infty}\xspace}
\newcommand{\intrplet}{\intoo{0}{+\infty}\xspace}
\newcommand{\intervalentier}[2]{\ensuremath{\left[\!\left[\> #1\> ;\> #2\> \right]\!\right]}}
\newcommand{\interzn}{\intervalentier{0}{n}\xspace}


%%% FRACTIONS
% Cette macro créée une fraction avec des espaces verticaux augmentés 
% dans un tableau ou dans du texte
\newcommand{\Dfrac}[2]{\dfrac{\strut #1}{\strut #2}}





%%% valeur absolue
\newcommand{\varabs}[1]{\ensuremath{\left|\,{#1}\,\right|}}


%%% INTEGRALES
%\newcommand{\integrale}[4]{\ensuremath{\displaystyle \int_{#1}^{#2}{\!{#3}({#4})\,d{#4}}}}
\newcommand{\integrale}[4]{\ensuremath{\displaystyle \int_{#1}^{#2}{\!{#3}\,\mathrm{d}{#4}}}}
\newcommand{\intabfx}{\integrale{a}{b}{f(x)}{x}\xspace}
\newcommand{\intabx}[1]{\integrer{a}{b}{#1}{x}\xspace}

%%% Sommes
\newcommand{\somme}[4]{\ensuremath{\sum_{#1=#2}^{#3}{#4}}}
\newcommand{\Somme}[4]{\ensuremath{\displaystyle\sum_{#1=#2}^{#3}{#4}}}


 
  
%%% LIMITES
\newcommand{\tendvers}{\ensuremath{\longrightarrow}\xspace}
% limite quand #1 tend vers #2
\newcommand{\li}[2]{\ensuremath{\lim \limits_{#1\rightarrow #2 } }}
% limite quand #1 tend vers #2 à gauche ou à droite (#3 = < ou >)
\newcommand{\limite}[3]{\ensuremath{\lim \limits_{#1\to #2 \atop #1 #3 #2}}\,} 



%%% SUITES
%%% taper \suite un
\newcommand{\suite}[2]{\ensuremath{\bigl(#1_#2\bigr)_{#2\in\N N}}}


%%% TRIGO
\newcommand{\pisur}[1]{\ensuremath{\frac{\pi}{#1}}\xspace}
\newcommand{\Pisur}[1]{\ensuremath{\displaystyle{\frac{\pi}{#1}}}\xspace}
\newcommand{\PISUR}[1]{\ensuremath{\dfrac{\strut\pi}{\strut#1}}\xspace}



%%% SYMBOLES LOGIQUES
\newcommand{\impl}{\ensuremath{\Rightarrow\,}\xspace}
\newcommand{\pourtt}{\ensuremath{\forall \,}}
\newcommand{\existe}{\ensuremath{\exists \,}}
\newcommand{\ssi}{\ensuremath{\Longleftrightarrow}\xspace}


% Ces trois macros existaient déjà dans babel[french] ! (d'où providecommand) 
\providecommand{\ieme}{\ensuremath{^{\mbox{\scriptsize ème}}}\xspace}  
\providecommand{\ier}{\ensuremath{^{\rm er}}\xspace}
\providecommand{\iere}{\ensuremath{^{\mbox{\scriptsize ère}}}\xspace}




%%% SYSTEMES 

% nombre quelconque d'équations
% Syntaxe :
% \begin{systeme}
% 2x+3y=0
% \\
% x-2y=1
% \end{systeme}

\newenvironment{systeme}{%
\left\lbrace
\begin{array}{l}
}{%
\end{array}
\right.
}



%%% QUELQUES SYMBOLES D'USAGE COURANT
\newcommand{\point}{\ensuremath{\bullet}\xspace}
\newcommand{\bs}{\ensuremath{\symbol{'134}}\xspace}% pour le backslash
% définition de °, il suffit ensuite de taper ° dans le texte !
% \catcode`\°=\active\def°{\ensuremath{^{\circ}}}
% \catcode`\°=\active
% \def°{\ensuremath{^{\circ}}}
\DeclareUnicodeCharacter{00B0}{\TextOrMath{}{\mbox}\degre}
\newcommand{\env}{\ensuremath{\approx}\xspace}
\newcommand{\fois}{\ensuremath{\times}\xspace}
\newcommand{\minfini}{\ensuremath{-\infty}\xspace}
\newcommand{\pinfini}{\ensuremath{+\infty}\xspace}
\newcommand{\plusinf}{\ensuremath{+\, \infty}\xspace}
\newcommand{\moinsinf}{\ensuremath{-\, \infty}\xspace}



%%% COMPLEXES
\newcommand{\zbar}{\ensuremath{\bar{z}}\xspace}
\newcommand{\conjugue}[1]{\ensuremath{\overline{\ptvi #1}}\xspace}
\newcommand{\module}[1]{\ensuremath{|#1|}\xspace}
\newcommand{\modz}{\ensuremath{|z|}\xspace}
\newcommand{\Imm}{\ensuremath{\Im\mbox{m}}\xspace}
\newcommand{\Ree}{\ensuremath{\Re\mbox{e}}\xspace}
\newcommand{\ei}[1]{\ensuremath{\,\mbox{e}^{\mathrm{i}#1}}}
\newcommand{\emi}[1]{\ensuremath{\,\mbox{e}^{-\mathrm{i}#1}}}
\newcommand{\eipisur}[1]{\ensuremath{\,\mbox{e}^{\mathrm{i}\frac{\pi}{#1}}}}
\newcommand{\emipisur}[1]{\ensuremath{\,\mbox{e}^{-\mathrm{i}\frac{\pi}{#1}}}}
\newcommand{\eitheta}{\ensuremath{\,\mbox{e}^{\mathrm{i}\theta}}}
\newcommand{\emitheta}{\ensuremath{\,\mbox{e}^{-\mathrm{i}\theta}}}
\newcommand{\rhoeitheta}{\ensuremath{\rho\,\mbox{e}^{\mathrm{i}\theta}}}
\newcommand{\rhoemitheta}{\ensuremath{\rho\,\mbox{e}^{-\mathrm{i}\theta}}}
%\newcommand{\e}{{\rm e}}
\DeclareMathOperator{\e}{e}
\def\expo #1 {\ensuremath{\,\e^{#1}}}
% ne pas oublier l'espace après le paramètre !


%%% TAILLE DU TEXTE
% Utiliser des accolades pour limiter la portée (par exemple {\taille{20} un test}).
% Le second paramètre est la taille des caractères en points (celle des 
% caractères normaux est définie dans \documentclass[taille]{...}), le 
% premier, optionnel, est l'interlignage en centimètres.
% Dans ce cas, taper \taille[1]{16} pour une taille de 16 points
% et un interlignage de 1 cm.
% L'interlignage ne fonctionne pas dans un groupe {}.
\newcommand{\taille}[2][1]{\fontsize{#2}{#1em}\selectfont}


\newcommand{\Xbar}{\ensuremath{\overline{\rule{0mm}{1.7ex}X}}\xspace}


% angle géométrique, taper par exemple \angle BAC
\renewcommand{\angle}[3]{\ensuremath{\widehat{#1#2#3}}}
%\def\angle#1#2#3{\ensuremath{\widehat{#1#2#3}}}

% mesure algébrique, taper \mesalg AB
\newcommand{\mesalg}[2]{\ensuremath{\overline{#1#2}}}

% arc de cercle, taper par exemple \arc{ACB}
% la commande \arc est déjà définie par, par exemple, (e)epic, d'où le providecommand

\providecommand{\Arc}[1]{\ensuremath{\mathord{\mathchoice
{\shortstack[b]{\raisebox{-.6ex}[.4ex][-.2ex]{$\displaystyle\frown$}\\$\displaystyle#1$}}
{\shortstack[b]{\raisebox{-.6ex}[.4ex][-.2ex]{$\frown$}\\$#1$}}
{\shortstack[b]{\raisebox{-.6ex}[.4ex][-.2ex]{$\scriptstyle\frown$}\\$\scriptstyle #1$}}
{\shortstack[b]{\raisebox{-.5ex}[.4ex][-.2ex]{$\scriptscriptstyle\frown$}\\$\scriptscriptstyle #1$}}}}}
% \def\Arc#1{\ensuremath{\mathord{\mathchoice
% {\shortstack[b]{\raisebox{-.6ex}[.4ex][-.2ex]{$\displaystyle\frown$}\\$\displaystyle#1$}}
% {\shortstack[b]{\raisebox{-.6ex}[.4ex][-.2ex]{$\frown$}\\$#1$}}
% {\shortstack[b]{\raisebox{-.6ex}[.4ex][-.2ex]{$\scriptstyle\frown$}\\$\scriptstyle #1$}}
% {\shortstack[b]{\raisebox{-.5ex}[.4ex][-.2ex]{$\scriptscriptstyle\frown$}\\$\scriptscriptstyle #1$}}}}}



%%% VECTEURS ET MATRICES
%%% Vecteur "une lettre", par exemple \vect u   
\newcommand{\vect}[1]{\ensuremath{\vec #1}} 

%%% Vecteurs d'usage courant
\newcommand{\vecti}{\ensuremath{\vec{\imath}}\xspace}
\newcommand{\vectj}{\ensuremath{\vec{\jmath}}\xspace}
\newcommand{\vectk}{\ensuremath{\vec{k}}\xspace}
\newcommand{\vectu}{\ensuremath{\vec{u}}\xspace}
\newcommand{\vectv}{\ensuremath{\vec{v}}\xspace}
\newcommand{\vectw}{\ensuremath{\vec{w}}\xspace}
\newcommand{\vectnul}{\ensuremath{\vec{0}}\xspace}


%%% Vecteur "deux lettres", par exemple \Vect AB
%%% commande récupérée sur internet dans un fichier preambul.tex
\newcommand{\Vect}[2]
{\setbox0\hbox{$#1#2$}\setbox1\copy0\ht1 0.8\ht0%
\setbox2\hbox{\ensuremath{\mathord{\mathop{\smash{#1#2}%
\vphantom{\copy1}\mskip0.8\thinmuskip}%
\limits^{\hbox to\wd0{$\mskip0.8\thinmuskip$\rightarrowfill}}\mskip-0.8\thinmuskip}}}%
\setbox3\copy2\ht3 0.83\ht2\ensuremath{\box3}}

%%% idem mais avec un peu plus d'espace au dessus
\newcommand{\VECT}[2]
{\ensuremath{\mathord{\setbox0\hbox{$#1#2$} \mathop{\smash{#1#2}\setbox1\copy0\ht1 0.8\ht0
\vphantom{\copy1}\mskip0.8\thinmuskip}
\limits^{\hbox to\wd0{$\mskip0.8\thinmuskip$\rightarrowfill}}\mskip-0.8\thinmuskip}}}


\def\vecteur#1{\Vect #1}



%%% norme : taper \norme{\vectu}
\newcommand{\norme}[1]{\ensuremath{\left\|\,{#1}\,\right\|}}
%%% produit scalaire : par exemple, \prosc ABAD 
\newcommand{\prosc}[4]{\ensuremath{\Vect#1#2\,.\,\Vect#3#4}}
%%% produit vectoriel : par exemple, \prov ABAD
\newcommand{\prov}[4]{\ensuremath{\Vect#1#2\,\land\,\Vect#3#4}}


%%% Angles orientés de deux vecteurs : par exemple, \anglo ABAD
\newcommand{\anglo}[4]{\ensuremath{(\Vect#1#2\,,\,\Vect#3#4)}}



%%% REPERES ET COORDONNÉES
%%% repère orthonormé dans le plan 
\newcommand{\ron}{\ensuremath{% 
\left( O \; ; \, \vecti\; ,\,\vectj\,\right)}\xspace} 
\newcommand{\Ron}{rep\`{e}re orthonormé \ensuremath{% 
\left( O \; ; \, \vecti\; ,\,\vectj\,\right)}\xspace} 

\let\Oij\ron

% axes de coordonnées
\newcommand{\Oi}{\ensuremath{% 
\left( O \; ; \, \vecti \right)}\xspace} 

\newcommand{\Oj}{\ensuremath{% 
\left( O \; ; \, \vectj \right)}\xspace} 

\newcommand{\Ok}{\ensuremath{% 
\left( O \; ; \, \vec{k} \right)}\xspace} 



%%% repère orthonormal dans le plan complexe
\newcommand{\roncom}{\ensuremath{%
\left( O \, ; \vect u \, , \vect v\right)}\xspace}
\newcommand{\Roncom}{rep\`{e}re orthonormal \ensuremath{%
\left( O \,  ; \vect u \,  , \vect v\right)}\xspace}

\let\repcomp\roncom

\let\Ouv\roncom

%%% repère orthogonal dans le plan
\newcommand{\Rog}{rep\`{e}re orthogonal \ensuremath{%
\left( O \  ; \vecti \  , \vectj\right)}\xspace}

%%% repère orthonormal dans le plan défini par O, I, J
\newcommand{\roij}{\ensuremath{%
\left( O \  ; \Vect OI \  , \Vect OJ \right)}\xspace}
\newcommand{\Roij}{rep\`{e}re orthonormé \ensuremath{%
\left( O \  ; \Vect OI \  , \Vect OJ \right)}\xspace}

\let\OIJ\roij

%\newcommand{\ron}{\ensuremath{% 
%\left( {\text O} \; ; \, \vecti\; ;\,\vectj\,\right)}\xspace} 


%%% repère orthonormal dans l'espace
\newcommand{\ronspace}{\ensuremath{%
\left( O \, ; \, \vec{\imath} \; ,\, \vec{\jmath} \; ,\, \smash{\vec{k}}%
\vrule height 10pt depth 0pt width 0pt\right)}\xspace}
\newcommand{\Ronspace}{rep\`{e}re orthonormé \ensuremath{%
\left( O \; ; \, \vec{\imath} \; ,\, \vec{\jmath}\; ,\, \smash{\vec{k}}\right)}\xspace}

\let\Oijk\ronspace

%%% base orthonormée dans le plan
\newcommand{\bon}{\ensuremath{%
\left(\vec{\imath} \; ,\, \vec{\jmath}\right)}\xspace}
\newcommand{\Bon}{base orthonormée \ensuremath{%
\left(\vec{\imath} \; ,\, \vec{\jmath}\right)}\xspace}

%%% base orthonormée dans l'espace
\newcommand{\bonspace}{\ensuremath{%
\left(\vec{\imath} \; ,\, \vec{\jmath}\; ,\, \vec{k}\right)}\xspace}
\newcommand{\Bonspace}{base orthonormée \ensuremath{%
\left(\vec{\imath} \; ;\, \vec{\jmath}\; ,\, \vec{k}\right)}\xspace}


%%% coordonnées d'un vecteur dans le plan
\newcommand{\coord}[2]{\ensuremath{\genfrac{(}{)}{0pt}{1}{#1}{#2}}\xspace}
% \newcommand{\Coord}[2]{\ensuremath{\genfrac{(}{)}{0pt}{1}{#1}{#2}}\xspace}
\newcommand{\Coord}[2]{\ensuremath{\left(\!\!\begin{array}{c}#1\\#2\end{array}\!\!\right)}\xspace}
%%% coordonnées dans le plan écrites en ligne
\newcommand{\coordh}[2]{\ensuremath{\left(#1\,;\,#2\right)}\xspace}

%%% coordonnées d'un vecteur dans l'espace            14-11-2000  : pas top !
\newcommand{\Coordsp}[3]{\ensuremath{\dsp\left(
{\mathop{\vrule height 2ex depth 1ex width 0pt \textstyle #2}_{\textstyle #3}^{\textstyle #1}}\right)}}
%%% coordonnées dans l'espace écrites en ligne
\newcommand{\coordsph}[3]{\ensuremath{\left(#1\,;\,#2\,;\,#3\right)}\xspace}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%% Gestion des questions



% Numérotation des questions...
\newcounter{NumeroPartieExo} 
\newcounter{NumeroQuestion}
\newcounter{NumeroSousQuest}[NumeroQuestion] 
\newcounter{NumeroSSQuest}[NumeroSousQuest] 


%%% PARTIE D'EXERCICE
%%% déclaration de la commande \partieexo

\def\@partieexoa{%
\setcounter{NumeroQuestion}{0}
\par%
\stepcounter{NumeroPartieExo}%
\medskip%
\setlength{\parindent}{0cm}%
\setlength{\hangindent}{0cm}%
\par%
{\textbf{Partie \Alph{NumeroPartieExo}}}%
} 


\def\@partieexob[#1]{%
\setcounter{NumeroQuestion}{0}
\par%
\stepcounter{NumeroPartieExo}%
\medskip%
\setlength{\parindent}{0cm}%
\setlength{\hangindent}{0cm}%
\par%
{\textbf{Partie \Alph{NumeroPartieExo} : #1}}%
}


\def\@partieexochoix{\ifx\firstchar[\let\next=\@partieexob\else%
\let\next=\@partieexoa\fi\next}

\newcommand{\partieexo}{\futurelet\firstchar\@partieexochoix}





%%% TABLEAU DE QUESTIONS
%% Commandes pour créer des questions disposées en un tableau   16-6-2000
%% Syntaxe :	\begin{tabqst}{5} (pour 5 colonnes)
%%           	\qst 2x+3y=0
%%		\ssq 3x^2-2y+3=0
%%		etc.
%%	        \end{tabqst}
%% Le texte qui suit \qst (ou \ssq ou \sssq) est mis en mode maths
%% On peut utiliser \tqst, \tssq ou \tsssq pour plus de lisibilité

\def\@preamb{}
\newcounter{@nbcol}\newcounter{@interm}
\newcounter{@numquest}

\newcommand{\@tcommun}{%
\ifnum \the@numquest=0\def\@cmdtab{}%
\else%
% on regarde si la question est la première de sa ligne
\setcounter{@interm}{\value{@numquest}/\value{@nbcol}*\value{@nbcol}-\value{@numquest}}%
\ifnum \the@interm = 0%
% si oui, passer à la ligne 
        \def\@cmdtab{\\\hline}%
        \else%
% si non, passer à la colonne suivante
        \def\@cmdtab{&}
        \fi%
\fi%
\@cmdtab%
\mbox{\@typqst}%
\stepcounter{@numquest}}
\newcommand{\tqst}{%
\stepcounter{NumeroQuestion}
\gdef\@typqst{\theNumeroQuestion\degre) }%
\@tcommun}
\newcommand{\tssq}{%
\stepcounter{NumeroSousQuest}
\gdef\@typqst{\alph{NumeroSousQuest}) }%
\@tcommun}
\newcommand{\tsssq}{%
\stepcounter{NumeroSSQuest}
\gdef\@typqst{\roman{NumeroSSQuest}) }%
\@tcommun}


\newenvironment{tabqst}[1]{%
\setcounter{@nbcol}{#1}%
\setcounter{@numquest}{0}%
% création du préambule du tableau : autant de l que de colonnes
\def\@preamb{l}%
\setcounter{@interm}{1}%
\whiledo{\the@interm<\the@nbcol}%
        {\stepcounter{@interm}%
        \edef\@concat{\@preamb|l}%
        \edef\@preamb{\@concat}% voir réf.1 p 198
        }%
% création du tableau
\expandafter\newcolumntype\expandafter{\expandafter P\expandafter}\expandafter{\@preamb}
\par\smallskip\hfill$\begin{array}{P}%
}
{%
\end{array}$\hfill\null\par\smallskip%
\def\@preamb{}%utile pour les commandes \qst, \ssq et \sssq
}

%% fin des commandes tabqst %%



%%% QUESTIONS
%%% déclaration de la commande \qst
%%% la suivante définit \qst en dehors de l'environnement tabqst et avec un numéro automatique

\newcommand{\@qsta}%
{\ifx\@preamb\empty%
\stepcounter{NumeroQuestion}%
\parindent 0cm%
\smallbreak%
\settowidth{\hangindent}{\textbf{\arabic{NumeroQuestion}\degre) }}%
\textbf{\arabic{NumeroQuestion}\degre) }%
% \theNumeroQuestion\degre)~
\settowidth{\parindent}{\textbf{\arabic{NumeroQuestion}\degre) }}%
\else\tqst\fi
}

\def\@qstb[#1]{%
\setcounter{NumeroQuestion}{#1}%
\addtocounter{NumeroQuestion}{-1}%
\@qsta\ignorespaces%
}

\def\@qstchoix{\ifx\firstchar[\let\next=\@qstb\else%
\let\next=\@qsta\fi\next}

\newcommand{\qst}{\futurelet\firstchar\@qstchoix}

\newcommand{\Qst}{\vskip 5mm\qst}




%%% déclaration de la commande \ssq
%%% \ssq ou, par exemple, \ssq[3] pour commencer au c)


\def\@affnumqstssq{\textbf{\arabic{NumeroQuestion}\degre)\,\alph{NumeroSousQuest})} }


\newcommand{\@ssqa}%
{\ifx\@preamb\empty
\par
\stepcounter{NumeroSousQuest}%
\parindent 0cm
%\settowidth{\parindent}{1\degr)~}
\settowidth{\hangindent}{\@affnumqstssq}
\leavevmode%
\smash{%
\hphantom{\textbf{\arabic{NumeroQuestion}\degre)\,}}%
\textbf{\alph{NumeroSousQuest})} 
}%
\else%
\tssq
\fi}

\def\@ssqb[#1]{%
\setcounter{NumeroSousQuest}{#1}
\addtocounter{NumeroSousQuest}{-1}
\@ssqa
}

\def\@ssqchoix{\ifx\firstchar[\let\next=\@ssqb\else%
\let\next=\@ssqa\fi\next}

\newcommand{\ssq}{\futurelet\firstchar\@ssqchoix}
\newcommand{\Ssq}{\vskip 3mm\ssq}



%%% déclaration de la commande \qstssq
%%% \qstssq ou, par exemple, \qstssq[3,2] pour commencer au 3°) b)


\def\@qstssqa{\par\stepcounter{NumeroQuestion}%
\stepcounter{NumeroSousQuest}%
\setlength{\parindent}{0cm}
\smallbreak
\settowidth{\hangindent}{\@affnumqstssq}
\@affnumqstssq
}

\def\@qstssqb[#1,#2]{%
\par
\setcounter{NumeroQuestion}{#1}
\setcounter{NumeroSousQuest}{#2}
\setlength{\parindent}{0cm}
\smallbreak
\settowidth{\hangindent}{\@affnumqstssq}
\@affnumqstssq
}

\def\@qstssqchoix{\ifx\firstchar[\let\next=\@qstssqb\else%
\let\next=\@qstssqa\fi\next}

\newcommand{\qstssq}{\futurelet\firstchar\@qstssqchoix}


%%% déclaration de la commande \ssqsssq
\def\@ssqsssqa{\par\stepcounter{NumeroSousQuest}%
\stepcounter{NumeroSSQuest}%
\setlength{\parindent}{0cm}
\setlength{\parindent}{0cm}
\settowidth{\hangindent}{\@affnumqstssq\textbf{\roman{NumeroSSQuest}} }
\leavevmode%
\hphantom{\textbf{\arabic{NumeroQuestion}\degre)\,}}
\textbf{\alph{NumeroSousQuest})\,\roman{NumeroSSQuest})} %
}

\def\@ssqsssqb[#1,#2]{%
\par%
\setcounter{NumeroSousQuest}{#1}
\setcounter{NumeroSSQuest}{#2}
\setlength{\parindent}{0cm}
\settowidth{\hangindent}{\@affnumqstssq\textbf{\roman{NumeroSSQuest}} }
\leavevmode%
\hphantom{\textbf{\arabic{NumeroQuestion}\degre)\,}}
\textbf{\alph{NumeroSousQuest})\,\roman{NumeroSSQuest})} %
}


\def\@ssqsssqchoix{\ifx\firstchar[\let\next=\@ssqsssqb\else%
\let\next=\@ssqsssqa\fi\next}

\newcommand{\ssqsssq}{\futurelet\firstchar\@ssqsssqchoix}



\newcommand{\Qstssq}%
{\vskip 5mm
\qstssq}



%%% déclaration de la commande \sssq
\newcommand{\@sssq}%
{\par
\stepcounter{NumeroSSQuest}%
%\settowidth{\parindent}{1\degr)~a)~}
\parindent 0cm
\settowidth{\hangindent}{\@affnumqstssq\textbf{\,\roman{NumeroSSQuest}} }
\leavevmode%
\hphantom{\@affnumqstssq\,}%
\textbf{\roman{NumeroSSQuest})\,}%
}

\def\sssq{\ifx\@preamb\empty\@sssq\else\tsssq\fi}


% permet de commencer à un certain numéro d'exercice (utile pour des corrigés parcellaires
% on peut aussi utiliser directement \qst[numero voulu]

\newcommand{\numqst}[1]%
{\setcounter{NumeroQuestion}{#1}
\addtocounter{NumeroQuestion}{-1}}

\newcommand{\numssq}[1]%
{\setcounter{NumeroSousQuest}{#1}
\addtocounter{NumeroSousQuest}{-1}}

% la suivante permet de passer directement du 1°) au 2°)b) par exemple
% ne marche pas, créer \qstssq[][], etc.

\newcommand{\numqstssq}[2]%
{\setcounter{NumeroQuestion}{#1}
\addtocounter{NumeroQuestion}{-1}
\setcounter{NumeroSousQuest}{#2}
\addtocounter{NumeroSousQuest}{-1}}


%%% le décalage produit par les commandes \qst, ... est parfois perdu après
%%% une création d'un nouveau paragraphe, les commandes suivantes
%%% rétablissent ce décalage			27-8-2000
\newcommand{\decalqst}{\leavevmode%
%\hphantom{1\degre )~}%
\settowidth{\parindent}{\theNumeroQuestion\degre )~}%
\settowidth{\hangindent}{\theNumeroQuestion\degre )~}}
%% à finir !!!!!!!!
\newcommand{\decalssq}{\par\leavevmode\hphantom{\theNumeroQuestion\degre )~a)~}%
\settowidth{\hangindent}{1\degre )~a)~}}
\newcommand{\decalsssq}{\par\hphantom{\theNumeroQuestion\degre )~a)~%
\roman{NumeroSSQuest})~}%
\settowidth{\hangindent}{\parindent}} % ceci ne marche pas !!!





\endinput
