Prima Homepage
Ravi Homepage
Le langage scml et la doc Ravi
Le module modxdraw
Installation Ravi sur Ensibull - PIA99
ImaLab

[PREV][SUIV]

Le langage scml et la doc Ravi

La doc-en-ligne de Ravi doit être indépendante des contraintes d'un langage de documents: elle est donc rédigée dans un formalisme différent de tous les autres, qui permet facilement de générer du html, et tout aussi facilement du Latex.

Le principe de base de scml(une invention de Bruno Zoppis en 97) est aussi astucieux que simple: le texte source est mélangé avec des commandes (comme d'habitude), et ces commandes sont des expressions Scheme écrites sous la forme @(expression Scheme). Le traducteur scml2html transmet dans le fichier-cible html le texte source caractère par caractère, sauf pour les expressions Scheme, qui sont évaluées; l'expression peut écrire en sortie (avec display, etc.) ou créer des structures de données diverses (par exemple la table des matières).

Tout cela est très simple, les programmes font à peine 3 pages de Scheme: le traducteur se trouve dans le répertoire Doc/Pgm. Le fichier filter.scmcontient les fonctions générales (c. à d. indépendantes de html), le fichier html.scmimplémente la génération de html. Avis aux amateurs: il reste à écrire le fichier latex.scm.

Example: la doc Ravi

Toute la doc de ravi est un example. Elle se trouve dans le répertoire Doc/Src.

La génération de la doc se fait par un Makefile qui se trouve avec les programmes: faire make dans Doc/Pgm. Les fichiers générés se trouvent dans Doc/Html.Il n'y a pas d'installation automatique. Le transfert dans /home/pandora2/WWW/Ravise fait manuellement.

La traduction d'un fichier scml isolé se fait depuis le répertoire Src:


	ravi
	(load "../Pgm/filter") (load "../Pgm/html")
	(process-file "zz_xx.scml")

Le résultat sera le fichier Html/zz_xx.html.

Précisions sur la syntaxe scml

Les "commandes"scml sont donc des fonctions Scheme prédéfinis (dans le fichier html.scm).

Les principe de base a quelques conséquences mal commodes: comme une doit s'ecrire @(fn arg1 arg2 ...) les parenthèses et guillemets abondent; deux élements simplifient l'emploi des commandes à 0 ou 1 arguments (ce qui couvre la majorité des cas): pour une commande sans argument, on peut omettre les parenthèses. On écrit donc juste @commande. Si pour une commande à 1 argument on ne met pas de parenthèses, l'argument sera constitué par la chaîne de caractères formant le reste de la ligne. Au lieu de @(commande "texte") on écrit donc @commande text.

Liste des commandes

Regarder ce que font ces commandes dans le fichier html.scm.

Les titres

Plusieurs présentations de titres et sous-titres sont prévues. La commande head1 introduit un titre qui sera inclu dans la table des matières apparaissant en tête de chaque fichier.


head1
head2
head3
head4
head5

Environnements


beg-file
end-file

beg-example end-example example x

beg-code end-code

item beg-item end-item

begin-enum end-enum

beg-desc end-desc desc x

beg-html end-html

Les commandes simples


bold x
italic x

construct

label x

web-ref url ref text label

beg-web-ref url end-web-ref

mailto text address

par newline