dsh-katex-inline-copy:在 DSH 对话里复制公式得到 LaTeX 源码

前言

在 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 监听后,流程为:

  1. 有选区,且不在输入框或代码块内;
  2. 选区与 .katex 相交(range.intersectsNode);
  3. 将选区端点扩展到整条公式;
  4. cloneContents() 后,把公式节点替换为 $…$ / $$…$$ 文本节点;
  5. 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「一切皆插件」的扩展方式一致。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye