ven. 24 mars 2023

Qlam

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.

Notations

Dans cet article :

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.

Entête <head>

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>.

La ligne qui suit la balise #title est censée être la date de l'article.

Syntaxe des commandes du head :

meta
Saisie :    #meta site:grognon
HTML :     <meta name="site" content="grognon">
style
Saisie :     #style perso
HTML :     <link rel="stylesheet" href="css/perso">
js
Saisie :    #js LaTeXMathML
HTML :     <script src="script/LaTeXMathML.js"></script>

Styles typographiques

Italique
Saisie :     ^AItalique^A
HTML :     <i>Italique</i>
Résultat:   Italique
Gras
Saisie :     ^Btexte en gras^B
HTML :     <strong>texte en gras</strong>
Résultat: texte en gras
Souligné
Saisie :     ^Usouligné^U
HTML :     <u>souligné</u>
Résultat: souligné
Touche de clavier
Saisie :     ^DT^D
HTML :     <kbd>T</kbd>
Résultat: T
Encadré
Saisie :     #[texte encadré]
HTML :     <span="box">texte encadré</span>
Résultat:   encadré
Code
Saisie :     ^Cchar buf[64];^C
HTML :     <code>char buf[64];</code>
Résultat:  char buf[64];

Remarque : les caractères ^A, ^B, ... s'obtiennent sous linux par :

CtrlV CtrlA,  CtrlV CtrlA,   ...

Dans la pratique on maintient Ctrl enfoncée et on appuie successivement sur V et A ou sur V et B, etc.

Titres <h2>

Une balise qlam #2 Titre1 (resp. #3 Titre2, ... ) crée un header c'est à dire <h2>Titre1</h2> (resp. <h3>Titre2</h3>, ... ). Les trois premières h2, h3 et h4 sont numérotées automatiquement en css comme dans cette page. Mais Qlam leur attribue un identificateur compatible avec une URL qui sera exploité pour établir les liens internes (voir Liens).

Exemple : #2Listes à puces → <h3 id="Listesapuces"> Listes à puces</h3>.

Listes

Listes à puces

Code qlam

- Ligne 1
- Ligne 2
- Ligne 3
  

Remarquez la ligne vide après le dernier item pour clore la liste..

Résultat

Listes numérotées

Code qlam

+ Ligne 1
+ Ligne 2
+ Ligne 3
  

Résultat

  1. Ligne 1
  2. Ligne 2
  3. Ligne 3

Listes en définition

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

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

Remarque

Dans une suite en définition le mot commence par '?'. Les lignes de la défitions sont initiées par une tabulaation ou le caractère ':' .

Tables

Exemple :

#table
Décimal|Français|English
1      |un      |one
2      |deux    |two
   

Le code précédent produit :

DécimalFrançaisEnglish
1 un one
2 deux two

La balise #table accepte un argument qui est la classe (css) de la table.

Code

Code en ligne

On l'a rencontré dans le paragraphe Styles typographiques.

Bloc de 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 [-n] [-l] langlang 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.

#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);
}

Liens

La syntaxe [nom du lien->cible] produit le code html <a href="cible">nom du lien</a>.

Qlam maintient des liens internes dans la page.

Par exemple le sous-titre ci-dessus 1.7. Liens ci-dessus est produit par le code #2 Liens. Il crée une ancre HTML <h3 id="Liens"> Liens</h3>.

Mais le sous-ttire ci-dessu 1.8. Note de bas de page, qui a été produit par le code Qlam #2 Note de bas de page va donner l'ancre HTML <h3 id="Notedebasdepage"> Note de bas de page</h3>. Son identifiantid est fabriqué par une fonction (safe-url) qui supprime les espaces, les accents, etc. afin d'obtenir une url propre.

Exemple : l'ancre du sous-titre bien avant 1.4.2 Listes numérotées est

<h4 id="Listesnumerotees"> Listes numérotées</h4>.

Pour obtenir un renvoi à un titre interne à la page à ce pargraphe il faut taper le code Qlam

[voir § Listes numérotées->#Listesnumerotees]

Essayez : voir § Listes numérotées.

Note de bas de page

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. Essayez (1).

La note proprement dite se fait (habituellement en bas de page) avec la balise #note n. Le contenu de la note doit se terminer par une ligne vide.

Javascript

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('I' est ' ' h + ':' + m + ':' + s); 

Avec un argument la balise #js nomduscript produit le code :

<script src="script/nomduscript.js></script>

Inclure un fichier html

On peut inclure un fichier html avec la balise #include chemin/fichier.html.

installation

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 :


Notes de bas de page

(1)

Ceci est la note de bas de bas de page crée dans le pargraphe 1.8 Note de bas de page




Réalisé avec Qlam - LGPL