Lors de ma dernière mission chez EDF à Lyon, j'ai été amené à travailler sur un projet de génération automatique de notes de calcul. Ce projet avait pour but de programmer avec Python une interface pour générer des notes de calcul de neutronique en utilisant Pandoc ou Sphinx pour créer les documents.
Après un travail de recherche sur les fonctionnalités de ces programmes et de développement en Python j'en suis arrivé à un bilan plutôt mitigé sur la possibilité de générer des documents de qualités avec ces outils. Les raisons en sont multiples:
Python est un langage de scripte qui n'est absolument pas adapté pour des projets de grande ampleur nécessitant des modifications régulières sur le long terme.
Le typage dynamique empêche le développeur de détecter les erreurs pendant la phase de développement. Les bugs n'apparaissent que pendant l'utilisation du programme.
Le fonctionnement en mode interprété donne globalement de mauvaise performances.
Sphinx est un outil dédié à la génération de documentation pour Python et absolument pas pour produire de la documentation technique à caractère scientifique.
Les langages de marquage Markdown et ReST ont beaucoup de lacunes au niveau de leurs fonctionnalités. Certaines améliorations ont été apportées par Pandoc et Sphinx pour palier à ces manques mais pas de manière satisfaisante et pas de façon officielle.
Ces outils sont destinés au départ à des informaticiens et pas à des ingénieurs en mécanique/neutronique.
Fort de ces constats, j'ai commencé en février 2019 à réfléchir à un langage de marquage qui serait dédié aux notes à caractère scientifique et qui supporterait toutes les fonctionnalités manquantes de Markdown et ReST.
Parmi ces fonctionnalités, il devra y avoir:
La possibilité d'utiliser tous les styles d'écriture possibles.
Gras.
Italique.
Souligné.
Barré.
Exposant.
Indice.
Création de liens et de renvois vers différentes sections du document.
Création de tableaux avec la possibilité de définir la taille et l'alignement des colonnes.
Création de formules mathématiques avec un langage dédié.
Insertion simple d'images et de figures avec la possibilité de définir la taille des images.
Le fonctionnement de ce programme sera globalement le même que celui de LaTeX. L'utilisateur se concentrera sur le fond du document (contenu) et non sur la forme (apparence).
L'apparence du document pourra être modifiée lors de la compilation afin de produire des documents avec différents rendus.
Le programme principal devra être capable d'effectuer les tâches suivantes:
Analyse du document sous forme d'un code source.
Vérification de la cohérence du code.
Compilation du document sous différents formats.
HTML (Pour diffuser le document sur internet).
Open Document (Le format de Libre Office).
LaTeX (Pour pouvoir compiler le document avec LaTeX ou XeTeX)
Bien évidemment, j'ai commencé le développement avec Haskell afin d'avoir un programme fiable et facile à faire évoluer.
Parti de rien en Mars 2018, avec une phase d'analyse de faisabilité et de mise au point assez longue durant l'année 20181, le développement a beaucoup progressé en 2019/2020 pour accélérer encore en 2021.
Le fonctionnement global du programme est présenté dans les schémas ci-dessous :
La plupart des fonctionnalités sont implémentées et MarkIt est déjà capable de produire des documents au format HTML, LaTeX et ODT (Open Document).
Il est désormais possible de générer des articles, des rapports, des livres et avec quelques modifications l'ensemble de mon site internet.
Ci-dessous, quelques documents générés avec MarkIt :
L'article de présentation (en français) du langage de marquage MarkIt et les fonctionnalités: Introduction à MarkIt
L'article de présentation (en anglais) des fonctionnalités mathématiques de MarkIt: Test of mathematic formulas with MarkIt
L'article qui avait été publié en 2005 dans le cadre mon projet de fin d'étude: Publication DIPI 2005
Le même article au format ODT: Publication DIPI 2005 ODT
Mon rapport de fin de période industrielle effectuée chez SULLAIR Europe en 2003: Rapport stage SULLAIR 2003
Le même rapport au format ODT: Rapport stage SULLAIR 2003 ODT
Notes
1.↑ |
Je travaillais sur d'autres sujets en parallèle et la phase de définition du langage a pris plus de temps que prévu. |