在R Quarto中使用Mermaid与FontAwesome无法渲染图标怎么办?
解决Quarto/R Markdown中Mermaid嵌入FontAwesome图标的渲染问题
一、HTML/Reveal.JS 输出场景
这类Web格式下,Mermaid已生成FontAwesome对应的<i>标签,但缺少样式文件导致图标不显示。直接在Quarto文档的YAML配置中启用内置FontAwesome支持即可:
--- title: "演示文档" format: html: fontawesome: true revealjs: fontawesome: true ---
添加配置后,Quarto会自动引入FontAwesome的CSS资源,<i class="fab fa-twitter"></i>这类标签就能正常渲染为图标。
二、PPTX 输出场景
PPTX是静态文档,不支持Web端的CSS和HTML标签,因此Mermaid的fa:*语法无法直接生效。需将FontAwesome图标转为静态图片,再嵌入Mermaid流程图:
步骤1:用R的fontawesome包生成图标图片
安装并加载fontawesome包,生成所需的图标PNG文件:
install.packages("fontawesome") library(fontawesome) # 生成所需的FontAwesome图标图片 fa_png(name = "twitter", fill = "#1DA1F2", width = 24) %>% writeBin("twitter.png") fa_png(name = "ban", fill = "#dc3545", width = 24) %>% writeBin("ban.png") fa_png(name = "spinner", fill = "#6c757d", width = 24) %>% writeBin("spinner.png") fa_png(name = "camera-retro", fill = "#28a745", width = 24) %>% writeBin("camera-retro.png")
步骤2:修改Mermaid代码,使用图片替代fa:*语法
将原来的fa:*替换为Mermaid的图片引用语法:
flowchart TD B[" for peace"] B-->C[ forbidden] B-->D() B-->E(A  perhaps?)
渲染PPTX时,这些图片会被嵌入文档,实现图标的正常显示。
通用注意事项
- 若使用本地FontAwesome资源而非Quarto内置版本,可将CSS文件放在项目目录中,通过
include-in-header引入,避免依赖外部链接。 - 对于PDF等其他非Web输出格式,处理逻辑与PPTX一致,需将图标转为静态图片嵌入Mermaid。
内容的提问来源于stack exchange,提问作者wergeld
相关产品推荐
相关产品推荐

