This document is currently under integral style. You may change it to indexed or folding style. There is also a general help and a paper on WIMS.
The WIMS server is composed of a kernel program which is a cgi program (wims.cgi), plus various activity units called ``modules''.
The client browser accesses the server via a http request to wims.cgi, with parameters specifying the name of the module to request, the type of the request, and possibly parameters for the module ; wims.cgi processes the requested module, passing the user parameters to it, and sends the result returned by the module back to the client.
A module may consist of a number of script files grouped in one directory. These scripts are written in a special scripting language: the WIMS language.
The WIMS language contains commands which allow it to call external programs (especially various mathematical softwares) to make sophisticated computations. Such commands are processed by wims.cgi and sent through interface programs which filter the request, check for security breaches, and send back a filtered output.
      !instex $$ \left( $matrix \right) $$
      Moreover, this implementation of dynamic insertions makes future updates
      possible without modification at module's level. (For example when a
      better way to render mathematical formula is available, a simple
      modification at server's level will immediately let all !instex
       lines take benefit of the new standard.)
  
      factor=!exec pari print(factor($number))
      Upon execution of this line, the variable  will be replaced by
      its current value, then the software package `PARI' will be called
      with the string `print(factor(<value of $number>))' as command to
      execute. The output of the program, with the overheads stripped, will
      be placed as the value of the variable `factor'. 
, $m_RR for
      
, $m_le for
      
, $m_Rightarrow for 
, etc.
  The easiest is the creation of simple interactive exercises which does not really require the knowledge about a computer language, but exercises that can be written in this way have limited power and versatility.
On the other hand, you can also develop full-power WIMS modules by working entirely on line. For obvious security reasons, you will need a login/password pair which you must ask the site manager to attribute to you. Once logged in, you can create and modify as many modules as you like, in a special development zone. When you have finished the development of a module, you can ask the site manager to move it to a public place.
A WIMS server is a modular system, with different applications as modules. At each new call to WIMS, the user has to specify which module he wants to access.
A WIMS module may be an interactive course or interactive exercise (of any level), a computational tool, a dictionary, a mathematical game, a database, or a mixture of the above.
WIMS modules are independent from each other. Each module has its own directory, which serves as its address, and contains all the files of this module. Different modules have different authors and different maintainers, and may follow different copyright policies.
There is no relation between modules in a same WIMS site, except hypertext links which allows one module to access another in various ways.
https://wims.univ-cotedazur.fr/wims/wims.cgi
which usually should be followed by parameters. A call to the main wims.cgi program without parameter will bring up the WIMS homepage of the site.
Parameters of wims.cgi is a usual http name=value pair, where the name field may be one of the following:
| Parameter string | Meaning | 
|---|---|
| cmd=intro | get introduction page of the module | 
| cmd=new | open new working session | 
| cmd=renew | restart working session | 
| cmd=reply | send reply to the module | 
| cmd=next | get next exercise (in a working session) | 
| cmd=config | set preferences | 
| cmd=help | get contextual help | 
| cmd=hint | get contextual hint | 
| cmd=resume | resume work (e.g. after help) | 
| cmd=getins | get dynamic insertions: internal use by the server. Not to be used by modules. | 
https://wims.univ-cotedazur.fr/~wims/wims.cgi?cmd=new&+module=tool/algebra/factor.encalls the WIMS server at wims.univ-cotedazur.fr, with `new' as the value of `cmd', `tool/algebra/factor.en' as the module name.
Each WIMS module has a private home directory in which go all the files of this module.
A module must have at least the following files:And it may often contain the following (optional) files too:
There may be any number of other files, like a README.md file, one or more help pages, an about page, one or more graphics files, files called by one of the above mandatory or optional files, etc.
The files var.init and var.proc, as well as any files called by these two files, are variable processing files.
A variable processing file is divided into lines, separated by non-escaped new-line characters. A new-line character can be escaped by the character \, in which case it does not separate the two lines before and after it.
Every line of a variable processing file must be one of the following:The files main.phtml and intro.phtml, as well as any files called by these two files, are phtml files (programmable html).
A phtml file is an ordinary html file, except for lines whose first non-space character is a ! or a :.
Lines can be escaped by \, just as in the case of a variable processing file.
A line starting with : is a label line, as in the case of a variable processing file.
A line starting with ! is a command line, as in the case of a variable processing file. To the difference that if the command produces an output string, this output will be inserted into the html page, at the place of the line.
Lines not of the above two types will be sent to the http client, after substitution of variables.
A variable may be defined or modified in a variable processing file, or by the commands !let and !default.
Variable names can contain any alphanumeric character, as well as the underscore character _. There is a limit to the length of variable names, and a limit to the length of values. (Limits depending on server configuration.)
Variable substitution can be done anywhere in a variable processing file or a phtml file (even in the name field of a variable definition line). A word preceeded by the character $ is considered to be a variable name, and will be replaced by its value when the line containing it is processed.
Special rules of variable substitution:
3*$(alpha$(i)beta)*xwill become
3*pi*xafter substitution.
Array addressing: if the variable i contains a comma-separated list a,b,c,d,e, then the string $(i[3]) gives c after substitution, and $(i[2 to 4]) gives b,c,d, etc.
Two-dimensional array addressing is also available: if
$M=x,y,z;a,b,c(a 2x3 matrix), then
$(M[1;3,2])=z,y
$(a$[$i-1])*x+$(a$[$i-2])will become
pi*x+3after substitution.
| Variables | Meaning | 
|---|---|
| module_title | title of the module | 
| module_description | short description of the module | 
| module_author | name(s) of author(s) of the module | 
| module_address | e-mail address of the (principal) author | 
| module_maintainer | name of the current maintainer | 
| module_maintainer_address | e-mail address of the maintainer | 
| module_copyright | copyright notice of the module | 
| module_version | current version of the module | 
| module_wims_version | minimal WIMS version required to run this module  | 
| module_dir | address of the module to use inside the module for example to insert an image loaded in a subdirectory of the module | 
| module_language | language of the module (en, fr, de, or ...)  | 
| module_category | category of the module (exercise, tool, course, pedia, recreation, adm, other)  | 
| module_level | level of the module | 
| module_domain | algebra, analysis, geometry, ... | 
| module_keywords | keywords, to be placed in the html header | 
| module_scoring | = yes if the module gives scores according to WIMS standard | 
| module_data | address of datamodule | 
| wims_exec_error | is used to store error messages of the external program called by !exec. For this reason, this variable will be overwritten each time a !exec command is executed. | 
| wims_module_log | is used for individual module's log files: if this variable is non-empty, wims.cgi will put its content into the module's log file, at the end of the process of the user request. | 
| wims_version | has a value preset to the current version of the wims server. | 
| wims_version_date | has a value preset to the last compile date of the server program. | 
| wims_site_manager | contains the electronic address of the site manager, as defined in the configuration file wims.conf of the site. Modules should not modify this variable. | 
| wims_print_precision | defines the printing precision when a result of evaluation (via !eval or NaN) is converted to a character string. Default value: 8 (may be modified in wims.conf). | 
| wims_warn_ | ... is ... | 
| wims_compare_precision | 
  is used to define error tolerance when wims compares two numerical values.
 Formula: !ifval a=b will
  return TRUE if  abs(a-b)*10000<abs(a+b)+1/10000. Default value: 10000 (may be modified in wims.conf). | 
| wims_texsize | can be used to modify TeX sizes for the module. Default value is 0 (no change). Maybe 1,2,... (increase TeX size) or -1,-2... (decrease TeX size). | 
| wims_homeref_parm | is reserved for future use in the command !homeref. | 
| wims_homeref_bgcolor | is... | 
| wims_rawmath_functions | is used to tell rawmath routine that the words contained in the variable value should be treated as function names. These words can be separated either by white space or by comma. | 
| wims_rawmath_variables | is used to tell rawmath routine that the words contained in the variable value should be treated as math variable names. These words can be separated either by white space or by comma. | 
| wims_ref_name | gives the addess of the wims serveur (for this server, https://wims.univ-cotedazur.fr/~wims/wims.cgi) | 
| httpd_HTTP_HOST | gives the name of the wims serveur (for this server, wims.univ-cotedazur.fr) | 
| wims_protocol | gives protocol used (http, https. for this connexion ) | 
| wims_ref_target | defines the target of the command !href, !homeref, !form. Its value is not automatically reset to empty after the commands. (Defaults to empty string, meaning that the target is the current document.) | 
| wims_ref_id | defines the id in the command !href (<a ... id=" ">) and in the commands !formradio, !formcheckbox and !getfile. Its value is automatically reset to empty after the commands. (Defaults to empty string) | 
| wims_ref_class | defines the css class in the command !href (<a ... class=" ">) and in the commands !formradio, !formcheckbox and !getfile. Its value is automatically reset to empty after the command. (Defaults to empty string) | 
| wims_ref_title | defines the title in the commands !href and !getfile (<a ... title=" ">). Its value is automatically reset to empty after the command. (Defaults to empty string) | 
| wims_html_mode | can be used before a command as !formradio, !formcheckbox. It forces the results of the formradio to be inside the html mode. The value must be span, li, div. It could be td. | 
| wims_getfile_fname | can be used before the command !getfile to specify the value for the download attribute, which will be the new filename of the downloaded file. | 
| wims_html_header | is the standardised html header for all its modules' html outputs. Its value is defined in the file html/header.phtml. It is highly recommended that modules use this variable to define their html headers. | 
| wims_expire | is used to define expiration dates of the pages sent to clients. Don't touch it if you don't know what this means. | 
| module_init_parm | is... | 
| wims_ins_alt | if the value is the word empty, no automatic alt is inserted (should be put in ins_attr for example); if the value is the word none, some alt is inserted (generated by WIMS). | 
| jquery_defined | if the value is the word yes, one can use jquery script (some themes do not use it, so another solution must be found even if there is less functionnality as dragdrop). | 
| freepar_ | If a variable begins by this prefix, no check on parenthesis is done. | 
| wims_writable | |
| wims_prefix | 
| ins_align | defines the manner in which the inline picture is aligned with respect to the line. Possible values: bottom, middle or top. Default is empty (which means bottom). | 
| ins_attr | 
  is used to define miscallaneous attributes of a
  dynamic insertion. Examples:
  ins_attr = alt="meaning"or ins_attr = align=middle(aligns the middle of the image with the baseline for the current textline), or ins_attr = ismap(coordinates of the click will be passed back to the server; if the link of the element is the wims server, the coordinates will be registered under the variable no_name.) This variable is reset to empty after a dynamic insertion.  | 
| ins_border | 
  is used to define border width of the html
  element IMG  resulted from the dynamic insertion. Its value should be a positive
  number.
   This variable is reset to empty after a dynamic insertion.  | 
| ins_density | 
  is used to define the density of the dynamic
  insertions. Default value: 100x100 .
   Avoid using this variable! We are planning to suppress it. Will be replaced by a server-managed variable.  | 
| ins_format | 
  can be used to determine the format of the
  graphics file of the dynamic insertion: its value should be either 
  gif or jpg. The default value of this variable is
  gif (which can be changed by modifying the file 
  wims.conf; but such change is not recommended).  Some types of dynamic insertions may not be affected by this variable.  | 
| ins_quality | is used to define quality of the graphics convertion used in dynamic insertions. Its value should be between 0 and 100. Affects only dynamic insertions whose graphics format is jpg. | 
| ins_tag | 
   is used for dynamic insertions within a form.
  In this case define ins_tag=form name where name is the name of the html element IMG within the form (optional). This variable is reset to empty after a dynamic insertion.  | 
| insdraw_size | is the size in pixels for the dynamic insertion. ins_filename is the name of the graphics file of the dynamic insertion (generated by wims). It must be taken just after the command !insdraw | 
| ins_url | is the url of the graphics file of the dynamic insertion. It must be taken just after the command !insdraw | 
| insplot_data | is ... | 
| insplot_font | is ... | 
| insplot_set | is ... | 
| insplot_split | is ... | 
| insplot_transparent | is used to define transparent color for insertions. Default is empty (no transparency). Usual value: 255,255,255(white is transparent). | 
| wims_backslash_insmath | if the value is yes, it is possible to use the notation \( \) to insert mathematical expressions. | 
| force_mathml | if the value is yes, force mathml output of tex formulas. | 
| disable_mathml | If the value is 1, disable mathml output of tex formulas. The variable disable_mathml has priority on force_mathml. | 
| pari_precision | give the pari precision of the computation with Pari/GP | 
| print_precision | give the precision of the computed number at the end of the computation. | 
| maxima_precision | give the maxima precision of the computation with Maxima. | 
| wims_multiexec | If the value is yes, allow the multiexecution of the mathematical software | 
| use_comma | If value is 1 moneyprint will use a decimal comma. Any other value or no value will use the decimal point notation. Only to be used for presentation purposes. | 
This section is not yet finished. Sorry.
WIMS commands can be used in variable processing files and phtml files. A command is a word preceeded by the character !.
Commands has two types:
Some commands can be used both as execution command and as variable command.
Commands may accept parameters which are words following it. Parameter fields are separated by white spaces or special words (depending on the command).
The syntax for a range of integers is n1 to n2. For example, 2 to -2 means the whole string except the first and the last characters.
If your module depends on datamodules to run, declare them in the INDEX file, then use this command to check the presence of the datamodules. If the answer is "no", you can take actions to lock further access to your module and/or show error messages.
The syntax for a range of integers is n1 to n2. For example, 2 to -2 means the whole string except the first and the last columns.
When vname contains several names, the values of each will be returned with the same separators as for the names.
For example, if type is words, then the first (resp. second, etc.) variable in namelist will be set to the first (resp. second, etc.) word of string.
The curly braces in string can be nested, but the execution runs from outmost pair to innermost pair.
Available opword:
Special case: if the file name starts with getfile/, the file is written to the getfile subdirectory of the session. This file is then accessible via the command
!href cmd=getfile&special_parm=fname_without_getfile_prefixor a complete url
$wims_ref_name?session=$session&+cmd=getfile&+special_parm=fname_without_getfile_prefix
!fileexists themes/standard/_procs/tt.phtmlor for a trusted module,
!fileexists wimshome/log/classes/2001/Exindex
Special case: if the file name starts with getfile, the file is written to the getfile subdirectory of the session. This file is then accessible via the command
!href cmd=getfile&special_parm=fname_without_getfile_prefix, or a complete url
$wims_ref_name?session=$session&+cmd=getfile&+special_parm=fname_without_getfile_prefix
!breakwithin the for loop breaks it. continue is not yet implemented in this version.
The target of the form can be controlled by the variable wims_ref_target. It can also be defined via an optional word target=.... Note that in this case the target must start with wims_.
The variable wims_form_method which must be either get or post controls the method of the form. This method defaults to post for tool modules, and to get for all other modules.
| Command | Result | 
|---|---|
!formcheckbox varCHK1 from 1 to 3 prompt txt1,txt2,txt3 | 
  , , | 
!formcheckbox varCHK2 list a,b,c prompt txtA,txtB,txtC | 
  , , | 
<ol> | 
  
     | 
| Command | Result | 
|---|---|
!formradio quest1 list 0,1,2 prompt zero,one,two | 
  , , | 
!formradio quest2 from 0 to 2 prompt A,B,C | 
  , , | 
!set wims_ref_id=quest3_0 | 
  |
<ol class="inline"> | 
  
     | 
The CSS class (class='...') of the link can be controlled via the variable wims_ref_class.
The title (title='...') of the link can be controlled via the variable wims_ref_title.
The HTML ID (id='...') of the link can be controlled via the variable wims_ref_id.
It returns the defined value in the string, or the name itself if it appears in string but if there is no = sign following it, or an empty string if name does not appear in string as a word.
value can be a multi-word string, if it is enclosed by a pair of parentheses, brackets, curly braces or double quotes. The enclosing parentheses etc. will be removed from the output.
Spaces are allowed before and/or after the = sign.
parm is reserved for future implementation.
In particular, the result can be used as part of a variable name whatever the content of string is (as long as it is not too long).
The target of the reference can be controlled via the variable wims_ref_target. It can also be defined via an optional word target=.... Note that in this case the target must start with wims_.
The CSS class (class='...') of the link can be controlled via the variable wims_ref_class.
The title (title='...') of the link can be controlled via the variable wims_ref_title.
The HTML ID (id='...') of the link can be controlled via the variable wims_ref_id.
| Relatie | Conditie | |
|---|---|---|
| == | 
string1 == string2  string1 == string2  | 
met if: waar als string1 en string2 identiek zijn. met ifval: waar als de numerieke evaluatie van string1 en van string2 gelijk zijn.  | 
| != | 
string1 != string2  string1 <> string2  | 
met if: waar als string1 en string2 NIET identiek zijn. met ifval: waar als de if numerieke evaluatie van string1 en van string2 niet gelijk zijn.  | 
| != | ||
| < | string1 < string2 | waar als (de numerieke evaluatie van) string1 kleiner is dan string2. | 
| <= | string1 <= string2 | waar als (de numerieke evaluatie van) string1 kleiner of gelijke is aan string2. | 
| > | string1 > string2 | waar als (de numerieke evaluatie van) string1 groter is dan string2. | 
| >= | string1 >= string2 | waar als (de numerieke evaluatie van) string1 groter of gelijk is aan string2. | 
| isin | string1 isin string2 | waar als string1 een substring van string2 is. | 
| notin | string1 notin string2 | waar als string1 GEEN substring van string2 is. | 
| iswordof | string1 iswordof string2 | waar als string1 een woord van string2 is. | 
| notwordof | string1 notwordof string2 | waar als string1 GEEN woord van string2 is. | 
| isvarof | string1 isvarof string2 | waar als string1 een (mathematische) variabele van de uitdrukking string2 is. | 
| notvarof | string1 notvarof string2 | waar als string1 GEEN (mathematische) variabele van de uitdrukking string2 is. | 
| isvariableof | string1 isvariableof string2 | waar als string1 een (mathematische) variabele van de uitdrukking string2 is. | 
| notvariableof | string1 notvariableof string2 | waar als string1 GEEN (mathematische) variabele van de uitdrukking string2 is. | 
| isitemof | string1 isitemof string2 | waar als string1 een item uit de lijst string2 is. | 
| notitemof | string1 notitemof string2 | waar als string1 GEEN item uit de lijst string2 is. | 
| islineof | string1 islineof string2 | waar als string1 een regel uit de lijst string2 is. | 
| notlineof | string1 notlineof string2 | waar als string1 GEEN regel uit de lijst string2 is. | 
| issamecase | string1 issamecase string2 | waar als string1 en string2 gelijk zijn in tekst en letter grootte (beide groot of klein) en onafhankelijke van het aantal spaties , | 
| notsamecase | string1 notsamecase string2 | waar als string1 en string2 NIET gelijk zijn in tekst en letter grootte en onafhankelijk van het aantal spaties. | 
| issametext | string1 issametext string2 | waar als string1 en string2 gelijk zijn in tekst onafhankelijk van letter grootte spaties en accenten. | 
| notsametext | string1 notsametext string2 | waar als string1 en string2 NIET gelijk zijn in tekst onafhankelijk van letter grootte spaties en accenten. | 
The syntax for a range of integers is n1 to n2. For example, 2 to -2 means the whole string except the first and the last items.
The computation is made from (x1,y1) to (x2,y2), and points are computed as integer positions in a picture with size xsize,ysize.
Order of the fields is not important. All the fields except levels are mandatory.
The syntax for a range of integers is n1 to n2. For example, 2 to -2 means the whole string except the first and the last lines.
!listfile $module_dir
 
  The first word of the first line in the parameter should be the email address. 
  
 
  The rest of the first line is the recepient name (default to email address). 
  
 
  The second line and up is the mail subject. 
  
This command calls, in the order of priority, one of the following files:
| Command | Result | 
|---|---|
!makelist [x;x+1;xx] for x in a,x and y,1,(2,3) | 
  [a;a+1;xx],[x and y;x and y+1;xx],[1;1+1;xx],[(2,3);(2,3)+1;xx]  | 
| Command | Result | 
|---|---|
!mathmlmath 1*x+3*y = 35E-05 | 
  |
!mathmlmath 2x, 2*x | 
  |
!mathmlmath x2, x_2, x^2 | 
  
Actually wims use Wikipedia as the standard reference encyclopedia.
In the second syntax, the values are given with respect to each item in the list v1,v2,....
1 and n1 (inclusive). The syntax for a range of integers is n1 to n2. For example, 2 to -2 means the whole fname except the first and the last records.
In the second syntax, the values are given with respect to each item in the list v1,v2,....
The function fn should use the variable last to indicate the value of the previous recursion step. And the starting value can be put into the WIMS variable $recursion_start.
Browsers translate & primitives into corresponding (special) characters even when these primitives occur in input or textarea fields. Also, if string contains html tags, they may confuse browsers. You can use this command on the string (usually derived from an earlier user input) before inserting them back into a input or textarea, to avoid the above problems.
This command is useful with exercises where important information is carried by multimedia files (pictures, audios, movies). It can be used to hide the name of the multimedia file that otherwise would give clues to the solution of the problem.
The renamed file must be located within the module, and the filename f should start with $module_dir.
The command returns a string which is the new URL. The file is not effectively copied or renamed on the server.
 
  Under the first syntax, variable substitution is first done on string. 
  Then all occurences of substring s1 are replaced by s2. 
 
  When the keyword internal is absent, the Linux utility sed is called to make the replacements, 
  therefore regular expressions are accepted in s1 and s2. 
  Please refer to the man page of sed for details. 
 
  Under the second syntax, obj can be char, word, item or line. 
  Then the word, item or line identified by ident in string is replaced 
  by s, after variable substitutions. 
 
  ident can be a string, in this case all objects (words, items or lines) matching ident  
  will be replaced. It can also be a number (positive or negative integer n), preceded 
  by the word number. In this case the object number n will be replaced. 
  (In the case where n<0, it is the last -n th object which is replaced.) 
  
This command can be only used before output starts. Repeated restart is disabled, to avoid infinite loops.
The condition can use words column 1, column 2, etc. to designate comma-separated columns in each row.
fn may have several roots in the interval [v1,v2], but roots too close to each other may be overlooked.
| Command | Result | 
|---|---|
!sort list 0,4,2 | 
  0,2,4 | 
!sort reverse list 0,4,2 | 
  4,2,0 | 
!sort list 10,4,2 | 
  10,2,4 | 
!sort numeric list 10,4,2 | 
  2,4,10 | 
In the second syntax, the values are given with respect to each item in the list v1,v2,....
parm is reserved for future implementation.
| Command | Result | 
|---|---|
!texmath 1*x+3*y = 35E-05 | 
  x +3 y=35 \times 10^{-5} | 
!texmath 2x, 2*x | 
  2,2 x | 
!texmath x2, x_2, x^2 | 
  x _2 ,x_{2},x^2 | 
In the second syntax, the values are given with respect to each item in the list v1,v2,....
fns may be a comma-separated list of functions.
This command can also be used to make recursions. If the functions fns contain a variable named last, this variable will take the value of the last step each time. And the starting value can be put into the WIMS variable $recursion_start.
If the switch nofn is present, function names will not be listed.
The syntax is the same as for if.
The syntax for a range of integers is n1 to n2. For example, 2 to -2 means the whole string except the first and the last words.
The symbol names are based on corresponding TeX names.
| Symbol | Name tt | 
|---|---|
 ,  ,  , ...  , ...  
     | $m_alpha, $m_beta, $m_gamma, ... $m_pi, ... $m_omega | 
 ,  ,  ,  ,  ,  ,  ,
	 ,  ,  ,  
     | $m_Gamma, $m_Delta, $m_Lambda, $m_Phi, $m_Psi, $m_Pi, $m_Sigma, $m_Theta, $m_Upsilon, $m_Xi, $m_Omega | 
 ,  ,  ,  ,  ,  
     | $m_varepsilon, $m_varphi, $m_wp, $m_ell, $m_Re, $m_Im | 
 ,  ,  ,  
     | $m_aleph, $m_infty, $m_nabla, $m_partial | 
 ,  ,  ,  ,   ...
     | $m_AA, $m_CC, $m_RR, $m_QQ, $m_ZZ ... | 
 ,  ,...  ,...  
     | $m_calA, $m_calB,... $m_calM,... $m_calZ | 
 ,  ,...  ,...  
     | $m_eufA, $m_eufB,... $m_eufM,... $m_eufZ | 
 ,  ,...  ,...  
     | $m_eufa, $m_eufb,... $m_eufm,... $m_eufz | 
 ,  ,  ,  ,  
     | $m_le, $m_ge, $m_pm, $m_times, $m_div | 
 ,  ,  ,  
     | $m_neq, $m_equiv, $m_cong, $m_approx | 
 ,  ,  ,
	 ,  ,  
     | $m_leftarrow, $m_rightarrow, $m_mapsto, $m_Leftarrow, $m_Rightarrow, $m_Leftrightarrow | 
 ,  ,  ,  
     | $m_exists, $m_forall, $m_in, $m_emptyset | 
 ,  ,  ,  ,
	 ,  ,  ,  
     | $m_subset, $m_supset, $m_subseteq, $m_supseteq, $m_cap, $m_cup, $m_prec, $m_succ | 
 ,  ,  ,  
     | $m_sum, $m_prod, $m_coprod, $m_surd | 
 ,  ,  ,  ,  
     | $m_int, $m_oint, $m_Vert, $m_oplus, $m_otimes | 
 ,  ,  ,  
     | $m_bigtriangleup, $m_bigtriangledown, $m_bigvee, $m_bigwedge | 
!read slib/matrix/random 3, 5, 10maakt een 3×5 matrix met random integer coefficiënten uit interval [-10, 10]. Het resultaat wordt opgenomen in de variabele slib_out. Voor OEF oefeningen , documenten of forumberichten moet de functie slib().worden gebruikt
Alleen de variabelen met voorvoegsel slib_ worden gemodificeerd door deze scripten.
Scripts in this library can be called from modules using the command !read (or !readproc from within a phtml file). For example, the line!read slib/matrix/random 3, 5, 10generates a 3×5 matrix with random integer coefficients in [-10, 10]. The result is placed in the variable slib_out. To call an slib script from OEF exercises, documents or forum messages, use the function slib().
Only variables prefixed by slib_ are modified by these scripts.
| Output | |
|---|---|
| algebra/partitionconj | Partition conjugate [] | 
| algebra/partitiondraw | Young diagram drawing of a partition [] | 
| algebra/partitionlex | Next partition in the lexicographic decreasing order [] | 
| algebra/slopedraw | Polygone tracé à partir des pentes (dessin) [] | 
| analysis/inversedomain | Inverse image of domains [] | 
| analysis/odejs | Draw solutions of a differential system (with jsxgraph). [] | 
| analysis/odejs2 | Draw a solution of a differential system: x' [] | 
| analysis/odephase | Phase portrait of a differential system [] | 
| analysis/rungekutta | Equation différentielle (par Runge-Kutta) experimental en faire une liste sans dessin [] | 
| analysis/slopefield | Direction field (for example for differential equation system) [] | 
| chemistry/brut2html | HTML form of the formula of a molécule [] | 
| chemistry/checkmol | Check Mol [] | 
| chemistry/chemeq_add | Computes a combination of chemical equations [] | 
| chemistry/chemeq_compare | Comparing chemical equations [] | 
| chemistry/chemeq_components | Chemical components [] | 
| chemistry/chemeq_el | Returns the number of electrons in a redox reaction [] | 
| chemistry/chemeq_equilibrium | Analysing the equilibrium in chemical formulas [] | 
| chemistry/chemeq_mass | Molar Mass [] | 
| chemistry/chemeq_periodic_table | Insert Mendeleiev's periodic table in the page [] | 
| chemistry/chemeq_rev | Returns a chemical equation reversed [] | 
| chemistry/chemeq_rq | Typeset reaction quotients and Nernst laws for chemical equations [] | 
| chemistry/chemeq_sto | stoechiometric coefficients [] | 
| chemistry/chemeq_tex | Typeset molecules and chemical equations [] | 
| chemistry/chemformula | Chem formula [] | 
| chemistry/chemshow | Dessin d'une molécule en 2D [] | 
| chemistry/cram | Cram representation [] | 
| chemistry/jmolbutton | Button in Jmol. Has to be inserted AFTER the Jmol applet. [] | 
| chemistry/jmolcheckbox | Checkbox Button in Jmol [] | 
| chemistry/jmolradiogroup | Radio Group in Jmol [] | 
| chemistry/jmolshow | Jmol Applet [] | 
| chemistry/leftind | left and right indices and exponents [] | 
| chemistry/molarmass | Molar Mass [] | 
| chemistry/moldraw | Dessin en flydraw ou en canvasdraw de la molécule [] | 
| chemistry/molecule | Periodic table [] | 
| chemistry/newman | Newman projection [] | 
| chemistry/reactiondraw | Dessin en canvasdraw d'une réaction [] | 
| circuits/complist | List available circuit components [] | 
| circuits/comppos | Component position information of a circuit type. [] | 
| circuits/draw | Draw circuit scheme according a circuit type. [] | 
| circuits/drawcomp | Draw circuit components according to a circuit type. [] | 
| circuits/drawwire | Draw the fixed circuit wiring of a given circuit type. [] | 
| circuits/range | Size and range information of a circuit type. [] | 
| coding/editor | WYSIWYG code editor [] | 
| coding/runcode | Run code [] | 
| data/columnsort | Sort data according to a column [] | 
| data/randline | Take a random line of a data file [] | 
| data/random | Randomly selects a number of (different) objects [] | 
| data/randrec | Take a random field of a record file [] | 
| draw/balance | Balance (Roberval) [] | 
| draw/brokenlinegraph | Draw a continuous stepwise affine function from the points where slpe changes [] | 
| draw/clock | Draw a clock according to given time [] | 
| draw/convpixel | Conversion pixel image coordinates - mathematical coordinates [] | 
| draw/domino | Domino [] | 
| draw/drtgraduee | Graduatied line [] | 
| draw/graphviz | Graphviz [] | 
| draw/graphvizpoints | Coordinates of the nodes of a graph by Graphviz [] | 
| draw/meter | Meter [] | 
| draw/polygon | Regular polygon [] | 
| draw/radar | Radar [] | 
| draw/randpolygon | Polygone quelconque [] | 
| draw/range | Range [] | 
| draw/repdroite | Computes the coordinates of extreme points to draw a line in a frame [] | 
| draw/repere | Draw a coordinate frame [] | 
| draw/rosette | Draw a rosette [] | 
| draw/thermometer | Thermometer [] | 
| function/bounds | The bound of a real function of one variable within an interval [x1,x2] [] | 
| function/bounds2 | The bound of a real function of two variables within a rectangle [x1,x2],[y1,y2] [] | 
| function/integrate | Indefinite or definite integration of a function of one variable [] | 
| function/tabsignes | Tableau de signes d'une fonction numérique [] | 
| games/chessimage | Chessboard [] | 
| geo2D/afftiling | Pavage affine par des triangles [] | 
| geo2D/geogebra | Geogebra HTML 5 [] | 
| geo2D/hyppolygon | Polygone tangentiel [] | 
| geo2D/hyptiling | Pavage hyperbolique du disque de Poincaré [] | 
| geo2D/jsxgraph | Plugin for JSXGraph responsive [] | 
| geo2D/offdraw | Conversion d'un dessin 2D codé dans la syntaxe off en canvasdraw [] | 
| geo2D/polynet | Dessin d'un patron aléatoire du polyèdre [] | 
| geo2D/squaretile | Square tile [] | 
| geo3D/3Dviewer | 3D Viewer [] | 
| geo3D/draw | Polyedron in flydraw [] | 
| geo3D/drawtile | Lattice of cubes [] | 
| geo3D/off2jmol | Format off to xyz [] | 
| geo3D/off2xyz | Format off to xyz [] | 
| geo3D/polyhedra | Polyhedra applet [] | 
| geo3D/polyhedradual | Polyhedra applet and its dual [] | 
| geo3D/polynet | Patron d'un polyèdre en 3D [] | 
| graph/connexcomponent | Connex component of a vertex in a graph [] | 
| graph/connexity | Connex components of a simple graph [] | 
| graph/distance | Matrix of diameter of a graph [] | 
| graph/draw | Graph draw [] | 
| graph/drawcc | Graph draw with one colored connex component [] | 
| graph/drawtree | Tree draw [] | 
| graph/gpt | Oriented graph without circuit [] | 
| graph/graphviz | Graphviz [] | 
| graph/path | Path of a graph [] | 
| graph/randomconnex | random connex graph [] | 
| graph/randomeuler | random eulerian graph [] | 
| graph/randtree | Random tree [] | 
| graph/shortpath | Shortest path of a graph [] | 
| graphpaper/correct_milli | Graphic paper sheet with red correct plot preloaded [] | 
| graphpaper/func | One function plot, ready to append to a previously made graph paper [] | 
| graphpaper/func_milli | Graphic paper sheet with function plot and red correct plot preloaded [] | 
| graphpaper/imgpoints | Utility for a clickable graphic paper sheet [] | 
| graphpaper/millimetre | Graphic paper sheet [] | 
| graphpaper/strings | Prepare strings to be written on a graphic paper sheet [] | 
| graphpaper/tograph | Utility for a clickable graphic paper sheet [] | 
| graphpaper/whereclick | Utility for a clickable graphic paper sheet [] | 
| lang/enword2ipa | IPA transcription of english words [] | 
| lang/epd2ipa | IPA transcription according to epd ascii codage (for english) [] | 
| lang/fname | A random firstname [] | 
| lang/fraccord | Accord of French adjectives and names [] | 
| lang/frapostrophe | Apostrophe reduction of a French text [] | 
| lang/frartdef | Transform a French noun into definite form [] | 
| lang/frcodcoi | Find a random complement of a French verb [] | 
| lang/frverbconj | The conjugation of a French verb [] | 
| lang/images | Images in some datamodule [] | 
| lang/itdetermart | Italian "articolo determinativo" [] | 
| lang/randomword | Output random words in the dictionary [] | 
| lang/sampa2ipa | IPA transcription according to Sampa Ascii codage (for english) [] | 
| lang/swac | Insertion of words (audio) from the swac packs [] | 
| life/frcommodity | Give a random commodity with given price, French [] | 
| list/selshuf | Selective shuffle [] | 
| matrix/concate | concatenation [] | 
| matrix/det | The determinant of a square matrix [] | 
| matrix/givenrank | Generates a random matrix of given rank [] | 
| matrix/inverse | The inverse of a square matrix [] | 
| matrix/invertible | Generates a random invertible matrix [] | 
| matrix/itriangular | Generates a random invertible triangular matrix [] | 
| matrix/non0 | Generates a random matrix with non-zero coefficients [] | 
| matrix/orthogonal | Generates a random orthogonal matrix [] | 
| matrix/random | Generates a random matrix [] | 
| matrix/trace | The trace of a square matrix [] | 
| matrix/transpose | The transpose of a matrix [] | 
| matrix/triangular | Generates a random triangular matrix [] | 
| matrix/unimodular | Generates a random unimodular matrix [] | 
| media/audio | Audio insertion [] | 
| media/dewplayer | Audio insertion with dewplayer [] | 
| media/player | Audio insertion with hbs_mp3_player [] | 
| media/player_mp3_multi | Audio insertion with player_mp3_multi [] | 
| media/video | Video insertion [] | 
| nuclear/nucleide | Data about nucleides, or LaTeX typesetting [] | 
| nuclear/reaction | Typesetting nuclear reactions from plain text formulas [] | 
| numeration/babylonien | Ecriture Babylonienne d'un nombre entier [] | 
| numeration/baseblock | Base blocks in numeration [] | 
| numeration/basep | Passage de la base dix vers la base p. [] | 
| numeration/ecriturelettre | Writing of a number in letters. [] | 
| numeration/ecriturenombre | Writing a number with grouping the numbers by three. [] | 
| numeration/egyptien | Ecriture Egyptienne d'un nombre entier [] | 
| numeration/rational | Repeating decimal of a rational [] | 
| numeration/romain | Numération romaine [] | 
| oef/blank | Blank [] | 
| oef/codelim | OEF code length limit register [] | 
| oef/codename | Register OEF code reply name allow/deny [] | 
| oef/env | Get an OEF environment variable [] | 
| oef/insfilename | Output the file name of the last insert [] | 
| oef/newfile | Save a text in a file [] | 
| oef/postsrc | OEF code input postpender [] | 
| oef/presrc | OEF code input prepender [] | 
| oef/sortorder | Sort order [] | 
| polynomial/random | Random polynomial [] | 
| set/subset | Subsets of a set [] | 
| stat/1d | Computes 1-dimensional statistical data [] | 
| stat/arithmean | Arithmetic mean of statistical data [] | 
| stat/beta | Generation of beta random data [] | 
| stat/betacdf | Cumulative distribution function of a Beta law [] | 
| stat/betainv | Quantiles of a Beta law [] | 
| stat/betapdf | Probability density function of a Beta law [] | 
| stat/binomial | Generation of binomial random data [] | 
| stat/binomialcdf | cumulative distribution function of Binomial law [] | 
| stat/binomialinv | Quantile of Binomial law [] | 
| stat/binomialpdf | Probability density function of the binomial law [] | 
| stat/boxplot | Box plot [] | 
| stat/cauchy | Generation of Cauchy random data [] | 
| stat/cauchycdf | Cumulative distribution function of Cauchy law [] | 
| stat/cauchyinv | Quantile of Cauchy law [] | 
| stat/cauchypdf | Probability density function of Cauchy law [] | 
| stat/chi2 | Generation of chi-square random data [] | 
| stat/chi2cdf | Chi-square cumulative distribution function [] | 
| stat/chi2inv | Quantile of a chi-square distribution [] | 
| stat/chi2pdf | Chi-square probability density function [] | 
| stat/correlation | Matrix of correlation [] | 
| stat/covariance | Matrix of covariance [] | 
| stat/deviation | Deviation of statistical data [] | 
| stat/discretelaw | Generation of a discrete law with nonnegative coefficients [] | 
| stat/effectif | Effectifs of statistical series in classes [] | 
| stat/empiric | Generation of random numbers with a discrete law [] | 
| stat/exponential | Generation of exponential random numbers [] | 
| stat/exponentialcdf | Cumulative distribution function of exponential law [] | 
| stat/exponentialinv | Quantile of exponential law [] | 
| stat/exponentialpdf | Probability density function of exponential law [] | 
| stat/fisher | Generation of Fisher random data [] | 
| stat/fishercdf | Fisher cumulative distribution function. [] | 
| stat/fisherinv | Quantiles of a Fisher law (also called F-distribution) [] | 
| stat/fisherpdf | Fisher probability density function [] | 
| stat/freq | Frequencies of statistical data [] | 
| stat/gamma | Generation of Gamma random data [] | 
| stat/gammacdf | Cumulative distribution function of Gamma law [] | 
| stat/gammainv | Quantile of a Gamma distribution [] | 
| stat/gammapdf | Gamma probability density function [] | 
| stat/geomean | Geometric mean of data [] | 
| stat/geometric | Generation of random data with a Geometric distribution on N [] | 
| stat/geometric1 | Generation of random data with a Geometric distribution on N* [] | 
| stat/geometric1cdf | Cumulative distribution function of a Geometric distribution on N* [] | 
| stat/geometric1inv | Quantiles of a Geometric law on N* [] | 
| stat/geometric1pdf | Probability density function of a Geometric law on N* [] | 
| stat/geometriccdf | Cumulative distribution function of a Geometric law on N [] | 
| stat/geometricinv | Quantiles of a Geometric law on N [] | 
| stat/geometricpdf | Probability density function of geometric law on N [] | 
| stat/harmonic | Harmonic mean of statistical data [] | 
| stat/histo | Histogram [] | 
| stat/hypergeometric | Generation of Hypergeometric random data [] | 
| stat/hypergeometriccdf | Cumulative distribution function of a hypergeometric law [] | 
| stat/hypergeometricinv | Quantile of hypergeometric law inverse [] | 
| stat/hypergeometricpdf | Probability density function of a Hypergeometric law [] | 
| stat/laplace | Generation of Laplace random data [] | 
| stat/laplacecdf | Laplace cumulative distribution function [] | 
| stat/laplaceinv | Quantiles of the Laplace law [] | 
| stat/laplacepdf | Laplace probability density function [] | 
| stat/linearcong | Generation of linear congruential random integers [] | 
| stat/logistic | Generation of logistic random data [] | 
| stat/logisticcdf | Logistic cumulative distribution function [] | 
| stat/logisticinv | Quantile of the logistic law [] | 
| stat/logisticpdf | Probability density function of the logistic law [] | 
| stat/lognormal | Generation of lognormal random data [] | 
| stat/lognormalcdf | Cumulative distribution function of log-normal law [] | 
| stat/lognormalinv | Quantile of log-normal law [] | 
| stat/lognormalpdf | Probability density function of log-normal law [] | 
| stat/median | Data median [] | 
| stat/multinomial | Generation of multinomial random data [] | 
| stat/nbin | Generation of Negative binomial random data [] | 
| stat/nbincdf | Cumulative distribution function of the Negative Binomial law [] | 
| stat/nbininv | Quantile of a Negative Binomial law. [] | 
| stat/nbinpdf | Probability density function of a Negative Binomial law [] | 
| stat/normal | Generation of Gaussian random data [] | 
| stat/normalcdf | Cumulative distribution function of the normal distribution [] | 
| stat/normalinv | Quantile of the normal law [] | 
| stat/normalpdf | Probability density function of the normal law [] | 
| stat/pascal | Generation of Pascal random data [] | 
| stat/pascalcdf | Cumulative distribution function of the Pascal law [] | 
| stat/pascalinv | Quantile of a Pascal law. [] | 
| stat/pascalpdf | Probability density function of a Pascal law [] | 
| stat/piechart | Pie chart [] | 
| stat/poisson | Generation of random numbers with Poisson law [] | 
| stat/poissoncdf | Poisson cumulative distribution function [] | 
| stat/poissoninv | Quantile of a Poisson law [] | 
| stat/poissonpdf | Probability density function of a Poisson law [] | 
| stat/posdiscretelaw | Generation of a discrete law with positive coefficients [] | 
| stat/prod | Product of data [] | 
| stat/quadratic | Quadratic mean [] | 
| stat/quantile | Quantile [] | 
| stat/random | Generation of random numbers [] | 
| stat/range | Data range [] | 
| stat/student | Generation of Student random data [] | 
| stat/studentcdf | Student cumulative distribution function [] | 
| stat/studentinv | Quantile of a Student law [] | 
| stat/studentpdf | Probability density function of a Student law [] | 
| stat/sum | Data sum [] | 
| stat/variance | Variance [] | 
| stat/weibull | Generation of Weibull random data [] | 
| stat/weibullcdf | Cumulative distribution function of Weibull law [] | 
| stat/weibullinv | Quantile of Weibull law [] | 
| stat/weibullpdf | Probability density function of Weibull law [] | 
| text/approximation | Calculate an approximation interval for a given real [] | 
| text/balloon | Talking Balloons (Cartoon style) [] | 
| text/cdecomment | Extract comment from a c source code. [] | 
| text/comblin | Simplify a linear combination [] | 
| text/crossword | Crossword [] | 
| text/cutchoice2 | Cut out embedded choices for OEF [] | 
| text/cutchoices | Cut out embedded choices for OEF [] | 
| text/markerror | For marking words with mistake [] | 
| text/markgroup | For marking group of words with given explanation [] | 
| text/marktext | Texte for use with type mark for OEF (word) [] | 
| text/marktextpartial | For marking some words with given explanation [] | 
| text/markword | For use with type mark in OEF [] | 
| text/matrixhtml | Transform a matrix into html matrix (table). [] | 
| text/matrixinsert | Insert a coefficient in a matrix [] | 
| text/matrixtex | Matrix in Latex [] | 
| text/maximamatrix | Transform a matrix to maxima format [] | 
| text/octavematrix | Transform an octave output matrix into standard format [] | 
| text/sigunits | Make a representation of a physical quantity with a given number of significative digits [] | 
| text/spirale | Write on a spirale [] | 
| text/whitespace | Replace white spaces [] | 
| triplerelation/tabular | Double entry table for training to relations between three quantities [] | 
| utilities/date | Date [] | 
| utilities/mathcalc | Mathcalc [] | 
| utilities/nopaste | No copy-paste [] | 
| utilities/notepad | Notepad [] | 
| utilities/tooltip | Tooltip containing an html text which appears when the mouse points on a word. [] | 
| utilities/trigo-calc | Inline Trigonometric calculator [] | 
| Output | |
|---|---|
| algebra/partitionconj | Partition conjugate [] | 
| algebra/partitiondraw | Young diagram drawing of a partition [] | 
| algebra/partitionlex | Next partition in the lexicographic decreasing order [] | 
| algebra/slopedraw | Polygone tracé à partir des pentes (dessin) [] | 
| Output | |
|---|---|
| analysis/inversedomain | Inverse image of domains [] | 
| analysis/odejs | Draw solutions of a differential system (with jsxgraph). [] | 
| analysis/odejs2 | Draw a solution of a differential system: x' [] | 
| analysis/odephase | Phase portrait of a differential system [] | 
| analysis/rungekutta | Equation différentielle (par Runge-Kutta) experimental en faire une liste sans dessin [] | 
| analysis/slopefield | Direction field (for example for differential equation system) [] | 
| Output | |
|---|---|
| chemistry/brut2html | HTML form of the formula of a molécule [] | 
| chemistry/checkmol | Check Mol [] | 
| chemistry/chemeq_add | Computes a combination of chemical equations [] | 
| chemistry/chemeq_compare | Comparing chemical equations [] | 
| chemistry/chemeq_components | Chemical components [] | 
| chemistry/chemeq_el | Returns the number of electrons in a redox reaction [] | 
| chemistry/chemeq_equilibrium | Analysing the equilibrium in chemical formulas [] | 
| chemistry/chemeq_mass | Molar Mass [] | 
| chemistry/chemeq_periodic_table | Insert Mendeleiev's periodic table in the page [] | 
| chemistry/chemeq_rev | Returns a chemical equation reversed [] | 
| chemistry/chemeq_rq | Typeset reaction quotients and Nernst laws for chemical equations [] | 
| chemistry/chemeq_sto | stoechiometric coefficients [] | 
| chemistry/chemeq_tex | Typeset molecules and chemical equations [] | 
| chemistry/chemformula | Chem formula [] | 
| chemistry/chemshow | Dessin d'une molécule en 2D [] | 
| chemistry/cram | Cram representation [] | 
| chemistry/jmolbutton | Button in Jmol. Has to be inserted AFTER the Jmol applet. [] | 
| chemistry/jmolcheckbox | Checkbox Button in Jmol [] | 
| chemistry/jmolradiogroup | Radio Group in Jmol [] | 
| chemistry/jmolshow | Jmol Applet [] | 
| chemistry/leftind | left and right indices and exponents [] | 
| chemistry/molarmass | Molar Mass [] | 
| chemistry/moldraw | Dessin en flydraw ou en canvasdraw de la molécule [] | 
| chemistry/molecule | Periodic table [] | 
| chemistry/newman | Newman projection [] | 
| chemistry/reactiondraw | Dessin en canvasdraw d'une réaction [] | 
| Output | |
|---|---|
| circuits/complist | List available circuit components [] | 
| circuits/comppos | Component position information of a circuit type. [] | 
| circuits/draw | Draw circuit scheme according a circuit type. [] | 
| circuits/drawcomp | Draw circuit components according to a circuit type. [] | 
| circuits/drawwire | Draw the fixed circuit wiring of a given circuit type. [] | 
| circuits/range | Size and range information of a circuit type. [] | 
| Output | |
|---|---|
| coding/editor | WYSIWYG code editor [] | 
| coding/runcode | Run code [] | 
| Output | |
|---|---|
| data/columnsort | Sort data according to a column [] | 
| data/randline | Take a random line of a data file [] | 
| data/random | Randomly selects a number of (different) objects [] | 
| data/randrec | Take a random field of a record file [] | 
| Output | |
|---|---|
| draw/balance | Balance (Roberval) [] | 
| draw/brokenlinegraph | Draw a continuous stepwise affine function from the points where slpe changes [] | 
| draw/clock | Draw a clock according to given time [] | 
| draw/convpixel | Conversion pixel image coordinates - mathematical coordinates [] | 
| draw/domino | Domino [] | 
| draw/drtgraduee | Graduatied line [] | 
| draw/graphviz | Graphviz [] | 
| draw/graphvizpoints | Coordinates of the nodes of a graph by Graphviz [] | 
| draw/meter | Meter [] | 
| draw/polygon | Regular polygon [] | 
| draw/radar | Radar [] | 
| draw/randpolygon | Polygone quelconque [] | 
| draw/range | Range [] | 
| draw/repdroite | Computes the coordinates of extreme points to draw a line in a frame [] | 
| draw/repere | Draw a coordinate frame [] | 
| draw/rosette | Draw a rosette [] | 
| draw/thermometer | Thermometer [] | 
| Output | |
|---|---|
| function/bounds | The bound of a real function of one variable within an interval [x1,x2] [] | 
| function/bounds2 | The bound of a real function of two variables within a rectangle [x1,x2],[y1,y2] [] | 
| function/integrate | Indefinite or definite integration of a function of one variable [] | 
| function/tabsignes | Tableau de signes d'une fonction numérique [] | 
| Output | |
|---|---|
| games/chessimage | Chessboard [] | 
| Output | |
|---|---|
| geo2D/afftiling | Pavage affine par des triangles [] | 
| geo2D/geogebra | Geogebra HTML 5 [] | 
| geo2D/hyppolygon | Polygone tangentiel [] | 
| geo2D/hyptiling | Pavage hyperbolique du disque de Poincaré [] | 
| geo2D/jsxgraph | Plugin for JSXGraph responsive [] | 
| geo2D/offdraw | Conversion d'un dessin 2D codé dans la syntaxe off en canvasdraw [] | 
| geo2D/polynet | Dessin d'un patron aléatoire du polyèdre [] | 
| geo2D/squaretile | Square tile [] | 
| Output | |
|---|---|
| geo3D/3Dviewer | 3D Viewer [] | 
| geo3D/draw | Polyedron in flydraw [] | 
| geo3D/drawtile | Lattice of cubes [] | 
| geo3D/off2jmol | Format off to xyz [] | 
| geo3D/off2xyz | Format off to xyz [] | 
| geo3D/polyhedra | Polyhedra applet [] | 
| geo3D/polyhedradual | Polyhedra applet and its dual [] | 
| geo3D/polynet | Patron d'un polyèdre en 3D [] | 
| Output | |
|---|---|
| graph/connexcomponent | Connex component of a vertex in a graph [] | 
| graph/connexity | Connex components of a simple graph [] | 
| graph/distance | Matrix of diameter of a graph [] | 
| graph/draw | Graph draw [] | 
| graph/drawcc | Graph draw with one colored connex component [] | 
| graph/drawtree | Tree draw [] | 
| graph/gpt | Oriented graph without circuit [] | 
| graph/graphviz | Graphviz [] | 
| graph/path | Path of a graph [] | 
| graph/randomconnex | random connex graph [] | 
| graph/randomeuler | random eulerian graph [] | 
| graph/randtree | Random tree [] | 
| graph/shortpath | Shortest path of a graph [] | 
| Output | |
|---|---|
| graphpaper/correct_milli | Graphic paper sheet with red correct plot preloaded [] | 
| graphpaper/func | One function plot, ready to append to a previously made graph paper [] | 
| graphpaper/func_milli | Graphic paper sheet with function plot and red correct plot preloaded [] | 
| graphpaper/imgpoints | Utility for a clickable graphic paper sheet [] | 
| graphpaper/millimetre | Graphic paper sheet [] | 
| graphpaper/strings | Prepare strings to be written on a graphic paper sheet [] | 
| graphpaper/tograph | Utility for a clickable graphic paper sheet [] | 
| graphpaper/whereclick | Utility for a clickable graphic paper sheet [] | 
| Output | |
|---|---|
| lang/enword2ipa | IPA transcription of english words [] | 
| lang/epd2ipa | IPA transcription according to epd ascii codage (for english) [] | 
| lang/fname | A random firstname [] | 
| lang/fraccord | Accord of French adjectives and names [] | 
| lang/frapostrophe | Apostrophe reduction of a French text [] | 
| lang/frartdef | Transform a French noun into definite form [] | 
| lang/frcodcoi | Find a random complement of a French verb [] | 
| lang/frverbconj | The conjugation of a French verb [] | 
| lang/images | Images in some datamodule [] | 
| lang/itdetermart | Italian "articolo determinativo" [] | 
| lang/randomword | Output random words in the dictionary [] | 
| lang/sampa2ipa | IPA transcription according to Sampa Ascii codage (for english) [] | 
| lang/swac | Insertion of words (audio) from the swac packs [] | 
| Output | |
|---|---|
| life/frcommodity | Give a random commodity with given price, French [] | 
| Output | |
|---|---|
| list/selshuf | Selective shuffle [] | 
| Output | |
|---|---|
| matrix/concate | concatenation [] | 
| matrix/det | The determinant of a square matrix [] | 
| matrix/givenrank | Generates a random matrix of given rank [] | 
| matrix/inverse | The inverse of a square matrix [] | 
| matrix/invertible | Generates a random invertible matrix [] | 
| matrix/itriangular | Generates a random invertible triangular matrix [] | 
| matrix/non0 | Generates a random matrix with non-zero coefficients [] | 
| matrix/orthogonal | Generates a random orthogonal matrix [] | 
| matrix/random | Generates a random matrix [] | 
| matrix/trace | The trace of a square matrix [] | 
| matrix/transpose | The transpose of a matrix [] | 
| matrix/triangular | Generates a random triangular matrix [] | 
| matrix/unimodular | Generates a random unimodular matrix [] | 
| Output | |
|---|---|
| media/audio | Audio insertion [] | 
| media/dewplayer | Audio insertion with dewplayer [] | 
| media/player | Audio insertion with hbs_mp3_player [] | 
| media/player_mp3_multi | Audio insertion with player_mp3_multi [] | 
| media/video | Video insertion [] | 
| Output | |
|---|---|
| nuclear/nucleide | Data about nucleides, or LaTeX typesetting [] | 
| nuclear/reaction | Typesetting nuclear reactions from plain text formulas [] | 
| Output | |
|---|---|
| numeration/babylonien | Ecriture Babylonienne d'un nombre entier [] | 
| numeration/baseblock | Base blocks in numeration [] | 
| numeration/basep | Passage de la base dix vers la base p. [] | 
| numeration/ecriturelettre | Writing of a number in letters. [] | 
| numeration/ecriturenombre | Writing a number with grouping the numbers by three. [] | 
| numeration/egyptien | Ecriture Egyptienne d'un nombre entier [] | 
| numeration/rational | Repeating decimal of a rational [] | 
| numeration/romain | Numération romaine [] | 
| Output | |
|---|---|
| oef/blank | Blank [] | 
| oef/codelim | OEF code length limit register [] | 
| oef/codename | Register OEF code reply name allow/deny [] | 
| oef/env | Get an OEF environment variable [] | 
| oef/insfilename | Output the file name of the last insert [] | 
| oef/newfile | Save a text in a file [] | 
| oef/postsrc | OEF code input postpender [] | 
| oef/presrc | OEF code input prepender [] | 
| oef/sortorder | Sort order [] | 
| Output | |
|---|---|
| polynomial/random | Random polynomial [] | 
| Output | |
|---|---|
| set/subset | Subsets of a set [] | 
| Output | |
|---|---|
| stat/1d | Computes 1-dimensional statistical data [] | 
| stat/arithmean | Arithmetic mean of statistical data [] | 
| stat/beta | Generation of beta random data [] | 
| stat/betacdf | Cumulative distribution function of a Beta law [] | 
| stat/betainv | Quantiles of a Beta law [] | 
| stat/betapdf | Probability density function of a Beta law [] | 
| stat/binomial | Generation of binomial random data [] | 
| stat/binomialcdf | cumulative distribution function of Binomial law [] | 
| stat/binomialinv | Quantile of Binomial law [] | 
| stat/binomialpdf | Probability density function of the binomial law [] | 
| stat/boxplot | Box plot [] | 
| stat/cauchy | Generation of Cauchy random data [] | 
| stat/cauchycdf | Cumulative distribution function of Cauchy law [] | 
| stat/cauchyinv | Quantile of Cauchy law [] | 
| stat/cauchypdf | Probability density function of Cauchy law [] | 
| stat/chi2 | Generation of chi-square random data [] | 
| stat/chi2cdf | Chi-square cumulative distribution function [] | 
| stat/chi2inv | Quantile of a chi-square distribution [] | 
| stat/chi2pdf | Chi-square probability density function [] | 
| stat/correlation | Matrix of correlation [] | 
| stat/covariance | Matrix of covariance [] | 
| stat/deviation | Deviation of statistical data [] | 
| stat/discretelaw | Generation of a discrete law with nonnegative coefficients [] | 
| stat/effectif | Effectifs of statistical series in classes [] | 
| stat/empiric | Generation of random numbers with a discrete law [] | 
| stat/exponential | Generation of exponential random numbers [] | 
| stat/exponentialcdf | Cumulative distribution function of exponential law [] | 
| stat/exponentialinv | Quantile of exponential law [] | 
| stat/exponentialpdf | Probability density function of exponential law [] | 
| stat/fisher | Generation of Fisher random data [] | 
| stat/fishercdf | Fisher cumulative distribution function. [] | 
| stat/fisherinv | Quantiles of a Fisher law (also called F-distribution) [] | 
| stat/fisherpdf | Fisher probability density function [] | 
| stat/freq | Frequencies of statistical data [] | 
| stat/gamma | Generation of Gamma random data [] | 
| stat/gammacdf | Cumulative distribution function of Gamma law [] | 
| stat/gammainv | Quantile of a Gamma distribution [] | 
| stat/gammapdf | Gamma probability density function [] | 
| stat/geomean | Geometric mean of data [] | 
| stat/geometric | Generation of random data with a Geometric distribution on N [] | 
| stat/geometric1 | Generation of random data with a Geometric distribution on N* [] | 
| stat/geometric1cdf | Cumulative distribution function of a Geometric distribution on N* [] | 
| stat/geometric1inv | Quantiles of a Geometric law on N* [] | 
| stat/geometric1pdf | Probability density function of a Geometric law on N* [] | 
| stat/geometriccdf | Cumulative distribution function of a Geometric law on N [] | 
| stat/geometricinv | Quantiles of a Geometric law on N [] | 
| stat/geometricpdf | Probability density function of geometric law on N [] | 
| stat/harmonic | Harmonic mean of statistical data [] | 
| stat/histo | Histogram [] | 
| stat/hypergeometric | Generation of Hypergeometric random data [] | 
| stat/hypergeometriccdf | Cumulative distribution function of a hypergeometric law [] | 
| stat/hypergeometricinv | Quantile of hypergeometric law inverse [] | 
| stat/hypergeometricpdf | Probability density function of a Hypergeometric law [] | 
| stat/laplace | Generation of Laplace random data [] | 
| stat/laplacecdf | Laplace cumulative distribution function [] | 
| stat/laplaceinv | Quantiles of the Laplace law [] | 
| stat/laplacepdf | Laplace probability density function [] | 
| stat/linearcong | Generation of linear congruential random integers [] | 
| stat/logistic | Generation of logistic random data [] | 
| stat/logisticcdf | Logistic cumulative distribution function [] | 
| stat/logisticinv | Quantile of the logistic law [] | 
| stat/logisticpdf | Probability density function of the logistic law [] | 
| stat/lognormal | Generation of lognormal random data [] | 
| stat/lognormalcdf | Cumulative distribution function of log-normal law [] | 
| stat/lognormalinv | Quantile of log-normal law [] | 
| stat/lognormalpdf | Probability density function of log-normal law [] | 
| stat/median | Data median [] | 
| stat/multinomial | Generation of multinomial random data [] | 
| stat/nbin | Generation of Negative binomial random data [] | 
| stat/nbincdf | Cumulative distribution function of the Negative Binomial law [] | 
| stat/nbininv | Quantile of a Negative Binomial law. [] | 
| stat/nbinpdf | Probability density function of a Negative Binomial law [] | 
| stat/normal | Generation of Gaussian random data [] | 
| stat/normalcdf | Cumulative distribution function of the normal distribution [] | 
| stat/normalinv | Quantile of the normal law [] | 
| stat/normalpdf | Probability density function of the normal law [] | 
| stat/pascal | Generation of Pascal random data [] | 
| stat/pascalcdf | Cumulative distribution function of the Pascal law [] | 
| stat/pascalinv | Quantile of a Pascal law. [] | 
| stat/pascalpdf | Probability density function of a Pascal law [] | 
| stat/piechart | Pie chart [] | 
| stat/poisson | Generation of random numbers with Poisson law [] | 
| stat/poissoncdf | Poisson cumulative distribution function [] | 
| stat/poissoninv | Quantile of a Poisson law [] | 
| stat/poissonpdf | Probability density function of a Poisson law [] | 
| stat/posdiscretelaw | Generation of a discrete law with positive coefficients [] | 
| stat/prod | Product of data [] | 
| stat/quadratic | Quadratic mean [] | 
| stat/quantile | Quantile [] | 
| stat/random | Generation of random numbers [] | 
| stat/range | Data range [] | 
| stat/student | Generation of Student random data [] | 
| stat/studentcdf | Student cumulative distribution function [] | 
| stat/studentinv | Quantile of a Student law [] | 
| stat/studentpdf | Probability density function of a Student law [] | 
| stat/sum | Data sum [] | 
| stat/variance | Variance [] | 
| stat/weibull | Generation of Weibull random data [] | 
| stat/weibullcdf | Cumulative distribution function of Weibull law [] | 
| stat/weibullinv | Quantile of Weibull law [] | 
| stat/weibullpdf | Probability density function of Weibull law [] | 
| Output | |
|---|---|
| text/approximation | Calculate an approximation interval for a given real [] | 
| text/balloon | Talking Balloons (Cartoon style) [] | 
| text/cdecomment | Extract comment from a c source code. [] | 
| text/comblin | Simplify a linear combination [] | 
| text/crossword | Crossword [] | 
| text/cutchoice2 | Cut out embedded choices for OEF [] | 
| text/cutchoices | Cut out embedded choices for OEF [] | 
| text/markerror | For marking words with mistake [] | 
| text/markgroup | For marking group of words with given explanation [] | 
| text/marktext | Texte for use with type mark for OEF (word) [] | 
| text/marktextpartial | For marking some words with given explanation [] | 
| text/markword | For use with type mark in OEF [] | 
| text/matrixhtml | Transform a matrix into html matrix (table). [] | 
| text/matrixinsert | Insert a coefficient in a matrix [] | 
| text/matrixtex | Matrix in Latex [] | 
| text/maximamatrix | Transform a matrix to maxima format [] | 
| text/octavematrix | Transform an octave output matrix into standard format [] | 
| text/sigunits | Make a representation of a physical quantity with a given number of significative digits [] | 
| text/spirale | Write on a spirale [] | 
| text/whitespace | Replace white spaces [] | 
| Output | |
|---|---|
| triplerelation/tabular | Double entry table for training to relations between three quantities [] | 
| Output | |
|---|---|
| utilities/date | Date [] | 
| utilities/mathcalc | Mathcalc [] | 
| utilities/nopaste | No copy-paste [] | 
| utilities/notepad | Notepad [] | 
| utilities/tooltip | Tooltip containing an html text which appears when the mouse points on a word. [] | 
| utilities/trigo-calc | Inline Trigonometric calculator [] | 
Each command takes one line.
In the following table, [color] may be either a color name, or 3 integers between 0 and 255, separated by commas, for the values of red,green,blue.
| - | ||||
|---|---|---|---|---|
| Synonymes | ||||
| affine a,b,c,d,tx,ty | ||||
| Make an affine transformation for the subsequent objects: (x;y) -> [a,b;c,d](x;y)+(tx;ty). | ||||
| alt texte | ||||
| This command is only available for WIMS OEF and doc and MUST appear on the first line. It gives the attribut alt="text" to the image. | ||||
| animate fra,del,rep | ||||
|  This command is only available for WIMS OEF and doc, and MUST appear on the first line or after the command alt. Set up animation for fra frames, with del seconds between frames, and rep repetitions (rep=0 means infinite repetition). Frame control is done via two variables: animstep (integer) going from 1 to frame count, and s going from 0 to 1.  | ||||
| animstep n | ||||
| Set up an integer which can be called in any evaluation. Used for animation. Direct use of this command must be avoided under WIMS. | ||||
| arc x,y,w,h,a1,a2,[color] | ||||
| Arc segment of an ellipse of width w and hight h centered at (x,y), from angle a1 to angle a2 (in degrees) counterclockwise. It is recommended to take x to ensure compatibility with canvasdraw. | ||||
| arrow x1,y1,x2,y2,l,[color] | ||||
| Arrow (x1,y1)--->(x2,y2), where l is the length (in pixels) of arrowhead. | ||||
| arrow2 x1,y1,x2,y2,l,[color] | ||||
| Two sided arrow (x1,y1)<--->(x2,y2), where l is the length (in pixels) of arrowhead. | ||||
| arrows [color],l,x1,y1,x2,y2,x3,y3,x4,y4,... | ||||
| Arrow (x1,y1)--->(x2,y2), (x3;y3)--->(x4;y4) where l is the length (in pixels) of arrowhead. | ||||
| arrows2 [color],l,x1,y1,x2,y2,x3,y3,x4,y4,... | ||||
| Two sided arrow (x1,y1)<--->(x2,y2), (x3;y3)<--->(x4;y4) where l is the length (in pixels) of arrowhead. | ||||
| circle x,y,r,[color] | ||||
| Circle of center (x,y) and radius r (in pixels). | ||||
| circles [color],x1,y1,r1,x2,y2,r2 ... | ||||
| Circles of center (x1;y1) and radius r1 (according to xrange) ... | ||||
| comment | ||||
| Does nothing. | ||||
| copy x,y,x1,y1,x2,y2,[filename] | ||||
| insert | Insert the region from (x1,y1) to (x2,y2) (in pixels) of [filename] to (x,y). If x1=y1=x2=y2=-1, the whole [filename] is copied. [filename] is the address of the file from the directory wims/public_html/gifs or from the directory common_images for OEF modules. | |||
| copyresized x1,y1,x2,y2,dx1,dy1,dx2,dy2,[filename] | ||||
| Insert the region from (x1,y1) to (x2,y2) (in pixels) of [filename], possibly resized, to the region of (dx1,dy1) to (dx2,dy2). If x1=y1=x2=y2=-1, the whole [filename] is copied and resized. | ||||
| crosshair x1,y1,[color] | ||||
| draw a crosshair point at (x1,y1) | ||||
| crosshairs [color], x1,y1,x2,y2,... | ||||
| draw multiple crosshair points at given coordinates (x1,y1), (x2,y2), ... | ||||
| crosshairsize w | ||||
| Set crosshair size to w (in pixels). | ||||
| dashed | ||||
| Keyword: Indique que la commande suivante est en pointillés si cette possibilité existe pour cette commande. | ||||
| dashhalfline x1,y1,x2,y2,[color] | ||||
| Dashed halfline from (x1;y1) through (x2; y2). | ||||
| darrow x1,y1,x2,y2,l,[color] | ||||
| dasharrow dashedarrow | Dashed arrow (x1,y1)- - ->(x2,y2), where l is the length (in pixels) of arrowhead. | |||
| darrow2 x1,y1,x2,y2,l,[color] | ||||
| dasharrow2 dashedarrow2 | Two sided dashed arrow (x1,y1)<- - ->(x2,y2), where l is the length (in pixels) of arrowhead. | |||
| darrows [color],l,x1,y1,x2,y2,x3,y3,x4,y4,... | ||||
| Dashed arrow from (x1;y1) to (x2;y2), from(x3;y3 ) to (x4;y4) where l is the length (in pixels) of arrowhead. | ||||
| darrows2 [color],l,x1,y1,x2,y2,x3,y3,x4,y4,... | ||||
| Dashed arrow from (x1;y1) to (x2;y2), from(x3;y3 ) to (x4;y4) where l is the length (in pixels) of the two arrowheads. | ||||
| dashhalfline x1,y1,x2,y2,[color] | ||||
| Halfline from (x1; y1) through (x2; y2). | ||||
| dhline x,y,[color] | ||||
| dashedhorizontalline dashhorizontalline hdline horizontaldashedline | Dashed horizontal line through (x,y). | |||
| diamondfill x,y,nx,ny,[color] | ||||
| diafill | Flood fill the region containing (x,y) with the same original color by double hatching (parallel lines), (nx,ny) being the horizontal and vertical distance between adjacent lines (in pixels). | |||
| dline x1,y1,x2,y2,[color] | ||||
| dashedline dashline | Dashed line through (x1; y1) et (x2; y2). | |||
| dlines [color],x1,y1,x2,y2,x3,y3... | ||||
| dashedlines dashlines | Dashed line through (x1;y1) and (x2;y2), (x3;y3) and (x4;y4) etc. | |||
| dpolyline [color],x1,y1,x2,y2,x3,y3... | ||||
| n dashed line segments (x1,y1)---(x2,y2)---(x3,y3)... | ||||
| dotfill x,y,nx,ny,[color] | ||||
| pointfill diskfill | Flood fill the region containing (x,y) with the same original color by (fat) dots at each (nx,ny) pixels. | |||
| dsegment x1,y1,x2,y2,[color] | ||||
| dashsegment | Dashed line segment (x1,y1)---(x2,y2). | |||
| dvline x,y,[color] | ||||
| dashedverticaline dashverticalline vdline verticaldashedline | Dashed vertical line through (x,y). | |||
| ellipse x,y,w,h,[color] | ||||
| Ellipse with center (x,y), width w and height h. | ||||
| ellipses [color],x1,y1,w1,h1,x2,y2,w2,h2,... | ||||
| Ellipse with center (x1,y1), width w1 and height h1 etc. | ||||
| fcircle x,y,d,[color] | ||||
| ball disk filledcircle | Filled circle of center (x,y) and diameter d (in pixels). | |||
| fcircles [color],x1,y1,r1,x2,y2,r2 ... | ||||
| Filled circles of center (x1;y1) and radius r1 (according to xrange) ... | ||||
| fellipse x,y,w,h,[color] | ||||
| filledellipse | Filled ellipse with center (x,y), width w and height h. | |||
| fhypcircles [color],x1,y1,r2,x2,y2,r2,... | ||||
| Filled hyperbolic circles of hyperbolic center (x1;y1) and hyperbolic radius r1 (according to xrange) ... | ||||
| fhyppolygon [color],x1,y1,x2,y2,x3,y3,... | ||||
| Filled hyperbolic polygon in Poincaré disk with vertices (x1; y1), (x2; y2), (x3; y3),... (géométrie hyperbolique) et rempli avec la couleur color. | ||||
| fhyptriangle x1,y1,x2,y2,x3,y3,[color] | ||||
| Filled hyperbolic triangle in Poincaré disk with vertices (x1; y1), (x2; y2), (x3; y3) | ||||
| fill x,y,[color] | ||||
| flood floodfill | Flood fill the region containing (x,y) with the same original color, by color. | |||
| filled | ||||
| Keyword: means that the following object will be filled with color, if it makes sense | ||||
| filltoborder x,y,[color1],[color2] | ||||
| Flood fill by color2 the region containing (x,y) and bounded by color1. | ||||
| fpoly [color],x1,y1,x2,y2,x3,y3... | ||||
| filledpoly filledpolygon fpolygon | Filled polygon (x1,y1)--(x2,y2)--(x3,y3)... | |||
| frect x1,y1,x2,y2,[color] | ||||
| filledrect fillecrectangle frectangle | Filled rectangle with corners (x1,y1) and (x2,y2). | |||
| fsquare x,y,s,[color] | ||||
| filledsquare | Filled square with sides s (in pixels) and first corner at (x,y). | |||
| ftriangle x1,y1,x2,y2,x3,y3,[color] | ||||
| filledtriangle | Filled triangle with vertices (x1,y1),(x2,y2),(x3,y3). | |||
| gridfill x,y,nx,ny,[color] | ||||
| Flood fill the region containing (x,y) with the same original color by a grid of horizontal and vertical lines with distance (nx,ny) (in pixels). | ||||
| halfline x1,y1,x2,y2,[color] | ||||
| Halfline from (x1; y1) through (x2; y2). | ||||
| hatchfill x,y,nx,ny,[color] | ||||
| Flood fill the region containing (x,y) with the same original color by hatching (parallel lines), (nx,ny) being the horizontal and vertical displacement of adjacent lines (in pixels). | ||||
| hline x,y,[color] | ||||
| horizontalline | Horizontal line through (x,y). | |||
| hypcircles [color],x1,y1,r2,x2,y2,r2,... | ||||
| Hyperbolic circles of hyperbolic center (x1;y1) and hyperbolic radius r1 (according to xrange) ... | ||||
| hyplines [color],x1,y1,x2,y2,x3,y3,x4,y4, ... | ||||
| Hyperbolic lines in Poincaré disk through (x1; y1) and (x2; y2), (x3; y3) and (x4; y4), ... | ||||
| hyppolygon [color],x1,y1,x2,y2,x3,y3,... | ||||
| Hyperbolic polygon in Poincaré disk (x1,y1)-(x2,y2)-(x3,y3)... in Poincaré disk | ||||
| hyprays [color],x0,y0,x1,y1,x2,y2,x3,y3,x4,y4, ... | ||||
| hyperbolic segments (x0,y0)---(x1,y1), (x0,y0)---(x2,y2), ... | ||||
| hypsegments [color],x1,y1,x2,y2,x3,y3,x4,y4, ... | ||||
| Hyperbolic segments in Poincaré disk between (x1; y1) and (x2; y2), (x3; y3) and (x4; y4), etc | ||||
| hyptriangle x1,y1,x2,y2,x3,y3,[color] | ||||
| Hyperbolic triangle with vertices (x1; y1), (x2; y2), (x3; y3) | ||||
| interlace | ||||
| Set interlaced image | ||||
| killaffine | ||||
| Reset affine transformation to identity. | ||||
| killbrush | ||||
| Turns off brush selection for line drawing. | ||||
| killlinear | ||||
| killrotation killrotate | Reset linear transformation to identity. | |||
| killtile | ||||
| Turns off tile selection for filling. | ||||
| killtranslation | ||||
| killtranslate | Reset translation to identity. | |||
| lattice x0,y0,x1,y1,x2,y2,n1,n2,[color] | ||||
| A lattice of n1xn2 points starting with (x0,y0), with n1 rows in direction of (x1,y1) and n2 rows in direction of (x2,y2). | ||||
| levelcurve [color],[expression],l1,l2,... | ||||
| Draws level curves for expression, with levels l1, l2,... | ||||
| levelstep n | ||||
| Set the number of pixel steps in levelcurve plotting. Between 1 and 16, defaults to 4. | ||||
| lines [color],x1,y1,x2,y2,x3,y3,x4,y4, ... | ||||
| Lines through the points (x1; y1) and (x2; y2), (x3; y3) and (x4; y4), etc | ||||
| linear a,b,c,d | ||||
| Make a linear transformation for the subsequent objects: (x;y) -> [a,b;c,d](x;y). | ||||
| linewidth w | ||||
| Set line width to w (in pixels) for line drawing. | ||||
| multicopy n1,n2,...,nk, [filename] | ||||
| Copy the image [filename] in the parallelogram given by parallelogram command (with deformation) and apply to it the transformations n_1, ..., n_k (up to 19). If no n1 ... are given, all the transformations are applied. So setparallelogram and some setvector or setmatrix or settransform must be previously defined. | ||||
| new x,y | ||||
| Set a new image of size x,y. | ||||
| noreset | ||||
| keyword: if it is followed by dashed or filled, the following commands are dashed or filled, up to the command reset | ||||
| output [filename] | ||||
| Output the current image to [filename]. | ||||
| parallel x1,y1,x2,y2,xv,yv,n,[color] | ||||
| n parallel segments starting from (x1,y1)---(x2,y2), with displacement (xv,yv). | ||||
| pixels [color],x1,y1,x2,y2,... | ||||
| Points (all of diameter 1) at (x1,y1), (x2,y2), ... | ||||
| plot [color],[formula] | ||||
| curve | Plot a curve according to [formula] which can be either an explicit function of x, or a pair of parametric functions in t. | |||
| plotjump j | ||||
| Plotted curve will jump if two consecutive points have distance more than j pixels. Useful to avoid plotting discontinuous functions as continuous. Default value: 200. | ||||
| plotstep n | ||||
| plotsteps tstep tsteps | Set the number of point computations in curve plot. Defaults to 100. | |||
| point x,y,[color] | ||||
| A (fat) point at (x,y), whose diameter is equal to linewidth. | ||||
| points [color],x1,y1,x2,y2,... | ||||
| (Fat) points at (x1,y1), (x2,y2), ..., whose diameters are equal to linewidth. | ||||
| polygon [color],x1,y1,x2,y2,x3,y3... | ||||
| poly | Polygon (x1,y1)-(x2,y2)-(x3,y3)... | |||
| polyline [color],x1,y1,x2,y2,x3,y3... | ||||
| brokenline | n line segments (x1,y1)---(x2,y2)---(x3,y3)... | |||
| range x1,x2,y1,y2 | ||||
| Set the drawing range to [x1,x2] horizontally and [y1,y2] vertically. Note that by default, horizontal range is [0,xsize-1] and vertical range is [ysize-1,0]. | ||||
| rays [color],x0,y0,x1,y1,x2,y2... | ||||
| Line segments (x0,y0)---(x1,y1), (x0,y0)---(x2,y2), ... | ||||
| rect x1,y1,x2,y2,[color] | ||||
| rectangle | Rectangle with corners (x1,y1) and (x2,y2). | |||
| reset | ||||
| Keyword: reset the command "noreset" | ||||
| resetmatrix n | ||||
| Reset n-th linear or affine transformation to identity. | ||||
| resetparallelogram | ||||
| kill setparallelogram | ||||
| resetvector n | ||||
| Reset n-th translation to identity. | ||||
| resettransform n | ||||
| Reset n-th linear, affine transformation and n-th translation to initial values (identity or null vector). | ||||
| rotation d | ||||
| rotate | Make a rotation of degree d counter-clockwise (centered at (0,0)), for the subsequent objects. | |||
| segment x1,y1,x2,y2,[color] | ||||
| seg | Line segment (x1,y1)---(x2,y2). | |||
| segments [color],x1,y1,x2,y2,x3,y3,x4,y4, ... | ||||
| Line segments (x1; y1)---(x2; y2), (x3; y3)---(x4; y4), ... | ||||
| setbrush [filename] | ||||
| Use the image [filename] as a brush for all line draws. | ||||
| setmatrix n,a,b,c,d | ||||
| Make the n-th linear transformation for multicopy objects: (x;y) -> [a,b;c,d](x;y). | ||||
| setparallelogram xs,ys,xu,yu,xv,yv | ||||
| Prepare the place where the image will be copied by multicopy (mathematical coordinates) : xs,ys mathematical coordinates of the origin point, xu,yu mathematical coordinates of the "horizontal line of the image" to copy, xv,yv mathematical coordinates of the "verticale line of the image" to copy. | ||||
| setpixel x,y,[color] | ||||
| A point (of diameter 1 pixel) at (x,y). | ||||
| setstyle [color1],[color2],... | ||||
| Set the line style to color1,color2,... | ||||
| settile [filename] | ||||
| Use the image [filename] as a tile for all filling commands. | ||||
| settransform n,a,b,c,d,tx,ty | ||||
| Make the n-th linear transformation for multicopy objects: (x;y) -> [a,b;c,d](x;y) + (tx;ty). (settransform n,a,b,c,d,tx,ty is equivalent to setmatrix n,a,b,c,d and setvector n,tx,ty, so it kills a previous definition setmatrix n,a,b,c,d with the same number n). | ||||
| setvector n,tx,ty | ||||
| Make the n-th translation for multicopy objects: (x;y) -> (tx,ty). | ||||
| size x,y | ||||
| Set the image size to x pixels horizontally and y pixels vertically. | ||||
| square x,y,s,[color] | ||||
| Square with sides s (in pixels) and first corner at (x,y). | ||||
| text [color],x,y,[font],[string] | ||||
| print string write | Write the string at (x,y), with font=small,medium,large or giant. | |||
| textup [color],x,y,[font],[string] | ||||
| stringup writeup | Write upwards the string at (x,y), with font=small,medium,large or giant. | |||
| trange t1,t2 | ||||
| ranget | Set the t range to [t1,t2] for parametric curve plotting. Defaults to [0,1]. | |||
| translation tx,ty | ||||
| translate | Make a translation for the subsequent objects: (x;y) -> (x;y)+(tx;ty). | |||
| transparent [color] | ||||
| Makes [color] a transparent color. | ||||
| triangle x1,y1,x2,y2,x3,y3,[color] | ||||
| Triangle with vertices (x1,y1),(x2,y2),(x3,y3). | ||||
| vimg n | ||||
| Enable (1) or disable (0) vector graphics output. | ||||
| vimgfile [filename] | ||||
| Direct vector graphics output (currently DXF only) to [filename]. | ||||
| vline x,y,[color] | ||||
| verticalline | Vertical line through (x,y). | |||
| xrange x1,x2 | ||||
| rangex | Set the horizontal drawing range to [x1,x2]. Defaults to [0,xsize-1]. | |||
| yrange y1,y2 | ||||
| rangey | Set the horizontal drawing range to [y1,y2]. Defaults to [ysize-1,0]. | |||
    \text{A=canvasdraw(xsize,ysize
    commande...)}
    
  
    \canvasdraw{xsize,ysize}{commande...}
    
    canvasdraw
        snaptopoints x1,y1,x2,y2,...snaptopoints x1,y1,x2,y2,...object x1,y1,...,colorobjects color,x1,y1,...fontfamily is not active for these elements.read_canvas() and / or read_dragdrop() can read all interactive userdata from these images.canvas_scriptswill contain all unique random "canvas_root_id" of the included scripts.fun = eval("read_canvas"+canvas_scripts[0]) to read user based drawings / inputfield in this first image.function read_all_canvas_images(){
 var script_len = canvas_scripts.length;
 var draw_reply = "";
 var found_result = false;
 for(var p = 0 ; p < script_len ; p++){
  var fun = eval("read_canvas"+canvas_scripts[p]);
  if( typeof fun === 'function'){
   var result = fun();
   if( result  && result.length != 0){
    if(script_len == 1 ){.return result;};
     found_result = true;
     draw_reply = draw_reply + result + "newline";
    };
   };
  };
 if( found_result ){return draw_reply;}else{return null;};
}; 	ext{popup_grapher=wims(exec canvasdraw 
popup
size 400,400
xrange -10,10
yrange -10,10
axis
axisnumbering
opacity 100,100
grid 2,2,grey,2,2,6,black
snaptogrid
linewidth 2
jsplot red,5*sin(1/x)
strokecolor green
functionlabel f(x)=
userinput function
mouse blue,22
)
}
\statement{
\popup_grapher
}.
  affine a,b,c,d,tx,ty
          duplicates || allowdups
          angle xc,yc,width,start_angle,end_angle,color
          animate
        fillcolor colorname/hexnumber
animate is allowed...in case of multiple animate keywords, only the last one is valid
  arc xc,yc,x-width,y-height,start_angle,end_angle,color
          arrowarc xc,yc,x-width,y-height,start_angle,end_angle,color,type
        arcarrow  arrow x1,y1,x2,y2,h,color
        vectorlinewidth int to adjust thickness of the arrow
  arrows color,head (px),x1,y1,x2,y2...x_n,y_n
        vectorslinewidth int to adjust thickness of the arrow
  arrow2 x1,y1,x2,y2,h,color
        arrowhead int to adjust the arrow head size
linewidth int to adjust thickness of the arrow
  arrows2 color,head (px),x1,y1,x2,y2...x_n,y_n
        linewidth int to adjust thickness of the arrows
  arrowhead int
          audio x,y,w,h,loop,visible,audiofile location
          axisnumbering
          axis
          barchart x_1:y_1:color_1:x_2:y_2:color_2:...x_n:y_n:color_n
          bezier color,x_start,y_start,x_first,y_first,x_second,y_second,x_end,y_end
          bgcolor colorname or #hex
          bgimage image_location
          blink time(seconds)
          boxplot x_or_y,box-height_or_box-width,position,min,Q1,median,Q3,max
        xrange 0,300
yrange 0,10
boxplot x,4,8,120,160,170,220,245xrange 0,10
yrange 0,300
boxplot y,4,8,120,160,170,220,245  boxplotdata some_data
        boxplot: the command boxplot will provide the boxplot drawing of the data.
statistics() will parse the data and calculate the values [min,Q1,median,Q3,max] and hand them to the boxplot draw function.
boxplotdata can be made. If multiple boxplots should be present in a single canvas, then use multiple calls to command boxplot
  canvastype TYPE
          centered
          centerstring color,y-value,the text string
        centerstring red,5,\u2232
fontfamily italic 24pt Arial to set fonts on browser that support font change
  circle xc,yc,width (2*r in pixels),color
        fcircle xc,yc,d,color
diskfillcolor color to set the fillcolor
  circles color,xc1,yc1,r1,xc2,yc2,r2...xc_n,yc_n,r_n
        filled or command fcircles to produce solid circles
disksfillcolor color to set the fillcolor
  clearbutton value
        deleteeraseclearbutton is incompatible with multidraw based drawingsmultidraw there is always a remove_object_button for every draw primitive)
intooltip
if(document.getElementById("clearbutton"+canvas_scripts[0])){
 var p = 0;
 while(document.getElementById("clearbutton"+canvas_scripts[p])){
  document.getElementById("clearbutton"+canvas_scripts[p]).className="some_class_name";
  <!−− or document.getElementById("clearbutton"+canvas_scripts[p]).setAttribute("style","some_style"); −−>
  p++;
 };
};
  clock x,y,r(px),H,M,S,type hourglass,interactive [ ,H_color,M_color,S_color,background_color,foreground_color ]
        opacity stroke-opacity,fill-opacity to adjust foreground (stroke) and background (fill) transparency
  colorpalette color_name_1,color_name_2,...,color_name_8
          copy x,y,x1,y1,x2,y2,[filename URL]
        snaptopoints x1,y1,x2,y2....
  copyresized x1,y2,x2,y2,dx1,dy1,dx2,dy2,image_file_url
        snaptopoints x1,y1,x2,y2...
  crosshair x,y,color
        crosshairsize int and / or linewidth int to adjust
  crosshairs color,x1,y1,x2,y2,...,x_n,y_n
        crosshairsize int and / or linewidth int to adjust
  crosshairsize int
          css css_class
          cursor some CSS cursor_style
        pointer  curve color,formula(x)
        plottrange -pi,pi
curve color,formula1(t),formula2(t)  curvedarrow x1,y1,xc,yc,x2,y2,color
        linewidth int to adjust thickness of the arrow
  curvedarrow2 x1,y1,xc,yc,x2,y2,color
        linewidth int to adjust thickness of the arrow
  curvedarrows color,x1,y1,xc,yc,x2,y2,...,x_(n-1),y_(n-1),xc,yc,x_n,y_n
        linewidth int to adjust thickness of the arrow
  curvedarrows2 color,x1,y1,xc,yc,x2,y2,...x_(n-1),y_(n-1),xc,yc,x_n,y_n
        linewidth int to adjust thickness of the arrow
  dashed
          dashtype line_width_px,space_width_px
        dashtype 2,2 e.g. 2px line and 2px space
  diamondfill x0,y0,dx,dy,color
          dotfill x0,y0,dx,dy,color
          drag [x][y][xy]
        javascript:read_dragdrop();
linewidth 4
point 0,0,red
drag xy
point 0,0,bluelinewidth 4
drag xy
point 0,0,red
drag xy
point 0,0,blue  ellipse xc,yc,width_x,height_y,color
          ellipses color,xc1,yc1,width_x1,height_y1,xc2,yc2,width_x2,height_y2,xc3,yc3,width_x3,height_y3,...
          fillall color,x1,y1,x2,y2...x_n,y_n
          filled
        opacity 0-255,0-255 to set stroke and fill-opacity
  fillcolor colorname or #hex
          fillpattern grid | hatch | diamond | dot | image_url
        settileimage_urlsize 370,370
xrange -5,5
yrange -5,5
opacity 165,150
fillpattern grid
circle -6,3,160,blue
fillpattern dot
circle -3,-3,160,red
fillpattern hatch
circle 0,3,160,green
fillpattern diamond
circle 3,-3,160,cyan
userdraw dotfill,blue
zoom red
size 150,150
xrange -5,5
yrange -5,5
drag xy
fillpattern gifs/en.gif
circle 0,0,100,red
fillpattern gifs/nl.gif
drag xy
circle -3,2,100,green
fillpattern gifs/cn.gif
drag xy
circle 3,2,100,green
  filltoborder x,y,bordercolor,color
          floodfill x,y,color
        filluserdraw clickfill,color for user click driven flood fill.
  fontcolor color
          fontfamily font_description
        string color,x,y,the string, stringup color,x,y,rotation,the string, fontfamily can be something like:fontfamily italic 34pt Arial. Use correct syntax: font style, font size pt, fontfamily
  fontsize font_size
          functionlabel label_1:label_2:label_3...
        functionlabels  grid step_x,step_y,gridcolor
        grid step_x,step_y,major_color,minor_x,minor_y,tics height in px,axis_color minor x step = step_x / minor_x
  gridfill x0,y0,dx,dy,color
          group
          demiline x1,y1,x2,y2,color
        halfline  demilines color,x1,y1,x2,y2,....
        halflines  hatchfill x0,y0,dx,dy,color
          hline x,y,color
        horizontalline  hlines color,x1,y1,x2,y2,...
        horizontallines  http x1,y1,x2,y2,http://some_adress.com
          html x1,y1,html_string
          imagefill x,y,scaling to xsize × ysize?,image_url
          imagepalette image1,image2,image3,...
          input x,y,size,editable,value
          intooltip link_text
          jscurve color,formula1(x),formula2(x),formula3(x),...
        jsplotsqrt,^,asin,acos,atan,log,pi,abs,sin,cos,tan,e
jscurve red,fun1(x),fun2(x)...fun_n(x), you must specify individual multistrokecolors & multistrokeopacity & multilinewidth for these multiple js-curves to use different colors. Otherwise all curves will be the same color... Use commands like: multistrokecolors, multilinewidth, multidash, multistroke, color given for the command jscurve color,formulas(x) will not be used in that case... but the color argument must still be given in any case (otherwise syntax error...)
  jsmath some_math_function
          kill arguments
          killaffine
          killlinear
          killrotate
          killslider
          killtranslation
        killtranslate  latex x,y,tex string
        mathjavascript:read_dragdrop(); will return click numbers of mathml-objectsjavascript:read_dragdrop(); will return all coordinates in the same order as the canvas script: unmoved object will have their original coordinates...
javascript:read_mathml();. attention: if after this mathml-input object other user-interactions are included, these will read mathml too using "read_canvas();"
  lattice x0,y0,xv1,yv1,xv2,yv2,n1,n2,color
          linear a,b,c,d
          line x1,y1,x2,y2,color
          lines color,x1,y1,x2,y2...x_n-1,y_n-1,x_n,y_n
          linewidth int
          levelcurve color,expression in x/y,l1,l2,...
          legend string1:string2:string3....string_n
          legendcolors color1:color2:color3:...:color_n
        legend test1:test2:test3
legendcolors blue:red:orange.
  linegraph x1:y1:x2:y2...x_n:y_n
          mathml x1,y1,mathml_string
        javascript:read_dragdrop(); will return click numbers of mathml-objects; if 4 clickable object are drawn, the reply could be 1,0,1,0 ... meaning clicked on the first and third object
javascript:read_dragdrop() will return all coordinates in same order as the canvas script: unmoved objects will have their original coordinates...
  mouse color,fontsize
          mouse_degree color,fontsize
          display TYPE,color,fontsize
        userdraw arc,color or protractor, ruler (if set dynamic).
  precision int
          mousex color,fontsize
          mousey color,fontsize
          multidash 0,1,1
        multifill points,circle,segments, are dashed
dashtype line_px,space_px will give no control over multidraw objects)
  multidraw obj_type_1,obj_type_2...obj_type_11
        multilabel cirkel,lijnstuk,punten,STOP
multidraw circle,segment,pointsread_canvas%d will read all userbased drawings.multiuserinput 1 for images) if not used with imagepalette, provide the images or div's (<img> tag with bitmap or SVG or anything in a div element) somewhere on the html exercise page, with an onclick handler like:<img src='gifs/images/dog.svg' onclick='javascript:place_image_on_canvas(this.id);' id="ext_image_1" />
<img src='gifs/fish.png' onclick='javascript:place_image_on_canvas(this.id);' id="another" /><input type='button' onclick='javascript:userdraw_primitive=null' value='STOP DRAWING' />
<input type='button' onclick='javascript:userdraw_primitive=24;multidraw_object_cnt = 0;' value='start drawing curvedarrows2' /> 
<input type='button' onclick='javascript:var fun=eval("clear_draw_area"+canvas_scripts[0]);fun(24,0);' value='REMOVE LAST CURVEDARROW ' />   multilabel button_label_1,button_label_2,...,button_label_8,'stop drawing text'
        multilabel punten,lijnen,Stop met Tekenen
multidraw points,lines
cssmultilabel NOCONTROLS
  multilinewidth linewidth_1,linewidth_2,...,linewidth_8
        multidraw obj_type_1,obj_type_2...obj_type_7
  multifill 0,0,1,0,1,0,0
        filled was given before command multifill
  multifillcolors color_name_1,color_name_2,...,color_name_8
        multidraw obj_type_1,obj_type_2...obj_type_n
  multifillopacity fill_opacity_1,fill_opacity_2,...,fill_opacity_8
        opacity int,int and keyword filled
multidraw obj_type_1,obj_type_2...obj_type_y
  multisnaptogrid 0,1,1
        multisnapmultifill points,circle,segments, will snap to the xy-grid (default 1 in x/y-coordinate system: see command snaptogrid)
multisnaptogrid 1,1,1,...
multisnaptogrid 1,1,1,...
multisnaptogrid 2,2,2,...
multisnaptogrid 3,3,3,...
multisnaptogrid 4,4,4,... multisnaptogrid 0,1,2,3,4
multidraw text,arrow,line,circle,image  multistrokecolors color_name_1,color_name_2,...,color_name_8
        multidraw obj_type_1,obj_type_2...obj_type_7
  multistrokeopacity stroke_opacity_1,stroke_opacity_2,...,stroke_opacity_7
        opacity int,int
multidraw obj_type_1,obj_type_2...obj_type_7
  multiuserinput 0,1,1,0
        multiinputmultidraw circles,points,lines,triangles  noreset
        killreset  noxaxis
          noyaxis
          numberline x0,x1,xmajor,xminor,y0,y1
          obabel x,y,type input,molecule smiles-code or file location, extra arguments,extra arguments,...
        javascript:read_dragdrop(); will return click numbers of mathml-objectsjavascript:read_dragdrop(); will return all coordinates in the same order as the canvas script: unmoved object will have their original coordinates...
  opacity [0-255],[0-255]
        transparent  strokeopacity [0-255]
          fillopacity [0-255]
          onclick
        javascript:read_canvas();
  parallel x1,y1,x2,y2,dx,dy,n,[colorname or #hexcolor]
          plotsteps a_number
          point x,y,color
        linewidth int to adjust size
circle x,y,r,color will resize on zooming)
  points color,x1,y1,x2,y2,...,x_n,y_n
        linewidth int to adjust size
  poly color,x1,y1,x2,y2...x_n,y_n
          polyline color,x1,y1,x2,y2...x_n,y_n
        polyline, x1,y1,x2,y2...x_n,y_n
userdraw path(s),color and userdraw polyline,color... these are two entirely different things ! the path(s) userdraw commands may be used for freehand drawing(s)  popup
        size xsize,ysize the canvas will also be displayed in a popup window with size xsize × ysize
 function read_all(){
 if( typeof popup !== 'undefined' ){
 var fun1 = popup['read_dragdrop'+canvas_scripts[0]];
var fun2 = popup['read_canvas'+canvas_scripts[0]];
 popup.close();
 return "dragdrop="+fun1()+"
canvas="+fun2();
 };
popup.set_clock(clock_id,type,diff); as js-function for a button (or something else) in your document page.  protractor x,y,x_width,type,mode,use_a_scale
        snap_to_grid may be used to assist the pupil at placing the protractor
  pixels color,x1,y1,x2,y2,x3,y3...
        pixelsize int
  pixelsize int
          piechart xc,yc,radius,'data+colorlist'
          range xmin,xmax,ymin,ymax
          rays color,xc,yc,x1,y1,x2,y2,x3,y3...x_n,y_n
          rect x1,y1,x2,y2,color
        frect x1,y1,x2,y2,color for a filled rectangle
rect x1,y1,x2,y2,color
  rects color,x1,y1,x2,y2,.....
        frect color,x1,y1,x2,y2,..... for a filled rectangle
rects color,x1,y1,x2,y2,....
fillcolor color before frects to set the fill color.
  replyformat number
        precision [0,1,10,100,1000,10000...] before command replyformat to set the desired number of decimals in the student reply / drawing
x1,x2,x3,x4....x_n
y1,y2,y3,y4....y_n x/y in pixels x1,x2,x3,x4....x_n
 y1,y2,y3,y4....y_n x/y in xrange / yrange coordinate system x1,x2,x3,x4....x_n
 y1,y2,y3,y4....y_n
 r1,r2,r3,r4....r_n x/y in pixels, r in pixels x1,x2,x3,x4....x_n
 y1,y2,y3,y4....y_n
 r1,r2,r3,r4....r_n x/y in xrange / yrange coordinate system, r in pixels Ax1,Ax2,Ax3,Ax4....Ax_n
 Ay1,Ay2,Ay3,Ay4....Ay_n
 Bx1,Bx2,Bx3,Bx4....Bx_n
 By1,By2,By3,By4....By_n
 Cx1,Cx2,Cx3,Cx4....Cx_n
 Cy1,Cy2,Cy3,Cy4....Cy_n
 ....
 Zx1,Zx2,Zx3,Zx4....Zx_n
 Zy1,Zy2,Zy3,Zy4....Zy_n x/y in pixels Ax1,Ax2,Ax3,Ax4....Ax_n
 Ay1,Ay2,Ay3,Ay4....Ay_n
 Bx1,Bx2,Bx3,Bx4....Bx_n
 By1,By2,By3,By4....By_n
 Cx1,Cx2,Cx3,Cx4....Cx_n
 Cy1,Cy2,Cy3,Cy4....Cy_n
 ....
 Zx1,Zx2,Zx3,Zx4....Zx_n
 Zy1,Zy2,Zy3,Zy4....Zy_n x/y in xrange / yrange coordinate system x1:y1,x2:y2,x3:y3,x4:y4...x_n:y_n x/y in pixels x1:y1,x2:y2,x3:y3,x4:y4...x_n:y_n x/y in xrange / yrange coordinate system x1:y1:r1,x2:y2:r2,x3:y3:r3,x4:y4:r3...x_n:y_n:r_n x/y in pixels x1:y1:r1,x2:y2:r2,x3:y3:r3,x4:y4:r3...x_n:y_n:r_n x/y in xrange / yrange coordinate system Ax1,Ay1,Ax2,Ay2
Bx1,By1,Bx2,By2
 Cx1,Cy1,Cx2,Cy2
 Dx1,Dy1,Dx2,Dy2
 ......
 Zx1,Zy1,Zx2,Zy2 x/y in xrange / yrange coordinate system Ax1,Ay1,Ax2,Ay2
 Bx1,By1,Bx2,By2
Cx1,Cy1,Cx2,Cy2
 Dx1,Dy1,Dx2,Dy2
 ......
 Zx1,Zy1,Zx2,Zy2 x/y in pixels Ax1:Ay1:Ax2:Ay2,Bx1:By1:Bx2:By2,Cx1:Cy1:Cx2:Cy2,Dx1:Dy1:Dx2:Dy2, ... ,Zx1:Zy1:Zx2:Zy2 x/y in xrange / yrange coordinate system Ax1:Ay1:Ax2:Ay2,Bx1:By1:Bx2:By2....Zx1:Zy1:Zx2:Zy2 x/y in pixelsreply1,reply2,reply3,...,reply_nx1,y1,text1 
 x2,y2,text2...
...x_n,y_n,text_n  x/y-values are in xrange/yrangeH1:M1:S1,H2:M2:S2...Hn:Mn:Sn (x1:y1) (x2:y2) ... (x_n:y_n) verbatim coordinate returnreply[0]=x1 reply[1]=y1 reply[2]=x2 reply[3]=y2 ... reply[n-1]=x_n reply[n]=y_n x/y in xrange / yrange coordinate systemx1,y1,x2,y2,x3,y3,.....x(n-1),y(n-1),xn,yn; multiple occurences will be filtered out. The reply will be in x-y-range (xreply 
 yreply) angle1,angle2;...;angle_n will return the radius (one or many) of the user drawn circle segment in degrees rad1,rad2,...rad_n will return the radius (one or many) of the user drawn circle segment in radiansx1,y1,text1
 x2,y2,text2...
...x_n,y_n,textn x1,y1,r1,x2,y2,r2...x_n,y_n,r_n x / y / r in xrange / yrange coordinate system: may be used to reinput into command circles color,x1,y1,r1,x2,y2,r2...x_n,y_n,r_n will not return anything else (e.g. no inputfields, text etc)read_canvas_images() for reading the coordinates of the images.  roundrect x1,y1,x2,y2,radius in px,color
        froundrect x1,y1,x2,y2,radius,color for a filled rectangle
roundrect x1,y1,x2,y2,radius,color
  roundrects color,radius in px,x1,y1,x2,y2,x3,y3,x4,y4,....
          ruler x,y,x-width,y-height,mode
          reset
          resetoffset
          rotate rotation_angle
        rotate 45
triangle 1,1,5,1,3,4,red  rotationcenter x_center,y_center
          size width,height
          segment x1,y1,x2,y2,color
        seg  segments color,x1,y1,x2,y2,...,x_n,y_n
        segs  setlimits
          setpixel x,y,color
        pixelsize int
  slider start_value,end_value,width px,height px,type,label
        sliderfunction_x x^2
sliderfunction_y y^2
slider -5,5,100,100,xy function,Some_Text
...some stuff to slide
killslider
sliderfunction_x x^2-2
slider -15,15,100,10,x function,Some_Other_Text
...more stuff to slide
killslider... etc
size 300,300
xrange -5,5
yrange -5,5
grid 1,1,grey
linewidth 3
drag xy
fillcolor orange
strokecolor blue
slider 0,2*pi,250,30,angle degrees,Rotate arrow
arrow 2,2,5,5,8,redjavascript:read_dragdrop(); will return an array with object_number:slider_value
  sgraph xstart,ystart,xmajor,ymajor,xminor,yminor,majorgrid_color,minorgrid_color
          snaptofunction some_function_in_x,some_funtion_in_y
        snaptofunsnaptofunction x,5*sin(1/y)
snaptofunction 5*sin(1/x),y
snaptofunction y,x
  snaptopoints x1,y1,x2,y2,x3,y3....
          snaptogrid
        snaptogrid
axis
grid 2,1,grey,4,4,7,red will snap on x=0, x=0.5, x=1, x=1.5 .... will snap on y=0, y=0.25 y=0.5 y=0.75 ...
  square x,y,side (px),color
        fsquare x,y,side,color for a filled square
square x,y,side,color
  status
          string color,x,y,the text string
        string red,0,0,\u2232fontfamily italic 24px Arial to set fonts on browser that support font change
  stringup color,x,y,rotation_degrees,the text string
        stringup red,0,0,45,\u2232
fontfamily bold 34px Courier to set fonts on browser that support font change
onclick
rotate 45
string red,0,0,AAAAAA
killrotate
string red,4,4,BBBBBBonclick
stringup red,0,0,45,AAAAAA
string red,4,4,BBBBBB
  highlight color,opacity,linewidth
          strokecolor colorname or #hex
          text fontcolor,x,y,font,text_string
        fontfamily italic 24px Arial. In that case reset fontfamily to something lke fontfamily Arial before the old flydraw commands.
  textarea x,y,cols,rows,readonly,value
        javascript:read_canvas();)
  textfill x0,y0,color,some_text
          textup fontcolor,x,y,font,text_string
        fontfamily italic 24px Arial. In that case reset fontfamily to something like fontfamily Arial before the old flydraw commands.
  trace_jscurve some_math_function
          trange tmin,tmax
        ranget  translation tx,ty
        translate  triangle x1,y1,x2,y2,x3,y3,color
        
  triangles color,x1,y1,x2,y2,x3,y3,...
          userboxplot
        var student_boxplot = new Array(5)
function show_boxplot(){
student_boxplot[0] = min;
student_boxplot[1] = Q1;
student_boxplot[2] = median;
student_boxplot[3] = Q3;
student_boxplot[4] = max;
document.getElementById('boxplot').style.display = "block";
draw_boxplot(12345,1,2.00,5.00,[0,0,0,0,0],4,"0,0,255",0.78,"255,165,0",0.60,1,0,1,1);
};  userboxplotdata
          userdraw object_type,color
        onclick='javascript:place_image_on_canvas(this.id)' can be placed onto the canvas.userdraw function,color is identical to acombination of strokecolor color and userinput functionmulticolors red,green,blue
multilabel f(x)=:g(x)=:h(x)=
userdraw functions3,colorfunctionlabel f(x)=:p(x)=:w(x)=
strokecolor red
userinput function 
strokecolor green
userinput function 
strokecolor blue
userinput function
  userinput function inputfield
        userinput_functionuserinput_xyfunctionlabel some_string to define the inputfield text: default value "f(x)="
strokecolor some_color to adjust the plot / functionlabel color
css some_css to adjust the inputfields
fontsize int to adjust the label fonts. (default 12px)
  userinput_xy
          userinput_function
        userinputread_canvas().   vline x,y,color
        verticalline  vlines color,x1,y1,x2,y2....
        verticallines  video x,y,w,h,videofile location
          xaxis num1:string1:num2:string2:num3:string3:num4:string4:....num_n:string_n
        xaxistextgrid 1,100,grey,1,4,6,grey
  xaxisup num1:string1:num2:string2:num3:string3:num4:string4:....num_n:string_n
        xaxistextupgrid 1,100,grey,1,4,6,grey
  xerrorbars color,E1,E2,x1,y1,x2,y2,...,x_n,y_n
          newrange xmin,xmax,ymin,ymax
          xrange xmin,xmax
        rangex  xsnaptogrid
        xsnaptogrid
axis
grid 2,1,grey,4,4,7,red  xoffset
          xyoffset
          xunit some_unit_for_x-values
          xlabel some_string
          xlogbase number
          xlogscale ymajor,yminor,majorcolor,minorcolor
        xrange xmin,xmax and yrange ymin,ymax
  xylogscale majorcolor,minorcolor
          yaxis num1:string1:num2:string2:num3:string3:num4:string4:....num_n:string_n
        yaxistext  yerrorbars color,E1,E2,x1,y1,x2,y2,...,x_n,y_n
          yoffset
          yrange ymin,ymax
        rangey  ysnaptogrid
        ysnaptogrid
axis
grid 2,1,grey,4,4,7,red  ylabel some_string
          ylogbase number
          ylogscale xmajor,xminor,majorcolor,minorcolor
          yunit some_unit_for_y-values
          hypsegments color,x1,y1,x2,y2,...,x_n,y_n
          hyplines color,x1,y1,x2,y2...x_n-1,y_n-1,x_n,y_n
          hyppolygon color,x1,y1,x2,y2...x_n-1,y_n-1,x_n,y_n
          hyprays color,xc,yc,x1,y1,x2,y2,x3,y3...x_n,y_n
          hypcircles color,xc1,yc1,r1,xc2,yc2,r2...xc_n,yc_n,r_n
        filled or command fhypcircles to produce solid circles
fillcolor color to set the fillcolor
  zoom button_color
        | pari | |
| the PARI group | |
| http://pari.math.u-bordeaux1.fr/ | |
| Use | PARI/GP est un système de calcul formel très répandu, conçu pour des calculs rapides en arithmétique (factorisations, théorie algébrique des nombres, courbes elliptiques...) mais contient aussi un grand nombre de fonctions pour le calcul matriciel, sur les développements limités, les nombres algébriques, etc. ainsi que de nombreuses fonctions transcendantes. | 
| maxima | |
| http://maxima.sourceforge.net/ | |
| Use | Maxima is a system for the manipulation of symbolic and numerical expressions, including differentiation, integration, Taylor series, Laplace transforms, ordinary differential equations, systems of linear equations, polynomials, and sets, lists, vectors, matrices, and tensors. Maxima yields high precision numeric results by using exact fractions, arbitrary precision integers, and variable precision floating point numbers. | 
| graphviz | |
| Credits | |
| http://www.graphviz.org/ | |
| Use | Graph visualization is a way of representing structural information as diagrams of abstract graphs and networks. Automatic graph drawing has many important applications in software engineering, database and web design, networking, and in visual interfaces for many other domains. | 
| gap | |
| The GAP Group | |
| http://www.gap-system.org/ | |
| Use | GAP is a system for computational discrete algebra, with particular emphasis on Computational Group Theory. GAP provides a programming language, a library of thousands of functions implementing algebraic algorithms written in the GAP language as well as large data libraries of algebraic objects. See also the overview and the description of the mathematical capabilities. GAP is used in research and teaching for studying groups and their representations, rings, vector spaces, algebras, combinatorial structures, and more. | 
| float_calc,integer_calc | |
| http://www.gnu.org/software/bc/ | |
| Use | interface to bc ; bc -l | 
| yacas | |
| Credits | |
| http://yacas.sourceforge.net/homepage.html | |
| Use | YACAS is an easy to use, general purpose Computer Algebra System, a program for symbolic manipulation of mathematical expressions. It uses its own programming language designed for symbolic as well as arbitrary-precision numerical computations. The system has a library of scripts that implement many of the symbolic algebra operations; new algorithms can be easily added to the library. YACAS comes with extensive documentation (hundreds of pages) covering the scripting language, the functionality that is already implemented in the system, and the algorithms we used. | 
| jmol | |
| Use | 
| geogebra | |
| Use | 
| checkmol | |
| Norbert Haider, norbert.haider@univie.ac.at, modified by Ernst-Georg Schmid | |
| Use | |
| Input data | |
| Output data | |
| Example | 
| curvecomp | |
| Xiao Gang | |
| Use | Compare two curves | 
| Input data | 
Input parameters: environment. w_curvecomp_1 and w_curvecomp_2: curves to compare, as lists of points. w_curvecomp_xrange and w_curvecomp_yrange: list of 2 integers each. w_curvecomp_tolerance: Maximal tolerance of distances.  | 
  
| Output data | 
Output: 10 double numbers separated by white spaces. - Average distance of curve 1 with respect to curve 2. - Average distance of curve 2 with respect to curve 1. - Maximal distance of curve 1 with respect to curve 2. - Maximal distance of curve 2 with respect to curve 1. - Proportion of curve 1 close to curve 2. - Proportion of curve 2 close to curve 1. - Maximal jump of curve 1. - Maximal jump of curve 2. - Ratio of repetitions found in curve 1. Number 10: Ratio of repetitions found in curve 2. Furthermore, words "fnofx" and/or "fnofy" will appear if curve 2 represents the graph of a function of x (and/or y). Returns empty if one of the curves is degenerated.  | 
  
| Example | 
  
  curvecomp_1=0,92,1,92,2,92,3,92
  curvecomp_2=46,41,48,41,50,45
  curvecomp_tolerance=40
  curvecomp_xrange=11,208
  curvecomp_yrange=0,220
  curvecomp 
    | 
| cyclicode | |
| Xiao Gang | |
| Use | This program generates cyclic code from a polynomial defined over a prime field. It does not check whether the polynomial is primitive or irreducible. | 
| Input data | 
Accepted parameter: 3 words Word 1: field characteristics, limited to 2,3,5,7 Word 2: The polynomial coefficients (except the leading one, from lower degree to higher). Word 3: The starting status (starting from the first bit).  | 
  
| Output data | |
| Example | 
  
  
  cyclicode 3 22 10
    | 
| dicfind | |
| Xiao Gang | |
| Use | for adm modules | 
| Input data | |
| Output data | |
| Example | 
| dicsort | |
| Xiao Gang | |
| Use | Sort dictionary | 
| Input data | for adm modules | 
| Output data | |
| Example | 
| huffman | |
| Xiao Gang | |
| Use | This program computes an optimal coding of variable lengths on a given distribution of probabilities, using Huffman algorithm. | 
| Input data | 
Two environment variables wims_exec_parm is a comma-separated list of probability distributions Limited to MAX_ITEMS The input data will be scaled to unit sum w_huffman_radix is the encoding radix, between 2 and MAX_RADIX.  | 
  
| Output data | 
two lines Line 1: Entropy and Average code length, comma-separated Line 2: comma-separated list of codes.  | 
  
| Example | 
  
  huffman_radix=4
  huffman 0.16, 0.39, 0.55
    | 
| lceb | |
| Lucas Nussbaum, lucas@lucas-nussbaum.net | |
| Use | jeu "le compte est bon" | 
| Input data | 7 integers | 
| Output data | How to obtain the first number from the six other ones by addition, multiplication, division, substraction | 
| Example | 
  
  
  lceb 598 6 8 2 5 10 12
    | 
| matchmol | |
| Norbert Haider, norbert.haider@univie.ac.at, modified by Ernst-Georg Schmid | |
| Use | |
| Input data | |
| Output data | |
| Example | 
| mathexp | |
| Xiao Gang | |
| Use | Mathematical expression manipulations for WIMS | 
| Input data | For the moment, use only in deductio | 
| Output data | |
| Example | 
| moneyprint | |
| J.M. Evers | |
| Use | prints a number with fixed amount of decimal places | 
| Input data | 
Usage:!exec moneyprint number1,number2,number3,....number_n decimal_places or !exec moneyprint number1,number2,number3;....number_n decimal_places \text{A=wims(exec moneyprint number1,number2,number3....number_n decimal_places)} default value "decimal_places = 2" A=!exec moneyprint 123,43.5,23.45665 A=123.00,43.50,23.47 A=!exec moneyprint 1.000,6.234;8.4567 A=1.00,6.23;8.46 or specified a last "word" A=!exec moneyprint 123,43.5,23.45665 3 A=123.000,43.500,23.457  | 
  
| Output data | |
| Example | 
| msg2wims | |
| Xiao Gang | |
| Use | transforms a text in a file and save it in another file (administrative module). Transforms some commands of the form \ in wims equivalence. By default, the commands are \(\) (replace by !insmath) and translation in html of $, !, (to complete). More commands can be translated by the configuration of the variable msg2wims_primitives. Usage:!sh cd $wims_home; bin/msg2wims file_in > file_out | 
| Input data | name of a file | 
| Output data | modified text of the input file | 
| Example | 
| oncechar | |
| Xiao Gang | |
| Use | This special program selects words composed by selected characters, each selected character being used at most once in the word. Used in the shell script public_html/bin/dicfind | 
| Input data | Selected characters are entered by the env var 'oncechar'. Words entered by stdin. Output to stdout. | 
| Output data | |
| Example | 
| scienceprint | |
| J.M. Evers | |
| Use | Prints a number in scientific notation. | 
| Input data | 
Usage: !exec scienceprint number,significant_digits,output_type \text{A=wims(exec scienceprint number,significant_digits,output_type )} output_type can be 
  | 
  
| Output data | |
| Example | 
| shortpath | |
| Xiao Gang | |
| Use | Finds the shortest paths linking given points | 
| Input data | 
wims_exec_parm is ... . w_shortpath_style : 0: loop to the start 1: arbitrary open path 2: open path with fixed start 3: open path with fixed end 4: open path with fixed start and end  | 
  
| Output data | |
| Example | 
  
  shortpath_style=0
  shortpath 1,3
  5,1
  3,4
  1,1
  3,1
  4,5
    | 
| translator | |
| Xiao Gang | |
| Use | Versatile translation according to a dictionary | 
| Input data | for adm modules | 
| Output data | |
| Example | 
| voronoi | |
| Steve J. Fortune | |
| Use | compute Voronoi diagram or Delaunay triangulation. Voronoi reads the standard input for a set of points in the plane and writes either the Voronoi diagram or the Delaunay triangulation to the standard output. | 
| Input data | Each input line should consist of two real numbers, separated by white space. | 
| Output data | 
If option -t is present, the Delaunay triangulation is produced. Each output line is a triple i j k which are the indices of the three points in a Delaunay triangle. Points are numbered starting at 0. If this option is not present, the Voronoi diagram is produced. There are four output record types. s a b indicates that an input point at coordinates l a b c indicates a line with equation ax + by = c. v a b indicates a vertex at a b. e l v1 v2 indicates a Voronoi segment which is a subsegment of line number l; with endpoints numbered v1 and v2. If v1 or v2 is -1, the line extends to infinity.  | 
  
| Example | 
  
  
  voronoi -t 5 7
  2 8
  7 6
  3 5
  1 2
  8 1
  4 3
  6 4
    | 
| log/front.phtml.template | replace template by the symbol of a language xx | read this page instead of public_html/modules/home/front.phtml.xx so it changes the home page of WIMS for lang=xx | 
| log/motd.phtml.template | replace template by the symbol of a language xx | General message in the front page of WIMS for lang=xx | 
| log/manager_msg.phtml.template | replace template by the symbol of a language for xx | message in all classes seen only by class supervisors for lang=xx | 
| log/wims.conf.access.template | delete .template | limits the access to some ressources for the whole site see public_html/scripts/help/xx/accessconf.phtml for example | 
| themes/*/local.template | replace template by the symbol of a language xx | can modify the menu in home for lang=xx | 
# To add a theme:
1. Decide on the name of the theme. If the theme is not intended for
   publication, please put it under the subdirectory "local":
   `local/1`, `local/YourName`, etc.
   Say the name is `local/1`.
2. Copy the content of `public_html/themes/standard` to
   `public_html/themes/local/1`, and modify.
- un fichier css global est créé par le script mkcss.pl dans themes.
   Ce script concatene et minimise les fichiers css dont la liste est dans le fichier `css.css.template` (respecter la syntaxe ...).
   Vous pouvez ainsi utiliser des fichiers css communs dans `themes/_css` des fichiers d'autres thèmes (à manier avec précaution) ou dans le répertoire `local/1/_css` de votre thème.
- Si vous désirez garder certains fichiers sans changement,
  il est conseillé de faire plutôt un changement de fichiers.
  Par exemple, si vous désirez conserver sans modification le fichier supervisor.phtml
   créez-le en écrivant simplement par exemple
  `!changeto themes/standard/supervisor.phtml`
- Le fichier `local.phtml.template` une fois changé en `local_phtml.fr`
   permet d'inclure des modules administratifs locaux dans les menus
- vous pouvez changer le "vocabulaire" dans la version de langue xx
  (par exemple xx=fr) de la manière suivante :
  créez un répertoire lang.
  Si vous désirez changer la définition des noms
  définis dans html, faites-le dans un fichier
  `lang/home_names.xx`.
  Si les définitions sont faites dans un module administratif,
  par exemple dans `modules/adm/class/exam/lang/names.phtml.xx`, faites-le dans un fichier de nom
  `adm_class_exam_lang_names.phtml.xx`
- il est possible d'utiliser les "widgets" du répertoire `themes/_widgets`
  widget front.phtml:
  `!read themes/_widgets/frontmsg.phtml local/data/news.fr blocnews blocexamples`
  argument: `nom_du_module` `nom_du_bloc_news` `nom_du_bloc_exemple`
    (le module doit être dans `local/data`)
  css nécessaires (à rajouter dans `css.css.template`)
  `_css/news.css _css/foundation_button.css _css/foundation_animation.css`
À faire :
- nettoyer un peu plus les fichiers pour n'avoir qu'une succession
de widgets.
- bientôt un appel du type
  `!read themes/_widgets/visitormenubox.phtml`
  lira s'il existe `themes/local/1/_widgets/visitormenubox.phtml` dans `themes/local/1/_widgets` et sinon dans `themes/_widgets`.
* wims_homeref_n0 = renouveler, aide, wims_menu_items (liens venant des modules)
* wims_homeref_n1 : lien sur feuille, séquence, aide, about, resume, divers ! print
* wims_homeref_n2 :
* wims_homeref_n3 : était prévu pour des tabs, ne contient rien à supprimer
* wims_homeref_n4 : contrôle des scores par l'élève
* wims_homeref_n5 contient pour l'instant uniquement l'aide feedback des exos
* wims_hm : lien du menu supérieur (headmenu)
    
    # Model for an slib The first part (before :proc) is for the documentation. You can also put the documentation part (everything except slib_author) in multiple files, one per lang in scripts/help/lang/slib/... if you want it to be translated. ############## !if $wims_read_parm!=slib_header !goto proc !endif slib_author=Firstname, Lastname slib_parms=3\ default, explanation\ default, explanation\ default, explanation slib_example=example1\ example2 slib_require= slib_out= result of the slib slib_comment= more explanation !exit :proc proc !distribute items $wims_read_parm into slib_xx, slib_yy, slib_zz, and so on ... calculation slib_out= ############## The result must be in the variable slib_out. Please prefix all the variables names by slib_.
Bedenk goed dat WIMS pagina's interaktief worden gegenereerd; het zijn geen normale HTML files. Ze moet dus ONLINE interaktief gebruikt worden. Het is verloren moeite ze met een robot programma op te halen.