MarkIt

Problématique

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:

Projet

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:

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:

Développement

Bien évidemment, j'ai commencé le développement avec Haskell afin d'avoir un programme fiable et facile à faire évoluer.

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.

Le fonctionnement global du programme est présenté dans les schémas ci-dessous :

Markit
,
 
Fonctionnement
,
 
Markup
,
 
HTML
,
 
ODT
,
 
LaTeX
Markit
,
 
Fonctionnement
,
 
Markup
,
 
HTML
,
 
ODT
,
 
LaTeX

Markit
,
 
Block
,
 
Inline
,
 
Math
,
 
Paragraph
Markit
,
 
Block
,
 
Inline
,
 
Math
,
 
Paragraph

Ci-dessous, quelques documents générés avec MarkIt :