diff options
author | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2011-08-03 13:56:44 +0000 |
---|---|---|
committer | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2011-08-03 13:56:44 +0000 |
commit | 802e04882d053670edb5d4e6c87e7f34cea110a0 (patch) | |
tree | a13b454980c12154b2506181ce5f0c3aeea64681 /Master/texmf-dist/tex | |
parent | 74e9852b0c607417766f22bc3508d9c16c9fa7fc (diff) |
alterqcm 3.7c
git-svn-id: svn://tug.org/texlive/trunk@23385 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/alterqcm/alterqcm.sty | 450 |
1 files changed, 238 insertions, 212 deletions
diff --git a/Master/texmf-dist/tex/latex/alterqcm/alterqcm.sty b/Master/texmf-dist/tex/latex/alterqcm/alterqcm.sty index 44414ec3670..b1f7a22dbcd 100644 --- a/Master/texmf-dist/tex/latex/alterqcm/alterqcm.sty +++ b/Master/texmf-dist/tex/latex/alterqcm/alterqcm.sty @@ -23,62 +23,63 @@ %% \AQquestion{question} %% {{proposition}, %% {proposition}} + %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{alterqcm} - [2009/03/29 v3.1 qcm creation] + [2011/06/01 v3.6 qcm creation] \DeclareOption{french}{% - \def\aqlanguage{french} - \def\aqlabelforquest{Questions} - \def\aqlabelforrep{R\'eponses} - \def\aqfoottext{suite sur la page suivante\ldots}} + \def\aqlanguage{french}% + \def\aqlabelforquest{Questions}% + \def\aqlabelforrep{R\'eponses}% + \def\aqfoottext{suite sur la page suivante\ldots}}% \DeclareOption{english}{% \def\aqlanguage{english} \def\aqlabelforquest{Questions} \def\aqlabelforrep{Answers} - \def\aqfoottext{Continued on the next page\ldots}} + \def\aqfoottext{Continued on the next page\ldots}}% \DeclareOption{german}{% - \def\aqlanguage{german} - \def\aqlabelforquest{Fragen} - \def\aqlabelforrep{Antworten} - \def\aqfoottext{Fortsetzung nächste Seite\ldots}} + \def\aqlanguage{german}% + \def\aqlabelforquest{Fragen}% + \def\aqlabelforrep{Antworten}% + \def\aqfoottext{Fortsetzung nächste Seite\ldots}}% \ExecuteOptions{french} \ProcessOptions\relax \RequirePackage{xkeyval}[2005/11/25] \RequirePackage{calc} -\RequirePackage{ifthen,forloop} +\RequirePackage{ifthen} \RequirePackage{array} \RequirePackage{multirow} \RequirePackage{pifont}%v v1.00 %<---------------------------------------------------------------> % from RANDOM.TEX v.1 (Donald Arseneau) %<---------------------------------------------------------------> -\newcount\randomi % the random number seed (while executing) -\newcounter{identRow} -\newcounter{identCol} -\newcounter{tmp} - -\global\randomi\catcode`\@ % scratch variable during definitions +\newcount\aq@randomi % the random number seed (while executing) +\newcounter{aq@identRow} +\newcounter{aq@identCol} +\newcount\aq@tmp +\def\aqutil@empty{} +\global\aq@randomi\catcode`\@ % scratch variable during definitions \catcode`\@=11 \def\nextrandom{\begingroup - \ifnum\randomi<\@ne % then initialize with time - \global\randomi\time - \global\multiply\randomi388 \global\advance\randomi\year - \global\multiply\randomi31 \global\advance\randomi\day - \global\multiply\randomi97 \global\advance\randomi\month - \message{Randomizer initialized to \the\randomi.}% + \ifnum\aq@randomi<\@ne % then initialize with time + \global\aq@randomi\time + \global\multiply\aq@randomi388 \global\advance\aq@randomi\year + \global\multiply\aq@randomi31 \global\advance\aq@randomi\day + \global\multiply\aq@randomi97 \global\advance\aq@randomi\month + \message{Randomizer initialized to \the\aq@randomi.}% \nextrandom \nextrandom \nextrandom \fi - \count@ii\randomi + \count@ii\aq@randomi \divide\count@ii 127773 % modulus = multiplier * 127773 + 2836 \count@\count@ii \multiply\count@ii 127773 - \global\advance\randomi-\count@ii % random mod 127773 - \global\multiply\randomi 16807 + \global\advance\aq@randomi-\count@ii % random mod 127773 + \global\multiply\aq@randomi 16807 \multiply\count@ 2836 - \global\advance\randomi-\count@ - \ifnum\randomi<\z@ \global\advance\randomi 2147483647\relax\fi + \global\advance\aq@randomi-\count@ + \ifnum\aq@randomi<\z@ \global\advance\aq@randomi 2147483647\relax\fi \endgroup } @@ -91,37 +92,45 @@ \@tempcntb 2147483645 % = m - 2 = 2^{31} - 3 \divide\@tempcntb\@tempcnta \getr@nval - \advance\ranval#2\relax - #1\ranval + \advance\aq@ranval#2\relax + #1\aq@ranval } \def\getr@nval{% The values in \@tempcnta and \@tempcntb are parameters \nextrandom - \ranval\randomi \advance\ranval\m@ne \divide\ranval\@tempcntb - \ifnum\ranval<\@tempcnta\else \expandafter\getr@nval \fi + \aq@ranval\aq@randomi \advance\aq@ranval\m@ne \divide\aq@ranval\@tempcntb + \ifnum\aq@ranval<\@tempcnta\else \expandafter\getr@nval \fi } -\catcode`\@=\randomi -\global\randomi=0 -\newcount\ranval +\catcode`\@=\aq@randomi +\global\aq@randomi=0 +\newcount\aq@ranval %<---------------------------------------------------------------> -\newtoks\tdml@a -\newtoks\tdml@b -\newcount\@alea -\newcount\n@arg -\newbox\qcm@tempbox -\newdimen\qcm@hauteurquest -\newdimen\qcm@hauteurprop -\newdimen\qcm@wdquest -\newdimen\qcm@wdprop -\newdimen\qcm@dimtmpa -\newdimen\qcm@dimtmpb -\newdimen\qcm@dimtmp +\newtoks\aq@tdml@a +\newtoks\aq@tdml@b +\newcount\aq@alea +\newcount\aq@n@arg +\newbox\aq@tempbox +\newdimen\aq@hauteurquest +\newdimen\aq@hauteurprop +\newdimen\aq@wdquest +\newdimen\aq@wdprop +\newdimen\aq@dimtmpa +\newdimen\aq@dimtmpb +\newdimen\aq@dimtmp \newcounter{AQ@numquestion}\setcounter{AQ@numquestion}{0}% -\newcounter{qcm@numb} +\newcounter{aq@numb} \newcounter{AQ@numprop}\setcounter{AQ@numprop}{0}% v0.93 \newcounter{alea@numfirst} \newcounter{alea@numlast} +\newcommand\points[1]{% +\marginpar{% +\begin{tabular}{|c|} + \hline + \textbf{#1}\\ + \hline\\ + \hline +\end{tabular}}} %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> % Début Code QCM %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> @@ -146,6 +155,7 @@ } \define@cmdkey [AQ] {global} {lq}{} \define@cmdkey [AQ] {global} {pq}{} +\define@cmdkey [AQ] {global} {points}{} \define@cmdkey [AQ] {global} {symb}{} \define@cmdkey [AQ] {global} {corsymb}{} \define@cmdkey [AQ] {global} {bonus}{} @@ -156,6 +166,7 @@ \define@cmdkey [AQ] {global} {tone}{} \define@cmdkey [AQ] {global} {ttwo}{} \define@cmdkey [AQ] {global} {numbreak}{} +\define@cmdkey [AQ] {global} {afterpreskip}{} \define@boolkey [AQ] {global} {transparent}[true]{} \define@boolkey [AQ] {global} {VF} [true]{} \define@boolkey [AQ] {global} {sep} [true]{} @@ -170,6 +181,7 @@ \presetkeys [AQ] {global} { lq = 100mm, pq = 0pt, + points = {}, sep = false, pre = false, bonus = {0,5}, @@ -177,7 +189,8 @@ VF = false, long = false, symb = $\square$, - corsymb = $\blacksquare$, + corsymb = $\blacksquare$, + afterpreskip = \medskip, num = true, transparent = false, nosquare = false, @@ -185,7 +198,7 @@ numstyle = \arabic, propstyle = \alph,% v0.93 numprop = false,% v0.93 - size = \normalsize, + size = {}, %3.7 same size la fonte title = true, ttwo = \aqlabelforrep, tone = \aqlabelforquest, @@ -194,25 +207,21 @@ \define@cmdkey[AQ]{local}{pq}{} \define@cmdkey[AQ]{local}{br}{} \presetkeys[AQ]{local}{br=1,pq= \cmdAQ@global@pq}{}% -\newcommand{\qcm@pre}{Pour chacune des questions ci-dessous, une seule des r\'eponses propos\'ees est exacte. Vous devez cocher la r\'eponse exacte sans justification. -Une bonne r\'eponse rapporte \textbf{\cmdAQ@global@bonus\ point}. Une mauvaise r\'eponse enl\`eve \textbf{\cmdAQ@global@malus\ point}. L'absence de r\'eponse ne rapporte ni n'enl\`eve aucun point. Si le total des points est n\'egatif, la note globale attribu\'ee \`a l'exercice est \textbf{0}.} -\newcommand{\qcm@preVF}{Pour chacune des affirmations ci-dessous, cocher la case V (l'affirmation est vraie) ou la case F (l'affirmation est fausse) sur l'ANNEXE, \`a rendre avec la copie. Les r\'eponses ne seront pas justifi\'ees. -Une bonne r\'eponse rapporte \textbf{\cmdAQ@global@bonus\ point}. Une mauvaise r\'eponse enl\`eve \textbf{\cmdAQ@global@malus\ point}. L'absence de r\'eponse ne rapporte ni n'enl\`eve aucun point. Si le total des points est n\'egatif, la note globale attribu\'ee \`a l'exercice est \textbf{0}.} +\newcommand{\aq@pre}{Pour chacune des questions ci-dessous, une seule des r\'eponses propos\'ees est exacte. Vous devez cocher la r\'eponse exacte sans justification. +Une bonne r\'eponse rapporte \textbf{\cmdAQ@global@bonus\ point}. Une mauvaise r\'eponse enl\`eve \textbf{\cmdAQ@global@malus\ point}. L'absence de r\'eponse ne rapporte ni n'enl\`eve aucun point. Si le total des points est n\'egatif, la note globale attribu\'ee \`a l'exercice est \textbf{0}.}% + +\newcommand{\aq@preVF}{Pour chacune des affirmations ci-dessous, cocher la case V (l'affirmation est vraie) ou la case F (l'affirmation est fausse) sur l'ANNEXE, \`a rendre avec la copie. Les r\'eponses ne seront pas justifi\'ees. +Une bonne r\'eponse rapporte \textbf{\cmdAQ@global@bonus\ point}. Une mauvaise r\'eponse enl\`eve \textbf{\cmdAQ@global@malus\ point}. L'absence de r\'eponse ne rapporte ni n'enl\`eve aucun point. Si le total des points est n\'egatif, la note globale attribu\'ee \`a l'exercice est \textbf{0}.}% -\newcommand*{\AQms}{\aq@ms} +\newcommand*{\AQms}{\aq@ms}% \def\aq@ms(#1,#2){\vrule height #1pt depth #2pt width 0pt} -\newcommand*{\altersquare}{\vbox{\hrule\hbox to 6pt{\vrule height 5.2pt \hfil\vrule}\hrule}} -%v1.00 -\newcommand*{\dingsquare}{\ding{114}} -%v1.00 +\newcommand*{\altersquare}{\vbox{\hrule\hbox to 6pt{\vrule height 5.2pt \hfil\vrule}\hrule}}% +\newcommand*{\dingsquare}{\ding{114}}% \newcommand*{\dingchecksquare}{\mbox{\ding{114}\hspace{-.7em}\raisebox{.2ex}[1ex]{\ding{51}}}} -\newcommand*{\aq@style@title}{\textbf} -\newcommand*{\aq@style@numquest}{\textbf} -\newcommand*{\aq@style@numrep}{\textbf} - - - -\newcommand{\qcm@title}{% +\newcommand*{\aq@style@title}{\textbf}% +\newcommand*{\aq@style@numquest}{\textbf}% +\newcommand*{\aq@style@numrep}{\textbf}% +\newcommand{\aq@title}{% \hline% \hfil{\aq@style@title{\cmdAQ@global@tone}}\hfil% & \hfil{\aq@style@title{\cmdAQ@global@ttwo}}\hfil\\ \hline% @@ -229,107 +238,106 @@ Une bonne r\'eponse rapporte \textbf{\cmdAQ@global@bonus\ point}. Une mauvaise r \newcommand{\AQmessage}[1]{% \multicolumn{2}{|l|}{% \begin{minipage}{\textwidth-\tabcolsep*2-\arrayrulewidth*2}% - -\smallskip #1 \smallskip +#1 \end{minipage}}\\ \hline% }% -\newcommand{\melange}{% -\setrannum{\@alea}{1}{\value{qcm@numb}}% - \ifcase\@alea% +\newcommand{\aq@melange}{% +\setrannum{\aq@alea}{1}{\value{aq@numb}}% + \ifcase\aq@alea% \or - \global\let\qcm@tempfirst\qcm@arga + \global\let\aq@tempfirst\aq@arga \or - \global\let\qcm@tempfirst\qcm@argb + \global\let\aq@tempfirst\aq@argb \or - \global\let\qcm@tempfirst\qcm@argc + \global\let\aq@tempfirst\aq@argc \or - \global\let\qcm@tempfirst\qcm@argd + \global\let\aq@tempfirst\aq@argd \or - \global\let\qcm@tempfirst\qcm@arge + \global\let\aq@tempfirst\aq@arge \fi -\setcounter{alea@numfirst}{\@alea}% -\setrannum{\@alea}{1}{\value{qcm@numb}}% - \ifcase\@alea% +\setcounter{alea@numfirst}{\aq@alea}% +\setrannum{\aq@alea}{1}{\value{aq@numb}}% + \ifcase\aq@alea% \or - \global\let\qcm@templast\qcm@arga + \global\let\aq@templast\aq@arga \or - \global\let\qcm@templast\qcm@argb + \global\let\aq@templast\aq@argb \or - \global\let\qcm@templast\qcm@argc + \global\let\aq@templast\aq@argc \or - \global\let\qcm@templast\qcm@argd + \global\let\aq@templast\aq@argd \or - \global\let\qcm@templast\qcm@arge + \global\let\aq@templast\aq@arge \fi -\setcounter{alea@numlast}{\@alea}% -\global\let\qcm@temp\qcm@tempfirst% -\global\let\qcm@tempfirst\qcm@templast% -\global\let\qcm@templast\qcm@temp% -\global\expandafter\let\csname qcm@arg\alph{alea@numfirst}% -\endcsname\qcm@tempfirst% -\global\expandafter\let\csname qcm@arg\alph{alea@numlast}% -\endcsname\qcm@templast% +\setcounter{alea@numlast}{\aq@alea}% +\global\let\aq@temp\aq@tempfirst% +\global\let\aq@tempfirst\aq@templast% +\global\let\aq@templast\aq@temp% +\global\expandafter\let\csname aq@arg\alph{alea@numfirst}% +\endcsname\aq@tempfirst% +\global\expandafter\let\csname aq@arg\alph{alea@numlast}% +\endcsname\aq@templast% }% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> -\newcommand{\qcm@hauteurbox}[1]{% -\setbox\qcm@tempbox=% +\newcommand{\aq@hauteurbox}[1]{% +\setbox\aq@tempbox=% \vbox{\parbox[t]{\textwidth-\tabcolsep*4-\arrayrulewidth*3-\cmdAQ@global@lq}% {\cmdAQ@global@symb\quad\mbox{#1}}}% \cmdAQ@global@symb remplace $\square$ -\qcm@dimtmpa\ht\qcm@tempbox\relax% -\qcm@dimtmpb\dp\qcm@tempbox\relax% -\advance\qcm@dimtmpa by\qcm@dimtmpb}% +\aq@dimtmpa\ht\aq@tempbox\relax% +\aq@dimtmpb\dp\aq@tempbox\relax% +\advance\aq@dimtmpa by\aq@dimtmpb}% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> -\newcommand{\qcm@adjust}[1]{% -\setbox\qcm@tempbox=% +\newcommand{\aq@adjust}[1]{% +\setbox\aq@tempbox=% \vbox{% \parbox[t]{\cmdAQ@global@lq}{\aq@style@numquest{\number\value{AQ@numquestion}.}\hspace{3pt}#1}}% -\qcm@dimtmpa\ht\qcm@tempbox% -\qcm@dimtmpb\dp\qcm@tempbox% -\qcm@wdquest\wd\qcm@wdquest% -\advance\qcm@dimtmpa by\qcm@dimtmpb\relax% -\qcm@hauteurquest=\qcm@dimtmpa% -\qcm@hauteurbox{\qcm@arga}% -\qcm@hauteurprop=\qcm@dimtmpa% -\qcm@hauteurbox{\qcm@argb}% -\advance\qcm@hauteurprop by\qcm@dimtmpa\relax% -\ifnum\value{qcm@numb}>2\relax% -\qcm@hauteurbox{\qcm@argc}% -\advance\qcm@hauteurprop by\qcm@dimtmpa\relax\fi -\ifnum\value{qcm@numb}>3\relax% -\qcm@hauteurbox{\qcm@argd}% -\advance\qcm@hauteurprop by\qcm@dimtmpa\relax\fi -\ifnum\value{qcm@numb}>4\relax% -\qcm@hauteurbox{\qcm@arge}% -\advance\qcm@hauteurprop by\qcm@dimtmpa\relax\fi -\ifdim\qcm@hauteurquest<\qcm@hauteurprop% -\global\qcm@dimtmp=0pt -\qcm@dimtmpa\ht\qcm@tempbox% -\qcm@dimtmpb\dp\qcm@tempbox% -\advance\qcm@dimtmpa by3pt% -\advance\qcm@dimtmpb by2pt% -\vrule height\qcm@dimtmpa depth\qcm@dimtmpb width0pt% +\aq@dimtmpa\ht\aq@tempbox +\aq@dimtmpb\dp\aq@tempbox +\aq@wdquest\wd\aq@wdquest +\advance\aq@dimtmpa by\aq@dimtmpb\relax% +\aq@hauteurquest=\aq@dimtmpa +\aq@hauteurbox{\aq@arga}% +\aq@hauteurprop=\aq@dimtmpa +\aq@hauteurbox{\aq@argb}% +\advance\aq@hauteurprop by\aq@dimtmpa\relax% +\ifnum\value{aq@numb}>2\relax +\aq@hauteurbox{\aq@argc}% +\advance\aq@hauteurprop by\aq@dimtmpa\relax\fi +\ifnum\value{aq@numb}>3\relax +\aq@hauteurbox{\aq@argd}% +\advance\aq@hauteurprop by\aq@dimtmpa\relax\fi +\ifnum\value{aq@numb}>4\relax +\aq@hauteurbox{\aq@arge}% +\advance\aq@hauteurprop by\aq@dimtmpa\relax\fi +\ifdim\aq@hauteurquest<\aq@hauteurprop% +\global\aq@dimtmp=0pt +\aq@dimtmpa\ht\aq@tempbox +\aq@dimtmpb\dp\aq@tempbox +\advance\aq@dimtmpa by3pt +\advance\aq@dimtmpb by2pt +\vrule height\aq@dimtmpa depth\aq@dimtmpb width0pt \else -\advance\qcm@hauteurquest by-\qcm@hauteurprop% -\divide\qcm@hauteurquest by\theqcm@numb\relax% -\divide\qcm@hauteurquest by2\relax% -\global\qcm@dimtmp=\qcm@hauteurquest\fi +\advance\aq@hauteurquest by-\aq@hauteurprop +\divide\aq@hauteurquest by\theaq@numb\relax +\divide\aq@hauteurquest by2\relax% +\global\aq@dimtmp=\aq@hauteurquest\fi }% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> -\newcommand{\qcm@prop}[2]{% -\setbox\qcm@tempbox=\vbox{#1}% -\qcm@wdprop\wd\qcm@tempbox% -\qcm@dimtmpa\ht\qcm@tempbox\advance\qcm@dimtmpa by4pt\advance\qcm@dimtmpa by\qcm@dimtmp\relax% -\qcm@dimtmpb\dp\qcm@tempbox\advance\qcm@dimtmpb by3pt\advance\qcm@dimtmpb by\qcm@dimtmp\relax% -\ifAQ@global@VF\hfil\fi% +\newcommand{\aq@prop}[2]{% +\setbox\aq@tempbox=\vbox{#1}% +\aq@wdprop\wd\aq@tempbox +\aq@dimtmpa\ht\aq@tempbox\advance\aq@dimtmpa by4pt\advance\aq@dimtmpa by\aq@dimtmp\relax +\aq@dimtmpb\dp\aq@tempbox\advance\aq@dimtmpb by3pt\advance\aq@dimtmpb by\aq@dimtmp\relax +\ifAQ@global@VF\hfil\fi \ifAQ@global@transparent\def\cmdAQ@global@corsymb{$\bigcirc$}% -\def\cmdAQ@global@symb{}\fi% +\def\cmdAQ@global@symb{}\fi \ifAQ@global@numprop\stepcounter{AQ@numprop}% {\aq@style@numrep{(\cmdAQ@global@propstyle{AQ@numprop})}}% \else - \ifAQ@global@nosquare% + \ifAQ@global@nosquare \else% - \ifAQ@global@correction% + \ifAQ@global@correction \def\@stop{1} \@for\goodrep:=\cmdAQ@local@br\do{% \ifnum\@stop<6 % @@ -343,76 +351,80 @@ Une bonne r\'eponse rapporte \textbf{\cmdAQ@global@bonus\ point}. Une mauvaise r \cmdAQ@global@symb\hspace*{6pt}% \fi \fi - \fi% + \fi \ifAQ@global@transparent - \vrule height0pt depth0pt width\qcm@wdprop + \vrule height0pt depth0pt width\aq@wdprop \else \ignorespaces#1% \fi - \vrule height\qcm@dimtmpa depth\qcm@dimtmpb width0pt% + \vrule height\aq@dimtmpa depth\aq@dimtmpb width0pt \ifAQ@global@VF\hfil\fi}% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newcommand{\AQquestion}[3][]{% \setkeys[AQ]{local}{#1}% \stepcounter{AQ@numquestion}% \setcounter{AQ@numprop}{0} % v0.93 -\setcounter{qcm@numb}{0}% +\setcounter{aq@numb}{0}% \@for\liste:=#3\do{% -\stepcounter{qcm@numb}% -\global\expandafter\let\csname qcm@arg\alph{qcm@numb}\endcsname\liste}% -\ifAQ@global@alea\ifAQ@global@VF\else% -\n@arg=0 % -\loop\ifnum\n@arg<\value{qcm@numb}\melange\advance\n@arg by1\repeat\fi\fi% -\qcm@adjust{#2}% +\stepcounter{aq@numb}% +\global\expandafter\let\csname aq@arg\alph{aq@numb}\endcsname\liste}% +\ifAQ@global@alea\ifAQ@global@VF +\else +\aq@n@arg=0 % +\loop\ifnum\aq@n@arg<\value{aq@numb}\aq@melange\advance\aq@n@arg by1\repeat\fi +\fi +\aq@adjust{#2}% \multirow{1}{\cmdAQ@global@lq}[\cmdAQ@local@pq]{% \ifAQ@global@num\aq@style@numquest{\cmdAQ@global@numstyle{AQ@numquestion}.}% -\hspace{3pt}\fi% +\hspace{3pt}\fi \ifAQ@global@transparent% -\hrule height0pt depth0pt width\qcm@wdquest% -\else% -#2\vss% -\fi% +\hrule height0pt depth0pt width\aq@wdquest% +\else +#2\vss +\fi }% &\setkeys[AQ]{local}{#1}% - \qcm@prop{\qcm@arga}{1}\\% - \ifAQ@global@sep\cline{2-2}\fi% + \aq@prop{\aq@arga}{1}\\% + \ifAQ@global@sep\cline{2-2}\fi &\setkeys[AQ]{local}{#1}% - \qcm@prop{\qcm@argb}{2}\\% - \ifAQ@global@sep\cline{2-2}\fi% - \ifnum\value{qcm@numb}=2\hline\else\ifAQ@global@sep\cline{2-2}\fi% + \aq@prop{\aq@argb}{2}\\ + \ifAQ@global@sep\cline{2-2}\fi + \ifnum\value{aq@numb}=2\hline\else\ifAQ@global@sep\cline{2-2}\fi &\setkeys[AQ]{local}{#1}% - \qcm@prop{\qcm@argc}{3}\\% - \ifnum\value{qcm@numb}=3\hline\else\ifAQ@global@sep\cline{2-2}\fi% + \aq@prop{\aq@argc}{3}\\ + \ifnum\value{aq@numb}=3\hline\else\ifAQ@global@sep\cline{2-2}\fi &\setkeys[AQ]{local}{#1}% - \qcm@prop{\qcm@argd}{4}\\% - \ifnum\value{qcm@numb}=4\hline\else\ifAQ@global@sep\cline{2-2}\fi% + \aq@prop{\aq@argd}{4}\\ + \ifnum\value{aq@numb}=4\hline\else\ifAQ@global@sep\cline{2-2}\fi &\setkeys[AQ]{local}{#1}% - \qcm@prop{\qcm@arge}{5}\\% + \aq@prop{\aq@arge}{5}\\ \hline\fi\fi\fi}% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> -\newcommand{\qcm@questionVF}[2][]{% +\newcommand{\aq@questionVF}[2][]{% \setkeys[AQ]{local}{#1} \stepcounter{AQ@numquestion}% \setcounter{AQ@numprop}{0}% v0.93 -\protected@xdef\qcm@arga{\textbf{V}} -\protected@xdef\qcm@argb{\textbf{F}} -\setcounter{qcm@numb}{2}% -\qcm@adjust{#2}% +\protected@xdef\aq@arga{\textbf{V}} +\protected@xdef\aq@argb{\textbf{F}} +\setcounter{aq@numb}{2}% +\aq@adjust{#2}% \multirow{3}{\cmdAQ@global@lq}[\cmdAQ@local@pq]{% -\ifAQ@global@num\aq@style@numquest{\cmdAQ@global@numstyle{AQ@numquestion}.}\hspace{3pt}\fi% +\ifAQ@global@num\aq@style@numquest{\cmdAQ@global@numstyle{AQ@numquestion}.}\hspace{3pt}\fi #2\vss}% - &\setkeys[AQ]{local}{#1}\qcm@prop{\qcm@arga}{1}\\ -\ifAQ@global@sep \cline{2-2}\fi% - &\setkeys[AQ]{local}{#1}\qcm@prop{\qcm@argb}{2}\\ + &\setkeys[AQ]{local}{#1}\aq@prop{\aq@arga}{1}\\ +\ifAQ@global@sep \cline{2-2}\fi + &\setkeys[AQ]{local}{#1}\aq@prop{\aq@argb}{2}\\ \hline}% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> \newenvironment{alterqcm}[1][]{% -\ifAQ@global@numprop \setkeys [AQ] {global} {nosquare = true}{}\fi% % +\ifAQ@global@numprop \setkeys [AQ] {global} {nosquare = true}{}\fi \setkeys[AQ]{global}{#1}% +\ifx\aqutil@empty\cmdAQ@global@points \else +\points{\cmdAQ@global@points} +\fi \setcounter{AQ@numquestion}{\cmdAQ@global@numbreak}% -\ifAQ@global@VF\let\AQquestion\qcm@questionVF\let\qcm@pre\qcm@preVF\fi% -\ifAQ@global@pre\qcm@pre\par\medskip\fi% -\hfill\break% +\ifAQ@global@VF\let\AQquestion\aq@questionVF\let\aq@pre\aq@preVF\fi +\ifAQ@global@pre\aq@pre\par\cmdAQ@global@afterpreskip\fi \ifAQ@global@long% \setlength\LTleft{0pt}% \setlength\LTright\fill% @@ -428,13 +440,13 @@ Une bonne r\'eponse rapporte \textbf{\cmdAQ@global@bonus\ point}. Une mauvaise r \textwidth-\tabcolsep*4-\arrayrulewidth*3-\cmdAQ@global@lq}% |@{}}% \fi - \ifAQ@global@title\qcm@title\else\hline\fi% + \ifAQ@global@title\aq@title\else\hline\fi% }% -{\ifAQ@global@long% +{\ifAQ@global@long \end{longtable}% \else \end{tabular}% - \fi% + \fi }% %<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> @@ -442,77 +454,91 @@ Une bonne r\'eponse rapporte \textbf{\cmdAQ@global@bonus\ point}. Une mauvaise r % code de JC Charpentier %----------------------------------------------------------% -\newcommand\InputQuestionList[3]{% - - \tdml@a={}% - \tdml@b={}% - \ifx\relax#3\relax\else % - \tdml@#3,\@nil,% - \expandafter\tdml@clean\the\tdml@a\@nil +\newcommand\InputQuestionList[3]{% + \aq@tdml@a={}% + \aq@tdml@b={}% + \ifx\relax#3\relax\else + \tdml@#3,\@nil,\expandafter\tdml@clean\the\aq@tdml@a\@nil \fi - \expandafter\gdef\expandafter\last@val\expandafter{\the\tdml@b} - \AQ@TA{#1}{#2}{\the\tdml@a}% + \expandafter\gdef\expandafter\last@val\expandafter{\the\aq@tdml@b}% + \AQ@TA{#1}{#2}{\the\aq@tdml@a}% \AQ@TB{#1}{#2}{\last@val}} %----------------------------------------------------------% \long\def\tdml@#1,{% \ifx\@nil#1\relax \else - \expandafter\addtotoks\the\tdml@b,\to\tdml@a - \tdml@b={#1}% + \expandafter\addtotoks\the\aq@tdml@b,\to\aq@tdml@a + \aq@tdml@b={#1}% \expandafter\tdml@ \fi } %----------------------------------------------------------% \long\def\addtotoks#1\to#2{% #2=\expandafter{\the#2#1}% -} +}% %----------------------------------------------------------% \long\def\tdml@clean,#1\@nil{% \ifx\relax#1\relax - \tdml@a{}% + \aq@tdml@a{}% \else \tdml@@clean#1\@nil \fi } %----------------------------------------------------------% \long\def\tdml@@clean#1,\@nil{% - \tdml@a{#1}% -} + \aq@tdml@a{#1}% +}% %----------------------------------------------------------% %----------------------------------------------------------% \newcommand\AQ@TA[3]{\@for\nb:=#3\do{% -\input #1#2\nb} -} - +\input #1#2\nb}% +}% \newcommand\AQ@TB[3]{\input#1#2#3}% +%----------------------------------------------------------% +% from forloop.sty +\newcommand{\aq@forLoop}[5][1] +{% +\setcounter{#4}{#2}% +\ifthenelse{\value{#4}<#3}% +{#5\addtocounter{#4}{#1}% +\aq@forLoop[#1]{\value{#4}}{#3}{#4}{#5}% +}% +{\ifthenelse{\value{#4}=#3}% +{#5}{}}}% + %----------------------------------------------------------% -%----------------------------------------------------------% -\newcount\prop \def\aq@tvi(#1,#2){\vrule height #1pt depth #2pt width 0pt} \define@cmdkey [AQ] {ann} {propstyle}[true]{} -\define@boolkey [AQ] {ann} {VF}[true]{} -\presetkeys [AQ] {ann} {propstyle = \arabic, - VF = false}{} - +\define@boolkey[AQ] {ann} {VF}[true]{} +\presetkeys [AQ] {ann} {propstyle = \arabic, + VF = false}{} \newcommand*{\AQannexe}[4][]{% \setkeys[AQ]{ann}{#1}% -\setcounter{tmp}{#4}% -\stepcounter{tmp}% -\begin{tabular}{*{\number\value{tmp}}{|>{\hfill}c}|}\hline% +\aq@tmp=#4 % +\advance\aq@tmp by 1 % +\begin{tabular}{*{\number\aq@tmp}{|>{\hfill}c}|}\hline% \ifAQ@ann@VF% N&V&F% \else -N\forLoop{1}{#4}{identCol}% - {& \cmdAQ@ann@propstyle{identCol}}\fi +N\aq@forLoop{1}{#4}{aq@identCol}% + {& \cmdAQ@ann@propstyle{aq@identCol}}\fi \tabularnewline\hline% -\forLoop{#2}{#3}{identRow} - {\number\value{identRow}&% - \forLoop{2}{\number\value{tmp}}{identCol}% +\aq@forLoop{#2}{#3}{aq@identRow} + {\number\value{aq@identRow}&% + \aq@forLoop{2}{\number\aq@tmp}{aq@identCol}% {$\ $% - \ifthenelse{\equal{\value{identCol}}{#4}}{}{&}% + \ifthenelse{\equal{\value{aq@identCol}}{#4}}{}{&}% }% \tabularnewline\hline}% \end{tabular}% }% - +%----------------------------------------------------------% +\newcommand\AQpoints[1]{% +\marginpar{% +\begin{tabular}{|c|} + \hline + \textbf{#1}\\ + \hline\\ + \hline +\end{tabular}}} \endinput |