zoukankan      html  css  js  c++  java
  • latex转word公式 java (latextoword,latex_word,latex2word,latex_omml)

     

    latex_word

     

    主要目的:

    •     给大家分享一个我的原创作品:latex转为word公式(omml)工具 [java]
    •     此工具主要用于将含有latex公式的文本下载成word时,将latex转换为word格式的公式
    •     如果这不是你想要的你走吧,不要给我打赏

    创作背景:  (纯粹扯淡,可以忽略) 

    •     需要将html格式且带有latex公式的试题下载成word版的试卷
    •     html转到word版并且要求一定的排版,还有一些可配置显示,这块也比较难弄,我的另一篇文章有分享
    •     起初用了一些别人编写的转换工具,大多是先将latex转为mathml,再由mathml转为omml(word的公式),但其中有很多公式

               转换不出来或转换出错,转换出错的再用另一种将latex转换为图片的形式,这样做到一个折中的方案,但在显示效果上图片相

               对于word公式还是有很大差距的,另外图片的公式不能编辑,不是很理想,于是打算自己写一个转换工具

    •     因此我的第一个原创作品出现了,给大家分享一下
      latex: mathml: omml:
    一般转换步骤:
    (sqrt[3]{2+x})
    <math xmlns="http://www.w3.org/1998/Math/MathML"><mroot><mrow><mn>2</mn><mo>+</mo><mi>x</mi></mrow><mn>3</mn></mroot></math> <m:oMath><m:rad><m:deg><m:r><m:t>3</m:t></m:r></m:deg><m:e><m:r><m:t>2+x</m:t></m:r></m:e></m:rad></m:oMath>
    我的工具:
    (sqrt[3]{2+x})
    不需做中转,直接转omml <m:oMath><m:rad><m:deg><m:r><m:t>3</m:t></m:r></m:deg><m:e><m:r><m:t>2+x</m:t></m:r></m:e></m:rad></m:oMath>

    作品简介:

    •   支持以 ( ),[ ],$ $,$$ $$ 为公式边界的latex代码的转换
    (sqrt[3]{2+x})   [{frac{3-a}{2+x}}]    $3^(x+1)$    $$sumlimits_{i=1}^n$$
    •   支持较复杂公式的转换
    (f(x)= egin{cases}x,x>0 \ 0,x=0 \-x,x<0 end{cases})
    (left{ egin{array}{l}{x+y-1≥0} \ {x-1≤0} \ {ax-y+1≥0} end{array} 
    ight.)
    (7+97+997+9997+cdotsunderbrace{99cdots9}_{10个9}7)
    • 支持部分字体转换
    (37.5^circ {
    m C})  (strf{B}C^circ)

    使用方法:

    •   给诸位献上我的工具包:https://github.com/mao-yuwei/latex_word.git
    •   将下载下来的 latex-word-1.0.x.jar导入本地maven库
    •   依赖jar:jackson-databind-2.9.x.jar
    mvn install:install-file -Dfile=(jar包的位置) -DgroupId=com.latextoword -DartifactId=latex-word -Dversion=1.0.x -Dpackaging=jar
    •   pom添加依赖
            <dependency>
                <groupId>com.latextoword</groupId>
                <artifactId>latex-word</artifactId>
                <version>1.0.x</version>
            </dependency>
            <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.3</version>
    </dependency>
    •   调用代码
        public static void main(String[] args) {
            String latexStr="\(\sqrt[3]{2+x}\)";
            String omml= Latex_Word.latexToWord(latexStr);
            System.out.println(omml);
        }
    • 如果在调用之前你已经处理掉公式边界,用下面的方法
        public static void main(String[] args) {
            String latexStr="\sqrt[3]{2+x}";
            String omml= Latex_Word.latexToWordAlreadyClean(latexStr);
            System.out.println(omml);
        }
    • 输出:无异常输出
    <m:oMath><m:rad><m:deg><m:r><m:t>3</m:t></m:r></m:deg><m:e><m:r><m:t>2+x</m:t></m:r></m:e></m:rad></m:oMath>
    • 输出:有异常
    ERROR
    • 有异常时日志会打印发生异常的位置(这种情况时,先检查latex公式有没有错误,如果没错请告诉我不能解析的公式,以便我及时修复,完善)
    五月 16, 2019 2:39:43 下午 com.latextoword.Latex_Word latexToWordAlreadyClean
    信息: [latexToWord:ERROR]:ERROR:解析标记:[sqqq]没有对应的解析规则
    ERROR
    • 验证公式转换的是否正确:
    1.  >>新建word文档
    2. >> 将word文档另存为 Word Xml 文档(*.xml)的格式
    3. >>用NotePad++等工具以文本的形式打开另存后的.xml文件
    4. >> 在<w:p..></w:p>标签之间粘贴进出转换后的omml公式,保存
    5. >> 直接打开.xml文件就可以看见公式在word里面显示了 

    小结:

            此工具已经过大量公式测试,但应该还有不能转换的公式,如果有遇到敬请告知

            公式展示字体相对大小这块没兼顾   

            在内容完整度上还是可以的

     

    如果有将html的题文下载成word的需求可以看下面这篇文章

    html试题试卷下载成word案例分享:https://www.cnblogs.com/maoyuwei/p/11637738.html

     

    如果你觉得这个工具对你还有一点用处或将来能用到,请走这里,不要太多意思意思就行了

                

    有想法的,有问题的猿请走这里:mao_yuwei@163.com

     

     

    我在做什么?我在想什么?
  • 相关阅读:
    final,finally和finalize三者的区别和联系
    Java程序开发中的简单内存分析
    Java堆、栈和常量池以及相关String的详细讲解(经典中的经典)
    java中的基本数据类型一定存储在栈中吗?
    CDN加速-内容分发网络
    大型Java web项目分布式架构演进-分布式部署
    阿里面试-2019
    jvm调优-从eclipse开始
    eclipse中导入maven项目:org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.Maven
    图解 CMS 垃圾回收机制原理,-阿里面试题
  • 原文地址:https://www.cnblogs.com/maoyuwei/p/10874773.html
Copyright © 2011-2022 走看看