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:

Latex语法学习08:打通latex、mathml和word公式转换_第1张图片

1 基于工具的转换

 1.1 获取mathml源码

Latex语法学习08:打通latex、mathml和word公式转换_第2张图片

我们可以得到如下源码:


  
    
      
      
        
          
            
            
              (
              i
              ,
              j
              )
              
              A
            
          
          
            x
            
              i
              j
            
            k
          
          
          
            
            
              (
              n
              +
              i
              ,
              j
              )
              
              A
            
          
          
            x
            
              n
              +
              i
              ,
              j
            
            k
          
          =
          0
          
          
          i
          
          P
          ,
          
          k
          
          K
          ,
        
      
    
  

 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的转换

Latex语法学习08:打通latex、mathml和word公式转换_第3张图片

1.4 mathml粘贴到word

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

Latex语法学习08:打通latex、mathml和word公式转换_第4张图片

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

1.5 word转mathml

1.5.1 干法

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

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

(i,j)Axijk-n+i,jAxn+i,jk=0,iP,kK, 

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

  • 原类型选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源码。这里要做一个设置:

Latex语法学习08:打通latex、mathml和word公式转换_第5张图片

 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

实现的源码也贼简单:

import os
from lxml import etree

def mathml2latex_yarosh(equation):
    """ MathML to LaTeX conversion with XSLT from Vasil Yaroshevich """
    xslt_file = os.path.join('xsl_yarosh', 'mmltex.xsl')
    dom = etree.fromstring(equation)
    xslt = etree.parse(xslt_file)
    transform = etree.XSLT(xslt)
    newdom = transform(dom)
    return newdom

mathml = """(i,j)Axijk-n+i,jAxn+i,jk=0,iP,kK,"""
tex = mathml2latex_yarosh(mathml)
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

Latex语法学习08:打通latex、mathml和word公式转换_第6张图片

2.2.2 一个pyqt的界面程序

Latex语法学习08:打通latex、mathml和word公式转换_第7张图片 生成的mathml代码:

$(i,j)Axijk(n+i,j)Axn+i,jk=0,iP,kK,$

2.2.3 使用神器typora

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

Latex语法学习08:打通latex、mathml和word公式转换_第8张图片

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

Latex语法学习08:打通latex、mathml和word公式转换_第9张图片

2.3 从word获取mathml

word公式中做如下设置:

Latex语法学习08:打通latex、mathml和word公式转换_第10张图片

 相当于之前的拟操作

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

你可能感兴趣的:(Latex公式的编写,学习)