APP下载

ASCIIMathML结构分析与应用

2018-01-16杜宁

科技视界 2018年28期

【摘 要】遵循W3C互联网数学信息交换标准的开源脚本ASCIIMathML.js与MathPlayer插件共同实现了网页公式从表义(Content)到呈现(Presentation)的转换。分析ASCIIMathML.js的数据结构、框架结构及其运行机制,对于网页公式的处理以及软件的二次开发应用,具有一定的参考价值。

【关键词】网页公式;ASCIIMathML;MathML;MathPlayer

中图分类号: TP391 文献标识码: A 文章编号: 2095-2457(2018)28-0071-002

DOI:10.19694/j.cnki.issn2095-2457.2018.28.031

【Abstract】The open source script ASCIIMathML.js, which follows the W3C Internet Mathematical Information Exchange Standard, together with the MathPlayer plug-in, implements the conversion of Web formulas from Content to Presentation. The analysis on the data structure, the frame structure and the operation mechanism of ASCIIMathML.js has certain value for the processing of Web formula and for the secondary development and application of software.

【Key words】Web formula; ASCIIMathML; MathML; MathPlayer

0 导言

开源ASCIIMathML.js[1]脚本,兼容LaTex语法,与Design Science公司的网页公式插件MathPlayer[2]合璧,实现了网页公式从表义(Content)到呈现(Presentation)的转换。文[3]对ASCIIMathML的语义符号、解析形式进行了探讨,本文旨在分析ASCIIMathML的结构及其运行机制,尝试在此基础上的初步应用。

1 ASCIIMathML的数据结构分析

ASCIIMathML的基本数据单元(以ASCIIMathML.js2.10为例),是一种结构体,以input字段为keyword,形成有序线性表。语法如表1:

例1:{input:"->",tag:"mo",output:"\u2192",tex:"rightarrow",ttype:CONST},

此例中,表义字符串“->” 形象代表unicode字符\u2192(即→),对应的LaTeX表义字符为“rightarrow”。该表义串被动态创建为mo对象,结构类型为CONST。

例2:{input:"\\cos",tag:"mi",output:"cos",ttype:UNARY,func:true},

此例中,func:true表示此乃数学函数,被处理为正体显示。

例3:{input:"\\frac",tag:"mfrac",output:"/",ttype:BINARY},

此例中,tag:mfrac為分式结构,以BINARY对应的结构方式构建此对象。

2 ASCIIMathML程序框架分析

在ASCIIMathML.js脚本中,包含ASCIIMathML、 LaTeXMathML和ASCIIsvg三部分。其中ASCIIMathML为基本处理(已弃用),LaTeXMathM是对LaTeX作兼容性扩展后形成,ASCIIsvg实现网页图形功能。下面简析网页公式主体LaTeXMathM的框架和运行机制。

2.1 LaTeXMathML的基本程序极其功能

LaTeXMathML框架由若干功能程序和辅助程序的构成,其主要作用是解析公式表义字符串,创建对应的math对象,然后由MathPlayer插件将这些math对象显示在页面上。

值得一提的是LMgetSymbol函数,它按input字段索引并返回表义字符在ASCIIMathML数据单元表中对应的数据单元对象。

2.2 LaTeXMathML运行机制示意图

LaTeXMathML以HTML文档最顶层的body对象为入口,递归遍历document对象的所有DOM结点。……

登录APP查看全文