1: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2: <html>
3: <head>
4: <title>LON-CAPA Homework System</title>
5: </head>
6:
7: <body>
8: <h1>LON-CAPA Homework System</h1>
9:
10: <h2>Tags</h2>
11: <ul>
12: <li>
13: Output Tags
14:
15: <p>
16: This set of tags control how and when data gets sent to the
17: student, it also provides hints to the data's markup and
18: when it should be autoconverted, and when it should be
19: ignored. All of these tags except <tag>outtext</tag> are
20: valid and parsed by &parsed() inside a <tag>script</tag>.
21: </p>
22: <p>
23: Additionaly any perl style variables are replaced with the
24: values of the variable in the problem namespace.
25: </p>
26: <ul>
27:
28: <li>
29: <tag>outtext</tag> all data inside is assumed to be valid
30: html, the handler will attempt to autoconvert to the
31: output type. The only thing tags allowed inside are the
32: ones listed below.
33: </li>
34: <li>
35: <tag>target</tag> This tag specifies data that is not in
36: HTMl format inside an <tag>outtext</tag>. Takes a required
37: argument <arg>type</arg> and an optional argument
38: <arg>dest</arg>. <arg>type</arg> specifies a known valid
39: output target which is the format of the
40: data. <arg>dest</arg> specifies a list of possible output
41: targets that the data should be autoconverted for. The
42: <arg>type</arg> of the data is assumed to be a
43: <arg>dest</arg>. If the current target is not a
44: <arg>dest</arg> then the data is ignored.
45: </li>
46:
47: <li>
48: <tag>tex</tag> shorthand for <target type=``tex''>
49: <arg>dest</arg> is a valid argument.
50: </li>
51:
52: <li>
53: <tag>ascii</tag> shorthand for <target type=``ascii''>
54: <arg>dest</arg> is a valid argument.
55: </li>
56:
57: <li>
58: <tag>web</tag> shorthand for <target type=``web''>
59: <arg>dest</arg> is a valid argument.
60: </li>
61:
62: <li>
63: <tag>mathml</tag> shorthand for <target
64: type=``mathml''> <arg>dest</arg> is a valid argument,
65: mathml may be passed along unconverted in a web output
66: target.
67: </li>
68:
69: </ul>
70: </li>
71: <br>
72: <li>
73: Form Elements:
74:
75: <p>
76: This set of tags soley generate a representation of the proper
77: form element on the output device. Need to look at what should
78: be provided when an exam is wanted.
79: </p>
80: <ul>
81: <li>
82: <tag>radio</tag>
83:
84: <p>
85: web - provides a single button to check on and off, when
86: checked on all other radio buttons in the current
87: <tag>answergroup</tag> level will be set to off.
88: </p>
89:
90: <p>
91: tex - generates a circle before the data inside
92: </p>
93: </li>
94: <li>
95: <tag>list</tag>
96: <p>
97: web - provides a drop down box of all the possible options
98: </p>
99: <p>
100: tex - the list is displayed an students can select the
101: correct option
102: </p>
103: </li>
104: <li>
105: <tag>textline</tag>
106: <p>
107: web - a single line of reponse is provided to type into.
108: </p>
109: <p>
110: tex - a line is provided.
111: </p>
112: </li>
113: <li>
114: <tag>textarea</tag>
115: <p>
116: web - a textarea form is provided allowing multiples
117: lines of response
118: </p>
119: <p>
120: tex - a configureable number of lines is provided,
121: configured through the argument numlines, defaults to 10
122: </p>
123: </li>
124: <li>
125: <tag>check</tag>
126: <p>
127: web - either a checkbutton, or two radio buttons are provided
128: </p>
129: <p>
130: tex - a small box that can be checked is provided.
131: </p>
132: </li>
133: <li>
134: <tag>button</tag> - Not sure this is useful
135: </li>
136: </ul>
137: </li>
138: <li>
139: Randomiztion
140: <ul>
141: <li>
142: <tag>randomlist</tag> this tag will cause the parser to
143: randomly select the order that it parses the next level of
144: tags, tags another leveldown will be done in order
145: though. Example:
146: <pre>
147: <tag>randomlist</tag>
148: <tag>tag1</tag>
149: <tag>subtag1</tag>
150: <tag>/subtag1</tag>
151: <tag>subtag2</tag>
152: <tag>/subtag2</tag>
153: <tag>/tag1</tag>
154: <tag>tag2</tag>
155: <tag>subtag1</tag>
156: <tag>/subtag1</tag>
157: <tag>subtag2</tag>
158: <tag>/subtag2</tag>
159: <tag>/tag2</tag>
160: <tag>/randomlist</tag>
161: </pre>
162: In this example, <tag>tag1</tag> or <tag>tag2</tag> will be
163: done first, but <tag>subtag1</tag> will always happen before
164: <tag>subtag2</tag>.
165: </li>
166: <li>
167: <tag>foil</tag>, <tag>showfoil/</tag>,
168: <tag>showrandomfoil/</tag> These tags combine to allow the
169: user greater control over the exact placement of a
170: randomized problem text. a <tag>foil</tag> tag defines a
171: section of the problem that will appear in places a
172: <tag>showfoil/</tag> or <tag>showrandomfoil/</tag> mark.
173: Internally, the parser will make a pass over an entire
174: answer group and count the number of <tag>foil</tag>,
175: <tag>showfoil/</tag>, and <tag>showrandomfoil/</tag> tags
176: that are used it will then make another pass and parse all
177: of the <tag>foil</tag> storing the results of these parses,
178: while parsing for each <tag>show*</tag> tag it hits it will
179: send to the output device a foil, the <tag>show*</tag> it
180: hit was a <tag>showfoil</tag> and this was the nth
181: <tag>show*</tag> it hit, it will display the nth foil. For
182: each <tag>showrandomfoil</tag> it hits it will randomly pick
183: from the remaining foils a foil to send to the output. If
184: there are more <tag>show*</tag> tags than foils, the extra
185: <tag>show*</tag> will have nothing sent out. If there are
186: more <tag>foil</tag> tags, the extras won't appear. When
187: mixing <tag>showfoil</tag> and <tag>showrandomfoil</tag> the
188: result is undefined.
189: </li>
190: </ul>
191: </li>
192: <li>
193: Answer Section
194: <ul>
195: <li>
196: <tag>answergroup</tag> this defines a grouping of
197: <tag>*response</tag> that when responded to must all be
198: right in order for any to be right, this also allows
199: subgroups to exist. For example 1 of N questions that have a
200: 1 of N hint question for a leaf in the orginal 1of N
201: question. The closing tag in this group uses the results
202: from the <tag>*response</tag>s to decide whether this
203: grouping was correct, and assigns a grade, and provides any
204: feedback.
205:
206: <br><arg>ID</arg>, if this isn't set it will be set during
207: the publication step. It is used to assign parameters names
208: in a way that can be tracked if an instructor modifies
209: things by hand.
210:
211: <br><arg>name</arg> optional, if set, it will be used by the
212: resource assembly tool when one is modfiying parameters.
213:
214: </li>
215: <li>
216: <tag>*response</tag> further documentation will be available
217: in the future. Roughly these will take a set of data from
218: the enclosed input structures, and one or more correct
219: answers and return a correct of incorrect result, it may
220: also suggest a consumption of a try, and may provide a
221: reason for the incorrectness.
222:
223: <br>Required possible arguments:
224:
225: <br><arg>ID</arg>, if this isn't set it will be set during
226: the publication step. It is used to assign parameters names
227: in a way that can be tracked if an instructor modifies
228: things by hand.
229:
230: <br><arg>name</arg> optional, if set, it will be used by the
231: resource assembly tool when one is modfiying parameters.
232: </li>
233: <li>
234: <tag>param</tag> can appear inside a <tag>*response</tag>,
235: they provided config options for the <tag>*response</tag>
236:
237: <br><arg>type</arg> specifies the parameter name, what are
238: possible values depends on the <tag>*response</tag>
239:
240: <br><arg>value</arg> specifies the possible values for this
241: type, possible arguments are: "option1|option2|option3" or
242: "numerictype,lownum-highnum" numeric type can be either int
243: or float
244:
245: <br><arg>default</arg> specifies the default value for this
246: parameter if the instructor doesn't specifiy it
247:
248: <br><arg>ID</arg>, if this isn't set it will be set during
249: the publication step. It is used to assign parameters names
250: in a way that can be tracked if an instructor modifies
251: things by hand.
252: </li>
253: </ul>
254: </li>
255: <li>
256: Problem Contruction
257: <ul>
258: <li>
259: <tag>problem</tag> highest level tag, tells the parser that
260: this is a problem file
261:
262: <br><arg>name</arg> optional, if set, it will be used by the
263: resource assembly tool when one is modfiying parameters.
264: </li>
265: <li>
266: <tag>part</tag> a problem can consist of multiple parts,
267: each of these parts can be included or not included through
268: the construction of a page using the RAT,
269:
270: <br><arg>ID</arg>, if this isn't set it will be set during
271: the publication step. It is used to assign parameters names
272: in a way that can be tracked if an instructor modifies
273: things by hand.
274:
275: <br><arg>name</arg> optional, if set, it will be used by the
276: resource assembly tool when one is modfiying parameters.
277: </li>
278: <li>
279: <tag>block</tag> are section of the problem that can be
280: conditional, and provide visual grouping clues. The optional
281: arg <arg>condition</arg> is set to a perl snippet that
282: controls whether the parser will evaluate the
283: <tag>block</tag> or not. Helper function will be created for
284: making hints and other study aids easy to contruct.
285: </li>
286: <li>
287: <tag>import</tag> causes the parse to read an additional
288: file in and parse it as if the entire text of file had
289: existed at the location of the <tag>import</tag>
290: </li>
291: <li>
292: <tag>script</tag> the enclosed body of text is parsed
293: directly in a safe Perl enviroment. Variables set here are
294: available throught the rest of the problem code, but all
295: actions taken persit only for the scope of the
296: <tag>problem</tag>. Except values which are expressly saved
297: and restored
298: </li>
299: <li>
300: <tag>while</tag> implements a while loop, required argument
301: <arg>condition</arg> is a perl scriptlet that when evaluated
302: results in a true or false value, on true the entirty of the
303: text between the whiles is parsed. The condition is tested
304: again, etc. If false it goes to the next node in the parse.
305: </li>
306: </ul>
307: </li>
308: <li>
309: Libraries
310: <ul>
311: <li>
312: <tag>scriptlib</tag> the enclosed name is a file that
313: contains definition for new tags.
314: </li>
315: <li>
316: <tag>parserlib</tag> the enclosed name is a file that
317: contains extensions to the parser.
318: </li>
319: </ul>
320: </li>
321: </ul>
322:
323:
324: <h2>CAPA compatability function Calls</h2> Please refer to the
325: CAPA manual for documentation on what these functions do.
326: <ul>
327: <li> random </li>
328: <li> random_normal </li>
329: <li> random_beta </li>
330: <li> random_gamma </li>
331: <li> random_poisson </li>
332: <li> random_exponential </li>
333: <li> random_chi </li>
334: <li> random_noncentral_chi </li>
335: <li> choose </li>
336: <li> var_in_tex </li>
337: <li> capa_id </li>
338: <li> class, section, set, problem, name, student_number </li>
339: <li> due_date, open_date, answer_date </li>
340: <li> to_string </li>
341: <li> sub_string </li>
342: <li> strlen </li>
343: <li> get_seed </li>
344: <li> set_seed </li>
345: <li> init_array </li>
346: <li> array_max, array_min </li>
347: <li> array_moments </li>
348: <li> to_int </li>
349: <li> format </li>
350: <li> pick </li>
351: <li> sin, cos, tan, asin, acos, atan, atan2 </li>
352: <li> sinh, cosh, tanh, asinh, acosh, atanh </li>
353: <li> j0, j1, jn, y0, y1, yn </li>
354: <li> log, log10 </li>
355: <li> exp, pow </li>
356: <li> erf, erfc </li>
357: <li> sqrt </li>
358: <li> min, max </li>
359: <li> abs, floor, ceil, sgn, mod, remainder </li>
360: <li> factorial </li>
361: <li> roundto </li>
362: <li> eval_formula </li>
363: <li> capa_id_plus </li>
364: <li> seat_number </li>
365: <li> duration </li>
366: <li> is_open, is_due, is_answer </li>
367: <li> managermode </li>
368: </ul>
369:
370: <hr>
371: <address><a href="mailto:albertel@marvin.lite.msu.edu">Guy Albertelli</a></address>
372: <!-- Created: Mon Mar 27 16:14:28 EST 2000 -->
373: <!-- hhmts start -->
374: Last modified: Thu Jun 1 16:06:26 EDT 2000
375: <!-- hhmts end -->
376: </body>
377: </html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>