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)
```
设置项可以用换行分隔,也可以用分号分隔,或者两者混用。这样既能保持代码块紧凑,也不会把笔记写成配置文件。
常用图表设置:
| 设置项 | 作用 |
|---|---|
| left | x 轴左边界 |
| right | x 轴右边界 |
| top | y 轴上边界 |
| bottom | y 轴下边界 |
| 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 图表留在解释它的笔记旁边。
下次公式需要配图,别再截图。把图表源代码写进笔记。