latex轉word公式(latextoword,latex_word,latex2word,latex_omml)
阿新 • • 發佈:2019-05-16
公式 並且 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
- 驗證公式轉換的是否正確:
- >>新建word文檔
- >> 將word文檔另存為 Word Xml 文檔(*.xml)的格式
- >>用NotePad++等工具以文本的形式打開另存後的.xml文件
- >> 在<w:p..></w:p>標簽之間粘貼進出轉換後的omml公式,保存
- >> 直接打開.xml文件就可以看見公式在word裏面顯示了
小結:
此工具已經過大量公式測試,但應該還有不能轉換的公式,如果有遇到敬請告知
公式展示字體相對大小這塊沒兼顧
在內容完整度上還是可以的
如果你覺滴這個工具對你還有一點用處或將來能用到,請走這裏,不要太多意思意思就行了(\手動微笑臉)
沒有藍朋友的妹子,漢子(\手動狗頭)或有問題的猿請走這裏:[email protected]
latex轉word公式(latextoword,latex_word,latex2word,latex_omml)