前言¶
在 DeepSeek Harness(DSH)里和模型讨论算法、数学推导时,回复里常见 KaTeX 渲染后的公式。默认选中复制时,剪贴板里往往是带 katex-html 的 DOM 片段或难以直接复用的标记,而不是 $...$ / $$...$$ 形式的 LaTeX。要把公式贴进 Markdown、论文草稿或另一段对话,往往要手打或从别处重抄。
dsh-katex-inline-copy 是维护者 Takeoff0518 发布的 客户端 插件:在网页端拦截复制行为,把选区里的 KaTeX 节点换回 TeX 源码再写入剪贴板,行为取向与 Gemini Web 上「选中复制公式不崩」类似。下面介绍插件定位、能力与安装方式。
这是什么¶
插件全名 dsh-katex-inline-copy,归类为 DSH 客户端 插件(platform: web),当前资料中的版本为 0.1.0,许可证 MIT。它只解决一件事:从 DSH 聊天界面复制含公式的内容时,让剪贴板中的公式以 LaTeX 围栏文本出现,正文其余部分保持原样。
核心功能¶
资料中核实的行为如下。
| 操作 | 结果 |
|---|---|
| 选中含行内公式的正文 | 公式变成 $...$,正文原样 |
| 选中块级公式 | 变成 $$...$$,独占一行 |
| 只选中公式里的半个字符 | 自动补成整条公式 |
| 复制代码块 | 完全不变(DSH 自己的复制按钮照旧) |
| 复制输入框里的文字 | 完全不变 |
Ctrl+Shift+V |
得到同样的 LaTeX 文本 |
复制代码块与输入框内容时插件不介入;仅当选区碰到 KaTeX 渲染节点(.katex)且在捕获阶段处理 copy 事件。
典型剪贴板文本形态(来自 README 示例):
比较 $f(n)$ 与 $n^{\log_b a}$ 的渐进大小。
$$T(n) = aT\left(\frac{n}{b}\right) + f(n)$$
原理简述¶
DSH 用 KaTeX 渲染公式(katex.renderToString(tex, { displayMode }))。每个公式在 DOM 中带有 katex-mathml,其中 <annotation encoding="application/x-tex"> 保存 TeX 源码;插件据此提取,无需额外 data-math 属性。
在 document 上注册捕获阶段的 copy 监听后,流程为:
- 有选区,且不在输入框或代码块内;
- 选区与
.katex相交(range.intersectsNode); - 将选区端点扩展到整条公式;
cloneContents()后,把公式节点替换为$…$/$$…$$文本节点;preventDefault(),通过event.clipboardData写入text/plain与text/html;仅在浏览器未提供clipboardData时退回navigator.clipboard.write。
原始消息 DOM 不会被修改。
安装与启用¶
官方 README 给出的安装方式如下。
# 从 GitHub 直接安装
dsh plugin add github:Takeoff0518/dsh-katex-inline-copy
# 或者在 设置 → 插件 里按绝对路径安装
安装后立即生效,无需重启 DSH。
插件以当前 DSH 进程的权限在浏览器端运行。安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的使用环境。DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
开关与限制¶
默认开启。临时关闭可在浏览器控制台执行:
localStorage.setItem('dsh-katex-inline-copy.enabled', 'off')
恢复:
localStorage.removeItem('dsh-katex-inline-copy.enabled')
已知限制(README 原文):
- 只处理 KaTeX 正常渲染的公式(
.katex);katex-error保持原样; - 不做 MathML→图片,也不做 Word / 飞书专用格式;
- 公式围栏固定为
$/$$,可通过修改src/math.ts的wrapTex换风格; - 依赖 KaTeX 在 DOM 里保留
<annotation encoding="application/x-tex">。
适用场景¶
适合经常在 DSH 里阅读、摘抄数学与算法推导,并需要把公式以 LaTeX 贴到其他编辑器或文档的用户。不适合需要富文本专用粘贴格式、或公式渲染失败(katex-error)仍需自动修复的场景。
卸载:在 设置 → 插件 中移除 dsh-katex-inline-copy,或调用 plugin_manager 的 remove_bundle;复制行为立即恢复为原生。
结尾¶
dsh-katex-inline-copy 把 DSH 对话里「复制公式」从 KaTeX DOM 收束为可编辑的 LaTeX 文本,改动面集中在客户端复制路径,与 DSH「一切皆插件」的扩展方式一致。