exe与源码 下载链接:https://sxf1024.lanzouv.com/b09tjx45a
密码:bgmy
背景说明
复制Word中的公式,有时候是对的,有时候是乱码,比如:![图片[1] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[1] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/1387562423.png)
latex是识别不正确的:![图片[2] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[2] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/1468880920.png)
手动转换方法
一种可行的方法是,先将Word的公式复制设置为“MathML”:![图片[3] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[3] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/3691463733.png)
然后选中公式,并复制:![图片[4] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[4] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/1653444236.png)
这时得到的MathML长这样:
<mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mrow><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:msubsup><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msubsup><mml:mrow><mml:mi>A</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math>反正就是很长很看不懂。
然后用转换网页转为latex:
https://johnmacfarlane.net/texmath.html![图片[5] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[5] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/168973877.png)
这时候就可以正确识别latex了:![图片[6] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[6] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/2347280718.png)
脚本设计自动转换
但每次都这样操作也太麻烦了吧。
所以设计了一个自动转换的脚本:
- 运行脚本后,在后台监听剪切板;
- 我们手动复制Word中的公式;
- 脚本检测到剪切板复制了东西进来,先判断是不是MathML格式;
- 如果是,就自动完成转换;
- 将转换后的结果,复制到剪切板;
- 我们直接Ctrl+V就可以了。
看下效果:![图片[7] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[7] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/613487616.png)
(虽然有这个选择界面,但目前还只是支持“MathMl转其他格式”)![图片[8] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[8] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/529071730.png)
实现代码
(由于代码编辑器会自动丢失部分代码,所以请进最上面的“下载链接”下载源码)
如果要打包成exe,使用:
pyinstaller -F .\mathml格式转latex.py --hidden-import plyer.platforms.win.notification自己搭建转换服务器
转换用到的texmath是开源的,我们现在用的他的服务器。但用别人的,总担心哪天就挂了。因此我们也可以自己搭一个服务器:
- 首先免费领取(或购买)腾讯云轻量服务器:
- 领取地址:https://curl.qcloud.com/HfOuxzXC
![图片[9] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[9] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/3638770485.png)
- 购买地址:https://curl.qcloud.com/fnG9lyjo
![图片[10] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[10] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/1946610075.png)
- 创建Ubuntu环境,具体步骤可以参考这篇博文的“免费领取轻量应用服务器”和“SSH连接服务器”,非常详细。记得再开通一个3000端口哦:
http://xfxuezhang.cn/index.php/archives/418/ 输入安装命令:
sudo apt install haskell-stack -y![图片[11] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[11] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/1189514983.png)
将 texmath 作为服务器运行
stack install --flag texmath:server如果运气不好,跟我一样遇到了Timeout,就需要设置一下hosts文件。
![图片[12] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[12] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/3556723645.png)
首先查一下“raw.githubusercontent.com”对应的IP是什么。- 进入这个网站:https://ipaddress.com
- 分别搜索raw.githubusercontent.com和hackage.haskell.org
- 随便选一个IPv4的;
![图片[13] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[13] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/754316680.png)
编辑hosts文件:
sudo vim /etc/hosts在最后添加:
185.199.111.133 raw.githubusercontent.com 199.232.4.68 hackage.haskell.org这时候再去执行上面的指令,应该就可以了,只不过等的有点久。。。
![图片[14] - Word公式自动转为Latex - 小锋学长生活大爆炸 图片[14] - Word公式自动转为Latex - 小锋学长生活大爆炸](http://xfxuezhang.cn/usr/uploads/2022/09/1624560094.png)
然后在端口 3000 上运行服务器,
texmath-server -p 3000