%%%
% Ami lecteur, bonjour !
%
% Ce fichier regroupe les commandes utilisées par les Éditions H&K pour
% l'élaboration des Annales des Concours. Si vous êtes auteur dans cette
% collection, vous trouverez de nombreuses explications dans la documentation
% que vous avez téléchargée par ftp, ou sur www.h-k.fr/annales.
%
% Les auteurs des Annales des Concours sont explicitement autorisés à
% réutiliser tout ou partie de ce fichier pour leurs travaux personnels 
% à but non commercial (mémoire, rapport, thèse, etc.).
% 
% Si vous n'avez pas participé aux Annales des Concours, veuillez contacter
% directement les Éditions H&K (contact@h-k.fr) si vous souhaitez utiliser
% ce fichier.
%
% Les macros proposées ci-dessous ont nécessité des centaines d'heures de
% travail. Elles ne sont pas dans le domaine public, hormis l'environnement
% \breakbox.
%
%                                                         Seb.
%
%
% Le mainteneur du fichier peut toujours être joint à l'adresse
% annales.sty@H-K.fr
%
% 2001.11.03:	* Migration de certains \mathop vers \DeclareMathOperator.
%               * Ajout des symboles chimiques à deux lettres (\Al, etc.).
%               * Ajout de [t] et d'une option dans {rcl}.
% 2001.11.27:	* Correction d'un bug dans \leftcentersright.
% 2001.12.06:	* Ajout de \Me, \liq, \sol, \gaz et \Equilibre.
% 2001.12.07: 	* Ajout de l'option [t] dans \leqsystsimple.
%               * Ajout de \Image.
% 2001.12.08:	* Changement de police pour \apriori et ses amis.
% 2001.12.11:	* Ajout de \abs pour les valeurs absolues.
% 2002.02.21:	* Ajout de \Dpc et \DPC (Teteph)
% 2002.04.19:	* Ajout de \note
% 2002.04.20:	* Passage de fancyheadings à fancyhdr (suggestion de JJ).
% 2002.04.21:	* Création \(leftcenters|centers|ref)numero (JJ).
% 2002.04.22:	* Ajout de \accolades et \paa (David Chapot, JJ).
% 2002.05.12:	* Retrait d'un espace dans \cf.
%               * Retrait des \left et \right dans \intn (Walter).
% 2002.05.16:	* Correction de \RX et \CX (Jean).
% 2002.05.17:	* Ajout du package {tabularx} (JJ).
% 2002.05.24:	* Retrait de {tabularx}.
% 2002.05.31:	* Correction de \ANcenters et \ANencadre (JJ).
% 2002.06.14:	* Modification de \enonce pour faire des hachures.
% 2002.06.19:	* Modification de \celsius (BBR).
%               * Création de la commande \angstrom (BBR, Teteph).
% 2002.06.24:	* Modification de \Star (Alex).
% 2002.06.25:	* Création de \conc et \Kzero (Alex).
% 2002.06.26:	* Création de \serie (Walter).
% 2002.06.27:	* Création de \butyl et \Bu (Alex).
% 2002.06.28:	* Modification de \ANcenters et \ANencadre (Alex).
% 2002.06.30:	* Modification de \degres (BBR).
% 2002.07.04:	* Modification de \celsius (Nico).
% 2002.07.08:	* Modification de \etc (JJ).
% 2002.07.08:	* Modification de \cf: droit, point (Émilia).
% 2002.07.12:	* Ajout de \intnn (Mathieu).
% 2002.07.16:	* Abandon de fancyhdr pour fancyheadings à cause des titres
%                 courants dans les annexes (JJ).
% 2002.08.14:	* Découpage du fichier en trois morceaux indépendants:
%                 déclarations, mise en page et commandes scientifiques.
%               * Réécriture de la plupart des commentaires contextuels.
% 2003.02.12:	* Cas des arguments vides dans \intff et al (Walter).
% 2003.03.05:	* Modification de la commande \partie (Paul).
% 2003.03.10:	* Remplacement des \mathbb par des \mathBB (Paul).
% 2003.03.18:   * Ajout de la commande \reperes (VF).
% 2003.05.05:	* Passage à des titres courants centrés (Paul).
% 2003.05.11:	* Ajout de \mathaccent"17E (JJ).
% 2003.05.21:	* Ajout de \ir, \jr, \ex et \exi (Paul et VF).
% 2003.05.26:	* Ajout de \OIInt (TTF, ST) et de \sulfate (Manu).
% 2003.05.27:	* Ajout de \vectux, \vectuy, \vectuz, \vectex, \vectey,
%                 \vectez, \vux, \vuy, \vuz, \vex, \vey et \vez.
% 2003.06.01:	* Ajout de \suite et \liste (Paul).
% 2003.06.06:	* Ajout de dsfont.sty pour \mathds{1}.
% 2003.06.28:	* Création de \petito et \grando (JJ, Walter, Paul).
% 2003.06.29:	* Ajout de \pmgras (Mike).
% 2003.06.30:	* Création de \Sumt (Walter).
% 2003.10.16:	* Ajout de \NoAutoSpaceBeforeFDP dans \codesource (Walter).
% 2003.10.23:	* Ajout de \NoAutoSpaceBeforeFDP dans \web.
% 2003.12.07:	* Ajout de \encadreminipage (Aurélien).
% 2003.12.08:	* Ajout de \graphicspath
% 2004.02.19:	* Ajout de \Produit (Paul, Céline).
% 2004.02.21:	* Ajout de \scalar (Céline).
% 2004.02.27:	* Amélioration de \intff et ses amis (Céline).
% 2004.03.06:	* Redéfinition de \bs (Seb, Céline).
% 2004.03.08:	* Amélioration de \leftcentersright et ses dérivés: l'argument
%                 du milieu est maintenant centré dans la page, pas dans
%                 l'environnement (Céline, Paul).
% 2004.03.09:	* Bug-fix dans \Sum (portée de \ensuremath) (Céline).
% 2004.03.15:   * Ajout de \ofg pour les guillemets français (Manu).
% 2004.03.16:   * Passage de fancyheadings à fancyhdr.
% 2004.03.18:   * Ajout des environnements {egalites}, {inegalites:leq}, 
%                 {inegalites:geq}, {calculs}, {calculs:rcl}, 
%                 {calculs:rcl:extracol} et {calculs:latotale}
%                 (Céline, Paul, Seb, JB)
% 2004.03.20:   * Modification de la commande \note; par défaut, elle
%                 rajoute un numéro à l'endroit où on l'appelle et avec
%                 l'option 0 ou simple elle reprend son ancien
%                 comportement (JJ)
%               * Amélioration de \Sum, \SUM et \Int (JJ)
%               * Modification des commandes \partie, \Partie et
%                 \Indications pour pouvoir obtenir les petites
%                 capitales même avec aeguill (JJ)
% 2004.03.22:   * Changement de l'option d'alignement par défaut dans
%                 les environnements {systsimple} et dérivés
%               * \finalementcenters donne désormais « Finalement, » au 
%                 lieu de « Finalement: » .
%               * Modification des tailles du papier et des marges (Seb).
% 2004.03.25:	* Modification de la légende des sommaires croisés.
% 2004.03.29:	* Ajout de \Rdeux, \Rtrois, \Cdeux et \Ctrois.
% 2004.04.01:	* Ajout de \centersminipage (Seb).
% 2004.04.03:   * Transfert des commandes pour les sommaires croisés
%                 vers les fichiers concernés.
% 2004.04.04:	* Retrait de {aeguill}.
% 2004.04.08:   * Bug-fix dans un commentaire (Seb).
% 2004.04.09:   * Suppression du commentaire sur l'installation TeX
%                 d'Ulm (FX).
% 2004.04.18:	* Ajout de \notemark et \notetext pour pouvoir utiliser
%                 \note dans n'importe quel environnement.
%               * Ajout de \arraybox pour remplacer \EncadreDansTableau.
% 2004.04.20:   * Ajout de \typeout dans \EncadreDansTableau (Teteph).
% 2004.04.23:	* Abandon de la police Times dans \partie.
%               * Ajout de l'option dans \donccenters et ses amis.
% 2004.04.30:	* Ajout de \DecimalMathComma (Paul).
% 2004.05.04:	* Passage à \StandardMathComma par défaut (Teteph).
% 2004.05.05:	* Correction d'un bug dans \leftcentersright.
% 2004.05.08:	* Ajout de \aq (FX).
% 2004.05.14:	* Ajout de \null dans les \qetq.
%               * Modification de \leftcentersright: l'argument est
%                 toujours centré dans la page, sauf dans les
%                 {remarque} (Manu).
%               * Ajout de \textegras, \textgras, \gras, \nongras,
%                 modification de \mathBB, \mathscr, 
%                 \partie et \Partie (Walter).
% 2004.05.15:   * Ajout de \thallium et \Tl (Alex).
%               * Ajout de \Pzero et \czero (FX).
%               * Ajout de \base.
% 2004.05.16:   * Ajout de \Rb et \rubidium (Tiphaine).
% 2004.05.17:	* \mathscr renommé en \mathscrchoice (Seb).
% 2004.05.18:	* Ajout de \Iint et \IInt. Modification des longueurs
%                 dans \oiint et \OIInt (Marc, Paul).
% 2004.05.19:	* Ajout de \deltar et \deltaf (Alex).
% 2004.05.20:	* Ajout de \Avogadro et \avogadro (JJ).
% 2004.05.21:	* Retrait de \Avogadro et \avogadro pour ne pas
%                 privilégier de notation.
% 2004.05.22:	* Ajout de \exmi (Aurélien).
%               * Ajout de \Ce et \cerium (Alex).
% 2004.05.26:	* Redéfinition de \venonce (Alex).
% 2004.05.27:	* Ajout de \uvect (Aurélien).
%               * Ajout de \encadrenumero et \leftencadrenumero (Aurélien).
% 2004.05.28:	* Ajout de \vectu (Aurélien).
% 2004.05.31:	* Ajout de \Zr et \zirconium (Nicolas).
% 2004.06.09:	* Amélioration de \simple, \double, \triple (FX).
% 2004.06.11:   * Amélioration de \pm et \pmgras (Vincent).
% 2004.06.14:   * Retrait de \typeout dans \EncadreDansTableau.
% 2004.06.17:   * Ajout de \indenter (Teteph).
%               * Modification de \centers pour proteger l'argument central
%                 (Teteph).
% 2004.07.01:   * Ajout d'une option à \titre (Teteph).
% 2004.07.02:   * Modification de \petito et \grando (David, Seb).
% 2004.07.03:   * Ajout de \ajusterletitrecourant.
% 2004.07.05:   * Remplacement de \LeTitre par \LeTitreCourant dans les
%                 commandes \titresommaire, \JusteNumeroPage, \mkTitreCourant.
% 2004.11.02:   * Amélioration de \pm et \pmgras (Emmanuel).
%               * Changement du \renewcommand en \def dans la définition de
%                 \degres car la commande \degres n'existe plus sur clipper
%                 à l'ENS.
% 2004.12.09:   * Ajout de \xspace dans les définitions des raccourcis
%                 \droite, \plan, \cercle, etc (Seb).
%               * Ajout d'une bascule (\CentersOnPage (défaut) et 
%                 \CentersOnItems) pour que \centers centre soit par rapport à
%                 la page soit par rapport à l'{itemize}. Cette bascule est
%                 remise à sa valeur par défaut dans la commande \titre (Seb). 
% 2004.12.17:   * Ajout de \arcdecercle (JJ).
% 2005.01.02:   * Ajout de \email (Seb).
% 2005.05.06:   * Ajout de \partieentieresup (Sam).
% 2005.05.07:   * Ajout de \oeuf et \oeufs (Seb).
% 2005.05.24:   * Ajout de \maitre (Seb).
%               * Amélioration de \madame, \mademoiselle, \docteur, \maitre.
% 2005.05.30:   * Ajout de \Iiint et \IIInt (Teteph).
% 2005.06.05:   * Ajout de \matricedd.
% 2005.06.07:   * Ajout des \xspace dans \R, \C et commandes similaires.
% 2005.06.28:   * Amélioration de \pa (Vincent).
% 2005.06.29:   * Amélioration de \pac et \paa (Teteph).
% 2005.07.08:   * Ajout de \Sm, \samarium, \Eu, \europium (Alex).
% 2005.07.12:   * Ajout de \tdemi, \ttiers, \tquart (Alex).
%               * Mise à jour de la légende des sommaires croisés.
% 2005.07.15:   * Modification des commandes à base de \mathBB: l'ajout de
%                 \xspace faisait buguer la version étoilée (David).
%				* Ajout du package longtable et modification du sommaire
%                 (JJ).
% 2006.03.28:   * Modification des marges due au changement de format (pas de 
%                 changement de la taille du texte) (JJ).
% 2006.05.12:   * Ajout de \dessinpgf pour les courbes créées avec les 
%                 extensions LaTeX PGF et TikZ (Teteph).
% 2006.05.14:   * Ajout de \indicatrice.
%               * Changement de la définition de \ronde et \angstrom (Seb, 
%                 JJ).
% 2006.05.16:   * Ajout de \soeur, \soeurs, \Soeur, \Soeurs (Sattisvar).
% 2006.05.23:   * Ajout de \vcol (Aurélien, Frédéric).
%               * Amélioration de \moyenne (Teteph).
% 2006.05.25:   * Ajout de \souspartie (Teteph, Seb).
% 2006.05.31:   * Ajout de \transp (Aurélien, Seb).
% 2006.06.02:   * Ajout de \fem et \AO (Aurélien, Seb).
%               * Modification de \transp (qui devient synonyme de \trans).
% 2006.06.06:   * Modification de \f@thousandsep, utilisée dans \nombre.
%               * Ajout de \nb, raccourci pour \nombre.
% 2006.06.12:   * Modification des tailles des marges (Alex).
% 2006.06.14:   * Bug-fix de l'alignement de {QCM} (Aurélien).
% 2006.06.18:   * Ajout du test sur les . et - dans \souspartie.
% 2006.06.27:   * Ajout d'un argument optionnel à \norme (Teteph).
% 2006.07.07:   * Modification de \partie et \Partie.
% 2006.07.08:   * Annulation de la modification de \partie et \Partie 
%                 (Teteph).
% 2006.07.08:   * Amélioration de \dessinpgf (Teteph).
% 2006.07.09:   * Ajout de \kdonne (Alex).
% 2006.07.11:   * Modification des commandes pour les sommaires: ajout de 
%                 \tdmtabular, \tdmoutils, \tdmtitresommaire et \tdmConcours.
% 2006.07.11:   * Modification de la légende des sommaires croisés.
% 2007.05.02:   * Ajout de \ver, \verho, \vetheta, \vephi, \vur, \vurho, 
%                 \vutheta et \vuphi (Emmanuel Loyer).
% 2007.05.21:   * Ajout des commandes pour dessiner les rectangles gris: 
%                 \dessinerRectangleGris, \rectangleGrisOUI, 
%                 \rectangleGrisNON (Seb).
%               * Modification de la taille du papier (17,5 par 26) pour 
%                 tenir compte des fonds perdus dus à ces rectangles.
%               * Ajout des commandes pour les formulaires: \vartitre, 
%                 \formulairesMaths, \formulairePhysiqueChimie.
%				* Modification de \tdmtabular pour le sommaire.
% 2007.05.23:   * Ajout de \Sc et \scandium (Nicolas Agenet).
% 2007.06.17:   * Ajout de \versionCompil qui gère les marges et les notes.
% 2007.06.27:   * Modification de la taille du papier pour centrer le texte 
%                 sur la page (Teteph, Seb).
%               * Ajout de \relpenalty et \binoppenalty pour éviter la coupure 
%                 des formules de maths (Teteph).
% 2007.07.01:   * Ajout d'un argument optionnel à \souspartie (Teteph).
% 2007.07.07:   * Suppression des commandes obsolètes pour les marges 
%                 (Teteph).
%2008.08.24	*Ajout du mot coefficient et passage en 10 pt
%%%

%\documentclass[12pt]{article} #modification fabrice pour TD gain de place
\documentclass[11pt]{article}

%!!!!!!!!!!!!!!!!!!!!!!!!!!                  !!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!   Les packages   !!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!                  !!!!!!!!!!!!!!!!!!!!!!!!!!

%% Les packages à charger en standard.

\usepackage[french]{babel}	% Typo francaise.
%\FrenchItemizeSpacingfalse	% Pour avoir des \bullet dans les {itemize}
            				% et ne pas dérégler les espaces verticaux.
\usepackage[T1]{fontenc}	% Accents codés dans la fonte.
\usepackage[utf8]{inputenc}	% Accents 8 bits dans le fichier.
%\usepackage{vmargin}		% Régler la taille de la feuille.
\usepackage{fancyhdr}		% Régler le titre courant et le bas de page.
%\usepackage{fancyheadings}
\usepackage{calc}	    	% Faire des calculs sur les longueurs.
\usepackage{ifthen}		    % Faire des tests if/then/else.
\usepackage{pifont}		    % La police \ding.
\usepackage{supertabular}	% Les grands tableaux.
\usepackage{longtable}
\usepackage{multicol}		% Plusieurs colonnes.
\usepackage{wrapfig}		% Dessins dans le texte.
\usepackage{fancybox}		% Boîtes avec une ombre pour les parties.
\usepackage{rotating}		% Pour tourner un texte.
\usepackage{xspace}		    % Ajuster l'espace après des mots.

%% Les packages pour les maths.

\usepackage{amsmath}	% Les symboles les plus fréquents.
\usepackage{amssymb}	% Des symboles.
\usepackage{amsfonts}	% Des fontes, eg pour \mathbb.
\usepackage{verbatim}	% Pour les codes sources en informatique.
\usepackage{mathrsfs}	% Des lettres majuscules cursives (\mathscr).
%\usepackage{dsfont}

%% Les packages pour les dessins.

\usepackage{array}
\usepackage{curves}
\usepackage{epic}
\usepackage{eepic}
\usepackage{epsfig}
\usepackage{graphics}
\graphicspath{{PS/}}


%!!!!!!!!!!!!!!!!!!!!!!                          !!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!   Présentation globale   !!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!                          !!!!!!!!!!!!!!!!!!!!!!

%% La commande centralisant les changements nécessaires à la compil.

\newcommand{\versionCompil}{%
		% Pour envoyer à l'imprimeur.
		% Attention, lors de l'export en postscript, il faut alors passer
		% l'option -T17.5cm,26cm à dvips.
		% En TeTeX 3, il faut également l'option -tunknown pour dvips.
    \setpapersize{custom}{17.5cm}{26cm}%
    \setmarginsrb{22.5mm}{8.5mm}{23.5mm}{11.5mm}{10mm}{6mm}{0mm}{10mm}%
		% Interdire les notes.
    \setcounter{ifnote}{0}%
		% Interdire les coupures dans les formules de maths.
    \relpenalty=10000%
    \binoppenalty=10000%
}

%% Une taille standard pour le texte.

        % Pour centrer le texte sur la page (utilisation courante).
%\setpapersize{custom}{21cm}{29.7cm}
%\setmarginsrb{40.5mm}{10mm}{40.5mm}{47mm}{10mm}{6mm}{0mm}{10mm}

%% Pour avoir des marges plus grosses pour les gros dessins avec fig2ps.vince

%\setmarginsrb{10mm}{10mm}{10mm}{5mm}{12pt}{11mm}{0pt}{11mm}

        % Pour pouvoir utiliser un zoom=3 dans xdvi.
        % Couplé à l'option -rv de xdvi, cela permet d'éviter les migraines
        % après $n$ heures devant l'écran.
%\setpapersize{custom}{12.9cm}{24.5cm}
%\setmarginsrb{0mm}{1mm}{0mm}{4mm}{10mm}{6mm}{0mm}{10mm}

\newcommand{\latex}{\LaTeX}

%% Pour que la virgule devienne un séparateur décimal.
\providecommand\DecimalMathComma{\iflanguage{frenchb}%
                                 {\mathcode`\,="013B}{}%
   \addto\extrasfrenchb{\mathcode`\,="013B}}

\providecommand\StandardMathComma{\mathcode`\,="613B%
   \addto\extrasfrenchb{\mathcode`\,="613B}}

\StandardMathComma

%% Un hack pour que l'espace avant les doubles ponctuations soit un demi-espace.

\makeatletter
\declare@shorthand{frenchb}{:}{%
    \ifhmode
      \ifdim\lastskip>\z@
        \unskip\penalty\@M\thinspace
      \else
        \FDP@thinspace
      \fi
    \fi
    \string:}
\makeatother



%!!!!!!!!!!!!!!!!!!!!!!                          !!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!   Présentation globale   !!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!                          !!!!!!!!!!!!!!!!!!!!!!

%% Les notes dans la marge.

\newcounter{ifnote}
\setcounter{ifnote}{1}		% Accepter les notes dans la marge
%\setcounter{ifnote}{0}		% Refuser  les notes dans la marge

%% Les traits horizontaux pour l'alignement horizontal des énoncés.

\newcounter{IfAlignementEnonces}
%\setcounter{IfAlignementEnonces}{1}	% Mettre les hachures
\setcounter{IfAlignementEnonces}{0}	% Ne pas mettre les hachures

%% Les équations numérotées.

\newcounter{Corrige}
\newcounter{Equation}[Corrige]

%!!!!!!!!!!!!!!!!!!!!                               !!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!   Mise en page d'un corrigé   !!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!                               !!!!!!!!!!!!!!!!!!!!

%%
%% Le titre courant et les rectangles gris.
%%

% Les rectangles gris.
\newcounter{numerocorrige}
\newcounter{decalagegris}
\newcommand{\dessinerRectangleGris}{%
    \setcounter{decalagegris}{19*\thenumerocorrige}%
    \setcounter{decalagegris}{22-\thedecalagegris}%
    \begin{picture}(0,0)%
    \put(39,\thedecalagegris){{%
        \color{grayband}%
        \makebox[0pt][l]{\rule{1cm}{19pt}}%
        \color{black}%
    }}
    \end{picture}%
}
\newcommand{\rectangleGris}{}   % C'est celle qui est utilisée dans \rhead
\newcommand{\rectanglesGrisOUI}{% À placer dans main.tex (corrigés)
    \renewcommand{\rectangleGris}{\dessinerRectangleGris}%
}
\newcommand{\rectanglesGrisNON}{% À placer dans main.tex (1res pages, etc.)
    \renewcommand{\rectangleGris}{}%
}

%\setmarginsrb{35mm}{20mm}{25mm}{15mm}{12pt}{11mm}{0pt}{11mm}
%\pagestyle{fancy}
%\lhead[\thepage]{\footnotesize\LeTitre}
%\chead[]{}
%\rhead[\footnotesize\LeTitre]{\thepage}
\lhead[\thepage]{}
\chead[\footnotesize\LeTitreCourant]{\footnotesize\LeTitreCourant}
\rhead[]{\thepage\rectangleGris}
\lfoot[]{}
\cfoot[]{}
\rfoot[]{}



%%%% Le titre courant.
%%
%%\pagestyle{fancy}
%%%\lhead[\thepage]{\footnotesize\LeTitre}
%%%\chead[]{}
%%%\rhead[\footnotesize\LeTitre]{\thepage}
%%\lhead[\thepage]{}
%%\chead[\footnotesize\LeTitreCourant]{\footnotesize\LeTitreCourant}
%%\rhead[]{\thepage}
%%\lfoot[]{}
%%\cfoot[]{}
%%\rfoot[]{}

%% Le titre du corrigé.

% La variable dans laquelle est stockée le titre
\newcommand{\LeTitre}{} % Redéfini dans \titre
\newcommand{\LeTitreCourant}{CHANGER LE TITRE !!!}

% Afficher le titre.
\newlength{\barreHorizontaleVarTitre}
\newcommand{\Titre}{
	\begin{center}
	{\bfseries\Large \LeTitre}
	\end{center}
	\vskip 1 cm
	}

% Synthèse : on n'appelle qu'une seule commande.
%\newcommand{\titre}[1]{
%	\renewcommand{\LeTitre}{#1}
%	\Titre
%	\stepcounter{Corrige}	% pour \centersnumero
%        \renewcommand{\labelitemi}{\ensuremath{\bullet}}
%	}

% Utilisé pour les corrigés. L'argument optionnel sert à raccourcir ce qui 
% est écrit dans le titre courant.
\newcommand{\titre}[2][]{%
    \ifthenelse{\equal{#1}{}}{%
        \renewcommand{\LeTitreCourant}{#2}%
    }{%
        \renewcommand{\LeTitreCourant}{#1}%
    }%
    \renewcommand{\LeTitre}{#2}%
    \Titre%
    \CentersOnPage
    \stepcounter{Corrige}%   % pour \centersnumero
    \renewcommand{\labelitemi}{\ensuremath{\bullet}}%
    }

% Utilisé pour les formulaires. L'argument optionnel sert à ajuster la
% longueur des traits.
\newcommand{\vartitre}[2][]{%
    \renewcommand{\LeTitre}{#2}%
    \CentersOnPage
    \stepcounter{Corrige}%   % pour \centersnumero
    \renewcommand{\labelitemi}{\ensuremath{\bullet}}%
    \ifthenelse{\equal{#1}{}}{%
        \settowidth{\barreHorizontaleVarTitre}{{\bfseries\Large\LeTitre}}%
        \addtolength{\barreHorizontaleVarTitre}{1cm}%
    }{%
        \setlength{\barreHorizontaleVarTitre}{{#1}\linewidth}%
    }%
    \begin{center}
    \begin{tabular}{@{}c@{}}
        \rule{\barreHorizontaleVarTitre}{1.5pt} \\[1.5mm]
        {\bfseries\Large{#2}} \\
        \rule{\barreHorizontaleVarTitre}{1.5pt} \\
    \end{tabular}
    \end{center}
    }

\newcommand{\ajusterletitrecourant}[1]{%
	\renewcommand{\LeTitreCourant}{#1}%
}

%% Quelques commandes de mise en forme.

% Des parties qui se voient bien.
% Exemple: 
%	\partie{
%		Première partie\\[4mm]
%		Les pincettes optiques
%	}
\newcommand{\partie}[1]{%
	\vspace*{\smallskipamount}%
	\begin{center}\large\textegras{\scshape #1}\end{center}%
}
%\newcommand{\partie}[1]{%
%	\null\vspace*{\smallskipamount}%
%	\nopagebreak[4]%
%	\begin{center}\large\textegras{\scshape #1}\end{center}%
%}

% Lorsque le titre comporte un numéro (II. \quad Mon titre), on ne peut pas
% facilement combiner « \partie » et « \\ » à cause de l'alignement vertical.
% En pareil cas, on peut utiliser \Partie, qui prend deux arguments:
%	* le numéro de la partie
%	* le texte
% Exemple:
%	\Partie{I}{Mon titre}
% Bonus: si le titre est long, il sera automatiquement coupé pour passer à
% la ligne. On peut bien sûr toujours forcer le passage à la ligne à un
% endroit précis en utilisant « \\ ».
% Enfin, on peut passer un argument optionnel spécifiant la largeur souhaitée
% pour le texte: \Partie[6cm]{I}{Mon titre}. Veillez à ne pas utiliser des
% longueurs trop grandes.
\newlength{\PartieWidth}
\newcommand{\Partie}[3][8cm]{%
    \settowidth{\PartieWidth}{{\large\textegras{\scshape #3}}}%
    \ifthenelse{\lengthtest{\PartieWidth > #1}}{%
        \setlength{\PartieWidth}{#1}%
    }{}%
    \vspace*{\smallskipamount}%
    \begin{center}%
    {\large\textgras{#2.}}{\normalsize\quad}%
    \begin{minipage}[t]{\PartieWidth}%
    {\large\textgras{\scshape #3}}%
    \end{minipage}%
    \end{center}%
}
%\newcommand{\Partie}[3][8cm]{%
%    \settowidth{\PartieWidth}{{\large\textegras{\scshape #3}}}%
%    \ifthenelse{\lengthtest{\PartieWidth > #1}}{%
%        \setlength{\PartieWidth}{#1}%
%    }{}%
%    \null\vspace*{\smallskipamount}%
%	\nopagebreak[4]%
%    \begin{center}%
%    {\large\textgras{#2.}}{\normalsize\quad}%
%    \begin{minipage}[t]{\PartieWidth}%
%    {\large\textgras{\scshape #3}}%
%    \end{minipage}%
%    \end{center}%
%}

% Des sous-parties standardisées.
% Si le premier argument contient un point ou un tiret, il est écrit tel quel,
% sinon il est suivi d'un point.
% Exemples:
% \souspartie{1}{Étude d'une fonction}
%   1. Étude d'une fonction
% \souspartie{1.2}{Étude d'une fonction}
%   1.2 Étude d'une fonction
% \souspartie{1-2}{Étude d'une fonction}
%   1-2 Étude d'une fonction
%
% La commande \souspartie admet un argument optionnel, de la forme 10cm, au 
% cas où le titre soit trop long pour tenir sur une ligne. Par défaut, le 
% titre est inclus dans une minipage de 8cm, mais on peut ajuster  
% manuellement à l'aide de cet argument pour éviter les césures.

\newif\iftiret
\newif\ifpoint

\def\testtiret{%
    \futurelet\next\testtiretsuivant%
}
\def\testtiretbis#1{%
    \testtiret%
}
\def\testtiretsuivant{%
    \ifx\next\endoftesttiret\def\endoftesttiret{}%
    \else\if\next-\tirettrue%
         \fi%
         \expandafter\testtiretbis%
    \fi%
}

\def\testpoint{%
    \futurelet\next\testpointsuivant%
}
\def\testpointbis#1{%
    \testpoint%
}
\def\testpointsuivant{%
    \ifx\next\endoftestpoint\def\endoftestpoint{}%
    \else\if\next.\pointtrue%
         \fi%
         \expandafter\testpointbis%
    \fi%
}

\newlength{\souspartiewidth}
\newcommand{\centragesouspartie}[2][]{%
        \settowidth{\souspartiewidth}{#2}%
        \ifthenelse{\equal{#1}{}}{%
                \ifthenelse{\lengthtest{\souspartiewidth<0.9\textwidth}}{%
                        #2
                }{%
                        \begin{minipage}[t]{8cm}
                                #2
                        \end{minipage}
                }
        }{%
                \ifthenelse{\lengthtest{\souspartiewidth<#1}}{%
                        #2
                }{%
                        \begin{minipage}[t]{#1}
                                #2
                        \end{minipage}
                }
        }
}

\newcommand{\souspartie}[3][]{%
    \vskip\bigskipamount%
    \ifthenelse{\equal{#2}{}}{%
        \centers{\textbf{{#2}\quad \centragesouspartie[#1]{#3}}}%
    }{%
        \tiretfalse\pointfalse%
        \testtiret#2\endoftesttiret%
        \testpoint#2\endoftestpoint%
        \iftiret \centers{\textbf{{#2}\quad \centragesouspartie[#1]{#3}}}%
        \else \ifpoint \centers{\textbf{{#2}\quad 
							\centragesouspartie[#1]{#3}}}%
              \else \centers{\textbf{{#2}.\quad \centragesouspartie[#1]{#3}}}%
              \fi%
        \fi%
        \tiretfalse%
        \pointfalse%
    }%
    \vskip\bigskipamount%
}

%\newcommand{\souspartie}[2]{%
%        \vskip\bigskipamount%
%        \centers{\textbf{{#1}.\quad {#2}}}
%%        \centers{\textbf{{#1}\quad {#2}}}
%        \vskip\medskipamount%
%}

% Pour le cas particulier des indications, il est souhaitable de limiter
% l'espace avant et après \partie. La commande \Indications est là pour ça.
\newcommand{\Indications}{% 
	\vspace{-2mm}% 
	\centers[0]{{\large\textbf{\scshape Indications}}}% 
	\medskip 
}      

% Numéroter les questions.
\newcommand{\question}[1]{\noindent\fbox{\bfseries#1}}

% Les QCM de l'ENAC.
%
% À l'ENAC, le candidat doit répondre à un QCM; pour chaque question, il doit
% noircir, sur sa feuille de réponse, les rectangles qui correspondent aux
% affirmations exactes. Les commandes ci-dessous permettent de simuler la
% feuille de réponse au sein du corrigé.
%
% Exemple (les réponses 1 et 4 sont exactes):
%	\begin{QCM}
%	\vrai{1}
%	\vrai{4}
%	\end{QCM}

\newenvironment{QCM}
        {
        \begin{center}
        \setlength{\unitlength}{1pt}
%        \begin{picture}(190,15)(0,-15)
        \begin{picture}(180,15)(0,-15)
        \allinethickness{0.5pt}
        \multiput(0,0)(40,0){5}{\line(1,0){20}}
        \multiput(0,-5)(40,0){5}{\line(1,0){20}}
        \multiput(0,0)(20,0){10}{\line(0,-1){5}}
        \put(10,-15){\makebox[0pt]{A}}
        \put(50,-15){\makebox[0pt]{B}}
        \put(90,-15){\makebox[0pt]{C}}
        \put(130,-15){\makebox[0pt]{D}}
        \put(170,-15){\makebox[0pt]{E}}
        }
        {
        \end{picture} 
        \end{center}
        }
\newcounter{lareponse}
\newcommand{\vrai}[1]{
        \setcounter{lareponse}{#1}
        \addtocounter{lareponse}{-1}  
        \setcounter{lareponse}{\value{lareponse}*40}
        \put(\thelareponse,0){\rule[-5pt]{20pt}{5pt}}
        }

%!!!!!!!!!!!!                                              !!!!!!!!!!!!
%!!!!!!!!!!!!   Les pages de présentation et les annexes   !!!!!!!!!!!!
%!!!!!!!!!!!!                                              !!!!!!!!!!!!

% Insérer une page d'énoncé scannée.
\newcommand{\enonce}[2][0]{%
        \noindent%
        \epsfig{file=#2,angle=#1,width=\linewidth,clip=}%
        \ifthenelse{\value{IfAlignementEnonces} = 1}{%   
                \begin{picture}(0,0)%
                \multiput(-400,600)(0,-9){70}{\line(1,0){500}}%
                \end{picture}%
        }%
        {}%
}
%\newcommand{\venonce}[2][20.3]{\noindent\centers{\epsfig{file=#2,%
%	height=#1cm,clip=}}}

% Lorsque les pages d'énoncé ont un rapport hauteur/largeur supérieur à
% celui d'une page d'Annales, l'utilisation de \enonce entraîne un
% overfull vbox. Pour éviter cela on utilise \venonce qui fixe la hauteur
% de la figure incluse et non la largeur. C'est moche mais on n'a pas le
% choix.

\newcommand{\venonce}[2][21.25]{%
    \ifthenelse{\value{IfAlignementEnonces} = 1}{%
        \noindent\centers{\epsfig{file=#2, height=20.8  cm, clip=}}%
        \begin{picture}(0,0)%
        \multiput(-50,600)(0,-9){70}{\line(1,0){500}}%
        \end{picture}%
    }{%
        \noindent\centers{\epsfig{file=#2, height=#1cm, clip=}}%
    }%
}


%% Pour le sommaire.
\newlength{\Sujet}
\newlength{\Resume}
\newlength{\Enonces}
\newlength{\Corriges}
\setlength{\Enonces}{7mm} 
\setlength{\Corriges}{7mm}

\newcommand{\tdmtitresommaire}[1]{
%%  \renewcommand{\LeTitre}{#1}%
    \renewcommand{\LeTitreCourant}{#1}%
    \stepcounter{Corrige}   % pour \centersnumero
       \renewcommand{\labelitemi}{\ensuremath{\bullet}}
    \begin{tdmtabular}
         \mbox{}%
        &\mbox{}\hfill{\bfseries\Large{}Sommaire}\hfill\mbox{}%
        &\mbox{}%
        &\mbox{}%   
        \\
        \\
    \end{tdmtabular}
    }

\newlength{\tdmEntreLesColonnes}
\setlength{\tdmEntreLesColonnes}{5mm}
\newenvironment{tdmtabular}{%
    \noindent
    \begin{tabular}{
            @{}
            p{\Sujet}     % Le sujet
            @{\hskip\tdmEntreLesColonnes}
            p{\Resume}       % Les infos
            @{\hskip\tdmEntreLesColonnes}
            p{\Enonces}      % Les pages des énoncés
            @{\hskip\tdmEntreLesColonnes}
            p{\Corriges}     % Les pages des corrigés
            @{}
            }
    }{%
    \end{tabular}%
}

%\newenvironment{tdmtabular}{%
%    \begin{tabular}{
%            p{\Sujet}     % Le sujet
%            p{\Resume}       % Les infos
%            p{\Enonces}      % Les pages des énoncés
%            p{\Corriges}}     % Les pages des corrigés
%    }{%
%    \end{tabular}%
%}

% L'espace entre chaque épreuve d'un concours se règle via la commande
% \tdmspace. Elle vaut 0pt par défaut (et peut devenir négative).
\newlength{\tdmspace}
\setlength{\tdmspace}{0pt}

% L'espace entre le résumé et les outils se règle via la longueur suivante,
% valant \sk par défaut:
\newlength{\tdmintraspace}
\setlength{\tdmintraspace}{3pt plus 1pt minus 1pt}

% L'espace avant le titre des concours se règle via
% \tdmEspaceAvantTitreConcours et vaut 1mm par défaut.
\newlength{\tdmEspaceAvantTitreConcours}
\setlength{\tdmEspaceAvantTitreConcours}{1mm}

% De même pour l'espace après les titres des concours, avec 2mm comme valeur
% par défaut.
\newlength{\tdmEspaceApresTitreConcours}
\setlength{\tdmEspaceApresTitreConcours}{2mm}

\newcommand{\tdmoutils}[1]{\par\vskip\tdmintraspace{{\small\slshape#1}}}

\newcommand{\tdmConcours}[1]{%
    &\mbox{}\hfill{\bfseries\textsc{#1}}\hfill\mbox{}%
    &&\\[\tdmEspaceApresTitreConcours]%
}

\newcommand{\tdmPolytechnique}{\tdmConcours{Polytechnique}}
\newcommand{\tdmXENS}{\tdmConcours{X\ensuremath{\mathgras{/}}ENS}}
\newcommand{\tdmPetitesMines}{\tdmConcours{Mines}}
\newcommand{\tdmMines}{\tdmConcours{Mines-Ponts}}
\newcommand{\tdmENAC}{\tdmConcours{E.N.A.C.}}
\newcommand{\tdmCentrale}{\tdmConcours{Centrale-Supélec}}
\newcommand{\tdmCCP}{
	&\mbox{}\hfill{\bfseries\textsc{Concours Communs}}\hfill\mbox{}&&
		\\[0.5mm]
	&\mbox{}\hfill{\bfseries\textsc{Polytechniques}}\hfill\mbox{}%
		&&\\[\tdmEspaceApresTitreConcours]
}

\newcommand{\PagesEnoncesCorriges}{
        && \mbox{}\hfill \begin{sideways}Énoncé\end{sideways}
        &  \mbox{}\hfill \begin{sideways}Corrigé\end{sideways}
	\\
	}

%\newcommand{\Annexes}{\Concours{Annexes}}
\newcommand{\Annexes}{\Concours{Formulaires}}

% Les commandes obsolètes.
\newcommand{\outils}[1]{\sk\newline{\small\slshape#1}}

\newenvironment{sommaire}
%	{\begin{supertabular}{
	{\begin{longtable}{
			p{\Sujet}     % Le sujet
			p{\Resume}       % Les infos
			p{\Enonces}      % Les pages des énoncés
			p{\Corriges}     % Les pages des corrigés
	        }
	}
%	{\end{supertabular}}
	{\end{longtable}}

\newcommand{\titresommaire}[1]{
%	\renewcommand{\LeTitre}{#1}
	\renewcommand{\LeTitreCourant}{#1}
	\stepcounter{Corrige}	% pour \centersnumero
        \renewcommand{\labelitemi}{\ensuremath{\bullet}}
	\begin{sommaire}
		\mbox{}&\mbox{}\hfill{\bfseries\Large 
			Sommaire}\hfill\mbox{}&\mbox{}&\mbox{}\\ \\
	\end{sommaire}
	}

%\newlength{\ConcoursSkip}
%\newcommand{\Concours}[1]
%	{&\mbox{}\hskip\ConcoursSkip{\bfseries\textsc{#1}}&&\\ \\}
\newcommand{\Concours}[1]
	{&\mbox{}\hfill{\bfseries\textsc{#1}}\hfill\mbox{}&&\\ \\}

\newcommand{\Polytechnique}{\Concours{Polytechnique}}
\newcommand{\XENS}{\Concours{X\ensuremath{\mathgras{/}}ENS}}
\newcommand{\PetitesMines}{\Concours{Mines}}
\newcommand{\Mines}{\Concours{Mines-Ponts}}
\newcommand{\ENAC}{\Concours{E.N.A.C.}}
\newcommand{\Centrale}{\Concours{Centrale-Supélec}}
%\newcommand{\CCP}{\Concours{
%	\mbox{}\hskip-3mm
%	\begin{minipage}[t]{4cm}
%	Concours Communs\newline Polytechniques
%	\end{minipage}
%	}}
\newcommand{\CCP}{
	&\mbox{}\hfill{\bfseries\textsc{Concours Communs}}\hfill\mbox{}&&
		\\[0.5mm]
	&\mbox{}\hfill{\bfseries\textsc{Polytechniques}}\hfill\mbox{}&&\\ \\
}

%% Pour le sommaire croisé.
\newlength{\TitreCouche}

% Pour 2004
\newcommand{\LegendeSommaire}{\begin{turn}{270}%
        \raisebox{2.6cm}{%
                \begin{tabular}{@{}c@{\,}l@{\quad}l@{}}
                \raisebox{0pt}{\scriptsize\ding{172}}
                                &:& 1 fois depuis 1999          \\[-2mm]
                \raisebox{-1pt}{\ding{173}}
                                &:& 2 fois depuis 1999          \\[-2mm]
                \vdots          &&                              \\[-2mm]
                \raisebox{-4pt}{\LARGE\ding{176}}
                                &:& 5 fois depuis 1999          \\
                \raisebox{0pt}{\scriptsize\ding{182}}
                               &:& 1 fois depuis 1999 dont 2004
							        \\[-2mm]
                \raisebox{-1pt}{\ding{183}}
                                &:& 2 fois depuis 1999 dont 2004          
                                                                \\[-2mm]
                \vdots          &&                              \\[-2mm]
                \raisebox{-5.5pt}{\huge\ding{187}}
                                &:& 6 fois depuis 1999 dont 2004
                \end{tabular}%
        }
        \end{turn}%
        }

% Pour 2005
\newcommand{\LegendeSommaireCinq}{\begin{turn}{270}%
        \raisebox{2.6cm}{%
                \begin{tabular}{@{}c@{\,}l@{\quad}l@{}}
                \raisebox{0pt}{\scriptsize\ding{172}, \scriptsize\ding{173}}
                                &:& 1 ou 2 fois depuis 1999          \\[-2mm]
                \raisebox{-1pt}{\ding{174}}
                                &:& 3 fois depuis 1999          \\[-2mm]
                \vdots          &&                              \\[-2mm]
                \raisebox{-4pt}{\LARGE\ding{177}}
                                &:& 6 fois depuis 1999          \\
                \raisebox{0pt}{\scriptsize\ding{182}, \scriptsize\ding{183}}
                               &:& 1 ou 2 fois depuis 1999 dont 2005
                                    \\[-2mm]
                \raisebox{-1pt}{\ding{184}}
                                &:& 3 fois depuis 1999 dont 2005
                                                                \\[-2mm]
                \vdots          &&                              \\[-2mm]
                \raisebox{-5.5pt}{\huge\ding{188}}
                                &:& 7 fois depuis 1999 dont 2005
                \end{tabular}%
        }
        \end{turn}%
		}

% Pour 2006
% On cesse d'utiliser les commandes \scriptsize, ..., \huge, et on utilise une 
% échelle linéaire.
% Le plus petit rond mesure 1mm, le plus grand 3mm: on place les autres 
% à intervalles réguliers entre les deux.

% La valeur de 1/(annee-1999+1) pour déterminer les intervalles.
\newlength{\tailleminsommairecroise}
\newlength{\taillemaxsommairecroise}
\newlength{\intervallesommairecroise}
\newlength{\hauteursommairecroise}
\newlength{\grandehauteursommairecroise}
\newlength{\longueursommairecroise}

\setlength{\tailleminsommairecroise}{1mm}
\setlength{\taillemaxsommairecroise}{2mm}

\newcommand{\LegendeSommaireCroise}[1]{%
	\ifthenelse{\equal{#1}{2006}}{%
		\begin{turn}{270}%
        \raisebox{2.6cm}{%
        	\begin{tabular}{@{}c@{\,}l@{\quad}l@{}}
            \raisebox{0pt}{\resizebox{%
			\tailleminsommairecroise+\intervallesommairecroise}{!}{%
			\ding{172}}}
                                &:& 1 fois depuis 1999          \\[-2mm]
            \raisebox{-1pt}{\resizebox{%
			\tailleminsommairecroise+2\intervallesommairecroise}{!}{%
			\ding{173}}}%
                                &:& 2 fois depuis 1999          \\[-2mm]
                \vdots          &&                              \\[-2mm]
                \raisebox{-4pt}{\resizebox{%
				\tailleminsommairecroise+7\intervallesommairecroise}{!}{%
				\ding{178}}}%
                                &:& 7 fois depuis 1999          \\
                \raisebox{0pt}{\resizebox{%
				\tailleminsommairecroise+\intervallesommairecroise}{!}{%
				\ding{182}}}
                               &:& 1 fois depuis 1999 dont 2006
                                    \\[-2mm]
                \raisebox{-1pt}{\resizebox{%
				\tailleminsommairecroise+2\intervallesommairecroise}{!}{%
				\ding{183}}}
                                &:& 2 fois depuis 1999 dont 2006
                                                                \\[-2mm]
                \vdots          &&                              \\[-2mm]
                \raisebox{-5.5pt}{\resizebox{%
				\tailleminsommairecroise+8\intervallesommairecroise}{!}{%
				\ding{189}}}
                                &:& 8 fois depuis 1999 dont 2006
                \end{tabular}%
        }
        \end{turn}%
	}{%
	% else: l'an prochain
	}
}

\newcommand{\presentation}[1]{ 
        \mbox{}
        \thispagestyle{empty}
        \vfill
        \centers{{\bfseries\Huge #1}}
        \mbox{}
        \vskip2cm
        \mbox{}
        \vfill
        \mbox{}
        \newpage
}
\newcommand{\formulaires}{\presentation{Formulaires}}
\newcommand{\formulairesMaths}{%
    \presentation{%
        \begin{tabular}{c}
        Formulaire\\[3mm]
        de mathématiques \\
        \end{tabular}
    }%
}
\newcommand{\formulairesPhysiqueChimie}{%
    \presentation{%
        \begin{tabular}{c}
        Formulaire\\[3mm]
        de physique et de chimie \\
        \end{tabular}
    }%
}

\newcommand{\presentationCCP}[1]{
        \mbox{}
        \thispagestyle{empty}
        \vfill
        \centers{{\bfseries\Huge Concours Communs}}
        \centers{{\bfseries\Huge Polytechniques}}
        \mbox{}
        \vskip2cm
        \mbox{}
        \vfill
        \mbox{}
        \newpage
}

% L'ISBN.
\newcommand{\ISBN}{XXXXXXXXXXXX}

% Aligner dans les annexes de maths.
\newlength{\alignelength}
\newcommand{\aligne}[3]{%
        \settowidth{\alignelength}{#2}%
        #2%
        \hskip-\alignelength%  
        \hskip #1 cm%
        #3%
        }

% N'indiquer que le numéro de page dans le titre courant (annexes).
\newcommand{\JusteNumeroPage}{
%	\renewcommand{\LeTitre}{}
	\renewcommand{\LeTitreCourant}{}
	\renewcommand{\headrulewidth}{0pt}
%	\setlength{\headrulewidth}{0pt}
	}

% Utiliser à nouveau un titre courant complet (annexes).
\newcommand{\mkTitreCourant}[1]{
%	\renewcommand{\LeTitre}{#1}
	\renewcommand{\LeTitreCourant}{#1}
	\renewcommand{\headrulewidth}{0.5pt}
%	\setlength{\headrulewidth}{0.5pt}
	}

% « Insérer une page blanche. » Plus utile depuis 1999...
\newcommand{\pageblanche}[1][\thepage]{\thispagestyle{empty}  
        \mbox{} \vskip 2 cm%
        \Centers{{\bfseries\huge Ne pas imprimer}}\par%
        \Centers{{\bfseries\huge Insérer une page blanche}}%
        \vskip 3 cm%
        \Centers{{\bfseries\huge Page #1}}%
        \clearpage
        }


%!!!!!!!!!!!!!!!!!!!!!                             !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!   Des commandes pratiques   !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!                             !!!!!!!!!!!!!!!!!!!!!

%% On ne veut pas que les lettres majuscules soient inclinées dans les
%% formules mathématiques.

\mathcode`A="7041 \mathcode`B="7042 \mathcode`C="7043 \mathcode`D="7044
\mathcode`E="7045 \mathcode`F="7046 \mathcode`G="7047 \mathcode`H="7048
\mathcode`I="7049 \mathcode`J="704A \mathcode`K="704B \mathcode`L="704C
\mathcode`M="704D \mathcode`N="704E \mathcode`O="704F \mathcode`P="7050
\mathcode`Q="7051 \mathcode`R="7052 \mathcode`S="7053 \mathcode`T="7054
\mathcode`U="7055 \mathcode`V="7056 \mathcode`W="7057 \mathcode`X="7058
\mathcode`Y="7059 \mathcode`Z="705A


%% Rendre les guillemets ('«' et '»') actifs.
%%
%% Attention, cela implique de ne pas mettre d'espace après '«'
%% ni avant '»' dans le code source.
%%
%% Exemple de composition correcte: «comme ceci».

%\catcode`\«=\active
%\catcode`\»=\active
\def«{\og\ignorespaces}
\def»{{\fg}}

\newcommand{\ofg}[1]{\og{}#1\fg{}}

% L'environnement {remarque}.

% Le test \ifremarque est utile pour \leftcentersright.
\newif\ifremarque

\newenvironment{remarque}
        {\remarquetrue\bigskip\noindent\begin{filet}}   % Voir plus bas.
        {\end{filet}\bigskip\remarquefalse}

% L'environnement {indications}. Le nom « custom-itemize » est plus 
% « générique »...
\newenvironment{custom-itemize}[1]%
	{%
	\begin{list}{}%
		{%
		\settowidth{\labelwidth}{#1}%
		\setlength{\leftmargin}{\labelwidth+\labelsep}%
		}%
        }%
        {\end{list}}
\newenvironment{indications}[1]{\begin{custom-itemize}{#1}}%
	{\end{custom-itemize}}

% Insérer une ligne de séparation horizontale.
\newcommand{\separation}{\begin{center}\rule{3 cm}{1 pt}\end{center}}
\newcommand{\Separation}{\separation}

% Indenter les paragraphes dans une minipage.

\newlength{\longueurindentation}
\setlength{\longueurindentation}{\parindent}

\newcommand{\indenter}{\hskip\longueurindentation}



% La communication entre auteurs et relecteurs est un facteur très
% important dans la qualité finale des Annales. Les commandes suivantes
% servent à la faciliter.
%
% Lorsque l'auteur souhaite poser une question à ses relecteurs
% scientifiques, ou leur expliquer pourquoi il n'est pas d'accord avec
% telle ou telle proposition, ou encore pour dialoguer avec le relecteur
% typographique, le moyen « immédiat » est d'écrire, dans un courrier
% électronique, quelque chose comme « page 7, question I.4.b, paragraphe
% 2, ligne 7, je pense que ··· ». Ce n'est pas très ergonomique !
%
% La commande \note permet d'ajouter un commentaire directement dans le
% corrigé ou, plutôt, dans la marge du corrigé. De la sorte, la question
% ou le commentaire est vu par le relecteur (scientifique ou typo)
% directement dans le contexte: finis les allers et retours entre le
% corrigé et le mail. C'est bien plus pratique pour tout le monde.
%
% L'équipe des Annales a défini deux manières de présenter les notes.
% La commande \notesimple met le commentaire dans la marge; \notenumero
% indique en outre un numéro bien visible. Si vous écrivez toutes vos
% remarques avec \note, vous obtenez par défaut l'effet de \notenumero,
% mais vous pouvez obtenir le même rendu que par \notesimple avec
% l'option 0 ou simple.
%
% Exemple:
% [···] ce qui se résout\notenumero{résoud ou résout?} en [···]
%
% Un inconvénient de ces différentes commandes est qu'elles ne peuvent
% pas s'écrire dans certains environnements. Pour pallier ce
% problème, vous disposez des commandes \notemark et \notetext. Elles
% s'utilisent sur le même modèle que \footnotemark et \footnotetext.
% Pour repérer un endroit dans un environnement, il suffit d'utiliser 
% \notemark qui place le numéro dans le texte (de la même manière que
% \notenumero). Pour ensuite écrire la note correspondante, il faut
% utiliser la commande \notetext en dehors de l'environnement, soit
% avant soit après; elle comportera le même numéro. 
%
% Vous pouvez utiliser plusieurs \notemark dans le même environnement.
% La numérotation sera respectée à condition d'écrire les \notetext
% dans le même ordre (mais certains peuvent être avant l'environnement 
% et les suivants après, cela n'a pas d'importance).
%
% Vous pouvez utiliser dans votre corrigé à la fois des \note et
% \notetext; la numérotation sera correcte sous réserve que vous
% preniez garde à ce qu'il y ait autant de \notemark que de \notetext
% entre deux occurences de \note.
%
% Exemple : 
% [...]\notetext{résoud ou résout ?}
% \begin{remarque}
% [···] ce qui se résout\notemark en [···] 
% \end{remarque}
%
% Dans quelques rares cas (\partie, \Partie, \arraybox, \vect, \rest
% principalement), lors d'une utilisation de \notemark, le compteur
% sera incrémenté d'une unité de trop. Ceci est dû aux \settowidth ou
% \settoheight de ces commandes. Il faut donc éviter d'utiliser
% \notemark dans ces circonstances.
%
% Important : pour toutes ces commandes, il ne faut pas laisser d'espace
% avant le '\' sinon l'espace final sera trop grand.


\reversemarginpar
\marginparwidth 3.1cm


\newcounter{Note}[page]
\setcounter{Note}{0}

\newcounter{notesimple}
\setcounter{notesimple}{0}

% Pour les environnements hostiles
\newcounter{notemark}
\setcounter{notemark}{0}
\newcounter{notemarkref}
\setcounter{notemarkref}{0}
\newcounter{notetext}
\setcounter{notetext}{0}
\newcounter{notetextref}
\setcounter{notetextref}{0}

% Les compteurs \*ref servent à se rappeler où on en est, par exemple
% dans le cas où plusieurs \notemark se suivent avant l'apparition du
% premier \notetext; il faut en effet que le numéro de celui-ci
% corresponde au numéro du premier \notemark.

\newcommand{\notemark}{%
	\ifthenelse{\equal{\value{notemark}}{\value{notemarkref}}}{%
        		%on est au debut de l'environnement (premiere note)
        	\refstepcounter{notemark}%
        	\refstepcounter{notemarkref}%
        	\setcounter{Note}{\value{notemark}}%
       }{%
        		%notes suivantes
        	\refstepcounter{notemark}%
        	\setcounter{Note}{\value{notemark}}%
	}%
			%on prepare la suite
	\setcounter{notetextref}{\value{notemarkref}}%
			%on écrit le numéro
	\begin{picture}(0,0)%
        	\put(-3,-3){\LARGE\theNote}
	\end{picture}\xspace
}

\newcommand{\notetextbase}[1]{%
        \ifthenelse{\value{ifnote} = 1}{%
        \marginpar{\notedebasenumero{#1}}%
        }{}%
}

\newcommand{\notetext}[1]{
	\ifthenelse{\equal{\value{notetext}}{\value{notetextref}}}{%
        		%on est a la première note
        	\refstepcounter{notetext}%
        	\refstepcounter{notetextref}%
        	\setcounter{Note}{\value{notetext}}
        }{
       			 %notes suivantes
        	\refstepcounter{notetext}%
        	\setcounter{Note}{\value{notetext}}
	}%
			%on prepare la suite
\setcounter{notemarkref}{\value{notetextref}}%
\notetextbase{#1}%
}



\newcommand{\notedebase}[1]{%
	\raggedright%
        \footnotesize%
        \vskip-0.5\baselineskip
        \rule[-1.4mm]{\linewidth}{0.5pt}
        \rule[1.4mm]{\linewidth}{0.5pt} \\%
        \vskip-0.5\baselineskip
        #1 \\%
        \vskip-\baselineskip
        \rule[-1.4mm]{\linewidth}{0.5pt}
        \rule[1.4mm]{\linewidth}{0.5pt} \\%
}

\newcommand{\notedebasenumero}[1]{%
	{\LARGE\theNote}
	\notedebase{#1}%
}

\newcommand{\notesimple}[1]{%
	\ifthenelse{\value{ifnote} = 1}{%
	\marginpar{\notedebase{#1}}%	
	}{}%
}

\newcommand{\notenumero}[1]{%
        \ifthenelse{\value{ifnote} = 1}{%
        \refstepcounter{Note}%
        \setcounter{notemarkref}{\value{Note}}%
        \setcounter{notetextref}{\value{Note}}%
        \setcounter{notemark}{\value{Note}}%
        \setcounter{notetext}{\value{Note}}%
        \begin{picture}(0,0)%
        \put(-3,-3){\LARGE\theNote}
        \end{picture}%
        \ifthenelse{\isodd{\value{Note}}}{%
        	\protect\reversemarginpar%
	      	\marginpar[{\notedebasenumero{#1}}]{\notedebasenumero{#1}}}{%
           	\protect\normalmarginpar%
       		\marginpar[{\notedebasenumero{#1}}]{\notedebasenumero{#1}}}%
        }{}%
}

\newcommand{\typo}[1]{\notenumero{#1}}

\newcommand{\note}[2][1]{%
	\ifthenelse{\equal{#1}{0} \or \equal{#1}{simple}}{%
                \setcounter{notesimple}{1}%
        }{}%
	%
	\ifthenelse{\value{notesimple} = 0}{%
		\notenumero{#2}%
	}{%
		\notesimple{#2}%
	}
}



%!!!!!!!!!!!!!!!!!!!                                 !!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!   Petits raccourcis pratiques   !!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!                                 !!!!!!!!!!!!!!!!!!!

% Les espaces verticaux et horizontaux.
\newcommand{\sk}{\smallskip}
\newcommand{\mk}{\medskip}
\newcommand{\bk}{\bigskip}
\newcommand{\vk}{\vskip 1.5 cm}
\newcommand{\hk}{\hskip 1 cm\relax}
\newcommand{\marge}{\noindent}
\newcommand{\dquad}{\hskip.5em\relax}

% Quelques raccourcis pour des expressions, en italique ou pas.
\newcommand{\mkemph}[1]{\text{\emph{#1}}\xspace}
\newcommand{\etc}{etc.\xspace}
\newcommand{\apriori}{a priori\xspace}
\newcommand{\afortiori}{a fortiori\xspace}
\newcommand{\ie}{\mkemph{ie}}
\newcommand{\infine}{in fine\xspace}
\newcommand{\ssi}{\mkemph{ssi}}
\newcommand{\cf}{cf.\xspace}
\newcommand{\tiret}{\textbf{--}\xspace} % plus épais que la normale

% Mettre du texte en \texttt.
\newcommand{\ttt}[1]{\texttt{#1}}
\newcommand{\web}[1]{%
    \NoAutoSpaceBeforeFDP%  Pas d'espace avant les ':' et ';'
	\makeatletter%
	\texttt{#1}%
	\makeatother%
    \AutoSpaceBeforeFDP%
} % Gère '@'.

% Pour les adresses email.
% Exemple: \email{contact}{H-K.fr}
\newcommand{\email}[2]{%
    \texttt{#1}%
    {\fontfamily{ptm}\selectfont\at}%
    \texttt{#2}%
    }

% Quelques raccourcis.
\newcommand{\mbx}[1]{\mbox{#1}}	% Anti-goliotages...
\newcommand{\unentoure}{\ding{172}}
\newcommand{\deuxentoure}{\ding{173}}
\newcommand{\troisentoure}{\ding{174}}
\newcommand{\quatreentoure}{\ding{175}}
\newcommand{\cinqentoure}{\ding{176}}

% Les « e dans l'o » de merde et autres raccourcis standards.
\newcommand{\coeur}{c{\oe}ur\xspace}
\newcommand{\Coeur}{C{\oe}ur\xspace}
\newcommand{\coeurs}{c{\oe}urs\xspace}
\newcommand{\Coeurs}{C{\oe}urs\xspace}
\newcommand{\choeur}{ch{\oe}ur\xspace}
\newcommand{\Choeur}{Ch{\oe}ur\xspace}
\newcommand{\choeurs}{ch{\oe}urs\xspace}
\newcommand{\Choeurs}{Ch{\oe}urs\xspace}
\newcommand{\oeuvre}{{\oe}uvre\xspace}
\newcommand{\Oeuvre}{{\OE}uvre\xspace}
\newcommand{\oeuvres}{{\oe}uvres\xspace}
\newcommand{\Oeuvres}{{\OE}uvres\xspace}
\newcommand{\oeil}{{\oe}il\xspace}
\newcommand{\Oeil}{{\OE}il\xspace}
\newcommand{\oeuf}{{\oe}uf\xspace}
\newcommand{\oeufs}{{\oe}ufs\xspace}
\newcommand{\noeud}{n{\oe}ud\xspace}
\newcommand{\noeuds}{n{\oe}uds\xspace}
\newcommand{\Noeud}{N{\oe}ud\xspace}
\newcommand{\Noeuds}{N{\oe}uds\xspace}
\newcommand{\soeur}{s{\oe}ur\xspace}
\newcommand{\soeurs}{s{\oe}urs\xspace}
\newcommand{\Soeur}{S{\oe}ur\xspace}
\newcommand{\Soeurs}{S{\oe}urs\xspace}
\newcommand{\voeu}{v{\oe}u\xspace}
\newcommand{\Voeu}{V{\oe}u\xspace}
\newcommand{\voeux}{v{\oe}ux\xspace}
\newcommand{\Voeux}{V{\oe}ux\xspace}
\newcommand{\coefficient}{c{\oe}fficient\xspace}
%\newcommand{\madame}{M${}^{{\rm me}}$\xspace}   
\newcommand{\madame}{M\textsuperscript{me}\xspace}   
\newcommand{\Mme}{\madame}
%\newcommand{\mademoiselle}{M${}^{{\rm lle}}$\xspace}
\newcommand{\mademoiselle}{M\textsuperscript{lle}\xspace}
\newcommand{\mamzelle}{\mademoiselle}   
\newcommand{\Melle}{\mademoiselle}   
%\newcommand{\docteur}{D${}^{{\rm r}}$\xspace}
\newcommand{\docteur}{D\textsuperscript{r}\xspace}
\newcommand{\Dr}{\docteur}
\newcommand{\HK}{H{\footnotesize\&}K\xspace}
	% Attention, cela ne marche que pour la taille standard.
%\newcommand{\maitre}{M${}^{{\rm e}}$\xspace}
\newcommand{\maitre}{M\textsuperscript{e}\xspace}

%!!!!!!!!!!!!!!                                           !!!!!!!!!!!!!!
%!!!!!!!!!!!!!!   Commandes spécifiques de mise en page   !!!!!!!!!!!!!!
%!!!!!!!!!!!!!!                                           !!!!!!!!!!!!!!

% Faire des tableaux dans lesquels les lignes sont bien espacées.
% Cet environnement « éloigne » toutes les lignes d'un tableau, ce qui peut
% être utile lorsque les lignes sont systématiquement séparées par des traits.
%
% L'argument optionnel permet d'adapter le taux d'éloignement.
%
% Pour écarter les lignes horizontales autour d'une ligne particulière du
% tableau, plutôt que pour tout le tableau, on utilisera plutôt \vphantom,
% comme dans les exemples ci-dessous:
%	\vphantom{$\Sum{}{}$}
%	\vphantom{$\Int{}{}$}
%	\vphantom{$\Sum{0}{1}$}
%	\vphantom{\rule{1cm}{1cm}}
%
% Exemple :	\begin{ltab}
%		\begin{tabular}···\end{tabular}
%		\end{ltab}

\newenvironment{ltab}[1][2]{%
        \renewcommand{\arraystretch}{#1}}{%
        \renewcommand{\arraystretch}{1}}

% Pour placer deux {minipage} côte à côte de manière à optimiser l'espace
% horizontal disponible, il faut spécifier des largeurs dont la somme fait
% la largeur de la page. Une manière plus pratique est de ne spécifier que
% la largeur de la première {minipage} et d'utiliser \complete comme 
% ci-dessous pour spécifier la largeur de la deuxième.
%
% Attention à ne pas oublier le \noindent, sinon LaTeX vous avertira d'un
% 'Overfull hbox'.
%
% Exemple:	\noindent
%		\begin{minipage}{5cm}···\end{minipage}
%		\begin{minipage}{\complete{5}}···\end{minipage}
%
% Exemple:	\noindent
%		\begin{minipage}{5cm}···\end{minipage}
%		\hskip1cm
%		\begin{minipage}{\complete{6}}···\end{minipage}

\newcommand{\complete}[1]{\linewidth - #1 cm - 3 pt}

% Pour les dessins avec LaTeX.
%
% Cet environnement permet d'augmenter proprement la taille des traits
% dans un dessin fait avec latex. Le paramètre à passer peut prendre n'importe
% quelle valeur positive. Une valeur de 0.5 correspond à ne rien changer à 
% l'épaisseur des traits. Une valeur de 2.5 correspond à multiplier
% l'épaisseur des traits par 5, etc.
%
% ATTENTION: le positionnement des figures dépend de la version de LaTeX
% lorsque \allinethickness est utilisé. Autrement dit, n'utilisez JAMAIS cet
% environnement pour des traits qui doivent être placés finement, comme des
% axes d'un repère, des hachures ou encore en chimie organique.
%
% Exemple:	\begin{epaisseur}{1}	% Doubler l'épaisseur des traits
%		\begin{picture}(0,0)···\end{picture}
%		\end{epaisseur}

\newenvironment{epaisseur}[1]
        {\allinethickness{#1 pt}}
        {\allinethickness{0.5 pt}}

% On souhaite parfois ajouter des annotations sur une courbe réalisée avec
% gnuplot (par exemple). Une solution pratique est d'inclure cette courbe
% (au format postscript) avec \epsfig puis de créer un dessin de taille
% nulle (\begin{picture}(0,0)), dans lequel on ajoute les éléments souhaités
% (comme un vecteur (\vector) ou une valeur, $\pi$, etc.) grâce à la commande
% \put de LaTeX. Le problème avec cette méthode est qu'il faut deviner les
% « bonnes coordonnées » du point en lequel on souhaite placer un élément.
% Pour faciliter cette recherche des coordonnées, la commande \reperes dessine
% des graduations sur un repère virtuel. Ces graduations sont espacées de
% 10 points en 10 points, avec des traits plus grands pour les cinquantaines
% et les centaines. La commande \reperes prend un argument optionnel, qui est
% le nombre de graduations souhaité. La valeur par défaut est 20.
%
% Exemple:	\begin{picture}(0,0)
%		\reperes[15]
%		\put(37,48){$\f{\pi}{2}$}	% Comment trouver (37,48) ?
%		\end{picture}
%
% Attention, cette commande a vocation à être temporaire, elle ne sert qu'à
% trouver des coordonnées. N'oubliez pas de l'effacer de votre fichier une
% fois votre dessin terminé.

\newcounter{cinquantaine}
\newcounter{centaine}
\newcommand{\reperes}[1][20]{
	\ifthenelse{\value{ifnote} = 1}{%
		\setcounter{cinquantaine}{#1/5+1}%
		\setcounter{centaine}{#1/10+1}%
		\multiput(0,0)(10,0){#1}{\line(0,1){1}}%
		\multiput(0,0)(10,0){#1}{\line(0,-1){1}}%
		\multiput(0,0)(0,10){#1}{\line(1,0){1}}%
		\multiput(0,0)(0,10){#1}{\line(-1,0){1}}%
		\multiput(0,0)(-10,0){#1}{\line(0,1){1}}%
		\multiput(0,0)(-10,0){#1}{\line(0,-1){1}}%
		\multiput(0,0)(0,-10){#1}{\line(1,0){1}}%
		\multiput(0,0)(0,-10){#1}{\line(-1,0){1}}%
		\multiput(0,0)(50,0){\thecinquantaine}{\line(0,1){3}}%
		\multiput(0,0)(50,0){\thecinquantaine}{\line(0,-1){3}}%
		\multiput(0,0)(0,50){\thecinquantaine}{\line(1,0){3}}%
		\multiput(0,0)(0,50){\thecinquantaine}{\line(-1,0){3}}%
		\multiput(0,0)(-50,0){\thecinquantaine}{\line(0,1){3}}%
		\multiput(0,0)(-50,0){\thecinquantaine}{\line(0,-1){3}}%
		\multiput(0,0)(0,-50){\thecinquantaine}{\line(1,0){3}}%
		\multiput(0,0)(0,-50){\thecinquantaine}{\line(-1,0){3}}%
		\multiput(0,0)(100,0){\thecentaine}{\line(0,1){5}}%
		\multiput(0,0)(100,0){\thecentaine}{\line(0,-1){5}}%
		\multiput(0,0)(0,100){\thecentaine}{\line(1,0){5}}%
		\multiput(0,0)(0,100){\thecentaine}{\line(-1,0){5}}%
		\multiput(0,0)(-100,0){\thecentaine}{\line(0,1){5}}%
		\multiput(0,0)(-100,0){\thecentaine}{\line(0,-1){5}}%
		\multiput(0,0)(0,-100){\thecentaine}{\line(1,0){5}}%
		\multiput(0,0)(0,-100){\thecentaine}{\line(-1,0){5}}%
	}%
	{}%
}

% Pour créer des courbes, vous pouvez utiliser les extensions LaTeX PGF et
% TikZ (à la manière de l'environnement {picture}, mais beaucoup plus 
% puissantes). Attention, ce cas est un peu particulier, car il vous est 
% impossible de les utiliser directement dans le corrigé, il vous faut créer 
% un fichier à part que vous placerez ensuite dans le sous-répertoire PS/ de 
% votre corrigé.
%
% Pour plus d'informations, consultez la Doc à ce sujet:
% http://auteurs.h-k.fr/annales/Doc/Graphique/Utiliser_l_extension_PGF_Ti.html
%
% Voici un exemple minimal:
%
% \input{annales.sty}
% \usepackage{tikz}
% \pagestyle{empty}
% \begin{document}
% 
% \begin{dessinpgf}{1cm}{.05cm}
%	\draw [->] (-2,0) -- (2,0) node [pos=1, below] {$\log x$};
%	\draw [->] (0,-50) -- (0,20) node [pos=1, left] {$G$};
%	\draw [dashed] (-2,12) -- (0,12) -- (1.5,-48) node
%		[pos=.65,above,sloped] {$-40\U{dB/dec}$};
%	\draw (0,12) node [right] {$G_0 $};
%	\draw plot [samples=200,id=exp1,domain=-2:1.5] function {12.0 -10.0*
%		log10((1.0-10.**(2.*x))**2 + 22.47*10.**(2.*x))};
% \end{dessinpgf}
%
% \end{document}

\newenvironment{dessinpgf}[3][]{%
		\begin{tikzpicture}[#1]%
		\pgfsetxvec{\pgfpoint{#2}{0pt}}%
		\pgfsetyvec{\pgfpoint{0pt}{#3}}%
	}{%
		\end{tikzpicture}%
}


% \mathbf ne suffit pas toujours à mettre en gras. En pareil cas, on peut
% avoir recours à \mathgras. Il ne vaut toutefois mieux pas l'utiliser
% systématiquement, car il ralentit la compilation du corrigé.
%
% Exemple : $a \mathgras{=} b$.
% 
% Deux autres avantages: d'une part, tout texte en indice ou en exposant
% est automatiquement en gras; d'autre part, la police reste la même (ce
% qui n'est pas le cas avec \mathbf).  

\newcommand{\mathgras}[1]{\grastrue\ensuremath{%
	{\text{\mathversion{bold}\ensuremath{#1}}}%
	}\grasfalse}

% Pour tout mettre en gras, on peut aussi utiliser \textegras ou \gras
% et \nongras, qui présentent l'avantage d'obtenir les lettres
% n'existant pas en gras.
%
% Exemple: \textegras{On a $a = b$.}
% 	   \gras On a $a = b$. \nongras
%
% Ces commandes sont dues à Walter et présentes dans la définition de
% \partie, \Partie et des commandes à base de \mathBB.

\newcommand{\textegras}[1]{\grastrue\textbf{\mathversion{bold}#1}\grasfalse}%
\newcommand{\textgras}[1]{\textegras{#1}}
\newcommand{\gras}{\grastrue\bfseries\mathversion{bold}}%
\newcommand{\nongras}{\grasfalse\mathversion{normal}\normalfont}

\newif\ifgras

% Numéroter les parties et sous-parties (annexes).
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\arabic{subsection}}

% Pour commencer sur une page de droite et laisser proprement une page
% blanche en cas de besoin.
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}

% Des points de suspension sans limite de longueur.
\def\leaderfill{\leaders\hbox to 1ex{\hss.\hss}\hfill}

% Un peu spécieux, mais en fait pratique pour les annexes de maths.
\newcommand{\es}[1]{\ensuremath{#1}}

% Insérer une page de séparation, qui contient par exemple « Annexes » en
% énorme centré sur la page.
\newcommand{\pageseparation}[1]{%   
	\thispagestyle{empty}
        \mbox{}\vfill
        \begin{center}
        {\bfseries\Huge #1}
        \end{center}\vfill
        }

% Pour le tableau des constantes en chimie.
\newenvironment{deuxcolonnes}%
        {\setlength{\columnsep}{8 mm}%
        \setlength{\columnseprule}{0.5 pt}%
        \begin{multicols}{2}}%
        {\end{multicols}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%                                     %%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%   Pour l'environnement {remarque}   %%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%                                     %%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\makeatletter

\newbox\bk@bxb
\newbox\bk@bxa
\newif\if@bkcont 
\newif\ifbkcount
\newcount\bk@lcnt

\def\breakboxskip{2pt}
\def\breakboxparindent{1.8em}
\def\margesep{1cm}	% Écart entre la marge de gauche et le filet.
\def\intervalle{1mm}	% Écart supplémentaire entre le filet et le texte.

\def\filet{\vskip\breakboxskip\relax
\setbox\bk@bxb\vbox\bgroup
\advance\linewidth -\fboxrule
\advance\linewidth -\margesep
\advance\linewidth -\intervalle
\advance\linewidth -\fboxsep
\hsize\linewidth\@parboxrestore
\parindent\breakboxparindent\relax}

% \@tempdimb: amount of vertical skip 
% between the first line (\bk@bxa) and the rest (\bk@bxb)
\def\bk@split{%
\@tempdimb\ht\bk@bxb % height of original box
\advance\@tempdimb\dp\bk@bxb 
\setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it
\setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa
\setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation
\advance\@tempdimb-\ht\@tempboxa 
\advance\@tempdimb-\dp\@tempboxa}% gap between two boxes
 

% \@tempdima: height of the first line (\bk@bxa) + fboxsep
\def\bk@addfsepht{%
     \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}}

\def\bk@addskipht{%
     \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}}

% \@tempdima: depth of the first line (\bk@bxa) + fboxsep
\def\bk@addfsepdp{%
     \@tempdima\dp\bk@bxa
%     \advance\@tempdima\fboxsep
     \dp\bk@bxa\@tempdima}

% \@tempdima: depth of the first line (\bk@bxa) + vertical skip
\def\bk@addskipdp{%
     \@tempdima\dp\bk@bxa
     \advance\@tempdima\@tempdimb
     \dp\bk@bxa\@tempdima}

\def\bk@line{%
    \hbox to \linewidth{\ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi
    \hskip\margesep
    \vrule \@width\fboxrule\hskip\fboxsep
    \hskip\intervalle
    \box\bk@bxa\hfil
%    \hskip\fboxsep
	}}

\def\endfilet{\egroup
\ifhmode\par\fi{\noindent\bk@lcnt\@ne 
\@bkconttrue\baselineskip\z@\lineskiplimit\z@
\lineskip\z@\vfuzz\maxdimen
\bk@split\bk@addfsepht\bk@addskipdp
\ifvoid\bk@bxb      % Only one line
\def\bk@fstln{\bk@addfsepdp
%\vbox{\hrule\@height\fboxrule\bk@line\hrule\@height\fboxrule}}%
\vbox{\bk@line}}%
\else               % More than one line
%\def\bk@fstln{\vbox{\hrule\@height\fboxrule\bk@line}\hfil
\def\bk@fstln{\vbox{\bk@line}\hfil
\advance\bk@lcnt\@ne
\loop 
 \bk@split\bk@addskipdp\leavevmode
\ifvoid\bk@bxb      % The last line
 \@bkcontfalse\bk@addfsepdp
% \vtop{\bk@line\hrule\@height\fboxrule}%
 \vtop{\bk@line}%
\else               % 2,...,(n-1)
 \bk@line
\fi
 \hfil\advance\bk@lcnt\@ne
\if@bkcont\repeat}%
\fi
\leavevmode\bk@fstln\par}\vskip\breakboxskip\relax}

\bkcountfalse

\makeatother


%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!             !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Centrer   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!             !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

% LaTeX prévoit un mécanisme pour centrer les équations: $$···$$ (ou, de 
% manière équivalente, \[···\]). Ces commandes doivent être proscrites dans un
% travail en commun, parce que l'espace vertical placé avant et après 
% ces environnements change d'un site à l'autre, de sorte qu'il n'est pas 
% possible de préserver une mise en page soignée.
%
% En remplacement, voici une série de commandes plus générales (elles 
% permettent de centrer n'importe quoi: texte, formule, tableau, dessin, etc.).
%
% Supposons que l'on veuille simplement centrer une formule sur la page, comme
% ceci:
%
%				x_0 = 7
%
% On pourra utiliser la commande \centers.
%
% Exemple: \centers{$ x_0 = 7 $}
%	   \centers{Ceci est un texte centré}
%
% On peut vouloir y ajouter un petit mot de liaison en début de ligne, collé
% à la marge, en particulier dans une suite de calculs, comme ceci:
%
% d'où				x_0 = 7
%
% On pourra alors utiliser \leftcenters.
%
% Exemple: \leftcenters{ d'où }{ $x_0 = 7$ }
%
% Il est aussi parfois utile de placer du texte à droite de la ligne, collé
% à la marge, comme ceci:
%
% d'où				x_0 = 7					(2)
%
% On utilisera dans ce cas \leftcentersright.
%
% Exemple: \leftcentersright{ d'où }{ $x_0 = 7$ }{ \deux }
%
% Et si l'on ne souhaite rien placer à gauche, on dispose de \centersright.
%
% Pour toutes ces commandes, le texte du milieu est parfaitement centré sur
% la page quels que soient les deux autres arguments de \leftcentersright.
%
% Attention dès lors au risque de chevauchement: puisque le texte à gauche ne
% « pousse » pas celui du milieu vers la droite, ces deux textes peuvent très
% bien se chevaucher s'ils sont tous deux suffisamment longs. LaTeX ne vous
% préviendra pas, il faudra le déceler vous-même en regardant une version
% compilée. Cela ne devrait en général poser aucun problème.
%
% Les trois commandes précédentes admettent une variante en remplaçant
% 'centers' par 'encadre'; dans ce cas, le texte à centrer sera encadré.
%
% Exemple: \leftencadre{ En conclusion, }{ $A=0$ }
%
% Enfin, tous ces environnements (aussi bien avec 'centers' qu'avec 'encadre'
% laissent un espace vertical avant et après eux. Cet espace est, par défaut,
% équivalent à un \medskip. Mais vous pouvez le changer en passant un argument
% optionnel.
%
% Exemple:	\centers[0]	<==> 	Pas d'espace
%		\centers[1]	<==>	Laisser un \smallskip
%		\centers[2]	<==>	Laisser un \medskip
%		\centers[3]	<==>	Laisser un \bigskip
%		\centers[4]	<==>	Laisser 1 cm
%
% L'espace laissé avant et l'espace laissé après sont toujours identiques.

% L'ancienne commande \centers centrait par rapport à l'{itemize} (ou 
% l'environnement en cours) plutôt que par rapport à la page. On dispose
% d'une bascule pour passer d'un mode à l'autre.

\newcounter{Centers}
\setcounter{Centers}{0}

\newcommand{\CentersOnPage}{\setcounter{Centers}{0}}
\newcommand{\CentersOnItems}{\setcounter{Centers}{1}}

\newcommand{\leftcentersright}[4][2]{%
	\ifthenelse{\equal{\value{Centers}}{0}}{%
		\leftcentersrightonpage[#1]{#2}{#3}{#4}%
	}{
		\leftcentersrightonitems[#1]{#2}{#3}{#4}%		
	}
}

\newcounter{vcenterstest}
\newlength{\leftlength}
\newlength{\rightlength}
\newlength{\vcentersskip}
\newcommand{\leftcentersrightonitems}[4][2]{%
	\settowidth{\leftlength}{#2}%
	\settowidth{\rightlength}{#4}%
	\setcounter{vcenterstest}{#1}%
	\ifthenelse{\value{vcenterstest} = 0}
		{\setlength{\vcentersskip}{0pt}}{}%
	\ifthenelse{\value{vcenterstest} = 1}
		{\setlength{\vcentersskip}{\smallskipamount}}{}%
	\ifthenelse{\value{vcenterstest} = 2}
		{\setlength{\vcentersskip}{\medskipamount}}{}%
	\ifthenelse{\value{vcenterstest} = 3}
		{\setlength{\vcentersskip}{\bigskipamount}}{}%
	\ifthenelse{\value{vcenterstest} = 4}
		{\setlength{\vcentersskip}{1cm}}{}%
		% On laisse un espace vertical défini par l'argument
		% optionnel #1
	\vskip\vcentersskip
		% On place #2 et on recule de sa longueur
	\noindent#2\hskip-\leftlength%
		% On centre #3
	\hfill#3\hfill%
		% On va au bout de la ligne, on recule de la longueur de #4 et
		% on place #4
	\mbox{}\hskip-\rightlength#4%
		% On laisse un espace vertical défini par l'argument
		% optionnel #1
	\vskip\vcentersskip%
}

%\newlength{\leftlength}
%\newlength{\rightlength}
\newlength{\calculskip}
\newcommand{\calculvskip}[1]{% 
  \ifthenelse{#1 = 0}{\setlength{\calculskip}{0pt}}{}%
  \ifthenelse{#1 = 1}{\setlength{\calculskip}{\smallskipamount}}{}%
  \ifthenelse{#1 = 2}{\setlength{\calculskip}{\medskipamount}}{}%
  \ifthenelse{#1 = 3}{\setlength{\calculskip}{\bigskipamount}}{}%
  \ifthenelse{#1 = 4}{\setlength{\calculskip}{1cm}}{}%
  \vskip\calculskip
} 

\newcommand{\leftcentersrightonpage}[4][2]{%
	\settowidth{\leftlength}{#2}%
	\settowidth{\rightlength}{#4}%
		% On laisse un espace vertical défini par l'argument
		% optionnel #1
	\calculvskip{#1}
        % On place #2 et on recule de sa longueur
		% Amélioration par Céline: la ligne suivante fait en sorte
		% que l'argument du milieu soit toujours bien centré sur la
		% page, plutôt que centré dans l'environnement (sauf
		% dans une {remarque}, à la demande de Manu).
	\noindent#2\hskip-\leftlength%
%	\hskip\linewidth\hskip-\textwidth%
	\ifremarque{}\else\hskip\linewidth\hskip-\textwidth\fi%
		% On centre #3
	\hfill{#3}\hfill
		% On va au bout de la ligne, on recule de la longueur de #4 et
		% on place #4
	\mbox{}\hskip-\rightlength#4%
		% On laisse un espace vertical défini par l'argument
		% optionnel #1
	\vskip\calculskip%
}

\newcommand{\centers}[2][2]{\leftcentersright[#1]{}{#2}{}}
\newcommand{\leftcenters}[3][2]{\leftcentersright[#1]{#2}{#3}{}}
\newcommand{\centersright}[3][2]{\leftcentersright[#1]{}{#2}{#3}}
\newcommand{\leftencadreright}[4][2]{\leftcentersright[#1]{#2}{\fbox{#3}}{#4}}
\newcommand{\encadre}[2][2]{\leftcentersright[#1]{}{\fbox{#2}}{}}
\newcommand{\leftencadre}[3][2]{\leftcentersright[#1]{#2}{\fbox{#3}}{}}
\newcommand{\encadreright}[3][2]{\leftcentersright[#1]{}{\fbox{#2}}{#3}}
\newcommand{\remandcenters}[3][2]{\leftcentersright[#1]{#2}{#3}{}} % Synonyme
\newcommand{\centrer}[2][2]{\leftcentersright[#1]{}{#2}{}}	% Synonyme
\newcommand{\Centers}[2][2]{\leftcentersright[#1]{}{#2}{}}	% Synonyme



% Pour encadrer un texte trop long pour tenir sur une seule ligne, il faut
% inclure ce texte dans une {minipage}. La commande \encadreminipage prend
% deux arguments: la largeur de la {minipage}, puis le texte. On peut
% également inclure un argument optionnel pour régler l'espace avant et après
% la {minipage}.
%
% Exemple:	\encadreminipage{8cm}{texte ··· texte}

\newcommand{\encadreminipage}[3][2]{%
	\leftcentersright[#1]{}{\fbox{%
		\begin{minipage}{#2} #3 \end{minipage}%
	}}{}%
}

\newcommand{\centersminipage}[3][2]{%
        \leftcentersright[#1]{}{%
                \begin{minipage}{#2} #3 \end{minipage}%
        }{}%
}

%!!!!!!!!!!!!!!!!!!!!                              !!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!   Raccourcis de correction   !!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!                              !!!!!!!!!!!!!!!!!!!!

% Les raccourcis ci-dessous sont surtout utiles pour corriger le travail
% d'une tierce personne. Rien ne vous empêche néanmoins de les utiliser.

\newcommand{\donccenters}[2][2]{\leftcenters[#1]{donc}{#2}}
\newcommand{\doucenters}[2][2]{\leftcenters[#1]{d'où}{#2}}
\newcommand{\carcenters}[2][2]{\leftcenters[#1]{car}{#2}}
\newcommand{\cadcenters}[2][2]{\leftcenters[#1]{c'est-à-dire}{#2}}
\newcommand{\puiscenters}[2][2]{\leftcenters[#1]{puis}{#2}}
\newcommand{\ainsicenters}[2][2]{\leftcenters[#1]{Ainsi,}{#2}}
\newcommand{\depluscenters}[2][2]{\leftcenters[#1]{De plus,}{#2}}
\newcommand{\aveccenters}[2][2]{\leftcenters[#1]{avec}{#2}}
\newcommand{\soitcenters}[2][2]{\leftcenters[#1]{soit}{#2}}
\newcommand{\alorscenters}[2][2]{\leftcenters[#1]{alors}{#2}}
\newcommand{\maiscenters}[2][2]{\leftcenters[#1]{mais}{#2}}
\newcommand{\commecenters}[2][2]{\leftcenters[#1]{Comme}{#2}}
\newcommand{\ailleurscenters}[2][2]{\leftcenters[#1]{Par ailleurs,}{#2}}
\newcommand{\orcenters}[2][2]{\leftcenters[#1]{Or,}{#2}}
\newcommand{\etcenters}[2][2]{\leftcenters[#1]{et}{#2}}
\newcommand{\deduitcenters}[2][2]{\leftcenters[#1]{On en déduit}{#2}}
\newcommand{\parsuitecenters}[2][2]{\leftcenters[#1]{Par suite,}{#2}}
\newcommand{\parcsqcenters}[2][2]{\leftcenters[#1]{Par conséquent,}{#2}}
\newcommand{\ilvientcenters}[2][2]{\leftcenters[#1]{Il vient}{#2}}
\newcommand{\conclusioncenters}[2][2]{\leftcenters[#1]{Conclusion :}{#2}}
\newcommand{\finalementcenters}[2][2]{\leftcenters[#1]{Finalement,}{#2}}
\newcommand{\ANcenters}[2][2]{\leftcenters[#1]{\textit{Application
	numérique\/}\,:}{#2}}
%
\newcommand{\doncencadre}[2][2]{\leftencadre[#1]{donc}{#2}}
\newcommand{\douencadre}[2][2]{\leftencadre[#1]{d'où}{#2}}
\newcommand{\carencadre}[2][2]{\leftencadre[#1]{car}{#2}}
\newcommand{\cadencadre}[2][2]{\leftencadre[#1]{c'est-à-dire}{#2}}
\newcommand{\puisencadre}[2][2]{\leftencadre[#1]{puis}{#2}}
\newcommand{\ainsiencadre}[2][2]{\leftencadre[#1]{Ainsi,}{#2}}
\newcommand{\deplusencadre}[2][2]{\leftencadre[#1]{De plus,}{#2}}
\newcommand{\avecencadre}[2][2]{\leftencadre[#1]{avec}{#2}}
\newcommand{\soitencadre}[2][2]{\leftencadre[#1]{soit}{#2}}
\newcommand{\alorsencadre}[2][2]{\leftencadre[#1]{alors}{#2}}
\newcommand{\maisencadre}[2][2]{\leftencadre[#1]{mais}{#2}}
\newcommand{\ailleursencadre}[2][2]{\leftencadre[#1]{Par ailleurs,}{#2}}
\newcommand{\orencadre}[2][2]{\leftencadre[#1]{Or}{#2}}
\newcommand{\etencadre}[2][2]{\leftencadre[#1]{et}{#2}}
\newcommand{\deduitencadre}[2][2]{\leftencadre[#1]{On en déduit}{#2}}
\newcommand{\parsuiteencadre}[2][2]{\leftencadre[#1]{Par suite,}{#2}}
\newcommand{\parcsqencadre}[2][2]{\leftencadre[#1]{Par conséquent,}{#2}}
\newcommand{\ilvientencadre}[2][2]{\leftencadre[#1]{Il vient}{#2}}
\newcommand{\conclusionencadre}[2][2]{\leftencadre[#1]{Conclusion :}{#2}}
\newcommand{\finalementencadre}[2][2]{\leftencadre[#1]{Finalement,}{#2}}
\newcommand{\ANencadre}[2][2]{\leftencadre[#1]{\textit{Application
	numérique\/}\,:}{#2}}

% Les exposants.
\newcommand{\moinsun}{\ensuremath{{}^{-1}}}
\newcommand{\moinsdeux}{\ensuremath{{}^{-2}}}
\newcommand{\moinstrois}{\ensuremath{{}^{-3}}}



%!!!!!!!!!!!!!!!!!!!!!                             !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!   Calculs et commentaires   !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!                             !!!!!!!!!!!!!!!!!!!!!

% Les outils de cette section sont une généralisation de \leftcentersright
% et des environnements du type {systsimple}. L'idée est de pouvoir:
%
%       * centrer des calculs sur la page
%       * écrire un commentaire spécifique à une ligne, collé à la marge gauche
%       * écrire un commentaire spécifique à une ligne, collé à la marge droite
%
% Visuellement, le rendu pourrait ressembler à ceci:
%
% On sait que                    a = b
% et                             b = c              d'après la question IV.2.c
% donc                           a = c                        par transitivité
% En outre,                      d = c
% c'est-à-dire                   c = d
% d'où                           a = d              en rassemblant les calculs
%
% On ne peut pas se contenter d'utiliser \leftcentersright à chaque ligne,
% car les signes '=' ne seraient alors pas alignés. Il est nécessaire
% d'utiliser un tableau ({array}) pour garantir leur alignement.
%
% Nous allons voir plusieurs environnements, du plus simple au plus général.
%
% Les commandes de cette section ont été écrites par Céline.

% D'abord, quelques routines et déclarations.

\newsavebox{\boite}
\def\debutcom{\begin{lrbox}{\boite}}
\def\fincomg{\end{lrbox}\makebox[0cm][l]{\usebox{\boite}}%
             \hskip\linewidth\hskip-\textwidth}
\def\fincomd{\end{lrbox}\makebox[0cm][r]{\usebox{\boite}}}


% L'environnement {egalites} réalise l'illustration donnée en préambule.
% Voici un exemple d'utilisation :
%
% \begin{egalites}
%     On a   & a & b &              \\
%     et     & b & c & (question 3) \\
%     donc   & a & c &              \\
% \end{egalites}
%
% ce qui produit:
%
% On a                            a = b
% et                              b = c                           (question 3)
% donc                            a = c
%
% Remarquez que l'environnement {egalites} utilise un tableau à 4 colonnes.
% La première et la dernière sont réservées aux commentaires: on peut donc
% y écrire du texte en français. En revanche, la deuxième et la troisième
% servent pour les mathématiques: il n'est pas besoin de préciser les $ du
% mode maths, ils sont inclus pour vous. (Plus précisément, il ne faut pas
% les indiquer dans votre code, sinon vous annulez leur effet.)
%
% {egalites}, comme tous les autres environnements de cette section, possède
% une propriété bien sympathique: les colonnes collées à la marge sont
% « infiniment extensibles », c'est-à-dire que contrairement à la coutume,
% elles ne réservent pas une place fixe calculées sur la largeur de l'élément
% le plus large. Ainsi, on peut tout à fait obtenir:
%
% On a               a = b + c + d + e + f + g + h + i + j + k + l
% et             u + v = x + y                  d'après la question précédente
% donc  age(capitaine) = 30                          (même si ça dépend quand)
%
% (Ce qu'il faut remarquer, c'est que la colonne comportant le paquet
% d'additions « mord » sur la colonne des commentaires sans que cela gêne
% cette dernière.)
%
% Tout comme \leftcentersright et ses dérivés (\centers, \leftcenters, etc.),
% l'environnement {egalites} accepte un argument optionnel, qui permet de
% régler les espaces verticaux avant et après. Pour laisser un argument plus
% grand que la normale, on écrirait donc:
%
% \begin{egalites}[3]   % Valeur par défaut: 2.
%                       % Valeur maximale: 4.
%
% Et pour ne laisser aucun espace avant ni après:
%
% \begin{egalites}[0]
%
% L'espace entre les lignes du calcul peut en outre être géré très finement,
% ligne par ligne, en utilisant l'argument optionnel de '\\', selon la
% procédure classique:
%
% \begin{egalites}
%     On a   & a & b &              \\[2mm]
%     et     & b & c & (question 3) \\[4mm]
%     donc   & a & c &              \\
% \end{egalites}
%
% Enfin, sachez que l'environnement {egalites} (comme les suivants) n'est
% pas compatible avec \leftcentersright ou l'un de ses dérivés. On ne peut
% donc _pas_ écrire \centers{\begin{egalites} ··· \end{egalites}}.
% Ce serait d'ailleurs tout à fait inutile. Si vous pensez en avoir
% véritablement besoin un jour, utilisez simplement une {minipage}.

\newenvironment{calculs:base}[2][2]{%
	% On laisse un espace vertical défini par l'argument optionnel #1
  	\calculvskip{#1}
  	\noindent
  	\begin{tabular*}{\linewidth}[t]%
    		{@{}>{\debutcom}l<{\fincomg}@{\extracolsep{\fill}}%
      		>{$}r<{$}%
      		@{$\ #2\ $}%
      		@{\extracolsep{0pt}}>{$}l<{$}%
      		@{\extracolsep{\fill}}>{\debutcom}r<{\fincomd}@{}}
	}{%
  	\end{tabular*}%
  	\vskip\calculskip
}

\newenvironment{egalites}[1][2]{%
	\begin{calculs:base}[#1]{=}}{%
	\end{calculs:base}
}

% Autre cas fréquent: le symbole de relation entre les membres de gauche et
% de droite n'est pas '=', mais '\leq', ou '\geq'. On dispose de deux
% environnements pour répondre à ce besoin:
%
% \begin{inegalites:leq}
%     On a   & a & b &              \\[2mm]
%     et     & b & c & (question 3) \\[2mm]
%     donc   & a & c &              \\
% \end{inegalites:leq}
%
% \begin{inegalites:geq}
%     On a   & a & b &              \\[2mm]
%     et     & b & c & (question 3) \\[2mm]
%     donc   & a & c &              \\
% \end{inegalites:geq}
%
% Le premier cas étant de loin le plus fréquent, il est également accessible
% par la version abrégée {inegalites}:
%
% \begin{inegalites}
%     On a   & a & b &              \\[2mm]
%     et     & b & c & (question 3) \\[2mm]
%     donc   & a & c &              \\
% \end{inegalites}

\newenvironment{inegalites}{%
	\begin{inegalites:leq}}{%
	\end{inegalites:leq}
}

\newenvironment{inegalites:leq}[1][2]{%
	\begin{calculs:base}[#1]{\leq}}{%
	\end{calculs:base}
}

\newenvironment{inegalites:geq}[1][2]{%
	\begin{calculs:base}[#1]{\geq}}{%
	\end{calculs:base}
}

% Les environnements précédents sont pratiques, mais ils sont loin de couvrir
% tous les cas. Bien souvent, le symbole de relation change en cours de
% calcul, ce qui nécessite un environnement plus général: {calculs}.
%
% Dans cet environnement, vous devez préciser le symbole de relation à chaque
% ligne, dans une colonne à part:
%
% \begin{calculs}
%     On a   & a &  =   & b &              \\
%     et     & b & \leq & c & (question 3) \\
%     donc   & a & \leq & c &              \\
% \end{calculs}
%
% Le principe est inchangé pour les autres colonnes.

\newenvironment{calculs}[1][2]%
        {\begin{calculs:rcl}[#1]{r}{c}{l}}%
        {\end{calculs:rcl}}

% Lorsque les calculs se compliquent, il est parfois souhaitable de ne pas
% suivre les consignes générales d'alignement, qui veulent que la colonne
% de gauche (dans les calculs, ie celle qui précède le symbole de relation)
% soit justifiée à droite, et la colonne de droite justifiée à gauche.
%
% LaTeX utilise les lettres
%   * l (left)
%   * c (center)
%   * r (right)
% pour classer les types d'alignements. La règle classique est donc
% r (colonne de gauche) puis c (symbole de relation) puis l (colonne de droite).
%
% L'environnement {calculs:rcl} fonctionne comme {calculs}, hormis qu'il
% exige trois paramètres, en plus de l'argument optionnel; ces paramètres
% règleront pour vous la justification des colonnes.
%
% \begin{calculs:rcl}{c}{c}{l}
%     On a   & a & = & b &              \\[2mm]
%     et     & b & = & c & (question 3) \\[2mm]
%     donc   & a & = & c &              \\
% \end{calculs:rcl}
%
% Remarquez qu'il n'est pas possible de changer l'alignement des colonnes
% ligne par ligne: ceci est une limitation de LaTeX.

\newenvironment{calculs:rcl}[4][2]{%
	% On laisse un espace vertical défini par l'argument
        % optionnel #1
	\calculvskip{#1}
  	\noindent
  	\begin{tabular*}{\linewidth}[t]%
  		{@{}>{\debutcom}l<{\fincomg}@{\extracolsep{\fill}}
		>{$}#2<{$}@{\extracolsep{0pt}}%
		>{$\ }#3<{\ $}%
      		@{\extracolsep{0pt}}>{$}#4<{$}%
      		@{\extracolsep{\fill}}>{\debutcom}r<{\fincomd}@{}}%
	}{%
  	\end{tabular*}%
  	\vskip\calculskip
}

% Occasionnellement, il arrive que l'on ait besoin de séparer en deux morceaux
% la colonne de droite dans un calcul. Cela peut avoir lieu dans deux cas:
%
%   1° lorsqu'une ligne est trop longue;
%   2° lorsque le membre de droite comporte deux termes bien distincts.
%
% Le premier cas n'est pas traité ici. En revanche, pour le deuxième, c'est
% simple: il suffit de diviser la colonne de droite en deux colonnes ou, ce
% qui revient au même, à introduire une colonne supplémentaire entre la
% colonne des relations et la colonne des commentaires collés à la marge de
% droite.
%
% Voici un exemple d'utilisation:
%
% \begin{calculs:rcl:extracol}{r}{c}{l}{l}
%     On a   & a   &  =   & b_1 & + b_2 &               \\[2mm]
%     et     & b_1 & \leq & c   &       & (question 3a) \\[2mm]
%            & b_2 & \leq & d   &       & (question 3b) \\[2mm]
%     donc   & a   & \leq & c   & + d   &               \\
% \end{calculs:rcl:extracol}
%
% Dans cet exemple, imaginez bien sûr que b_1, b_2, c et d sont des
% expressions plutôt complexes: il va de soi que vous n'avez pas besoin
% de cet environnement pour additionner des termes de petite taille.

\newenvironment{calculs:rcl:extracol}[5][2]{%
	\calculvskip{#1}
 	\noindent
	\begin{tabular*}{\linewidth}[t]%
                {@{}>{\debutcom}l<{\fincomg}@{\extracolsep{\fill}}%
		>{$}#2<{$}@{\extracolsep{0pt}}%
		>{$\ }#3<{\ $}@{\extracolsep{0pt}}%
		>{$}#4<{$}@{\extracolsep{0pt}}%
      		>{$\null}#5<{$}%
      		@{\extracolsep{\fill}}>{\debutcom}r<{\fincomd}@{}}%
}{%
  	\end{tabular*}%
  	\vskip\calculskip
}

% Aucun des environnements précédents ne répond pleinement à vos besoins ?
% Vos calculs sont abominables au-delà de toute norme ?
% Nous avons la solution.
%
% L'environnement {calculs:rcl:extracol} vous ouvrait une colonne
% supplémentaire mais imposait encore que le symbole se trouve dans la
% deuxième (sans compter celle des commentaires collés à la marge de gauche).
%
% Avec {calculs:latotale}, vous disposez de 5 colonnes garanties sans
% restriction, en plus des deux colonnes qui servent aux commentaires collés
% aux marges. Vous pouvez les utiliser comme bon vous semble pour créer
% des dispositions adaptées à vos besoins.
%
% Attention, le corollaire de cette liberté est que les espaces autour des
% relations (=, \leq, etc.) ne sont plus réglés pour vous, vous allez devoir
% les placer à la main en les faisant précéder et suivre d'un espace
% (remplacer '=' par '\ =\ \null'). Voici un exemple d'utilisation:
%
% \begin{calculs:latotale}[3]{c}{l}{c}{l}{l}
%     On a   & a & + b & \ = \    \null & c & + d &               \\[2mm]
%     et     & a & + c & \ = \    \null & e & + d & (question 3a) \\[4mm]
%     donc   & a & - b & \ \leq \ \null & f &     &               \\
% \end{calculs:latotale}
%
% Plus simplement, vous pouvez aussi régler ces espaces pour toute la
% colonne d'un coup à l'aide de '<' et '>'. Dans l'exemple précédent,
% cela donnerait:
%
% \begin{calculs:latotale}[3]{c}{l}{>{\ }c<{\ }}{l}{l}
%     On a   & a & + b & =    & c & + d &               \\[2mm]
%     et     & a & + c & =    & e & + d & (question 3a) \\[4mm]
%     donc   & a & - b & \leq & f &     &               \\
% \end{calculs:latotale}

\newenvironment{calculs:latotale}[6][2]{%
  	\calculvskip{#1}
  	\noindent
  	\begin{tabular*}{\linewidth}[t]%
    	        {@{}>{\debutcom}l<{\fincomg}@{\extracolsep{\fill}}%
      		>{$\null}#2<{$}@{\extracolsep{0pt}}%
      		>{$\null}#3<{$}@{\extracolsep{0pt}}%
      		>{$\null}#4<{$}%
      		@{\extracolsep{0pt}}>{$\null}#5<{$}%
     		@{\extracolsep{0pt}}>{$\null}#6<{$}%
      		@{\extracolsep{\fill}}>{\debutcom}r<{\fincomd}@{}}%
}{%
  	\end{tabular*}%
  	\vskip\calculskip
}

% Bravo d'avoir lu jusque-là ! Pour vous en remercier, voici une petite
% astuce: les séparateurs '&' n'ont pas besoin d'être précisés lorsqu'ils
% précèdent immédiatement le retour à la ligne '\\'. Autrement dit, si
% vous ne collez pas de commentaire à la marge de droite, vous pouvez
% vous éviter de taper un '&' et, surtout, vous éviter de compter ces
% symboles.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%                                  %%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%   Le langage des mathématiques   %%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%                                  %%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%!!!!!!!!!!!!!!!!!!!!!!!!!!                   !!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!   Les fractions   !!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!                   !!!!!!!!!!!!!!!!!!!!!!!!!!

% La taille des fractions doit s'adapter au contexte: grandes dans une 
% équation, petites en exposant ou en indice. La commande \f gère pour vous
% tous les cas.
%
% Exemple : $ \f{1}{2} $
%	    $ x^{\f{3}{2}} $
%	    $ \Int{0}{ \f{pi}{2} } \cos²t \dt $
\newcommand{\f}[2]{{\ensuremath{%
	\mathchoice%
	{\dfrac{#1}{#2}}
    {\dfrac{#1}{#2}}
	{\frac{#1}{#2}}
	{\frac{#1}{#2}}
}}}

% Dans le texte, on a souvent envie d'écrire 1/2 plutôt que \f{1}{2}.
% La macro \tf permet de corriger rapidement un \f malheureux.
% Exemple: $ \tf{1}{\sqrt{2}} $  <==>  $1 / \sqrt{2}$
\newcommand{\tf}[2]{\ensuremath{#1/#2}}

% Quelques raccourcis pour les infortunés qui utilisent un clavier azerty.
\newcommand{\demi}{\ensuremath{\f{1}{2}}\xspace}
\newcommand{\tdemi}{\ensuremath{1/2}\xspace}
\newcommand{\tiers}{\ensuremath{\f{1}{3}}\xspace}
\newcommand{\ttiers}{\ensuremath{1/3}\xspace}
\newcommand{\quart}{\ensuremath{\f{1}{4}}\xspace}
\newcommand{\tquart}{\ensuremath{1/4}\xspace}

%!!!!!!!!!!!!!!!!!!!!!!!!!                     !!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!   Les parenthèses   !!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!                     !!!!!!!!!!!!!!!!!!!!!!!!!

% Pour indiquer des parenthèses autour d'une grosse expression, il peut
% parfois être utile d'utiliser une macro plutôt que la commande explicite,
% qui est \left(···\right).
%
% Exemple: $ \pa{ \Int{0}{1} f(t) \dt }^{\f{1}{2}} $
%
% Attention, il ne faut pas utiliser cette macro dans les deux cas suivants:
%
% * Autour d'une lettre seule, comme dans $f\pa(x)$: l'espace après
%   le $f$ ne serait pas bon. Utiliser simplement $f(x)$.
%
% * Autour d'un vecteur seul, comme dans $\pa{\vect{E}}$. Il est
%   normal et souhaitable que la flèche dépasse des parenthèses.
%   Utiliser simplement $(\vect{E})$. S'il y a une fraction,
%   préférez $ \pa{ \f{1}{2} \vect{E} } $ à
%            $ \pa{ \f{\vect{E}}{2} $.
%
% En résumé, n'utilisez \pa que lorsque vous en avez vraiment besoin, ce qui
% n'est pas le cas courant.
%
% La commande \pa possède une option pour corriger facilement des
% parenthèses trop grandes:
% \pa[0] supprime les parenthèses
% \pa[1] les transforme en parenthèses simples
% \pa[2-5] les transforme en parenthèses de plus en plus grandes 

%\newcommand{\pa}[1]{\ensuremath{\left(#1\right)}}
\newcommand{\pa}[2][9]{%
	\ifthenelse{#1 = 0}
		{\ensuremath{#2}}{}%
	\ifthenelse{#1 = 1}
		{\ensuremath{(#2)}}{}%
	\ifthenelse{#1 = 2}
		{\ensuremath{\big(#2\big)}}{}%
	\ifthenelse{#1 = 3}
		{\ensuremath{\Big(#2\Big)}}{}%
	\ifthenelse{#1 = 4}
		{\ensuremath{\bigg(#2\bigg)}}{}%
	\ifthenelse{#1 = 5}
		{\ensuremath{\Bigg(#2\Bigg)}}{}%
	\ifthenelse{#1 = 9}
		{\ensuremath{\left(#2\right)}}{}%
}

% Des parenthèses autour d'une fraction (très très pratique !).
% Exemple: $ \paf{1}{2} $
\newcommand{\paf}[2]{\ensuremath{\left(\f{#1}{#2}\right)}}

% Et l'analogue de \tf pour les parenthèses autour d'une fraction:
\newcommand{\patf}[2]{\ensuremath{\left({#1}/{#2}\right)}}

% On peut aussi vouloir des crochets de la bonne taille plutôt que des 
% parenthèses (analogue de \pa: mêmes recommandations).
% Exemple: $\crochets{ \f{1}{2} x \ln x }$
%\newcommand{\crochets}[1]{\ensuremath{\left[#1\right]}}
%\newcommand{\pac}[1]{\ensuremath{\crochets{#1}}}		% Synonyme
\newcommand{\crochets}[2][9]{%
	\ifthenelse{#1 = 0}
		{\ensuremath{#2}}{}%
	\ifthenelse{#1 = 1}
		{\ensuremath{[#2]}}{}%
	\ifthenelse{#1 = 2}
		{\ensuremath{\big[#2\big]}}{}%
	\ifthenelse{#1 = 3}
		{\ensuremath{\Big[#2\Big]}}{}%
	\ifthenelse{#1 = 4}
		{\ensuremath{\bigg[#2\bigg]}}{}%
	\ifthenelse{#1 = 5}
		{\ensuremath{\Bigg[#2\Bigg]}}{}%
	\ifthenelse{#1 = 9}
		{\ensuremath{\left[#2\right]}}{}%
}
\newcommand{\pac}[2][9]{\ensuremath{\crochets[#1]{#2}}}		% Synonyme

% Ou pourquoi pas des accolades (analogue de \pa: mêmes recommandations).
%\newcommand{\accolades}[1]{\ensuremath{\left\{#1\right\}}}
%\newcommand{\paa}[1]{\ensuremath{\accolades{#1}}}		% Synonyme
\newcommand{\accolades}[2][9]{%
	\ifthenelse{#1 = 0}
		{\ensuremath{#2}}{}%
	\ifthenelse{#1 = 1}
		{\ensuremath{\{#2\}}}{}%
	\ifthenelse{#1 = 2}
		{\ensuremath{\big\{#2\big\}}}{}%
	\ifthenelse{#1 = 3}
		{\ensuremath{\Big\{#2\Big\}}}{}%
	\ifthenelse{#1 = 4}
		{\ensuremath{\bigg\{#2\bigg\}}}{}%
	\ifthenelse{#1 = 5}
		{\ensuremath{\Bigg\{#2\Bigg\}}}{}%
	\ifthenelse{#1 = 9}
		{\ensuremath{\left\{#2\right\}}}{}%
}
\newcommand{\paa}[2][9]{\ensuremath{\accolades[#1]{#2}}}		% Synonyme

% Ou encore des barres pour les valeurs absolues (analogue de \pa: mêmes
% recommandations).
%\newcommand{\abs}[1]{\ensuremath{\left|#1\right|}}
\newcommand{\abs}[2][9]{%
	\ifthenelse{#1 = 0}
		{\ensuremath{#2}}{}%
	\ifthenelse{#1 = 1}
		{\ensuremath{|#2|}}{}%
	\ifthenelse{#1 = 2}
		{\ensuremath{\big|#2\big|}}{}%
	\ifthenelse{#1 = 3}
		{\ensuremath{\Big|#2\Big|}}{}%
	\ifthenelse{#1 = 4}
		{\ensuremath{\bigg|#2\bigg|}}{}%
	\ifthenelse{#1 = 5}
		{\ensuremath{\Bigg|#2\Bigg|}}{}%
	\ifthenelse{#1 = 9}
		{\ensuremath{\left|#2\right|}}{}%
}

% Pour virer des parenthèses quand on corrige un fichier.
\newcommand{\nopa}[1]{\ensuremath{#1}}

% Pour transformer \pa en parenthèses simples.
\newcommand{\cpa}[1]{\ensuremath{(#1)}}

%!!!!!!!!!!!!!!!                                        !!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!   Quelques conventions et raccourcis   !!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!                                        !!!!!!!!!!!!!!!

% Les constantes.
\newcommand{\cte}{\ensuremath{C^{\mbox{\scriptsize{te}}}}}
\newcommand{\Cte}{\cte}						% Synonyme

% La force électromotrice.
\newcommand{\fem}{f.é.m.\xspace}

% L'amplificateur opérationnel.
\newcommand{\AO}{AO\xspace}

% La fonction indicatrice.
\newcommand{\indicatrice}{\ensuremath{\mathds{1}}}

% Les espaces de séparation pour les milliers.
% Exemple:
% $\nombre{1234567}$ a le même effet que $1\,234\,567$.
\makeatletter
\def\f@thousandsep{\ifmmode\mskip3mu\else\penalty\@M\kern.3em\fi}
\makeatother
\newcommand{\nb}[1]{\nombre{#1}}

% « Grand O » et « petit o » sont dans un bateau.
% 
% Exemples:
%       En 0, $\sin x = x + \petito(x)$.
% 
%       $f(x) = x + \petito[x\to0](x)$.
%
% La première forme est celle recommandée, mais lorsque le contexte est
% flou, on peut utiliser l'argument optionnel pour préciser comment il faut
% entendre le « o ».
%
% Dans tous les cas, n'écrivez pas « x \to 0 » sous un signe égal.

%\newcommand{\petito}[1][]{\ensuremath{\underset{#1}{\text{o}}}}
%\newcommand{\grando}[1][]{\ensuremath{\underset{#1}{\text{O}}}}

\newcommand{\petito}[1][]{%
    \ifthenelse{%
        \equal{#1}{}%
    }{%
        \ensuremath{\text{o}}%
    }{%
        \ensuremath{\underset{#1}{\text{o}}}%
    }%
}

\newcommand{\grando}[1][]{%
    \ifthenelse{%
        \equal{#1}{}%
    }{%
        \ensuremath{\text{O}}%
    }{%
        \ensuremath{\underset{#1}{\text{O}}}%
    }%
}

% Les deux commandes suivantes sont obsolètes; elles ne sont laissées que pour
% la compatibilité ascendante. Veuillez ne pas les utiliser.
\newcommand{\pto}[1]{\ensuremath{\text{o}\left ( #1 \right )}}
\newcommand{\gdo}[1]{\ensuremath{O\left ( #1 \right )}}

% La probabilité d'un événement.
% Exemple: $ \proba{X} $
\newcommand{\proba}[1]{\ensuremath{\text{Pr}\left(#1\right)}}

% Les chapeaux et les tildes doivent avoir une bonne taille pour être bien
% visibles et éviter ainsi les confusions.
\renewcommand{\hat}[1]{\ensuremath{\widehat{#1}}}
\renewcommand{\tilde}[1]{\ensuremath{\widetilde{#1}}}

% Dessiner un arrondi au-dessus d'un groupe de lettres, disons 'AB',
% pour signifier que l'on considère un arc de cercle d'extrémités A et B.
% Exemple: \arcdecercle{AB}

\newlength{\longueurarcdecercle}
\newcommand{\arcdecercle}[1]{\ensuremath{%
    \settowidth{\longueurarcdecercle}{\ensuremath{#1}}%
    \overset{%
        \mbox{%
                \resizebox{\longueurarcdecercle}{4pt}{%
                        \rotatebox{90}{\ensuremath{\hskip-1pt)}}%
                }%
        }%
    }{#1}%
}}

% Plus et moins l'infini.
%
% Lorsque l'on écrit $+\infty$, le plus est trop gros. On fait la même 
% remarque avec $-\infty$. Pour contourner ce problème, vous pouvez utiliser
% des macros spécifiques à ces cas-là.
%
% Exemple: $ \sqrt{n} \tvn \pinf $
%
% Attention, n'utilisez jamais \plus et \moins dans vos corrigés.
% Ces macros n'existent que pour définir \pinf et \minf et quelques autres
% bidouilles comme \Rplus.
% Ne les utilisez pas à la place de + et - dans les opérations courantes !

\newcommand{\plus}{\mbox{\protect\raisebox{.2mm}{\tiny{\ensuremath{+}}}}}
\newcommand{\moins}{\mbox{\protect\raisebox{.2mm}{\tiny{\ensuremath{-}}}}}
\newcommand{\pinf}{\plus\ensuremath{\infty}}
\newcommand{\minf}{\moins\ensuremath{\infty}}

% Le « plus ou moins » (\pm) de LaTeX est vraiment trop laid.
\newlength{\pmlength} 
\settowidth{\pmlength}{{\scriptsize$+$}}
\newlength{\pmsmalllength}
\settowidth{\pmsmalllength}{{\tiny$+$}}
%\renewcommand{\pm}{%
%        \mathop{\raisebox{0.8mm}{{\scriptsize\ensuremath{+}}}%
%        \hskip-\pmlength%
%        \raisebox{-0.4mm}{{\scriptsize\ensuremath{-}}}}%
%}
\renewcommand{\pm}{%
    \mathchoice{%
            \mathop{\raisebox{0.528ex}{{\scriptsize\ensuremath{+}}}%
            \hskip-\pmlength%
            \raisebox{-0.264ex}{{\scriptsize\ensuremath{-}}}}%
    }{%
            \mathop{\raisebox{0.528ex}{{\scriptsize\ensuremath{+}}}%
            \hskip-\pmlength%
            \raisebox{-0.264ex}{{\scriptsize\ensuremath{-}}}}%
    }{%
            \mathop{\raisebox{0.528ex}{{\tiny\ensuremath{+}}}%
            \hskip-\pmsmalllength\hskip-0.035ex%
            \raisebox{-0.14ex}{{\tiny\ensuremath{-}}}}%
    }{%
            \mathop{\raisebox{0.528ex}{{\tiny\ensuremath{+}}}%
            \hskip-\pmsmalllength\hskip-0.035ex%
            \raisebox{-0.14ex}{{\tiny\ensuremath{-}}}}%
    }
}

% La commande \pm précédente ne passe pas bien en \mathgras... En voici
% une version spécialement prévue dans ce cas.
\newlength{\pmgraslength} 
\settowidth{\pmgraslength}{{\scriptsize\ensuremath{\mathgras{$+$}}}}
\newlength{\pmgrassmalllength}
\settowidth{\pmgrassmalllength}{{\tiny\ensuremath{\mathgras{$+$}}}}
%\newcommand{\pmgras}{%
%        \mathop{\raisebox{0.8mm}{{\scriptsize\ensuremath{\mathgras{+}}}}%
%        \hskip-\pmgraslength%
%		\hskip-0.9pt%
%        \raisebox{-0.6mm}{{\scriptsize\ensuremath{\mathgras{-}}}}}%
%}
\newcommand{\pmgras}{%
    \mathchoice{%
        \mathop{\raisebox{0.528ex}{{\scriptsize\ensuremath{\mathgras{+}}}}%
            \hskip-\pmgraslength%
            \hskip-0.9pt%
        \raisebox{-0.396ex}{{\scriptsize\ensuremath{\mathgras{-}}}}}%
    }{%
        \mathop{\raisebox{0.528ex}{{\scriptsize\ensuremath{\mathgras{+}}}}%
            \hskip-\pmgraslength%
            \hskip-0.9pt%
        \raisebox{-0.396ex}{{\scriptsize\ensuremath{\mathgras{-}}}}}%
    }{%
        \mathop{\raisebox{0.528ex}{{\tiny\ensuremath{\mathgras{+}}}}%
            \hskip-\pmgrassmalllength%
            \hskip-0.739pt%
        \raisebox{-0.22ex}{{\tiny\ensuremath{\mathgras{-}}}}}%
    }{%
        \mathop{\raisebox{0.528ex}{{\tiny\ensuremath{\mathgras{+}}}}%
            \hskip-\pmgrassmalllength%
            \hskip-0.739pt%
        \raisebox{-0.22ex}{{\tiny\ensuremath{\mathgras{-}}}}}%
    }
}


% Idéalement, le « e » de l'exponentielle et le « i » des complexes devraient
% être composés en romain (« droit »). Ceci est facultatif dans les Annales,
% parce que la composition est rendue moins intuitive.
% Toutefois, pour simplifier la composition des auteurs qui souhaitent suivre
% cette louable convention, les commandes suivantes peuvent être utiles.
%
% Exemples: 	La fonction $f \colon x \mapsto \ex{x+1}$ etc.
%		La «racine carrée» de $-1$ est notée \ir.
%		La racine troisième de l'unité est notée $\jr$.
%		$1 + \ir = \sqrt{2} \: \exi{\pi / 4}$.

\newcommand{\ir}{\ensuremath{\mathrm{i}}\xspace}	% « i romain »
\newcommand{\jr}{\ensuremath{\mathrm{j}}\xspace}	% « j romain »
\newcommand{\ex}[1]{\ensuremath{\mathrm{e}^{\,#1}}\xspace}
\newcommand{\exi}[1]{\ensuremath{\mathrm{e}^{\,\mathrm{i}\,#1}}\xspace}
\newcommand{\exmi}[1]{\ensuremath{\mathrm{e}^{\,-\mathrm{i}\,#1}}\xspace}

% Le principe de récurrence est un outil puissant pour résoudre de nombreux
% problèmes. Parfois, il suffit de l'invoquer pour conclure: « On en déduit,
% par une récurrence immédiate, que tous les chats sont gris. » 
% Toutefois, dès lors que la récurrence doit être explicitement déroulée, il
% faut mettre ses étapes en valeur, avec {itemize} et les commandes 
% ci-dessous.
%
% Exemple:
%	Montrons que la propriété:
%
%	\centers{$
%		\PP(n): \quad u_n \geq 0
%		$}
%
%	\marge est vraie pour tout $n \geq 0$.
%
%	\begin{itemize}
%
%	\item $\recz$ est vraie par hypothèse.
%	\item $\rec{n}{n+1}$: blabla
%	\item \leftcenters{\underline{Conclusion}:}{$
%		\forall n \geq 0    \qquad    u_n \geq 0
%		$}
%
%	\end{itemize}

\newcommand{\PP}{\ensuremath{\mathscrchoice{P}}}
\newcommand{\QQ}{\ensuremath{\mathscrchoice{Q}}}
	% Quand \PP est déjà utilisé, ou pour une famille de polynômes...
\newcommand{\rec}[2]{\underline{\ensuremath{\mathscrchoice{P}(#1) \imply%
        \mathscrchoice{P}(#2)}}}
	% $\rec{n}{n+1}$ <==> \underline{$\PP{n}\imply\PP{n+1}$}
\newcommand{\recz}[1][0]{\underline{\ensuremath{\mathscrchoice{P}(#1)}}\xspace}
	% L'initialisation de la récurrence.
	% On écrit $\recz[2]$ pour partir de $n=2$.
	% Si on ne précise pas d'argument optionnel, la valeur 0 est utilisée.

% Donner la bonne tête aux symboles courants: sacrés amerloques !
\renewcommand{\leq}{\ensuremath{\leqslant}}
\renewcommand{\geq}{\ensuremath{\geqslant}}
\renewcommand{\le}{\ensuremath{\leq}}				% Synonyme
\renewcommand{\ge}{\ensuremath{\geq}}				% Synonyme
\renewcommand{\epsilon}{\ensuremath{\varepsilon}}
\newcommand{\eps}{\epsilon}
\renewcommand{\setminus}{\smallsetminus}	% $\R \setminus \Q$
%\newcommand{\bs}{\ensuremath{\backslash}}	% Quand \setminus est trop petit
\newcommand{\bs}{\texttt{\symbol{92}}}


% \phi et \varphi.
% Neuf fois sur dix, c'est \varphi que l'on veut dessiner, ce qui mérite un
% raccourci.
\newcommand{\ph}{\ensuremath{\varphi}}

% Une moyenne bien présentée.
% Exemple: $ \moyenne{ \vectE } $
%\newcommand{\moyenne}[1]{\ensuremath{\left\langle#1\right\rangle}}
\newcommand{\moyenne}[2][9]{%
	\ifthenelse{#1 = 0}
		{\ensuremath{#2}}{}%
	\ifthenelse{#1 = 1}
		{\ensuremath{\langle#2\rangle}}{}%
	\ifthenelse{#1 = 2}
		{\ensuremath{\big\langle#2\big\rangle}}{}%
	\ifthenelse{#1 = 3}
		{\ensuremath{\Big\langle#2\Big\rangle}}{}%
	\ifthenelse{#1 = 4}
		{\ensuremath{\bigg\langle#2\bigg\rangle}}{}%
	\ifthenelse{#1 = 5}
		{\ensuremath{\Bigg\langle#2\Bigg\rangle}}{}%
	\ifthenelse{#1 = 9}
		{\ensuremath{\left\langle#2\right\rangle}}{}%
}

% Pour placer une conjonction entre deux termes dans une formule centrée.
\newcommand{\qetq}{\quad\text{et}\quad\null}
\newcommand{\qqetqq}{\qquad\text{et}\qquad\null}
\newcommand{\qcarq}{\quad\text{car}\quad\null}
\newcommand{\qqcarqq}{\qquad\text{car}\qquad\null}
\newcommand{\qavecq}{\quad\text{avec}\quad\null}
\newcommand{\qqavecqq}{\qquad\text{avec}\qquad\null}

% Lorsque l'on définit une fonction, on a besoin de:
%	* son nom
%	* l'ensemble de départ
%	* l'ensemble d'arrivée
%	* le nom de la variable
%	* l'expression de la fonction
% On veut alors obtenir un tableau dont la première ligne concerne les
% ensembles, la deuxième les transformations de la variable, une accolade
% à gauche et le nom de la variable devant. C'est ce que fait \fonction.
%
% Exemple: $ \fonction{f}{ \R }{ \Z }{ x }{ \partieentiere{x} } $

\newcommand{\fonction}[5]{%
        \ensuremath{#1\colon
        \left\{\hskip -1.5 mm
        \begin{array}{c@{\ }c@{\ }l}
        \medskip #2 & \longrightarrow & #3 \\
        #4 & \longmapsto & #5 \\
        \end{array}
        \right .
        }}

% Pour dessiner la restriction d'une fonction à un ensemble, la coutume est
% de placer le nom de la fonction, une barre verticale et en indice, 
% l'ensemble dans lequel on fait vivre la restriction. C'est l'objet de cette 
% commande.
%
% Exemple: $ \rest{f}{ \Z } $

\newlength{\restsubwidth}
\newlength{\restsubheight}
\newlength{\restsubmoreheight}
\setlength{\restsubmoreheight}{4 pt}
\newcommand{\rest}[2]{%
        \settowidth{\restsubwidth}{\ensuremath{#2}}
        \settoheight{\restsubheight}{\ensuremath{{}_{#2}}}
        \ensuremath{{#1\hskip 0.5 pt}_{\vrule\kern2pt\parbox[b][%
        \the\restsubheight +
                \the\restsubmoreheight][b]{\the\restsubwidth}{%
                        \ensuremath{{}_{#2}}}}}
        }

% Les combinaisons peuvent être notées à la française ou à l'anglaise.
% Le mérite de cette dernière apparaît lorsque les arguments sont trop
% grands pour une simple lettre C. 
%
% Rappel: à la française, on indique le 'n' (nombre total d'éléments) en bas 
% et le 'p' (nombre d'éléments à choisir) en haut. À l'anglaise, c'est 
% l'inverse.
%
% Exemple: $ \Comb{n}{p} $	À la française
%	   $ \comb{n}{p} $	À l'anglaise

\newcommand{\Comb}[2]{\ensuremath{C_{#1}^{#2}}}
\newcommand{\comb}[2]{\ensuremath{\begin{pmatrix}#1\\#2\\\end{pmatrix}}}

% La partie entière peut être écrite à l'américaine plutôt qu'avec 
% l'énigmatique fonction 'E'. C'est efficace...
\newcommand{\partieentiere}[1]{\ensuremath{\left\lfloor#1\right\rfloor}}
\newcommand{\partieentieresup}[1]{\ensuremath{\left\lceil#1\right\rceil}}

%!!!!!!!!!!!!!!!!!                                    !!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!   Intégrales, sommes et produits   !!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!                                    !!!!!!!!!!!!!!!!!

% À la main, on dessine toujours des intégrales ayant la même taille.
% Dans l'édition française, c'est assez standard; ce sont les anglo-saxons
% qui adaptent la taille de leurs intégrales au contexte (leurs intégrales
% sont plus petites dans le texte). Pour avoir toujours une intégrale de 
% taille standard, on dispose de la commande \Int, qui prend deux arguments:
% ses bornes.
%
% Exemple: $ \Int{0}{\f \pi 2} \sin t \dt $
%
% Exemple: $ \Int{}{} \ln t \dt $
%
% Attention, il ne faut jamais utiliser \int dans les Annales.

\newcommand{\Int}[2]{\ensuremath{\mathchoice%
	{{\displaystyle\int_{#1}^{#2}}}
	{{\displaystyle\int_{#1}^{#2}}}
	{\int_{#1}^{#2}}
	{\int_{#1}^{#2}}
	}}

% Les éléments différentiels.
%
% Ils doivent être composés avec un 'd' droit. On dispose pour cela de la 
% commande \dd.
%
% Exemple: $ \dd x $
%
% Cette commande convient parfaitement à une dérivée temporelle, par exemple.
%
% Exemple: $ \f{\dd f}{\dd t} $
%
% Dans les intégrales, il faut aussi laisser un peu d'espace avant l'élément
% différentiel; les commandes suivantes (\dx, \dt, etc.) incluent cet espace.
%
% Exemple: $ \Int{0}{1} f(t) \dt $
%
% Attention toutefois, il ne faut pas les utiliser lorsque l'élément 
% différentiel fait partie d'une fraction. En pareil cas on en revient à '\:'
% pour l'espace et à \dd pour le 'd' droit.
%
% Exemple: $ \Int{0}{1} f(t) \: \f{\dd t}{2} $

\newcommand{\dd}{\ensuremath{\mathrm{d}}}
\newcommand{\dt}{\ensuremath{\:\dd t}}
\newcommand{\dx}{\ensuremath{\:\dd x}}
\newcommand{\dy}{\ensuremath{\:\dd y}}
\newcommand{\dz}{\ensuremath{\:\dd z}}
\newcommand{\du}{\ensuremath{\:\dd u}}
\newcommand{\dv}{\ensuremath{\:\dd v}}
\newcommand{\dr}{\ensuremath{\:\dd r}}
\newcommand{\dS}{\ensuremath{\,\dd\!\vect{S}}}		% Élément de surface
\newcommand{\dl}{\ensuremath{\,\dd\!\vect{\ell}}}	% Élément de longueur
\newcommand{\dT}{\ensuremath{\:\dd T}}			% Températures
\newcommand{\dtheta}{\ensuremath{\:\dd \theta}}
\newcommand{\dphi}{\ensuremath{\:\dd \varphi}}
\newcommand{\dtau}{\ensuremath{\:\dd \tau}}
\newcommand{\dV}{\ensuremath{\:\dd V}}

% Les sommes.
%
% De même que \Int doit être préférée à \int, \Sum doit être préférée à \sum.
% Cette commande dessine un 'sigma' qui est presque toujours de la bonne
% taille.
% 
% Exemple:  $ \Sum{k=1}{n} \f{1}{k} = \ln n + \gamma + \petito(1) $
%
% Pour les séries (« la série 'sigma' u_n converge »), dans lesquelles on ne
% précise pas les bornes, l'utilisation de \Sum avec des arguments vides
% (c'est-à-dire \Sum{}{}) ne donne pas un bon rendu en mode texte car cette
% commande laisse inévitablement un espace vertical au-dessus et en dessous
% d'elle. On préfèrera alors la commande \serie, qui est faite pour cela, et
% pour cela uniquement.
%
% Exemple: La série $ \serie u_n $ converge.
%
% Enfin, bien que ce ne soit pas recommandé par H&K (car cela rend confus la
% distinction entre une série et une somme partielle), vous pouvez être amené
% à préciser l'indice de sommation dans la série; vous seriez alors tenté
% d'écrire quelque chose comme $\Sum{k \geq 0}{} u_k$. L'ennui, c'est que,
% comme précédemment, \Sum laissera au-dessus d'elle un espace indésirable.
% Vous pouvez l'éliminer grâce à la commande \smash.
%
% Exemple: La série $\smash[t]{ \Sum{k \geq 0}{} u_k }$ converge.
%
% Attention, la commande \serie doit être proscrite dès que vous souhaitez
% utiliser un indice ou un exposant.

\newcommand{\Sum}[2]{\ensuremath{\textstyle{\sum\limits_{#1}^{#2}}}}
\newcommand{\serie}{\ensuremath{\smash{\Sum{}{}}}}

\newcommand{\Sumt}[2]{\protect\Sumtproto{#1}{#2}}
\newcommand{\Sumtproto}[2]{%
        \ifthenelse{%
                \equal{#1}{}
        }{%
                \ifthenelse{%
                        \equal{#2}{}%
                }{%
                        \ensuremath{\sum}%
                }{%
                        \smash[b]{\ensuremath{\sum\limits_{#1}^{#2}}}%
                }
        }{%
                \ensuremath{\sum\limits}_{#1}^{#2}%
        }%
}

% Il y a quelques cas où l'on souhaite dessiner un symbole de sommation plus
% grand que la normale, par exemple s'il est suivi d'une intégrale.
%
% Exemple: $ \SUM{k=1}{n}   \f{1}{k}   \Int{}{} f_n(t) \dt $

\newcommand{\SUM}[2]{\ensuremath{{\displaystyle\sum\limits_{#1}^{#2}}}}

% Dans la même veine que « \Sum vs \sum » et « \Int vs \int », on peut vouloir
% écrire un produit autrement qu'avec \prod (commande prédéfinie), qui ne se
% comporte pas comme on l'attend.
%
% Exemple: $ \Prod{k=1}{n} k = n\,! $

\newcommand{\PI}[2]{\ensuremath{%
	\mathop{\mbox{\Large\ensuremath{\Pi}}}\limits_{#1}^{#2}}}
\newcommand{\Prod}[2]{\PI{#1}{#2}}			% Synonyme préférable

% La commande précédente produit un symbole dont le bas est aligné sur la       
% ligne de référence; or, on s'attend d'habitude à ce que les symboles          
% mathématiques soient centrés sur cette ligne. Si c'est ce deuxième            
% comportement qui est souhaité, c'est la commande suivante qu'il faut          
% utiliser.                                                                     
                                                                                
\newcommand{\Produit}[2]{\ensuremath{\prod\limits_{#1}^{#2}}}

%!!!!!!!!!!!!!!!!!!!!!                            !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!   Limites et équivalents   !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!                            !!!!!!!!!!!!!!!!!!!!!

% Les limites.
%
% Pour indiquer qu'une variable tend vers une valeur, on peut utiliser \to,
% comme dans $ x \to x_0$. Pour indiquer ensuite que f(x) tend vers \ell 
% lorsque x tend vers x_0, on a envie de représenter une longue flèche portant
% en dessous la mention $x \to x_0$.
%
% Exemple: $ f(x)  \tv{x \to x_0}  \ell $
%
% Lorsque la variable est $n$ est tend vers l'infini, on a un raccourci.
%
% Exemples: 	$ u_n \tvn \ell $
%		$ u_k \tvn[k] \ell $

\newcommand{\tv}[1]{\ensuremath{\xrightarrow[#1]{}}}
\newcommand{\tvn}[1][n]{\ensuremath{\tv{#1 \to \infty}}}

% Indiquer une limite avec « lim » pose un problème car, par défaut, la 
% commande prédéfinie \lim ne met pas bien en dessous ce que l'on aimerait
% qui soit en dessous. On utilise plutôt \limt.
%
% Exemple: $ \limt_{x \to 0} \f{\sin x}{x} = 1 $
\newcommand{\limt}{\ensuremath{\lim\limits}}

% De même, on veut pouvoir, au besoin préciser quelque chose comme $x \to 0$
% en dessous du symbole « équivalent ».
% Exemple: $ \f{\sin x}{x} \Sim_{x \to 0} 1 $
\newcommand{\Sim}{\ensuremath{\mathop{\sim}\limits}}

%!!!!!!!!!!!!!!!!!!!!!                            !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!   Ensembles et relations   !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!                            !!!!!!!!!!!!!!!!!!!!!

% Pour l'intersection de deux ensembles, LaTeX fournit la commande \cap, comme 
% dans $A \cap B$. Pour dessiner l'intersection d'une famille d'ensembles, on
% a envie de placer un indice et un exposant; c'est ce que permettent les 
% commandes \inter et \Inter.
%
% Exemple: $ \inter{k=1}{n} A_k $
% 	   $ \Inter{k=1}{n} A_k $
%
% Le premier s'utilise plutôt dans le texte et le deuxième plutôt dans les
% formules centrées, mais cela dépend aussi du contexte, c'est-à-dire des
% ensembles considérés. \inter peut très bien être utilisé dans une équation
% centrée.
%
% Les remarques et exemples précédents s'appliquent directement à \union et
% \Union, qui généralisent la commande prédéfinie \cup (comme dans $A \cup B$).

\newcommand{\inter}[2]{\ensuremath{\bigcap\limits_{#1}^{#2}}}
\newcommand{\Inter}[2]{\ensuremath{\displaystyle\bigcap_{#1}^{#2}}}
\newcommand{\union}[2]{\ensuremath{\bigcup\limits_{#1}^{#2}}}
\newcommand{\Union}[2]{\ensuremath{\displaystyle\bigcup_{#1}^{#2}}}

% Le complémentaire d'un ensemble (sans préciser l'ensemble de référence)
% peut être noté par \compl.
% Exemple: $ \compl{A} $
\newcommand{\compl}[1]{\ensuremath{\sideset{^{\text{c}}}{}%
        {\mathop{#1}\nolimits}}}

% Quand on écrit un ensemble en extension, il faut préciser le domaine 
% d'existence de la variable, en séparant cette précision de ce qui précède
% au moyen d'une barre verticale. Il est alors bon de laisser un espace avant
% et après cette barre: c'est ce que fait la commande \|.
%
% Exemple: $ \{ x\in\R    \|    \sin x = 0}    =    \pi\Z $
%
% Lorsque la hauteur de la barre doit s'adapter à des accolades de grande 
% taille, on ne peut pas utiliser \|. Il faut alors procéder à la main.
%
% Exemple: 	$\left\{ 
%			\left. \Sum{k=1}{n} (-1)^k/k \ \right|\ 
%		        n \in \Nstar 
%		\right\}$ 
%
% ce qui peut également s'écrire:
%
%		$\left\{ \Sum{k=1}{n} (-1)^k/k 	\ \right|\
% 		n \in \Nstar \left.\vphantom{\Sum{k=1}{n}} \right\}$
%
% On peut aussi utiliser directement le constructeur \Big pour imposer la
% taille des délimiteurs.
%
% Exemple: $\Big\{ \Sum{k=1}{n} (-1)^k/k   \ \Big|\    n \in \Nstar   \Big\} $

\renewcommand{\|}{\ensuremath{\:|\:}}   

% Les mathématiques utilisent beaucoup les listes, en particulier en algèbre
% linéaire, par exemple pour décrire une base. Composer ces listes peut être
% automatisé, puisque l'on n'a en général besoin que du nom de la famille 
% ('e'), et éventuellement des indices de début et de fin, comme dans
% (e_1 , ... , e_n).
%
% Exemples: 	
%		\liste{x}	-> (x_1,x_2,...,x_n)
%		\liste[p]{x}	-> (x_1,x_2,...,x_p)
%		\liste*{x}	-> (x_0,x_1,...,x_n)
%		\liste*[p]{x}	-> (x_0,x_1,...,x_p)
%
% Remarque: d'un point de vue sémantique, il serait plus logique d'utiliser
% la forme étoilée pour les listes qui commencent à 1, mais comme ce sont
% ces dernières qui sont les plus fréquentes, on leur réserve la commande
% la plus simple.

\makeatletter
\newif\if@ListeStar
\global\@ListeStartrue

\newcommand{\liste}{%
	\@ifstar{\global\@ListeStartrue\@liste}%
		{\global\@ListeStarfalse\@liste}%
}

\newcommand{\@liste}[2][n]{%
	\if@ListeStar%
		\left({#2}_0,{#2}_1,\ldots,{#2}_{#1}\right)%
	\else%
		\left({#2}_1,{#2}_2,\ldots,{#2}_{#1}\right)%
	\fi\@ListeStarfalse%
}
\makeatother

% Les commandes suivantes ne sont gardées que pour la compatibilité
% ascendante. Elles sont néanmoins fonctionnelles, mais n'acceptent pas
% de forme étoilée.
\newcommand{\xlist}[2]{\ensuremath{\left({#1}_1,\ldots,{#1}_{#2}\right)}}
\newcommand{\xliste}[2]{\xlist{#1}{#2}}				% Synonyme
\newcommand{\nlist}[1]{\xlist{#1}{n}}
\newcommand{\mlist}[1]{\xlist{#1}{m}}
\newcommand{\plist}[1]{\xlist{#1}{p}}
\newcommand{\rlist}[1]{\xlist{#1}{r}}
\newcommand{\nliste}[1]{\nlist{#1}}				% Synonyme
\newcommand{\mliste}[1]{\mlist{#1}}				% Synonyme
\newcommand{\pliste}[1]{\plist{#1}}				% Synonyme
\newcommand{\rliste}[1]{\rlist{#1}}				% Synonyme

% Les deux grandes manières utilisées en prépa pour noter les suites sont de
% la forme $(u_n)$ et $(u_n)_{n\in\N}$. La première (sans les indices) est 
% généralement préférable, tant que le contexte permet de lever toute
% ambiguïté sur ce qui serait en indice dans la notation complète.
% Toutefois, il est parfois utile de préciser les indices, par exemple dans
% les résultats encadrés. On pourra alors soit composer les indices
% « à la main », soit avec la commande \suite.
%
% Exemples:	\suite{u}	-> (u_n)_{n\in\N}
%		\suite*{u}	-> (u_n)_{n\in\N^*}
%		\suite[k]{u}	-> (u_k)_{k\in\N}
%		\suite*[k]{u}	-> (u_k)_{k\in\N^*}

\makeatletter
\newif\if@SuiteStar
\global\@SuiteStartrue

\newcommand{\suite}{%
	\@ifstar{\global\@SuiteStartrue\@suite}%
		{\global\@SuiteStarfalse\@suite}%
}

\newcommand{\@suite}[2][n]{%
	\if@SuiteStar%
		\left(#2_{#1}\right)_{#1\in\N^*}%
	\else%
		\left(#2_{#1}\right)_{#1\in\N}%
	\fi\@SuiteStarfalse%
}
\makeatother


%% Quelques ensembles classiques.

% On n'utilise pas cette commande, elle pose problème avec le \xspace: \N*
% renvoie N* et non N^*.

% La commande \mathBB est proposée par Paul; elle est construite sur la base
% de la commande usuelle \mathbb, mais pour obtenir la version étoilée 
% (« R étoile »), il suffit de placer une étoile après le symbole, sans
% chapeau. 
% Exemple:	\N*	est équivalent à \mathbb{N}^{*}

\makeatletter
\newif\if@laststared
\global\@laststaredtrue
\newcommand{\mathBB}[1]{%
        \@ifstar%
        {\global\@laststaredtrue\m@thBB{#1}}%
        {\global\@laststaredfalse\m@thBB{#1}}% 
}
\newcommand{\m@thBB}[1]{%
	\if@laststared{\ensuremath{%
		{\ifgras\pmb{\mathbb{#1}^{*}}\else\mathbb{#1}^{*}\fi}}\xspace}%
	\else{\ensuremath{%
		{\ifgras\pmb{\mathbb{#1}}\else\mathbb{#1}\fi}}\xspace}% 
	\fi%
	\@laststaredfalse% 
}
\makeatother

\renewcommand{\emptyset}{\ensuremath{\varnothing}\xspace}	% L'ensemble vide

\makeatletter
%\newcommand{\N}{\ensuremath{\mathBB{N}}\xspace}        % Entiers
\newcommand{\N}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{N}}}%
        {\ensuremath{\mathbb{N}}\xspace}
}
%\newcommand{\Z}{\ensuremath{\mathBB{Z}}\xspace}        % Entiers relatifs
\newcommand{\Z}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{Z}}}%
        {\ensuremath{\mathbb{Z}}\xspace}
}
%\newcommand{\Q}{\ensuremath{\mathBB{Q}}\xspace}        % Rationnels
\newcommand{\Q}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{Q}}}%
        {\ensuremath{\mathbb{Q}}\xspace}
}
%\newcommand{\R}{\ensuremath{\mathBB{R}}\xspace}        % Réels
\newcommand{\R}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{R}}}%
        {\ensuremath{\mathbb{R}}\xspace}
}
%\newcommand{\C}{\ensuremath{\mathBB{C}}\xspace}        % Complexes
\newcommand{\C}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{C}}}%
        {\ensuremath{\mathbb{C}}\xspace}
}
\newcommand{\Nstar}{\ensuremath{\N*}\xspace}
\newcommand{\Zstar}{\ensuremath{\Z*}\xspace}
\newcommand{\Zdeux}{\ensuremath{\Z^2}\xspace}
\newcommand{\Ztrois}{\ensuremath{\Z^3}\xspace}
\newcommand{\Qstar}{\ensuremath{\Q*}\xspace}
\newcommand{\Rstar}{\ensuremath{\R*}\xspace}
\newcommand{\Rdeux}{\ensuremath{\R^2}\xspace}
\newcommand{\Rtrois}{\ensuremath{\R^3}\xspace}
\newcommand{\Cstar}{\ensuremath{\C*}\xspace}
\newcommand{\Cdeux}{\ensuremath{\C^2}\xspace}
\newcommand{\Ctrois}{\ensuremath{\C^3}\xspace}
\newcommand{\Rplus}{\ensuremath{\R_{\plus}}\xspace}
\newcommand{\Rmoins}{\ensuremath{\R_{\moins}}\xspace}
\newcommand{\Rplusstar}{\ensuremath{\Rplus^*}\xspace}
\newcommand{\Rmoinsstar}{\ensuremath{\Rmoins^*}\xspace}
\newcommand{\Rplusetoile}{\ensuremath{\Rplusstar}\xspace}
\newcommand{\Rmoinsetoile}{\ensuremath{\Rmoinsstar}\xspace}

% Les nombres complexes de module 1 (Groupe Unimodulaire)
%\newcommand{\GU}{\mathBB{U}}
\newcommand{\GU}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{U}}}%
        {\ensuremath{\mathbb{U}}\xspace}
}

% Un corps quelconque.
%\newcommand{\K}{\mathBB{K}}
\newcommand{\K}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{K}}}%
        {\ensuremath{\mathbb{K}}\xspace}
}
\newcommand{\corps}{\K}                 % Synonyme

% Les anneaux cycliques.
\newcommand{\ZZ}[1][\ensuremath{n}]{\ensuremath{\mathBB{Z}/#1\mathBB{Z}}}

    % \ZZ[n] --> Z/nZ
    % \ZZ[2] --> Z/2Z
    % \ZZ    --> Z/nZ
\newcommand{\zpz}{\ensuremath{\ZZ[p]}}
\newcommand{\znz}{\ensuremath{\ZZ[n]}}
\newcommand{\zpzstar}{\ensuremath{\zpz^*}}

% Les anneaux de polynômes.
% Exemple: $ P \in \CX    \implique    P \in \RX $
\newcommand{\RX}{\ensuremath{\mathBB{R}[X]}}
\newcommand{\CX}{\ensuremath{\mathBB{C}[X]}}
\newcommand{\zpzx}{\ensuremath{\zpz[X]}}

% Le groupe symétrique.
%\newcommand{\sym}{\ensuremath{\mathBB{S}}}         % Au choix
\newcommand{\sym}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{S}}}%
        {\ensuremath{\mathbb{S}}\xspace}
}
\newcommand{\GS}{\ensuremath{\mathfrak{S}}}         % Au choix
\newcommand{\SG}{\ensuremath{\mathfrak{S}}}         % Synonyme

% Une notation affreuse parfois rencontrée pour l'ensemble des nombres
% premiers.
%\renewcommand{\P}{\ensuremath{\mathBB{P}}}
\renewcommand{\P}{%
    \@ifnextchar*%
        {\ensuremath{\mathBB{P}}}%
        {\ensuremath{\mathbb{P}}\xspace}
}
\makeatother

% L'anneau des matrices.
% Exemple: $ A \in \M_n(\R) $
\newcommand{\M}{\ensuremath{\mathscrchoice{M}}}

%% Des symboles d'ensemble avec des lettres rondes.

\DeclareSymbolFont{rsfs}{U}{rsfs}{m}{n}
\DeclareSymbolFontAlphabet{\tmpmathscr}{rsfs}
\newcommand{\mathscrchoice}[1]{%
        \ifgras\pmb{\tmpmathscr{#1}}\else\tmpmathscr{#1}\fi}

\newcommand{\aire}{\ensuremath{\mathcal{A}}\xspace}
\newcommand{\alphabet}{\ensuremath{\mathcal{A}}\xspace}
\newcommand{\arbre}{\ensuremath{\mathcal{A}}\xspace}
\newcommand{\base}{\ensuremath{\mathscrchoice{B}}\xspace}
\newcommand{\courbe}{\ensuremath{\mathscrchoice{C}}\xspace}
\newcommand{\cercle}{\ensuremath{\mathscrchoice{C}}\xspace}
\newcommand{\Cun}{\ensuremath{\mathscrchoice{C}^1}\xspace}	% $f$ est de classe \Cun
\newcommand{\Cinfini}{\ensuremath{\mathscrchoice{C}^{\infty}}\xspace}
\newcommand{\classe}{\ensuremath{\mathscrchoice{C}}\xspace}	% $f$ est de classe $\classe^4$
\newcommand{\courbef}{\ensuremath{\mathscrchoice{C}_f}\xspace} % La courbe représentative
\newcommand{\domaine}{\ensuremath{\mathscrchoice{D}}\xspace}
\newcommand{\droite}{\ensuremath{\mathscrchoice{D}}\xspace}
\newcommand{\Def}{\ensuremath{\mathscrchoice{D}}\xspace}	% \def est réservé par TeX
\newcommand{\deff}{\ensuremath{\mathscrchoice{D}_f}\xspace}	% $ \deff = \intoo{0}{1} $
\newcommand{\ens}{\ensuremath{\mathscrchoice{E}}\xspace}	% Un ensemble
\newcommand{\G}{\ensuremath{\mathscrchoice{G}}\xspace}	% La constante de gravitation
\newcommand{\Lin}{\ensuremath{\mathscrchoice{L}}\xspace}	% $ u \in \Lin(E,F) $
\newcommand{\mixte}{\ensuremath{\mathscrchoice{M}}\xspace}	% Le produit mixte
\newcommand{\plan}{\ensuremath{\mathscrchoice{P}}\xspace}
\newcommand{\II}{\ensuremath{\mathscrchoice{I}}\xspace}	% Pour les idéaux
\newcommand{\solset}{\ensuremath{\mathscrchoice{S}}\xspace}	% Ensemble des solutions
\newcommand{\volume}{\ensuremath{\mathscrchoice{V}}\xspace}  % Volumes

% Des droites parallèles.
% Exemple: $\droite_1 \parallele \droite_2$
\newcommand{\parallele}{{\ensuremath{/ \hskip -1mm /}}}
\renewcommand{\parallel}{\parallele}

% Les intervalles.
%
% Bien composer un intervalle n'est pas facile: il faut adapter la taille des
% crochets et bien espacer le délimiteur central, qui doit être un 
% point-virgule. On dispose de commandes qui prennent tout cela en charge.
% On précise si les intervalles sont Ouverts ou Fermés à gauche et à droite,
% puis les valeurs des bornes.
%
% Exemple:	\intff{0}{1}	<==>	[0;1]
% 		\intof{0}{1}	<==>	]0;1]
% 		\intfo{0}{1}	<==>	[0;1[
% 		\intoo{0}{1}	<==>	]0;1[
%
% Si le membre de gauche (resp. de droite) est omis, il est remplacé par
% -\infty (resp. +\infty).
%
% Pour les intervalles d'entiers, on peut ajouter une barre verticale dans les
% crochets, et les bornes doivent alors être incluses dans l'ensemble. La 
% taille de ces crochets modifiés ne dépend pas des arguments; en cas de 
% besoin, utiliser la notation ensembliste.
%
% Exemple: $ \forall k \in \intn{0}{n-1}    \quad    |u_k| < 1 $

\newcommand{\TestGauche}[1]{\ifthenelse{\equal{#1}{}}{\minf}{#1}}
\newcommand{\TestDroite}[1]{\ifthenelse{\equal{#1}{}}{\pinf}{#1}}
\newcommand{\intff}[2]{\ensuremath{\left [ \, \protect\TestGauche{#1} \,;%
	\protect\TestDroite{#2} \, \right ] }}
\newcommand{\intof}[2]{\ensuremath{\left ] \, \protect\TestGauche{#1} \,;%
	\protect\TestDroite{#2} \, \right ] }}
\newcommand{\intfo}[2]{\ensuremath{\left [ \, \protect\TestGauche{#1} \,;%
	\protect\TestDroite{#2} \, \right [ }}
\newcommand{\intoo}[2]{\ensuremath{\left ] \, \protect\TestGauche{#1} \,;%
	\protect\TestDroite{#2} \, \right [ }}

%\newcommand{\intff}[2]{\ensuremath{\left [ \, #1 \,; #2 \, \right ] }}
%\newcommand{\intfo}[2]{\ensuremath{\left [ \, #1 \,; #2 \, \right [ }}
%\newcommand{\intof}[2]{\ensuremath{\left ] \, #1 \,; #2 \, \right ] }}
%\newcommand{\intoo}[2]{\ensuremath{\left ] \, #1 \,; #2 \, \right [ }}

\newcommand{\intn}[2]{\ensuremath{[\![ \, #1 \,;\, #2 \,]\!]}}
\newcommand{\intnn}[2]{\intn{#1}{#2}}				% Synonyme

% L'intérieur d'un ensemble est noté avec \ronde ou \interieur.
% Exemple: $ \ronde{A} $
%\newcommand{\ronde}[1]{\ensuremath{\overset{\circ}{#1}}}
\newcommand{\ronde}[1]{\ensuremath{\mathring{#1}}}
\newcommand{\interieur}[1]{\ronde{#1}}				% Synonyme
% Une alternative pour les ensembles notés par une lettre minuscule:
% \mathaccent0023{a}

%!!!!!!!!!!!!!!!!!!!!!!!!!!                  !!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!   Numérotation   !!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!                  !!!!!!!!!!!!!!!!!!!!!!!!!!

% Il peut être très utile de numéroter une équation pour y faire aisément 
% référence ensuite, soit explicitement avec les commandes ci-dessous, soit
% avec la commande \centersnumero (décrite juste après).
%
% Exemple : \leftcentersright{par suite}{$
%		f = g² + h²
%		$}{\deux}.
%
% La commande de base est \numero; elle accepte un argument.
%
% Exemple: $ \numero{17} $
%
% Pour faire simple, des raccourcis qui utilisent cette macro sont déjà prévus
% (\un <==> \numero{1}).

\newcommand{\numero}[1]{\ensuremath{\mathbf{(#1)}}\xspace}
\newcommand{\un}{\numero{1}}
\newcommand{\deux}{\numero{2}}
\newcommand{\trois}{\numero{3}}
\newcommand{\quatre}{\numero{4}} 
\newcommand{\cinq}{\numero{5}}   
\newcommand{\E}{\numero{E}}
\newcommand{\F}{\numero{F}}
\newcommand{\Star}{\ensuremath{(\mathgras{*})}\xspace}
\newcommand{\sys}{\numero{S}}

% Les commandes à base de \numero, pour simples et pratiques qu'elles soient,
% posent un problème lorsque les équations sont nombreuses car les relectures
% scientifiques viendront peut-être tout chambouler. Il peut dont être 
% pratique d'utiliser une numérotation automatique.
%
% Dans une copie, ceci est toujours fait en mettant un numéro à droite d'une
% équation centrée. C'est ce que font les commandes ci-dessous, en étendant
% les commandes comme \centers et en reprenant les mêmes idées que dans les
% \label et \ref de LaTeX.
%
% Exemple: \centersnumero{$f=g$}{petit:nom}
% 	(···)
% 	Or, d'après l'équation \numeroref{petit:nom}, blablabla.
%
% Exemple: \leftcentersnumero{d'où}{$f=g$}{deuxieme:nom}
%	(···)
%	Or, d'après l'équation \numeroref{deuxieme:equation}, blablabla.
%
% Notez que l'on ne peut pas utiliser d'accent dans le petit nom que l'on 
% affecte ('petit:nom' ou 'deuxieme:nom').

\newcommand{\centersnumero}[3][2]{%
	\refstepcounter{Equation}%
	\centersright[#1]{#2}{\numero{\theEquation}\label{\theCorrige:#3}}%
	}
\newcommand{\leftcentersnumero}[4][2]{%
	\refstepcounter{Equation}%
	\leftcentersright[#1]{#2}{#3}{%
		\numero{\theEquation}\label{\theCorrige:#4}%
	}%
}
\newcommand{\encadrenumero}[3][2]{%
    \refstepcounter{Equation}%
    \encadreright[#1]{#2}{\numero{\theEquation}\label{\theCorrige:#3}}%
    }
\newcommand{\leftencadrenumero}[4][2]{%
    \refstepcounter{Equation}%
    \leftencadreright[#1]{#2}{#3}{%
        \numero{\theEquation}\label{\theCorrige:#4}%
    }%
}
\newcommand{\numeroref}[1]{\numero{\ref{\theCorrige:#1}}}

%!!!!!!!!!!!!!!!!!!!!                              !!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!   Logique et mathématiques   !!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!                              !!!!!!!!!!!!!!!!!!!!

% Les symboles qui peuvent être utiles à tout le monde sont \implique et \eq.
% Exemple: $ \PP(n)    \implique    \PP(n+1) $
% Exemple: On a montré $(i) \implique (ii)$ et $(ii) \implique (i)$,
%	   donc $(i) \eq (ii)$.
\newcommand{\implique}{\ensuremath{\Longrightarrow}}
\newcommand{\imply}{\implique}					% Synonyme
\newcommand{\eq}{\ensuremath{\Longleftrightarrow}}
\newcommand{\SSI}{\ensuremath{\Longleftrightarrow}}		% Synonyme

% « Être en relation avec » se note « A \mathscrchoice{R} B ».
% Exemple: $ A \relation B $
\newcommand{\relation}{\ensuremath{\mathscrchoice{R}}}

% Enfin, les symboles logiques classiques sont utiles pour les épreuves
% d'informatique. Partout ailleurs, il faut leur préférer les expressions
% rédigées complètes, en particulier dans les ensembles.
% Exemple: $ A \implique B    \qquad \eq \qquad    \non B \ou A $
% Exemple: $ \{ \pgcd(i,j) \| i \in A \text{ et } i \in B \} $
\newcommand{\ou}{\ensuremath{\vee}}
\newcommand{\et}{\ensuremath{\wedge}}
\newcommand{\non}{\ensuremath{\neg}}
\newcommand{\donne}{\ensuremath{\longrightarrow}}
\newcommand{\tauto}{\ensuremath{\vdash}}

%!!!!!!!!!!!!!!!!!                                    !!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!   Algèbre linéaire et bilinéaire   !!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!                                    !!!!!!!!!!!!!!!!!

% Quelques raccourcis pour manipuler les nombres complexes.
\newcommand{\barre}[1]{\ensuremath{\overline{#1}}}		% Conjugué
\newcommand{\Arg}{\ensuremath{\mathop{\rm Arg\,}\nolimits}}	% Argument
\renewcommand{\Re}{\ensuremath{\mathop{\text{Re}\,}\nolimits}}
\renewcommand{\Im}{\ensuremath{\mathop{\text{Im}\,}\nolimits}}
\newcommand{\Rez}{\ensuremath{\Re}}  				% Synonyme
\newcommand{\Imz}{\ensuremath{\Im}} 				% Synonyme
\newcommand{\im}{\ensuremath{\Imz}} 				% Synonyme

% Les produits scalaires.
%
% Ils doivent être notés avec la même convention que dans l'énoncé.
% Les deux notations les plus répandues utilisent des parenthèses et des
% délimiteurs en coin:
%
% (u|v), (\vect{AB}|\vect{CD}).
% <u|v>, <\vect{AB}|\vect{CD}>.
%
% Vous disposez de deux commandes pour les composer rapidement et proprement:
%
%   $\scalaire{u}{v}$                     pour (u|v)
%   $\scalaire{ \vect{AB} }{ \vect{CD} }$
%
%   $\scalar{u}{v}$                       pour <u|v>
%   $\scalar{ \vect{AB} }{ \vect{CD} }$
%
% Ne changez pas de notation au fil de votre corrigé !
%
% NB: dans la majorité des cas, il ne faut pas adapter la taille
% des parenthèses à leur argument. En particulier, il est normal
% que les flèches des vecteurs dépassent des parenthèses du produit scalaire.
% Si toutefois vous avez besoin d'adapter la taille des parenthèses,
% utilisez une syntaxe de ce genre:
%
%   \left(
%       \left. \f{1}{2} u \:\right| v
%   \right)
%
% ce qui peut aussi s'écrire:
%
%   \left( \f{1}{2} u \:\right|
%   \left . \vphantom{\f{1}{2}} v \right)
%
% Si vous trouvez que ces parenthèses sont trop grandes, utilisez le
% constructeur \Big:
%
% Exemple: $ \Big(    \Sum{k=0}{n} e_k    \:\Big|\:    e_{i_0}    \Big) $

\newcommand{\scalaire}[2]{\ensuremath{(#1\|#2)}}
\newcommand{\scalar}[2]{\ensuremath{\langle #1\|#2 \rangle}}

% Les normes.
%
% La commande standard est \norme, qui doit être utilisée dans pratiquement
% tous les cas. Il est normal et souhaitable que la flèche déborde des barres
% verticales.
%
% Exemple: $ \norme{ \vect{AB} } $
%
% Il y a toutefois quelques cas pour lesquels on a vraiment besoin de barres
% plus grandes, qui couvrent tout l'argument. On utilise alors \bignorme.
%
% Exemple: $ \bignorme{    \f{1}{2}   \vect{u}    } $
%
% Évitez de diviser un vecteur par un scalaire, comme dans $\f{\vect u}{2}$.
%
% Enfin, le sup d'un endomorphisme sur la boule unité se note avec trois 
% barres verticales.
%
% Exemple: $ \trinorme{u} $

%\newcommand{\norme}[1]{\ensuremath{\Arrowvert #1 \Arrowvert}}

\newcommand{\norme}[2][1]{%
    \ifthenelse{#1 = 0}
        {\ensuremath{#2}}{}%
    \ifthenelse{#1 = 1}
        {\ensuremath{\Arrowvert #2\Arrowvert}}{}%
    \ifthenelse{#1 = 2}
        {\ensuremath{\big\Arrowvert#2\big\Arrowvert}}{}%
    \ifthenelse{#1 = 3}
        {\ensuremath{\Big\Arrowvert#2\Big\Arrowvert}}{}%
    \ifthenelse{#1 = 4}
        {\ensuremath{\bigg\Arrowvert#2\bigg\Arrowvert}}{}%
    \ifthenelse{#1 = 5}
        {\ensuremath{\Bigg\Arrowvert#2\Bigg\Arrowvert}}{}%
    \ifthenelse{#1 = 9}
        {\ensuremath{\left\Arrowvert#2\right\Arrowvert}}{}%
}


\newcommand{\bignorme}[1]{\ensuremath{\left\Arrowvert #1 \right\Arrowvert}}
\newcommand{\trinorme}[1]{\ensuremath{|\hskip -1 pt|\hskip -1 pt| #1%
	|\hskip -1 pt|\hskip -1 pt|}}

% Dessiner une matrice ou un déterminant peut se faire avec les environnements
% {matrice} et {determinant}.
%
% Exemple: $\begin{matrice}	$\begin{determinant}
%		1 & 0 \\ 		1 & 0 \\
%		0 & 1 \\		0 & 1 \\
%	    \end{matrice}$	 \end{determinant}$
%
% La transposée d'une matrice nommée par une lettre se note avec \trans.
%
% Exemple: $ \trans{A} $
%
% Pour indiquer des points de suspension qui descendent la première diagonale,
% LaTeX fournir \ddots (down dots). Il fournit également \cdots pour les 
% points de suspension horizontaux et \vdots pour les points de 
% suspension verticaux. Pour indiquer des points de suspension qui remontent 
% la deuxième diagonale, on peut utiliser \udots.
%
% Exemple: $\begin{matrice}
%		   0   & \cdots &    0   &    1   \\
%		\vdots & \udots & \udots &    0   \\
%		   0   & \udots & \udots & \vdots \\
%		   1   &    0   & \cdots &    0   \\
%	    \end{matrice}$

\newenvironment{matrice}%
	{\begin{pmatrix}}%
	{\end{pmatrix}}
\newenvironment{determinant}%
	{\begin{vmatrix}}%
	{\end{vmatrix}}

% La commande \matricedd simplifie la composition de matrices (2,2). Elle
% prend quatre arguments qui sont les quatre coefficients de la matrice, lus
% ligne par ligne.
%
% Exemple: \matricedd{\exi{\theta}}{0}{0}{\exmi{\theta}}
%
\newcommand{\matricedd}[4]{%
        \ensuremath{\begin{matrice}
                #1 & #2 \\
                #3 & #4 \\
        \end{matrice}}
}

% Le raccourci \vcol permet de dessiner facilement un vecteur colonne.
%
% Exemple:
%   \vcol{ x \\ y \\ z } produit: / x \
%                                 | y |
%                                 \ z /
%
% On peut placer un nombre quelconque de lignes: \vcol{x\\ y} fait un
% vecteur à deux lignes, tandis que \vcol{x\\ y\\ z\\ t} utilise quatre 
% lignes.
%
% Enfin, on peut espacer les lignes en utilisant l'argument optionnel de
% '\\':
% $\vcol{\f{1}{2}(X+1)\\[2mm] X²}$

\newcommand{\vcol}[1]{\ensuremath{\begin{pmatrix}#1\end{pmatrix}}}

%% Pour les matrices
\newcommand{\udots}{\ensuremath{\hskip 2pt \raisebox{1pt}{.} \hskip 1pt%
        \raisebox{4pt}{.} \hskip 1pt \raisebox{7pt}{.} \hskip 2pt}}
	% up-dots, le symérique de \ddots sur la diagonale.
%\newcommand{\transp}[1]{%
%    \ensuremath{%
%        {\vphantom{#1}}^t #1%
%    }%
%}
\newcommand{\trans}[1]{\ensuremath{\sideset{^t}{}%
        {\mathop{\mathstrut #1}}}}
\newcommand{\transp}[1]{\trans{#1}}
	% La transposée d'une matrice : $\trans{A}$.


%!!!!!!!!!!!!!!!!!!!!!                            !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!   Analyse différentielle   !!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!                            !!!!!!!!!!!!!!!!!!!!!

% Les physiciens et les chimistes ont besoin de beaucoup de dérivées 
% partielles ou totales, avec la notation par les éléments différentiels.
% Toutes les commandes ci-dessous s'utilisent de la même manière, en donnant
% en premier argument la fonction à dériver et en deuxième argument la 
% variable par rapport à laquelle on dérive. Je représente les « d rond » par 
% un ð, faute de mieux sur le clavier; l'apparence sera toutefois correcte
% dans LaTeX.

% Commençons par un synonyme.
\newcommand{\drond}{\ensuremath{\partial}}

% df
% --	Exemple: $ \ddf{f}{x} $
% dx
\newcommand{\ddf}[2]{\ensuremath{\f{\dd#1}{\dd#2}}}

% df
% --	Exemple: $ \ddt{f} $		On dérive par rapport à t.
% dt
\newcommand{\ddt}[1]{\ddf{#1}{t}}

% d²f
% --	Exemple: $ \ddxx{f}{x} $
% dx²
\newcommand{\ddxx}[2]{\ensuremath{\f{\dd^2{}#1}{\dd{}{#2}^2}}}

% d²f
% --	Exemple: $ \ddtt{f} $		On dérive 2 fois par rapport à t.
% dt²
\newcommand{\ddtt}[1]{\ensuremath{\ddxx{#1}{t}}}

% ðf
% --	Exemple: $ \Dp{f}{x} $
% ðx
\newcommand{\Dp}[2]{\ensuremath{\f{\partial#1}{\partial#2}}} 

% ðf
% --	Exemple: $ \Dpt{f} $		On dérive par rappor à t.
% ðt
\newcommand{\Dpt}[1]{\ensuremath{\Dp{#1}{t}}}

% ð²f
% ---	Exemple: $ \DDp{f}{x} $
% ðx²
\newcommand{\DDp}[2]{\ensuremath{\f{\partial^2#1}{\partial{#2}^2}}}

% / ðf \
%|  --  |	Exemple: $ \DP{f}{x} $
% \ ðx /	Ces parenthèses peuvent être utiles pour placer des indices.
\newcommand{\DP}[2]{\ensuremath{\left(\f{\partial#1}{\partial#2}\right)}}

% ð² f
% ----	Exemple: $\Dpc{f}{x}{y}$	Dérivée partielle croisée.
% ðxðy
\newcommand{\Dpc}[3]{\ensuremath\f{\partial^2#1}{\partial#2\,\partial#3}}
\newcommand{\DCP}[3]{\ensuremath{\Dpc{#1}{#2}{#3}}}		% Synonyme

%  / ð² f \
% |  ----  |	Exemple: $\DPC{f}{x}{y}$
%  \ ðxðy /
\newcommand{\DPC}[3]{\ensuremath{\left(\Dpc{#1}{#2}{#3}\right)}}

% Les intégrales de contour doivent être « grandes », comme \Int, même dans le
% texte. Au lieu de préciser '\displaystyle' à chaque occurrence, on peut
% profiter de la commande \Oint.
\newcommand{\Oint}{\displaystyle\oint}

% Bizarrement, il n'y a pas de symbole prédéfini pour les intégrales de 
% surface.
\newcommand{\oiint}{\ensuremath{\mathop{{\displaystyle%
%        \int \hskip -3 mm \int%
%        \hskip -4.7 mm \bigcirc\ }}\limits}}
        \int\mkern -15.37mu \int%
        \mkern -24.08mu \bigcirc\ }}\limits}}

% La même chose, mais avec un indice à l'intégrale ($\OIInt{\Sigma}$).
\newcommand{\OIInt}[1]{\ensuremath{\mathop{{%
	\displaystyle%
	\bigcirc%
%	 \hskip -4.7 mm \int%
%        \hskip -3 mm \int_{#1}%
	\mkern -24.08mu \int%
        \mkern -15.37mu \int_{#1}%
}}}}%

\newcommand{\Iint}{\ensuremath{\mathop{{\displaystyle%
        \int \mkern -15.37mu \int}}\limits}}

% La même chose, mais avec un indice à l'intégrale ($\IInt{\Sigma}$).
\newcommand{\IInt}[1]{\ensuremath{\mathop{{%
        \displaystyle%
        \int\mkern -15.37mu \int_{#1}%
}}}}%

\newcommand{\Iiint}{\ensuremath{\mathop{{\displaystyle%
        \int \mkern -15.37mu \int \mkern -15.37mu \int}}\limits}}

% La même chose, mais avec un indice à l'intégrale ($\IIInt{\Sigma}$).
\newcommand{\IIInt}[1]{\ensuremath{\mathop{{%
        \displaystyle%
        \int\mkern -15.37mu \int \mkern -15.37mu \int_{#1}%
}}}}%

%!!!!!!!!!!!!!!!!!!!!!!!!!!!!               !!!!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Géométrie   !!!!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!!!               !!!!!!!!!!!!!!!!!!!!!!!!!!!!

% Dessiner des vecteurs est très difficile. La commande LaTeX standard, 
% \overrightarrow, ne produit pas un résultat satisfaisant sur les lettres 
% majuscules. Pour pallier ce manque, on peut utiliser la commande \vect.
%
% Exemple: $\vect{AB}$
%	   $\vect{u}$
%
% Ce type de flèche doit être utilisé en toute circonstance, sauf une: lorsque
% le vecteur est placé en exposant (notamment en optique), on utiliser plutôt
% \svect, qui sert précisément et uniquement à cela.
%
% Exemple pour les vecteurs en exposant: $e^{ i\,\svect{k} \cdot \svect{r} }$

\newlength{\moreinterligne}
\setlength{\moreinterligne}{5.5 pt}
\newlength{\letterarrowvskip}
\setlength{\letterarrowvskip}{-1.5 pt}
\newlength{\vectlength}
\newlength{\vectheight}
\newlength{\boxlength}
\newcommand{\vect}[1]{%
        \settowidth{\vectlength}{\ensuremath{#1}}%
        \settoheight{\vectheight}{\ensuremath{#1}}%
        \settowidth{\boxlength}{%
	        \ensuremath{%
        	\overrightarrow{%
		        \parbox[b][\the\vectheight + \letterarrowvskip][b]{%
				\the\vectlength%
			}{\ensuremath{#1}}%
		}%
		}%
        }
        \parbox[b][\the\vectheight + \moreinterligne][b]{\the\boxlength}{%
	        \ensuremath{%
		        \overset{\hbox to \the\boxlength{\rightarrowfill}}{%
	        	\parbox[b][\the\vectheight + \letterarrowvskip][b]{
				\the\vectlength%
			}{\ensuremath{#1}}%
			}%
		}%
        }
}

\newlength{\smoreinterligne}
\setlength{\smoreinterligne}{5.5 pt}
\newlength{\sletterarrowvskip}
\setlength{\sletterarrowvskip}{0 pt}
\newlength{\svectlength}
\newlength{\svectheight}
\newlength{\sboxlength}
\newlength{\sebtemp}
\newcommand{\svect}[1]{% 
        \settowidth{\svectlength}{\mbox{\scriptsize{\ensuremath{#1}}}}%
        \settoheight{\svectheight}{\mbox{\scriptsize{\ensuremath{#1}}}}%
        \settowidth{\sboxlength}{%
	        \ensuremath{%
	        \overrightarrow{%
		        \parbox[b][\the\svectheight + \sletterarrowvskip][b]{%
				\the\svectlength%
			}%
        		{\mbox{\scriptsize{\ensuremath{#1}}}}%
		}%
		}%
        }
	\parbox[b][\the\svectheight + \smoreinterligne][b]{\the\sboxlength}{%
	        \ensuremath{%
		\overrightarrow{%
		        \parbox[b][\the\svectheight + \sletterarrowvskip][b]{%
				\the\svectlength%
			}%
	        	{\mbox{\scriptsize{\ensuremath{#1}}}}%
		}%
		}%
	}
}

% \vec (pour les petits arguments) est remplacé par \vect.
\renewcommand{\vec}[1]{\ensuremath{\vect{#1}}}

% Pour les vecteurs complexes 
\newcommand{\uvect}[1]{\ensuremath{\underline{\vect{#1}}}}
\newcommand{\vectu}[1]{\ensuremath{\vect{\underline{#1}}}}

% Exceptionnellement, on peut vouloir utiliser \vec pour les *indices*.
\newcommand{\oldvec}{\mathaccent"17E }

% Les vecteurs usuels ont un petit nom.
%	\vecti, \vectj, \vectk: la base usuelle de \R³
%	\vectE: le champ électrique
%	\vectB: le champ magnétique
\newcommand{\vecti}{\ensuremath{\vect{\imath}}}
\newcommand{\vectj}{\ensuremath{\vect{\jmath}}}
\newcommand{\vectk}{\ensuremath{\vect{k}}}
\newcommand{\vectux}{\ensuremath{\vect{u_x}}}
\newcommand{\vectuy}{\ensuremath{\vect{u_y}}}
\newcommand{\vectuz}{\ensuremath{\vect{u_z}}}
\newcommand{\vectex}{\ensuremath{\vect{e_x}}}
\newcommand{\vectey}{\ensuremath{\vect{e_y}}}
\newcommand{\vectez}{\ensuremath{\vect{e_z}}}
\newcommand{\vux}{\ensuremath{\vect{u_x}}}
\newcommand{\vuy}{\ensuremath{\vect{u_y}}}
\newcommand{\vuz}{\ensuremath{\vect{u_z}}}
\newcommand{\vex}{\ensuremath{\vect{e_x}}}
\newcommand{\vey}{\ensuremath{\vect{e_y}}}
\newcommand{\vez}{\ensuremath{\vect{e_z}}}
\newcommand{\vectE}{\ensuremath{\vect{E}}}
\newcommand{\vectB}{\ensuremath{\vect{B}}}
\newcommand{\vur}{\ensuremath{\vect{u_r}}}                                      
\newcommand{\vurho}{\ensuremath{\vect{u_\rho}}}                                 
\newcommand{\vutheta}{\ensuremath{\vect{u_\theta}}}                             
\newcommand{\vuphi}{\ensuremath{\vect{u_\ph}}}                                  
\newcommand{\ver}{\ensuremath{\vect{e_r}}}                                      
\newcommand{\verho}{\ensuremath{\vect{e_\rho}}}                                 
\newcommand{\vetheta}{\ensuremath{\vect{e_\theta}}}                             
\newcommand{\vephi}{\ensuremath{\vect{e_\ph}}}  
\newcommand{\vectv}{\ensuremath{\vect{v}}}
\newcommand{\vectF}{\ensuremath{\vect{F}}}
% Le produit vectoriel
% Exemple: $ \vecti \vectoriel \vectj = \vectk $
\newcommand{\vectoriel}{\ensuremath{\wedge}}

% Les mesures algébriques, par exemple pour compter si une distance doit être
% considérée comme positive ou négative. Utile en optique.
% Exemple: $ \alg{AB} $
\newcommand{\alg}[1]{\ensuremath{\overline{#1}}}


%!!!!!!!!!!!!!!!!!!!!!!!!!                    !!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!   Les opérateurs   !!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!                    !!!!!!!!!!!!!!!!!!!!!!!!!

% Les ensembles.
\newcommand{\card}{\ensuremath{\mathop{\rm Card\,}\nolimits}}
\newcommand{\Min}{\ensuremath{\mathop{\,\rm Min\,}\limits}}  
\newcommand{\Max}{\ensuremath{\mathop{\,\rm Max\,}\limits}}
\newcommand{\Maj}{\ensuremath{\mathop{\,\rm Maj\,}\limits}}
\newcommand{\Inf}{\ensuremath{\mathop{\,\rm Inf\,}\limits}}
\newcommand{\Sup}{\ensuremath{\mathop{\,\rm Sup\,}\limits}}  

% Arithmétique.
\newcommand{\pgcd}{\ensuremath{\mathop{\rm pgcd\,}\nolimits}}
\renewcommand{\gcd}{\pgcd}
\newcommand{\ppcm}{\ensuremath{\mathop{\rm ppcm\,}\nolimits}}
\newcommand{\ord}{\ensuremath{\mathop{\rm ord\,}\nolimits}} % Ordre d'un groupe

% L'identité.
\newcommand{\id}{\ensuremath{\mathop{\rm id\,}\nolimits}}
\newcommand{\Id}{\ensuremath{\mathop{\rm Id\,}\nolimits}}

% Les opérateurs vectoriels.
\renewcommand{\div}{\ensuremath{\mathop{\rm div\,}\nolimits}}
\newcommand{\rot}{\ensuremath{\mathop{\vect{\rm rot}\,}\nolimits}} 
\newcommand{\grad}{\ensuremath{\mathop{\vect{\rm grad}\,}\nolimits}}

% Polynômes,
\DeclareMathOperator{\val}{val\,}	% \deg est prédéfini

% Algèbre.
\DeclareMathOperator{\Ker}{Ker\,}
\renewcommand{\ker}{\Ker}					% Synonyme
\DeclareMathOperator{\Image}{Im\,}
\DeclareMathOperator{\spectre}{sp\,}

\DeclareMathOperator{\Vect}{Vect\,}	% Ne pas confondre avec \vect
\DeclareMathOperator{\rg}{rg\,}		% Le rang
\DeclareMathOperator{\tr}{Tr\,}		% La trace
\DeclareMathOperator{\trace}{Tr\,}	% La trace aussi
\DeclareMathOperator{\Mat}{Mat\,}	% Uniquement pour les expressions 
					% comme $\Mat_{\nliste{e}}(u)$.
\DeclareMathOperator{\Pass}{Pass\,}	% Matrice de passage
\newcommand{\orthogonal}[1]{\ensuremath{{#1}^{\perp}}}	% $ \orthogonal{E} $

% Fonctions trigonométrique et réciproques
\DeclareMathOperator{\sh}{sh\,}
\DeclareMathOperator{\ch}{ch\,}
\renewcommand{\sinh}{\sh}					% Synonyme
\renewcommand{\cosh}{\ch}					% Synonyme
\renewcommand{\th}{\ensuremath{\mathop{\rm th\,}\nolimits}}
\renewcommand{\coth}{\ensuremath{\mathop{\rm coth\,}\nolimits}}
%
\DeclareMathOperator{\argsh}{Argsh\,}
\DeclareMathOperator{\argch}{Argch\,}
\DeclareMathOperator{\argth}{Argth\,}
\DeclareMathOperator{\argcoth}{Argcoth\,}
\newcommand{\Argsh}{\argsh}					% Synonyme
\newcommand{\Argch}{\argch}					% Synonyme
\newcommand{\Argth}{\argth}					% Synonyme
\newcommand{\Argcoth}{\argcoth}					% Synonyme
%
\DeclareMathOperator{\cotan}{cotan\,}
\renewcommand{\arcsin}{\ensuremath{\mathop{\rm Arcsin\,}\nolimits}}
\renewcommand{\arccos}{\ensuremath{\mathop{\rm Arccos\,}\nolimits}}
\renewcommand{\arctan}{\ensuremath{\mathop{\rm Arctan\,}\nolimits}}
\DeclareMathOperator{\arccot}{Arccot\,}
\newcommand{\arccotan}{\arccot}					% Synonyme
	% Rien n'est prévu si vous ne prenez pas l'argument *principal*.
	% Si vous tenez absolument à chercher les ennuis, utilisez \text...
\newcommand{\Arcsin}{\arcsin}					% Synonyme
\newcommand{\Arccos}{\arccos}					% Synonyme
\newcommand{\Arctan}{\arctan}					% Synonyme
\newcommand{\Arccot}{\arccot}					% Synonyme
\newcommand{\Arccotan}{\arccotan}				% Synonyme
%
\DeclareMathOperator{\sinc}{sinc\,}

%!!!!!!!!!!!!!!!!!!!!!!!!!!                  !!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!   Les tableaux   !!!!!!!!!!!!!!!!!!!!!!!!!!
%!!!!!!!!!!!!!!!!!!!!!!!!!!                  !!!!!!!!!!!!!!!!!!!!!!!!!!

% Dessiner des équations alignées, un système, un tableau de variation, etc., 
% c'est plutôt difficile. À la base, tout est construit sur l'environnement
% standard {array}. Les environnement ci-dessous lui passent des options pour
% traiter la plupart des cas courants.
%
% Exemple: $\begin{syst}
%		a & b+2 \\	Dessine un système avec une grande accolade
%		b &  1  \\	à gauche. Le '&' est remplacé par un '='.
%	    \end{syst}$	
%
% Exemple: $\begin{systsimple}
%		a & b+2 \\	Comme le précédent, mais sans l'accolade
%		b &  1  \\	à gauche.
%	    \end{systsimple}$
%
% Exemple: $\begin{varsyst}		Comme {syst}, sauf que le '=' est 
%		3   & \leq & \pi \\	remplacé par ce qui est entre les '&',
%		\pi & \leq &  4  \\	soit, dans l'exemple, le symbole 
%	    \end{varsyst}$		« inférieur ou égal ».
%
% Exemple: $\begin{leqsystsimple}
%		a & b+2 \\	Comme {systsimple}, mais en remplaçant le signe
%		b &  1  \\	'=' par un « inférieur ou égal ».
%	    \end{leqsystsimple}$
%
% Exemple : $f(x) = 
%		\begin{accolade}
%		\f{\sin x}{x} & \text{si }   x\neq 0 \\[3mm]
%		       1      & \text{sinon}         \\
%		\end{accolade}$
%		On pourrait aussi utiliser l'environnement standard {cases}.
%
% Exemple: $\begin{rcl}
% 		|f| &   =  & |g + h|             \\
% 		|f| & \leq & |g| + |h|           \\
% 		|f| & \leq & \Max |g| + \Max |h| \\
%	    \end{rcl}$
% À utiliser lorsque le symbole central change à chaque ligne.
%
% Lorsqu'aucun de ces environnements ne peut vous satisfaire, il faut créer
% un tableau {array} en lui passant des arguments: une lettre par colonne
% ('c' pour centrer, 'l' pour aligner à gauche et 'r' pour aligner à droite)
% et on peut remplacer l'espace intercolonnes par un argument entre @{···}.
%
% Exemple: $\begin{array}{r @{\ \geq\ } l}
%		a & b \\	Dessine un tableau dans lequel on insère entre
%		c & d \\	la première et la deuxième colonne le symbole
%	    \end{array}$	« supérieur ou égal ».

\newenvironment{syst}[1][r]%
	{\ensuremath{\left \{ \hskip -1.5 mm \begin{array}{#1@{\ =\ }l}}}%
	{\end{array}\right.}
\newenvironment{systsimple}[1][r]%
	{\ensuremath{\begin{array}[t]{#1@{\ =\ }l}}}%
	{\end{array}}
\newenvironment{varsyst}[1][r]%
	{\ensuremath{\left \{ \hskip -1.5 mm%
	 \begin{array}{#1@{\ }c@{\ }l}}}%
	{\end{array}\right.}
\newenvironment{accolade}[1][r]%
	{\ensuremath{\left \{ \hskip -1.5 mm \begin{array}{#1@{\quad}l}}}%
	{\end{array}\right.}
\newenvironment{leqsystsimple}[1][r]%
	{\ensuremath{\begin{array}[t]{#1@{\ \leq\ }l}}}%
	{\end{array}}
\newenvironment{rcl}[1][r]%
	{\ensuremath{\begin{array}[t]{#1@{\ }c@{\ }l}}}%
	{\end{array}}

% Dans les tableaux de variation, on a souvent besoin d'insérer deux barres
% verticales pour indiquer les « zones interdites ».
\newcommand{\barres}{\ensuremath{\vline\:\vline}}

% Lorsque l'on réalise un long calcul, il est parfois souhaitable d'encadrer
% sa dernière ligne. Un cas fréquent est celui des équation-bilan. 
% La commande suivante permet de réaliser cela. Son premier (resp.
% dernier) argument est la première (resp. dernière) colonne qui doit
% être encadrée. Elle dispose également de trois arguments optionnels
% entre ces deux arguments qui permettent d'encadrer plus de deux
% colonnes.
%
% Exemple: $\begin{array}{r @{\ =\ } l}
%		a + 1 & 7 - 3 \\
%		  a   & 4 - 1 \\
%		\arraybox{a}{3} \\
%	    \end{array}$
%
% Exemple: $\begin{array}{r @{\ } = @{\ } l}
%               a + 1 & = & 7 - 3 \\
%                 a   & = & 4 - 1 \\
%               \arraybox{a}[=]{3} \\
%           \end{array}$

\newlength{\boxrulewidth}
\setlength{\boxrulewidth}{.4pt}
\newlength{\boxrulesep}
\setlength{\boxrulesep}{1mm}

\newlength{\gauchelong}
\newlength{\droitelong}
\newlength{\colonnealong}
\newlength{\colonneblong}
\newlength{\colonneclong}

\newlength{\maxhaut}
\newlength{\maxbas}

\newcommand{\writeifexist}[1]{%
        \ifthenelse{\equal{#1}{\null}}{\null}{#1&}%
}

\newcommand{\lengthifexist}[2]{%
       \ifthenelse{\not\equal{#1}{\null}}{%
                \settowidth{#2}{$#1$}
                }{\setlength{#2}{0cm}}%
}

\makeatletter

\def\arraybox#1{
    \@ifnextchar[%]
    	{\iarraybox{#1}}%
    	{\ivarraybox{#1}{\null}{\null}[\null]}}

\def\iarraybox#1[#2]{%
    \@ifnextchar[%]
    	{\iiarraybox{#1}{#2}}%
    	{\ivarraybox{#1}{#2}{\null}[\null]}}

\def\iiarraybox#1#2[#3]{%
    \@ifnextchar[%]
  	  {\iiiarraybox{#1}{#2}{#3}}%
    	{\ivarraybox{#1}{#2}{#3}[\null]}}

\def\iiiarraybox#1#2#3[#4]{%
    \@ifnextchar[%]
  	  {\ivarraybox{#1}{#2}{#3}[#4]\relax}%
    	{\ivarraybox{#1}{#2}{#3}[#4]}}%

\def\ivarraybox#1#2#3[#4]#5{%
        \settowidth{\gauchelong}{$#1\ $}%
        \settoheight{\maxhaut}{$#1#2#3#4#5$}
        \settodepth{\maxbas}{$#1#2#3#4#5$}
        \lengthifexist{#2}{\colonnealong}%
        \lengthifexist{#3}{\colonneblong}%
        \lengthifexist{#4}{\colonneclong}%
%
        \raisebox{-\maxbas-\boxrulewidth-\boxrulesep}{%
                \rule{\boxrulewidth}{%
                \maxbas+\maxhaut+2\boxrulewidth+2\boxrulesep}}%
        \raisebox{\maxhaut+\boxrulesep}{%
                \makebox[0cm][l]{\rule{%
                \gauchelong+\colonnealong+\colonneblong+\colonneclong}{%
                \boxrulewidth}}}%
        \raisebox{-\maxbas-\boxrulewidth-\boxrulesep}{%
                \makebox[0cm][l]{\rule{%
                \gauchelong+\colonnealong+\colonneblong+\colonneclong}{%
                \boxrulewidth}}}%
        \hskip\boxrulesep%
        #1&%
   		\writeifexist{#2}%
		\writeifexist{#3}%
        \writeifexist{#4}%
%
        #5%
				% il faut les remettre apres le & il semblerait...
        \settowidth{\droitelong}{$#5\ \eq $}
        \settoheight{\maxhaut}{$#1#2#3#4#5$}
        \settodepth{\maxbas}{$#1#2#3#4#5$}
%
        \hskip\boxrulesep%
        \hskip-\droitelong%
        \raisebox{\maxhaut+\boxrulesep}{%
                \makebox[0cm][l]{\rule{\droitelong}{\boxrulewidth}}}
        \raisebox{-\maxbas-\boxrulesep-\boxrulewidth}{%
                \makebox[0cm][l]{\rule{\droitelong}{\boxrulewidth}}}
        \hskip\droitelong%
        \raisebox{-\maxbas-\boxrulesep-\boxrulewidth}{%
                \rule{\boxrulewidth}{%
                \maxbas+\maxhaut+2\boxrulesep+2\boxrulewidth}}
}

\makeatother

% La commande \arraybox comporte un bug connu mais que nous ne savons pas
% résoudre. Il est possible de remplacer dans un tableau l'espace entre les
% colonnes par n'importe quoi d'autre à l'aide de '@'. Or, lorsqu'on remplace
% dans un tableau de plus de trois colonnes cet espace par quelque chose de
% plus grand, par exemple « @{\ =\ } », la boîte produite par \arraybox
% ne ferme pas bien, il reste un « jour » horizontal. (Si vous avez une
% idée pour corriger ce problème, envoyez-nous un mail à annales.sty@H-K.fr !)
%
% Si vous rencontrez ce cas, vous pouvez utiliser la commande suivante,
% \EncadreDansTableau, qui marche toujours (mais qui est moins
% ergonomique). 
%
% Son premier argument est une longueur, en points, dont il faut 
% décaler le cadre vers la gauche. Son deuxième argument est le même code 
% que celui de la dernière ligne du tableau, en changeant les '&' par ce
% qu'ils sont censés représenter. Il faut placer cette commande avant le
% code qui correspond à la dernière ligne du tableau.
%
% Exemple: $\begin{array}{r @{\ =\ } l}
%               a + 1 & 7 - 3 \\
%                 a   & 4 - 1 \\
%               \EncadreDansTableau{5}{a \ =\  3} a & 3 \\
%           \end{array}$

\newcommand{\EncadreDansTableau}[2]{%
%	\typeout{^^JEncadreDansTableau est obsolete, veuillez
%	utiliser arraybox SVP.^^J}
        \begin{picture}(0,0)%
        \put(-#1,0){\fbox{\ensuremath{\hphantom{#2}\vphantom{#2}}}}%
        \end{picture}%
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%                 %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%   La physique   %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%                 %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Les unités.

% Présenter les unités correctement peut être pénible sans une macro 
% appropriée car d'un côté il faut que les lettres (m, kg, etc.) apparaissent
% comme dans le texte, et de l'autre on souhaite utiliser des exposants.
% La macro \U est faite pour cela.
%
% Exemple: $ g = 9,81 \U{m^2 s^{-1}} $

\newcommand{\U}[1]{\ensuremath{\mathrm{~#1}}}

% Le cas particulier des Angström doit être traité à part pour avoir un
% bon rendu.
%
% Exemple: $ \ell = 2 \U{\Angstrom} $
%\newlength{\angstromlength}
%\settowidth{\angstromlength}{A}
%\setlength{\angstromlength}{\angstromlength / 2 + 0.003mm}
%\newcommand{\angstrom}{%
%	\hskip\angstromlength
%	\makebox[0pt]{%
%		\ensuremath{%
%		\overset{\text{\tiny$\circ$}}{\rule{0pt}{2.2mm}}%
%		}%
%	}%
%	\hskip-\angstromlength A%
%}
\newcommand{\angstrom}{\ensuremath{\mathring{A}}}
\newcommand{\Angstrom}{\angstrom}				% Synonyme

% Les degrés.
% Exemple: $T\e{f} = 10 \celsius$
% Exemple: $T\e{i} = 10 \U{K}$
\newcommand{\celsius}{\ensuremath{\text{\degre{}C}}\xspace}
\renewcommand{\degre}{\ensuremath{{}^{\text{\footnotesize\ensuremath{\circ}}}}}
%\renewcommand{\degres}{\degre}					% Synonyme
\def\degres{\degre}

% Les indices
%
% Les indices placés à côté d'une lettre peuvent être essentiellement de deux 
% natures: soit ils désignent un numéro, comme dans 'u_n', soit ils désignent
% une abréviation, comme dans 'T_\text{f}' (température finale).
%
% Les premiers ne posent aucun problème à composer: $u_n$. Les seconds, en 
% revanche, sont pénibles parce qu'il faudrait en permanence utiliser \text
% pour les faire apparaître en droit, ce qui est indispensable. La commande
% \e s'en occupe pour vous.
%
% Exemple: $ T\e{finale} = 1 \U{K} $
%
% Attention, n'abusez pas non plus de cette commande: il ne serait pas correct
% d'écrire $u\e{n}$. Il faut alors s'en tenir à la règle habituelle: $u_n$.
%
% Les commandes \liq, \sol et \gaz servent à indiquer la phase.
%
% Exemple: $ \He\liq $

\newcommand{\e}[1]{\ensuremath{{}_{\text{#1}}}}
\newcommand{\liq}{\ensuremath{\e{\ensuremath{(\ell)}}}}
\newcommand{\gaz}{\ensuremath{\e{(g)}}}
\newcommand{\sol}{\ensuremath{\e{(s)}}}
\newcommand{\aq}{\ensuremath{\e{(aq)}}}

% On en profite pour la thermochimie. Des combinaisons plus complexes sont
% aussi possibles avec \e.
\newcommand{\Deltar}{\ensuremath{\Delta_{\text{r}}}}
\newcommand{\Deltaf}{\ensuremath{\Delta_{\text{f}}}}
\newcommand{\deltar}{\Deltar}
\newcommand{\deltaf}{\Deltaf}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%               %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   La chimie   %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%               %%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% La chimie est toujours difficile à composer. Le pire est naturellement la
% chimie organique, qui exige des dessins. Mais même le simple fait d'utiliser
% le symbole d'un élément demande du travail, puisque le symbole doit 
% apparaître en caractères droits. Pour les quelques éléments dont le symbole
% est réduit à une lettre (B,C,F,I,K,N,O,U), pas de problème. Pour tous les 
% autres, il faudrait utiliser \text, comme dans $\text{Al}_2 O_3$.
%
% Pour simplifier le travail de composition, au moins deux commandes ont été 
% accordées à chaque élément: l'un avec le nom complet, l'autre avec le 
% symbole. Pour ce dernier cas, veillez à ne pas oublier les majuscules.
%
% Exemple: $ \Al_2 O_3 $

\newcommand{\aluminium}{\ensuremath{\mathrm{Al}}}
\newcommand{\alu}{\aluminium}
\newcommand{\Al}{\aluminium}
\newcommand{\argent}{\ensuremath{\mathrm{Ag}}}   
\newcommand{\Ag}{\argent}
\newcommand{\argon}{\ensuremath{\mathrm{Ar}}}
\newcommand{\Ar}{\argon}
\newcommand{\arsenic}{\ensuremath{\mathrm{As}}}
\newcommand{\As}{\arsenic}
\newcommand{\baryum}{\ensuremath{\mathrm{Ba}}}
\newcommand{\Ba}{\baryum}
\newcommand{\beryllium}{\ensuremath{\mathrm{Be}}}
\newcommand{\Be}{\beryllium}
\newcommand{\bismuth}{\ensuremath{\mathrm{Bi}}}
\newcommand{\Bi}{\bismuth}
\newcommand{\brome}{\ensuremath{\mathrm{Br}}}
\newcommand{\Br}{\brome}
\newcommand{\cadmium}{\ensuremath{\mathrm{Cd}}}
\newcommand{\Cd}{\cadmium}
\newcommand{\calcium}{\ensuremath{\mathrm{Ca}}}    
\newcommand{\Ca}{\calcium}
\newcommand{\cerium}{\ensuremath{\mathrm{Ce}}}
\newcommand{\Ce}{\cerium}
\newcommand{\cesium}{\ensuremath{\mathrm{Cs}}}
\newcommand{\Cs}{\cesium}
\newcommand{\chlore}{\ensuremath{\mathrm{Cl}}}   
\newcommand{\Cl}{\chlore}
\newcommand{\chrome}{\ensuremath{\mathrm{Cr}}}
\newcommand{\Cr}{\chrome}
\newcommand{\cobalt}{\ensuremath{\mathrm{Co}}}
\newcommand{\Co}{\cobalt}
\newcommand{\cuivre}{\ensuremath{\mathrm{Cu}}}
\newcommand{\Cu}{\cuivre}
\newcommand{\etain}{\ensuremath{\mathrm{Sn}}}
\newcommand{\Sn}{\etain}
\newcommand{\europium}{\ensuremath{\mathrm{Eu}}}
\newcommand{\Eu}{\europium}
\newcommand{\fer}{\ensuremath{\mathrm{Fe}}}  
\newcommand{\Fe}{\fer}
\newcommand{\gallium}{\ensuremath{\mathrm{Ga}}} 
\newcommand{\Ga}{\gallium}
\newcommand{\germanium}{\ensuremath{\mathrm{Ge}}} 
\newcommand{\Ge}{\germanium}
\newcommand{\helium}{\ensuremath{\mathrm{He}}}
\newcommand{\He}{\helium}
\newcommand{\krypton}{\ensuremath{\mathrm{Kr}}}
\newcommand{\Kr}{\krypton}
\newcommand{\lithium}{\ensuremath{\mathrm{Li}}}
\newcommand{\Li}{\lithium}
\newcommand{\magnesium}{\ensuremath{\mathrm{Mg}}}
\newcommand{\Mg}{\magnesium}
\newcommand{\manganese}{\ensuremath{\mathrm{Mn}}}
\newcommand{\Mn}{\manganese}
\newcommand{\mercure}{\ensuremath{\mathrm{Hg}}}
\newcommand{\Hg}{\mercure}
\newcommand{\molybdene}{\ensuremath{\mathrm{Mo}}}
\newcommand{\Mo}{\molybdene}
\newcommand{\neon}{\ensuremath{\mathrm{Ne}}}
\newcommand{\Ne}{\neon}
\newcommand{\nickel}{\ensuremath{\mathrm{Ni}}}
\newcommand{\Ni}{\nickel}
\newcommand{\palladium}{\ensuremath{\mathrm{Pd}}}
\newcommand{\Pd}{\palladium}
\newcommand{\platine}{\ensuremath{\mathrm{Pt}}}
\newcommand{\Pt}{\platine}
\newcommand{\plomb}{\ensuremath{\mathrm{Pb}}}
\newcommand{\Pb}{\plomb}
\newcommand{\polonium}{\ensuremath{\mathrm{Po}}}
\newcommand{\Po}{\polonium}
\newcommand{\radon}{\ensuremath{\mathrm{Rn}}}
\newcommand{\Rn}{\radon}
\newcommand{\rubidium}{\ensuremath{\mathrm{Rb}}}
\newcommand{\Rb}{\rubidium}
\newcommand{\samarium}{\ensuremath{\mathrm{Sm}}}
\newcommand{\Sm}{\samarium}
\newcommand{\scandium}{\ensuremath{\mathrm{Sc}}}
\newcommand{\Sc}{\scandium}
\newcommand{\selenium}{\ensuremath{\mathrm{Se}}}
\newcommand{\Se}{\selenium}
\newcommand{\silicium}{\ensuremath{\mathrm{Si}}}
\newcommand{\Si}{\silicium}
\newcommand{\sodium}{\ensuremath{\mathrm{Na}}} 
\newcommand{\Na}{\sodium}
\newcommand{\strontium}{\ensuremath{\mathrm{Sr}}}  
\newcommand{\Sr}{\strontium}
\newcommand{\titane}{\ensuremath{\mathrm{Ti}}}
\newcommand{\Ti}{\titane}
\newcommand{\thallium}{\ensuremath{\mathrm{Tl}}}
\newcommand{\Tl}{\thallium}
\newcommand{\xenon}{\ensuremath{\mathrm{Xe}}}
\newcommand{\Xe}{\xenon}
\newcommand{\zinc}{\ensuremath{\mathrm{Zn}}}   
\newcommand{\Zn}{\zinc}
\newcommand{\zirconium}{\ensuremath{\mathrm{Zr}}}                               
\newcommand{\Zr}{\zirconium}   

% D'autres raccourcis peuvent se révéler pratiques.
\newcommand{\affinite}{\ensuremath{\mathcal{A}}}
\newcommand{\cuivreI}{\ensuremath{\mathrm{Cu}^{+}}}
	\newcommand{\CuI}{\cuivreI}				% Synonyme
\newcommand{\cuivreII}{\ensuremath{\mathrm{Cu}^{2+}}}
	\newcommand{\CuII}{\cuivreII}				% Synonyme
\newcommand{\ferII}{\ensuremath{\mathrm{Fe}^{2+}}}
	\newcommand{\FeII}{\ferII}				% Synonyme
\newcommand{\ferIII}{\ensuremath{\mathrm{Fe}^{3+}}}
	\newcommand{\FeIII}{\ferIII}				% Synonyme
%
\newcommand{\elec}{\ensuremath{\mathrm{e}^{-}}} % Pour les ½-équations rédox.
\newcommand{\methyl}{\ensuremath{\mathrm{Me}}}
	\newcommand{\Met}{\methyl}				% Synonyme
	\newcommand{\Me}{\methyl}				% Synonyme
\newcommand{\ethyl}{\ensuremath{\mathrm{Et}}}
	\newcommand{\Et}{\ethyl}				% Synonyme
\newcommand{\butyl}{\ensuremath{\mathrm{Bu}}}
	\newcommand{\Bu}{\butyl}				% Synonyme
%
\newcommand{\pH}{\ensuremath{\mathrm{pH}}}
\newcommand{\pOH}{\ensuremath{\mathrm{pOH}}}
\newcommand{\pKa}{\ensuremath{\mathrm{pKa}}}
\newcommand{\pKb}{\ensuremath{\mathrm{pKb}}}
\newcommand{\pKe}{\ensuremath{\mathrm{pKe}}}
\newcommand{\pKd}{\ensuremath{\mathrm{pKd}}}
\newcommand{\pKs}{\ensuremath{\mathrm{pKs}}}
\newcommand{\Ka}{\ensuremath{\text{Ka}}}
\newcommand{\Kb}{\ensuremath{\text{Kb}}}
\newcommand{\Ke}{\ensuremath{\text{Ke}}}
\newcommand{\Ks}{\ensuremath{\text{Ks}}}
\newcommand{\Kd}{\ensuremath{\text{Kd}}}
%
\newcommand{\sulfate}{\ensuremath{{SO_4}^{2-}}} 
\newcommand{\sulfite}{\ensuremath{{SO_3}^{2-}}} 
\newcommand{\nitrate}{\ensuremath{{NO_3}^{-}}} 
\newcommand{\nitrite}{\ensuremath{{NO_2}^{-}}} 
\newcommand{\hydronium}{\ensuremath{{H_3O}^{+}}} 
\newcommand{\phosphate}{\ensuremath{{PO_4}^{3-}}} 
\newcommand{\carbonate}{\ensuremath{{CO_3}^{2-}}} 
\newcommand{\ammonium}{\ensuremath{{NH_4}^{+}}} 
\newcommand{\bicarbonate}{\ensuremath{{HCO_3}^{-}}} 
\newcommand{\bichromate}{\ensuremath{{\chrome_2O_7}^{2-}}} 
\newcommand{\borate}{\ensuremath{{BO_3}^{3-}}} 
\newcommand{\chlorate}{\ensuremath{{\chlore O_3}^{-}}} 
\newcommand{\perchlorate}{\ensuremath{{\chlore O_4}^{-}}} 
\newcommand{\chlorite}{\ensuremath{{\chlore O_2}^{-}}} 
\newcommand{\chromate}{\ensuremath{{\chrome O_4}^{2-}}} 
\newcommand{\dithionate}{\ensuremath{{S_4O_6}^{2-}}} 
\newcommand{\hypochlorite}{\ensuremath{{\chlore O}^{-}}} 
\newcommand{\permanganate}{\ensuremath{{\manganese O_4}^{-}}} 
\newcommand{\thiosulfate}{\ensuremath{{S_2O_3}^{2-}}}

% Pour les concentrations, on doit parfois ajuster la taille des crochets.
\newcommand{\concentration}[1]{\ensuremath{\left[#1\right]}}

% On peut aussi raccourcir l'unité la plus fréquence en chimie.
% Exemple: $ [\ferII ]\e{finale} = 0,10 \conc $
\newcommand{\conc}{\ensuremath{\U{mol.L^{-1}}}}

% Le K°.
\newcommand{\Kzero}{{\ensuremath{K^\circ}}}

% P° et c°.
\newcommand{\Pzero}{{\ensuremath{P^\circ}}}
\newcommand{\czero}{{\ensuremath{c^\circ}}}

% Les grandeurs standard.
% Exemple: $\Deltar H\zero$
\newcommand{\zero}{\ensuremath{^{\circ}}}

% On est parfois amené à préciser des liaisons d'une molécule qui n'est pas 
% dessinée mais « décrite » dans le texte, comme $H_3 C - \Cl$ ou 
% $H_2 C = C H_2$. Pour que le rendu soit correct, on peut utiliser les 
% commandes suivantes, l'idéal étant d'enrober la molécule dans une \mbox
% pour s'assurer que LaTeX ne va pas augmenter ou rétrécir l'espace pour faire
% en sorte que la ligne joigne correctement les deux marges.
%
% Exemple: L'éthylène (\mbox{$H_2 C \double C H_2$}) étant toxique, blablabla.

\newcommand{\simple}{{\ensuremath{%
    \mathchoice%
        {\mbox{\raisebox{0.232ex}{\ensuremath{-}}}}
        {\mbox{\raisebox{0.232ex}{\ensuremath{-}}}}
        {\mbox{\raisebox{-0.05ex}{\ensuremath{-}}}}
        {\mbox{\raisebox{-0.15ex}{\ensuremath{-}}}}
}}}

\newcommand{\double}{{\ensuremath{%
    \mathchoice%
        {\mbox{\raisebox{0.232ex}{\ensuremath{=}}}}
        {\mbox{\raisebox{0.232ex}{\ensuremath{=}}}}
        {\mbox{\raisebox{-0.005ex}{\ensuremath{=}}}}
        {\mbox{\raisebox{-0.177ex}{\ensuremath{=}}}}
}}}

\newcommand{\triple}{{\ensuremath{%
    \mathchoice%
        {\mbox{\raisebox{0.232ex}{\ensuremath{\equiv}}}}
        {\mbox{\raisebox{0.232ex}{\ensuremath{\equiv}}}}
        {\mbox{\raisebox{-0.005ex}{\ensuremath{\equiv}}}}
        {\mbox{\raisebox{-0.177ex}{\ensuremath{\equiv}}}}
}}}

%\newcommand{\simple}{\ensuremath{\!-\!}}
%\newcommand{\double}{\ensuremath{\!=\!}}
%\newcommand{\triple}{\ensuremath{\!\equiv\!}}

% Les équilibres doivent être dessinés avec des demi-flèches.
% \Equilibre laisse plus de place (horizontale) autour du symbole que 
% \equilibre.
\newcommand{\equilibre}{\ensuremath{\ \rightleftharpoons\ }}
\newcommand{\Equilibre}{\ensuremath{\ \,\rightleftharpoons\,\ }}

% Une simple flèche pour la cinétique 
\newcommand{\kdonne}[1]{%
	\ensuremath{%
		{\overset{\raisebox{-2pt}{\scriptsize #1}}{\ \,\longrightarrow\,\ }}%
	}%
}

%% Les configurations électroniques de quelques éléments.

\newcommand{\ConfigurationAzote}{\ensuremath{%
	\raisebox{0.5pt}{|}\,%
        \underset{\text{\normalsize $\cdot$}}%
        {\overset{\text{\raisebox{-1pt}{\normalsize $\cdot$}}}{N}}%
        \hskip1pt\cdot%
	}}
\newcommand{\ConfigurationOxygene}{\ensuremath{%
	\cdot\hskip1pt%
	\underset{\raisebox{2pt}{\text{\normalsize{$-$}}}}%
	{\overset{\raisebox{-2pt}{\text{\normalsize{$-$}}}}{O}}%
	\hskip1pt\cdot%
	}}
\newcommand{\ConfigurationCarbone}{\ensuremath{%
	\cdot\hskip1pt%
	\underset{\raisebox{2pt}{\text{\normalsize{$\cdot$}}}}%
	{\overset{\raisebox{-2pt}{\text{\normalsize{$\cdot$}}}}{C}}%
	\hskip1pt\cdot%
	}}
\newcommand{\ConfigurationHydrogene}{\ensuremath{H\hskip0.5pt\cdot}}

%% Pour dessiner les spins.

\newcommand{\spinup}{
        \begin{picture}(10,10)
        \put(2.5,2.5){$\uparrow$}
        \path(0,0)(10,0)(10,10)(0,10)(0,0) 
        \end{picture}
	}
\newcommand{\spindown}{
        \begin{picture}(10,10)
        \put(2.5,2.5){$\downarrow$}
        \path(0,0)(10,0)(10,10)(0,10)(0,0) 
        \end{picture}
	}
\newcommand{\spindouble}{
        \begin{picture}(10,10)
        \put(1,2.5){$\uparrow\!\downarrow$}
        \path(0,0)(10,0)(10,10)(0,10)(0,0) 
        \end{picture}
	}
\newcommand{\spinvide}{
        \begin{picture}(10,10)
        \path(0,0)(10,0)(10,10)(0,10)(0,0) 
        \end{picture}
	}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%                    %%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%   L'informatique   %%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%                    %%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Insérer un code source en précisant le nom de la version et le fichier
% à inclure.
% Exemple: \codesource{Version Caml}{PS/MP_INFO_X_1_2002__1.ml}
%\newcommand{\codesource}[2]{%
%	\medskip\noindent%
%	\textbf{#1}%
%	\verbatiminput{#2}%
%}
% Je modifie cette commande car depuis 2003, seules les versions Caml des
% corrigés sont proposées.
%\newcommand{\codesource}[1]{\medskip\noindent\verbatiminput{#1}}
\newcommand{\codesource}[1]{%
    \medskip\noindent%
    \NoAutoSpaceBeforeFDP%  Pas d'espace avant les ':' et ';'
    \verbatiminput{#1}%
    \AutoSpaceBeforeFDP%
    }



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%                          %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%   Les fautes de frappe   %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%                          %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\renewcommand{\mp}{\pm}
\renewcommand{\mp}{\errmessage{Commande interdite: utiliser \string\pm}}

