dsh-tex-block-normalizer:修復 DSH 中的數學公式誤解析

前言

在 DSH Web 客戶端中使用 Pandoc 風格的 $$ 顯示數學塊時,會遇到解析錯誤。這會導致公式首行被靜默丟棄,或者從第二行到消息結尾的內容被吞掉,最終顯示爲紅色的 KaTeX 報錯。而在其他 Markdown 渲染器(如 VS Code)中,這些格式是正常的。

這是什麼

這是一個由 s11phere 維護的 DSH Web 客戶端插件。它的核心作用是修復 DSH Markdown 語法誤解析 Pandoc 風格 $$ 公式塊的問題:解決首行被靜默丟棄、或消息剩餘部分被吞掉並顯示爲報錯的問題。它將不規範的公式塊形狀統一歸一化爲標準形狀。

安裝與啓用

使用以下命令將插件添加到 DSH Web 配置中:

dsh plugin --profile web add <本包目錄>

執行命令後,重啓 dsh web 並刷新頁面即可生效。

核心功能

  1. 修復解析錯誤:將原本導致靜默丟棄首行或吞掉消息剩餘部分的語法,調整爲 DSH 能正確識別的格式。
  2. 統一形狀:將不規範的公式塊形狀(如 $$內容 開頭、$$ 獨佔一行收尾等)統一歸一化爲標準形狀($$ 獨佔一行,內容獨佔一行,$$ 獨佔一行)。
  3. 修復歷史消息:支持對會話中已經記錄的歷史消息進行重新渲染修復,這個過程不會修改 session 數據。
  4. 臨時關閉:支持通過環境變量臨時關閉插件。

典型用法

標準形狀示例:

$$\n獨佔一行\n$$

行間公式示例:

$$\n\\frac{\\partial}{\\partial y} = 1\n\\quad\\Longrightarrow\\quad\n x = y$$

驗證與調試

安裝完成後,可以通過以下方式驗證插件是否正常工作:

  1. 控制台日誌:刷新頁面後,瀏覽器控制台應出現日誌:[dsh-tex-block-normalizer] active: Pandoc-style $$ blocks are normalized before Markdown parsing。
  2. 調試對象:在瀏覽器控制台查看 window.__DSH_TEX_BLOCK_NORMALIZER__,其內容應包含 { installed: true, reason: 'installed', stats: { calls, rewrites } }。rewrites 數值的增長表示發生了改寫操作。
  3. 歷史消息修復:打開此前顯示爲紅色純文本的歷史消息,報錯應消失,公式應正常排版。
  4. 臨時禁用:在頁面加載前設置 globalThis.__DSH_TEX_BLOCK_NORMALIZER_DISABLE__ = true 可臨時關閉插件。

適用場景與注意

該插件適合需要在 DSH Web 客戶端中正常使用 Pandoc 風格數學公式的場景。

注意事項:
* 不處理塊引用(> $$)或列表項(- $$)裏的 $$。
* 沒有收尾 $$ 的塊保持原樣,因此仍會吞到文件尾。
* 插件依賴 Node.js >= 22.5。
* 插件依賴外部庫 @deepseek-ai/dsh-client-ui-primitives。

結尾

插件通過簡單的文本重寫解決了 DSH 在處理特定數學塊格式時的解析缺陷。對於遇到公式顯示問題的開發者,這是一個低侵入性的解決方案。詳細文檔與源碼可參考下方鏈接。

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

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

小夜