用 Python 把 Word 公式字体一键改成 Times New Roman:我做了个批量处理小工具
写论文的人大概率都遇到过这个问题:
从 Word 自带公式编辑器插入的公式,字体总感觉“不对劲”。
尤其是:
- 英文字母不是
Times New Roman
- 变量没斜体
- 上下标风格不统一
- 导师一句:“公式格式再规范一点”
然后你开始:
几十个公式还行,几百个公式基本属于折磨。
于是我干脆自己写了个工具,专门处理这个问题。
这个工具能干什么
这个工具主要做两件事:
1. 批量修改 Word 公式字体
自动把 Word 公式中的字母改成:
支持:
- 普通公式
- 上标
- 下标
- 分式
- 根号
- 求和
- 多层嵌套公式
而且它不是改正文,而是直接改 Word 里的公式 XML(OMML)。
也就是说:
只处理公式里的数学字符。
2. 自动处理公式斜体
数学论文里通常要求:
这个工具默认就是按这个规则来的:
| 内容 |
默认处理 |
| x y z 等变量 |
斜体 |
| 数字 |
不变 |
| 括号 |
不变 |
| 根号 / 求和号 |
不变 |
| 分式线 |
不变 |
README 里也专门说明了这一点。


为什么我没直接用 VBA
一开始我也试过:
但问题很多:
- 不稳定
- Word 版本兼容差
- 容易卡死
- 对复杂公式支持不好
后来我发现:
.docx 本质上就是一个 zip 包。
里面的公式其实是:
这种 OMML 结构。
于是我直接绕开 Word,去改底层 XML。
核心逻辑大概是:
- 解压 docx
- 找到 word/*.xml
- 遍历公式节点
- 修改字体属性
- 写回 zip
整个过程不依赖 Word COM。
稳定性会高很多。
技术实现
这个项目主要用了:
- Python
- lxml
- zipfile
- tkinter
其中:
XML 解析
核心使用:
直接操作 Word 的 OMML 节点。
docx 处理
因为 .docx 本质是 zip:
所以直接读取并修改内部 XML。
GUI 界面
为了让没 Python 基础的人也能用,我又做了个 tkinter GUI:
甚至还能:
- 批量处理整个目录
- 递归处理子目录
- 指定只处理某几个字母
- 强制非变量正体
界面大概长这样:
整个工具其实已经接近可直接发给同学使用了。
我觉得最麻烦的一部分
其实不是改字体。
而是:
Word 公式的“斜体规则”
Word 的公式并不是简单:
它内部还有:
以及:
这些数学样式控制。
不同节点组合不对时:
- 有的公式会乱码
- 有的 Word 会提示“内容损坏”
- 有的字体根本不生效
我后来专门加了一层兼容逻辑:
- 自动修复错误层级
- 清理 ctrlPr 里的斜体
- 修正 w:rPr 位置
避免 Word 打开时报:
Word 发现无法读取的内容
这部分其实花的时间最多。
支持哪些使用场景
目前比较适合:
论文排版
比如:
导师统一格式
有些导师要求:
这个工具可以直接批量跑。
老旧 Word 文档修复
以前很多文档:
都能统一替换。
GUI 版真的很适合普通人
我后来专门补了 GUI。
因为很多同学:
所以现在基本:
三步完成
- 选 Word
- 点开始
- 等输出
README 里也写得比较详细。
后面准备继续加的功能
目前准备继续做:
- 公式字号统一
- 中英文字体分离
- LaTeX 风格映射
- 批量处理 doc/docx
- Office 批处理工具箱
甚至有点想做成:
最后
这种工具其实很“小”。
但真的能省很多时间。
尤其是论文最后阶段。
你会发现:
真正消耗时间的,
往往不是研究本身。
而是:
如果一个小工具能帮你省掉几个小时重复劳动,
那它就已经值回票价了。
下载链接:https://pan.gt68.cn/file.php?hash=e70d9cc3764ec51253d9cbd039155367
评论(0)
暂无评论