const unicode_mathematical_italic = { 'A' : '𝐴', 'B' : '𝐵', 'C' : '𝐶', 'D' : '𝐷', 'E' : '𝐸', 'F' : '𝐹', 'G' : '𝐺', 'H' : '𝐻', 'I' : '𝐼', 'J' : '𝐽', 'K' : '𝐾', 'L' : '𝐿', 'M' : '𝑀', 'N' : '𝑁', 'O' : '𝑂', 'P' : '𝑃', 'Q' : '𝑄', 'R' : '𝑅', 'S' : '𝑆', 'T' : '𝑇', 'U' : '𝑈', 'V' : '𝑉', 'W' : '𝑊', 'X' : '𝑋', 'Y' : '𝑌', 'Z' : '𝑍', 'a' : '𝑎', 'b' : '𝑏', 'c' : '𝑐', 'd' : '𝑑', 'e' : '𝑒', 'f' : '𝑓', 'g' : '𝑔', 'h' : 'ℎ', 'i' : '𝑖', 'j' : '𝑗', 'k' : '𝑘', 'l' : '𝑙', 'm' : '𝑚', 'n' : '𝑛', 'o' : '𝑜', 'p' : '𝑝', 'q' : '𝑞', 'r' : '𝑟', 's' : '𝑠', 't' : '𝑡', 'u' : '𝑢', 'v' : '𝑣', 'w' : '𝑤', 'x' : '𝑥', 'y' : '𝑦', 'z' : '𝑧', 'Α' : '𝛢', 'Β' : '𝛣', 'Γ' : '𝛤', 'Δ' : '𝛥', 'Ε' : '𝛦', 'Ζ' : '𝛧', 'Η' : '𝛨', 'Θ' : '𝛩', 'Ι' : '𝛪', 'Κ' : '𝛫', 'Λ' : '𝛬', 'Μ' : '𝛭', 'Ν' : '𝛮', 'Ξ' : '𝛯', 'Ο' : '𝛰', 'Π' : '𝛱', 'Ρ' : '𝛲', 'Σ' : '𝛴', 'Τ' : '𝛵', 'Υ' : '𝛶', 'Φ' : '𝛷', 'Χ' : '𝛸', 'Ψ' : '𝛹', 'Ω' : '𝛺', 'α' : '𝛼', 'β' : '𝛽', 'γ' : '𝛾', 'δ' : '𝛿', 'ε' : '𝜀', 'ζ' : '𝜁', 'η' : '𝜂', 'θ' : '𝜃', 'ι' : '𝜄', 'κ' : '𝜅', 'λ' : '𝜆', 'μ' : '𝜇', 'ν' : '𝜈', 'ξ' : '𝜉', 'ο' : '𝜊', 'π' : '𝜋', 'ρ' : '𝜌', 'ς' : '𝜍', 'σ' : '𝜎', 'τ' : '𝜏', 'υ' : '𝜐', 'φ' : '𝜑', 'χ' : '𝜒', 'ψ' : '𝜓', 'ω' : '𝜔', 'ϑ' : '𝜗', 'ϰ' : '𝜘', 'ϕ' : '𝜙', 'ϱ' : '𝜚', 'ϖ' : '𝜛', // '.' : '𝛻', '.' : '𝛳', '.' : '𝜕', '.' : '𝜖', } const reversed_unicode_mathematical_italic = Object.fromEntries( Object.entries(unicode_mathematical_italic).map(([k,v]) => [v,k]) ); const latex_greek = { '\\alpha' : 'α', '\\beta' : 'β', '\\gamma' : 'γ', '\\delta' : 'δ', '\\epsilon' : 'ε', '\\zeta' : 'ζ', '\\eta' : 'η', '\\theta' : 'θ', '\\iota' : 'ι', '\\kappa' : 'κ', '\\lambda' : 'λ', '\\mu' : 'μ', '\\nu' : 'ν', '\\xi' : 'ξ', '\\omicron' : 'ο', '\\pi' : 'π', '\\rho' : 'ρ', '\\sigma' : 'σ', '\\tau' : 'τ', '\\upsilon' : 'υ', '\\phi' : 'ϕ', '\\chi' : 'χ', '\\psi' : 'ψ', '\\omega' : 'ω', '\\vartheta' : 'ϑ', '\\varchi' : 'ϰ', '\\varphi' : 'φ', '\\varepsilon' : 'ε', '\\varrho' : 'ϱ', '\\varsigma' : 'ς', } const latex_symbols = { "textfractionsolidus" : "⁄", "leftrightsquigarrow" : "↭", "textpertenthousand" : "‱", "blacktriangleright" : "▸", "blacktriangledown" : "▾", "blacktriangleleft" : "◂", "twoheadrightarrow" : "↠", "leftrightharpoons" : "⇋", "rightleftharpoons" : "⇌", "textreferencemark" : "※", "circlearrowright" : "↻", "rightrightarrows" : "⇉", "vartriangleright" : "⊳", "textordmasculine" : "º", "textvisiblespace" : "␣", "twoheadleftarrow" : "↞", "downharpoonright" : "⇂", "ntrianglerighteq" : "⋭", "rightharpoondown" : "⇁", "textperthousand" : "‰", "leftrightarrows" : "⇆", "textmusicalnote" : "♪", "nleftrightarrow" : "↮", "rightleftarrows" : "⇄", "bigtriangledown" : "▽", "textordfeminine" : "ª", "ntrianglelefteq" : "⋬", "rightthreetimes" : "⋌", "trianglerighteq" : "⊵", "vartriangleleft" : "⊲", "rightsquigarrow" : "⇝", "downharpoonleft" : "⇃", "curvearrowright" : "↷", "circlearrowleft" : "↺", "leftharpoondown" : "↽", "nLeftrightarrow" : "⇎", "curvearrowleft" : "↶", "guilsinglright" : "›", "leftthreetimes" : "⋋", "leftrightarrow" : "↔", "rightharpoonup" : "⇀", "guillemotright" : "»", "downdownarrows" : "⇊", "hookrightarrow" : "↪", "dashrightarrow" : "⇢", "leftleftarrows" : "⇇", "trianglelefteq" : "⊴", "ntriangleright" : "⋫", "doublebarwedge" : "⌆", "upharpoonright" : "↾", "rightarrowtail" : "↣", "looparrowright" : "↬", "Leftrightarrow" : "⇔", "sphericalangle" : "∢", "divideontimes" : "⋇", "measuredangle" : "∡", "blacktriangle" : "▴", "ntriangleleft" : "⋪", "mathchar1356" : "⁁", "texttrademark" : "™", "mathchar2208" : "⌖", "triangleright" : "▹", "leftarrowtail" : "↢", "guilsinglleft" : "‹", "upharpoonleft" : "↿", "mathbb{gamma}" : "ℽ", "fallingdotseq" : "≒", "looparrowleft" : "↫", "textbrokenbar" : "¦", "hookleftarrow" : "↩", "smallsetminus" : "﹨", "dashleftarrow" : "⇠", "guillemotleft" : "«", "leftharpoonup" : "↼", "mathbb{Gamma}" : "ℾ", "bigtriangleup" : "△", "textcircledP" : "℗", "risingdotseq" : "≓", "triangleleft" : "◃", "mathsterling" : "£", "textcurrency" : "¤", "triangledown" : "▿", "blacklozenge" : "", "sfrac{5}{6}" : "⅚", "preccurlyeq" : "≼", "Rrightarrow" : "⇛", "circledcirc" : "⊚", "nRightarrow" : "⇏", "sfrac{3}{8}" : "⅜", "sfrac{1}{3}" : "⅓", "sfrac{2}{5}" : "⅖", "vartriangle" : "▵", "Updownarrow" : "⇕", "nrightarrow" : "↛", "sfrac{1}{2}" : "½", "sfrac{3}{5}" : "⅗", "succcurlyeq" : "≽", "sfrac{4}{5}" : "⅘", "diamondsuit" : "♦", "sfrac{1}{6}" : "⅙", "curlyeqsucc" : "⋟", "blacksquare" : "▪", "curlyeqprec" : "⋞", "sfrac{1}{8}" : "⅛", "sfrac{7}{8}" : "⅞", "sfrac{1}{5}" : "⅕", "sfrac{2}{3}" : "⅔", "updownarrow" : "↕", "backepsilon" : "∍", "circleddash" : "⊝", "eqslantless" : "⋜", "sfrac{3}{4}" : "¾", "sfrac{5}{8}" : "⅝", "sfrac{1}{4}" : "¼", "mathbb{Pi}" : "ℿ", "mathcal{M}" : "ℳ", "mathcal{o} " : "ℴ", "mathcal{O} " : "𝒪", "nsupseteqq" : "⊉", "mathcal{B}" : "ℬ", "textrecipe" : "℞", "nsubseteqq" : "⊈", "subsetneqq" : "⊊", "mathcal{I}" : "ℑ", "upuparrows" : "⇈", "mathcal{e}" : "ℯ", "mathcal{L}" : "ℒ", "nleftarrow" : "↚", "mathcal{H}" : "ℋ", "mathcal{E}" : "ℰ", "eqslantgtr" : "⋝", "curlywedge" : "⋏", "varepsilon" : "ε", "supsetneqq" : "⊋", "rightarrow" : "→", "mathcal{R}" : "ℛ", "sqsubseteq" : "⊑", "mathcal{g}" : "ℊ", "sqsupseteq" : "⊒", "complement" : "∁", "Rightarrow" : "⇒", "gtreqqless" : "⋛", "lesseqqgtr" : "⋚", "circledast" : "⊛", "nLeftarrow" : "⇍", "Lleftarrow" : "⇚", "varnothing" : "∅", "mathcal{N}" : "𝒩", "Leftarrow" : "⇐", "gvertneqq" : "≩", "mathbb{C}" : "ℂ", "supsetneq" : "⊋", "leftarrow" : "←", "nleqslant" : "≰", "mathbb{Q}" : "ℚ", "mathbb{Z}" : "ℤ", "llbracket" : "〚", "mathbb{H}" : "ℍ", "spadesuit" : "♠", "mathit{o}" : "ℴ", "mathbb{P}" : "ℙ", "rrbracket" : "〛", "supseteqq" : "⊇", "copyright" : "©", "textsc{k}" : "ĸ", "gtreqless" : "⋛", "mathbb{j}" : "ⅉ", "pitchfork" : "⋔", "estimated" : "℮", "ngeqslant" : "≱", "mathbb{e}" : "ⅇ", "therefore" : "∴", "triangleq" : "≜", "varpropto" : "∝", "subsetneq" : "⊊", "heartsuit" : "♥", "mathbb{d}" : "ⅆ", "lvertneqq" : "≨", "checkmark" : "✓", "nparallel" : "∦", "mathbb{R}" : "ℝ", "lesseqgtr" : "⋚", "downarrow" : "↓", "mathbb{D}" : "ⅅ", "mathbb{i}" : "ⅈ", "backsimeq" : "⋍", "mathbb{N}" : "ℕ", "Downarrow" : "⇓", "subseteqq" : "⊆", "setminus" : "∖", "succnsim" : "⋩", "doteqdot" : "≑", "clubsuit" : "♣", "emptyset" : "∅", "sqsupset" : "⊐", "fbox{~~}" : "▭", "curlyvee" : "⋎", "varkappa" : "ϰ", "llcorner" : "⌞", "varsigma" : "ς", "approxeq" : "≊", "backcong" : "≌", "supseteq" : "⊇", "circledS" : "Ⓢ", "circledR" : "®", "textcent" : "¢", "urcorner" : "⌝", "lrcorner" : "⌟", "boxminus" : "⊟", "texteuro" : "€", "vartheta" : "ϑ", "barwedge" : "⊼", "ding{86}" : "✶", "sqsubset" : "⊏", "subseteq" : "⊆", "intercal" : "⊺", "ding{73}" : "☆", "ulcorner" : "⌜", "recorder" : "⌕", "precnsim" : "⋨", "parallel" : "∥", "boxtimes" : "⊠", "ding{55}" : "✗", "multimap" : "⊸", "maltese" : "✠", "nearrow" : "↗", "swarrow" : "↙", "lozenge" : "◊", "sqrt[3]" : "∛", "succsim" : "≿", "dotplus" : "∔", "tilde{}" : "~", "check{}" : "ˇ", "lessgtr" : "≶", "Upsilon" : "ϒ", "Cdprime" : "Ъ", "gtrless" : "≷", "backsim" : "∽", "nexists" : "∄", "searrow" : "↘", "lessdot" : "⋖", "boxplus" : "⊞", "upsilon" : "υ", "epsilon" : "ε", "diamond" : "⋄", "bigstar" : "★", "ddagger" : "‡", "cdprime" : "ъ", "Uparrow" : "⇑", "sqrt[4]" : "∜", "between" : "≬", "sqangle" : "∟", "digamma" : "Ϝ", "uparrow" : "↑", "nwarrow" : "↖", "precsim" : "≾", "breve{}" : "˘", "because" : "∵", "bigcirc" : "◯", "acute{}" : "´", "grave{}" : "`", "lesssim" : "≲", "partial" : "∂", "natural" : "♮", "supset" : "⊃", "hstrok" : "ħ", "Tstrok" : "Ŧ", "coprod" : "∐", "models" : "⊧", "otimes" : "⊗", "degree" : "°", "gtrdot" : "⋗", "preceq" : "≼", "Lambda" : "Λ", "lambda" : "λ", "cprime" : "ь", "varrho" : "ϱ", "Bumpeq" : "≎", "hybull" : "⁃", "lmidot" : "ŀ", "nvdash" : "⊬", "lbrace" : "{", "bullet" : "•", "varphi" : "φ", "bumpeq" : "≏", "ddot{}" : "¨", "Lmidot" : "Ŀ", "Cprime" : "Ь", "female" : "♀", "rtimes" : "⋊", "gtrsim" : "≳", "mapsto" : "↦", "daleth" : "ℸ", "square" : "■", "nVDash" : "⊯", "rangle" : "⟩", "tstrok" : "ŧ", "oslash" : "⊘", "ltimes" : "⋉", "lfloor" : "⌊", "marker" : "▮", "Subset" : "⋐", "Vvdash" : "⊪", "propto" : "∝", "Hstrok" : "Ħ", "dlcrop" : "⌍", "forall" : "∀", "nVdash" : "⊮", "Supset" : "⋑", "langle" : "⟨", "ominus" : "⊖", "rfloor" : "⌋", "circeq" : "≗", "eqcirc" : "≖", "drcrop" : "⌌", "veebar" : "⊻", "ulcrop" : "⌏", "nvDash" : "⊭", "urcrop" : "⌎", "exists" : "∃", "approx" : "≈", "dagger" : "†", "boxdot" : "⊡", "succeq" : "≽", "bowtie" : "⋈", "subset" : "⊂", "notin" : "∉", "Sigma" : "Σ", "Omega" : "Ω", "nabla" : "∇", "colon" : ":", "boxHu" : "╧", "boxHd" : "╤", "aleph" : "ℵ", "gnsim" : "⋧", "boxHU" : "╩", "boxHD" : "╦", "equiv" : "≡", "lneqq" : "≨", "alpha" : "α", "amalg" : "∐", "boxhU" : "╨", "boxhD" : "╥", "uplus" : "⊎", "boxhu" : "┴", "kappa" : "κ", "sigma" : "σ", "boxDL" : "╗", "Theta" : "Θ", "Vdash" : "⊩", "boxDR" : "╔", "boxDl" : "╖", "sqcap" : "⊓", "boxDr" : "╓", "bar{}" : "¯", "dashv" : "⊣", "vDash" : "⊨", "boxdl" : "┐", "boxVl" : "╢", "boxVh" : "╫", "boxVr" : "╟", "boxdr" : "┌", "boxdL" : "╕", "boxVL" : "╣", "boxVH" : "╬", "boxVR" : "╠", "boxdR" : "╒", "theta" : "θ", "lhblk" : "▄", "uhblk" : "▀", "ldotp" : ".", "ldots" : "…", "boxvL" : "╡", "boxvH" : "╪", "boxvR" : "╞", "boxvl" : "┤", "boxvh" : "┼", "boxvr" : "├", "Delta" : "Δ", "boxUR" : "╚", "boxUL" : "╝", "oplus" : "⊕", "boxUr" : "╙", "boxUl" : "╜", "doteq" : "≐", "happy" : "㋡", "varpi" : "ϖ", "smile" : "☺", "boxul" : "┘", "simeq" : "≃", "boxuR" : "╘", "boxuL" : "╛", "boxhd" : "┬", "gimel" : "ℷ", "Gamma" : "Γ", "lnsim" : "⋦", "sqcup" : "⊔", "omega" : "ω", "sharp" : "♯", "times" : "×", "block" : "█", "hat{}" : "^", "wedge" : "∧", "vdash" : "⊢", "angle" : "∠", "infty" : "∞", "gamma" : "γ", "asymp" : "≍", "rceil" : "⌉", "dot{}" : "˙", "lceil" : "⌈", "delta" : "δ", "gneqq" : "≩", "frown" : "⌢", "phone" : "☎", "vdots" : "⋮", "boxr" : "└", "k{i}" : "į", "`{I}" : "Ì", "perp" : "⊥", "\"{o}" : "ö", "={I}" : "Ī", "`{a}" : "à", "v{T}" : "Ť", "surd" : "√", "H{O}" : "Ő", "vert" : "|", "k{I}" : "Į", "\"{y}" : "ÿ", "\"{O}" : "Ö", "u{u}" : "ў", "u{G}" : "Ğ", ".{E}" : "Ė", ".{z}" : "ż", "v{t}" : "ť", "prec" : "≺", "H{o}" : "ő", "mldr" : "…", "cong" : "≅", ".{e}" : "ė", "star" : "*", ".{Z}" : "Ż", "geqq" : "≧", "cdot" : "⋅", "cdots" : "…", "`{U}" : "Ù", "v{L}" : "Ľ", "c{s}" : "ş", "~{A}" : "Ã", "Vert" : "‖", "k{e}" : "ę", "lnot" : "¬", "leqq" : "≦", "beta" : "β", "beth" : "ℶ", "~{n}" : "ñ", "u{i}" : "й", "c{S}" : "Ş", "c{N}" : "Ņ", "H{u}" : "ű", "v{n}" : "ň", "={U}" : "Ū", "~{O}" : "Õ", "v{E}" : "Ě", "H{U}" : "Ű", "v{N}" : "Ň", "prod" : "∏", "v{s}" : "š", "\"{U}" : "Ü", "c{n}" : "ņ", "k{U}" : "Ų", "c{R}" : "Ŗ", "~{o}" : "õ", "v{e}" : "ě", "v{S}" : "Š", "u{A}" : "Ă", "circ" : "∘", "\"{u}" : "ü", "flat" : "♭", "v{z}" : "ž", "r{U}" : "Ů", "`{O}" : "Ò", "={u}" : "ū", "oint" : "∮", "c{K}" : "Ķ", "k{u}" : "ų", "not<" : "≮", "not>" : "≯", "`{o}" : "ò", "\"{I}" : "Ï", "v{D}" : "Ď", ".{G}" : "Ġ", "r{u}" : "ů", "not=" : "≠", "`{u}" : "ù", "v{c}" : "č", "c{k}" : "ķ", ".{g}" : "ġ", "odot" : "⊙", "`{e}" : "э", "c{T}" : "Ţ", "v{d}" : "ď", "\"{e}" : "ё", "v{R}" : "Ř", "k{a}" : "ą", "nldr" : "‥", "`{A}" : "À", "~{N}" : "Ñ", "nmid" : "∤", ".{C}" : "Ċ", "zeta" : "ζ", "~{u}" : "ũ", "`{E}" : "Э", "~{a}" : "ã", "c{t}" : "ţ", "={o}" : "ō", "v{r}" : "ř", "={A}" : "Ā", ".{c}" : "ċ", "~{U}" : "Ũ", "k{A}" : "Ą", "\"{a}" : "ä", "u{U}" : "Ў", "iota" : "ι", "={O}" : "Ō", "c{C}" : "Ç", "gneq" : "≩", "boxH" : "═", "hbar" : "ℏ", "\"{A}" : "Ä", "boxv" : "│", "boxh" : "─", "male" : "♂", "sqrt" : "√", "succ" : "≻", "c{c}" : "ç", "v{l}" : "ľ", "u{a}" : "ă", "v{Z}" : "Ž", "c{G}" : "Ģ", "v{C}" : "Č", "lneq" : "≨", "{E}" : "Ё", "={a}" : "ā", "c{l}" : "ļ", "={E}" : "Ē", "boxV" : "║", "u{g}" : "ğ", "u{I}" : "Й", "c{L}" : "Ļ", "k{E}" : "Ę", ".{I}" : "İ", "~{I}" : "Ĩ", "c{r}" : "ŗ", "{Y}" : "Ÿ", "={e}" : "ē", "leq" : "≤", "Cup" : "⋓", "Psi" : "Ψ", "neq" : "≠", "k{}" : "˛", "={}" : "‾", "H{}" : "˝", "cup" : "∪", "geq" : "≥", "mho" : "℧", "Dzh" : "Џ", "cap" : "∩", "bot" : "⊥", "psi" : "ψ", "chi" : "χ", "c{}" : "¸", "Phi" : "Φ", "ast" : "*", "ell" : "ℓ", "top" : "⊤", "lll" : "⋘", "tau" : "τ", "Cap" : "⋒", "sad" : "☹", "iff" : "⇔", "eta" : "η", "eth" : "ð", "d{" : " ̣", "rho" : "ρ", "dzh" : "џ", "div" : "÷", "phi" : "ϕ", "Rsh" : "↱", "vee" : "∨", "b{}" : "ˍ", "t{" : " ͡", "int" : "∫", "sim" : "∼", "r{}" : "˚", "Lsh" : "↰", "yen" : "¥", "ggg" : "⋙", "mid" : "∣", "sum" : "∑", "neg" : "¬", "Dz" : "Ѕ", "Re" : "ℜ", "oe" : "œ", "DH" : "Ð", "ll" : "≪", "ng" : "ŋ", "wr" : "≀", "wp" : "℘", "=I" : "І", ":)" : "☺", ":(" : "☹", "AE" : "Æ", "AA" : "Å", "ss" : "ß", "dz" : "ѕ", "ae" : "æ", "aa" : "å", "th" : "þ", "to" : "→", "Pi" : "Π", "mp" : "∓", "Im" : "ℑ", "pm" : "±", "pi" : "π", "\"I" : "Ї", "in" : "∈", "ni" : "∋", "ne" : "≠", "TH" : "Þ", "Xi" : "Ξ", "nu" : "ν", "NG" : "Ŋ", ":G" : "㋡", "xi" : "ξ", "OE" : "Œ", "gg" : "≫", "DJ" : "Đ", "=e" : "є", "=E" : "Є", "mu" : "μ", "dj" : "đ", // "&" : "&", // "$" : "$", // "%" : "%", // "#" : "#", // "-" : "­", "S" : "§", "P" : "¶", "O" : "Ø", "L" : "Ł", // "}" : "}", "o" : "ø", "l" : "ł", "h" : "ℎ", "i" : "ℹ", // "-" : "−", "'{Y}" : "Ý", "'{y}" : "ý", "'{L}" : "Ĺ", "'{e}" : "é", "'{l}" : "ĺ", "'{s}" : "ś", "'{z}" : "ź", "'{E}" : "É", "'{S}" : "Ś", "'{Z}" : "Ź", "'{R}" : "Ŕ", "'{A}" : "Á", "'{N}" : "Ń", "'{I}" : "Í", "'{n}" : "ń", "'{c}" : "ć", "'{u}" : "ú", "'{C}" : "Ć", "'{o}" : "ó", "'{a}" : "á", "'{O}" : "Ó", "'{g}" : "ǵ", "'{r}" : "ŕ", "'{U}" : "Ú", "'G" : "Ѓ", "'C" : "Ћ", "'K" : "Ќ", "'k" : "ќ", "'c" : "ћ", "'g" : "ѓ", } export function str_latex_to_unicode(str : string){ str = str; for (let key in latex_greek){ str = str.replaceAll(key, (latex_greek as any)[key]); } for (let key in latex_symbols){ str = str.replaceAll('\\'+key, (latex_symbols as any)[key]); } return str; } export function str_to_mathematical_italic(str : string) { return [...str_latex_to_unicode(str)] .map(c => (unicode_mathematical_italic as any)[c] || c).join(''); } export function str_to_normal_from_mathematical_italic(str : string) { return [...str] .map(c => reversed_unicode_mathematical_italic[c] || c).join(''); }