Skip to main content

模块将 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 实例的位置和上下文的任何方式来确定这些初始值,或者如果它无法确定这一点,则基于它最有可能的方式使用;

http://www.w3.org/TR/MathML2/chapter3.html#presm.mstyle

脚本

我已经包含了两个脚本作为示例。这些脚本显示了库的功能。由于它们必须从文件中读取文本、形成段落并区分数学和非数学标记,因此它们不能作为将文本广泛转换为 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 (51.7 kB 查看哈希

已上传 source