%!TEX root = /Users/ego/Boulot/Alterqcm/doc/doc_aq-main.tex 

\section{Macros complémentaires}

\subsection{\tkzcname{AQmessage} : message sur les deux colonnes} 

Elle permet d'insérer dans le tableau sur les deux colonnes, des renseignements complémentaires pour le candidat. 

Dans le tableau suivant, il est nécessaire de donner des indications et des précisions sur l'énoncé. Ceci est fait à l'aide de la commande \tkzcname{AQmessage}. J'ai utilisé le package \tkzname{tkz-tab.sty} pour ce message ainsi que  \emph{\texttt{l'environnement minipage}} pour certaines propositions, afin de faire tenir la proposition sur plusieurs lignes. cela est nécessaire si on ne veut pas sortir du tableau ou bien si on ne veut pas restreindre l'espace accordé aux questions.
Cela montre que l'on peut utiliser de nombreux environnements à la fois dans les questions, les messages et les propositions

\begin{NewMacroBox}{AQmessage}{{\var{texte}}}

\begin{tabular}{@{}Il Il Il@{}}  \toprule \thead
argument                 & défaut           & définition     \\ \midrule
\tbody
\TAline{texte}  {}     {corps du message}      
\bottomrule
\end{tabular}

\medskip
\emph{Cette macro n'utilise qu'un argument~: le texte du message. Celui-ci peut contenir toute sorte d'environnement à l'exception, malheureusement, d'un tableau conçu avec \tkzname{tablor}. Il est cependant possible d'importer un tableau conçu à l'aide de \tkzname{tablor} avec la macro \tkzcname{includegraphics}\footnotemark.}
\end{NewMacroBox}\Imacro{includegraphics}

\footnotetext{macro du package \tkzname{graphicx}}

\begin{alterqcm}[lq=80mm,pre=false]
\AQmessage{\begin{minipage}{15cm}
\vspace*{6pt}
 Soit $f$ une fonction définie et dérivable sur l'intervalle $]-5~;~+\infty[$ dont le tableau de variations est donné ci-dessous :
\begin{center}\begin{tikzpicture}
\def\tkzTabDefaultWritingColor{Maroon}
\def\tkzTabDefaultBackgroundColor{fondpaille}  
\tkzTabInit{$x$/1,$f(x)$/3} {$-5$,$-1$,$0$,$2$,$+\infty$}
\tkzTabVar{-/$-\infty$ /,+/$-3$/,-/$-5$/,+/4/,-/{4,5}/}
\end{tikzpicture}\end{center}
 On désigne par $\mathcal{C}$ la courbe représentative de $f$.
 \vspace*{6pt}    
\end{minipage} 
}
\AQquestion{Sur l'intervalle $]-5~;~+\infty[$, l'équation $f(x) = -2$ admet }
{{une seule solution},
{deux solutions},
{quatre solutions}}
\end{alterqcm}

\begin{tkzexample}[code only]
 \begin{alterqcm}[lq=95mm,pre=false]
  \AQmessage{ Soit $f$ une fonction définie et dérivable sur l'intervalle%
   $]-5~;~+\infty[$ dont le tableau de variations est donné ci-dessous :
   \begin{center}\begin{tikzpicture}
      \tkzTabInit{$x$/1,$f(x)$/3} {$-5$,$-1$,$0$,$2$,$+\infty$}
      \tkzTabVar{-/$-\infty$ ,+/$-3$,-/$-5$,+/$4$,-/${4,5}$}%
   \end{tikzpicture}\end{center}
  On désigne par $\mathcal{C}$  la courbe représentative de $f$.}
\AQquestion{Sur l'intervalle $]-5~;~+\infty[$,l'équation $f(x) = -2$ admet}
  {{une seule solution},
   {deux solutions},
   {quatre solutions}}
 \end{alterqcm}\end{tkzexample}


\subsection{\tkzcname{AQms} : utilisation d'un trait invisible}

\begin{NewMacroBox}{AQms}{(height,depth)}
  \begin{tabular}{@{}Il Il Il@{}}  \toprule \thead
  argument                 & défaut           & définition                    \\ \midrule
  \tbody
  \TAline{height}  {}     {hauteur du trait}    
  \TAline{depth}  {}     {profondeur du trait}  
  \bottomrule
  \end{tabular}
  
\medskip
\emph{C'est un trait invisible\footnotemark, utile si il est nécessaire de faire un espace plus conséquent autour d'une proposition.}

\textcolor{red}{\emph{\texttt{ Il faudrait éviter de l'utiliser!}}}
  
\end{NewMacroBox}
\footnotetext{ voir la macro \tkzcname{strut}}

\begin{tkzexample}[code only,width=\textwidth-1pt]
 \def\AQms(#1,#2){\vrule height #1pt depth #2pt width 0pt} 
 \end{tkzexample}

\begin{tkzexample}[width=8cm]
  \begin{minipage}[]{7.5cm}
  \begin{alterqcm}%
  [lq=4cm]
  \AQquestion{Question}
   {%
  {Proposition 1},
  {Proposition 2\AQms(16,14)},
  {Proposition 3}}
  \end{alterqcm}
  \end{minipage}
\end{tkzexample}

\newpage
\subsection{\tkzcname{InputQuestionList} : QCM à partir d'une liste de fichiers}

\begin{NewMacroBox}{InputQuestionList}{\var{path}\var{prefix}\var{list of integers}}

\begin{tabular}{@{}Il Il Il@{}}  \toprule \thead
  argument                 & défaut           & définition                    \\ \midrule
  \tbody
\TAline{path}  {}  {chemin qui conduit au dossier contenant les fichiers}       \TAline{prefix}  {} {le nom des fichiers  : <prefix><integer>.tex}          
\TAline{list of integers}{}{liste de nombres entiers correspondants aux fichiers} 
\bottomrule
 \end{tabular}
  
  \medskip  
\emph{Cette macro permet d'insérer dans un tableau des questions enregistrées dans des fichiers. Un fichier peut contenir une ou plusieurs questions avec les propositions correspondantes. \tkzname{path} est le chemin vers le dossier contenant les fichiers. \tkzname{prefix} permet de nommer les fichiers, un entier détermine de façon unique le fichier.}

\end{NewMacroBox}

Soit le fichier \tkzname{qcm-1.tex}

\begin{tkzltxexample}[]
  \AQquestion{Quel était le langage précurseur du langage C ?}
  {{le Fortran},
   {le langage B},
   {le Basic}}
\end{tkzltxexample}

\medskip
Soit le fichier \tkzname{qcm-2.tex}

\begin{tkzltxexample}[]
 \verbdef\arg|int a = 3 ^ 4 ;|
 \AQquestion{\arg}
 {{élève 3 à la puissance 4},
  {fait un OU exclusif entre 3 et 4},
  {n'est pas une instruction C}}
\end{tkzltxexample}

\bigskip
Supposons créée une série de fichiers  dans un dossier |iut| avec comme noms \newline
 \tkzname{qcm-1.tex}, \tkzname{qcm-2.tex}, \ldots ,\tkzname{qcm-$n$.tex}. Le prefix pour nommer ces fichiers est donc \tkzname{qcm-}.

Le chemin de ce dossier est par exemple |/Users/ego/Boulot/PROF/Alterqcm/Examples/iut/|.


Le résultat est :

\newcommand*{\listpath}{/Users/ego/Boulot/Alterqcm/doc/iut/}

\begin{alterqcm}[lq=80mm]
 \InputQuestionList{/Users/ego/Boulot/Alterqcm/doc/iut/}{qcm-}{2,1}
\end{alterqcm}

\begin{tkzexample}[code only]
\newcommand*{\listpath}{/Users/ego/Boulot/Alterqcm/doc/iut/}
\begin{alterqcm}[lq=80mm]
   \InputQuestionList{\listpath}{qcm-}{2,1}
\end{alterqcm}
\end{tkzexample}

\newpage
\subsection{La commande \tkzcname{AQannexe}} 


\begin{NewMacroBox}{AQannexe}{\oarg{local options}\var{start}\var{end}\var{col}}
\begin{tabular}{@{}Il Il Il@{}}  \toprule \thead
arguments        & défaut           & définition                    \\ \midrule
\tbody
\TAline{start}    {}           {numéro de la première rangée}   
\TAline{end}      {}           {numéro de la dernière rangée}  
\TAline{col}      {}           {nombre de propositions}     
 \bottomrule
\end{tabular}

\medskip
\emph{Cette macro utilise trois arguments. Ce sont trois nombres entiers. \tkzname{start} est le rang de la première rangée, \tkzname{end} le rang final et \tkzname{col} le nombre de propositions.} 

\medskip
\begin{tabular}{@{}Il Il Il@{}}  \toprule \thead
Options                 & défaut           & définition                    \\ \midrule
\tbody
\TOline{VF}         {false}          { vrai ou faux; affiche V et F }    
\TOline{propstyle}  {\BS arabic}     { style de numérotation des propositions }          \\
\bottomrule
\end{tabular}

\medskip
\emph{\tkzname{VF} permet d'afficher V et F pour identifier les propositions mais il est nécessaire que \tkzname{col} soit égal à deux}

\medskip

\end{NewMacroBox}

\begin{tkzltxexample}[]
  \documentclass{article} 
  \usepackage[utf8]{inputenc}
  \usepackage[T1]{fontenc}
  \usepackage{lmodern}
  \usepackage{alterqcm,fullpage}
  \thispagestyle{empty}

  \begin{document}
  NOM :

  PRÉNOM :

  \vspace{1cm}{ \Large
  \AQannexe{1}{10}{2}\hspace{2cm}
  \AQannexe[propstyle=\alph]{11}{20}{3}}
  \end{document}
\end{tkzltxexample}

\AQannexe{1}{10}{2}\hspace{2cm}
\AQannexe[propstyle=\alph]{11}{20}{3}
\endinput