diff --git a/amc-templates/amc_template.zip b/amc-templates/amc_template.zip index b6b01d1..33dd629 100644 Binary files a/amc-templates/amc_template.zip and b/amc-templates/amc_template.zip differ diff --git a/amc-templates/amc_template/README b/amc-templates/amc_template/README index dfd03d2..454c008 100644 --- a/amc-templates/amc_template/README +++ b/amc-templates/amc_template/README @@ -1,34 +1,34 @@ Quick template user guide: -------------------------- 1) Place your QCM & TF questions in the 'questions/[language]/' subfolder(s). 2) Place your media files (if any) in the 'media/lang/' subfolders. In your "\includegraphics" commands in your question files, prefix your path with the same folder name. e.g.: \includegraphics[width=0.5\textwidth]{media/fr/BarreQuiGlisse2.eps} 3) Place your open questions in 'extra_section.tex' file. 4) Edit the 'exam.tex' file and add your questions within the "{document}" environment with an "\input" command. [...] \begin{document} \input{./questions/fr/mc1.tex} \input{./questions/fr/tf1.tex} \input{./extra_section.tex} \end{document} 5) In a Linux or MacOS terminal : - run "./build.sh" to build the PDF - run "./clean.sh" to remove the temporary files and PDF Notes: ------ * For extra packages please add them in the file 'packages.tex' * For extra commands please add them in the file 'commands.tex' -* QCM & TF questions will be mixed by type with the final AMC compilation ! +* QCM & TF questions will be mixed by type when compiling the final exam with AMC ! diff --git a/amc-templates/amc_template/exam.amc b/amc-templates/amc_template/exam.amc deleted file mode 100644 index 5f7d495..0000000 --- a/amc-templates/amc_template/exam.amc +++ /dev/null @@ -1,106 +0,0 @@ -AUTOQCM[TOTAL=1] - -AUTOQCM[NUM=1=q:mc-01] - -AUTOQCM[FQ] - -AUTOQCM[NUM=2=q:mc-02] - -AUTOQCM[FQ] - -AUTOQCM[NUM=3=q:mc-03] - -AUTOQCM[FQ] - -AUTOQCM[NUM=4=q:tf-01] - -AUTOQCM[FQ] - -AUTOQCM[NUM=5=q:tf-02] - -AUTOQCM[FQ] - -AUTOQCM[NUM=6=q-open-A] - -AUTOQCM[FQ] - -AUTOQCM[NUM=7=q-open-B] - -AUTOQCM[FQ] - -AUTOQCM[NUM=8=q-open-C] - -AUTOQCM[FQ] - -AUTOQCM[NUM=9=q-open-D] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[TOTAL=1] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[TOTAL=1] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[TOTAL=1] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - -AUTOQCM[FQ] - diff --git a/amc-templates/amc_template/exam.aux b/amc-templates/amc_template/exam.aux deleted file mode 100644 index f23e546..0000000 --- a/amc-templates/amc_template/exam.aux +++ /dev/null @@ -1 +0,0 @@ -\relax diff --git a/amc-templates/amc_template/exam.log b/amc-templates/amc_template/exam.log deleted file mode 100644 index 255f302..0000000 --- a/amc-templates/amc_template/exam.log +++ /dev/null @@ -1,1830 +0,0 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/Debian) (preloaded format=pdflatex 2018.10.15) 11 JUN 2019 19:08 -entering extended mode - \write18 enabled. - %&-line parsing enabled. -**exam.tex -(./exam.tex -LaTeX2e <2016/02/01> -Babel <3.9q> and hyphenation patterns for 81 language(s) loaded. -(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls -Document Class: article 2014/09/29 v1.4h Standard LaTeX document class -(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty -Package: inputenc 2015/03/17 v1.2c Input encoding file -\inpenc@prehook=\toks14 -\inpenc@posthook=\toks15 - -(/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def -File: utf8.def 2015/12/03 v1.1r UTF-8 support for inputenc -Now handling font encoding OML ... -... no UTF-8 mapping file for font encoding OML -Now handling font encoding T1 ... -... processing UTF-8 mapping file for font encoding T1 - -(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu -File: t1enc.dfu 2015/12/03 v1.1r UTF-8 support for inputenc - defining Unicode char U+00A0 (decimal 160) - defining Unicode char U+00A1 (decimal 161) - defining Unicode char U+00A3 (decimal 163) - defining Unicode char U+00AB (decimal 171) - defining Unicode char U+00AD (decimal 173) - defining Unicode char U+00BB (decimal 187) - defining Unicode char U+00BF (decimal 191) - defining Unicode char U+00C0 (decimal 192) - defining Unicode char U+00C1 (decimal 193) - defining Unicode char U+00C2 (decimal 194) - defining Unicode char U+00C3 (decimal 195) - defining Unicode char U+00C4 (decimal 196) - defining Unicode char U+00C5 (decimal 197) - defining Unicode char U+00C6 (decimal 198) - defining Unicode char U+00C7 (decimal 199) - defining Unicode char U+00C8 (decimal 200) - defining Unicode char U+00C9 (decimal 201) - defining Unicode char U+00CA (decimal 202) - defining Unicode char U+00CB (decimal 203) - defining Unicode char U+00CC (decimal 204) - defining Unicode char U+00CD (decimal 205) - defining Unicode char U+00CE (decimal 206) - defining Unicode char U+00CF (decimal 207) - defining Unicode char U+00D0 (decimal 208) - defining Unicode char U+00D1 (decimal 209) - defining Unicode char U+00D2 (decimal 210) - defining Unicode char U+00D3 (decimal 211) - defining Unicode char U+00D4 (decimal 212) - defining Unicode char U+00D5 (decimal 213) - defining Unicode char U+00D6 (decimal 214) - defining Unicode char U+00D8 (decimal 216) - defining Unicode char U+00D9 (decimal 217) - defining Unicode char U+00DA (decimal 218) - defining Unicode char U+00DB (decimal 219) - defining Unicode char U+00DC (decimal 220) - defining Unicode char U+00DD (decimal 221) - defining Unicode char U+00DE (decimal 222) - defining Unicode char U+00DF (decimal 223) - defining Unicode char U+00E0 (decimal 224) - defining Unicode char U+00E1 (decimal 225) - defining Unicode char U+00E2 (decimal 226) - defining Unicode char U+00E3 (decimal 227) - defining Unicode char U+00E4 (decimal 228) - defining Unicode char U+00E5 (decimal 229) - defining Unicode char U+00E6 (decimal 230) - defining Unicode char U+00E7 (decimal 231) - defining Unicode char U+00E8 (decimal 232) - defining Unicode char U+00E9 (decimal 233) - defining Unicode char U+00EA (decimal 234) - defining Unicode char U+00EB (decimal 235) - defining Unicode char U+00EC (decimal 236) - defining Unicode char U+00ED (decimal 237) - defining Unicode char U+00EE (decimal 238) - defining Unicode char U+00EF (decimal 239) - defining Unicode char U+00F0 (decimal 240) - defining Unicode char U+00F1 (decimal 241) - defining Unicode char U+00F2 (decimal 242) - defining Unicode char U+00F3 (decimal 243) - defining Unicode char U+00F4 (decimal 244) - defining Unicode char U+00F5 (decimal 245) - defining Unicode char U+00F6 (decimal 246) - defining Unicode char U+00F8 (decimal 248) - defining Unicode char U+00F9 (decimal 249) - defining Unicode char U+00FA (decimal 250) - defining Unicode char U+00FB (decimal 251) - defining Unicode char U+00FC (decimal 252) - defining Unicode char U+00FD (decimal 253) - defining Unicode char U+00FE (decimal 254) - defining Unicode char U+00FF (decimal 255) - defining Unicode char U+0100 (decimal 256) - defining Unicode char U+0101 (decimal 257) - defining Unicode char U+0102 (decimal 258) - defining Unicode char U+0103 (decimal 259) - defining Unicode char U+0104 (decimal 260) - defining Unicode char U+0105 (decimal 261) - defining Unicode char U+0106 (decimal 262) - defining Unicode char U+0107 (decimal 263) - defining Unicode char U+0108 (decimal 264) - defining Unicode char U+0109 (decimal 265) - defining Unicode char U+010A (decimal 266) - defining Unicode char U+010B (decimal 267) - defining Unicode char U+010C (decimal 268) - defining Unicode char U+010D (decimal 269) - defining Unicode char U+010E (decimal 270) - defining Unicode char U+010F (decimal 271) - defining Unicode char U+0110 (decimal 272) - defining Unicode char U+0111 (decimal 273) - defining Unicode char U+0112 (decimal 274) - defining Unicode char U+0113 (decimal 275) - defining Unicode char U+0114 (decimal 276) - defining Unicode char U+0115 (decimal 277) - defining Unicode char U+0116 (decimal 278) - defining Unicode char U+0117 (decimal 279) - defining Unicode char U+0118 (decimal 280) - defining Unicode char U+0119 (decimal 281) - defining Unicode char U+011A (decimal 282) - defining Unicode char U+011B (decimal 283) - defining Unicode char U+011C (decimal 284) - defining Unicode char U+011D (decimal 285) - defining Unicode char U+011E (decimal 286) - defining Unicode char U+011F (decimal 287) - defining Unicode char U+0120 (decimal 288) - defining Unicode char U+0121 (decimal 289) - defining Unicode char U+0122 (decimal 290) - defining Unicode char U+0123 (decimal 291) - defining Unicode char U+0124 (decimal 292) - defining Unicode char U+0125 (decimal 293) - defining Unicode char U+0128 (decimal 296) - defining Unicode char U+0129 (decimal 297) - defining Unicode char U+012A (decimal 298) - defining Unicode char U+012B (decimal 299) - defining Unicode char U+012C (decimal 300) - defining Unicode char U+012D (decimal 301) - defining Unicode char U+012E (decimal 302) - defining Unicode char U+012F (decimal 303) - defining Unicode char U+0130 (decimal 304) - defining Unicode char U+0131 (decimal 305) - defining Unicode char U+0132 (decimal 306) - defining Unicode char U+0133 (decimal 307) - defining Unicode char U+0134 (decimal 308) - defining Unicode char U+0135 (decimal 309) - defining Unicode char U+0136 (decimal 310) - defining Unicode char U+0137 (decimal 311) - defining Unicode char U+0139 (decimal 313) - defining Unicode char U+013A (decimal 314) - defining Unicode char U+013B (decimal 315) - defining Unicode char U+013C (decimal 316) - defining Unicode char U+013D (decimal 317) - defining Unicode char U+013E (decimal 318) - defining Unicode char U+0141 (decimal 321) - defining Unicode char U+0142 (decimal 322) - defining Unicode char U+0143 (decimal 323) - defining Unicode char U+0144 (decimal 324) - defining Unicode char U+0145 (decimal 325) - defining Unicode char U+0146 (decimal 326) - defining Unicode char U+0147 (decimal 327) - defining Unicode char U+0148 (decimal 328) - defining Unicode char U+014A (decimal 330) - defining Unicode char U+014B (decimal 331) - defining Unicode char U+014C (decimal 332) - defining Unicode char U+014D (decimal 333) - defining Unicode char U+014E (decimal 334) - defining Unicode char U+014F (decimal 335) - defining Unicode char U+0150 (decimal 336) - defining Unicode char U+0151 (decimal 337) - defining Unicode char U+0152 (decimal 338) - defining Unicode char U+0153 (decimal 339) - defining Unicode char U+0154 (decimal 340) - defining Unicode char U+0155 (decimal 341) - defining Unicode char U+0156 (decimal 342) - defining Unicode char U+0157 (decimal 343) - defining Unicode char U+0158 (decimal 344) - defining Unicode char U+0159 (decimal 345) - defining Unicode char U+015A (decimal 346) - defining Unicode char U+015B (decimal 347) - defining Unicode char U+015C (decimal 348) - defining Unicode char U+015D (decimal 349) - defining Unicode char U+015E (decimal 350) - defining Unicode char U+015F (decimal 351) - defining Unicode char U+0160 (decimal 352) - defining Unicode char U+0161 (decimal 353) - defining Unicode char U+0162 (decimal 354) - defining Unicode char U+0163 (decimal 355) - defining Unicode char U+0164 (decimal 356) - defining Unicode char U+0165 (decimal 357) - defining Unicode char U+0168 (decimal 360) - defining Unicode char U+0169 (decimal 361) - defining Unicode char U+016A (decimal 362) - defining Unicode char U+016B (decimal 363) - defining Unicode char U+016C (decimal 364) - defining Unicode char U+016D (decimal 365) - defining Unicode char U+016E (decimal 366) - defining Unicode char U+016F (decimal 367) - defining Unicode char U+0170 (decimal 368) - defining Unicode char U+0171 (decimal 369) - defining Unicode char U+0172 (decimal 370) - defining Unicode char U+0173 (decimal 371) - defining Unicode char U+0174 (decimal 372) - defining Unicode char U+0175 (decimal 373) - defining Unicode char U+0176 (decimal 374) - defining Unicode char U+0177 (decimal 375) - defining Unicode char U+0178 (decimal 376) - defining Unicode char U+0179 (decimal 377) - defining Unicode char U+017A (decimal 378) - defining Unicode char U+017B (decimal 379) - defining Unicode char U+017C (decimal 380) - defining Unicode char U+017D (decimal 381) - defining Unicode char U+017E (decimal 382) - defining Unicode char U+01CD (decimal 461) - defining Unicode char U+01CE (decimal 462) - defining Unicode char U+01CF (decimal 463) - defining Unicode char U+01D0 (decimal 464) - defining Unicode char U+01D1 (decimal 465) - defining Unicode char U+01D2 (decimal 466) - defining Unicode char U+01D3 (decimal 467) - defining Unicode char U+01D4 (decimal 468) - defining Unicode char U+01E2 (decimal 482) - defining Unicode char U+01E3 (decimal 483) - defining Unicode char U+01E6 (decimal 486) - defining Unicode char U+01E7 (decimal 487) - defining Unicode char U+01E8 (decimal 488) - defining Unicode char U+01E9 (decimal 489) - defining Unicode char U+01EA (decimal 490) - defining Unicode char U+01EB (decimal 491) - defining Unicode char U+01F0 (decimal 496) - defining Unicode char U+01F4 (decimal 500) - defining Unicode char U+01F5 (decimal 501) - defining Unicode char U+0218 (decimal 536) - defining Unicode char U+0219 (decimal 537) - defining Unicode char U+021A (decimal 538) - defining Unicode char U+021B (decimal 539) - defining Unicode char U+01E02 (decimal 7682) - defining Unicode char U+01E03 (decimal 7683) - defining Unicode char U+200C (decimal 8204) - defining Unicode char U+2013 (decimal 8211) - defining Unicode char U+2014 (decimal 8212) - defining Unicode char U+2018 (decimal 8216) - defining Unicode char U+2019 (decimal 8217) - defining Unicode char U+201A (decimal 8218) - defining Unicode char U+201C (decimal 8220) - defining Unicode char U+201D (decimal 8221) - defining Unicode char U+201E (decimal 8222) - defining Unicode char U+2030 (decimal 8240) - defining Unicode char U+2031 (decimal 8241) - defining Unicode char U+2039 (decimal 8249) - defining Unicode char U+203A (decimal 8250) - defining Unicode char U+2423 (decimal 9251) -) -Now handling font encoding OT1 ... -... processing UTF-8 mapping file for font encoding OT1 - -(/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu -File: ot1enc.dfu 2015/12/03 v1.1r UTF-8 support for inputenc - defining Unicode char U+00A0 (decimal 160) - defining Unicode char U+00A1 (decimal 161) - defining Unicode char U+00A3 (decimal 163) - defining Unicode char U+00AD (decimal 173) - defining Unicode char U+00B8 (decimal 184) - defining Unicode char U+00BF (decimal 191) - defining Unicode char U+00C5 (decimal 197) - defining Unicode char U+00C6 (decimal 198) - defining Unicode char U+00D8 (decimal 216) - defining Unicode char U+00DF (decimal 223) - defining Unicode char U+00E6 (decimal 230) - defining Unicode char U+00EC (decimal 236) - defining Unicode char U+00ED (decimal 237) - defining Unicode char U+00EE (decimal 238) - defining Unicode char U+00EF (decimal 239) - defining Unicode char U+00F8 (decimal 248) - defining Unicode char U+0131 (decimal 305) - defining Unicode char U+0141 (decimal 321) - defining Unicode char U+0142 (decimal 322) - defining Unicode char U+0152 (decimal 338) - defining Unicode char U+0153 (decimal 339) - defining Unicode char U+0174 (decimal 372) - defining Unicode char U+0175 (decimal 373) - defining Unicode char U+0176 (decimal 374) - defining Unicode char U+0177 (decimal 375) - defining Unicode char U+0218 (decimal 536) - defining Unicode char U+0219 (decimal 537) - defining Unicode char U+021A (decimal 538) - defining Unicode char U+021B (decimal 539) - defining Unicode char U+2013 (decimal 8211) - defining Unicode char U+2014 (decimal 8212) - defining Unicode char U+2018 (decimal 8216) - defining Unicode char U+2019 (decimal 8217) - defining Unicode char U+201C (decimal 8220) - defining Unicode char U+201D (decimal 8221) -) -Now handling font encoding OMS ... -... processing UTF-8 mapping file for font encoding OMS - -(/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu -File: omsenc.dfu 2015/12/03 v1.1r UTF-8 support for inputenc - defining Unicode char U+00A7 (decimal 167) - defining Unicode char U+00B6 (decimal 182) - defining Unicode char U+00B7 (decimal 183) - defining Unicode char U+2020 (decimal 8224) - defining Unicode char U+2021 (decimal 8225) - defining Unicode char U+2022 (decimal 8226) -) -Now handling font encoding OMX ... -... no UTF-8 mapping file for font encoding OMX -Now handling font encoding U ... -... no UTF-8 mapping file for font encoding U - defining Unicode char U+00A9 (decimal 169) - defining Unicode char U+00AA (decimal 170) - defining Unicode char U+00AE (decimal 174) - defining Unicode char U+00BA (decimal 186) - defining Unicode char U+02C6 (decimal 710) - defining Unicode char U+02DC (decimal 732) - defining Unicode char U+200C (decimal 8204) - defining Unicode char U+2026 (decimal 8230) - defining Unicode char U+2122 (decimal 8482) - defining Unicode char U+2423 (decimal 9251) -)) -(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty -Package: fontenc 2005/09/27 v1.99g Standard LaTeX package - -(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def -File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file -LaTeX Font Info: Redeclaring font encoding T1 on input line 48. -)) -(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty -Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg -File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive -) -Package xcolor Info: Driver file: pdftex.def on input line 225. - -(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def -File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) -) -\Gread@gobject=\count87 -) -Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. -Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. -Package xcolor Info: Model `RGB' extended on input line 1353. -Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. -Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. -Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. -Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. -Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. -Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. -) -(/usr/share/texlive/texmf-dist/tex/latex/base/fix-cm.sty -Package: fix-cm 2015/01/14 v1.1t fixes to LaTeX - -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file -Now handling font encoding TS1 ... -... processing UTF-8 mapping file for font encoding TS1 - -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu -File: ts1enc.dfu 2015/12/03 v1.1r UTF-8 support for inputenc - defining Unicode char U+00A2 (decimal 162) - defining Unicode char U+00A3 (decimal 163) - defining Unicode char U+00A4 (decimal 164) - defining Unicode char U+00A5 (decimal 165) - defining Unicode char U+00A6 (decimal 166) - defining Unicode char U+00A7 (decimal 167) - defining Unicode char U+00A8 (decimal 168) - defining Unicode char U+00A9 (decimal 169) - defining Unicode char U+00AA (decimal 170) - defining Unicode char U+00AC (decimal 172) - defining Unicode char U+00AE (decimal 174) - defining Unicode char U+00AF (decimal 175) - defining Unicode char U+00B0 (decimal 176) - defining Unicode char U+00B1 (decimal 177) - defining Unicode char U+00B2 (decimal 178) - defining Unicode char U+00B3 (decimal 179) - defining Unicode char U+00B4 (decimal 180) - defining Unicode char U+00B5 (decimal 181) - defining Unicode char U+00B6 (decimal 182) - defining Unicode char U+00B7 (decimal 183) - defining Unicode char U+00B9 (decimal 185) - defining Unicode char U+00BA (decimal 186) - defining Unicode char U+00BC (decimal 188) - defining Unicode char U+00BD (decimal 189) - defining Unicode char U+00BE (decimal 190) - defining Unicode char U+00D7 (decimal 215) - defining Unicode char U+00F7 (decimal 247) - defining Unicode char U+0192 (decimal 402) - defining Unicode char U+02C7 (decimal 711) - defining Unicode char U+02D8 (decimal 728) - defining Unicode char U+02DD (decimal 733) - defining Unicode char U+0E3F (decimal 3647) - defining Unicode char U+2016 (decimal 8214) - defining Unicode char U+2020 (decimal 8224) - defining Unicode char U+2021 (decimal 8225) - defining Unicode char U+2022 (decimal 8226) - defining Unicode char U+2030 (decimal 8240) - defining Unicode char U+2031 (decimal 8241) - defining Unicode char U+203B (decimal 8251) - defining Unicode char U+203D (decimal 8253) - defining Unicode char U+2044 (decimal 8260) - defining Unicode char U+204E (decimal 8270) - defining Unicode char U+2052 (decimal 8274) - defining Unicode char U+20A1 (decimal 8353) - defining Unicode char U+20A4 (decimal 8356) - defining Unicode char U+20A6 (decimal 8358) - defining Unicode char U+20A9 (decimal 8361) - defining Unicode char U+20AB (decimal 8363) - defining Unicode char U+20AC (decimal 8364) - defining Unicode char U+20B1 (decimal 8369) - defining Unicode char U+2103 (decimal 8451) - defining Unicode char U+2116 (decimal 8470) - defining Unicode char U+2117 (decimal 8471) - defining Unicode char U+211E (decimal 8478) - defining Unicode char U+2120 (decimal 8480) - defining Unicode char U+2122 (decimal 8482) - defining Unicode char U+2126 (decimal 8486) - defining Unicode char U+2127 (decimal 8487) - defining Unicode char U+212E (decimal 8494) - defining Unicode char U+2190 (decimal 8592) - defining Unicode char U+2191 (decimal 8593) - defining Unicode char U+2192 (decimal 8594) - defining Unicode char U+2193 (decimal 8595) - defining Unicode char U+2329 (decimal 9001) - defining Unicode char U+232A (decimal 9002) - defining Unicode char U+2422 (decimal 9250) - defining Unicode char U+25E6 (decimal 9702) - defining Unicode char U+25EF (decimal 9711) - defining Unicode char U+266A (decimal 9834) -))) -(./automultiplechoice.sty -Package: automultiplechoice - -(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty -\fancy@headwidth=\skip43 -\f@ncyO@elh=\skip44 -\f@ncyO@erh=\skip45 -\f@ncyO@olh=\skip46 -\f@ncyO@orh=\skip47 -\f@ncyO@elf=\skip48 -\f@ncyO@erf=\skip49 -\f@ncyO@olf=\skip50 -\f@ncyO@orf=\skip51 -) -(/usr/share/texlive/texmf-dist/tex/latex/bophook/bophook.sty -Package: bophook 2001/03/29 v0.02 beginning-of-page hook, K. Tinnefeld -) -(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty -Package: xkeyval 2014/12/03 v2.7a package option processing (HA) - -(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex -(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex -\XKV@toks=\toks16 -\XKV@tempa@toks=\toks17 - -(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex)) -\XKV@depth=\count88 -File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) -)) -(/usr/share/texlive/texmf-dist/tex/latex/rotating/rotating.sty -Package: rotating 2009/03/28 v2.16a rotated objects in LaTeX - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2016/01/03 v1.0q Standard LaTeX Graphics (DPC,SPQR) - -(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty -Package: trig 2016/01/03 v1.10 sin cos tan (DPC) -) -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg -File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live -) -Package graphics Info: Driver file: pdftex.def on input line 95. -) -\Gin@req@height=\dimen103 -\Gin@req@width=\dimen104 -) -(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty -Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) -) -\c@r@tfl@t=\count89 -\rotFPtop=\skip52 -\rotFPbot=\skip53 -\rot@float@box=\box26 -\rot@mess@toks=\toks18 -) -(/usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty -Package: fancybox 2010/05/15 1.4 - -Style option: `fancybox' v1.4 <2010/05/15> (tvz) -\@fancybox=\box27 -\shadowsize=\dimen105 -\@Sbox=\box28 -\do@VerbBox=\toks19 -\the@fancyput=\toks20 -\this@fancyput=\toks21 -\EndVerbatimTokens=\toks22 -\Verbatim@Outfile=\write3 -\Verbatim@Infile=\read1 -) -\AMC@logfile=\write4 -\openout4 = `exam.amc'. - -\AMCload@counter=\count90 -\AMCid@quest=\count91 -\AMCid@check=\count92 -\AMCid@etud=\count93 -\AMCid@etudstart=\count94 -\AMCid@etudfin=\count95 -\AMCnum@copies=\count96 -\AMCformVSpace=\dimen106 -\AMCformHSpace=\dimen107 -\AMCinterIrep=\dimen108 -\AMCinterBrep=\dimen109 -\AMCinterIquest=\dimen110 -\AMCinterBquest=\dimen111 -\AMCids@width=\dimen112 -\AMCids@height=\dimen113 -\AMC@SR=\count97 -\AMC@SR@count=\count98 -\AMC@SRnum=\count99 -\AMC@sti=\count100 -\AMC@stil=\count101 -\AMCsw@p@=\toks23 -\AMC@numerotation=\count102 -\AMC@XYspecial=\write5 -\AMC@tmpXY=\write6 -\c@AMC@ncase=\count103 -\AMC@boxedrule=\skip54 -\AMC@crossrule=\skip55 -\AMC@boxeddown=\skip56 -\AMC@boxedwidth=\skip57 -\AMC@boxedheight=\skip58 -\AMC@oval@radius=\skip59 -\AMC@outside@sep=\skip60 -\AMC@CBtaille=\skip61 -\AMCbin@sequence=\toks24 -\AMCbin@number=\count104 -\AMCbin@ndigits=\count105 -\AMCbin@id=\count106 -\AMCbin@digit=\count107 -\AMCtok@k=\count108 -\AMCtok@max=\count109 -\AMCtok@size=\count110 -\AMC@imax=\count111 -\AMCtok@ik=\count112 -\AMCloop@k=\count113 -\AMCrep@count=\count114 -\reponse@cxcix=\toks25 -\reponse@cxcviii=\toks26 -\reponse@cxcvii=\toks27 -\reponse@cxcvi=\toks28 -\reponse@cxcv=\toks29 -\reponse@cxciv=\toks30 -\reponse@cxciii=\toks31 -\reponse@cxcii=\toks32 -\reponse@cxci=\toks33 -\reponse@cxc=\toks34 -\reponse@clxxxix=\toks35 -\reponse@clxxxviii=\toks36 -\reponse@clxxxvii=\toks37 -\reponse@clxxxvi=\toks38 -\reponse@clxxxv=\toks39 -\reponse@clxxxiv=\toks40 -\reponse@clxxxiii=\toks41 -\reponse@clxxxii=\toks42 -\reponse@clxxxi=\toks43 -\reponse@clxxx=\toks44 -\reponse@clxxix=\toks45 -\reponse@clxxviii=\toks46 -\reponse@clxxvii=\toks47 -\reponse@clxxvi=\toks48 -\reponse@clxxv=\toks49 -\reponse@clxxiv=\toks50 -\reponse@clxxiii=\toks51 -\reponse@clxxii=\toks52 -\reponse@clxxi=\toks53 -\reponse@clxx=\toks54 -\reponse@clxix=\toks55 -\reponse@clxviii=\toks56 -\reponse@clxvii=\toks57 -\reponse@clxvi=\toks58 -\reponse@clxv=\toks59 -\reponse@clxiv=\toks60 -\reponse@clxiii=\toks61 -\reponse@clxii=\toks62 -\reponse@clxi=\toks63 -\reponse@clx=\toks64 -\reponse@clix=\toks65 -\reponse@clviii=\toks66 -\reponse@clvii=\toks67 -\reponse@clvi=\toks68 -\reponse@clv=\toks69 -\reponse@cliv=\toks70 -\reponse@cliii=\toks71 -\reponse@clii=\toks72 -\reponse@cli=\toks73 -\reponse@cl=\toks74 -\reponse@cxlix=\toks75 -\reponse@cxlviii=\toks76 -\reponse@cxlvii=\toks77 -\reponse@cxlvi=\toks78 -\reponse@cxlv=\toks79 -\reponse@cxliv=\toks80 -\reponse@cxliii=\toks81 -\reponse@cxlii=\toks82 -\reponse@cxli=\toks83 -\reponse@cxl=\toks84 -\reponse@cxxxix=\toks85 -\reponse@cxxxviii=\toks86 -\reponse@cxxxvii=\toks87 -\reponse@cxxxvi=\toks88 -\reponse@cxxxv=\toks89 -\reponse@cxxxiv=\toks90 -\reponse@cxxxiii=\toks91 -\reponse@cxxxii=\toks92 -\reponse@cxxxi=\toks93 -\reponse@cxxx=\toks94 -\reponse@cxxix=\toks95 -\reponse@cxxviii=\toks96 -\reponse@cxxvii=\toks97 -\reponse@cxxvi=\toks98 -\reponse@cxxv=\toks99 -\reponse@cxxiv=\toks100 -\reponse@cxxiii=\toks101 -\reponse@cxxii=\toks102 -\reponse@cxxi=\toks103 -\reponse@cxx=\toks104 -\reponse@cxix=\toks105 -\reponse@cxviii=\toks106 -\reponse@cxvii=\toks107 -\reponse@cxvi=\toks108 -\reponse@cxv=\toks109 -\reponse@cxiv=\toks110 -\reponse@cxiii=\toks111 -\reponse@cxii=\toks112 -\reponse@cxi=\toks113 -\reponse@cx=\toks114 -\reponse@cix=\toks115 -\reponse@cviii=\toks116 -\reponse@cvii=\toks117 -\reponse@cvi=\toks118 -\reponse@cv=\toks119 -\reponse@civ=\toks120 -\reponse@ciii=\toks121 -\reponse@cii=\toks122 -\reponse@ci=\toks123 -\reponse@c=\toks124 -\reponse@xcix=\toks125 -\reponse@xcviii=\toks126 -\reponse@xcvii=\toks127 -\reponse@xcvi=\toks128 -\reponse@xcv=\toks129 -\reponse@xciv=\toks130 -\reponse@xciii=\toks131 -\reponse@xcii=\toks132 -\reponse@xci=\toks133 -\reponse@xc=\toks134 -\reponse@lxxxix=\toks135 -\reponse@lxxxviii=\toks136 -\reponse@lxxxvii=\toks137 -\reponse@lxxxvi=\toks138 -\reponse@lxxxv=\toks139 -\reponse@lxxxiv=\toks140 -\reponse@lxxxiii=\toks141 -\reponse@lxxxii=\toks142 -\reponse@lxxxi=\toks143 -\reponse@lxxx=\toks144 -\reponse@lxxix=\toks145 -\reponse@lxxviii=\toks146 -\reponse@lxxvii=\toks147 -\reponse@lxxvi=\toks148 -\reponse@lxxv=\toks149 -\reponse@lxxiv=\toks150 -\reponse@lxxiii=\toks151 -\reponse@lxxii=\toks152 -\reponse@lxxi=\toks153 -\reponse@lxx=\toks154 -\reponse@lxix=\toks155 -\reponse@lxviii=\toks156 -\reponse@lxvii=\toks157 -\reponse@lxvi=\toks158 -\reponse@lxv=\toks159 -\reponse@lxiv=\toks160 -\reponse@lxiii=\toks161 -\reponse@lxii=\toks162 -\reponse@lxi=\toks163 -\reponse@lx=\toks164 -\reponse@lix=\toks165 -\reponse@lviii=\toks166 -\reponse@lvii=\toks167 -\reponse@lvi=\toks168 -\reponse@lv=\toks169 -\reponse@liv=\toks170 -\reponse@liii=\toks171 -\reponse@lii=\toks172 -\reponse@li=\toks173 -\reponse@l=\toks174 -\reponse@xlix=\toks175 -\reponse@xlviii=\toks176 -\reponse@xlvii=\toks177 -\reponse@xlvi=\toks178 -\reponse@xlv=\toks179 -\reponse@xliv=\toks180 -\reponse@xliii=\toks181 -\reponse@xlii=\toks182 -\reponse@xli=\toks183 -\reponse@xl=\toks184 -\reponse@xxxix=\toks185 -\reponse@xxxviii=\toks186 -\reponse@xxxvii=\toks187 -\reponse@xxxvi=\toks188 -\reponse@xxxv=\toks189 -\reponse@xxxiv=\toks190 -\reponse@xxxiii=\toks191 -\reponse@xxxii=\toks192 -\reponse@xxxi=\toks193 -\reponse@xxx=\toks194 -\reponse@xxix=\toks195 -\reponse@xxviii=\toks196 -\reponse@xxvii=\toks197 -\reponse@xxvi=\toks198 -\reponse@xxv=\toks199 -\reponse@xxiv=\toks200 -\reponse@xxiii=\toks201 -\reponse@xxii=\toks202 -\reponse@xxi=\toks203 -\reponse@xx=\toks204 -\reponse@xix=\toks205 -\reponse@xviii=\toks206 -\reponse@xvii=\toks207 -\reponse@xvi=\toks208 -\reponse@xv=\toks209 -\reponse@xiv=\toks210 -\reponse@xiii=\toks211 -\reponse@xii=\toks212 -\reponse@xi=\toks213 -\reponse@x=\toks214 -\reponse@ix=\toks215 -\reponse@viii=\toks216 -\reponse@vii=\toks217 -\reponse@vi=\toks218 -\reponse@v=\toks219 -\reponse@iv=\toks220 -\reponse@iii=\toks221 -\reponse@ii=\toks222 -\reponse@i=\toks223 -\AMCnum@questions=\count115 -\AMCrep@@count=\count116 -\AMC@mn@test=\skip62 -\AMC@mn@sep=\skip63 -\AMC@mn@leftmargin=\skip64 -\AMC@mn@rightmargin=\skip65 -\AMC@sz@width=\skip66 -\AMC@sz@height=\skip67 -\AMC@sz@depth=\skip68 -\AMC@sza@width=\skip69 -\AMC@sza@height=\skip70 -\AMC@sza@depth=\skip71 -\c@AMCquestionaff=\count117 -\ouverte@vs=\dimen114 -\AMC@chiffres=\count118 -\AMCcodeHspace=\dimen115 -\AMCcodeVspace=\dimen116 -\AMCnumeric@Hspace=\dimen117 -\AMCnumeric@Vspace=\dimen118 -\AMC@numeric@lastdigit=\count119 -\AMC@integer@modulo=\count120 -\AMC@numeric@integer=\count121 -\AMC@numeric@calcdigit=\count122 -\AMC@numeric@digits=\count123 -\AMC@numeric@decd=\count124 -\AMC@numeric@value=\count125 -\AMC@numeric@x=\count126 -\AMC@numeric@base=\count127 -\AMC@numeric@exact=\count128 -\AMC@numeric@approx=\count129 -\AMCopen@Hspace=\dimen119 -\AMCopen@LineHeight=\dimen120 -\AMCopen@Lines=\count130 -\AMCopen@boxmargin=\dimen121 -\AMCopen@boxframerule=\dimen122 -\AMCopen@framerule=\dimen123 - (/usr/share/texlive/texmf-dist/tex/latex/environ/environ.sty -Package: environ 2014/05/04 v0.3 A new way to define environments - -(/usr/share/texlive/texmf-dist/tex/latex/trimspaces/trimspaces.sty -Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list -) -\@envbody=\toks224 -) -(/usr/share/texlive/texmf-dist/tex/latex/etex-pkg/etex.sty -Package: etex 2016/01/11 v2.6 eTeX basic definition package (PEB,DPC) -\et@xins=\count131 -) -(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2010/09/12 v5.6 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) -Package ifpdf Info: pdfTeX in PDF mode is detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count132 -\Gm@cntv=\count133 -\c@Gm@tempcnt=\count134 -\Gm@bindingoffset=\dimen124 -\Gm@wd@mp=\dimen125 -\Gm@odd@mp=\dimen126 -\Gm@even@mp=\dimen127 -\Gm@layoutwidth=\dimen128 -\Gm@layoutheight=\dimen129 -\Gm@layouthoffset=\dimen130 -\Gm@layoutvoffset=\dimen131 -\Gm@dimlist=\toks225 -)) -(./packages.tex -(/usr/share/texlive/texmf-dist/tex/latex/csvsimple/csvsimple.sty -Package: csvsimple 2014/07/14 version 1.12 LaTeX CSV file processing - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks226 -\pgfkeys@temptoks=\toks227 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t -ex -\pgfkeys@tmptoks=\toks228 -))) -\csv@file=\read2 -\c@csvinputline=\count135 -\c@csvrow=\count136 -\c@csvcol=\count137 -\csv@out=\write7 -) (/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty -Package: multicol 2015/08/19 v1.8n multicolumn formatting (FMi) -\c@tracingmulticols=\count138 -\mult@box=\box29 -\multicol@leftmargin=\dimen132 -\c@unbalance=\count139 -\c@collectmore=\count140 -\doublecol@number=\count141 -\multicoltolerance=\count142 -\multicolpretolerance=\count143 -\full@width=\dimen133 -\page@free=\dimen134 -\premulticols=\dimen135 -\postmulticols=\dimen136 -\multicolsep=\skip72 -\multicolbaselineskip=\skip73 -\partial@page=\box30 -\last@line=\box31 -\maxbalancingoverflow=\dimen137 -\mult@rightbox=\box32 -\mult@grightbox=\box33 -\mult@gfirstbox=\box34 -\mult@firstbox=\box35 -\@tempa=\box36 -\@tempa=\box37 -\@tempa=\box38 -\@tempa=\box39 -\@tempa=\box40 -\@tempa=\box41 -\@tempa=\box42 -\@tempa=\box43 -\@tempa=\box44 -\@tempa=\box45 -\@tempa=\box46 -\@tempa=\box47 -\@tempa=\box48 -\@tempa=\box49 -\@tempa=\box50 -\@tempa=\box51 -\@tempa=\box52 -\c@columnbadness=\count144 -\c@finalcolumnbadness=\count145 -\last@try=\dimen138 -\multicolovershoot=\dimen139 -\multicolundershoot=\dimen140 -\mult@nat@firstbox=\box53 -\colbreak@box=\box54 -\mc@col@check@num=\count146 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2016/03/03 v2.15a AMS math features -\@mathmargin=\skip74 - -For additional information on amsmath, use the `?' option. -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty -Package: amstext 2000/06/29 v2.01 AMS text - -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty -File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks229 -\ex@=\dimen141 -)) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty -Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen142 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty -Package: amsopn 1999/12/14 v2.01 operator names -) -\inf@bad=\count147 -LaTeX Info: Redefining \frac on input line 199. -\uproot@=\count148 -\leftroot@=\count149 -LaTeX Info: Redefining \overline on input line 297. -\classnum@=\count150 -\DOTSCASE@=\count151 -LaTeX Info: Redefining \ldots on input line 394. -LaTeX Info: Redefining \dots on input line 397. -LaTeX Info: Redefining \cdots on input line 518. -\Mathstrutbox@=\box55 -\strutbox@=\box56 -\big@size=\dimen143 -LaTeX Font Info: Redeclaring font encoding OML on input line 630. -LaTeX Font Info: Redeclaring font encoding OMS on input line 631. -\macc@depth=\count152 -\c@MaxMatrixCols=\count153 -\dotsspace@=\muskip10 -\c@parentequation=\count154 -\dspbrk@lvl=\count155 -\tag@help=\toks230 -\row@=\count156 -\column@=\count157 -\maxfields@=\count158 -\andhelp@=\toks231 -\eqnshift@=\dimen144 -\alignsep@=\dimen145 -\tagshift@=\dimen146 -\tagwidth@=\dimen147 -\totwidth@=\dimen148 -\lineht@=\dimen149 -\@envbody=\toks232 -\multlinegap=\skip75 -\multlinetaggap=\skip76 -\mathdisplay@stack=\toks233 -LaTeX Info: Redefining \[ on input line 2735. -LaTeX Info: Redefining \] on input line 2736. -) -(/usr/share/texlive/texmf-dist/tex/latex/jknapltx/mathrsfs.sty -Package: mathrsfs 1996/01/01 Math RSFS package v1.0 (jk) -\symrsfs=\mathgroup4 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/euscript.sty -Package: euscript 2009/06/22 v3.00 Euler Script fonts -LaTeX Font Info: Overwriting math alphabet `\EuScript' in version `bold' -(Font) U/eus/m/n --> U/eus/b/n on input line 33. -) -(/usr/share/texlive/texmf-dist/tex/latex/graphics/epsfig.sty -Package: epsfig 1999/02/16 v1.7a (e)psfig emulation (SPQR) -\epsfxsize=\dimen150 -\epsfysize=\dimen151 -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty -Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support -\symAMSa=\mathgroup5 -\symAMSb=\mathgroup6 -LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' -(Font) U/euf/m/n --> U/euf/b/n on input line 106. -) -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty -Package: amssymb 2013/01/14 v3.01 AMS font symbols -)) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex -\pgfutil@everybye=\toks234 -\pgfutil@tempdima=\dimen152 -\pgfutil@tempdimb=\dimen153 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t -ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def -\pgfutil@abb=\box57 -(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty -Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -Package: pgfrcs 2015/08/07 v3.0.1a (rcs-revision 1.31) -)) -Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15) - -(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex -Package: pgfsys 2014/07/09 v3.0.1a (rcs-revision 1.48) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex) -\pgf@x=\dimen154 -\pgf@y=\dimen155 -\pgf@xa=\dimen156 -\pgf@ya=\dimen157 -\pgf@xb=\dimen158 -\pgf@yb=\dimen159 -\pgf@xc=\dimen160 -\pgf@yc=\dimen161 -\w@pgf@writea=\write8 -\r@pgf@reada=\read3 -\c@pgf@counta=\count159 -\c@pgf@countb=\count160 -\c@pgf@countc=\count161 -\c@pgf@countd=\count162 -\t@pgf@toka=\toks235 -\t@pgf@tokb=\toks236 -\t@pgf@tokc=\toks237 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg -File: pgf.cfg 2008/05/14 (rcs-revision 1.7) -) -Driver file for pgf: pgfsys-pdftex.def - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def -File: pgfsys-pdftex.def 2014/10/11 (rcs-revision 1.35) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de -f -File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. -tex -File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) -\pgfsyssoftpath@smallbuffer@items=\count163 -\pgfsyssoftpath@bigbuffer@items=\count164 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. -tex -File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex -Package: pgfcore 2010/04/11 v3.0.1a (rcs-revision 1.7) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex -\pgfmath@dimen=\dimen162 -\pgfmath@count=\count165 -\pgfmath@box=\box58 -\pgfmath@toks=\toks238 -\pgfmath@stack@operand=\toks239 -\pgfmath@stack@operation=\toks240 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet -ric.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod -e.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison -.code.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code -.tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. -tex) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari -thmetics.code.tex))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex -\c@pgfmathroundto@lastzeros=\count166 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te -x -File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) -\pgf@picminx=\dimen163 -\pgf@picmaxx=\dimen164 -\pgf@picminy=\dimen165 -\pgf@picmaxy=\dimen166 -\pgf@pathminx=\dimen167 -\pgf@pathmaxx=\dimen168 -\pgf@pathminy=\dimen169 -\pgf@pathmaxy=\dimen170 -\pgf@xx=\dimen171 -\pgf@xy=\dimen172 -\pgf@yx=\dimen173 -\pgf@yy=\dimen174 -\pgf@zx=\dimen175 -\pgf@zy=\dimen176 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. -code.tex -File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) -\pgf@path@lastx=\dimen177 -\pgf@path@lasty=\dimen178 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code -.tex -File: pgfcorepathusage.code.tex 2014/11/02 (rcs-revision 1.24) -\pgf@shorten@end@additional=\dimen179 -\pgf@shorten@start@additional=\dimen180 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te -x -File: pgfcorescopes.code.tex 2015/05/08 (rcs-revision 1.46) -\pgfpic=\box59 -\pgf@hbox=\box60 -\pgf@layerbox@main=\box61 -\pgf@picture@serial@count=\count167 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c -ode.tex -File: pgfcoregraphicstate.code.tex 2014/11/02 (rcs-revision 1.12) -\pgflinewidth=\dimen181 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation -s.code.tex -File: pgfcoretransformations.code.tex 2015/08/07 (rcs-revision 1.20) -\pgf@pt@x=\dimen182 -\pgf@pt@y=\dimen183 -\pgf@pt@temp=\dimen184 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex -File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t -ex -File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing -.code.tex -File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te -x -File: pgfcorearrows.code.tex 2015/05/14 (rcs-revision 1.43) -\pgfarrowsep=\dimen185 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex -File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) -\pgf@max=\dimen186 -\pgf@sys@shading@range@num=\count168 -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex -File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. -tex -File: pgfcoreexternal.code.tex 2014/07/09 (rcs-revision 1.21) -\pgfexternal@startupbox=\box62 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te -x -File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c -ode.tex -File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) -) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. -tex -File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) -))) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex -File: pgfmoduleshapes.code.tex 2014/03/21 (rcs-revision 1.35) -\pgfnodeparttextbox=\box63 -) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex -File: pgfmoduleplot.code.tex 2015/08/03 (rcs-revision 1.13) -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 -.sty -Package: pgfcomp-version-0-65 2007/07/03 v3.0.1a (rcs-revision 1.7) -\pgf@nodesepstart=\dimen187 -\pgf@nodesepend=\dimen188 -) -(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 -.sty -Package: pgfcomp-version-1-18 2007/07/23 v3.0.1a (rcs-revision 1.1) -)) (/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/share/texlive/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex -Package: pgffor 2013/12/13 v3.0.1a (rcs-revision 1.25) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) -\pgffor@iter=\dimen189 -\pgffor@skip=\dimen190 -\pgffor@stack=\toks241 -\pgffor@toks=\toks242 -)) -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex -Package: tikz 2015/08/07 v3.0.1a (rcs-revision 1.151) - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers -.code.tex -File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.1a (rcs-revision 1.20) -\pgf@plot@mark@count=\count169 -\pgfplotmarksize=\dimen191 -) -\tikz@lastx=\dimen192 -\tikz@lasty=\dimen193 -\tikz@lastxsaved=\dimen194 -\tikz@lastysaved=\dimen195 -\tikzleveldistance=\dimen196 -\tikzsiblingdistance=\dimen197 -\tikz@figbox=\box64 -\tikz@figbox@bg=\box65 -\tikz@tempbox=\box66 -\tikz@tempbox@bg=\box67 -\tikztreelevel=\count170 -\tikznumberofchildren=\count171 -\tikznumberofcurrentchild=\count172 -\tikz@fig@count=\count173 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex -File: pgfmodulematrix.code.tex 2013/09/17 (rcs-revision 1.8) -\pgfmatrixcurrentrow=\count174 -\pgfmatrixcurrentcolumn=\count175 -\pgf@matrix@numberofcolumns=\count176 -) -\tikz@expandcount=\count177 - -(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik -zlibrarytopaths.code.tex -File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.1a (rcs-revision 1.2) -))) (./commands.tex) (./style_extra.tex -(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty -Package: array 2014/10/28 v2.4c Tabular extension package (FMi) -\col@sep=\dimen198 -\extrarowheight=\dimen199 -\NC@list=\toks243 -\extratabsurround=\skip77 -\backup@length=\skip78 -)) (./exam-info.tex) -(./exam.aux) -\openout1 = `exam.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 43. -LaTeX Font Info: ... okay on input line 43. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 43. -LaTeX Font Info: ... okay on input line 43. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 43. -LaTeX Font Info: ... okay on input line 43. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 43. -LaTeX Font Info: ... okay on input line 43. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 43. -LaTeX Font Info: ... okay on input line 43. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 43. -LaTeX Font Info: ... okay on input line 43. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 43. -LaTeX Font Info: ... okay on input line 43. - (/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii -[Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count178 -Normal \dimen register pool exhausted, switching to extended pool. -\scratchdimen=\dimen256 -\scratchbox=\box68 -\nofMPsegments=\count179 -\nofMParguments=\count180 -\everyMPshowfont=\toks244 -\MPscratchCnt=\count181 -\MPscratchDim=\dimen257 -\MPnumerator=\count182 -\makeMPintoPDFobject=\count183 -\everyMPtoPDFconversion=\toks245 -) (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO -) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -Package pdftexcmds Info: \pdfdraftmode found. -) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty -Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) -)) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -Package grfext Info: Graphics extension search list: -(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 452. - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg -File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv -e -)) -\AMC@ovalbox@R=\box69 -\AMC@ovalbox@RF=\box70 -\AMC@ovalbox@=\box71 -\AMC@ovalbox@F=\box72 - -*geometry* driver: auto-detecting -*geometry* detected driver: pdftex -*geometry* verbose mode - [ preamble ] result: -* driver: pdftex -* paper: a4paper -* layout: -* layoutoffset:(h,v)=(0.0pt,0.0pt) -* modes: includehead includefoot -* h-part:(L,W,R)=(64.01869pt, 469.47049pt, 64.01869pt) -* v-part:(T,H,B)=(14.22636pt, 799.52228pt, 31.2982pt) -* \paperwidth=597.50787pt -* \paperheight=845.04684pt -* \textwidth=469.47049pt -* \textheight=714.16403pt -* \oddsidemargin=-8.2513pt -* \evensidemargin=-8.2513pt -* \topmargin=-58.04362pt -* \headheight=56.9055pt -* \headsep=5.69046pt -* \topskip=10.0pt -* \footskip=22.76228pt -* \marginparwidth=57.0pt -* \marginparsep=11.0pt -* \columnsep=10.0pt -* \skip\footins=9.0pt plus 4.0pt minus 2.0pt -* \hoffset=0.0pt -* \voffset=0.0pt -* \mag=1000 -* \@twocolumnfalse -* \@twosidefalse -* \@mparswitchfalse -* \@reversemarginfalse -* (1in=72.27pt=25.4mm, 1cm=28.453pt) - -ABD: EveryShipout initializing macros (./first_page.tex - -File: media/epfl-logo.pdf Graphic file (type pdf) - -Package pdftex.def Info: media/epfl-logo.pdf used on input line 5. -(pdftex.def) Requested size: 82.38843pt x 23.9396pt. -LaTeX Font Info: Try loading font information for U+rsfs on input line 27. - -(/usr/share/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd -File: ursfs.fd 1998/03/24 rsfs font definition file (jk) -) -LaTeX Font Info: Try loading font information for U+msa on input line 27. - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd -File: umsa.fd 2013/01/14 v3.01 AMS symbols A -) -LaTeX Font Info: Try loading font information for U+msb on input line 27. - -(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd -File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) -LaTeX Font Info: Try loading font information for OMS+cmr on input line 78. - -(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd -File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions -) -LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 78. - - -File: media/good_bad_square.png Graphic file (type png) - - -Package pdftex.def Info: media/good_bad_square.png used on input line 84. -(pdftex.def) Requested size: 468.01335pt x 104.89296pt. -) (./header_1.tex [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} - - <./media/epfl-logo.pdf> <./media/good_bad_square.png>]) (./questions/fr/mc1.te -x) (./questions/fr/mc2.tex) (./questions/fr/mc3.tex) -Underfull \hbox (badness 10000) in paragraph at lines 1--72 - - [] - -(./header_2.tex [2]) (./questions/fr/tf1.tex) (./questions/fr/tf2.tex) -Underfull \hbox (badness 10000) in paragraph at lines 1--72 - - [] - -(./extra_section.tex [3] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 46--47 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 46--47 - - [] - -[4] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 47--49 -[] - [] - -[5 - -] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 65--66 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 65--66 - - [] - -[6] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 86--87 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 86--87 - - [] - -[7] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 106--107 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 106--107 - - [] - -[8] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 107--108 -[] - [] - -[9 - -] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 127--128 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 127--128 - - [] - -[10] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 128--129 -[] - [] - -[11 - -]) -Overfull \hbox (0.39996pt too wide) in paragraph at lines 129--72 -[] - [] - -[12 - -] (./first_page.tex -File: media/epfl-logo.pdf Graphic file (type pdf) - -Package pdftex.def Info: media/epfl-logo.pdf used on input line 5. -(pdftex.def) Requested size: 82.38843pt x 23.9396pt. -File: media/good_bad_square.png Graphic file (type png) - - -Package pdftex.def Info: media/good_bad_square.png used on input line 84. -(pdftex.def) Requested size: 468.01335pt x 104.89296pt. -) (./header_1.tex [1 - -]) (./questions/fr/mc1.tex) -(./questions/fr/mc2.tex) (./questions/fr/mc3.tex) -Underfull \hbox (badness 10000) in paragraph at lines 1--72 - - [] - -(./header_2.tex [2]) (./questions/fr/tf1.tex) (./questions/fr/tf2.tex) -Underfull \hbox (badness 10000) in paragraph at lines 1--72 - - [] - -(./extra_section.tex [3] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 46--47 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 46--47 - - [] - -[4] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 47--49 -[] - [] - -[5 - -] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 65--66 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 65--66 - - [] - -[6] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 86--87 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 86--87 - - [] - -[7] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 106--107 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 106--107 - - [] - -[8] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 107--108 -[] - [] - -[9 - -] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 127--128 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 127--128 - - [] - -[10] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 128--129 -[] - [] - -[11 - -]) -Overfull \hbox (0.39996pt too wide) in paragraph at lines 129--72 -[] - [] - -[12 - -] (./first_page.tex -File: media/epfl-logo.pdf Graphic file (type pdf) - -Package pdftex.def Info: media/epfl-logo.pdf used on input line 5. -(pdftex.def) Requested size: 82.38843pt x 23.9396pt. -File: media/good_bad_square.png Graphic file (type png) - - -Package pdftex.def Info: media/good_bad_square.png used on input line 84. -(pdftex.def) Requested size: 468.01335pt x 104.89296pt. -) (./header_1.tex [1 - -]) (./questions/fr/mc1.tex) -(./questions/fr/mc2.tex) (./questions/fr/mc3.tex) -Underfull \hbox (badness 10000) in paragraph at lines 1--72 - - [] - -(./header_2.tex [2]) (./questions/fr/tf1.tex) (./questions/fr/tf2.tex) -Underfull \hbox (badness 10000) in paragraph at lines 1--72 - - [] - -(./extra_section.tex [3] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 46--47 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 46--47 - - [] - -[4] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 47--49 -[] - [] - -[5 - -] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 65--66 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 65--66 - - [] - -[6] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 86--87 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 86--87 - - [] - -[7] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 106--107 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 106--107 - - [] - -[8] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 107--108 -[] - [] - -[9 - -] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 127--128 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 127--128 - - [] - -[10] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 128--129 -[] - [] - -[11 - -]) -Overfull \hbox (0.39996pt too wide) in paragraph at lines 129--72 -[] - [] - -[12 - -] (./first_page.tex -File: media/epfl-logo.pdf Graphic file (type pdf) - -Package pdftex.def Info: media/epfl-logo.pdf used on input line 5. -(pdftex.def) Requested size: 82.38843pt x 23.9396pt. -File: media/good_bad_square.png Graphic file (type png) - - -Package pdftex.def Info: media/good_bad_square.png used on input line 84. -(pdftex.def) Requested size: 468.01335pt x 104.89296pt. -) (./header_1.tex [1 - -]) (./questions/fr/mc1.tex) -(./questions/fr/mc2.tex) (./questions/fr/mc3.tex) -Underfull \hbox (badness 10000) in paragraph at lines 1--72 - - [] - -(./header_2.tex [2]) (./questions/fr/tf1.tex) (./questions/fr/tf2.tex) -Underfull \hbox (badness 10000) in paragraph at lines 1--72 - - [] - -(./extra_section.tex [3] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 46--47 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 46--47 - - [] - -[4] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 47--49 -[] - [] - -[5 - -] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 65--66 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 65--66 - - [] - -[6] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 86--87 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 86--87 - - [] - -[7] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 106--107 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 106--107 - - [] - -[8] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 107--108 -[] - [] - -[9 - -] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 127--128 -[] - [] - - -Underfull \hbox (badness 10000) in paragraph at lines 127--128 - - [] - -[10] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 128--129 -[] - [] - -[11 - -]) -Overfull \hbox (0.39996pt too wide) in paragraph at lines 129--72 -[] - [] - -[12 - -] (./exam.aux) ) -Here is how much of TeX's memory you used: - 16339 strings out of 493029 - 307592 string characters out of 6136233 - 386155 words of memory out of 5000000 - 19429 multiletter control sequences out of 15000+600000 - 14821 words of font info for 38 fonts, out of 8000000 for 9000 - 1141 hyphenation exceptions out of 8191 - 54i,22n,66p,407b,609s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-t1.enc} -Output written on exam.pdf (48 pages, 420360 bytes). -PDF statistics: - 238 PDF objects out of 1000 (max. 8388607) - 166 compressed objects within 2 object streams - 0 named destinations out of 1000 (max. 500000) - 23 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/amc-templates/amc_template/exam.pdf b/amc-templates/amc_template/exam.pdf index e32338e..330f49c 100644 Binary files a/amc-templates/amc_template/exam.pdf and b/amc-templates/amc_template/exam.pdf differ diff --git a/amc-templates/amc_template/exam.synctex.gz b/amc-templates/amc_template/exam.synctex.gz deleted file mode 100644 index 4527bde..0000000 Binary files a/amc-templates/amc_template/exam.synctex.gz and /dev/null differ diff --git a/amc-templates/amc_template/extra_section.tex b/amc-templates/amc_template/extra_section.tex index 99bf9e9..b6989df 100644 --- a/amc-templates/amc_template/extra_section.tex +++ b/amc-templates/amc_template/extra_section.tex @@ -1,129 +1,129 @@ \setlength{\parindent}{0pt}% \newpage %*******************************************************************% % Suppress begin-question texts \renewcommand{\AMCbeginQuestion}[2]{\QuestionText{#1}} \def\QuestionText{\TEXT} \def\TEXT#1{} \def\NOTEXT#1{} \setlength{\parindent}{0pt}% %*******************************************************************% \subsection*{Trois\`eme partie, questions de type ouvert} \noindent R\'epondre dans l’espace d\'edi\'e. Votre r\'eponse doit \^etre soigneusement justifi\'ee, toutes les \'etapes de votre raisonnement doivent figurer dans votre r\'eponse. Laisser libres les cases \`a cocher\,: elles sont r\'eserv\'ees au correcteur. \bigskip %% Leave at least 2 empty lines after the \bigskip %*******************************************************************% % Question A - 5 points %*******************************************************************% \begin{description} \addtocounter{AMCquestionaff}{1} \item[Question~\theAMCquestionaff :] \textit{Cette question est not\'ee sur 5 points.} \end{description} \correctorPointsPerGroup{5/3} \correctorThreeFive{q-open-A}{~} \correctorStop Soit $\Psi : \R_3[x]\to \R_3[x]$ l'application d\'efinie par $$\Psi(p)(x) = (x-1)p'(x)\text{.}$$ \begin{itemize} - \item [1.] Montrer que $\Psi$ est lin\'eaire. - \item [2.] Calculer la matrice $[\Psi]_{E,E}$ de $\Psi$ par rapport \`a la base canonique $E = (1,x, x^2, x^3)$. - \item [3.] Calculer le rang de $\Psi$. + \item [1.] Montrer que $\Psi$ est lin\'eaire. (1 pt) + \item [2.] Calculer la matrice $[\Psi]_{E,E}$ de $\Psi$ par rapport \`a la base canonique $E = (1,x, x^2, x^3)$. (2 pts) + \item [3.] Calculer le rang de $\Psi$. (2 pt) \end{itemize} \OpenGrid{16cm} \FullPageOpenGrid %*******************************************************************% %*******************************************************************% % Question B - 6 points %*******************************************************************% \begin{description} \item[Question~\theAMCquestionaff :] \textit{Cette question est not\'ee sur 6 points.} \end{description} \correctorPointsPerGroup{6/2} \correctorTwoFive{q-open-B}{~} \correctorStop \noindent Soient $V$ un $K$-espace vectoriel de dimension finie, et $X,Y$ deux sous-espaces vectoriels de $V$ tels que $\operatorname{dim}(X) \geq \operatorname{dim}(Y)$. Montrer qu'il existe une application lin\'eaire $T : V\to V$ telle que $T(X) = Y$. \vskip 5pt -\OpenGrid{22cm} +\OpenBox{22cm} %*************************** % Question C - 6points %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{description} \item[Question~\theAMCquestionaff :] \textit{Cette question est not\'ee sur 6 points.} \end{description} \correctorSix{q-open-C}{~} \correctorStop Soit $\alpha\in \C$. \begin{itemize} \item [1.] Trouver la formule explicite pour les éléments de la matrice $A_n = \begin{pmatrix}\alpha &1\\ 0 &\alpha\end{pmatrix}^{n}$, o\`u $n \geq 1$ est un entier. Montrer la formule par r\'eccurence. % \item [1.] Trouver la formule pour $\begin{pmatrix}\alpha &1\\ 0 &\alpha\end{pmatrix}^{n}$, o\`u $n \geq 1$ est un entier. Montrer la formule par r\'eccurance. \item [2.] On pose $\alpha = 1+\textrm{i}$. Calculer $\alpha^{99}$ et $\alpha^{100}$. \item [3.] Calculer $\begin{pmatrix} 1+\textrm{i} &1\\ 0 &1+\textrm{i}\end{pmatrix}^{100}$. \end{itemize} \OpenGrid{17cm} % Question D - 10points %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{description} \item[Question~\theAMCquestionaff :] \textit{Cette question est not\'ee sur 10 points.} \end{description} \correctorTenHalf{q-open-D}{~} \correctorStop Soit $\alpha\in \C$. \begin{itemize} \item [1.] Trouver la formule explicite pour les éléments de la matrice $A_n = \begin{pmatrix}\alpha &1\\ 0 &\alpha\end{pmatrix}^{n}$, o\`u $n \geq 1$ est un entier. Montrer la formule par r\'eccurence. % \item [1.] Trouver la formule pour $\begin{pmatrix}\alpha &1\\ 0 &\alpha\end{pmatrix}^{n}$, o\`u $n \geq 1$ est un entier. Montrer la formule par r\'eccurance. \item [2.] On pose $\alpha = 1+\textrm{i}$. Calculer $\alpha^{99}$ et $\alpha^{100}$. \item [3.] Calculer $\begin{pmatrix} 1+\textrm{i} &1\\ 0 &1+\textrm{i}\end{pmatrix}^{100}$. \end{itemize} \OpenGrid{17cm} \FullPageOpenGrid % Question E - 15points %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{description} -\item[Question~\theAMCquestionaff :] \textit{Cette question est not\'ee sur 15 points.} +\item[Question~\theAMCquestionaff :] \textit{Cette question est not\'ee sur 20 points.} \end{description} -\correctorThirty{q-open-C}{~} +\correctorTwenty{q-open-C}{~} \correctorStop Soit $\alpha\in \C$. \begin{itemize} \item [1.] Trouver la formule explicite pour les éléments de la matrice $A_n = \begin{pmatrix}\alpha &1\\ 0 &\alpha\end{pmatrix}^{n}$, o\`u $n \geq 1$ est un entier. Montrer la formule par r\'eccurence. % \item [1.] Trouver la formule pour $\begin{pmatrix}\alpha &1\\ 0 &\alpha\end{pmatrix}^{n}$, o\`u $n \geq 1$ est un entier. Montrer la formule par r\'eccurance. \item [2.] On pose $\alpha = 1+\textrm{i}$. Calculer $\alpha^{99}$ et $\alpha^{100}$. \item [3.] Calculer $\begin{pmatrix} 1+\textrm{i} &1\\ 0 &1+\textrm{i}\end{pmatrix}^{100}$. \end{itemize} \OpenGrid{17cm} \FullPageOpenGrid \FullPageOpenGrid \ No newline at end of file diff --git a/amc-templates/amc_template/style_extra.tex b/amc-templates/amc_template/old_style_extra.tex similarity index 100% copy from amc-templates/amc_template/style_extra.tex copy to amc-templates/amc_template/old_style_extra.tex diff --git a/amc-templates/amc_template/printA3Booklet.sh b/amc-templates/amc_template/printA3Booklet.sh new file mode 100755 index 0000000..78faa89 --- /dev/null +++ b/amc-templates/amc_template/printA3Booklet.sh @@ -0,0 +1,29 @@ +#!/bin/zsh + +zmodload zsh/mathfunc + +f="$1"; shift + +if [[ ! -f "$f" ]]; then + echo "Not a file: “$f”" >&2 + exit 1 +fi + +total_pages="$(pdfinfo "$f" | grep '^Pages:' | grep -Po '\d+$')" + +pages="${2-$total_pages}" + +sig="$(( int(ceil(pages / 4.) * 4) ))" + +pdf="$(mktemp --suffix=.pdf)" + +pdfbook --a3paper --signature "$sig" -o "$pdf" "$f" "1-$pages" + +#two-sided-long-edge apparently only means *long edge* when in portrait mode +lpr \ + -o media=A3 \ + -o sides=two-sided-long-edge \ + -o landscape=true \ + "$pdf" + +unlink "$pdf" diff --git a/amc-templates/amc_template/style_extra.tex b/amc-templates/amc_template/style_extra.tex index a49504e..1b8d98d 100644 --- a/amc-templates/amc_template/style_extra.tex +++ b/amc-templates/amc_template/style_extra.tex @@ -1,1075 +1,1294 @@ %%Package for tabular in openquestion \usepackage{array} %% Default values for open questions: \AMCopenOpts{lines=10,lineheight=2ex,framerulecol=black,dots=false} \newcommand{\letter}{A} \makeatletter \renewcommand{\theenumi}{\alph{enumi}} \renewcommand{\labelenumi}{(\theenumi)} \makeatother %% OpenBox commands ============================ \newcommand{\OpenBox}[1]{ \noindent \fbox{ \centering - \begin{minipage}{1.0\textwidth} + \begin{minipage}{.97\textwidth} ~ \vspace{#1} ~ \end{minipage} } } \newcommand{\FullPageOpenBox}{ \clearpage \OpenBox{24.5cm} - \vspace{-5mm} +% \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} + %\vspace{-5mm} } \newcommand{\FullPageOpenGridForever}{ \loop \ifnum \thepage < \totalPages \FullPageOpenGrid \repeat } %% Extra sheets message \newcommand{\ExtraSheet}{\mbox{}\hfil\smash{\fbox{\scriptsize\quad Si vous avez besoin de place suppl\'ementaire, demandez une feuille quadrill\'ee \`a un des surveillants\quad}}}% %% 5 boxes correctors (0,1/4,1/2,3/4 and 1 * openquestionmax) ==================== \newcommand{\openquestionmax}{1} \newcommand{\correctorPointsPerGroup}[1]{ \renewcommand{\openquestionmax}{#1} } \newcommand{\correctorChoices}{\correctchoice[0]{}\scoring{b=0}\correctchoice[Y]{}\scoring{b=\openquestionmax/4}\correctchoice[X]{}\scoring{b=\openquestionmax/2}\correctchoice[W]{}\scoring{b=\openquestionmax*3/4}\correctchoice[V]{\qquad}\scoring{b=\openquestionmax}} \newcommand{\correctorOneFive}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax} #3~\\ -\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\makebox[218.6pt][c]{}} +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\makebox[301pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorTwoFive}[3][0]{ \par \noindent\begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*2} #3~\\ -\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\makebox[109.8pt][c]{}} +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\makebox[192.2pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } \newcommand{\correctorThreeFive}[3][0]{ \par \noindent \begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*3} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoices\correctorChoices\correctorChoices\makebox[1pt][c]{}} \end{questionmultx} \vspace{-55pt}~ \par } +%% 3 boxes correctors (0,1/2,and 1 * openquestionmax) ==================== + +\newcommand{\correctorChoicesSimple}{\correctchoice[0]{}\scoring{b=0}\correctchoice[Y]{}\scoring{b=\openquestionmax/2}\correctchoice[X]{}{\qquad}\scoring{b=\openquestionmax}} + +\newcommand{\correctorOneThree}[3][0]{ +\par +\noindent +\begin{questionmultx}{#2}\bareme{MAX=\openquestionmax} +#3~\\ +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\makebox[340pt][c]{}} +\end{questionmultx} +\vspace{-55pt}~ +\par +} + +\newcommand{\correctorTwoThree}[3][0]{ +\par +\noindent +\begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*2} +#3~\\ +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\makebox[260pt][c]{}} +\end{questionmultx} +\vspace{-55pt}~ +\par +} + +\newcommand{\correctorThreeThree}[3][0]{ +\par +\noindent +\begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*3} +#3~\\ +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\makebox[180pt][c]{}} +\end{questionmultx} +\vspace{-55pt}~ +\par +} + +\newcommand{\correctorFourThree}[3][0]{ +\par +\noindent +\begin{questionmultx}{#2}\bareme{MAX=\openquestionmax*4} +#3~\\ +\noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\correctorChoicesSimple\makebox[100pt][c]{}} +\end{questionmultx} +\vspace{-55pt}~ +\par +} + + % Standard points correctors boxes =================================== \newcommand{\correctorChoicesOne}{ \wrongchoice[0]{\tiny{0}}\scoring{0} \correctchoice[Y]{\tiny{1}\qquad}\scoring{1}} \newcommand{\correctorOne}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=1} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% -{\makebox[100ex][l]{\correctorChoicesOne}} +{\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[100ex][l]{\correctorChoicesTwo}} +{\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[100ex][l]{\correctorChoicesThree}} +{\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[100ex][l]{\correctorChoicesFour}} +{\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[100ex][l]{\correctorChoicesFive}} +{\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[100ex][l]{\correctorChoicesSix}} +{\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[100ex][l]{\correctorChoicesSeven}} +{\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[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[100ex][l]{\correctorChoicesNine}} +{\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[100ex][l]{\correctorChoicesTen}} +{\makebox[0.9\linewidth][l]{\correctorChoicesTen}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesEleven}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{llllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} \\ \wrongchoice[T]{\tiny{6}}\scoring{6} & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \correctchoice[O]{\tiny{11}}\scoring{11} \\ \end{tabular}}} \newcommand{\correctorEleven}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=11} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ -\parbox{71ex}{\linespread{1.25}\selectfont \correctorChoicesEleven\makebox[0pt][c]{}} +\parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesEleven\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesTwelve}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} \\ & \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \correctchoice[N]{\tiny{12}\qquad}\scoring{12} \\ \end{tabular}}} \newcommand{\correctorTwelve}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=12} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ -\parbox{71ex}{\linespread{1.25}\selectfont \correctorChoicesTwelve\makebox[0pt][c]{}} +\parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwelve\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorChoicesThirteen}{ \setlength{\tabcolsep}{0.08em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \hspace{.2cm}\begin{tabular}{lllllll} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{1}}\scoring{1} & \wrongchoice[X]{\tiny{2}}\scoring{2} & \wrongchoice[W]{\tiny{3}}\scoring{3} & \wrongchoice[V]{\tiny{4}}\scoring{4} & \wrongchoice[U]{\tiny{5}}\scoring{5} & \wrongchoice[T]{\tiny{6}}\scoring{6} \\ \wrongchoice[S]{\tiny{7}}\scoring{7} & \wrongchoice[R]{\tiny{8}}\scoring{8} & \wrongchoice[Q]{\tiny{9}}\scoring{9} & \wrongchoice[P]{\tiny{10}}\scoring{10} & \wrongchoice[O]{\tiny{11}}\scoring{11} & \wrongchoice[N]{\tiny{12}}\scoring{12} & \correctchoice[M]{\tiny{13}}\scoring{13} \\ \end{tabular}}} \newcommand{\correctorThirteen}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=13} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ -\parbox{71ex}{\linespread{1.25}\selectfont \correctorChoicesThirteen\makebox[0pt][c]{}} +\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{71ex}{\linespread{1.25}\selectfont \correctorChoicesFourteen\makebox[0pt][c]{}} +\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{71ex}{\linespread{1.25}\selectfont \correctorChoicesFifteen\makebox[0pt][c]{}} +\parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesFifteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } -\newcommand{\correctorChoicesThirty}{ + +\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}{lllllllllll} +\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[R]{\tiny{8}}\scoring{8} +\\ \wrongchoice[Q]{\tiny{9}}\scoring{9} & -\wrongchoice[P]{\tiny{10}}\scoring{10} -\\ & +\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} -\\ +\correctchoice[J]{\tiny{16}}\scoring{16} \end{tabular}}} -\newcommand{\correctorThirty}[3][0]{% +\newcommand{\correctorSixteen}[3][0]{% \par \noindent -\begin{question}{#2}\bareme{MAX=30} +\begin{question}{#2}\bareme{MAX=16} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ -\parbox{71ex}{\linespread{1.25}\selectfont \correctorChoicesThirty\makebox[0pt][c]{}} +\parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesSixteen\makebox[0pt][c]{}} \hspace*{5ex}} \end{question} \vspace{-55pt}~ \par } +\newcommand{\correctorChoicesNineteen}{ + %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} + \setlength{\tabcolsep}{0.08em} % for the horizontal padding + {\renewcommand{\arraystretch}{1.2}% for the vertical padding + \hspace{.2cm}\begin{tabular}{lllllllllll} + \wrongchoice[0]{\tiny{0}}\scoring{0} & + \wrongchoice[Y]{\tiny{1}}\scoring{1} & + \wrongchoice[X]{\tiny{2}}\scoring{2} & + \wrongchoice[W]{\tiny{3}}\scoring{3} & + \wrongchoice[V]{\tiny{4}}\scoring{4} & + \wrongchoice[U]{\tiny{5}}\scoring{5} & + \wrongchoice[T]{\tiny{6}}\scoring{6} & + \wrongchoice[S]{\tiny{7}}\scoring{7} & + \wrongchoice[R]{\tiny{8}}\scoring{8} & + \wrongchoice[Q]{\tiny{9}}\scoring{9} + \\ + \wrongchoice[P]{\tiny{10}}\scoring{10}& + \wrongchoice[O]{\tiny{11}}\scoring{11} & + \wrongchoice[N]{\tiny{12}}\scoring{12} & + \wrongchoice[M]{\tiny{13}}\scoring{13} & + \wrongchoice[L]{\tiny{14}}\scoring{14} & + \wrongchoice[K]{\tiny{15}}\scoring{15}& + \wrongchoice[I]{\tiny{16}}\scoring{16} & + \wrongchoice[H]{\tiny{17}}\scoring{17} & + \wrongchoice[G]{\tiny{18}}\scoring{18} & + \correctchoice[F]{\tiny{19}}\scoring{19} + \\ +\end{tabular}}} +\newcommand{\correctorNineteen}[3][0]{% + \par + \noindent + \begin{question}{#2}\bareme{MAX=19} + #3~\\ + \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ + \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesNineteen\makebox[0pt][c]{}} + \hspace*{5ex}} + \end{question} + \vspace{-55pt}~ + \par +} + +\newcommand{\correctorChoicesTwenty}{ + %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} + \setlength{\tabcolsep}{0.08em} % for the horizontal padding + {\renewcommand{\arraystretch}{1.2}% for the vertical padding + \hspace{.2cm}\begin{tabular}{lllllllllll} + \wrongchoice[0]{\tiny{0}}\scoring{0} & + \wrongchoice[Y]{\tiny{1}}\scoring{1} & + \wrongchoice[X]{\tiny{2}}\scoring{2} & + \wrongchoice[W]{\tiny{3}}\scoring{3} & + \wrongchoice[V]{\tiny{4}}\scoring{4} & + \wrongchoice[U]{\tiny{5}}\scoring{5} & + \wrongchoice[T]{\tiny{6}}\scoring{6} & + \wrongchoice[S]{\tiny{7}}\scoring{7} & + \wrongchoice[R]{\tiny{8}}\scoring{8} & + \wrongchoice[Q]{\tiny{9}}\scoring{9} & + \wrongchoice[P]{\tiny{10}}\scoring{10} + \\ & + \wrongchoice[O]{\tiny{11}}\scoring{11} & + \wrongchoice[N]{\tiny{12}}\scoring{12} & + \wrongchoice[M]{\tiny{13}}\scoring{13} & + \wrongchoice[L]{\tiny{14}}\scoring{14} & + \wrongchoice[K]{\tiny{15}}\scoring{15} & + \wrongchoice[J]{\tiny{16}}\scoring{16} & + \wrongchoice[I]{\tiny{17}}\scoring{17} & + \wrongchoice[H]{\tiny{18}}\scoring{18} & + \wrongchoice[G]{\tiny{19}}\scoring{19} & + \wrongchoice[F]{\tiny{20}}\scoring{20} + \\ +\end{tabular}}} +\newcommand{\correctorTwenty}[3][0]{% + \par + \noindent + \begin{question}{#2}\bareme{MAX=20} + #3~\\ + \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ + \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwenty\makebox[0pt][c]{}} + \hspace*{5ex}} + \end{question} + \vspace{-55pt}~ + \par +} + +\newcommand{\correctorChoicesTwentyFive}{ + %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} + \setlength{\tabcolsep}{0.08em} % for the horizontal padding + {\renewcommand{\arraystretch}{1.2}% for the vertical padding + \hspace{.2cm}\begin{tabular}{llllllllll} + \wrongchoice[0]{\tiny{0}}\scoring{0} & + \wrongchoice[Y]{\tiny{1}}\scoring{1} & + \wrongchoice[X]{\tiny{2}}\scoring{2} & + \wrongchoice[W]{\tiny{3}}\scoring{3} & + \wrongchoice[V]{\tiny{4}}\scoring{4} & + \wrongchoice[U]{\tiny{5}}\scoring{5} & + \wrongchoice[T]{\tiny{6}}\scoring{6} & + \wrongchoice[S]{\tiny{7}}\scoring{7} & + \wrongchoice[R]{\tiny{8}}\scoring{8} & + \wrongchoice[Q]{\tiny{9}}\scoring{9} + \\ & + \wrongchoice[P]{\tiny{10}}\scoring{10} & + \wrongchoice[O]{\tiny{11}}\scoring{11} & + \wrongchoice[N]{\tiny{12}}\scoring{12} & + \wrongchoice[M]{\tiny{13}}\scoring{13} & + \wrongchoice[L]{\tiny{14}}\scoring{14} & + \wrongchoice[K]{\tiny{15}}\scoring{15} & + \wrongchoice[J]{\tiny{16}}\scoring{16} & + \wrongchoice[I]{\tiny{17}}\scoring{17} & + \wrongchoice[H]{\tiny{18}}\scoring{18} & + \wrongchoice[G]{\tiny{19}}\scoring{19} + \\ & + \wrongchoice[F]{\tiny{20}}\scoring{20} & + \wrongchoice[E]{\tiny{21}}\scoring{21} & + \wrongchoice[D]{\tiny{22}}\scoring{22} & + \wrongchoice[C]{\tiny{23}}\scoring{23} & + \wrongchoice[B]{\tiny{24}}\scoring{24} & + \wrongchoice[A]{\tiny{25}}\scoring{25} + \\ +\end{tabular}}} +\newcommand{\correctorTwentyFive}[3][0]{% + \par + \noindent + \begin{question}{#2}\bareme{MAX=25} + #3~\\ + \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ + \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesTwentyFive\makebox[0pt][c]{}} + \hspace*{5ex}} + \end{question} + \vspace{-55pt}~ + \par +} + +\newcommand{\correctorChoicesThirty}{ + %\newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} + \setlength{\tabcolsep}{0.08em} % for the horizontal padding + {\renewcommand{\arraystretch}{1.2}% for the vertical padding + \hspace{.2cm}\begin{tabular}{lllllllllll} + \wrongchoice[0]{\tiny{0}}\scoring{0} & + \wrongchoice[Y]{\tiny{1}}\scoring{1} & + \wrongchoice[X]{\tiny{2}}\scoring{2} & + \wrongchoice[W]{\tiny{3}}\scoring{3} & + \wrongchoice[V]{\tiny{4}}\scoring{4} & + \wrongchoice[U]{\tiny{5}}\scoring{5} & + \wrongchoice[T]{\tiny{6}}\scoring{6} & + \wrongchoice[S]{\tiny{7}}\scoring{7} & + \wrongchoice[R]{\tiny{8}}\scoring{8} & + \wrongchoice[Q]{\tiny{9}}\scoring{9} & + \wrongchoice[P]{\tiny{10}}\scoring{10} + \\ & + \wrongchoice[O]{\tiny{11}}\scoring{11} & + \wrongchoice[N]{\tiny{12}}\scoring{12} & + \wrongchoice[M]{\tiny{13}}\scoring{13} & + \wrongchoice[L]{\tiny{14}}\scoring{14} & + \wrongchoice[K]{\tiny{15}}\scoring{15} & + \wrongchoice[J]{\tiny{16}}\scoring{16} & + \wrongchoice[I]{\tiny{17}}\scoring{17} & + \wrongchoice[H]{\tiny{18}}\scoring{18} & + \wrongchoice[G]{\tiny{19}}\scoring{19} & + \wrongchoice[F]{\tiny{20}}\scoring{20} + \\ & + \wrongchoice[E]{\tiny{21}}\scoring{21} & + \wrongchoice[D]{\tiny{22}}\scoring{22} & + \wrongchoice[C]{\tiny{23}}\scoring{23} & + \wrongchoice[B]{\tiny{24}}\scoring{24} & + \wrongchoice[A]{\tiny{25}}\scoring{25} & + \wrongchoice[AY]{\tiny{26}}\scoring{26} & + \wrongchoice[AX]{\tiny{27}}\scoring{27} & + \wrongchoice[AW]{\tiny{28}}\scoring{28} & + \wrongchoice[AV]{\tiny{29}}\scoring{29} & + \correctchoice[AU]{\tiny{30}}\scoring{30} + \\ +\end{tabular}}} +\newcommand{\correctorThirty}[3][0]{% + \par + \noindent + \begin{question}{#2}\bareme{MAX=30} + #3~\\ + \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}{ + \parbox{0.85\linewidth}{\linespread{1.25}\selectfont \correctorChoicesThirty\makebox[0pt][c]{}} + \hspace*{5ex}} + \end{question} + \vspace{-55pt}~ + \par +} + %% half points correctors boxes =================================== \newcommand{\correctorChoicesTwoHalf}{ \setlength{\tabcolsep}{0em} % for the horizontal padding {\renewcommand{\arraystretch}{1.2}% for the vertical padding \newcolumntype{L}{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{2em}} \hspace{-0.25cm}\begin{tabular}{LLLLL} \wrongchoice[0]{\tiny{0}}\scoring{0} & \wrongchoice[Y]{\tiny{.5}}\scoring{0.5} & \wrongchoice[X]{\tiny{1}}\scoring{1} & \wrongchoice[W]{\tiny{.5}}\scoring{1.5} & \correctchoice[V]{\tiny{2}}\scoring{2} \\ \end{tabular}}} \newcommand{\correctorTwoHalf}[3][0]{% \par \noindent \begin{question}{#2}\bareme{MAX=2} #3~\\ \noindent\AMCOpen{lines=#1,boxframerulecol=lightgray,framerulecol=white}% -{\makebox[77ex][l]{\correctorChoicesTwoHalf}} +{\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[77ex][l]{\correctorChoicesThreeHalf}} +{\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[77ex][l]{\correctorChoicesFourHalf}} +{\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[77ex][l]{\correctorChoicesFiveHalf}} +{\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[77ex][l]{\correctorChoicesSixHalf}} +{\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[77ex][l]{\correctorChoicesSevenHalf}} +{\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[77ex][l]{\correctorChoicesEightHalf}} +{\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[77ex][l]{\correctorChoicesNineHalf}} +{\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[77ex][l]{\correctorChoicesTenHalf}} +{\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[77ex][l]{\correctorChoicesElevenHalf}} +{\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[77ex][l]{\correctorChoicesTwelveHalf}} +{\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[77ex][l]{\correctorChoicesThirteenHalf}} +{\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[77ex][l]{\correctorChoicesFourteenHalf}} +{\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[77ex][l]{\correctorChoicesFifteenHalf}} +{\makebox[0.9\linewidth][l]{\correctorChoicesFifteenHalf}} \end{question} \vspace{-55pt}~ \par } \newcommand{\correctorStop}{ \bigskip \noindent } diff --git a/amc-templates/amc_template/test.pdf b/amc-templates/amc_template/test.pdf new file mode 100644 index 0000000..318cc3b Binary files /dev/null and b/amc-templates/amc_template/test.pdf differ diff --git a/local/stats/amcstats b/local/stats/amcstats index faabe35..28c8709 100755 --- a/local/stats/amcstats +++ b/local/stats/amcstats @@ -1,283 +1,283 @@ #!/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[$prof] = $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.php b/local/stats/lib/lib_amcstats.php index ca8a438..31e570b 100755 --- a/local/stats/lib/lib_amcstats.php +++ b/local/stats/lib/lib_amcstats.php @@ -1,864 +1,864 @@ filename = $filename; $this->teacher = $teacher; $this->exam_points = $exam_points; $raw_data = file($this->filename, FILE_IGNORE_NEW_LINES); $this->raw_data = array(); foreach($raw_data as $line) { $line = array_map("clean_array", explode(';', $line)); $line = array_map("decimal_conversion", $line); $this->raw_data[] = $line; } $this->parseHeader(); $this->parseStudents($only_questions, $inverse_filter, $external); } public function getStudents() { return $this->students; } protected function parseHeader() { if (isset($this->raw_data[0])) //is_array($this->raw_data[0]) || is_object($this->raw_data[0])) { foreach($this->raw_data[0] as $col_id => $value) { // Analyse header from CSV file, based on content $item = array(); switch ($value) { case "ID": case "NAME": case "EMAIL": case "SECTION": case "Mark": $item['name'] = $value; $item['type'] = "info"; break; case "SCIPER": $item['name'] = $value; $item['type'] = "unique_id"; break; default: $item['name'] = $value; if (preg_match('/^TICKED:/', $value)) { $item['name'] = preg_replace('/^TICKED:/', '', $value); $item['type'] = "ticked"; } else { $item['type'] = "question"; $item['subtype'] = $this->guessSubtype($col_id); } } // Stats will be computed at a later stage $item['stats'] = null; $this->columns[] = $item; } } } protected function guessSubtype($col_id) { $subtype = null; $min_points = 0; $max_points = 0; $decimal = false; foreach($this->raw_data as $line) { if (preg_match('/\./', $line[$col_id])) $decimal = true; if ($line[$col_id] > $max_points) $max_points = $line[$col_id]; } //Tmp Global Issues //if ($max_points == 1)return 'mc'; else return 'tf'; //Tmp Euler //if ($max_points == 1)return 'mc'; else return 'open'; //return 'open'; // This only works for MATHS exams... if ($decimal or $max_points > 3) { // Only open questions have decimal points return 'open'; } if ($max_points == 3) return 'mc'; if ($max_points == 1) return 'tf'; return 'unknown'; } protected function getColIdByName($name) { foreach ($this->columns as $id => $col) if ($col['name'] == $name) return $id; throw new Exception('Column not found: '.$name); } protected function getColIdsByType($type, $name = null) { $ids = array(); if (is_null($name)) { foreach ($this->columns as $id => $col) if ($col['type'] == $type) $ids[] = $id; } else { foreach ($this->columns as $id => $col) if ($col['type'] == $type and $col['name'] == $name) $ids[] = $id; } if (count($ids) == 0) { if (is_null($name)) throw new Exception('Column type not found: '.$type); throw new Exception('Column type not found: '.$type.'/'.$name); } if (count($ids) == 1) return $ids[0]; return $ids; } protected function getQuestionNameByColId($id) { if (array_key_exists($id, $this->columns) and $this->columns[$id]['type'] == 'question') return $this->columns[$id]['name']; throw new Exception('Column not found, or is not a question: '.$id); } protected function getMaximumPointsByColId($id) { $maximum = 0.0; foreach($this->raw_data as $student) if ((float)$student[$id] > $maximum) $maximum = (float)$student[$id]; return $maximum; } protected function parseStudents($only_questions, $inverse_filter, $external) { foreach($this->raw_data as $line => $student) { if ($line == 0) continue; // skip header $data = array('teacher' => $this->teacher); foreach(array('ID', 'SCIPER', 'NAME', 'EMAIL', 'SECTION') as $key) { $data[$key] = $student[$this->getColIdByName($key)]; } // Get points $points = array(); $data['items'] = array(); foreach($this->getColIdsByType('question') as $col) { $item = array(); $item['name'] = $this->getQuestionNameByColId($col); - // Should we filter this question ? if (is_null($only_questions) or (!$inverse_filter and in_array($item['name'], $only_questions)) or ($inverse_filter and !in_array($item['name'], $only_questions)) ) { // Take this question into account $item['points'] = (float)$student[$col]; $item['max_points'] = $this->getMaximumPointsByColId($col); if ($item['max_points'] == 0) { // Cancelled question ? Count it right for everyone $item['right'] = 1; } else { $item['right'] = max((float)($item['points']/$item['max_points']), 0.0); } $points[] = $item['points']; $item['ticked'] = $student[$this->getColIdsByType('ticked', $item['name'])]; $item['type'] = $this->columns[$col]['type']; $item['subtype'] = $this->columns[$col]['subtype']; $data['items'][] = $item; } } $data['total'] = array_sum($points); $data['present'] = (int)(array_sum(array_map("square", $points))>0); $data['exam_points'] = $this->exam_points; // Compute marks if ($data['present']) { $data['positive_total'] = (float)max($data['total'], 0.0); if (is_null($external)) { $data['mark6'] = (float)min($data['positive_total']/($this->exam_points)*5.0+1, 6.0); } else { $output = array(); exec("./".$external." ".$data['total'], $output); $data['mark6'] = (float)trim($output[0]); } $data['quarter_mark6'] = (float)round($data['mark6']*4.0, 0)/4.0; } else { $data['positive_total'] = 'n/a'; $data['mark6'] = 'abs'; $data['quarter_mark6'] = 'abs'; } if (preg_match('/^FAKE/', $data['SCIPER'])) { if ($data['present']) $data['type'] = 'unregistered'; else $data['type'] = 'unused'; } else $data['type'] = 'student'; $this->students[] = $data; } } } // Compare students on total (higher to lower) function cmp_total($a, $b) { if ($a['total'] == $b['total']) { return 0; } return ($a['total'] < $b['total']) ? 1 : -1; } class ExamCalcs { protected $dataset = null; protected $tmp_dataset = null; public function __construct($dataset = null) { $this->dataset = array(); if (!is_null($dataset)) $this->dataset = $dataset; } public function addFile($teacher, $teacher_file, $max_points, $only_questions = null, $inverse_filter = false, $external = null) { #echo "Adding $teacher ($teacher_file) to the dataset ($max_points points).\n"; $AR = new AmcReader($teacher_file, $teacher, $max_points, $only_questions, $inverse_filter, $external); $this->addDataSet($AR->getStudents()); } public function addDataSet($data) { if (is_array($data) || is_object($data)) { foreach ($data as $student) $this->dataset[] = $student; } } public function filterBySections($sections, $update = true) { $dataset = array(); foreach ($this->dataset as $student) { if (is_array($sections)) { if (in_array($student['SECTION'], $sections)) $dataset[] = $student; } else { if ($student['SECTION'] == $sections) $dataset[] = $student; } } if ($update) $this->dataset = $dataset; return $dataset; } public function filterByTeachers($teachers, $update = true) { $dataset = array(); foreach ($this->dataset as $student) { if (is_array($teachers)) { if (in_array($student['teacher'], $teachers)) $dataset[] = $student; } else { if ($student['teacher'] == $teachers) $dataset[] = $student; } } if ($update) $this->dataset = $dataset; return $dataset; } public function getTeachers() { $teachers = array(); foreach ($this->dataset as $student) { if (!in_array($student['teacher'], $teachers)) $teachers[] = $student['teacher']; } return $teachers; } public function getSections() { $sections = array(); foreach ($this->dataset as $student) { $section = $student['SECTION']; if (!in_array($section, $sections) and $section != 'XXX') $sections[] = $section; } return $sections; } public function getQuestionsTxt() { $questions = array(); $items = array(); foreach ($this->dataset[0]['items'] as $item){ $questions[] = $item['name']; echo $item['name']; } return $questions; } public function printStatsOnCommonItems() { // Sort dataset by points $dataset = $this->sortByTotalPoints(false); if (count($dataset) < 3) throw new Exception('Dataset is too small.'); // Get items from the first student $items = array(); foreach ($this->dataset[0]['items'] as $item) $items[] = $item['name']; foreach ($dataset as $student) { // Get items for current student $tmp_items = array(); foreach ($student['items'] as $item) $tmp_items[] = $item['name']; // Keep only items in both '$items' AND '$tmp_items' $items = array_intersect($items, $tmp_items); } // Now, filter items in the dataset $filtered_dataset = array(); foreach ($dataset as $student) { if (!$student['present']) continue; $filtered_items = array(); foreach ($student['items'] as $item) { if (in_array($item['name'], $items)) $filtered_items[] = $item; } if (count($filtered_items)) { $student['items'] = $filtered_items; $filtered_dataset[] = $student; } } $dataset = $filtered_dataset; if (count($dataset) < 3) throw new Exception('Dataset is too small.'); // Compute limits $nb_students = count($dataset); $twenty_seven = (int)($nb_students*27.0/100); $upper_stop = $twenty_seven-1; $lower_start = $nb_students-$twenty_seven+1; #echo "$nb_students / $twenty_seven / 0 -> $upper_stop / $lower_start -> $nb_students \n"; $stats = array(); foreach ($dataset as $i => $student) { foreach ($student['items'] as $item) { $name = $item['name']; if (!array_key_exists($name, $stats)) $stats[$name] = array( '27%' => $twenty_seven, 'upper' => 0, 'lower' => 0, 'valid' => null, 'ticked'=> null, 'ticked_count'=> 0, 'empty_count'=> 0, 'type' => null, 'subtype' => null, 'max_points' => null, ); $stats[$name]['max_points'] = $item['max_points']; $stats[$name]['type'] = $item['type']; $stats[$name]['subtype'] = $item['subtype']; // Initialise 'ticked' table if (is_null($stats[$name]['ticked'])) { switch ($stats[$name]['subtype']) { case 'mc': $stats[$name]['ticked'] = array( 'A' => 0, 'B' => 0, 'C' => 0, 'D' => 0, 'multiple' => 0); break; case 'tf': $stats[$name]['ticked'] = array( 'TRUE' => 0, 'FALSE' => 0, 'multiple' => 0); break; default: $stats[$name]['ticked'] = array(); break; } } // Count right answers if ($item['right'] > 0) { // Save valid answer if (is_null($stats[$name]['valid'])) { switch ($stats[$name]['subtype']) { case 'tf': if ($item['ticked'] == 'A') $stats[$name]['valid'] = 'TRUE'; else $stats[$name]['valid'] = 'FALSE'; break; case 'mc': $stats[$name]['valid'] = $item['ticked']; break; case 'open': $stats[$name]['valid'] = 'n/a'; break; default: $stats[$name]['valid'] = 'n/a'; break; } } // 'upper 27%' and 'lower 27%' counters switch ($stats[$name]['subtype']) { case 'mc': case 'tf': if ($i <= $upper_stop) $stats[$name]['upper']++; if ($i >= $lower_start) $stats[$name]['lower']++; break; case 'open': if ($i <= $upper_stop) $stats[$name]['upper'] += $item['points']; if ($i >= $lower_start) $stats[$name]['lower'] += $item['points']; break; } } // Count empty answers if (empty($item['ticked'])) { $stats[$name]['empty_count']++; } else { // Stats on non-empty answers $stats[$name]['ticked_count']++; if (strlen($item['ticked']) > 1) { $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], 'multiple'); } else { switch ($item['subtype']) { case 'tf': if ($item['ticked'] == 'A') $field = 'TRUE'; if ($item['ticked'] == 'B') $field = 'FALSE'; $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $field); break; case 'mc': $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $item['ticked']); break; default: $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $item['ticked']); break; } } } } } // Compute more stats $tmp = array(); foreach ($stats as $name => $stat) { // Discrimination index // For open questions, change the '27%' value. if ($stat['subtype'] == 'open'){ $stat['upper'] = $stat['upper']/$stat['27%']; $stat['lower'] = $stat['lower']/$stat['27%']; $stat['27%'] = $stat['max_points']; //$stat['27%']*$stat['max_points']; } $stat['DI'] = ($stat['upper']-$stat['lower'])/(1.0*$stat['27%']); // Calculate percentages $ticked_percentage = array(); foreach ($stat['ticked'] as $t => $n) { $ticked_percentage[$t] = array( 'n' => $n, '%' => (float)(100.0*$n/$stat['ticked_count']), 'valid' => (int)($t == $stat['valid'])); } $stat['ticked'] = $ticked_percentage; $tmp[$name] = $stat; } $stats = $tmp; // Print CSV $previous_subtype = null; $header = '"question_id","subtype","27 %","upper","lower","DI","count","valid"'; $headerOpen = '"question_id","subtype","question pts %","avg pts upper","avg pts lower","DI","count","valid"'; foreach ($stats as $name => $stat) { if ($stat['subtype'] != $previous_subtype) { #if (!is_null($previous_subtype)) echo "\n"; if ($stat['subtype'] == 'open'){ echo $headerOpen; } else { echo $header; } if ($stat['subtype'] != 'open') { foreach ($stat['ticked'] as $answer => $data) echo ",\"[$answer] count\""; foreach ($stat['ticked'] as $answer => $data) echo ",\"[$answer] %\""; } echo "\n"; $previous_subtype = $stat['subtype']; } echo "$name,{$stat['subtype']},{$stat['27%']},{$stat['upper']},{$stat['lower']},{$stat['DI']},{$stat['ticked_count']}"; if ($stat['subtype'] == 'open') { echo ",\"n/a\""; } else { foreach ($stat['ticked'] as $answer => $data) if ($data['valid'] == 1) echo ",\"$answer\""; foreach ($stat['ticked'] as $answer => $data) echo ",{$data['n']}"; foreach ($stat['ticked'] as $answer => $data) echo ",{$data['%']}"; } echo "\n"; } } public function printLatexHistoCommandsOnCommonItems() { + 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 'tf': $stats[$name]['ticked'] = array( 'TRUE' => 0, 'FALSE' => 0); break; default: $stats[$name]['ticked'] = array(); break; } } // Count right answers if ($item['right'] > 0) { // Save valid answer if (is_null($stats[$name]['valid'])) { switch ($stats[$name]['subtype']) { case 'tf': if ($item['ticked'] == 'A') $stats[$name]['valid'] = 'TRUE'; else $stats[$name]['valid'] = 'FALSE'; break; case 'mc': $stats[$name]['valid'] = $item['ticked']; break; case 'open': $stats[$name]['valid'] = 'n/a'; break; default: $stats[$name]['valid'] = 'n/a'; break; } } } // Count empty answers if (empty($item['ticked'])) { $stats[$name]['empty_count']++; } else { // Stats on non-empty answers $stats[$name]['ticked_count']++; if (strlen($item['ticked']) == 1) { switch ($item['subtype']) { case 'tf': if ($item['ticked'] == 'A') $field = 'TRUE'; if ($item['ticked'] == 'B') $field = 'FALSE'; $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $field); break; case 'mc': $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $item['ticked']); break; default: $stats[$name]['ticked'] = $this->createAndIncrement($stats[$name]['ticked'], $item['ticked']); break; } } } } } // Compute more stats $tmp = array(); foreach ($stats as $name => $stat) { // Calculate percentages $ticked_percentage = array(); foreach ($stat['ticked'] as $t => $n) { $ticked_percentage[$t] = array( 'n' => $n, '%' => (float)(100.0*$n/$stat['ticked_count']), 'valid' => (int)($t == $stat['valid'])); } $stat['ticked'] = $ticked_percentage; $tmp[$name] = $stat; } $stats = $tmp; // Print CSV, by question, then teacher //histo colors $i = 0; foreach($this->getTeachers() as $teacher){ $i++; switch ($i) { case 1: echo "\\newcommand{\\" . $teacher . "}{\\textbf{" . $teacher . "}} \n"; break; case 2: echo "\\newcommand{\\" . $teacher . "}{{\color{red}\\textbf{" . $teacher . "}}} \n"; break; case 3: echo "\\newcommand{\\" . $teacher . "}{{\color{blue}\\textbf{" . $teacher . "}}} \n"; break; case 4: echo "\\newcommand{\\" . $teacher . "}{{\color{magenta}\\textbf{" . $teacher . "}}} \n"; break; case 5: echo "\\newcommand{\\" . $teacher . "}{{\color{cyan}\\textbf{" . $teacher . "}}} \n"; break; case 6: echo "\\newcommand{\\" . $teacher . "}{{\color{olive}\\textbf{" . $teacher . "}}} \n"; break; case 7: echo "\\newcommand{\\" . $teacher . "}{{\color{orange}\\textbf{" . $teacher . "}}} \n"; break; case 8: echo "\\newcommand{\\" . $teacher . "}{{\color{black}\\textbf{" . $teacher . "}}} \n "; break; } } echo " \n"; //histo teachers present students foreach($this->getTeachers() as $teacher){ echo "\\newcommand{\N" . $teacher . "}{" . $this->getTotStudentsByTeacher($teacher) . "} \n"; } echo " \n"; $items = array(); foreach ($this->dataset[0]['items'] as $item){ if($item['subtype'] != 'open'){ echo "\inputFR{" . $item['name'] . ".tex} \n"; foreach($this->getTeachers() as $teacher){ foreach ($stats as $name => $stat) { //echo "[" . $stat['teacher'] . " - " . $teacher . " | " . $name . " - " . $item['name'] . "]"; if($stat['teacher'] == $teacher && explode(';',$name)[0] == $item['name']){ echo "\histoQCM{\\" . $teacher . "}{\N" . $teacher . "}{" . $stat['ticked_count'] . "}"; foreach ($stat['ticked'] as $answer => $data) echo "{{$data['n']}}"; } } echo "\n"; } echo "\n"; echo "\n"; } } } public function sortByTotalPoints($update = true) { if ($update) { usort($this->dataset, "cmp_total"); return $this->dataset; } else { $dataset = $this->dataset; usort($dataset, "cmp_total"); return $dataset; } } public function getDataSet() { return $this->dataset; } protected function createAndIncrement($table, $field, $increment = 1) { if (!array_key_exists($field, $table)) { $table[$field] = 0; } $table[$field] += $increment; return $table; } public function getMarks() { $marks = array(); foreach($this->dataset as $student) { $tmp = array(); $tmp['teacher'] = $student['teacher']; $tmp['ID'] = $student['ID']; $tmp['SECTION'] = $student['SECTION']; $tmp['exam_points'] = $student['exam_points']; $tmp['total'] = $student['total']; $tmp['present'] = $student['present']; $tmp['SCIPER'] = $student['SCIPER']; $tmp['quarter_mark6'] = $student['quarter_mark6']; $marks[] = $tmp; } return $marks; } public function getTotStudentsByTeacher($teacher){ $nb_students = 0; foreach($this->dataset as $student){ if($student['teacher'] == $teacher && $student['present']){ $nb_students++; } } return $nb_students; } public function getQuestions() { $questions = array(); foreach($this->dataset as $student) { //print_r($student['items']); $tmp = array(); $tmp['teacher'] = $student['teacher']; $tmp['ID'] = $student['ID']; $tmp['SECTION'] = $student['SECTION']; $tmp['SCIPER'] = $student['SCIPER']; if (!$student['present']) { $tmp['present'] = "ABS"; } else { $tmp['present'] = 1; } $tmp['exam_points'] = $student['exam_points']; $tmp['total'] = $student['total']; # Stats on questions $tmp['nb_questions'] = count($student['items']); $tmp['not_answered'] = 0; $tmp['right'] = 0; $tmp['wrong'] = 0; foreach($student['items'] as $question) { if (empty($question['ticked'])) { // Question was not answered $tmp['not_answered'] += 1; } else { if ($question['right']) $tmp['right'] += 1; else $tmp['wrong'] += 1; } } $questions[] = $tmp; } return $questions; } public function getStats() { $stats = array(); # Presence $stats['presence'] = array(); $marks = array(); $stats['quarter_mark6'] = array( 'n' => 0, 'tot' => 0, 'average' => null, 'stddev' => null, 'median' => null); foreach($this->dataset as $student) { // Presence $stats['presence'] = $this->createAndIncrement($stats['presence'], 'total'); switch ($student['type']) { case 'student': if ($student['present']) { $stats['presence'] = $this->createAndIncrement($stats['presence'], 'present'); } else { $stats['presence'] = $this->createAndIncrement($stats['presence'], 'absent'); } break; case 'unused': $stats['presence'] = $this->createAndIncrement($stats['presence'], 'unsused'); break; default: $stats['presence'] = $this->createAndIncrement($stats['presence'], 'unknown'); } // Average if ($student['present']) $marks[] = $student['quarter_mark6']; } $stats['quarter_mark6']['n'] = count($marks); if ($stats['quarter_mark6']['n'] > 0) { $stats['quarter_mark6']['tot'] = array_sum($marks); $stats['quarter_mark6']['average'] = $stats['quarter_mark6']['tot']/$stats['quarter_mark6']['n']; $stats['quarter_mark6']['stddev'] = stats_standard_deviation($marks); if (count($marks) >=3) { sort($marks); $stats['quarter_mark6']['median'] = $marks[round(count($marks)/2)]; } else { $stats['quarter_mark6']['median'] = 'n/a'; } } else { $stats['quarter_mark6']['tot'] = 0; $stats['quarter_mark6']['average'] = 0; $stats['quarter_mark6']['stddev'] = 0; $stats['quarter_mark6']['median'] = 0; } // Distribution (of marks) $distribution = array(); for ($m = 1.0 ; $m <= 6.0 ; $m += 0.25) $distribution[(string)$m] = 0; $stats['distribution_total'] = 0; foreach ($marks as $mark) { $distribution[(string)$mark]++; $stats['distribution_total']++; } $stats['distribution'] = $distribution; $stats['distribution_percentage'] = array(); if ($stats['quarter_mark6']['n']) { foreach ($stats['distribution'] as $mark => $count) $stats['distribution_percentage'][$mark] = $count*100.0/$stats['distribution_total']; } else { $stats['distribution_percentage'] = $stats['distribution']; } return($stats); } } ?>