\NeedsTeXFormat{LaTeX2e} \ProvidesClass{remixExam} % classe de base \LoadClassWithOptions{exam} % extensions \RequirePackage{/media/documents/Cours/Prof/Enseignements/tools/style/base} \RequirePackage{/media/documents/Cours/Prof/Enseignements/tools/style/none_beamer} \RequirePackage{/media/documents/Cours/Prof/Enseignements/tools/style/theme} \RequirePackage{xifthen} %\RequirePackage{etoolbox} \RequirePackage{pdftexcmds} % Generalites % géométrie \RequirePackage{geometry} \geometry{left=20mm,right=20mm, top=15mm, bottom=20mm} % Calculatrice \newcommand{\noCalc}{{\centering \textbf{Calculatrice interdite} \par}} \newcommand{\Calc}{{\centering \textbf{Calculatrice autorisée} \par}} % Custumisation de la class Exam %% Document informations \newcommand{\op@entete}{} \newcommand{\op@soustitre}{\op@classe{} -- \@date{}} \newcommand{\op@typedoctmp}{} \newcommand{\op@typedoc}{} \newcommand{\op@classe}{} \newcommand{\op@titre}{} \newcommand{\op@duree}{} \newcommand{\op@sujet}{} \newcommand{\op@ptpres}{0} \newcommand{\classe}[1]{\renewcommand{\op@classe}{#1}} \newcommand{\titre}[1]{\renewcommand{\op@titre}{#1}} \newcommand{\duree}[1]{\renewcommand{\op@duree}{#1}} \newcommand{\sujet}[1]{\renewcommand{\op@sujet}{Sujet #1}} \newcommand{\ptpres}[1]{\renewcommand{\op@ptpres}{#1}} \newcommand{\typedoc}[1]{\renewcommand{\op@typedoctmp}{#1} %DS \ifthenelse{\equal{\op@typedoctmp}{DS}}% {\renewcommand{\op@typedoc}{Devoir surveillé: } \renewcommand{\op@soustitre}{\op@classe{} -- \@date{} -- Durée : \op@duree}% \renewcommand{\op@entete}{\@date}}{} %Correction DS \ifthenelse{\equal{\op@typedoctmp}{DSCorr}}% {\renewcommand{\op@typedoc}{Devoir surveillé (correction): } \renewcommand{\op@soustitre}{\op@classe{} -- \@date{} -- Correction}% \renewcommand{\op@entete}{\@date}}{} % Devoir maison \ifthenelse{\equal{\op@typedoctmp}{DM}}% {\renewcommand{\op@typedoc}{Devoir maison: } \renewcommand{\op@soustitre}{\op@classe{} -- À rendre le \@date}% \renewcommand{\op@entete}{À rendre le \@date}}{} % Correction devoir maison \ifthenelse{\equal{\op@typedoctmp}{DMCorr}}% {\renewcommand{\op@typedoc}{Devoir maison (correction): } \renewcommand{\op@soustitre}{\op@classe{} -- \@date{} -- Correction}% \renewcommand{\op@entete}{\@date}}{} % Examen \ifthenelse{\equal{\op@typedoctmp}{other}}% {\renewcommand{\op@typedoc}{} \renewcommand{\op@soustitre}{\op@classe{} -- \@date{}}% \renewcommand{\op@entete}{\@date}}{} } %% Redéfinition de maketitle \renewcommand{\maketitle}{% \noindent{\huge \color{title}\bfseries \op@typedoc \op@titre}\par \noindent{\color{line}\rule{\linewidth}{1ex}}\par \noindent{\color{subtitle}\bfseries \op@soustitre \hfill \large\op@sujet}\par \vspace{2.5\baselineskip} } % Page de garde \renewcommand{\titlepage}{% \begin{center} %~\\[1cm] \Huge \op@typedoc \op@titre \\ \Huge \op@classe\\[1cm] \LARGE \@date \\[1cm] \fbox{ \parbox{0.7\textwidth}{~\\[1cm] \large Épreuve de : \\ \Huge MATHÉMATIQUES \\ \Large Durée de l'épreuve: \op@duree % \ifprintanswers \Huge\center \textbf{Correction} \fi \\[1cm]} } ~\\[1cm] \normalsize Ce sujet comporte \numpages\, pages, numérotées de 1 / \numpages \; à \numpages / \numpages \\ Dès qu'il vous est remis, assurez-vous qu'il est complet. \\[0.5cm] L'utilisation de la calculatrice est autorisée.\\ L'échange de calculatrice entre les élèves est strictement interdit.\\ L'usage du dictionnaire n'est pas autorisé. \\[1cm] \pointtable[h][questions] ~\\[0.5cm] \ifthenelse{\equal{\op@ptpres}{0}}% {}% {\textbf{\op@ptpres\, points} sont réservés à la présentation et à la rédaction.} \end{center} \clearpage } %% Les en-tête et les pieds de pages \newcommand{\op@boiteentete}{\makebox[0pt][l]{\hspace*{-3ex}% \color{bgentete}\rule[-0.8ex]{\linewidth+6ex}{3ex}% }} \pagestyle{headandfoot} \header{\op@boiteentete\small\scshape\op@entete}{}{\small \op@titre} \footer{\scriptsize\op@classe{} -- \op@annee}{}{\scriptsize\thepage / \numpages} %% En tête de la première page \firstpageheader{}{}{} % Header de la première page \runningheader{\op@boiteentete\small\scshape\op@entete}{}{\small\op@typedoc \op@titre} % header des autres pages \firstpagefooter{\scriptsize\op@classe{} -- \op@annee}{}{\scriptsize\thepage / \numpages} % Footer de la première page \runningfooter{\scriptsize\op@classe{} -- \op@annee}{}{\scriptsize\thepage / \numpages} % footer des autres pages %% Questions and parts %%% Numbering \renewcommand{\thepartno}{\arabic{partno}} % numérotation de part \renewcommand{\thechoice}{\alph{choice}} % numérotation de choice \renewcommand{\thesubpart}{\alph{subpart}} % numérotation de subpart \renewcommand{\thesubsubpart}{\greeknum{subsubpart}} % numérotation de subsubpart %%% Display numbering \renewcommand{\partlabel}{\colorbox{exercice}{\color{highlightbg}\thepartno}} %\renewcommand{\choicelabel}{\color{exercice}\thechoice.}} %\newcommand{\partlabel}{\thepartno.} \renewcommand{\subpartlabel}{\color{exercice}\thesubpart.\color{text}} \renewcommand{\subsubpartlabel}{\color{exercice}\thesubsubpart)} %%% Reformat questions \qformat{\Large \textbf{\color{exercice}{Exercice \thequestion}} \hspace{0.5cm} \color{line}\hrulefill \hspace{0.5cm} \color{exercice} \thepoints} %%% Points table \addpoints \vqword{Éxercice} %% Saved solutions environment \newbox\allsolutions \setbox\allsolutions=\vbox{} \edef\iniq{} \edef\inip{} \edef\inisp{} \newenvironment{savedSolution} {% \ifprintanswers % s'il y a printanswers on veut que les solutions soient au milieu des questions. \begin{solution} \else \global\setbox\allsolutions=\vbox\bgroup \unvbox\allsolutions % à partir de là, on enregistre des truc dans la boite. Je suis pas convaincu que le truc avec minipage va bien marcher mais bon... \begin{minipage}{0.45\textheight} \ifnum\pdf@strcmp{\iniq}{\thequestion}=0 \else \Large \textbf{\color{exercice}{Exercice \thequestion}} \hspace{0.5cm} {\color{line}\hrulefill} \hspace{0.5cm} {\color{exercice} Solution} \normalsize \global\edef\iniq{\thequestion}% \fi \ifnum\pdf@strcmp{\inip}{\thepartno}=0 \else \partlabel \; \global\edef\inip{\thepartno}% \fi \ifnum\pdf@strcmp{\inisp}{\thesubpart}=0 \else \subpartlabel \; \global\edef\inisp{\thesubpart}% \fi% \fi% }% {% \ifprintanswers \end{solution} \else \end{minipage} \bigbreak \egroup \fi } \newcommand{\showallsolutions}{\par\unvbox\allsolutions}