diff --git a/data/templates/chemistry/base/style_extra.tex b/data/templates/chemistry/base/style_extra.tex index a248abb..1b8d98d 100644 --- a/data/templates/chemistry/base/style_extra.tex +++ b/data/templates/chemistry/base/style_extra.tex @@ -1,1294 +1,1294 @@ %%Package for tabular in openquestion \usepackage{array} %% Default values for open questions: \AMCopenOpts{lines=10,lineheight=2ex,framerulecol=black,dots=false} \newcommand{\letter}{A} \makeatletter \renewcommand{\theenumi}{\alph{enumi}} \renewcommand{\labelenumi}{(\theenumi)} \makeatother %% OpenBox commands ============================ \newcommand{\OpenBox}[1]{ \noindent \fbox{ \centering \begin{minipage}{.97\textwidth} ~ \vspace{#1} ~ \end{minipage} } } \newcommand{\FullPageOpenBox}{ \clearpage \OpenBox{24.5cm} % \vspace{-5mm} } \newcommand{\FullPageOpenBoxForever}{ \loop \ifnum \thepage < \totalPages \FullPageOpenBox \repeat } %% OpenGrid commands ============================ \newcommand{\OpenGrid}[1]{ \noindent \begin{tikzpicture} \draw[step=.5cm,lightgray] (0cm,0cm) grid (16.5cm,#1); \end{tikzpicture} } \newcommand{\FullPageOpenGrid}{ \clearpage \OpenGrid{24.5cm} %\vspace{-5mm} } \newcommand{\FullPageOpenGridForever}{ \loop \ifnum \thepage < \totalPages \FullPageOpenGrid \repeat } %% Extra sheets message \newcommand{\ExtraSheet}{\mbox{}\hfil\smash{\fbox{\scriptsize\quad Si vous avez besoin de place suppl\'ementaire, demandez une feuille quadrill\'ee \`a un des surveillants\quad}}}% %% 5 boxes correctors (0,1/4,1/2,3/4 and 1 * openquestionmax) ==================== \newcommand{\openquestionmax}{1} \newcommand{\correctorPointsPerGroup}[1]{ \renewcommand{\openquestionmax}{#1} } \newcommand{\correctorChoices}{\correctchoice[0]{}\scoring{b=0}\correctchoice[Y]{}\scoring{b=\openquestionmax/4}\correctchoice[X]{}\scoring{b=\openquestionmax/2}\correctchoice[W]{}\scoring{b=\openquestionmax*3/4}\correctchoice[V]{\qquad}\scoring{b=\openquestionmax}} \newcommand{\correctorOneFive}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax} #3~\\ -\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\makebox[218.6pt][c]{}} +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\makebox[301pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorTwoFive}[3][0]{ \par \noindent\begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*2} #3~\\ -\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\makebox[109.8pt][c]{}} +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\makebox[192.2pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorThreeFive}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\correctorChoices\makebox[1pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } %% 3 boxes correctors (0,1/2,and 1 * openquestionmax) ==================== \newcommand{\correctorChoicesSimple}{\correctchoice[0]{}\scoring{b=0}\correctchoice[Y]{}\scoring{b=\openquestionmax/2}\correctchoice[X]{}{\qquad}\scoring{b=\openquestionmax}} \newcommand{\correctorOneThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\makebox[340pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorTwoThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\makebox[260pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorThreeThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\makebox[180pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorFourThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\makebox[100pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } % Standard points correctors boxes =================================== \newcommand{\correctorChoicesOne}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \correctchoice[Y]{\tiny{1}\qquad}\scoring{1}} \newcommand{\correctorOne}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=1} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesOne}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwo}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \correctchoice[X]{\tiny{2}\qquad}\scoring{2}} \newcommand{\correctorTwo}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwo}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThree}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \correctchoice[W]{\tiny{3}\qquad}\scoring{3}} \newcommand{\correctorThree}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThree}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFour}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \correctchoice[V]{\tiny{4}\qquad}\scoring{4}} \newcommand{\correctorFour}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFour}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFive}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \correctchoice[U]{\tiny{5}\qquad}\scoring{5}} \newcommand{\correctorFive}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=5} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFive}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSix}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \wrongchoice[U]{\tiny{5}}\scoring{5} \correctchoice[T]{\tiny{6}\qquad}\scoring{6}} \newcommand{\correctorSix}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=6} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSix}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSeven}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \wrongchoice[U]{\tiny{5}}\scoring{5} \wrongchoice[T]{\tiny{6}}\scoring{6} \correctchoice[S]{\tiny{7}\qquad}\scoring{7}} \newcommand{\correctorSeven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=7} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSeven}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEight}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \correctchoice[R]{\tiny{8}\qquad}\scoring{8}} \newcommand{\correctorEight}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=8} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% %{\makebox[100ex][l]{\correctorChoicesEight}} {\makebox[0.9\linewidth][l]{\correctorChoicesEight}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNine}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \wrongchoice[R]{\tiny{8}}\scoring{8}\hspace{-0.5ex} \correctchoice[Q]{\tiny{9}\qquad}\scoring{9}} \newcommand{\correctorNine}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=9} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesNine}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTen}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \wrongchoice[R]{\tiny{8}}\scoring{8}\hspace{-0.5ex} \wrongchoice[Q]{\tiny{9}}\scoring{9}\hspace{-0.5ex} \correctchoice[P]{\tiny{10}\qquad}\scoring{10}} \newcommand{\correctorTen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=10} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTen}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEleven}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} \\ \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \correctchoice[O]{\tiny{11}}\scoring{11} \\ \end{tabular}}} \newcommand{\correctorEleven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesEleven\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelve}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} \\ & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \correctchoice[N]{\tiny{12}\qquad}\scoring{12} \\ \end{tabular}}} \newcommand{\correctorTwelve}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwelve\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirteen}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} \\ \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \correctchoice[M]{\tiny{13}}\scoring{13} \\ \end{tabular}}} \newcommand{\correctorThirteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=13} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} \\ & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \correctchoice[L]{\tiny{14}}\scoring{14} \\ \end{tabular}}} \newcommand{\correctorFourteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=14} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesFourteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFifteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} \\ \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \correctchoice[K]{\tiny{15}}\scoring{15} \\ \end{tabular}}} \newcommand{\correctorFifteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=15} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesFifteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSixteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} \\ \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \correctchoice[J]{\tiny{16}}\scoring{16} \end{tabular}}} \newcommand{\correctorSixteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=16} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesSixteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNineteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} \\ \wrongchoice[P]{\tiny{10}}\scoring{10}& \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15}& \wrongchoice[I]{\tiny{16}}\scoring{16} & \wrongchoice[H]{\tiny{17}}\scoring{17} & \wrongchoice[G]{\tiny{18}}\scoring{18} & \correctchoice[F]{\tiny{19}}\scoring{19} \\ \end{tabular}}} \newcommand{\correctorNineteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=19} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesNineteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwenty}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} \\ & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} & \wrongchoice[F]{\tiny{20}}\scoring{20} \\ \end{tabular}}} \newcommand{\correctorTwenty}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=20} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwenty\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyFive}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} \\ & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} \\ & \wrongchoice[F]{\tiny{20}}\scoring{20} & \wrongchoice[E]{\tiny{21}}\scoring{21} & \wrongchoice[D]{\tiny{22}}\scoring{22} & \wrongchoice[C]{\tiny{23}}\scoring{23} & \wrongchoice[B]{\tiny{24}}\scoring{24} & \wrongchoice[A]{\tiny{25}}\scoring{25} \\ \end{tabular}}} \newcommand{\correctorTwentyFive}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=25} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyFive\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirty}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} \\ & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} & \wrongchoice[F]{\tiny{20}}\scoring{20} \\ & \wrongchoice[E]{\tiny{21}}\scoring{21} & \wrongchoice[D]{\tiny{22}}\scoring{22} & \wrongchoice[C]{\tiny{23}}\scoring{23} & \wrongchoice[B]{\tiny{24}}\scoring{24} & \wrongchoice[A]{\tiny{25}}\scoring{25} & \wrongchoice[AY]{\tiny{26}}\scoring{26} & \wrongchoice[AX]{\tiny{27}}\scoring{27} & \wrongchoice[AW]{\tiny{28}}\scoring{28} & \wrongchoice[AV]{\tiny{29}}\scoring{29} & \correctchoice[AU]{\tiny{30}}\scoring{30} \\ \end{tabular}}} \newcommand{\correctorThirty}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=30} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirty\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } %% half points correctors boxes =================================== \newcommand{\correctorChoicesTwoHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \correctchoice[V]{\tiny{2}}\scoring{2} \\ \end{tabular}}} \newcommand{\correctorTwoHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwoHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThreeHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \correctchoice[T]{\tiny{3}}\scoring{3} \\ \end{tabular}}} \newcommand{\correctorThreeHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThreeHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \correctchoice[R]{\tiny{4}}\scoring{4} \\ \end{tabular}}} \newcommand{\correctorFourHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFourHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFiveHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \correctchoice[P]{\tiny{5}}\scoring{5} \\ \end{tabular}}} \newcommand{\correctorFiveHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=5} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFiveHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSixHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \correctchoice[N]{\tiny{6}}\scoring{6} \\ \end{tabular}}} \newcommand{\correctorSixHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=6} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSixHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSevenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} \\ & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \correctchoice[L]{\tiny{7}}\scoring{7} \\ \end{tabular}}} \newcommand{\correctorSevenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=7} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSevenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEightHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} \\ & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \correctchoice[J]{\tiny{8}}\scoring{8} \\ \end{tabular}}} \newcommand{\correctorEightHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=8} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesEightHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNineHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} \\ & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \correctchoice[H]{\tiny{9}}\scoring{9} \\ \end{tabular}}} \newcommand{\correctorNineHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=9} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesNineHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} \\ & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \correctchoice[F]{\tiny{10}}\scoring{10} \\ \end{tabular}}} \newcommand{\correctorTenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=10} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesElevenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} \\ & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \correctchoice[D]{\tiny{11}}\scoring{11} \\ \end{tabular}}} \newcommand{\correctorElevenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesElevenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelveHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} \\ & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \correctchoice[B]{\tiny{12}}\scoring{12} \\ \end{tabular}}} \newcommand{\correctorTwelveHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwelveHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} \\ & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \correctchoice[AY]{\tiny{13}}\scoring{13} \\ \end{tabular}}} \newcommand{\correctorThirteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=13} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThirteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} \\ & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \wrongchoice[AY]{\tiny{13}}\scoring{13} & \wrongchoice[AX]{\tiny{.5}}\scoring{13.5} & \correctchoice[AW]{\tiny{14}}\scoring{14} \\ \end{tabular}}} \newcommand{\correctorFourteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=14} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFourteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFifteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} \\ & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \wrongchoice[AY]{\tiny{13}}\scoring{13} & \wrongchoice[AX]{\tiny{.5}}\scoring{13.5} & \wrongchoice[AW]{\tiny{14}}\scoring{14} & \wrongchoice[AV]{\tiny{.5}}\scoring{14.5} & \correctchoice[AU]{\tiny{15}}\scoring{15} \\ \end{tabular}}} \newcommand{\correctorFifteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=15} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFifteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorStop}{ \bigskip \noindent } diff --git a/data/templates/chemistry/config/options.xml b/data/templates/chemistry/config/old_options.xml similarity index 100% copy from data/templates/chemistry/config/options.xml copy to data/templates/chemistry/config/old_options.xml diff --git a/data/templates/chemistry/config/options.xml b/data/templates/chemistry/config/options.xml index 9e66f38..55e2a56 100644 --- a/data/templates/chemistry/config/options.xml +++ b/data/templates/chemistry/config/options.xml @@ -1,61 +1,61 @@ <_modifie> <_modifie_ok>1 marges <preassoc> 0 cr data EXAM-catalog.pdf EXAM-sujet.pdf EXAM-calage.xy EXAM-corrige.pdf EMAIL Linear Algebra: test result Please find enclosed your annotated completed answer sheet. Best Regards. UTF-8 UTF-8 - ID,ROOM,SEQ,SCIPER,NAME,EMAIL,ROOM + ID,SCIPER,NAME,SECTION,EMAIL,ROOM ; 2 student.copy,student.key,student.name 1 a4 n latex EXAM-filtered.tex CSV SCIPER %PROJET/students.csv 1 pdflatex 0 normal 0.5 6 1 1 notes-common.xml 0 0 ALL STUDENTS 0.007 %PROJET/exam.tex %(ID) Score: %S/%M "%s/%m" diff --git a/data/templates/linear-algebra/base/style_extra.tex b/data/templates/linear-algebra/base/style_extra.tex index a248abb..1b8d98d 100644 --- a/data/templates/linear-algebra/base/style_extra.tex +++ b/data/templates/linear-algebra/base/style_extra.tex @@ -1,1294 +1,1294 @@ %%Package for tabular in openquestion \usepackage{array} %% Default values for open questions: \AMCopenOpts{lines=10,lineheight=2ex,framerulecol=black,dots=false} \newcommand{\letter}{A} \makeatletter \renewcommand{\theenumi}{\alph{enumi}} \renewcommand{\labelenumi}{(\theenumi)} \makeatother %% OpenBox commands ============================ \newcommand{\OpenBox}[1]{ \noindent \fbox{ \centering \begin{minipage}{.97\textwidth} ~ \vspace{#1} ~ \end{minipage} } } \newcommand{\FullPageOpenBox}{ \clearpage \OpenBox{24.5cm} % \vspace{-5mm} } \newcommand{\FullPageOpenBoxForever}{ \loop \ifnum \thepage < \totalPages \FullPageOpenBox \repeat } %% OpenGrid commands ============================ \newcommand{\OpenGrid}[1]{ \noindent \begin{tikzpicture} \draw[step=.5cm,lightgray] (0cm,0cm) grid (16.5cm,#1); \end{tikzpicture} } \newcommand{\FullPageOpenGrid}{ \clearpage \OpenGrid{24.5cm} %\vspace{-5mm} } \newcommand{\FullPageOpenGridForever}{ \loop \ifnum \thepage < \totalPages \FullPageOpenGrid \repeat } %% Extra sheets message \newcommand{\ExtraSheet}{\mbox{}\hfil\smash{\fbox{\scriptsize\quad Si vous avez besoin de place suppl\'ementaire, demandez une feuille quadrill\'ee \`a un des surveillants\quad}}}% %% 5 boxes correctors (0,1/4,1/2,3/4 and 1 * openquestionmax) ==================== \newcommand{\openquestionmax}{1} \newcommand{\correctorPointsPerGroup}[1]{ \renewcommand{\openquestionmax}{#1} } \newcommand{\correctorChoices}{\correctchoice[0]{}\scoring{b=0}\correctchoice[Y]{}\scoring{b=\openquestionmax/4}\correctchoice[X]{}\scoring{b=\openquestionmax/2}\correctchoice[W]{}\scoring{b=\openquestionmax*3/4}\correctchoice[V]{\qquad}\scoring{b=\openquestionmax}} \newcommand{\correctorOneFive}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax} #3~\\ -\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\makebox[218.6pt][c]{}} +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\makebox[301pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorTwoFive}[3][0]{ \par \noindent\begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*2} #3~\\ -\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\makebox[109.8pt][c]{}} +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\makebox[192.2pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorThreeFive}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\correctorChoices\makebox[1pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } %% 3 boxes correctors (0,1/2,and 1 * openquestionmax) ==================== \newcommand{\correctorChoicesSimple}{\correctchoice[0]{}\scoring{b=0}\correctchoice[Y]{}\scoring{b=\openquestionmax/2}\correctchoice[X]{}{\qquad}\scoring{b=\openquestionmax}} \newcommand{\correctorOneThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\makebox[340pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorTwoThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\makebox[260pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorThreeThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\makebox[180pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorFourThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\makebox[100pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } % Standard points correctors boxes =================================== \newcommand{\correctorChoicesOne}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \correctchoice[Y]{\tiny{1}\qquad}\scoring{1}} \newcommand{\correctorOne}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=1} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesOne}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwo}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \correctchoice[X]{\tiny{2}\qquad}\scoring{2}} \newcommand{\correctorTwo}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwo}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThree}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \correctchoice[W]{\tiny{3}\qquad}\scoring{3}} \newcommand{\correctorThree}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThree}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFour}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \correctchoice[V]{\tiny{4}\qquad}\scoring{4}} \newcommand{\correctorFour}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFour}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFive}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \correctchoice[U]{\tiny{5}\qquad}\scoring{5}} \newcommand{\correctorFive}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=5} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFive}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSix}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \wrongchoice[U]{\tiny{5}}\scoring{5} \correctchoice[T]{\tiny{6}\qquad}\scoring{6}} \newcommand{\correctorSix}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=6} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSix}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSeven}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \wrongchoice[U]{\tiny{5}}\scoring{5} \wrongchoice[T]{\tiny{6}}\scoring{6} \correctchoice[S]{\tiny{7}\qquad}\scoring{7}} \newcommand{\correctorSeven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=7} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSeven}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEight}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \correctchoice[R]{\tiny{8}\qquad}\scoring{8}} \newcommand{\correctorEight}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=8} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% %{\makebox[100ex][l]{\correctorChoicesEight}} {\makebox[0.9\linewidth][l]{\correctorChoicesEight}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNine}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \wrongchoice[R]{\tiny{8}}\scoring{8}\hspace{-0.5ex} \correctchoice[Q]{\tiny{9}\qquad}\scoring{9}} \newcommand{\correctorNine}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=9} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesNine}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTen}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \wrongchoice[R]{\tiny{8}}\scoring{8}\hspace{-0.5ex} \wrongchoice[Q]{\tiny{9}}\scoring{9}\hspace{-0.5ex} \correctchoice[P]{\tiny{10}\qquad}\scoring{10}} \newcommand{\correctorTen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=10} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTen}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEleven}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} \\ \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \correctchoice[O]{\tiny{11}}\scoring{11} \\ \end{tabular}}} \newcommand{\correctorEleven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesEleven\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelve}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} \\ & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \correctchoice[N]{\tiny{12}\qquad}\scoring{12} \\ \end{tabular}}} \newcommand{\correctorTwelve}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwelve\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirteen}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} \\ \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \correctchoice[M]{\tiny{13}}\scoring{13} \\ \end{tabular}}} \newcommand{\correctorThirteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=13} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} \\ & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \correctchoice[L]{\tiny{14}}\scoring{14} \\ \end{tabular}}} \newcommand{\correctorFourteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=14} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesFourteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFifteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} \\ \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \correctchoice[K]{\tiny{15}}\scoring{15} \\ \end{tabular}}} \newcommand{\correctorFifteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=15} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesFifteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSixteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} \\ \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \correctchoice[J]{\tiny{16}}\scoring{16} \end{tabular}}} \newcommand{\correctorSixteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=16} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesSixteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNineteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} \\ \wrongchoice[P]{\tiny{10}}\scoring{10}& \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15}& \wrongchoice[I]{\tiny{16}}\scoring{16} & \wrongchoice[H]{\tiny{17}}\scoring{17} & \wrongchoice[G]{\tiny{18}}\scoring{18} & \correctchoice[F]{\tiny{19}}\scoring{19} \\ \end{tabular}}} \newcommand{\correctorNineteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=19} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesNineteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwenty}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} \\ & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} & \wrongchoice[F]{\tiny{20}}\scoring{20} \\ \end{tabular}}} \newcommand{\correctorTwenty}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=20} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwenty\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyFive}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} \\ & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} \\ & \wrongchoice[F]{\tiny{20}}\scoring{20} & \wrongchoice[E]{\tiny{21}}\scoring{21} & \wrongchoice[D]{\tiny{22}}\scoring{22} & \wrongchoice[C]{\tiny{23}}\scoring{23} & \wrongchoice[B]{\tiny{24}}\scoring{24} & \wrongchoice[A]{\tiny{25}}\scoring{25} \\ \end{tabular}}} \newcommand{\correctorTwentyFive}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=25} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyFive\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirty}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} \\ & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} & \wrongchoice[F]{\tiny{20}}\scoring{20} \\ & \wrongchoice[E]{\tiny{21}}\scoring{21} & \wrongchoice[D]{\tiny{22}}\scoring{22} & \wrongchoice[C]{\tiny{23}}\scoring{23} & \wrongchoice[B]{\tiny{24}}\scoring{24} & \wrongchoice[A]{\tiny{25}}\scoring{25} & \wrongchoice[AY]{\tiny{26}}\scoring{26} & \wrongchoice[AX]{\tiny{27}}\scoring{27} & \wrongchoice[AW]{\tiny{28}}\scoring{28} & \wrongchoice[AV]{\tiny{29}}\scoring{29} & \correctchoice[AU]{\tiny{30}}\scoring{30} \\ \end{tabular}}} \newcommand{\correctorThirty}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=30} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirty\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } %% half points correctors boxes =================================== \newcommand{\correctorChoicesTwoHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \correctchoice[V]{\tiny{2}}\scoring{2} \\ \end{tabular}}} \newcommand{\correctorTwoHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwoHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThreeHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \correctchoice[T]{\tiny{3}}\scoring{3} \\ \end{tabular}}} \newcommand{\correctorThreeHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThreeHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \correctchoice[R]{\tiny{4}}\scoring{4} \\ \end{tabular}}} \newcommand{\correctorFourHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFourHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFiveHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \correctchoice[P]{\tiny{5}}\scoring{5} \\ \end{tabular}}} \newcommand{\correctorFiveHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=5} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFiveHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSixHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \correctchoice[N]{\tiny{6}}\scoring{6} \\ \end{tabular}}} \newcommand{\correctorSixHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=6} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSixHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSevenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} \\ & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \correctchoice[L]{\tiny{7}}\scoring{7} \\ \end{tabular}}} \newcommand{\correctorSevenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=7} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSevenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEightHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} \\ & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \correctchoice[J]{\tiny{8}}\scoring{8} \\ \end{tabular}}} \newcommand{\correctorEightHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=8} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesEightHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNineHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} \\ & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \correctchoice[H]{\tiny{9}}\scoring{9} \\ \end{tabular}}} \newcommand{\correctorNineHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=9} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesNineHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} \\ & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \correctchoice[F]{\tiny{10}}\scoring{10} \\ \end{tabular}}} \newcommand{\correctorTenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=10} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesElevenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} \\ & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \correctchoice[D]{\tiny{11}}\scoring{11} \\ \end{tabular}}} \newcommand{\correctorElevenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesElevenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelveHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} \\ & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \correctchoice[B]{\tiny{12}}\scoring{12} \\ \end{tabular}}} \newcommand{\correctorTwelveHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwelveHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} \\ & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \correctchoice[AY]{\tiny{13}}\scoring{13} \\ \end{tabular}}} \newcommand{\correctorThirteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=13} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThirteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} \\ & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \wrongchoice[AY]{\tiny{13}}\scoring{13} & \wrongchoice[AX]{\tiny{.5}}\scoring{13.5} & \correctchoice[AW]{\tiny{14}}\scoring{14} \\ \end{tabular}}} \newcommand{\correctorFourteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=14} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFourteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFifteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} \\ & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \wrongchoice[AY]{\tiny{13}}\scoring{13} & \wrongchoice[AX]{\tiny{.5}}\scoring{13.5} & \wrongchoice[AW]{\tiny{14}}\scoring{14} & \wrongchoice[AV]{\tiny{.5}}\scoring{14.5} & \correctchoice[AU]{\tiny{15}}\scoring{15} \\ \end{tabular}}} \newcommand{\correctorFifteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=15} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFifteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorStop}{ \bigskip \noindent } diff --git a/data/templates/maths/base/style_extra.tex b/data/templates/maths/base/style_extra.tex index a248abb..1b8d98d 100644 --- a/data/templates/maths/base/style_extra.tex +++ b/data/templates/maths/base/style_extra.tex @@ -1,1294 +1,1294 @@ %%Package for tabular in openquestion \usepackage{array} %% Default values for open questions: \AMCopenOpts{lines=10,lineheight=2ex,framerulecol=black,dots=false} \newcommand{\letter}{A} \makeatletter \renewcommand{\theenumi}{\alph{enumi}} \renewcommand{\labelenumi}{(\theenumi)} \makeatother %% OpenBox commands ============================ \newcommand{\OpenBox}[1]{ \noindent \fbox{ \centering \begin{minipage}{.97\textwidth} ~ \vspace{#1} ~ \end{minipage} } } \newcommand{\FullPageOpenBox}{ \clearpage \OpenBox{24.5cm} % \vspace{-5mm} } \newcommand{\FullPageOpenBoxForever}{ \loop \ifnum \thepage < \totalPages \FullPageOpenBox \repeat } %% OpenGrid commands ============================ \newcommand{\OpenGrid}[1]{ \noindent \begin{tikzpicture} \draw[step=.5cm,lightgray] (0cm,0cm) grid (16.5cm,#1); \end{tikzpicture} } \newcommand{\FullPageOpenGrid}{ \clearpage \OpenGrid{24.5cm} %\vspace{-5mm} } \newcommand{\FullPageOpenGridForever}{ \loop \ifnum \thepage < \totalPages \FullPageOpenGrid \repeat } %% Extra sheets message \newcommand{\ExtraSheet}{\mbox{}\hfil\smash{\fbox{\scriptsize\quad Si vous avez besoin de place suppl\'ementaire, demandez une feuille quadrill\'ee \`a un des surveillants\quad}}}% %% 5 boxes correctors (0,1/4,1/2,3/4 and 1 * openquestionmax) ==================== \newcommand{\openquestionmax}{1} \newcommand{\correctorPointsPerGroup}[1]{ \renewcommand{\openquestionmax}{#1} } \newcommand{\correctorChoices}{\correctchoice[0]{}\scoring{b=0}\correctchoice[Y]{}\scoring{b=\openquestionmax/4}\correctchoice[X]{}\scoring{b=\openquestionmax/2}\correctchoice[W]{}\scoring{b=\openquestionmax*3/4}\correctchoice[V]{\qquad}\scoring{b=\openquestionmax}} \newcommand{\correctorOneFive}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax} #3~\\ -\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\makebox[218.6pt][c]{}} +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\makebox[301pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorTwoFive}[3][0]{ \par \noindent\begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*2} #3~\\ -\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\makebox[109.8pt][c]{}} +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\makebox[192.2pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorThreeFive}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\correctorChoices\makebox[1pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } %% 3 boxes correctors (0,1/2,and 1 * openquestionmax) ==================== \newcommand{\correctorChoicesSimple}{\correctchoice[0]{}\scoring{b=0}\correctchoice[Y]{}\scoring{b=\openquestionmax/2}\correctchoice[X]{}{\qquad}\scoring{b=\openquestionmax}} \newcommand{\correctorOneThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\makebox[340pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorTwoThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\makebox[260pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorThreeThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\makebox[180pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorFourThree}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\makebox[100pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } % Standard points correctors boxes =================================== \newcommand{\correctorChoicesOne}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \correctchoice[Y]{\tiny{1}\qquad}\scoring{1}} \newcommand{\correctorOne}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=1} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesOne}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwo}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \correctchoice[X]{\tiny{2}\qquad}\scoring{2}} \newcommand{\correctorTwo}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwo}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThree}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \correctchoice[W]{\tiny{3}\qquad}\scoring{3}} \newcommand{\correctorThree}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThree}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFour}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \correctchoice[V]{\tiny{4}\qquad}\scoring{4}} \newcommand{\correctorFour}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFour}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFive}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \correctchoice[U]{\tiny{5}\qquad}\scoring{5}} \newcommand{\correctorFive}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=5} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFive}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSix}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \wrongchoice[U]{\tiny{5}}\scoring{5} \correctchoice[T]{\tiny{6}\qquad}\scoring{6}} \newcommand{\correctorSix}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=6} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSix}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSeven}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \wrongchoice[Y]{\tiny{1}}\scoring{1} \wrongchoice[X]{\tiny{2}}\scoring{2} \wrongchoice[W]{\tiny{3}}\scoring{3} \wrongchoice[V]{\tiny{4}}\scoring{4} \wrongchoice[U]{\tiny{5}}\scoring{5} \wrongchoice[T]{\tiny{6}}\scoring{6} \correctchoice[S]{\tiny{7}\qquad}\scoring{7}} \newcommand{\correctorSeven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=7} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSeven}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEight}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \correctchoice[R]{\tiny{8}\qquad}\scoring{8}} \newcommand{\correctorEight}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=8} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% %{\makebox[100ex][l]{\correctorChoicesEight}} {\makebox[0.9\linewidth][l]{\correctorChoicesEight}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNine}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \wrongchoice[R]{\tiny{8}}\scoring{8}\hspace{-0.5ex} \correctchoice[Q]{\tiny{9}\qquad}\scoring{9}} \newcommand{\correctorNine}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=9} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesNine}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTen}{ \wrongchoice[0]{\tiny{0}}\scoring{0}\hspace{-0.5ex} \wrongchoice[Y]{\tiny{1}}\scoring{1}\hspace{-0.5ex} \wrongchoice[X]{\tiny{2}}\scoring{2}\hspace{-0.5ex} \wrongchoice[W]{\tiny{3}}\scoring{3}\hspace{-0.5ex} \wrongchoice[V]{\tiny{4}}\scoring{4}\hspace{-0.5ex} \wrongchoice[U]{\tiny{5}}\scoring{5}\hspace{-0.5ex} \wrongchoice[T]{\tiny{6}}\scoring{6}\hspace{-0.5ex} \wrongchoice[S]{\tiny{7}}\scoring{7}\hspace{-0.5ex} \wrongchoice[R]{\tiny{8}}\scoring{8}\hspace{-0.5ex} \wrongchoice[Q]{\tiny{9}}\scoring{9}\hspace{-0.5ex} \correctchoice[P]{\tiny{10}\qquad}\scoring{10}} \newcommand{\correctorTen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=10} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTen}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEleven}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} \\ \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \correctchoice[O]{\tiny{11}}\scoring{11} \\ \end{tabular}}} \newcommand{\correctorEleven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesEleven\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelve}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} \\ & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \correctchoice[N]{\tiny{12}\qquad}\scoring{12} \\ \end{tabular}}} \newcommand{\correctorTwelve}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwelve\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirteen}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} \\ \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \correctchoice[M]{\tiny{13}}\scoring{13} \\ \end{tabular}}} \newcommand{\correctorThirteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=13} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} \\ & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \correctchoice[L]{\tiny{14}}\scoring{14} \\ \end{tabular}}} \newcommand{\correctorFourteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=14} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesFourteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFifteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} \\ \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \correctchoice[K]{\tiny{15}}\scoring{15} \\ \end{tabular}}} \newcommand{\correctorFifteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=15} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesFifteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSixteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} \\ \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \correctchoice[J]{\tiny{16}}\scoring{16} \end{tabular}}} \newcommand{\correctorSixteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=16} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesSixteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNineteen}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} \\ \wrongchoice[P]{\tiny{10}}\scoring{10}& \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15}& \wrongchoice[I]{\tiny{16}}\scoring{16} & \wrongchoice[H]{\tiny{17}}\scoring{17} & \wrongchoice[G]{\tiny{18}}\scoring{18} & \correctchoice[F]{\tiny{19}}\scoring{19} \\ \end{tabular}}} \newcommand{\correctorNineteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=19} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesNineteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwenty}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} \\ & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} & \wrongchoice[F]{\tiny{20}}\scoring{20} \\ \end{tabular}}} \newcommand{\correctorTwenty}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=20} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwenty\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyFive}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} \\ & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} \\ & \wrongchoice[F]{\tiny{20}}\scoring{20} & \wrongchoice[E]{\tiny{21}}\scoring{21} & \wrongchoice[D]{\tiny{22}}\scoring{22} & \wrongchoice[C]{\tiny{23}}\scoring{23} & \wrongchoice[B]{\tiny{24}}\scoring{24} & \wrongchoice[A]{\tiny{25}}\scoring{25} \\ \end{tabular}}} \newcommand{\correctorTwentyFive}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=25} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyFive\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirty}{ %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} \\ & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \wrongchoice[M]{\tiny{13}}\scoring{13} & \wrongchoice[L]{\tiny{14}}\scoring{14} & \wrongchoice[K]{\tiny{15}}\scoring{15} & \wrongchoice[J]{\tiny{16}}\scoring{16} & \wrongchoice[I]{\tiny{17}}\scoring{17} & \wrongchoice[H]{\tiny{18}}\scoring{18} & \wrongchoice[G]{\tiny{19}}\scoring{19} & \wrongchoice[F]{\tiny{20}}\scoring{20} \\ & \wrongchoice[E]{\tiny{21}}\scoring{21} & \wrongchoice[D]{\tiny{22}}\scoring{22} & \wrongchoice[C]{\tiny{23}}\scoring{23} & \wrongchoice[B]{\tiny{24}}\scoring{24} & \wrongchoice[A]{\tiny{25}}\scoring{25} & \wrongchoice[AY]{\tiny{26}}\scoring{26} & \wrongchoice[AX]{\tiny{27}}\scoring{27} & \wrongchoice[AW]{\tiny{28}}\scoring{28} & \wrongchoice[AV]{\tiny{29}}\scoring{29} & \correctchoice[AU]{\tiny{30}}\scoring{30} \\ \end{tabular}}} \newcommand{\correctorThirty}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=30} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirty\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } %% half points correctors boxes =================================== \newcommand{\correctorChoicesTwoHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \correctchoice[V]{\tiny{2}}\scoring{2} \\ \end{tabular}}} \newcommand{\correctorTwoHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwoHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThreeHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \correctchoice[T]{\tiny{3}}\scoring{3} \\ \end{tabular}}} \newcommand{\correctorThreeHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThreeHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \correctchoice[R]{\tiny{4}}\scoring{4} \\ \end{tabular}}} \newcommand{\correctorFourHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=4} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFourHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFiveHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \correctchoice[P]{\tiny{5}}\scoring{5} \\ \end{tabular}}} \newcommand{\correctorFiveHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=5} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFiveHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSixHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \correctchoice[N]{\tiny{6}}\scoring{6} \\ \end{tabular}}} \newcommand{\correctorSixHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=6} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSixHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesSevenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} \\ & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \correctchoice[L]{\tiny{7}}\scoring{7} \\ \end{tabular}}} \newcommand{\correctorSevenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=7} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSevenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEightHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} \\ & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \correctchoice[J]{\tiny{8}}\scoring{8} \\ \end{tabular}}} \newcommand{\correctorEightHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=8} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesEightHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesNineHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} \\ & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \correctchoice[H]{\tiny{9}}\scoring{9} \\ \end{tabular}}} \newcommand{\correctorNineHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=9} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesNineHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} \\ & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \correctchoice[F]{\tiny{10}}\scoring{10} \\ \end{tabular}}} \newcommand{\correctorTenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=10} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesElevenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} \\ & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \correctchoice[D]{\tiny{11}}\scoring{11} \\ \end{tabular}}} \newcommand{\correctorElevenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesElevenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelveHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} \\ & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \correctchoice[B]{\tiny{12}}\scoring{12} \\ \end{tabular}}} \newcommand{\correctorTwelveHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwelveHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} \\ & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \correctchoice[AY]{\tiny{13}}\scoring{13} \\ \end{tabular}}} \newcommand{\correctorThirteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=13} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesThirteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFourteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} \\ & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \wrongchoice[AY]{\tiny{13}}\scoring{13} & \wrongchoice[AX]{\tiny{.5}}\scoring{13.5} & \correctchoice[AW]{\tiny{14}}\scoring{14} \\ \end{tabular}}} \newcommand{\correctorFourteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=14} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFourteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesFifteenHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLLLLLLLLLLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \wrongchoice[V]{\tiny{2}}\scoring{2} & \wrongchoice[U]{\tiny{.5}}\scoring{2.5} & \wrongchoice[T]{\tiny{3}}\scoring{3} & \wrongchoice[S]{\tiny{.5}}\scoring{3.5} & \wrongchoice[R]{\tiny{4}}\scoring{4} & \wrongchoice[Q]{\tiny{.5}}\scoring{4.5} & \wrongchoice[P]{\tiny{5}}\scoring{5} & \wrongchoice[O]{\tiny{.5}}\scoring{5.5} & \wrongchoice[N]{\tiny{6}}\scoring{6} & \wrongchoice[M]{\tiny{.5}}\scoring{6.5} & \wrongchoice[L]{\tiny{7}}\scoring{7} & \wrongchoice[K]{\tiny{.5}}\scoring{7.5} \\ & \wrongchoice[J]{\tiny{8}}\scoring{8} & \wrongchoice[I]{\tiny{.5}}\scoring{8.5} & \wrongchoice[H]{\tiny{9}}\scoring{9} & \wrongchoice[G]{\tiny{.5}}\scoring{9.5} & \wrongchoice[F]{\tiny{10}}\scoring{10} & \wrongchoice[E]{\tiny{.5}}\scoring{10.5} & \wrongchoice[D]{\tiny{11}}\scoring{11} & \wrongchoice[C]{\tiny{.5}}\scoring{11.5} & \wrongchoice[B]{\tiny{12}}\scoring{12} & \wrongchoice[A]{\tiny{.5}}\scoring{12.5} & \wrongchoice[AY]{\tiny{13}}\scoring{13} & \wrongchoice[AX]{\tiny{.5}}\scoring{13.5} & \wrongchoice[AW]{\tiny{14}}\scoring{14} & \wrongchoice[AV]{\tiny{.5}}\scoring{14.5} & \correctchoice[AU]{\tiny{15}}\scoring{15} \\ \end{tabular}}} \newcommand{\correctorFifteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=15} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesFifteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorStop}{ \bigskip \noindent } diff --git a/local/stats/lib/lib_amcstats.php b/local/stats/lib/lib_amcstats.php index 8eadfa9..ca8a438 100755 --- a/local/stats/lib/lib_amcstats.php +++ b/local/stats/lib/lib_amcstats.php @@ -1,864 +1,864 @@ filename = $filename; $this->teacher = $teacher; $this->exam_points = $exam_points; $raw_data = file($this->filename, FILE_IGNORE_NEW_LINES); $this->raw_data = array(); foreach($raw_data as $line) { $line = array_map("clean_array", explode(';', $line)); $line = array_map("decimal_conversion", $line); $this->raw_data[] = $line; } $this->parseHeader(); $this->parseStudents($only_questions, $inverse_filter, $external); } public function getStudents() { return $this->students; } protected function parseHeader() { if (isset($this->raw_data[0])) //is_array($this->raw_data[0]) || is_object($this->raw_data[0])) { foreach($this->raw_data[0] as $col_id => $value) { // Analyse header from CSV file, based on content $item = array(); switch ($value) { case "ID": case "NAME": case "EMAIL": case "SECTION": case "Mark": $item['name'] = $value; $item['type'] = "info"; break; case "SCIPER": $item['name'] = $value; $item['type'] = "unique_id"; break; default: $item['name'] = $value; if (preg_match('/^TICKED:/', $value)) { $item['name'] = preg_replace('/^TICKED:/', '', $value); $item['type'] = "ticked"; } else { $item['type'] = "question"; $item['subtype'] = $this->guessSubtype($col_id); } } // Stats will be computed at a later stage $item['stats'] = null; $this->columns[] = $item; } } } protected function guessSubtype($col_id) { $subtype = null; $min_points = 0; $max_points = 0; $decimal = false; foreach($this->raw_data as $line) { if (preg_match('/\./', $line[$col_id])) $decimal = true; if ($line[$col_id] > $max_points) $max_points = $line[$col_id]; } //Tmp Global Issues //if ($max_points == 1)return 'mc'; else return 'tf'; //Tmp Euler //if ($max_points == 1)return 'mc'; else return 'open'; //return 'open'; // This only works for MATHS exams... - if ($decimal or $max_points > 3) { + if ($decimal or $max_points > 3) { // Only open questions have decimal points return 'open'; } if ($max_points == 3) return 'mc'; if ($max_points == 1) return 'tf'; return 'unknown'; } protected function getColIdByName($name) { foreach ($this->columns as $id => $col) if ($col['name'] == $name) return $id; throw new Exception('Column not found: '.$name); } protected function getColIdsByType($type, $name = null) { $ids = array(); if (is_null($name)) { foreach ($this->columns as $id => $col) if ($col['type'] == $type) $ids[] = $id; } else { foreach ($this->columns as $id => $col) if ($col['type'] == $type and $col['name'] == $name) $ids[] = $id; } if (count($ids) == 0) { if (is_null($name)) throw new Exception('Column type not found: '.$type); throw new Exception('Column type not found: '.$type.'/'.$name); } if (count($ids) == 1) return $ids[0]; return $ids; } protected function getQuestionNameByColId($id) { if (array_key_exists($id, $this->columns) and $this->columns[$id]['type'] == 'question') return $this->columns[$id]['name']; throw new Exception('Column not found, or is not a question: '.$id); } protected function getMaximumPointsByColId($id) { $maximum = 0.0; foreach($this->raw_data as $student) if ((float)$student[$id] > $maximum) $maximum = (float)$student[$id]; return $maximum; } protected function parseStudents($only_questions, $inverse_filter, $external) { foreach($this->raw_data as $line => $student) { if ($line == 0) continue; // skip header $data = array('teacher' => $this->teacher); foreach(array('ID', 'SCIPER', 'NAME', 'EMAIL', 'SECTION') as $key) { $data[$key] = $student[$this->getColIdByName($key)]; } // Get points $points = array(); $data['items'] = array(); foreach($this->getColIdsByType('question') as $col) { $item = array(); $item['name'] = $this->getQuestionNameByColId($col); // Should we filter this question ? if (is_null($only_questions) or (!$inverse_filter and in_array($item['name'], $only_questions)) or ($inverse_filter and !in_array($item['name'], $only_questions)) ) { // Take this question into account $item['points'] = (float)$student[$col]; $item['max_points'] = $this->getMaximumPointsByColId($col); if ($item['max_points'] == 0) { // Cancelled question ? Count it right for everyone $item['right'] = 1; } else { $item['right'] = max((float)($item['points']/$item['max_points']), 0.0); } $points[] = $item['points']; $item['ticked'] = $student[$this->getColIdsByType('ticked', $item['name'])]; $item['type'] = $this->columns[$col]['type']; $item['subtype'] = $this->columns[$col]['subtype']; $data['items'][] = $item; } } $data['total'] = array_sum($points); $data['present'] = (int)(array_sum(array_map("square", $points))>0); $data['exam_points'] = $this->exam_points; // Compute marks if ($data['present']) { $data['positive_total'] = (float)max($data['total'], 0.0); if (is_null($external)) { $data['mark6'] = (float)min($data['positive_total']/($this->exam_points)*5.0+1, 6.0); } else { $output = array(); exec("./".$external." ".$data['total'], $output); $data['mark6'] = (float)trim($output[0]); } $data['quarter_mark6'] = (float)round($data['mark6']*4.0, 0)/4.0; } else { $data['positive_total'] = 'n/a'; $data['mark6'] = 'abs'; $data['quarter_mark6'] = 'abs'; } if (preg_match('/^FAKE/', $data['SCIPER'])) { if ($data['present']) $data['type'] = 'unregistered'; else $data['type'] = 'unused'; } else $data['type'] = 'student'; $this->students[] = $data; } } } // Compare students on total (higher to lower) function cmp_total($a, $b) { if ($a['total'] == $b['total']) { return 0; } return ($a['total'] < $b['total']) ? 1 : -1; } class ExamCalcs { protected $dataset = null; protected $tmp_dataset = null; public function __construct($dataset = null) { $this->dataset = array(); if (!is_null($dataset)) $this->dataset = $dataset; } public function addFile($teacher, $teacher_file, $max_points, $only_questions = null, $inverse_filter = false, $external = null) { #echo "Adding $teacher ($teacher_file) to the dataset ($max_points points).\n"; $AR = new AmcReader($teacher_file, $teacher, $max_points, $only_questions, $inverse_filter, $external); $this->addDataSet($AR->getStudents()); } public function addDataSet($data) { if (is_array($data) || is_object($data)) { foreach ($data as $student) $this->dataset[] = $student; } } public function filterBySections($sections, $update = true) { $dataset = array(); foreach ($this->dataset as $student) { if (is_array($sections)) { if (in_array($student['SECTION'], $sections)) $dataset[] = $student; } else { if ($student['SECTION'] == $sections) $dataset[] = $student; } } if ($update) $this->dataset = $dataset; return $dataset; } public function filterByTeachers($teachers, $update = true) { $dataset = array(); foreach ($this->dataset as $student) { if (is_array($teachers)) { if (in_array($student['teacher'], $teachers)) $dataset[] = $student; } else { if ($student['teacher'] == $teachers) $dataset[] = $student; } } if ($update) $this->dataset = $dataset; return $dataset; } public function getTeachers() { $teachers = array(); foreach ($this->dataset as $student) { if (!in_array($student['teacher'], $teachers)) $teachers[] = $student['teacher']; } return $teachers; } public function getSections() { $sections = array(); foreach ($this->dataset as $student) { $section = $student['SECTION']; if (!in_array($section, $sections) and $section != 'XXX') $sections[] = $section; } return $sections; } public function getQuestionsTxt() { $questions = array(); $items = array(); foreach ($this->dataset[0]['items'] as $item){ $questions[] = $item['name']; echo $item['name']; } return $questions; } public function printStatsOnCommonItems() { // Sort dataset by points $dataset = $this->sortByTotalPoints(false); if (count($dataset) < 3) throw new Exception('Dataset is too small.'); // Get items from the first student $items = array(); foreach ($this->dataset[0]['items'] as $item) $items[] = $item['name']; foreach ($dataset as $student) { // Get items for current student $tmp_items = array(); foreach ($student['items'] as $item) $tmp_items[] = $item['name']; // Keep only items in both '$items' AND '$tmp_items' $items = array_intersect($items, $tmp_items); } // Now, filter items in the dataset $filtered_dataset = array(); foreach ($dataset as $student) { if (!$student['present']) continue; $filtered_items = array(); foreach ($student['items'] as $item) { if (in_array($item['name'], $items)) $filtered_items[] = $item; } if (count($filtered_items)) { $student['items'] = $filtered_items; $filtered_dataset[] = $student; } } $dataset = $filtered_dataset; if (count($dataset) < 3) throw new Exception('Dataset is too small.'); // Compute limits $nb_students = count($dataset); $twenty_seven = (int)($nb_students*27.0/100); $upper_stop = $twenty_seven-1; $lower_start = $nb_students-$twenty_seven+1; #echo "$nb_students / $twenty_seven / 0 -> $upper_stop / $lower_start -> $nb_students \n"; $stats = array(); foreach ($dataset as $i => $student) { foreach ($student['items'] as $item) { $name = $item['name']; if (!array_key_exists($name, $stats)) $stats[$name] = array( '27%' => $twenty_seven, 'upper' => 0, 'lower' => 0, 'valid' => null, 'ticked'=> null, 'ticked_count'=> 0, 'empty_count'=> 0, 'type' => null, 'subtype' => null, 'max_points' => null, ); $stats[$name]['max_points'] = $item['max_points']; $stats[$name]['type'] = $item['type']; $stats[$name]['subtype'] = $item['subtype']; // Initialise 'ticked' table if (is_null($stats[$name]['ticked'])) { switch ($stats[$name]['subtype']) { case 'mc': $stats[$name]['ticked'] = array( 'A' => 0, 'B' => 0, 'C' => 0, 'D' => 0, 'multiple' => 0); break; case 'tf': $stats[$name]['ticked'] = array( 'TRUE' => 0, 'FALSE' => 0, 'multiple' => 0); break; default: $stats[$name]['ticked'] = array(); break; } } // Count right answers if ($item['right'] > 0) { // Save valid answer if (is_null($stats[$name]['valid'])) { switch ($stats[$name]['subtype']) { case 'tf': if ($item['ticked'] == 'A') $stats[$name]['valid'] = 'TRUE'; else $stats[$name]['valid'] = 'FALSE'; break; case 'mc': $stats[$name]['valid'] = $item['ticked']; break; case 'open': $stats[$name]['valid'] = 'n/a'; break; default: $stats[$name]['valid'] = 'n/a'; break; } } // 'upper 27%' and 'lower 27%' counters switch ($stats[$name]['subtype']) { case 'mc': case 'tf': if ($i <= $upper_stop) $stats[$name]['upper']++; if ($i >= $lower_start) $stats[$name]['lower']++; break; case 'open': if ($i <= $upper_stop) $stats[$name]['upper'] += $item['points']; if ($i >= $lower_start) $stats[$name]['lower'] += $item['points']; break; } } // Count empty answers if (empty($item['ticked'])) { $stats[$name]['empty_count']++; } else { // Stats on non-empty answers $stats[$name]['ticked_count']++; if (strlen($item['ticked']) > 1) { $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], 'multiple'); } else { switch ($item['subtype']) { case 'tf': if ($item['ticked'] == 'A') $field = 'TRUE'; if ($item['ticked'] == 'B') $field = 'FALSE'; $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $field); break; case 'mc': $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $item['ticked']); break; default: $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $item['ticked']); break; } } } } } // Compute more stats $tmp = array(); foreach ($stats as $name => $stat) { // Discrimination index // For open questions, change the '27%' value. if ($stat['subtype'] == 'open'){ $stat['upper'] = $stat['upper']/$stat['27%']; $stat['lower'] = $stat['lower']/$stat['27%']; $stat['27%'] = $stat['max_points']; //$stat['27%']*$stat['max_points']; } $stat['DI'] = ($stat['upper']-$stat['lower'])/(1.0*$stat['27%']); // Calculate percentages $ticked_percentage = array(); foreach ($stat['ticked'] as $t => $n) { $ticked_percentage[$t] = array( 'n' => $n, '%' => (float)(100.0*$n/$stat['ticked_count']), 'valid' => (int)($t == $stat['valid'])); } $stat['ticked'] = $ticked_percentage; $tmp[$name] = $stat; } $stats = $tmp; // Print CSV $previous_subtype = null; $header = '"question_id","subtype","27 %","upper","lower","DI","count","valid"'; $headerOpen = '"question_id","subtype","question pts %","avg pts upper","avg pts lower","DI","count","valid"'; foreach ($stats as $name => $stat) { if ($stat['subtype'] != $previous_subtype) { #if (!is_null($previous_subtype)) echo "\n"; if ($stat['subtype'] == 'open'){ echo $headerOpen; } else { echo $header; } if ($stat['subtype'] != 'open') { foreach ($stat['ticked'] as $answer => $data) echo ",\"[$answer] count\""; foreach ($stat['ticked'] as $answer => $data) echo ",\"[$answer] %\""; } echo "\n"; $previous_subtype = $stat['subtype']; } echo "$name,{$stat['subtype']},{$stat['27%']},{$stat['upper']},{$stat['lower']},{$stat['DI']},{$stat['ticked_count']}"; if ($stat['subtype'] == 'open') { echo ",\"n/a\""; } else { foreach ($stat['ticked'] as $answer => $data) if ($data['valid'] == 1) echo ",\"$answer\""; foreach ($stat['ticked'] as $answer => $data) echo ",{$data['n']}"; foreach ($stat['ticked'] as $answer => $data) echo ",{$data['%']}"; } echo "\n"; } } public function printLatexHistoCommandsOnCommonItems() { // Sort dataset by points $dataset = $this->sortByTotalPoints(false); if (count($dataset) < 3) throw new Exception('Dataset is too small.'); // Get items from the first student $items = array(); foreach ($this->dataset[0]['items'] as $item) $items[] = $item['name']; foreach ($dataset as $student) { // Get items for current student $tmp_items = array(); foreach ($student['items'] as $item) $tmp_items[] = $item['name']; // Keep only items in both '$items' AND '$tmp_items' $items = array_intersect($items, $tmp_items); } // Now, filter items in the dataset $filtered_dataset = array(); foreach ($dataset as $student) { if (!$student['present']) continue; $filtered_items = array(); foreach ($student['items'] as $item) { if (in_array($item['name'], $items)) $filtered_items[] = $item; } if (count($filtered_items)) { $student['items'] = $filtered_items; $filtered_dataset[] = $student; } } $dataset = $filtered_dataset; if (count($dataset) < 3) throw new Exception('Dataset is too small.'); // Compute limits $nb_students = count($dataset); $twenty_seven = (int)($nb_students*27.0/100); $upper_stop = $twenty_seven-1; $lower_start = $nb_students-$twenty_seven+1; #echo "$nb_students / $twenty_seven / 0 -> $upper_stop / $lower_start -> $nb_students \n"; $stats = array(); foreach ($dataset as $i => $student) { foreach ($student['items'] as $item) { $name = $item['name']; $teacher = $student['teacher']; $name = $name . ";" . $teacher; if (!array_key_exists($name, $stats)) $stats[$name] = array( 'teacher' => null, 'valid' => null, 'ticked'=> null, 'ticked_count'=> 0, 'empty_count'=> 0, 'type' => null, 'subtype' => null, ); $stats[$name]['type'] = $item['type']; $stats[$name]['subtype'] = $item['subtype']; $stats[$name]['teacher'] = $student['teacher']; // Initialise 'ticked' table if (is_null($stats[$name]['ticked'])) { switch ($stats[$name]['subtype']) { case 'mc': $stats[$name]['ticked'] = array( 'A' => 0, 'B' => 0, 'C' => 0, 'D' => 0); break; case 'tf': $stats[$name]['ticked'] = array( 'TRUE' => 0, 'FALSE' => 0); break; default: $stats[$name]['ticked'] = array(); break; } } // Count right answers if ($item['right'] > 0) { // Save valid answer if (is_null($stats[$name]['valid'])) { switch ($stats[$name]['subtype']) { case 'tf': if ($item['ticked'] == 'A') $stats[$name]['valid'] = 'TRUE'; else $stats[$name]['valid'] = 'FALSE'; break; case 'mc': $stats[$name]['valid'] = $item['ticked']; break; case 'open': $stats[$name]['valid'] = 'n/a'; break; default: $stats[$name]['valid'] = 'n/a'; break; } } } // Count empty answers if (empty($item['ticked'])) { $stats[$name]['empty_count']++; } else { // Stats on non-empty answers $stats[$name]['ticked_count']++; if (strlen($item['ticked']) == 1) { switch ($item['subtype']) { case 'tf': if ($item['ticked'] == 'A') $field = 'TRUE'; if ($item['ticked'] == 'B') $field = 'FALSE'; $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $field); break; case 'mc': $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $item['ticked']); break; default: $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $item['ticked']); break; } } } } } // Compute more stats $tmp = array(); foreach ($stats as $name => $stat) { // Calculate percentages $ticked_percentage = array(); foreach ($stat['ticked'] as $t => $n) { $ticked_percentage[$t] = array( 'n' => $n, '%' => (float)(100.0*$n/$stat['ticked_count']), 'valid' => (int)($t == $stat['valid'])); } $stat['ticked'] = $ticked_percentage; $tmp[$name] = $stat; } $stats = $tmp; // Print CSV, by question, then teacher //histo colors $i = 0; foreach($this->getTeachers() as $teacher){ $i++; switch ($i) { case 1: echo "\\newcommand{\\" . $teacher . "}{\\textbf{" . $teacher . "}} \n"; break; case 2: echo "\\newcommand{\\" . $teacher . "}{{\color{red}\\textbf{" . $teacher . "}}} \n"; break; case 3: echo "\\newcommand{\\" . $teacher . "}{{\color{blue}\\textbf{" . $teacher . "}}} \n"; break; case 4: echo "\\newcommand{\\" . $teacher . "}{{\color{magenta}\\textbf{" . $teacher . "}}} \n"; break; case 5: echo "\\newcommand{\\" . $teacher . "}{{\color{cyan}\\textbf{" . $teacher . "}}} \n"; break; case 6: echo "\\newcommand{\\" . $teacher . "}{{\color{olive}\\textbf{" . $teacher . "}}} \n"; break; case 7: echo "\\newcommand{\\" . $teacher . "}{{\color{orange}\\textbf{" . $teacher . "}}} \n"; break; case 8: echo "\\newcommand{\\" . $teacher . "}{{\color{black}\\textbf{" . $teacher . "}}} \n "; break; } } echo " \n"; //histo teachers present students foreach($this->getTeachers() as $teacher){ echo "\\newcommand{\N" . $teacher . "}{" . $this->getTotStudentsByTeacher($teacher) . "} \n"; } echo " \n"; $items = array(); foreach ($this->dataset[0]['items'] as $item){ if($item['subtype'] != 'open'){ echo "\inputFR{" . $item['name'] . ".tex} \n"; foreach($this->getTeachers() as $teacher){ foreach ($stats as $name => $stat) { //echo "[" . $stat['teacher'] . " - " . $teacher . " | " . $name . " - " . $item['name'] . "]"; if($stat['teacher'] == $teacher && explode(';',$name)[0] == $item['name']){ echo "\histoQCM{\\" . $teacher . "}{\N" . $teacher . "}{" . $stat['ticked_count'] . "}"; foreach ($stat['ticked'] as $answer => $data) echo "{{$data['n']}}"; } } echo "\n"; } echo "\n"; echo "\n"; } } } public function sortByTotalPoints($update = true) { if ($update) { usort($this->dataset, "cmp_total"); return $this->dataset; } else { $dataset = $this->dataset; usort($dataset, "cmp_total"); return $dataset; } } public function getDataSet() { return $this->dataset; } protected function createAndIncrement($table, $field, $increment = 1) { if (!array_key_exists($field, $table)) { $table[$field] = 0; } $table[$field] += $increment; return $table; } public function getMarks() { $marks = array(); foreach($this->dataset as $student) { $tmp = array(); $tmp['teacher'] = $student['teacher']; $tmp['ID'] = $student['ID']; $tmp['SECTION'] = $student['SECTION']; $tmp['exam_points'] = $student['exam_points']; $tmp['total'] = $student['total']; $tmp['present'] = $student['present']; $tmp['SCIPER'] = $student['SCIPER']; $tmp['quarter_mark6'] = $student['quarter_mark6']; $marks[] = $tmp; } return $marks; } public function getTotStudentsByTeacher($teacher){ $nb_students = 0; foreach($this->dataset as $student){ if($student['teacher'] == $teacher && $student['present']){ $nb_students++; } } return $nb_students; } public function getQuestions() { $questions = array(); foreach($this->dataset as $student) { //print_r($student['items']); $tmp = array(); $tmp['teacher'] = $student['teacher']; $tmp['ID'] = $student['ID']; $tmp['SECTION'] = $student['SECTION']; $tmp['SCIPER'] = $student['SCIPER']; if (!$student['present']) { $tmp['present'] = "ABS"; } else { $tmp['present'] = 1; } $tmp['exam_points'] = $student['exam_points']; $tmp['total'] = $student['total']; # Stats on questions $tmp['nb_questions'] = count($student['items']); $tmp['not_answered'] = 0; $tmp['right'] = 0; $tmp['wrong'] = 0; foreach($student['items'] as $question) { if (empty($question['ticked'])) { // Question was not answered $tmp['not_answered'] += 1; } else { if ($question['right']) $tmp['right'] += 1; else $tmp['wrong'] += 1; } } $questions[] = $tmp; } return $questions; } public function getStats() { $stats = array(); # Presence $stats['presence'] = array(); $marks = array(); $stats['quarter_mark6'] = array( 'n' => 0, 'tot' => 0, 'average' => null, 'stddev' => null, 'median' => null); foreach($this->dataset as $student) { // Presence $stats['presence'] = $this->createAndIncrement($stats['presence'], 'total'); switch ($student['type']) { case 'student': if ($student['present']) { $stats['presence'] = $this->createAndIncrement($stats['presence'], 'present'); } else { $stats['presence'] = $this->createAndIncrement($stats['presence'], 'absent'); } break; case 'unused': $stats['presence'] = $this->createAndIncrement($stats['presence'], 'unsused'); break; default: $stats['presence'] = $this->createAndIncrement($stats['presence'], 'unknown'); } // Average if ($student['present']) $marks[] = $student['quarter_mark6']; } $stats['quarter_mark6']['n'] = count($marks); if ($stats['quarter_mark6']['n'] > 0) { $stats['quarter_mark6']['tot'] = array_sum($marks); $stats['quarter_mark6']['average'] = $stats['quarter_mark6']['tot']/$stats['quarter_mark6']['n']; $stats['quarter_mark6']['stddev'] = stats_standard_deviation($marks); if (count($marks) >=3) { sort($marks); $stats['quarter_mark6']['median'] = $marks[round(count($marks)/2)]; } else { $stats['quarter_mark6']['median'] = 'n/a'; } } else { $stats['quarter_mark6']['tot'] = 0; $stats['quarter_mark6']['average'] = 0; $stats['quarter_mark6']['stddev'] = 0; $stats['quarter_mark6']['median'] = 0; } // Distribution (of marks) $distribution = array(); for ($m = 1.0 ; $m <= 6.0 ; $m += 0.25) $distribution[(string)$m] = 0; $stats['distribution_total'] = 0; foreach ($marks as $mark) { $distribution[(string)$mark]++; $stats['distribution_total']++; } $stats['distribution'] = $distribution; $stats['distribution_percentage'] = array(); if ($stats['quarter_mark6']['n']) { foreach ($stats['distribution'] as $mark => $count) $stats['distribution_percentage'][$mark] = $count*100.0/$stats['distribution_total']; } else { $stats['distribution_percentage'] = $stats['distribution']; } return($stats); } } ?>