efront 4.34.1 → 4.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/coms/basic/Matrix.js +3 -1
  2. package/coms/basic/color.js +258 -78
  3. package/coms/basic/color_test.js +23 -2
  4. package/coms/basic/crc.js +6 -2
  5. package/coms/basic/data.js +3 -3
  6. package/coms/basic/decodeASN1.js +2 -2
  7. package/coms/basic/math.js +321 -0
  8. package/coms/basic/math.md +265 -0
  9. package/coms/basic/math_test.xht +56 -0
  10. package/coms/basic/pinyin.js +40 -0
  11. package/coms/basic/pinyin_test.js +40 -0
  12. package/coms/basic/wait.js +1 -1
  13. package/coms/basic_/JSON.js +24 -4
  14. package/coms/compile/Html.js +1 -0
  15. package/coms/compile/Javascript.js +14 -0
  16. package/coms/compile/Javascript_test.js +4 -3
  17. package/coms/compile/Program.js +82 -45
  18. package/coms/compile/autoenum.js +498 -138
  19. package/coms/compile/autoenum_test.js +70 -4
  20. package/coms/compile/autoeval.js +616 -18
  21. package/coms/compile/autoeval_test.js +55 -2
  22. package/coms/compile/common.js +27 -15
  23. package/coms/compile/common_test.js +12 -2
  24. package/coms/compile/downLevel.js +60 -7
  25. package/coms/compile/downLevel_test.js +22 -8
  26. package/coms/compile/powermap.js +2 -2
  27. package/coms/compile/rescan.js +2 -2
  28. package/coms/compile/scanner2.js +25 -1
  29. package/coms/compile/translate.js +18 -7
  30. package/coms/compile/unstruct.js +44 -2
  31. package/coms/compile/unstruct_test.js +14 -9
  32. package/coms/compile//347/256/227/345/274/217.js +276 -0
  33. package/coms/compile//347/256/227/345/274/217_test.js +26 -0
  34. package/coms/compile//347/264/240/351/246/250.js +60 -23
  35. package/coms/compile//347/264/240/351/246/250_test.js +8 -3
  36. package/coms/docs/markdown.js +4 -0
  37. package/coms/frame/ChatRTC.js +60 -18
  38. package/coms/frame/chat-rtc.xht +20 -18
  39. package/coms/frame/chat.js +38 -21
  40. package/coms/frame/chat.less +8 -3
  41. package/coms/reptile/colors.js +1 -0
  42. package/coms/zimoli/prompt.js +12 -2
  43. package/coms/zimoli/render.js +0 -1
  44. package/coms//350/214/250/350/217/260//344/270/212/350/211/262.xht +4 -0
  45. package/coms//350/214/250/350/217/260//346/240/207/347/255/276/345/214/226.js +14 -4
  46. package/package.json +24 -24
  47. package/public/efront.js +1 -2
  48. package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
  49. package/tools/build-efront +22 -0
  50. package/tools/build-efront.bat +22 -0
  51. package/tools/build-efront.js +64 -0
  52. package/tools/build-setup.bat +9 -0
  53. package/tools/buildEmoji.js +17 -0
  54. package/tools/electron.js +37 -0
  55. package/tools/empty.js +11 -0
  56. package/tools/fixBuffer.js +41 -0
  57. package/tools/install-all.js +46 -0
  58. package/tools/makeUseStrict.js +35 -0
  59. package/tools/readHelpersFromTypescript.js +82 -0
  60. package/tools/reload.js +20 -0
  61. package/tools/run-efront.bat +14 -0
  62. package/tools/toCRLF.js +30 -0
  63. package/tools/unwrap-typescript.js +28 -0
  64. package/tools/update-libs.bat +86 -0
  65. package/tools/write-utf8.js +39 -0
@@ -0,0 +1,321 @@
1
+ var mo2 = (o, b) => `<mo>${o}</mo>${b}`;
2
+ var mo3 = (o, args) => args.length === 1 ? args[0] + `<ms>${o}</ms>` : args.join(`<mo>${o}</mo>`);
3
+ var ms = s => `<ms>${s}</ms>`;
4
+ var mroot = (d, z) => `<mroot>${d}${z}</mroot>`;
5
+ var msqrt = a => `<msqrt>${a}</msqrt>`;
6
+ var mi = s => `<mi>${s}</mi>`;
7
+ var mn = s => `<mn>${s}</mn>`;
8
+ var mi2 = (s, a, n) => {
9
+ s = n ? `<msup><mi>${s}</mi>${n}</msup>` : `<mi>${s}</mi>`;
10
+ return s + `<ms>&thinsp;</ms>` + a;
11
+ }
12
+ var mrow = (a, quote, deep) => {
13
+ if (deep === 2) var tag = 'mtd';
14
+ else tag = 'mrow';
15
+ if (quote === true) a = `<${tag}><mi>(</mi>${a}<mi>)</mi></${tag}>`;
16
+ else if (quote === false) a = `<${tag}>${a}</${tag}>`;
17
+ else if (deep === 2) a = `<mtd>${a}</mtd>`;
18
+ return a;
19
+ }
20
+ var series =/*级数*/(通项, neq, to) =>
21
+ `<munderover><mo>∑</mo>${neq}${to}</munderover>${通项}`;
22
+ var msub = (a, n) => `<msub>${a}${n}</msub>`;
23
+ var qt = (t, a, args) => {
24
+ var b = args.shift();
25
+ a = t(a, b);
26
+ while (args.length) {
27
+ a = `<mrow><mo>(</mo>${a}<mo>)</mo></mrow>`;
28
+ b = args.shift();
29
+ a = t(a, b);
30
+ }
31
+ return a;
32
+ }
33
+
34
+ var 三角函数 = {
35
+ "sin"(a, n) {
36
+ return mi2("sin", a, n);
37
+ },
38
+ "cos"(a, n) {
39
+ return mi2("cos", a, n);
40
+ },
41
+ "tan"(a, n) {
42
+ return mi2("tan", a, n);
43
+ },
44
+ "cot"(a, n) {
45
+ return mi2("cot", a, n);
46
+ },
47
+ "sec"(a, n) {
48
+ return mi2("sec", a, n);
49
+ },
50
+ "csc"(a, n) {
51
+ return mi2("csc", a, n);
52
+ },
53
+ };
54
+
55
+ var funcmap = {
56
+ "+"(...args) {
57
+ return mo3("+", args);
58
+ },
59
+ "-"(...args) {
60
+ return mo3("–", args);
61
+ },
62
+ "*"(...args) {
63
+ return args.join("");
64
+ },
65
+ "vector"(name, ...args) {
66
+ name = `<mover>${name}<mo>→</mo></mover>`;
67
+ if (args.length) {
68
+ name += `<mrow><mi>(</mi>${args.join("<mo>,</mo>")}<mi>)</mi></mrow>`
69
+ }
70
+ return name;
71
+ },
72
+ "MUL"(...args) {
73
+ return args.join('');
74
+ },
75
+ mul(...args) {
76
+ return mo3("×", args);
77
+ },
78
+ Mul(...args) {
79
+ return mo3("·", args);
80
+ },
81
+ abs(a) {
82
+ return `<mo>|</mo>${a}<mo>|</mo>`;
83
+ },
84
+ "div"(...args) {
85
+ return mo3("÷", args);
86
+ },
87
+ "\\"(a, ...args) {
88
+ return qt((a, b) => `<msup>${a}<mn>-1</mn></msup>${b}`, a, args);
89
+ },
90
+ '.*'(...args) {
91
+ return args.join('<mo>·</mo>');
92
+ },
93
+ "="(...args) {
94
+ return mo3("=", args);
95
+ },
96
+ limit(a, x, n) {
97
+ return `<munder><ms>limit</ms><mrow>${x}<mo>→</mo>${n}</mrow></munder>${a}`
98
+ },
99
+ sigma: series,
100
+ series,
101
+ '!='(...args) {
102
+ return mo3("≉", args);
103
+ },
104
+ '!=='(...args) {
105
+ return mo3("≢", args);
106
+ },
107
+ "~="(...args) {
108
+ return mo3("≈", args);
109
+ },
110
+ "integral"(a, b = '', c = '') {
111
+ return `<msubsup><mo>∫</mo>${b}${c}</msubsup>${a}`;
112
+ },
113
+ "'"(...args) {
114
+ var b = args.pop();
115
+ if (!args.length) return `<msup>${b}<mo>'</mo></msup>`;// 转置
116
+ // 导数
117
+ return args.map((a) => `${a}<mo>'</mo>`).join('') + `<mi>(</mi>${b}<mi>)</mi>`;
118
+ },
119
+ "!"(...args) {
120
+ return args.map(a => a + `<mo>!</mo>`).join('');
121
+ }
122
+ };
123
+ var unary = (u, a) => `<ms>${u}</ms>${a}`;
124
+ var unarymap = {
125
+ "+"(a) {
126
+ return unary("+", a);
127
+ },
128
+ "!"(a) {
129
+ return unary("!", a);
130
+ },
131
+ "-"(a) {
132
+ return unary("–", a);
133
+ },
134
+ "~"(a) {
135
+ return unary("~", a);
136
+ },
137
+ };
138
+ var puncmap = {
139
+ "**"(a, ...args) {
140
+ return qt((a, b) => `<msup>${a}${b}</msup>`, a, args);
141
+ },
142
+ "/"(a, ...args) {
143
+ while (args.length) {
144
+ var b = args.shift();
145
+ a = `<mfrac>${a}${b}</mfrac>`;
146
+ }
147
+ return a;
148
+ },
149
+ "sqrt"(a) {
150
+ return msqrt(a);
151
+ },
152
+ "root"(d, z) {
153
+ return mroot(d, z);
154
+ },
155
+ "√‌"(z, d) {
156
+ if (z) return mroot(d, z);
157
+ return msqrt(d);
158
+ },
159
+ "_"(a, ...args) {
160
+ return qt(msub, a, args);
161
+ },
162
+
163
+ // "积分": "∫",
164
+ // "summa": "∫",
165
+ // "sigma": "∑",
166
+ // "求和": "∑",
167
+ // "-+": "±",
168
+ // "pi": '∏',
169
+ // "直积": '∏',
170
+ // "any": "∀",
171
+ // "任意": "∀",
172
+ // "exist": "∃",
173
+ // "存在": "∃",
174
+ // "!<": "≮",
175
+ // "!>": "≯",
176
+ // ">=": "≥",
177
+ // "<=": '≤',
178
+ };
179
+ var pmap = {};
180
+
181
+ [
182
+ '=,+=,-=,*=,/=,%=,|=,&=,^=,||=,&&=,??=,<<=,>>=,>>>=,**=,~=,:=,?,:,=>'/* 1 */,
183
+ '&&,||,^^,??'/* 3 */, '|,^'/* 4 */, '&'/*5*/,
184
+ 'instanceof,in,==,>=,<=,>,<,!=,!==,===,!in,!instanceof'/* 6 */,
185
+ '>>,>>>,<<'/* 7 */, '+,-'/* 8 */, '*,/,%'/* 9 */, '**'/* 10 */,
186
+ '++,--'/* 11 */,
187
+ "typeof,await,yield,delete,void,..."/*12*/,
188
+ '!,~,#,new'/* 13 */,
189
+ "::,?.,->,."/*14*/,
190
+ ].forEach((pp, i) => {
191
+ pp.split(",").forEach(p => {
192
+ pmap[p] = i + 1;
193
+ })
194
+ });
195
+
196
+ var 希腊 = {
197
+ alpha: "α", Alpha: "Α",
198
+ beta: "β", Beta: "Β",
199
+ gamma: "γ", Gamma: "‌Γ",
200
+ delta: "δ‌", Delta: "Δ",
201
+ epsilon: "ε", Epsilon: "Ε",
202
+ zeta: "ζ‌", Zeta: "Ζ",
203
+ eta: "η‌", Eta: "Η",
204
+ theta: "θ", Theta: "Θ",
205
+ iota: "ι", Iota: "Ι",
206
+ kappa: 'κ', Kappa: 'Κ',
207
+ lambda: 'λ‌', Lambda: '‌Λ',
208
+ mu: 'μ', Mu: 'Μ',
209
+ nu: 'ν', Nu: 'Ν',
210
+ xi: 'ξ‌', Xi: '‌Ξ',
211
+ omicron: 'ο', Omicron: 'Ο',
212
+ pi: 'π‌', Pi: '‌Π',
213
+ rho: 'ρ', Rho: 'Ρ',
214
+ sigma: 'σ', Sigma: 'Σ',
215
+ tau: 'τ', Tau: 'Τ',
216
+ upsilon: 'υ', Upsilon: 'Υ',
217
+ phi: 'φ', Phi: 'Φ',
218
+ chi: 'χ‌', Chi: 'Χ',
219
+ psi: 'ψ', Psi: 'Ψ',
220
+ omega: 'ω', Omega: '‌Ω',
221
+ };
222
+ var lineBroken = false;
223
+ var br = function () {
224
+ lineBroken = true;
225
+ return '</mtd></mtr><mtr><mtd>';
226
+ };
227
+ function toString(obj, p, deep) {
228
+ if (obj instanceof Array) {
229
+ deep++;
230
+ var args = obj.map(a => toString(a, deep > 1 ? 0 : p, deep));
231
+ deep--;
232
+ if (args instanceof Array) {
233
+ if (deep > 2) {
234
+ if (args.length > 1) args = `<mrow><mo>(</mo>${args.join('<mo>,</mo>')}<mo>)</mo></mrow>`;
235
+ }
236
+ else if (deep === 2) {
237
+ args = `<mtd>${args.join('</mtd><mtd>')}</mtd>`;
238
+ }
239
+ else if (deep === 1) {
240
+ args = `<mrow><mo>[</mo><mtable><mtr>${args.join("</mtr><mtr>")}</mtr></mtable><mo>]</mo></mrow>`;
241
+ }
242
+ }
243
+ return args;
244
+ }
245
+ var res;
246
+ if (obj instanceof Object) {
247
+ for (var k in obj) break;
248
+ if (!k) return '';
249
+ var origin = obj[k];
250
+ if (k in 三角函数) {
251
+ var args = origin.map(a => toString(a, pmap["*"], 0));
252
+ obj = 三角函数[k](...args);
253
+ return mrow(三角函数[k](...args), p >= pmap["**"], deep);
254
+ }
255
+ var args = toString(origin, pmap[k], 0);
256
+ var addqt = pmap[k] < p && p < pmap["**"];
257
+ if (args instanceof Array) {
258
+ var f = funcmap[k];
259
+ if (!f) {
260
+ addqt = -1;
261
+ f = puncmap[k];
262
+ }
263
+ }
264
+ else f = unarymap[k];
265
+ if (!f) {
266
+ return mrow(`<mi>${k}</mi>${mrow(args instanceof Array ? args.join('<mo>,</mo>') : args, true)}`, false, deep);
267
+ }
268
+ if (args instanceof Array) {
269
+ if (k === '*') {
270
+ var allnum = true;
271
+ var bx = 1;
272
+ var simple = true;
273
+ for (var cx = 0, dx = args.length; cx < dx; cx++) {
274
+ if (typeof origin[cx] !== 'number') {
275
+ allnum = false;
276
+ if (cx > bx) {
277
+ while (bx < cx) {
278
+ args[bx] = args[bx] + "<mo>·</mo>";
279
+ bx++;
280
+ }
281
+ }
282
+ bx = cx;
283
+ }
284
+ }
285
+ if (allnum) {
286
+ return mrow(funcmap.mul(...args), false, deep);
287
+ }
288
+ }
289
+ return mrow(f(...args), addqt, deep);
290
+ }
291
+ return mrow(f(args), addqt, deep);
292
+ }
293
+ var isCap = /^[A-Z]/.test(obj);
294
+ obj = 希腊[obj] || obj;
295
+ if (typeof obj === "number") {
296
+ if (obj === Infinity) obj = '∞';
297
+ return mrow(mn(obj), -1, deep);
298
+ }
299
+ if (/^[\s,;]+$/.test(obj)) {
300
+ obj = obj.replace(/(\r\n|\r|\n)/g, br)
301
+ if (lineBroken) return obj;
302
+ obj = obj.replace(/\s/g, '&ensp;');
303
+ return `<mtext>${obj}</mtext>`;
304
+ }
305
+ if (isCap && obj.length === 1) return mrow(ms(obj), -1, deep);
306
+ obj = String(obj).replace(/\-/g, '–');
307
+ return mrow(obj ? mi(obj) : '', -1, deep);
308
+ }
309
+ function math(mathObj) {
310
+ if (mathObj.tagName) return mathObj;
311
+ lineBroken = false;
312
+ var res = [];
313
+ for (var a of arguments) {
314
+ res.push(toString(a, 0, 1));
315
+ }
316
+ res = res.join('');
317
+ if (lineBroken) {
318
+ res = `<mtable style="text-align:justify"><mtr><mtd>${res}</mtd></mtr></mtable>`;
319
+ }
320
+ return `<math>${res}</math>`;
321
+ }
@@ -0,0 +1,265 @@
1
+ # 数学公式生成工具
2
+ 使用方法有如下两种:
3
+ 1. 直接传入解析结构
4
+ ```javascript
5
+ // 运算符或函数用大括号的对象表式层级,运算符或函数名放在对象的属性名位置,参数放在属性值的位置
6
+ var obj={
7
+ "*":["左边","右边"],
8
+ };
9
+ // 勾股定理可以表示为如下形式
10
+ var obj={
11
+ "=":[
12
+ {"+":[
13
+ {"**": ["a",2]},
14
+ {"**": ["b",2]}
15
+ ]},
16
+ { "**":["c",2] }
17
+ ]
18
+ };
19
+ // 海伦-秦九韶公式可以表式为如下形式
20
+ var obj = {
21
+ "=": [
22
+ "S",
23
+ {
24
+ "sqrt": {
25
+ "*": [
26
+ "p",
27
+ { "-": ["p", "a"] },
28
+ { "-": ["p", "b"] },
29
+ { "-": ["p", "c"] }
30
+ ]
31
+ }
32
+ }
33
+ ]
34
+ }
35
+ math(obj)
36
+ ```
37
+
38
+ 2. 以数学公式的js表达式做为模板直接生成
39
+ ```javascript
40
+ // 勾股定理可以表示为如下形式
41
+ math`a**2+b**2=c**2`
42
+ // 海伦-秦九韶公式可以表式为如下形式
43
+ math`S=sqrt(p*(p-a)*(p-b)*(p-c))`
44
+ ```
45
+ 这种方法经过efront编译后会自动转换成上一种方法中的解析形式
46
+
47
+ ## 常用语法及函数名如下
48
+ * 加法
49
+ ```javascript
50
+ 1+2
51
+ ```
52
+ ```math
53
+ 1+2
54
+ ```
55
+ * 减法
56
+ ```javascript
57
+ 1-2
58
+ ```
59
+ ```math
60
+ 1-2
61
+ ```
62
+ * 乘法
63
+ ```javascript
64
+ 1*2
65
+ a*b
66
+ 2*a
67
+ ```
68
+ ```math
69
+ 1*2
70
+ a*b
71
+ 2*a
72
+ ```
73
+ ```javascript
74
+ // 默认用`*`会自动转成`×`或`·`或省略
75
+ // 如果自动生成的符号不符合预期
76
+ // 可以使用`mul(a,b)`以强制生成`×`
77
+ // `Mul(a,b)`生成`·`
78
+ // `MUL(a,b)`不显示乘号
79
+ mul(a,b),Mul(a,b),MUL(a,b)
80
+ ```
81
+ ```math
82
+ mul(a,b),Mul(a,b),MUL(a,b)
83
+ ```
84
+ * 分数
85
+ ```javascript
86
+ 分子/分母
87
+ ```
88
+ ```math
89
+ 分子/分母
90
+ ```
91
+ * 以除号表示除法
92
+ ```javascript
93
+ div(被除数,除数)
94
+ ```
95
+ ```math
96
+ div(被除数,除数)
97
+ ```
98
+ * 绝对值
99
+ ```javascript
100
+ abs(a)
101
+ ```
102
+ ```math
103
+ abs(a)
104
+ ```
105
+ * 阶乘: n!
106
+ ```javascript
107
+ n!
108
+ ```
109
+ ```math
110
+ n!
111
+ ```
112
+ * 幂
113
+ ```javascript
114
+ 底数 ** 指数
115
+ ```
116
+ ```math
117
+ 底数 ** 指数
118
+ ```
119
+ * 平方根
120
+ ```javascript
121
+ sqrt(底数)
122
+ ```
123
+ ```math
124
+ sqrt(底数)
125
+ ```
126
+ * 高次根式
127
+ ```javascript
128
+ root(底数,指数)
129
+ ```
130
+ ```math
131
+ root(底数,指数)
132
+ ```
133
+ * 函数
134
+ ```javascript
135
+ f(x)=x**2
136
+ f'(x)=2*x
137
+ ```
138
+ ```math
139
+ f(x)=x**2
140
+ f'(x)=2*x
141
+ ```
142
+
143
+ * 三角函数
144
+ ```javascript
145
+ sin(theta);
146
+ sin(theta,2);
147
+ sin(theta**2);
148
+ sin(theta)**2;
149
+ ```
150
+ ```math
151
+ sin(theta);
152
+ sin(theta,2);
153
+ sin(theta**2);
154
+ sin(theta)**2;
155
+ ```
156
+
157
+ * 向量
158
+ ```javascript
159
+ //vector(向量名,横坐标,纵坐标,竖坐标)
160
+ vector(A,x,y)
161
+ //坐标可以不传入
162
+ vector(A)
163
+ ```
164
+ ```math
165
+ vector(A,x,y)
166
+ vector(A)
167
+ ```
168
+ * 下标
169
+ ```javascript
170
+ a[n]
171
+ a[n+1]
172
+ a_n
173
+ a_(n+1)
174
+ ```
175
+ ```math
176
+ a[n]
177
+ a[n+1]
178
+ a_n
179
+ a_(n+1)
180
+ ```
181
+ * 极限
182
+ ```javascript
183
+ limit(公式主体,变量,目标)
184
+ // 可以用 Infinity表示无穷大
185
+ limit(1/n,n,+Infinity)
186
+ ```
187
+ ```math
188
+ limit(公式主体,变量,目标)
189
+ limit(1/n,n,+Infinity)
190
+ ```
191
+
192
+ * 积分
193
+ ```javascript
194
+ integral(表达式,下界,上界)
195
+ ```
196
+ ```math
197
+ integral(表达式,下界,上界)
198
+ ```
199
+ * 级数
200
+ ```javascript
201
+ sigma(公式主体,n=1,+Infinity)
202
+ series(公式主体,n=1,+Infinity)
203
+ ```
204
+ ```math
205
+ sigma(公式主体,n=1,+Infinity)
206
+ series(公式主体,n=1,+Infinity)
207
+ ```
208
+ * 矩阵
209
+ ```javascript
210
+ [1,2;3,4]
211
+ ```
212
+ ```math
213
+ [1,2;3,4]
214
+ ```
215
+ * 左除
216
+ ```javascript
217
+ [1,2;3,4] \ [5;6]
218
+ ```
219
+ ```math
220
+ [1,2;3,4]\[5;6]
221
+ ```
222
+ * 转置
223
+ ```javascript
224
+ [1,2;3,4]'
225
+ ```
226
+ ```math
227
+ [1,2;3,4]'
228
+ ```
229
+ * 离子
230
+ ```javascript
231
+ H[+], O[2-]
232
+ ```
233
+ ```math
234
+ H[+], O[2-]
235
+ ```
236
+
237
+ ## 希腊字母对照表如下
238
+
239
+ ```javascript
240
+ // 按此表中的英文单词命名的变量将自动转换为希腊字母
241
+ alpha: "α", Alpha: "Α",
242
+ beta: "β", Beta: "Β",
243
+ gamma: "γ", Gamma: "‌Γ",
244
+ delta: "δ‌", Delta: "Δ",
245
+ epsilon: "ε", Epsilon: "Ε",
246
+ zeta: "ζ‌", Zeta: "Ζ",
247
+ eta: "η‌", Eta: "Η",
248
+ theta: "θ", Theta: "Θ",
249
+ iota: "ι", Iota: "Ι",
250
+ kappa: 'κ', Kappa: 'Κ',
251
+ lambda: 'λ‌', Lambda: '‌Λ',
252
+ mu: 'μ', Mu: 'Μ',
253
+ nu: 'ν', Nu: 'Ν',
254
+ xi: 'ξ‌', Xi: '‌Ξ',
255
+ omicron: 'ο', Omicron: 'Ο',
256
+ pi: 'π‌', Pi: '‌Π',
257
+ rho: 'ρ', Rho: 'Ρ',
258
+ sigma: 'σ', Sigma: 'Σ',
259
+ tau: 'τ', Tau: 'Τ',
260
+ upsilon: 'υ', Upsilon: 'Υ',
261
+ phi: 'φ', Phi: 'Φ',
262
+ chi: 'χ‌', Chi: 'Χ',
263
+ psi: 'ψ', Psi: 'Ψ',
264
+ omega: 'ω', Omega: '‌Ω',
265
+ ```
@@ -0,0 +1,56 @@
1
+ <p>
2
+ <h2>
3
+ 秦九韶-海伦公式
4
+ </h2>
5
+ <div>
6
+ ${math`S=sqrt(p*(p-a)*(p-b)*(p-c))`}
7
+ </div>
8
+ </p>
9
+ <p>
10
+ <h2>
11
+ 勾股定理
12
+ </h2>
13
+ <div>
14
+ ${math`a**2+b**2=c**2`}
15
+ </div>
16
+ </p>
17
+ <p>
18
+ <h2>
19
+ 约分
20
+ </h2>
21
+ <div>
22
+ ${
23
+ math`(a/b/c)*(b/d)=a/(c*d)`
24
+ }
25
+ </div>
26
+ </p>
27
+ <p>
28
+ <h2>
29
+ 极限
30
+ </h2>
31
+ <div>
32
+ ${
33
+ math`limit(a**-n,n,+Infinity)`
34
+ }
35
+ </div>
36
+ </p>
37
+ <p>
38
+ ${
39
+ math`cos(theta,2)*E+(1 - cos(theta))*K'*K+sin(theta)*[0,-K_2,K_1;K_2,0,-K_0;-K_1,K_0,0]`
40
+ }
41
+
42
+ </p>
43
+ <style>
44
+ &{
45
+ height: 360px;
46
+ overflow: auto;
47
+ display: block;
48
+ }
49
+ div {
50
+ display: block;
51
+ padding: 10px 20px;
52
+ }
53
+ </style>
54
+ <script>
55
+
56
+ </script>
@@ -422,6 +422,45 @@ var source = {
422
422
  ";": ";",
423
423
  " ": "  \t\r\n"
424
424
  };
425
+ var 注音 = {
426
+ "ㄅ": "b",
427
+ "ㄆ": "p",
428
+ "ㄇ": "m",
429
+ "ㄈ": "f",
430
+ "ㄉ": "d",
431
+ "ㄊ": "t",
432
+ "ㄋ": "n",
433
+ "ㄌ": "l",
434
+ "ㄍ": "g",
435
+ "ㄎ": "k",
436
+ "ㄏ": "h",
437
+ "ㄐ": "j",
438
+ "ㄑ": "q",
439
+ "ㄒ": "x",
440
+ "ㄓ": "zh",
441
+ "ㄔ": "ch",
442
+ "ㄕ": "sh",
443
+ "ㄖ": "r",
444
+ "ㄗ": "z",
445
+ "ㄘ": "c",
446
+ "ㄙ": "s",
447
+ "ㄧ": "i",
448
+ "ㄨ": "u",
449
+ "ㄩ": "v",
450
+ "ㄚ": "a",
451
+ "ㄛ": "o",
452
+ "ㄜ": "e", // 鹅
453
+ "ㄞ": "ai",
454
+ "ㄟ": "ei",
455
+ "ㄠ": "ao",
456
+ "ㄡ": "ou",
457
+ "ㄢ": "an",
458
+ "ㄣ": "en",
459
+ "ㄤ": "ang",
460
+ "ㄥ": "eng",
461
+ "ㄦ": "er",
462
+ "ㄝ": "e", // ye üe ue ie
463
+ };
425
464
  var PY = {};
426
465
  var PinYin = {};
427
466
  for (var k in source) {
@@ -446,6 +485,7 @@ var startWith = function (p, s) {
446
485
  return true;
447
486
  }
448
487
  var py = function (char) {
488
+ char = 注音[char] || char;
449
489
  return PY[char] || (char || "").toLowerCase();
450
490
  };
451
491
  var pinyin = function (char) {