
How to add a new anstype (called here _name):

Each anstype contains two files, "_name.input" is the input form element, and
"_name" is the answer processing file.

Specific anstypes need not be put into this directory. One can create a
subdirectory "anstype" in the module, then put the files there. Any name
will do, but we recommend that module-specific anstypes use a specific
prefix for its names, like "mynumeric", "myfunction", ..., in order to avoid
possible confusions.
In an oef exercise, the anstype is called by the line
  \answer{xxx}{yyy}{type=_name}{option=zzz}
see later for the intern variables corresponding to the values.

The input file should contain the following two definitions.

1. define "anstype=yes". Otherwise the OEF manager will not recognize the
existence of the anstype.

2. define the form style using the variable "anstyle". Here are the possible
words to declare in this variable.

    mc          multiple choice style.
    symtext     allows symtext processing.
    numeric     the data is numeric.
    dprompt     good answer prompt given under double-underlined variable (internal reply__$i) ;
       in this mode, the good answer is not present by default.
    nogood     never present good answer (because there cannot be).
    noanswer   never present the answer analysis (because there is no good or bad answer)

These scripts accept the following input variables.

	i		The number of the reply field.
	replyname$i	The prompt of the form element.
	reply$i		The answer given by the student.
	replygood$i	The good answer given by the author.
	     so the value of the second field of \answer{}{}.
	replyoption$i	Option words. Anstypes are more or less free to
			define their own recognized option words. In oef exercises, it
			correspond to the value zzz in {option=zzz}
	inputsize	the second item of the field \embed{} (the first one is
	       r$i ou reply$i). In general, it contains the size of the form
	       element.

Moreover, if no comparison is wanted, the answer processing file can have a
calling parameter "nocompare" (not useful in oef exercices).

Output variables of the answer processing file:

	Test		Put "bad $i" if the good answer given by the author
			is not understandable.
	test		Put "NaN" followed possibly by an error indicator,
			if the answer given by the student is not understandable.
	diareply$i	Diagnostics result. Possible values: "good", "bad".
	precreply$i	If the answer misses the good result just by a
			problem of precision, put "yes" to this variable and put
			"bad" to diareply$i. In the computation of the score, a coefficient
			depending on the level is introduced. In thise case, one must
			not advance freegot at all.
	partialgood$i	If the answer should be considered as partially good,
			put "yes" to this variable and put "good" to
			diareply$i. It has no consequence on the calculation of the real score
			(use freegot for that).
	freegot		This is a numerical variable. Its content is incremented
			by 1 if the answer is 100% OK, none if it is false,
			or anything between 0 and 1 for partially good answer.
			It is not recommended to decrement this value, nor to
			increment it more than 1. The real score is computed using it.

So,
partialgood$i=yes + diareply$i=good + freegot advances of a number strictly between 0 et 1
or
!advance precgood + diareply$i=bad + fregot=0 + precreply$i=yes

There are also some optional output variables (they can be left empty).

	replyGood$i	This variable can be defined for the good answer
			shown to the students after replying to the exercise,
			if it should be different than the real replygood$i.
            It is not shown in the analysis of the answer for false student
            answer if dprompt is declared in anstyle.
	m_reply$i	This variable can be defined for the answer shown back
			in the oef variable reply$i, if it should be different than the
			real answer typed in.
    reply_$i	The answer of the student shown in the html page in place
            of \embed{} or in the analysis zone (for oef exercises).
	reply__$i	A special prompt in the analysis of the answer
	       to show when dprompt is declared in anstyle. If it is empty, its
	       value is the value of reply_$i
    m_sc_reply$i by default 0, 0.5 or 1 according to diareply$i, partialgood$i and
            partialgood$i. Can be set to special values. Give the possibility
            to the developer of exercises to give feedbacks without testing again.

There are also some variables which can be used (new/2009)
     oef_formnosubmit:  if yes, no "Send answer" button appear.
     oef_js_submit: can be used to put javascript in the answer button,
         the line onclick="javascript:$oef_js_submit;" will be present
         in this button (in test).
     oef_anstype_css: style css (what is inside <script type="text/css"></script>)
        will be include at the end of the web page.

If the following variables are defined in the file _name.input, they can be reused
in the file _name :
         oef_applet_option oef_applet_command oef_fill_option oef_answer_option1  ...,

     (for reuse applet options or embed options for example, if one wants to use the anstype several
     times in the same html page, it is recommanded to use oef_answer_option$i indexed on the
     numero of the answer.)

If you use an external software, use the variable ans_require (best if there is a version number).

Add the help in scripts/help/anstype and scripts/help/anstype.$lang and in the list
help/$lang/reply.phtml
