diff --git a/data/templates/chemistry/base/style_extra.tex b/data/templates/chemistry/base/style_extra.tex index 5fb0088..6e0c00d 100644 --- a/data/templates/chemistry/base/style_extra.tex +++ b/data/templates/chemistry/base/style_extra.tex @@ -1,1513 +1,1573 @@ %%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[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[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}{ \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} \wrongchoice[P]{\tiny{10}}\scoring{10}\hspace{-0.5ex} \correctchoice[O]{\tiny{11}}\scoring{11}} \newcommand{\correctorEleven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesEleven}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelve}{ \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} \wrongchoice[P]{\tiny{10}}\scoring{10}\hspace{-0.5ex} \wrongchoice[O]{\tiny{11}}\scoring{11}\hspace{-0.5ex} \correctchoice[N]{\tiny{12}\qquad}\scoring{12}} \newcommand{\correctorTwelve}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwelve}} \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{\correctorChoicesEightteen}{ %\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} & \correctchoice[G]{\tiny{18}}\scoring{18} \\ \end{tabular}}} \newcommand{\correctorEightteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=18} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesEightteen\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} & \correctchoice[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{\correctorChoicesTwentyOne}{ %\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} & \correctchoice[F]{\tiny{21}}\scoring{21} \\ \end{tabular}}} \newcommand{\correctorTwentyOne}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=21} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyOne\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyTwo}{ %\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}{llllllllllll} \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[G]{\tiny{18}}\scoring{18} & \wrongchoice[F]{\tiny{19}}\scoring{19} & \wrongchoice[E]{\tiny{20}}\scoring{20} & \wrongchoice[D]{\tiny{21}}\scoring{21} & \correctchoice[C]{\tiny{22}}\scoring{22} \\ \end{tabular}}} \newcommand{\correctorTwentyTwo}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=22} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyTwo\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyFour}{ %\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}{lllllllllllll} \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} & \correctchoice[B]{\tiny{24}}\scoring{24} \\ \end{tabular}}} \newcommand{\correctorTwentyFour}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=24} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyFour\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}{lllllllllllll} \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} & \correctchoice[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 } +\newcommand{\correctorChoicesThirtySix}{ + %\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[AA]{\tiny{26}}\scoring{26} & + \wrongchoice[AB]{\tiny{27}}\scoring{27} & + \wrongchoice[AC]{\tiny{28}}\scoring{28} & + \wrongchoice[AD]{\tiny{29}}\scoring{29} & + \wrongchoice[AE]{\tiny{30}}\scoring{30} + \\ + \wrongchoice[AF]{\tiny{31}}\scoring{31} & + \wrongchoice[AG]{\tiny{32}}\scoring{32} & + \wrongchoice[AH]{\tiny{33}}\scoring{33} & + \wrongchoice[AI]{\tiny{34}}\scoring{34} & + \wrongchoice[AL]{\tiny{35}}\scoring{35} & + \correctchoice[AM]{\tiny{36}}\scoring{36} & + +\end{tabular}}} +\newcommand{\correctorThirtySix}[3][0]{% + \par + \noindent + \begin{question}{#2}\bareme{MAX=36} + #3~\\ + \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ + \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirtySix\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{\correctorChoicesSixteenHalf}{ \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} \\ & \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} & \wrongchoice[AU]{\tiny{15}}\scoring{15} & \wrongchoice[AV]{\tiny{.5}}\scoring{15.5} & \correctchoice[AU]{\tiny{16}}\scoring{16} \\ \end{tabular}}} \newcommand{\correctorSixteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=16} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSixteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorStop}{ \bigskip \noindent } diff --git a/data/templates/chemistry/config/options.xml b/data/templates/chemistry/config/options.xml index 55e2a56..e610679 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,SCIPER,NAME,SECTION,EMAIL,ROOM + ID,SCIPER,NAME,SECTION,EMAIL ; 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 5fb0088..6e0c00d 100644 --- a/data/templates/linear-algebra/base/style_extra.tex +++ b/data/templates/linear-algebra/base/style_extra.tex @@ -1,1513 +1,1573 @@ %%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[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[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}{ \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} \wrongchoice[P]{\tiny{10}}\scoring{10}\hspace{-0.5ex} \correctchoice[O]{\tiny{11}}\scoring{11}} \newcommand{\correctorEleven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesEleven}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelve}{ \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} \wrongchoice[P]{\tiny{10}}\scoring{10}\hspace{-0.5ex} \wrongchoice[O]{\tiny{11}}\scoring{11}\hspace{-0.5ex} \correctchoice[N]{\tiny{12}\qquad}\scoring{12}} \newcommand{\correctorTwelve}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwelve}} \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{\correctorChoicesEightteen}{ %\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} & \correctchoice[G]{\tiny{18}}\scoring{18} \\ \end{tabular}}} \newcommand{\correctorEightteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=18} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesEightteen\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} & \correctchoice[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{\correctorChoicesTwentyOne}{ %\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} & \correctchoice[F]{\tiny{21}}\scoring{21} \\ \end{tabular}}} \newcommand{\correctorTwentyOne}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=21} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyOne\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyTwo}{ %\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}{llllllllllll} \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[G]{\tiny{18}}\scoring{18} & \wrongchoice[F]{\tiny{19}}\scoring{19} & \wrongchoice[E]{\tiny{20}}\scoring{20} & \wrongchoice[D]{\tiny{21}}\scoring{21} & \correctchoice[C]{\tiny{22}}\scoring{22} \\ \end{tabular}}} \newcommand{\correctorTwentyTwo}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=22} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyTwo\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyFour}{ %\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}{lllllllllllll} \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} & \correctchoice[B]{\tiny{24}}\scoring{24} \\ \end{tabular}}} \newcommand{\correctorTwentyFour}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=24} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyFour\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}{lllllllllllll} \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} & \correctchoice[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 } +\newcommand{\correctorChoicesThirtySix}{ + %\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[AA]{\tiny{26}}\scoring{26} & + \wrongchoice[AB]{\tiny{27}}\scoring{27} & + \wrongchoice[AC]{\tiny{28}}\scoring{28} & + \wrongchoice[AD]{\tiny{29}}\scoring{29} & + \wrongchoice[AE]{\tiny{30}}\scoring{30} + \\ + \wrongchoice[AF]{\tiny{31}}\scoring{31} & + \wrongchoice[AG]{\tiny{32}}\scoring{32} & + \wrongchoice[AH]{\tiny{33}}\scoring{33} & + \wrongchoice[AI]{\tiny{34}}\scoring{34} & + \wrongchoice[AL]{\tiny{35}}\scoring{35} & + \correctchoice[AM]{\tiny{36}}\scoring{36} & + +\end{tabular}}} +\newcommand{\correctorThirtySix}[3][0]{% + \par + \noindent + \begin{question}{#2}\bareme{MAX=36} + #3~\\ + \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ + \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirtySix\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{\correctorChoicesSixteenHalf}{ \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} \\ & \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} & \wrongchoice[AU]{\tiny{15}}\scoring{15} & \wrongchoice[AV]{\tiny{.5}}\scoring{15.5} & \correctchoice[AU]{\tiny{16}}\scoring{16} \\ \end{tabular}}} \newcommand{\correctorSixteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=16} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSixteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorStop}{ \bigskip \noindent } diff --git a/data/templates/linear-algebra/config/options.xml b/data/templates/linear-algebra/config/options.xml index 55e2a56..e610679 100644 --- a/data/templates/linear-algebra/config/options.xml +++ b/data/templates/linear-algebra/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,SCIPER,NAME,SECTION,EMAIL,ROOM + ID,SCIPER,NAME,SECTION,EMAIL ; 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/man/config/options.xml b/data/templates/man/config/options.xml index 55e2a56..e610679 100644 --- a/data/templates/man/config/options.xml +++ b/data/templates/man/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,SCIPER,NAME,SECTION,EMAIL,ROOM + ID,SCIPER,NAME,SECTION,EMAIL ; 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/maths/base/style_extra.tex b/data/templates/maths/base/style_extra.tex index 5fb0088..6e0c00d 100644 --- a/data/templates/maths/base/style_extra.tex +++ b/data/templates/maths/base/style_extra.tex @@ -1,1513 +1,1573 @@ %%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[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[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}{ \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} \wrongchoice[P]{\tiny{10}}\scoring{10}\hspace{-0.5ex} \correctchoice[O]{\tiny{11}}\scoring{11}} \newcommand{\correctorEleven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesEleven}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelve}{ \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} \wrongchoice[P]{\tiny{10}}\scoring{10}\hspace{-0.5ex} \wrongchoice[O]{\tiny{11}}\scoring{11}\hspace{-0.5ex} \correctchoice[N]{\tiny{12}\qquad}\scoring{12}} \newcommand{\correctorTwelve}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesTwelve}} \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{\correctorChoicesEightteen}{ %\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} & \correctchoice[G]{\tiny{18}}\scoring{18} \\ \end{tabular}}} \newcommand{\correctorEightteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=18} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesEightteen\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} & \correctchoice[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{\correctorChoicesTwentyOne}{ %\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} & \correctchoice[F]{\tiny{21}}\scoring{21} \\ \end{tabular}}} \newcommand{\correctorTwentyOne}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=21} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyOne\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyTwo}{ %\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}{llllllllllll} \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[G]{\tiny{18}}\scoring{18} & \wrongchoice[F]{\tiny{19}}\scoring{19} & \wrongchoice[E]{\tiny{20}}\scoring{20} & \wrongchoice[D]{\tiny{21}}\scoring{21} & \correctchoice[C]{\tiny{22}}\scoring{22} \\ \end{tabular}}} \newcommand{\correctorTwentyTwo}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=22} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyTwo\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwentyFour}{ %\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}{lllllllllllll} \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} & \correctchoice[B]{\tiny{24}}\scoring{24} \\ \end{tabular}}} \newcommand{\correctorTwentyFour}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=24} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyFour\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}{lllllllllllll} \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} & \correctchoice[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 } +\newcommand{\correctorChoicesThirtySix}{ + %\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[AA]{\tiny{26}}\scoring{26} & + \wrongchoice[AB]{\tiny{27}}\scoring{27} & + \wrongchoice[AC]{\tiny{28}}\scoring{28} & + \wrongchoice[AD]{\tiny{29}}\scoring{29} & + \wrongchoice[AE]{\tiny{30}}\scoring{30} + \\ + \wrongchoice[AF]{\tiny{31}}\scoring{31} & + \wrongchoice[AG]{\tiny{32}}\scoring{32} & + \wrongchoice[AH]{\tiny{33}}\scoring{33} & + \wrongchoice[AI]{\tiny{34}}\scoring{34} & + \wrongchoice[AL]{\tiny{35}}\scoring{35} & + \correctchoice[AM]{\tiny{36}}\scoring{36} & + +\end{tabular}}} +\newcommand{\correctorThirtySix}[3][0]{% + \par + \noindent + \begin{question}{#2}\bareme{MAX=36} + #3~\\ + \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ + \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirtySix\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{\correctorChoicesSixteenHalf}{ \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} \\ & \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} & \wrongchoice[AU]{\tiny{15}}\scoring{15} & \wrongchoice[AV]{\tiny{.5}}\scoring{15.5} & \correctchoice[AU]{\tiny{16}}\scoring{16} \\ \end{tabular}}} \newcommand{\correctorSixteenHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=16} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% {\makebox[0.9\linewidth][l]{\correctorChoicesSixteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorStop}{ \bigskip \noindent } diff --git a/data/templates/maths/config/options.xml b/data/templates/maths/config/options.xml index 55e2a56..e610679 100644 --- a/data/templates/maths/config/options.xml +++ b/data/templates/maths/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,SCIPER,NAME,SECTION,EMAIL,ROOM + ID,SCIPER,NAME,SECTION,EMAIL ; 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/local/stats/amcstats b/local/stats/amcstats index 0594cec..511492b 100755 --- a/local/stats/amcstats +++ b/local/stats/amcstats @@ -1,298 +1,298 @@ #!/usr/bin/env php Notes: - Script has be be executable (chmod +x). - INPUT: total points for the student as first parameter (can be negative if negative marking has been used) - OUTPUT: non-rounded mark, with '.' as decimal separator "; exit; } if (!empty($options['current-dir'])) { $total_points = $options['current-dir']; $filename = array(); foreach(scandir('./') as $f) if (preg_match('/\.csv$/', $f)) $filename[] = $f; if (count($filename)) { $csv = ""; $first = true; foreach($filename as $f) { if (!$first) $csv .= ','; $csv .= ucfirst(preg_replace('/\.csv$/', '', $f)); $csv .= "/$f/$total_points"; $first = false; } } else { echo "No AMC stat files found in this directory.\n"; exit; } } $only_questions = null; if (!empty($options['only-questions'])) { $filename = $options['only-questions']; if(!is_file($filename)) { echo "File not found: $filename\n"; exit; } $only_questions = file($filename, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES); } $external = null; if (!empty($options['external'])) { $external = $options['external']; if(!is_file($external)) { echo "External script/exec not found: $external\n"; exit; } } $inverse_filter = false; if (array_key_exists('inverse-filter', $options)) { $inverse_filter = true; } if (!empty($options['csv'])) $csv = $options['csv']; if (!empty($options['sample'])) $samples = explode(',', $options['sample']); else $samples = array( 'global'); if (!empty($options['type'])) $types = explode(',', $options['type']); else $types = array( 'average' ); // Create ExamCalcs object $Global = new ExamCalcs(); // Load files $loaded = array(); foreach(explode(',', $csv) as $file_info) { $details = explode('/', $file_info); if (count($details) < 3 ) { echo "CSV file list should look like: tournesol/tournesol.csv/30[,favre@favre.csv@29,...]\n"; exit; } $name = $details[0]; $filename = $details[1]; $total = $details[2]; if(!is_file($filename)) { echo "File not found: $filename\n"; exit; } if (in_array($filename, $loaded)) { echo "Trying to load $filename a second time...\n"; exit; } $Global->addFile($name, $filename, $total, $only_questions, $inverse_filter, $external); $loaded[] = $filename; } foreach ($types as $type) { // Build samples foreach ($samples as $sample) { // Print header $sample_header = strtoupper($sample); switch ($type) { case 'average': printAverage($sample_header); break; case 'dist': case 'dist_percentage': printDistribution($sample_header); break; case 'marks': break; } // Build samples $Samples = array(); switch ($sample) { case 'global': $Samples['global'] = new ExamCalcs($Global->getDataSet()); break; case 'sections': foreach ($Global->getSections() as $section) { $tmpSample = new ExamCalcs($Global->getDataSet()); $tmpSample->filterBySections($section); $Samples[$section] = $tmpSample; } break; case 'profs': foreach ($Global->getTeachers() as $teacher) { $tmpSample = new ExamCalcs($Global->getDataSet()); $tmpSample->filterByTeachers($teacher); $Samples[$teacher] = $tmpSample; } break; } // Print stats $is_first = true; foreach ($Samples as $name => $S) { if (!$is_first) echo "\n"; else $is_first = false; $stats = $S->getStats(); switch ($type) { case 'average': printAverage($name, $stats); break; case 'dist_percentage': printDistribution($name, $stats, true); break; case 'dist': printDistribution($name, $stats); break; case 'discrimination': echo "\"STATS ON QUESTIONS: ".strtoupper($name)."\"\n"; try { $S->printStatsOnCommonItems(); } catch (Exception $e) { echo "\"Not enough data\"\n"; } break; case 'marks': $marks = $S->getMarks(); foreach ($marks as $student) { echo implode(',', $student)."\n"; } break; case 'questions': $questions = $S->getQuestions(); foreach ($questions as $student) { echo implode(',', $student)."\n"; } break; case 'latex_histo': echo "\"LATEX HISTO COMMANDS: ".strtoupper($name)."\"\n"; try { $S->printLatexHistoCommandsOnCommonItems(); } catch (Exception $e) { echo "\"Not enough data\"\n"; } break; } } } } exit; ?> diff --git a/local/stats/lib/lib_amcstats_new.php b/local/stats/lib/lib_amcstats_new.php new file mode 100755 index 0000000..60f268d --- /dev/null +++ b/local/stats/lib/lib_amcstats_new.php @@ -0,0 +1,980 @@ +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_new($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) { + //echo $line[$col_id]; + 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... + + //Tmp mc 5 points + //if ($max_points == 5) return 'mc'; + + //K. Mulleners + //if ($max_points == 1) return 'mc'; + //return 'open'; + + //Droit archi + //return 'mc'; + + + if ($decimal or $max_points > 3) { + // Only open questions have decimal points + return 'open'; + } + + //if ($max_points == 2) return 'mc'; + if ($max_points == 3) return 'mc'; + if ($max_points == 1) return 'tf'; + + return 'open'; + } + + protected function guessSubtype_new($col_id) { + $subtype = null; + $min_points = 0; + $max_points = 0; + $decimal = false; + + //get first line header and question ids + $line = $this->raw_data[0]; + + //find question tex file + $dir = dirname(getcwd())."/*.tex"; + + foreach(glob($dir) as $tex_file) + { + + if( !empty($line[$col_id]) && strpos(file_get_contents($tex_file),$line[$col_id]) !== false) { + + $tex_lines = file($tex_file); + + $lineNum = 0; + foreach ($tex_lines as $tex_line) { + + if (strpos($tex_line, $line[$col_id]) !== false) { + if (strpos($tex_line,"{questionmult}") !== false) { + return 'mcm'; + } else if (strpos($tex_line,"\corrector") !== false) { + return 'open'; + } else { + + $tmp_file = fopen($tex_file,"r"); + $tmp_lineNum = 0; + + while(! feof($tmp_file)) { + $tmp_line = fgets($tmp_file); + //echo "\n".$line[$col_id].";"; + if ( $tmp_lineNum >= $lineNum ) { + if (strpos($tmp_line, "\FALSE") !== false || strpos($tmp_line, "\TRUE") !== FALSE){ + return 'tf'; + } + } + + $tmp_lineNum++; + } + + fclose($tmp_file); + return 'mc'; + } + } + $lineNum++; + } + echo basename($tex_file); + } + } + + echo "\n"; + + + } + + 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 'mcm': + $stats[$name]['ticked'] = array( 'A' => 0, 'B' => 0, 'C' => 0, 'D' => 0, 'E' => 0, 'F' => 0, 'G' => 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 'mcm': + $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 'mcm': + if ($i <= $upper_stop) $stats[$name]['upper'] += $item['points']; + if ($i >= $lower_start) $stats[$name]['lower'] += $item['points']; + break; + 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; + case 'mcm': + $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 + + // NA if stat 27% is zero + if ($stat['27%'] == 0){ + $stat['upper'] = "NA"; + $stat['lower'] = "NA"; + $stat['27%'] = "NA"; + $stat['DI'] = "NA"; + }else{ + + // For open and mcm questions, change the '27%' value. + if ($stat['subtype'] == 'open' || $stat['subtype'] == 'mcm'){ + $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"'; + $headerOpenMcm = '"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 "\n".$headerOpenMcm; + } else { + echo "\n".$header; + } + if ($stat['subtype'] != 'open' || $stat['subtype'] == 'mcm') { + 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"; + } + + echo "\n\n"; + + } + + public function printLatexHistoCommandsOnCommonItems() { + echo "test"; + // 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 'mcm': + $stats[$name]['ticked'] = array( 'A' => 0, 'B' => 0, 'C' => 0, 'D' => 0, 'E' => 0, 'F' => 0, 'G' => 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 'mcm': + $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; + case 'mcm': + $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) { +// if($stat['teacher'] == $teacher){ +// echo $name . " - " . $item['name']; +// } + //echo "[" . $stat['teacher'] . " - " . $teacher . " | " . $name . " - " . $item['name'] . "]"; + + if($stat['teacher'] == $teacher && explode(';',$name)[0] == $item['name']){ + + if (strpos($item['name'], 'TF') !== false) { + echo "\histoTF{\\" . $teacher . "}{\N" . $teacher . "}{" . $stat['ticked_count'] . "}"; + }else{ + 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); + } + +} + +?>