Obsidian Desmos 教程:在笔记里画函数图

Obsidian Desmos 教程:在笔记里画函数图

如果你用 Obsidian 写数学笔记,画图这一步通常很别扭:公式写在 Markdown 里,函数图去 Desmos 浏览器页面重画,截图,再贴回笔记。公式一改,截图立刻过期。

Obsidian Desmos 解决的就是这个小痛点。它让你用一个 desmos-graph 代码块,把 Desmos 图表直接渲染在 Obsidian 笔记里。图和公式留在同一个文件中,笔记不会变成一堆难维护的截图。

Obsidian Desmos 是什么

Obsidian Desmos 是 Nigecat 开发的社区插件,用来在 Obsidian 笔记中嵌入 Desmos 图表。它支持在线和离线使用。当前版本是 0.6.8,项目使用 TypeScript 编写。

适合它的场景很明确:

  • 微积分笔记里要展示函数、导数和切线
  • 代数例题里图像形状比公式本身更直观
  • 教学资料需要把解释和图放在一起
  • 研究笔记希望公式可编辑,而不是只留截图

如果你在整理可发布的 Markdown 笔记,可以顺手看看 Quartz 数字花园教程。如果你需要画的是流程图、架构图,而不是函数图,drawio-mcp 使用指南更合适。

安装插件

最推荐的方式是走 Obsidian 社区插件市场。

  • 打开 Obsidian 设置
  • 进入社区插件
  • 如果还没关闭安全模式,先关闭
  • 浏览社区插件
  • 搜索 Desmos
  • 安装并启用插件

也可以手动安装。到 GitHub 最新 release 下载 main.js 和 manifest.json,放进你的 vault 目录:

<vault-root>/.obsidian/plugins/obsidian-desmos/

然后回到 Obsidian,启用社区插件,再打开 Desmos 插件。

大多数人用社区插件市场就够了。只有在你需要固定版本,或者管理受限 vault 时,手动安装才值得折腾。

画第一个函数图

新建一个标签为 desmos-graph 的代码块,里面放一行方程。

```desmos-graph
y=x
```

切到阅读视图或实时预览,Obsidian Desmos 就会把这行方程渲染成图。

这里的关键是:方程使用 LaTeX 风格的数学写法。分式、三角函数、指数、函数定义,都应该按数学渲染习惯来写。

同时画多个方程

每个方程单独一行。

```desmos-graph
y=\sin(x)
y=\frac{1}{x}
```

这时插件的价值就出来了。你可以把解释和图表定义放在同一段笔记里:

正弦曲线有界,而 1/x 在 x=0 附近有垂直渐近线。

```desmos-graph
y=\sin(x)
y=\frac{1}{x}
```

源文件仍然可读,也不用维护单独的图片文件。

设置坐标范围

写教学笔记时,默认视窗经常太宽。你可以把图表设置写在方程上方,用三条横线把设置和方程分开。

```desmos-graph
left=0; right=100;
top=10; bottom=-10;
---
y=\sin(x)
```

设置项可以用换行分隔,也可以用分号分隔,或者两者混用。这样既能保持代码块紧凑,也不会把笔记写成配置文件。

常用图表设置:

设置项作用
leftx 轴左边界
rightx 轴右边界
topy 轴上边界
bottomy 轴下边界
height渲染高度
width渲染宽度
grid显示或隐藏网格
degreeMode使用弧度或角度
defaultColor默认方程颜色

三角函数相关的 degreeMode 支持 radians 和 degrees。默认是 radians。

控制方程样式

方程样式写在方程后面,用竖线包起来。顺序不重要。

下面这行会画一条 x=2 的绿色虚线,并限制在 y>0 的区域:

```desmos-graph
x=2|y>0|green|dashed
```

换个顺序也一样:

```desmos-graph
x=2|dashed|green|y>0
```

内置颜色包括 red、green、blue、yellow、magenta、cyan、purple、orange、black、white。也可以用十六进制颜色:

```desmos-graph
y=x^2|#42ddf5
```

线条样式:

  • solid
  • dashed
  • dotted

点样式:

  • point
  • open
  • cross

当一篇笔记里有多条相关曲线时,样式控制很有用。读者扫一眼,就知道哪条是主函数,哪条是辅助线。

隐藏辅助方程

有时你需要定义一个函数,但不想把它画出来。加 hidden 即可。

```desmos-graph
f(x)=x^2|hidden
f'(x)
```

这很适合导数笔记。原函数负责定义,图上只展示你想讨论的部分。

给点添加标签

点标签使用 label: 标记。

```desmos-graph
(0,0)|label:(0,0)
(5,4)|open|label:sample point
```

注意,插件里的标签主要给点用,不支持给方程直接加标签。如果你要解释一条曲线,最好在图表前后的正文里说清楚,不要把所有信息都塞进图里。

导出带图表的 PDF

PDF 导出有一个坑:图表必须进文件系统缓存。

导出前做三件事:

  • 在插件设置里开启 filesystem caching
  • 打开每个目标图表至少一次,让它进入缓存
  • 导出前关闭 renderer

README 里专门强调这一点,是因为 PDF 导出和普通笔记渲染不是一回事。图表没进缓存时,Obsidian 不一定能把它稳定写进 PDF。

我的做法很简单:确定要导出 PDF 后,先开启缓存,然后从头到尾扫一遍阅读视图。这样每张图都会渲染一次,再导出就稳得多。

用 CSS 居中图表

插件会给图表加 obsidian-desmos CSS class。如果你的主题让图表位置有点别扭,可以加一个 CSS snippet:

/* Horizontally center Desmos graphs in note content */
.desmos-graph {
  display: block;
  margin-left: auto;
  margin-right: auto;
}

样式别写太重。你改得越多,越容易和 Obsidian 主题、Desmos 自己的布局互相打架。

一个完整例子

下面这个代码块适合讲二次函数、导数和两个关键点。

```desmos-graph
left=-4; right=4;
top=8; bottom=-4;
height=420;
defaultColor=blue;
---
f(x)=x^2-2|hidden
f'(x)|orange|dashed
y=x^2-2|blue
(-1,-1)|label:vertex side
(0,-2)|open|label:minimum
```

hidden 那行负责定义 f(x),但不显示。导数用橙色虚线。主抛物线保持蓝色。两个点各自带标签,正文就不用反复解释图上每个元素。

常见错误

  • 忘记写 desmos-graph 代码块标签:Obsidian 只会显示普通代码块。
  • 用普通 Markdown 数学写法硬凑:Desmos 需要可绘制的表达式。
  • 把图表设置写到三条横线下面:设置必须放在分隔线上方。
  • 期待 PDF 导出自动处理所有图:先开缓存,再逐个查看图表。
  • 给方程加标签:标签主要用于点,不是曲线。

值不值得用

值得,前提是你的 Obsidian vault 里真的有数学、教学或技术解释。Obsidian Desmos 不是完整的数学出版系统,这反而是它的优点。它只做一件事:把 Desmos 图表留在解释它的笔记旁边。

下次公式需要配图,别再截图。把图表源代码写进笔记。

GitHub:https://github.com/Nigecat/obsidian-desmos

相关文章

Obsidian Infographic 教程:在笔记里展示信息图

Obsidian Infographic 教程:在笔记里展示信息图

Obsidian 很适合写结构化笔记,但一旦你想放一张流程、对比、时间线或层级图,体验就开始变重:打开画图工具,拖节点,导出图片,再贴回笔记。下次内容一改,图也要重新维护。 shuuul/obsid ...