dsh-math-copy:把 DSH 回答里的公式复制成可重新渲染的 TeX

前言

在 DSH 里看模型回答时,数学公式通常由 KaTeX 渲染:页面上能看清、也能选中,但用 Ctrl+C 复制后,剪贴板里往往是 𝑒^𝑖𝜋+1=0 这类 Unicode 字形。粘进 Obsidian 或 LaTeX 编辑器,只会得到一行怪符号,而不是可再次编译、渲染的源码。

常见做法是手动对照屏幕改公式,或依赖消息自带的 markdown 复制(若界面提供且内容仍带 $$)。dsh-math-copy 是 SOH4C4759 维护的 DSH 客户端插件:从 KaTeX 输出的 MathML annotation 读取 TeX 原文,在悬停或整段复制时按目标格式写入剪贴板。下面介绍它的定位、用法与安装方式。

这是什么

  • 名称:dsh-math-copy(仓库 SOH4C4759/dsh-math-copy)
  • 分类:客户端(dsh.client.platform 为 web)
  • 维护者:SOH4C4759(package.json 中 author 为 lxj5820)
  • 许可:MIT
  • 版本(package.json):0.1.1

Host 侧 entry.js 为空实现:复制公式完全在浏览器页面完成,不依赖额外路由、进程或设置项。

核心功能

悬停复制

鼠标悬停任意已渲染公式时,会出现一条浮层,提供三种复制目标:

  1. Obsidian:行内 $…$,独立公式 $$…$$
  2. LaTeX:行内 \(...\),独立公式 \[...\]
  3. TeX:仅源码,不带定界符(一次性操作,不会改写后续默认格式)

选中文本后 Ctrl+C

选中一段包含公式的文本再复制时,剪贴板中是整段文字,其中每个公式被替换为源码;格式遵循你上次点击的 Obsidian 或 LaTeX 目标。整段可直接粘进 Obsidian 渲染。

若选区里没有公式,插件不拦截复制,行为与未安装时一致。

源码为何可信

插件只读取 KaTeX 在 MathML 里附带的 <annotation encoding="application/x-tex">,不从字形反推:

  • 拿不到 annotation 的节点(渲染失败、被裁掉)不会出现悬停条,选区路径也会跳过;
  • 多行环境(如 \begin{aligned}…\end{aligned})按原文保留;
  • 不修改对话 DOM,仅追加浮条与提示;卸载时移除。

上次使用的 Obsidian / LaTeX 目标保存在 localStorage['dsh.math-copy.format'],默认 obsidian。点 TeX 不会写入该记录,避免「整段还原」误变成裸源码。

演示录像(约 24 秒):把 DSH 里的公式复制成能重新渲染的 TeX

安装与启用

在 README 中给出的安装方式为本地 link(路径换成你本机仓库的绝对路径):

dsh plugin --profile desktop add link:<本仓库绝对路径>

也可在 DSH 插件目录页安装同一路径:skillhub.cn/plugins/SOH4C4759/dsh-math-copy

装好后 profile 中应出现类似配置:

- insert:
    - id: math-copy
      name: dsh-math-copy

装完即可使用。若你修改了 lib/client.js,需要刷新页面(浏览器 bundle 在页面启动时 import);仅改 Host 侧才需要重启 DSH。

典型用法

  1. 打开带公式的 DSH 回答,将鼠标移到公式上,在浮条里选 Obsidian 或 LaTeX,再粘贴到笔记或 .tex 文件。
  2. 需要纯 TeX 片段(自定定界符)时,点 TeX,只复制一次源码。
  3. 复制一整段含行内、块级公式的说明:先点一次目标格式(Obsidian / LaTeX),再选中段落 Ctrl+C,粘贴到 Obsidian。

页面自带的「复制消息」若走 navigator.clipboard.writeText,不经过 copy 事件,插件不会改写;该类按钮通常复制原始 markdown,本身已带 $$,一般无需转换。

适用场景与注意

适合:经常在 DSH 里读推导、再把公式迁到 Obsidian 或 LaTeX 工作流的用户。

依赖与边界(来自 README「已知边界」):

  • 依赖 KaTeX 的 .katex / .katex-display 类名,不依赖 DSH 的 CSS Modules 哈希类名。
  • 选区还原仅在 copy 事件上生效。
  • 行内公式按 $…$ 输出;源码里已含 $ 的极端写法不做转义。
  • 浮条靠悬停触发,纯键盘暂时无法唤起;README 提到可后续加消息级「复制全部公式」。

安全与权限:插件以当前 DSH 进程/浏览器上下文运行,安装前请自行查看仓库源码与 MIT 许可证。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-math-copy 解决的是「看得见公式、复制却是字形」这一具体问题:用 KaTeX 自带的 TeX annotation 做悬停三格式复制,并在带公式的选区复制时按记忆的目标还原源码。需要安装命令与行为细节时,以 GitHub README 为准;从目录安装可访问 dsh-math-copy 插件页。

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

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

小夜