Zettlr : markdown puissance dix
☙ Posté le 18-02-2020
(modifié le 01-11-2020)
| ⏱ 16 minutes
| ✔ 3301 mots
✎ Christophe Masutti
Le logiciel libre a toujours quelque chose de magique. Cédant au plaisir coupable d’une attitude consommatrice, on se met à essayer frénétiquement plusieurs solutions logicielles, rien que « pour voir ». Zettlr fera-t-il partie de ces nombreux éditeurs markdown que je recense dans l’espoir de trouver le Graal du genre ? Attention : on n’essaye pas Zettlr sans en comprendre d’abord les objectifs.
Comparaison et flux de travail
Dès les premières pages de présentation dans la documentation de Zettlr, on voit clairement que pour se servir de ce logiciel, il faut de bonnes raisons.
On peut expliquer ces raisons en comparant Zettlr avec d’autres éditeurs spécialisés dans le markdown. Essayons par exemple de le comparer Ghostwriter (j’en ai parlé dans ce billet), du point de vue utilisateur.
La première différence c’est que là où Ghostwriter propose une interface très facile et rapide à prendre en main… Zettlr n’est pas aussi explicite. Bien sûr, on peut d’emblée commencer à écrire en markdown, enregistrer un fichier, mais ce n’est pas le but unique de Zettlr. Si Ghostwriter se concentre avant tout sur la partie éditeur, Zettlr est à la fois dédié à l’écriture et à la gestion de connaissances. Et pour cause, il a été créé et il est utilisé essentiellement dans le monde universitaire. C’est donc dans un contexte qui concerne les documents longs qu’il faut appréhender Zettlr, là où Ghostwriter servira bien la cause pour écrire un billet de blog, par exemple.
En fait tout se joue dans la manière dont on intègre un éditeur markdown dans un flux de travail. Dans mon cas, l’éditeur que j’utilise ne constitue pas un nœud décisif, ce qui fait que, selon les situations, je peux opter pour un autre éditeur (spécialisé ou non dans le markdown) pour continuer à travailler sur le même document.
J’aime bien avoir cette possibilité d’utiliser plusieurs éditeurs pour un même fichier, indépendamment du système sur lequel je travaille. Ensuite, pour produire le document final, j’exporte directement dans un format donné (si l’éditeur le permet) ou bien j’utilise pandoc qui me permet de transformer le fichier markdown en à peu près tout ce que je veux. Dans ce cas, je « sors » de l’éditeur pour utiliser la ligne de commande, puis une fois le document produit, j’utilise un autre logiciel pour terminer ma production selon le format choisi (LibreOffice pour.odt
, un éditeur TeX pour(La).TeX
, un éditeur de texte pour le .html
, LibreOffice pour .docx
, etc.). Pour les questions liées à la gestion de la bibliographie, c’est un peu complexe, puisque je suis contraint d’ouvrir, en plus de mon éditeur, un gestionnaire de bibliographie tel Zotero ou JabRef, repérer les clé bibtex des références, les insérer sous la forme [@dupont1955]
.
Tout dépend des goûts, mais on voit bien qu’un éditeur markdown trouve vite ses limites lorsqu’on commence à intégrer le markdown dans une démarche de rédaction plus « soutenue » et afin de rédiger des documents longs. Des allers-retour avec d’autres logiciels (notamment pour la gestion de la bibliographie) sont nécessaires.
Bien sûr les éditeurs comme Ghostwriter permettent de faire des exports en différents formats. Ils peuvent même créer du PDF en utilisant LaTeX (c’est d’ailleurs l’option recommandée pour un bon résultat, à condition d’avoir préalablement installé LaTeX). Mais il faut savoir se méfier des solutions qui prétendent tout faire. Ainsi, lorsqu’on commence à manipuler de la bibliographie, les « exports-gadgets » sont plus encombrants qu’autre chose. Cependant, il faut reconnaître que Zettlr a plutôt bien réussi à intégrer ces fonctionnalités d’export.
Pour ce qui me concerne, la solution que j’ai adoptée consiste à utiliser un éditeur de texte nommé Atom qui dispose d’extensions permettant d’écrire en markdown, faire de l’autocomplétion avec du Bibtex, intégrer un convertisseur avec pandoc et utiliser la console pour lancer des commandes (et plein d’autres choses). Cela me permet d’avoir mon flux de travail concentré pour l’essentiel sur un seul logiciel et utiliser les fonctionnalités au besoin, en gardant l’avantage de segmenter l’activité.
Alors, si de tels couteaux suisses existent, me demanderez-vous, pourquoi s’intéresser à Zettlr ? parce que les couteaux suisses demandent un temps d’apprentissage assez long, disposent d’une foule de fonctionnalités au point de s’y perdre et que Zettlr cherche à concentrer l’essentiel (avec quelques bémols toutefois).
De la gestion de connaissance
Avant de parler des fonctionnalités concrètes de Zettlr, il faut questionner l’ambition générale de ce logiciel.
Il a été créé essentiellement pour les chercheurs et les écrivains. C’est d’ailleurs un chercheur en sciences humaines, Hendrik Erz, qui a créé Zettlr afin de pouvoir sortir du carcan « traitement de texte » qui ne correspond pas vraiment aux besoins lorsqu’on écrit ou prend des notes dans une activité de production de connaissances (là où le traitement de texte devrait intervenir à une étape ultérieure de « mise au propre »).
Quels sont ces besoins ? pouvoir écrire en se concentrant sur ce qu’on écrit, tout en disposant d’une aide pour accéder aux ressources cognitives qu’on aura prit soin d’organiser en amont.
Cette organisation passe par la gestion bibliographique (à l’aide de logiciels dédiés tels Zotero) ainsi que par la gestion des notes et autres notices ou fiches que l’on stocke dans un système de pensée qui nous est propre.
Pour ce qui concerne la gestion bibliographique, l’utilisation de logiciels dédiés (et capables de sortir différents formats de bibliographie) est une habitude que bon nombre de chercheurs ont déjà (si ce n’est pas le cas, il y a un problème). Zettlr permet d’intégrer l’utilisation de références bibliographiques au cours du travail d’écriture dans l’éditeur markdown. Il suffit de renseigner le fichier .bib (ou CSL Json, qu’on obtient avec Zotero) puis Zettlr permet son utilisation au cour de la frappe. Cela rappelle par exemple l'extension Zotero qu’on installe dans LibreOffice, mais de manière plus brute et beaucoup plus fluide.
Pour ce qui concerne la mobilisation des connaissances, Zettlr a été conçu pour créer un système de Zettelkästen. On le note en allemand (ici au pluriel) parce que, pour un néophyte qui se rendrait dans les options de configuration de Zettlr, il y a une rubrique entièrement dédiée au « flux de travail Zettelkasten », et très franchement ça peut surprendre (sauf qu’on comprend aussi pourquoi Zettlr se nomme ainsi).
Une Zettelkasten signifie littéralement « boîte » (der Kasten) à notices ou pense-bêtes (der Zettel). Personnellement j’appelle cela une « boîte à fiches ». Dans ce cas, direz-vous, il y a déjà des logiciels spécialisés dans les « notes », y compris en permettant de synchroniser en ligne, avec une interface pour smartphone, etc. Oui, évidemment, et il n’est pas idiot de penser que, dans la mesure où ces logiciels de prise de notes utilisent le plus souvent le markdown, ces notes peuvent aussi être ouvertes avec Zettlr (c’est que je fais). Mais cela va plus loin.
Zettlr permet de créer des fiches tout en créant soi-même un système de rangement. C’est ce qui est expliqué ici. Le logiciel ne cherche pas à formater les notes ou à créer une seule manière de les rédiger ou les stocker : c’est à vous de créer votre système de rangement. On utilise alors pour cela les outils courants de liens externes entre les fiches et les mots-clés qu’on note pour chaque fiche. Un genre wiki, si on veut (même si un logiciel comme Dokuwiki sera bien plus puissant), mais sans quitter Zettlr.
L’intérêt réside selon moi dans la création et le nommage des fiches. Selon le besoin, il est possible de configurer l’identifiant de la fiche (le nom du fichier) et créer des liens entre les fiches en profitant de l’assistant (menu contextuel qui liste les noms de fiche). Ces fonctionnalités sont très simples, on pourra même les qualifier de basiques, mais à l’utilisation quotidienne, elle permettent un réel gain de temps… Et à propos de temps on notera que si Zettlr propose un format d’export en Org
(pour Emacs), ce n’est pas pour rien !
Aide à la saisie
Zettlr est d’abord un éditeur markdown et le moins qu’on puisse dire est qu’il accompli ce rôle avec brio. L’aide à la saisie, indissociable de l’interface, est soignée.
Outre un petit menu, en haut, dédié à la mise en forme, on notera :
- la visibilité automatique des titres de section, avec la possibilité de masquer la section ;
- l’aide à la saisie de tableaux ;
- quelques raccourcis et astuces (voir la documentation) tels la combinaison
Ctrl + alt + F
qui permet d’entrer une référence de note de bas de page automatiquement, ou encoreCtrl + alt + pointage curseur
qui permet de saisir le même texte à deux endroits en même temps…
Correction en cours de frappe
L’ajout d’une fonction de correction basée sur des dictionnaires est quelque chose d’assez banal. Zettlr l’intègre pour plusieurs langues et c’est un atout très important. Mais pour un éditeur markdown, la possibilité de configurer soi-même la correction en cours de frappe est, osons le dire, assez exceptionnel. Ainsi, dans Paramètres > AutoCorrect
il est possible d’activer l’utilisation des guillemets selon le contexte linguistique, mais aussi toutes sortes de saisies utiles, en particulier pour la typographie. Ainsi, on peut faire en sorte que la frappe d’un double point soit remplacée par une séquence qui associe une espace insécable (AltGr + Esp
) et un double point, et toutes autres joyeusetés relatives aux règles typographiques.
Travailler par projet
Comme le font beaucoup d’éditeurs, en particulier pour la programmation, l’utilisation de Zettlr sera d’autant plus efficace si vous optimisez la gestion des fichiers en créant un dossier par projet. C’est ce dossier que vous ouvrez alors, et c’est dans ce dossier que seront listés les fichiers que vous créez (dans le panneau de gauche). Ainsi, dans les options d’export, je conseillerais plutôt de cocher l’option qui consiste à sauvegarder les fichiers exportés dans le dossier en cours.
La bibliographie
Comme mentionné plus haut, Zettlr fournir un outil d’aide à la saisie de références bibliographiques.
Le principe qui a été retenu par les créateurs est celui-ci : dans les paramètres, vous entrez le chemin du fichier de bibliographie que vous avez créé. Vous pouvez entrer un fichier .bib
ou un fichier .json
créé par exemple avec Zotero.
À la différence de la gestion bibliographique via une extension Zotero ou JabRef dans le logiciel de traitement de texte tel LibreOffice, il faut entrer le chemin du fichier .bib
ou .json
dans les paramètres et ce seront ces données qui seront utilisées par Zettlr. Évidemment, si vous complétez votre bibliographie il faut s’assurer que Zettlr pourra bien trouver dans le fichier vos nouvelles références sans pour autant remplacer le fichier à chaque fois et devoir recharger Zettlr. Une fonctionnalité de Zotero vous sera très utile pour cela :
- Dans Zotero, sélectionnez la bibliothèque que vous souhaitez exporter, clic droit puis
Exporter la bibliothèque
- Sélectionnez le format Better BibTeX ou Json et cochez la case
Garder à jour
- Sauvegardez et entrez le chemin vers ce fichier dans Zettlr
- Désormais, lorsque la bibliothèque Zotero subira des modifications, le fichier d’export sera toujours à jour (et vous retrouverez vos nouvelles références)
À mes yeux, c’est une posture bancale. Certes, le fichier sera toujours à jour mais c’est une fonctionnalité qui dépend d’un autre programme (et tant pis si vous n’aimez pas Zotero). Par ailleurs, cela implique aussi que le fichier de bibliographie soit le même pour tous vos projets, ce qui signifie que si, comme moi, vous avez une biblio séparée pour chaque projet dans Zotero, la seule bibliothèque à exporter, c’est la principale. Cela dit, une fois configurée la bibliographie, Zettlr permet l’autocomplétion des références, ce qui est déjà d’une grande aide.
Ceci est valable aussi pour la configuration du format de bibliographie à la production de sortie, c’est-à-dire à l’export. En effet, pour formater la bibliographie, Zettlr permet de sélectionner le fichier de style CSL (que vous pourrez trouver sur ce dépôt ou via ce configurateur – reportez-vous à la section Bibliographie de ce billet pour comprendre de quoi il s’agit). Là encore, l’idée me semble bancale : si vous rédigez plusieurs documents avec des exigences différentes de format de bibliographie, il faut changer à chaque fois.
Donc idéalement, l’une des prochaines améliorations de Zettlr devrait inclure une solution d’extension Zotero ou JabRef capable de générer le fichier de bibliographie final à la volée et une solution de sélection de fichiers de style CSL. Plus facile à dire qu’à faire…
Export et pandoc
Pour utiliser les fonctionnalités d’export de Zettlr, il vous faut le logiciel pandoc installé sur votre système. Vous ne serez pas efficace si vous ne connaissez pas dans les grandes lignes le fonctionnement de ce logiciel… Qui ne connaît pas pandoc aura toutes les peines du monde à comprendre comment Zettlr exporte les fichiers dans un format choisi.
Pandoc est un logiciel de conversion muti-format très puissant et avec des résultats très propres (il ne s’encombre pas de formules polluantes qui rendent inutilisables les fichiers produits). Là où pandoc prend toute sa valeur dans notre cas, c’est qu’il permet de transformer le format markdown en à peu près tout ce que vous voulez. Par ailleurs, il est capable non seulement de convertir, mais aussi de convertir en utilisant des modèles et même d’autres logiciels qui paramètrent la conversion. Je vous invite à lire ce billet à propos de la manipulation de documents markdown et ce billet à propos de pandoc et LaTeX pour vous faire une idée (complétez aussi par celui-ci).
Ces lectures vont vous permettre de mieux comprendre la section des paramètres avancés de Zettlr.
Dans l’illustration, la liste des annexes concerne les fichiers que vous allez voir figurer dans le panneau latéral de droite (en cliquant sur la petit trombone) lorsque vous liez des documents annexes à votre document. Quant aux chemins vers pandoc et XeLaTeX, inutile de vous en soucier, pourvu que ces programmes soient bien installés.
Ce qui nous intéresse dans les paramètres avancés, c’est la commande pandoc réservée aux « utilisateurs avancés seulement ». Parce qu’en réalité, elle détermine comment pandoc doit fonctionner avec Zettlr. Essayons de comprendre.
Pandoc est un logiciel dont l’usage est simple. Ce n’est pas parce qu’il s’utilise en ligne de commande que cela en fait un logiciel compliqué. La preuve : pour utiliser pandoc, vous devez lancer la commande pandoc
en précisant le fichier sur lequel vous voulez travailler, le nom du fichier à produire et les options et formats choisis pour la conversion. Ainsi la commande
$pandoc source.md -o sortie.odt
Consiste à produire un fichier .odt
nommé « sortie » à partir d’un fichier nommé « source ». Le -o
signifie « output » (vers la sortie).
Une variante pourrait être :
$pandoc -f markdown -t odt bonjour.md
… c’est à dire transformer le fichier « bonjour.md » du markdown vers (-f
c-à-d. : from markdown vers -t
c-à-d. : to) le .odt
.
Ça va jusque là ? vous voyez il n’y a rien de compliqué. Continuons un peu.
Pandoc ne fait pas « que » convertir. Il est capable de convertir en utilisant des informations beaucoup plus complexes et qui permettent même d’enrichir le fichier de départ, surtout si ce dernier n’est qu’en markdown. Par exemple :
- avec le programme
citeproc
il est capable d’interpréter un format de bibliographie (en CSL) et on aura pris soin de renseigner dans la ligne de commande à la fois l’optionciteproc
et le chemin vers le fichier de bibliographie ; - avec
reveal.js
il est capable de sortir, à partir d’un fichier markdown rédigé à cette intention, une très jolie présentation en HTML qu’il reste à afficher dans un navigateur en vue de faire une conférence.
Maintenant imaginez que vous n’avez pas le nom du fichier source ni le nom de sortie et que vouliez permettre à un utilisateur de choisir le format de sortie. Et bien il vous reste à créer une ligne de commande qui, au lieu de donner des instruction rigides, propose des valeurs (avec des $
qui seront utilisées (ou pas). Et vous voilà avec la ligne de commande que propose Zettlr dans les paramètres avancés.
Exporter en PDF
L’export au format PDF à partir de Zettlr suppose que vous ayez LaTeX (et XeLaTeX) installé sur votre système. Si tel est le ca,s il vous reste à vous rendre dans le menu fichier > Paramètres de PDF
afin d’y renseigner divers éléments dont un modèle .tex
qui pourra être utilisé. Rendez-vous sur la documentation de Pandoc pour apprendre à vous en servir.
Attention : Si vous avez une version de pandoc antérieure à 2.0 (c’est le cas pour beaucoup d’installations), Zettlr (via pandoc) retournera une erreur du type unrecognized option --pdf-engine=xelatex
. L’explication se trouve ici. Il s’agit d’un changement qui a eu lieu pour pandoc 2.0 qui est passé de la commande --latex-engine=xelatex
à la commande --pdf-engine=xelatex
. Pour résoudre ce problème, remplacez simplement l’occurrence dans la ligne de commande pandoc que vous trouverez dans Paramètres > Paramètres avancés
. Ou bien installez la dernière version de pandoc.
Attention (bis) : Dans les options du PDF, section Police
sont indiquées les polices de caractères que pandoc utilisera pour la transformation en PDF via XeLaTeX. Si vous ne les avez pas sur votre système, un message d’erreur sera affiché. Indiquez à cet endroit les polices de caractères que vous souhaitez utiliser.
Les autres formats
Zettlr permet de faire des présentations en markdown puis de les exporter en utilisant reveal.js. Il vous reste donc à rédiger votre présentation et choisir parmi les modèles proposés (couleurs dominantes).
Vous pouvez aussi exporter directement en HTML : pour cela Zettlr dispose d’un modèle et exportera votre document en une page HTML contenant aussi les styles (on dit « standalone » ou option -s
avec pandoc).
Quand aux autres formats, le choix reste intéressant :
Format | Destiné pour |
---|---|
HTML | Navigateur |
.ODT | Traitement de texte type LibreOffice, MSWord, AbiWord, etc. |
.DOCX | Microsoft |
rST | ReStructuredText : mise en forme pour de la doc de langage type Python |
RTF | Rich Text Format : format descriptif pour traitement de texte |
TeX | Format pour TeX / LaTeX |
TXT | Format texte (simple) |
ORG | Pour Emacs Org (pour les utilisateurs d’org-mode, très puissant |
Bdl / Pck | TextBundle (un conteneur markdown + description + fichiers liés) / Variante |
… il manque selon moi la possibilité d’exporter en .epub
, un tâche dont s’acquitte très bien pandoc et qui pourrait avoir son application pour l’écriture de livre, lorsqu’on a plusieurs chapitres dans des fichiers séparés. Peut-être que cette fonctionnalité sera ajoutée ultérieurement.
Conclusion
Zettlr est un excellent logiciel qui tire de nombreux avantages du markdown dans le flux de production de documents longs et dans la gestion de documentation personnelle. Il pêche encore par manque de pédagogie, mais il est sur la bonne voie. Par ailleurs, sur les aspects qui concernent l’exportation, ce que propose Zettlr est une interface graphique de pandoc. Les habitués de al ligne de commande, comme moi, ne seront pas franchement épatés : j’estime qu’il à ce niveau plus important d’apprendre à complètement se servir de pandoc. Et s’il lui faut une interface graphique (et je pense que ce serait plutôt bien), dans ce cas, je préférerais largement un programme uniquement dédié aux fonctions de conversion de pandoc (et pas au markdown).
Des directions devront être envisagées en fonction du public visé pour Zettlr. Par exemple, au vu de son fonctionnement global, il pourrait tout à fait être utilisé en binôme avec Git et par conséquent intégrer des options spécialisées dans le versionning. Une autre possibilité consisterait à utiliser une connexion à un dépôt Nextcloud afin de pouvoir synchroniser facilement l’écriture de documents en markdown. Bien sûr, qu’il s’agisse de Git ou de Nextcloud, il est déjà possible soit de commiter les fichiers à part, soit de travailler dans un dossier distant, mais il s’agit-là de tâches spécialisées avec lesquelles tout le monde n’est pas familier.