前言¶
在 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 为准。