模块将 ASCII 数学转换为 Mathml
项目描述
概述
asciitothml 将 ASCII 数学转换为 MathML。 有关详细信息,请参阅http://mathcs.chapman.edu/~jipsen/mathml/asciimath.html 。例如,asciitomathml 将字符串x^2转换为:
<math xmlns="http://www.w3.org/1998/Math/MathML"> <mstyle> <msup> <mi>x</mi> <mn>2</mn> </msup> </mstyle> </math>
安装
以正常方式安装 asciitomathml:
python setup.py install
或者,对于点子:
pip install asciitomathml
Python 2 的安装
- 如果您需要用于 Python 2.7 的 asciimathml,请使用版本 .88::
pip install asciitomathml=.88
利用
以下从字符串创建 etree:
import asciitomathml.asciitomathml the_string = 'x^2' math_obj = asciitomathml.asciitomathml.AsciiMathML() math_obj.parse_string(the_string)
为了得到树,使用math_tree方法:
math_tree = math_obj.get_tree() # math_tree is an etree object
相反,如果您想要一个 XML 字符串,请使用to_xml_string方法:
xml_string = math_obj.to_xml_string() # xml_string a binary string
xml_string 将具有“字节”类型。如果您要使用“str”类型,请传递“unicode”类型的编码:
xml_string = math_obj.to_xml_string(encoding='unicode')
该字符串将被编码为 UTF-8。
如果您将 utf8 以外的编码传递给此方法,则字符串将以标准 XML 编码开头,符合 XML 标准:
<?xml version='1.0' encoding='utf8'?>
如果您将字符串合并到 XML 文档中,并且不想要编码字符串,您可能应该使用 get_tree 方法并将生成的对象合并到您的 etree 文档中。同样,通过不向此方法传递任何编码,返回的字符串将被编码为 ASCII,并且不应包含字符串的编码部分。但是,如果出于某种原因您需要没有编码的树,请将 no_encoding_string 选项传递给 to_xml_string 方法:
xml_string = math_obj.to_xml_string(encoding="utf8", no_encoding_string = True)
数学风格
您可以将任何允许的属性传递给<msstyle>。创建方法时使用mstyle 选项传递字典:
math_obj = asciitomathml.asciitomathml.AsciiMathML(mstyle={'displaystyle':'true'})
最有用的属性可能是 displaystyle。通常,如果您将方程本身放在块中,请将此属性设置为 true 。否则,根本不要设置此值,或将其设置为false。mathml 的联盟是这样解释的:
对于以“显示”模式嵌入文本数据格式(如 HTML)的 MathML 实例,即代替段落,对于嵌入的 MathML 的最外层表达式,displaystyle = “true” 和 scriptlevel = “0”;如果 MathML 以“内联”模式嵌入,即代替字符,则 displaystyle = “false” 和 scriptlevel = “0” 表示最外层表达式。请参阅第 7 章 MathML 接口以进一步讨论 MathML 的“显示”和“内联”嵌入之间的区别以及如何在特定实例中指定它。通常,MathML 渲染器可以以适合其正在渲染的特定 MathML 实例的位置和上下文的任何方式来确定这些初始值,或者如果它无法确定这一点,则基于它最有可能的方式使用;
脚本
我已经包含了两个脚本作为示例。这些脚本显示了库的功能。由于它们必须从文件中读取文本、形成段落并区分数学和非数学标记,因此它们不能作为将文本广泛转换为 HTM 或 FO 的工具。对于此类转换,请参阅:
http://docutils.sourceforge.net/
具体来说,请参阅 sandbox/docbook 目录,其中包含大量样式表和说明,用于将文本转换为 docbook,然后再转换为 HTML 或 FO。
要使用脚本,请键入:
python scripts/asciimath2fo.py <file.txt>
或者:
python scripts/asciimath2html.py <file.txt>
脚本将“`”和“`”之间的任何内容转换为 mathml;否则,脚本只会逐字复制文本。请参阅示例目录中的示例。要快速开始,请尝试:
python scripts/asciimath2html.py examples/linear_regression.txt > linear.xhtml
然后在可以处理mathml的浏览器中打开linear.xhtml,比如Firefox。
测试
要测试库,请键入:
python test/test_all.py
项目详情
asciitomathml -1.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 656e43ac8b2d3b719cd23efeac854086e7b93fe7dbd646925bdffaab1b36adfc |
|
| MD5 | 05853e800dd26e5b76927f59084774cf |
|
| 布莱克2-256 | 88f8686b5bbf6742abb65610f788b5efbfd7dab10811163a3a9f73f8bc883ea9 |