!set typelist1=!trim\
default,Auto,détermination automatique de certains types de base\
raw,Texte brut, la comparaison se fait par des options\
numeric,Nombre,la comparison se fait numériquement avec une précision fixée\
function,Fonction numérique,la comparaison se fait numériquement\
equation,Equation numérique,la comparaison se fait numériquement\
exp|algexp litexp formal,Expression mathématique,comparaison formelle\
text|case nocase,Texte,des mots ou des phrases\
multiple|checkbox click menu radio mark flashcard multipleclick,réponse à choix multiples\

!set typelist2=!trim\
atext,Texte approximatif, la comparaison tolère les différences du type singulier/pluriel ...\
chembrut,Formule brute d'une molécule,en chimie\
chemdraw,Dessiner une molécule,avec une applet Java\
chemclick,Sélectionner des atomes ou des liaisons d'une molécule,avec une applet Java\
chemeq,Equation chimique,avec analyse d'équilibre\
chset,Ensemble de caractères,\
clickfill|clickfill dragfill,Objets à glisser-déposer, qui peuvent être du texte, des images\
clicktile,Mettre en couleur des pavés, nécessite java\
compose,Composer,en utilisant des composantes fournies\
coord,Clic sur une image, dans une zone prédéfinie\
correspond,Correspondance,entre deux listes d'objets\
crossword,Mots croisés\
chessgame,Déplacement de pièces sur un échiquier\
geogebra,Géométrie dynamique,utilisation de l'applet GeoGebra\
javacurve,Dessin utilisant Java, permettant des tracés avec des formes prédéfinies ou libres\
jmolclick,Clic sur des atomes en 3D, nécessite l'applet Jmol\
jsxgraph,Géométrie dynamique,utilisation de l'applet JSXGraph\
jsxgraphcurve,Dessin utilisant JSXgraph, permettant des tracés avec des formes prédéfinies ou libres\
keyboard,Texte, tapé à partir du clavier proposé\
matrix,Matrice numérique, au sens mathématique ; la comparaison se fait numériquement coefficient par coefficient\
numexp,Nombre rationnel, la comparison se fait de façon formelle\
puzzle,Reconstituer une image, présentée comme un puzzle\
range,Nombres dans une zone,tout ce qui est dans la zone est accepté\
reorder,Mise en ordre, d'une liste d'objets\
set|set fset aset,Ensemble fini,avec une analyse textuelle ou numérique\
sigunits,Nombre,avec possibilité de demander une unité et un nombre de chiffres significatifs\
symtext,Texte,outil avancé d'identification de textes\
units,Nombre avec unité, pour la physique\
vector,Vecteur,comparaison numérique des composantes\
wlist,Liste de mots,\
time,Mémoire


!set namelist=Types de base,Types spécifiques ou avancés
!set symtextlist=text atext raw compose

<h3>Réponses à un exercice</h3>

Un exercice OEF peut accepter les réponses
des utilisateurs de manière très variée. Outre le choix multiple ou la réponse libre,
on trouve de nombreuses autres possibilités.
La réponse donnée par l'utilisateur est analysée selon la nature du type.
D'autre part, il est possible d'afficher des
!href cmd=help&special_parm=feedback commentaires ciblés
 quand la réponse tombe sous une certaine condition (pour
avertir d'une erreur typique par exemple).

<a id="freestyle"></a>
Actuellement, jusqu'à $answerlim réponses simultanées peuvent être demandées dans
un exercice sous l'implémentation actuelle. <p>
La syntaxe est la suivante (les 3 derniers champs sont optionnels) :
</p>
<pre>
\answer{Texte}{\reponse}{type=...}{option=...}{weight=...}
</pre>

<h3>Le paramètre <span class="tt wims_code_words">type</span></h3>
<p>
Chaque réponse peut prendre indépendamment l'un des types suivants.
</p>
!for i=1 to 2
 <span class="bold">$(namelist[$i])</span>
 !set n=!linecnt $(typelist$i)
 <ul>
 !for j=1 to $n
  !set l=!line $j of $(typelist$i)
  !distribute item $l into name,title
  !set desc=!item 3 to -1 of $l
  !set name=!replace internal | by , in $name
  !set name1=!item 2 to -1 of $name
  !set name=!item 1 of $name
  !default name1=$name
  !if $name isitemof $special_parm or all isitemof $special_parm
   <li><a id="_$name"></a>
   !read help/anstype.$lang/$name.phtml
   !if $name iswordof $symtextlist
    <p>
    <b>Remarque</b>.
    Ce type de réponse accepte l'option symtext. Si le mot <span class="tt wims_code_words">symtext</span> est
    déclaré dans l'option de la réponse, l'analyse de la réponse sera exactement
    comme pour
    !href cmd=help&special_parm=reply,symtext#_symtext symtext
, en particulier sans aucun traitement préalable des textes. Et toutes les
    options symtext seront comprises dans ce cas.
    </p>
   !endif
  !else
   <li>
   !href cmd=help&special_parm=reply,$name#_$name $title
   (<span class="tt wims_code_words">$name1</span>) $desc.
  !endif
  </li>
 !next j
 </ul>
!next i

!read help/$lang/embedans.phtml

<h3>Le paramètre optionnel <span class="tt wims_code_words">weight</span></h3>
<a id="weight"></a>
Il permet d'imposer un poids aux questions posées.
<p>
Exemple :
</p>
<pre>\answer{}{1}{type=numeric}{weight=8}
\answer{}{1}{type=numeric}{weight=2}
</pre>
<p>
Le niveau de sévérité  sera aussi pris en compte lors du
calcul fait et le pourcentage sera pris sur un pourcentage fixé
par le niveau de sévérité.
</p><p>
Il est possible de mettre des variables dans <span class="tt wims_code_words">weight</span>
dans la mesure où elles sont définies avant le <span class="tt wims_code_variable">\statement</span>.
</p><p>
Exemple :
</p>
<pre>
\text{w = \t = 1 ? 1 : 2}
\answer{}{1}{type=numeric}{weight=\w}
\answer{}{1}{type=numeric}{weight=3}
</pre>

<h3>Le paramètre optionnel <span class="tt wims_code_words">option</span></h3>
 <a id="option"></a>
 Dans le cas de plusieurs options, elles sont séparées par des espaces.
 Par exemple, <span class="tt wims_code_words">option=default noanalyzeprint</span>

Les options possibles à la suite d'une instruction <span class="tt wims_code_variable">\answer</span>
ou <span class="tt wims_code_variable">\condition</span> sont
<ul>
<li><span class="tt wims_code_words">option=default</span> : L'option <span class="tt wims_code_words">default</span> est commune à toutes les réponses libres :  cette option
peut prendre la forme <span class="tt wims_code_words">default="valeur_par_défaut"</span>. Si l'utilisateur donne une réponse vide, c'est la valeur_par_défaut
qui remplace.
</li>
<li>
<span class="tt wims_code_words">option=split</span> : Dans le cas d'une réponse dont
le type est <span class="tt wims_code_words">correspond</span>, <span class="tt wims_code_words">checkbox</span> ou <span class="tt wims_code_words">mark</span>, la notation
tient compte des réponses justes, même si elles ne le sont pas toutes.
</li>
<li>
<span class="tt wims_code_words">option=nonstop</span> : Dans le cas d'un exercice à étapes, les questions
suivantes sont posées même en cas de réponses fausses.
</li>
<li>
<span class="tt wims_code_words">option=noanalyzeprint</span> : Le texte automatique d'analyse de réponses n'est
pas affiché. C'est donc à l'auteur de l'exercice de fournir un feedback convenable.
Cela est utile dans certains types comme le type <span class="tt wims_code_words">mark</span> où le texte automatique
est souvent inadéquat. Attention, l'analyse des conditions n'est pas non plus affichée.
Seul le score subsiste.
</li><li>
A la suite d'une instruction <span class="tt wims_code_words">condition</span>,
<span class="tt wims_code_words">option=hide</span> : La condition sera utilisée pour l'analyse
de la réponse mais ne sera pas  affichée.
</li>
</ul>
D'autres options sont utilisables dans des types particuliers de réponses.

<h3>Les tests de conditions</h3>
<p>
Dans certaines circonstances, il est souhaitable que les réponses libres
soient testées par des conditions spéciales (questions avec plusieurs bonnes
réponses, exercices demandant des exemples, réponses déterminées par des
inégalités, etc). Ceci peut être réalisé de la façon suivante. <p>
Si la bonne réponse à une question libre est une variable non définie
auparavant, la réponse à cette question sera stockée dans cette variable.
Cette variable peut ensuite être utilisée pour implémenter des conditions de
test. Le score de l'exercice est alors calculé selon le nombre de conditions
de test qui sont satisfaites, au lieu du nombre de réponses qui coïncident
avec les bonnes réponses.
</p><p>
Jusqu'à $condlim conditions simultanées peuvent être définies dans
un exercice, sous l'implémentation actuelle. Seules les réponses numériques
peuvent être ainsi testées. La syntaxe est (le dernier champ est optionnel)
</p>
<pre>
\condition{texte d'affichage}{conditions de test}{weight=...}
</pre>
<p>
Voici quelques exemples de conditions de test (<span class="tt wims_code_variable">\rep1</span> et
<span class="tt wims_code_variable">\rep2</span> sont des variables non définies qui apparaissent dans des
définitions de réponses libres, comme décrit ci-dessus.)

!href target=wims_mhelp cmd=help&special_parm=if Liste complète des relations
</p>
$table_header
$table_hdtr<th>Condition</th><th>signification</th></tr>
$table_tr<td class="tt wims_code_words">\rep1>=0 and \rep1<=1</td>
    <td>Bon si <span class="tt wims_code_words">rep1</span> est dans l'intervalle [0,1].</td></tr>
$table_tr<td class="tt wims_code_words">\rep1=1 or \rep1=3 or \rep1=5</td>
    <td>Bon si <span class="tt wims_code_words">rep1</span> est 1, 3 ou 5.</td></tr>
$table_tr<td class="tt wims_code_words">(\rep1)*(\rep2)=6 and (\rep1)+(\rep2)=5</td>
    <td>Bon si <span class="tt wims_code_words">rep1</span> et <span class="tt wims_code_words">rep2</span> sont les deux racines
    du polynôme x<sup>2</sup>-5x+6.</td></tr>
$table_tr<td class="tt wims_code_words">sin(\rep1)=0</td>
    <td>Bon si <span class="tt wims_code_words">rep1</span> est un multiple de $m_pi.</td></tr>
$table_end
Voir
!href cmd=help&special_parm=oef aide sur le format oef
 pour la syntaxe de définition des réponses.
