On ne présente plus le langage Markdown très utilisé notamment par les développeurs pour écrire les fichiers ReadMe ou les Release Notes des produits.

L'intérêt majeur de Markdown, outre le fait d'être aussi facile à lire qu'à écrire, est de pouvoir créer de "jolis" fichiers html très facilement.

Justement, comment fait-on sous Linux pour convertir un fichier .md en .html ?

Une première solution consiste à utiliser la commande markdown de John Gruber, qui est un script Perl prenant comme premier paramètre le fichier Markdown et renvoyant sur la sortie standard le fichier converti en html.

Si le fichier Markdown est en Anglais ou en ASCII 7 bits, aucun problème. Par contre si le fichier source comporte des accents et est encodé en UTF-8, l'affichage du fichier html dans un navigateur risque de poser problème en raison de l'absence de la balise suivante dans le fichier html généré:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

On peut évidemment ajouter la balise à la main mais bon ...

Une solution plus propre revient à installer la commande pandoc qui est une librairie Haskell permettant la conversion entre différents langages de markup.

En effet la commande pandoc dispose du flag --ascii qui permet de transformer chaque accent en la séquence d'échappement HTML équivalente. Du coup plus besoin de s'embêter avec le Content-Type puisque le fichier de sortie est en ASCII !

On procède comme suit:

pandoc --ascii \
--from=markdown \
--to=html \
input.md

Si vous avez le temps vous verrez que pandoc est un outil de conversion très puissant permettant de traiter beaucoup de formats en entrée (LaTeX, MediaWiki markup, HTML ...) et en sortie (EPUB, PDF, ...) en plus du Markdown.