N'ayant pas assez de points de réputation, je partage un lien pour télécharger une image qui représente une série d'alertes que j'aimerais retrouver avec une compilation d'un fichier Markdown via Pandoc en PDF (en utilisant LaTeX comme moteur de rendu).

Voici ce que j'utilise dans le fichier Markdown pour afficher une alerte :

> ![Note](./note.svg)
> Ajoute des compléments d’information ou des précisions utiles.

\

> ![Tip](./lightbulb.svg)
> Partage des conseils pratiques ou des recommandations.

\

> ![Important](./important.svg)
> Insiste sur des éléments essentiels à retenir.

\

> ![Warning](./warning.svg)
> Signale des erreurs courantes ou des points de vigilance.

\

> ![Caution](./fire.svg)
> Préviens des conséquences négatives potentielles d’une action ou d’une décision.

Le logiciel que j'utilise est iA Writer, et il n'est pas compatible avec GFM qui intègre des alertes que vous pouvez voir ici : https://github.com/orgs/community/discussions/16925

Comme avec iA Writer je peux modifier le résultat avec du CSS, j'ai pu obtenir ce que je cherchais : https://www.swisstransfer.com/d/df445e82-faa9-49ba-b2b2-47524cd57ac8

Je ne suis pas certain que ce résultat est possible avec LaTeX, je ne sais pas non plus si il y a des paquets qui existent pour obtenir ce genre de résultat et je n'ai aucune idée de comment atteindre cet objectif. Mais dans le cas où cela est possible, je peux modifier la syntaxe du Markdown et je suis prêt a avoir un résultat différent que celui attendu.

Je reste donc ouvert à toute proposition.

Posée 26 Mar, 19:39

LaTeXBold's gravatar image

LaTeXBold
957
Taux d'acceptation : 6%

Voir callouts-box, plus général : tcolorbox. Plus spécialisé : postit. Dans un autre genre : alertmessage.

On peut consulter le CTAN avec comme "topics" "boxing". Il y a embarras du choix.

(26 Mar, 19:52) Le TeXnicien de surface Le%20TeXnicien%20de%20surface's gravatar image

OK, voici la solution :

Faire un filtre (en LUA vu que j'utilise lualatex) :

function BlockQuote(el)
  -- Vérifie si la citation contient une image
  if #el.content > 0 and el.content[1].t == "Para" then
    local para = el.content[1]
    if #para.content > 1 and para.content[1].t == "Image" then
      local img = para.content[1]

      -- Associe les images à leur alerte LaTeX correspondante
      local alert_types = {
        ["note.svg"] = "alertinfo",
        ["lightbulb.svg"] = "alertinfo",
        ["important.svg"] = "alertwarning",
        ["warning.svg"] = "alertdanger",
        ["fire.svg"] = "alertcaution"
      }

      -- Vérifie si l'image correspond à une alerte
      local alert_cmd = alert_types[img.src:match("[^/]+$")]

      if alert_cmd then
        -- Récupère uniquement le texte après l'image
        local message_parts = {}
        for i = 2, #para.content do  -- Commence après l'image
          table.insert(message_parts, pandoc.utils.stringify(para.content[i]))
        end

        local message = table.concat(message_parts, " ") -- Assemble le texte
        return pandoc.RawBlock("latex", "\\" .. alert_cmd .. "{" .. message .. "}")
      end
    end
  end
end

Insérer dans le template le paquet suivant : \usepackage{alertmessage}.

Prendre en compte le filtre dans la commande Pandoc :

pandoc test.md --pdf-engine=lualatex --from markdown+hard_line_breaks+mark+emoji --metadata-file=metadata.yaml --template=template.tex --no-highlight --lua-filter=newpage.lua --lua-filter=alert.lua -o livre.pdf
Lien permanent

Publiée 26 Mar, 22:21

LaTeXBold's gravatar image

LaTeXBold
957
Taux d'acceptation : 6%

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.

Mots-clés de la question :

×42
×7
×5
×1

Question posée : 26 Mar, 19:39

Question vue : 272 fois

Dernière mise à jour : 26 Mar, 22:21