1. 程式人生 > >latex轉word公式(latextoword,latex_word,latex2word,latex_omml)

latex轉word公式(latextoword,latex_word,latex2word,latex_omml)

公式 並且 pan 代碼 不能 出現 妹子 決心 image

latex_word

主要目的:

  • 給大家分享一個我的原創作品:latex轉為word公式(omml)工具 [java]
  • 此工具主要用於將含有latex公式的文本下載成word時,將latex轉換為word格式的公式
  • 如果這不是你想要的你走吧,不要給我打賞

創作背景: (純粹扯淡,可以忽略)

  • 由於慘品要求要將html格式且帶有latex公式的試題下載成word版的試卷(需求很合理,心想好難啊我的power不夠啊,不能怯場,

微笑著說‘預估需要兩周的時間’)

  • 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.0.jar導入本地maven庫

mvn install:install-file -Dfile=(jar包的位置) -DgroupId=com.latextoword -DartifactId=latex-word -Dversion=1.0.0 -Dpackaging=jar

  • pom添加依賴

        <dependency>
            <groupId>com.latextoword</groupId>
            <artifactId>latex-word</artifactId>
            <version>1.0.0</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裏面顯示了

技術分享圖片

技術分享圖片

小結:

此工具已經過大量公式測試,但應該還有不能轉換的公式,如果有遇到敬請告知

公式展示字體相對大小這塊沒兼顧

在內容完整度上還是可以的

如果你覺滴這個工具對你還有一點用處或將來能用到,請走這裏,不要太多意思意思就行了(\手動微笑臉)

技術分享圖片技術分享圖片

沒有藍朋友的妹子,漢子(\手動狗頭)或有問題的猿請走這裏:[email protected]

latex轉word公式(latextoword,latex_word,latex2word,latex_omml)