From 6d6c3b4ee419b9f485a213d2ece28b06e9ca2f7c Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Thu, 20 May 2021 03:00:38 +0000
Subject: CTAN sync 202105200300

---
 macros/latex/contrib/alterqcm/latex/alterqcm.sty | 683 +++++++++++++++++++++++
 1 file changed, 683 insertions(+)
 create mode 100644 macros/latex/contrib/alterqcm/latex/alterqcm.sty

(limited to 'macros/latex/contrib/alterqcm/latex/alterqcm.sty')

diff --git a/macros/latex/contrib/alterqcm/latex/alterqcm.sty b/macros/latex/contrib/alterqcm/latex/alterqcm.sty
new file mode 100644
index 0000000000..3ea1a35f68
--- /dev/null
+++ b/macros/latex/contrib/alterqcm/latex/alterqcm.sty
@@ -0,0 +1,683 @@
+%% alterqcm.sty
+%% Copyright (C)  2021n Alain Matthes
+%% Copyright (C)  2019 Alain Matthes, Apostolos Syropoulos, and Anastasios Dimou
+%% Copyright (C)  2009 Alain Matthes  
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+%   http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Alain Matthes
+%<------------------------->
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{alterqcm}[2021/05/17 v4.42c]
+\newcount\aqlocall@ng% to set language specific strings:
+ % 0 stands for French, 1 for English, 2 for German,  3 for Greek ,4 for russian, 5 for italien, 6 for chinese 
+\aqlocall@ng=0%
+%<------------------------->
+  % name of new LANGUAGE
+  % codenumber(s) of new LANGUAGE(S), 4, 5, ...;
+  % 0..6 = french, english,...
+  % title of columns for QUESTIONS
+  % title of columns for ANSWERS
+  % Continuation ...
+\DeclareOption{french}{%           
+\def\aqlabelforquest{Questions}%
+\def\aqlabelforrep{R\'eponses}%
+\def\aqfoottext{suite sur la page suivante\ldots}}% 
+                                
+%<------------------------->
+\DeclareOption{english}{%
+\aqlocall@ng=1%
+\def\aqlabelforquest{Questions}%
+\def\aqlabelforrep{Answers}%
+\def\aqfoottext{Continued on the next page\ldots}}%
+%<------------------------->
+\DeclareOption{german}{%
+\aqlocall@ng=2%
+\def\aqlabelforquest{Fragen}%
+\def\aqlabelforrep{Antworten}%
+\def\aqfoottext{Fortsetzung nächste Seite\ldots}}%
+%<------------------------->
+\DeclareOption{greek}{%
+\aqlocall@ng=3%
+\def\aqlabelforquest{Ερωτήσεις}%
+\def\aqlabelforrep{Απαντήσεις}%
+\def\aqfoottext{Συνεχίζεται στην επόμενη σελίδα\ldots}}%
+%<------------------------->
+\DeclareOption{russian}{%
+\aqlocall@ng=4%
+\def\aqlabelforquest{Вопросы}%
+\def\aqlabelforrep{Ответы}%
+\def\aqfoottext{Продолжение на следующей странице\ldots}}%
+%<------------------------->
+\DeclareOption{italian}{%     
+\aqlocall@ng=5%                                          
+\def\aqlabelforquest{Domande}  
+\def\aqlabelforrep{Risposte}  
+\def\aqfoottext{Continua alla pagina successiva\ldots}}
+%<------------------------->
+\DeclareOption{chinese}{%
+\aqlocall@ng=6%
+\def\aqlabelforquest{问题}%
+\def\aqlabelforrep{答案}%
+\def\aqfoottext{请翻页\ldots}}%
+%<------------------------->
+\DeclareOption{unknown}{%
+\aqlocall@ng=7%
+\def\aqlabelforquest{unknown}%
+\def\aqlabelforrep{unknown}%
+\def\aqfoottext{unknown}}%
+%<------------------------->
+\ExecuteOptions{french}
+\ProcessOptions\relax
+\RequirePackage{xkeyval}[2005/11/25] 
+\RequirePackage{calc}
+\RequirePackage{ifthen}
+\RequirePackage{array}
+\RequirePackage{multirow}
+\RequirePackage{pifont}% v1.00
+%<--------------------------------------------------------------->
+% from RANDOM.TEX       v.1   (Donald Arseneau)
+%<--------------------------------------------------------------->
+\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\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\aq@randomi
+ \divide\count@ii 127773 % modulus = multiplier * 127773 + 2836
+ \count@\count@ii
+ \multiply\count@ii 127773
+ \global\advance\aq@randomi-\count@ii % random mod 127773
+ \global\multiply\aq@randomi 16807
+ \multiply\count@ 2836
+ \global\advance\aq@randomi-\count@
+ \ifnum\aq@randomi<\z@ \global\advance\aq@randomi 2147483647\relax\fi
+ \endgroup
+}
+
+\countdef\count@ii=2 % use only in boxes!
+\ifx\@tempcnta\undefined \csname newcount\endcsname \@tempcnta \fi
+\ifx\@tempcntb\undefined \csname newcount\endcsname \@tempcntb \fi
+
+\def\setrannum#1#2#3{% count register, minimum, maximum
+ \@tempcnta#3\advance\@tempcnta-#2\advance\@tempcnta\@ne
+ \@tempcntb 2147483645 %  =  m - 2  =  2^{31} - 3
+ \divide\@tempcntb\@tempcnta
+ \getr@nval
+ \advance\aq@ranval#2\relax
+ #1\aq@ranval
+}
+
+\def\getr@nval{% The values in \@tempcnta and \@tempcntb are parameters
+ \nextrandom
+ \aq@ranval\aq@randomi \advance\aq@ranval\m@ne \divide\aq@ranval\@tempcntb
+ \ifnum\aq@ranval<\@tempcnta\else \expandafter\getr@nval \fi
+}
+
+\catcode`\@=\aq@randomi
+\global\aq@randomi=0
+\newcount\aq@ranval
+%<--------------------------------------------------------------->
+\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{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}}}%
+\newcommand\aqheightadvance{4pt}% U. Fischer tex.stackexchange
+\newcommand\aqdepthadvance{3pt}%
+%<------------------------->
+%                         Début Code QCM
+%       New MC Code (Multiple Choice)
+%<------------------------->
+% modif 4.3
+\define@choicekey*[AQ]{global}{language}[\val\aq@nr]{french,
+                                                     english,
+                                                     german,
+                                                     greek,
+                                                     russian,
+                                                     italian,
+                                                     chinese,
+                                                     unknown
+                                                     }{%
+\edef\AQ@global@language{\aq@nr}
+\let\aqlocall@ng\aq@nr
+\ifcase\aq@nr\relax
+\def\cmdAQ@global@tone{Questions}
+\def\cmdAQ@global@ttwo{R\'eponses}
+\def\aqfoottext{Suite sur la page suivante\ldots}   
+\renewcommand{\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}.}%
+%
+\renewcommand{\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}.}%
+\or   
+\def\cmdAQ@global@tone{Questions}
+\def\cmdAQ@global@ttwo{Answers}
+\def\aqfoottext{Continued on the next page\ldots} 
+\renewcommand{\aq@pre}{For each of the questions below, only one of the proposed answers is true. You must choose the right answer without justification.}%
+\renewcommand{\aq@preVF}{For each of the statements below, check the \textbf{T} box (the statement is true) or the \textbf{F} box (the statement is false).}%
+\or 
+\def\cmdAQ@global@tone{Fragen}
+\def\cmdAQ@global@ttwo{Antworten}
+\def\aqfoottext{Fortsetzung nächste Seite\ldots} 
+\renewcommand{\aq@pre}{Bei jeder der unterstehenden Fragen ist nur eine der vorgeschlagenen Antworten richtig. Kreuzen Sie die richtige Antwort ohne Begründung an.}%
+\renewcommand{\aq@preVF}{Bei jeder der unterstehenden Aussagen kreuzen Sie  \textbf{R} (für die richtige Aussage) oder \textbf{F} (für die falsche Aussage) an.}%
+\or
+\def\cmdAQ@global@tone{Ερωτήσεις}
+\def\cmdAQ@global@ttwo{Απαντήσεις}
+\def\aqfoottext{Συνεχίζεται στην επόμενη σελίδα\ldots} 
+\renewcommand{\aq@pre}{Από τις επόμενες προτάσεις επιλέξετε αυτήν, που θεωρείτε σωστή.}%
+\renewcommand{\aq@preVF}{Να επιλέξετε \textbf{Σ}(ωστό), αν θεωρείτε την πρόταση που δίνεται παρακάτω σωστή, ή \textbf{Λ}(άθος) αν την θεωρείτε λανθασμένη.}%
+\or
+\def\cmdAQ@global@tone{Вопросов}
+\def\cmdAQ@global@ttwo{Ответы}
+\def\aqfoottext{Продолжение на следующей странице\ldots}
+\renewcommand{\aq@pre}{На каждый из приведенных ниже вопросов верным является только один из предложенных ответов.
+Проверьте правильный ответ без обоснования.}%
+\renewcommand{\aq@preVF}{Для каждого из приведенных ниже утверждений проверьте П (для правильного утверждения) и Ф (для неверного утверждения).}%
+\or 
+\def\cmdAQ@global@tone{Domande} 
+\def\cmdAQ@global@ttwo{Risposte} 
+\def\aqfoottext{Continua alla pagina successiva\ldots} 
+\renewcommand{\aq@pre} % only one answer is true; choose right answer
+{Per ciascuna delle domande che seguono, solo una delle risposte proposte è vera. È necessario scegliere la risposta giusta senza alcuna giustificazione.}%
+\renewcommand{\aq@preVF} % only one answer is true; check corresponding box
+{Per ciascuna delle seguenti affermazioni, selezionare la casella \textbf{V} (l'affermazione è vera) o la casella \textbf{F} (l'affermazione è falsa).}%
+\or 
+\def\cmdAQ@global@tone{问题} 
+\def\cmdAQ@global@ttwo{答案} 
+\def\aqfoottext{请翻页\ldots} 
+\renewcommand{\aq@pre}{对于以下提出的各个问题，仅有一个答案是正确的，请选择你认为正确的答案（不需要提供理由）。}%
+\renewcommand{\aq@preVF}{对于以下各项陈述，根据陈述内容的正误选择相应的选项（正确的选择“正”，错误的选择“误”）。}%
+\or
+\def\cmdAQ@global@tone{\aqlabelforquest}
+\def\cmdAQ@global@ttwo{\aqlabelforrep}
+\def\aqfoottext{unknown\ldots}
+\renewcommand{\aq@pre}{\aqpretxt}%
+\renewcommand{\aq@preVF}{\aqpretxtVF}%
+\fi%
+}
+\def\aqpretxt{}%
+\def\aqpretxtVF{}%
+\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}{}
+\define@cmdkey  [AQ] {global} {malus}{}
+\define@cmdkey  [AQ] {global} {numstyle}{}
+\define@cmdkey  [AQ] {global} {propstyle}{} 
+\define@cmdkey  [AQ] {global} {size}{}
+\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]{}
+\define@boolkey [AQ] {global} {pre}        [true]{}
+\define@boolkey [AQ] {global} {title}      [true]{}
+\define@boolkey [AQ] {global} {long}       [true]{}
+\define@boolkey [AQ] {global} {num}        [true]{}
+\define@boolkey [AQ] {global} {numprop}    [false]{} 
+\define@boolkey [AQ] {global} {nosquare}   [false]{} 
+\define@boolkey [AQ] {global} {correction} [true]{}
+\define@boolkey [AQ] {global} {alea}       [true]{}
+\presetkeys     [AQ] {global} {
+                               lq          = 100mm,
+                               pq          = 0pt,
+                               points      = {},
+                               sep         = false,
+                               pre         = false,
+                               bonus       = {0,5},
+                               malus       = {0,25},
+                               VF          = false,
+                               long        = false,
+                               symb        = $\square$,
+                               corsymb     = $\blacksquare$,
+                               afterpreskip = \medskip, 
+                               num         = true,
+                               transparent = false,
+                               nosquare    = false,
+                               correction  = false,%v1.00
+                               numstyle    = \arabic,
+                               propstyle   = \alph,%  v0.93
+                               numprop     = false,%   v0.93
+                               size        = {}, %3.7 same size la fonte
+                               title       = true,
+                               ttwo        = \aqlabelforrep,
+                               tone        = \aqlabelforquest,
+                               numbreak    = 0,
+                               alea        = false}{}
+\define@cmdkey[AQ]{local}{pq}{}
+\define@cmdkey[AQ]{local}{br}{}
+\presetkeys[AQ]{local}{br=5,pq= \cmdAQ@global@pq}{}%
+
+\ifcase\aqlocall@ng
+\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}.}%
+\or
+\newcommand{\aq@pre}{For each of the questions below, only one of the proposed answers is true. You must choose the right answer without justification.}%
+\newcommand{\aq@preVF}{For each of the statements below, check the \textbf{T} box (the statement is true) or the \textbf{F} box (the statement is false).}%
+\or
+\newcommand{\aq@pre}{Bei jeder der unterstehenden Fragen ist nur eine der vorgeschlagenen Antworten richtig. Kreuzen Sie die richtige Antwort ohne Begründung an.}%
+\newcommand{\aq@preVF}{Bei jeder der unterstehenden Aussagen kreuzen Sie  \textbf{R} (für die richtige Aussage) oder \textbf{F} (für die falsche Aussage) an.}%
+\or
+\newcommand{\aq@pre}{Από τις επόμενες προτάσεις επιλέξετε αυτήν, που θεωρείτε σωστή.}%
+\newcommand{\aq@preVF}{Να επιλέξετε \textbf{Σ}(ωστό), αν θεωρείτε την πρόταση που δίνεται παρακάτω σωστή, ή \textbf{Λ}(άθος) αν την θεωρείτε λανθασμένη.}%
+\or %--- wjb
+\newcommand{\aq@pre}{На каждый из приведенных ниже вопросов верным является только один из предложенных ответов.
+Проверьте правильный ответ без обоснования.}%
+\newcommand{\aq@preVF}{Для каждого из приведенных ниже утверждений проверьте П (для правильного утверждения) и Ф (для неверного утверждения).}%
+% Insert text(s) for NEW LANGUAGE(S), e.g. Italian
+\or
+\newcommand{\aq@pre} % only one answer is true; choose right answer
+{Per ciascuna delle domande che seguono, solo una delle risposte proposte è vera. È necessario scegliere la risposta giusta senza alcuna giustificazione.}%
+\newcommand{\aq@preVF} % only one answer is true; check corresponding box
+{Per ciascuna delle seguenti affermazioni, selezionare la casella \textbf{V} (l'affermazione è vera) o la casella \textbf{F} (l'affermazione è falsa).}%
+\or %% TODO 中文
+\newcommand{\aq@pre}{对于以下提出的各个问题，仅有一个答案是正确的，请选择你认为正确的答案（不需要提供理由）。}%
+\newcommand{\aq@preVF}{对于以下各项陈述，根据陈述内容的正误选择相应的选项（正确的选择“正”，错误的选择“误”）。}%
+\or % unknown
+\newcommand{\aq@pre}{\aqpretxt}%
+\newcommand{\aq@preVF}{\aqpretxtVF}%
+\fi
+%
+\newcommand*{\AQms}{\aq@ms}%
+\def\aq@ms(#1,#2){\vrule height #1pt depth #2pt width 0pt}
+\newcommand*{\altersquare}{\mbox{\vbox{\hrule\hbox to 6pt{\vrule height 5.2pt \hfil\vrule}\hrule}}}%
+\@ifundefined{square}{\let\square\altersquare}{}%
+
+\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{\aq@title}{%
+\hline%
+   \hfil{\aq@style@title{\cmdAQ@global@tone}}\hfil%
+ & \hfil{\aq@style@title{\cmdAQ@global@ttwo}}\hfil\\ \hline%
+ \ifAQ@global@long \endfirsthead
+\hline 
+   \hfil{\aq@style@title{\cmdAQ@global@tone}}\hfil%
+ & \hfil{\aq@style@title{\cmdAQ@global@ttwo}}\hfil\\ \hline%
+\endhead
+& \raisebox{-1em}\hfill{\emph{\aqfoottext}} \\ \hline
+\endfoot
+\endlastfoot\fi
+}%
+
+\newcommand{\AQmessage}[1]{%
+\multicolumn{2}{|l|}{%
+\begin{minipage}{\textwidth-\tabcolsep*2-\arrayrulewidth*2}%
+#1
+\end{minipage}}\\ \hline%
+}%
+
+\newcommand{\aq@melange}{%
+\setrannum{\aq@alea}{1}{\value{aq@numb}}% 
+   \ifcase\aq@alea%
+      \or
+      \global\let\aq@tempfirst\aq@arga
+      \or
+      \global\let\aq@tempfirst\aq@argb
+      \or
+      \global\let\aq@tempfirst\aq@argc
+      \or
+      \global\let\aq@tempfirst\aq@argd
+      \or
+      \global\let\aq@tempfirst\aq@arge
+      \fi
+\setcounter{alea@numfirst}{\aq@alea}%
+\setrannum{\aq@alea}{1}{\value{aq@numb}}%
+   \ifcase\aq@alea%
+      \or
+      \global\let\aq@templast\aq@arga
+      \or
+      \global\let\aq@templast\aq@argb
+      \or
+      \global\let\aq@templast\aq@argc
+      \or
+      \global\let\aq@templast\aq@argd
+      \or
+      \global\let\aq@templast\aq@arge
+      \fi
+\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{\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$
+\aq@dimtmpa\ht\aq@tempbox\relax%  
+\aq@dimtmpb\dp\aq@tempbox\relax%  
+\advance\aq@dimtmpa by\aq@dimtmpb}%
+%<------------------------->
+\newcommand{\aq@adjust}[1]{%
+\setbox\aq@tempbox=%
+\vbox{%
+\parbox[t]{\cmdAQ@global@lq}{\aq@style@numquest{\number\value{AQ@numquestion}.}\hspace{3pt}#1}}%
+\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\aq@hauteurquest by-\aq@hauteurprop
+\divide\aq@hauteurquest by\theaq@numb\relax
+\divide\aq@hauteurquest by2\relax%
+\global\aq@dimtmp=\aq@hauteurquest\fi
+}%
+%<------------------------->
+\newcommand{\aq@prop}[2]{%
+\setbox\aq@tempbox=\vbox{#1}%
+\aq@wdprop\wd\aq@tempbox
+\aq@dimtmpa\ht\aq@tempbox\advance\aq@dimtmpa by\aqheightadvance\advance\aq@dimtmpa by\aq@dimtmp\relax
+\aq@dimtmpb\dp\aq@tempbox\advance\aq@dimtmpb by\aqdepthadvance\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
+\ifAQ@global@numprop\stepcounter{AQ@numprop}%
+{\aq@style@numrep{(\cmdAQ@global@propstyle{AQ@numprop})}}%
+\else
+  \ifAQ@global@nosquare
+    \else%
+      \ifAQ@global@correction
+      \def\@stop{1}
+        \@for\goodrep:=\cmdAQ@local@br\do{%
+        \ifnum\@stop<6 %
+         \global\let\mysymb\cmdAQ@global@symb
+         \ifthenelse{\equal{\goodrep}{#2}}{%
+                     \global\let\mysymb\cmdAQ@global@corsymb \def\@stop{9}}{%
+                     }%
+                     \fi}%
+                     \mysymb\hspace*{6pt}%
+      \else 
+          \cmdAQ@global@symb\hspace*{6pt}%
+       \fi
+      \fi
+ \fi
+ \ifAQ@global@transparent
+ \vrule height0pt depth0pt width\aq@wdprop
+ \else
+ \ignorespaces#1%
+ \fi
+ \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{aq@numb}{0}%
+\@for\liste:=#3\do{%
+\stepcounter{aq@numb}%
+\begingroup
+\ifnum\aqlocall@ng=3 \nogreekalph\fi
+\global\expandafter\let\csname aq@arg\alph{aq@numb}\endcsname\liste
+\endgroup}%
+\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
+\ifAQ@global@transparent%
+\hrule height0pt depth0pt width\aq@wdquest%
+\else
+#2\vss
+\fi
+ }%
+&\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}\\
+      \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}%
+      \aq@prop{\aq@argc}{3}\\
+      \ifnum\value{aq@numb}=3\hline\else\ifAQ@global@sep\cline{2-2}\fi
+&\setkeys[AQ]{local}{#1}%
+      \aq@prop{\aq@argd}{4}\\
+      \ifnum\value{aq@numb}=4\hline\else\ifAQ@global@sep\cline{2-2}\fi
+&\setkeys[AQ]{local}{#1}%
+     \aq@prop{\aq@arge}{5}\\
+\hline\fi\fi\fi}%
+%<------------------------->
+\def\aqtextfortrue{\textbf{V}}
+\def\aqtextforfalse{\textbf{F}}
+\newcommand{\aq@questionVF}[2][]{%
+\setkeys[AQ]{local}{#1}
+\stepcounter{AQ@numquestion}% 
+\setcounter{AQ@numprop}{0}% v0.93 
+\ifcase\aqlocall@ng
+\protected@xdef\aq@arga{\textbf{V}}
+\protected@xdef\aq@argb{\textbf{F}}
+\or
+\protected@xdef\aq@arga{\textbf{T}}
+\protected@xdef\aq@argb{\textbf{F}}
+\or
+\protected@xdef\aq@arga{\textbf{R}}
+\protected@xdef\aq@argb{\textbf{F}}
+\or
+\protected@xdef\aq@arga{\textbf{Σ}}
+\protected@xdef\aq@argb{\textbf{Λ}}
+\or %--- wjb
+\protected@xdef\aq@arga{\textbf{П}}
+\protected@xdef\aq@argb{\textbf{Ф}}
+\or
+\protected@xdef\aq@arga{\textbf{V}}
+\protected@xdef\aq@argb{\textbf{F}}
+\or 
+\protected@xdef\aq@arga{\textbf{正}}
+\protected@xdef\aq@argb{\textbf{误}}
+\or
+\protected@xdef\aq@arga{\aqtextfortrue}
+\protected@xdef\aq@argb{\aqtextforfalse}
+\fi
+\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
+#2\vss}%
+  &\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
+\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\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%
+\setlength{\LTpre}{\intextsep}%
+\setlength{\LTpost}{\intextsep}%
+\begin{longtable}[l]{%
+@{}|>{\cmdAQ@global@size}p{\cmdAQ@global@lq}!{\extracolsep{\fill}}%
+|>{\cmdAQ@global@size}p{\textwidth-\tabcolsep*4-\arrayrulewidth*3-\cmdAQ@global@lq}|@{}}%
+ \else
+   \begin{tabular}{%
+    @{}|>{\cmdAQ@global@size}p{\cmdAQ@global@lq}%
+    |>{\cmdAQ@global@size}p{%
+       \textwidth-\tabcolsep*4-\arrayrulewidth*3-\cmdAQ@global@lq}%
+    |@{}}%
+ \fi
+ \ifAQ@global@title\aq@title\else\hline\fi%
+}%
+{\ifAQ@global@long
+ \end{longtable}%
+ \else
+ \end{tabular}%
+ \fi
+}%
+%<------------------------->
+% #1 chemin & #2 theme & #3 liste de numéros
+% code de JC Charpentier
+%----------------------------------------------------------%
+\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\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\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
+    \aq@tdml@a{}%
+  \else
+    \tdml@@clean#1\@nil
+  \fi
+}
+%----------------------------------------------------------%
+\long\def\tdml@@clean#1,\@nil{%
+    \aq@tdml@a{#1}%
+}%
+%----------------------------------------------------------%
+%----------------------------------------------------------%
+\newcommand\AQ@TA[3]{\@for\nb:=#3\do{%
+\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}{}}}%
+
+%----------------------------------------------------------%
+\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}{}
+\newcommand*{\AQannexe}[4][]{%
+\setkeys[AQ]{ann}{#1}% 
+\aq@tmp=#4 %
+\advance\aq@tmp by 1 %
+\begin{tabular}{*{\number\aq@tmp}{|>{\hfill}c}|}\hline%
+ \ifAQ@ann@VF%
+N&V&F%
+ \else
+N\aq@forLoop{1}{#4}{aq@identCol}%
+   {& \cmdAQ@ann@propstyle{aq@identCol}}\fi
+\tabularnewline\hline%
+\aq@forLoop{#2}{#3}{aq@identRow}
+ {\number\value{aq@identRow}&%
+ \aq@forLoop{2}{\number\aq@tmp}{aq@identCol}%
+    {$\ $%
+    \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
\ No newline at end of file
-- 
cgit v1.2.3

