2009年3月31日星期二

当MathML与Flash相遇

在理工科网络化教学中,最麻烦的就是如何在Web上正确有效地显示数学公式。在MathML之前,通常做法是利用专用工具将Word或LaTeX文档中的数学公式渲染成JPG或GIF格式,再嵌入到HTML文件中。这样的做法问题在于数学公式与HTML文本间无对应关系,排版困难,且不能随浏览字体大小的改变而自动缩放。随后出现了OpenMath,其采用XML方式来对数学公式进行表达。由于Openmath提供了特定格式的XML语言定义了数学对象的语义字典,故其可将数学对象在不同的计算机环境间交换,从理论上解决了Web环境的兼容性问题。但Openmath的问题在于其只关心数学公式的语意,而不关心数学公式的视觉效果,故其主要面向数学系统专家而非Web出版者。基于上述原因,1999年W3C组织提出了基于XML语言标准的数学标记语言——MathML,其结合了HTML、XHTML与Openmath等语言的优点,具有良好的数据存储格式、可拓展性与高度结构化,从而成为Web上数学公式出版的工业标准。目前主流浏览器,如Firefox、Opera等都默认支持MathML,而IE6则可用通过插件(如IBM的TechExplorer或 MathPlayer)来浏览MathML。

MathML的缺点在于其繁缛的语法结构不利于人的输入与阅读,从而又出现了许多MathML辅助输入工具。比如利用MathType公式编辑器可将当前的公式用MathML形式输出,或者利用TeX4ht工具将TeX公式输出成MathML代码。这些都是非在线时的MathML辅助输入工具。

目前,在线式的MathML编辑工具主要有两类:基于TeX或者LaTeX系统的写作工具,如 AsciiaMathML 与 LaTeXMathML。其采用Javascript将TeX或LaTeX数据控制字符串转换成MathML语义字符串。另一类是所见即所得的Web编辑器,如 Webeq 和 amaya 等,其利用Javascript或Java构建一个类Word的编辑环境来输入公式。

上述的工具都是基于HTML或XHTML的,在以Flash为主流的RIA日益盛行的今天,如何在Flash中创建MathML呢?Ionel Alexandru给出了一个很好的解决方法。他开发了一个AS3的代码包,可以方便地渲染出基于MathML语义字符串的Flash MovieClip。虽然其尚未能完全覆盖所有MathML定义,但已经很不错了。加油 Ionel Alexandru!

当MathML遇上Flash,必然带来基于Flash平台的理工类网络教学软件一次技术上的飞跃!而基于LaTeX的Flash交互平台也离我们不远了!

0 评论: