目录

一、准备

1.调用MathType库

(1)点开发工具-工具-引用

(2)勾选【MathTypeCommands】类

2.内部方法/命令

二、操作方法

1.假设需求

2.处理速度对比

(1)循环方法

(2)直接运行

三.分析

四、完整思路与代码

1.思路

2.最终推荐代码


一、准备

1.调用MathType库

(1)点开发工具-工具-引用

开发工具-工具-引用

(2)勾选【MathTypeCommands】类

勾选MathType类-确定

2.内部方法/命令

MathTypeCommands.MTCommand_TeXToggle

意思是在MathType格式和Latex格式之间,切换所选区域公式的格式

二、操作方法

因为是通过VBA代码编写我们既可以写循环(对选区的每个公式单独选中,切换),又可以一步完成(全选需要处理的所有公式,直接写一条语句即可完成)。简单对比一下:

1.假设需求

这里准备了两内容相同的文档,都是34页公式,我们对全文公式操作。

两份相同的待处理文档

2.处理速度对比

(1)循环方法

A.示例代码

Rem 运行此代码请先勾选上MathType库
Sub mtEqToLatex()Dim fd As FieldDim fw As RangeDim i As Longt0 = NowSet fw = Selection.RangeIf fw.Start = fw.End Then Exit SubApplication.ScreenUpdating = FalseFor Each fd In fw.FieldsIf fd.Code Like "*EMBED Equation.*" Thenfd.SelectMathTypeCommands.MTCommand_TeXTogglei = i + 1End IfNextfw.SelectApplication.ScreenUpdating = TrueSet fw = NothingSet fd = NothingDebug.Print DateDiff("s", t0, Now)MsgBox Format(i, "完成 共处理了0个公式")
End Sub

B.测试结果

全选【文档1】,运行上面的代码

运行结果

在立即窗口看到,运行完成用了149秒,速度挺慢。

(2)直接运行

A.示例代码

Rem 运行此代码请先勾选上MathType库
Sub mtEqToLatex_All()Dim fd As FieldDim fw As RangeDim i As Longt0 = NowSet fw = Selection.RangeIf fw.Start = fw.End Then Exit SubApplication.ScreenUpdating = FalseFor Each fd In fw.FieldsIf fd.Code Like "*EMBED Equation.*" Theni = i + 1End IfNextMathTypeCommands.MTCommand_TeXTogglefw.SelectApplication.ScreenUpdating = TrueSet fw = NothingSet fd = NothingDebug.Print DateDiff("s", t0, Now)MsgBox Format(i, "完成 共处理了0个公式")
End Sub

B.测试结果

全选【文档2】,运行上面的代码

运行结果

在立即窗口看到,运行完成用了???秒。

大概运行了4-5分钟,屏幕还在一直抖动,因为运行太慢,就手动停止了。(此时还只运行到第5页)

这种方法运行更慢,不可取

三.分析

最初还以为全选一次运行可以更快,因为我认为MathType插件里面应该优化了方法,本来就是循环。但是最终的结果并不是。

所以说有时候代码操作和手动操作的区域还是很大的。

四、完整思路与代码

1.思路

(1)选择区域,防止误操作

(2)遍历区域内的域,因为MathType公式的域代码必定包含【EMBED Equation.】,用like方法比较判断是否为MathType公式

:此处可以用MathType内部方法逐个选中公式,有兴趣可先自行研究,后面可能会专门讲

(3)如果是MathType公式,则选中这个域(公式)所在区域,执切换命令,然后计数

(4)循环完成,操作结束

2.最终推荐代码

Rem 运行此代码请先勾选上MathType库
Sub mtEqToLatex()Dim fd As FieldDim fw As RangeDim i As Longt0 = NowSet fw = Selection.RangeIf fw.Start = fw.End Then Exit SubApplication.ScreenUpdating = FalseFor Each fd In fw.FieldsIf fd.Code Like "*EMBED Equation.*" Thenfd.SelectMathTypeCommands.MTCommand_TeXTogglei = i + 1End IfNextfw.SelectApplication.ScreenUpdating = TrueSet fw = NothingSet fd = NothingDebug.Print DateDiff("s", t0, Now)MsgBox Format(i, "完成 共处理了0个公式")
End Sub

Word VBA:MathType公式与Latex公式切换相关推荐

  1. Office word中mathtype公式与LaTex公式代码互转

    在word中,输入好的mathtype公式已经嵌入到word内容中了,如何转成LaTex公式代码呢? 很简单,mathtype已经内置了相关功能和快捷键,按钮在word中[MathType]-[Pub ...

  2. 如何在office word or ppt 中插入Latex公式

    以前一直使用Mathtype在word 或者ppt中编辑公式,其实也可以使用Latex插入公式,而且其强大的公式自动排版功能可以使插入的公式更加美观. 安装CTEX 套装.(经常使用者,这一步就免了) ...

  3. LaTeX公式转成word公式(LaTeX公式转MathML / latex2mathml的使用)

    2021年3月10日更新 批量一键转换公式 因为又遇到了不得不往Word里放一大堆公式的作业,一个一个弄太慢了,决定弄一个一键执行的版本,效果如下. 只需要在input.txt里放入LaTeX公式,执 ...

  4. Word中MathType公式与LaTeX公式的转换

    1. 对Word文档中用MathType输入的公式,在word中,选中mathtype公式,按住"Alt+\"键,可以将MathType公式转换成Latex格式. 2. 同样,将L ...

  5. Latex公式与Word公式相互转换(使用MathType)

    Latex公式转Word公式 在MathType中敲好的公式,将 预置->剪切和复制 中选项改为MathML 复制公式后,打开Word并粘贴到相应位置,出现如下弹窗 选择创建OMML公式并点击确 ...

  6. Mathtype / Word OMML / Latex 公式相互转换

    文章目录 Part.I 快应用 Part.II 详细操作 Chap.I Mathtype ↔ Word Chap.II Mathtype ↔ Latex Chap.III Latex ↔ Word P ...

  7. Word插入Latex公式的几种方式~(TeXsWord、EqualX、Aurora、向Office插入LaTeX公式的工具)

    Word插入Latex公式的几种方式 向Word和PowerPoint插入LaTeX公式的小工具 2006-01-28  by 陈硕 讨论.下载请前往:http://bbs.ctex.org/foru ...

  8. Word插入Latex公式的几种方式~(TeXsWord、EqualX、Aurora、向Office插入LaTeX公式的工具)...

    Word插入Latex公式的几种方式 向Word和PowerPoint插入LaTeX公式的小工具 2006-01-28  by 陈硕 讨论.下载请前往:http://bbs.ctex.org/foru ...

  9. 【MathType】彻底解决公式大小与文章文字大小不统一(含字体的字号与磅(pt)和像素(px)之间的换算关系)

    文章目录 1.大小不一致原因 2.字体的字号与磅(pt)和像素(px)之间的关系 3.彻底解决方法 在使用Mathtype的时候,有时候会出现公式大小不统一的情况,这时候手动去拖动大小的话非常不理想, ...

  10. 通过小狼毫/rime输入法在飞书中输入Tex/Latex公式的效果

    下面展示一个通过小狼毫输入法(rime输入法)在飞书文档中输入Tex公式(latex公式)的使用效果

最新文章

  1. IDEA tomcat 配置虚拟目录怎么
  2. 物联网入门怎么学?物联网基础知识
  3. java spring框架 注解_史上最全的java spring注解
  4. python中的模块原则_python 的模块与包
  5. 简单一“录”,轻松完成金融业务审核!
  6. JavaScript操作DOM元素
  7. 二十一、Hadoop学记笔记————kafka的初识
  8. HEVC/H265 HM10.0 分析(三)TAppDecTop.cpp
  9. VSCODE远程连接服务器,远程开发。
  10. MySQL数据库技术与应用:数据查询
  11. 今天终于结束了考试,不知道结果
  12. Hybrid 接口应用
  13. priority_queue的优先级设置
  14. 第七次全国人口普查,数据来了!
  15. HTTP权威指南 笔记
  16. wim工具扫描linux磁盘,图文解说WIMTOOL的安装及利用该工具编辑WIM文件
  17. php ucenter home登录,UCenter Home
  18. linux6.9 fc cache,(转载, 已看)fc-cache出错解决办法.
  19. 年底了,清空自己,让心归零!
  20. 换ssd后Oracle,PS4更换480G SSD,终于流畅了!附更换教程

热门文章

  1. 软件概要设计说明书—模板
  2. python websocket爬虫_python根据websocket抓取斗鱼弹幕和礼物消息
  3. 基于java坦克大战游戏
  4. Google 字体在前端开发中的使用
  5. 思科关闭日志_Cisco命令日志
  6. knx智能照明控制系统电路图_智能照明控制系统KNX
  7. 计算机硬盘使用寿命,固态硬盘怎么测剩余寿命?SSD固态硬盘使用寿命检测方法...
  8. java生成uuid_Java UUID
  9. 更改eclipse字体
  10. Python|LeetCode习题答案汇总