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 桌面端。
方式三:本地開發 Link¶
將依賴寫爲 "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 的本地化轉換方案。它解決了公式編輯器集成難、圖片渲染質量差以及批量操作不安全的問題。對於需要處理學術公式或技術文檔的開發者,這是一個可以直接落地的工具。