将 Microsoft Word 方程转换为 LaTeX
我有一个docx文件,里面有几页不同的公式。通过Python和lxml,我成功提取了内容。现在我需要把Word里的公式转换成Latex格式。有些公式看起来是这样的:
- eq \\f (sinx,\\r(1 - sin 2 x))
有没有什么Python库或者工具可以用来把这些公式转换成Latex格式呢?
这里是我从docx文件的word/document.xml中得到的一小段XML内容:
<w:p w:rsidR="00677018" w:rsidRPr="007D05E5" w:rsidRDefault="00677018" w:rsidP="00677018">
<w:pPr>
<w:pStyle w:val="w" />
<w:jc w:val="both" /></w:pPr>
<w:r w:rsidRPr="007D05E5">
<w:tab/>
<w:t>a.</w:t>
</w:r>
<w:r w:rsidRPr="007D05E5">
<w:tab/></w:r>
<w:r w:rsidR="00453EF1" w:rsidRPr="007D05E5">
<w:fldChar w:fldCharType="begin" /></w:r>
<w:r w:rsidRPr="007D05E5">
<w:instrText xml:space="preserve">eq \b\bc\[(\a\co2\hs4(7,-3,-1,2))</w:instrText>
</w:r>
<w:r w:rsidR="00453EF1" w:rsidRPr="007D05E5">
<w:fldChar w:fldCharType="end" /></w:r>
<w:r w:rsidRPr="007D05E5">
<w:tab/>
<w:t>b.</w:t>
</w:r>
<w:r w:rsidRPr="007D05E5">
<w:tab/></w:r>
<w:r w:rsidR="00453EF1" w:rsidRPr="007D05E5">
<w:fldChar w:fldCharType="begin" /></w:r>
<w:r w:rsidRPr="007D05E5">
<w:instrText xml:space="preserve">eq \f(5,8)</w:instrText>
</w:r>
<w:r w:rsidR="00453EF1" w:rsidRPr="007D05E5">
<w:fldChar w:fldCharType="end" /></w:r>
<w:r w:rsidR="00453EF1" w:rsidRPr="007D05E5">
<w:fldChar w:fldCharType="begin" /></w:r>
<w:r w:rsidRPr="007D05E5">
<w:instrText xml:space="preserve">eq \b\bc\[(\a\co2\hs4(7,-3,-1,2))</w:instrText>
</w:r>
<w:r w:rsidR="00453EF1" w:rsidRPr="007D05E5">
<w:fldChar w:fldCharType="end" /></w:r>
</w:p>
1 个回答
1
我不确定这算不算一个答案,但也许是通往答案的路。
我之前找过这样的工具,但没找到,所以我觉得简单的回答就是没有。
Word支持多种格式的公式。你提到的这种格式叫做“Word EQ字段公式”。 http://office.microsoft.com/en-us/word-help/field-codes-eq-equation-field-HP005186148.aspx
我在网上搜索时没有找到任何Python的解决方案,而且我知道python-docx是不能支持这个的。真希望我能给你更好的消息 :(
如果你真的想做,似乎有一些非Python的解决方案可以实现这个转换,如果你决定自己动手做的话,它们可能是一个替代方案或者可以作为学习的例子 :)