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.
Files changed (35) hide show
  1. package/#/345/233/275/351/231/205/345/214/226.yml +3 -0
  2. package/coms/basic/#loader.js +1 -1
  3. package/coms/basic/Table.js +26 -0
  4. package/coms/basic/escapeRegExp.js +24 -0
  5. package/coms/basic/escapeRegExp_test.js +35 -0
  6. package/coms/basic/math.js +106 -4
  7. package/coms/basic/math.md +128 -25
  8. package/coms/basic/spaces.js +1 -1
  9. package/coms/compile/Program.js +1 -1
  10. package/coms/compile/common.js +1 -1
  11. package/coms/compile//347/256/227/345/274/217.js +62 -20
  12. package/coms/compile//347/256/227/345/274/217_test.js +6 -2
  13. package/coms/compile//347/264/240/351/246/250.js +5 -4
  14. package/coms/compile//347/264/240/351/246/250_test.js +21 -1
  15. package/coms/explorer/main.less +1 -0
  16. package/coms/reptile/colors.js +2 -1
  17. package/coms/zimoli/arriswise.js +6 -1
  18. package/coms/zimoli/color-config.less +1 -1
  19. package/coms/zimoli/confirm.js +1 -1
  20. package/coms/zimoli/getGenerator.js +0 -1
  21. package/coms/zimoli/list.js +609 -576
  22. package/coms/zimoli/popup.js +1 -1
  23. package/coms/zimoli/prompt.js +4 -1
  24. package/coms/zimoli/scrollbar.less +1 -1
  25. package/coms/zimoli/table.js +1 -1
  26. package/coms/zimoli/vbox.js +1 -0
  27. package/coms//350/214/250/350/217/260//344/270/212/350/211/262.xht +5 -1
  28. package/coms//350/214/250/350/217/260//346/240/207/347/255/276/345/214/226.js +9 -1
  29. package/coms//350/214/250/350/217/260//346/270/262/346/237/223.js +1 -1
  30. package/coms//350/214/250/350/217/260//347/274/226/350/276/221/346/241/206.xht +16 -2
  31. package/coms//350/214/250/350/217/260//350/257/255/350/250/200.js +5 -0
  32. package/package.json +1 -1
  33. package/public/efront.js +1 -1
  34. package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
  35. package/debug.log +0 -3
@@ -40,6 +40,9 @@
40
40
  - zh-CN: 禁用
41
41
  en: Disable
42
42
 
43
+ - zh-CN: 代码结构错误
44
+ en: Code structure error
45
+
43
46
  - zh-CN: 复制失败!
44
47
  en: Copy failed!
45
48
 
@@ -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
  }
@@ -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')
@@ -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 "&nbsp;&nbsp;" + args
90
+ .map(toRoman)
91
+ .map(a => `<mn>${a}</mn>`)
92
+ .join('<ms>&ensp;</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)) {
@@ -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
- ```javascript
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
- ```javascript
51
+ ```mathscript
50
52
  1+2
51
53
  ```
52
54
  ```math
53
55
  1+2
54
56
  ```
55
57
  * 减法
56
- ```javascript
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
- ```javascript
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
- ```javascript
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
- ```javascript
105
+ ```mathscript
86
106
  分子/分母
87
107
  ```
88
108
  ```math
89
109
  分子/分母
90
110
  ```
91
111
  * 以除号表示除法
92
- ```javascript
112
+ ```mathscript
93
113
  div(被除数,除数)
94
114
  ```
95
115
  ```math
96
116
  div(被除数,除数)
97
117
  ```
98
118
  * 绝对值
99
- ```javascript
119
+ ```mathscript
100
120
  abs(a)
101
121
  ```
102
122
  ```math
103
123
  abs(a)
104
124
  ```
105
125
  * 阶乘: n!
106
- ```javascript
126
+ ```mathscript
107
127
  n!
108
128
  ```
109
129
  ```math
110
130
  n!
111
131
  ```
112
132
  * 幂
113
- ```javascript
133
+ ```mathscript
114
134
  底数 ** 指数
115
135
  ```
116
136
  ```math
117
137
  底数 ** 指数
118
138
  ```
119
139
  * 平方根
120
- ```javascript
140
+ ```mathscript
121
141
  sqrt(底数)
122
142
  ```
123
143
  ```math
124
144
  sqrt(底数)
125
145
  ```
126
146
  * 高次根式
127
- ```javascript
147
+ ```mathscript
128
148
  root(底数,指数)
129
149
  ```
130
150
  ```math
131
151
  root(底数,指数)
132
152
  ```
133
153
  * 函数
134
- ```javascript
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
- ```javascript
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
- ```javascript
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
- ```javascript
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
- ```javascript
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
- ```javascript
213
+ ```mathscript
194
214
  integral(表达式,下界,上界)
195
215
  ```
196
216
  ```math
197
217
  integral(表达式,下界,上界)
198
218
  ```
199
219
  * 级数
200
- ```javascript
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
- ```javascript
229
+ ```mathscript
210
230
  [1,2;3,4]
211
231
  ```
212
232
  ```math
213
233
  [1,2;3,4]
214
234
  ```
215
235
  * 左除
216
- ```javascript
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
- ```javascript
243
+ ```mathscript
224
244
  [1,2;3,4]'
225
245
  ```
226
246
  ```math
227
247
  [1,2;3,4]'
228
248
  ```
229
249
  * 离子
230
- ```javascript
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: "‌Γ",
@@ -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",
@@ -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>:${last.row}:${last.col} ${last.text || last.entry}`,
1206
+ `\r\n - 内层入口: <yellow>${this.mindpath}</yellow>:${queue.row}:${queue.col} ${queue.entry}`,
1207
1207
  );
1208
1208
  while (queue !== origin) {
1209
1209
  queue.error = "代码异常结束";
@@ -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] === " ");