Suite au précédent article sur la réalisation de calendriers avec l’aide de Fotowall, voici une alternative au calendrier mensuel « rectangulaire ». En effet, le calendrier affiché par la commande cal a l’avantage d’être compact. Cependant, on peut très bien préférer un affichage des mois sous forme « verticale », notamment pour avoir la possibilité d’annoter de petites choses en face d’une date.
Ce calendrier « vertical » m’a posé deux difficultés :
- La commande cal ne permet pas un affichage autre qu’une semaine par ligne… Il a donc fallu que je fasse un peu de programmation…
- Dans le cas du calendrier « rectangulaire », Scribus remplissait parfaitement son rôle pour faciliter la mise en forme à l’aide des styles. Malheureusement ce n’est plus du tout le cas avec le calendrier « vertical », qui oblige à séparer chaque ligne, soit par un trait, soit par un fond coloré alternatif, afin de faciliter la lecture. Je me suis donc tourné vers OpenOffice, mais vous verrez que tout n’est pas simple… Dans le cas du calendrier « vertical », j’ai d’abord pensé que Scribus ne permettrait tout simplement pas d’obtenir des résultats satisfaisants. Après une longue réflexion, j’ai finalement conclu que le format du calendrier ne changeait rien au problème, et que Scribus est donc tout à fait adapté ! Ce constat ayant été fait après la réalisation du présent article, la solution avec Scribus ne sera pas abordée ici. Les personnes intéressées par une utilisation de Scribus, qui apporte notamment le format vectoriel SVG et la transparence, pourront toujours se tourner vers le précédent article pour s’en inspirer : Réaliser un calendrier pèle-mêle. L’exemple ci-dessous avec l’utilisation d’OpenOffice permet en outre de bien comprendre que pour parvenir à un résultat, il existe plusieurs solutions, chacune avec ses avantages et ses inconvénients.
La commande cal revisitée
Comme expliqué un peu plus haut, la commande cal n’affiche le calendrier que d’une seule façon : un jour par colonne et une semaine par ligne. Pour continuer à profiter de la simplicité de la ligne de commande (je dois dire que j’aime bien le Bash !), j’ai décidé de développer un bout de code permettant de modifier l’affichage de cal. Ce script Bash est largement perfectible et nécessitera sans doute quelques petits arrangements pour coller à l’utilisation de certains.
#!/bin/bash mois=$1 annee=$2 i=0 cal -m $mois $annee | while read ligne do i=`echo $i + 1 | bc` if test $i -lt 3 then continue fi if test "$ligne" != "" then j=1 if test $i -eq 3 then j=8 for nombre in $ligne do j=`echo $j - 1 | bc` done fi for nombre in $ligne do case $j in 1) printf 'lun %2.0f\n' $nombre ;; 2) printf 'mar %2.0f\n' $nombre ;; 3) printf 'mer %2.0f\n' $nombre ;; 4) printf 'jeu %2.0f\n' $nombre ;; 5) printf 'ven %2.0f\n' $nombre ;; 6) printf 'sam %2.0f\n' $nombre ;; 7) printf 'dim %2.0f\n' $nombre ;; esac j=`echo $j + 1 | bc` done fi done exit 0
C’est moche et obscur, pas vrai ? 8) Vous pourrez retrouver ce script au sein de l’archive zip présente un peu plus bas dans l’article. Celui-ci s’utilise exactement de la même façon que la commande cal, et prend en conséquence, un paramètre mois compris entre 1 et 12, et un paramètre année.
Mise en forme avec OpenOffice
Qu’on se le dise, aucune solution ne m’a réellement satisfait pour réaliser la mise en forme de ce calendrier. La seule solution trouvée, et ne consistant pas à concevoir un énième bout de code en Bash ou en PHP pour produire du SVG… Euh, bref, la seule possibilité trouvée pour profiter autant que possible des outils courants*, et par là même, de la gestion des styles de ces outils, a consisté à copier-coller la sortie de ma commande « cal2 » dans le tableur d’OpenOffice. Calc permet de gérer les styles sur les cellules, ce qui permet de retomber dans la même configuration que Scribus avec les paragraphes, à peu de choses près. Le fichier calendrier_modele.ots présent dans l’archive zip est un modèle de tableur avec quelques styles pré-définis pour faciliter la mise en forme des calendriers mensuels.
Malheureusement, Calc ne permet pas l’export sous forme d’image. Pour pouvoir faire cet export, j’ai été obligé de faire appel à Draw, lui aussi faisant partie de la suite OpenOffice. Pour insérer un tableur dans une page de Draw, il faut cliquer sur Insertion > Objet > Objet OLE, puis cliquer sur l’onglet « Créer à partir d’un fichier« . Le fichier calendrier_convertisseur.odg présent dans l’archive zip, est là à titre d’exemple. Pour fonctionner, il requiert les 12 fichiers *.ods représentant chacun des mois, qui pourront être remplacés par de nouveaux calendriers. Pour ce faire, la démarche est simple : utilisez le modèle en copiant-collant un premier calendrier, adaptez l’apparence des cellules à l’aide des styles, modifiez les styles selon vos goûts, et enregistrez votre mois en écrasant le fichier .ods correspondant. Votre calendrier apparaîtra automatiquement à la prochaine ouverture du fichier calendrier_convertisseur.odg !
La production des images me laisse encore une fois sur ma faim. Avec cette méthode, impossible d’obtenir un résultat satisfaisant en SVG (image vectorielle). Il faut donc se contenter d’un format d’image PNG ou JPG (image matricielle), intrinsèquement limité par sa résolution en pixels. Quoi qu’il en soit, pour produire une image de chaque page dans Draw, il vous suffira de cliquer sur Fichier >Exporter, et sélectionner le format de fichier approprié, PNG ou JPG, selon votre préférance. Le format PNG ne permettra même pas d’obtenir un fond transparent, ce qui est une autre mini-déception… 🙁
Une fois vos images créées… si toutefois vous avez eu le courage de suivre toutes ces instructions… si toutefois vous avez eu le courage de me lire… il ne vous reste plus qu’à les ajouter à vos pèle-mêles dans Fotowall. Voici un résultat de ce que cela a donné avec les fichiers de l’archive zip.
Pour disposer de tous les fichiers nécessaires à la réalisation d’un calendrier, je vous invite à télécharger l’archive zip et à décompresser son contenu. Bien évidemment, les utilisateurs sous Windows, donc pratiquement tout le monde, ne seront pas en mesure de lancer le script cal2… Ne désespérez pas ! Vous pouvez toujours taper les dates à la main…
Comme précisé en début d’article, Scribus permet bel et bien de réaliser des calendriers sous forme verticale. L’exemple ci-dessous a donc directement pu profiter du format SVG et de la transparence du fond, même si une conversion intermédiaire en PNG a été requise en raison d’un mauvais affichage des caractères.

* Pour les linuxiens, la commande cal fait bel et bien partie des outils courants…