dsh-mathtype:把 Word 里的 LaTeX 占位符转成真实 MathType 公式

前言

在 DeepSeek Harness(DSH)里做文档类工作流时,常见路径是:模型或脚本先产出带 LaTeX 的 .docx,再交给作者在 Word 里排版。若最终要交稿给仍使用 MathType 的期刊或合作方,把 \[...\]、$...$ 手工改成 MathType 对象成本高,且容易打乱公式编号、SEQ 域、书签和 REF 交叉引用。

下面介绍社区插件 dsh-mathtype(维护者 DIPPER12138):在 Windows 上通过 MathType SDK 与 Word 自动化,把文档中的 LaTeX 占位符就地替换为 ProgID="Equation.DSMT4" 的 OLE 对象,而不是 Word 内置 OMML,也不是图片。文档其余结构不因整篇重建而丢失。

这是什么

dsh-mathtype 是注册到 DSH 的插件,挂载后向 ctx.skills 增加可调用的技能 mathtype。核心能力是:读取 Word .docx 里符合规则的 LaTeX 占位段落,经 MathType SDK 写成可在 Word 中双击编辑的真实 MathType 公式,并尽量保留原有编号与域逻辑。

  • 仓库:DIPPER12138/dsh-mathtype
  • 社区目录:SkillHub 插件页
  • 许可证:MIT(package.json 版本 0.1.0)
  • 插件包无 JavaScript 第三方依赖,注册逻辑仅使用 node:fs、node:path、node:url,便于离线安装。

核心功能

转换模型

插件通过 Word 自身自动化在原文档上编辑,因此 README 明确说明:已有公式编号、SEQ 域、书签、REF 交叉引用、图、表和样式不会被整体重建。

识别规则(每段一个占位)示例:

源文本 结果
\[a=b\tag{7}\] 居中 MathType 对象,右侧编号 (7)
\[a=b\tag{2a}\] 编号 (2a),子编号字母保留
\[a=b\] 居中对象,无编号
$a=b$ 行内对象

\tag{...} 内的编号不会重新生成;已有 SEQ 域、书签或字面量(如 2a)按原样保留,以便 REF 仍能解析。

随插件提供的脚本与技能

README 将主要文件职责归纳如下(均在技能目录内,供模型或命令行调用):

路径 作用
mt_env.py 发现 MathType、MT6.dll、Word 与 Python 依赖;对 SDK 做冒烟测试
mt_sdk.py 封装 MT6.dll:连接、set_latex、get_text、关闭
mt_prefs.py 经注册表调整公式字号,结束后恢复
word_session.py 可承受 RPC 崩溃与晚绑定的 Word 会话
convert_docx.py 执行转换;支持 --dry-run、--overrides、--report
verify_docx.py 结构校验:ProgID、CFB、Equation Native、关系、ShapeID、书签、域等
render_check.py 导出 PDF,生成页面与逐式 QA 表(可选依赖)
make_fixture.py 生成含 6 个公式与真实 SEQ 域的测试文档

命令行参数(转换)

  • --size:公式字号(如 10.5 或 "10.5 pt"),运行后恢复用户原 MathType 设置。
  • --align none:不改动段落版式。
  • --overrides fixes.json:按标签替换个别公式。

README 给出量级参考:约 54 个公式转换大约需要 10–15 分钟。

环境要求

组件 要求
操作系统 Windows 10/11(COM/OLE 无 macOS、Linux 等价方案)
MathType MathType 7 桌面版完整安装(仅字体包没有 System\<arch>\MT6.dll)
Word 桌面版 Word 2016/2019/2021/365,非查看器、非 LibreOffice
Python 3.10+,位数与 MT6.dll 一致(64 位 Python 对应 System\64\MT6.dll)
Python 包 pywin32、lxml;可选 pymupdf、Pillow(仅 render_check)

安装路径不写死:MathType 目录、SDK DLL 与偏好文件在运行时从注册表解析。

python -m pip install pywin32 lxml
python -m pip install pymupdf Pillow     # optional, render check only

安装与启用

插件不能替你安装 MathType、Word 或 Python 包。安装插件后需重启 dsh,技能目录里会出现 mathtype。若你曾手动把同名技能复制到 ~/.dsh/skills/mathtype,应先删除,避免重复注册。

# from GitHub — use the profile you actually run (`desktop` or `web`)
dsh plugin --profile desktop add github:DIPPER12138/dsh-mathtype

# or from a local checkout, for development
dsh plugin --profile desktop add /absolute/path/to/dsh-mathtype

卸载:

dsh plugin --profile desktop remove dsh-mathtype

权限与安全:插件随当前 dsh 进程权限运行,会调用本机 Word、MathType 与 COM。安装前请自行查看仓库源码与 MIT 许可证;本介绍不替代你的安全审查。

典型用法

1. 先验证机器

python <skill-dir>/scripts/mt_env.py

仅在 MathType 目录、DLL、Word 版本、依赖与 MTAPIConnect 均就绪时退出码为 0。新环境可用内置 fixture 走通链路(README 称约两分钟):

python scripts/make_fixture.py -o fixture.docx -f
python scripts/convert_docx.py fixture.docx -o fixture-out.docx --size 10.5
python scripts/verify_docx.py fixture.docx fixture-out.docx --expect 6

2. 干跑与正式转换

干跑只读 .docx 包,不启动 Word、不碰 COM:

python scripts/convert_docx.py manuscript.docx -o manuscript-MathType.docx --dry-run

正式转换并写报告:

python scripts/convert_docx.py manuscript.docx -o manuscript-MathType.docx \
        --size 10.5 --report conversion.json

3. 校验与可选渲染检查

python scripts/verify_docx.py manuscript.docx manuscript-MathType.docx --expect 54

python scripts/render_check.py manuscript-MathType.docx --outdir qa

在 DSH 对话中,挂载完成后可在技能目录看到 mathtype,由智能体按技能说明调用上述脚本路径;具体提示词以仓库内技能定义为准。

适用场景与限制

适合:Windows 交稿流水线中,.docx 已写好 LaTeX 占位符,需要批量变成可双击编辑的 MathType OLE 对象,且必须保留 SEQ/书签/交叉引用结构的学位论文、教材或期刊稿件后处理。

不适合或做不到(README 原文限制):

  • 非 Windows 环境。
  • 不负责编写或校验数学内容,只转换已有占位符。
  • 不提供批量 MathType → LaTeX(SDK 包装层对单式有 get_text())。
  • 不生成 Word OMML(那是另一方向)。
  • 必须使用本机已安装的 MathType;插件不随包分发 SDK DLL。

MathType 为 Design Science 商标;本插件仅调用用户机器上的 MathType SDK。

结尾

dsh-mathtype 把「LaTeX 占位 .docx → 真实 Equation.DSMT4」收成 DSH 里的一条可复用技能,并附带环境检测、转换、结构验证与可选 QA 导出。若你的工作流终点是 Word + MathType 而非纯 OMML,可在装好 MathType 与 Word 的 Windows 机器上按 README 安装插件并先跑 mt_env.py。

  • 目录页:https://www.skillhub.cn/plugins/DIPPER12138/dsh-mathtype
  • GitHub:https://github.com/DIPPER12138/dsh-mathtype

社区目录 SkillHub 为独立站点,与 DeepSeek、幻方无官方从属关系;插件来源与行为以仓库 README 为准。

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

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

小夜