🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

公式源码复制 YizhouLouisLu/dsh-math-copy

DeepSeek 客户端
YizhouLouisLu31 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

复制渲染公式时得到 LaTeX 源码而非字形文本

28.1/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/YizhouLouisLu/dsh-math-copy.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 31 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

在 DSH Web UI 里复制渲染后的数学公式时,复制的是 LaTeX 源码,而不是 KaTeX 的字形文本。

README

由 DeepSeek 最新模型翻译生成
dsh-math-copy 在 DSH Web UI 里复制渲染后的数学公式时,剪贴板里得到的是公式的 LaTeX 源码,而不是 KaTeX 的字形文本(复制 x^2 不会变成 x2)。 它做什么 Web UI 用 KaTeX 渲染公式,而 KaTeX 把原始 TeX 源码留在公式的无障碍子树里: <math>…<annotation encoding="application/x-tex">\frac{a}{b}</annotation>…</math> …glyphs… 浏览器自己的选区复制走的是可见布局(以及被裁剪的 MathML 那一支),所以出来的是字形文本。 本插件监听 document 上的 copy:当选区与至少一个公式相交时,先在这些公式上做标记,克隆选区,把每个公式换成用数学定界符包起来的 TeX,写入 text/plain(以及 text/html),再取消默认行为。 选区里没有公式时,复制完全不受影响。 只选中公式的一半,拿到的仍是整条公式的 TeX。
展开完整文档(README 剩余 1 节)
dsh-math-copy

在 DSH Web UI 里复制渲染后的数学公式时,剪贴板里得到的是公式的 LaTeX 源码,而不是 KaTeX 的字形文本(复制 x^2 不会变成 x2)。

它做什么

Web UI 用 KaTeX 渲染公式,而 KaTeX 把原始 TeX 源码留在公式的无障碍子树里:

<math>…<annotation encoding="application/x-tex">\frac{a}{b}</annotation>…</math> …glyphs…

浏览器自己的选区复制走的是可见布局(以及被裁剪的 MathML 那一支),所以出来的是字形文本。
本插件监听 document 上的 copy:当选区与至少一个公式相交时,先在这些公式上做标记,克隆选区,把每个公式换成用数学定界符包起来的 TeX,写入 text/plain(以及 text/html),再取消默认行为。
选区里没有公式时,复制完全不受影响。

只选中公式的一半,拿到的仍是整条公式的 TeX。

配置

三个字段,都可以在插件页面里编辑:

| 字段 | 默认值 | 含义 |
| Inline formula delimiter | "$" | 包在行内公式外的定界符(留空 → 裸 TeX) |
| Display formula delimiter | "$$" | 包在独立公式外的定界符(留空 → 裸 TeX) |
| Also replace the rich-text flavor | true | 是否也替换 text/html 那一份;关掉则保留原始选区标记,供富文本粘贴目标使用 |

表单是怎么接上的

- index.js 在 export const Config 上声明这三个字段,并给每个字段标注 .volatile()。
只有 volatile 字段会被投影成表单:settings 服务按本 entry 在 profile 里的行 id (math-copy)提供它们。
- client.js 通过 ctx.configForms.get("math-copy") 订阅这份表单(和内置的 ui-chat 读自己偏好的方式相同),再把它折到自己的默认值上,所以复制逻辑读到的永远是最新值。
- 面板注册进 plugins.row.config slot,key 为 <包名>#<行 id>(dsh-math-copy#math-copy)。
没有任何内置客户端会自动渲染设置表单,所以插件自己渲染。

位置:插件 (Plugins) → dsh-math-copy → math-copy 行 → 它的配置块。
写入走 settings 通道,并持久化进当前 profile 的 Cordis patch,重启后仍然有效。

改动 host 半(index.js)需要重启 DSH:host 模块的世代按进程缓存,而 profile 的 HMR entry 是 root: [](不监听源码)。只改客户端半(client.js)刷新页面即可。

安装

在 Full access 的会话里: plugin_manager action=install_bundle target=<本目录>

装完刷新 Web UI 页面,新的客户端 bundle 才会进入 boot graph。

改过 host 半之后必须重启 DSH —— host 模块的世代按进程缓存。

状态

开发与验证环境:dsh core 0.2.0-rc.2(DSH Desktop 2.0.15-beta.1)。暂未声明 engines.dsh 范围:插件用的是长期存在的客户端服务(slots、locale、configForms、ctx.inject),但实际跑过的只有这个版本;而一个允许预发布版本的 range 必须逐个写明 major.minor.patch。等另一个版本也测过再声明。

开发

tools/asar-extract.mjs 用来读 Electron 的 app.asar(按路径子串列出或抽取)—— 当初就是用它读渲染 markdown 与数学的内置客户端代码:

node tools/asar-extract.mjs "/Applications/DeepSeek Harness.app/Contents/Resources/app.asar" list katex
node tools/asar-extract.mjs "/Applications/DeepSeek Harness.app/Contents/Resources/app.asar" extract dsh-client-ui-primitives /tmp/dshx

index.js 在直接 specifier 解析不到时,会通过当前 profile 解析 @deepseek-ai/schemastery (从目录安装的 bundle 是 link 进 profile 的,所以 Node 会从工作区解析它的 import)。
拿不到 schema 时,插件仍用内置默认值工作,只是没有设置表单。正常安装的副本(npm 或 GitHub,也就是 dshmarket 做的事)能解析到直接 specifier,永远不会走到这条回退路径。

submission/ 放着给 awesome-dsh-plugin 的单文件目录条目,说明见文件内部。

License

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓YizhouLouisLu/dsh-math-copy
分享 · DeepSeek Harness Hub
YizhouLouisLu/dsh-math-copy

复制渲染公式时得到 LaTeX 源码而非字形文本

这是你的仓库?认领条目

回到顶部