ven. 24 mars 2023
Qlam est l'application écrite en C qui sert à maintenir ce blog. Elle utilise un langage de balisage pour produire du code html. Elle offre aussi la possibilité de d'organiser les pages et la navigation entre elle. Qlam n'utilise ni base de données ni de langage sur le serveur. Il produit donc des pages html purement statiques. Ce logiciel s'adresse à des utilisateurs qui ont de bonnes notions de html et de css.
On peut saisir du code html partout où l'on veut. Le code <balise ...>
ou </balise>
est interprété comme du code html dès lors que balise est une balise clé html (i.e a, abbr, acronym, ... ), sauf dans les parties code.
Qlam se charge de créer une entête minimale de la page. On peut y ajouter des balises <meta> ou des inclusions de style css ou de script js. L'entête prend fin lorsque Qlam rencontre la commande #title ...
qu'il traduit en <title> ... </title>
. De plus Qlam utilise l'argument de la commande #title
pour créer le titre la page dans le <body> (i.e. <h1> ... </h1>
)
La ligne qui suit est censée être la date de l'article.
Syntaxe des commandes du head :
<meta name="site" content="grognon">
<link rel="stylesheet" href="css/perso">
<script src="script/LaTeXMathML.js"></script>
<i>Italique</i>
<strong>gras</strong>
<u>souligné</u>
<kbd>T</kbd>
<span="box"></span>
<code>code</code>
code
Remarque : les caractères ^A, ^B, ... s'obtiennent sous linux par :
Ctrl V Ctrl A , Ctrl V Ctrl B , . . .
Une balise qlam #2 Titre
(resp. #3 Titre
, ... ) crée un header c'est à dire <h2>Titre</h2>
(resp. <h3>Titre</h3>
, ... ). Les trois premières h2, h3 et h4 sont numérotées automatiquement en css comme dans cette page. Mais Qlam entretient une numérotation parallèle pour tous les titres, qui sert d'identificateur. Elle sera exploitée pour établir les liens internes (voir Liens).
Code qlam
- Ligne 1
- Ligne 2
- Ligne 3
Résultat
Code qlam
+ Ligne 1
+ Ligne 2
+ Ligne 3
Résultat
Code qlam
? Mot 1
Définition de Mot 1
Suite de la définition de Mot 1
...
? Mot 2
Définition de Mot 2
Suite de la définition de Mot 2
Résultat
Remarques
#table
Décimal|Français|English
1 |un |one
2 |deux |two
Le code précédent produit :
Décimal | Français | English |
---|---|---|
1 | un | one |
2 | deux | two |
La balise #table accepte un argument qui est la classe (css) de la table.
On l'obtient avec ^CCeci est du code^C qui donne le résultat Ceci est du code
.
On l'ouvre avec la balise qlam #code et se termine par une ligne vide.
La balise #code accepte un argument de la forme [#][!]lang où lang est un langage de programmation. Qlam reconnait les langages que j'utilise : bash, c, cpp, html, js, py, scad. On peut en ajouter en ajoutant dans include
un fichier *.dict
qui contient les mots clés du langage.
Exemple de bloc de code produit par Qlam
/* qlam.c
:w | !gcc % -o %< -Wall -Wfatal-errors -g
!./%< qlam
(c) 2023 Mourad Arnout marnout à free.fr
*/
#include "qlam.h"
int main(int argc, char *argv[])
{
// make hdict
for(int i=0; i<27; i++) hdict[i] = NULL;
mkdict(hdict, "html");
if(argc == 1) printf("Usage: %s NAME [NAME] ...\n", argv[0]);
else {
str_t src, dest;
char *p = basename(argv[1]), *q;
if((q = strchr(p, '.')) != NULL) *q = 0;
for(int c=1; c<argc; c++)
{
sprintf(src, "qlm/%s.qlm", p);
sprintf(dest, "%s.html", p);
mkhtml(src, dest);
}
}
freedict(hdict);
}
La syntaxe [nom du lien->cible] produit le code html <a href="cible">nom du lien</a>
.
Les titres dans la pages ont un identifiant de la forme "a_b_c_" où a, b et c sont des entiers.
Dans le corps du texte un renvoi à une note de bas de page se fait avec la balise Qlam #(n) où n est le numéro de la note.
La note proprement dite se fait (en bas de page) avec la balise #note n. Le contenu de la note doit se terminer par une ligne vide.
On peut écrire du javascript après la balise Qlam #js (sans argument).
Exemple : Le code suivant donne l'heure
#js
var now = new Date();
var h = now.getHours();
var m = now.getMinutes();
var s = now.getSeconds();
document.write('Il est ' + h + ':' + m + ':' + s);
Avec un argument la balise #js nomduscript produit le code :
<script src="script/nomduscript.js"></script>
On peut inclure un fichier html avec la balise #include chemin/fichier.html.
Il faut télécharger les fichiers qlam.h et qlam.c et les compiler avec la commande gcc qlam.c -o qlam
.
Il faut ensuite créer à la racine du site local les dossiers doc, img, include, script, qlm, css puis copier :