%%%%%%% Préambule%%%%%%%% \documentclass[12pt,a4paper]{article} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \usepackage{lmodern}%-> ??? %\usepackage{microtype} \usepackage[babel=true,kerning=true]{microtype}%évite le problème des ":" dans la fonction tikz domain= a: b plot -> peut poser des problème si les phrases sont trop longues, important pour csv simple et AMC \usepackage{xspace,boxedminipage,needspace} \usepackage{amsmath,amssymb,amsfonts,mathtools} \usepackage{array,multirow,tabularx} \usepackage{graphicx,wrapfig} \usepackage[table,dvipsnames,svgnames]{xcolor} \usepackage{xstring}%pour travailler sur les chaînes \usepackage{fancyhdr} \pagestyle{fancy} \usepackage[francais,bloc,ensemble,outsidebox,automarks,chiffres]{automultiplechoice} \geometry{hmargin=1.5cm,headheight=3cm,headsep=0.3cm,footskip=1cm,top=2.5cm,bottom=2cm,heightrounded} \usepackage{multicol} \usepackage{csvsimple} \usepackage{pst-all,pst-circ,pst-labo,pst-osci} \usepackage{fp,pgf,tikz} \usepackage{ifthen,multido} %pour écrire le numéro du sujet en pied de page \makeatletter \def\Nsujet{\the\AMCid@etud} \makeatother \renewcommand{\AMCsubjectPageTag}{} %Pour afficher automatiquement le nombre de cases pour AMCnumericChoices et la décimale \newcommand*{\AffichageMecaniqueCases}[1]{ \IfInteger{#1}{\StrLen{#1}[\CasesM]\FPeval{\Cases}{clip(\CasesM+1)}\FPset{\PartieDecimale}{1}}{%\IfInteger{#1}{\StrLen{#1}[\Cases]\FPset{\PartieDecimale}{0}}%%\IfInteger{#1}{\StrLen{#1}[\CasesM]\FPeval{\Cases}{clip(\CasesM+1)}\FPset{\PartieDecimale}{1}} \IfDecimal{#1} {\def\Cases{#1}} {\edef\Cases{\number\integerpart\ifnum\decimalpart=0 \else\number\decimalpart\fi}}% \StrLen{\number\integerpart}[\PartieEntiere] \StrDel\Cases.[\Cases]% supprime les points \StrDel\Cases,[\Cases]% supprime les virgules \StrDel\Cases-[\Cases]% supprime l'éventuel signe \StrLen\Cases[\Cases]% stocke la longueur \FPeval{\PartieDecimale}{clip(\Cases-\PartieEntiere)} }%fin du faux de IfInteger % }%%fin newcommand %Pour afficher automatiquement le nombre de cases pour AMCnumericChoices et la décimale %nouvelle commande % il manque le signe à tester % \newcommand*{\AffichageAutomatiqueCases}[1]{ \StrPosition{#1}{.}[\PositionSeparateur]% Recherche du séparateur décimal 0 si absent sinon valeur non nulle \FPifeq{\PositionSeparateur}{0}% %si le nombre est entier sans séparteur (exemple 10) %Le nombre de cases sera la longueur du nombre +1 pour la décimale {% \StrLen{#1}[\LongueurNombre] \FPeval{\Cases}{clip(\LongueurNombre +1)} \FPeval{\PartieDecimale}{1} \AMCnumericChoices{#1}{digits=\Cases,decimals=\PartieDecimale} }% \else% {% %si le nombre est entier avec séparateur décimal (exemple 10.00) %Le nombre de cases sera la longueur égale à la position du séparateur décimal %Le nombre de cases pour la partie entière sera la position du séparateur décimal -1 %Le nomre de case pour la partie décimale sera égale à 1 \IfInteger{#1}{\StrPosition{#1}{.}[\Cases]\FPeval{\PartieDecimale}{1}}% {%sinon du if % si le nombre est un décimal (exemple 10.01) %Le nombre de cases sera la longueur égale -1 %Le nomre de case pour la partie décimale sera égale à la longueur - la position de la partie décimale \StrLen{#1}[\LongueurNombre] \StrPosition{#1}{.}[\PositionSeparateur] \FPeval{\Cases}{clip(\LongueurNombre -1)} \FPeval{\PartieDecimale}{clip(\LongueurNombre-\PositionSeparateur)} }%%fin du sinon \AMCnumericChoices{#1}{digits=\Cases,decimals=\PartieDecimale} } \fi } %le nombre de cases sera égale à la position du séparateur décimal %le nombre de cases pour la décimale sera de 1 %donc le nombre de cases pour la partie entière sera %%%%%%Fin préambule%%%%%%%% %%%%%%%%Tableau%%%%%%%%%%%%%%% %%Commande qui insère le tableau des cases à cocher %% %%L'argument #1 est la largeur du tableau par rapport%% %%à la largeur de la ligne, comprise entre 0 et 1%% \newcommand{\Tableauconsignecasesacocher}[1]{ \begin{tabularx}{#1\linewidth}{|c|XXXX|} \hline \multicolumn{5}{|c|}{Les cases doivent \^etre colori\'ees}\\ \hline correct & \multicolumn{4}{|c|}{incorrect}\\ \hline $\blacksquare$ &\checkmark & $\boxdot$ & $\boxplus$ & $\boxtimes$ \\ \hline \end{tabularx}\hfill } %%%%%%%%%%Fin tableau %%%%%%%%%%%Respect Consigne %%Commande respect Consigne \newcommand{\insertRespectconsigne}[1]{ % {\def\AMCbeginQuestion##1##2{}\AMCquestionNumberfalse\AMCnobloc% \begin{questionmult}{00respectconsigne}\bareme{default.respect=0,formula=respect*#1/20,p=-#1/10,v=0,MAX=0} \AMCnoCompleteMulti\AMCdontAnnotate \def\AMCbeginAnswer{}\def\AMCendAnswer{} R\'eserv\'e~~\begin{reponsesperso}[o] \mauvaise{-~}\bareme{set.respect=-1} \mauvaise{--~}\bareme{set.respect=-2} \end{reponsesperso} \end{questionmult}} }% %%%%%%%Fin respect consigne \newcommand{\Oscilloscope}{ \exploregroups \expandarg %déclaration sensibilité verticale et horizontale \def\SensibiliteVA{{20}{10}{5}{2}{1}} \def\SensibiliteVB{{20}{10}{5}{2}{1}} \def\SensibiliteH{{50}{10}{5}{2}{1}} %choix du calibre verticale et horizontale \pgfmathrandominteger{\Choix}{1}{4}\StrFindGroup{\SensibiliteVA}{\Choix}[\CalibreTensionA]%\FPset{\CalibreTensionA}{\Calibre} \pgfmathrandominteger{\Choix}{1}{4}\StrFindGroup{\SensibiliteVB}{\Choix}[\CalibreTensionB]%\FPset{\CalibreTensionB}{\Calibre} \pgfmathrandominteger{\Choix}{1}{4}\StrFindGroup{\SensibiliteH}{\Choix}[\CalibreTemps]%\FPset{\CalibreTemps}{\Calibre} %choix du nombre de carreaux maximal pour affichage de la tension \def\DeviationV{{1.0}{1.2}{1.4}{1.6}{1.8}{2.0}{2.2}{2.4}{2.6}{2.8}{3.0}{3.2}{3.4}{3.6}{3.8}} \pgfmathrandominteger{\Choix}{1}{15}\StrFindGroup{\DeviationV}{\Choix}[\DeviationVA] \pgfmathrandominteger{\Choix}{1}{15}\StrFindGroup{\DeviationV}{\Choix}[\DeviationVB] %choix de la tension maximale : CalibreTension * deviation \FPeval{\UmaxA}{trunc(\CalibreTensionA*\DeviationVA,2)} \FPeval{\UmaxB}{trunc(\CalibreTensionB*\DeviationVB,1)} %clalcul tension efficace \FPeval{\UeffA}{round(\UmaxA/root(2,2),1)} \FPeval{\UeffB}{round(\UmaxB/root(2,2),1)} %choix du nombre de carreaux maximal pour la période \def\DeviationH{{2.0}{2.2}{2.6}{2.8}{3.0}{3.2}{3.6}{3.8}{4}} \pgfmathrandominteger{\Choix}{1}{9}\StrFindGroup{\DeviationH}{\Choix}[\DeviationHA] \pgfmathrandominteger{\Choix}{1}{9}\StrFindGroup{\DeviationH}{\Choix}[\DeviationHB] %choix de la période : CalibreTemps * deviation \FPeval{\TA}{clip(\CalibreTemps*\DeviationHA)} \FPeval{\TB}{clip(\CalibreTemps*\DeviationHB)} %choix de la période : CalibreTemps * deviation \FPeval{\FA}{round(1000/\TA,1)} \FPeval{\FB}{round(1000/\TB,1)} %On vérifie si la période est inférieur à 10 ms -> la fréquence aura 3 chiffres donc pas de décimale %\FPiflt{\TB}{9.999}{\FPeval{\FB}{round(1000/\TB,0)}}\else{\FPeval{\FB}{round(1000/\TB,1)}}\fi %\ifthenelse{\TB > 10}{\FPeval\FB{round(1000/\TB,0)}}{\FPeval\FB{round(1000/\TB,1)}} \newpsstyle{Dash}{linestyle=dashed,linecolor=black,linewidth=0.05,plotpoints=100} \noindent\begin{minipage}[l]{.4\linewidth} \psscalebox{.9}{\Oscillo[AllColor=false,timediv=\CalibreTemps,period1=\TA,amplitude1=\UmaxA,sensivity1=\CalibreTensionA,period2=\TB, amplitude2=\UmaxB,sensivity2=\CalibreTensionB,plotstyle2=Dash,phase2=-180]}% \end{minipage}\hfill \begin{minipage}{.45\linewidth} %%%%Courbe A \begin{questionmultx}{\thecompteurOscilloscope{}-UmaxA} Quelle est la valeur de la tension de la courbe A ? \CalibreTensionA *\DeviationVA *\UmaxA \AffichageAutomatiqueCases{\UmaxA} \end{questionmultx} \begin{questionmultx}{\thecompteurOscilloscope{}-UeffA} Quelle est la valeur de la tension efficace de la courbe A ? \UeffA \AffichageAutomatiqueCases{\UeffA} \end{questionmultx} \begin{questionmultx}{\thecompteurOscilloscope{}-PeriodeA} Quelle est la valeur de la période de la courbe A ?\CalibreTemps * \DeviationHA *\TA \AffichageAutomatiqueCases{\TA} \end{questionmultx} \begin{questionmultx}{\thecompteurOscilloscope{}-FrequenceA} Quelle est la valeur de la fréquence de la courbe A ? \FA \AffichageAutomatiqueCases{\FA} \end{questionmultx} %%%Fin courbe A %%%Courbe B \begin{questionmultx}{\thecompteurOscilloscope{}-UmaxB} Quelle est la valeur de la tension de la courbe B ? \CalibreTensionB *\DeviationVB *\UmaxB \AffichageAutomatiqueCases{\UmaxB} \end{questionmultx} \begin{questionmultx}{\thecompteurOscilloscope{}-UeffB} Quelle est la valeur de la tension efficace de la courbe B ? \UeffB \AffichageAutomatiqueCases{\UeffB} \end{questionmultx} \begin{questionmultx}{\thecompteurOscilloscope{}-PeriodeB} Quelle est la valeur de la période de la courbe B ?\CalibreTemps * \DeviationHB *\TB \AffichageAutomatiqueCases{\TB} \end{questionmultx} \begin{questionmultx}{\thecompteurOscilloscope{}-FrequenceB} Quelle est la valeur de la fréquence de la courbe B ? \FB \AffichageAutomatiqueCases{\FB} \end{questionmultx} %%%Fin courbe B \end{minipage} \addtocounter{compteurOscilloscope}{1} } \def\DureeExamen{}%%%%Durée examen %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\sujet}{ \onecopy{1}{ \FPseed\Nsujet \setcounter{compteurOscilloscope}{1} %%%%%%%%%%%%%%%Explications%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \vfill \begin{center} \Large \texttt{Veuillez lire attentivement les explications ci-dessous avant de commencer le devoir.} \end{center} \vfill {\Large Le devoir est à rendre, au plus tard, le \dotfill} \vfill \noindent\begin{minipage}[c]{.95\linewidth} \begin{itemize} \item Vous devez colorier les cases au crayon à papier ou au stylo noir ou au stylo bleu pour répondre aux questions.\medskip \begin{center} \Tableauconsignecasesacocher{0.9} \end{center}\medskip \item En cas d'erreur, effacez à la gomme ou au \og{}blanco\fg{} \emph{mais ne pas redessiner la case}.\medskip \item Les questions \emph{sans} le symbole \multiSymbole{} signifient qu'il n'y a qu'une seule r\'eponse. % Bar\`eme : 1 point par bonne r\'eponse; 0 point par mauvaise réponse.\medskip \item Les questions \emph{avec} le symbole \multiSymbole{} signifient qu'il y a plusieurs bonnes r\'eponses. % Bar\`eme : 1 point par bonne réponse; -0,5 point par mauvaise réponse.\medskip \item Certaines questions demande une réponse mathématique chiffrée. Ce résultat devra \^etre donné sous forme d'un code : \emph{1 chiffre par ligne}. \\Dans l'exemple ci-dessous, le nombre 25,32 a été codé.\medskip \begin{center} \centering\includegraphics[scale=1]{/home/moi/Projets-QCM/divers/Modeles-AMC/AMC-InstructionRemplissageNumericChoice-Image} \end{center} \item Aucun document n'est autorisé.\medskip \item Les réponses doivent \^etre reportées uniquement sur \ifthenelse{\AMCpageref{lastpage} =\AMCpageref{PageDebutReponses}}{la feuille réponse.}{les feuilles réponses.}\medskip \item Aucune réponse donnée sur les feuilles suivantes ne sera prise en compte. \end{itemize} \end{minipage} %%%%Calcul des pages \vfill \hfill\begin{boxedminipage}{.98\linewidth} \begin{itemize} \item[\textbullet]Le devoir comporte \AMCpageref{lastpage} pages, celle-ci incluse. \item[\textbullet]Les questions débutent à la page \AMCpageref{PageDebutQuestions}\ifthenelse{\AMCpageref{PageFinQuestions}=\AMCpageref{PageDebutQuestions}}{}{ et se terminent à la page \AMCpageref{PageFinQuestions}}. \item[\textbullet]\ifthenelse{\AMCpageref{lastpage} =\AMCpageref{PageDebutReponses}}{La feuille réponse se trouve à la page \AMCpageref{lastpage}.}{ Les feuilles réponses débutent à la page \AMCpageref{PageDebutReponses} et se terminent à la page \AMCpageref{lastpage}.} \end{itemize} \end{boxedminipage}\hfill\null \vfill \vfill\null \newpage %%%%%%%%%%%%%%%%%%%%%% debut de l'en-tête des énoncées%%%%%%%%%%%%%%%%%%%%%% \vspace*{-3em} \AMClabel{PageDebutQuestions}%numéro de la page qui début les questions \begin{center} \noindent{}\fbox{\vspace*{3mm} \Large\bf\nom{}~\prenom{}\normalsize{} \hfill {\scshape Dur\'ee : \DureeExamen{}~minutes}\hfill\null \vspace*{3mm} } \end{center} %%%%%%%%%%%%%%%%%%%%%% Fin de l'en-tête des énoncées%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEVOIR%%%%%%%%%%%%%%%%%%%%%%%% % % Inscrire la commande \melangegroupe{general} et \restituegroupe{general} % % Mettre les textes ici puis les questions qui ne font pas partie d'un groupe % % % \vfill\Oscilloscope\vfill \Oscilloscope\vfill\null \Oscilloscope \AMClabel{PageFinQuestions}%Numéro de la page qui termine les questions %%%%%%%%%%%%%%%%%%%%%%%%%%%%% fin du devoirs%%%%%%%%%%%%%%%%%%%%%%%%%% %\clearpage %%%%%%%%%%%%%%%%%si sujet nb pages impaires%%%%%%%%%%%%% \AMCcleardoublepage \AMClabel{PageDebutReponses}%Numéro de la page qui débute les réponses \AMCdebutFormulaire %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%En tête de la copie%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%Consigne de réponse et points retirer en absence de respect%%%%%%%%% \vspace*{-2em} \hfill\champnom{\fbox{ \large\bf\nom{}~\prenom{}\normalsize{} - \uppercase{feuille\ifthenelse{\AMCpageref{lastpage} >\AMCpageref{PageDebutReponses}}{}{S} de r\'eponses} - {\insertRespectconsigne{20}} \vspace*{1mm} }}\hfill\null \AMCassociation{\identifiant} \begin{multicols}{2} \formulaire \end{multicols} \AMClabel{lastpage}%référence à la dernière page \clearpage } } \begin{document} \fancyfoot[C]{\large{\hfill{}sujet \no\Nsujet \hfill{}PAGE~\thepage{} sur \AMCpageref{lastpage}\hfill{}}} %%%%%%OPtions %Compteur pour la rédaction des questions ouvertes./oscilloscope \newcounter{compteurOscilloscope} %barème par défaut des questions multiples - simples -ouvertes \baremeDefautM{formula=(NBC+NMC==N ? 0 : NBC-0.5*NMC),p=0,e=0,v=0}% \baremeDefautS{b=1,m=0,e=0,v=0}% \AMCopenOpts{lines=4,lineheight=0.8cm}% %texte inscrit pour les questions ouvertes \def\AMCotextReserved{\emph{NE RIEN COCHER}}% \def\AMCotextGoto{\par\emph{\large{R\'epondre sur la feuille de r\'eponses s\'epar\'ee.}}}% % Réservé au correcteur pour question ouverte %modifie le choix du mélange. !!NE PAS MODIFIER AVANT LA CORRECTION DU SUJET!! \AMCrandomseed{3239458}%valeur de 1 à 4194303 %%%%Options des questions et réponses% \def\multiSymbole{$\bigstar$}%%change le symbole des questions multiples \AMCinterBquest=2ex%modifie l'espace entre deux questions si l'option bloc est choisie \AMCinterBrep=8ex%modifie l'espace entre les réponses si l'option bloc est choisie ->mode ensmeble \AMCinterIquest=0pt%modifie l'espace entre les questions si l'option bloc n'est pas choisie \AMCinterIrep=0.5em%modifie l'espace entre les réponses si l'option bloc n'est pas choisie %modifie le titre de la question %\def\AMCbeginQuestion#1#2{\par\noindent{\textbf{Q.#1}}#2\hspace{0.5ex}}% %Ajoute un zéro caché \AMCformVSpace=1.2ex \AMCformHSpace=0.3em \def\AMCbeginQuestion#1#2{\par\noindent{\textbf{Q.\ifthenelse{#1<10}{\phantom{0}}{}#1}}#2\hspace{0.5ex}}% %Ajout \nopagebreak réponse au forum \def\AMCformQuestion#1{\vspace{\AMCformVSpace}\par{\bf Q. \ifthenelse{#1<10}{\phantom{0}}{}#1 :}\nopagebreak} \def\AMCformAnswer#1{\hspace{\AMCformHSpace} #1} %%%Options des cases à cocher \AMCboxDimensions{size=1.5ex}%modifie la taille par défaut des cases metre 1.8 si pas de 1 sur 2 %%%%suppression du code +1/1/59 \AMCidsPosition{pos=none} %%%%Choix du mélange des groupes %fixed -> aucun mélange %cyclic -> élément pris à la suite et reprise du début %withreplacement -> équivalent à \melangegroupe %withoutreplacement > équivalent à \melangegroupe + cyclic reprise au début \setdefaultgroupmode{withreplacement} %%%%Change Explication en réponse \AMCtext{explain}{R\'eponse : } %%%Option pour amcnumericchoices \def\AMCdecimalPoint{\textbf{\rotatebox[origin=lb]{45}{$\smile$}}} \AMCnumericOpts{sign=false,scoreexact=1,scoreapprox=0.5,approx=1} %%%%%%%%%%fin options %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Préparation des groupes%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% fin des groupes%%%%%%%%%%%%%%%%%%%%%%%%% \csvreader[head to column names,separator=semicolon]{listetestBis.csv}{}{\sujet} %\csvreader[head to column names,separator=semicolon]{ListeEleves3.csv}{}{\sujet} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fermeture exemplaire%%%%%%%%%%%% \end{document}