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 的本地化转换方案。它解决了公式编辑器集成难、图片渲染质量差以及批量操作不安全的问题。对于需要处理学术公式或技术文档的开发者,这是一个可以直接落地的工具。