Le deuxième article est en ReStructuredText (rst) et en couleur…🔗
Normalement, si tout va bien, je peux faire joujou avec le format ReStructuredText qui est très proche de la syntaxe Wiki.
Gestion de la couleur syntaxique
Pour gérer la couleur syntaxique, il faut disposer des éléments suivant:
- python-pygments (pour lenny, il vaut mieux prendre la version backports).
- le module rst de pyblosxom.
- copier le fichier
/usr/share/doc/python-pygments/examples/rst-directive.py
dans le répertoire des plugins. - éditer ce fichier
rst-directive.py
en modifiant la variableINLINESTYLES
de False à True.
Toutes ces petites informations ont été récupérées sur le blog de GreyGreen.
À partir de maintenant, je peux utiliser la coloration syntaxique de manière simple. Un petit exemple en Python pour commencer:
Un exemple de SQL (une requête pour PostGIS):
Fin du test…
Édition externe
Il me faut également un moyen de gérer l'édition à distance. Pour cela, vu la simplicité de Pyblosxom, il suffit de trouver un moyen de poser un ou plusieurs fichiers distants. Je pense me tourner vers WebDav sur du HTTPS. La technique est éprouvée, elle permet de passer la majorité des proxys et des firewalls. SSL devrait permettre de chiffrer le trafic. Vu la taille des fichiers que je risque de déposer (du texte sous vim, des images assez réduites), le trafic doit être suffisant.
Donc, ce que je retiens comme solution, c'est la mise en place d'un partage Webdav en écriture sur toute la partie du blog. Ça permettra de gérer également les thèmes (flavours) de Pyblosxom sur lesquels, j'ai encore du travail… Toutefois, il faut encore régler un autre problème: celui des images !
Gestion des images
Maintenant que la rédaction et la forme du texte est bien gérée, il faut pouvoir mettre des images de manière simple. A vue de nez, le plus simple c'est pour les images externes:
On peut également utiliser les figures ce qui donne la chose suivante (avec la même image):
> Notez ici la présence d'une légende pour l'image.
Maintenant, le problème se pose pour les images internes. En effet, il faut déjà trouver un moyen de poser les images au bon endroit. Ensuite, il faut indiquer où elles se trouvent. Or, Pyblosxom ne traite pas l'emplacement des images. Le script CGI de Pyblosxom se contente de gérer les images avec des URL. Par exemple, si j'essaye de mettre une image locale, voici le résultat:
En gros, le script ne met pas d'image. Pourtant, l'image est bien présente dans le bon répertoire… Donc, comment gérer les images avec Pyblosxom ?
Après avoir étudié quelques sites qui tournent avec Blosxom ou Pyblosxom, je suis arrivé à déterminer différents modes de gestion:
- Mettre toutes les images dans un autre endroit du serveur Web (en gros: http://serveur.org/images/) et mettre des liens vers ces images.
- Utiliser un plugin qui permet à pyblosxom de "servir" des fichiers d'images.
- Mettre les images dans une autre arborescence servie par le serveur Web. Cette arborescence suit celle du Blog.
La solution du plugin pour Pyblosxom n'est pas intéressante: si ce n'est pas prévu dès le départ, c'est que ce n'est pas utile. Ensuite, il n'y a aucun intérêt à ce que le script CGI lise l'intégralité des images pour les resservir comme il faut.
Mettre tout dans le même répertoire c'est pénible pour le tri. En fait, si on observe la majorité des blogs sous Pyblosxom, il n'y a guère d'images… ça se comprend ! Donc, la solution est de stocker les images dans une autre arborescence que je vais nommer images/blog/catégorie/sub-catégorie/article_sans.html/nom_image
! Si tout va bien, et pour me conformer aux URL cools, je vais devoir trouver un moyen de générer les images selon leur type de manière à enlever les extensions. Mais ça, ce sera pour plus tard.
En plus de ces aspects purement fichiers, je n'ai pas trop envie de gérer les tailles d'images. En règle générale, dans les blogs, l'image est gérée en deux passes: dans le corps de l'article, les images sont de tailles réduites. Quand on clique dessus, une nouvelle page avec l'image en taille originale s'affiche. C'est ce que j'aimerais bien faire sans me prendre la tête, c'est-à-dire, sans devoir le faire à la main, car je pense que c'est une opération automatisable.
Après avoir tenté de coder un plugin pour faire ça, je me suis rendu compte qu'il n'était pas possible de le faire comme je le voulais: la séquence d'automatisation est impossible à gérer avec Pyblosxom. Donc, je vais utiliser juste la directive .. image::
avec l'option target et utiliser un script pour convertir mes images (les réduire). Le reste sera géré manuellement. Code du one-liner pour la conversion des images (à lancer dans le répertoire qui contient les images)
Inclusion de HTML
Parfois, il est bon de pouvoir inclure du HTML directement dans le texte. C'est particulièrement vrai pour inclure des cartes OpenStreetMap dynamiques par exemple. Tout cela est parfaitement possible grâce à la directive .. raw:: html
.
Voici un petit exemple de carte OpenStreetMap (ici une simple iframe mais je suppose qu'on peut utiliser l'API OpenLayers):