是否有OpenOffice's formula renderer的独立库?我正在寻找可以采用与OpenOffice使用的语法相同的纯文本(例如E = mc^2
)并转换为png或pdf片段的内容。
(注意:我不需要WYSIWYG编辑器,只需要渲染器。基本上我想在OpenOffice中工作以交互式编辑我的公式,然后复制源文本以便在不需要OpenOffice的其他环境中使用渲染它们。)
答案 0 :(得分:2)
我使用unoconv
将OpenOffice / LibreOffice文档转换为PDF格式。
但是,首先我必须使用公式创建一些输入文档。 不幸的是,不可能只使用公式编辑器来创建ODF文件,因为输出PDF文件将包含奇怪的页眉和页脚。
因此,我创建了一个简单的文本文档(在Writer中)并将公式作为单个对象嵌入(作为字符对齐)。我保存了ODT文件,解压缩它(因为ODT只是一个ZIP)并编辑了内容。然后,我确定了可以删除哪些文件并格式化剩余文件以获得最小的示例。
在我的示例中,公式本身位于Formula/content.xml
。应该很容易以自动方式更改<annotation>...</annotation>
标记中的代码。
最后,我压缩了目录并生成了一个新的ODT文件。
然后,使用unoconv
和pdfcrop
,我制作了一个很好的公式PDF格式。
# this trick prevents zip from creating an additional directory
cd formula.odt.unzipped
zip -r ../formula.odt .
cd ..
unoconv -f pdf formula.odt # ODT to PDF
pdfcrop formula.pdf # keep only the formula
# you can convert the PDF to bitmap as follows
convert -density 300x300 formula-crop.pdf formula.png
以下是ODT文件formula.odt
的最小内容。
formula.odt.unzipped/Formula/content.xml
formula.odt.unzipped/META-INF/manifest.xml
formula.odt.unzipped/content.xml
formula.odt.unzipped/Formula/content.xml
包含:<?xml version="1.0" encoding="UTF-8"?>
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<semantics>
<annotation encoding="StarMath 5.0">
f ( x ) = sum from { { i = 0 } } to { infinity } { {f^{(i)}(0)} over {i!} x^i}
</annotation>
</semantics>
</math>
formula.odt.unzipped/content.xml
包含:<?xml version="1.0" encoding="UTF-8"?>
<office:document-content
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:xlink="http://www.w3.org/1999/xlink">
<office:body>
<office:text>
<text:p>
<draw:frame>
<draw:object xlink:href="./Formula"/>
</draw:frame>
</text:p>
</office:text>
</office:body>
</office:document-content>
formula.odt.unzipped/META-INF/manifest.xml
包含:<?xml version="1.0" encoding="UTF-8"?>
<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">
<manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.text"/>
<manifest:file-entry manifest:full-path="content.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="Formula/content.xml" manifest:media-type="text/xml"/>
<manifest:file-entry manifest:full-path="Formula/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.formula"/>
</manifest:manifest>
答案 1 :(得分:0)
有几种Web服务可以为您运行LaTeX并返回图像。例如,http://rogercortesi.com/eqn/