Rev 4427 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4427 | Rev 4892 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | !set special_list=imagefill,expandlines,rename,help,tooltip |
- | |
2 | - | ||
3 | <p><center><h2>Advanced features of OEF</h2></center> |
- | |
4 | - | ||
5 | <h3>Hiding image names</h3> |
- | |
6 | If your exercise requires recognition of a randomly picked picture, the file |
- | |
7 | name of the picture might give clue to the exercise. In order to hide this |
- | |
8 | file name, you can write |
- | |
9 | - | ||
10 | <pre>\img{\imagedir/picture.jpg align=middle alt="picture"}</pre> |
- | |
11 | - | ||
12 | Then on the browser, the student will see |
- | |
13 | - | ||
14 | <pre><img src="a_random_unrelated_file_name" align=middle alt="picture"></pre> |
- | |
15 | - | ||
16 | The true file name is thus hidden to the student. |
- | |
17 | - | ||
18 | <p><b>Note</b>. Don't use directly the WIMS command <em>rename</em> to |
- | |
19 | process the file name, or the exercise would not work correctly under saved |
- | |
20 | environment. |
- | |
21 | - | ||
22 | <h3>Multi-step exercises</h3> |
- | |
23 | Multi-step exercises can be defined via the command <tt>\steps</tt>. For |
- | |
24 | example, if you define (among parameters) |
- | |
25 | - | ||
26 | <pre>\steps{choice 1, reply 1 |
- | |
27 | choice 2, reply 2, reply 3 |
- | |
28 | choice 3 |
- | |
29 | }</pre> |
- | |
30 | - | ||
31 | the exercise will be presented with 3 steps, the first asks for a multiple |
- | |
32 | choice (choice 1) and a freestyle reply (reply 1), the second a multiple |
- | |
33 | choice and two freestyle replies, etc. |
- | |
34 | <p> |
- | |
35 | The content of <tt>\steps</tt> accepts (earlier-defined) parameters as well as |
- | |
36 | conditional definitions, in the same way as the definition of parameters. |
- | |
37 | This allows you to selectively present response |
- | |
38 | fields (according to random variations of parameters), even in the case |
- | |
39 |
|
1 | !!provisoire --to translate |
40 | <p> |
- | |
41 | It is to be noted that if a user makes a mistake in |
- | |
42 | an early step, subsequent steps will not be presented (and will be |
- | |
43 | considered all wrong). |
- | |
44 | <p> |
- | |
45 | The current step number is available to the statement of the exercise, |
- | |
46 | via the variable |
- | |
47 | <tt>\step</tt> which takes successively the values of 1,2,... when the user |
- | |
48 | advances in his/her answering. |
- | |
49 | <p> |
- | |
50 | To make dynamic multi-step exercises (steps varying with student answers), you |
- | |
51 | can use the command <tt>\nextstep{...}</tt>. The content of |
- | |
52 | <tt>\nextstep</tt> is the similar to <tt>\steps</tt> but only the first line |
- | |
53 | is effective. It is useful only when the content is given by a variable |
- | |
54 | which is changed by post-reply parameter definitions. The exercise stops when |
- | |
55 | the content of <tt>\nextstep</tt> is empty at some step. |
- | |
56 | <p> |
- | |
57 | In any case, at most one declaration <tt>\steps</tt> or <tt>\nextstep</tt> |
- | |
58 | should appear in an OEF source. |
- | |
59 | - | ||
60 | <h3>Conditional branching and loops</h3> |
- | |
61 | - | ||
62 | Available commands: |
- | |
63 | - | ||
64 | <pre> |
- | |
65 | \if{condition}{if_content} |
- | |
66 | \if{condition}{if_content}{otherwise_content} |
- | |
67 | \for{var=n1 to n2}{loop_content} |
- | |
68 | \while{condition}{loop_content} (main environment only) |
- | |
69 | </pre> |
- | |
70 | - | ||
71 | These commands can be used either within statement, hint, solution or |
- | |
72 | feedback, or in the main environment. In the latter case, the conditional |
- | |
73 | execution only affects parameter definitions. |
- | |
74 | - | ||
75 | <a name=special></a> |
- | |
76 | <h3>Special methods</h3> |
- | |
77 | - | ||
78 | With the command <tt>\special{...}</tt> in the statement of an exercise, the |
- | |
79 | following special methods are available: |
- | |
80 | <p> |
- | |
81 | !if $special_parm=all |
- | |
82 | !for sp in $special_list |
- | |
83 | <p><center><h4>The special method <tt>$sp</tt></h4></center> <p> |
- | |
84 | General syntax: <tt>\special{$sp <i>parameters</i>}</tt> <p> |
- | |
85 | - | ||
86 | !read oef/special/$sp.phtml help |
- | |
87 | !next sp |
- | |
88 | !else |
- | |
89 | !for sp in $special_list |
- | |
90 | !href cmd=help&special_parm=oefadv&special_parm2=$sp#special $sp |
- | |
91 | |
- | |
92 | !next sp |
- | |
93 | !endif |
- | |
94 | - | ||
95 | !if $special_parm2 isitemof $special_list |
- | |
96 | <p><center><h4>The special method <tt>$special_parm2</tt></h4></center> <p> |
- | |
97 | General syntax: <tt>\special{$special_parm2 <i>parameters</i>}</tt> <p> |
- | |
98 | - | ||
99 | !read oef/special/$special_parm2.phtml help |
- | |
100 | !endif |
- | |
101 | - | ||
102 | <h3>Preprocessed sources</h3> |
- | |
103 | - | ||
104 | This feature is not available for Createxo. You can use it if you write OEF |
- | |
105 | (and Deductio) exercises under Modtool. |
- | |
106 | <p> |
- | |
107 | It allows you to include common portions of codes into several oef files. |
- | |
108 | You can also use it to make batch generation of several oefs from one |
- | |
109 | pre-source, each differing from the others by some macro definitions. |
- | |
110 | <p> |
- | |
111 | To use this feature, a subdirectory cpp/ should be created under src. Put |
- | |
112 | into it pre-source files with extension .cpp. In these files, you can add |
- | |
113 | cpp directives like <tt>#include</tt> or <tt>#if</tt>. (Please refer to cpp |
- | |
114 | manual and c specification for details of the syntax.) |
- | |
115 | <p> |
- | |
116 | The first line of the cpp file must define a list of targets, in the format |
- | |
117 | <pre> |
- | |
118 | target=targ1 targ2 targ3 ... |
- | |
119 | </pre> |
- | |
120 | This line means that this cpp file should generate targ1.oef, targ2.oef, etc. |
- | |
121 | (the extension .oef will be |
- | |
122 | appended to the output names). When generating the target file <em>targ1</em>, the |
- | |
123 | predicate <tt>#TARGET</tt> will be defined as <em>targ1</em>. (And a macro |
- | |
124 | <em>TARGET_targ1</em> is also defined.) |
- | |
125 | Therefore in the cpp source file, you can add lines like |
- | |
126 | <pre> |
- | |
127 | #if #TARGET (targ1) |
- | |
128 | \title{Exercise 1} |
- | |
129 | \integer{v1=3} |
- | |
130 | \text{t1=this is target 1} |
- | |
131 | #endif |
- | |
132 | #if #TARGET (targ2) |
- | |
133 | \title{Exercise 2} |
- | |
134 | \integer{v1=5} |
- | |
135 | \text{t1=this is target 2} |
- | |
136 | #endif |
- | |
137 | </pre> |
- | |
138 | in order to make the contents target-dependent. |
- | |
139 | <p> |
- | |
140 | Include files should also be put into the src/cpp directory, with extension |
- | |
141 | .inc. And a line |
- | |
142 | <pre> |
- | |
143 | #include "common.inc" |
- | |
144 | </pre> |
- | |
145 | will insert the content of common.inc into the generated oef file. |
- | |
146 | Please note that for security reasons, it is prohibited to specify |
- | |
147 | directories of include files. |
- | |
148 | <p> |
- | |
149 | A special remark: cpp gets confused when your file contains single or double |
- | |
150 | quotes in the text that are not closed. In this case, you can protect the |
- | |
151 | commands containing such texts by c comments (<tt>/* ... */</tt>). |
- | |
152 | - | ||
153 | <h3>Exercise environment</h3> |
- | |
154 | A special variable <tt>\oefenv</tt> can be used to test the environment of |
- | |
155 | an exercise (if it is not redefined within the exercise). |
- | |
156 | <p> |
- | |
157 | For the time being, the only testable content of the variable is the word |
- | |
158 | ``debug''. This word appears within <tt>\oefenv</tt> in the following |
- | |
159 | situations: <ol> |
- | |
160 | <li>When it is executed within Createxo. |
- | |
161 | <li>When it is under test in Modtool, by the developer himself. |
- | |
162 | <li>When it is a class exercise and is executed by the supervisor. |
- | |
163 | </ol> |
- | |
164 | Note that in these cases, the good reply will appear as default in the input |
- | |
165 | fields of many types, allowing you to see what the exercise expects without |
- | |
166 |
|
2 | !changeto help/fr/oefadv.phtml |
167 | <p> |
- | |
168 | You may add debugging informations into your exercise using things like |
- | |
169 | <pre> |
- | |
170 | \if{debug iswordof \oefenv}{debugging informations to add into} |
- | |
171 | </pre> |
- | |
172 | These debugging informations will be automatically shown when the exercise |
- | |
173 | is under test, and automatically hidden when students work on it. |
- | |
174 | - | ||
175 | - |