\makeatletter
\@ifundefined{stylecentrale}
{\@ifundefined{resetlevel}{\def\resetlevel{[section]}}{}}
{%
\renewcommand\thesection{\Roman{section}}%
\renewcommand\thesubsection{\thesection.\Alph{subsection}}%
\def\resetlevel{[subsection]}
}


\theoremstyle{plain}
\theoremheaderfont{\bfseries}
\theorembodyfont{\upshape}
\theoremseparator{. }
\theoremsymbol{}
\newtheorem*{important}{Important}
\newtheorem*{rappel}{Rappel}

\usepackage{xfrac}
\usepackage{xparse}
\usepackage{comment}
\usepackage{xr}

\newif\ifcorrige
\def\corr{\filigrane{\Huge CORRIG\'E --- CORRIG\'E}\global\corrigetrue\global\enoncefalse}
\newif\ifcorrigeseul
\def\corrseul{\filigrane{\Huge CORRIG\'E --- CORRIG\'E}\global\corrigeseultrue\global\enoncefalse}
\newif\ifenonce
\enoncetrue

\usepackage{xstring}
\let\basejobname\jobname
\IfEndWith{\jobname}{\detokenize{-ENONCE}}{\let\corr\relax\let\corrseul\relax\StrCut{\jobname}{\detokenize{-ENONCE}}\basejobname\dummy}{}
\IfEndWith{\jobname}{\detokenize{-PROF}}{\corr\let\corr\relax\let\corrseul\relax\StrCut{\jobname}{\detokenize{-PROF}}\basejobname\dummy}{}
\IfEndWith{\jobname}{\detokenize{-CORRIGE}}{\corrseul\let\corr\relax\let\corrseul\relax\StrCut{\jobname}{\detokenize{-CORRIGE}}\basejobname\dummy}{}

\def\pasenonce{
  \excludecomment{enonce}
  \excludecomment{qcmrep}
  }

\def\avecenonce{\newenvironment{enonce}{}{}
  \edef\@temp{\noexpand\newtheorem{question}{Question}\resetlevel}\@temp
  \newtheorem{qcm}{QCM}
  %
  \NewDocumentEnvironment{qcmrep}{o}
  {\IfValueT{##1}{\begingroup\setlength\columnseprule{0pt}\begin{multicols}{##1}}\begin{enumerate}\renewcommand\theenumi{\Alph{enumi}}}{\end{enumerate}\IfValueT{##1}{\end{multicols}\endgroup}}}


\def\setthe#1{\@ifnextchar[{\setthei{#1}}{}}
\def\setthei#1[#2]{%
\expandafter\let\expandafter\@temp\csname the#1\endcsname
\toks@\expandafter{\@temp}%
\expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand\csname the#2\endcsname\@thmcountersep\the\toks@}}



\AtBeginDocument{%
\ifcorrige
  \immediate\typeout{Mode professeur}
  \subtitle{Corrigé}
  \newenvironment{corrige}{\begin{mdframed}[backgroundcolor=gray!20, skipbelow=1ex]}{\end{mdframed}}
  \newenvironment{comcorrige}{\begin{mdframed}[backgroundcolor=gray!20, skipbelow=1ex]}{\end{mdframed}}
  \newenvironment{qcmcorr}{\begin{mdframed}[backgroundcolor=gray!20, skipbelow=1ex]}{\end{mdframed}}
  \avecenonce
\else\ifcorrigeseul
  \immediate\typeout{Mode corrige}
  %
  \let\real@xwmlastpage\r@xwmlastpage  % ne pas écraser ces labels depuis le fichier externe
  \let\real@lastpage\r@lastpage
  \let\r@xwmlastpage\relax
  \let\r@lastpage\relax
  \externaldocument{\basejobname-ENONCE}
  \let\r@xwmlastpage\real@xwmlastpage
  \let\r@lastpage\real@lastpage
%
  \subtitle{Corrigé}
  \pasenonce
  \edef\@temp{\noexpand\newcounter{question}\resetlevel}\@temp
  \specialcomment{question}{\refstepcounter{question}\begingroup\def\ProcessCutFile{}}{\endgroup}
  \newtheorem{corrige}{Question}
  \edef\@temp{\noexpand\setthe{question}\resetlevel}\@temp
  \let\thecorrige\thequestion
 % 
  \newcounter{qcm}
  \specialcomment{qcm}{\refstepcounter{qcm}\begingroup\def\ProcessCutFile{}}{\endgroup}
  \newtheorem{qcmcorr}{QCM}
  \let\theqcmcorr\theqcm
  \newenvironment{comcorrige}{}{}
\else
  \immediate\typeout{Mode enonce}
  \excludecomment{corrige}
  \excludecomment{comcorrige}
  \excludecomment{qcmcorr}
  \avecenonce  
\fi\fi
}

\DeclareInstance{xfrac}{cinqdemi}{text}{scale-factor=1, h-scale=1.25, slash-left-kern=-2.5pt, slash-right-kern=-2.25pt}

\def\cinqdemi{\sfrac[cinqdemi]{5}{2}}

\endinput