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

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

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

小夜