如果侧重点在于「公式输入」的话,我推荐参考 GrafEq 这个软件的实现方式:
http://www.peda.com/grafeq/spec.html#math-formats它录入公式的特点,类似于 markdown 编辑器的「所见即所得」:随着用户把公式逐字敲进去的过程,公式会逐渐自动地显现出对应的数学格式。
举个复杂点的例子,比如对 y 开 x 次方,纯手打的话应该是输入"root(x,y)"。不过真实过程一点都不像这个公式一样枯燥:当用户输入完"root"这几个字母,然后输入一个"(",这时「根号」这个数学符号就自动显现出格式来了,同时焦点光标自动移动到了根号左上角指数幂的位置,然后用户输入"x"。这时光标仍然在左上角,用户需要输入一个",",把焦点切换到根号里面,也就是底数部分,这时可以输入"y",光标焦点仍在根号内。最后需要输入")"将光标切出根号外面。整个过程很自然。
这种方式有点「所见即所得」的意思,它把线性的输入字符串转变成了非线性的显示。最神奇的是当你完成了公式的输入,得到了一个完全格式化显现的公式后,你还可以把光标逐个字符向前移动,数学公式会像电影的倒放一样,逐渐恢复到线性的字符串格式。
对于所有难记的公式,它有「 easy button 」可以用,点一个按钮自动填入公式。但所见所得的思想没变。
http://www.peda.com/grafeq/spec.html#easy-buttons楼主可以试一下输入上面链接里举的例子"y={x if x>0,0 if x=0,-x if x<0}",输入过程中的实时显示反馈感觉非常好。既不像 MathType 那种纯按钮输入的死板,又不像编程一样纯代码的晦涩。