efront 4.35.2 → 4.35.4
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.
- package/#/345/233/275/351/231/205/345/214/226.yml +3 -0
- package/coms/basic/#loader.js +1 -1
- package/coms/basic/Table.js +26 -0
- package/coms/basic/escapeRegExp.js +24 -0
- package/coms/basic/escapeRegExp_test.js +35 -0
- package/coms/basic/math.js +106 -4
- package/coms/basic/math.md +128 -25
- package/coms/basic/spaces.js +1 -1
- package/coms/compile/Program.js +1 -1
- package/coms/compile/common.js +1 -1
- package/coms/compile//347/256/227/345/274/217.js +62 -20
- package/coms/compile//347/256/227/345/274/217_test.js +6 -2
- package/coms/compile//347/264/240/351/246/250.js +5 -4
- package/coms/compile//347/264/240/351/246/250_test.js +21 -1
- package/coms/explorer/main.less +1 -0
- package/coms/reptile/colors.js +2 -1
- package/coms/zimoli/arriswise.js +6 -1
- package/coms/zimoli/color-config.less +1 -1
- package/coms/zimoli/confirm.js +1 -1
- package/coms/zimoli/getGenerator.js +0 -1
- package/coms/zimoli/list.js +609 -576
- package/coms/zimoli/popup.js +1 -1
- package/coms/zimoli/prompt.js +4 -1
- package/coms/zimoli/scrollbar.less +1 -1
- package/coms/zimoli/table.js +1 -1
- package/coms/zimoli/vbox.js +1 -0
- package/coms//350/214/250/350/217/260//344/270/212/350/211/262.xht +5 -1
- package/coms//350/214/250/350/217/260//346/240/207/347/255/276/345/214/226.js +9 -1
- package/coms//350/214/250/350/217/260//346/270/262/346/237/223.js +1 -1
- package/coms//350/214/250/350/217/260//347/274/226/350/276/221/346/241/206.xht +16 -2
- package/coms//350/214/250/350/217/260//350/257/255/350/250/200.js +5 -0
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
- package/debug.log +0 -3
package/coms/basic/#loader.js
CHANGED
|
@@ -524,7 +524,7 @@ var createModule = function (exec, originNames, compiledNames, prebuilds = {}, a
|
|
|
524
524
|
var _this = isModuleInit ? exports : window;
|
|
525
525
|
var argsPromises = argsList.filter(isThenable);
|
|
526
526
|
argsList = argsList.concat(exec.strs);
|
|
527
|
-
argsList.push(compiledNames || []);
|
|
527
|
+
argsList.push(exec, argsList, compiledNames || []);
|
|
528
528
|
if (!argsPromises.length) {
|
|
529
529
|
return exec.apply(_this, argsList);
|
|
530
530
|
}
|
package/coms/basic/Table.js
CHANGED
|
@@ -54,6 +54,32 @@ class Table extends Array {
|
|
|
54
54
|
});
|
|
55
55
|
this.update();
|
|
56
56
|
}
|
|
57
|
+
clone() {
|
|
58
|
+
var t = new Table;
|
|
59
|
+
t.fields = this.fields;
|
|
60
|
+
t.source = this.source;
|
|
61
|
+
t.searchFields = this.searchFields;
|
|
62
|
+
t.summaryFields = this.summaryFields;
|
|
63
|
+
return t;
|
|
64
|
+
}
|
|
65
|
+
toSorted(field) {
|
|
66
|
+
var t = this.clone();
|
|
67
|
+
t.sort(field);
|
|
68
|
+
return t;
|
|
69
|
+
}
|
|
70
|
+
toReversed() {
|
|
71
|
+
var t = this.clone();
|
|
72
|
+
t.length = this.length;
|
|
73
|
+
for (var cx = 0, dx = this.length; cx < dx; cx++) {
|
|
74
|
+
t[dx - cx] = this[cx];
|
|
75
|
+
}
|
|
76
|
+
return t;
|
|
77
|
+
}
|
|
78
|
+
toSpliced() {
|
|
79
|
+
var t = this.clone();
|
|
80
|
+
t.splice.apply(t, arguments);
|
|
81
|
+
return t;
|
|
82
|
+
}
|
|
57
83
|
unsort() {
|
|
58
84
|
this.sorted = null;
|
|
59
85
|
this.update();
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
if (RegExp.escape) return RegExp.escape;
|
|
2
|
+
var tnvfr = 'tnvfr';
|
|
3
|
+
var replaceFirst = function (m) {
|
|
4
|
+
return "\\x" + m.charCodeAt().toString(16)
|
|
5
|
+
}
|
|
6
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#white_space
|
|
7
|
+
// https://util.unicode.org/UnicodeJsps/list-unicodeset.jsp?a=%5Cp%7BGeneral_Category%3DSpace_Separator%7D
|
|
8
|
+
var syntaxReg = /(^[0-9a-fA-F])|([\^\$\\\.\*\+\?\(\)\[\]\{\}\|\/])|([,\-\=\<\>#\&\!%\:;@~'`"\x20\xa0])|([\u0009-\u000d])|([\ud800-\udfff\ufeff\u2028\u2029\u1680\u2000-\u200a\u202f\u205f\u3000])/g;
|
|
9
|
+
var replaceSynax = function (_, z, a, b, c, d) {
|
|
10
|
+
if (z) return replaceFirst(z);
|
|
11
|
+
if (a) return "\\" + a;
|
|
12
|
+
if (b) return "\\x" + b.charCodeAt().toString(16);
|
|
13
|
+
if (c) return "\\" + tnvfr.charAt(c.charCodeAt() - 9);
|
|
14
|
+
if (d) {
|
|
15
|
+
d = d.charCodeAt();
|
|
16
|
+
if (d <= 0xff) return "\\u00" + d.toString(16);
|
|
17
|
+
return "\\u" + d.toString(16);
|
|
18
|
+
}
|
|
19
|
+
return _;
|
|
20
|
+
}
|
|
21
|
+
function escapeRegExp(string) {
|
|
22
|
+
return string.replace(syntaxReg, replaceSynax)
|
|
23
|
+
|
|
24
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
var escape = RegExp.escape;
|
|
2
|
+
delete RegExp.escape;
|
|
3
|
+
var escapeRegExp = require("./escapeRegExp");
|
|
4
|
+
var test = function (a) {
|
|
5
|
+
assert(escapeRegExp(a), escape(a))
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
test('0')
|
|
9
|
+
test('9')
|
|
10
|
+
test('a')
|
|
11
|
+
test('b')
|
|
12
|
+
test('c')
|
|
13
|
+
test('d')
|
|
14
|
+
test('e')
|
|
15
|
+
test('f')
|
|
16
|
+
test('foo')
|
|
17
|
+
test(' ');
|
|
18
|
+
test('\u00a0')
|
|
19
|
+
test('\u0085')
|
|
20
|
+
test('\ufeff')
|
|
21
|
+
test('\ufffe')
|
|
22
|
+
test('\u8fff')
|
|
23
|
+
test('\u8fff')
|
|
24
|
+
test('\u1680')
|
|
25
|
+
test('\u2000')
|
|
26
|
+
test('\u2009')
|
|
27
|
+
test('\u0009')
|
|
28
|
+
test('\u0008')
|
|
29
|
+
test('\u000d')
|
|
30
|
+
test('\u202f')
|
|
31
|
+
test('\u2028')
|
|
32
|
+
test('\u2029')
|
|
33
|
+
test('\u3000')
|
|
34
|
+
test('\u2000')
|
|
35
|
+
test('\u1680')
|
package/coms/basic/math.js
CHANGED
|
@@ -3,6 +3,7 @@ var mo3 = (o, args) => args.length === 1 ? args[0] + `<ms>${o}</ms>` : args.join
|
|
|
3
3
|
var ms = s => `<ms>${s}</ms>`;
|
|
4
4
|
var mroot = (d, z) => `<mroot>${d}${z}</mroot>`;
|
|
5
5
|
var msqrt = a => `<msqrt>${a}</msqrt>`;
|
|
6
|
+
var mdot = a => `<mover><mn>${a}</mn><ms>・</ms></mover>`;
|
|
6
7
|
var mi = s => `<mi>${s}</mi>`;
|
|
7
8
|
var mn = s => `<mn>${s}</mn>`;
|
|
8
9
|
var mi2 = (s, a, n) => {
|
|
@@ -50,7 +51,50 @@ var 三角函数 = {
|
|
|
50
51
|
"csc"(a, n) {
|
|
51
52
|
return mi2("csc", a, n);
|
|
52
53
|
},
|
|
54
|
+
"arcsin"(a, n) {
|
|
55
|
+
return mi2("arcsin", a, n);
|
|
56
|
+
},
|
|
57
|
+
"arccos"(a, n) {
|
|
58
|
+
return mi2("arccos", a, n);
|
|
59
|
+
},
|
|
60
|
+
"arctan"(a, n) {
|
|
61
|
+
return mi2("arctan", a, n);
|
|
62
|
+
},
|
|
63
|
+
"arccot"(a, n) {
|
|
64
|
+
return mi2("arccot", a, n);
|
|
65
|
+
},
|
|
66
|
+
"arcsec"(a, n) {
|
|
67
|
+
return mi2("arcsec", a, n);
|
|
68
|
+
},
|
|
69
|
+
"arccsc"(a, n) {
|
|
70
|
+
return mi2("arccsc", a, n);
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
var roman = {
|
|
74
|
+
I: 1, V: 5, X: 10, L: 50, C: 100, D: 500, M: 1000
|
|
75
|
+
};
|
|
76
|
+
var toRoman = function (n) {
|
|
77
|
+
if (n > 3888 || (n | 0) !== n || n < 1) return `<mo>(</mo><ms>Roman</ms><mo>,</mo><mn>${n}</mn><mo>)</mo>`;
|
|
78
|
+
var [a = 0, b = 0, c = 0, d = 0] = n.toString().split("").reverse();
|
|
79
|
+
a = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"][a];
|
|
80
|
+
b = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"][b];
|
|
81
|
+
c = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"][c];
|
|
82
|
+
d = ["", "M", "MM", "MMM"][d];
|
|
83
|
+
return d + c + b + a;
|
|
53
84
|
};
|
|
85
|
+
var circles = "①②③④⑤⑥⑦⑧⑨⑩";
|
|
86
|
+
|
|
87
|
+
var tabs = {
|
|
88
|
+
roman(...args) {
|
|
89
|
+
return " " + args
|
|
90
|
+
.map(toRoman)
|
|
91
|
+
.map(a => `<mn>${a}</mn>`)
|
|
92
|
+
.join('<ms> </ms>');
|
|
93
|
+
},
|
|
94
|
+
circle(...args) {
|
|
95
|
+
return args.map(n => circles.charAt(n - 1)).map(a => `<mn>${a}</mn>`).join('');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
54
98
|
|
|
55
99
|
var funcmap = {
|
|
56
100
|
"+"(...args) {
|
|
@@ -59,9 +103,21 @@ var funcmap = {
|
|
|
59
103
|
"-"(...args) {
|
|
60
104
|
return mo3("–", args);
|
|
61
105
|
},
|
|
106
|
+
"+-"(...args) {
|
|
107
|
+
return mo3("±", args);
|
|
108
|
+
},
|
|
109
|
+
"-+"(...args) {
|
|
110
|
+
return mo3("∓", args);
|
|
111
|
+
},
|
|
62
112
|
"*"(...args) {
|
|
63
113
|
return args.join("");
|
|
64
114
|
},
|
|
115
|
+
">="(...args) {
|
|
116
|
+
return mo3("≥", args);
|
|
117
|
+
},
|
|
118
|
+
"<="(...args) {
|
|
119
|
+
return mo3("≤", args);
|
|
120
|
+
},
|
|
65
121
|
"vector"(name, ...args) {
|
|
66
122
|
name = `<mover>${name}<mo>→</mo></mover>`;
|
|
67
123
|
if (args.length) {
|
|
@@ -98,6 +154,9 @@ var funcmap = {
|
|
|
98
154
|
},
|
|
99
155
|
sigma: series,
|
|
100
156
|
series,
|
|
157
|
+
group(...args) {
|
|
158
|
+
return `<mo>{</mo><mtable><mtr><mtd>${args.join("</mtd></mtr><mtr><mtd>")}</mtd></mtr></mtable>`
|
|
159
|
+
},
|
|
101
160
|
'!='(...args) {
|
|
102
161
|
return mo3("≉", args);
|
|
103
162
|
},
|
|
@@ -125,12 +184,18 @@ var unarymap = {
|
|
|
125
184
|
"+"(a) {
|
|
126
185
|
return unary("+", a);
|
|
127
186
|
},
|
|
128
|
-
"!"(a) {
|
|
129
|
-
return unary("!", a);
|
|
130
|
-
},
|
|
131
187
|
"-"(a) {
|
|
132
188
|
return unary("–", a);
|
|
133
189
|
},
|
|
190
|
+
"+-"(a) {
|
|
191
|
+
return unary("±", a);
|
|
192
|
+
},
|
|
193
|
+
"-+"(a) {
|
|
194
|
+
return unary("∓", a);
|
|
195
|
+
},
|
|
196
|
+
"!"(a) {
|
|
197
|
+
return unary("!", a);
|
|
198
|
+
},
|
|
134
199
|
"~"(a) {
|
|
135
200
|
return unary("~", a);
|
|
136
201
|
},
|
|
@@ -159,6 +224,9 @@ var puncmap = {
|
|
|
159
224
|
"_"(a, ...args) {
|
|
160
225
|
return qt(msub, a, args);
|
|
161
226
|
},
|
|
227
|
+
corner(name) {
|
|
228
|
+
return mo2("∠", name);
|
|
229
|
+
},
|
|
162
230
|
|
|
163
231
|
// "积分": "∫",
|
|
164
232
|
// "summa": "∫",
|
|
@@ -226,6 +294,9 @@ var br = function () {
|
|
|
226
294
|
};
|
|
227
295
|
function toString(obj, p, deep) {
|
|
228
296
|
if (obj instanceof Array) {
|
|
297
|
+
if (deep == 1 && obj.length === 2 && obj[1].tab) {
|
|
298
|
+
return toString(obj[0], 0, deep) +"</mtd><mtd>"+ obj.slice(1, obj.length).map(a => toString(a, 0, 0)).join("</mtd><mtd>");
|
|
299
|
+
}
|
|
229
300
|
deep++;
|
|
230
301
|
var args = obj.map(a => toString(a, deep > 1 ? 0 : p, deep));
|
|
231
302
|
deep--;
|
|
@@ -247,6 +318,35 @@ function toString(obj, p, deep) {
|
|
|
247
318
|
for (var k in obj) break;
|
|
248
319
|
if (!k) return '';
|
|
249
320
|
var origin = obj[k];
|
|
321
|
+
if (k === '..') {
|
|
322
|
+
var [prefix, rep, dots, e] = origin;
|
|
323
|
+
prefix = String(prefix);
|
|
324
|
+
if (typeof rep === 'number') rep = String(rep);
|
|
325
|
+
if (rep && !/\./.test(prefix)) prefix += '.';
|
|
326
|
+
if (typeof e === 'number') e = String(e);
|
|
327
|
+
if (!rep) rep = '';
|
|
328
|
+
else if (rep.length === 1) {
|
|
329
|
+
rep = mdot(rep);
|
|
330
|
+
}
|
|
331
|
+
else if (rep.length >= 2) {
|
|
332
|
+
rep = mdot(rep.charAt(0)) + mn(rep.slice(1, rep.length - 1)) + mdot(rep.charAt(rep.length - 1));
|
|
333
|
+
}
|
|
334
|
+
else rep = mn(rep);
|
|
335
|
+
if (dots) dots = mn(dots);
|
|
336
|
+
else dots = '';
|
|
337
|
+
if (e) e = `<mo>×</mo><msup><mn>10</mn><mn>${e}</mn></msup>`;
|
|
338
|
+
else e = '';
|
|
339
|
+
prefix = mn(prefix);
|
|
340
|
+
return mrow([prefix, rep, dots, e].join(''), e ? p >= pmap["*"] : false, deep);
|
|
341
|
+
}
|
|
342
|
+
if (k === 'tab') {
|
|
343
|
+
k = origin.shift();
|
|
344
|
+
if (!origin.length || !(k in tabs)) {
|
|
345
|
+
var args = origin.map(a => toString(a, 0, deep));
|
|
346
|
+
return mrow(`<ms>(</ms>${k}${args.length ? "<ms>,</ms>" + args.join('<ms>,</ms>') : ''}<ms>)</ms>`, -1, deep);
|
|
347
|
+
}
|
|
348
|
+
return mrow(tabs[k](...origin), -1, deep);
|
|
349
|
+
}
|
|
250
350
|
if (k in 三角函数) {
|
|
251
351
|
var args = origin.map(a => toString(a, pmap["*"], 0));
|
|
252
352
|
obj = 三角函数[k](...args);
|
|
@@ -263,9 +363,10 @@ function toString(obj, p, deep) {
|
|
|
263
363
|
}
|
|
264
364
|
else f = unarymap[k];
|
|
265
365
|
if (!f) {
|
|
266
|
-
return mrow(`<mi>${k}</mi>${mrow(args instanceof Array ? args.join('<mo>,</mo>') : args, true)}`, false, deep);
|
|
366
|
+
return mrow(`<mi>${希腊[k] || k}</mi>${mrow(args instanceof Array ? args.join('<mo>,</mo>') : args, true)}`, false, deep);
|
|
267
367
|
}
|
|
268
368
|
if (args instanceof Array) {
|
|
369
|
+
|
|
269
370
|
if (k === '*') {
|
|
270
371
|
var allnum = true;
|
|
271
372
|
var bx = 1;
|
|
@@ -294,6 +395,7 @@ function toString(obj, p, deep) {
|
|
|
294
395
|
obj = 希腊[obj] || obj;
|
|
295
396
|
if (typeof obj === "number") {
|
|
296
397
|
if (obj === Infinity) obj = '∞';
|
|
398
|
+
if (obj < 0) obj = "–" + -obj;
|
|
297
399
|
return mrow(mn(obj), -1, deep);
|
|
298
400
|
}
|
|
299
401
|
if (/^[\s,;]+$/.test(obj)) {
|
package/coms/basic/math.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
# 数学公式生成工具
|
|
2
|
+
在2023年及以后的浏览器(Chrome109, Firefox1, Safari5.1, ...)中可用
|
|
3
|
+
受支持的浏览器参考 [https://developer.mozilla.org/zh-CN/docs/Web/MathML](https://developer.mozilla.org/zh-CN/docs/Web/MathML)
|
|
2
4
|
使用方法有如下两种:
|
|
3
5
|
1. 直接传入解析结构
|
|
4
6
|
```javascript
|
|
@@ -36,7 +38,7 @@ math(obj)
|
|
|
36
38
|
```
|
|
37
39
|
|
|
38
40
|
2. 以数学公式的js表达式做为模板直接生成
|
|
39
|
-
```
|
|
41
|
+
```mathscript
|
|
40
42
|
// 勾股定理可以表示为如下形式
|
|
41
43
|
math`a**2+b**2=c**2`
|
|
42
44
|
// 海伦-秦九韶公式可以表式为如下形式
|
|
@@ -46,21 +48,39 @@ math`S=sqrt(p*(p-a)*(p-b)*(p-c))`
|
|
|
46
48
|
|
|
47
49
|
## 常用语法及函数名如下
|
|
48
50
|
* 加法
|
|
49
|
-
```
|
|
51
|
+
```mathscript
|
|
50
52
|
1+2
|
|
51
53
|
```
|
|
52
54
|
```math
|
|
53
55
|
1+2
|
|
54
56
|
```
|
|
55
57
|
* 减法
|
|
56
|
-
```
|
|
58
|
+
```mathscript
|
|
57
59
|
1-2
|
|
58
60
|
```
|
|
59
61
|
```math
|
|
60
62
|
1-2
|
|
61
63
|
```
|
|
64
|
+
* 加减,正负,
|
|
65
|
+
```mathscript
|
|
66
|
+
a +- 2;
|
|
67
|
+
a -+ 2;
|
|
68
|
+
+-a;
|
|
69
|
+
-+a;
|
|
70
|
+
// 分开写将识别为运算符加正负号
|
|
71
|
+
a + -2;
|
|
72
|
+
a - +2;
|
|
73
|
+
```
|
|
74
|
+
```math
|
|
75
|
+
a +- 2;
|
|
76
|
+
a -+ 2;
|
|
77
|
+
+-a;
|
|
78
|
+
-+a;
|
|
79
|
+
a + -2;
|
|
80
|
+
a - +2;
|
|
81
|
+
```
|
|
62
82
|
* 乘法
|
|
63
|
-
```
|
|
83
|
+
```mathscript
|
|
64
84
|
1*2
|
|
65
85
|
a*b
|
|
66
86
|
2*a
|
|
@@ -70,7 +90,7 @@ math`S=sqrt(p*(p-a)*(p-b)*(p-c))`
|
|
|
70
90
|
a*b
|
|
71
91
|
2*a
|
|
72
92
|
```
|
|
73
|
-
```
|
|
93
|
+
```mathscript
|
|
74
94
|
// 默认用`*`会自动转成`×`或`·`或省略
|
|
75
95
|
// 如果自动生成的符号不符合预期
|
|
76
96
|
// 可以使用`mul(a,b)`以强制生成`×`
|
|
@@ -82,56 +102,56 @@ mul(a,b),Mul(a,b),MUL(a,b)
|
|
|
82
102
|
mul(a,b),Mul(a,b),MUL(a,b)
|
|
83
103
|
```
|
|
84
104
|
* 分数
|
|
85
|
-
```
|
|
105
|
+
```mathscript
|
|
86
106
|
分子/分母
|
|
87
107
|
```
|
|
88
108
|
```math
|
|
89
109
|
分子/分母
|
|
90
110
|
```
|
|
91
111
|
* 以除号表示除法
|
|
92
|
-
```
|
|
112
|
+
```mathscript
|
|
93
113
|
div(被除数,除数)
|
|
94
114
|
```
|
|
95
115
|
```math
|
|
96
116
|
div(被除数,除数)
|
|
97
117
|
```
|
|
98
118
|
* 绝对值
|
|
99
|
-
```
|
|
119
|
+
```mathscript
|
|
100
120
|
abs(a)
|
|
101
121
|
```
|
|
102
122
|
```math
|
|
103
123
|
abs(a)
|
|
104
124
|
```
|
|
105
125
|
* 阶乘: n!
|
|
106
|
-
```
|
|
126
|
+
```mathscript
|
|
107
127
|
n!
|
|
108
128
|
```
|
|
109
129
|
```math
|
|
110
130
|
n!
|
|
111
131
|
```
|
|
112
132
|
* 幂
|
|
113
|
-
```
|
|
133
|
+
```mathscript
|
|
114
134
|
底数 ** 指数
|
|
115
135
|
```
|
|
116
136
|
```math
|
|
117
137
|
底数 ** 指数
|
|
118
138
|
```
|
|
119
139
|
* 平方根
|
|
120
|
-
```
|
|
140
|
+
```mathscript
|
|
121
141
|
sqrt(底数)
|
|
122
142
|
```
|
|
123
143
|
```math
|
|
124
144
|
sqrt(底数)
|
|
125
145
|
```
|
|
126
146
|
* 高次根式
|
|
127
|
-
```
|
|
147
|
+
```mathscript
|
|
128
148
|
root(底数,指数)
|
|
129
149
|
```
|
|
130
150
|
```math
|
|
131
151
|
root(底数,指数)
|
|
132
152
|
```
|
|
133
153
|
* 函数
|
|
134
|
-
```
|
|
154
|
+
```mathscript
|
|
135
155
|
f(x)=x**2
|
|
136
156
|
f'(x)=2*x
|
|
137
157
|
```
|
|
@@ -141,7 +161,7 @@ mul(a,b),Mul(a,b),MUL(a,b)
|
|
|
141
161
|
```
|
|
142
162
|
|
|
143
163
|
* 三角函数
|
|
144
|
-
```
|
|
164
|
+
```mathscript
|
|
145
165
|
sin(theta);
|
|
146
166
|
sin(theta,2);
|
|
147
167
|
sin(theta**2);
|
|
@@ -155,7 +175,7 @@ sin(theta)**2;
|
|
|
155
175
|
```
|
|
156
176
|
|
|
157
177
|
* 向量
|
|
158
|
-
```
|
|
178
|
+
```mathscript
|
|
159
179
|
//vector(向量名,横坐标,纵坐标,竖坐标)
|
|
160
180
|
vector(A,x,y)
|
|
161
181
|
//坐标可以不传入
|
|
@@ -166,7 +186,7 @@ sin(theta)**2;
|
|
|
166
186
|
vector(A)
|
|
167
187
|
```
|
|
168
188
|
* 下标
|
|
169
|
-
```
|
|
189
|
+
```mathscript
|
|
170
190
|
a[n]
|
|
171
191
|
a[n+1]
|
|
172
192
|
a_n
|
|
@@ -179,7 +199,7 @@ sin(theta)**2;
|
|
|
179
199
|
a_(n+1)
|
|
180
200
|
```
|
|
181
201
|
* 极限
|
|
182
|
-
```
|
|
202
|
+
```mathscript
|
|
183
203
|
limit(公式主体,变量,目标)
|
|
184
204
|
// 可以用 Infinity表示无穷大
|
|
185
205
|
limit(1/n,n,+Infinity)
|
|
@@ -190,14 +210,14 @@ sin(theta)**2;
|
|
|
190
210
|
```
|
|
191
211
|
|
|
192
212
|
* 积分
|
|
193
|
-
```
|
|
213
|
+
```mathscript
|
|
194
214
|
integral(表达式,下界,上界)
|
|
195
215
|
```
|
|
196
216
|
```math
|
|
197
217
|
integral(表达式,下界,上界)
|
|
198
218
|
```
|
|
199
219
|
* 级数
|
|
200
|
-
```
|
|
220
|
+
```mathscript
|
|
201
221
|
sigma(公式主体,n=1,+Infinity)
|
|
202
222
|
series(公式主体,n=1,+Infinity)
|
|
203
223
|
```
|
|
@@ -206,38 +226,121 @@ sigma(公式主体,n=1,+Infinity)
|
|
|
206
226
|
series(公式主体,n=1,+Infinity)
|
|
207
227
|
```
|
|
208
228
|
* 矩阵
|
|
209
|
-
```
|
|
229
|
+
```mathscript
|
|
210
230
|
[1,2;3,4]
|
|
211
231
|
```
|
|
212
232
|
```math
|
|
213
233
|
[1,2;3,4]
|
|
214
234
|
```
|
|
215
235
|
* 左除
|
|
216
|
-
```
|
|
236
|
+
```mathscript
|
|
217
237
|
[1,2;3,4] \ [5;6]
|
|
218
238
|
```
|
|
219
239
|
```math
|
|
220
240
|
[1,2;3,4]\[5;6]
|
|
221
241
|
```
|
|
222
242
|
* 转置
|
|
223
|
-
```
|
|
243
|
+
```mathscript
|
|
224
244
|
[1,2;3,4]'
|
|
225
245
|
```
|
|
226
246
|
```math
|
|
227
247
|
[1,2;3,4]'
|
|
228
248
|
```
|
|
229
249
|
* 离子
|
|
230
|
-
```
|
|
250
|
+
```mathscript
|
|
231
251
|
H[+], O[2-]
|
|
232
252
|
```
|
|
233
253
|
```math
|
|
234
254
|
H[+], O[2-]
|
|
235
255
|
```
|
|
236
256
|
|
|
237
|
-
|
|
257
|
+
* 无限小数
|
|
258
|
+
```mathscript
|
|
259
|
+
// 循环节
|
|
260
|
+
0.3.;// 三分之一
|
|
261
|
+
0.142857.;// 七分之一
|
|
262
|
+
0.142.857142.;//七分之一
|
|
263
|
+
0.142.857142;//七分之一
|
|
264
|
+
```
|
|
265
|
+
```math
|
|
266
|
+
0.3.;// 三分之一
|
|
267
|
+
0.142857.;// 七分之一
|
|
268
|
+
0.142.857142.;//七分之一
|
|
269
|
+
0.142.857142;//七分之一
|
|
270
|
+
```
|
|
271
|
+
```mathscript
|
|
272
|
+
// 省略号,如果末尾出现多于一个小数点,这些小数点将被追加到数值结尾
|
|
273
|
+
0.3...
|
|
274
|
+
3444..
|
|
275
|
+
66....
|
|
276
|
+
```
|
|
277
|
+
```math
|
|
278
|
+
0.3...
|
|
279
|
+
3444..
|
|
280
|
+
66....
|
|
281
|
+
```
|
|
282
|
+
* 科学计数法
|
|
283
|
+
```mathscript
|
|
284
|
+
1e3;
|
|
285
|
+
1e-3;
|
|
286
|
+
1.3.e3;
|
|
287
|
+
a*1.3e3
|
|
288
|
+
```
|
|
289
|
+
```math
|
|
290
|
+
1e3;
|
|
291
|
+
1e-3;
|
|
292
|
+
1.3.e3;
|
|
293
|
+
a*1.3e3
|
|
294
|
+
```
|
|
295
|
+
* 方程组
|
|
296
|
+
```mathscript
|
|
297
|
+
group(
|
|
298
|
+
a+1=b;
|
|
299
|
+
a+b=3;
|
|
300
|
+
)
|
|
301
|
+
```
|
|
302
|
+
```math
|
|
303
|
+
group(
|
|
304
|
+
a+1=b,
|
|
305
|
+
a+b**2=3
|
|
306
|
+
)
|
|
307
|
+
```
|
|
308
|
+
* 标号
|
|
309
|
+
```mathscript
|
|
310
|
+
tab(1); // 带小括号的数字
|
|
311
|
+
tab(circle,1,2,3,10); // 带圆圈的数字
|
|
312
|
+
tab(roman,1); //罗马数字
|
|
313
|
+
tab(roman,3888); //罗马数字
|
|
314
|
+
group(// 方程组中使用
|
|
315
|
+
x+y=10 tab(circle,1),
|
|
316
|
+
x*y=25 tab(circle,2)
|
|
317
|
+
)
|
|
318
|
+
```
|
|
319
|
+
```math
|
|
320
|
+
tab(1);
|
|
321
|
+
tab(circle,1,2,3,10);
|
|
322
|
+
tab(roman,1);
|
|
323
|
+
tab(roman,3888);
|
|
324
|
+
group(
|
|
325
|
+
x+y=10 tab(circle,1),
|
|
326
|
+
x*y=25 tab(circle,2)
|
|
327
|
+
)
|
|
328
|
+
```
|
|
329
|
+
* 角
|
|
330
|
+
```mathscript
|
|
331
|
+
corner(1);
|
|
332
|
+
corner(A);
|
|
333
|
+
corner(BAC);
|
|
334
|
+
```
|
|
335
|
+
```math
|
|
336
|
+
corner(1);
|
|
337
|
+
corner(A);
|
|
338
|
+
corner(BAC);
|
|
339
|
+
```
|
|
238
340
|
|
|
341
|
+
## 希腊字母对照表如下
|
|
342
|
+
按此表中的英文单词命名的变量将自动转换为希腊字母
|
|
239
343
|
```javascript
|
|
240
|
-
// 按此表中的英文单词命名的变量将自动转换为希腊字母
|
|
241
344
|
alpha: "α", Alpha: "Α",
|
|
242
345
|
beta: "β", Beta: "Β",
|
|
243
346
|
gamma: "γ", Gamma: "Γ",
|
package/coms/basic/spaces.js
CHANGED
|
@@ -2,7 +2,7 @@ var spaceDefined = [
|
|
|
2
2
|
"\\u0002",
|
|
3
3
|
"\\b-\\r",// "\\b"/*8*/, "\\t"/*9*/, "\\n"/*10*/, "\\v"/*11*/, "\\f"/*12*/, "\\r"/*13*/,
|
|
4
4
|
" "/*32*/,
|
|
5
|
-
"\\u007f", "\\u00a0", "\\u00ad", "\\u034f", "\\u061c",
|
|
5
|
+
"\\u007f", "\\u0085"/*next line*/, "\\u00a0", "\\u00ad", "\\u034f", "\\u061c",
|
|
6
6
|
"\\u115f", "\\u1160",
|
|
7
7
|
"\\u17b4", "\\u17b5",
|
|
8
8
|
"\\u180b-\\u180e",
|
package/coms/compile/Program.js
CHANGED
|
@@ -1203,7 +1203,7 @@ class Program {
|
|
|
1203
1203
|
console.warn(
|
|
1204
1204
|
"代码异常结束",
|
|
1205
1205
|
`\r\n - 祖先标记: ${parents.slice(1).map(p => `${p.entry || ""}<red2>${p.tag || p.text || ""}</red2><gray>${p.row}:${p.col}</gray>`).join('')}`,
|
|
1206
|
-
`\r\n - 内层入口: <yellow>${this.mindpath}</yellow>:${
|
|
1206
|
+
`\r\n - 内层入口: <yellow>${this.mindpath}</yellow>:${queue.row}:${queue.col} ${queue.entry}`,
|
|
1207
1207
|
);
|
|
1208
1208
|
while (queue !== origin) {
|
|
1209
1209
|
queue.error = "代码异常结束";
|
package/coms/compile/common.js
CHANGED
|
@@ -1515,7 +1515,7 @@ var createString = function (parsed) {
|
|
|
1515
1515
|
(STRAP | EXPRESS | PROPERTY | COMMENT | VALUE) & lasttype
|
|
1516
1516
|
&& (STRAP | EXPRESS | PROPERTY | VALUE | LABEL) & o.type
|
|
1517
1517
|
) {
|
|
1518
|
-
if (autospace || prev?.isdigit) result.push(" ");
|
|
1518
|
+
if (autospace || prev?.isdigit && patchspace) result.push(" ");
|
|
1519
1519
|
}
|
|
1520
1520
|
else if (p && o.type === STAMP && !/^[,;]/.test(o.text)) {
|
|
1521
1521
|
if (result[result.length - 1] === " ");
|