Skip to content

SVG 图形

VMark 为 SVG(可缩放矢量图形)提供一流支持。在文档中使用 SVG 有两种方式,各自适合不同的工作流。

方式最适合可编辑源码?
图片嵌入![](file.svg)磁盘上的静态 SVG 文件
代码块```svg内联 SVG、AI 生成的图形

将 SVG 嵌入为图片

使用标准 Markdown 图片语法嵌入 SVG 文件:

markdown
![架构图](./assets/architecture.svg)

这与 PNG 或 JPEG 图片的使用方式完全相同——拖放、粘贴或通过工具栏插入。SVG 文件会被识别为图片并内联渲染。

适用场景: 你有一个 .svg 文件(来自 Figma、Illustrator、Inkscape 或设计工具),想在文档中显示它。

**限制:**SVG 以静态图片形式渲染。你无法内联编辑 SVG 源码,也不会出现平移+缩放或导出控件。

SVG 代码块

将原始 SVG 标记包裹在带有 svg 语言标识符的围栏代码块中:

markdown
```svg
<svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
  <rect width="200" height="100" rx="10" fill="#4a6fa5"/>
  <text x="100" y="55" text-anchor="middle" fill="white"
        font-size="18" font-family="system-ui">Hello SVG</text>
</svg>
```

SVG 会内联渲染——就像 Mermaid 图表一样——并带有交互控件。

VMark 独有功能

Typora 和 Obsidian 均不支持 ```svg 代码块。这是 VMark 的专属功能,专为 AI 工作流设计,用于工具生成不适合 Mermaid 语法的 SVG 可视化内容(图表、插图、图标)。

适用场景

  • AI 生成的图形——Claude、ChatGPT 和其他 AI 工具可以直接生成 SVG 图表、示意图和插图。将 SVG 粘贴到代码块中即可内联渲染。
  • 内联 SVG 编辑——直接在文档中编辑 SVG 源码,实时查看效果。
  • 自包含文档——SVG 存储在 Markdown 文件内,无需外部文件依赖。

在所见即所得模式中编辑

在富文本模式中,SVG 代码块会自动内联渲染。

进入编辑模式

双击已渲染的 SVG 以打开源码编辑器。编辑标题栏会出现以下按钮:

按钮操作
复制将 SVG 源码复制到剪贴板
取消(X)撤销更改并退出(也可按 Esc
保存(对勾)应用更改并退出

编辑器下方的 实时预览 会随输入即时更新,让你能实时看到更改效果。

平移与缩放

悬停在已渲染的 SVG 上会显示交互控件:

操作方法
缩放按住 Cmd(macOS)或 Ctrl(Windows/Linux)并滚动
平移点击并拖动 SVG
重置点击重置按钮(右上角)

这些与 Mermaid 图表使用的平移+缩放控件相同。

导出为 PNG

悬停在已渲染的 SVG 上会显示 导出 按钮(右上角,位于重置按钮旁边)。点击它可选择背景主题:

主题背景
浅色白色(#ffffff
深色深色(#1e1e1e

SVG 通过系统保存对话框以 2 倍分辨率 PNG 格式导出。

源码模式预览

在源码模式中,当光标位于 ```svg 代码块内时,会出现一个浮动预览面板——与 Mermaid 图表使用的面板相同。

功能描述
实时预览随输入即时更新(无防抖——SVG 渲染是同步的)
拖动移动拖动标题栏重新定位
调整大小拖动任意边缘或角落
缩放+ 按钮,或 Cmd/Ctrl + 滚动(10% 至 300%)

INFO

必须启用源码模式图表预览。在状态栏中点击 图表预览 按钮来切换。

SVG 验证

VMark 在渲染前会验证 SVG 内容:

  • 内容必须以 <svg<?xml 开头
  • XML 必须格式正确(无解析错误)
  • 根元素必须是 <svg>

如果验证失败,将显示 无效 SVG 错误信息,而不是渲染图形。双击错误信息可编辑并修复源码。

AI 工作流

AI 编程助手可以通过 MCP 工具直接将 SVG 生成到你的 VMark 文档中。AI 发送一个带有 language: "svg" 和 SVG 内容的代码块,该内容会自动内联渲染。

示例提示:

创建一个显示季度营收的柱状图:Q1 $2.1M,Q2 $2.8M,Q3 $3.2M,Q4 $3.9M

AI 会生成一个内联渲染在你文档中的 SVG 柱状图,并立即提供平移+缩放和 PNG 导出功能。

对比:SVG 代码块与 Mermaid

功能```svg```mermaid
输入原始 SVG 标记Mermaid DSL
渲染即时(同步)异步(200ms 防抖)
平移+缩放
PNG 导出
实时预览
主题适应否(使用 SVG 自身颜色)是(适应所有主题)
最适合自定义图形、AI 生成的可视化内容流程图、时序图、结构化图表

使用技巧

安全性

VMark 在渲染前会对 SVG 内容进行净化。脚本标签和事件处理属性(onclickonerror 等)会被移除。这可以防止粘贴来自不可信来源的 SVG 时发生 XSS 攻击。

尺寸设置

如果你的 SVG 没有显式的 width/height 属性,可以添加 viewBox 来控制宽高比:

xml
<svg viewBox="0 0 400 300" xmlns="http://www.w3.org/2000/svg">
  <!-- content -->
</svg>

导出质量

PNG 导出使用 2 倍分辨率,在 Retina 屏幕上显示清晰。系统会自动添加纯色背景(SVG 本身可能是透明背景)。