码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Latex语法学习08:打通latex、mathml和word公式转换


    目录

    1 基于工具的转换

     1.1 获取mathml源码

     1.2 将mathml代码转换为latex

    1.3 latex向mathml的转换

    1.4 mathml粘贴到word

    1.5 word转mathml

    1.5.1 干法

    1.5.2 注意要点

     2 离线工具

    2.1 mathml2latex

    2.2 latex转word

    2.2.1 一个前端开源项目

    2.2.2 一个pyqt的界面程序

    2.2.3 使用神器typora

    2.3 从word获取mathml

    3 其他参考连接


    通过science direct阅读论文时,看到有别人写好的公式,不想自己敲怎么办?这篇小文章带你快速将生成公式代码,并粘贴到word中。

    首先在SD中随便打开一篇文章,随便选择一个公式,如下图的约束3:

    1 基于工具的转换

     1.1 获取mathml源码

    我们可以得到如下源码:

    1. <math xmlns="http://www.w3.org/1998/Math/MathML">
    2. <mtable displaystyle="true" is="true">
    3. <mtr is="true">
    4. <mtd is="true" />
    5. <mtd columnalign="left" is="true">
    6. <mrow is="true">
    7. <munder is="true">
    8. <mo is="true">&#x2211;</mo>
    9. <mrow is="true">
    10. <mo is="true">(</mo>
    11. <mi is="true">i</mi>
    12. <mo is="true">,</mo>
    13. <mi is="true">j</mi>
    14. <mo is="true">)</mo>
    15. <mo is="true">&#x2208;</mo>
    16. <mi is="true">A</mi>
    17. </mrow>
    18. </munder>
    19. <msubsup is="true">
    20. <mi is="true">x</mi>
    21. <mrow is="true">
    22. <mi is="true">i</mi>
    23. <mi is="true">j</mi>
    24. </mrow>
    25. <mi is="true">k</mi>
    26. </msubsup>
    27. <mo is="true">&#x2212;</mo>
    28. <munder is="true">
    29. <mo is="true">&#x2211;</mo>
    30. <mrow is="true">
    31. <mo is="true">(</mo>
    32. <mi is="true">n</mi>
    33. <mo is="true">+</mo>
    34. <mi is="true">i</mi>
    35. <mo is="true">,</mo>
    36. <mi is="true">j</mi>
    37. <mo is="true">)</mo>
    38. <mo is="true">&#x2208;</mo>
    39. <mi is="true">A</mi>
    40. </mrow>
    41. </munder>
    42. <msubsup is="true">
    43. <mi is="true">x</mi>
    44. <mrow is="true">
    45. <mi is="true">n</mi>
    46. <mo is="true">+</mo>
    47. <mi is="true">i</mi>
    48. <mo is="true">,</mo>
    49. <mi is="true">j</mi>
    50. </mrow>
    51. <mi is="true">k</mi>
    52. </msubsup>
    53. <mo is="true">=</mo>
    54. <mn is="true">0</mn>
    55. <mspace width="1em" is="true" />
    56. <mo is="true">&#x2200;</mo>
    57. <mi is="true">i</mi>
    58. <mo is="true">&#x2208;</mo>
    59. <mi is="true">P</mi>
    60. <mo is="true">,</mo>
    61. <mo is="true">&#x2200;</mo>
    62. <mi is="true">k</mi>
    63. <mo is="true">&#x2208;</mo>
    64. <mi is="true">K</mi>
    65. <mo is="true">,</mo>
    66. </mrow>
    67. </mtd>
    68. </mtr>
    69. </mtable>
    70. </math>

     1.2 将mathml代码转换为latex

    转换网站

    网站的操作也很简单,步骤如下:

    • 将代码粘贴到左侧框内
    • 选择原类型
    • 选择目标类型
    • 点击convert按钮

     刚才提取的公式转换结果如下:

    \begin{array}{cl} & {\sum\limits_{(i,j) \in A}x_{ij}^{k} - \sum\limits_{(n + i,j) \in A}x_{n + i,j}^{k} = 0\quad\forall i \in P,\forall k \in K,} \\ \end{array}

    显示如下:

    \begin{array}{cl} & {\sum\limits_{(i,j) \in A}x_{ij}^{k} - \sum\limits_{(n + i,j) \in A}x_{n + i,j}^{k} = 0\quad\forall i \in P,\forall k \in K,} \\ \end{array}

    这样我们就完美的实现mathml向latex的转换

    1.3 latex向mathml的转换

    同样是这个网站,我们将原类型和目标类型换换,就可以实现latex到mathml的转换

    1.4 mathml粘贴到word

    由于并不是每个人都精通latex,一部分小伙伴还是喜欢word那种简单粗暴的方式,有没有办法将这个公式搞到word里边吗?当然有,我们直接把mathml源码粘贴到word中,然后选择只保留文本即可。

     不过貌似不太好玩,里边的空格还需要咱自己拖拖拽拽。没办法,能偷的懒已经偷了;如有高手能一步到位,欢迎指教。

    1.5 word转mathml

    1.5.1 干法

    如果一个公式是word敲的,你还想偷懒直接干成latex,有没办法呢?也有,咱慢慢来。

    操作也不难,直接选中公式,找个记事本粘贴一下,你会得到如下内容:

    ∑(i,j)∈Axijk-∑n+i,j∈Axn+i,jk=0,∀i∈P,∀k∈K, 

    这一坨是啥,咱也看不懂,也不敢问,干就是了。还是前面那个网站,设置如下:

    • 原类型选mathml
    • 目标类型选tex

     我们得到了如下tex代码:

    \begin{matrix}
     & {{\sum\limits_{(i,j) \in A}x_{ij}^{k}} - {\sum\limits_{{({n + i,j})} \in A}x_{n + i,j}^{k}} = 0,\forall i \in P,\forall k \in K,} \\
    \end{matrix}

     显示一下这个公式:

    \begin{matrix} & {​{\sum\limits_{(i,j) \in A}x_{ij}^{k}} - {\sum\limits_{​{({n + i,j})} \in A}x_{n + i,j}^{k}} = 0,\forall i \in P,\forall k \in K,} \\ \end{matrix}

    也能正常显示,但是两个代码的还是有区别的:

    • 使用SD提供的mathml源码得到的latex用的是array环境
    • 使用word干出来的mathml源码得到的latex用的是matrix环境

    1.5.2 注意要点

    看我操作的贼溜,有些小伙伴可能从word粘贴公式到记事本,并不是mathml源码。这里要做一个设置:

     2 离线工具

    上面一通操作,都是必须得有网。没网就瞎了,这时候,我们的python神器就排上用场了。

    2.1 mathml2latex

    这里要使用一个github的一个开源项目:

    GitHub - oerpub/mathconverter: Converts from AsciiMath, LaTeX, MathML to LaTeX, MathMLConverts from AsciiMath, LaTeX, MathML to LaTeX, MathML - GitHub - oerpub/mathconverter: Converts from AsciiMath, LaTeX, MathML to LaTeX, MathMLhttps://github.com/oerpub/mathconverter

    实现的源码也贼简单:

    1. import os
    2. from lxml import etree
    3. def mathml2latex_yarosh(equation):
    4. """ MathML to LaTeX conversion with XSLT from Vasil Yaroshevich """
    5. xslt_file = os.path.join('xsl_yarosh', 'mmltex.xsl')
    6. dom = etree.fromstring(equation)
    7. xslt = etree.parse(xslt_file)
    8. transform = etree.XSLT(xslt)
    9. newdom = transform(dom)
    10. return newdom
    11. mathml = """∑(i,j)∈Axijk-∑n+i,j∈Axn+i,jk=0,∀i∈P,∀k∈K,"""
    12. tex = mathml2latex_yarosh(mathml)
    13. print(tex)

    转换结果如下:

    $ \begin{array}{cc}& \sum _{(i,j)\in A}{x}_{ij}^{k}-\sum _{\left(n+i,j\right)\in A}{x}_{n+i,j}^{k}=0,\forall i\in P,\forall k\in K,\end{array}$
    

    2.2 latex转word

    2.2.1 一个前端开源项目

    可以通过github的一个开源项目可以直接粘贴到word

    2.2.2 一个pyqt的界面程序

     生成的mathml代码:

    $∑(i,j)∈Axijk−∑(n+i,j)∈Axn+i,jk=0,∀i∈P,∀k∈K,$

    2.2.3 使用神器typora

    直接在公式上右键,复制为mathml源码

     注意这里的公式不能是行内公式,即通过如下方式插入的公式块

    2.3 从word获取mathml

    word公式中做如下设置:

     相当于之前的拟操作

    3 其他参考连接

    公式图片转latex神器Mathpix以及latex公式与word公式的相互转换 - 简书 (jianshu.com)icon-default.png?t=M7J4https://www.jianshu.com/p/66ed4c8edfd4

    https://binb.droppages.com/https://binb.droppages.com/GitHub - xiaoyvyv/LatexToMathML: Latex转Word格式的公式Latex转Word格式的公式. Contribute to xiaoyvyv/LatexToMathML development by creating an account on GitHub.https://github.com/xiaoyvyv/LatexToMathML

  • 相关阅读:
    终端准入控制系统,保障企业内网安全的关键防线
    如何使用JavaFaker生成模拟数据
    操作系统面试知识点
    Android学习笔记 51. 项目发布
    实时通信协议
    AWS的虚拟化技术
    《PyTorch深度学习实践》第二讲 线性模型 课后练习
    ECharts实现数据可视化入门教程(超详细)
    YOLOv8 来了,快速上手实操
    Kafka之日志存储详解
  • 原文地址:https://blog.csdn.net/weixin_45624300/article/details/126560136
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号