前言¶
在 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「一切皆插件」的擴展方式一致。