加载中…
个人资料
abigtree_nj
abigtree_nj
  • 博客等级:
  • 博客积分:0
  • 博客访问:4,745
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

把word中的Mathtype公式转换为OMML公式

(2016-04-18 16:12:11)
标签:

omml

mathtype

vba

分类: 电脑技巧
从Microsoft Office 2007开始,word里面支持OMML公式,从Office 2013开始,Powerpoint也开始支持这种格式的数学公式.这使得从word文档转为PPT极为方便,我从这时开始正式使用OMML公式.
在网上获得的大量文档都是Mathtype格式的公式,所以我遇到的第一个问题是如何把这些文档转换为OMML格式,供自己使用.
1. 安装Mathtype,把mathtype格式的公式转换为MathML 2.0 (no namespace)


2.制作一个小VBA程序,自动把这些MathML转换为OMML公式.其实就是选中这些MathML语句,粘贴到OMML公式中,自动会显示为OMML公式.语句如下:

Sub PlainMathMLToEquation()
    Dim xmlns As String, mathText As String
    xmlns = "xmlns=""http://www.w3.org/1998/Math/MathML"""
    
    ' set up find parameters
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "\"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    
    ' The first whole document search to add following xmlns to tag
    ' xmlns="http://www.w3.org/1998/Math/MathML"
    Selection.SetRange 0, 0
    While Selection.Find.Execute()
        ' Get all text of ""
        mathText = Selection.Range.Text
        
        ' Check if tag contains a "xmlns=...". If not found, we'll add one
        If InStr(1, mathText, xmlns, vbTextCompare) = 0 Then
            Selection.SetRange Selection.Start + Len("
            Selection.Text = " " + xmlns
            Selection.SetRange Selection.End, Selection.End
        End If
    Wend
    
    ' The second whole document search to convert MathML to equation
    ' using Cut + Paste(plain text mode)
    Selection.SetRange 0, 0
    While Selection.Find.Execute()
        Selection.Cut
        Selection.Delete Unit:=wdCharacter, Count:=2
        Selection.PasteAndFormat wdFormatPlainText  ' paste using plain text
    Wend
    
    ' Go back to document beginning
    Selection.SetRange 0, 0
    For Each eqns In ActiveDocument.OMaths
        eqns.BuildUp
    Next


End Sub

3.在word上面制作一个小按钮,以后按这个按钮就可以自动把MathML公式转化为OMML公式.

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有