一个数学公式通常使用非线性结构体来描述。
一个数学公式,例如分式、根式、上下标、行列式等不论其复杂程度如何,如果采用面向对象的观点来分析,都可以被细分成一系列的子对象来描述。比方说分式,可以抽象成分子和分母,简单的情况分子和分母都是文字,复杂的情况分子和分母本身又是一个非线性的结构体,但是最终还是可以细分到文字的处理。因而整个问题变成了对文字的排版和外观布局的处理,这个过程是一个递归处理过程。
4.1 公式结构分析
常用的数学公式可分为上下标、分式、根式、层叠式、括号、矩阵行列式、方程组和字符等八类。
(1)上下标结构体允许上标或者下表嵌套使用其它的公式对象,允许上标、下标单独或者同时出现。外观上主体的中心对齐。整个结构体划分为主体、上标和下标三个部分。上下标的排版外观如: 。
(2)分式允许分子和分母任意层次嵌套其它的公式对象,外观上要求在分数线中心对齐,并根据分式内容自动调整分数线的长度。分式排版结果如: 。整个结构划分为分子和分母两个部分。
(3)根式允许任意层次的嵌套,允许指定根式的开方次数,根据内容分配根号的大小,开方次数出现在分式的垂直中心位置,整个根式中心对齐。根式排版的结果如: ,整个结构划分为被开方数和开方次数两个部分。
(4)层叠式是一种常见的数学符号表现形式,排版元的上下同时或部分含有附加的排版元所形成的复合排版元出现,主要包括连加,连乘,极限等。层叠式的排版效果如下: ,层叠式划分非,主体部分、上部和下部三个部分。
(5)很多情况下,对一些公式需要进行分组,或者进行间隔,如方程组,矩阵,行列式等。括号用于表示水平方向的间隔符,排版效果如下: 括号由三个对象组成,左间隔符,中间主元素,右间隔符号,左右都可以为空对象。
(6)矩阵行列式是一种常用的数学符号,行列式的间隔符号有很多种,所以抽象出行列式,但是不包括分隔符号,排版样式如: ,要实现行列式、矩阵的外观,需要结合括号,将行列式作为括号的中间主元素,排版样式为:
(7)方程组是一类有特殊要求的行列组合:要求在等号处对齐,左边有一个大括号,方程组中的方程可以编号。
(8)字符作为公式的基本元素,要求能够显示任何符合Unicode编码规则的所有可视符号。能够控制字符的字体、字号、粗体、斜体、颜色等属性。