PAELLOS is a complete e-learning platform including a web interface to create new contents, and a work environment for students and tutors. PAELLOS makes it easier to create content with an explicit structure and meaning, which facilitates evolution and mainenance of large online courses.
PAELLOS is distributed under the GPL license.
PAELLOS was developed at the cellule TICE at l'Observatoire de Paris. PAELLOS authors are : Soufiane Ayadi, Sarra Ben Fredj and Damien Guillaume.
For any information, please contact
PAELLOS is a French acronym meaning Plateforme d'Apprentissage En Ligne Libre Orientée Sémantique (Free online sematic-oriented platform). PAELLOS includes :
PAELLOS is libre software (free as in speech) as well as free (as in beer) : the source code is provided with the software, and it is possible to change it and redistribute it so long as the source code is redistributed with the changes.
If the previous characteristics are not unusual, PAELLOS has the particularity to be semantic oriented. The editor used to create courses is indeed graphical, but not WYSIWYG : the focus is on the meaning of the different parts of the text by opposition to the way they will look on the web site. Authors edit XML documents (without having to know the XML syntax), and several websites can be automatically generated from these documents based on the documents semantic structuring. With the presentation well separated from the content, it is easy to change the appearance of the websites without touching the contents.
PAELLOS was designed and created specifically for online trainings in astronomy. It is thus adapted to fully online trainings, while other learning platforms are more oriented towards on-site learning with additional online course material. A highlight for all trainings in sciences is the integration of an equation editor in the content editor and in the reply editor used by students to write replies to exercises. The implementation took into account the needs expressed by students, tutors and administrators over many years, while still remaining lightweight. The interface is simple and functional.
The following technologies are required :
The platform was tested on :
... but in theory in can work on other systems.
Some packages have to be installed on Linux on top of PHP : php5-mysql for the link with the database, php5-xsl (or php-xml for CentOS) for XML documents transformations, php5-gd for image processing, and php5-curl which is used for the forum authentication.
The following file contains all PAELLOS (WebJaxe + server), with the source code :
With PHP5, the PHP extensions php_xsl and php_gd2 must be enabled but php_domxml must be disabled (it's a PHP4 extension).
WebJaxe folder can be placed anywhere in the website. The website root is usually a folder named htdocs, in which the webjaxe folder can be placed.
The PHP user (which might be different from the web user) needs write access to the following folders in the webjaxe folder : site_config, contribXML, sites, historique, poubelle and tmp. Permissions should be checked before launching WebJaxe for the first time.
Open the following page in a web browser :
http://[your website]/[WebJaxe's folder]/index.php
If your web server runs on another port than the default one (80), make sure to replace http://[your website] by http://[your website]:[port number].
To create WebJaxe's database, the database administrator login and password must be entered (often 'root' / '' or 'root' / 'root' by default). The database is named webjaxe by default.
Information on the account for WebJaxe's administrator must then be entered.
Mail management is used to alert the administrators when a new user registers. There are 3 options :
Once this is done, click on the "Create the database" button to finish WebJaxe's installation.
To use equations with the TeX syntax in the XPAGES language, a little additional server has to be configured. The Jaxe applet and its XPAGES plugin do not contain a TeX processor (it would be too heavy !). So, the plugin calls a server, sending the equation text, to which the server replies with the image of the equation. This server is already present in WebJaxe's serveurtex folder, but it requires the installation of the following programs : latex, dvipng and ImageMagick. It is also necessary to edit the file config/XPAGES/XPAGES_config.xml by hand to specify the server to use (look for "tex.php" to find it). The default value is set to a server that is not necessarily available. The paths to the commands convert and tex2png can be changed if necessary in tex.php. Permissions should be checked to make sure the PHP user can write inside serveurtex/CACHE.
The information to access the database is stored in the site_config.xml file, located in the site_config folder. This folder is protected for the Apache web server with a .htaccess file if .htaccess files are enabled with the instruction AllowOverride in httpd.conf. This prevents reading site_config.xml directly from the web, while still letting WebJaxe use it.
This protection only works with the Apache web server. If you use another web server, such as IIS, you will need to protect the site_config folder in another way, for instance by editing its properties and forbidding reading. The way to do that is unfortunately different from one web server to another.
A .htaccess can also be added to the other folders in ordre to manage reading authorizations.
To avoid having to manage both Apache and WebJaxe users to control access, the lecture_fichier.php PHP script can be used with the Mod_rewrite Apache module. For instance, the following code can be placed in a .htaccess file in the contribXML and sites folders, to make sure that only authorized WebJaxe users can access the XML files and the websites created with WebJaxe :
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^(.*)$ ../php/partie_utilisateur/lecture_fichier.php?fichier=%{REQUEST_URI} </IfModule>
This code redirects read requests for all files in the folder to the lecture_fichier.php script, which only returns the contents of the files for connected authorized WebJaxe users.
If a security manager is enabled (this is for instance the case by default with Ubuntu 9), the web application has to be authorized to do local connections to mySQL, as well as reading the website files, use the indexation files for search queries on the website, and use certain classes : create a file named tomcat6/conf/policy.d/paellos.policy, with (by changing "SITENAME", "serveur.smtp", "/var/www" and ".../index_lucene" if necessary) :
grant codeBase "file:${catalina.base}/webapps/SITENAME/-" { permission java.net.SocketPermission "localhost:3306", "connect,resolve"; // access to the SQL database permission java.net.SocketPermission "smtp.exemple.fr:25", "connect,resolve"; // sending emails permission java.io.FilePermission "/var/www/webjaxe/-", "read"; // reading WebJaxe files permission java.io.FilePermission "/var/www/public", "read"; // generating the public website permission java.io.FilePermission "/var/www/public/-", "read,write,delete"; // generating the public website permission java.io.FilePermission "${catalina.base}/webapps/SITENAME/WEB-INF/sites", "read"; // training websites permission java.io.FilePermission "${catalina.base}/webapps/SITENAME/WEB-INF/sites/-", "read,write,delete"; // training websites permission java.io.FilePermission "${catalina.base}/webapps/SITENAME/WEB-INF/index_lucene/-", "read,write,delete"; // indexation files permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.compiler"; // jsp compilation permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.compiler.*"; // jsp compilation };
# warning: with Apache 2, do not use AddModule, and replaced httpd by apache2 in the paths AddModule mod_jk.c <IfModule mod_jk.c> JKLogFile /var/log/httpd/mod_jk.log JKWorkersFile /etc/httpd/workers.properties JKMount /SITENAME/* PAELLOS </IfModule>
and workers.properties should be added next to it (if it already exists, it should be combined).
In each Virtualhost (typically the files in sites-enabled), the following code must be added :
<IfModule mod_jk.c> JkMountCopy On </IfModule>
On Tomcat side, a matching connector is required to listen to incoming queries, as described in the exemple_pour_tomcat_6_de_server.xml file included in PAELLOS
mysql -u root -p > GRANT ALL ON NOMSITE.* TO adminPAELLOS@localhost IDENTIFIED BY "my_password"; > quit (the password must be the one in ServletProperties)
To start using the site, the administrator must register as described in the administration documentation.
The forum and chat features are optionnal. The discussion forum suggested with PAELLOS is phpBB (a plugin provides automatic authentication on a phpBB forum with PAELLOS' database).
The mChat module for phpBB was tested, but other solutions are possible.
The WebJaxe CMS is included in PAELLOS, and is used for collaborative creation of XML documents in the XPAGES language. An automatic transform can transform these documents into websites. It can be done directly in WebJaxe to get a preview for authors, or with the PAELLOS platform administration to generate the training website for students and tutors.
The administrator account is created at initialization time. It is possible to change the fields for this account in the user management section.
It will be assumed for now on that you are connected to the site as the administrator, which enables the administrative functions.
The parameters page lets you edit the following parameters :
It is possible to use "../.." instead of "sites" for the name of the websites folder, so that websites are generated directly at the web server root (assuming the webjaxe folder is located at the root). If you use this trick, be careful with possible folder names conflicts.
To remove the database and the contributions, just click on "Uninstall WebJaxe". Warning, the result is immediate !
Once this is done, you just need to remove WebJaxe's folder on the server to get rid of it completely.
Each registration request is recorded in the database, but the corresponding users cannot connect until their registration is validated by the administrator. If the administrator rejects a registration, it is deleted.
The list of registration queries on the "User management" page gives the list of the users who registered, and lets you accept or not each registration.
From the user management page, it is also possible to :
The project management page is used to create new projects, and change the list of contributions and participants for each project. There is no direct link between contributions and users: the links are established through the projects.
The administrator can organize projects as a tree, which is handful when there are a lot of contributions. To change the tree structure, click on the "Sub-projects" button for the parent project on the project management page. The list of sub-projects can then be changed for this project. A user associated with a project is implicitely associated with all the descendant projects. An export of the parent project will contain all the contributions of the parent project and its descendants.
Each contribution is associated with a single project.
The contribution management page gives the list of the contributions, and can be used for each contribution to change the associated project, to edit it or remove it.
A form at the bottom can be used to create a new contribution.
This page can also be used to edit a contribution (by redirecting to the "user side" of WebJaxe), and to remove a contribution.
WebJaxe is distributed with a configuration for the "XPAGES" XML language (in French and in English), and another one for the "XHTML strict 1.0" XML language. It is possible to add new configurations to edit documents in other XML languages, and generate corresponding websites.
To add a new configuration, that we will call "MYCONFIG" :
To participate to the creation of a website with WebJaxe, it is first necessary to register. To do that, just go to the registration page (there is a link from the first page), and fill in the different fields.
The login is a unique identifier. A new user is choosing the login, but (as opposed to the fields for the firstname and the lastname), the only letters accepted are the letters from a to z, with no space or special character.
Choose an original password, but don't lose it ! You can ask for help to the administrator if you lose it, but changing a password is not automatic.
Once the registration form submitted, the administrator will be able to validate (or not) your registration. It is only after the registration is validated by the administrator that it becomes possible to log in, with the chosen login and password.
To log in, just enter the login and password chosen at registration time.
Creating a website is done with a number of contributions. A contribution corresponds to a set of pages on a given subject (usually less than 10 pages). A contribution is a folder containing an XML file with the text of the pages, and the files of the images used in the pages.
Certain contributions are only used to link contributions with each other. For instance, it is possible to create a contribution for the whole website to create, and this contribution will only contain links to the other contributions.
Contributions are organized into projects. A project gathers contributions and authors on a given subject. All the authors in a project can edit all the project's contributions.
As a user, you can create a new project, a new contribution, and edit the contributions created by other users if these contributions are in a project of which you are author. The administrator can add authors or contributions to a project.
A project can be exported. This operation starts the download of a ZIP file containing a copy of all the contributions in the project.
There are two methods to create a new contribution in WebJaxe: the creation of an empty contribution, and the import of an existing contribution. In both cases, it is necessary to specify the associated project and the Jaxe configuration (which corresponds to the XML language).
In the case of an import, the imported file must be a ZIP file with the name of the contribution. This ZIP file must contain a folder with the name of the contribution, containing an XML file with the name of the contribution. For instance, the imported file could be "my-contribution.zip", containing a "my-contribution" folder, with a "my-contribution.xml" file inside.
Since contribution export uses the same organization, it is easy to export a contribution from a WebJaxe site and to import it into another one.
There are 10 possible operations on a contribution :
WebJaxe's editor requires Java 1.6. It opens in a new window. Be careful not to close the initial window in the web browser, because that would make the edition window disappear without letting you save the document.
There is a bug in Firefox and some other web browsers which prevents reading XML files if the option "Allow third-party cookies" is disabled. With these web browsers, this option must be enabled in the preferences. Another solution is to add an "exception" in the cookie settings so that cookies from WebJaxe's server are always authorized.
The editor works with the XML meta-language, and entered texts are thus organized with begin and end tags. Each piece of text is surrounded by tags that give it meaning. New elements can be inserted with the menus, or with the insertion panel on the left of the window. The insertion panel only displays elements that are allowed at the cursor position, in order to prevent the creation of an invalid document (a document that does not respect the rules of the chosen XML language).
The available elements, as well as the tree rules for the elements, are defined by the XML language chosen by the administrator. It is important to learn the chosen language to use the editor in the best way. A specific documentation exists for the XPAGES language, whose WebJaxe configuration is provided with WebJaxe.
There exists a user guide for the Jaxe application, that mostly applies to WebJaxe's editor. However, there are some features that don't exist in WebJaxe. Some other features are disabled because of security restrictions imposed to Java applets by web browsers, such as copy/paste (see below).
By default, Java applets are not authorized to read the system clipboard. In general, this means it is not possible to do a copy-paste from another application. There are two methods to work around this problem:
grant codeBase "http://SERVER.NAME/WEBJAXE_FOLDER/-" { permission java.awt.AWTPermission "accessClipboard"; };(write https instead of http if https is used to access WebJaxe)
This page is used to manage the files associated to a contribution. They are usually files of images used when editing the XML document. It is possible to organize these files with directories. To add a new file, just click on the corresponding button, choose the file on the local hard disk, and click on the "Add" button. It is then displayed in the list of files for the current directory.
Once an image file is added, it is possible to use it during edition. For instance, with the XPAGES language, an image is added by first creating an "Image environment", and then adding a "File" inside. The path to the image file in the contribution is used as the "file name", for instance "logo.png". The image is displayed in the editor when the dialog is validated.
The Changes history button displays when the XML document is changed.
Each history is followed by the login of the author who has changed.
You can compare versions of the XML document, and check the differences between each version of the document and the latest version.
Change the user interface language. The default language is one that was chosen during the registration on WebJaxe.
The new password must use at least 4 characters, and must contain only letters without accent, numbers, dashes or underscores.
The email adress must be valid.
Starting with WebJaxe 2.0, it is possible to choose the editor. Jaxe, the default editor, works as a Java applet and requires an enabled Java plugin in the web browser. Daxe works with Javascript and requires its activation. Daxe only works on modern web browsers (for instance, it does not work with Internet Explorer before version 9).
XPAGES provides a way to create websites quickly and easily. XPAGES is based on the principle of separation between content and presentation : with XPAGES, the content (text, images, animations) is entered, and is structured with a meaning associated to each part. An author does not worry about the way content will be displayed later on, which saves time and avoids mixing meaning with presentation. The way content will be displayed is specified separately, with stylesheets. Thus, it is possible to change the display independently from the edition.
XPAGES is an XML language, i.e. a set of elements and rules designed to structure a text. Associated stylesheets can automatically transform XPAGES documents into HTML files so that they can be viewed on the web. XPAGES documents can be edited with Jaxe and WebJaxe thanks to a configuration file describing the edition user interface.
XPAGES is a very simple language, easy to learn : it features only 59 elements (46 without the exercises), to compare for instance to the 91 elements in HTML, 390 elements in DocBook, or 526 elements in OpenDocument.
XPAGES documents have a root element, XPAGES set, that is used in all the documents as a first level element. Under this element, the following elements can be found : Informations, Page, Ref. XPAGES document and XPAGES set.
Inside a page, sections can be created with the Section element. This element has a title, a role that specifies the meaning of the section and can result in a different display for each function, and an importance that can be used to highlight the section if it is important.
The text is added inside paragraphs, with the Paragraph element. It is easy to insert a new paragraph with the command-P or control-P shortcut in Jaxe.
It is possible to create several contributions, each one containing an XPAGES XML file and the associated files (images, Java applets, ...). Each contribution corresponds to a folder whose name is the same as the label given in the Informations block in the XML file. This folder contains the XML file and the associated files.
The information block provides information about the document, and is also used to choose a skin for the generated website. It is required, and is located at the beginning of the document. It has the following children :
Block elements are XML elements that can be directly inserted inside a Page element. They are used to structure the document, but are not mixed with text : it is not possible to insert text directly under Page, because text must necessarily be inside a block element.
XPAGES has the following block elements :
Some XPAGES elements can be mixed with text, for instance inside a paragraph. They are the following elements :
XPAGES can be used for many applications, but it is especially handy to create online courses, and was created in this context. For these reasons, the language contains elements specific to the definition of exercises, even though these elements might not be useful outside of the context of online courses.
There are two types of exercises : the question-answer type (Exercise element), and the quiz type (Quiz element). In both cases, an exercise can have a title (title attribute), an indication of the difficulty (Difficulty element), an indication of the time necessary to complete the exercise (Time element), and questions (Question and Quiz question elements).
Each question can have terms (Terms element) and one or more helps (Help element). Questions of type question-answer have a solution (Solution element) and a number of points that can be granted if the answer is correct (Points element). Questions of the quiz type have possible answers (Quiz answer element), each answer being either right or wrong (correct attribute), with the text of the answer (Answer text element) and a comment which will be displayed to the user should he choose this answer, for instance to explain why the answer is wrong (Answer comment element).
In Jaxe, solutions for evaluation exercises are not added to HTML when the "public website" is generated. They are added when the "production website" is created. WebJaxe always creates the production website. To create a public website from a contribution in WebJaxe, the contribution has to be exported and opened with Jaxe. In this way, it is possible to create, from the same XML files, a website for students, and another one for tutors for an elearning program.
The administrator must start by registering as a tutor with the page SITENAME/Inscription?fonction=tuteur (the first user to register is automatically validated as an administrator).
After connecting to the administration interface (at SITENAME/Administration), the following menu appears :
New registrations is used to validate registrations to the training website. Valid users, open accounts and All valid users are used to manage user accounts. Creation of the website is used to generate the training website (for students and tutors) and the public website. Website redirects to the training website, for instance to check student readings.
The following fields are displayed for each registration query :
The remove action is available to quicly remove queries.
To validate a registration query, it is necessary to :
A registration validation is of course also a good time to check the fields, especially the email address.
When a registration is validated, an email is sent to the user to warn him. If it is a student with a tutor, another email is sent to the tutor with the student identification. It is possible to assign a tutor after validation, but in this case no email is sent to the tutor.
Fields :
User address :
Actions availables with the user lists :
If the server configuration includes the path to the websites, it is possible to automatically generate a training website (for students and tutors) and a public website based on the corresponding XPAGES contribution in WebJaxe. The two websites can be created independantly.
If a website already exists, its folder will be renamed with the "old" suffix. It should be later removed by hand on the server.
As a reminder, the following differences exist between the websites :
A problem for the link to the tools is that by default the same home page is generated for the students and the tutors. In practice, home pages are often created by hand and the index.html files are replaced by hand after the website generations.
Removing the old records for exercises, readings and connections, example with the date "2008-08": do SQL queries directly on the database (currently there is no web interface to do that) :
delete e.* from exercices e where e.date < '2008-08' delete l.* from lectures l,connections c where c.debut < '2008-08' and l.numconnection=c.numero delete c.* from connections c where c.debut < '2008-08'
One the contents have been created with WebJaxe and the website generated with PAELLOS administration interface, the website can be used.
Registration is done on the page/SITENAME/Inscription for the students, /SITENAME/Inscription?fonction=tuteur for the tutors. If there are several trainings, it is possible to specify the training by adding the addresses /SITENAME/Inscription?formation=TRAININGNAME and /SITENAME/Inscription?formation=TRAININGNAME&fonction=tuteur
Each time a student passes by a site page, the information is recorded on the server. This makes it easy later for tutors to follow their sudents, although the only reliable way remains the exercises.
Tutors can obtain a list of their student readings by identifying at the page /SITENAME/Lectures .
Students can look again at the replies they sent for the exercises, from the page /SITENAME/Exercices. The list gives for each exercise a number, the title, the path and the date. The reply can be read by clicking on the title, and the exercise page can be read by clicking on the path. The number is used to order replies when several replies are sent for the same exercise.
At the same address, tutors can access all their student replies. They select a student in the list of associated students to get the list of the student replies. The administrator and the supertutor can see all the students. On an exercise reply page, a tutor can send a reply with the correction. As the students, tutors can use the reply editor to write a reply.
Tutors can just sent their corrections by email if they wish, but for each new student reply for a given exercise, the associated tutor can also see the corresponding page and reply with the platform.
The training website generation includes an indexation of the contents, which is then used for efficient searches on the website. The indexation is based on the XML files to optimize the indexation, which provides better results than if the indexation was done on the HTML files (for instance, the navigation menu on the left is not taken into account in the indexation). Searching the website is done with the page : /SITENAME/Recherche
It is possible to change a password from the page /SITENAME/site/changementmdp
Students can directly go to the latest page they visited with the following link : /SITENAME/site/derniere-page
Logout : /SITENAME/site/logout
On the training website, an evaluation exercise appears with :
Using the editor buttons is not necessary (it is possible to use simple text with an attached image), but it makes writing complex equations easier. These buttons require Javascript to be activated.
To write a clear reply, it is preferable to separate it into questions. This is for instance possible with line breaks and numbers 1) 2) 3) for the reply to each question in the exercise.
The different editor buttons correspond to the following features (keyboard shortcuts use the ctrl or the cmd key depending on the operating system):
Most of the editor usefulness lies in its ability to facilitate the insertion of equations, because it is difficult to write and read complex equations with simple text. The equation editor uses a particular syntax, detailed in the next page.
To use the editor, enter the text for the equation in the text area at the bottom of the dialog, and click on the "Preview" button to see the equation image appears below. For instance, after entering "x^2", and clicking on "Preview", x2 appears below. To insert the equation in the text, click on the "Ok" button. To edit an existing equation, just double-click on it.
The syntax is relatively intuitive, but it is necessary to follow it in order for the equation to be correctly displayed for the tutor. For instance, operators must always be specified (as if the equation was going to be evaluated with values for the variables), so "2*x" must be used instead of "2x".
It is possible to use the web browser spell checker for the web browsers that have one, but it cannot be done with a simple right click because it triggers the editor's contextual menu. The Ctrl key (or cmd on MacOS) has to be used at the same time as a right click to display the browser's contextual menu and use its spell checker.
The equation editor works with a text area to enter an equation with a specific syntax, and the image for the equation is displayed below when the "Preview" button is clicked.
Here are some rules to follow in order to make the best use of the editor :
As opposed to many equation editors, this editor analyses the mathematical meaning of the equation. It then builds the image from there. This makes it possible to get uniform graphical results for all equations. On the other hand, it is not possible to specify display constraints, for instance to obtain a little more space between two characters : the user gives the meaning for the equation, and the editor is in charge of finding the best display for it.
Operators '+' and '-'.
Operator '*', displayed only when two numbers are multiplied.
Example : 2*3*sin(1.5*pi) is displayed :
Operator '/' (displayed as a fraction) and functions 'slash' and 'fraction'
Example : slash(a;b)/c is displayed :
The parameter separator is the semicolon, to distinguish it from the coma, sometimes used in numbers : functionname(arg1;arg2;...)
Example : f(x;y) is displayed :
Operator '^'.
Example : x^y is displayed :
Operator '_'.
Example : x_(ab) is displayed :
Function 'subsup' with the first term, and the elements to display as subscript and superscript.
Example : subsup(A;1;2) is displayed :
Function 'unit', with the unit as the second parameter.
Example : bigg=unit(6.67259*10^(-11);m^3*kg^(-1)*s^(-2)) is displayed :
Note that units are displayed with a plain font, while a variable like is displayed with an italic font.
There is also an operator to specify units in a more concise way: #.
Examples: 2#m is displayed : ; (2/3)#(m*s^(-1)) is displayed : (note that parenthesis are required in this formula)
Function 'sqrt'.
Example : sqrt(x/2) is displayed :
Function 'root' with the degree of the root as the second parameter.
Example : root(x;3) is displayed :
Function 'abs'.
Example : abs(x^3) is displayed :
Function 'exp'.
Example : exp(x^2) is displayed :
Function 'int', with 4 parameters: the function to integrate, the integration variable, and the minimum and maximum bounds.
Example : int(f(x);x;0;infty) is displayed :
Functions 'sum' and 'prod', with 3 parameters: the function to sum up, and the minimum and maximum bounds.
Example : sum(ln(k)/k;k=1;10) is displayed :
Function 'matrix', with the lines as parameter as a function 'line'.
Example : matrix(line(1;2;3);line(4;5;6)) is displayed :
Variables with the letter name, with an uppercase to the first character of the name to get an uppercase Greek letter.
Example : alpha*Delta*thetasym*upsih*piv is displayed :
Variable with the name of the special character.
sun|star|earth|planck|infin|angstrom|ell|hat|bar|asterisk|bigg|...
Example : M_sun/M_earth=3.329*10^5 is displayed :
Special code with no space.
!=|~=|<=|>=|<<|>>|->|forall|exists|part|nabla|prop|cross|plusminus|cap|cup
Example : forall a exists b<<c~=d>=e!=f is displayed :
Function 'accent' with the letter and the accent to add above.
Example : accent(AB;->)+accent(ABC;hat)+accent(x;bar) is displayed :
Function 'timed' with the variable and the number of dots to display above.
Example : timed(theta;2) is displayed :
Function 'vector' with the name of the vector.
Example : vector(u_theta) is displayed :
Function 'scalarp' with the two vectors as parameters.
Example : scalarp(vector(AB);vector(CD)) is displayed :
Function 'norm' with the vector as a parameter.
Example : norm(vector(AB)) is displayed :
Some functions are displayed without parenthesis when they have a single parameter with a variable.
Example : sin(a)*sin(b) is displayed :
Function 'system', with the lines as parameters.
Example : system(x+y=2;x-2*y=3) is displayed :
Function 'fact'.
Example : fact(x) is displayed :
Function 'mean'.
Example : mean(M_B) is displayed :