dsh-latex2office:DeepSeek Harness LaTeX 轉 Office 公式插件

DSH(DeepSeek Harness)的設計哲學是“一切皆插件”。在構建包含複雜數學公式的文檔時,將 LaTeX 轉換爲 Word/WPS 原生格式是常見需求。dsh-latex2office 是一個本地運行的插件,旨在解決這一轉換問題,支持 OMML 原生公式或高清渲染圖片兩種模式。

核心能力

轉換模式

插件提供兩種核心輸出模式:
* OMML 原生公式:生成 Word/WPS 原生可編輯公式(math_mode=omml)。默認用於 .docx,支持在文檔中雙擊進入公式編輯器繼續修改。
* 高清渲染圖片:生成 PNG 圖片(math_mode=image)。默認用於 .pptx,以兼容 WPS 對 PPT 內嵌 OMML 的顯示問題。

批量原子操作與排版

  • 批量原子插入:支持批量插入公式。若列表中某條公式解析失敗或定位錨點丟失,整個文件寫入操作會被回滾,保證文件一字節不變。
  • 學術製表位編號:支持爲公式添加編號(如 number:"3.1"),自動實現公式居中、編號右對齊的學術排版效果。
  • 自動備份與回讀:首次修改時自動生成 .bak.docx 或 .bak.pptx(已存在則不覆蓋);每次寫入後自動回讀驗證公式數量。

隔離與安全

  • 零 npm 依賴:插件本身不依賴 npm 傳遞依賴,僅使用純 ES Module 和隨包附帶的 Python 引擎。
  • 隔離渲染:LibreOffice 渲染使用獨立的臨時用戶 profile,不會鎖定用戶正在編輯的文檔。
  • 錯誤處理:所有外部進程調用均通過 DSH ctx.subprocess 服務,超時和溢出有保護機制,錯誤以 JSON 格式無損返回,不影響 Harness 主進程。

安裝與啓用

方式一:DSH 桌面端插件市場

在 DSH 桌面端的插件市場搜索 dsh-latex2office,一鍵安裝後重啓即可生效。

方式二:手動安裝

編輯 DSH 數據目錄下的 profile manifest(桌面端通常位於 harness/profiles/web/package.json),添加依賴與 Bundle:

{
  "dependencies": {
    "dsh-latex2office": "github:hufangd-2019/dsh-latex2office"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "dsh-latex2office"
      ]
    }
  }
}

在 profile 目錄下執行 pnpm install,隨後重啓 DSH 桌面端。

將依賴寫爲 "dsh-latex2office": "link:<本地目錄>",其餘步驟同方式二。修改代碼後重啓即可實時生效。

可選配置

在 profile 自身的 cordis.patch.yml 中,可爲插件掛載配置以覆蓋默認路徑或超時設置:

- id: latex2office-tools
  config:
    pythonPath: 'D:\python\python.exe'   # 留空則自動探測
    pandocPath: ''
    sofficePath: ''
    renderTimeoutSec: 90

典型用法

插件註冊了三個工具,通過 JSON 調用:

1. 生成帶編號的公式文檔

使用 latex2office_generate 創建新文件。

{
  "tool": "latex2office_generate",
  "args": {
    "output": "D:/docs/equations.docx",
    "title": "運動方程",
    "formulas": [
      {
        "latex": "\\frac{\\partial u}{\\partial t} + u\\frac{\\partial u}{\\partial x} = -\\frac{1}{\\rho}\\frac{\\partial p}{\\partial x}",
        "number": "1.1"
      }
    ]
  }
}

2. 插入現有文檔

使用 latex2office_insert 定位插入。

{
  "tool": "latex2office_insert",
  "args": {
    "file": "D:/docs/report.docx",
    "formulas": [
      {
        "latex": "E = mc^2",
        "position": { "mode": "after_text", "text": "質能方程:" },
        "number": "2.1"
      },
      {
        "latex": "\\sigma_x = \\frac{F}{A}",
        "position": { "mode": "end" }
      }
    ]
  }
}

宿主依賴

插件運行依賴宿主機安裝的非 npm 工具,需確保版本滿足要求:

依賴 用途 說明
Python ≥ 3.10 文檔引擎 用於調用 python-docx、python-pptx 等庫
pandoc LaTeX→OMML 轉換 通過臨時 docx 提取 m:oMathPara
LibreOffice 圖片渲染 使用 soffice --headless,需獨立臨時 profile

解析順序爲 cordis 行配置 → PATH → 常見安裝路徑表。若依賴缺失,受影響的工具會返回清晰的 JSON 錯誤,不影響插件加載。

卸載 / 回滾

完全移除插件:
1. 刪除 profile manifest 中添加的 "dependencies" 和 "bundles" 配置。
2. 重啓 DSH 桌面端。

該插件零 npm 依賴,卸載後不會殘留任何傳遞依賴。

總結

dsh-latex2office 爲 DSH 生態提供了從 LaTeX 到 Office 的本地化轉換方案。它解決了公式編輯器集成難、圖片渲染質量差以及批量操作不安全的問題。對於需要處理學術公式或技術文檔的開發者,這是一個可以直接落地的工具。

更多細節與源碼:https://github.com/hufangd-2019/dsh-latex2office

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

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

小夜