昨天收到一位学生朋友的邮件,顺便把解答分享一下,供有需要的朋友参考。
鉴于小乐数学zzllrr Mather,虽然在Github中已经开源好几年了,Star数只有264,Fork数也只有58,用的人相对还是比较少的,因此只是单纯的维护,没有过多的底层变革。由于历史原因,掺杂了很多的个人摸索的编程色彩,种种现存弊端,我还没有太大动力和精力去克服。如果将来用的人越来越多,希望后来者能居上,直接颠覆超越它。让人人都能学好(hǎo)数学,并觉得数学好(hǎo)学,进而好(hào)学数学,认识到学数学好(hǎo),是一件非常有意义,任重道远的事情。
下面是关于API使用的一些具体技术解答,供参考。
1)js\obj\math\ 文件夹下的文件,我建议你都引用一下,
因为数学对象之间都是相互联系的,尽管你可能只想涉及矩阵,但完整的线性代数其实还涉及数、多项式、排列组合、函数表达式等一系列调用。
当然,实际操作时,你可以按需引用以避免臃肿 (matrix.js,function.js,num.js 这些数学对象必需)。
2)js\htm\solve\matrix.js 这是专解矩阵类型题目的具体应用,你在源代码中不难发现,是用if语句分别讨论每种题型, 输出相应结果。
inputValue是用户在文本框中输入的字符串
uriA是用户一层层点击菜单之后的完整URI数组
在js\htm\common.js中,专门有个界面函数questionA('solve')生成这个URI数组 ,
你也可以在小乐数学界面点击各种解题菜单之后,F12浏览器console一下questionA('solve'),得到实时反馈结果。
具体调用方法,我用一个求矩阵转置的简单示例:
用户输入矩阵:1234(一个简单的2×2阶矩阵)
求转置矩阵题型对应的URI是:Matrix/Unary Operation/A^T
这样我们就可以拼出URL,
solve.html?s=matrix&t=1234&qa=Matrix%2FUnary%20Operation%2FA%5ETn
你以访问上面这个相对网址实时查看效果。
底层调用语句,实际上就是
solve['matrix']('1234',["Matrix/Unary Operation/A^T"])
3)即使只需线性代数相关的功能,下列文件可能都需要引用(有些需要重构):
js\lib\zmather_zlr.js 小乐核心函数
js\lib\zmather_io.js 公式输入输出函数(公式面板及显示处理)
js\lib\jquery.js 底层库(第三方)
js\lib\base64.js 底层库(第三方,有小扩充)
js\lib\katex.js 第三方数学LaTeX公式转HTML(第三方,有小改进)
js\htm\solve\solve.js 解析URL中的参数(用户输入值、题目类型),控制网页输出结果
js\htm\common.js 公用函数集
js\obj\math\function.js 数学对象,函数表达式处理
js\obj\math\matrix.js 数学对象,矩阵处理
js\obj\math\num.js 数学对象,数字计算
必须的CSS文件:
css\katex.css (第三方)
css\zmather.lib.css 小乐核心样式
css\zmather.io.css 公式输入输出相关样式
css\fonts (数学字体文件)
必须的HTML文件:
solve.html 仅输出解题结果网页(用iframe调用,以防各种异常)
4)下列文件可能需要参考用到,但建议取代:
js\interface\index\solve.js 解题题型索引
js\interface\index\index.js 界面解题菜单交互控制
js\i18n\zh_cn.js 翻译文件(中译英)
editor.html 小乐数学编辑器
index.html 小乐数学首页