katex 0.15.3 → 0.15.6
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/README.md +5 -5
- package/cli.js +7 -7
- package/contrib/copy-tex/README.md +3 -3
- package/contrib/mathtex-script-type/README.md +5 -5
- package/contrib/mhchem/README.md +1 -1
- package/contrib/mhchem/mhchem.js +1 -1
- package/dist/README.md +5 -5
- package/dist/contrib/mhchem.js +1 -1
- package/dist/contrib/mhchem.min.js +1 -1
- package/dist/contrib/mhchem.mjs +1 -1
- package/dist/katex.css +1 -1
- package/dist/katex.js +216 -3
- package/dist/katex.min.css +1 -1
- package/dist/katex.min.js +1 -1
- package/dist/katex.mjs +212 -3
- package/package.json +1 -1
- package/src/MacroExpander.js +3 -1
- package/src/Parser.js +24 -0
- package/src/defineMacro.js +7 -0
- package/src/macros.js +52 -0
- package/src/unicodeSupOrSub.js +108 -0
- package/contrib/mhchem/mhchem.patch +0 -235
package/dist/katex.mjs
CHANGED
|
@@ -15789,7 +15789,67 @@ defineMacro("\\bra", "\\mathinner{\\langle{#1}|}");
|
|
|
15789
15789
|
defineMacro("\\ket", "\\mathinner{|{#1}\\rangle}");
|
|
15790
15790
|
defineMacro("\\braket", "\\mathinner{\\langle{#1}\\rangle}");
|
|
15791
15791
|
defineMacro("\\Bra", "\\left\\langle#1\\right|");
|
|
15792
|
-
defineMacro("\\Ket", "\\left|#1\\right\\rangle");
|
|
15792
|
+
defineMacro("\\Ket", "\\left|#1\\right\\rangle");
|
|
15793
|
+
|
|
15794
|
+
var braketHelper = one => context => {
|
|
15795
|
+
var left = context.consumeArg().tokens;
|
|
15796
|
+
var middle = context.consumeArg().tokens;
|
|
15797
|
+
var middleDouble = context.consumeArg().tokens;
|
|
15798
|
+
var right = context.consumeArg().tokens;
|
|
15799
|
+
var oldMiddle = context.macros.get("|");
|
|
15800
|
+
var oldMiddleDouble = context.macros.get("\\|");
|
|
15801
|
+
context.macros.beginGroup();
|
|
15802
|
+
|
|
15803
|
+
var midMacro = double => context => {
|
|
15804
|
+
if (one) {
|
|
15805
|
+
// Only modify the first instance of | or \|
|
|
15806
|
+
context.macros.set("|", oldMiddle);
|
|
15807
|
+
|
|
15808
|
+
if (middleDouble.length) {
|
|
15809
|
+
context.macros.set("\\|", oldMiddleDouble);
|
|
15810
|
+
}
|
|
15811
|
+
}
|
|
15812
|
+
|
|
15813
|
+
var doubled = double;
|
|
15814
|
+
|
|
15815
|
+
if (!double && middleDouble.length) {
|
|
15816
|
+
// Mimic \@ifnextchar
|
|
15817
|
+
var nextToken = context.future();
|
|
15818
|
+
|
|
15819
|
+
if (nextToken.text === "|") {
|
|
15820
|
+
context.popToken();
|
|
15821
|
+
doubled = true;
|
|
15822
|
+
}
|
|
15823
|
+
}
|
|
15824
|
+
|
|
15825
|
+
return {
|
|
15826
|
+
tokens: doubled ? middleDouble : middle,
|
|
15827
|
+
numArgs: 0
|
|
15828
|
+
};
|
|
15829
|
+
};
|
|
15830
|
+
|
|
15831
|
+
context.macros.set("|", midMacro(false));
|
|
15832
|
+
|
|
15833
|
+
if (middleDouble.length) {
|
|
15834
|
+
context.macros.set("\\|", midMacro(true));
|
|
15835
|
+
}
|
|
15836
|
+
|
|
15837
|
+
var arg = context.consumeArg().tokens;
|
|
15838
|
+
var expanded = context.expandTokens([...right, ...arg, ...left // reversed
|
|
15839
|
+
]);
|
|
15840
|
+
context.macros.endGroup();
|
|
15841
|
+
return {
|
|
15842
|
+
tokens: expanded.reverse(),
|
|
15843
|
+
numArgs: 0
|
|
15844
|
+
};
|
|
15845
|
+
};
|
|
15846
|
+
|
|
15847
|
+
defineMacro("\\bra@ket", braketHelper(false));
|
|
15848
|
+
defineMacro("\\bra@set", braketHelper(true));
|
|
15849
|
+
defineMacro("\\Braket", "\\bra@ket{\\left\\langle}" + "{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");
|
|
15850
|
+
defineMacro("\\Set", "\\bra@set{\\left\\{\\:}" + "{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");
|
|
15851
|
+
defineMacro("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"); // has no support for special || or \|
|
|
15852
|
+
//////////////////////////////////////////////////////////////////////
|
|
15793
15853
|
// actuarialangle.dtx
|
|
15794
15854
|
|
|
15795
15855
|
defineMacro("\\angln", "{\\angl n}"); // Custom Khan Academy colors, should be moved to an optional package
|
|
@@ -16245,7 +16305,9 @@ class MacroExpander {
|
|
|
16245
16305
|
return this.macros.has(name) ? this.expandTokens([new Token(name)]) : undefined;
|
|
16246
16306
|
}
|
|
16247
16307
|
/**
|
|
16248
|
-
* Fully expand the given token stream and return the resulting list of
|
|
16308
|
+
* Fully expand the given token stream and return the resulting list of
|
|
16309
|
+
* tokens. Note that the input tokens are in reverse order, but the
|
|
16310
|
+
* output tokens are in forward order.
|
|
16249
16311
|
*/
|
|
16250
16312
|
|
|
16251
16313
|
|
|
@@ -16366,6 +16428,113 @@ class MacroExpander {
|
|
|
16366
16428
|
|
|
16367
16429
|
}
|
|
16368
16430
|
|
|
16431
|
+
// Helpers for Parser.js handling of Unicode (sub|super)script characters.
|
|
16432
|
+
var unicodeSubRegEx = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/;
|
|
16433
|
+
var uSubsAndSups = Object.freeze({
|
|
16434
|
+
'₊': '+',
|
|
16435
|
+
'₋': '-',
|
|
16436
|
+
'₌': '=',
|
|
16437
|
+
'₍': '(',
|
|
16438
|
+
'₎': ')',
|
|
16439
|
+
'₀': '0',
|
|
16440
|
+
'₁': '1',
|
|
16441
|
+
'₂': '2',
|
|
16442
|
+
'₃': '3',
|
|
16443
|
+
'₄': '4',
|
|
16444
|
+
'₅': '5',
|
|
16445
|
+
'₆': '6',
|
|
16446
|
+
'₇': '7',
|
|
16447
|
+
'₈': '8',
|
|
16448
|
+
'₉': '9',
|
|
16449
|
+
'\u2090': 'a',
|
|
16450
|
+
'\u2091': 'e',
|
|
16451
|
+
'\u2095': 'h',
|
|
16452
|
+
'\u1D62': 'i',
|
|
16453
|
+
'\u2C7C': 'j',
|
|
16454
|
+
'\u2096': 'k',
|
|
16455
|
+
'\u2097': 'l',
|
|
16456
|
+
'\u2098': 'm',
|
|
16457
|
+
'\u2099': 'n',
|
|
16458
|
+
'\u2092': 'o',
|
|
16459
|
+
'\u209A': 'p',
|
|
16460
|
+
'\u1D63': 'r',
|
|
16461
|
+
'\u209B': 's',
|
|
16462
|
+
'\u209C': 't',
|
|
16463
|
+
'\u1D64': 'u',
|
|
16464
|
+
'\u1D65': 'v',
|
|
16465
|
+
'\u2093': 'x',
|
|
16466
|
+
'\u1D66': 'β',
|
|
16467
|
+
'\u1D67': 'γ',
|
|
16468
|
+
'\u1D68': 'ρ',
|
|
16469
|
+
'\u1D69': '\u03d5',
|
|
16470
|
+
'\u1D6A': 'χ',
|
|
16471
|
+
'⁺': '+',
|
|
16472
|
+
'⁻': '-',
|
|
16473
|
+
'⁼': '=',
|
|
16474
|
+
'⁽': '(',
|
|
16475
|
+
'⁾': ')',
|
|
16476
|
+
'⁰': '0',
|
|
16477
|
+
'¹': '1',
|
|
16478
|
+
'²': '2',
|
|
16479
|
+
'³': '3',
|
|
16480
|
+
'⁴': '4',
|
|
16481
|
+
'⁵': '5',
|
|
16482
|
+
'⁶': '6',
|
|
16483
|
+
'⁷': '7',
|
|
16484
|
+
'⁸': '8',
|
|
16485
|
+
'⁹': '9',
|
|
16486
|
+
'\u1D2C': 'A',
|
|
16487
|
+
'\u1D2E': 'B',
|
|
16488
|
+
'\u1D30': 'D',
|
|
16489
|
+
'\u1D31': 'E',
|
|
16490
|
+
'\u1D33': 'G',
|
|
16491
|
+
'\u1D34': 'H',
|
|
16492
|
+
'\u1D35': 'I',
|
|
16493
|
+
'\u1D36': 'J',
|
|
16494
|
+
'\u1D37': 'K',
|
|
16495
|
+
'\u1D38': 'L',
|
|
16496
|
+
'\u1D39': 'M',
|
|
16497
|
+
'\u1D3A': 'N',
|
|
16498
|
+
'\u1D3C': 'O',
|
|
16499
|
+
'\u1D3E': 'P',
|
|
16500
|
+
'\u1D3F': 'R',
|
|
16501
|
+
'\u1D40': 'T',
|
|
16502
|
+
'\u1D41': 'U',
|
|
16503
|
+
'\u2C7D': 'V',
|
|
16504
|
+
'\u1D42': 'W',
|
|
16505
|
+
'\u1D43': 'a',
|
|
16506
|
+
'\u1D47': 'b',
|
|
16507
|
+
'\u1D9C': 'c',
|
|
16508
|
+
'\u1D48': 'd',
|
|
16509
|
+
'\u1D49': 'e',
|
|
16510
|
+
'\u1DA0': 'f',
|
|
16511
|
+
'\u1D4D': 'g',
|
|
16512
|
+
'\u02B0': 'h',
|
|
16513
|
+
'\u2071': 'i',
|
|
16514
|
+
'\u02B2': 'j',
|
|
16515
|
+
'\u1D4F': 'k',
|
|
16516
|
+
'\u02E1': 'l',
|
|
16517
|
+
'\u1D50': 'm',
|
|
16518
|
+
'\u207F': 'n',
|
|
16519
|
+
'\u1D52': 'o',
|
|
16520
|
+
'\u1D56': 'p',
|
|
16521
|
+
'\u02B3': 'r',
|
|
16522
|
+
'\u02E2': 's',
|
|
16523
|
+
'\u1D57': 't',
|
|
16524
|
+
'\u1D58': 'u',
|
|
16525
|
+
'\u1D5B': 'v',
|
|
16526
|
+
'\u02B7': 'w',
|
|
16527
|
+
'\u02E3': 'x',
|
|
16528
|
+
'\u02B8': 'y',
|
|
16529
|
+
'\u1DBB': 'z',
|
|
16530
|
+
'\u1D5D': 'β',
|
|
16531
|
+
'\u1D5E': 'γ',
|
|
16532
|
+
'\u1D5F': 'δ',
|
|
16533
|
+
'\u1D60': '\u03d5',
|
|
16534
|
+
'\u1D61': 'χ',
|
|
16535
|
+
'\u1DBF': 'θ'
|
|
16536
|
+
});
|
|
16537
|
+
|
|
16369
16538
|
/* eslint no-constant-condition:0 */
|
|
16370
16539
|
|
|
16371
16540
|
var unicodeAccents = {
|
|
@@ -17164,6 +17333,46 @@ class Parser {
|
|
|
17164
17333
|
mode: this.mode,
|
|
17165
17334
|
body: primes
|
|
17166
17335
|
};
|
|
17336
|
+
} else if (uSubsAndSups[lex.text]) {
|
|
17337
|
+
// A Unicode subscript or superscript character.
|
|
17338
|
+
// We treat these similarly to the unicode-math package.
|
|
17339
|
+
// So we render a string of Unicode (sub|super)scripts the
|
|
17340
|
+
// same as a (sub|super)script of regular characters.
|
|
17341
|
+
var str = uSubsAndSups[lex.text];
|
|
17342
|
+
var isSub = unicodeSubRegEx.test(lex.text);
|
|
17343
|
+
this.consume(); // Continue fetching tokens to fill out the string.
|
|
17344
|
+
|
|
17345
|
+
while (true) {
|
|
17346
|
+
var token = this.fetch().text;
|
|
17347
|
+
|
|
17348
|
+
if (!uSubsAndSups[token]) {
|
|
17349
|
+
break;
|
|
17350
|
+
}
|
|
17351
|
+
|
|
17352
|
+
if (unicodeSubRegEx.test(token) !== isSub) {
|
|
17353
|
+
break;
|
|
17354
|
+
}
|
|
17355
|
+
|
|
17356
|
+
this.consume();
|
|
17357
|
+
str += uSubsAndSups[token];
|
|
17358
|
+
} // Now create a (sub|super)script.
|
|
17359
|
+
|
|
17360
|
+
|
|
17361
|
+
var body = new Parser(str, this.settings).parse();
|
|
17362
|
+
|
|
17363
|
+
if (isSub) {
|
|
17364
|
+
subscript = {
|
|
17365
|
+
type: "ordgroup",
|
|
17366
|
+
mode: "math",
|
|
17367
|
+
body
|
|
17368
|
+
};
|
|
17369
|
+
} else {
|
|
17370
|
+
superscript = {
|
|
17371
|
+
type: "ordgroup",
|
|
17372
|
+
mode: "math",
|
|
17373
|
+
body
|
|
17374
|
+
};
|
|
17375
|
+
}
|
|
17167
17376
|
} else {
|
|
17168
17377
|
// If it wasn't ^, _, or ', stop parsing super/subscripts
|
|
17169
17378
|
break;
|
|
@@ -17959,7 +18168,7 @@ var katex = {
|
|
|
17959
18168
|
/**
|
|
17960
18169
|
* Current KaTeX version
|
|
17961
18170
|
*/
|
|
17962
|
-
version: "0.15.
|
|
18171
|
+
version: "0.15.6",
|
|
17963
18172
|
|
|
17964
18173
|
/**
|
|
17965
18174
|
* Renders the given LaTeX into an HTML+MathML combination, and adds
|
package/package.json
CHANGED
package/src/MacroExpander.js
CHANGED
|
@@ -356,7 +356,9 @@ export default class MacroExpander implements MacroContextInterface {
|
|
|
356
356
|
}
|
|
357
357
|
|
|
358
358
|
/**
|
|
359
|
-
* Fully expand the given token stream and return the resulting list of
|
|
359
|
+
* Fully expand the given token stream and return the resulting list of
|
|
360
|
+
* tokens. Note that the input tokens are in reverse order, but the
|
|
361
|
+
* output tokens are in forward order.
|
|
360
362
|
*/
|
|
361
363
|
expandTokens(tokens: Token[]): Token[] {
|
|
362
364
|
const output = [];
|
package/src/Parser.js
CHANGED
|
@@ -9,6 +9,7 @@ import ParseError from "./ParseError";
|
|
|
9
9
|
import {combiningDiacriticalMarksEndRegex} from "./Lexer";
|
|
10
10
|
import Settings from "./Settings";
|
|
11
11
|
import SourceLocation from "./SourceLocation";
|
|
12
|
+
import {uSubsAndSups, unicodeSubRegEx} from "./unicodeSupOrSub";
|
|
12
13
|
import {Token} from "./Token";
|
|
13
14
|
|
|
14
15
|
// Pre-evaluate both modules as unicodeSymbols require String.normalize()
|
|
@@ -399,6 +400,29 @@ export default class Parser {
|
|
|
399
400
|
}
|
|
400
401
|
// Put everything into an ordgroup as the superscript
|
|
401
402
|
superscript = {type: "ordgroup", mode: this.mode, body: primes};
|
|
403
|
+
} else if (uSubsAndSups[lex.text]) {
|
|
404
|
+
// A Unicode subscript or superscript character.
|
|
405
|
+
// We treat these similarly to the unicode-math package.
|
|
406
|
+
// So we render a string of Unicode (sub|super)scripts the
|
|
407
|
+
// same as a (sub|super)script of regular characters.
|
|
408
|
+
let str = uSubsAndSups[lex.text];
|
|
409
|
+
const isSub = unicodeSubRegEx.test(lex.text);
|
|
410
|
+
this.consume();
|
|
411
|
+
// Continue fetching tokens to fill out the string.
|
|
412
|
+
while (true) {
|
|
413
|
+
const token = this.fetch().text;
|
|
414
|
+
if (!(uSubsAndSups[token])) { break; }
|
|
415
|
+
if (unicodeSubRegEx.test(token) !== isSub) { break; }
|
|
416
|
+
this.consume();
|
|
417
|
+
str += uSubsAndSups[token];
|
|
418
|
+
}
|
|
419
|
+
// Now create a (sub|super)script.
|
|
420
|
+
const body = (new Parser(str, this.settings)).parse();
|
|
421
|
+
if (isSub) {
|
|
422
|
+
subscript = {type: "ordgroup", mode: "math", body};
|
|
423
|
+
} else {
|
|
424
|
+
superscript = {type: "ordgroup", mode: "math", body};
|
|
425
|
+
}
|
|
402
426
|
} else {
|
|
403
427
|
// If it wasn't ^, _, or ', stop parsing super/subscripts
|
|
404
428
|
break;
|
package/src/defineMacro.js
CHANGED
|
@@ -61,6 +61,13 @@ export interface MacroContextInterface {
|
|
|
61
61
|
*/
|
|
62
62
|
expandMacroAsText(name: string): string | void;
|
|
63
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Fully expand the given token stream and return the resulting list of
|
|
66
|
+
* tokens. Note that the input tokens are in reverse order, but the
|
|
67
|
+
* output tokens are in forward order.
|
|
68
|
+
*/
|
|
69
|
+
expandTokens(tokens: Token[]): Token[];
|
|
70
|
+
|
|
64
71
|
/**
|
|
65
72
|
* Consume an argument from the token stream, and return the resulting array
|
|
66
73
|
* of tokens and start/end token.
|
package/src/macros.js
CHANGED
|
@@ -912,6 +912,58 @@ defineMacro("\\ket", "\\mathinner{|{#1}\\rangle}");
|
|
|
912
912
|
defineMacro("\\braket", "\\mathinner{\\langle{#1}\\rangle}");
|
|
913
913
|
defineMacro("\\Bra", "\\left\\langle#1\\right|");
|
|
914
914
|
defineMacro("\\Ket", "\\left|#1\\right\\rangle");
|
|
915
|
+
const braketHelper = (one) => (context) => {
|
|
916
|
+
const left = context.consumeArg().tokens;
|
|
917
|
+
const middle = context.consumeArg().tokens;
|
|
918
|
+
const middleDouble = context.consumeArg().tokens;
|
|
919
|
+
const right = context.consumeArg().tokens;
|
|
920
|
+
const oldMiddle = context.macros.get("|");
|
|
921
|
+
const oldMiddleDouble = context.macros.get("\\|");
|
|
922
|
+
context.macros.beginGroup();
|
|
923
|
+
const midMacro = (double) => (context) => {
|
|
924
|
+
if (one) {
|
|
925
|
+
// Only modify the first instance of | or \|
|
|
926
|
+
context.macros.set("|", oldMiddle);
|
|
927
|
+
if (middleDouble.length) {
|
|
928
|
+
context.macros.set("\\|", oldMiddleDouble);
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
let doubled = double;
|
|
932
|
+
if (!double && middleDouble.length) {
|
|
933
|
+
// Mimic \@ifnextchar
|
|
934
|
+
const nextToken = context.future();
|
|
935
|
+
if (nextToken.text === "|") {
|
|
936
|
+
context.popToken();
|
|
937
|
+
doubled = true;
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
return {
|
|
941
|
+
tokens: doubled ? middleDouble : middle,
|
|
942
|
+
numArgs: 0,
|
|
943
|
+
};
|
|
944
|
+
};
|
|
945
|
+
context.macros.set("|", midMacro(false));
|
|
946
|
+
if (middleDouble.length) {
|
|
947
|
+
context.macros.set("\\|", midMacro(true));
|
|
948
|
+
}
|
|
949
|
+
const arg = context.consumeArg().tokens;
|
|
950
|
+
const expanded = context.expandTokens([
|
|
951
|
+
...right, ...arg, ...left, // reversed
|
|
952
|
+
]);
|
|
953
|
+
context.macros.endGroup();
|
|
954
|
+
return {
|
|
955
|
+
tokens: expanded.reverse(),
|
|
956
|
+
numArgs: 0,
|
|
957
|
+
};
|
|
958
|
+
};
|
|
959
|
+
defineMacro("\\bra@ket", braketHelper(false));
|
|
960
|
+
defineMacro("\\bra@set", braketHelper(true));
|
|
961
|
+
defineMacro("\\Braket", "\\bra@ket{\\left\\langle}" +
|
|
962
|
+
"{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");
|
|
963
|
+
defineMacro("\\Set", "\\bra@set{\\left\\{\\:}" +
|
|
964
|
+
"{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");
|
|
965
|
+
defineMacro("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");
|
|
966
|
+
// has no support for special || or \|
|
|
915
967
|
|
|
916
968
|
//////////////////////////////////////////////////////////////////////
|
|
917
969
|
// actuarialangle.dtx
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// Helpers for Parser.js handling of Unicode (sub|super)script characters.
|
|
2
|
+
|
|
3
|
+
export const unicodeSubRegEx = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/;
|
|
4
|
+
|
|
5
|
+
export const uSubsAndSups = Object.freeze({
|
|
6
|
+
'₊': '+',
|
|
7
|
+
'₋': '-',
|
|
8
|
+
'₌': '=',
|
|
9
|
+
'₍': '(',
|
|
10
|
+
'₎': ')',
|
|
11
|
+
'₀': '0',
|
|
12
|
+
'₁': '1',
|
|
13
|
+
'₂': '2',
|
|
14
|
+
'₃': '3',
|
|
15
|
+
'₄': '4',
|
|
16
|
+
'₅': '5',
|
|
17
|
+
'₆': '6',
|
|
18
|
+
'₇': '7',
|
|
19
|
+
'₈': '8',
|
|
20
|
+
'₉': '9',
|
|
21
|
+
'\u2090': 'a',
|
|
22
|
+
'\u2091': 'e',
|
|
23
|
+
'\u2095': 'h',
|
|
24
|
+
'\u1D62': 'i',
|
|
25
|
+
'\u2C7C': 'j',
|
|
26
|
+
'\u2096': 'k',
|
|
27
|
+
'\u2097': 'l',
|
|
28
|
+
'\u2098': 'm',
|
|
29
|
+
'\u2099': 'n',
|
|
30
|
+
'\u2092': 'o',
|
|
31
|
+
'\u209A': 'p',
|
|
32
|
+
'\u1D63': 'r',
|
|
33
|
+
'\u209B': 's',
|
|
34
|
+
'\u209C': 't',
|
|
35
|
+
'\u1D64': 'u',
|
|
36
|
+
'\u1D65': 'v',
|
|
37
|
+
'\u2093': 'x',
|
|
38
|
+
'\u1D66': 'β',
|
|
39
|
+
'\u1D67': 'γ',
|
|
40
|
+
'\u1D68': 'ρ',
|
|
41
|
+
'\u1D69': '\u03d5',
|
|
42
|
+
'\u1D6A': 'χ',
|
|
43
|
+
'⁺': '+',
|
|
44
|
+
'⁻': '-',
|
|
45
|
+
'⁼': '=',
|
|
46
|
+
'⁽': '(',
|
|
47
|
+
'⁾': ')',
|
|
48
|
+
'⁰': '0',
|
|
49
|
+
'¹': '1',
|
|
50
|
+
'²': '2',
|
|
51
|
+
'³': '3',
|
|
52
|
+
'⁴': '4',
|
|
53
|
+
'⁵': '5',
|
|
54
|
+
'⁶': '6',
|
|
55
|
+
'⁷': '7',
|
|
56
|
+
'⁸': '8',
|
|
57
|
+
'⁹': '9',
|
|
58
|
+
'\u1D2C': 'A',
|
|
59
|
+
'\u1D2E': 'B',
|
|
60
|
+
'\u1D30': 'D',
|
|
61
|
+
'\u1D31': 'E',
|
|
62
|
+
'\u1D33': 'G',
|
|
63
|
+
'\u1D34': 'H',
|
|
64
|
+
'\u1D35': 'I',
|
|
65
|
+
'\u1D36': 'J',
|
|
66
|
+
'\u1D37': 'K',
|
|
67
|
+
'\u1D38': 'L',
|
|
68
|
+
'\u1D39': 'M',
|
|
69
|
+
'\u1D3A': 'N',
|
|
70
|
+
'\u1D3C': 'O',
|
|
71
|
+
'\u1D3E': 'P',
|
|
72
|
+
'\u1D3F': 'R',
|
|
73
|
+
'\u1D40': 'T',
|
|
74
|
+
'\u1D41': 'U',
|
|
75
|
+
'\u2C7D': 'V',
|
|
76
|
+
'\u1D42': 'W',
|
|
77
|
+
'\u1D43': 'a',
|
|
78
|
+
'\u1D47': 'b',
|
|
79
|
+
'\u1D9C': 'c',
|
|
80
|
+
'\u1D48': 'd',
|
|
81
|
+
'\u1D49': 'e',
|
|
82
|
+
'\u1DA0': 'f',
|
|
83
|
+
'\u1D4D': 'g',
|
|
84
|
+
'\u02B0': 'h',
|
|
85
|
+
'\u2071': 'i',
|
|
86
|
+
'\u02B2': 'j',
|
|
87
|
+
'\u1D4F': 'k',
|
|
88
|
+
'\u02E1': 'l',
|
|
89
|
+
'\u1D50': 'm',
|
|
90
|
+
'\u207F': 'n',
|
|
91
|
+
'\u1D52': 'o',
|
|
92
|
+
'\u1D56': 'p',
|
|
93
|
+
'\u02B3': 'r',
|
|
94
|
+
'\u02E2': 's',
|
|
95
|
+
'\u1D57': 't',
|
|
96
|
+
'\u1D58': 'u',
|
|
97
|
+
'\u1D5B': 'v',
|
|
98
|
+
'\u02B7': 'w',
|
|
99
|
+
'\u02E3': 'x',
|
|
100
|
+
'\u02B8': 'y',
|
|
101
|
+
'\u1DBB': 'z',
|
|
102
|
+
'\u1D5D': 'β',
|
|
103
|
+
'\u1D5E': 'γ',
|
|
104
|
+
'\u1D5F': 'δ',
|
|
105
|
+
'\u1D60': '\u03d5',
|
|
106
|
+
'\u1D61': 'χ',
|
|
107
|
+
'\u1DBF': 'θ',
|
|
108
|
+
});
|