澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

Extra等MathType难点的不包容性化解方案,一些应用

问题:office2010如何与数学编辑器结合?

常见问题解决方法:

原标题:MathType怎么装到Word

公司正在做教育类产品,在遇到数学公式时,我们一般会使用latex表达式来做保存和渲染。
在其中一个项目上,遇到一个需求是要从office文档(WordExcel)中导入题目内容至数据库,题目内容中就有可能包括数学公式,而在文档中编辑希望使用office的公式插件来写公式元素。
其实公司之前的产品已经使用.net实现过此功能,不过现在公司全面转型Java,我们也要研究出一个适用Java的解决方案。

                    一些科研中经常用到的工具

回答:

1、MathType 6.0与office 2007兼容问题

Word作为常用的文字处理软件,也可以供理科工作者使用,用来编辑数学公式,为了方便使用,可以在Word中添加MathType公式编辑器,下面就来学习具体操作方法。

office文档中的公式编辑器

  想必很多人在做科研或者写文档的时候经常会碰到一个问题就是工具使用的问题,下面列举一些比较常用的工具:

数学编辑器,目前来说,公式类的编辑器,比较常用的,是Math Type。

由于Office软件安装时默认是不安装公式编辑器的,在安装完MathType 6.0之后,需要将MathType 6.0OfficeSupport目录中的MathType Commands 6 For Word.dot复制到C:Documents andSettings当前用户名Application DataMicrosoftWordSTARTUP目录中,重新打开Office2007Word之后就可以在的“加载项”选项卡中看到Mathtype的快捷按钮了,此时“插入”菜单中的“公式”符号显示为亮色,表示可以使用。

下面就以Office 2016为例,

mathtype插件

mathtype是一个第三方的数学公式插件,它能在Office文档中启用编辑,并生成一个带有公式矢量图的ole对象插入到文档中。
原来.net的方案就是使用此种方式,使用mathtype提供的c#库包来解析ole对象,抽取LaTeX表达式。
但在纯Java环境下就无法做到了。

1.文档编辑软件

使用之后,word内编辑公式效果如图:

但是此时也会出现一个问题,在使用Ctrl V粘贴时会提示出错“Only One MathType command can beexecuted at a time.  Please try againlater.”,而只有在
Word的“编辑”菜单中选择“选择性粘贴”才可以将复制的内容粘贴进来。而且插入公式的功能只对word2007格式的文件(后缀名为docx)有效,对之前版本的word文件(doc格式)仍然不能使用公式编辑器。建议:不将MathType6.0作为Word 2007的默认加载项,即删除C:Documents and Settings当前用户名ApplicationDataMicrosoftWordSTARTUP目录中的MathType Commands 6 ForWord.dot文件,而在需要插入公式的使用使用独立的MathType 6.0程序,然后将编辑好的公式粘贴到Word中。 

首先我们在开始菜单找到mathtype的图片,然后鼠标右键,然后找到打开文件位置,如果后续还是快捷键邮件打开属性,打开文件位置找到实际文件位置。

office自带公式编辑器

从2007版开始,Office也自带了一个公式编辑器。
在2007版中WordExcel之间不同的是,前者插入的公式对象是Office MathML节点,后者插入的还是ole
到了2010版开始,两个产品的公式编辑器插入的都是Office MathML节点了,但是两者对公式对象中的默认文字编码处理不同。
这些不同点可以看出就算同样属于Office的产品,他们之间也是有很多不统一的地方。

  最常见的莫过于Microsoft Office系列了,其次便是国产的WPS。目前Microsoft office最新版本是2013版本的,个人试用了一下,感觉无用的功能太多,而且很卡,界面看起来不是很舒服,不推荐试用。现在大家用的最多的应该是2007和2010两个版本的,这2个版本各有千秋,2007版本速度相对于2010来说要快一点,但是2010相比2007来说多了一些实用功能比如在word中直接存为pdf格式文件,并且2010界面更加好看。WPS个人不推荐,虽然免费,但是你经常会发现WPS在排版的时候会出现很多莫名其妙的格式问题:比如在这台电脑调好的格式换到另外一台电脑上格式就变了。个人由于习惯的原因比较倾向于2007版本的,总之,推荐使用2010和2007两个版本的。

澳门新浦京娱乐场网站 1

2、MathType 6.0中MT Extra(TrueType)字体问题

最新版MathType 7获取地址:

公式表达式

  个人推荐指数:

Math Type,目前国内正版序列号,个人使用售价为498元。

在打开MathType6.0时,有时会提示MathType需要安装一个较新版本的MT Extra(TrueType)字体,这是因为你的系统没有MTExtra(TrueType)字体,或此字体的版本太低,缺少某些符号。

澳门新浦京娱乐场网站 2

LaTeX

LaTeX是一种基于ΤΕΧ的排版系统,它非常适用于生成高印刷质量的科技和数学类文档。
例如勾股定理用LaTeX表达:

a^{2} b^{2}=c^{2}

常用的LaTeX渲染组件是MathJax。
我们在项目中使用的便是LaTeX,所以本次研究就是如何将Office中的公式对象转换成LaTeX表达式。

  Microsoft office 2013   不推荐

如需购买盒装软件,则为548元。

解决方法:打开C:WINDOWSFonts,若里面有MTExtra(TrueType)字体或其快捷方式,则将其删除,再把MathType安装目录下MathType6.0FontsTrueType目录里面的MTEXTRA.TTF字体文件复制粘贴到C:WINDOWSFonts 文件夹中(粘贴时会有安装字体提示),完成字体完装。 

打开文件位置界面

Mathml

全称为数学标记语言(Mathematical Markup Language),是一种基于XML的标准,用来在互联网上书写数学符号和公式的置标语言。
例如一个表达式:

<math xmlns="http://www.w3.org/1998/Math/MathML">
    <msup>
        <mi>n</mi>
    <mrow>
      <mi>p</mi>
      <mo>-</mo>
          <mn>1</mn>
    </mrow>
  </msup>
  <mspace width=".2em"/>
  <mo>≡</mo>
  <mspace width=".2em"/>
  <mn>1</mn>
  <mspace width=".2em"/>
  <mo>(</mo>
  <mi>mod</mi>
  <mspace width=".2em"/>
  <mi>p</mi>
  <mo>)</mo>
</math>

  Microsoft office 2010   4星

Math Type在windows系统中最新版本为Math type 6.9b(可在office 2016及以下版本中使用)。

3.模板文件加载失败

这时候我们打开word2016打开选项,然后再弹出框选择加载项,然后如图所示选择word加载项,然后点击转到。

Office MathML (OMML)

office2007之后版本所编辑的公式对象便是OMMLOMMLoffice为了配合Office Open Xml制定的数学标记语言。
例如:

<m:oMathPara><!-- mathematical block container used as a paragraph -->
  <m:oMath><!-- mathematical inline formula -->
    <m:f><!-- a fraction -->
      <m:num><m:r><m:t>π</m:t></m:r></m:num><!-- numerator containing a single run of text -->
      <m:den><m:r><m:t>2</m:t></m:r></m:den><!-- denominator containing a single run of text -->
    </m:f>
  </m:oMath>
</m:oMathPara>

  Microsoft office 2007   4.5星

Mac系统中最新版本为Math type6.7。

今天装完MathType 6.0c,但是在word里见不到工具栏,怎么办? 模板文件加载出了问题,手工添加,试试看: 【工具】→【模板和加载项】,添加

澳门新浦京娱乐场网站 3

Extra等MathType难点的不包容性化解方案,一些应用钻探中平日使用的工具。转换关系

我们在项目中使用到的三者之间转换关系是:OMML -> MathML -> LaTex
Office在安装目录中提供了将OMML转为MathMLxsl工具:MML2OMML.XSL
MathMLLaTex使用网上找到另一个xsl工具mmltex.xsl。

  当然有些场合需要专门用到Latex进行编辑就另当别论了。

math type分为两种安装类型。

①:D:Program FilesMathTypeOffice Support(Mathtype的安装路径) 路径下的2个.dot文件

点击“加载项”按钮界面

Office文档Java解析

2.公式编辑软件

一为对象型,一为加载&对象型。

②:D:Program FilesMathTypeMathPage路径下的 MathPage.wll

然后再弹出的选项框内选择选项,在弹出的文件夹内找到刚才mathtype的文件夹,在office support内找到word的支持,选择2013的就可以了。我的路径是C:Program Files (x86)MathTypeOffice Support64。

2007与之前的版本

用过一段Office的同学们都知道,Office文档分为wordwordx这两种类型,分别对应着2007之前与之后的版本格式。
2007之前版本使用的Office文档是二进制文件。而之后版本中x代表的意义是xml,表明新版的Office文档使用Office Open Xml规范定义文件格式。
如果我们把wordx文件的扩展名改为zip,就可以正常解压出Word文档包含的所有内容。

  虽然在word中能直接插入和编辑公式,但是有时候如果要编辑一些非常复杂的数学公式,word恐怕就不能满足要求了。最经典的公式编辑软件恐怕非MathType莫属了,基本上进行科学论文写作编辑公式都是用的这个软件下面是MathType的运行截图:

如果需要在word 2010中显示math type显示相应标签,则推荐安装加载&对象型。

最后,再重启一下Word。 

澳门新浦京娱乐场网站 4

POI

相信用Java做过信息系统的同学都遇过生成统计Excel文档或解析Excel导入数据的功能。这时我们最常使用的开发库就是Apache POI。
POI支持二进制与Office Open Xml文档,可以满足我们大部分的Office文档解析需求。

  澳门新浦京娱乐场网站 5

安装完成后如图:

4.关于MathType6加载的问题
用Word→【工具】→【模板和加载项】选择加载 ①MathType Commands 6 For Word.dot ②WordCmds.dot ③MathPage.wll
三个文件。第①和第③个文件都可以正常加载,唯独第②个文件,选择之后重启Word,同样会出现一个空白对话框,再看加载项,重启前选择的WordCmds.dot文件自动没有被选中! 另,我使用的Office2003标准版!如果用Office2003专业版就不会出现这样的问题!不知道是不是和版本有关系!请对office和MahtType熟悉的朋友指点指点!! 只能用Office2003专业版

点击“office support”界面

解析公式实例

首先要说明我们的功能限制:只针对Office2010及以上的Office Open Xml文档,WordExcel均可。 其中,Excel的公式数学字符需要转为普通字符,否则会出现Java无法识别的字符。
这里用Excel文档为例子来说明解析过程。

3.图表制作软件

澳门新浦京娱乐场网站 6

选定之后然后我们选择确定,然后我们回到word文档,就可以看到在word的菜单栏里面有一个MathType,表示安装成功啦。

功能实现思路

这个功能的关键点在于如何获得Office文档中的公式节点(OMML),得到OMML后我们就可以使用上述的两个工具转换为LaTeX

  如果要制作一般的图表excel和visio可以满足要求,但是如果为了制作更好喝更专业的图和表哥,下面推荐几个软件:

而关于如何安装并嵌入,math type网站有相关详细介绍,在此不作赘述。

澳门新浦京娱乐场网站 7

获得OMML

既然我们知道Excel文档是一个xml,那只需要使用xml解析工具读出OMML节点就行了。
先用POI得到操作的XSSFSheet

String basePath = "f:\";
FileInputStream fis = new FileInputStream(basePath   "math.xlsx");
OPCPackage pack = OPCPackage.open(fis);
XSSFWorkbook workbook = new XSSFWorkbook(pack);
XSSFSheet sheet = workbook.getSheetAt(0);

插入在Excel文档中的图片、公式及其他元素,它都是存放在一个叫drawing的单独xml文件中,其中的节点记录了元素摆放的位置信息。用POI得到drawing元素:

XSSFDrawing dr = sheet.getDrawingPatriarch();
CTDrawing drawing = dr.getCTDrawing();
CTOneCellAnchor[] oneCells = drawing.getOneCellAnchorArray();   //所有的图片、公式等元素

每个CTOneCellAnchorxml里包含元素的位置信息,包括X坐标、Y坐标,所在行、所在列等,更重要的是图片或公式的描述节点。OMML节点名为m:oMathPara,这里我们就使用dom4jxpath来获得OMML

CTOneCellAnchor c = oneCells[0];
String xml = c.xmlText();   //得到xml串

//dom4j解析器的初始化
SAXReader reader = reader = new SAXReader(new DocumentFactory());
Map<String, String> map=new HashMap<String, String>();
map.put("xdr","http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing");
map.put("m","http://schemas.openxmlformats.org/officeDocument/2006/math");
reader.getDocumentFactory().setXPathNamespaceURIs(map); //xml文档的namespace设置

InputSource source = new InputSource(new StringReader(xml));
source.setEncoding("utf-8");
Document doc = reader.read(source);
Element root = doc.getRootElement();
Element e = (Element)root.selectSingleNode("//m:oMathPara");    //用xpath得到OMML节点
String omml = e.asXML();    //转为xml

  1)几何画板

math type官网关于添加嵌入按钮的技巧文章:

MathType安装好的界面

转换OMML为Mathml及LaTeX

顺利得到OMML后,就可以使用xsl转换工具得到MathmlLaTeX了。
这里先写一下xsl转换工具方法,使用javax.xml.transform工具包实现:

/**    
 * <p>Description: xsl转换器</p>
 */
public static String xslConvert(String s, String xslpath, URIResolver uriResolver){
    TransformerFactory tFac = TransformerFactory.newInstance();
    if(uriResolver != null)  tFac.setURIResolver(uriResolver);
    StreamSource xslSource = new StreamSource(MathmlUtils.class.getResourceAsStream(xslpath));
    StringWriter writer = new StringWriter();   
    try {
        Transformer t = tFac.newTransformer(xslSource);
        Source source = new StreamSource(new StringReader(s));
        Result result = new StreamResult(writer);   
        t.transform(source, result);
    } catch (TransformerException e) {
        logger.error(e.getMessage(), e);
    }
    return writer.getBuffer().toString();
}

/**
 * <p>Description: 将mathml转为latx </p>
 * @param mml
 * @return
 */
public static String convertMML2Latex(String mml){
    mml = mml.substring(mml.indexOf("?>") 2, mml.length()); //去掉xml的头节点
    URIResolver r = new URIResolver(){  //设置xls依赖文件的路径
        @Override
        public Source resolve(String href, String base) throws TransformerException {
            InputStream inputStream = MathmlUtils.class.getResourceAsStream("/conventer/mml2tex/"   href);
            return new StreamSource(inputStream);
        }
    };
    String latex = xslConvert(mml, "/conventer/mml2tex/mmltex.xsl", r);
    if(latex != null && latex.length() > 1){
        latex = latex.substring(1, latex.length() - 1);
    }
    return latex;
}

/**
 * <p>Description: office mathml转为mml </p>
 * @param xml
 * @return
 */
public static String convertOMML2MML(String xml){
    String result = xslConvert(xml, "/conventer/OMML2MML.XSL", null);
    return result;
}

至此我们就可以将OMML转成MathmlLaTeX表达式了:

String mml = convertOMML2MML(omml);
String latex = convertMML2Latex(mml);

  如果要画非常漂亮的几何图形进行展示,几何画板是最好的选择,操作起来非常方便,下面是运行截图:


看了以上教程,就掌握了在word2016添加MathType的方法,不管MathType在word2016中是怎么消失的,只要按照上面的步骤就可以再次安装MathType了。

一些心得体会

实现这个功能的时候,手上真的也没太多直接的资料可以参考,走过好几个弯路,网上查到的信息很多也是过时或者把话说一半的。
在与同事的交流下,使用不同思路,查阅许多api文档,再加上不断的尝试,也算完成了这个不算实用的功能。
就算你自己本身不够优秀,在一个好的团队也能不断推着你向前走。一个人最终能前行到多远,还是要看与你同行的人。

  澳门新浦京娱乐场网站 8

需要指出的是,安装加载&对象型,在使用包含公式的word时,会后台自动调用math type服务器,如果电脑性能不足的话,会出现卡顿的情况。

更多使用技巧可以关注MathType中文官网(www.mathtype.cn)。返回搜狐,查看更多

  

而仅仅安装对象型,则不会出现这样的情况。但word中不会出现math type按钮,但不影响正常使用。

责任编辑:

  2)Edraw

同时,math type不适用大文档,一般编辑word页面超过100页,则会出现打开文件耗时极长的情况。

  Edraw这个软件想必很多人都听过,跟visio比起来,好用太多,大家不信的话用一下就知道了,下面是Edraw可以绘制的图形种类:


  商务图:

同时,word 2010中已经自带公式编辑器,但功能性并不如math type强大,具体位置如图:(示例为office 2016,office 2010同理)

  澳门新浦京娱乐场网站 9

澳门新浦京娱乐场网站 10

  数据库:

同时,也可使用编码,直接在word中进行简单的上下标、分号等输入。

  澳门新浦京娱乐场网站 11

操作方式如图:

  网络图:

澳门新浦京娱乐场网站 12

  澳门新浦京娱乐场网站 13

另有LaTex等,也非常适合进行数学公式的编辑与处理。

  还有很多其他的图,就不一一介绍了。

而几何画图软件,在word中,比较常用的,是几何画板。

  3)Sigmaplot

相关内容在此不作赘述。

  如果大家要制作一般的曲线图,用excel就可以了,但是如果要制作非常专业的曲线图,不妨试一下Sigmaplot,可以说这个软件是最好的数据图表制作软件,没有之一,非常好用,自从用了它,我再也没有用excel制作过数据图表了。下面是Sigmaplot运行截图:


澳门新浦京娱乐场网站 14

以上,但愿我的回答可以帮到你。

  注意,Sigmaplot默认情况下小数点前面的0是不显示的,如果要显示小数点前面的0,需要进行以下设置:

  首先打开控制便面,选择”时钟、语言和区域“,然后选择”更改日期、时间或数字格式“,然后再弹出的框中选择”其他设置“,然后将”零起始显示“改成”0.7“(默认是.7)。

  澳门新浦京娱乐场网站 15

  另外,Sigmaplot对中文支持不是很好,特别是坐标轴的标题为中文时会有乱码的情况发生。我的解决办法是:

  插入文本框,在文本框里输入坐标轴标题,再把默认的坐标轴标题删掉,把文本框拖到合适的位置即可。

澳门新浦京娱乐场网站,  4)TableCurve 3D

  如果要绘制3D图形,这个软件是我目前用过的最好用的软件了,非常方便,支持直接从txt导入数据,下面是运行结果截图:

澳门新浦京娱乐场网站 16

   最后再补充一个软件,就是如果用office 2007的话,是不支持直接将文件件保存为pdf格式的,微软官方有个插件叫做 SaveAspdfandxps,我用过这个插件,一般的word文件保存没有大问题,但是如果word中出现高清3D图形,就会卡死,下面我介绍一个比较好用的pdf虚拟打印机:pdf factory pro,这个虚拟打印机是我用过的pdf虚拟打印机中比较好用的了,之前用过TinyPDF,Foxit PDF Creater以及PDFCreater、Adobe PDF Printer,其中PDFCreater和Adobe pdf printer是个人感觉最难用的,经常会把电脑卡死或者转不出来文档,TinyPDF和Foxit PDF Creater相对而言好用一点,但是这2个软件会遇到一个问题就是偶尔会出现图表丢失的问题,莫名其妙地看不到图,如下面的截图:

澳门新浦京娱乐场网站 17

   最后试着用了一下pdf factory pro,确实很好用,不会出现上面说的问题,不会在转成pdf过程卡死,也不会出现图表丢失的问题,个人比较推荐使用。

  以上只是个人看法,仅供学习和参考,希望能帮到大家,让大家更方便的撰写文档和科研论文。

  由于版权问题,在这里就不发上面列举的工具的链接了,如果有哪位朋友有需要使用的话,可以自行百度或者在下方留言。

本文由澳门新浦京娱乐场网站发布于办公软件,转载请注明出处:Extra等MathType难点的不包容性化解方案,一些应用