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)$    $$sum\limits_{i=1}^n$$
  •   支持較復雜公式的轉換
\(f(x)= \begin{cases}x,x>0 \\ 0,x=0 \\-x,x<0 \end{cases}\)
\(\left\{ \begin{array}{l}{x+y-1≥0} \\ {x-1≤0} \\ {ax-y+1≥0} \end{array} \right.\)
\(7+97+997+9997+\cdots\underbrace{99\cdots9}_{10個9}7\)
  • 支持部分字體轉換
\(37.5^\circ {\rm C}\)  \(str\bf{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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM