Latex语法学习08:打通latex、mathml和word公式转换

您所在的位置:网站首页 在线导入word Latex语法学习08:打通latex、mathml和word公式转换

Latex语法学习08:打通latex、mathml和word公式转换

2023-10-08 09:18| 来源: 网络整理| 查看: 265

目录

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源码

我们可以得到如下源码:

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

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

实现的源码也贼简单:

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,j∈Axn+i,jk=0,∀i∈P,∀k∈K,""" 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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3