\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{trmarticle}[2012/04/02 v1.0 Classe pour articles]

\LoadClassWithOptions{article}
\RequirePackage{etex}



\DeclareOption{beamer}{\PassOptionsToPackage{beamer}{preambuleTrm}}


\DeclareOption{arabe}{\PassOptionsToPackage{arabe}{preambuleTrm}}

\DeclareOption{utf8}{\PassOptionsToPackage{utf8}{preambuleTrm}}

\DeclareOption{fourier}{\PassOptionsToPackage{fourier}{preambuleTrm}}
\DeclareOption{biblio}{\PassOptionsToPackage{biblio}{preambuleTrm}}

\ProcessOptions\relax




\RequirePackage{customtheorem}
\RequirePackage{xcolor,graphicx}
\RequirePackage{calc}
%\RequirePackage{enumitem}
\RequirePackage{ifthen}
\RequirePackage{multicol}
\RequirePackage{soul}
\RequirePackage{ifpdf}
\RequirePackage{fancyhdr}

\RequirePackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{shapes}

\RequirePackage{geometry}
\RequirePackage{titlesec}
\RequirePackage{titletoc}




\AtBeginDocument{%
   % définition de \Box si n'existe pas ; définit aussi \bigstar
   \def\original@Box{\not@base\Box}
   \ifx\Box\original@Box \RequirePackage{amssymb}\fi
   % définition de \proofname si n'existe pas
   \def\proofname{D\'emonstration}%
   % test du chargement de babel et de la langue (seul le français est pris en compte)
   \def\trmbook@french@language{french}
   \@ifpackageloaded{babel}
     {\ifx\bbl@main@language\trmbook@french@language\else
     \PackageWarning{babel}{le français est la seule langue prévue pour la classe trmbook ; charger babel avec l'option frenchb en dernier}{}
   \fi}
     {\ClassError{trmbookinfo2}{rajouter \string\usepackage[frenchb]\string{babel\string} à votre préambule}{}}
}

\def\ttl@straight@ii#1#2#3#4#5#6#7{%
  \ttl@assign\@tempskipa#3\relax\beforetitleunit
  \if@nobreak
    \ttl@titlespace{\@tempskipa}%
  \else
    \@ifundefined{#6break}%
      {\addpenalty{\@secpenalty}}%
      {\csname#6break\endcsname}%
    \@ifundefined{ttl@ps@\string#6}{}%
      {\PackageWarning{titlesec}{Page style in straight class ignored}}%
    \addvspace{\@tempskipa}%
    \ifdim\bottomtitlespace<\z@
    \else
      \begingroup
       \@tempskipb\pagegoal
       \@tempskipa\pagegoal
       \ttl@addstretch  % \relax if nobottomtitle*
       \advance\@tempskipa-\bottomtitlespace\relax % not a register
       \pagegoal\@tempskipa
       \def\@textbottom{\vskip\z@\@plus.0001fil}%
       \penalty9999
       \pagegoal\@tempskipb
      \endgroup
    \fi
  \fi
  \@afterindenttrue
  \ifcase#5 \@afterindentfalse\fi
  \ttl@assign\@tempskipb#4\relax\aftertitleunit
  \ttl@select{#6}{#1}{#2}{#7}%
  \ttl@finmarks
  \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}%
  \if@noskipsec
    \global\@nobreakfalse
    \everypar{%
      \if@noskipsec
        \global\@noskipsecfalse
        \clubpenalty\@M
        \hskip-\parindent
        \begingroup
          \@svsechd\unskip{\hspace{\@tempskipb}}%
        \endgroup
      \else
        \clubpenalty\@clubpenalty\everypar{}%
      \fi}%
  \else
    \par\nobreak
%    \vspace{\@tempskipb}% replace \vspace for \vskip to work correctly with \addvspace
    \vskip \@tempskipb
    \@afterheading
  \fi
  \ignorespaces}

% pour éviter un message d'erreur si on compile en dvi
\ifpdf
\else
  \def\pgfsyspdfmark#1#2#3{}
\fi

% pour s'assurer que addto est disponible même si babel n'est pas chargé
\def\addto#1#2{%
  \ifx#1\@undefined
    \def#1{#2}%
  \else
    \ifx#1\relax
      \def#1{#2}%
    \else
      {\toks@\expandafter{#1#2}%
        \xdef#1{\the\toks@}}%
    \fi
  \fi
}












% marges
\geometry{papersize={18.5cm,24.5cm}}
\geometry{margin=1cm,bottom=1.5cm}

% sauvegarde de l'indentation (pour les minipages)
\newlength{\originalparindent}
\setlength{\originalparindent}{\parindent}
% indentation à l'intérieur des chapitres
\newlength{\indentationcours}
\setlength{\indentationcours}{3.35cm}

% proondeur de numérotation
\setcounter{secnumdepth}{4}

% commande pour choisir la taille de police avec interligne automatique
\newcommand{\autofontsize}[1]{\fontsize{#1}{\dimexpr #1*1.2}}








% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% POLICES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% % définition d'une version spéciale de helvetica pour être sûr que
% % certains packages ne changent pas la taille (mathdesign le fait)

% % VERSION OT1

% \DeclareFontFamily{OT1}{trmphv}{}
% \DeclareFontShape{OT1}{trmphv}{m}{n}{
%    <-> phvr7t
% }{}
% \DeclareFontShape{OT1}{trmphv}{m}{sc}{
%    <-> phvrc7t
% }{}
% \DeclareFontShape{OT1}{trmphv}{m}{sl}{
%    <-> phvro7t
% }{}
% \DeclareFontShape{OT1}{trmphv}{mc}{n}{
%    <-> phvr7tn
% }{}
% \DeclareFontShape{OT1}{trmphv}{mc}{sc}{
%    <-> phvrc7tn
% }{}
% \DeclareFontShape{OT1}{trmphv}{mc}{sl}{
%    <-> phvro7tn
% }{}
% \DeclareFontShape{OT1}{trmphv}{b}{n}{
%    <-> phvb7t
% }{}
% \DeclareFontShape{OT1}{trmphv}{b}{sc}{
%    <-> phvbc7t
% }{}
% \DeclareFontShape{OT1}{trmphv}{b}{sl}{
%    <-> phvbo7t
% }{}
% \DeclareFontShape{OT1}{trmphv}{bc}{n}{
%    <-> phvb7tn
% }{}
% \DeclareFontShape{OT1}{trmphv}{bc}{sc}{
%    <-> phvbc7tn
% }{}
% \DeclareFontShape{OT1}{trmphv}{bc}{sl}{
%    <-> phvbo7tn
% }{}
% \DeclareFontShape{OT1}{trmphv}{m}{it}{<->ssub * trmphv/m/sl}{}
% \DeclareFontShape{OT1}{trmphv}{mc}{it}{<->ssub * trmphv/mc/sl}{}
% \DeclareFontShape{OT1}{trmphv}{bx}{n}{<->ssub * trmphv/b/n}{}
% \DeclareFontShape{OT1}{trmphv}{bx}{sc}{<->ssub * trmphv/b/sc}{}
% \DeclareFontShape{OT1}{trmphv}{bx}{sl}{<->ssub * trmphv/b/sl}{}
% \DeclareFontShape{OT1}{trmphv}{b}{it}{<->ssub * trmphv/b/sl}{}
% \DeclareFontShape{OT1}{trmphv}{bx}{it}{<->ssub * trmphv/b/it}{}
% \DeclareFontShape{OT1}{trmphv}{bc}{it}{<->ssub * trmphv/bc/sl}{}
% \DeclareFontShape{OT1}{trmphv}{m}{ui}{<->ssub * trmphv/m/it}{}
% \DeclareFontShape{OT1}{trmphv}{b}{ui}{<->ssub * trmphv/b/it}{}
% \DeclareFontShape{OT1}{trmphv}{bx}{ui}{<->ssub * trmphv/b/it}{}

% % VERSION T1

% \DeclareFontFamily{T1}{trmphv}{}
% \DeclareFontShape{T1}{trmphv}{m}{n}{
%    <-> phvr8t
% }{}
% \DeclareFontShape{T1}{trmphv}{m}{sc}{
%    <-> phvrc8t
% }{}
% \DeclareFontShape{T1}{trmphv}{m}{sl}{
%    <-> phvro8t
% }{}
% \DeclareFontShape{T1}{trmphv}{mc}{n}{
%    <-> phvr8tn
% }{}
% \DeclareFontShape{T1}{trmphv}{mc}{sc}{
%    <-> phvrc8tn
% }{}
% \DeclareFontShape{T1}{trmphv}{mc}{sl}{
%    <-> phvro8tn
% }{}
% \DeclareFontShape{T1}{trmphv}{b}{n}{
%    <-> phvb8t
% }{}
% \DeclareFontShape{T1}{trmphv}{b}{sc}{
%    <-> phvbc8t
% }{}
% \DeclareFontShape{T1}{trmphv}{b}{sl}{
%    <-> phvbo8t
% }{}
% \DeclareFontShape{T1}{trmphv}{bc}{n}{
%    <-> phvb8tn
% }{}
% \DeclareFontShape{T1}{trmphv}{bc}{sc}{
%    <-> phvbc8tn
% }{}
% \DeclareFontShape{T1}{trmphv}{bc}{sl}{
%    <-> phvbo8tn
% }{}
% \DeclareFontShape{T1}{trmphv}{m}{it}{<->ssub * trmphv/m/sl}{}
% \DeclareFontShape{T1}{trmphv}{mc}{it}{<->ssub * trmphv/mc/sl}{}
% \DeclareFontShape{T1}{trmphv}{bx}{n}{<->ssub * trmphv/b/n}{}
% \DeclareFontShape{T1}{trmphv}{bx}{sc}{<->ssub * trmphv/b/sc}{}
% \DeclareFontShape{T1}{trmphv}{bx}{sl}{<->ssub * trmphv/b/sl}{}
% \DeclareFontShape{T1}{trmphv}{b}{it}{<->ssub * trmphv/b/sl}{}
% \DeclareFontShape{T1}{trmphv}{bx}{it}{<->ssub * trmphv/b/it}{}
% \DeclareFontShape{T1}{trmphv}{bc}{it}{<->ssub * trmphv/bc/sl}{}

% % VERSION TS1

% \AtBeginDocument{%
% \@ifpackageloaded{textcomp}{%
% \DeclareFontFamily{TS1}{trmphv}{}
% \DeclareFontShape{TS1}{trmphv}{m}{n}{
%    <-> phvr8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{m}{sl}{
%    <-> phvro8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{m}{it}{
%    <-> phvro8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{mc}{n}{
%    <-> phvr8cn
% }{}
% \DeclareFontShape{TS1}{trmphv}{mc}{sl}{
%    <-> phvro8cn
% }{}
% \DeclareFontShape{TS1}{trmphv}{mc}{it}{
%    <-> phvro8cn
% }{}
% \DeclareFontShape{TS1}{trmphv}{b}{n}{
%    <-> phvb8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{bx}{n}{
%    <-> phvb8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{b}{sl}{
%    <-> phvbo8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{bx}{sl}{
%    <-> phvbo8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{b}{it}{
%    <-> phvbo8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{bx}{it}{
%    <-> phvbo8c
% }{}
% \DeclareFontShape{TS1}{trmphv}{bc}{n}{
%    <-> phvb8cn
% }{}
% \DeclareFontShape{TS1}{trmphv}{bc}{sl}{
%    <-> phvbo8cn
% }{}
% \DeclareFontShape{TS1}{trmphv}{bc}{it}{
%    <-> phvbo8cn
% }{}
% %  ne fonctionnent pas correctement ==> définis ci-dessus
% %\DeclareFontShape{TS1}{trmphv}{m}{it}{<->ssub * trmphv/m/sl}{}
% %\DeclareFontShape{TS1}{trmphv}{mc}{it}{<->ssub * trmphv/mc/sl}{}
% %\DeclareFontShape{TS1}{trmphv}{bx}{n}{<->ssub * trmphv/b/n}{}
% %\DeclareFontShape{TS1}{trmphv}{bx}{sl}{<->ssub * trmphv/b/sl}{}
% %\DeclareFontShape{TS1}{trmphv}{b}{it}{<->ssub * trmphv/b/sl}{}
% %\DeclareFontShape{TS1}{trmphv}{bx}{it}{<->ssub * trmphv/b/it}{}
% %\DeclareFontShape{TS1}{trmphv}{bc}{it}{<->ssub * trmphv/bc/sl}{}
% }
% }











%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% THÉORÈMES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% redefinition du format leftellipse pour compatibilite avec \setindent
\def\leftellipsetheorembegin{%
  \TestIfCmdExistsFromPackageWhenUsing{\tikzpicture}{tikz}{leftellipse}
  \TestIfTikZShapeLibraryLoadedFor{leftellipse}
% there should be a warning if used in two or more columns style
  \clearbeforetheorem\addvspace{\thetheorempreskip}%
  \noindent\hspace{\thetheoremleftmargin}%
  \setlength{\temptheoremlength}%
        {\linewidth-\thetheoremleftmargin-\thetheoremrightmargin}%
  \noindent\begin{minipage}{\temptheoremlength}%
  \begin{lrbox}{\temptheoremtextbox}%
     \begin{minipage}{0.95\linewidth}%
     {\formattheoremhead\thetheoremnote}%
     \parindent=\saveparindent\color{\thetheorembodycolor}%
     \formattheorembody}
\def\leftellipsetheoremend{%
   \end{minipage}\end{lrbox}%
   \begin{tikzpicture}
     \tikzstyle{titlebox}=[fill=\thetheorembodyfill, rectangle, 
                           inner sep=10pt, inner ysep=10pt]
     \tikzstyle{title}=[left=0.1cm,color=\thetheoremheadborder,
                        fill=\thetheoremheadfill,ellipse,draw,
                        very thick,text=\thetheoremheadcolor,
                        inner ysep=2pt]
     \node[titlebox] (textbox) at (0,0)
        {\usebox{\temptheoremtextbox}};
     \useasboundingbox (textbox);
     \draw[color=\thetheorembodyborder,very thick]
        (textbox.north west)--(textbox.south west);
     \node[title] at (textbox.west)
        {\makebox[2cm]{%
         % code un peu complexe pour la hauteur dans l'ellipse
         \raisebox{\depthof{\formattheoremhead p}/4
                            -\depthof{\formattheoremhead x}/4}%
         [0pt][0pt]{\formattheoremhead\thetheoremname
                       \thetheoremnumber}\vphantom{T}}%
        };
   \end{tikzpicture}\end{minipage}\par
   \addvspace{\thetheorempostskip}}

% on utilise \AtBeginDocument pour que les théorèmes soient définis après que hyperref ait été chargé (si l'utilisateur le souhaite), afin d'éviter des problèmes de "PDF Destination"
\AtBeginDocument{
%%%%%%%%%%% théorèmes, lemmes, corollaires, et propriétés %%%%%%%%%%%
\theoremformat{leftellipse}
%\theoremformat{leftellipse}% style des théorèmes
\theoremheadsize{\small}% noms des théorèmes en petit
\thmnote{#1\endgraf}% l'argument optionnel des théorèmes est sur une ligne à part au début des encadrés
\theoremfilledcolor{\resultcolor}% les théorèmes, lemmes, corollaires, propriétés sont en vert foncé
\theorembodyfont{\upshape}
% l'intérieur des théorèmes est en italique
\theoremskip{8pt plus 2pt minus 4pt}% n'utilise pas \topsep car \topsep devient nul à l'intérieur des listes avec frenchb
\newtheorem{theoreme}{Th\'eor\`eme}
\renewcommand{\thetheoreme}{ \arabic{theoreme}}
\newtheorem{lemme}{Lemme}
\renewcommand{\thelemme}{\arabic{lemme}}
\newtheorem{corollaire}{Corollaire}
\renewcommand{\thecorollaire}{\arabic{corollaire}}
\newtheorem{propriete}{Propri\'et\'e}
\renewcommand{\thepropriete}{\arabic{propriete}}
\newtheorem{proprietes}[propriete]{Propri\'et\'es}

%%%%%%%%%%% définitions %%%%%%%%%%%

\theoremfilledcolor{\othercolor}% les définitions sont en bleu
\newtheorem{definition}{D\'efinition}
\renewcommand{\thedefinition}{\arabic{definition}}

%%%%%%%%%%% exemples et remarques %%%%%%%%%%%

%\theoremstyle{standard}% on vide les définitions précédents
%\theorembodyfont{\upshape}% le texte du théorème est en droit
\theoremheadcolor{gray}% couleur bleu pour les exemples/remarques
\theoremfilledcolor{gray}%
\newtheorem*{idee}{Apart\'e}
\newtheorem*{idees}{Id\'ees}
\newtheorem*{probleme}{Probl\`eme}
\newtheorem*{recherche}{Recherche}
\newtheorem*{Idee}{Id\'ee}
\newtheorem*{NB}{\`A retenir}
\newtheorem*{extra}{Pour aller plus loin}
\newtheorem*{notation}{Notations}

%\theoremheadcolor{black}% couleur bleu pour les exemples/remarques
\theoremfilledcolor{gray}%
\theorembodyfill{gray!10}%
\theorembodyborder{gray}%
\newtheorem{exemple}{Exemple}
\newtheorem{exemples}{Exemples}



\theoremheadcolor{\dangercolor}% couleur bleu pour les exemples/remarques
\theoremfilledcolor{\dangercolor}
\newtheorem*{DANGER}{Danger}
\theoremfilledcolor{white!50!black}%
\theorembodyfill{white!90!black}%
\theorembodyborder{white!50!black}%
\newtheorem{remarque}{Remarque}
\newtheorem{remarques}{Remarques}
%%%%%%%%%%% listes dans certains théorèmes %%%%%%%%%%%

\newenvironment{sousexemples}{\begin{enumerate}[topsep=\parsep,itemsep=0pt,label=\textcolor{\othercolor}{\bfseries\alph*.}]}{\end{enumerate}}
\newenvironment{sousremarques}{\begin{enumerate}[topsep=\parsep,itemsep=0pt,label=\textcolor{\othercolor}{\bfseries\alph*.}]}{\end{enumerate}}
\newenvironment{sousproprietes}{\begin{enumerate}[topsep=\parsep,itemsep=0pt,label=\textcolor{\resultcolor}{\bfseries\alph*.}]}{\end{enumerate}}

%%%%%%%%%%% exercices %%%%%%%%%%%
\theoremstyle{break}% en remet à zéro les styles
\theorembodyfont{\upshape\small}% texte en droit dans les exercices
\thmnote{\color{\exercicecolor}\fontfamily{ugq}\selectfont \ #1 \endgraf}% l'argument optionnel des théorèmes est sur une ligne à part au début des encadrés
\thmname{}% pas de texte, juste le numéro de l'exercice
% on encadre les numéros d'exercices dans une boîte d'une largeur de 2 numéros
\thmnumber{\setlength{\fboxsep}{4pt}%
           \colorbox{\exercicecolor}{%
              \color{\exercicenegcolor}\fontfamily{ugq}\selectfont
              \makebox[\widthof{Exercice 00 - 00}-2pt]{#1}}}% < 100 exos/chaptitre
\theoremheadpunct{}% pas de ponctuation
\newtheorem{exercice}{Exercice}[section]
\renewcommand{\theexercice}{Exercice\ \arabic{exercice}}

% questions et sousquestion dans les exercices
\newenvironment{questions}{\begin{enumerate}[label=\textcolor{\exercicecolor}{\fontfamily{ugq}\selectfont\alph*.},leftmargin=*]}{\end{enumerate}}
\newenvironment{sousquestions}{\begin{enumerate}[label=\textcolor{\exercicecolor}{\fontfamily{ugq}\selectfont\roman*.},leftmargin=*]}{\end{enumerate}}


% commande annexe pour la difficulté des exercices (* = un peu plus dur, ** = plus dur, *** = dur) ; la macro \replicate{4}{*} fournira **** (autrement dit, imprime #1 fois #2)
\newcommand{\replicate}[2]{%
   \ifthenelse{#2=0}{}{#1\replicate{#1}{\number\numexpr#2-1 }}%
}
\newcommand{\difficulte}[1]{\textcolor{red}{\replicate{\raisebox{1pt}{\footnotesize$\bigstar$}}{#1}}}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%% DÉMONSTRATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% démonstration ; le carré de fin de démonstration laisse à désirer (trop basique, il faudrait adapter les commandes d'amsthm)
\newenvironment{demonstration}[1][\proofname]{\par\addvspace{\topsep}\noindent\textbf{\itshape\color{\resultcolor}#1.}\nobreakspace\ignorespaces}{\hfill$\Box$\par\addvspace{\topsep}}
% listes dans les démonstrations [est-ce la bonne façon de faire ?]
\newenvironment{sousdemonstration}{\begin{enumerate}[topsep=0pt,itemsep=0pt,label=\textcolor{\resultcolor}{\bfseries\alph*.}]}{\end{enumerate}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\gobblespaces}[1]{\ignorespaces#1}
%%%%%%%%%%% gestion de l'identation pour les chapitres %%%%%%%%%%%

\newlength{\originallinewidth}
\setlength{\originallinewidth}{\textwidth}
\newcommand{\setindent}[1]{%
\setlength{\linewidth}{\originallinewidth}%
\setlength{\leftmargin}{0cm}%
\setlength{\@totalleftmargin}{0cm}%
% le code suivant est la façon dont les listes font pour décaler le texte à gauche ; c'est juste une simple reprise
\@setpar{\if@newlist
             \advance\par@deathcycles \@ne
             \ifnum \par@deathcycles >\@m
               \@noitemerr
               {\@@par}%
             \fi
           \else
             {\@@par}%
           \fi}%
\setlength{\leftmargin}{#1}%
\addtolength{\linewidth}{-\leftmargin}%
\addtolength{\@totalleftmargin}{\leftmargin}%
\parshape \@ne \@totalleftmargin \linewidth}



%%%%%%%%%%% section non numéroté %%%%%%%%%%%

\newcommand{\sectioncmd}{}
\def\losangexsep{3pt}% espace à gauche et à droite du numéro dans le losange
\def\losangeysep{7pt}% espace en haut et en bas du numéro dans le losange
\def\losangeoutersep{8pt}% espace supplémentaire autour du numéro dans le losange
\def\thesectionnumberfont{\LARGE\fontfamily{ugq}\selectfont\color{\sectioncomplcolor}}
\def\thesectiontitlefont{\Large\fontfamily{ugq}\selectfont\color{\sectioncolor}}
\newlength{\losangewidth}% longeur pour le losange contenant le numéro de section
\def\losangeruleoverlap{0.5pt}% ajustement pour que la ligne grise masque le losange
\def\sectionxsep{5pt}% séparation à gauche et à droite du titre de section

\newcommand{\sectioncmdstar}[1]{%
\setindent{0cm}%
\begin{tikzpicture}
  % tire de la section
  \node[above right,inner xsep=\sectionxsep,inner ysep=0.5*\losangeoutersep] (titlebox)
      at (0,0)
      {\begin{minipage}{\linewidth-\sectionxsep*2}%
       \thesectiontitlefont#1\vphantom{p}\end{minipage}};
  % ligne sous le titre de section
  \draw[line width=1pt,color=\sectionrulecolor] (titlebox.south east)
     -- (titlebox.south west);
  \end{tikzpicture}%
}

%%%%%%%%%%% section numéroté %%%%%%%%%%%

\newcommand{\sectioncmdnostar}[1]{%
\setindent{0cm}%
\setlength{\losangewidth}{\widthof{\thesectionnumberfont
                   \hspace{\losangexsep}\arabic{section}%
                   \hspace{\losangexsep}\null}}%
\begin{tikzpicture}
  % taille du numéro (sert pour tracer le losange *dessous*)
  \node[above left,inner sep=0pt] (numberbox)
      at (0,\losangeoutersep)
      {\phantom{\thesectionnumberfont
                \hspace{\losangexsep}\arabic{section}%
                \hspace{\losangexsep}\null}};
  % tire de la section
  \node[above right,inner xsep=\sectionxsep,inner ysep=0.5*\losangeoutersep] (titlebox)
      at ($(numberbox.south east) + 
                (2*\losangeoutersep,-\losangeoutersep)$)
      {\begin{minipage}{\linewidth-\losangeoutersep*3%
                        -\losangewidth-\losangeruleoverlap*2-\sectionxsep*2}%
       \thesectiontitlefont#1\vphantom{p}\end{minipage}};
  % ombre du losange entourant le numéro
  \shade ($(numberbox.north west) + (0pt,\losangeysep)$)
      -- ($(numberbox.north east) + (\losangeoutersep,\losangeysep)$)
      -- ($(numberbox.south east) + 
                 (2*\losangeoutersep,-\losangeoutersep) $)
      -- ($(numberbox.south east) + (0pt,-\losangeoutersep)$)
      -- cycle;
  % losange entourant le numéro
  \filldraw[color=\sectioncolor]
     ($(numberbox.south west) + 
               (-\losangeoutersep,-\losangeoutersep)$)
      -- ($(numberbox.south east) + (0pt,-\losangeoutersep)$)
      -- ($(numberbox.north east) + (\losangeoutersep,\losangeysep)$) 
      -- ($(numberbox.north west) + (0pt,\losangeysep)$)
      -- cycle;
  % ligne sous le titre de section
  \draw[line width=1pt,color=\sectionrulecolor]
     ($(numberbox.south west) + 
          (-\losangeoutersep-\losangeruleoverlap,-\losangeoutersep)$)
     -- (titlebox.south east);
  % numéro de section
  \node[above left,inner sep=0pt]
     at (0,0.5*\losangeysep+0.5*\losangeoutersep)
     {\thesectionnumberfont
      \hspace{\losangexsep}\arabic{section}%
      \hspace{\losangexsep}\null};
  \end{tikzpicture}%
}%

% le document a deux modes :
%  - le mode normal pour le cours
%  - le mode exercice pour les exercices
% les sections et sous-sections ont une apparence différente dans les deux modes

% définition des sections et sous-sections en mode normal
\newcommand*{\modenormal}{%
\normalsize
\setindent{\indentationcours}% restaure, au besoin, l'identation
\titleformat{\section}[block]
  {\global\let\sectioncmd\sectioncmdstar}
  {\global\let\sectioncmd\sectioncmdnostar}
  {0pt}
  {\sectioncmd}
  {}
\titlespacing*{\section}{0em}{2em}{1em}
\titleformat{\subsection}
  {\fontfamily{ugq}\selectfont\mathversion{bold}\normalsize}
  {\colorbox{\sectioncolor!70}{\vphantom{0123456789jh}%
                   \color{\sectionnegcolor}\arabic{section}}%
   \colorbox{\sectioncolor}
            {\vphantom{0123456789jh}\color{\sectioncomplcolor}%
                   \arabic{subsection}}~~}
% note : le \vphantom{0123456789} est là car pour être sûr que tous les chiffres soient de la même hauteur (sinon les boîtes pourraient être de tailles différentes, ce qui est moche)
  {0em}
  {\gobblespaces}
  {}
\titlespacing*{\subsection}{0pt}{0.75em}{0.5em}
\titleformat{\subsubsection}
  {\fontfamily{ugq}\selectfont\mathversion{bold}\small}
  {\colorbox{\sectioncolor!50}{\vphantom{0123456789pgh}%
                   \color{\sectionnegcolor}\arabic{section}}%
   \colorbox{\sectioncolor!70}{\vphantom{0123456789pgh}%
                   \color{\sectionnegcolor}\arabic{subsection}}%
   \colorbox{\sectioncolor}
            {\vphantom{0123456789pgh}\color{\sectioncomplcolor}%
     \arabic{subsubsection}}~~}
  {0em}
  {\gobblespaces}
  {}
\titlespacing*{\subsubsection}{0pt}{1em}{0.25em}
\titleformat{\paragraph}
  {\fontfamily{ugq}\selectfont\mathversion{bold}\small}
  {\colorbox{\sectioncolor!30}{\vphantom{0123456789jh}%
                   \color{\sectionnegcolor}\arabic{section}}%
   \colorbox{\sectioncolor!50}{\vphantom{0123456789jh}%
                   \color{\sectionnegcolor}\arabic{subsection}}%
   \colorbox{\sectioncolor!70}
            {\vphantom{0123456789jh}\color{\sectionnegcolor}%
     \arabic{subsubsection}}\hspace{-0.25em}
\colorbox{\sectioncolor}
            {\vphantom{0123456789pgh}\color{\sectioncomplcolor}%
     \alph{paragraph}}~~}
  {0em}
  {\gobblespaces}
  {}
\titlespacing*{\paragraph}{0pt}{1em}{0.25em}
\normalsize
}
\AtBeginDocument{\modenormal}% on passe en mode normal au début du document

% commandes pour les titre de sections et sous-sections dans le mode exercice
\newcommand*{\boitetitresubsection}[1]{%
  \colorbox{\exercicecolor}{% le \rule est là pour ajuster la hauteur
     \makebox[\linewidth]{% le \vphantom{p} est là pour la profondeur
         \hfill\rule{0pt}{8pt}#1\vphantom{p}\hfill}}%
}
\newcommand*{\boitetitresection}[1]{%
  \colorbox{\exercicecolor}{% le \rule est là pour ajuster la hauteur
     \makebox[\linewidth]{\hfill\rule[-10pt]{0pt}{32pt}%
                          #1\hfill}}%
}

% mode spécial pour les exercices
\newcommand*{\modeexercice}{%
\clearpage
\small
\setindent{0cm}%
\titleformat{\section}[block]
  {\LARGE\color{\exercicecomplcolor}%
   \bfseries\fontfamily{ugq}\selectfont\mathversion{bold}}
  {}
  {0pt}
  {\boitetitresection}
  {}
\titlespacing*{\section}{0em}{0em}{1em}
\titleformat{\subsection}
  {\small\bfseries\color{\exercicenegcolor}%
   \fontfamily{ugq}\selectfont}
  {}%
  {0em}
  {\boitetitresubsection}
  {}
\titlespacing*{\subsection}{0pt}{1em}{0.5em}


\titleformat{\subsubsection}
  {\small\bfseries\color{\exercicecolor}%
   \fontfamily{ugq}\selectfont\mathversion{bold}}
  {}%
  {0em}
  {}
  {}
\titlespacing*{\subsubsection}{0pt}{1em}{0.5em}




\renewcommand{\theenumi}{\bfseries\color{\exercicecolor}\fontfamily{ugq}\selectfont\arabic{enumi}}
\renewcommand{\labelenumii}{\theenumi.}

\renewcommand{\theenumii}{\alph{enumii}}
\renewcommand{\labelenumii}{\bfseries\color{\exercicecolor}\fontfamily{ugq}\selectfont\theenumii.}
 
\small




}

% pour mettre la liste d'exercices en deux colonnes
\newenvironment{listeexercices}
  {\setlength{\columnsep}{20pt}\begin{multicols*}{2}}
  {\end{multicols*}}

% pas d'en-têtes ni de pieds de pages
% \pagestyle{fancy}
% \fancyhead{}
% \fancyfoot{}
% \fancyfoot[ro,le]{\thepage}
% \renewcommand{\headrulewidth}{0pt}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%% GESTION DES COULEURS %%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% éléments de personnalisation de la page de titre
\newcommand{\coverbackcolor}{white}% couleur du fond
\newcommand{\covercolor}{yellow!90!black}% couleur des cadres aux bord
\newcommand{\covernegcolor}{black}% couleur du texte

% éléments de personnalisation des pages de chapitre
\newcommand{\chapterbackcolor}{yellow!50}% couleur du fond
\newcommand{\chapternbcolor}{orange}% couleur nu numéro
\newcommand{\chaptertitlecolor}{red!30!black}% couleur du titre et du rectangle contenant "chapitre" et la biographie du chapitre
\newcommand{\chaptertextcolor}{yellow!80!black}% couleur du mot "chapitre" et du texte de la biographie

% éléments de personnalisation des sections
\newcommand{\sectioncolor}{white!20!black}% couleur de la section
\newcommand{\sectioncomplcolor}{white!60!black}% couleur du numéro principal de sectionnement
\newcommand{\sectionnegcolor}{white}% couleur du numéro secondaire de sectionnement
\newcommand{\sectionrulecolor}{white!50!black}% couleur du trait en dessous de la section

% éléments de personnalisation des exercices
\newcommand{\exercicecolor}{gray!50!black}% couleur des exercices
\newcommand{\exercicecomplcolor}{gray!30}% couleur du titre "exercice et problèmes"
\newcommand{\exercicenegcolor}{white}% couleur des sous-sections dans les exercices

% éléments de personnalisation des théorèmes
\newcommand{\resultcolor}{gray!60!black}% couleur des théorèmes de type résultats (théorème, corollaire, propriété, lemme)
\newcommand{\othercolor}{gray!50!black}% couleur des autres théorèmes (définition, exemple, remarque)
\newcommand{\dangercolor}{gray}% couleur des autres théorèmes (définition, exemple, remarque)

% commandes pour les en-tetes de chapitres et de sections
\newcommand{\chapterheadingsfont}[1]{{\scshape#1}}
\newcommand{\sectionheadingsfont}[1]{{\normalfont#1}}

\endinput
%%
%% End of file `trmbook.cls'.
