Word公式自动转为Latex

songxf
2022-09-05 / 0 评论 / 492 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年09月06日,已超过89天没有更新,若内容或图片失效,请留言反馈。
exe与源码 下载链接:https://sxf1024.lanzouv.com/b09tjx45a
密码:bgmy

背景说明

复制Word中的公式,有时候是对的,有时候是乱码,比如:

latex是识别不正确的:

手动转换方法

一种可行的方法是,先将Word的公式复制设置为“MathML”:

然后选中公式,并复制:

这时得到的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

这时候就可以正确识别latex了:

脚本设计自动转换

但每次都这样操作也太麻烦了吧。
所以设计了一个自动转换的脚本:

  1. 运行脚本后,在后台监听剪切板;
  2. 我们手动复制Word中的公式;
  3. 脚本检测到剪切板复制了东西进来,先判断是不是MathML格式;
  4. 如果是,就自动完成转换;
  5. 将转换后的结果,复制到剪切板;
  6. 我们直接Ctrl+V就可以了。
    看下效果:

    (虽然有这个选择界面,但目前还只是支持“MathMl转其他格式”)

实现代码

(由于代码编辑器会自动丢失部分代码,所以请进最上面的“下载链接”下载源码)

如果要打包成exe,使用:

pyinstaller -F .\mathml格式转latex.py --hidden-import plyer.platforms.win.notification

自己搭建转换服务器

转换用到的texmath是开源的,我们现在用的他的服务器。但用别人的,总担心哪天就挂了。因此我们也可以自己搭一个服务器:

  1. 首先免费领取(或购买)腾讯云轻量服务器:
  2. 领取地址:https://curl.qcloud.com/HfOuxzXC
  3. 购买地址:https://curl.qcloud.com/fnG9lyjo
  4. 创建Ubuntu环境,具体步骤可以参考这篇博文的“免费领取轻量应用服务器”和“SSH连接服务器”,非常详细。记得再开通一个3000端口哦:
    http://xfxuezhang.cn/index.php/archives/418/
  5. 输入安装命令:

    sudo apt install haskell-stack -y

  6. 将 texmath 作为服务器运行

    stack install --flag texmath:server

    如果运气不好,跟我一样遇到了Timeout,就需要设置一下hosts文件。

    首先查一下“raw.githubusercontent.com”对应的IP是什么。

  7. 进入这个网站:https://ipaddress.com
  8. 分别搜索raw.githubusercontent.com和hackage.haskell.org
  9. 随便选一个IPv4的;
  10. 编辑hosts文件:

    sudo vim /etc/hosts
  11. 在最后添加:

    185.199.111.133 raw.githubusercontent.com
    199.232.4.68 hackage.haskell.org

    这时候再去执行上面的指令,应该就可以了,只不过等的有点久。。。

  1. 然后在端口 3000 上运行服务器,

    texmath-server -p 3000
1

评论 (0)

取消