前言¶
在 DeepSeek Harness (DSH) 的网页编辑器中编写数学公式时,手动输入 LaTeX 代码既繁琐又容易出错。dsh-math-snippets 插件通过引入触发词机制,实现了类似 LaTeX Suite 的代码片段展开功能,能够显著提升公式输入效率。
插件概述¶
该插件由用户 huanglianqi 维护,是一个基于 MIT 许可证的开源工具。它通过将常用的数学符号映射为简短的触发词,在用户输入特定字符组合后,自动将其替换为完整的 LaTeX 模板,并将光标定位到需要填写的占位符位置。
核心功能¶
1. 触发词展开¶
插件内置了一个包含 142 个标签的触发词表,其中 138 个默认为自动展开,4 个(如 \sum, \prod)需要配合 Tab 键使用。触发词的匹配规则与 Obsidian LaTeX Suite 保持一致,方便习惯该工具的用户迁移。
2. Tab 键导航¶
当触发词展开后,光标会自动进入第一个占位符。按 Tab 键可以依次跳转到后续的占位符(例如 $1, $2)。这允许用户快速构建复杂的嵌套公式结构。
3. 外部触发词¶
除了数学符号内部,插件还支持在普通文本中触发数学块的插入。这使得用户可以快速在段落中插入数学公式或独立的显示数学块。
4. 可编辑的触发词表¶
插件的触发词表由插件在首次启动时写入到 ~/.dsh/math-snippets.json,并可通过编辑该文件来自定义触发词的行为。
安装与启用¶
使用官方插件安装命令:
dsh plugin --profile <profile> add dsh-math-snippets
安装完成后,需要重启 Harness(因为配置列表在启动时读取),然后刷新网页编辑器页面即可生效。
使用示例¶
以下是常见触发词及其展开效果:
$// → $\frac{}{}$
$sum → $\sum_{i=1}^{n} $
$ff<Tab> → $\frac{}{}$
mk → $$
dm → $$\n\n$$
在数学符号内部,输入触发词后通常无需按 Tab 即可自动展开:
$@a → $\alpha$
$sr → $^{2}$
配置与自定义¶
在 ~/.dsh/math-snippets.json 文件中,可以添加或覆盖内置的触发词。该文件是一个 JSON 对象,每个条目包含以下字段:
body: 展开后的 LaTeX 内容。$0,$1等表示占位符。auto: 是否自动展开(默认为 true)。open: 是否允许在数学符号外触发。word: 是否要求触发词后必须是非单词字符(防止误触)。desc: 备注说明。
自定义示例:
{
"snippets": {
"capm": { "body": "$E[R_i]=R_f+\\beta_i(E[R_m]-R_f)$", "auto": true },
"npv": { "body": "\\mathrm{NPV}=\\sum_{t=0}^{n}\\frac{CF_t}{(1+r)^t}" },
"par": { "body": "\\frac{\\partial $0}{\\partial $1}", "auto": true }
}
}
限制与注意事项¶
- 无实时预览:插件在输入时不会隐藏或渲染公式,也不会自动调整括号大小。
- 占位符文本:
${1:\infty}等占位符中的默认文本不会被自动选中,这是 Shell 环境的限制。 - 触发词规则:
* 纯字母触发词(如ff)匹配的是完整的单词(例如输入xff不会触发ff)。
* 非字母触发词(如//,_)匹配的是精确字符。
* LaTeX 命令本身(如\sum)永远不会被识别为触发词。 - Tab 行为:只有当匹配到有效的触发词时,Tab 才会被消耗;否则 Tab 保留其默认功能。
生态背景¶
DeepSeek Harness 的核心设计理念是“一切皆插件”。本插件由社区维护,其目录与 GitHub 仓库地址如下:
- 目录: https://www.skillhub.cn/plugins/huanglianqi/dsh-math-snippets
- 仓库: https://github.com/huanglianqi/dsh-math-snippets