efront 4.35.8 → 4.36.1
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/ASN1.js +1 -1
- package/coms/basic/JSAM.js +2 -2
- package/coms/basic/decodeLZW.js +35 -22
- package/coms/basic/math.js +110 -32
- package/coms/basic/math.md +118 -40
- package/coms/basic/math_test.xht +10 -0
- package/coms/basic/refilm_decode.js +20 -18
- package/coms/basic/refilm_parse.js +6 -7
- package/coms/basic/strings.js +43 -6
- package/coms/basic_/JSON.js +5 -1
- package/coms/compile/Html.js +21 -1
- package/coms/compile/Program.js +9 -3
- package/coms/compile/common.js +37 -2
- package/coms/compile/common_test.js +48 -0
- package/coms/compile/namekill.js +13 -0
- package/coms/compile/powermap.js +1 -1
- package/coms/compile/scanner2.js +8 -2
- package/coms/compile//347/256/227/345/274/217.js +82 -26
- package/coms/compile//347/256/227/345/274/217_test.js +6 -1
- package/coms/compile//347/264/240/351/246/250.js +1 -1
- package/coms/zimoli/arriswise.js +7 -3
- package/coms/zimoli/list.js +1 -2
- 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/coms/basic/ASN1.js
CHANGED
|
@@ -4,7 +4,7 @@ var ASN1 = function (tag) { // tag=tagClass|type|composed_flag
|
|
|
4
4
|
for (var cx = 1, dx = arguments.length; cx < dx; cx++) {
|
|
5
5
|
var bytes = arguments[cx];
|
|
6
6
|
if (bytes.constructor !== Array) {
|
|
7
|
-
bytes = Array.apply(null, bytes);
|
|
7
|
+
bytes = bytes.length !== 1 ? Array.apply(null, bytes) : [bytes[0]];
|
|
8
8
|
}
|
|
9
9
|
bytesarr.push(bytes);
|
|
10
10
|
length += bytes.length;
|
package/coms/basic/JSAM.js
CHANGED
|
@@ -104,7 +104,7 @@ function stringify(memery, preload, hasDulp = true) {
|
|
|
104
104
|
noDulp = preload === false || hasDulp === false;
|
|
105
105
|
if (isArrayLike(hasDulp)) preload = hasDulp;
|
|
106
106
|
if (isArrayLike(preload)) {
|
|
107
|
-
preload = Array.apply(null, preload);
|
|
107
|
+
preload = preload.length !== 1 ? Array.apply(null, preload) : [preload[0]];
|
|
108
108
|
var i = preload.indexOf(memery) + 1;
|
|
109
109
|
if (i > 0) return i + ',';
|
|
110
110
|
preload.unshift(memery);
|
|
@@ -244,7 +244,7 @@ function scanblock(string, index, preload, obj) {
|
|
|
244
244
|
return reg.lastIndex;
|
|
245
245
|
}
|
|
246
246
|
function parse(string, preload) {
|
|
247
|
-
if (isArrayLike(preload)) preload = Array.apply(null, preload);
|
|
247
|
+
if (isArrayLike(preload)) preload = preload.length !== 1 ? Array.apply(null, preload) : [preload[0]];
|
|
248
248
|
else preload = [];
|
|
249
249
|
isjsam = false;
|
|
250
250
|
preload.unshift(void 0);
|
package/coms/basic/decodeLZW.js
CHANGED
|
@@ -2,10 +2,12 @@ var _dict = [];
|
|
|
2
2
|
var _prefix = [];
|
|
3
3
|
var _buff = [];
|
|
4
4
|
var _bitDeep = 9;
|
|
5
|
+
var _bitInit = 9;
|
|
6
|
+
var _dictSize = 258;
|
|
5
7
|
var _half = 0;
|
|
6
8
|
var _addLength = 0;
|
|
7
9
|
function _clear() {
|
|
8
|
-
_bitDeep =
|
|
10
|
+
_bitDeep = _bitInit;
|
|
9
11
|
_dict = [];
|
|
10
12
|
}
|
|
11
13
|
|
|
@@ -57,9 +59,9 @@ function _readFrom1(buff, cx) {
|
|
|
57
59
|
function _addDict(d) {
|
|
58
60
|
if (d.length > 1) {
|
|
59
61
|
var dict = _dict;
|
|
60
|
-
d.index = dict.length +
|
|
62
|
+
d.index = dict.length + _dictSize;
|
|
61
63
|
dict.push(d);
|
|
62
|
-
if (1 << _bitDeep <= dict.length +
|
|
64
|
+
if (1 << _bitDeep <= dict.length + _dictSize + _addLength) {
|
|
63
65
|
if (!_addLength && _bitDeep >= 12) return;
|
|
64
66
|
_bitDeep++;
|
|
65
67
|
}
|
|
@@ -69,12 +71,12 @@ function _writeTo(dist, b) {
|
|
|
69
71
|
var prefix = _prefix;
|
|
70
72
|
var dict = _dict;
|
|
71
73
|
var end = false;
|
|
72
|
-
if (b <
|
|
74
|
+
if (b < _dictSize - 2) {
|
|
73
75
|
prefix.push(b);
|
|
74
76
|
_addDict(prefix);
|
|
75
77
|
prefix = [b];
|
|
76
|
-
} else if (b >=
|
|
77
|
-
var d = dict[b -
|
|
78
|
+
} else if (b >= _dictSize) {
|
|
79
|
+
var d = dict[b - _dictSize];
|
|
78
80
|
if (!d) {
|
|
79
81
|
prefix.push(prefix[0]);
|
|
80
82
|
_addDict(prefix);
|
|
@@ -84,10 +86,10 @@ function _writeTo(dist, b) {
|
|
|
84
86
|
_addDict(prefix);
|
|
85
87
|
prefix = d.slice(0);
|
|
86
88
|
}
|
|
87
|
-
} else if (b ===
|
|
89
|
+
} else if (b === _dictSize - 2) {
|
|
88
90
|
_clear();
|
|
89
91
|
prefix = [];
|
|
90
|
-
} else if (b ===
|
|
92
|
+
} else if (b === _dictSize - 1) {
|
|
91
93
|
end = true;
|
|
92
94
|
prefix = [];
|
|
93
95
|
}
|
|
@@ -100,16 +102,18 @@ function _pass(buff) {
|
|
|
100
102
|
var dict = _dict;
|
|
101
103
|
var half = _half;
|
|
102
104
|
var end = false;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
105
|
+
var dist = [];
|
|
106
|
+
var cx = 0;
|
|
107
|
+
if (_buff.length) {
|
|
108
|
+
var bl = _buff.length;
|
|
109
|
+
do {
|
|
110
|
+
var [b, cx] = _readFrom(_buff.concat(buff[0], buff[1]), cx);
|
|
111
|
+
if (_writeTo(dist, b)) {
|
|
112
|
+
end = true;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
} while (cx < bl);
|
|
116
|
+
cx = cx - bl;
|
|
113
117
|
}
|
|
114
118
|
if (!end) while (cx + 1 < buff.length) {
|
|
115
119
|
if (cx + 2 === buff.length) {
|
|
@@ -119,6 +123,8 @@ function _pass(buff) {
|
|
|
119
123
|
if (_writeTo(dist, b)) break;
|
|
120
124
|
}
|
|
121
125
|
_buff = buff.slice(cx);
|
|
126
|
+
if (_buff.length === 1) _buff = [_buff[0]];
|
|
127
|
+
else _buff = Array.apply(null, _buff);
|
|
122
128
|
return dist;
|
|
123
129
|
}
|
|
124
130
|
function _end() {
|
|
@@ -127,15 +133,22 @@ function _end() {
|
|
|
127
133
|
_buff = [];
|
|
128
134
|
_half = 0;
|
|
129
135
|
_bitDeep = 9;
|
|
136
|
+
_bitInit = 9;
|
|
130
137
|
return [];
|
|
131
138
|
}
|
|
132
139
|
|
|
133
|
-
function decodeLZW(buff, isBigEndStart) {
|
|
134
|
-
|
|
135
|
-
else _readFrom = _readFrom2, _addLength = 0;
|
|
140
|
+
function decodeLZW(buff, isBigEndStart, lzw_size) {
|
|
141
|
+
open(isBigEndStart, lzw_size);
|
|
136
142
|
var decoded = _pass(buff);
|
|
137
143
|
_end();
|
|
138
144
|
return decoded;
|
|
139
145
|
}
|
|
140
|
-
|
|
146
|
+
var open = decodeLZW.open = function (isBigEndStart, lzw_size = 8) {
|
|
147
|
+
if (isBigEndStart !== false) _readFrom = _readFrom1, _addLength = 1;
|
|
148
|
+
else _readFrom = _readFrom2, _addLength = 0;
|
|
149
|
+
_dictSize = (1 << lzw_size) + 2;
|
|
150
|
+
_bitDeep = _bitInit = lzw_size + 1;
|
|
151
|
+
};
|
|
152
|
+
decodeLZW.pass = _pass;
|
|
153
|
+
decodeLZW.close = _end;
|
|
141
154
|
module.exports = decodeLZW;
|
package/coms/basic/math.js
CHANGED
|
@@ -8,7 +8,7 @@ var mi = s => `<mi>${s}</mi>`;
|
|
|
8
8
|
var mn = s => `<mn>${s}</mn>`;
|
|
9
9
|
var mi2 = (s, a, n) => {
|
|
10
10
|
s = n ? `<msup><mi>${s}</mi>${n}</msup>` : `<mi>${s}</mi>`;
|
|
11
|
-
return s + `<ms> </ms>` + a
|
|
11
|
+
return s + `<ms> </ms>` + a + `<ms> </ms>`;
|
|
12
12
|
}
|
|
13
13
|
var mrow = (a, quote, deep) => {
|
|
14
14
|
if (deep === 2) var tag = 'mtd';
|
|
@@ -19,7 +19,9 @@ var mrow = (a, quote, deep) => {
|
|
|
19
19
|
return a;
|
|
20
20
|
}
|
|
21
21
|
var series =/*级数*/(通项, neq, to) =>
|
|
22
|
-
`<munderover><mo>∑</mo>${neq}${to}</munderover>${通项}`;
|
|
22
|
+
`<munderover><mo movablelimits=false>∑</mo>${neq}${to}</munderover>${通项}`;
|
|
23
|
+
var Series =/*级数*/(通项, neq, to) =>
|
|
24
|
+
`<math display="block"><munderover><mo>∑</mo>${neq}${to}</munderover>${通项}</math>`;
|
|
23
25
|
var msub = (a, n) => `<msub>${a}${n}</msub>`;
|
|
24
26
|
var qt = (t, a, args) => {
|
|
25
27
|
var b = args.shift();
|
|
@@ -34,6 +36,9 @@ var qt = (t, a, args) => {
|
|
|
34
36
|
|
|
35
37
|
var 三角函数 = {
|
|
36
38
|
"sin"(a, n) {
|
|
39
|
+
if (!a && n instanceof Array) {
|
|
40
|
+
[a, n] = n;
|
|
41
|
+
}
|
|
37
42
|
return mi2("sin", a, n);
|
|
38
43
|
},
|
|
39
44
|
"cos"(a, n) {
|
|
@@ -82,7 +87,7 @@ var toRoman = function (n) {
|
|
|
82
87
|
d = ["", "M", "MM", "MMM"][d];
|
|
83
88
|
return d + c + b + a;
|
|
84
89
|
};
|
|
85
|
-
var circles = "
|
|
90
|
+
var circles = "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿";
|
|
86
91
|
|
|
87
92
|
var tabs = {
|
|
88
93
|
roman(...args) {
|
|
@@ -94,12 +99,22 @@ var tabs = {
|
|
|
94
99
|
circle(...args) {
|
|
95
100
|
return args.map(n => circles.charAt(n - 1)).map(a => `<mn>${a}</mn>`).join('');
|
|
96
101
|
}
|
|
102
|
+
};
|
|
103
|
+
tabs["@"] = tabs.circle;
|
|
104
|
+
tabs["$"] = tabs.roman;
|
|
105
|
+
var mtable = function (args, prefix, postfix) {
|
|
106
|
+
if (prefix) prefix = `<mo>${prefix}</mo>`;
|
|
107
|
+
if (postfix) postfix = `<mo>${postfix}</mo>`;
|
|
108
|
+
if (args.length === 1) return [prefix, args[0], postfix].join('');
|
|
109
|
+
return `${prefix}<mtable><mtr>${args.join("</mtr><mtr>")}</mtr></mtable>${postfix}`;
|
|
97
110
|
}
|
|
98
|
-
|
|
99
111
|
var funcmap = {
|
|
100
112
|
"+"(...args) {
|
|
101
113
|
return mo3("+", args);
|
|
102
114
|
},
|
|
115
|
+
"+."(a, ...args) {
|
|
116
|
+
return a + args.join('<mo>+</mo>');
|
|
117
|
+
},
|
|
103
118
|
"-"(...args) {
|
|
104
119
|
return mo3("–", args);
|
|
105
120
|
},
|
|
@@ -134,8 +149,17 @@ var funcmap = {
|
|
|
134
149
|
Mul(...args) {
|
|
135
150
|
return mo3("·", args);
|
|
136
151
|
},
|
|
137
|
-
|
|
138
|
-
|
|
152
|
+
conj(A) {
|
|
153
|
+
var m = document.createElementNS('http://www.w3.org/1998/Math/MathML', 'math');
|
|
154
|
+
m.innerHTML = A;
|
|
155
|
+
css(m, 'opacition:0;position:absolute:left-10px;top:-10px;pointer-events:none;z-index:-10');
|
|
156
|
+
document.documentElement.appendChild(m);
|
|
157
|
+
var sp = Array(2 + (m.clientWidth / 6 | 0)).join("\u23bc");
|
|
158
|
+
remove(m);
|
|
159
|
+
return `<mover>${A}<mo stretchy=true symmetric=true fence=true accent=true>${sp}</mo></mover>`
|
|
160
|
+
},
|
|
161
|
+
abs(...args) {
|
|
162
|
+
return mtable(args, "|", "|");
|
|
139
163
|
},
|
|
140
164
|
log(x, n) {
|
|
141
165
|
return `<msub><mo>log</mo>${n}</msub>${x}`
|
|
@@ -159,9 +183,16 @@ var funcmap = {
|
|
|
159
183
|
return `<munder><ms>limit</ms><mrow>${x}<mo>→</mo>${n}</mrow></munder>${a}`
|
|
160
184
|
},
|
|
161
185
|
sigma: series,
|
|
186
|
+
Sigma: Series,
|
|
187
|
+
Series,
|
|
162
188
|
series,
|
|
163
|
-
|
|
164
|
-
return
|
|
189
|
+
"{"(...args) {
|
|
190
|
+
return mtable(args, '{', '');
|
|
191
|
+
// return `<mo>{</mo><mtable columnalign="left"><mtr><mtd>${args.join("</mtd></mtr><mtr><mtd>")}</mtd></mtr></mtable>`
|
|
192
|
+
},
|
|
193
|
+
"["(...args) {
|
|
194
|
+
return mtable(args, '[', ']');
|
|
195
|
+
// return `<mo>[</mo><mtable><mtr>${args.join("</mtr><mtr>")}</mtr></mtable><mo>]</mo>`;
|
|
165
196
|
},
|
|
166
197
|
'!='(...args) {
|
|
167
198
|
return mo3("≉", args);
|
|
@@ -172,19 +203,23 @@ var funcmap = {
|
|
|
172
203
|
"~="(...args) {
|
|
173
204
|
return mo3("≈", args);
|
|
174
205
|
},
|
|
175
|
-
|
|
206
|
+
integral(a, b = '', c = '') {
|
|
176
207
|
return `<msubsup><mo>∫</mo>${b}${c}</msubsup>${a}`;
|
|
177
208
|
},
|
|
209
|
+
Integral(a, b = '', c = '') {
|
|
210
|
+
return `<math display="block"><msubsup><mo>∫</mo>${b}${c}</msubsup>${a}</math>`;
|
|
211
|
+
},
|
|
178
212
|
"'"(...args) {
|
|
179
213
|
var b = args.pop();
|
|
180
|
-
if (!args.length) return `<msup>${b}<mo>
|
|
214
|
+
if (!args.length) return `<msup>${b}<mo>T</mo></msup>`;
|
|
181
215
|
// 导数
|
|
182
|
-
return args.map((a) => `${a}<mo
|
|
216
|
+
return args.map((a) => `${a}<mo>'</mo>`).join('') + `<mi>(</mi>${b}<mi>)</mi>`;
|
|
183
217
|
},
|
|
184
218
|
"!"(...args) {
|
|
185
219
|
return args.map(a => a + `<mo>!</mo>`).join('');
|
|
186
220
|
}
|
|
187
221
|
};
|
|
222
|
+
funcmap["^|"] = funcmap.abs;
|
|
188
223
|
var unary = (u, a) => `<ms>${u}</ms>${a}`;
|
|
189
224
|
var unarymap = {
|
|
190
225
|
"+"(a) {
|
|
@@ -250,6 +285,7 @@ var puncmap = {
|
|
|
250
285
|
// ">=": "≥",
|
|
251
286
|
// "<=": '≤',
|
|
252
287
|
};
|
|
288
|
+
puncmap["^*"] = puncmap["**"];
|
|
253
289
|
var pmap = {};
|
|
254
290
|
|
|
255
291
|
[
|
|
@@ -298,23 +334,30 @@ var br = function () {
|
|
|
298
334
|
lineBroken = true;
|
|
299
335
|
return '</mtd></mtr><mtr><mtd>';
|
|
300
336
|
};
|
|
337
|
+
var Number_isFinite = Number.isFinite;
|
|
338
|
+
var isPostFinite = function (n) {
|
|
339
|
+
return /[^\d]$/.test(n[n.length - 1]);
|
|
340
|
+
}
|
|
341
|
+
var isFinite = function (n, post) {
|
|
342
|
+
if (Number_isFinite(n)) return true;
|
|
343
|
+
if (!n) return false;
|
|
344
|
+
if (n["/"]) return true;
|
|
345
|
+
if (n["+."]) return true;
|
|
346
|
+
if (n["."]) return !post || isPostFinite(n);
|
|
347
|
+
if (n[".."]) return !post || isPostFinite(n);
|
|
348
|
+
return false;
|
|
349
|
+
}
|
|
301
350
|
function toString(obj, p, deep) {
|
|
302
351
|
if (obj instanceof Array) {
|
|
303
|
-
if (deep == 1 && obj.length === 2 && obj[1].tab) {
|
|
304
|
-
return toString(obj[0], 0, deep) + "</mtd><mtd>" + obj.slice(1, obj.length).map(a => toString(a, 0, 0)).join("</mtd><mtd>");
|
|
305
|
-
}
|
|
306
352
|
deep++;
|
|
307
353
|
var args = obj.map(a => toString(a, deep > 1 ? 0 : p, deep));
|
|
308
354
|
deep--;
|
|
309
355
|
if (args instanceof Array) {
|
|
310
|
-
if (deep
|
|
356
|
+
if (deep >= 2) {
|
|
311
357
|
if (args.length > 1) args = `<mrow><mo>(</mo>${args.join('<mo>,</mo>')}<mo>)</mo></mrow>`;
|
|
312
358
|
}
|
|
313
|
-
else if (deep === 2) {
|
|
314
|
-
args = `<mtd>${args.join('</mtd><mtd>')}</mtd>`;
|
|
315
|
-
}
|
|
316
359
|
else if (deep === 1) {
|
|
317
|
-
args =
|
|
360
|
+
args = args.join('');
|
|
318
361
|
}
|
|
319
362
|
}
|
|
320
363
|
return args;
|
|
@@ -324,8 +367,12 @@ function toString(obj, p, deep) {
|
|
|
324
367
|
for (var k in obj) break;
|
|
325
368
|
if (!k) return '';
|
|
326
369
|
var origin = obj[k];
|
|
327
|
-
if (k === '..') {
|
|
328
|
-
|
|
370
|
+
if (k === '.' || k === '..') {
|
|
371
|
+
if (k === '.') {
|
|
372
|
+
var [prefix, e, s] = origin;
|
|
373
|
+
if (/[^\d]$/.test(e)) s = e, e = '';
|
|
374
|
+
}
|
|
375
|
+
else var [prefix, rep, dots, e, s] = origin;
|
|
329
376
|
prefix = String(prefix).replace(/^\-/, '–');
|
|
330
377
|
if (typeof rep === 'number') rep = String(rep);
|
|
331
378
|
if (rep && !/\./.test(prefix)) prefix += '.';
|
|
@@ -342,8 +389,25 @@ function toString(obj, p, deep) {
|
|
|
342
389
|
else dots = '';
|
|
343
390
|
if (e) e = `<mo>×</mo><msup><mn>10</mn><mn>${String(e).replace(/^\-/, '–')}</mn></msup>`;
|
|
344
391
|
else e = '';
|
|
392
|
+
if (s) s = `<mi>${s}</mi>`;
|
|
393
|
+
else s = '';
|
|
345
394
|
prefix = mn(prefix);
|
|
346
|
-
return mrow([prefix, rep, dots, e].join(''), e ? p >= pmap["*"] : false, deep);
|
|
395
|
+
return mrow([prefix, rep, dots, e, s].join(''), e ? p >= pmap["*"] : false, deep);
|
|
396
|
+
}
|
|
397
|
+
if (k === '**') {
|
|
398
|
+
if (origin instanceof Array) {
|
|
399
|
+
var [left, right] = origin;
|
|
400
|
+
if (left instanceof Object && !(left instanceof Array)) {
|
|
401
|
+
for (var k1 in left) break;
|
|
402
|
+
if (!(left[k1] instanceof Array)) {
|
|
403
|
+
var obj = mi2(k1, toString(left[k1], pmap["*"], 0), toString(right));
|
|
404
|
+
return mrow(obj, p >= pmap["**"], deep);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
if (k === '@' || k === '$') {
|
|
410
|
+
return mrow(tabs[k](origin), -1, deep);
|
|
347
411
|
}
|
|
348
412
|
if (k === 'tab') {
|
|
349
413
|
k = origin.shift();
|
|
@@ -354,13 +418,24 @@ function toString(obj, p, deep) {
|
|
|
354
418
|
return mrow(tabs[k](...origin), -1, deep);
|
|
355
419
|
}
|
|
356
420
|
if (k in 三角函数) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
421
|
+
if (origin instanceof Array) {
|
|
422
|
+
var args = origin.map(a => toString(a, pmap["*"], 0));
|
|
423
|
+
obj = 三角函数[k](...args);
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
obj = 三角函数[k](toString(origin, pmap["*"], 0));
|
|
427
|
+
}
|
|
428
|
+
return mrow(obj, p >= pmap["**"], deep);
|
|
429
|
+
}
|
|
430
|
+
if (k === '+.') {
|
|
431
|
+
var args = toString(origin, pmap[k], -1);
|
|
360
432
|
}
|
|
361
|
-
var args = toString(origin, pmap[k], 0);
|
|
433
|
+
else var args = toString(origin, k === '/' ? 0 : pmap[k], 0);
|
|
362
434
|
var addqt = pmap[k] < p && p < pmap["**"];
|
|
363
435
|
if (args instanceof Array) {
|
|
436
|
+
if (k === "'" && args.length === 1 && !origin[0]["["]) {
|
|
437
|
+
return mrow(args[0] + `<mo>'</mo>`, p > pmap["**"], 0);
|
|
438
|
+
}
|
|
364
439
|
var f = funcmap[k];
|
|
365
440
|
if (!f) {
|
|
366
441
|
addqt = -1;
|
|
@@ -372,14 +447,16 @@ function toString(obj, p, deep) {
|
|
|
372
447
|
return mrow(`<mi>${希腊[k] || k}</mi>${mrow(args instanceof Array ? args.join('<mo>,</mo>') : args, true)}`, false, deep);
|
|
373
448
|
}
|
|
374
449
|
if (args instanceof Array) {
|
|
375
|
-
|
|
376
450
|
if (k === '*') {
|
|
377
|
-
var
|
|
378
|
-
var bx = 1;
|
|
451
|
+
var bx = 0;
|
|
379
452
|
var simple = true;
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
453
|
+
var pisnum = isFinite(origin[0], true);
|
|
454
|
+
var allnum = pisnum;
|
|
455
|
+
for (var cx = 1, dx = args.length; cx < dx; cx++) {
|
|
456
|
+
var o = origin[cx];
|
|
457
|
+
var isnum = isFinite(o);
|
|
458
|
+
if (!isnum) allnum = false;
|
|
459
|
+
if (!pisnum && isnum) {
|
|
383
460
|
if (cx > bx) {
|
|
384
461
|
while (bx < cx) {
|
|
385
462
|
args[bx] = args[bx] + "<mo>·</mo>";
|
|
@@ -388,6 +465,7 @@ function toString(obj, p, deep) {
|
|
|
388
465
|
}
|
|
389
466
|
bx = cx;
|
|
390
467
|
}
|
|
468
|
+
pisnum = isnum && isPostFinite(o);
|
|
391
469
|
}
|
|
392
470
|
if (allnum) {
|
|
393
471
|
return mrow(funcmap.mul(...args), false, deep);
|
package/coms/basic/math.md
CHANGED
|
@@ -81,17 +81,19 @@ math`S=sqrt(p*(p-a)*(p-b)*(p-c))`
|
|
|
81
81
|
```
|
|
82
82
|
* 乘法
|
|
83
83
|
```mathscript
|
|
84
|
+
// 用`*`会自动转成`×`或`·`或省略
|
|
84
85
|
1*2
|
|
85
86
|
a*b
|
|
86
87
|
2*a
|
|
88
|
+
a*2
|
|
87
89
|
```
|
|
88
90
|
```math
|
|
89
91
|
1*2
|
|
90
92
|
a*b
|
|
91
93
|
2*a
|
|
94
|
+
a*2
|
|
92
95
|
```
|
|
93
96
|
```mathscript
|
|
94
|
-
// 默认用`*`会自动转成`×`或`·`或省略
|
|
95
97
|
// 如果自动生成的符号不符合预期
|
|
96
98
|
// 可以使用`mul(a,b)`以强制生成`×`
|
|
97
99
|
// `Mul(a,b)`生成`·`
|
|
@@ -104,9 +106,11 @@ mul(a,b),Mul(a,b),MUL(a,b)
|
|
|
104
106
|
* 分数
|
|
105
107
|
```mathscript
|
|
106
108
|
分子/分母
|
|
109
|
+
1/(2/3),1/2/3;
|
|
107
110
|
```
|
|
108
111
|
```math
|
|
109
112
|
分子/分母
|
|
113
|
+
1/(2/3),1/2/3;
|
|
110
114
|
```
|
|
111
115
|
* 以除号表示除法
|
|
112
116
|
```mathscript
|
|
@@ -117,10 +121,19 @@ mul(a,b),Mul(a,b),MUL(a,b)
|
|
|
117
121
|
```
|
|
118
122
|
* 绝对值
|
|
119
123
|
```mathscript
|
|
120
|
-
|
|
124
|
+
|a|;
|
|
125
|
+
|1+|a||*2;
|
|
121
126
|
```
|
|
122
127
|
```math
|
|
123
|
-
|
|
128
|
+
|a|;
|
|
129
|
+
|1+|a||*2;
|
|
130
|
+
```
|
|
131
|
+
* 行列式
|
|
132
|
+
```mathscript
|
|
133
|
+
|1,2,3,4;5,6,7,8|;
|
|
134
|
+
```
|
|
135
|
+
```math
|
|
136
|
+
|1,2,3,4;5,6,7,8|;
|
|
124
137
|
```
|
|
125
138
|
* 阶乘: n!
|
|
126
139
|
```mathscript
|
|
@@ -131,10 +144,12 @@ mul(a,b),Mul(a,b),MUL(a,b)
|
|
|
131
144
|
```
|
|
132
145
|
* 幂
|
|
133
146
|
```mathscript
|
|
134
|
-
底数 **
|
|
147
|
+
底数 ** 指数;
|
|
148
|
+
a**2**x=a**(2*x);
|
|
135
149
|
```
|
|
136
150
|
```math
|
|
137
|
-
底数 **
|
|
151
|
+
底数 ** 指数;
|
|
152
|
+
a**2**x=a**(2*x);
|
|
138
153
|
```
|
|
139
154
|
* 平方根
|
|
140
155
|
```mathscript
|
|
@@ -162,16 +177,28 @@ mul(a,b),Mul(a,b),MUL(a,b)
|
|
|
162
177
|
|
|
163
178
|
* 三角函数
|
|
164
179
|
```mathscript
|
|
165
|
-
|
|
166
|
-
sin(theta
|
|
167
|
-
|
|
168
|
-
sin(theta)**2;
|
|
180
|
+
// 指令形式,函数形式
|
|
181
|
+
sin theta, sin(theta);
|
|
182
|
+
// 不同位置的指数
|
|
183
|
+
sin(theta**2),sin(theta)**2, (sin theta)**2,"sin"(theta)**2;
|
|
184
|
+
// 和角公式
|
|
185
|
+
sin(alpha+beta)=sin(alpha)*cos(beta)+cos(alpha)*sin(beta);
|
|
186
|
+
// 倍角公式
|
|
187
|
+
sin(2*alpha)=2*sin(alpha)*cos(alpha);
|
|
188
|
+
// 反三角函数
|
|
189
|
+
arctan x+arctan y = arctan ((x+y)/(1-x*y))
|
|
169
190
|
```
|
|
170
191
|
```math
|
|
171
|
-
|
|
172
|
-
sin(theta
|
|
173
|
-
|
|
174
|
-
sin(theta)**2;
|
|
192
|
+
// 指令形式,函数形式
|
|
193
|
+
sin theta, sin(theta);
|
|
194
|
+
// 不同位置的指数
|
|
195
|
+
sin(theta**2),sin(theta)**2, (sin theta)**2,"sin"(theta)**2;
|
|
196
|
+
// 和角公式
|
|
197
|
+
sin(alpha+beta)=sin(alpha)*cos(beta)+cos(alpha)*sin(beta);
|
|
198
|
+
// 倍角公式
|
|
199
|
+
sin(2*alpha)=2*sin(alpha)*cos(alpha);
|
|
200
|
+
// 反三角函数
|
|
201
|
+
arctan x+arctan y = arctan ((x+y)/(1-x*y))
|
|
175
202
|
```
|
|
176
203
|
|
|
177
204
|
* 向量
|
|
@@ -211,19 +238,29 @@ sin(theta)**2;
|
|
|
211
238
|
|
|
212
239
|
* 积分
|
|
213
240
|
```mathscript
|
|
214
|
-
integral(表达式,下界,上界)
|
|
241
|
+
integral(表达式,下界,上界) // 内联样式
|
|
242
|
+
Integral(表达式,下界,上界) // 块级样式
|
|
215
243
|
```
|
|
216
244
|
```math
|
|
217
245
|
integral(表达式,下界,上界)
|
|
246
|
+
Integral(表达式,下界,上界)
|
|
218
247
|
```
|
|
219
248
|
* 级数
|
|
220
249
|
```mathscript
|
|
250
|
+
// 内联样式
|
|
221
251
|
sigma(公式主体,n=1,+Infinity)
|
|
222
252
|
series(公式主体,n=1,+Infinity)
|
|
253
|
+
// 块级样式
|
|
254
|
+
Sigma(公式主体,n=1,+Infinity)
|
|
255
|
+
Series(公式主体,n=1,+Infinity)
|
|
223
256
|
```
|
|
224
257
|
```math
|
|
258
|
+
// 内联样式
|
|
225
259
|
sigma(公式主体,n=1,+Infinity)
|
|
226
260
|
series(公式主体,n=1,+Infinity)
|
|
261
|
+
// 块级样式
|
|
262
|
+
Sigma(公式主体,n=1,+Infinity)
|
|
263
|
+
Series(公式主体,n=1,+Infinity)
|
|
227
264
|
```
|
|
228
265
|
* 矩阵
|
|
229
266
|
```mathscript
|
|
@@ -241,10 +278,12 @@ series(公式主体,n=1,+Infinity)
|
|
|
241
278
|
```
|
|
242
279
|
* 转置
|
|
243
280
|
```mathscript
|
|
244
|
-
[1,2;3,4]'
|
|
281
|
+
[1,2;3,4]';
|
|
282
|
+
A'*B';
|
|
245
283
|
```
|
|
246
284
|
```math
|
|
247
|
-
[1,2;3,4]'
|
|
285
|
+
[1,2;3,4]';
|
|
286
|
+
A'*B';
|
|
248
287
|
```
|
|
249
288
|
* 离子
|
|
250
289
|
```mathscript
|
|
@@ -292,39 +331,50 @@ series(公式主体,n=1,+Infinity)
|
|
|
292
331
|
1.3.e3;
|
|
293
332
|
a*1.3e3
|
|
294
333
|
```
|
|
334
|
+
* 虚数
|
|
335
|
+
```mathscript
|
|
336
|
+
1+2i;
|
|
337
|
+
1+2.3i;
|
|
338
|
+
2+3e10k;
|
|
339
|
+
3e10j;
|
|
340
|
+
```
|
|
341
|
+
```math
|
|
342
|
+
1+2i;
|
|
343
|
+
1+2.3i;
|
|
344
|
+
2+3e10k;
|
|
345
|
+
3e10j;
|
|
346
|
+
```
|
|
295
347
|
* 方程组
|
|
296
348
|
```mathscript
|
|
297
|
-
|
|
349
|
+
{
|
|
298
350
|
a+1=b;
|
|
299
|
-
a+b=3;
|
|
300
|
-
|
|
351
|
+
a+b**2=3;
|
|
352
|
+
}
|
|
301
353
|
```
|
|
302
354
|
```math
|
|
303
|
-
|
|
304
|
-
a+1=b
|
|
305
|
-
a+b**2=3
|
|
306
|
-
|
|
355
|
+
{
|
|
356
|
+
a+1=b;
|
|
357
|
+
a+b**2=3;
|
|
358
|
+
}
|
|
307
359
|
```
|
|
308
360
|
* 标号
|
|
309
361
|
```mathscript
|
|
310
362
|
tab(1); // 带小括号的数字
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
x
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
x*y=25 tab(circle,2)
|
|
327
|
-
)
|
|
363
|
+
@1,@2,@3,@4,@20,@50; // 带圆圈的数字
|
|
364
|
+
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$3888; //罗马数字
|
|
365
|
+
{// 方程组中使用
|
|
366
|
+
x+y=10, @1;
|
|
367
|
+
x*y=25, @2;
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
```math
|
|
371
|
+
tab(1); // 带小括号的数字
|
|
372
|
+
@1,@2,@3,@4,@20,@50; // 带圆圈的数字
|
|
373
|
+
$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$3888; //罗马数字
|
|
374
|
+
{// 方程组中使用
|
|
375
|
+
x+y=10, @1;
|
|
376
|
+
x*y=25, @2;
|
|
377
|
+
}
|
|
328
378
|
```
|
|
329
379
|
* 角
|
|
330
380
|
```mathscript
|
|
@@ -349,6 +399,34 @@ series(公式主体,n=1,+Infinity)
|
|
|
349
399
|
ln(x);
|
|
350
400
|
```
|
|
351
401
|
|
|
402
|
+
* 共轭
|
|
403
|
+
```mathscript
|
|
404
|
+
conj(A);// 上划线
|
|
405
|
+
conj(1+2i);// 上划线
|
|
406
|
+
conj(1+2i)*2;
|
|
407
|
+
```
|
|
408
|
+
```math
|
|
409
|
+
conj(A);// 上划线
|
|
410
|
+
conj(1+2i);// 上划线
|
|
411
|
+
conj(1+2i)*2;
|
|
412
|
+
```
|
|
413
|
+
* 共轭转置
|
|
414
|
+
```mathscript
|
|
415
|
+
A[*];
|
|
416
|
+
[1+2i, 3+4i;5+6j,7+8k][*];
|
|
417
|
+
```
|
|
418
|
+
```math
|
|
419
|
+
A[*];
|
|
420
|
+
[1+2i, 3+4i;5+6j,7+8k][*];
|
|
421
|
+
```
|
|
422
|
+
* 带整数部分的分数,1右1/2
|
|
423
|
+
```mathscript
|
|
424
|
+
1 .(1/2) * 2.(3/5) + 5.(7/8)
|
|
425
|
+
```
|
|
426
|
+
```math
|
|
427
|
+
1 .(1/2) * 2.(3/5) + 5.(7/8)
|
|
428
|
+
```
|
|
429
|
+
|
|
352
430
|
## 希腊字母对照表如下
|
|
353
431
|
按此表中的英文单词命名的变量将自动转换为希腊字母
|
|
354
432
|
```javascript
|