Skip to main content
Seb's blog
logo PassionGNU/Linux

Explication sur le markdown utilisé sous Hugo.

Hugo est un projet très vivant --qui dit trop?–, contrairement à Pelican ou Jekyll qui n’ont que peu ou pas changé depuis des lustres et qui ne font rien ou pas grand chose pour heurter les habitudes de leurs utilisateurs ou les sortir de leurs zones de confort --c’est à mes yeux une grande qualité, qui me fait garder Debian comme OS–, ose bouger, changer, évoluer parfois radicalement comme avec la bibliothèque Markdown utilisée.

Depuis la version 0.60, Hugo a changé la bibliothèque par défaut utilisée pour Markdown de Blackfriday vers Goldmark. C’est rapide, c’est conforme à CommonMark et c’est très flexible. Sauf que l’ensemble des fonctionnalités de Goldmark vis-à-vis de Blackfriday n’est pas le même; on gagne beaucoup mais on en perd aussi, normalement ils combleront toutes lacunes dans les prochaines versions d’Hugo.

Le truc, c’est que dans les pertes ou modifications dû à ce changement, j’ai du code html qui n’est simplement pas interprété comme les <strike></strike>, <del></del> et <s></s> (qui revient au même que précédemment, c’est-à-dire barrer le contenu) ou bien les codes d’insertion de vidéos comme ceux de Youtube du style <iframe width="560" height="315" src="https://www.youtube.com/embed/6XO8g18cy7o" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> qui donnerait donc:

Clairement, leurs intentions sont louables, ils pensent que Markdown est puissant et lisible et que rajouter du code html dans un fichier markdown est crado, c’est vrai faut pas se mentir, on en perd la lisibilité de ce format. De plus ils compensent avec des shortcodes comme Wordpress et surtout l’autre GSS Zola. Pour une vidéo Youtube (la même que plus haut), au lieu du code html:

<iframe width="560" height="315" src="https://www.youtube.com/embed/6XO8g18cy7o" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

on aurait plus qu’a placer le shortcode correspondant:

{{</* youtube 6XO8g18cy7o */>}}

(–Notez que si vous voulez avoir un contenu qui ressemble à un shortcode mais que Hugo n’essaye pas de l’interpréter comme tel, vous devrez l’échapper en utilisant {{</** et **/>}} au lieu de {{</* et */>}}.–)

Pareil pour les mots barrés, au lieu de mettre <strike></strike>, <del></del> ou <s></s>, on place le/s mot/s entre ~~~~.

Mais de mon point de vue, on doit laisser le choix, surtout que j’ai utilisé ou j’utilise des GSS qui ont le Markdown “originel” et qui pour le coup me force à repasser les bouts de code en html. Pelican en est un parfait exemple.

Donc pour ceux qui comme moi ont besoin que Hugo interprète le code html dans nos fichiers .md, quelques paramètres doivent être expliqués:

Par défaut, Goldmark ne rend pas les HTML bruts et les liens potentiellement dangereux. Si vous avez beaucoup de HTML et / ou JavaScript en ligne, vous devrez peut-être l’activer.

Pour qu’on retrouve un comportement plus “commun”, on va réactiver le html dans notre fichier de conf.toml en y ajoutant ceci:

[markup]
  [markup.goldmark]
    [markup.goldmark.extensions]
      definitionList = true
      footnote = true
      linkify = true
      strikethrough = true
      table = true
      taskList = true
      typographer = true
    [markup.goldmark.parser]
      attribute = true
      autoHeadingID = true
      autoHeadingIDType = "github"
    [markup.goldmark.renderer]
      hardWraps = false
      unsafe = false
      xhtml = false

Avec ça, on retrouve nos habitudes peut être sales mais c’est ainsi.

Commencer la discussion: Venez écrire un commentaire dans le forum.