tex2typst-rs 0.4.1

Converts LaTeX math to Typst math
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
use phf::phf_map;

pub static SYMBOL_MAP: phf::Map<&'static str, &'static str> = phf_map! {
        "nonumber" => "",
        "vec" => "arrow",
        "overrightarrow" => "arrow",
        "dot" => "dot",
        "ddot" => "dot.double",
        "doteq" => "dot(eq)",
        "dots" => "dots.h",
        "widehat" => "hat", // Ideally, the result of \widehat should be longer than \hat. But it is not implemented now.
        "widetilde" => "tilde", // Ideally, the result of \widetilde should be longer than \tilde. But it is not implemented now.
        "quad" => "quad",
        "qquad" => "wide",
        "overbrace" => "overbrace", // same
        "underbrace" => "underbrace", // same
        "overline" => "overline", // same
        "underline" => "underline", // same
        "bar" => "macron",
        "dbinom" => "binom",
        "tbinom" => "binom",
        "dfrac" => "frac",
        "tfrac" => "frac",

        "operatorname" => "op",

        "boldsymbol" => "bold",
        "mathbb" => "bb",
        "mathbf" => "bold",
        "mathcal" => "cal",
        "mathit" => "italic",
        "mathfrak" => "frak",
        "mathrm" => "upright",
        "mathsf" => "sans",
        "mathtt" => "mono",

        "rm" => "upright",

        "pmb" => "bold",

        /* wave */
        // tex: \sim \approx \cong \simeq \asymp \equiv \propto
        // typst: tilde.op approx tilde.equiv tilde.eq ≍ equiv prop
        "asymp" => "", // just use the Unicode character :-)

        /* arrows */
        "gets" => "arrow.l",
        "leftharpoonup" => "harpoon.lt",
        "iff" => "arrow.l.r.double.long",
        "implies" => "arrow.r.double.long",

        "Delta" => "Delta",
        "Gamma" => "Gamma",
        "Lambda" => "Lambda",
        "Omega" => "Omega",
        "P" => "pilcrow",
        "Phi" => "Phi",
        "Pi" => "Pi",
        "Psi" => "Psi",
        "S" => "section",
        "Sigma" => "Sigma",
        "Theta" => "Theta",
        "aleph" => "alef",
        "alpha" => "alpha",
        "amalg" => "product.co",
        "approx" => "approx",
        "beta" => "beta",
        "bigcirc" => "circle.big",
        "bowtie" => "join",
        "bullet" => "bullet",
        "cdots" => "dots.c",
        "chi" => "chi",
        "circ" => "circle.small", // 'circle.small' or 'compose'
        "colon" => "colon",
        "copyright" => "copyright",
        "delta" => "delta",
        "diamond" => "diamond",
        "emptyset" => "nothing",
        "epsilon" => "epsilon.alt",
        "equiv" => "equiv",
        "eta" => "eta",
        "frown" => "paren.t",
        "gamma" => "gamma",
        "ge" => "gt.eq",
        "hbar" => "planck.reduce",
        "intercal" => "top", // 'top' or 'tack.b'
        "iota" => "iota",
        "kappa" => "kappa",
        "lambda" => "lambda",
        "land" => "and",
        "ldots" => "dots.h",
        "le" => "lt.eq",
        "leadsto" => "arrow.squiggly",
        "lhd" => "triangle.l",
        "lor" => "or",
        "mu" => "mu",
        "neq" => "eq.not",
        "nu" => "nu",
        "ntriangleleft" => "lt.tri.not",
        "ntriangleright" => "gt.tri.not",
        "omega" => "omega",
        "omicron" => "omicron",
        "phi" => "phi.alt",
        "pi" => "pi",
        "pounds" => "pound",
        "psi" => "psi",
        "rhd" => "triangle",
        "rho" => "rho",
        "sigma" => "sigma",
        "simeq" => "tilde.eq",
        "slash" => "slash",
        "smallsetminus" => "without",
        "smile" => "paren.b",
        "tau" => "tau",
        "theta" => "theta",
        "to" => "arrow.r",
        "top" => "top",
        "triangle" => "triangle.t",
        "upsilon" => "upsilon",
        "varepsilon" => "epsilon",
        "varphi" => "phi",
        "varpi" => "pi.alt",
        "varrho" => "rho.alt",
        "varsigma" => "sigma.alt",
        "vartheta" => "theta.alt",
        "vee" => "or",
        "wedge" => "and",
        "xi" => "xi",
        "yen" => "yen",
        "zeta" => "zeta",

        "mathscr" => "scr",
        "LaTeX" => "#LaTeX",
        "TeX" => "#TeX",

        "lparen" => "paren.l",
        "lParen" => "paren.l.double",
        "rparen" => "paren.r",
        "rParen" => "paren.r.double",
        "overparen" => "paren.t",
        "underparen" => "paren.b",
        "lbrace" => "brace.l",
        "lBrace" => "brace.l.double",
        "rbrace" => "brace.r",
        "rBrace" => "brace.r.double",
        "lbrack" => "bracket.l",
        "lBrack" => "bracket.l.double",
        "rbrack" => "bracket.r",
        "rBrack" => "bracket.r.double",
        "overbracket" => "bracket.t",
        "underbracket" => "bracket.b",
        "lbrbrak" => "shell.l",
        "Lbrbrak" => "shell.l.double",
        "rbrbrak" => "shell.r",
        "Rbrbrak" => "shell.r.double",
        "obrbrak" => "shell.t",
        "ubrbrak" => "shell.b",
        "vert" => "bar.v",
        "Vert" => "bar.v.double",
        "Vvert" => "bar.v.triple",
        "circledvert" => "bar.v.circle",
        "horizbar" => "bar.h",
        "lvzigzag" => "fence.l",
        "Lvzigzag" => "fence.l.double",
        "rvzigzag" => "fence.r",
        "Rvzigzag" => "fence.r.double",
        "fourvdots" => "fence.dotted",
        "angle" => "angle",
        "langle" => "angle.l",
        "lcurvyangle" => "angle.l.curly",
        "langledot" => "angle.l.dot",
        "rangle" => "angle.r",
        "rcurvyangle" => "angle.r.curly",
        "rangledot" => "angle.r.dot",
        "angdnr" => "angle.acute",
        "measuredangle" => "angle.arc",
        "measuredangleleft" => "angle.arc.rev",
        "wideangledown" => "angle.oblique",
        "revangle" => "angle.rev",
        "rightangle" => "angle.right",
        "measuredrightangle" => "angle.right.arc",
        "rightanglemdot" => "angle.right.dot",
        "rightanglesqr" => "angle.right.sq",
        "angles" => "angle.s",
        "threedangle" => "angle.spatial",
        "sphericalangle" => "angle.spheric",
        "gtlpar" => "angle.spheric.rev",
        "sphericalangleup" => "angle.spheric.top",
        "lceil" => "ceil.l",
        "rceil" => "ceil.r",
        "lfloor" => "floor.l",
        "rfloor" => "floor.r",
        "mathampersand" => "amp",
        "upand" => "amp.inv",
        "ast" => "ast.op",
        "circledast" => "ast.circle",
        "boxast" => "ast.square",
        "mathatsign" => "at",
        "backslash" => "backslash",
        "obslash" => "backslash.circle",
        "rsolbar" => "backslash.not",
        "mathcolon" => "colon",
        "Colon" => "colon.double",
        "coloneq" => "colon.eq",
        "Coloneq" => "colon.double.eq",
        "mathcomma" => "comma",
        "dagger" => "dagger",
        "ddagger" => "dagger.double",
        "dashcolon" => "dash.colon",
        "circleddash" => "dash.circle",
        "hzigzag" => "dash.wave.double",
        "cdot" => "dot.op",
        "mathperiod" => "dot.basic",
        "cdotp" => "dot.c",
        "odot" => "dot.circle",
        "bigodot" => "dot.circle.big",
        "boxdot" => "dot.square",
        "dddot" => "dot.triple",
        "ddddot" => "dot.quad",
        "mathexclam" => "excl",
        "Exclam" => "excl.double",
        "mathquestion" => "quest",
        "Question" => "quest.double",
        "mathoctothorpe" => "hash",
        // "mathhyphen" => "hyph",
        "mathpercent" => "percent",
        "mathparagraph" => "pilcrow",
        "mathsection" => "section",
        "mathsemicolon" => "semi",
        "mathslash" => "slash",
        "sslash" => "slash.double",
        "trslash" => "slash.triple",
        "xsol" => "slash.big",
        "unicodecdots" => "dots.h.c",
        "unicodeellipsis" => "dots.h",
        "vdots" => "dots.v",
        "ddots" => "dots.down",
        "adots" => "dots.up",
        "sim" => "tilde.op",
        "dotsim" => "tilde.dot",
        "sime" => "tilde.eq",
        "nsimeq" => "tilde.eq.not",
        "backsimeq" => "tilde.eq.rev",
        "cong" => "tilde.equiv",
        "ncong" => "tilde.equiv.not",
        "simneqq" => "tilde.nequiv",
        "nsim" => "tilde.not",
        "backsim" => "tilde.rev",
        "backcong" => "tilde.rev.equiv",
        "approxident" => "tilde.triple",
        "caretinsert" => "caret",
        "prime" => "prime",
        "backprime" => "prime.rev",
        "dprime" => "prime.double",
        "backdprime" => "prime.double.rev",
        "trprime" => "prime.triple",
        "backtrprime" => "prime.triple.rev",
        "qprime" => "prime.quad",
        "mathplus" => "plus",
        "oplus" => "plus.circle",
        "rightarrowonoplus" => "plus.circle.arrow",
        "bigoplus" => "plus.circle.big",
        "dotplus" => "plus.dot",
        "doubleplus" => "plus.double",
        "pm" => "plus.minus",
        "boxplus" => "plus.square",
        "triangleplus" => "plus.triangle",
        "tripleplus" => "plus.triple",
        "minus" => "minus",
        "ominus" => "minus.circle",
        "dotminus" => "minus.dot",
        "mp" => "minus.plus",
        "boxminus" => "minus.square",
        "eqsim" => "minus.tilde",
        "triangleminus" => "minus.triangle",
        "div" => "div",
        "odiv" => "div.circle",
        "times" => "times",
        "bigtimes" => "times.big",
        "otimes" => "times.circle",
        "bigotimes" => "times.circle.big",
        "divideontimes" => "times.div",
        "leftthreetimes" => "times.three.l",
        "rightthreetimes" => "times.three.r",
        "ltimes" => "times.l",
        "rtimes" => "times.r",
        "boxtimes" => "times.square",
        "triangletimes" => "times.triangle",
        "mathratio" => "ratio",
        "equal" => "eq",
        "stareq" => "eq.star",
        "circledequal" => "eq.circle",
        "eqcolon" => "eq.colon",
        // \usepackage{mathtools} defines \eqdef
        // https://tex.stackexchange.com/questions/28836/typesetting-the-define-equals-symbol
        "eqdef" => "eq.def",
        "triangleq" => "eq.delta",
        "veeeq" => "eq.equi",
        "wedgeq" => "eq.est",
        "eqgtr" => "eq.gt",
        "eqless" => "eq.lt",
        "measeq" => "eq.m",
        "ne" => "eq.not",
        "curlyeqprec" => "eq.prec",
        "questeq" => "eq.quest",
        "curlyeqsucc" => "eq.succ",
        "Equiv" => "eq.quad",
        "greater" => "gt",
        "ogreaterthan" => "gt.circle",
        "gtrdot" => "gt.dot",
        "gtrapprox" => "gt.approx",
        "gg" => "gt.double",
        "geq" => "gt.eq",
        "geqslant" => "gt.eq.slant",
        "gtreqless" => "gt.eq.lt",
        "ngeq" => "gt.eq.not",
        "geqq" => "gt.equiv",
        "gtrless" => "gt.lt",
        "ngtrless" => "gt.lt.not",
        "gneq" => "gt.neq",
        "gnapprox" => "gt.napprox",
        "gneqq" => "gt.nequiv",
        "ngtr" => "gt.not",
        "gnsim" => "gt.ntilde",
        "gtrsim" => "gt.tilde",
        "ngtrsim" => "gt.tilde.not",
        "vartriangleright" => "gt.tri",
        "trianglerighteq" => "gt.tri.eq",
        "ntrianglerighteq" => "gt.tri.eq.not",
        "nvartriangleright" => "gt.tri.not",
        "ggg" => "gt.triple",
        "gggnest" => "gt.triple.nested",
        "less" => "lt",
        "olessthan" => "lt.circle",
        "lessdot" => "lt.dot",
        "lessapprox" => "lt.approx",
        "ll" => "lt.double",
        "leq" => "lt.eq",
        "leqslant" => "lt.eq.slant",
        "lesseqgtr" => "lt.eq.gt",
        "nleq" => "lt.eq.not",
        "leqq" => "lt.equiv",
        "lessgtr" => "lt.gt",
        "nlessgtr" => "lt.gt.not",
        "lneq" => "lt.neq",
        "lnapprox" => "lt.napprox",
        "lneqq" => "lt.nequiv",
        "nless" => "lt.not",
        "lnsim" => "lt.ntilde",
        "lesssim" => "lt.tilde",
        "nlesssim" => "lt.tilde.not",
        "vartriangleleft" => "lt.tri",
        "trianglelefteq" => "lt.tri.eq",
        "ntrianglelefteq" => "lt.tri.eq.not",
        "nvartriangleleft" => "lt.tri.not",
        "lll" => "lt.triple",
        "lllnest" => "lt.triple.nested",
        "approxeq" => "approx.eq",
        "napprox" => "approx.not",
        "prec" => "prec",
        "precapprox" => "prec.approx",
        "preccurlyeq" => "prec.curly.eq",
        "npreccurlyeq" => "prec.curly.eq.not",
        "Prec" => "prec.double",
        "preceq" => "prec.eq",
        "preceqq" => "prec.equiv",
        "precnapprox" => "prec.napprox",
        "precneq" => "prec.neq",
        "precneqq" => "prec.nequiv",
        "nprec" => "prec.not",
        "precnsim" => "prec.ntilde",
        "precsim" => "prec.tilde",
        "succ" => "succ",
        "succapprox" => "succ.approx",
        "succcurlyeq" => "succ.curly.eq",
        "nsucccurlyeq" => "succ.curly.eq.not",
        "Succ" => "succ.double",
        "succeq" => "succ.eq",
        "succeqq" => "succ.equiv",
        "succnapprox" => "succ.napprox",
        "succneq" => "succ.neq",
        "succneqq" => "succ.nequiv",
        "nsucc" => "succ.not",
        "succnsim" => "succ.ntilde",
        "succsim" => "succ.tilde",
        "nequiv" => "equiv.not",
        "propto" => "prop",
        "origof" => "original",
        "imageof" => "image",
        "varnothing" => "emptyset",
        "emptysetoarr" => "emptyset.arrow.r",
        "emptysetoarrl" => "emptyset.arrow.l",
        "emptysetobar" => "emptyset.bar",
        "emptysetocirc" => "emptyset.circle",
        "revemptyset" => "emptyset.rev",
        "setminus" => "without",
        "complement" => "complement",
        "in" => "in",
        "notin" => "in.not",
        "ni" => "in.rev",
        "nni" => "in.rev.not",
        "smallni" => "in.rev.small",
        "smallin" => "in.small",
        "subset" => "subset",
        "subsetdot" => "subset.dot",
        "Subset" => "subset.double",
        "subseteq" => "subset.eq",
        "nsubseteq" => "subset.eq.not",
        "sqsubseteq" => "subset.eq.sq",
        "nsqsubseteq" => "subset.eq.sq.not",
        "subsetneq" => "subset.neq",
        "nsubset" => "subset.not",
        "sqsubset" => "subset.sq",
        "sqsubsetneq" => "subset.sq.neq",
        "supset" => "supset",
        "supsetdot" => "supset.dot",
        "Supset" => "supset.double",
        "supseteq" => "supset.eq",
        "nsupseteq" => "supset.eq.not",
        "sqsupseteq" => "supset.eq.sq",
        "nsqsupseteq" => "supset.eq.sq.not",
        "supsetneq" => "supset.neq",
        "nsupset" => "supset.not",
        "sqsupset" => "supset.sq",
        "sqsupsetneq" => "supset.sq.neq",
        "cup" => "union",
        "cupleftarrow" => "union.arrow",
        "bigcup" => "union.big",
        "cupdot" => "union.dot",
        "bigcupdot" => "union.dot.big",
        "Cup" => "union.double",
        "uminus" => "union.minus",
        "cupvee" => "union.or",
        "uplus" => "union.plus",
        "biguplus" => "union.plus.big",
        "sqcup" => "union.sq",
        "bigsqcup" => "union.sq.big",
        "Sqcup" => "union.sq.double",
        "cap" => "sect",
        "capwedge" => "sect.and",
        "bigcap" => "sect.big",
        "capdot" => "sect.dot",
        "Cap" => "sect.double",
        "sqcap" => "sect.sq",
        "bigsqcap" => "sect.sq.big",
        "Sqcap" => "sect.sq.double",
        "infty" => "infinity",
        "nvinfty" => "infinity.bar",
        "iinfin" => "infinity.incomplete",
        "tieinfty" => "infinity.tie",
        "partial" => "diff",
        "nabla" => "gradient",
        "sum" => "sum",
        "sumint" => "sum.integral",
        "prod" => "product",
        "coprod" => "product.co",
        "int" => "integral",
        "intlarhk" => "integral.arrow.hook",
        "awint" => "integral.ccw",
        "oint" => "integral.cont",
        "ointctrclockwise" => "integral.cont.ccw",
        "varointclockwise" => "integral.cont.cw",
        "intclockwise" => "integral.cw",
        "intbar" => "integral.dash",
        "intBar" => "integral.dash.double",
        "iint" => "integral.double",
        "iiiint" => "integral.quad",
        "intcap" => "integral.sect",
        "fint" => "integral.slash",
        "sqint" => "integral.square",
        "oiint" => "integral.surf",
        "intx" => "integral.times",
        "iiint" => "integral.triple",
        "intcup" => "integral.union",
        "oiiint" => "integral.vol",
        "increment" => "laplace",
        "forall" => "forall",
        "exists" => "exists",
        "nexists" => "exists.not",
        "bot" => "bot",
        "neg" => "not",
        "bigwedge" => "and.big",
        "curlywedge" => "and.curly",
        "wedgedot" => "and.dot",
        "Wedge" => "and.double",
        "bigvee" => "or.big",
        "curlyvee" => "or.curly",
        "veedot" => "or.dot",
        "Vee" => "or.double",
        "models" => "models",
        "Vdash" => "forces",
        "nVdash" => "forces.not",
        "therefore" => "therefore",
        "because" => "because",
        "QED" => "qed",
        "vysmwhtcircle" => "compose",
        "multimap" => "multimap",
        "dualmap" => "multimap.double",
        "tplus" => "tiny",
        "tminus" => "miny",
        "mid" => "divides",
        "nmid" => "divides.not",
        "wr" => "wreath",
        "parallel" => "parallel",
        "nhpar" => "parallel.struck",
        "circledparallel" => "parallel.circle",
        "equalparallel" => "parallel.eq",
        "equivVert" => "parallel.equiv",
        "nparallel" => "parallel.not",
        "eparsl" => "parallel.slanted.eq",
        "smeparsl" => "parallel.slanted.eq.tilde",
        "eqvparsl" => "parallel.slanted.equiv",
        "parsim" => "parallel.tilde",
        "perp" => "perp",
        "operp" => "perp.circle",
        "diameter" => "diameter",
        "Join" => "join",
        "rightouterjoin" => "join.r",
        "leftouterjoin" => "join.l",
        "fullouterjoin" => "join.l.r",
        "smashtimes" => "smash",
        "mathdollar" => "dollar",
        "euro" => "euro",
        "mathsterling" => "pound",
        "mathyen" => "yen",
        "checkmark" => "checkmark",
        "maltese" => "maltese",
        "clubsuit" => "suit.club.filled",
        "varclubsuit" => "suit.club.stroked",
        "vardiamondsuit" => "suit.diamond.filled",
        "diamondsuit" => "suit.diamond.stroked",
        "varheartsuit" => "suit.heart.filled",
        "heartsuit" => "suit.heart.stroked",
        "spadesuit" => "suit.spade.filled",
        "varspadesuit" => "suit.spade.stroked",
        "quarternote" => "note.quarter.alt",
        "eighthnote" => "note.eighth.alt",
        "twonotes" => "note.eighth.beamed",
        "natural" => "natural",
        "flat" => "flat",
        "sharp" => "sharp",
        "smblkcircle" => "bullet",
        "mdlgwhtcircle" => "circle.stroked",
        "mdsmwhtcircle" => "circle.stroked.small",
        "lgwhtcircle" => "circle.stroked.big",
        "mdlgblkcircle" => "circle.filled",
        "mdsmblkcircle" => "circle.filled.tiny",
        "vysmblkcircle" => "circle.filled.small",
        "lgblkcircle" => "circle.filled.big",
        "dottedcircle" => "circle.dotted",
        "circledcirc" => "circle.nested",
        "whthorzoval" => "ellipse.stroked.h",
        "whtvertoval" => "ellipse.stroked.v",
        "blkhorzoval" => "ellipse.filled.h",
        "blkvertoval" => "ellipse.filled.v",
        "bigtriangleup" => "triangle.stroked.t",
        "bigtriangledown" => "triangle.stroked.b",
        "triangleright" => "triangle.stroked.r",
        "triangleleft" => "triangle.stroked.l",
        "lltriangle" => "triangle.stroked.bl",
        "lrtriangle" => "triangle.stroked.br",
        "ultriangle" => "triangle.stroked.tl",
        "urtriangle" => "triangle.stroked.tr",
        "vartriangle" => "triangle.stroked.small.t",
        "triangledown" => "triangle.stroked.small.b",
        "smalltriangleright" => "triangle.stroked.small.r",
        "smalltriangleleft" => "triangle.stroked.small.l",
        "whiteinwhitetriangle" => "triangle.stroked.nested",
        "trianglecdot" => "triangle.stroked.dot",
        "bigblacktriangleup" => "triangle.filled.t",
        "bigblacktriangledown" => "triangle.filled.b",
        "blacktriangleright" => "triangle.filled.r",
        "blacktriangleleft" => "triangle.filled.l",
        "llblacktriangle" => "triangle.filled.bl",
        "lrblacktriangle" => "triangle.filled.br",
        "ulblacktriangle" => "triangle.filled.tl",
        "urblacktriangle" => "triangle.filled.tr",
        "blacktriangle" => "triangle.filled.small.t",
        "blacktriangledown" => "triangle.filled.small.b",
        "smallblacktriangleright" => "triangle.filled.small.r",
        "smallblacktriangleleft" => "triangle.filled.small.l",
        "mdlgwhtsquare" => "square.stroked",
        "smwhtsquare" => "square.stroked.tiny",
        "mdsmwhtsquare" => "square.stroked.small",
        "mdwhtsquare" => "square.stroked.medium",
        "lgwhtsquare" => "square.stroked.big",
        "dottedsquare" => "square.stroked.dotted",
        "squoval" => "square.stroked.rounded",
        "mdlgblksquare" => "square.filled",
        "smblksquare" => "square.filled.tiny",
        "mdsmblksquare" => "square.filled.small",
        "mdblksquare" => "square.filled.medium",
        "lgblksquare" => "square.filled.big",
        "hrectangle" => "rect.stroked.h",
        "vrectangle" => "rect.stroked.v",
        "hrectangleblack" => "rect.filled.h",
        "vrectangleblack" => "rect.filled.v",
        "pentagon" => "penta.stroked",
        "pentagonblack" => "penta.filled",
        "varhexagon" => "hexa.stroked",
        "varhexagonblack" => "hexa.filled",
        "mdlgwhtdiamond" => "diamond.stroked",
        "smwhtdiamond" => "diamond.stroked.small",
        "mdwhtdiamond" => "diamond.stroked.medium",
        "diamondcdot" => "diamond.stroked.dot",
        "mdlgblkdiamond" => "diamond.filled",
        "mdblkdiamond" => "diamond.filled.medium",
        "smblkdiamond" => "diamond.filled.small",
        "mdlgwhtlozenge" => "lozenge.stroked",
        "smwhtlozenge" => "lozenge.stroked.small",
        "mdwhtlozenge" => "lozenge.stroked.medium",
        "mdlgblklozenge" => "lozenge.filled",
        "smblklozenge" => "lozenge.filled.small",
        "mdblklozenge" => "lozenge.filled.medium",
        "parallelogram" => "parallelogram.stroked",
        "parallelogramblack" => "parallelogram.filled",
        "star" => "star.op",
        "bigwhitestar" => "star.stroked",
        "bigstar" => "star.filled",
        "rightarrow" => "arrow.r",
        "longmapsto" => "arrow.r.long.bar",
        "mapsto" => "arrow.r.bar",
        "rightdowncurvedarrow" => "arrow.r.curve",
        "rightdasharrow" => "arrow.r.dashed",
        "rightdotarrow" => "arrow.r.dotted",
        "Rightarrow" => "arrow.r.double",
        "Mapsto" => "arrow.r.double.bar",
        "Longrightarrow" => "arrow.r.double.long",
        "Longmapsto" => "arrow.r.double.long.bar",
        "nRightarrow" => "arrow.r.double.not",
        "hookrightarrow" => "arrow.r.hook",
        "longrightarrow" => "arrow.r.long",
        "longrightsquigarrow" => "arrow.r.long.squiggly",
        "looparrowright" => "arrow.r.loop",
        "nrightarrow" => "arrow.r.not",
        "RRightarrow" => "arrow.r.quad",
        "rightsquigarrow" => "arrow.r.squiggly",
        "rightarrowbar" => "arrow.r.stop",
        "rightwhitearrow" => "arrow.r.stroked",
        "rightarrowtail" => "arrow.r.tail",
        "similarrightarrow" => "arrow.r.tilde",
        "Rrightarrow" => "arrow.r.triple",
        "twoheadmapsto" => "arrow.r.twohead.bar",
        "twoheadrightarrow" => "arrow.r.twohead",
        "rightwavearrow" => "arrow.r.wave",
        "leftarrow" => "arrow.l",
        "mapsfrom" => "arrow.l.bar",
        "leftdowncurvedarrow" => "arrow.l.curve",
        "leftdasharrow" => "arrow.l.dashed",
        "leftdotarrow" => "arrow.l.dotted",
        "Leftarrow" => "arrow.l.double",
        "Mapsfrom" => "arrow.l.double.bar",
        "Longleftarrow" => "arrow.l.double.long",
        "Longmapsfrom" => "arrow.l.double.long.bar",
        "nLeftarrow" => "arrow.l.double.not",
        "hookleftarrow" => "arrow.l.hook",
        "longleftarrow" => "arrow.l.long",
        "longmapsfrom" => "arrow.l.long.bar",
        "longleftsquigarrow" => "arrow.l.long.squiggly",
        "looparrowleft" => "arrow.l.loop",
        "nleftarrow" => "arrow.l.not",
        "LLeftarrow" => "arrow.l.quad",
        "leftsquigarrow" => "arrow.l.squiggly",
        "barleftarrow" => "arrow.l.stop",
        "leftwhitearrow" => "arrow.l.stroked",
        "leftarrowtail" => "arrow.l.tail",
        "similarleftarrow" => "arrow.l.tilde",
        "Lleftarrow" => "arrow.l.triple",
        "twoheadmapsfrom" => "arrow.l.twohead.bar",
        "twoheadleftarrow" => "arrow.l.twohead",
        "leftwavearrow" => "arrow.l.wave",
        "uparrow" => "arrow.t",
        "mapsup" => "arrow.t.bar",
        "uprightcurvearrow" => "arrow.t.curve",
        "updasharrow" => "arrow.t.dashed",
        "Uparrow" => "arrow.t.double",
        "UUparrow" => "arrow.t.quad",
        "baruparrow" => "arrow.t.stop",
        "upwhitearrow" => "arrow.t.stroked",
        "Uuparrow" => "arrow.t.triple",
        "twoheaduparrow" => "arrow.t.twohead",
        "downarrow" => "arrow.b",
        "mapsdown" => "arrow.b.bar",
        "downrightcurvedarrow" => "arrow.b.curve",
        "downdasharrow" => "arrow.b.dashed",
        "Downarrow" => "arrow.b.double",
        "DDownarrow" => "arrow.b.quad",
        "downarrowbar" => "arrow.b.stop",
        "downwhitearrow" => "arrow.b.stroked",
        "Ddownarrow" => "arrow.b.triple",
        "twoheaddownarrow" => "arrow.b.twohead",
        "leftrightarrow" => "arrow.l.r",
        "Leftrightarrow" => "arrow.l.r.double",
        "Longleftrightarrow" => "arrow.l.r.double.long",
        "nLeftrightarrow" => "arrow.l.r.double.not",
        "longleftrightarrow" => "arrow.l.r.long",
        "nleftrightarrow" => "arrow.l.r.not",
        "leftrightsquigarrow" => "arrow.l.r.wave",
        "updownarrow" => "arrow.t.b",
        "Updownarrow" => "arrow.t.b.double",
        "nearrow" => "arrow.tr",
        "Nearrow" => "arrow.tr.double",
        "hknearrow" => "arrow.tr.hook",
        "searrow" => "arrow.br",
        "Searrow" => "arrow.br.double",
        "hksearrow" => "arrow.br.hook",
        "nwarrow" => "arrow.tl",
        "Nwarrow" => "arrow.tl.double",
        "hknwarrow" => "arrow.tl.hook",
        "swarrow" => "arrow.bl",
        "Swarrow" => "arrow.bl.double",
        "hkswarrow" => "arrow.bl.hook",
        "nwsearrow" => "arrow.tl.br",
        "neswarrow" => "arrow.tr.bl",
        "acwopencirclearrow" => "arrow.ccw",
        "curvearrowleft" => "arrow.ccw.half",
        "cwopencirclearrow" => "arrow.cw",
        "curvearrowright" => "arrow.cw.half",
        "downzigzagarrow" => "arrow.zigzag",
        "rightrightarrows" => "arrows.rr",
        "leftleftarrows" => "arrows.ll",
        "upuparrows" => "arrows.tt",
        "downdownarrows" => "arrows.bb",
        "leftrightarrows" => "arrows.lr",
        "barleftarrowrightarrowbar" => "arrows.lr.stop",
        "rightleftarrows" => "arrows.rl",
        "updownarrows" => "arrows.tb",
        "downuparrows" => "arrows.bt",
        "rightthreearrows" => "arrows.rrr",
        "leftthreearrows" => "arrows.lll",
        "rightharpoonup" => "harpoon.rt",
        "barrightharpoonup" => "harpoon.rt.bar",
        "rightharpoonupbar" => "harpoon.rt.stop",
        "rightharpoondown" => "harpoon.rb",
        "barrightharpoondown" => "harpoon.rb.bar",
        "rightharpoondownbar" => "harpoon.rb.stop",
        "leftharpoonupbar" => "harpoon.lt.bar",
        "barleftharpoonup" => "harpoon.lt.stop",
        "leftharpoondown" => "harpoon.lb",
        "leftharpoondownbar" => "harpoon.lb.bar",
        "barleftharpoondown" => "harpoon.lb.stop",
        "upharpoonleft" => "harpoon.tl",
        "upharpoonleftbar" => "harpoon.tl.bar",
        "barupharpoonleft" => "harpoon.tl.stop",
        "upharpoonright" => "harpoon.tr",
        "upharpoonrightbar" => "harpoon.tr.bar",
        "barupharpoonright" => "harpoon.tr.stop",
        "downharpoonleft" => "harpoon.bl",
        "bardownharpoonleft" => "harpoon.bl.bar",
        "downharpoonleftbar" => "harpoon.bl.stop",
        "downharpoonright" => "harpoon.br",
        "bardownharpoonright" => "harpoon.br.bar",
        "downharpoonrightbar" => "harpoon.br.stop",
        "leftrightharpoonupup" => "harpoon.lt.rt",
        "leftrightharpoondowndown" => "harpoon.lb.rb",
        "leftrightharpoondownup" => "harpoon.lb.rt",
        "leftrightharpoonupdown" => "harpoon.lt.rb",
        "updownharpoonleftleft" => "harpoon.tl.bl",
        "updownharpoonrightright" => "harpoon.tr.br",
        "updownharpoonleftright" => "harpoon.tl.br",
        "updownharpoonrightleft" => "harpoon.tr.bl",
        "rightharpoonsupdown" => "harpoons.rtrb",
        "downharpoonsleftright" => "harpoons.blbr",
        "downupharpoonsleftright" => "harpoons.bltr",
        "leftrightharpoonsdown" => "harpoons.lbrb",
        "leftharpoonsupdown" => "harpoons.ltlb",
        "leftrightharpoons" => "harpoons.ltrb",
        "leftrightharpoonsup" => "harpoons.ltrt",
        "rightleftharpoonsdown" => "harpoons.rblb",
        "rightleftharpoons" => "harpoons.rtlb",
        "rightleftharpoonsup" => "harpoons.rtlt",
        "updownharpoonsleftright" => "harpoons.tlbr",
        "upharpoonsleftright" => "harpoons.tltr",
        "vdash" => "tack.r",
        "nvdash" => "tack.r.not",
        "vlongdash" => "tack.r.long",
        "assert" => "tack.r.short",
        "vDash" => "tack.r.double",
        "nvDash" => "tack.r.double.not",
        "dashv" => "tack.l",
        "longdashv" => "tack.l.long",
        "shortlefttack" => "tack.l.short",
        "Dashv" => "tack.l.double",
        "bigbot" => "tack.t.big",
        "Vbar" => "tack.t.double",
        "shortuptack" => "tack.t.short",
        "bigtop" => "tack.b.big",
        "barV" => "tack.b.double",
        "shortdowntack" => "tack.b.short",
        "dashVdash" => "tack.l.r",
        "mupalpha" => "alpha",
        "mupbeta" => "beta",
        "mupchi" => "chi",
        "mupdelta" => "delta",
        "mupvarepsilon" => "epsilon",
        "mupepsilon" => "epsilon.alt",
        "mupeta" => "eta",
        "mupgamma" => "gamma",
        "mupiota" => "iota",
        "mupkappa" => "kappa",
        "mupvarkappa" => "kappa.alt",
        "muplambda" => "lambda",
        "mupmu" => "mu",
        "mupnu" => "nu",
        "mho" => "ohm.inv",
        "mupomega" => "omega",
        "mupomicron" => "omicron",
        "mupvarphi" => "phi",
        "mupphi" => "phi.alt",
        "muppi" => "pi",
        "mupvarpi" => "pi.alt",
        "muppsi" => "psi",
        "muprho" => "rho",
        "mupvarrho" => "rho.alt",
        "mupsigma" => "sigma",
        "mupvarsigma" => "sigma.alt",
        "muptau" => "tau",
        "muptheta" => "theta",
        "mupvartheta" => "theta.alt",
        "mupupsilon" => "upsilon",
        "mupxi" => "xi",
        "mupzeta" => "zeta",
        "mupAlpha" => "Alpha",
        "mupBeta" => "Beta",
        "mupChi" => "Chi",
        "mupDelta" => "Delta",
        "mupEpsilon" => "Epsilon",
        "mupEta" => "Eta",
        "mupGamma" => "Gamma",
        "mupIota" => "Iota",
        "mupKappa" => "Kappa",
        "mupLambda" => "Lambda",
        "mupMu" => "Mu",
        "mupNu" => "Nu",
        "mupOmega" => "Omega",
        "mupOmicron" => "Omicron",
        "mupPhi" => "Phi",
        "mupPi" => "Pi",
        "mupPsi" => "Psi",
        "mupRho" => "Rho",
        "mupSigma" => "Sigma",
        "mupTau" => "Tau",
        "mupTheta" => "Theta",
        "mupUpsilon" => "Upsilon",
        "mupXi" => "Xi",
        "mupZeta" => "Zeta",
        "BbbA" => "AA",
        "BbbB" => "BB",
        "BbbC" => "CC",
        "BbbD" => "DD",
        "BbbE" => "EE",
        "BbbF" => "FF",
        "BbbG" => "GG",
        "BbbH" => "HH",
        "BbbI" => "II",
        "BbbJ" => "JJ",
        "BbbK" => "KK",
        "BbbL" => "LL",
        "BbbM" => "MM",
        "BbbN" => "NN",
        "BbbO" => "OO",
        "BbbP" => "PP",
        "BbbQ" => "QQ",
        "BbbR" => "RR",
        "BbbS" => "SS",
        "BbbT" => "TT",
        "BbbU" => "UU",
        "BbbV" => "VV",
        "BbbW" => "WW",
        "BbbX" => "XX",
        "BbbY" => "YY",
        "BbbZ" => "ZZ",
        "ell" => "ell",
        "Planckconst" => "planck",
        "hslash" => "planck.reduce",
        "Angstrom" => "angstrom",
        "Re" => "Re",
        "Im" => "Im",
        "imath" => "dotless.i",
        "jmath" => "dotless.j",

        // force override
        "frac" => "frac",
        "tilde" => "tilde",
        "hat" => "hat",
        "upright" => "mathrm",
        "bold" => "boldsymbol",

        "hyph.minus" => "\\text{-}",
};