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 : >  > Ajoute des compléments d’information ou des précisions utiles. \ >  > Partage des conseils pratiques ou des recommandations. \ >  > Insiste sur des éléments essentiels à retenir. \ >  > Signale des erreurs courantes ou des points de vigilance. \ >  > 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. |
OK, voici la solution : Faire un filtre (en LUA vu que j'utilise 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 : 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 |
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.