diff --git a/amc-templates/amc_template/build.sh b/amc-templates/amc_template/build.sh deleted file mode 100755 index ee3bbd6..0000000 --- a/amc-templates/amc_template/build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -pdflatex -halt-on-error -interaction batchmode exam.tex > /dev/null 2>&1 && rm -f exam.amc exam.aux exam.log && echo "OK" && exit 0 - -# Otherwise run pdflatex in interactive mode -rm -f exam.amc exam.aux exam.log -echo "An error occured. Starting over in interactive mode." -echo -n "Press ENTER to continue, Ctrl-C to exit." -read ans -pdflatex exam.tex diff --git a/amc-templates/amc_template/clean.sh b/amc-templates/amc_template/clean.sh deleted file mode 100755 index 6f1de77..0000000 --- a/amc-templates/amc_template/clean.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -rm -f exam.amc exam.aux exam.log exam.pdf -exit 0 diff --git a/amc-templates/amc_template_en/exam.amc b/amc-templates/amc_template/exam.amc similarity index 100% rename from amc-templates/amc_template_en/exam.amc rename to amc-templates/amc_template/exam.amc diff --git a/amc-templates/amc_template_en/exam.aux b/amc-templates/amc_template/exam.aux similarity index 100% rename from amc-templates/amc_template_en/exam.aux rename to amc-templates/amc_template/exam.aux diff --git a/amc-templates/amc_template_en/exam.log b/amc-templates/amc_template/exam.log similarity index 51% rename from amc-templates/amc_template_en/exam.log rename to amc-templates/amc_template/exam.log index c84c398..40a7ce3 100644 --- a/amc-templates/amc_template_en/exam.log +++ b/amc-templates/amc_template/exam.log @@ -1,1323 +1,1353 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex 2020.7.13) 10 MAY 2021 17:10 +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2021.11.23) 7 DEC 2021 10:34 entering extended mode restricted \write18 enabled. - file:line:error style messages enabled. %&-line parsing enabled. **exam.tex (./exam.tex -LaTeX2e <2020-02-02> patch level 5 -L3 programming layer <2020-03-06> -(/usr/local/texlive/2020/texmf-dist/tex/latex/base/article.cls +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> +(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2019/12/20 v1.4l Standard LaTeX document class -(/usr/local/texlive/2020/texmf-dist/tex/latex/base/size10.clo +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) ) \c@part=\count167 \c@section=\count168 \c@subsection=\count169 \c@subsubsection=\count170 \c@paragraph=\count171 \c@subparagraph=\count172 \c@figure=\count173 \c@table=\count174 \abovecaptionskip=\skip47 \belowcaptionskip=\skip48 \bibindent=\dimen134 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/base/inputenc.sty +(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty Package: inputenc 2018/08/11 v1.3c Input encoding file -\inpenc@prehook=\toks15 -\inpenc@posthook=\toks16 +\inpenc@prehook=\toks14 +\inpenc@posthook=\toks15 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/base/fontenc.sty +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty Package: fontenc 2020/02/11 v2.0o Standard LaTeX package ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/xcolor/xcolor.sty +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) -(/usr/local/texlive/2020/texmf-dist/tex/latex/graphics-cfg/color.cfg +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg File: color.cfg 2016/01/02 v1.6 sample color configuration ) Package xcolor Info: Driver file: pdftex.def on input line 225. -(/usr/local/texlive/2020/texmf-dist/tex/latex/graphics-def/pdftex.def -File: pdftex.def 2020/08/26 v1.2 Graphics/color driver for pdftex +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex ) Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. Package xcolor Info: Model `RGB' extended on input line 1364. Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/base/fix-cm.sty +(/usr/share/texlive/texmf-dist/tex/latex/base/fix-cm.sty Package: fix-cm 2015/01/14 v1.1t fixes to LaTeX -(/usr/local/texlive/2020/texmf-dist/tex/latex/base/ts1enc.def +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file LaTeX Font Info: Redeclaring font encoding TS1 on input line 47. )) (./automultiplechoice.sty Package: automultiplechoice -(/usr/local/texlive/2020/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty Package: fancyhdr 2019/01/31 v3.10 Extensive control of page headers and footer s \f@nch@headwidth=\skip49 \f@nch@O@elh=\skip50 \f@nch@O@erh=\skip51 \f@nch@O@olh=\skip52 \f@nch@O@orh=\skip53 \f@nch@O@elf=\skip54 \f@nch@O@erf=\skip55 \f@nch@O@olf=\skip56 \f@nch@O@orf=\skip57 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/bophook/bophook.sty +(/usr/share/texlive/texmf-dist/tex/latex/bophook/bophook.sty Package: bophook 2001/03/29 v0.02 beginning-of-page hook, K. Tinnefeld ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/xkeyval/xkeyval.sty +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty Package: xkeyval 2014/12/03 v2.7a package option processing (HA) -(/usr/local/texlive/2020/texmf-dist/tex/generic/xkeyval/xkeyval.tex -(/usr/local/texlive/2020/texmf-dist/tex/generic/xkeyval/xkvutils.tex -\XKV@toks=\toks17 -\XKV@tempa@toks=\toks18 +(/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/local/texlive/2020/texmf-dist/tex/generic/xkeyval/keyval.tex)) +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex)) \XKV@depth=\count175 File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) )) -(/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/rotating.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/rotating.sty Package: rotating 2016/08/11 v2.16d rotated objects in LaTeX -(/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/graphicx.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) -(/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/graphics.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) -(/usr/local/texlive/2020/texmf-dist/tex/latex/graphics/trig.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty Package: trig 2016/01/03 v1.10 sin cos tan (DPC) ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration ) Package graphics Info: Driver file: pdftex.def on input line 105. ) \Gin@req@height=\dimen135 \Gin@req@width=\dimen136 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/base/ifthen.sty +(/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=\count176 \rotFPtop=\skip58 \rotFPbot=\skip59 \rot@float@box=\box45 -\rot@mess@toks=\toks19 +\rot@mess@toks=\toks18 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/fancybox/fancybox.sty +(/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=\box46 \shadowsize=\dimen137 \@Sbox=\box47 -\do@VerbBox=\toks20 -\the@fancyput=\toks21 -\this@fancyput=\toks22 -\EndVerbatimTokens=\toks23 +\do@VerbBox=\toks19 +\the@fancyput=\toks20 +\this@fancyput=\toks21 +\EndVerbatimTokens=\toks22 \Verbatim@Outfile=\write3 \Verbatim@Infile=\read2 ) \AMC@logfile=\write4 \openout4 = `exam.amc'. \AMCload@counter=\count177 \AMCid@quest=\count178 \AMCid@check=\count179 \AMCid@etud=\count180 \AMCid@etudstart=\count181 \AMCid@etudfin=\count182 \AMCnum@copies=\count183 \AMCformVSpace=\dimen138 \AMCformHSpace=\dimen139 \AMCinterIrep=\dimen140 \AMCinterBrep=\dimen141 \AMCinterIquest=\dimen142 \AMCinterBquest=\dimen143 \AMCids@width=\dimen144 \AMCids@height=\dimen145 \AMC@SR=\count184 \AMC@SR@count=\count185 \AMC@SRnum=\count186 \AMC@sti=\count187 \AMC@stil=\count188 -\AMCsw@p@=\toks24 +\AMCsw@p@=\toks23 \AMC@numerotation=\count189 \AMC@XYspecial=\write5 \AMC@tmpXY=\write6 \c@AMC@ncase=\count190 \AMC@boxedrule=\skip60 \AMC@crossrule=\skip61 \AMC@boxeddown=\skip62 \AMC@boxedwidth=\skip63 \AMC@boxedheight=\skip64 \AMC@oval@radius=\skip65 \AMC@outside@sep=\skip66 \AMC@CBtaille=\skip67 -\AMCbin@sequence=\toks25 +\AMCbin@sequence=\toks24 \AMCbin@number=\count191 \AMCbin@ndigits=\count192 \AMCbin@id=\count193 \AMCbin@digit=\count194 \AMCtok@k=\count195 \AMCtok@max=\count196 \AMCtok@size=\count197 \AMC@imax=\count198 \AMCtok@ik=\count199 \AMCloop@k=\count266 \AMCrep@count=\count267 -\reponse@cxcix=\toks26 -\reponse@cxcviii=\toks27 -\reponse@cxcvii=\toks28 -\reponse@cxcvi=\toks29 -\reponse@cxcv=\toks30 -\reponse@cxciv=\toks31 -\reponse@cxciii=\toks32 -\reponse@cxcii=\toks33 -\reponse@cxci=\toks34 -\reponse@cxc=\toks35 -\reponse@clxxxix=\toks36 -\reponse@clxxxviii=\toks37 -\reponse@clxxxvii=\toks38 -\reponse@clxxxvi=\toks39 -\reponse@clxxxv=\toks40 -\reponse@clxxxiv=\toks41 -\reponse@clxxxiii=\toks42 -\reponse@clxxxii=\toks43 -\reponse@clxxxi=\toks44 -\reponse@clxxx=\toks45 -\reponse@clxxix=\toks46 -\reponse@clxxviii=\toks47 -\reponse@clxxvii=\toks48 -\reponse@clxxvi=\toks49 -\reponse@clxxv=\toks50 -\reponse@clxxiv=\toks51 -\reponse@clxxiii=\toks52 -\reponse@clxxii=\toks53 -\reponse@clxxi=\toks54 -\reponse@clxx=\toks55 -\reponse@clxix=\toks56 -\reponse@clxviii=\toks57 -\reponse@clxvii=\toks58 -\reponse@clxvi=\toks59 -\reponse@clxv=\toks60 -\reponse@clxiv=\toks61 -\reponse@clxiii=\toks62 -\reponse@clxii=\toks63 -\reponse@clxi=\toks64 -\reponse@clx=\toks65 -\reponse@clix=\toks66 -\reponse@clviii=\toks67 -\reponse@clvii=\toks68 -\reponse@clvi=\toks69 -\reponse@clv=\toks70 -\reponse@cliv=\toks71 -\reponse@cliii=\toks72 -\reponse@clii=\toks73 -\reponse@cli=\toks74 -\reponse@cl=\toks75 -\reponse@cxlix=\toks76 -\reponse@cxlviii=\toks77 -\reponse@cxlvii=\toks78 -\reponse@cxlvi=\toks79 -\reponse@cxlv=\toks80 -\reponse@cxliv=\toks81 -\reponse@cxliii=\toks82 -\reponse@cxlii=\toks83 -\reponse@cxli=\toks84 -\reponse@cxl=\toks85 -\reponse@cxxxix=\toks86 -\reponse@cxxxviii=\toks87 -\reponse@cxxxvii=\toks88 -\reponse@cxxxvi=\toks89 -\reponse@cxxxv=\toks90 -\reponse@cxxxiv=\toks91 -\reponse@cxxxiii=\toks92 -\reponse@cxxxii=\toks93 -\reponse@cxxxi=\toks94 -\reponse@cxxx=\toks95 -\reponse@cxxix=\toks96 -\reponse@cxxviii=\toks97 -\reponse@cxxvii=\toks98 -\reponse@cxxvi=\toks99 -\reponse@cxxv=\toks100 -\reponse@cxxiv=\toks101 -\reponse@cxxiii=\toks102 -\reponse@cxxii=\toks103 -\reponse@cxxi=\toks104 -\reponse@cxx=\toks105 -\reponse@cxix=\toks106 -\reponse@cxviii=\toks107 -\reponse@cxvii=\toks108 -\reponse@cxvi=\toks109 -\reponse@cxv=\toks110 -\reponse@cxiv=\toks111 -\reponse@cxiii=\toks112 -\reponse@cxii=\toks113 -\reponse@cxi=\toks114 -\reponse@cx=\toks115 -\reponse@cix=\toks116 -\reponse@cviii=\toks117 -\reponse@cvii=\toks118 -\reponse@cvi=\toks119 -\reponse@cv=\toks120 -\reponse@civ=\toks121 -\reponse@ciii=\toks122 -\reponse@cii=\toks123 -\reponse@ci=\toks124 -\reponse@c=\toks125 -\reponse@xcix=\toks126 -\reponse@xcviii=\toks127 -\reponse@xcvii=\toks128 -\reponse@xcvi=\toks129 -\reponse@xcv=\toks130 -\reponse@xciv=\toks131 -\reponse@xciii=\toks132 -\reponse@xcii=\toks133 -\reponse@xci=\toks134 -\reponse@xc=\toks135 -\reponse@lxxxix=\toks136 -\reponse@lxxxviii=\toks137 -\reponse@lxxxvii=\toks138 -\reponse@lxxxvi=\toks139 -\reponse@lxxxv=\toks140 -\reponse@lxxxiv=\toks141 -\reponse@lxxxiii=\toks142 -\reponse@lxxxii=\toks143 -\reponse@lxxxi=\toks144 -\reponse@lxxx=\toks145 -\reponse@lxxix=\toks146 -\reponse@lxxviii=\toks147 -\reponse@lxxvii=\toks148 -\reponse@lxxvi=\toks149 -\reponse@lxxv=\toks150 -\reponse@lxxiv=\toks151 -\reponse@lxxiii=\toks152 -\reponse@lxxii=\toks153 -\reponse@lxxi=\toks154 -\reponse@lxx=\toks155 -\reponse@lxix=\toks156 -\reponse@lxviii=\toks157 -\reponse@lxvii=\toks158 -\reponse@lxvi=\toks159 -\reponse@lxv=\toks160 -\reponse@lxiv=\toks161 -\reponse@lxiii=\toks162 -\reponse@lxii=\toks163 -\reponse@lxi=\toks164 -\reponse@lx=\toks165 -\reponse@lix=\toks166 -\reponse@lviii=\toks167 -\reponse@lvii=\toks168 -\reponse@lvi=\toks169 -\reponse@lv=\toks170 -\reponse@liv=\toks171 -\reponse@liii=\toks172 -\reponse@lii=\toks173 -\reponse@li=\toks174 -\reponse@l=\toks175 -\reponse@xlix=\toks176 -\reponse@xlviii=\toks177 -\reponse@xlvii=\toks178 -\reponse@xlvi=\toks179 -\reponse@xlv=\toks180 -\reponse@xliv=\toks181 -\reponse@xliii=\toks182 -\reponse@xlii=\toks183 -\reponse@xli=\toks184 -\reponse@xl=\toks185 -\reponse@xxxix=\toks186 -\reponse@xxxviii=\toks187 -\reponse@xxxvii=\toks188 -\reponse@xxxvi=\toks189 -\reponse@xxxv=\toks190 -\reponse@xxxiv=\toks191 -\reponse@xxxiii=\toks192 -\reponse@xxxii=\toks193 -\reponse@xxxi=\toks194 -\reponse@xxx=\toks195 -\reponse@xxix=\toks196 -\reponse@xxviii=\toks197 -\reponse@xxvii=\toks198 -\reponse@xxvi=\toks199 -\reponse@xxv=\toks200 -\reponse@xxiv=\toks201 -\reponse@xxiii=\toks202 -\reponse@xxii=\toks203 -\reponse@xxi=\toks204 -\reponse@xx=\toks205 -\reponse@xix=\toks206 -\reponse@xviii=\toks207 -\reponse@xvii=\toks208 -\reponse@xvi=\toks209 -\reponse@xv=\toks210 -\reponse@xiv=\toks211 -\reponse@xiii=\toks212 -\reponse@xii=\toks213 -\reponse@xi=\toks214 -\reponse@x=\toks215 -\reponse@ix=\toks216 -\reponse@viii=\toks217 -\reponse@vii=\toks218 -\reponse@vi=\toks219 -\reponse@v=\toks220 -\reponse@iv=\toks221 -\reponse@iii=\toks222 -\reponse@ii=\toks223 -\reponse@i=\toks224 +\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=\count268 \AMCrep@@count=\count269 \AMC@mn@test=\skip68 \AMC@mn@sep=\skip69 \AMC@mn@leftmargin=\skip70 \AMC@mn@rightmargin=\skip71 \AMC@sz@width=\skip72 \AMC@sz@height=\skip73 \AMC@sz@depth=\skip74 \AMC@sza@width=\skip75 \AMC@sza@height=\skip76 \AMC@sza@depth=\skip77 \c@AMCquestionaff=\count270 \ouverte@vs=\dimen146 \AMC@chiffres=\count271 \AMCcodeHspace=\dimen147 \AMCcodeVspace=\dimen148 \AMCnumeric@Hspace=\dimen149 \AMCnumeric@Vspace=\dimen150 \AMC@numeric@lastdigit=\count272 \AMC@integer@modulo=\count273 \AMC@numeric@integer=\count274 \AMC@numeric@calcdigit=\count275 \AMC@numeric@digits=\count276 \AMC@numeric@decd=\count277 \AMC@numeric@value=\count278 \AMC@numeric@x=\count279 \AMC@numeric@base=\count280 \AMC@numeric@exact=\count281 \AMC@numeric@approx=\count282 \AMCopen@Hspace=\dimen151 \AMCopen@LineHeight=\dimen152 \AMCopen@Lines=\count283 \AMCopen@boxmargin=\dimen153 \AMCopen@boxframerule=\dimen154 \AMCopen@framerule=\dimen155 - (/usr/local/texlive/2020/texmf-dist/tex/latex/environ/environ.sty + (/usr/share/texlive/texmf-dist/tex/latex/environ/environ.sty Package: environ 2014/05/04 v0.3 A new way to define environments -(/usr/local/texlive/2020/texmf-dist/tex/latex/trimspaces/trimspaces.sty +(/usr/share/texlive/texmf-dist/tex/latex/trimspaces/trimspaces.sty Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list ) -\@envbody=\toks225 +\@envbody=\toks224 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/etex-pkg/etex.sty +(/usr/share/texlive/texmf-dist/tex/latex/etex-pkg/etex.sty Package: etex 2016/08/01 v2.7 eTeX basic definition package (PEB,DPC) Package etex Warning: Extended allocation already in use. (etex) etex.sty code will not be used. (etex) To force etex package to load, add (etex) \RequirePackage{etex} (etex) at the start of the document. -) (/usr/local/texlive/2020/texmf-dist/tex/latex/geometry/geometry.sty +) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty Package: geometry 2020/01/02 v5.9 Page Geometry -(/usr/local/texlive/2020/texmf-dist/tex/generic/iftex/ifvtex.sty +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. -(/usr/local/texlive/2020/texmf-dist/tex/generic/iftex/iftex.sty -Package: iftex 2020/03/06 v1.0d TeX engine tests +(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2019/11/07 v1.0c TeX engine tests )) \Gm@cnth=\count284 \Gm@cntv=\count285 \c@Gm@tempcnt=\count286 \Gm@bindingoffset=\dimen156 \Gm@wd@mp=\dimen157 \Gm@odd@mp=\dimen158 \Gm@even@mp=\dimen159 \Gm@layoutwidth=\dimen160 \Gm@layoutheight=\dimen161 \Gm@layouthoffset=\dimen162 \Gm@layoutvoffset=\dimen163 -\Gm@dimlist=\toks226 -)) -(./packages.tex -(/usr/local/texlive/2020/texmf-dist/tex/latex/csvsimple/csvsimple.sty +\Gm@dimlist=\toks225 +)) (./packages.tex +(/usr/share/texlive/texmf-dist/tex/latex/csvsimple/csvsimple.sty Package: csvsimple 2019/04/09 version 1.21 LaTeX CSV file processing -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te -x -\pgfutil@everybye=\toks227 +(/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=\toks226 \pgfutil@tempdima=\dimen164 \pgfutil@tempdimb=\dimen165 -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-li -sts.tex)) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +(/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=\box48 -(/usr/local/texlive/2020/texmf-dist/tex/latex/ms/everyshi.sty +(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) )) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/pgf.revision.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/pgf.revision.tex) Package: pgfrcs 2020/01/08 v3.1.5b (3.1.5b) )) -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex -\pgfkeys@pathtoks=\toks228 -\pgfkeys@temptoks=\toks229 - -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c -ode.tex -\pgfkeys@tmptoks=\toks230 -))) (/usr/local/texlive/2020/texmf-dist/tex/latex/etoolbox/etoolbox.sty +(/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=\toks227 +\pgfkeys@temptoks=\toks228 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t +ex +\pgfkeys@tmptoks=\toks229 +))) (/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty Package: etoolbox 2019/09/21 v2.5h e-TeX tools for LaTeX (JAW) \etb@tempcnta=\count287 -) (/usr/local/texlive/2020/texmf-dist/tex/latex/tools/shellesc.sty +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/shellesc.sty Package: shellesc 2019/11/08 v1.0c unified shell escape interface for LaTeX Package shellesc Info: Restricted shell escape enabled on input line 77. ) \csv@file=\read3 \c@csvinputline=\count288 \c@csvrow=\count289 \c@csvcol=\count290 \csv@out=\write7 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/tools/multicol.sty +(/usr/share/texlive/texmf-dist/tex/latex/tools/multicol.sty Package: multicol 2019/12/09 v1.8y multicolumn formatting (FMi) \c@tracingmulticols=\count291 \mult@box=\box49 \multicol@leftmargin=\dimen166 \c@unbalance=\count292 \c@collectmore=\count293 \doublecol@number=\count294 \multicoltolerance=\count295 \multicolpretolerance=\count296 \full@width=\dimen167 \page@free=\dimen168 \premulticols=\dimen169 \postmulticols=\dimen170 \multicolsep=\skip78 \multicolbaselineskip=\skip79 \partial@page=\box50 \last@line=\box51 \maxbalancingoverflow=\dimen171 \mult@rightbox=\box52 \mult@grightbox=\box53 \mult@gfirstbox=\box54 \mult@firstbox=\box55 \@tempa=\box56 \@tempa=\box57 \@tempa=\box58 \@tempa=\box59 \@tempa=\box60 \@tempa=\box61 \@tempa=\box62 \@tempa=\box63 \@tempa=\box64 \@tempa=\box65 \@tempa=\box66 \@tempa=\box67 \@tempa=\box68 \@tempa=\box69 \@tempa=\box70 \@tempa=\box71 \@tempa=\box72 \@tempa=\box73 \@tempa=\box74 \@tempa=\box75 \@tempa=\box76 \@tempa=\box77 \@tempa=\box78 \@tempa=\box79 \@tempa=\box80 \@tempa=\box81 \@tempa=\box82 \@tempa=\box83 \@tempa=\box84 \@tempa=\box85 \@tempa=\box86 \@tempa=\box87 \@tempa=\box88 \@tempa=\box89 \@tempa=\box90 \@tempa=\box91 \@tempa=\box92 \c@minrows=\count297 \c@columnbadness=\count298 \c@finalcolumnbadness=\count299 \last@try=\dimen172 \multicolovershoot=\dimen173 \multicolundershoot=\dimen174 \mult@nat@firstbox=\box93 \colbreak@box=\box94 \mc@col@check@num=\count300 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsmath/amsmath.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty Package: amsmath 2020/01/20 v2.17e AMS math features \@mathmargin=\skip80 For additional information on amsmath, use the `?' option. -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsmath/amstext.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty Package: amstext 2000/06/29 v2.01 AMS text -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsmath/amsgen.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks231 +\@emptytoks=\toks230 \ex@=\dimen175 )) -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsmath/amsbsy.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty Package: amsbsy 1999/11/29 v1.2d Bold Symbols \pmbraise@=\dimen176 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsmath/amsopn.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty Package: amsopn 2016/03/08 v2.02 operator names ) \inf@bad=\count301 LaTeX Info: Redefining \frac on input line 227. \uproot@=\count302 \leftroot@=\count303 LaTeX Info: Redefining \overline on input line 389. \classnum@=\count304 \DOTSCASE@=\count305 LaTeX Info: Redefining \ldots on input line 486. LaTeX Info: Redefining \dots on input line 489. LaTeX Info: Redefining \cdots on input line 610. \Mathstrutbox@=\box95 \strutbox@=\box96 \big@size=\dimen177 LaTeX Font Info: Redeclaring font encoding OML on input line 733. LaTeX Font Info: Redeclaring font encoding OMS on input line 734. \macc@depth=\count306 \c@MaxMatrixCols=\count307 \dotsspace@=\muskip16 \c@parentequation=\count308 \dspbrk@lvl=\count309 -\tag@help=\toks232 +\tag@help=\toks231 \row@=\count310 \column@=\count311 \maxfields@=\count312 -\andhelp@=\toks233 +\andhelp@=\toks232 \eqnshift@=\dimen178 \alignsep@=\dimen179 \tagshift@=\dimen180 \tagwidth@=\dimen181 \totwidth@=\dimen182 \lineht@=\dimen183 -\@envbody=\toks234 +\@envbody=\toks233 \multlinegap=\skip81 \multlinetaggap=\skip82 -\mathdisplay@stack=\toks235 +\mathdisplay@stack=\toks234 LaTeX Info: Redefining \[ on input line 2859. LaTeX Info: Redefining \] on input line 2860. ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/jknapltx/mathrsfs.sty +(/usr/share/texlive/texmf-dist/tex/latex/jknapltx/mathrsfs.sty Package: mathrsfs 1996/01/01 Math RSFS package v1.0 (jk) \symrsfs=\mathgroup4 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsfonts/euscript.sty +(/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/local/texlive/2020/texmf-dist/tex/latex/graphics/epsfig.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/epsfig.sty Package: epsfig 2017/06/25 v1.7b (e)psfig emulation (SPQR) \epsfxsize=\dimen184 \epsfysize=\dimen185 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsfonts/amsfonts.sty +(/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: Redeclaring math symbol \hbar on input line 98. LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' (Font) U/euf/m/n --> U/euf/b/n on input line 106. ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsfonts/amssymb.sty +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty Package: amssymb 2013/01/14 v3.01 AMS font symbols )) -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty Package: pgf 2020/01/08 v3.1.5b (3.1.5b) -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +(/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 2020/01/08 v3.1.5b (3.1.5b) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex) \pgf@x=\dimen186 \pgf@y=\dimen187 \pgf@xa=\dimen188 \pgf@ya=\dimen189 \pgf@xb=\dimen190 \pgf@yb=\dimen191 \pgf@xc=\dimen192 \pgf@yc=\dimen193 \pgf@xd=\dimen194 \pgf@yd=\dimen195 \w@pgf@writea=\write8 \r@pgf@reada=\read4 \c@pgf@counta=\count313 \c@pgf@countb=\count314 \c@pgf@countc=\count315 \c@pgf@countd=\count316 -\t@pgf@toka=\toks236 -\t@pgf@tokb=\toks237 -\t@pgf@tokc=\toks238 +\t@pgf@toka=\toks235 +\t@pgf@tokb=\toks236 +\t@pgf@tokc=\toks237 \pgf@sys@id@count=\count317 -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg File: pgf.cfg 2020/01/08 v3.1.5b (3.1.5b) ) Driver file for pgf: pgfsys-pdftex.def -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.d -ef +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def File: pgfsys-pdftex.def 2020/01/08 v3.1.5b (3.1.5b) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-p -df.def +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de +f File: pgfsys-common-pdf.def 2020/01/08 v3.1.5b (3.1.5b) ))) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath. -code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. +tex File: pgfsyssoftpath.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgfsyssoftpath@smallbuffer@items=\count318 \pgfsyssoftpath@bigbuffer@items=\count319 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol. -code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. +tex File: pgfsysprotocol.code.tex 2020/01/08 v3.1.5b (3.1.5b) )) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex Package: pgfcore 2020/01/08 v3.1.5b (3.1.5b) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex + +(/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=\dimen196 \pgfmath@count=\count320 \pgfmath@box=\box97 -\pgfmath@toks=\toks239 -\pgfmath@stack@operand=\toks240 -\pgfmath@stack@operation=\toks241 +\pgfmath@toks=\toks238 +\pgfmath@stack@operand=\toks239 +\pgfmath@stack@operation=\toks240 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code. -tex -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic +(/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/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigo -nometric.code.tex) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.rando -m.code.tex) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.compa -rison.code.tex) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base. -code.tex) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round -.code.tex) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc. -code.tex) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integ -erarithmetics.code.tex))) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmathfloat.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=\count321 -)) (/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.co -de.tex +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfint.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te +x File: pgfcorepoints.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgf@picminx=\dimen197 \pgf@picmaxx=\dimen198 \pgf@picminy=\dimen199 \pgf@picmaxy=\dimen256 \pgf@pathminx=\dimen257 \pgf@pathmaxx=\dimen258 \pgf@pathminy=\dimen259 \pgf@pathmaxy=\dimen260 \pgf@xx=\dimen261 \pgf@xy=\dimen262 \pgf@yx=\dimen263 \pgf@yy=\dimen264 \pgf@zx=\dimen265 \pgf@zy=\dimen266 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconst -ruct.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. +code.tex File: pgfcorepathconstruct.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgf@path@lastx=\dimen267 \pgf@path@lasty=\dimen268 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage -.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code +.tex File: pgfcorepathusage.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgf@shorten@end@additional=\dimen269 \pgf@shorten@start@additional=\dimen270 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.co -de.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te +x File: pgfcorescopes.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgfpic=\box98 \pgf@hbox=\box99 \pgf@layerbox@main=\box100 \pgf@picture@serial@count=\count322 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicst -ate.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c +ode.tex File: pgfcoregraphicstate.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgflinewidth=\dimen271 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransform -ations.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation +s.code.tex File: pgfcoretransformations.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgf@pt@x=\dimen272 \pgf@pt@y=\dimen273 \pgf@pt@temp=\dimen274 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.cod -e.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex File: pgfcorequick.code.tex 2020/01/08 v3.1.5b (3.1.5b) ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.c -ode.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t +ex File: pgfcoreobjects.code.tex 2020/01/08 v3.1.5b (3.1.5b) ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathproce -ssing.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing +.code.tex File: pgfcorepathprocessing.code.tex 2020/01/08 v3.1.5b (3.1.5b) ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.co -de.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te +x File: pgfcorearrows.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgfarrowsep=\dimen275 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.cod -e.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex File: pgfcoreshade.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgf@max=\dimen276 \pgf@sys@shading@range@num=\count323 \pgf@shadingcount=\count324 ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.cod -e.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex File: pgfcoreimage.code.tex 2020/01/08 v3.1.5b (3.1.5b) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal. -code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. +tex File: pgfcoreexternal.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgfexternal@startupbox=\box101 )) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.co -de.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te +x File: pgfcorelayers.code.tex 2020/01/08 v3.1.5b (3.1.5b) ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretranspare -ncy.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c +ode.tex File: pgfcoretransparency.code.tex 2020/01/08 v3.1.5b (3.1.5b) ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns. -code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. +tex File: pgfcorepatterns.code.tex 2020/01/08 v3.1.5b (3.1.5b) ) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code. -tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex File: pgfcorerdf.code.tex 2020/01/08 v3.1.5b (3.1.5b) ))) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.cod -e.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex File: pgfmoduleshapes.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgfnodeparttextbox=\box102 -) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code. -tex +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex File: pgfmoduleplot.code.tex 2020/01/08 v3.1.5b (3.1.5b) ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version --0-65.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 +.sty Package: pgfcomp-version-0-65 2020/01/08 v3.1.5b (3.1.5b) \pgf@nodesepstart=\dimen277 \pgf@nodesepend=\dimen278 ) -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version --1-18.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 +.sty Package: pgfcomp-version-1-18 2020/01/08 v3.1.5b (3.1.5b) -)) -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/utilities/pgffor.sty -(/usr/local/texlive/2020/texmf-dist/tex/latex/pgf/math/pgfmath.sty -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +)) (/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 2020/01/08 v3.1.5b (3.1.5b) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex) \pgffor@iter=\dimen279 \pgffor@skip=\dimen280 -\pgffor@stack=\toks242 -\pgffor@toks=\toks243 +\pgffor@stack=\toks241 +\pgffor@toks=\toks242 )) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.cod -e.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex Package: tikz 2020/01/08 v3.1.5b (3.1.5b) -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothan -dlers.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers +.code.tex File: pgflibraryplothandlers.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgf@plot@mark@count=\count325 \pgfplotmarksize=\dimen281 ) \tikz@lastx=\dimen282 \tikz@lasty=\dimen283 \tikz@lastxsaved=\dimen284 \tikz@lastysaved=\dimen285 \tikz@lastmovetox=\dimen286 \tikz@lastmovetoy=\dimen287 \tikzleveldistance=\dimen288 \tikzsiblingdistance=\dimen289 \tikz@figbox=\box103 \tikz@figbox@bg=\box104 \tikz@tempbox=\box105 \tikz@tempbox@bg=\box106 \tikztreelevel=\count326 \tikznumberofchildren=\count327 \tikznumberofcurrentchild=\count328 \tikz@fig@count=\count329 -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.cod -e.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex File: pgfmodulematrix.code.tex 2020/01/08 v3.1.5b (3.1.5b) \pgfmatrixcurrentrow=\count330 \pgfmatrixcurrentcolumn=\count331 \pgf@matrix@numberofcolumns=\count332 ) \tikz@expandcount=\count333 -(/usr/local/texlive/2020/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie -s/tikzlibrarytopaths.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tik +zlibrarytopaths.code.tex File: tikzlibrarytopaths.code.tex 2020/01/08 v3.1.5b (3.1.5b) ))) (./commands.tex) (./style_extra.tex -(/usr/local/texlive/2020/texmf-dist/tex/latex/tools/array.sty +(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty Package: array 2019/08/31 v2.4l Tabular extension package (FMi) \col@sep=\dimen290 \ar@mcellbox=\box107 \extrarowheight=\dimen291 -\NC@list=\toks244 +\NC@list=\toks243 \extratabsurround=\skip83 \backup@length=\skip84 \ar@cellbox=\box108 -)) -(./random-seed.tex) (./exam-info.tex) -(/usr/local/texlive/2020/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def -File: l3backend-pdfmode.def 2020-03-12 L3 backend support: PDF mode +)) (./random-seed.tex) +(./exam-info.tex) +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode \l__kernel_color_stack_int=\count334 \l__pdf_internal_box=\box109 ) -(./exam.aux) +No file exam.aux. \openout1 = `exam.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 46. LaTeX Font Info: ... okay on input line 46. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 46. LaTeX Font Info: ... okay on input line 46. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 46. LaTeX Font Info: ... okay on input line 46. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 46. LaTeX Font Info: ... okay on input line 46. LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 46. LaTeX Font Info: ... okay on input line 46. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 46. LaTeX Font Info: ... okay on input line 46. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 46. LaTeX Font Info: ... okay on input line 46. - -(/usr/local/texlive/2020/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] \scratchcounter=\count335 \scratchdimen=\dimen292 \scratchbox=\box110 \nofMPsegments=\count336 \nofMParguments=\count337 -\everyMPshowfont=\toks245 +\everyMPshowfont=\toks244 \MPscratchCnt=\count338 \MPscratchDim=\dimen293 \MPnumerator=\count339 \makeMPintoPDFobject=\count340 -\everyMPtoPDFconversion=\toks246 -) (/usr/local/texlive/2020/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +\everyMPtoPDFconversion=\toks245 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 85. -(/usr/local/texlive/2020/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +(/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=\box111 \AMC@ovalbox@RF=\box112 \AMC@ovalbox@=\box113 \AMC@ovalbox@F=\box114 *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 (./sections.tex (./section_1.tex \section1@k=\count341 \AMCsection1@j=\count342 -\section1@i=\toks247 -\section1@ii=\toks248 -\section1@iii=\toks249 +\section1@i=\toks246 +\section1@ii=\toks247 +\section1@iii=\toks248 ) (./section_2.tex \section2@k=\count343 \AMCsection2@j=\count344 -\section2@i=\toks250 -\section2@ii=\toks251 +\section2@i=\toks249 +\section2@ii=\toks250 )) (./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: Trying to load font information for U+rsfs on input line 27 . -(/usr/local/texlive/2020/texmf-dist/tex/latex/jknapltx/ursfs.fd +(/usr/share/texlive/texmf-dist/tex/latex/jknapltx/ursfs.fd File: ursfs.fd 1998/03/24 rsfs font definition file (jk) ) LaTeX Font Info: Trying to load font information for U+msa on input line 27. -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsfonts/umsa.fd +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) LaTeX Font Info: Trying to load font information for U+msb on input line 27. -(/usr/local/texlive/2020/texmf-dist/tex/latex/amsfonts/umsb.fd +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B ) File: media/good_bad_square.png Graphic file (type png) -Package pdftex.def Info: media/good_bad_square.png used on input line 85. +Package pdftex.def Info: media/good_bad_square.png used on input line 86. (pdftex.def) Requested size: 468.01335pt x 104.89296pt. ) -(./random-sections.tex (./header_1.tex [1{/usr/local/texlive/2020/texmf-var/fon -ts/map/pdftex/updmap/pdftex.map} +(./random-sections.tex (./header_1.tex [1{/var/lib/texmf/fonts/map/pdftex/updma +p/pdftex.map} - <./media/epfl-logo.pdf> <./media/good_bad_square.png>]) (./questions/en/mc3.te -x) (./questions/en/mc2.tex) -(./questions/en/mc1.tex) (./header_2.tex -Underfull \hbox (badness 10000) in paragraph at lines 1--1 + <./media/epfl-logo.pdf> <./media/good_bad_square.png>]) +(./questions/fr/mc3.tex) (./questions/fr/mc2.tex) (./questions/fr/mc1.tex) +(./header_2.tex +Underfull \hbox (badness 10000) in paragraph at lines 2--1 [] -[2]) (./questions/en/tf2.tex) (./questions/en/tf1.tex)) -Underfull \hbox (badness 10000) in paragraph at lines 1--71 +[2]) (./questions/fr/tf2.tex) (./questions/fr/tf1.tex)) +Underfull \hbox (badness 10000) in paragraph at lines 1--81 [] (./extra_section.tex [3] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 42--43 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 45--46 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 42--43 +Underfull \hbox (badness 10000) in paragraph at lines 45--46 [] [4] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 61--62 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 66--67 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 61--62 +Underfull \hbox (badness 10000) in paragraph at lines 66--67 [] [5] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 62--63 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 67--68 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 62--63 +Underfull \hbox (badness 10000) in paragraph at lines 67--68 [] [6 +] +Overfull \hbox (0.39996pt too wide) in paragraph at lines 68--69 +[] + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 68--69 + + [] + +[7 + ]) -Overfull \hbox (3.82484pt too wide) in paragraph at lines 82--71 +Overfull \hbox (3.82484pt too wide) in paragraph at lines 90--81 [] [] -[7] [8 - -] (./first_page.tex +[8] (./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 85. +Package pdftex.def Info: media/good_bad_square.png used on input line 86. (pdftex.def) Requested size: 468.01335pt x 104.89296pt. ) (./random-sections.tex (./header_1.tex [1 ]) -(./questions/en/mc2.tex) (./questions/en/mc3.tex) (./questions/en/mc1.tex) +(./questions/fr/mc2.tex) (./questions/fr/mc3.tex) (./questions/fr/mc1.tex) (./header_2.tex Underfull \hbox (badness 10000) in paragraph at lines 1--1 [] -[2]) (./questions/en/tf1.tex) (./questions/en/tf2.tex)) -Underfull \hbox (badness 10000) in paragraph at lines 1--71 +[2]) (./questions/fr/tf1.tex) (./questions/fr/tf2.tex)) +Underfull \hbox (badness 10000) in paragraph at lines 1--81 [] (./extra_section.tex [3] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 42--43 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 45--46 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 42--43 +Underfull \hbox (badness 10000) in paragraph at lines 45--46 [] [4] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 61--62 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 66--67 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 61--62 +Underfull \hbox (badness 10000) in paragraph at lines 66--67 [] [5] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 62--63 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 67--68 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 62--63 +Underfull \hbox (badness 10000) in paragraph at lines 67--68 [] [6 +] +Overfull \hbox (0.39996pt too wide) in paragraph at lines 68--69 +[] + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 68--69 + + [] + +[7 + ]) -Overfull \hbox (3.82484pt too wide) in paragraph at lines 82--71 +Overfull \hbox (3.82484pt too wide) in paragraph at lines 90--81 [] [] -[7] [8 - -] (./first_page.tex +[8] (./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 85. +Package pdftex.def Info: media/good_bad_square.png used on input line 86. (pdftex.def) Requested size: 468.01335pt x 104.89296pt. ) (./random-sections.tex (./header_1.tex [1 ]) -(./questions/en/mc1.tex) (./questions/en/mc2.tex) (./questions/en/mc3.tex) +(./questions/fr/mc1.tex) (./questions/fr/mc2.tex) (./questions/fr/mc3.tex) (./header_2.tex Underfull \hbox (badness 10000) in paragraph at lines 1--1 [] -[2]) (./questions/en/tf1.tex) (./questions/en/tf2.tex)) -Underfull \hbox (badness 10000) in paragraph at lines 1--71 +[2]) (./questions/fr/tf1.tex) (./questions/fr/tf2.tex)) +Underfull \hbox (badness 10000) in paragraph at lines 1--81 [] (./extra_section.tex [3] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 42--43 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 45--46 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 42--43 +Underfull \hbox (badness 10000) in paragraph at lines 45--46 [] [4] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 61--62 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 66--67 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 61--62 +Underfull \hbox (badness 10000) in paragraph at lines 66--67 [] [5] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 62--63 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 67--68 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 62--63 +Underfull \hbox (badness 10000) in paragraph at lines 67--68 [] [6 +] +Overfull \hbox (0.39996pt too wide) in paragraph at lines 68--69 +[] + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 68--69 + + [] + +[7 + ]) -Overfull \hbox (3.82484pt too wide) in paragraph at lines 82--71 +Overfull \hbox (3.82484pt too wide) in paragraph at lines 90--81 [] [] -[7] [8 - -] (./first_page.tex +[8] (./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 85. +Package pdftex.def Info: media/good_bad_square.png used on input line 86. (pdftex.def) Requested size: 468.01335pt x 104.89296pt. ) (./random-sections.tex (./header_1.tex [1 ]) -(./questions/en/mc1.tex) (./questions/en/mc3.tex) (./questions/en/mc2.tex) +(./questions/fr/mc1.tex) (./questions/fr/mc3.tex) (./questions/fr/mc2.tex) (./header_2.tex Underfull \hbox (badness 10000) in paragraph at lines 1--1 [] -[2]) (./questions/en/tf2.tex) (./questions/en/tf1.tex)) -Underfull \hbox (badness 10000) in paragraph at lines 1--71 +[2]) (./questions/fr/tf2.tex) (./questions/fr/tf1.tex)) +Underfull \hbox (badness 10000) in paragraph at lines 1--81 [] (./extra_section.tex [3] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 42--43 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 45--46 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 42--43 +Underfull \hbox (badness 10000) in paragraph at lines 45--46 [] [4] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 61--62 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 66--67 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 61--62 +Underfull \hbox (badness 10000) in paragraph at lines 66--67 [] [5] -Overfull \hbox (0.39996pt too wide) in paragraph at lines 62--63 +Overfull \hbox (0.39996pt too wide) in paragraph at lines 67--68 [] [] -Underfull \hbox (badness 10000) in paragraph at lines 62--63 +Underfull \hbox (badness 10000) in paragraph at lines 67--68 [] [6 +] +Overfull \hbox (0.39996pt too wide) in paragraph at lines 68--69 +[] + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 68--69 + + [] + +[7 + ]) -Overfull \hbox (3.82484pt too wide) in paragraph at lines 82--71 +Overfull \hbox (3.82484pt too wide) in paragraph at lines 90--81 [] [] -[7] [8 - -] (./exam.aux) ) +[8] (./exam.aux) ) Here is how much of TeX's memory you used: - 16508 strings out of 480608 - 315134 string characters out of 5903630 - 580719 words of memory out of 5000000 - 31964 multiletter control sequences out of 15000+600000 + 16512 strings out of 483065 + 313780 string characters out of 5963549 + 567415 words of memory out of 5000000 + 31110 multiletter control sequences out of 15000+600000 543854 words of font info for 49 fonts, out of 8000000 for 9000 - 1141 hyphenation exceptions out of 8191 + 81 hyphenation exceptions out of 8191 58i,22n,68p,793b,603s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/local/texlive/2020/texmf-dist/fonts/enc/dvips/cm-super/cm --super-t1.enc}{/usr/local/texlive/2020/texmf-dist/fonts/enc/dvips/cm-super/cm-s -uper-ts1.enc}< -/usr/local/texlive/2020/texmf-dist/fonts/type1/public/amsfonts/latxfont/lcircle -1.pfb> - -Output written on exam.pdf (32 pages, 365938 bytes). + +Output written on exam.pdf (32 pages, 299085 bytes). PDF statistics: - 189 PDF objects out of 1000 (max. 8388607) - 133 compressed objects within 2 object streams + 395 PDF objects out of 1000 (max. 8388607) + 148 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 new file mode 100644 index 0000000..daefe92 Binary files /dev/null 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 new file mode 100644 index 0000000..5c62a68 Binary files /dev/null and b/amc-templates/amc_template/exam.synctex.gz differ diff --git a/amc-templates/amc_template_en/exam.pdf b/amc-templates/amc_template_en/exam.pdf deleted file mode 100644 index 21c389c..0000000 Binary files a/amc-templates/amc_template_en/exam.pdf and /dev/null differ diff --git a/amc-templates/amc_template_en/exam.synctex.gz b/amc-templates/amc_template_en/exam.synctex.gz deleted file mode 100644 index ce86312..0000000 Binary files a/amc-templates/amc_template_en/exam.synctex.gz and /dev/null differ diff --git a/data/templates/chemistry/csv/blank.csv b/data/templates/chemistry/csv/blank.csv index 9a8df2d..c4ebc81 100644 --- a/data/templates/chemistry/csv/blank.csv +++ b/data/templates/chemistry/csv/blank.csv @@ -1,2 +1,2 @@ -ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM -n/a,999999,n/a,(n/a),do-not-reply@epfl.ch,BLANK,BLANK +ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM,SEAT +n/a,999999,n/a,(n/a),do-not-reply@epfl.ch,BLANK,BLANK,BLANK diff --git a/data/templates/chemistry/csv/extra.csv b/data/templates/chemistry/csv/extra.csv index 6cbc3f5..c39f4f5 100644 --- a/data/templates/chemistry/csv/extra.csv +++ b/data/templates/chemistry/csv/extra.csv @@ -1 +1 @@ -#ID#,#SCIPER#,XXX-#NB#,XXX,#EMAIL#,EXTRA,#ROOM# +#ID#,#SCIPER#,XXX-#NB#,XXX,#EMAIL#,EXTRA,#ROOM#,#SEAT# diff --git a/data/templates/chemistry/csv/sample.csv b/data/templates/chemistry/csv/sample.csv index b877422..2184efe 100644 --- a/data/templates/chemistry/csv/sample.csv +++ b/data/templates/chemistry/csv/sample.csv @@ -1,5 +1,5 @@ -ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM -1,XXXXX1,Lennon John,XYZ,no-not-reply@epfl.ch,SAMPLE,Room -2,XXXXX2,McCartney Paul,XYZ,do-not-reply@epfl.ch,SAMPLE,Room -3,XXXXX3,Harrisson George,XYZ,do-not-reply@epfl.ch,SAMPLE,Room -4,XXXXX4,Starr Ringo,XYZ,do-not-replay@epfl.ch,SAMPLE,Room +ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM,SEAT +1,XXXXX1,Lennon John,XYZ,no-not-reply@epfl.ch,SAMPLE,Room,S1 +2,XXXXX2,McCartney Paul,XYZ,do-not-reply@epfl.ch,SAMPLE,Room,S2 +3,XXXXX3,Harrisson George,XYZ,do-not-reply@epfl.ch,SAMPLE,Room,S3 +4,XXXXX4,Starr Ringo,XYZ,do-not-replay@epfl.ch,SAMPLE,Room,S4 diff --git a/data/templates/chemistry/project_build_script.sh b/data/templates/chemistry/project_build_script.sh index 2a04492..f809253 100644 --- a/data/templates/chemistry/project_build_script.sh +++ b/data/templates/chemistry/project_build_script.sh @@ -1,345 +1,320 @@ #!/bin/bash # This part is specific to the template. # Entry point from bamc: build_project $exam # $exam: name of the exam to build # # Useful variable # --------------- # DIR_WORKSPACE [current workspace dir (absolute)] # DIR_PROJECTS [projects target directory] # DIR_EXAMS [exams'directory in workspace] e.g. $DIR_WORKSPACE/$DIR_EXAMS/$exam # DIR_PROJECTS [projects's directory in workspace] # DIR_EXAM_TEMPLATE [directory of the exam template in use] # FILE_STUDENTS # ... # see 'conf/bamc.conf' for full reference # # Useful functions # ---------------- # verbose "text" # debug "text" # get_lang $exam # ... # see 'lib/bash/*.sh' files for full reference function build_project() { local exam=$1 lang=$(get_lang $exam) assert_exam $exam verbose "Project '$exam' uses '$lang' language" if [ $? -eq 1 ]; then return 1; fi verbose "Building AMC project for '$exam' in workspace '$DIR_WORKSPACE'..." # Project structure build_amc_project $exam if [ $? -ne 0 ]; then error "Could not build AMC project :("; return 1; fi # Build LaTeX sections build_sections $exam $lang if [ $? -ne 0 ]; then error "Could not build project sections :("; return 1; fi # Add media files import_media_files $exam $lang if [ $? -ne 0 ]; then error "Could not import media files :("; return 1; fi - # Import LaTeX files import_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not import LaTeX files :("; return 1; fi # Import local LaTeX files override_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not override LaTeX files :("; return 1; fi # Customize LaTeX file customize_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not customize LaTeX files :("; return 1; fi # Import media files add_media_files $exam if [ $? -ne 0 ]; then error "Could not import media files :("; return 1; fi # Build student list file import_student_file $exam if [ $? -ne 0 ]; then error "Could not create student list :("; return 1; fi return 0 } function import_student_file() { verbose "Customizing student files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local params=$(cat $exam/exam.conf) local ROOM="" if [[ "$params" == *"ROOM"* ]] && [[ "$params" != *"#ROOM"* ]]; then ROOM=",NA" fi + local SEAT="" + if [[ "$params" == *"SEAT"* ]] && [[ "$params" != *"#SEAT"* ]]; then + SEAT=",NA" + fi + local FILE=$exam/$FILE_STUDENTS check_file_exists $FILE if [ $? -ne 0 ]; then return 1; fi cp $FILE $project/$FILE_STUDENTS # Add extra students local nb IFS=$'\n' local id=$(tail -n 1 $project/$FILE_STUDENTS | cut -d ',' -f 1) local sample=$(head -n 1 $DIR_EXAM_TEMPLATE/csv/extra.csv) nb=0 local extra_students=$(read_variable_from_project EXTRA_STUDENTS $exam) while [ $nb -lt $extra_students ]; do ((nb++)) ((id++)) echo $sample |\ sed "s/#NB#/$nb/g" |\ sed "s/#ID#/$id/g" |\ sed "s/#SCIPER#/FAKE-$nb/g" |\ sed "s/#EMAIL#/$DEFAULT_EMAIL/g" |\ sed "s/#SEMESTER#/$SEMESTER/g" |\ - sed "s/,#ROOM#/$ROOM/g" >> $project/$FILE_STUDENTS + sed "s/,#ROOM#/$ROOM/g" |\ + sed "s/,#SEAT#/$SEAT/g" >> $project/$FILE_STUDENTS done return 0 } function add_media_files() { verbose "Importing media files" - verbose "$DIR_EXAM_TEMPLATE/media/* $project/media/" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 cp $DIR_EXAM_TEMPLATE/media/* $project/media/ } function customize_tex_files() { verbose "Customizing LaTeX files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local replace IFS=$'\n' - local FILE=$exam/$FILE_EXAM - check_file_exists $FILE + local CONFIG_EXAM=$exam/$FILE_EXAM + check_file_exists $CONFIG_EXAM if [ $? -ne 0 ]; then return 1; fi # professor.tex local prof_file=$project/professor.tex check_file_exists $prof_file if [ $? -ne 0 ]; then return 1; fi - for replace in $(cat $FILE); do + for replace in $(cat $CONFIG_EXAM | grep -v '^#' | grep ':' ); do replace_in_file "#$(echo $replace | cut -d ':' -f 1)#" "$(echo $replace | cut -d ':' -f 2-)" $prof_file done - - # exam.tex - replace_in_file "#LANG#" $(echo $lang | tr '[a-z]' '[A-Z]') $project/exam.tex + + # first_page.tex (SIGNATURE) & (ROOM) & (QRCODE) + local first_page_file=$project/first_page.tex + if [ $(grep -c '^SIGNATURE$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%SIGNATURE" "" $first_page_file; fi + if [ $(grep -c '^ROOM$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%ROOM" "" $first_page_file; fi + if [ $(grep -c '^QRCODE$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%QRCODE" "" $first_page_file; fi + + # exam.tex (FONT_SIZE) + local exam_file=$project/exam.tex + replace_in_file "#LANG#" $(echo $lang | tr '[a-z]' '[A-Z]') $exam_file + if [ $(grep -c '^FONT_SIZE:' $CONFIG_EXAM) -gt 0 ]; then + replace_in_file "\[a4paper\]" "\[a4paper,$(grep '^FONT_SIZE:' $CONFIG_EXAM | tail -n 1 | cut -d ':' -f 2-)\]" $exam_file + fi # Add extra_packages.tex file if [ -r $project/common_packages.tex ]; then - replace_in_file '% #COMMON_PACKAGES#' '\\input{./common_packages.tex}' $project/exam.tex + replace_in_file '% #COMMON_PACKAGES#' '\\input{./common_packages.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/common_commands.tex ]; then - replace_in_file '% #COMMON_COMMANDS#' '\\input{./common_commands.tex}' $project/exam.tex + replace_in_file '% #COMMON_COMMANDS#' '\\input{./common_commands.tex}' $exam_file fi # Add extra_section.tex file if [ -r $project/extra_section.tex ]; then - replace_in_file '% #EXTRA_SECTION#' '\\input{./extra_section.tex}' $project/exam.tex + replace_in_file '% #EXTRA_SECTION#' '\\input{./extra_section.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/extra_packages.tex ]; then - replace_in_file '% #EXTRA_PACKAGES#' '\\input{./extra_packages.tex}' $project/exam.tex + replace_in_file '% #EXTRA_PACKAGES#' '\\input{./extra_packages.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/extra_commands.tex ]; then - replace_in_file '% #EXTRA_COMMANDS#' '\\input{./extra_commands.tex}' $project/exam.tex + replace_in_file '% #EXTRA_COMMANDS#' '\\input{./extra_commands.tex}' $exam_file fi - + return 0 } function override_tex_files() { verbose "Importing supplementary LaTeX files" local common=$DIR_WORKSPACE/$DIR_COMMON local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local lang=$2 local f # Common (without lang) if [ -d $common ]; then for f in $(find $common -maxdepth 1 -type f -name '*.tex'); do verbose "- Common LaTeX file found: $f" cp $f $project/ done fi # Common (with lang) if [ -d $common/$lang ]; then for f in $(find $common/$lang -type f -name '*.tex'); do verbose "- Common LaTeX file found ($lang): $f" cp $f $project/ done fi # Extra for f in $(find $exam/ -type f -name '*.tex'); do verbose "- Extra LaTeX file found: $f" done find $exam/ -type f -name '*.tex' -exec cp {} $project/ \; return 0 } function import_tex_files() { verbose "Importing LaTeX files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local lang=$2 cp $DIR_EXAM_TEMPLATE/base/* $project/ cp $DIR_EXAM_TEMPLATE/$lang/* $project/ return 0 } function build_amc_project() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 verbose "Creating AMC project structure" mkdir -p $project/cr/corrections/jpg mkdir -p $project/cr/corrections/pdf mkdir -p $project/cr/diagnostic mkdir -p $project/cr/zooms mkdir -p $project/data mkdir -p $project/exports mkdir -p $project/scans mkdir -p $project/copies mkdir -p $project/media cp $DIR_EXAM_TEMPLATE/config/$FILE_AMC_OPTIONS $project/$FILE_AMC_OPTIONS return $? } function import_media_files() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local questions_dir=$DIR_WORKSPACE/$DIR_QUESTIONS/$lang local media_file verbose "Importing media files" for media_file in $(find $questions_dir/ -type f -not -name '*\.tex'); do verbose "Importing file '$media_file'" cp $media_file $DIR_WORKSPACE/$DIR_PROJECTS/$1/ done if [ -d "$DIR_WORKSPACE/$DIR_EXAMS/$1/media/" ]; then for media_file in $(find $DIR_WORKSPACE/$DIR_EXAMS/$1/media/ -type f -not -name '*\.tex'); do verbose "Importing file '$media_file'" cp $media_file $DIR_WORKSPACE/$DIR_PROJECTS/$1/media/ done fi return 0 } -function build_pool() { - local pool_name=$1 - local from=$2 - local to=$3 - debug "Pour $pool_name, je prends les questions de $from, je les mets dans '$to'." - local pool_question - - for pool_question in $(find $from -name '*\.tex' | sort); do - debug "adding $pool_question to $to" - echo "%% From '$pool_name' $pool_question =======================================" >> $to - echo '\element{'$pool_name'}{' >> $to - cat $pool_question >> $to - echo '}' >> $to - done +function is_option_active() { + local section_line=$1 + local option=$2 + if [ $(echo $section_line | grep -c "!$2,") -gt 0 ]; then + return 1 + else + return 0 + fi } function build_sections() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local question_file question section_file section local IFS=$'\n' FILE=$exam/$FILE_SECTIONS verbose "Importing questions" check_file_exists $FILE if [ $? -ne 0 ]; then return 1; fi local section_num=0 - local options pool_latex_copygroup pool_latex_input pool_base pool_name pool_count rm -f $project/sections.tex $project/random-sections.tex for section in $(cat $FILE); do + # Sample format of a section line: + # !OPTION1,!OPTION2,tex_file1.tex,tex_file2.tex,... ((section_num++)) - options="" - pool_latex_input="" - pool_latex_copygroup="" section_file=$project/section_${section_num}.tex rm -f $section_file for question in $(echo $section | tr ',' '\n'); do - debug "$question" - if [ $(echo $question | cut -c 1) == "!" ]; then - options=$(echo $question | cut -c 2-) - debug "Options for this section: $options" - continue - fi - if [[ $question =~ ^pools/ ]]; then - pool_base=$(echo $question | cut -d '|' -f 1) - pool_name='pool-'$(echo $pool_base | cut -d '/' -f 2) - pool_count=$(echo $question | cut -d '|' -f 2) - debug "Pool detected: $pool_name ($pool_base) - for $pool_count questions" - build_pool $pool_name $DIR_WORKSPACE/$DIR_QUESTIONS/$lang/$pool_base $project/${pool_name}.tex - pool_latex_input=$pool_latex_input' -\input{./'${pool_name}'.tex}' - pool_latex_copygroup=$pool_latex_copygroup' -\copygroup['$pool_count']{'$pool_name'}{section'$section_num'-tmp}' - else - verbose "Adding $question to section $section_file..."; - question_file=$DIR_WORKSPACE/$DIR_QUESTIONS/$lang/$question - check_file_exists $question_file - if [ $? -ne 0 ]; then return 1; fi - echo "%% From $lang/$question =======================================" >> $section_file - echo '\element{section'$section_num'}{' >> $section_file - cat $question_file >> $section_file - echo '}' >> $section_file + # Skip options (options start with "!") + if [[ $question =~ ^! ]]; then + verbose "This is an option, and not a question: $question (skipping)" + continue; fi - done - if [ ! -r $section_file ]; then + verbose "Adding $question to section $section_file..."; + question_file=$DIR_WORKSPACE/$DIR_QUESTIONS/$lang/$question + check_file_exists $question_file + if [ $? -ne 0 ]; then return 1; fi + echo "%% From $lang/$question =======================================" >> $section_file echo '\element{section'$section_num'}{' >> $section_file + cat $question_file >> $section_file echo '}' >> $section_file + done + echo "\input{./section_${section_num}.tex}" >> $project/sections.tex + + echo "\input{./header_${section_num}.tex}" >> $project/random-sections.tex + is_option_active $section 'NORAND' + if [ $? -eq 0 ]; then + # RANDOM order + echo "\melangegroupe{section${section_num}}" >> $project/random-sections.tex fi - # Check section_file was initialized... - echo "\input{./section_${section_num}.tex} -$pool_latex_input" >> $project/sections.tex - if [ $(echo $options | tr '|' '\n' | grep -c 'NORAND') -eq 1 ]; then - debug "NOT mixing section #${section_num}" - # Do not mix - echo "\input{./header_${section_num}.tex} -\cleargroup{section${section_num}-tmp} -\setgroupmode{${pool_name}}{withoutreplacement} -\copygroup{section${section_num}}{section${section_num}-tmp} -$pool_latex_copygroup -\restituegroupe{section${section_num}-tmp} -" >> $project/random-sections.tex - else - echo "\input{./header_${section_num}.tex} -\cleargroup{section${section_num}-tmp} -\setgroupmode{${pool_name}}{withoutreplacement} -\copygroup{section${section_num}}{section${section_num}-tmp} -$pool_latex_copygroup -\melangegroupe{section${section_num}-tmp} -\restituegroupe{section${section_num}-tmp} -" >> $project/random-sections.tex - fi + echo "\restituegroupe{section${section_num}}" >> $project/random-sections.tex done return 0 } # EOF diff --git a/data/templates/linear-algebra/csv/blank.csv b/data/templates/linear-algebra/csv/blank.csv index 9a8df2d..c4ebc81 100644 --- a/data/templates/linear-algebra/csv/blank.csv +++ b/data/templates/linear-algebra/csv/blank.csv @@ -1,2 +1,2 @@ -ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM -n/a,999999,n/a,(n/a),do-not-reply@epfl.ch,BLANK,BLANK +ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM,SEAT +n/a,999999,n/a,(n/a),do-not-reply@epfl.ch,BLANK,BLANK,BLANK diff --git a/data/templates/linear-algebra/csv/extra.csv b/data/templates/linear-algebra/csv/extra.csv index 6cbc3f5..c39f4f5 100644 --- a/data/templates/linear-algebra/csv/extra.csv +++ b/data/templates/linear-algebra/csv/extra.csv @@ -1 +1 @@ -#ID#,#SCIPER#,XXX-#NB#,XXX,#EMAIL#,EXTRA,#ROOM# +#ID#,#SCIPER#,XXX-#NB#,XXX,#EMAIL#,EXTRA,#ROOM#,#SEAT# diff --git a/data/templates/linear-algebra/csv/sample.csv b/data/templates/linear-algebra/csv/sample.csv index b877422..2184efe 100644 --- a/data/templates/linear-algebra/csv/sample.csv +++ b/data/templates/linear-algebra/csv/sample.csv @@ -1,5 +1,5 @@ -ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM -1,XXXXX1,Lennon John,XYZ,no-not-reply@epfl.ch,SAMPLE,Room -2,XXXXX2,McCartney Paul,XYZ,do-not-reply@epfl.ch,SAMPLE,Room -3,XXXXX3,Harrisson George,XYZ,do-not-reply@epfl.ch,SAMPLE,Room -4,XXXXX4,Starr Ringo,XYZ,do-not-replay@epfl.ch,SAMPLE,Room +ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM,SEAT +1,XXXXX1,Lennon John,XYZ,no-not-reply@epfl.ch,SAMPLE,Room,S1 +2,XXXXX2,McCartney Paul,XYZ,do-not-reply@epfl.ch,SAMPLE,Room,S2 +3,XXXXX3,Harrisson George,XYZ,do-not-reply@epfl.ch,SAMPLE,Room,S3 +4,XXXXX4,Starr Ringo,XYZ,do-not-replay@epfl.ch,SAMPLE,Room,S4 diff --git a/data/templates/linear-algebra/project_build_script.sh b/data/templates/linear-algebra/project_build_script.sh index 6ccdc35..f809253 100644 --- a/data/templates/linear-algebra/project_build_script.sh +++ b/data/templates/linear-algebra/project_build_script.sh @@ -1,314 +1,320 @@ #!/bin/bash # This part is specific to the template. # Entry point from bamc: build_project $exam # $exam: name of the exam to build # # Useful variable # --------------- # DIR_WORKSPACE [current workspace dir (absolute)] # DIR_PROJECTS [projects target directory] # DIR_EXAMS [exams'directory in workspace] e.g. $DIR_WORKSPACE/$DIR_EXAMS/$exam # DIR_PROJECTS [projects's directory in workspace] # DIR_EXAM_TEMPLATE [directory of the exam template in use] # FILE_STUDENTS # ... # see 'conf/bamc.conf' for full reference # # Useful functions # ---------------- # verbose "text" # debug "text" # get_lang $exam # ... # see 'lib/bash/*.sh' files for full reference function build_project() { local exam=$1 lang=$(get_lang $exam) assert_exam $exam verbose "Project '$exam' uses '$lang' language" if [ $? -eq 1 ]; then return 1; fi verbose "Building AMC project for '$exam' in workspace '$DIR_WORKSPACE'..." # Project structure build_amc_project $exam if [ $? -ne 0 ]; then error "Could not build AMC project :("; return 1; fi # Build LaTeX sections build_sections $exam $lang if [ $? -ne 0 ]; then error "Could not build project sections :("; return 1; fi # Add media files import_media_files $exam $lang if [ $? -ne 0 ]; then error "Could not import media files :("; return 1; fi # Import LaTeX files import_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not import LaTeX files :("; return 1; fi # Import local LaTeX files override_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not override LaTeX files :("; return 1; fi # Customize LaTeX file customize_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not customize LaTeX files :("; return 1; fi # Import media files add_media_files $exam if [ $? -ne 0 ]; then error "Could not import media files :("; return 1; fi # Build student list file import_student_file $exam if [ $? -ne 0 ]; then error "Could not create student list :("; return 1; fi return 0 } function import_student_file() { verbose "Customizing student files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local params=$(cat $exam/exam.conf) local ROOM="" if [[ "$params" == *"ROOM"* ]] && [[ "$params" != *"#ROOM"* ]]; then ROOM=",NA" fi + local SEAT="" + if [[ "$params" == *"SEAT"* ]] && [[ "$params" != *"#SEAT"* ]]; then + SEAT=",NA" + fi + local FILE=$exam/$FILE_STUDENTS check_file_exists $FILE if [ $? -ne 0 ]; then return 1; fi cp $FILE $project/$FILE_STUDENTS # Add extra students local nb IFS=$'\n' local id=$(tail -n 1 $project/$FILE_STUDENTS | cut -d ',' -f 1) local sample=$(head -n 1 $DIR_EXAM_TEMPLATE/csv/extra.csv) nb=0 local extra_students=$(read_variable_from_project EXTRA_STUDENTS $exam) while [ $nb -lt $extra_students ]; do ((nb++)) ((id++)) echo $sample |\ sed "s/#NB#/$nb/g" |\ sed "s/#ID#/$id/g" |\ sed "s/#SCIPER#/FAKE-$nb/g" |\ sed "s/#EMAIL#/$DEFAULT_EMAIL/g" |\ sed "s/#SEMESTER#/$SEMESTER/g" |\ - sed "s/,#ROOM#/$ROOM/g" >> $project/$FILE_STUDENTS + sed "s/,#ROOM#/$ROOM/g" |\ + sed "s/,#SEAT#/$SEAT/g" >> $project/$FILE_STUDENTS done return 0 } function add_media_files() { verbose "Importing media files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 cp $DIR_EXAM_TEMPLATE/media/* $project/media/ } function customize_tex_files() { verbose "Customizing LaTeX files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local replace IFS=$'\n' local CONFIG_EXAM=$exam/$FILE_EXAM check_file_exists $CONFIG_EXAM if [ $? -ne 0 ]; then return 1; fi # professor.tex local prof_file=$project/professor.tex check_file_exists $prof_file if [ $? -ne 0 ]; then return 1; fi for replace in $(cat $CONFIG_EXAM | grep -v '^#' | grep ':' ); do replace_in_file "#$(echo $replace | cut -d ':' -f 1)#" "$(echo $replace | cut -d ':' -f 2-)" $prof_file done # first_page.tex (SIGNATURE) & (ROOM) & (QRCODE) local first_page_file=$project/first_page.tex if [ $(grep -c '^SIGNATURE$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%SIGNATURE" "" $first_page_file; fi if [ $(grep -c '^ROOM$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%ROOM" "" $first_page_file; fi if [ $(grep -c '^QRCODE$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%QRCODE" "" $first_page_file; fi # exam.tex (FONT_SIZE) local exam_file=$project/exam.tex replace_in_file "#LANG#" $(echo $lang | tr '[a-z]' '[A-Z]') $exam_file if [ $(grep -c '^FONT_SIZE:' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "\[a4paper\]" "\[a4paper,$(grep '^FONT_SIZE:' $CONFIG_EXAM | tail -n 1 | cut -d ':' -f 2-)\]" $exam_file fi # Add extra_packages.tex file if [ -r $project/common_packages.tex ]; then replace_in_file '% #COMMON_PACKAGES#' '\\input{./common_packages.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/common_commands.tex ]; then replace_in_file '% #COMMON_COMMANDS#' '\\input{./common_commands.tex}' $exam_file fi # Add extra_section.tex file if [ -r $project/extra_section.tex ]; then replace_in_file '% #EXTRA_SECTION#' '\\input{./extra_section.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/extra_packages.tex ]; then replace_in_file '% #EXTRA_PACKAGES#' '\\input{./extra_packages.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/extra_commands.tex ]; then replace_in_file '% #EXTRA_COMMANDS#' '\\input{./extra_commands.tex}' $exam_file fi return 0 } function override_tex_files() { verbose "Importing supplementary LaTeX files" local common=$DIR_WORKSPACE/$DIR_COMMON local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local lang=$2 local f # Common (without lang) if [ -d $common ]; then for f in $(find $common -maxdepth 1 -type f -name '*.tex'); do verbose "- Common LaTeX file found: $f" cp $f $project/ done fi # Common (with lang) if [ -d $common/$lang ]; then for f in $(find $common/$lang -type f -name '*.tex'); do verbose "- Common LaTeX file found ($lang): $f" cp $f $project/ done fi # Extra for f in $(find $exam/ -type f -name '*.tex'); do verbose "- Extra LaTeX file found: $f" done find $exam/ -type f -name '*.tex' -exec cp {} $project/ \; return 0 } function import_tex_files() { verbose "Importing LaTeX files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local lang=$2 cp $DIR_EXAM_TEMPLATE/base/* $project/ cp $DIR_EXAM_TEMPLATE/$lang/* $project/ return 0 } function build_amc_project() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 verbose "Creating AMC project structure" mkdir -p $project/cr/corrections/jpg mkdir -p $project/cr/corrections/pdf mkdir -p $project/cr/diagnostic mkdir -p $project/cr/zooms mkdir -p $project/data mkdir -p $project/exports mkdir -p $project/scans mkdir -p $project/copies mkdir -p $project/media cp $DIR_EXAM_TEMPLATE/config/$FILE_AMC_OPTIONS $project/$FILE_AMC_OPTIONS return $? } function import_media_files() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local questions_dir=$DIR_WORKSPACE/$DIR_QUESTIONS/$lang local media_file verbose "Importing media files" for media_file in $(find $questions_dir/ -type f -not -name '*\.tex'); do verbose "Importing file '$media_file'" cp $media_file $DIR_WORKSPACE/$DIR_PROJECTS/$1/ done if [ -d "$DIR_WORKSPACE/$DIR_EXAMS/$1/media/" ]; then for media_file in $(find $DIR_WORKSPACE/$DIR_EXAMS/$1/media/ -type f -not -name '*\.tex'); do verbose "Importing file '$media_file'" cp $media_file $DIR_WORKSPACE/$DIR_PROJECTS/$1/media/ done fi return 0 } function is_option_active() { local section_line=$1 local option=$2 if [ $(echo $section_line | grep -c "!$2,") -gt 0 ]; then return 1 else return 0 fi } function build_sections() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local question_file question section_file section local IFS=$'\n' FILE=$exam/$FILE_SECTIONS verbose "Importing questions" check_file_exists $FILE if [ $? -ne 0 ]; then return 1; fi local section_num=0 rm -f $project/sections.tex $project/random-sections.tex for section in $(cat $FILE); do # Sample format of a section line: # !OPTION1,!OPTION2,tex_file1.tex,tex_file2.tex,... ((section_num++)) section_file=$project/section_${section_num}.tex rm -f $section_file for question in $(echo $section | tr ',' '\n'); do # Skip options (options start with "!") if [[ $question =~ ^! ]]; then verbose "This is an option, and not a question: $question (skipping)" continue; fi verbose "Adding $question to section $section_file..."; question_file=$DIR_WORKSPACE/$DIR_QUESTIONS/$lang/$question check_file_exists $question_file if [ $? -ne 0 ]; then return 1; fi echo "%% From $lang/$question =======================================" >> $section_file echo '\element{section'$section_num'}{' >> $section_file cat $question_file >> $section_file echo '}' >> $section_file done echo "\input{./section_${section_num}.tex}" >> $project/sections.tex echo "\input{./header_${section_num}.tex}" >> $project/random-sections.tex is_option_active $section 'NORAND' if [ $? -eq 0 ]; then # RANDOM order echo "\melangegroupe{section${section_num}}" >> $project/random-sections.tex fi echo "\restituegroupe{section${section_num}}" >> $project/random-sections.tex done return 0 } # EOF diff --git a/data/templates/maths/csv/blank.csv b/data/templates/maths/csv/blank.csv index 9a8df2d..c4ebc81 100644 --- a/data/templates/maths/csv/blank.csv +++ b/data/templates/maths/csv/blank.csv @@ -1,2 +1,2 @@ -ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM -n/a,999999,n/a,(n/a),do-not-reply@epfl.ch,BLANK,BLANK +ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM,SEAT +n/a,999999,n/a,(n/a),do-not-reply@epfl.ch,BLANK,BLANK,BLANK diff --git a/data/templates/maths/csv/extra.csv b/data/templates/maths/csv/extra.csv index 6cbc3f5..c39f4f5 100644 --- a/data/templates/maths/csv/extra.csv +++ b/data/templates/maths/csv/extra.csv @@ -1 +1 @@ -#ID#,#SCIPER#,XXX-#NB#,XXX,#EMAIL#,EXTRA,#ROOM# +#ID#,#SCIPER#,XXX-#NB#,XXX,#EMAIL#,EXTRA,#ROOM#,#SEAT# diff --git a/data/templates/maths/csv/sample.csv b/data/templates/maths/csv/sample.csv index b877422..2184efe 100644 --- a/data/templates/maths/csv/sample.csv +++ b/data/templates/maths/csv/sample.csv @@ -1,5 +1,5 @@ -ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM -1,XXXXX1,Lennon John,XYZ,no-not-reply@epfl.ch,SAMPLE,Room -2,XXXXX2,McCartney Paul,XYZ,do-not-reply@epfl.ch,SAMPLE,Room -3,XXXXX3,Harrisson George,XYZ,do-not-reply@epfl.ch,SAMPLE,Room -4,XXXXX4,Starr Ringo,XYZ,do-not-replay@epfl.ch,SAMPLE,Room +ID,SCIPER,NAME,SECTION,EMAIL,STATUS,ROOM,SEAT +1,XXXXX1,Lennon John,XYZ,no-not-reply@epfl.ch,SAMPLE,Room,S1 +2,XXXXX2,McCartney Paul,XYZ,do-not-reply@epfl.ch,SAMPLE,Room,S2 +3,XXXXX3,Harrisson George,XYZ,do-not-reply@epfl.ch,SAMPLE,Room,S3 +4,XXXXX4,Starr Ringo,XYZ,do-not-replay@epfl.ch,SAMPLE,Room,S4 diff --git a/data/templates/maths/project_build_script.sh b/data/templates/maths/project_build_script.sh index 6ccdc35..f809253 100644 --- a/data/templates/maths/project_build_script.sh +++ b/data/templates/maths/project_build_script.sh @@ -1,314 +1,320 @@ #!/bin/bash # This part is specific to the template. # Entry point from bamc: build_project $exam # $exam: name of the exam to build # # Useful variable # --------------- # DIR_WORKSPACE [current workspace dir (absolute)] # DIR_PROJECTS [projects target directory] # DIR_EXAMS [exams'directory in workspace] e.g. $DIR_WORKSPACE/$DIR_EXAMS/$exam # DIR_PROJECTS [projects's directory in workspace] # DIR_EXAM_TEMPLATE [directory of the exam template in use] # FILE_STUDENTS # ... # see 'conf/bamc.conf' for full reference # # Useful functions # ---------------- # verbose "text" # debug "text" # get_lang $exam # ... # see 'lib/bash/*.sh' files for full reference function build_project() { local exam=$1 lang=$(get_lang $exam) assert_exam $exam verbose "Project '$exam' uses '$lang' language" if [ $? -eq 1 ]; then return 1; fi verbose "Building AMC project for '$exam' in workspace '$DIR_WORKSPACE'..." # Project structure build_amc_project $exam if [ $? -ne 0 ]; then error "Could not build AMC project :("; return 1; fi # Build LaTeX sections build_sections $exam $lang if [ $? -ne 0 ]; then error "Could not build project sections :("; return 1; fi # Add media files import_media_files $exam $lang if [ $? -ne 0 ]; then error "Could not import media files :("; return 1; fi # Import LaTeX files import_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not import LaTeX files :("; return 1; fi # Import local LaTeX files override_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not override LaTeX files :("; return 1; fi # Customize LaTeX file customize_tex_files $exam $lang if [ $? -ne 0 ]; then error "Could not customize LaTeX files :("; return 1; fi # Import media files add_media_files $exam if [ $? -ne 0 ]; then error "Could not import media files :("; return 1; fi # Build student list file import_student_file $exam if [ $? -ne 0 ]; then error "Could not create student list :("; return 1; fi return 0 } function import_student_file() { verbose "Customizing student files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local params=$(cat $exam/exam.conf) local ROOM="" if [[ "$params" == *"ROOM"* ]] && [[ "$params" != *"#ROOM"* ]]; then ROOM=",NA" fi + local SEAT="" + if [[ "$params" == *"SEAT"* ]] && [[ "$params" != *"#SEAT"* ]]; then + SEAT=",NA" + fi + local FILE=$exam/$FILE_STUDENTS check_file_exists $FILE if [ $? -ne 0 ]; then return 1; fi cp $FILE $project/$FILE_STUDENTS # Add extra students local nb IFS=$'\n' local id=$(tail -n 1 $project/$FILE_STUDENTS | cut -d ',' -f 1) local sample=$(head -n 1 $DIR_EXAM_TEMPLATE/csv/extra.csv) nb=0 local extra_students=$(read_variable_from_project EXTRA_STUDENTS $exam) while [ $nb -lt $extra_students ]; do ((nb++)) ((id++)) echo $sample |\ sed "s/#NB#/$nb/g" |\ sed "s/#ID#/$id/g" |\ sed "s/#SCIPER#/FAKE-$nb/g" |\ sed "s/#EMAIL#/$DEFAULT_EMAIL/g" |\ sed "s/#SEMESTER#/$SEMESTER/g" |\ - sed "s/,#ROOM#/$ROOM/g" >> $project/$FILE_STUDENTS + sed "s/,#ROOM#/$ROOM/g" |\ + sed "s/,#SEAT#/$SEAT/g" >> $project/$FILE_STUDENTS done return 0 } function add_media_files() { verbose "Importing media files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 cp $DIR_EXAM_TEMPLATE/media/* $project/media/ } function customize_tex_files() { verbose "Customizing LaTeX files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local replace IFS=$'\n' local CONFIG_EXAM=$exam/$FILE_EXAM check_file_exists $CONFIG_EXAM if [ $? -ne 0 ]; then return 1; fi # professor.tex local prof_file=$project/professor.tex check_file_exists $prof_file if [ $? -ne 0 ]; then return 1; fi for replace in $(cat $CONFIG_EXAM | grep -v '^#' | grep ':' ); do replace_in_file "#$(echo $replace | cut -d ':' -f 1)#" "$(echo $replace | cut -d ':' -f 2-)" $prof_file done # first_page.tex (SIGNATURE) & (ROOM) & (QRCODE) local first_page_file=$project/first_page.tex if [ $(grep -c '^SIGNATURE$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%SIGNATURE" "" $first_page_file; fi if [ $(grep -c '^ROOM$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%ROOM" "" $first_page_file; fi if [ $(grep -c '^QRCODE$' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "%QRCODE" "" $first_page_file; fi # exam.tex (FONT_SIZE) local exam_file=$project/exam.tex replace_in_file "#LANG#" $(echo $lang | tr '[a-z]' '[A-Z]') $exam_file if [ $(grep -c '^FONT_SIZE:' $CONFIG_EXAM) -gt 0 ]; then replace_in_file "\[a4paper\]" "\[a4paper,$(grep '^FONT_SIZE:' $CONFIG_EXAM | tail -n 1 | cut -d ':' -f 2-)\]" $exam_file fi # Add extra_packages.tex file if [ -r $project/common_packages.tex ]; then replace_in_file '% #COMMON_PACKAGES#' '\\input{./common_packages.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/common_commands.tex ]; then replace_in_file '% #COMMON_COMMANDS#' '\\input{./common_commands.tex}' $exam_file fi # Add extra_section.tex file if [ -r $project/extra_section.tex ]; then replace_in_file '% #EXTRA_SECTION#' '\\input{./extra_section.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/extra_packages.tex ]; then replace_in_file '% #EXTRA_PACKAGES#' '\\input{./extra_packages.tex}' $exam_file fi # Add extra_packages.tex file if [ -r $project/extra_commands.tex ]; then replace_in_file '% #EXTRA_COMMANDS#' '\\input{./extra_commands.tex}' $exam_file fi return 0 } function override_tex_files() { verbose "Importing supplementary LaTeX files" local common=$DIR_WORKSPACE/$DIR_COMMON local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local lang=$2 local f # Common (without lang) if [ -d $common ]; then for f in $(find $common -maxdepth 1 -type f -name '*.tex'); do verbose "- Common LaTeX file found: $f" cp $f $project/ done fi # Common (with lang) if [ -d $common/$lang ]; then for f in $(find $common/$lang -type f -name '*.tex'); do verbose "- Common LaTeX file found ($lang): $f" cp $f $project/ done fi # Extra for f in $(find $exam/ -type f -name '*.tex'); do verbose "- Extra LaTeX file found: $f" done find $exam/ -type f -name '*.tex' -exec cp {} $project/ \; return 0 } function import_tex_files() { verbose "Importing LaTeX files" local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local lang=$2 cp $DIR_EXAM_TEMPLATE/base/* $project/ cp $DIR_EXAM_TEMPLATE/$lang/* $project/ return 0 } function build_amc_project() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 verbose "Creating AMC project structure" mkdir -p $project/cr/corrections/jpg mkdir -p $project/cr/corrections/pdf mkdir -p $project/cr/diagnostic mkdir -p $project/cr/zooms mkdir -p $project/data mkdir -p $project/exports mkdir -p $project/scans mkdir -p $project/copies mkdir -p $project/media cp $DIR_EXAM_TEMPLATE/config/$FILE_AMC_OPTIONS $project/$FILE_AMC_OPTIONS return $? } function import_media_files() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local questions_dir=$DIR_WORKSPACE/$DIR_QUESTIONS/$lang local media_file verbose "Importing media files" for media_file in $(find $questions_dir/ -type f -not -name '*\.tex'); do verbose "Importing file '$media_file'" cp $media_file $DIR_WORKSPACE/$DIR_PROJECTS/$1/ done if [ -d "$DIR_WORKSPACE/$DIR_EXAMS/$1/media/" ]; then for media_file in $(find $DIR_WORKSPACE/$DIR_EXAMS/$1/media/ -type f -not -name '*\.tex'); do verbose "Importing file '$media_file'" cp $media_file $DIR_WORKSPACE/$DIR_PROJECTS/$1/media/ done fi return 0 } function is_option_active() { local section_line=$1 local option=$2 if [ $(echo $section_line | grep -c "!$2,") -gt 0 ]; then return 1 else return 0 fi } function build_sections() { local project=$DIR_WORKSPACE/$DIR_PROJECTS/$1 local exam=$DIR_WORKSPACE/$DIR_EXAMS/$1 local lang=$2 local question_file question section_file section local IFS=$'\n' FILE=$exam/$FILE_SECTIONS verbose "Importing questions" check_file_exists $FILE if [ $? -ne 0 ]; then return 1; fi local section_num=0 rm -f $project/sections.tex $project/random-sections.tex for section in $(cat $FILE); do # Sample format of a section line: # !OPTION1,!OPTION2,tex_file1.tex,tex_file2.tex,... ((section_num++)) section_file=$project/section_${section_num}.tex rm -f $section_file for question in $(echo $section | tr ',' '\n'); do # Skip options (options start with "!") if [[ $question =~ ^! ]]; then verbose "This is an option, and not a question: $question (skipping)" continue; fi verbose "Adding $question to section $section_file..."; question_file=$DIR_WORKSPACE/$DIR_QUESTIONS/$lang/$question check_file_exists $question_file if [ $? -ne 0 ]; then return 1; fi echo "%% From $lang/$question =======================================" >> $section_file echo '\element{section'$section_num'}{' >> $section_file cat $question_file >> $section_file echo '}' >> $section_file done echo "\input{./section_${section_num}.tex}" >> $project/sections.tex echo "\input{./header_${section_num}.tex}" >> $project/random-sections.tex is_option_active $section 'NORAND' if [ $? -eq 0 ]; then # RANDOM order echo "\melangegroupe{section${section_num}}" >> $project/random-sections.tex fi echo "\restituegroupe{section${section_num}}" >> $project/random-sections.tex done return 0 } # EOF