为什么 mermaid/draw.io 生成的 SVG 图片导入后没有文字?
参考 Working with mermaid in typst,mermaid 和 draw.io 默认生成的 SVG 图片含有 HTML Foreign Object,因此只能在浏览器中正常显示,导入到 Typst 后文字会消失。
目前推荐首先使用 mermaid cli 导出 PDF,再使用 mutool draw 将 PDF 转换为 SVG。
如何下载 mutool
前往 MuPDF Releases 并选择 MuPDF,然后下载最新的mupdf-*-windows.zip(~90 MB),使用其中的mutool.exe(~40 MB)。
注意每个 1.x 版本的最后若干 0.x.y patch 版本只提供源代码(source only),没有能直接下载的可执行文件。请在页面内搜索-windows.zip找能下载的版本。
bash
# mermaid → PDF
mmdc --input in.mmd --output out.pdf --pdfFit
# PDF → SVG
mutool draw -o final.svg out.pdf
# 去除 mutool 自动加的页码
mv final1.svg final.svg或直接使用位图格式(PNG/JPG)。
另法:直接在 Typst 内画图
另外也可考虑用 oxdraw 包直接绘图。
typst
#import "@preview/oxdraw:0.1.0": oxdraw
#oxdraw(```mermaid
graph LR
subgraph 五行
金[金 🔑]
木[木 🌳]
土[土 ⛰️]
水[水 🌊]
火[火 🔥]
end
subgraph 四元素
earth[土 ⛰️]
water[水 🌊]
air[气 💨]
fire[火 🔥]
end
火 --> fire
土 --> earth
水 --> water
```)
不过 oxdraw 使用 rust 复刻版渲染,语法与原版 mermaid 不完全兼容。例如,-->前不允许换行,不然会报以下错误。
plugin errored with: Failed to parse diagram: encountered empty node reference





