渲染引擎
上级:corpus
StandMeet 的 markdown 管道在聊天回答、wiki/output 页面和 writings 中渲染富内容(app/src/components/page/markdown.tsx):remark-gfm + remark-math + rehype-katex + 一个 MermaidBlock 代码块覆盖 + rehype-sanitize。在提交 51ab1c2 中加入,在 9c36802 中扩展到 writings。那个代码块覆盖后来长成了一张按围栏语言查找的表(BLOCK_RENDERERS,markdown.tsx:58):mermaid / tikz / standmeet-widget / standmeet-html,各自懒加载;callout 由 remarkCallouts 提供。
我们真正追求的:对称性
这里每一个引擎选择的意义都在于创作端与展示端之间的对称性——两端使用同一个引擎,让在 Obsidian 中写下或画出的内容在 StandMeet 中原样渲染,导入时不出意外。由此得出的设计原则:只写两个引擎的交集,绝不写任何一方的全部特性。
| 关注点 | Obsidian(创作端) | StandMeet(渲染端) | 引擎 |
|---|---|---|---|
| 数学 | MathJax | KaTeX | katex |
| 图表 | 内置 mermaid | MermaidBlock | mermaid |
| 精确图形 | TikZJax 插件 | TikZBlock(2026-07-06 已上线,632ef6b4b;app/src/components/page/TikZBlock.tsx) | tikzjax |
对称性正是我们不去追求"最好"渲染器的原因——我们追求的是共享的那一个。