diff --git a/Project.toml b/Project.toml index 2b4002b..286502d 100644 --- a/Project.toml +++ b/Project.toml @@ -5,12 +5,15 @@ version = "0.4.1" [deps] REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" [compat] +UnPack = "1.0.2" julia = "1" [extras] Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" [targets] -test = ["Test"] +test = ["Test", "UnPack"] diff --git a/README.md b/README.md index 1d6b0af..7716a5f 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,21 @@ to_frakture to_latex ``` +There are additional styling commands and functions in the `UnicodeMath` submodule. The submodule has its own README. +```julia-repl +julia> to_latex("\\symtt{mono}") +"๐š–๐š˜๐š—๐š˜" +``` +Normalization can be enabled with the `to_latex` function so that latin and greek letters adhere to certain styling standards: +```julia-repl +julia> glyphstring = "BX ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ฮฑฮฒ ๐šช๐šต ๐œต az ๐‘Ž๐‘ง ๐›ค๐›ฏ ๐›ป โˆ‚ ๐›› ฮ“ฮž ๐›ผ๐›ฝ 1 ๐œž๐œฉ ๐›‚๐›ƒ" +julia> to_latex(glyphstring; normalize=true) # `:tex` standard +"๐ต๐‘‹ ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ๐›ผ๐›ฝ ๐šช๐šต ๐› ๐‘Ž๐‘ง ๐‘Ž๐‘ง ฮ“ฮž โˆ‡ ๐œ• ๐ ฮ“ฮž ๐›ผ๐›ฝ 1 ๐šช๐šต ๐œถ๐œท" +julia> UnicodeFun.global_config!(; math_style_spec=:iso) +"๐ต๐‘‹ ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ๐›ผ๐›ฝ ๐œž๐œฉ ๐› ๐‘Ž๐‘ง ๐‘Ž๐‘ง ๐›ค๐›ฏ โˆ‡ ๐œ• ๐ ๐›ค๐›ฏ ๐›ผ๐›ฝ 1 ๐œž๐œฉ ๐œถ๐œท" +``` Lookup tables taken from: https://github.com/ypsu/latex-to-unicode/tree/master/data + +An extra lookup table has been generated from the source file `unicode-math-table.tex` of the `unicode-math` LaTeX package, https://github.com/latex3/unicode-math \ No newline at end of file diff --git a/src/UnicodeFun.jl b/src/UnicodeFun.jl index 25d9066..22b08fa 100644 --- a/src/UnicodeFun.jl +++ b/src/UnicodeFun.jl @@ -2,11 +2,64 @@ module UnicodeFun using REPL +include("UnicodeMath/src/UnicodeMath.jl") +import .UnicodeMath +const UCM = UnicodeMath +import .UnicodeMath: UCMConfig, global_config! +import .UnicodeMath: + symbf, + symsf, + symbfsf, + symup, + symit, + symbfup, + symbfit, + symsfup, + symsfit, + symbfsfup, + symtt, + symbb, + symbbit, + symcal, + symbfcal, + symfrak, + symbffrak + # Here, we collect and reverse the REPL's latex autocompletion map. -const symbols_unsorted = [k[2:end] => v[1] for (k, v) in REPL.REPLCompletions.latex_symbols] +const repl_symbols_unsorted = Dict( + k[2:end] => v[1] for (k, v) in REPL.REPLCompletions.latex_symbols +) +# Also collect extra symbols defined by submodule UnicodeMath. +const ucm_symbols_dict = Dict( + ucm_cmd.latex_cmd[2:end] => ucm_cmd.glyph for ucm_cmd in values(UCM.extra_commands) +) +# Collect all symbols, giving precedence to REPL definitions: +const symbols_unsorted = merge(ucm_symbols_dict, repl_symbols_unsorted) |> pairs |> collect +# Build substitution list for `to_latex`: const latex_symbol_map = sort!(symbols_unsorted, by=(x)-> length(x[1]), rev=true) +# Style modifiers supported by submodule UnicodeMath, sorted: +const ucm_modifiers = ( + "symbf", + "symsf", + "symup", + "symit", + "symtt", + "symbb", + "symcal", + "symbfsf", + "symbfup", + "symbfit", + "symsfup", + "symsfit", + "symbbit", + "symfrak", + "symbfcal", + "symbfsfup", + "symbffrak", +) + include("sub_super_scripts.jl") export to_superscript, to_subscript export to_fraction, to_fraction_nl diff --git a/src/UnicodeMath/README.md b/src/UnicodeMath/README.md new file mode 100644 index 0000000..9f796c5 --- /dev/null +++ b/src/UnicodeMath/README.md @@ -0,0 +1,139 @@ +# UnicodeMath + +A small Julia module inspired by the great LaTeX package +[`unicode-math`](https://ctan.org/pkg/unicode-math?lang=en) that is available under +[the LaTeX Project Public License 1.3c](https://ctan.org/license/lppl1.3c). + +This project is not affiliated to `unicode-math`, the authors of `unicode-math` are +not responsible for this code, and do not offer support. + +## About +This module offers configurable Unicode glyph substitutions for Julia `Char`s or `AbstractString`s. +Specifically, the commands +``` +symup # upright shape +symit # italic/slanted shape +symbfup # bold upright +symbfit # bold italic +symsfup # sans-serif upright +symsfit # sans-serif italic +symbfsfup # bold sans-serif upright +symtt # mono spaced +symbb # blackboard +symbbit # blackboard italic +symcal # caligraphic +symbfcal # bold caligraphic +symfrak # frakture +symbffrak # bold frakture +``` +take as input a `Char` and, if applicable, return the correspondingly styled `Char`, e.g., as defined in the +[Alphanumeric Symbols Unicode block](https://en.wikipedia.org/wiki/Mathematical_operators_and_symbols_in_Unicode#Mathematical_Alphanumeric_Symbols_block). +These commands have direct equivalents in the LaTeX package `unicode-math` and are similar to commands in +[`UnicodeFun.jl`](https://github.com/SimonDanisch/UnicodeFun.jl): +``` +to_blackboardbold +to_boldface +to_italic +to_caligraphic +to_frakture +to_latex +``` + +If there is no symbol defined for the requested style, the input `Char` is returned. +Input strings are parsed one `Char` at a time. + +Internally, we define **alphabets**, e.g. +``` +:latin # lower case latin letters +:Latin # upper case latin letters +:greek # lower case greek letters +:Greek # upper case greek letters +:num # digits 0-9 +``` +Not every style is available for every character of every alphabet. +Please refer to the `unicode-math` manual for details, especially Table 7, or check the source file `apply_style.jl`. + +Besides the direct substitution commands, there are also +``` +_sym # normalization +symbf # bold +symsf # sans-serif +symbfsf # bold sans-serif +``` +These commands depend on a style configuration. +For example, `symbf` could return bold upright glyphs (`:bold_style=:upright`), +bold italic glyphs (`:bold_style=:italic`) or bold glyphs for which the shape is +chosen according to the input shape (`:bold_style=:literal`). + +The configuration is expressed by an `UCMConfig` object and is hierarchical. +The `math_style_spec` value (`:tex` (default), `:iso`, `:french`, `:upright`, `:literal`) induces +preconfigured values for `normal_style_spec`, `bold_style_spec`, `sans_style` as well as styling +information for the `:nabla` and `:partial` glyphs. +Both `normal_style_spec` and `bold_style_spec` in turn define a `normal_style` or `bold_style` +values for the latin and greek alphabets. +The defaults can be overwritten with the corresponding keyword arguments of the `UCMConfig` +constructor. +The following values are valid: +* `math_style_spec`: `:tex, :iso, :french, :upright, :literal` +* `normal_style_spec`: `:iso, :tex, :french, :upright, :literal` + or a `NamedTuple` with fields `:Greek, :greek, :Latin, :latin` and values `:upright, :italic, :literal`. +* `bold_style_spec`: `:iso, :tex, :upright, :literal` + or a `NamedTuple` with fields `:Greek, :greek, :Latin, :latin` and values `:upright, :italic, :literal`. +* `sans_style`, `partial`, `nabla`: `:upright, :italic, :literal` + +For `_sym` and the `sym` commands, a global configuration is set via `global_config!(cfg)` +or `global_config!(; kwargs...)`. +Alternatively, the lower level `apply_style` function can be called with configuration directly, as shown in the examples. + +## Examples + +### Basic Formatting +Use `apply_style` to format a `Char` or an `AbstractString` according to some configuration: +```julia-repl +julia> import UnicodeMath as UCM +julia> src = "BX ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ฮฑฮฒ ๐šช๐šต ๐œต az ๐‘Ž๐‘ง ๐›ค๐›ฏ ๐›ป โˆ‚ ๐›› ฮ“ฮž ๐›ผ๐›ฝ 1 ๐œž๐œฉ ๐›‚๐›ƒ" +julia> cfg_tex = UCM.UCMConfig(; math_style_spec=:tex) +julia> UCM.apply_style(src, cfg_tex) +"๐ต๐‘‹ ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ๐›ผ๐›ฝ ๐šช๐šต ๐› ๐‘Ž๐‘ง ๐‘Ž๐‘ง ฮ“ฮž โˆ‡ ๐œ• ๐ ฮ“ฮž ๐›ผ๐›ฝ 1 ๐šช๐šต ๐œถ๐œท" +``` + +The same keyword arguments that define `UCMConfig` can be given to apply style directly: +```julia-repl +julia> UCM.apply_style(src; math_style_spec=:iso) +"๐ต๐‘‹ ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ๐›ผ๐›ฝ ๐œž๐œฉ ๐› ๐‘Ž๐‘ง ๐‘Ž๐‘ง ๐›ค๐›ฏ โˆ‡ ๐œ• ๐ ๐›ค๐›ฏ ๐›ผ๐›ฝ 1 ๐œž๐œฉ ๐œถ๐œท" +julia> UCM.apply_style(src; math_style_spec=:upright) +"BX BX โˆ‡ ๐› โˆ‚ ๐›› ๐›‚๐›ƒ ฮฑฮฒ ๐šช๐šต ๐› az az ฮ“ฮž โˆ‡ โˆ‚ ๐›› ฮ“ฮž ฮฑฮฒ 1 ๐šช๐šต ๐›‚๐›ƒ" +julia> UCM.apply_style(src; math_style_spec=:french) +"BX BX โˆ‡ ๐› โˆ‚ ๐›› ๐›‚๐›ƒ ฮฑฮฒ ๐šช๐šต ๐› ๐‘Ž๐‘ง ๐‘Ž๐‘ง ฮ“ฮž โˆ‡ โˆ‚ ๐›› ฮ“ฮž ฮฑฮฒ 1 ๐šช๐šต ๐›‚๐›ƒ" +``` + +### Target Style + +A target style can be forced. +```julia-repl +julia> UCM.apply_style(src, :bfup; math_style_spec=:iso) +"๐๐— ๐๐— ๐› ๐› ๐›› ๐›› ๐›‚๐›ƒ ๐›‚๐›ƒ ๐šช๐šต ๐› ๐š๐ณ ๐š๐ณ ๐šช๐šต ๐› ๐›› ๐›› ๐šช๐šต ๐›‚๐›ƒ ๐Ÿ ๐šช๐šต ๐›‚๐›ƒ" +``` + +The styles `:bf`, `:sf` and `:bfsf` still depend on the configuration: +```julia-repl +julia> UCM.apply_style(src, :bf; math_style_spec=:iso) +"๐‘ฉ๐‘ฟ ๐‘ฉ๐‘ฟ ๐› ๐› ๐ ๐ ๐œถ๐œท ๐œถ๐œท ๐šช๐šต ๐œต ๐’‚๐’› ๐’‚๐’› ๐œž๐œฉ ๐› ๐ ๐›› ๐œž๐œฉ ๐œถ๐œท ๐Ÿ ๐œž๐œฉ ๐›‚๐›ƒ" +``` +In this example, bold glyphs have not been changed, otherwise bold italic glyphs for latin and greek letters are used. + +### Global Commands +Apply default styling (`math_style_spec=:tex`), i.e., italic regular-weight letters, except for uppercase Greek letters, which are printed upright, and upright bold-weight letters, except for lowercase greek, which are printed slanted: +```julia-repl +julia>UCM._sym(src) +"๐ต๐‘‹ ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ๐›ผ๐›ฝ ๐šช๐šต ๐› ๐‘Ž๐‘ง ๐‘Ž๐‘ง ฮ“ฮž โˆ‡ ๐œ• ๐ ฮ“ฮž ๐›ผ๐›ฝ 1 ๐šช๐šต ๐œถ๐œท" +``` +Change the configuration: +```julia-repl +julia>UCM.global_config!(;normal_style_spec=:upright) +``` +Now regular-weight letters are all upright: +```julia-repl +julia>UCM._sym(src) +"BX BX โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ฮฑฮฒ ๐šช๐šต ๐› az az ฮ“ฮž โˆ‡ ๐œ• ๐ ฮ“ฮž ฮฑฮฒ 1 ๐šช๐šต ๐œถ๐œท" +``` \ No newline at end of file diff --git a/src/UnicodeMath/src/UnicodeMath.jl b/src/UnicodeMath/src/UnicodeMath.jl new file mode 100644 index 0000000..d90dbae --- /dev/null +++ b/src/UnicodeMath/src/UnicodeMath.jl @@ -0,0 +1,197 @@ +""" + UnicodeMath + +A Julia package inspired by the great LaTeX package `unicode-math`. +As a user you should care mainly about [`apply_style`](@ref) and the globally +configured functions [`_sym`](@ref) and `symbf`, `symit`, etc. +The latter are configured with [`global_config!`](@ref) +""" +module UnicodeMath +#= +# Typography Terminology + +When it comes to typography, common concepts have different names in different contexts. +Here is what Wikipedia has to say about โ€œtypefaceโ€ and โ€œfontโ€: + +> A typeface (or font family) is a design of letters, numbers and other symbols, +> to be used in printing or for electronic display. +> Most typefaces include variations in size (e.g., 24 point), weight (e.g., light, bold), +> slope (e.g., italic), width (e.g., condensed), and so on. +> Each of these variations of the typeface is a font. + + Wikipedia contributors, "Typeface," Wikipedia, The Free Encyclopedia, + https://en.wikipedia.org/w/index.php?title=Typeface&oldid=1309901840 + (accessed September 24, 2025). + +E.g., โ€œTimesโ€ is a typeface family, and โ€œTimes Romanโ€ and โ€œTimes Italicโ€ are +typefaces/font families within that typeface, and โ€œTimes Roman 10โ€ is a font within +the typeface โ€œTimes Romanโ€. + +According to https://texdoc.org/serve/fntguide/0, LaTeX uses +* โ€œfamilyโ€ to refer to a typeface/font family, e.g. โ€œCMU Serifโ€, +* โ€œseriesโ€ for weight and spacing, +* โ€œshapeโ€ is the form of the letters, e.g., โ€œitalicโ€ or โ€œuprightโ€. +Together with โ€œsizeโ€, a font can be selected. + +For maths, commands such as `\mathbf` are defined via +`\DeclareMathAlphabet {โŸจmath-alphโŸฉ} {โŸจencodingโŸฉ} {โŸจfamilyโŸฉ} {โŸจseriesโŸฉ} {โŸจshapeโŸฉ}`. +Hence, a โ€œmath-alphabetโ€ is really just a specific font +(that has glyphs for a subset of mathematical characters). +In `unicode-math`, the new wrapper command is aptly named `\setmathfontface`. +It is okay to use โ€œalphabetโ€ in a hand-wavy manner, because even Wikipedia and +package documentation does so. + +> Every typeface is a collection of glyphs, each of which represents an individual +> letter, number, punctuation mark, or other symbol. +> The same glyph may be used for characters from different writing systems, +> e.g. Roman uppercase A looks the same as Cyrillic uppercase ะ and Greek uppercase alpha (ฮ‘). +> There are typefaces tailored for special applications, such as cartography, astrology or mathematics. + + Wikipedia contributors, "Typeface," Wikipedia, The Free Encyclopedia, + https://en.wikipedia.org/w/index.php?title=Typeface&oldid=1309901840 + (accessed September 24, 2025). + +In accordance with https://en.wikipedia.org/wiki/Glyph, the concept of a letter, number, etc. +is a grapheme-like unit, or an (abstract) character. +A glyph is its graphical representation. + +In Unicode, collections of characters often form +[scripts](https://en.wikipedia.org/wiki/Script_(Unicode)), +and usually, style information is not encoded in scripts. + +Except for math charactes, **which do not constitute a script**. +Unicode has various styles for many mathematical characters. +For example, the abstract character โ€œAโ€ has styled variants +โ€œ๐€โ€ (MATHEMATICAL BOLD CAPITAL A) or โ€œ๐ดโ€ (MATHEMATICAL ITALIC CAPITAL A). +Usually style variants (series or shape) would be provided by different fontfaces, +but math fonts contain these stylized variants themselves. + +The LaTeX package `unicode-math` has commands like `\symbf` that map between different +styles and emulate legacy commands, but do not switch fontfaces for mathematical characters +that have style variants. + +# ## Package Naming Conventions + +We mimic some of the functionality of `unicode-math` for string formatting in Julia. +To this end, we define our own โ€œalphabetsโ€, which are sets of abstract characters. +E.g. `:num` are numbers, `:latin` are lowercase Latin characters, and `:Greek` +are uppercase Greek characters. +There are also singleton sets to allow for granular configuration. + +Within an alphabet each abstract character has a unique โ€œnameโ€, i.e. "1" or "a" or "Alpha". + +Then there are styles, i.e., combinations of series and shape properties. +A math font can provide glyphs for styles defined in `base_styles` for the characters in our +alphabets. +There are styles like `:bf` (bold) or `:sf` (sans-serif) for which the mapping is +more complicated. +We might wish to have bold italic letters by default, i.e., `:bf` should alias `:bfit` +depending on a (global) configuration. + +For us, specific fonts are not relevant, so we call the Unicode characters that are mapped +โ€œglyphsโ€. +It is unavoidable that sometimes the terms โ€œcharacterโ€/โ€œglyphโ€/โ€œsymbolโ€ are used +synonymously, but hopefully context disolves confusion. +It doesn't help that Julia has types `Symbol` and `Char`. +Indeed, a glyph is represented by a `Char`. +=# + +# # Simple Global Definitions +# External Dependencies: +import UnPack: @unpack + +# Simple Type Constants: +const Nothymbol = Union{Nothing, Symbol} +const SpecTup = @NamedTuple{Greek::Symbol, greek::Symbol, Latin::Symbol, latin::Symbol} + +# # Extra LaTeX Commands +# Include standalone file defining `extra_commands::Dict{Symbol,UCMCommand}`. +# The dict has custom commands defined in `unicode-math` +# which are extracted from the LaTeX source code. +include("extra_commands.jl") # `extra_commands` + +# # Styling +# Symbols for base styles (excluding derived styles like `bf`, `sf`, `bfsfup`): +const base_styles = ( + :up, :it, + :bfup, :bfit, + :sfup, :sfit, + :bfsfup, :bfsfit, + :tt, + :bb, :bbit, + :cal, :bfcal, + :frak, :bffrak +) + +# Symbols for every possible style: +const all_styles = (base_styles..., :bf, :sf, :bfsf) + +# Alphabet definitions: +include("ucmchars.jl") +const Glyph = Union{Char, UCMChar} + +# A nested dict that is needed for mapping between styles: +const ucmchars_by_alphabet_style_name = all_ucmchars() +# A dict mapping `Char`s to `UCMChar`s (which store meta data): +const chars_to_ucmchars = inverse_ucm_dict(ucmchars_by_alphabet_style_name) + +# The basic styling command, needing configuration: +include("apply_style.jl") + +# ## Global Styling Commands +# Prepare defaults for global styling commands: +const default_config_dicts = config_dicts() +const default_substitutions = default_config_dicts.substitutions +const default_aliases = default_config_dicts.aliases + +# Store internal references so that the actual config dicts can be modified: +const default_substitutions_ref = Ref(default_substitutions) +const default_aliases_ref = Ref(default_aliases) + +""" + global_config!(; kwargs...) + global_config!(cfg::UCMConfig) + +Configure how styling functions such as `symbf` act. +Take the same keyword arguments as [`UCMConfig`](@ref). +""" +function global_config!(; kwargs...) + global default_substitutions_ref, default_aliases_ref + s, a = config_dicts(; kwargs...) + default_substitutions_ref[] = s + default_aliases_ref[] = a + return nothing +end + +function global_config!(cfg::UCMConfig) + @unpack math_style_spec, normal_style_spec, bold_style_spec, sans_style, partial, nabla = cfg + return global_config!(; + math_style_spec, normal_style_spec, bold_style_spec, sans_style, partial, nabla) +end + +# Basic global styling command: +""" + _sym(glyph::Union{Char, UCMChar, AbstractString}) + _sym(glyph::Union{Char, UCMChar, AbstractString}, trgt_style::Symbol) + +Try to style `glyph` according to global configuration, which is set by +[`global_config!`](@ref). +""" +function _sym(x::Union{AbstractString,Glyph}, trgt_style::Symbol...) + global default_substitutions_ref, default_aliases_ref + + return apply_style( + x, + default_substitutions_ref[], + default_aliases_ref[], + trgt_style... + ) +end + +# Derive specific styling functions like `symbf`: +for sn in all_styles + f = Symbol("sym", sn) + @eval $f(x::Union{AbstractString, Glyph}) = _sym(x, $(Meta.quot(sn))) +end + +end#module \ No newline at end of file diff --git a/src/UnicodeMath/src/apply_style.jl b/src/UnicodeMath/src/apply_style.jl new file mode 100644 index 0000000..e58dba7 --- /dev/null +++ b/src/UnicodeMath/src/apply_style.jl @@ -0,0 +1,527 @@ +const EMPTY_DICT = Base.ImmutableDict{Nothing, Nothing}() + +# There are several parameters that influence how glyphs are mapped. + +# A **normal style** defines how a user typed character in a standard style +# (`:up` or `it`) is mapped to glyphs. +# `:italic` forces italic glyphs, `:upright` forces upright glyphs, +# `:literal` does not change style. +# Similarly, a **bold style** specifies whether or not bold glyphs are upright or +# slanted. Same for **sans style**. +# Special alphabets (`partial`, `nabla`) can be configured, too. +# +# A normal style specification (:iso, :tex, ...) assigns normal styles to glyphs from +# certain alphabets, and a bold style specification assigns bold styles to glyphs from +# certain alphabets. +# +# On the top level, a math style specification sets normal and bold style specifications +# and styles for the other alphabets. + +""" + UCMConfig(; math_style_spec = :tex, kwargs...) + +Styling configuration. The keywords `normal_style_spec`, `bold_style_spec`, `sans_style`, +`partial` and `nabla` can be used to override defaults set by `math_style_spec`. +""" +Base.@kwdef struct UCMConfig + math_style_spec :: Nothymbol = :tex + ## overrides + normal_style_spec :: Union{SpecTup,Nothymbol} = nothing + bold_style_spec :: Union{SpecTup,Nothymbol} = nothing + sans_style :: Nothymbol = nothing + partial :: Nothymbol = nothing + nabla :: Nothymbol = nothing +end + +""" + apply_style(cfg::UCMConfig, glyph::Char) + apply_style(cfg::UCMConfig, glyph::Char, trgt_style::Symbol) + apply_style(glyph::Char; kwargs...) + apply_style(glyph::Char, trgt_style::Symbol; kwargs...) + +Stylize glyph according to configuration `cfg` or keyword arguments.""" +function apply_style(ch::Char, args...; kwargs...) + ucm_ch = get(chars_to_ucmchars, ch, nothing) + isnothing(ucm_ch) && return ch + _ucm_ch = apply_style(ucm_ch, args...; kwargs...) + return _ucm_ch.glyph +end + +function apply_style( + ucm_ch::UCMChar, cfg::UCMConfig, trgt_style::Symbol... +) + @unpack math_style_spec, normal_style_spec, bold_style_spec, sans_style, partial, nabla = cfg + @unpack substitutions, aliases = config_dicts(; + math_style_spec, normal_style_spec, bold_style_spec, sans_style, partial, nabla) + return apply_style(ucm_ch, substitutions, aliases, trgt_style...) +end + +function apply_style(ucm_ch::UCMChar, trgt_style::Symbol...; kwargs...) + cfg = UCMConfig(; kwargs...) + return apply_style(ucm_ch, cfg, trgt_style...) +end + +function apply_style( + ucm_ch::UCMChar, substitutions::AbstractDict, aliases::AbstractDict +) + trgt_style = _typed_style(ucm_ch.style) + return apply_style(ucm_ch, substitutions, aliases, trgt_style) +end + +function _typed_style(symb) + _symb = if symb == :up + ## check normal style + :UP + elseif symb == :it + ## check normal style + :IT + elseif symb == :bfup + ## check bold style + :BFUP + elseif symb == :bfit + ## check bold style + :BFIT + elseif symb == :sfup + ## check sans style + :SFUP + elseif symb == :sfit + ## check sans style + :SFIT + elseif symb == :bfsfup + ## check sans style + :BFSFUP + elseif symb == :bfsfit + ## check sans style + :BFSFIT + else + symb + end + return _symb +end + +function apply_style( + ucm_ch::UCMChar, substitutions::AbstractDict, aliases::AbstractDict, trgt_style::Symbol +) + subs_alphabet = get(substitutions, ucm_ch.alphabet, EMPTY_DICT) + subs_current_style = get(subs_alphabet, ucm_ch.style, EMPTY_DICT) + trgt_style = get(subs_current_style, trgt_style, trgt_style) + + alisaes_alphabet = get(aliases, ucm_ch.alphabet, EMPTY_DICT) + trgt_style = get(alisaes_alphabet, trgt_style, trgt_style) + + return _choose_style(ucm_ch, trgt_style) +end + +function apply_style( + io::IO, ch::Glyph, args...; kwargs... +) + print(io, apply_style(ch, args...; kwargs...)) +end + +function apply_style(io::IO, str::AbstractString, args...; kwargs...) + cls = ch -> apply_style(ch, args...; kwargs...) + for ch in str + print(io, cls(ch)) + end +end + +function apply_style(str::AbstractString, args...; kwargs...) + sprint() do io + apply_style(io, str, args...; kwargs...) + end +end + +## helper function -- given `ucm_ch::UCMChar` and a target style like `:bf`, +## return the corresponding `UCMChar` from the styled alphabet, if it is available for `ucm_ch`. +function _choose_style(ucm_ch, style_symb) + _ucm_ch = _choose_style(ucm_ch.name, ucm_ch.alphabet, style_symb) + isnothing(_ucm_ch) && return ucm_ch + return _ucm_ch +end + +function _choose_style(name_str, alphabet_symb, style_symb) + global ucmchars_by_alphabet_style_name + ## check if the alphabet is key for outer dict: + ucmchars_by_style_name = get(ucmchars_by_alphabet_style_name, alphabet_symb, nothing) + isnothing(ucmchars_by_style_name) && return nothing + + ## check if target style is key in 2nd level: + ucmchars_by_name = get(ucmchars_by_style_name, style_symb, nothing) + isnothing(ucmchars_by_name) && return nothing + + ## inner dict has `name => UCMChar` entries for target style. + ## return value if it exists + ucm_ch = get(ucmchars_by_name, name_str, nothing) + return ucm_ch +end + +function parse_config(; + math_style_spec=:tex, + normal_style_spec=nothing, + bold_style_spec=nothing, + sans_style=nothing, + partial=nothing, + nabla=nothing +) + cfg = if math_style_spec == :iso + (; + nabla = :upright, + partial = :italic, + normal_style_spec = :iso, + bold_style_spec = :iso, + sans_style = :italic + ) + elseif math_style_spec == :tex + (; + nabla = :upright, + partial = :italic, + normal_style_spec = :tex, + bold_style_spec = :tex, + sans_style = :upright + ) + elseif math_style_spec == :french + (; + nabla = :upright, + partial = :upright, + normal_style_spec = :french, + bold_style_spec = :upright, + sans_style = :upright + ) + elseif math_style_spec == :upright + (; + nabla = :upright, + partial = :upright, + normal_style_spec = :upright, + bold_style_spec = :upright, + sans_style = :upright + ) + else + (; + nabla = :literal, + partial = :literal, + normal_style_spec = :literal, + bold_style_spec = :literal, + sans_style = :literal + ) + end + normal_style_spec = isnothing(normal_style_spec) ? cfg.normal_style_spec : normal_style_spec + bold_style_spec = isnothing(bold_style_spec) ? cfg.bold_style_spec : bold_style_spec + sans_style = isnothing(sans_style) ? cfg.sans_style : sans_style + partial = isnothing(partial) ? cfg.partial : partial + nabla = isnothing(nabla) ? cfg.nabla : nabla + return (; nabla, partial, normal_style_spec, bold_style_spec, sans_style) +end + +function config_dicts(; kwargs...) + cfg = parse_config(; kwargs...) + substitutions = alphabet_substitutions(; cfg...) + + aliases_num = Dict( + :it => :up, + :bf => :bfup, + :bfit => :bfup, + :sf => :sfup, + :sfit => :sfup, + :bfsf => :bfsfup, + :bfsfit => :bfsfup, + :bbit => :bb # this is different from LaTeX package + ) + aliases = Dict( + :num => aliases_num + ) + + return (; substitutions, aliases) +end + +# For a given alphabet, we generate a โ€œsubstitutions dict (of dicts)โ€ to map between styles. +# It is a bit verbose, but simple and we avoid recursion this way: +function alphabet_substitutions(; + normal_style_spec, + bold_style_spec, + sans_style, + partial, + nabla +) + ns = parse_normal_style_spec(normal_style_spec) + bs = parse_bold_style_spec(bold_style_spec) + subs = Dict( + :num => _subtitutions_dict(; normal_style=:upright, bold_style=:upright, sans_style=:upright), + :Greek => _subtitutions_dict(; normal_style=ns.Greek, bold_style=bs.Greek, sans_style), + :greek => _subtitutions_dict(; normal_style=ns.greek, bold_style=bs.greek, sans_style), + :Latin => _subtitutions_dict(; normal_style=ns.Latin, bold_style=bs.Latin, sans_style), + :latin => _subtitutions_dict(; normal_style=ns.latin, bold_style=bs.latin, sans_style), + :partial => _subtitutions_dict(; normal_style=partial, bold_style=partial, sans_style=partial), + :Nabla => _subtitutions_dict(; normal_style=nabla, bold_style=nabla, sans_style=nabla), + ) + subs[:dotless] = subs[:latin] + + return subs +end + +# A normal style (:iso, :tex, :french, :upright) assigns normal style specification to alphabets: +function parse_normal_style_spec(normal_style_spec::Symbol) + normal_style_ntup = if normal_style_spec == :iso + (; + Greek = :italic, + greek = :italic, + Latin = :italic, + latin = :italic + ) + elseif normal_style_spec == :tex + (; + Greek = :upright, + greek = :italic, + Latin = :italic, + latin = :italic + ) + elseif normal_style_spec == :french + (; + Greek = :upright, + greek = :upright, + Latin = :upright, + latin = :italic + ) + elseif normal_style_spec == :upright + (; + Greek = :upright, + greek = :upright, + Latin = :upright, + latin = :upright, + ) + else + (; + Greek = :literal, + greek = :literal, + Latin = :literal, + latin = :literal, + ) + end + return normal_style_ntup +end +function parse_normal_style_spec(spec::SpecTup) + for symb in values(spec) + @assert symb in (:literal, :upright, :italic) + end + return spec +end +function parse_normal_style_spec(spec) + error("Normal style specification must be a symbol or of type $(SpecTup)") +end + +function parse_bold_style_spec( + bold_style_spec::Symbol +) + bold_style_ntup = if bold_style_spec == :iso + (; + Greek = :italic, + greek = :italic, + Latin = :italic, + latin = :italic + ) + elseif bold_style_spec == :tex + (; + Greek = :upright, + greek = :italic, + Latin = :upright, + latin = :upright + ) + elseif bold_style_spec == :upright + (; + Greek = :upright, + greek = :upright, + Latin = :upright, + latin = :upright, + ) + else + (; + Greek = :literal, + greek = :literal, + Latin = :literal, + latin = :literal, + ) + end + return bold_style_ntup +end +function parse_bold_style_spec(spec::SpecTup) + for symb in values(spec) + @assert symb in (:literal, :upright, :italic) + end + return spec +end +function parse_bold_style_spec(spec) + error("Bold style specification must be a symbol or of type $(SpecTup)") +end + +function _subtitutions_dict(; + normal_style=:literal, + bold_style=:literal, + sans_style=:literal +) + ## `subs_up`: how glyphs with an upright style should be transformed if we request + ## a certain style, which are keys of this dict + subs_up = Dict( sn => sn for sn = base_styles ) + subs_up[:UP] = normal_style == :italic ? :it : (normal_style == :upright ? :up : :up) + subs_up[:bf] = if bold_style == :upright ### expanded for illustration purposes + ### bold_style forces upright bold + :bfup + elseif bold_style == :italic + ### bold_style forces italic bold + :bfit + else + ### bold_style does not care about slanting, we have an `:up` glyph, so keep it that way + :bfup + end + subs_up[:sf] = sans_style == :upright ? :sfup : (sans_style == :italic ? :sfit : :sfup) + subs_up[:bfsf] = sans_style == :upright ? :bfsfup : (sans_style == :italic ? :bfsfit : :bfsfup) + + ## `subs_it`: transformations for italic glyphs + subs_it = Dict( sn => sn for sn = base_styles ) + subs_it[:IT] = normal_style == :italic ? :it : (normal_style == :upright ? :up : :it) + subs_it[:bf] = bold_style == :upright ? :bfup : (bold_style == :italic ? :bfit : :bfit) + subs_it[:sf] = sans_style == :upright ? :sfup : (sans_style == :italic ? :sfit : :sfit) + subs_it[:bfsf] = sans_style == :upright ? :bfsfup : (sans_style == :italic ? :bfsfit : :bfsfit) + #subs_it[:bb] = :bbit # `blackboard_style`? + + ## `sub_bfup`: transformations for bold upright glyphs + subs_bfup = Dict( + :up => :bfup, # no-op + :bfup => :bfup, # no-op + :bf => :bfup, # no-op + :it => :bfit, + :bfit => :bfit, + :sfup => :bfsfup, + :bfsfup => :bfsfup, + :sfit => :bfsfit, + :bfsfit => :bfsfit, + :cal => :bfcal, + :frak => :bffrak + ) + subs_bfup[:BFUP] = bold_style == :upright ? :bfup : (bold_style == :italic ? :bfit : :bfup) + subs_bfup[:bfsf] = subs_bfup[:sf] = sans_style == :upright ? :bfsfup : (sans_style == :italic ? :bfsfit : :bfsfup) + + ## `sub_bfit`: transformations for bold italic glyphs + subs_bfit = Dict( + :bf => :bf, # no-op + :bfit => :bfit, # no-op + :it => :bfit, # no-op + :up => :bfup, # undo italization + :bfup => :bfup, # undo italization + :sfit => :bfsfit, + :bfsfit => :bfsfit, + :sfup => :bfsfup, + :bfsfup => :bfsfup, + ) + subs_bfit[:BFIT] = bold_style == :upright ? :bfup : (bold_style == :italic ? :bfit : :bfit) + subs_bfit[:bfsf] = subs_bfit[:sf] = sans_style == :upright ? :bfsfup : (sans_style == :italic ? :bfsfit : :bfsfit) + + ## `sub_bfit`: transformations for sans-serif upright glyphs + subs_sfup = Dict( + :sf => :sfup, # no-op + :sfup => :sfup, # no-op + :up => :sfup, # no-op + :it => :sfit, + :sfit => :sfit, + :bfup => :bfsfup, + :bfsfup => :bfsfup, + :bfit => :bfsfit, + :bfsfit => :bfsfit, + ) + subs_sfup[:SFUP] = sans_style == :upright ? :sfup : (sans_style == :italic ? :sfit : :sfup) + subs_sfup[:bfsf] = subs_sfup[:bf] = sans_style == :upright ? :bfsfup : (sans_style == :italic ? :bfsfit : :bfsfup) + + ## `sub_bfit`: transformations for sans-serif italic glyphs + subs_sfit = Dict( + :sf => :sfit, # no-op + :sfit => :sfit, # no-op + :it => :sfit, # no-op + :up => :sfup, + :sfup => :sfup, + :bfit => :bfsfit, + :bfsfit => :bfsfit, + :bfup => :bfsfup, + :bfsfup => :bfsfup, + ) + subs_sfit[:SFIT] = sans_style == :upright ? :sfup : (sans_style == :italic ? :sfit : :sfit) + subs_sfit[:bfsf] = subs_sfit[:bf] = sans_style == :upright ? :bfsfup : (sans_style == :italic ? :bfsfit : :bfsfit) + + ## `sub_bfsfup`: transformations for bold sans-serif upright glyphs + subs_bfsfup = Dict( + ## no-ops: + :up => :bfsfup, + :bf => :bfsfup, + :sf => :bfsfup, + :bfup => :bfsfup, + :sfup => :bfsfup, + :bfsfup => :bfsfup, + ## other: + :it => :bfsfit, + :sfit => :bfsfit, + :bfsfit => :bfsfit + ) + subs_bfsfup[:BFSFUP] = sans_style == :upright ? :bfsfup : (sans_style == :italic ? :bfsfit : :bfsfup) + + ## `sub_bfsfit`: transformations for bold sans-serif italic glyphs + subs_bfsfit = Dict( + ## no-ops: + :it => :bfsfit, + :bf => :bfsfit, + :sf => :bfsfit, + :bfit => :bfsfit, + :sfit => :bfsfit, + :bfsfit => :bfsfit, + ## other: + :up => :bfsfup, + :sfup => :bfsfup, + :bfsfup => :bfsfup + ) + subs_bfsfit[:BFSFIT] = sans_style == :upright ? :bfsfup : (sans_style == :italic ? :bfsfit : :bfsfit) + + ## other + subs_tt = Dict( + :tt => :tt, + :up => :tt, + ) + subs_bb = Dict( + :bb => :bb, + :up => :bb, + :it => :bbit + ) + subs_bbit = Dict( + :bb => :bbit, + :it => :bbit, + :up => :bb + ) + + subs_cal = Dict( + :cal => :cal, + :up => :cal, + :bf => :bfcal, + ) + subs_frak = Dict( + :frak => :frak, + :up => :frak, + :bf => :bffrak + ) + subs_bffrak = Dict( + :frak => :bffrak, + :up => :bffrak, + :bf => :bffrak + ) + + return Dict( + :up => subs_up, + :bfup => subs_bfup, + :it => subs_it, + :bfit => subs_bfit, + :sfup => subs_sfup, + :bfsfup => subs_bfsfup, + :sfit => subs_sfit, + :bfsfit => subs_bfsfit, + :tt => subs_tt, + :bb => subs_bb, + :bbit => subs_bbit, + :cal => subs_cal, + :frak => subs_frak, + :bffrak => subs_bffrak + ) +end \ No newline at end of file diff --git a/src/UnicodeMath/src/extra_commands.jl b/src/UnicodeMath/src/extra_commands.jl new file mode 100644 index 0000000..a7458d3 --- /dev/null +++ b/src/UnicodeMath/src/extra_commands.jl @@ -0,0 +1,2461 @@ +# This file contains LaTeX commands originally +# defined in source file `unicode-math-table.tex` +# of the UNICODE-MATH package + +struct UCMCommand + latex_cmd :: String + glyph :: Char + group :: Symbol + desc :: String +end + +const extra_commands = Dict{Symbol, UCMCommand}( + :mathexclam => UCMCommand("\\mathexclam", '!', :mathclose, "exclamation mark"), + :mathoctothorpe => UCMCommand("\\mathoctothorpe", '#', :mathord, "number sign"), + :mathdollar => UCMCommand("\\mathdollar", '$', :mathord, "dollar sign"), + :mathpercent => UCMCommand("\\mathpercent", '%', :mathord, "percent sign"), + :mathampersand => UCMCommand("\\mathampersand", '&', :mathord, "ampersand"), + :lparen => UCMCommand("\\lparen", '(', :mathopen, "left parenthesis"), + :rparen => UCMCommand("\\rparen", ')', :mathclose, "right parenthesis"), + :mathplus => UCMCommand("\\mathplus", '+', :mathbin, "plus sign b:"), + :mathcomma => UCMCommand("\\mathcomma", ',', :mathpunct, "comma"), + :mathperiod => UCMCommand("\\mathperiod", '.', :mathord, "full stop, period"), + :mathslash => UCMCommand("\\mathslash", '/', :mathord, "solidus"), + :mathcolon => UCMCommand("\\mathcolon", ':', :mathpunct, "colon"), + :mathsemicolon => UCMCommand("\\mathsemicolon", ';', :mathpunct, "semicolon p:"), + :less => UCMCommand("\\less", '<', :mathrel, "less-than sign r:"), + :equal => UCMCommand("\\equal", '=', :mathrel, "equals sign r:"), + :greater => UCMCommand("\\greater", '>', :mathrel, "greater-than sign r:"), + :mathquestion => UCMCommand("\\mathquestion", '?', :mathord, "question mark"), + :mathatsign => UCMCommand("\\mathatsign", '@', :mathord, "commercial at"), + :lbrack => UCMCommand("\\lbrack", '[', :mathopen, "left square bracket"), + :backslash => UCMCommand("\\backslash", '\\', :mathord, "reverse solidus"), + :rbrack => UCMCommand("\\rbrack", ']', :mathclose, "right square bracket"), + :lbrace => UCMCommand("\\lbrace", '{', :mathopen, "left curly bracket"), + :vert => UCMCommand("\\vert", '|', :mathfence, "vertical bar"), + :rbrace => UCMCommand("\\rbrace", '}', :mathclose, "right curly bracket"), + :mathsterling => UCMCommand("\\mathsterling", 'ยฃ', :mathord, "pound sign"), + :mathyen => UCMCommand("\\mathyen", 'ยฅ', :mathord, "yen sign"), + :mathsection => UCMCommand("\\mathsection", 'ยง', :mathord, "section symbol"), + :neg => UCMCommand("\\neg", 'ยฌ', :mathord, "/neg /lnot not sign"), + :pm => UCMCommand("\\pm", 'ยฑ', :mathbin, "plus-or-minus sign"), + :mathparagraph => UCMCommand("\\mathparagraph", 'ยถ', :mathord, "paragraph symbol"), + :cdotp => UCMCommand("\\cdotp", 'ยท', :mathbin, "/centerdot b: middle dot"), + :times => UCMCommand("\\times", 'ร—', :mathbin, "multiply sign"), + :matheth => UCMCommand("\\matheth", 'รฐ', :mathalpha, "eth"), + :div => UCMCommand("\\div", 'รท', :mathbin, "divide sign"), + :Zbar => UCMCommand("\\Zbar", 'ฦต', :mathord, "impedance (latin capital letter z with stroke)"), + :grave => UCMCommand("\\grave", 'ฬ€', :mathaccent, "grave accent"), + :acute => UCMCommand("\\acute", 'ฬ', :mathaccent, "acute accent"), + :hat => UCMCommand("\\hat", 'ฬ‚', :mathaccent, "circumflex accent"), + :widehat => UCMCommand("\\widehat", 'ฬ‚', :mathaccentwide, "circumflex accent"), + :tilde => UCMCommand("\\tilde", 'ฬƒ', :mathaccent, "tilde"), + :widetilde => UCMCommand("\\widetilde", 'ฬƒ', :mathaccentwide, "tilde"), + :bar => UCMCommand("\\bar", 'ฬ„', :mathaccent, "macron"), + :overbar => UCMCommand("\\overbar", 'ฬ…', :mathaccent, "overbar embellishment"), + :wideoverbar => UCMCommand("\\wideoverbar", 'ฬ…', :mathaccentwide, "stretchy overbar embellishment"), + :breve => UCMCommand("\\breve", 'ฬ†', :mathaccent, "breve"), + :widebreve => UCMCommand("\\widebreve", 'ฬ†', :mathaccentwide, "stretchy breve"), + :dot => UCMCommand("\\dot", 'ฬ‡', :mathaccent, "dot above"), + :ddot => UCMCommand("\\ddot", 'ฬˆ', :mathaccent, "dieresis"), + :ovhook => UCMCommand("\\ovhook", 'ฬ‰', :mathaccent, "combining hook above"), + :ocirc => UCMCommand("\\ocirc", 'ฬŠ', :mathaccent, "ring"), + :check => UCMCommand("\\check", 'ฬŒ', :mathaccent, "caron"), + :widecheck => UCMCommand("\\widecheck", 'ฬŒ', :mathaccentwide, "stretchy caron"), + :candra => UCMCommand("\\candra", 'ฬ', :mathaccent, "candrabindu (non-spacing)"), + :oturnedcomma => UCMCommand("\\oturnedcomma", 'ฬ’', :mathaccent, "combining turned comma above"), + :ocommatopright => UCMCommand("\\ocommatopright", 'ฬ•', :mathaccent, "combining comma above right"), + :droang => UCMCommand("\\droang", 'ฬš', :mathaccent, "left angle above (non-spacing)"), + :wideutilde => UCMCommand("\\wideutilde", 'ฬฐ', :mathbotaccentwide, "under tilde accent (multiple characters and non-spacing)"), + :mathunderbar => UCMCommand("\\mathunderbar", 'ฬฒ', :mathbotaccentwide, "combining low line"), + :notaccent => UCMCommand("\\notaccent", 'ฬธ', :mathaccentoverlay, "combining long solidus overlay"), + :underleftrightarrow => UCMCommand("\\underleftrightarrow", 'อ', :mathbotaccentwide, "underleftrightarrow accent"), + :mupAlpha => UCMCommand("\\mupAlpha", 'ฮ‘', :mathalpha, "capital alpha, greek"), + :mupBeta => UCMCommand("\\mupBeta", 'ฮ’', :mathalpha, "capital beta, greek"), + :mupGamma => UCMCommand("\\mupGamma", 'ฮ“', :mathalpha, "capital gamma, greek"), + :mupDelta => UCMCommand("\\mupDelta", 'ฮ”', :mathalpha, "capital delta, greek"), + :mupEpsilon => UCMCommand("\\mupEpsilon", 'ฮ•', :mathalpha, "capital epsilon, greek"), + :mupZeta => UCMCommand("\\mupZeta", 'ฮ–', :mathalpha, "capital zeta, greek"), + :mupEta => UCMCommand("\\mupEta", 'ฮ—', :mathalpha, "capital eta, greek"), + :mupTheta => UCMCommand("\\mupTheta", 'ฮ˜', :mathalpha, "capital theta, greek"), + :mupIota => UCMCommand("\\mupIota", 'ฮ™', :mathalpha, "capital iota, greek"), + :mupKappa => UCMCommand("\\mupKappa", 'ฮš', :mathalpha, "capital kappa, greek"), + :mupLambda => UCMCommand("\\mupLambda", 'ฮ›', :mathalpha, "capital lambda, greek"), + :mupMu => UCMCommand("\\mupMu", 'ฮœ', :mathalpha, "capital mu, greek"), + :mupNu => UCMCommand("\\mupNu", 'ฮ', :mathalpha, "capital nu, greek"), + :mupXi => UCMCommand("\\mupXi", 'ฮž', :mathalpha, "capital xi, greek"), + :mupOmicron => UCMCommand("\\mupOmicron", 'ฮŸ', :mathalpha, "capital omicron, greek"), + :mupPi => UCMCommand("\\mupPi", 'ฮ ', :mathalpha, "capital pi, greek"), + :mupRho => UCMCommand("\\mupRho", 'ฮก', :mathalpha, "capital rho, greek"), + :mupSigma => UCMCommand("\\mupSigma", 'ฮฃ', :mathalpha, "capital sigma, greek"), + :mupTau => UCMCommand("\\mupTau", 'ฮค', :mathalpha, "capital tau, greek"), + :mupUpsilon => UCMCommand("\\mupUpsilon", 'ฮฅ', :mathalpha, "capital upsilon, greek"), + :mupPhi => UCMCommand("\\mupPhi", 'ฮฆ', :mathalpha, "capital phi, greek"), + :mupChi => UCMCommand("\\mupChi", 'ฮง', :mathalpha, "capital chi, greek"), + :mupPsi => UCMCommand("\\mupPsi", 'ฮจ', :mathalpha, "capital psi, greek"), + :mupOmega => UCMCommand("\\mupOmega", 'ฮฉ', :mathalpha, "capital omega, greek"), + :mupalpha => UCMCommand("\\mupalpha", 'ฮฑ', :mathalpha, "small alpha, greek"), + :mupbeta => UCMCommand("\\mupbeta", 'ฮฒ', :mathalpha, "small beta, greek"), + :mupgamma => UCMCommand("\\mupgamma", 'ฮณ', :mathalpha, "small gamma, greek"), + :mupdelta => UCMCommand("\\mupdelta", 'ฮด', :mathalpha, "small delta, greek"), + :mupvarepsilon => UCMCommand("\\mupvarepsilon", 'ฮต', :mathalpha, "rounded small varepsilon, greek"), + :mupzeta => UCMCommand("\\mupzeta", 'ฮถ', :mathalpha, "small zeta, greek"), + :mupeta => UCMCommand("\\mupeta", 'ฮท', :mathalpha, "small eta, greek"), + :muptheta => UCMCommand("\\muptheta", 'ฮธ', :mathalpha, "straight theta, small theta, greek"), + :mupiota => UCMCommand("\\mupiota", 'ฮน', :mathalpha, "small iota, greek"), + :mupkappa => UCMCommand("\\mupkappa", 'ฮบ', :mathalpha, "small kappa, greek"), + :muplambda => UCMCommand("\\muplambda", 'ฮป', :mathalpha, "small lambda, greek"), + :mupmu => UCMCommand("\\mupmu", 'ฮผ', :mathalpha, "small mu, greek"), + :mupnu => UCMCommand("\\mupnu", 'ฮฝ', :mathalpha, "small nu, greek"), + :mupxi => UCMCommand("\\mupxi", 'ฮพ', :mathalpha, "small xi, greek"), + :mupomicron => UCMCommand("\\mupomicron", 'ฮฟ', :mathalpha, "small omicron, greek"), + :muppi => UCMCommand("\\muppi", 'ฯ€', :mathalpha, "small pi, greek"), + :muprho => UCMCommand("\\muprho", 'ฯ', :mathalpha, "small rho, greek"), + :mupvarsigma => UCMCommand("\\mupvarsigma", 'ฯ‚', :mathalpha, "terminal sigma, greek"), + :mupsigma => UCMCommand("\\mupsigma", 'ฯƒ', :mathalpha, "small sigma, greek"), + :muptau => UCMCommand("\\muptau", 'ฯ„', :mathalpha, "small tau, greek"), + :mupupsilon => UCMCommand("\\mupupsilon", 'ฯ…', :mathalpha, "small upsilon, greek"), + :mupvarphi => UCMCommand("\\mupvarphi", 'ฯ†', :mathalpha, "curly or open small phi, greek"), + :mupchi => UCMCommand("\\mupchi", 'ฯ‡', :mathalpha, "small chi, greek"), + :muppsi => UCMCommand("\\muppsi", 'ฯˆ', :mathalpha, "small psi, greek"), + :mupomega => UCMCommand("\\mupomega", 'ฯ‰', :mathalpha, "small omega, greek"), + :mupvartheta => UCMCommand("\\mupvartheta", 'ฯ‘', :mathalpha, "/vartheta - curly or open theta"), + :mupphi => UCMCommand("\\mupphi", 'ฯ•', :mathalpha, "/straightphi - small phi, greek"), + :mupvarpi => UCMCommand("\\mupvarpi", 'ฯ–', :mathalpha, "rounded small pi (pomega), greek"), + :upDigamma => UCMCommand("\\upDigamma", 'ฯœ', :mathalpha, "capital digamma"), + :updigamma => UCMCommand("\\updigamma", 'ฯ', :mathalpha, "old greek small letter digamma"), + :mupvarkappa => UCMCommand("\\mupvarkappa", 'ฯฐ', :mathalpha, "rounded small kappa, greek"), + :mupvarrho => UCMCommand("\\mupvarrho", 'ฯฑ', :mathalpha, "rounded small rho, greek"), + :mupvarTheta => UCMCommand("\\mupvarTheta", 'ฯด', :mathalpha, "greek capital theta symbol"), + :mupepsilon => UCMCommand("\\mupepsilon", 'ฯต', :mathalpha, "greek lunate varepsilon symbol"), + :upbackepsilon => UCMCommand("\\upbackepsilon", 'ฯถ', :mathord, "greek reversed lunate epsilon symbol"), + :mathhyphen => UCMCommand("\\mathhyphen", 'โ€', :mathalpha, "hyphen"), + :horizbar => UCMCommand("\\horizbar", 'โ€•', :mathord, "horizontal bar"), + :Vert => UCMCommand("\\Vert", 'โ€–', :mathfence, "double vertical bar"), + :twolowline => UCMCommand("\\twolowline", 'โ€—', :mathord, "double low line (spacing)"), + :dagger => UCMCommand("\\dagger", 'โ€ ', :mathbin, "dagger relation"), + :ddagger => UCMCommand("\\ddagger", 'โ€ก', :mathbin, "double dagger relation"), + :smblkcircle => UCMCommand("\\smblkcircle", 'โ€ข', :mathbin, "/bullet b: round bullet, filled"), + :enleadertwodots => UCMCommand("\\enleadertwodots", 'โ€ฅ', :mathord, "double baseline dot (en leader)"), + :unicodeellipsis => UCMCommand("\\unicodeellipsis", 'โ€ฆ', :mathord, "ellipsis (horizontal)"), + :prime => UCMCommand("\\prime", 'โ€ฒ', :mathord, "prime or minute, not superscripted"), + :dprime => UCMCommand("\\dprime", 'โ€ณ', :mathord, "double prime or second, not superscripted"), + :trprime => UCMCommand("\\trprime", 'โ€ด', :mathord, "triple prime (not superscripted)"), + :backprime => UCMCommand("\\backprime", 'โ€ต', :mathord, "reverse prime, not superscripted"), + :backdprime => UCMCommand("\\backdprime", 'โ€ถ', :mathord, "double reverse prime, not superscripted"), + :backtrprime => UCMCommand("\\backtrprime", 'โ€ท', :mathord, "triple reverse prime, not superscripted"), + :caretinsert => UCMCommand("\\caretinsert", 'โ€ธ', :mathord, "caret (insertion mark)"), + :Exclam => UCMCommand("\\Exclam", 'โ€ผ', :mathord, "double exclamation mark"), + :tieconcat => UCMCommand("\\tieconcat", 'โ€', :mathbin, "character tie, z notation sequence concatenation"), + :hyphenbullet => UCMCommand("\\hyphenbullet", 'โƒ', :mathord, "rectangle, filled (hyphen bullet)"), + :fracslash => UCMCommand("\\fracslash", 'โ„', :mathbin, "fraction slash"), + :Question => UCMCommand("\\Question", 'โ‡', :mathord, "double question mark"), + :closure => UCMCommand("\\closure", 'โ', :mathrel, "close up"), + :qprime => UCMCommand("\\qprime", 'โ—', :mathord, "quadruple prime, not superscripted"), + :euro => UCMCommand("\\euro", 'โ‚ฌ', :mathord, "euro sign"), + :leftharpoonaccent => UCMCommand("\\leftharpoonaccent", 'โƒ', :mathaccent, "combining left harpoon above"), + :overleftharpoon => UCMCommand("\\overleftharpoon", 'โƒ', :mathaccentwide, "combining left harpoon above"), + :rightharpoonaccent => UCMCommand("\\rightharpoonaccent", 'โƒ‘', :mathaccent, "combining right harpoon above"), + :overrightharpoon => UCMCommand("\\overrightharpoon", 'โƒ‘', :mathaccentwide, "combining right harpoon above"), + :vertoverlay => UCMCommand("\\vertoverlay", 'โƒ’', :mathaccent, "combining long vertical line overlay"), + :overleftarrow => UCMCommand("\\overleftarrow", 'โƒ–', :mathaccentwide, "combining left arrow above"), + :overrightarrow => UCMCommand("\\overrightarrow", 'โƒ—', :mathaccentwide, "combining left arrow above"), + :vec => UCMCommand("\\vec", 'โƒ—', :mathaccent, "combining right arrow above"), + :dddot => UCMCommand("\\dddot", 'โƒ›', :mathaccent, "combining three dots above"), + :ddddot => UCMCommand("\\ddddot", 'โƒœ', :mathaccent, "combining four dots above"), + :enclosecircle => UCMCommand("\\enclosecircle", 'โƒ', :mathord, "combining enclosing circle"), + :enclosesquare => UCMCommand("\\enclosesquare", 'โƒž', :mathord, "combining enclosing square"), + :enclosediamond => UCMCommand("\\enclosediamond", 'โƒŸ', :mathord, "combining enclosing diamond"), + :overleftrightarrow => UCMCommand("\\overleftrightarrow", 'โƒก', :mathaccentwide, "combining left right arrow above"), + :enclosetriangle => UCMCommand("\\enclosetriangle", 'โƒค', :mathord, "combining enclosing upward pointing triangle"), + :annuity => UCMCommand("\\annuity", 'โƒง', :mathaccent, "combining annuity symbol"), + :threeunderdot => UCMCommand("\\threeunderdot", 'โƒจ', :mathbotaccent, "combining triple underdot"), + :widebridgeabove => UCMCommand("\\widebridgeabove", 'โƒฉ', :mathaccent, "combining wide bridge above"), + :underrightharpoondown => UCMCommand("\\underrightharpoondown", 'โƒฌ', :mathbotaccentwide, "combining rightwards harpoon with barb downwards"), + :underleftharpoondown => UCMCommand("\\underleftharpoondown", 'โƒญ', :mathbotaccentwide, "combining leftwards harpoon with barb downwards"), + :underleftarrow => UCMCommand("\\underleftarrow", 'โƒฎ', :mathbotaccentwide, "combining left arrow below"), + :underrightarrow => UCMCommand("\\underrightarrow", 'โƒฏ', :mathbotaccentwide, "combining right arrow below"), + :asteraccent => UCMCommand("\\asteraccent", 'โƒฐ', :mathaccent, "combining asterisk above"), + :BbbC => UCMCommand("\\BbbC", 'โ„‚', :mathalpha, "/bbb c, open face c"), + :Eulerconst => UCMCommand("\\Eulerconst", 'โ„‡', :mathord, "euler constant"), + :mscrg => UCMCommand("\\mscrg", 'โ„Š', :mathalpha, "/scr g, script letter g"), + :mscrH => UCMCommand("\\mscrH", 'โ„‹', :mathalpha, "hamiltonian (script capital h)"), + :mfrakH => UCMCommand("\\mfrakH", 'โ„Œ', :mathalpha, "/frak h, upper case h"), + :BbbH => UCMCommand("\\BbbH", 'โ„', :mathalpha, "/bbb h, open face h"), + :Planckconst => UCMCommand("\\Planckconst", 'โ„Ž', :mathord, "planck constant"), + :hslash => UCMCommand("\\hslash", 'โ„', :mathalpha, "/hslash - variant planck's over 2pi"), + :mscrI => UCMCommand("\\mscrI", 'โ„', :mathalpha, "/scr i, script letter i"), + :Im => UCMCommand("\\Im", 'โ„‘', :mathalpha, "imaginary part"), + :mscrL => UCMCommand("\\mscrL", 'โ„’', :mathalpha, "lagrangian (script capital l)"), + :ell => UCMCommand("\\ell", 'โ„“', :mathalpha, "cursive small l"), + :BbbN => UCMCommand("\\BbbN", 'โ„•', :mathalpha, "/bbb n, open face n"), + :wp => UCMCommand("\\wp", 'โ„˜', :mathalpha, "weierstrass p"), + :BbbP => UCMCommand("\\BbbP", 'โ„™', :mathalpha, "/bbb p, open face p"), + :BbbQ => UCMCommand("\\BbbQ", 'โ„š', :mathalpha, "/bbb q, open face q"), + :mscrR => UCMCommand("\\mscrR", 'โ„›', :mathalpha, "/scr r, script letter r"), + :Re => UCMCommand("\\Re", 'โ„œ', :mathalpha, "real part"), + :BbbR => UCMCommand("\\BbbR", 'โ„', :mathalpha, "/bbb r, open face r"), + :BbbZ => UCMCommand("\\BbbZ", 'โ„ค', :mathalpha, "/bbb z, open face z"), + :mho => UCMCommand("\\mho", 'โ„ง', :mathord, "conductance"), + :mfrakZ => UCMCommand("\\mfrakZ", 'โ„จ', :mathalpha, "/frak z, upper case z"), + :turnediota => UCMCommand("\\turnediota", 'โ„ฉ', :mathalpha, "turned iota"), + :Angstrom => UCMCommand("\\Angstrom", 'โ„ซ', :mathalpha, "angstrom capital a, ring"), + :mscrB => UCMCommand("\\mscrB", 'โ„ฌ', :mathalpha, "bernoulli function (script capital b)"), + :mfrakC => UCMCommand("\\mfrakC", 'โ„ญ', :mathalpha, "black-letter capital c"), + :mscre => UCMCommand("\\mscre", 'โ„ฏ', :mathalpha, "/scr e, script letter e"), + :mscrE => UCMCommand("\\mscrE", 'โ„ฐ', :mathalpha, "/scr e, script letter e"), + :mscrF => UCMCommand("\\mscrF", 'โ„ฑ', :mathalpha, "/scr f, script letter f"), + :Finv => UCMCommand("\\Finv", 'โ„ฒ', :mathord, "turned capital f"), + :mscrM => UCMCommand("\\mscrM", 'โ„ณ', :mathalpha, "physics m-matrix (script capital m)"), + :mscro => UCMCommand("\\mscro", 'โ„ด', :mathalpha, "order of (script small o)"), + :aleph => UCMCommand("\\aleph", 'โ„ต', :mathalpha, "aleph, hebrew"), + :beth => UCMCommand("\\beth", 'โ„ถ', :mathalpha, "beth, hebrew"), + :gimel => UCMCommand("\\gimel", 'โ„ท', :mathalpha, "gimel, hebrew"), + :daleth => UCMCommand("\\daleth", 'โ„ธ', :mathalpha, "daleth, hebrew"), + :Bbbpi => UCMCommand("\\Bbbpi", 'โ„ผ', :mathord, "double-struck small pi"), + :Bbbgamma => UCMCommand("\\Bbbgamma", 'โ„ฝ', :mathalpha, "double-struck small gamma"), + :BbbGamma => UCMCommand("\\BbbGamma", 'โ„พ', :mathalpha, "double-struck capital gamma"), + :BbbPi => UCMCommand("\\BbbPi", 'โ„ฟ', :mathalpha, "double-struck capital pi"), + :Bbbsum => UCMCommand("\\Bbbsum", 'โ…€', :mathop, "double-struck n-ary summation"), + :Game => UCMCommand("\\Game", 'โ…', :mathord, "turned sans-serif capital g"), + :sansLturned => UCMCommand("\\sansLturned", 'โ…‚', :mathord, "turned sans-serif capital l"), + :sansLmirrored => UCMCommand("\\sansLmirrored", 'โ…ƒ', :mathord, "reversed sans-serif capital l"), + :Yup => UCMCommand("\\Yup", 'โ…„', :mathord, "turned sans-serif capital y"), + :mitBbbD => UCMCommand("\\mitBbbD", 'โ……', :mathord, "double-struck italic capital d"), + :mitBbbd => UCMCommand("\\mitBbbd", 'โ…†', :mathord, "double-struck italic small d"), + :mitBbbe => UCMCommand("\\mitBbbe", 'โ…‡', :mathord, "double-struck italic small e"), + :mitBbbi => UCMCommand("\\mitBbbi", 'โ…ˆ', :mathord, "double-struck italic small i"), + :mitBbbj => UCMCommand("\\mitBbbj", 'โ…‰', :mathord, "double-struck italic small j"), + :PropertyLine => UCMCommand("\\PropertyLine", 'โ…Š', :mathord, "property line"), + :upand => UCMCommand("\\upand", 'โ…‹', :mathbin, "turned ampersand"), + :leftarrow => UCMCommand("\\leftarrow", 'โ†', :mathrel, "/leftarrow /gets a: leftward arrow"), + :uparrow => UCMCommand("\\uparrow", 'โ†‘', :mathrel, "upward arrow"), + :rightarrow => UCMCommand("\\rightarrow", 'โ†’', :mathrel, "/rightarrow /to a: rightward arrow"), + :downarrow => UCMCommand("\\downarrow", 'โ†“', :mathrel, "downward arrow"), + :leftrightarrow => UCMCommand("\\leftrightarrow", 'โ†”', :mathrel, "left and right arrow"), + :updownarrow => UCMCommand("\\updownarrow", 'โ†•', :mathrel, "up and down arrow"), + :nwarrow => UCMCommand("\\nwarrow", 'โ†–', :mathrel, "nw pointing arrow"), + :nearrow => UCMCommand("\\nearrow", 'โ†—', :mathrel, "ne pointing arrow"), + :searrow => UCMCommand("\\searrow", 'โ†˜', :mathrel, "se pointing arrow"), + :swarrow => UCMCommand("\\swarrow", 'โ†™', :mathrel, "sw pointing arrow"), + :nleftarrow => UCMCommand("\\nleftarrow", 'โ†š', :mathrel, "not left arrow"), + :nrightarrow => UCMCommand("\\nrightarrow", 'โ†›', :mathrel, "not right arrow"), + :leftwavearrow => UCMCommand("\\leftwavearrow", 'โ†œ', :mathrel, "left arrow-wavy"), + :rightwavearrow => UCMCommand("\\rightwavearrow", 'โ†', :mathrel, "right arrow-wavy"), + :twoheadleftarrow => UCMCommand("\\twoheadleftarrow", 'โ†ž', :mathrel, "left two-headed arrow"), + :twoheaduparrow => UCMCommand("\\twoheaduparrow", 'โ†Ÿ', :mathrel, "up two-headed arrow"), + :twoheadrightarrow => UCMCommand("\\twoheadrightarrow", 'โ† ', :mathrel, "right two-headed arrow"), + :twoheaddownarrow => UCMCommand("\\twoheaddownarrow", 'โ†ก', :mathrel, "down two-headed arrow"), + :leftarrowtail => UCMCommand("\\leftarrowtail", 'โ†ข', :mathrel, "left arrow-tailed"), + :rightarrowtail => UCMCommand("\\rightarrowtail", 'โ†ฃ', :mathrel, "right arrow-tailed"), + :mapsfrom => UCMCommand("\\mapsfrom", 'โ†ค', :mathrel, "maps to, leftward"), + :mapsup => UCMCommand("\\mapsup", 'โ†ฅ', :mathrel, "maps to, upward"), + :mapsto => UCMCommand("\\mapsto", 'โ†ฆ', :mathrel, "maps to, rightward"), + :mapsdown => UCMCommand("\\mapsdown", 'โ†ง', :mathrel, "maps to, downward"), + :updownarrowbar => UCMCommand("\\updownarrowbar", 'โ†จ', :mathord, "up down arrow with base (perpendicular)"), + :hookleftarrow => UCMCommand("\\hookleftarrow", 'โ†ฉ', :mathrel, "left arrow-hooked"), + :hookrightarrow => UCMCommand("\\hookrightarrow", 'โ†ช', :mathrel, "right arrow-hooked"), + :looparrowleft => UCMCommand("\\looparrowleft", 'โ†ซ', :mathrel, "left arrow-looped"), + :looparrowright => UCMCommand("\\looparrowright", 'โ†ฌ', :mathrel, "right arrow-looped"), + :leftrightsquigarrow => UCMCommand("\\leftrightsquigarrow", 'โ†ญ', :mathrel, "left and right arr-wavy"), + :nleftrightarrow => UCMCommand("\\nleftrightarrow", 'โ†ฎ', :mathrel, "not left and right arrow"), + :downzigzagarrow => UCMCommand("\\downzigzagarrow", 'โ†ฏ', :mathrel, "downwards zigzag arrow"), + :Lsh => UCMCommand("\\Lsh", 'โ†ฐ', :mathrel, "/lsh a:"), + :Rsh => UCMCommand("\\Rsh", 'โ†ฑ', :mathrel, "/rsh a:"), + :Ldsh => UCMCommand("\\Ldsh", 'โ†ฒ', :mathrel, "left down angled arrow"), + :Rdsh => UCMCommand("\\Rdsh", 'โ†ณ', :mathrel, "right down angled arrow"), + :linefeed => UCMCommand("\\linefeed", 'โ†ด', :mathord, "rightwards arrow with corner downwards"), + :carriagereturn => UCMCommand("\\carriagereturn", 'โ†ต', :mathord, "downwards arrow with corner leftward = carriage return"), + :curvearrowleft => UCMCommand("\\curvearrowleft", 'โ†ถ', :mathrel, "left curved arrow"), + :curvearrowright => UCMCommand("\\curvearrowright", 'โ†ท', :mathrel, "right curved arrow"), + :barovernorthwestarrow => UCMCommand("\\barovernorthwestarrow", 'โ†ธ', :mathord, "north west arrow to long bar"), + :barleftarrowrightarrowbar => UCMCommand("\\barleftarrowrightarrowbar", 'โ†น', :mathord, "leftwards arrow to bar over rightwards arrow to bar"), + :acwopencirclearrow => UCMCommand("\\acwopencirclearrow", 'โ†บ', :mathord, "anticlockwise open circle arrow"), + :cwopencirclearrow => UCMCommand("\\cwopencirclearrow", 'โ†ป', :mathord, "clockwise open circle arrow"), + :leftharpoonup => UCMCommand("\\leftharpoonup", 'โ†ผ', :mathrel, "left harpoon-up"), + :leftharpoondown => UCMCommand("\\leftharpoondown", 'โ†ฝ', :mathrel, "left harpoon-down"), + :upharpoonright => UCMCommand("\\upharpoonright", 'โ†พ', :mathrel, "/upharpoonright /restriction a: up harpoon-right"), + :upharpoonleft => UCMCommand("\\upharpoonleft", 'โ†ฟ', :mathrel, "up harpoon-left"), + :rightharpoonup => UCMCommand("\\rightharpoonup", 'โ‡€', :mathrel, "right harpoon-up"), + :rightharpoondown => UCMCommand("\\rightharpoondown", 'โ‡', :mathrel, "right harpoon-down"), + :downharpoonright => UCMCommand("\\downharpoonright", 'โ‡‚', :mathrel, "down harpoon-right"), + :downharpoonleft => UCMCommand("\\downharpoonleft", 'โ‡ƒ', :mathrel, "down harpoon-left"), + :rightleftarrows => UCMCommand("\\rightleftarrows", 'โ‡„', :mathrel, "right arrow over left arrow"), + :updownarrows => UCMCommand("\\updownarrows", 'โ‡…', :mathrel, "up arrow, down arrow"), + :leftrightarrows => UCMCommand("\\leftrightarrows", 'โ‡†', :mathrel, "left arrow over right arrow"), + :leftleftarrows => UCMCommand("\\leftleftarrows", 'โ‡‡', :mathrel, "two left arrows"), + :upuparrows => UCMCommand("\\upuparrows", 'โ‡ˆ', :mathrel, "two up arrows"), + :rightrightarrows => UCMCommand("\\rightrightarrows", 'โ‡‰', :mathrel, "two right arrows"), + :downdownarrows => UCMCommand("\\downdownarrows", 'โ‡Š', :mathrel, "two down arrows"), + :leftrightharpoons => UCMCommand("\\leftrightharpoons", 'โ‡‹', :mathrel, "left harpoon over right"), + :rightleftharpoons => UCMCommand("\\rightleftharpoons", 'โ‡Œ', :mathrel, "right harpoon over left"), + :nLeftarrow => UCMCommand("\\nLeftarrow", 'โ‡', :mathrel, "not implied by"), + :nLeftrightarrow => UCMCommand("\\nLeftrightarrow", 'โ‡Ž', :mathrel, "not left and right double arrows"), + :nRightarrow => UCMCommand("\\nRightarrow", 'โ‡', :mathrel, "not implies"), + :Leftarrow => UCMCommand("\\Leftarrow", 'โ‡', :mathrel, "is implied by"), + :Uparrow => UCMCommand("\\Uparrow", 'โ‡‘', :mathrel, "up double arrow"), + :Rightarrow => UCMCommand("\\Rightarrow", 'โ‡’', :mathrel, "implies"), + :Downarrow => UCMCommand("\\Downarrow", 'โ‡“', :mathrel, "down double arrow"), + :Leftrightarrow => UCMCommand("\\Leftrightarrow", 'โ‡”', :mathrel, "left and right double arrow"), + :Updownarrow => UCMCommand("\\Updownarrow", 'โ‡•', :mathrel, "up and down double arrow"), + :Nwarrow => UCMCommand("\\Nwarrow", 'โ‡–', :mathrel, "nw pointing double arrow"), + :Nearrow => UCMCommand("\\Nearrow", 'โ‡—', :mathrel, "ne pointing double arrow"), + :Searrow => UCMCommand("\\Searrow", 'โ‡˜', :mathrel, "se pointing double arrow"), + :Swarrow => UCMCommand("\\Swarrow", 'โ‡™', :mathrel, "sw pointing double arrow"), + :Lleftarrow => UCMCommand("\\Lleftarrow", 'โ‡š', :mathrel, "left triple arrow"), + :Rrightarrow => UCMCommand("\\Rrightarrow", 'โ‡›', :mathrel, "right triple arrow"), + :leftsquigarrow => UCMCommand("\\leftsquigarrow", 'โ‡œ', :mathrel, "leftwards squiggle arrow"), + :rightsquigarrow => UCMCommand("\\rightsquigarrow", 'โ‡', :mathrel, "rightwards squiggle arrow"), + :nHuparrow => UCMCommand("\\nHuparrow", 'โ‡ž', :mathord, "upwards arrow with double stroke"), + :nHdownarrow => UCMCommand("\\nHdownarrow", 'โ‡Ÿ', :mathord, "downwards arrow with double stroke"), + :leftdasharrow => UCMCommand("\\leftdasharrow", 'โ‡ ', :mathord, "leftwards dashed arrow"), + :updasharrow => UCMCommand("\\updasharrow", 'โ‡ก', :mathord, "upwards dashed arrow"), + :rightdasharrow => UCMCommand("\\rightdasharrow", 'โ‡ข', :mathord, "rightwards dashed arrow"), + :downdasharrow => UCMCommand("\\downdasharrow", 'โ‡ฃ', :mathord, "downwards dashed arrow"), + :barleftarrow => UCMCommand("\\barleftarrow", 'โ‡ค', :mathrel, "leftwards arrow to bar"), + :rightarrowbar => UCMCommand("\\rightarrowbar", 'โ‡ฅ', :mathrel, "rightwards arrow to bar"), + :leftwhitearrow => UCMCommand("\\leftwhitearrow", 'โ‡ฆ', :mathord, "leftwards white arrow"), + :upwhitearrow => UCMCommand("\\upwhitearrow", 'โ‡ง', :mathord, "upwards white arrow"), + :rightwhitearrow => UCMCommand("\\rightwhitearrow", 'โ‡จ', :mathord, "rightwards white arrow"), + :downwhitearrow => UCMCommand("\\downwhitearrow", 'โ‡ฉ', :mathord, "downwards white arrow"), + :whitearrowupfrombar => UCMCommand("\\whitearrowupfrombar", 'โ‡ช', :mathord, "upwards white arrow from bar"), + :circleonrightarrow => UCMCommand("\\circleonrightarrow", 'โ‡ด', :mathrel, "right arrow with small circle"), + :downuparrows => UCMCommand("\\downuparrows", 'โ‡ต', :mathrel, "downwards arrow leftwards of upwards arrow"), + :rightthreearrows => UCMCommand("\\rightthreearrows", 'โ‡ถ', :mathrel, "three rightwards arrows"), + :nvleftarrow => UCMCommand("\\nvleftarrow", 'โ‡ท', :mathrel, "leftwards arrow with vertical stroke"), + :nvrightarrow => UCMCommand("\\nvrightarrow", 'โ‡ธ', :mathrel, "rightwards arrow with vertical stroke"), + :nvleftrightarrow => UCMCommand("\\nvleftrightarrow", 'โ‡น', :mathrel, "left right arrow with vertical stroke"), + :nVleftarrow => UCMCommand("\\nVleftarrow", 'โ‡บ', :mathrel, "leftwards arrow with double vertical stroke"), + :nVrightarrow => UCMCommand("\\nVrightarrow", 'โ‡ป', :mathrel, "rightwards arrow with double vertical stroke"), + :nVleftrightarrow => UCMCommand("\\nVleftrightarrow", 'โ‡ผ', :mathrel, "left right arrow with double vertical stroke"), + :leftarrowtriangle => UCMCommand("\\leftarrowtriangle", 'โ‡ฝ', :mathrel, "leftwards open-headed arrow"), + :rightarrowtriangle => UCMCommand("\\rightarrowtriangle", 'โ‡พ', :mathrel, "rightwards open-headed arrow"), + :leftrightarrowtriangle => UCMCommand("\\leftrightarrowtriangle", 'โ‡ฟ', :mathrel, "left right open-headed arrow"), + :forall => UCMCommand("\\forall", 'โˆ€', :mathord, "for all"), + :complement => UCMCommand("\\complement", 'โˆ', :mathord, "complement sign"), + :partial => UCMCommand("\\partial", 'โˆ‚', :mathalpha, "partial differential"), + :exists => UCMCommand("\\exists", 'โˆƒ', :mathord, "at least one exists"), + :nexists => UCMCommand("\\nexists", 'โˆ„', :mathord, "negated exists"), + :varnothing => UCMCommand("\\varnothing", 'โˆ…', :mathord, "circle, slash"), + :increment => UCMCommand("\\increment", 'โˆ†', :mathord, "laplacian (delta; nabla\\string^2)"), + :nabla => UCMCommand("\\nabla", 'โˆ‡', :mathalpha, "nabla, del, hamilton operator"), + :in => UCMCommand("\\in", 'โˆˆ', :mathrel, "set membership, variant"), + :notin => UCMCommand("\\notin", 'โˆ‰', :mathrel, "negated set membership"), + :smallin => UCMCommand("\\smallin", 'โˆŠ', :mathrel, "set membership (small set membership)"), + :ni => UCMCommand("\\ni", 'โˆ‹', :mathrel, "contains, variant"), + :nni => UCMCommand("\\nni", 'โˆŒ', :mathrel, "negated contains, variant"), + :smallni => UCMCommand("\\smallni", 'โˆ', :mathrel, "/ni /owns r: contains (small contains as member)"), + :QED => UCMCommand("\\QED", 'โˆŽ', :mathord, "end of proof"), + :prod => UCMCommand("\\prod", 'โˆ', :mathop, "product operator"), + :coprod => UCMCommand("\\coprod", 'โˆ', :mathop, "coproduct operator"), + :sum => UCMCommand("\\sum", 'โˆ‘', :mathop, "summation operator"), + :minus => UCMCommand("\\minus", 'โˆ’', :mathbin, "minus sign"), + :mp => UCMCommand("\\mp", 'โˆ“', :mathbin, "minus-or-plus sign"), + :dotplus => UCMCommand("\\dotplus", 'โˆ”', :mathbin, "plus sign, dot above"), + :divslash => UCMCommand("\\divslash", 'โˆ•', :mathbin, "division slash"), + :setminus => UCMCommand("\\setminus", 'โˆ–', :mathbin, "set minus (cf. reverse solidus)"), + :ast => UCMCommand("\\ast", 'โˆ—', :mathbin, "centered asterisk"), + :vysmwhtcircle => UCMCommand("\\vysmwhtcircle", 'โˆ˜', :mathbin, "composite function (small circle)"), + :vysmblkcircle => UCMCommand("\\vysmblkcircle", 'โˆ™', :mathbin, "bullet operator"), + :sqrt => UCMCommand("\\sqrt", 'โˆš', :mathopen, "radical"), + :surd => UCMCommand("\\surd", 'โˆš', :mathord, "radical"), + :cuberoot => UCMCommand("\\cuberoot", 'โˆ›', :mathopen, "cube root"), + :fourthroot => UCMCommand("\\fourthroot", 'โˆœ', :mathopen, "fourth root"), + :propto => UCMCommand("\\propto", 'โˆ', :mathrel, "is proportional to"), + :infty => UCMCommand("\\infty", 'โˆž', :mathord, "infinity"), + :rightangle => UCMCommand("\\rightangle", 'โˆŸ', :mathord, "right (90 degree) angle"), + :angle => UCMCommand("\\angle", 'โˆ ', :mathord, "angle"), + :measuredangle => UCMCommand("\\measuredangle", 'โˆก', :mathord, "angle-measured"), + :sphericalangle => UCMCommand("\\sphericalangle", 'โˆข', :mathord, "angle-spherical"), + :mid => UCMCommand("\\mid", 'โˆฃ', :mathrel, "/mid r:"), + :nmid => UCMCommand("\\nmid", 'โˆค', :mathrel, "negated mid"), + :parallel => UCMCommand("\\parallel", 'โˆฅ', :mathrel, "parallel"), + :nparallel => UCMCommand("\\nparallel", 'โˆฆ', :mathrel, "not parallel"), + :wedge => UCMCommand("\\wedge", 'โˆง', :mathbin, "/wedge /land b: logical and"), + :vee => UCMCommand("\\vee", 'โˆจ', :mathbin, "/vee /lor b: logical or"), + :cap => UCMCommand("\\cap", 'โˆฉ', :mathbin, "intersection"), + :cup => UCMCommand("\\cup", 'โˆช', :mathbin, "union or logical sum"), + :int => UCMCommand("\\int", 'โˆซ', :mathop, "integral operator"), + :iint => UCMCommand("\\iint", 'โˆฌ', :mathop, "double integral operator"), + :iiint => UCMCommand("\\iiint", 'โˆญ', :mathop, "triple integral operator"), + :oint => UCMCommand("\\oint", 'โˆฎ', :mathop, "contour integral operator"), + :oiint => UCMCommand("\\oiint", 'โˆฏ', :mathop, "double contour integral operator"), + :oiiint => UCMCommand("\\oiiint", 'โˆฐ', :mathop, "triple contour integral operator"), + :intclockwise => UCMCommand("\\intclockwise", 'โˆฑ', :mathop, "clockwise integral"), + :varointclockwise => UCMCommand("\\varointclockwise", 'โˆฒ', :mathop, "contour integral, clockwise"), + :ointctrclockwise => UCMCommand("\\ointctrclockwise", 'โˆณ', :mathop, "contour integral, anticlockwise"), + :therefore => UCMCommand("\\therefore", 'โˆด', :mathord, "therefore"), + :because => UCMCommand("\\because", 'โˆต', :mathord, "because"), + :mathratio => UCMCommand("\\mathratio", 'โˆถ', :mathrel, "ratio"), + :Colon => UCMCommand("\\Colon", 'โˆท', :mathrel, "two colons"), + :dotminus => UCMCommand("\\dotminus", 'โˆธ', :mathbin, "minus sign, dot above"), + :dashcolon => UCMCommand("\\dashcolon", 'โˆน', :mathrel, "excess (-:)"), + :dotsminusdots => UCMCommand("\\dotsminusdots", 'โˆบ', :mathrel, "minus with four dots, geometric properties"), + :kernelcontraction => UCMCommand("\\kernelcontraction", 'โˆป', :mathrel, "homothetic"), + :sim => UCMCommand("\\sim", 'โˆผ', :mathrel, "similar"), + :backsim => UCMCommand("\\backsim", 'โˆฝ', :mathrel, "reverse similar"), + :invlazys => UCMCommand("\\invlazys", 'โˆพ', :mathbin, "most positive [inverted lazy s]"), + :sinewave => UCMCommand("\\sinewave", 'โˆฟ', :mathord, "sine wave"), + :wr => UCMCommand("\\wr", 'โ‰€', :mathbin, "wreath product"), + :nsim => UCMCommand("\\nsim", 'โ‰', :mathrel, "not similar"), + :eqsim => UCMCommand("\\eqsim", 'โ‰‚', :mathrel, "equals, similar"), + :simeq => UCMCommand("\\simeq", 'โ‰ƒ', :mathrel, "similar, equals"), + :nsime => UCMCommand("\\nsime", 'โ‰„', :mathrel, "not similar, equals"), + :sime => UCMCommand("\\sime", 'โ‰ƒ', :mathrel, "similar, equals (alias)"), + :nsimeq => UCMCommand("\\nsimeq", 'โ‰„', :mathrel, "not similar, equals (alias)"), + :cong => UCMCommand("\\cong", 'โ‰…', :mathrel, "congruent with"), + :simneqq => UCMCommand("\\simneqq", 'โ‰†', :mathrel, "similar, not equals [vert only for 9573 entity]"), + :ncong => UCMCommand("\\ncong", 'โ‰‡', :mathrel, "not congruent with"), + :approx => UCMCommand("\\approx", 'โ‰ˆ', :mathrel, "approximate"), + :napprox => UCMCommand("\\napprox", 'โ‰‰', :mathrel, "not approximate"), + :approxeq => UCMCommand("\\approxeq", 'โ‰Š', :mathrel, "approximate, equals"), + :approxident => UCMCommand("\\approxident", 'โ‰‹', :mathrel, "approximately identical to"), + :backcong => UCMCommand("\\backcong", 'โ‰Œ', :mathrel, "all equal to"), + :asymp => UCMCommand("\\asymp", 'โ‰', :mathrel, "asymptotically equal to"), + :Bumpeq => UCMCommand("\\Bumpeq", 'โ‰Ž', :mathrel, "bumpy equals"), + :bumpeq => UCMCommand("\\bumpeq", 'โ‰', :mathrel, "bumpy equals, equals"), + :doteq => UCMCommand("\\doteq", 'โ‰', :mathrel, "equals, single dot above"), + :Doteq => UCMCommand("\\Doteq", 'โ‰‘', :mathrel, "/doteqdot /doteq r: equals, even dots"), + :fallingdotseq => UCMCommand("\\fallingdotseq", 'โ‰’', :mathrel, "equals, falling dots"), + :risingdotseq => UCMCommand("\\risingdotseq", 'โ‰“', :mathrel, "equals, rising dots"), + :coloneq => UCMCommand("\\coloneq", 'โ‰”', :mathrel, "colon, equals"), + :eqcolon => UCMCommand("\\eqcolon", 'โ‰•', :mathrel, "equals, colon"), + :eqcirc => UCMCommand("\\eqcirc", 'โ‰–', :mathrel, "circle on equals sign"), + :circeq => UCMCommand("\\circeq", 'โ‰—', :mathrel, "circle, equals"), + :arceq => UCMCommand("\\arceq", 'โ‰˜', :mathrel, "arc, equals; corresponds to"), + :wedgeq => UCMCommand("\\wedgeq", 'โ‰™', :mathrel, "corresponds to (wedge, equals)"), + :veeeq => UCMCommand("\\veeeq", 'โ‰š', :mathrel, "logical or, equals"), + :stareq => UCMCommand("\\stareq", 'โ‰›', :mathrel, "star equals"), + :triangleq => UCMCommand("\\triangleq", 'โ‰œ', :mathrel, "triangle, equals"), + :eqdef => UCMCommand("\\eqdef", 'โ‰', :mathrel, "equals by definition"), + :measeq => UCMCommand("\\measeq", 'โ‰ž', :mathrel, "measured by (m over equals)"), + :questeq => UCMCommand("\\questeq", 'โ‰Ÿ', :mathrel, "equal with questionmark"), + :ne => UCMCommand("\\ne", 'โ‰ ', :mathrel, "/ne /neq r: not equal"), + :equiv => UCMCommand("\\equiv", 'โ‰ก', :mathrel, "identical with"), + :nequiv => UCMCommand("\\nequiv", 'โ‰ข', :mathrel, "not identical with"), + :Equiv => UCMCommand("\\Equiv", 'โ‰ฃ', :mathrel, "strict equivalence (4 lines)"), + :leq => UCMCommand("\\leq", 'โ‰ค', :mathrel, "/leq /le r: less-than-or-equal"), + :geq => UCMCommand("\\geq", 'โ‰ฅ', :mathrel, "/geq /ge r: greater-than-or-equal"), + :leqq => UCMCommand("\\leqq", 'โ‰ฆ', :mathrel, "less, double equals"), + :geqq => UCMCommand("\\geqq", 'โ‰ง', :mathrel, "greater, double equals"), + :lneqq => UCMCommand("\\lneqq", 'โ‰จ', :mathrel, "less, not double equals"), + :gneqq => UCMCommand("\\gneqq", 'โ‰ฉ', :mathrel, "greater, not double equals"), + :ll => UCMCommand("\\ll", 'โ‰ช', :mathrel, "much less than, type 2"), + :gg => UCMCommand("\\gg", 'โ‰ซ', :mathrel, "much greater than, type 2"), + :between => UCMCommand("\\between", 'โ‰ฌ', :mathrel, "between"), + :nasymp => UCMCommand("\\nasymp", 'โ‰ญ', :mathrel, "not asymptotically equal to"), + :nless => UCMCommand("\\nless", 'โ‰ฎ', :mathrel, "not less-than"), + :ngtr => UCMCommand("\\ngtr", 'โ‰ฏ', :mathrel, "not greater-than"), + :nleq => UCMCommand("\\nleq", 'โ‰ฐ', :mathrel, "not less-than-or-equal"), + :ngeq => UCMCommand("\\ngeq", 'โ‰ฑ', :mathrel, "not greater-than-or-equal"), + :lesssim => UCMCommand("\\lesssim", 'โ‰ฒ', :mathrel, "less, similar"), + :gtrsim => UCMCommand("\\gtrsim", 'โ‰ณ', :mathrel, "greater, similar"), + :nlesssim => UCMCommand("\\nlesssim", 'โ‰ด', :mathrel, "not less, similar"), + :ngtrsim => UCMCommand("\\ngtrsim", 'โ‰ต', :mathrel, "not greater, similar"), + :lessgtr => UCMCommand("\\lessgtr", 'โ‰ถ', :mathrel, "less, greater"), + :gtrless => UCMCommand("\\gtrless", 'โ‰ท', :mathrel, "greater, less"), + :nlessgtr => UCMCommand("\\nlessgtr", 'โ‰ธ', :mathrel, "not less, greater"), + :ngtrless => UCMCommand("\\ngtrless", 'โ‰น', :mathrel, "not greater, less"), + :prec => UCMCommand("\\prec", 'โ‰บ', :mathrel, "precedes"), + :succ => UCMCommand("\\succ", 'โ‰ป', :mathrel, "succeeds"), + :preccurlyeq => UCMCommand("\\preccurlyeq", 'โ‰ผ', :mathrel, "precedes, curly equals"), + :succcurlyeq => UCMCommand("\\succcurlyeq", 'โ‰ฝ', :mathrel, "succeeds, curly equals"), + :precsim => UCMCommand("\\precsim", 'โ‰พ', :mathrel, "precedes, similar"), + :succsim => UCMCommand("\\succsim", 'โ‰ฟ', :mathrel, "succeeds, similar"), + :nprec => UCMCommand("\\nprec", 'โŠ€', :mathrel, "not precedes"), + :nsucc => UCMCommand("\\nsucc", 'โЁ', :mathrel, "not succeeds"), + :subset => UCMCommand("\\subset", 'โŠ‚', :mathrel, "subset or is implied by"), + :supset => UCMCommand("\\supset", 'โŠƒ', :mathrel, "superset or implies"), + :nsubset => UCMCommand("\\nsubset", 'โŠ„', :mathrel, "not subset, variant [slash negation]"), + :nsupset => UCMCommand("\\nsupset", 'โŠ…', :mathrel, "not superset, variant [slash negation]"), + :subseteq => UCMCommand("\\subseteq", 'โІ', :mathrel, "subset, equals"), + :supseteq => UCMCommand("\\supseteq", 'โЇ', :mathrel, "superset, equals"), + :nsubseteq => UCMCommand("\\nsubseteq", 'โŠˆ', :mathrel, "not subset, equals"), + :nsupseteq => UCMCommand("\\nsupseteq", 'โЉ', :mathrel, "not superset, equals"), + :subsetneq => UCMCommand("\\subsetneq", 'โŠŠ', :mathrel, "subset, not equals"), + :supsetneq => UCMCommand("\\supsetneq", 'โŠ‹', :mathrel, "superset, not equals"), + :cupleftarrow => UCMCommand("\\cupleftarrow", 'โŠŒ', :mathbin, "multiset"), + :cupdot => UCMCommand("\\cupdot", 'โŠ', :mathbin, "union, with dot"), + :uplus => UCMCommand("\\uplus", 'โŠŽ', :mathbin, "plus sign in union"), + :sqsubset => UCMCommand("\\sqsubset", 'โŠ', :mathrel, "square subset"), + :sqsupset => UCMCommand("\\sqsupset", 'โА', :mathrel, "square superset"), + :sqsubseteq => UCMCommand("\\sqsubseteq", 'โŠ‘', :mathrel, "square subset, equals"), + :sqsupseteq => UCMCommand("\\sqsupseteq", 'โŠ’', :mathrel, "square superset, equals"), + :sqcap => UCMCommand("\\sqcap", 'โŠ“', :mathbin, "square intersection"), + :sqcup => UCMCommand("\\sqcup", 'โŠ”', :mathbin, "square union"), + :oplus => UCMCommand("\\oplus", 'โŠ•', :mathbin, "plus sign in circle"), + :ominus => UCMCommand("\\ominus", 'โŠ–', :mathbin, "minus sign in circle"), + :otimes => UCMCommand("\\otimes", 'โŠ—', :mathbin, "multiply sign in circle"), + :oslash => UCMCommand("\\oslash", 'โŠ˜', :mathbin, "solidus in circle"), + :odot => UCMCommand("\\odot", 'โŠ™', :mathbin, "middle dot in circle"), + :circledcirc => UCMCommand("\\circledcirc", 'โŠš', :mathbin, "small circle in circle"), + :circledast => UCMCommand("\\circledast", 'โŠ›', :mathbin, "asterisk in circle"), + :circledequal => UCMCommand("\\circledequal", 'โŠœ', :mathbin, "equal in circle"), + :circleddash => UCMCommand("\\circleddash", 'โŠ', :mathbin, "hyphen in circle"), + :boxplus => UCMCommand("\\boxplus", 'โŠž', :mathbin, "plus sign in box"), + :boxminus => UCMCommand("\\boxminus", 'โŠŸ', :mathbin, "minus sign in box"), + :boxtimes => UCMCommand("\\boxtimes", 'โŠ ', :mathbin, "multiply sign in box"), + :boxdot => UCMCommand("\\boxdot", 'โŠก', :mathbin, "/dotsquare /boxdot b: small dot in box"), + :vdash => UCMCommand("\\vdash", 'โŠข', :mathrel, "vertical, dash"), + :dashv => UCMCommand("\\dashv", 'โŠฃ', :mathrel, "dash, vertical"), + :top => UCMCommand("\\top", 'โŠค', :mathord, "top"), + :bot => UCMCommand("\\bot", 'โŠฅ', :mathord, "bottom"), + :assert => UCMCommand("\\assert", 'โŠฆ', :mathrel, "assertion (vertical, short dash)"), + :models => UCMCommand("\\models", 'โŠง', :mathrel, "models (vertical, short double dash)"), + :vDash => UCMCommand("\\vDash", 'โŠจ', :mathrel, "vertical, double dash"), + :Vdash => UCMCommand("\\Vdash", 'โŠฉ', :mathrel, "double vertical, dash"), + :Vvdash => UCMCommand("\\Vvdash", 'โŠช', :mathrel, "triple vertical, dash"), + :VDash => UCMCommand("\\VDash", 'โŠซ', :mathrel, "double vert, double dash"), + :nvdash => UCMCommand("\\nvdash", 'โŠฌ', :mathrel, "not vertical, dash"), + :nvDash => UCMCommand("\\nvDash", 'โŠญ', :mathrel, "not vertical, double dash"), + :nVdash => UCMCommand("\\nVdash", 'โŠฎ', :mathrel, "not double vertical, dash"), + :nVDash => UCMCommand("\\nVDash", 'โŠฏ', :mathrel, "not double vert, double dash"), + :prurel => UCMCommand("\\prurel", 'โŠฐ', :mathrel, "element precedes under relation"), + :scurel => UCMCommand("\\scurel", 'โŠฑ', :mathrel, "succeeds under relation"), + :vartriangleleft => UCMCommand("\\vartriangleleft", 'โŠฒ', :mathrel, "left triangle, open, variant"), + :vartriangleright => UCMCommand("\\vartriangleright", 'โŠณ', :mathrel, "right triangle, open, variant"), + :trianglelefteq => UCMCommand("\\trianglelefteq", 'โŠด', :mathrel, "left triangle, equals"), + :trianglerighteq => UCMCommand("\\trianglerighteq", 'โŠต', :mathrel, "right triangle, equals"), + :origof => UCMCommand("\\origof", 'โŠถ', :mathrel, "original of"), + :imageof => UCMCommand("\\imageof", 'โŠท', :mathrel, "image of"), + :multimap => UCMCommand("\\multimap", 'โŠธ', :mathrel, "/multimap a:"), + :hermitmatrix => UCMCommand("\\hermitmatrix", 'โŠน', :mathord, "hermitian conjugate matrix"), + :intercal => UCMCommand("\\intercal", 'โŠบ', :mathbin, "intercal"), + :veebar => UCMCommand("\\veebar", 'โŠป', :mathbin, "logical or, bar below (large vee); exclusive disjunction"), + :barwedge => UCMCommand("\\barwedge", 'โŠผ', :mathbin, "bar, wedge (large wedge)"), + :barvee => UCMCommand("\\barvee", 'โŠฝ', :mathbin, "bar, vee (large vee)"), + :measuredrightangle => UCMCommand("\\measuredrightangle", 'โŠพ', :mathord, "right angle-measured [with arc]"), + :varlrtriangle => UCMCommand("\\varlrtriangle", 'โŠฟ', :mathord, "right triangle"), + :bigwedge => UCMCommand("\\bigwedge", 'โ‹€', :mathop, "logical and operator"), + :bigvee => UCMCommand("\\bigvee", 'โ‹', :mathop, "logical or operator"), + :bigcap => UCMCommand("\\bigcap", 'โ‹‚', :mathop, "intersection operator"), + :bigcup => UCMCommand("\\bigcup", 'โ‹ƒ', :mathop, "union operator"), + :smwhtdiamond => UCMCommand("\\smwhtdiamond", 'โ‹„', :mathbin, "white diamond"), + :cdot => UCMCommand("\\cdot", 'โ‹…', :mathbin, "small middle dot"), + :star => UCMCommand("\\star", 'โ‹†', :mathbin, "small star, filled, low"), + :divideontimes => UCMCommand("\\divideontimes", 'โ‹‡', :mathbin, "division on times"), + :bowtie => UCMCommand("\\bowtie", 'โ‹ˆ', :mathrel, "bowtie"), + :ltimes => UCMCommand("\\ltimes", 'โ‹‰', :mathbin, "times sign, left closed"), + :rtimes => UCMCommand("\\rtimes", 'โ‹Š', :mathbin, "times sign, right closed"), + :leftthreetimes => UCMCommand("\\leftthreetimes", 'โ‹‹', :mathbin, "left semidirect product"), + :rightthreetimes => UCMCommand("\\rightthreetimes", 'โ‹Œ', :mathbin, "right semidirect product"), + :backsimeq => UCMCommand("\\backsimeq", 'โ‹', :mathrel, "reverse similar, equals"), + :curlyvee => UCMCommand("\\curlyvee", 'โ‹Ž', :mathbin, "curly logical or"), + :curlywedge => UCMCommand("\\curlywedge", 'โ‹', :mathbin, "curly logical and"), + :Subset => UCMCommand("\\Subset", 'โ‹', :mathrel, "double subset"), + :Supset => UCMCommand("\\Supset", 'โ‹‘', :mathrel, "double superset"), + :Cap => UCMCommand("\\Cap", 'โ‹’', :mathbin, "/cap /doublecap b: double intersection"), + :Cup => UCMCommand("\\Cup", 'โ‹“', :mathbin, "/cup /doublecup b: double union"), + :pitchfork => UCMCommand("\\pitchfork", 'โ‹”', :mathrel, "pitchfork"), + :equalparallel => UCMCommand("\\equalparallel", 'โ‹•', :mathrel, "parallel, equal; equal or parallel"), + :lessdot => UCMCommand("\\lessdot", 'โ‹–', :mathrel, "less than, with dot"), + :gtrdot => UCMCommand("\\gtrdot", 'โ‹—', :mathrel, "greater than, with dot"), + :lll => UCMCommand("\\lll", 'โ‹˜', :mathrel, "/ll /lll /llless r: triple less-than"), + :ggg => UCMCommand("\\ggg", 'โ‹™', :mathrel, "/ggg /gg /gggtr r: triple greater-than"), + :lesseqgtr => UCMCommand("\\lesseqgtr", 'โ‹š', :mathrel, "less, equals, greater"), + :gtreqless => UCMCommand("\\gtreqless", 'โ‹›', :mathrel, "greater, equals, less"), + :eqless => UCMCommand("\\eqless", 'โ‹œ', :mathrel, "equal-or-less"), + :eqgtr => UCMCommand("\\eqgtr", 'โ‹', :mathrel, "equal-or-greater"), + :curlyeqprec => UCMCommand("\\curlyeqprec", 'โ‹ž', :mathrel, "curly equals, precedes"), + :curlyeqsucc => UCMCommand("\\curlyeqsucc", 'โ‹Ÿ', :mathrel, "curly equals, succeeds"), + :npreccurlyeq => UCMCommand("\\npreccurlyeq", 'โ‹ ', :mathrel, "not precedes, curly equals"), + :nsucccurlyeq => UCMCommand("\\nsucccurlyeq", 'โ‹ก', :mathrel, "not succeeds, curly equals"), + :nsqsubseteq => UCMCommand("\\nsqsubseteq", 'โ‹ข', :mathrel, "not, square subset, equals"), + :nsqsupseteq => UCMCommand("\\nsqsupseteq", 'โ‹ฃ', :mathrel, "not, square superset, equals"), + :sqsubsetneq => UCMCommand("\\sqsubsetneq", 'โ‹ค', :mathrel, "square subset, not equals"), + :sqsupsetneq => UCMCommand("\\sqsupsetneq", 'โ‹ฅ', :mathrel, "square superset, not equals"), + :lnsim => UCMCommand("\\lnsim", 'โ‹ฆ', :mathrel, "less, not similar"), + :gnsim => UCMCommand("\\gnsim", 'โ‹ง', :mathrel, "greater, not similar"), + :precnsim => UCMCommand("\\precnsim", 'โ‹จ', :mathrel, "precedes, not similar"), + :succnsim => UCMCommand("\\succnsim", 'โ‹ฉ', :mathrel, "succeeds, not similar"), + :nvartriangleleft => UCMCommand("\\nvartriangleleft", 'โ‹ช', :mathrel, "not left triangle"), + :nvartriangleright => UCMCommand("\\nvartriangleright", 'โ‹ซ', :mathrel, "not right triangle"), + :ntrianglelefteq => UCMCommand("\\ntrianglelefteq", 'โ‹ฌ', :mathrel, "not left triangle, equals"), + :ntrianglerighteq => UCMCommand("\\ntrianglerighteq", 'โ‹ญ', :mathrel, "not right triangle, equals"), + :vdots => UCMCommand("\\vdots", 'โ‹ฎ', :mathrel, "vertical ellipsis"), + :unicodecdots => UCMCommand("\\unicodecdots", 'โ‹ฏ', :mathord, "three dots, centered"), + :adots => UCMCommand("\\adots", 'โ‹ฐ', :mathrel, "three dots, ascending"), + :ddots => UCMCommand("\\ddots", 'โ‹ฑ', :mathrel, "three dots, descending"), + :disin => UCMCommand("\\disin", 'โ‹ฒ', :mathrel, "element of with long horizontal stroke"), + :varisins => UCMCommand("\\varisins", 'โ‹ณ', :mathrel, "element of with vertical bar at end of horizontal stroke"), + :isins => UCMCommand("\\isins", 'โ‹ด', :mathrel, "small element of with vertical bar at end of horizontal stroke"), + :isindot => UCMCommand("\\isindot", 'โ‹ต', :mathrel, "element of with dot above"), + :varisinobar => UCMCommand("\\varisinobar", 'โ‹ถ', :mathrel, "element of with overbar"), + :isinobar => UCMCommand("\\isinobar", 'โ‹ท', :mathrel, "small element of with overbar"), + :isinvb => UCMCommand("\\isinvb", 'โ‹ธ', :mathrel, "element of with underbar"), + :isinE => UCMCommand("\\isinE", 'โ‹น', :mathrel, "element of with two horizontal strokes"), + :nisd => UCMCommand("\\nisd", 'โ‹บ', :mathrel, "contains with long horizontal stroke"), + :varnis => UCMCommand("\\varnis", 'โ‹ป', :mathrel, "contains with vertical bar at end of horizontal stroke"), + :nis => UCMCommand("\\nis", 'โ‹ผ', :mathrel, "small contains with vertical bar at end of horizontal stroke"), + :varniobar => UCMCommand("\\varniobar", 'โ‹ฝ', :mathrel, "contains with overbar"), + :niobar => UCMCommand("\\niobar", 'โ‹พ', :mathrel, "small contains with overbar"), + :bagmember => UCMCommand("\\bagmember", 'โ‹ฟ', :mathrel, "z notation bag membership"), + :diameter => UCMCommand("\\diameter", 'โŒ€', :mathord, "diameter sign"), + :house => UCMCommand("\\house", 'โŒ‚', :mathord, "house"), + :varbarwedge => UCMCommand("\\varbarwedge", 'โŒ…', :mathbin, "/barwedge b: logical and, bar above [projective (bar over small wedge)]"), + :vardoublebarwedge => UCMCommand("\\vardoublebarwedge", 'โŒ†', :mathbin, "/doublebarwedge b: logical and, double bar above [perspective (double bar over small wedge)]"), + :lceil => UCMCommand("\\lceil", 'โŒˆ', :mathopen, "left ceiling"), + :rceil => UCMCommand("\\rceil", 'โŒ‰', :mathclose, "right ceiling"), + :lfloor => UCMCommand("\\lfloor", 'โŒŠ', :mathopen, "left floor"), + :rfloor => UCMCommand("\\rfloor", 'โŒ‹', :mathclose, "right floor"), + :invnot => UCMCommand("\\invnot", 'โŒ', :mathord, "reverse not"), + :sqlozenge => UCMCommand("\\sqlozenge", 'โŒ‘', :mathord, "square lozenge"), + :profline => UCMCommand("\\profline", 'โŒ’', :mathord, "profile of a line"), + :profsurf => UCMCommand("\\profsurf", 'โŒ“', :mathord, "profile of a surface"), + :viewdata => UCMCommand("\\viewdata", 'โŒ—', :mathord, "viewdata square"), + :turnednot => UCMCommand("\\turnednot", 'โŒ™', :mathord, "turned not sign"), + :ulcorner => UCMCommand("\\ulcorner", 'โŒœ', :mathopen, "upper left corner"), + :urcorner => UCMCommand("\\urcorner", 'โŒ', :mathclose, "upper right corner"), + :llcorner => UCMCommand("\\llcorner", 'โŒž', :mathopen, "lower left corner"), + :lrcorner => UCMCommand("\\lrcorner", 'โŒŸ', :mathclose, "lower right corner"), + :inttop => UCMCommand("\\inttop", 'โŒ ', :mathord, "top half integral"), + :intbottom => UCMCommand("\\intbottom", 'โŒก', :mathord, "bottom half integral"), + :frown => UCMCommand("\\frown", 'โŒข', :mathrel, "down curve"), + :smile => UCMCommand("\\smile", 'โŒฃ', :mathrel, "up curve"), + :varhexagonlrbonds => UCMCommand("\\varhexagonlrbonds", 'โŒฌ', :mathord, "six carbon ring, corner down, double bonds lower right etc"), + :conictaper => UCMCommand("\\conictaper", 'โŒฒ', :mathord, "conical taper "), + :topbot => UCMCommand("\\topbot", 'โŒถ', :mathord, "top and bottom"), + :obar => UCMCommand("\\obar", 'โŒฝ', :mathbin, "circle with vertical bar"), + :APLnotslash => UCMCommand("\\APLnotslash", 'โŒฟ', :mathrel, "solidus, bar through (apl functional symbol slash bar)"), + :APLnotbackslash => UCMCommand("\\APLnotbackslash", 'โ€', :mathord, "apl functional symbol backslash bar"), + :APLboxupcaret => UCMCommand("\\APLboxupcaret", 'โ“', :mathord, "boxed up caret"), + :APLboxquestion => UCMCommand("\\APLboxquestion", 'โฐ', :mathord, "boxed question mark"), + :rangledownzigzagarrow => UCMCommand("\\rangledownzigzagarrow", 'โผ', :mathord, "right angle with downwards zigzag arrow"), + :hexagon => UCMCommand("\\hexagon", 'โŽ”', :mathord, "horizontal benzene ring [hexagon flat open]"), + :lparenuend => UCMCommand("\\lparenuend", 'โŽ›', :mathord, "left parenthesis upper hook"), + :lparenextender => UCMCommand("\\lparenextender", 'โŽœ', :mathord, "left parenthesis extension"), + :lparenlend => UCMCommand("\\lparenlend", 'โŽ', :mathord, "left parenthesis lower hook"), + :rparenuend => UCMCommand("\\rparenuend", 'โŽž', :mathord, "right parenthesis upper hook"), + :rparenextender => UCMCommand("\\rparenextender", 'โŽŸ', :mathord, "right parenthesis extension"), + :rparenlend => UCMCommand("\\rparenlend", 'โŽ ', :mathord, "right parenthesis lower hook"), + :lbrackuend => UCMCommand("\\lbrackuend", 'โŽก', :mathord, "left square bracket upper corner"), + :lbrackextender => UCMCommand("\\lbrackextender", 'โŽข', :mathord, "left square bracket extension"), + :lbracklend => UCMCommand("\\lbracklend", 'โŽฃ', :mathord, "left square bracket lower corner"), + :rbrackuend => UCMCommand("\\rbrackuend", 'โŽค', :mathord, "right square bracket upper corner"), + :rbrackextender => UCMCommand("\\rbrackextender", 'โŽฅ', :mathord, "right square bracket extension"), + :rbracklend => UCMCommand("\\rbracklend", 'โŽฆ', :mathord, "right square bracket lower corner"), + :lbraceuend => UCMCommand("\\lbraceuend", 'โŽง', :mathord, "left curly bracket upper hook"), + :lbracemid => UCMCommand("\\lbracemid", 'โŽจ', :mathord, "left curly bracket middle piece"), + :lbracelend => UCMCommand("\\lbracelend", 'โŽฉ', :mathord, "left curly bracket lower hook"), + :vbraceextender => UCMCommand("\\vbraceextender", 'โŽช', :mathord, "curly bracket extension"), + :rbraceuend => UCMCommand("\\rbraceuend", 'โŽซ', :mathord, "right curly bracket upper hook"), + :rbracemid => UCMCommand("\\rbracemid", 'โŽฌ', :mathord, "right curly bracket middle piece"), + :rbracelend => UCMCommand("\\rbracelend", 'โŽญ', :mathord, "right curly bracket lower hook"), + :intextender => UCMCommand("\\intextender", 'โŽฎ', :mathord, "integral extension"), + :harrowextender => UCMCommand("\\harrowextender", 'โŽฏ', :mathord, "horizontal line extension (used to extend arrows)"), + :lmoustache => UCMCommand("\\lmoustache", 'โŽฐ', :mathopen, "upper left or lower right curly bracket section"), + :rmoustache => UCMCommand("\\rmoustache", 'โŽฑ', :mathclose, "upper right or lower left curly bracket section"), + :sumtop => UCMCommand("\\sumtop", 'โŽฒ', :mathord, "summation top"), + :sumbottom => UCMCommand("\\sumbottom", 'โŽณ', :mathord, "summation bottom"), + :overbracket => UCMCommand("\\overbracket", 'โŽด', :mathover, "top square bracket"), + :underbracket => UCMCommand("\\underbracket", 'โŽต', :mathunder, "bottom square bracket"), + :bbrktbrk => UCMCommand("\\bbrktbrk", 'โŽถ', :mathord, "bottom square bracket over top square bracket"), + :sqrtbottom => UCMCommand("\\sqrtbottom", 'โŽท', :mathord, "radical symbol bottom"), + :lvboxline => UCMCommand("\\lvboxline", 'โŽธ', :mathord, "left vertical box line"), + :rvboxline => UCMCommand("\\rvboxline", 'โŽน', :mathord, "right vertical box line"), + :varcarriagereturn => UCMCommand("\\varcarriagereturn", 'โŽ', :mathord, "return symbol"), + :overparen => UCMCommand("\\overparen", 'โœ', :mathover, "top parenthesis (mathematical use)"), + :underparen => UCMCommand("\\underparen", 'โ', :mathunder, "bottom parenthesis (mathematical use)"), + :overbrace => UCMCommand("\\overbrace", 'โž', :mathover, "top curly bracket (mathematical use)"), + :underbrace => UCMCommand("\\underbrace", 'โŸ', :mathunder, "bottom curly bracket (mathematical use)"), + :obrbrak => UCMCommand("\\obrbrak", 'โ ', :mathord, "top tortoise shell bracket (mathematical use)"), + :ubrbrak => UCMCommand("\\ubrbrak", 'โก', :mathord, "bottom tortoise shell bracket (mathematical use)"), + :trapezium => UCMCommand("\\trapezium", 'โข', :mathord, "white trapezium"), + :benzenr => UCMCommand("\\benzenr", 'โฃ', :mathord, "benzene ring with circle"), + :strns => UCMCommand("\\strns", 'โค', :mathord, "straightness"), + :fltns => UCMCommand("\\fltns", 'โฅ', :mathord, "flatness"), + :accurrent => UCMCommand("\\accurrent", 'โฆ', :mathord, "ac current"), + :elinters => UCMCommand("\\elinters", 'โง', :mathord, "electrical intersection"), + :blanksymbol => UCMCommand("\\blanksymbol", 'โข', :mathord, "blank symbol"), + :mathvisiblespace => UCMCommand("\\mathvisiblespace", 'โฃ', :mathord, "open box"), + :bdtriplevdash => UCMCommand("\\bdtriplevdash", 'โ”†', :mathord, "doubly broken vert"), + :blockuphalf => UCMCommand("\\blockuphalf", 'โ–€', :mathord, "upper half block"), + :blocklowhalf => UCMCommand("\\blocklowhalf", 'โ–„', :mathord, "lower half block"), + :blockfull => UCMCommand("\\blockfull", 'โ–ˆ', :mathord, "full block"), + :blocklefthalf => UCMCommand("\\blocklefthalf", 'โ–Œ', :mathord, "left half block"), + :blockrighthalf => UCMCommand("\\blockrighthalf", 'โ–', :mathord, "right half block"), + :blockqtrshaded => UCMCommand("\\blockqtrshaded", 'โ–‘', :mathord, "25\\% shaded block"), + :blockhalfshaded => UCMCommand("\\blockhalfshaded", 'โ–’', :mathord, "50\\% shaded block"), + :blockthreeqtrshaded => UCMCommand("\\blockthreeqtrshaded", 'โ–“', :mathord, "75\\% shaded block"), + :mdlgblksquare => UCMCommand("\\mdlgblksquare", 'โ– ', :mathord, "square, filled"), + :mdlgwhtsquare => UCMCommand("\\mdlgwhtsquare", 'โ–ก', :mathord, "square, open"), + :squoval => UCMCommand("\\squoval", 'โ–ข', :mathord, "white square with rounded corners"), + :blackinwhitesquare => UCMCommand("\\blackinwhitesquare", 'โ–ฃ', :mathord, "white square containing black small square"), + :squarehfill => UCMCommand("\\squarehfill", 'โ–ค', :mathord, "square, horizontal rule filled"), + :squarevfill => UCMCommand("\\squarevfill", 'โ–ฅ', :mathord, "square, vertical rule filled"), + :squarehvfill => UCMCommand("\\squarehvfill", 'โ–ฆ', :mathord, "square with orthogonal crosshatch fill"), + :squarenwsefill => UCMCommand("\\squarenwsefill", 'โ–ง', :mathord, "square, nw-to-se rule filled"), + :squareneswfill => UCMCommand("\\squareneswfill", 'โ–จ', :mathord, "square, ne-to-sw rule filled"), + :squarecrossfill => UCMCommand("\\squarecrossfill", 'โ–ฉ', :mathord, "square with diagonal crosshatch fill"), + :smblksquare => UCMCommand("\\smblksquare", 'โ–ช', :mathord, "/blacksquare - sq bullet, filled"), + :smwhtsquare => UCMCommand("\\smwhtsquare", 'โ–ซ', :mathord, "white small square"), + :hrectangleblack => UCMCommand("\\hrectangleblack", 'โ–ฌ', :mathord, "black rectangle"), + :hrectangle => UCMCommand("\\hrectangle", 'โ–ญ', :mathord, "horizontal rectangle, open"), + :vrectangleblack => UCMCommand("\\vrectangleblack", 'โ–ฎ', :mathord, "black vertical rectangle"), + :vrectangle => UCMCommand("\\vrectangle", 'โ–ฏ', :mathord, "rectangle, white (vertical)"), + :parallelogramblack => UCMCommand("\\parallelogramblack", 'โ–ฐ', :mathord, "black parallelogram"), + :parallelogram => UCMCommand("\\parallelogram", 'โ–ฑ', :mathord, "parallelogram, open"), + :bigblacktriangleup => UCMCommand("\\bigblacktriangleup", 'โ–ฒ', :mathord, "black up-pointing triangle"), + :bigtriangleup => UCMCommand("\\bigtriangleup", 'โ–ณ', :mathbin, "big up triangle, open"), + :blacktriangle => UCMCommand("\\blacktriangle", 'โ–ด', :mathord, "up triangle, filled"), + :vartriangle => UCMCommand("\\vartriangle", 'โ–ต', :mathrel, "/triangle - up triangle, open"), + :blacktriangleright => UCMCommand("\\blacktriangleright", 'โ–ถ', :mathord, "(large) right triangle, filled"), + :triangleright => UCMCommand("\\triangleright", 'โ–ท', :mathbin, "(large) right triangle, open; z notation range restriction"), + :smallblacktriangleright => UCMCommand("\\smallblacktriangleright", 'โ–ธ', :mathord, "right triangle, filled"), + :smalltriangleright => UCMCommand("\\smalltriangleright", 'โ–น', :mathord, "right triangle, open"), + :blackpointerright => UCMCommand("\\blackpointerright", 'โ–บ', :mathord, "black right-pointing pointer"), + :whitepointerright => UCMCommand("\\whitepointerright", 'โ–ป', :mathord, "white right-pointing pointer"), + :bigblacktriangledown => UCMCommand("\\bigblacktriangledown", 'โ–ผ', :mathord, "big down triangle, filled"), + :bigtriangledown => UCMCommand("\\bigtriangledown", 'โ–ฝ', :mathord, "big down triangle, open"), + :blacktriangledown => UCMCommand("\\blacktriangledown", 'โ–พ', :mathord, "down triangle, filled"), + :triangledown => UCMCommand("\\triangledown", 'โ–ฟ', :mathord, "down triangle, open"), + :blacktriangleleft => UCMCommand("\\blacktriangleleft", 'โ—€', :mathord, "(large) left triangle, filled"), + :triangleleft => UCMCommand("\\triangleleft", 'โ—', :mathbin, "(large) left triangle, open; z notation domain restriction"), + :smallblacktriangleleft => UCMCommand("\\smallblacktriangleleft", 'โ—‚', :mathord, "left triangle, filled"), + :smalltriangleleft => UCMCommand("\\smalltriangleleft", 'โ—ƒ', :mathord, "left triangle, open"), + :blackpointerleft => UCMCommand("\\blackpointerleft", 'โ—„', :mathord, "black left-pointing pointer"), + :whitepointerleft => UCMCommand("\\whitepointerleft", 'โ—…', :mathord, "white left-pointing pointer"), + :mdlgblkdiamond => UCMCommand("\\mdlgblkdiamond", 'โ—†', :mathord, "black diamond"), + :mdlgwhtdiamond => UCMCommand("\\mdlgwhtdiamond", 'โ—‡', :mathord, "white diamond; diamond, open"), + :blackinwhitediamond => UCMCommand("\\blackinwhitediamond", 'โ—ˆ', :mathord, "white diamond containing black small diamond"), + :fisheye => UCMCommand("\\fisheye", 'โ—‰', :mathord, "fisheye"), + :mdlgwhtlozenge => UCMCommand("\\mdlgwhtlozenge", 'โ—Š', :mathord, "lozenge or total mark"), + :mdlgwhtcircle => UCMCommand("\\mdlgwhtcircle", 'โ—‹', :mathbin, "medium large circle"), + :dottedcircle => UCMCommand("\\dottedcircle", 'โ—Œ', :mathord, "dotted circle"), + :circlevertfill => UCMCommand("\\circlevertfill", 'โ—', :mathord, "circle with vertical fill"), + :bullseye => UCMCommand("\\bullseye", 'โ—Ž', :mathord, "bullseye"), + :mdlgblkcircle => UCMCommand("\\mdlgblkcircle", 'โ—', :mathord, "circle, filled"), + :circlelefthalfblack => UCMCommand("\\circlelefthalfblack", 'โ—', :mathord, "circle, filled left half [harvey ball]"), + :circlerighthalfblack => UCMCommand("\\circlerighthalfblack", 'โ—‘', :mathord, "circle, filled right half"), + :circlebottomhalfblack => UCMCommand("\\circlebottomhalfblack", 'โ—’', :mathord, "circle, filled bottom half"), + :circletophalfblack => UCMCommand("\\circletophalfblack", 'โ—“', :mathord, "circle, filled top half"), + :circleurquadblack => UCMCommand("\\circleurquadblack", 'โ—”', :mathord, "circle with upper right quadrant black"), + :blackcircleulquadwhite => UCMCommand("\\blackcircleulquadwhite", 'โ—•', :mathord, "circle with all but upper left quadrant black"), + :blacklefthalfcircle => UCMCommand("\\blacklefthalfcircle", 'โ—–', :mathord, "left half black circle"), + :blackrighthalfcircle => UCMCommand("\\blackrighthalfcircle", 'โ——', :mathord, "right half black circle"), + :inversebullet => UCMCommand("\\inversebullet", 'โ—˜', :mathord, "inverse bullet "), + :inversewhitecircle => UCMCommand("\\inversewhitecircle", 'โ—™', :mathord, "inverse white circle"), + :invwhiteupperhalfcircle => UCMCommand("\\invwhiteupperhalfcircle", 'โ—š', :mathord, "upper half inverse white circle"), + :invwhitelowerhalfcircle => UCMCommand("\\invwhitelowerhalfcircle", 'โ—›', :mathord, "lower half inverse white circle"), + :ularc => UCMCommand("\\ularc", 'โ—œ', :mathord, "upper left quadrant circular arc"), + :urarc => UCMCommand("\\urarc", 'โ—', :mathord, "upper right quadrant circular arc"), + :lrarc => UCMCommand("\\lrarc", 'โ—ž', :mathord, "lower right quadrant circular arc"), + :llarc => UCMCommand("\\llarc", 'โ—Ÿ', :mathord, "lower left quadrant circular arc"), + :topsemicircle => UCMCommand("\\topsemicircle", 'โ— ', :mathord, "upper half circle"), + :botsemicircle => UCMCommand("\\botsemicircle", 'โ—ก', :mathord, "lower half circle"), + :lrblacktriangle => UCMCommand("\\lrblacktriangle", 'โ—ข', :mathord, "lower right triangle, filled"), + :llblacktriangle => UCMCommand("\\llblacktriangle", 'โ—ฃ', :mathord, "lower left triangle, filled"), + :ulblacktriangle => UCMCommand("\\ulblacktriangle", 'โ—ค', :mathord, "upper left triangle, filled"), + :urblacktriangle => UCMCommand("\\urblacktriangle", 'โ—ฅ', :mathord, "upper right triangle, filled"), + :smwhtcircle => UCMCommand("\\smwhtcircle", 'โ—ฆ', :mathord, "white bullet"), + :squareleftblack => UCMCommand("\\squareleftblack", 'โ—ง', :mathord, "square, filled left half"), + :squarerightblack => UCMCommand("\\squarerightblack", 'โ—จ', :mathord, "square, filled right half"), + :squareulblack => UCMCommand("\\squareulblack", 'โ—ฉ', :mathord, "square, filled top left corner"), + :squarelrblack => UCMCommand("\\squarelrblack", 'โ—ช', :mathord, "square, filled bottom right corner"), + :boxbar => UCMCommand("\\boxbar", 'โ—ซ', :mathbin, "vertical bar in box"), + :trianglecdot => UCMCommand("\\trianglecdot", 'โ—ฌ', :mathord, "triangle with centered dot"), + :triangleleftblack => UCMCommand("\\triangleleftblack", 'โ—ญ', :mathord, "up-pointing triangle with left half black"), + :trianglerightblack => UCMCommand("\\trianglerightblack", 'โ—ฎ', :mathord, "up-pointing triangle with right half black"), + :lgwhtcircle => UCMCommand("\\lgwhtcircle", 'โ—ฏ', :mathord, "large circle"), + :squareulquad => UCMCommand("\\squareulquad", 'โ—ฐ', :mathord, "white square with upper left quadrant"), + :squarellquad => UCMCommand("\\squarellquad", 'โ—ฑ', :mathord, "white square with lower left quadrant"), + :squarelrquad => UCMCommand("\\squarelrquad", 'โ—ฒ', :mathord, "white square with lower right quadrant"), + :squareurquad => UCMCommand("\\squareurquad", 'โ—ณ', :mathord, "white square with upper right quadrant"), + :circleulquad => UCMCommand("\\circleulquad", 'โ—ด', :mathord, "white circle with upper left quadrant"), + :circlellquad => UCMCommand("\\circlellquad", 'โ—ต', :mathord, "white circle with lower left quadrant"), + :circlelrquad => UCMCommand("\\circlelrquad", 'โ—ถ', :mathord, "white circle with lower right quadrant"), + :circleurquad => UCMCommand("\\circleurquad", 'โ—ท', :mathord, "white circle with upper right quadrant"), + :ultriangle => UCMCommand("\\ultriangle", 'โ—ธ', :mathord, "upper left triangle"), + :urtriangle => UCMCommand("\\urtriangle", 'โ—น', :mathord, "upper right triangle"), + :lltriangle => UCMCommand("\\lltriangle", 'โ—บ', :mathord, "lower left triangle"), + :mdwhtsquare => UCMCommand("\\mdwhtsquare", 'โ—ป', :mathord, "white medium square"), + :mdblksquare => UCMCommand("\\mdblksquare", 'โ—ผ', :mathord, "black medium square"), + :mdsmwhtsquare => UCMCommand("\\mdsmwhtsquare", 'โ—ฝ', :mathord, "white medium small square"), + :mdsmblksquare => UCMCommand("\\mdsmblksquare", 'โ—พ', :mathord, "black medium small square"), + :lrtriangle => UCMCommand("\\lrtriangle", 'โ—ฟ', :mathord, "lower right triangle"), + :bigstar => UCMCommand("\\bigstar", 'โ˜…', :mathord, "star, filled"), + :bigwhitestar => UCMCommand("\\bigwhitestar", 'โ˜†', :mathord, "star, open"), + :astrosun => UCMCommand("\\astrosun", 'โ˜‰', :mathord, "sun"), + :danger => UCMCommand("\\danger", 'โ˜ก', :mathord, "dangerous bend (caution sign)"), + :blacksmiley => UCMCommand("\\blacksmiley", 'โ˜ป', :mathord, "black smiling face"), + :sun => UCMCommand("\\sun", 'โ˜ผ', :mathord, "white sun with rays"), + :rightmoon => UCMCommand("\\rightmoon", 'โ˜ฝ', :mathord, "first quarter moon"), + :leftmoon => UCMCommand("\\leftmoon", 'โ˜พ', :mathord, "last quarter moon"), + :female => UCMCommand("\\female", 'โ™€', :mathord, "venus, female"), + :male => UCMCommand("\\male", 'โ™‚', :mathord, "mars, male"), + :spadesuit => UCMCommand("\\spadesuit", 'โ™ ', :mathord, "spades suit symbol"), + :heartsuit => UCMCommand("\\heartsuit", 'โ™ก', :mathord, "heart suit symbol"), + :diamondsuit => UCMCommand("\\diamondsuit", 'โ™ข', :mathord, "diamond suit symbol"), + :clubsuit => UCMCommand("\\clubsuit", 'โ™ฃ', :mathord, "club suit symbol"), + :varspadesuit => UCMCommand("\\varspadesuit", 'โ™ค', :mathord, "spade, white (card suit)"), + :varheartsuit => UCMCommand("\\varheartsuit", 'โ™ฅ', :mathord, "filled heart (card suit)"), + :vardiamondsuit => UCMCommand("\\vardiamondsuit", 'โ™ฆ', :mathord, "filled diamond (card suit)"), + :varclubsuit => UCMCommand("\\varclubsuit", 'โ™ง', :mathord, "club, white (card suit)"), + :quarternote => UCMCommand("\\quarternote", 'โ™ฉ', :mathord, "music note (sung text sign)"), + :eighthnote => UCMCommand("\\eighthnote", 'โ™ช', :mathord, "eighth note"), + :twonotes => UCMCommand("\\twonotes", 'โ™ซ', :mathord, "beamed eighth notes"), + :flat => UCMCommand("\\flat", 'โ™ญ', :mathord, "musical flat"), + :natural => UCMCommand("\\natural", 'โ™ฎ', :mathord, "music natural"), + :sharp => UCMCommand("\\sharp", 'โ™ฏ', :mathord, "musical sharp"), + :acidfree => UCMCommand("\\acidfree", 'โ™พ', :mathord, "permanent paper sign"), + :dicei => UCMCommand("\\dicei", 'โš€', :mathord, "die face-1"), + :diceii => UCMCommand("\\diceii", 'โš', :mathord, "die face-2"), + :diceiii => UCMCommand("\\diceiii", 'โš‚', :mathord, "die face-3"), + :diceiv => UCMCommand("\\diceiv", 'โšƒ', :mathord, "die face-4"), + :dicev => UCMCommand("\\dicev", 'โš„', :mathord, "die face-5"), + :dicevi => UCMCommand("\\dicevi", 'โš…', :mathord, "die face-6"), + :circledrightdot => UCMCommand("\\circledrightdot", 'โš†', :mathord, "white circle with dot right"), + :circledtwodots => UCMCommand("\\circledtwodots", 'โš‡', :mathord, "white circle with two dots"), + :blackcircledrightdot => UCMCommand("\\blackcircledrightdot", 'โšˆ', :mathord, "black circle with white dot right"), + :blackcircledtwodots => UCMCommand("\\blackcircledtwodots", 'โš‰', :mathord, "black circle with two white dots"), + :Hermaphrodite => UCMCommand("\\Hermaphrodite", 'โšฅ', :mathord, "male and female sign"), + :mdwhtcircle => UCMCommand("\\mdwhtcircle", 'โšช', :mathord, "medium white circle"), + :mdblkcircle => UCMCommand("\\mdblkcircle", 'โšซ', :mathord, "medium black circle"), + :mdsmwhtcircle => UCMCommand("\\mdsmwhtcircle", 'โšฌ', :mathord, "medium small white circle"), + :neuter => UCMCommand("\\neuter", 'โšฒ', :mathord, "neuter"), + :checkmark => UCMCommand("\\checkmark", 'โœ“', :mathord, "tick, check mark"), + :maltese => UCMCommand("\\maltese", 'โœ ', :mathord, "maltese cross"), + :circledstar => UCMCommand("\\circledstar", 'โœช', :mathord, "circled white star"), + :varstar => UCMCommand("\\varstar", 'โœถ', :mathord, "six pointed black star"), + :dingasterisk => UCMCommand("\\dingasterisk", 'โœฝ', :mathord, "heavy teardrop-spoked asterisk"), + :lbrbrak => UCMCommand("\\lbrbrak", 'โฒ', :mathopen, "light left tortoise shell bracket ornament"), + :rbrbrak => UCMCommand("\\rbrbrak", 'โณ', :mathclose, "light right tortoise shell bracket ornament"), + :draftingarrow => UCMCommand("\\draftingarrow", 'โž›', :mathord, "right arrow with bold head (drafting)"), + :threedangle => UCMCommand("\\threedangle", 'โŸ€', :mathord, "three dimensional angle"), + :whiteinwhitetriangle => UCMCommand("\\whiteinwhitetriangle", 'โŸ', :mathord, "white triangle containing small white triangle"), + :perp => UCMCommand("\\perp", 'โŸ‚', :mathrel, "perpendicular"), + :subsetcirc => UCMCommand("\\subsetcirc", 'โŸƒ', :mathord, "open subset"), + :supsetcirc => UCMCommand("\\supsetcirc", 'โŸ„', :mathord, "open superset"), + :lbag => UCMCommand("\\lbag", 'โŸ…', :mathopen, "left s-shaped bag delimiter"), + :rbag => UCMCommand("\\rbag", 'โŸ†', :mathclose, "right s-shaped bag delimiter"), + :veedot => UCMCommand("\\veedot", 'โŸ‡', :mathbin, "or with dot inside"), + :bsolhsub => UCMCommand("\\bsolhsub", 'โŸˆ', :mathrel, "reverse solidus preceding subset"), + :suphsol => UCMCommand("\\suphsol", 'โŸ‰', :mathrel, "superset preceding solidus"), + :diagup => UCMCommand("\\diagup", 'โŸ‹', :mathord, "mathematical rising diagonal"), + :longdivision => UCMCommand("\\longdivision", 'โŸŒ', :mathopen, "long division"), + :diagdown => UCMCommand("\\diagdown", 'โŸ', :mathord, "mathematical falling diagonal"), + :diamondcdot => UCMCommand("\\diamondcdot", 'โŸ', :mathord, "white diamond with centred dot"), + :wedgedot => UCMCommand("\\wedgedot", 'โŸ‘', :mathbin, "and with dot"), + :upin => UCMCommand("\\upin", 'โŸ’', :mathrel, "element of opening upwards"), + :pullback => UCMCommand("\\pullback", 'โŸ“', :mathrel, "lower right corner with dot"), + :pushout => UCMCommand("\\pushout", 'โŸ”', :mathrel, "upper left corner with dot"), + :leftouterjoin => UCMCommand("\\leftouterjoin", 'โŸ•', :mathop, "left outer join"), + :rightouterjoin => UCMCommand("\\rightouterjoin", 'โŸ–', :mathop, "right outer join"), + :fullouterjoin => UCMCommand("\\fullouterjoin", 'โŸ—', :mathop, "full outer join"), + :bigbot => UCMCommand("\\bigbot", 'โŸ˜', :mathop, "large up tack"), + :bigtop => UCMCommand("\\bigtop", 'โŸ™', :mathop, "large down tack"), + :DashVDash => UCMCommand("\\DashVDash", 'โŸš', :mathrel, "left and right double turnstile"), + :dashVdash => UCMCommand("\\dashVdash", 'โŸ›', :mathrel, "left and right tack"), + :multimapinv => UCMCommand("\\multimapinv", 'โŸœ', :mathrel, "left multimap"), + :vlongdash => UCMCommand("\\vlongdash", 'โŸ', :mathrel, "long left tack"), + :longdashv => UCMCommand("\\longdashv", 'โŸž', :mathrel, "long right tack"), + :cirbot => UCMCommand("\\cirbot", 'โŸŸ', :mathrel, "up tack with circle above"), + :lozengeminus => UCMCommand("\\lozengeminus", 'โŸ ', :mathbin, "lozenge divided by horizontal rule"), + :concavediamond => UCMCommand("\\concavediamond", 'โŸก', :mathbin, "white concave-sided diamond"), + :concavediamondtickleft => UCMCommand("\\concavediamondtickleft", 'โŸข', :mathbin, "white concave-sided diamond with leftwards tick"), + :concavediamondtickright => UCMCommand("\\concavediamondtickright", 'โŸฃ', :mathbin, "white concave-sided diamond with rightwards tick"), + :whitesquaretickleft => UCMCommand("\\whitesquaretickleft", 'โŸค', :mathbin, "white square with leftwards tick"), + :whitesquaretickright => UCMCommand("\\whitesquaretickright", 'โŸฅ', :mathbin, "white square with rightwards tick"), + :lBrack => UCMCommand("\\lBrack", 'โŸฆ', :mathopen, "mathematical left white square bracket"), + :rBrack => UCMCommand("\\rBrack", 'โŸง', :mathclose, "mathematical right white square bracket"), + :langle => UCMCommand("\\langle", 'โŸจ', :mathopen, "mathematical left angle bracket"), + :rangle => UCMCommand("\\rangle", 'โŸฉ', :mathclose, "mathematical right angle bracket"), + :lAngle => UCMCommand("\\lAngle", 'โŸช', :mathopen, "mathematical left double angle bracket"), + :rAngle => UCMCommand("\\rAngle", 'โŸซ', :mathclose, "mathematical right double angle bracket"), + :Lbrbrak => UCMCommand("\\Lbrbrak", 'โŸฌ', :mathopen, "mathematical left white tortoise shell bracket"), + :Rbrbrak => UCMCommand("\\Rbrbrak", 'โŸญ', :mathclose, "mathematical right white tortoise shell bracket"), + :lgroup => UCMCommand("\\lgroup", 'โŸฎ', :mathopen, "mathematical left flattened parenthesis"), + :rgroup => UCMCommand("\\rgroup", 'โŸฏ', :mathclose, "mathematical right flattened parenthesis"), + :UUparrow => UCMCommand("\\UUparrow", 'โŸฐ', :mathrel, "upwards quadruple arrow"), + :DDownarrow => UCMCommand("\\DDownarrow", 'โŸฑ', :mathrel, "downwards quadruple arrow"), + :acwgapcirclearrow => UCMCommand("\\acwgapcirclearrow", 'โŸฒ', :mathrel, "anticlockwise gapped circle arrow"), + :cwgapcirclearrow => UCMCommand("\\cwgapcirclearrow", 'โŸณ', :mathrel, "clockwise gapped circle arrow"), + :rightarrowonoplus => UCMCommand("\\rightarrowonoplus", 'โŸด', :mathrel, "right arrow with circled plus"), + :longleftarrow => UCMCommand("\\longleftarrow", 'โŸต', :mathrel, "long leftwards arrow"), + :longrightarrow => UCMCommand("\\longrightarrow", 'โŸถ', :mathrel, "long rightwards arrow"), + :longleftrightarrow => UCMCommand("\\longleftrightarrow", 'โŸท', :mathrel, "long left right arrow"), + :Longleftarrow => UCMCommand("\\Longleftarrow", 'โŸธ', :mathrel, "long leftwards double arrow"), + :Longrightarrow => UCMCommand("\\Longrightarrow", 'โŸน', :mathrel, "long rightwards double arrow"), + :Longleftrightarrow => UCMCommand("\\Longleftrightarrow", 'โŸบ', :mathrel, "long left right double arrow"), + :longmapsfrom => UCMCommand("\\longmapsfrom", 'โŸป', :mathrel, "long leftwards arrow from bar"), + :longmapsto => UCMCommand("\\longmapsto", 'โŸผ', :mathrel, "long rightwards arrow from bar"), + :Longmapsfrom => UCMCommand("\\Longmapsfrom", 'โŸฝ', :mathrel, "long leftwards double arrow from bar"), + :Longmapsto => UCMCommand("\\Longmapsto", 'โŸพ', :mathrel, "long rightwards double arrow from bar"), + :longrightsquigarrow => UCMCommand("\\longrightsquigarrow", 'โŸฟ', :mathrel, "long rightwards squiggle arrow"), + :nvtwoheadrightarrow => UCMCommand("\\nvtwoheadrightarrow", 'โค€', :mathrel, "rightwards two-headed arrow with vertical stroke"), + :nVtwoheadrightarrow => UCMCommand("\\nVtwoheadrightarrow", 'โค', :mathrel, "rightwards two-headed arrow with double vertical stroke"), + :nvLeftarrow => UCMCommand("\\nvLeftarrow", 'โค‚', :mathrel, "leftwards double arrow with vertical stroke"), + :nvRightarrow => UCMCommand("\\nvRightarrow", 'โคƒ', :mathrel, "rightwards double arrow with vertical stroke"), + :nvLeftrightarrow => UCMCommand("\\nvLeftrightarrow", 'โค„', :mathrel, "left right double arrow with vertical stroke"), + :twoheadmapsto => UCMCommand("\\twoheadmapsto", 'โค…', :mathrel, "rightwards two-headed arrow from bar"), + :Mapsfrom => UCMCommand("\\Mapsfrom", 'โค†', :mathrel, "leftwards double arrow from bar"), + :Mapsto => UCMCommand("\\Mapsto", 'โค‡', :mathrel, "rightwards double arrow from bar"), + :downarrowbarred => UCMCommand("\\downarrowbarred", 'โคˆ', :mathrel, "downwards arrow with horizontal stroke"), + :uparrowbarred => UCMCommand("\\uparrowbarred", 'โค‰', :mathrel, "upwards arrow with horizontal stroke"), + :Uuparrow => UCMCommand("\\Uuparrow", 'โคŠ', :mathrel, "upwards triple arrow"), + :Ddownarrow => UCMCommand("\\Ddownarrow", 'โค‹', :mathrel, "downwards triple arrow"), + :leftbkarrow => UCMCommand("\\leftbkarrow", 'โคŒ', :mathrel, "leftwards double dash arrow"), + :rightbkarrow => UCMCommand("\\rightbkarrow", 'โค', :mathrel, "rightwards double dash arrow"), + :leftdbkarrow => UCMCommand("\\leftdbkarrow", 'โคŽ', :mathrel, "leftwards triple dash arrow"), + :dbkarrow => UCMCommand("\\dbkarrow", 'โค', :mathrel, "rightwards triple dash arrow"), + :drbkarrow => UCMCommand("\\drbkarrow", 'โค', :mathrel, "rightwards two-headed triple dash arrow"), + :rightdotarrow => UCMCommand("\\rightdotarrow", 'โค‘', :mathrel, "rightwards arrow with dotted stem"), + :baruparrow => UCMCommand("\\baruparrow", 'โค’', :mathrel, "upwards arrow to bar"), + :downarrowbar => UCMCommand("\\downarrowbar", 'โค“', :mathrel, "downwards arrow to bar"), + :nvrightarrowtail => UCMCommand("\\nvrightarrowtail", 'โค”', :mathrel, "rightwards arrow with tail with vertical stroke"), + :nVrightarrowtail => UCMCommand("\\nVrightarrowtail", 'โค•', :mathrel, "rightwards arrow with tail with double vertical stroke"), + :twoheadrightarrowtail => UCMCommand("\\twoheadrightarrowtail", 'โค–', :mathrel, "rightwards two-headed arrow with tail"), + :nvtwoheadrightarrowtail => UCMCommand("\\nvtwoheadrightarrowtail", 'โค—', :mathrel, "rightwards two-headed arrow with tail with vertical stroke"), + :nVtwoheadrightarrowtail => UCMCommand("\\nVtwoheadrightarrowtail", 'โค˜', :mathrel, "rightwards two-headed arrow with tail with double vertical stroke"), + :lefttail => UCMCommand("\\lefttail", 'โค™', :mathrel, "leftwards arrow-tail"), + :righttail => UCMCommand("\\righttail", 'โคš', :mathrel, "rightwards arrow-tail"), + :leftdbltail => UCMCommand("\\leftdbltail", 'โค›', :mathrel, "leftwards double arrow-tail"), + :rightdbltail => UCMCommand("\\rightdbltail", 'โคœ', :mathrel, "rightwards double arrow-tail"), + :diamondleftarrow => UCMCommand("\\diamondleftarrow", 'โค', :mathrel, "leftwards arrow to black diamond"), + :rightarrowdiamond => UCMCommand("\\rightarrowdiamond", 'โคž', :mathrel, "rightwards arrow to black diamond"), + :diamondleftarrowbar => UCMCommand("\\diamondleftarrowbar", 'โคŸ', :mathrel, "leftwards arrow from bar to black diamond"), + :barrightarrowdiamond => UCMCommand("\\barrightarrowdiamond", 'โค ', :mathrel, "rightwards arrow from bar to black diamond"), + :nwsearrow => UCMCommand("\\nwsearrow", 'โคก', :mathrel, "north west and south east arrow"), + :neswarrow => UCMCommand("\\neswarrow", 'โคข', :mathrel, "north east and south west arrow"), + :hknwarrow => UCMCommand("\\hknwarrow", 'โคฃ', :mathrel, "north west arrow with hook"), + :hknearrow => UCMCommand("\\hknearrow", 'โคค', :mathrel, "north east arrow with hook"), + :hksearrow => UCMCommand("\\hksearrow", 'โคฅ', :mathrel, "south east arrow with hook"), + :hkswarrow => UCMCommand("\\hkswarrow", 'โคฆ', :mathrel, "south west arrow with hook"), + :tona => UCMCommand("\\tona", 'โคง', :mathrel, "north west arrow and north east arrow"), + :toea => UCMCommand("\\toea", 'โคจ', :mathrel, "north east arrow and south east arrow"), + :tosa => UCMCommand("\\tosa", 'โคฉ', :mathrel, "south east arrow and south west arrow"), + :towa => UCMCommand("\\towa", 'โคช', :mathrel, "south west arrow and north west arrow"), + :rdiagovfdiag => UCMCommand("\\rdiagovfdiag", 'โคซ', :mathord, "rising diagonal crossing falling diagonal"), + :fdiagovrdiag => UCMCommand("\\fdiagovrdiag", 'โคฌ', :mathord, "falling diagonal crossing rising diagonal"), + :seovnearrow => UCMCommand("\\seovnearrow", 'โคญ', :mathord, "south east arrow crossing north east arrow"), + :neovsearrow => UCMCommand("\\neovsearrow", 'โคฎ', :mathord, "north east arrow crossing south east arrow"), + :fdiagovnearrow => UCMCommand("\\fdiagovnearrow", 'โคฏ', :mathord, "falling diagonal crossing north east arrow"), + :rdiagovsearrow => UCMCommand("\\rdiagovsearrow", 'โคฐ', :mathord, "rising diagonal crossing south east arrow"), + :neovnwarrow => UCMCommand("\\neovnwarrow", 'โคฑ', :mathord, "north east arrow crossing north west arrow"), + :nwovnearrow => UCMCommand("\\nwovnearrow", 'โคฒ', :mathord, "north west arrow crossing north east arrow"), + :rightcurvedarrow => UCMCommand("\\rightcurvedarrow", 'โคณ', :mathrel, "wave arrow pointing directly right"), + :uprightcurvearrow => UCMCommand("\\uprightcurvearrow", 'โคด', :mathord, "arrow pointing rightwards then curving upwards"), + :downrightcurvedarrow => UCMCommand("\\downrightcurvedarrow", 'โคต', :mathord, "arrow pointing rightwards then curving downwards"), + :leftdowncurvedarrow => UCMCommand("\\leftdowncurvedarrow", 'โคถ', :mathrel, "arrow pointing downwards then curving leftwards"), + :rightdowncurvedarrow => UCMCommand("\\rightdowncurvedarrow", 'โคท', :mathrel, "arrow pointing downwards then curving rightwards"), + :cwrightarcarrow => UCMCommand("\\cwrightarcarrow", 'โคธ', :mathrel, "right-side arc clockwise arrow"), + :acwleftarcarrow => UCMCommand("\\acwleftarcarrow", 'โคน', :mathrel, "left-side arc anticlockwise arrow"), + :acwoverarcarrow => UCMCommand("\\acwoverarcarrow", 'โคบ', :mathrel, "top arc anticlockwise arrow"), + :acwunderarcarrow => UCMCommand("\\acwunderarcarrow", 'โคป', :mathrel, "bottom arc anticlockwise arrow"), + :curvearrowrightminus => UCMCommand("\\curvearrowrightminus", 'โคผ', :mathrel, "top arc clockwise arrow with minus"), + :curvearrowleftplus => UCMCommand("\\curvearrowleftplus", 'โคฝ', :mathrel, "top arc anticlockwise arrow with plus"), + :cwundercurvearrow => UCMCommand("\\cwundercurvearrow", 'โคพ', :mathrel, "lower right semicircular clockwise arrow"), + :ccwundercurvearrow => UCMCommand("\\ccwundercurvearrow", 'โคฟ', :mathrel, "lower left semicircular anticlockwise arrow"), + :acwcirclearrow => UCMCommand("\\acwcirclearrow", 'โฅ€', :mathrel, "anticlockwise closed circle arrow"), + :cwcirclearrow => UCMCommand("\\cwcirclearrow", 'โฅ', :mathrel, "clockwise closed circle arrow"), + :rightarrowshortleftarrow => UCMCommand("\\rightarrowshortleftarrow", 'โฅ‚', :mathrel, "rightwards arrow above short leftwards arrow"), + :leftarrowshortrightarrow => UCMCommand("\\leftarrowshortrightarrow", 'โฅƒ', :mathrel, "leftwards arrow above short rightwards arrow"), + :shortrightarrowleftarrow => UCMCommand("\\shortrightarrowleftarrow", 'โฅ„', :mathrel, "short rightwards arrow above leftwards arrow"), + :rightarrowplus => UCMCommand("\\rightarrowplus", 'โฅ…', :mathrel, "rightwards arrow with plus below"), + :leftarrowplus => UCMCommand("\\leftarrowplus", 'โฅ†', :mathrel, "leftwards arrow with plus below"), + :rightarrowx => UCMCommand("\\rightarrowx", 'โฅ‡', :mathrel, "rightwards arrow through x"), + :leftrightarrowcircle => UCMCommand("\\leftrightarrowcircle", 'โฅˆ', :mathrel, "left right arrow through small circle"), + :twoheaduparrowcircle => UCMCommand("\\twoheaduparrowcircle", 'โฅ‰', :mathrel, "upwards two-headed arrow from small circle"), + :leftrightharpoonupdown => UCMCommand("\\leftrightharpoonupdown", 'โฅŠ', :mathrel, "left barb up right barb down harpoon"), + :leftrightharpoondownup => UCMCommand("\\leftrightharpoondownup", 'โฅ‹', :mathrel, "left barb down right barb up harpoon"), + :updownharpoonrightleft => UCMCommand("\\updownharpoonrightleft", 'โฅŒ', :mathrel, "up barb right down barb left harpoon"), + :updownharpoonleftright => UCMCommand("\\updownharpoonleftright", 'โฅ', :mathrel, "up barb left down barb right harpoon"), + :leftrightharpoonupup => UCMCommand("\\leftrightharpoonupup", 'โฅŽ', :mathrel, "left barb up right barb up harpoon"), + :updownharpoonrightright => UCMCommand("\\updownharpoonrightright", 'โฅ', :mathrel, "up barb right down barb right harpoon"), + :leftrightharpoondowndown => UCMCommand("\\leftrightharpoondowndown", 'โฅ', :mathrel, "left barb down right barb down harpoon"), + :updownharpoonleftleft => UCMCommand("\\updownharpoonleftleft", 'โฅ‘', :mathrel, "up barb left down barb left harpoon"), + :barleftharpoonup => UCMCommand("\\barleftharpoonup", 'โฅ’', :mathrel, "leftwards harpoon with barb up to bar"), + :rightharpoonupbar => UCMCommand("\\rightharpoonupbar", 'โฅ“', :mathrel, "rightwards harpoon with barb up to bar"), + :barupharpoonright => UCMCommand("\\barupharpoonright", 'โฅ”', :mathrel, "upwards harpoon with barb right to bar"), + :downharpoonrightbar => UCMCommand("\\downharpoonrightbar", 'โฅ•', :mathrel, "downwards harpoon with barb right to bar"), + :barleftharpoondown => UCMCommand("\\barleftharpoondown", 'โฅ–', :mathrel, "leftwards harpoon with barb down to bar"), + :rightharpoondownbar => UCMCommand("\\rightharpoondownbar", 'โฅ—', :mathrel, "rightwards harpoon with barb down to bar"), + :barupharpoonleft => UCMCommand("\\barupharpoonleft", 'โฅ˜', :mathrel, "upwards harpoon with barb left to bar"), + :downharpoonleftbar => UCMCommand("\\downharpoonleftbar", 'โฅ™', :mathrel, "downwards harpoon with barb left to bar"), + :leftharpoonupbar => UCMCommand("\\leftharpoonupbar", 'โฅš', :mathrel, "leftwards harpoon with barb up from bar"), + :barrightharpoonup => UCMCommand("\\barrightharpoonup", 'โฅ›', :mathrel, "rightwards harpoon with barb up from bar"), + :upharpoonrightbar => UCMCommand("\\upharpoonrightbar", 'โฅœ', :mathrel, "upwards harpoon with barb right from bar"), + :bardownharpoonright => UCMCommand("\\bardownharpoonright", 'โฅ', :mathrel, "downwards harpoon with barb right from bar"), + :leftharpoondownbar => UCMCommand("\\leftharpoondownbar", 'โฅž', :mathrel, "leftwards harpoon with barb down from bar"), + :barrightharpoondown => UCMCommand("\\barrightharpoondown", 'โฅŸ', :mathrel, "rightwards harpoon with barb down from bar"), + :upharpoonleftbar => UCMCommand("\\upharpoonleftbar", 'โฅ ', :mathrel, "upwards harpoon with barb left from bar"), + :bardownharpoonleft => UCMCommand("\\bardownharpoonleft", 'โฅก', :mathrel, "downwards harpoon with barb left from bar"), + :leftharpoonsupdown => UCMCommand("\\leftharpoonsupdown", 'โฅข', :mathrel, "leftwards harpoon with barb up above leftwards harpoon with barb down"), + :upharpoonsleftright => UCMCommand("\\upharpoonsleftright", 'โฅฃ', :mathrel, "upwards harpoon with barb left beside upwards harpoon with barb right"), + :rightharpoonsupdown => UCMCommand("\\rightharpoonsupdown", 'โฅค', :mathrel, "rightwards harpoon with barb up above rightwards harpoon with barb down"), + :downharpoonsleftright => UCMCommand("\\downharpoonsleftright", 'โฅฅ', :mathrel, "downwards harpoon with barb left beside downwards harpoon with barb right"), + :leftrightharpoonsup => UCMCommand("\\leftrightharpoonsup", 'โฅฆ', :mathrel, "leftwards harpoon with barb up above rightwards harpoon with barb up"), + :leftrightharpoonsdown => UCMCommand("\\leftrightharpoonsdown", 'โฅง', :mathrel, "leftwards harpoon with barb down above rightwards harpoon with barb down"), + :rightleftharpoonsup => UCMCommand("\\rightleftharpoonsup", 'โฅจ', :mathrel, "rightwards harpoon with barb up above leftwards harpoon with barb up"), + :rightleftharpoonsdown => UCMCommand("\\rightleftharpoonsdown", 'โฅฉ', :mathrel, "rightwards harpoon with barb down above leftwards harpoon with barb down"), + :leftharpoonupdash => UCMCommand("\\leftharpoonupdash", 'โฅช', :mathrel, "leftwards harpoon with barb up above long dash"), + :dashleftharpoondown => UCMCommand("\\dashleftharpoondown", 'โฅซ', :mathrel, "leftwards harpoon with barb down below long dash"), + :rightharpoonupdash => UCMCommand("\\rightharpoonupdash", 'โฅฌ', :mathrel, "rightwards harpoon with barb up above long dash"), + :dashrightharpoondown => UCMCommand("\\dashrightharpoondown", 'โฅญ', :mathrel, "rightwards harpoon with barb down below long dash"), + :updownharpoonsleftright => UCMCommand("\\updownharpoonsleftright", 'โฅฎ', :mathrel, "upwards harpoon with barb left beside downwards harpoon with barb right"), + :downupharpoonsleftright => UCMCommand("\\downupharpoonsleftright", 'โฅฏ', :mathrel, "downwards harpoon with barb left beside upwards harpoon with barb right"), + :rightimply => UCMCommand("\\rightimply", 'โฅฐ', :mathrel, "right double arrow with rounded head"), + :equalrightarrow => UCMCommand("\\equalrightarrow", 'โฅฑ', :mathrel, "equals sign above rightwards arrow"), + :similarrightarrow => UCMCommand("\\similarrightarrow", 'โฅฒ', :mathrel, "tilde operator above rightwards arrow"), + :leftarrowsimilar => UCMCommand("\\leftarrowsimilar", 'โฅณ', :mathrel, "leftwards arrow above tilde operator"), + :rightarrowsimilar => UCMCommand("\\rightarrowsimilar", 'โฅด', :mathrel, "rightwards arrow above tilde operator"), + :rightarrowapprox => UCMCommand("\\rightarrowapprox", 'โฅต', :mathrel, "rightwards arrow above almost equal to"), + :ltlarr => UCMCommand("\\ltlarr", 'โฅถ', :mathrel, "less-than above leftwards arrow"), + :leftarrowless => UCMCommand("\\leftarrowless", 'โฅท', :mathrel, "leftwards arrow through less-than"), + :gtrarr => UCMCommand("\\gtrarr", 'โฅธ', :mathrel, "greater-than above rightwards arrow"), + :subrarr => UCMCommand("\\subrarr", 'โฅน', :mathrel, "subset above rightwards arrow"), + :leftarrowsubset => UCMCommand("\\leftarrowsubset", 'โฅบ', :mathrel, "leftwards arrow through subset"), + :suplarr => UCMCommand("\\suplarr", 'โฅป', :mathrel, "superset above leftwards arrow"), + :leftfishtail => UCMCommand("\\leftfishtail", 'โฅผ', :mathrel, "left fish tail"), + :rightfishtail => UCMCommand("\\rightfishtail", 'โฅฝ', :mathrel, "right fish tail"), + :upfishtail => UCMCommand("\\upfishtail", 'โฅพ', :mathrel, "up fish tail"), + :downfishtail => UCMCommand("\\downfishtail", 'โฅฟ', :mathrel, "down fish tail"), + :Vvert => UCMCommand("\\Vvert", 'โฆ€', :mathfence, "triple vertical bar delimiter"), + :mdsmblkcircle => UCMCommand("\\mdsmblkcircle", 'โฆ', :mathord, "z notation spot"), + :typecolon => UCMCommand("\\typecolon", 'โฆ‚', :mathrel, "z notation type colon"), + :lBrace => UCMCommand("\\lBrace", 'โฆƒ', :mathopen, "left white curly bracket"), + :rBrace => UCMCommand("\\rBrace", 'โฆ„', :mathclose, "right white curly bracket"), + :lParen => UCMCommand("\\lParen", 'โฆ…', :mathopen, "left white parenthesis"), + :rParen => UCMCommand("\\rParen", 'โฆ†', :mathclose, "right white parenthesis"), + :llparenthesis => UCMCommand("\\llparenthesis", 'โฆ‡', :mathopen, "z notation left image bracket"), + :rrparenthesis => UCMCommand("\\rrparenthesis", 'โฆˆ', :mathclose, "z notation right image bracket"), + :llangle => UCMCommand("\\llangle", 'โฆ‰', :mathopen, "z notation left binding bracket"), + :rrangle => UCMCommand("\\rrangle", 'โฆŠ', :mathclose, "z notation right binding bracket"), + :lbrackubar => UCMCommand("\\lbrackubar", 'โฆ‹', :mathopen, "left square bracket with underbar"), + :rbrackubar => UCMCommand("\\rbrackubar", 'โฆŒ', :mathclose, "right square bracket with underbar"), + :lbrackultick => UCMCommand("\\lbrackultick", 'โฆ', :mathopen, "left square bracket with tick in top corner"), + :rbracklrtick => UCMCommand("\\rbracklrtick", 'โฆŽ', :mathclose, "right square bracket with tick in bottom corner"), + :lbracklltick => UCMCommand("\\lbracklltick", 'โฆ', :mathopen, "left square bracket with tick in bottom corner"), + :rbrackurtick => UCMCommand("\\rbrackurtick", 'โฆ', :mathclose, "right square bracket with tick in top corner"), + :langledot => UCMCommand("\\langledot", 'โฆ‘', :mathopen, "left angle bracket with dot"), + :rangledot => UCMCommand("\\rangledot", 'โฆ’', :mathclose, "right angle bracket with dot"), + :lparenless => UCMCommand("\\lparenless", 'โฆ“', :mathopen, "left arc less-than bracket"), + :rparengtr => UCMCommand("\\rparengtr", 'โฆ”', :mathclose, "right arc greater-than bracket"), + :Lparengtr => UCMCommand("\\Lparengtr", 'โฆ•', :mathopen, "double left arc greater-than bracket"), + :Rparenless => UCMCommand("\\Rparenless", 'โฆ–', :mathclose, "double right arc less-than bracket"), + :lblkbrbrak => UCMCommand("\\lblkbrbrak", 'โฆ—', :mathopen, "left black tortoise shell bracket"), + :rblkbrbrak => UCMCommand("\\rblkbrbrak", 'โฆ˜', :mathclose, "right black tortoise shell bracket"), + :fourvdots => UCMCommand("\\fourvdots", 'โฆ™', :mathord, "dotted fence"), + :vzigzag => UCMCommand("\\vzigzag", 'โฆš', :mathord, "vertical zigzag line"), + :measuredangleleft => UCMCommand("\\measuredangleleft", 'โฆ›', :mathord, "measured angle opening left"), + :rightanglesqr => UCMCommand("\\rightanglesqr", 'โฆœ', :mathord, "right angle variant with square"), + :rightanglemdot => UCMCommand("\\rightanglemdot", 'โฆ', :mathord, "measured right angle with dot"), + :angles => UCMCommand("\\angles", 'โฆž', :mathord, "angle with s inside"), + :angdnr => UCMCommand("\\angdnr", 'โฆŸ', :mathord, "acute angle"), + :gtlpar => UCMCommand("\\gtlpar", 'โฆ ', :mathord, "spherical angle opening left"), + :sphericalangleup => UCMCommand("\\sphericalangleup", 'โฆก', :mathord, "spherical angle opening up"), + :turnangle => UCMCommand("\\turnangle", 'โฆข', :mathord, "turned angle"), + :revangle => UCMCommand("\\revangle", 'โฆฃ', :mathord, "reversed angle"), + :angleubar => UCMCommand("\\angleubar", 'โฆค', :mathord, "angle with underbar"), + :revangleubar => UCMCommand("\\revangleubar", 'โฆฅ', :mathord, "reversed angle with underbar"), + :wideangledown => UCMCommand("\\wideangledown", 'โฆฆ', :mathord, "oblique angle opening up"), + :wideangleup => UCMCommand("\\wideangleup", 'โฆง', :mathord, "oblique angle opening down"), + :measanglerutone => UCMCommand("\\measanglerutone", 'โฆจ', :mathord, "measured angle with open arm ending in arrow pointing up and right"), + :measanglelutonw => UCMCommand("\\measanglelutonw", 'โฆฉ', :mathord, "measured angle with open arm ending in arrow pointing up and left"), + :measanglerdtose => UCMCommand("\\measanglerdtose", 'โฆช', :mathord, "measured angle with open arm ending in arrow pointing down and right"), + :measangleldtosw => UCMCommand("\\measangleldtosw", 'โฆซ', :mathord, "measured angle with open arm ending in arrow pointing down and left"), + :measangleurtone => UCMCommand("\\measangleurtone", 'โฆฌ', :mathord, "measured angle with open arm ending in arrow pointing right and up"), + :measangleultonw => UCMCommand("\\measangleultonw", 'โฆญ', :mathord, "measured angle with open arm ending in arrow pointing left and up"), + :measangledrtose => UCMCommand("\\measangledrtose", 'โฆฎ', :mathord, "measured angle with open arm ending in arrow pointing right and down"), + :measangledltosw => UCMCommand("\\measangledltosw", 'โฆฏ', :mathord, "measured angle with open arm ending in arrow pointing left and down"), + :revemptyset => UCMCommand("\\revemptyset", 'โฆฐ', :mathord, "reversed empty set"), + :emptysetobar => UCMCommand("\\emptysetobar", 'โฆฑ', :mathord, "empty set with overbar"), + :emptysetocirc => UCMCommand("\\emptysetocirc", 'โฆฒ', :mathord, "empty set with small circle above"), + :emptysetoarr => UCMCommand("\\emptysetoarr", 'โฆณ', :mathord, "empty set with right arrow above"), + :emptysetoarrl => UCMCommand("\\emptysetoarrl", 'โฆด', :mathord, "empty set with left arrow above"), + :circlehbar => UCMCommand("\\circlehbar", 'โฆต', :mathbin, "circle with horizontal bar"), + :circledvert => UCMCommand("\\circledvert", 'โฆถ', :mathbin, "circled vertical bar"), + :circledparallel => UCMCommand("\\circledparallel", 'โฆท', :mathbin, "circled parallel"), + :obslash => UCMCommand("\\obslash", 'โฆธ', :mathbin, "circled reverse solidus"), + :operp => UCMCommand("\\operp", 'โฆน', :mathbin, "circled perpendicular"), + :obot => UCMCommand("\\obot", 'โฆบ', :mathord, "circle divided by horizontal bar and top half divided by vertical bar"), + :olcross => UCMCommand("\\olcross", 'โฆป', :mathord, "circle with superimposed x"), + :odotslashdot => UCMCommand("\\odotslashdot", 'โฆผ', :mathord, "circled anticlockwise-rotated division sign"), + :uparrowoncircle => UCMCommand("\\uparrowoncircle", 'โฆฝ', :mathord, "up arrow through circle"), + :circledwhitebullet => UCMCommand("\\circledwhitebullet", 'โฆพ', :mathord, "circled white bullet"), + :circledbullet => UCMCommand("\\circledbullet", 'โฆฟ', :mathord, "circled bullet"), + :olessthan => UCMCommand("\\olessthan", 'โง€', :mathbin, "circled less-than"), + :ogreaterthan => UCMCommand("\\ogreaterthan", 'โง', :mathbin, "circled greater-than"), + :cirscir => UCMCommand("\\cirscir", 'โง‚', :mathord, "circle with small circle to the right"), + :cirE => UCMCommand("\\cirE", 'โงƒ', :mathord, "circle with two horizontal strokes to the right"), + :boxdiag => UCMCommand("\\boxdiag", 'โง„', :mathbin, "squared rising diagonal slash"), + :boxbslash => UCMCommand("\\boxbslash", 'โง…', :mathbin, "squared falling diagonal slash"), + :boxast => UCMCommand("\\boxast", 'โง†', :mathbin, "squared asterisk"), + :boxcircle => UCMCommand("\\boxcircle", 'โง‡', :mathbin, "squared small circle"), + :boxbox => UCMCommand("\\boxbox", 'โงˆ', :mathbin, "squared square"), + :boxonbox => UCMCommand("\\boxonbox", 'โง‰', :mathord, "two joined squares"), + :triangleodot => UCMCommand("\\triangleodot", 'โงŠ', :mathord, "triangle with dot above"), + :triangleubar => UCMCommand("\\triangleubar", 'โง‹', :mathord, "triangle with underbar"), + :triangles => UCMCommand("\\triangles", 'โงŒ', :mathord, "s in triangle"), + :triangleserifs => UCMCommand("\\triangleserifs", 'โง', :mathbin, "triangle with serifs at bottom"), + :rtriltri => UCMCommand("\\rtriltri", 'โงŽ', :mathrel, "right triangle above left triangle"), + :ltrivb => UCMCommand("\\ltrivb", 'โง', :mathrel, "left triangle beside vertical bar"), + :vbrtri => UCMCommand("\\vbrtri", 'โง', :mathrel, "vertical bar beside right triangle"), + :lfbowtie => UCMCommand("\\lfbowtie", 'โง‘', :mathrel, "left black bowtie"), + :rfbowtie => UCMCommand("\\rfbowtie", 'โง’', :mathrel, "right black bowtie"), + :fbowtie => UCMCommand("\\fbowtie", 'โง“', :mathrel, "black bowtie"), + :lftimes => UCMCommand("\\lftimes", 'โง”', :mathrel, "left black times"), + :rftimes => UCMCommand("\\rftimes", 'โง•', :mathrel, "right black times"), + :hourglass => UCMCommand("\\hourglass", 'โง–', :mathbin, "white hourglass"), + :blackhourglass => UCMCommand("\\blackhourglass", 'โง—', :mathbin, "black hourglass"), + :lvzigzag => UCMCommand("\\lvzigzag", 'โง˜', :mathopen, "left wiggly fence"), + :rvzigzag => UCMCommand("\\rvzigzag", 'โง™', :mathclose, "right wiggly fence"), + :Lvzigzag => UCMCommand("\\Lvzigzag", 'โงš', :mathopen, "left double wiggly fence"), + :Rvzigzag => UCMCommand("\\Rvzigzag", 'โง›', :mathclose, "right double wiggly fence"), + :iinfin => UCMCommand("\\iinfin", 'โงœ', :mathord, "incomplete infinity"), + :tieinfty => UCMCommand("\\tieinfty", 'โง', :mathord, "tie over infinity"), + :nvinfty => UCMCommand("\\nvinfty", 'โงž', :mathord, "infinity negated with vertical bar"), + :dualmap => UCMCommand("\\dualmap", 'โงŸ', :mathrel, "double-ended multimap"), + :laplac => UCMCommand("\\laplac", 'โง ', :mathord, "square with contoured outline"), + :lrtriangleeq => UCMCommand("\\lrtriangleeq", 'โงก', :mathrel, "increases as"), + :shuffle => UCMCommand("\\shuffle", 'โงข', :mathbin, "shuffle product"), + :eparsl => UCMCommand("\\eparsl", 'โงฃ', :mathrel, "equals sign and slanted parallel"), + :smeparsl => UCMCommand("\\smeparsl", 'โงค', :mathrel, "equals sign and slanted parallel with tilde above"), + :eqvparsl => UCMCommand("\\eqvparsl", 'โงฅ', :mathrel, "identical to and slanted parallel"), + :gleichstark => UCMCommand("\\gleichstark", 'โงฆ', :mathrel, "gleich stark"), + :thermod => UCMCommand("\\thermod", 'โงง', :mathord, "thermodynamic"), + :downtriangleleftblack => UCMCommand("\\downtriangleleftblack", 'โงจ', :mathord, "down-pointing triangle with left half black"), + :downtrianglerightblack => UCMCommand("\\downtrianglerightblack", 'โงฉ', :mathord, "down-pointing triangle with right half black"), + :blackdiamonddownarrow => UCMCommand("\\blackdiamonddownarrow", 'โงช', :mathord, "black diamond with down arrow"), + :mdlgblklozenge => UCMCommand("\\mdlgblklozenge", 'โงซ', :mathbin, "black lozenge"), + :circledownarrow => UCMCommand("\\circledownarrow", 'โงฌ', :mathord, "white circle with down arrow"), + :blackcircledownarrow => UCMCommand("\\blackcircledownarrow", 'โงญ', :mathord, "black circle with down arrow"), + :errbarsquare => UCMCommand("\\errbarsquare", 'โงฎ', :mathord, "error-barred white square"), + :errbarblacksquare => UCMCommand("\\errbarblacksquare", 'โงฏ', :mathord, "error-barred black square"), + :errbardiamond => UCMCommand("\\errbardiamond", 'โงฐ', :mathord, "error-barred white diamond"), + :errbarblackdiamond => UCMCommand("\\errbarblackdiamond", 'โงฑ', :mathord, "error-barred black diamond"), + :errbarcircle => UCMCommand("\\errbarcircle", 'โงฒ', :mathord, "error-barred white circle"), + :errbarblackcircle => UCMCommand("\\errbarblackcircle", 'โงณ', :mathord, "error-barred black circle"), + :ruledelayed => UCMCommand("\\ruledelayed", 'โงด', :mathrel, "rule-delayed"), + :reversesolidus => UCMCommand("\\reversesolidus", 'โงต', :mathbin, "reverse solidus"), + :dsol => UCMCommand("\\dsol", 'โงถ', :mathbin, "solidus with overbar"), + :rsolbar => UCMCommand("\\rsolbar", 'โงท', :mathbin, "reverse solidus with horizontal stroke"), + :xsol => UCMCommand("\\xsol", 'โงธ', :mathop, "big solidus"), + :xbsol => UCMCommand("\\xbsol", 'โงน', :mathop, "big reverse solidus"), + :doubleplus => UCMCommand("\\doubleplus", 'โงบ', :mathbin, "double plus"), + :tripleplus => UCMCommand("\\tripleplus", 'โงป', :mathbin, "triple plus"), + :lcurvyangle => UCMCommand("\\lcurvyangle", 'โงผ', :mathopen, "left pointing curved angle bracket"), + :rcurvyangle => UCMCommand("\\rcurvyangle", 'โงฝ', :mathclose, "right pointing curved angle bracket"), + :tplus => UCMCommand("\\tplus", 'โงพ', :mathbin, "tiny"), + :tminus => UCMCommand("\\tminus", 'โงฟ', :mathbin, "miny"), + :bigodot => UCMCommand("\\bigodot", 'โจ€', :mathop, "n-ary circled dot operator"), + :bigoplus => UCMCommand("\\bigoplus", 'โจ', :mathop, "n-ary circled plus operator"), + :bigotimes => UCMCommand("\\bigotimes", 'โจ‚', :mathop, "n-ary circled times operator"), + :bigcupdot => UCMCommand("\\bigcupdot", 'โจƒ', :mathop, "n-ary union operator with dot"), + :biguplus => UCMCommand("\\biguplus", 'โจ„', :mathop, "n-ary union operator with plus"), + :bigsqcap => UCMCommand("\\bigsqcap", 'โจ…', :mathop, "n-ary square intersection operator"), + :bigsqcup => UCMCommand("\\bigsqcup", 'โจ†', :mathop, "n-ary square union operator"), + :conjquant => UCMCommand("\\conjquant", 'โจ‡', :mathop, "two logical and operator"), + :disjquant => UCMCommand("\\disjquant", 'โจˆ', :mathop, "two logical or operator"), + :bigtimes => UCMCommand("\\bigtimes", 'โจ‰', :mathop, "n-ary times operator"), + :modtwosum => UCMCommand("\\modtwosum", 'โจŠ', :mathop, "modulo two sum"), + :sumint => UCMCommand("\\sumint", 'โจ‹', :mathop, "summation with integral"), + :iiiint => UCMCommand("\\iiiint", 'โจŒ', :mathop, "quadruple integral operator"), + :intbar => UCMCommand("\\intbar", 'โจ', :mathop, "finite part integral"), + :intBar => UCMCommand("\\intBar", 'โจŽ', :mathop, "integral with double stroke"), + :fint => UCMCommand("\\fint", 'โจ', :mathop, "integral average with slash"), + :cirfnint => UCMCommand("\\cirfnint", 'โจ', :mathop, "circulation function"), + :awint => UCMCommand("\\awint", 'โจ‘', :mathop, "anticlockwise integration"), + :rppolint => UCMCommand("\\rppolint", 'โจ’', :mathop, "line integration with rectangular path around pole"), + :scpolint => UCMCommand("\\scpolint", 'โจ“', :mathop, "line integration with semicircular path around pole"), + :npolint => UCMCommand("\\npolint", 'โจ”', :mathop, "line integration not including the pole"), + :pointint => UCMCommand("\\pointint", 'โจ•', :mathop, "integral around a point operator"), + :sqint => UCMCommand("\\sqint", 'โจ–', :mathop, "quaternion integral operator"), + :intlarhk => UCMCommand("\\intlarhk", 'โจ—', :mathop, "integral with leftwards arrow with hook"), + :intx => UCMCommand("\\intx", 'โจ˜', :mathop, "integral with times sign"), + :intcap => UCMCommand("\\intcap", 'โจ™', :mathop, "integral with intersection"), + :intcup => UCMCommand("\\intcup", 'โจš', :mathop, "integral with union"), + :upint => UCMCommand("\\upint", 'โจ›', :mathop, "integral with overbar"), + :lowint => UCMCommand("\\lowint", 'โจœ', :mathop, "integral with underbar"), + :Join => UCMCommand("\\Join", 'โจ', :mathop, "join"), + :bigtriangleleft => UCMCommand("\\bigtriangleleft", 'โจž', :mathop, "large left triangle operator"), + :zcmp => UCMCommand("\\zcmp", 'โจŸ', :mathop, "z notation schema composition"), + :zpipe => UCMCommand("\\zpipe", 'โจ ', :mathop, "z notation schema piping"), + :zproject => UCMCommand("\\zproject", 'โจก', :mathop, "z notation schema projection"), + :ringplus => UCMCommand("\\ringplus", 'โจข', :mathbin, "plus sign with small circle above"), + :plushat => UCMCommand("\\plushat", 'โจฃ', :mathbin, "plus sign with circumflex accent above"), + :simplus => UCMCommand("\\simplus", 'โจค', :mathbin, "plus sign with tilde above"), + :plusdot => UCMCommand("\\plusdot", 'โจฅ', :mathbin, "plus sign with dot below"), + :plussim => UCMCommand("\\plussim", 'โจฆ', :mathbin, "plus sign with tilde below"), + :plussubtwo => UCMCommand("\\plussubtwo", 'โจง', :mathbin, "plus sign with subscript two"), + :plustrif => UCMCommand("\\plustrif", 'โจจ', :mathbin, "plus sign with black triangle"), + :commaminus => UCMCommand("\\commaminus", 'โจฉ', :mathbin, "minus sign with comma above"), + :minusdot => UCMCommand("\\minusdot", 'โจช', :mathbin, "minus sign with dot below"), + :minusfdots => UCMCommand("\\minusfdots", 'โจซ', :mathbin, "minus sign with falling dots"), + :minusrdots => UCMCommand("\\minusrdots", 'โจฌ', :mathbin, "minus sign with rising dots"), + :opluslhrim => UCMCommand("\\opluslhrim", 'โจญ', :mathbin, "plus sign in left half circle"), + :oplusrhrim => UCMCommand("\\oplusrhrim", 'โจฎ', :mathbin, "plus sign in right half circle"), + :vectimes => UCMCommand("\\vectimes", 'โจฏ', :mathbin, "vector or cross product"), + :dottimes => UCMCommand("\\dottimes", 'โจฐ', :mathbin, "multiplication sign with dot above"), + :timesbar => UCMCommand("\\timesbar", 'โจฑ', :mathbin, "multiplication sign with underbar"), + :btimes => UCMCommand("\\btimes", 'โจฒ', :mathbin, "semidirect product with bottom closed"), + :smashtimes => UCMCommand("\\smashtimes", 'โจณ', :mathbin, "smash product"), + :otimeslhrim => UCMCommand("\\otimeslhrim", 'โจด', :mathbin, "multiplication sign in left half circle"), + :otimesrhrim => UCMCommand("\\otimesrhrim", 'โจต', :mathbin, "multiplication sign in right half circle"), + :otimeshat => UCMCommand("\\otimeshat", 'โจถ', :mathbin, "circled multiplication sign with circumflex accent"), + :Otimes => UCMCommand("\\Otimes", 'โจท', :mathbin, "multiplication sign in double circle"), + :odiv => UCMCommand("\\odiv", 'โจธ', :mathbin, "circled division sign"), + :triangleplus => UCMCommand("\\triangleplus", 'โจน', :mathbin, "plus sign in triangle"), + :triangleminus => UCMCommand("\\triangleminus", 'โจบ', :mathbin, "minus sign in triangle"), + :triangletimes => UCMCommand("\\triangletimes", 'โจป', :mathbin, "multiplication sign in triangle"), + :intprod => UCMCommand("\\intprod", 'โจผ', :mathbin, "interior product"), + :intprodr => UCMCommand("\\intprodr", 'โจฝ', :mathbin, "righthand interior product"), + :fcmp => UCMCommand("\\fcmp", 'โจพ', :mathbin, "z notation relational composition"), + :amalg => UCMCommand("\\amalg", 'โจฟ', :mathbin, "amalgamation or coproduct"), + :capdot => UCMCommand("\\capdot", 'โฉ€', :mathbin, "intersection with dot"), + :uminus => UCMCommand("\\uminus", 'โฉ', :mathbin, "union with minus sign"), + :barcup => UCMCommand("\\barcup", 'โฉ‚', :mathbin, "union with overbar"), + :barcap => UCMCommand("\\barcap", 'โฉƒ', :mathbin, "intersection with overbar"), + :capwedge => UCMCommand("\\capwedge", 'โฉ„', :mathbin, "intersection with logical and"), + :cupvee => UCMCommand("\\cupvee", 'โฉ…', :mathbin, "union with logical or"), + :cupovercap => UCMCommand("\\cupovercap", 'โฉ†', :mathbin, "union above intersection"), + :capovercup => UCMCommand("\\capovercup", 'โฉ‡', :mathbin, "intersection above union"), + :cupbarcap => UCMCommand("\\cupbarcap", 'โฉˆ', :mathbin, "union above bar above intersection"), + :capbarcup => UCMCommand("\\capbarcup", 'โฉ‰', :mathbin, "intersection above bar above union"), + :twocups => UCMCommand("\\twocups", 'โฉŠ', :mathbin, "union beside and joined with union"), + :twocaps => UCMCommand("\\twocaps", 'โฉ‹', :mathbin, "intersection beside and joined with intersection"), + :closedvarcup => UCMCommand("\\closedvarcup", 'โฉŒ', :mathbin, "closed union with serifs"), + :closedvarcap => UCMCommand("\\closedvarcap", 'โฉ', :mathbin, "closed intersection with serifs"), + :Sqcap => UCMCommand("\\Sqcap", 'โฉŽ', :mathbin, "double square intersection"), + :Sqcup => UCMCommand("\\Sqcup", 'โฉ', :mathbin, "double square union"), + :closedvarcupsmashprod => UCMCommand("\\closedvarcupsmashprod", 'โฉ', :mathbin, "closed union with serifs and smash product"), + :wedgeodot => UCMCommand("\\wedgeodot", 'โฉ‘', :mathbin, "logical and with dot above"), + :veeodot => UCMCommand("\\veeodot", 'โฉ’', :mathbin, "logical or with dot above"), + :Wedge => UCMCommand("\\Wedge", 'โฉ“', :mathbin, "double logical and"), + :Vee => UCMCommand("\\Vee", 'โฉ”', :mathbin, "double logical or"), + :wedgeonwedge => UCMCommand("\\wedgeonwedge", 'โฉ•', :mathbin, "two intersecting logical and"), + :veeonvee => UCMCommand("\\veeonvee", 'โฉ–', :mathbin, "two intersecting logical or"), + :bigslopedvee => UCMCommand("\\bigslopedvee", 'โฉ—', :mathbin, "sloping large or"), + :bigslopedwedge => UCMCommand("\\bigslopedwedge", 'โฉ˜', :mathbin, "sloping large and"), + :veeonwedge => UCMCommand("\\veeonwedge", 'โฉ™', :mathrel, "logical or overlapping logical and"), + :wedgemidvert => UCMCommand("\\wedgemidvert", 'โฉš', :mathbin, "logical and with middle stem"), + :veemidvert => UCMCommand("\\veemidvert", 'โฉ›', :mathbin, "logical or with middle stem"), + :midbarwedge => UCMCommand("\\midbarwedge", 'โฉœ', :mathbin, "ogical and with horizontal dash"), + :midbarvee => UCMCommand("\\midbarvee", 'โฉ', :mathbin, "logical or with horizontal dash"), + :doublebarwedge => UCMCommand("\\doublebarwedge", 'โฉž', :mathbin, "logical and with double overbar"), + :wedgebar => UCMCommand("\\wedgebar", 'โฉŸ', :mathbin, "logical and with underbar"), + :wedgedoublebar => UCMCommand("\\wedgedoublebar", 'โฉ ', :mathbin, "logical and with double underbar"), + :varveebar => UCMCommand("\\varveebar", 'โฉก', :mathbin, "small vee with underbar"), + :doublebarvee => UCMCommand("\\doublebarvee", 'โฉข', :mathbin, "logical or with double overbar"), + :veedoublebar => UCMCommand("\\veedoublebar", 'โฉฃ', :mathbin, "logical or with double underbar"), + :dsub => UCMCommand("\\dsub", 'โฉค', :mathbin, "z notation domain antirestriction"), + :rsub => UCMCommand("\\rsub", 'โฉฅ', :mathbin, "z notation range antirestriction"), + :eqdot => UCMCommand("\\eqdot", 'โฉฆ', :mathrel, "equals sign with dot below"), + :dotequiv => UCMCommand("\\dotequiv", 'โฉง', :mathrel, "identical with dot above"), + :equivVert => UCMCommand("\\equivVert", 'โฉจ', :mathrel, "triple horizontal bar with double vertical stroke"), + :equivVvert => UCMCommand("\\equivVvert", 'โฉฉ', :mathrel, "triple horizontal bar with triple vertical stroke"), + :dotsim => UCMCommand("\\dotsim", 'โฉช', :mathrel, "tilde operator with dot above"), + :simrdots => UCMCommand("\\simrdots", 'โฉซ', :mathrel, "tilde operator with rising dots"), + :simminussim => UCMCommand("\\simminussim", 'โฉฌ', :mathrel, "similar minus similar"), + :congdot => UCMCommand("\\congdot", 'โฉญ', :mathrel, "congruent with dot above"), + :asteq => UCMCommand("\\asteq", 'โฉฎ', :mathrel, "equals with asterisk"), + :hatapprox => UCMCommand("\\hatapprox", 'โฉฏ', :mathrel, "almost equal to with circumflex accent"), + :approxeqq => UCMCommand("\\approxeqq", 'โฉฐ', :mathrel, "approximately equal or equal to"), + :eqqplus => UCMCommand("\\eqqplus", 'โฉฑ', :mathbin, "equals sign above plus sign"), + :pluseqq => UCMCommand("\\pluseqq", 'โฉฒ', :mathbin, "plus sign above equals sign"), + :eqqsim => UCMCommand("\\eqqsim", 'โฉณ', :mathrel, "equals sign above tilde operator"), + :Coloneq => UCMCommand("\\Coloneq", 'โฉด', :mathrel, "double colon equal"), + :eqeq => UCMCommand("\\eqeq", 'โฉต', :mathrel, "two consecutive equals signs"), + :eqeqeq => UCMCommand("\\eqeqeq", 'โฉถ', :mathrel, "three consecutive equals signs"), + :ddotseq => UCMCommand("\\ddotseq", 'โฉท', :mathrel, "equals sign with two dots above and two dots below"), + :equivDD => UCMCommand("\\equivDD", 'โฉธ', :mathrel, "equivalent with four dots above"), + :ltcir => UCMCommand("\\ltcir", 'โฉน', :mathrel, "less-than with circle inside"), + :gtcir => UCMCommand("\\gtcir", 'โฉบ', :mathrel, "greater-than with circle inside"), + :ltquest => UCMCommand("\\ltquest", 'โฉป', :mathrel, "less-than with question mark above"), + :gtquest => UCMCommand("\\gtquest", 'โฉผ', :mathrel, "greater-than with question mark above"), + :leqslant => UCMCommand("\\leqslant", 'โฉฝ', :mathrel, "less-than or slanted equal to"), + :geqslant => UCMCommand("\\geqslant", 'โฉพ', :mathrel, "greater-than or slanted equal to"), + :lesdot => UCMCommand("\\lesdot", 'โฉฟ', :mathrel, "less-than or slanted equal to with dot inside"), + :gesdot => UCMCommand("\\gesdot", 'โช€', :mathrel, "greater-than or slanted equal to with dot inside"), + :lesdoto => UCMCommand("\\lesdoto", 'โช', :mathrel, "less-than or slanted equal to with dot above"), + :gesdoto => UCMCommand("\\gesdoto", 'โช‚', :mathrel, "greater-than or slanted equal to with dot above"), + :lesdotor => UCMCommand("\\lesdotor", 'โชƒ', :mathrel, "less-than or slanted equal to with dot above right"), + :gesdotol => UCMCommand("\\gesdotol", 'โช„', :mathrel, "greater-than or slanted equal to with dot above left"), + :lessapprox => UCMCommand("\\lessapprox", 'โช…', :mathrel, "less-than or approximate"), + :gtrapprox => UCMCommand("\\gtrapprox", 'โช†', :mathrel, "greater-than or approximate"), + :lneq => UCMCommand("\\lneq", 'โช‡', :mathrel, "less-than and single-line not equal to"), + :gneq => UCMCommand("\\gneq", 'โชˆ', :mathrel, "greater-than and single-line not equal to"), + :lnapprox => UCMCommand("\\lnapprox", 'โช‰', :mathrel, "less-than and not approximate"), + :gnapprox => UCMCommand("\\gnapprox", 'โชŠ', :mathrel, "greater-than and not approximate"), + :lesseqqgtr => UCMCommand("\\lesseqqgtr", 'โช‹', :mathrel, "less-than above double-line equal above greater-than"), + :gtreqqless => UCMCommand("\\gtreqqless", 'โชŒ', :mathrel, "greater-than above double-line equal above less-than"), + :lsime => UCMCommand("\\lsime", 'โช', :mathrel, "less-than above similar or equal"), + :gsime => UCMCommand("\\gsime", 'โชŽ', :mathrel, "greater-than above similar or equal"), + :lsimg => UCMCommand("\\lsimg", 'โช', :mathrel, "less-than above similar above greater-than"), + :gsiml => UCMCommand("\\gsiml", 'โช', :mathrel, "greater-than above similar above less-than"), + :lgE => UCMCommand("\\lgE", 'โช‘', :mathrel, "less-than above greater-than above double-line equal"), + :glE => UCMCommand("\\glE", 'โช’', :mathrel, "greater-than above less-than above double-line equal"), + :lesges => UCMCommand("\\lesges", 'โช“', :mathrel, "less-than above slanted equal above greater-than above slanted equal"), + :gesles => UCMCommand("\\gesles", 'โช”', :mathrel, "greater-than above slanted equal above less-than above slanted equal"), + :eqslantless => UCMCommand("\\eqslantless", 'โช•', :mathrel, "slanted equal to or less-than"), + :eqslantgtr => UCMCommand("\\eqslantgtr", 'โช–', :mathrel, "slanted equal to or greater-than"), + :elsdot => UCMCommand("\\elsdot", 'โช—', :mathrel, "slanted equal to or less-than with dot inside"), + :egsdot => UCMCommand("\\egsdot", 'โช˜', :mathrel, "slanted equal to or greater-than with dot inside"), + :eqqless => UCMCommand("\\eqqless", 'โช™', :mathrel, "double-line equal to or less-than"), + :eqqgtr => UCMCommand("\\eqqgtr", 'โชš', :mathrel, "double-line equal to or greater-than"), + :eqqslantless => UCMCommand("\\eqqslantless", 'โช›', :mathrel, "double-line slanted equal to or less-than"), + :eqqslantgtr => UCMCommand("\\eqqslantgtr", 'โชœ', :mathrel, "double-line slanted equal to or greater-than"), + :simless => UCMCommand("\\simless", 'โช', :mathrel, "similar or less-than"), + :simgtr => UCMCommand("\\simgtr", 'โชž', :mathrel, "similar or greater-than"), + :simlE => UCMCommand("\\simlE", 'โชŸ', :mathrel, "similar above less-than above equals sign"), + :simgE => UCMCommand("\\simgE", 'โช ', :mathrel, "similar above greater-than above equals sign"), + :Lt => UCMCommand("\\Lt", 'โชก', :mathrel, "double nested less-than"), + :Gt => UCMCommand("\\Gt", 'โชข', :mathrel, "double nested greater-than"), + :partialmeetcontraction => UCMCommand("\\partialmeetcontraction", 'โชฃ', :mathrel, "double less-than with underbar"), + :glj => UCMCommand("\\glj", 'โชค', :mathrel, "greater-than overlapping less-than"), + :gla => UCMCommand("\\gla", 'โชฅ', :mathrel, "greater-than beside less-than"), + :ltcc => UCMCommand("\\ltcc", 'โชฆ', :mathrel, "less-than closed by curve"), + :gtcc => UCMCommand("\\gtcc", 'โชง', :mathrel, "greater-than closed by curve"), + :lescc => UCMCommand("\\lescc", 'โชจ', :mathrel, "less-than closed by curve above slanted equal"), + :gescc => UCMCommand("\\gescc", 'โชฉ', :mathrel, "greater-than closed by curve above slanted equal"), + :smt => UCMCommand("\\smt", 'โชช', :mathrel, "smaller than"), + :lat => UCMCommand("\\lat", 'โชซ', :mathrel, "larger than"), + :smte => UCMCommand("\\smte", 'โชฌ', :mathrel, "smaller than or equal to"), + :late => UCMCommand("\\late", 'โชญ', :mathrel, "larger than or equal to"), + :bumpeqq => UCMCommand("\\bumpeqq", 'โชฎ', :mathrel, "equals sign with bumpy above"), + :preceq => UCMCommand("\\preceq", 'โชฏ', :mathrel, "precedes above single-line equals sign"), + :succeq => UCMCommand("\\succeq", 'โชฐ', :mathrel, "succeeds above single-line equals sign"), + :precneq => UCMCommand("\\precneq", 'โชฑ', :mathrel, "precedes above single-line not equal to"), + :succneq => UCMCommand("\\succneq", 'โชฒ', :mathrel, "succeeds above single-line not equal to"), + :preceqq => UCMCommand("\\preceqq", 'โชณ', :mathrel, "precedes above equals sign"), + :succeqq => UCMCommand("\\succeqq", 'โชด', :mathrel, "succeeds above equals sign"), + :precneqq => UCMCommand("\\precneqq", 'โชต', :mathrel, "precedes above not equal to"), + :succneqq => UCMCommand("\\succneqq", 'โชถ', :mathrel, "succeeds above not equal to"), + :precapprox => UCMCommand("\\precapprox", 'โชท', :mathrel, "precedes above almost equal to"), + :succapprox => UCMCommand("\\succapprox", 'โชธ', :mathrel, "succeeds above almost equal to"), + :precnapprox => UCMCommand("\\precnapprox", 'โชน', :mathrel, "precedes above not almost equal to"), + :succnapprox => UCMCommand("\\succnapprox", 'โชบ', :mathrel, "succeeds above not almost equal to"), + :Prec => UCMCommand("\\Prec", 'โชป', :mathrel, "double precedes"), + :Succ => UCMCommand("\\Succ", 'โชผ', :mathrel, "double succeeds"), + :subsetdot => UCMCommand("\\subsetdot", 'โชฝ', :mathrel, "subset with dot"), + :supsetdot => UCMCommand("\\supsetdot", 'โชพ', :mathrel, "superset with dot"), + :subsetplus => UCMCommand("\\subsetplus", 'โชฟ', :mathrel, "subset with plus sign below"), + :supsetplus => UCMCommand("\\supsetplus", 'โซ€', :mathrel, "superset with plus sign below"), + :submult => UCMCommand("\\submult", 'โซ', :mathrel, "subset with multiplication sign below"), + :supmult => UCMCommand("\\supmult", 'โซ‚', :mathrel, "superset with multiplication sign below"), + :subedot => UCMCommand("\\subedot", 'โซƒ', :mathrel, "subset of or equal to with dot above"), + :supedot => UCMCommand("\\supedot", 'โซ„', :mathrel, "superset of or equal to with dot above"), + :subseteqq => UCMCommand("\\subseteqq", 'โซ…', :mathrel, "subset of above equals sign"), + :supseteqq => UCMCommand("\\supseteqq", 'โซ†', :mathrel, "superset of above equals sign"), + :subsim => UCMCommand("\\subsim", 'โซ‡', :mathrel, "subset of above tilde operator"), + :supsim => UCMCommand("\\supsim", 'โซˆ', :mathrel, "superset of above tilde operator"), + :subsetapprox => UCMCommand("\\subsetapprox", 'โซ‰', :mathrel, "subset of above almost equal to"), + :supsetapprox => UCMCommand("\\supsetapprox", 'โซŠ', :mathrel, "superset of above almost equal to"), + :subsetneqq => UCMCommand("\\subsetneqq", 'โซ‹', :mathrel, "subset of above not equal to"), + :supsetneqq => UCMCommand("\\supsetneqq", 'โซŒ', :mathrel, "superset of above not equal to"), + :lsqhook => UCMCommand("\\lsqhook", 'โซ', :mathrel, "square left open box operator"), + :rsqhook => UCMCommand("\\rsqhook", 'โซŽ', :mathrel, "square right open box operator"), + :csub => UCMCommand("\\csub", 'โซ', :mathrel, "closed subset"), + :csup => UCMCommand("\\csup", 'โซ', :mathrel, "closed superset"), + :csube => UCMCommand("\\csube", 'โซ‘', :mathrel, "closed subset or equal to"), + :csupe => UCMCommand("\\csupe", 'โซ’', :mathrel, "closed superset or equal to"), + :subsup => UCMCommand("\\subsup", 'โซ“', :mathrel, "subset above superset"), + :supsub => UCMCommand("\\supsub", 'โซ”', :mathrel, "superset above subset"), + :subsub => UCMCommand("\\subsub", 'โซ•', :mathrel, "subset above subset"), + :supsup => UCMCommand("\\supsup", 'โซ–', :mathrel, "superset above superset"), + :suphsub => UCMCommand("\\suphsub", 'โซ—', :mathrel, "superset beside subset"), + :supdsub => UCMCommand("\\supdsub", 'โซ˜', :mathrel, "superset beside and joined by dash with subset"), + :forkv => UCMCommand("\\forkv", 'โซ™', :mathrel, "element of opening downwards"), + :topfork => UCMCommand("\\topfork", 'โซš', :mathrel, "pitchfork with tee top"), + :mlcp => UCMCommand("\\mlcp", 'โซ›', :mathrel, "transversal intersection"), + :forks => UCMCommand("\\forks", 'โซœ', :mathrel, "forking"), + :forksnot => UCMCommand("\\forksnot", 'โซ', :mathrel, "nonforking"), + :shortlefttack => UCMCommand("\\shortlefttack", 'โซž', :mathrel, "short left tack"), + :shortdowntack => UCMCommand("\\shortdowntack", 'โซŸ', :mathrel, "short down tack"), + :shortuptack => UCMCommand("\\shortuptack", 'โซ ', :mathrel, "short up tack"), + :perps => UCMCommand("\\perps", 'โซก', :mathord, "perpendicular with s"), + :vDdash => UCMCommand("\\vDdash", 'โซข', :mathrel, "vertical bar triple right turnstile"), + :dashV => UCMCommand("\\dashV", 'โซฃ', :mathrel, "double vertical bar left turnstile"), + :Dashv => UCMCommand("\\Dashv", 'โซค', :mathrel, "vertical bar double left turnstile"), + :DashV => UCMCommand("\\DashV", 'โซฅ', :mathrel, "double vertical bar double left turnstile"), + :varVdash => UCMCommand("\\varVdash", 'โซฆ', :mathrel, "long dash from left member of double vertical"), + :Barv => UCMCommand("\\Barv", 'โซง', :mathrel, "short down tack with overbar"), + :vBar => UCMCommand("\\vBar", 'โซจ', :mathrel, "short up tack with underbar"), + :vBarv => UCMCommand("\\vBarv", 'โซฉ', :mathrel, "short up tack above short down tack"), + :barV => UCMCommand("\\barV", 'โซช', :mathrel, "double down tack"), + :Vbar => UCMCommand("\\Vbar", 'โซซ', :mathrel, "double up tack"), + :Not => UCMCommand("\\Not", 'โซฌ', :mathrel, "double stroke not sign"), + :bNot => UCMCommand("\\bNot", 'โซญ', :mathrel, "reversed double stroke not sign"), + :revnmid => UCMCommand("\\revnmid", 'โซฎ', :mathrel, "does not divide with reversed negation slash"), + :cirmid => UCMCommand("\\cirmid", 'โซฏ', :mathrel, "vertical line with circle above"), + :midcir => UCMCommand("\\midcir", 'โซฐ', :mathrel, "vertical line with circle below"), + :topcir => UCMCommand("\\topcir", 'โซฑ', :mathord, "down tack with circle below"), + :nhpar => UCMCommand("\\nhpar", 'โซฒ', :mathrel, "parallel with horizontal stroke"), + :parsim => UCMCommand("\\parsim", 'โซณ', :mathrel, "parallel with tilde operator"), + :interleave => UCMCommand("\\interleave", 'โซด', :mathbin, "triple vertical bar binary relation"), + :nhVvert => UCMCommand("\\nhVvert", 'โซต', :mathbin, "triple vertical bar with horizontal stroke"), + :threedotcolon => UCMCommand("\\threedotcolon", 'โซถ', :mathbin, "triple colon operator"), + :lllnest => UCMCommand("\\lllnest", 'โซท', :mathrel, "stacked very much less-than"), + :gggnest => UCMCommand("\\gggnest", 'โซธ', :mathrel, "stacked very much greater-than"), + :leqqslant => UCMCommand("\\leqqslant", 'โซน', :mathrel, "double-line slanted less-than or equal to"), + :geqqslant => UCMCommand("\\geqqslant", 'โซบ', :mathrel, "double-line slanted greater-than or equal to"), + :trslash => UCMCommand("\\trslash", 'โซป', :mathbin, "triple solidus binary relation"), + :biginterleave => UCMCommand("\\biginterleave", 'โซผ', :mathop, "large triple vertical bar operator"), + :sslash => UCMCommand("\\sslash", 'โซฝ', :mathbin, "double solidus operator"), + :talloblong => UCMCommand("\\talloblong", 'โซพ', :mathbin, "white vertical bar"), + :bigtalloblong => UCMCommand("\\bigtalloblong", 'โซฟ', :mathop, "n-ary white vertical bar"), + :squaretopblack => UCMCommand("\\squaretopblack", 'โฌ’', :mathord, "square with top half black"), + :squarebotblack => UCMCommand("\\squarebotblack", 'โฌ“', :mathord, "square with bottom half black"), + :squareurblack => UCMCommand("\\squareurblack", 'โฌ”', :mathord, "square with upper right diagonal half black"), + :squarellblack => UCMCommand("\\squarellblack", 'โฌ•', :mathord, "square with lower left diagonal half black"), + :diamondleftblack => UCMCommand("\\diamondleftblack", 'โฌ–', :mathord, "diamond with left half black"), + :diamondrightblack => UCMCommand("\\diamondrightblack", 'โฌ—', :mathord, "diamond with right half black"), + :diamondtopblack => UCMCommand("\\diamondtopblack", 'โฌ˜', :mathord, "diamond with top half black"), + :diamondbotblack => UCMCommand("\\diamondbotblack", 'โฌ™', :mathord, "diamond with bottom half black"), + :dottedsquare => UCMCommand("\\dottedsquare", 'โฌš', :mathord, "dotted square"), + :lgblksquare => UCMCommand("\\lgblksquare", 'โฌ›', :mathord, "black large square"), + :lgwhtsquare => UCMCommand("\\lgwhtsquare", 'โฌœ', :mathord, "white large square"), + :vysmblksquare => UCMCommand("\\vysmblksquare", 'โฌ', :mathord, "black very small square"), + :vysmwhtsquare => UCMCommand("\\vysmwhtsquare", 'โฌž', :mathord, "white very small square"), + :pentagonblack => UCMCommand("\\pentagonblack", 'โฌŸ', :mathord, "black pentagon"), + :pentagon => UCMCommand("\\pentagon", 'โฌ ', :mathord, "white pentagon"), + :varhexagon => UCMCommand("\\varhexagon", 'โฌก', :mathord, "white hexagon"), + :varhexagonblack => UCMCommand("\\varhexagonblack", 'โฌข', :mathord, "black hexagon"), + :hexagonblack => UCMCommand("\\hexagonblack", 'โฌฃ', :mathord, "horizontal black hexagon"), + :lgblkcircle => UCMCommand("\\lgblkcircle", 'โฌค', :mathord, "black large circle"), + :mdblkdiamond => UCMCommand("\\mdblkdiamond", 'โฌฅ', :mathord, "black medium diamond"), + :mdwhtdiamond => UCMCommand("\\mdwhtdiamond", 'โฌฆ', :mathord, "white medium diamond"), + :mdblklozenge => UCMCommand("\\mdblklozenge", 'โฌง', :mathord, "black medium lozenge"), + :mdwhtlozenge => UCMCommand("\\mdwhtlozenge", 'โฌจ', :mathord, "white medium lozenge"), + :smblkdiamond => UCMCommand("\\smblkdiamond", 'โฌฉ', :mathord, "black small diamond"), + :smblklozenge => UCMCommand("\\smblklozenge", 'โฌช', :mathord, "black small lozenge"), + :smwhtlozenge => UCMCommand("\\smwhtlozenge", 'โฌซ', :mathord, "white small lozenge"), + :blkhorzoval => UCMCommand("\\blkhorzoval", 'โฌฌ', :mathord, "black horizontal ellipse"), + :whthorzoval => UCMCommand("\\whthorzoval", 'โฌญ', :mathord, "white horizontal ellipse"), + :blkvertoval => UCMCommand("\\blkvertoval", 'โฌฎ', :mathord, "black vertical ellipse"), + :whtvertoval => UCMCommand("\\whtvertoval", 'โฌฏ', :mathord, "white vertical ellipse"), + :circleonleftarrow => UCMCommand("\\circleonleftarrow", 'โฌฐ', :mathrel, "left arrow with small circle"), + :leftthreearrows => UCMCommand("\\leftthreearrows", 'โฌฑ', :mathrel, "three leftwards arrows"), + :leftarrowonoplus => UCMCommand("\\leftarrowonoplus", 'โฌฒ', :mathrel, "left arrow with circled plus"), + :longleftsquigarrow => UCMCommand("\\longleftsquigarrow", 'โฌณ', :mathrel, "long leftwards squiggle arrow"), + :nvtwoheadleftarrow => UCMCommand("\\nvtwoheadleftarrow", 'โฌด', :mathrel, "leftwards two-headed arrow with vertical stroke"), + :nVtwoheadleftarrow => UCMCommand("\\nVtwoheadleftarrow", 'โฌต', :mathrel, "leftwards two-headed arrow with double vertical stroke"), + :twoheadmapsfrom => UCMCommand("\\twoheadmapsfrom", 'โฌถ', :mathrel, "leftwards two-headed arrow from bar"), + :twoheadleftdbkarrow => UCMCommand("\\twoheadleftdbkarrow", 'โฌท', :mathrel, "leftwards two-headed triple-dash arrow"), + :leftdotarrow => UCMCommand("\\leftdotarrow", 'โฌธ', :mathrel, "leftwards arrow with dotted stem"), + :nvleftarrowtail => UCMCommand("\\nvleftarrowtail", 'โฌน', :mathrel, "leftwards arrow with tail with vertical stroke"), + :nVleftarrowtail => UCMCommand("\\nVleftarrowtail", 'โฌบ', :mathrel, "leftwards arrow with tail with double vertical stroke"), + :twoheadleftarrowtail => UCMCommand("\\twoheadleftarrowtail", 'โฌป', :mathrel, "leftwards two-headed arrow with tail"), + :nvtwoheadleftarrowtail => UCMCommand("\\nvtwoheadleftarrowtail", 'โฌผ', :mathrel, "leftwards two-headed arrow with tail with vertical stroke"), + :nVtwoheadleftarrowtail => UCMCommand("\\nVtwoheadleftarrowtail", 'โฌฝ', :mathrel, "leftwards two-headed arrow with tail with double vertical stroke"), + :leftarrowx => UCMCommand("\\leftarrowx", 'โฌพ', :mathrel, "leftwards arrow through x"), + :leftcurvedarrow => UCMCommand("\\leftcurvedarrow", 'โฌฟ', :mathrel, "wave arrow pointing directly left"), + :equalleftarrow => UCMCommand("\\equalleftarrow", 'โญ€', :mathrel, "equals sign above leftwards arrow"), + :bsimilarleftarrow => UCMCommand("\\bsimilarleftarrow", 'โญ', :mathrel, "reverse tilde operator above leftwards arrow"), + :leftarrowbackapprox => UCMCommand("\\leftarrowbackapprox", 'โญ‚', :mathrel, "leftwards arrow above reverse almost equal to"), + :rightarrowgtr => UCMCommand("\\rightarrowgtr", 'โญƒ', :mathrel, "rightwards arrow through greater-than"), + :rightarrowsupset => UCMCommand("\\rightarrowsupset", 'โญ„', :mathrel, "rightwards arrow through subset"), + :LLeftarrow => UCMCommand("\\LLeftarrow", 'โญ…', :mathrel, "leftwards quadruple arrow"), + :RRightarrow => UCMCommand("\\RRightarrow", 'โญ†', :mathrel, "rightwards quadruple arrow"), + :bsimilarrightarrow => UCMCommand("\\bsimilarrightarrow", 'โญ‡', :mathrel, "reverse tilde operator above rightwards arrow"), + :rightarrowbackapprox => UCMCommand("\\rightarrowbackapprox", 'โญˆ', :mathrel, "rightwards arrow above reverse almost equal to"), + :similarleftarrow => UCMCommand("\\similarleftarrow", 'โญ‰', :mathrel, "tilde operator above leftwards arrow"), + :leftarrowapprox => UCMCommand("\\leftarrowapprox", 'โญŠ', :mathrel, "leftwards arrow above almost equal to"), + :leftarrowbsimilar => UCMCommand("\\leftarrowbsimilar", 'โญ‹', :mathrel, "leftwards arrow above reverse tilde operator"), + :rightarrowbsimilar => UCMCommand("\\rightarrowbsimilar", 'โญŒ', :mathrel, "righttwards arrow above reverse tilde operator"), + :medwhitestar => UCMCommand("\\medwhitestar", 'โญ', :mathord, "white medium star"), + :medblackstar => UCMCommand("\\medblackstar", 'โญ‘', :mathord, "black medium star"), + :smwhitestar => UCMCommand("\\smwhitestar", 'โญ’', :mathord, "white small star"), + :rightpentagonblack => UCMCommand("\\rightpentagonblack", 'โญ“', :mathord, "black right-pointing pentagon"), + :rightpentagon => UCMCommand("\\rightpentagon", 'โญ”', :mathord, "white right-pointing pentagon"), + :postalmark => UCMCommand("\\postalmark", 'ใ€’', :mathord, "postal mark"), + :hzigzag => UCMCommand("\\hzigzag", 'ใ€ฐ', :mathord, "zigzag"), + :mbfA => UCMCommand("\\mbfA", '๐€', :mathalpha, "mathematical bold capital a"), + :mbfB => UCMCommand("\\mbfB", '๐', :mathalpha, "mathematical bold capital b"), + :mbfC => UCMCommand("\\mbfC", '๐‚', :mathalpha, "mathematical bold capital c"), + :mbfD => UCMCommand("\\mbfD", '๐ƒ', :mathalpha, "mathematical bold capital d"), + :mbfE => UCMCommand("\\mbfE", '๐„', :mathalpha, "mathematical bold capital e"), + :mbfF => UCMCommand("\\mbfF", '๐…', :mathalpha, "mathematical bold capital f"), + :mbfG => UCMCommand("\\mbfG", '๐†', :mathalpha, "mathematical bold capital g"), + :mbfH => UCMCommand("\\mbfH", '๐‡', :mathalpha, "mathematical bold capital h"), + :mbfI => UCMCommand("\\mbfI", '๐ˆ', :mathalpha, "mathematical bold capital i"), + :mbfJ => UCMCommand("\\mbfJ", '๐‰', :mathalpha, "mathematical bold capital j"), + :mbfK => UCMCommand("\\mbfK", '๐Š', :mathalpha, "mathematical bold capital k"), + :mbfL => UCMCommand("\\mbfL", '๐‹', :mathalpha, "mathematical bold capital l"), + :mbfM => UCMCommand("\\mbfM", '๐Œ', :mathalpha, "mathematical bold capital m"), + :mbfN => UCMCommand("\\mbfN", '๐', :mathalpha, "mathematical bold capital n"), + :mbfO => UCMCommand("\\mbfO", '๐Ž', :mathalpha, "mathematical bold capital o"), + :mbfP => UCMCommand("\\mbfP", '๐', :mathalpha, "mathematical bold capital p"), + :mbfQ => UCMCommand("\\mbfQ", '๐', :mathalpha, "mathematical bold capital q"), + :mbfR => UCMCommand("\\mbfR", '๐‘', :mathalpha, "mathematical bold capital r"), + :mbfS => UCMCommand("\\mbfS", '๐’', :mathalpha, "mathematical bold capital s"), + :mbfT => UCMCommand("\\mbfT", '๐“', :mathalpha, "mathematical bold capital t"), + :mbfU => UCMCommand("\\mbfU", '๐”', :mathalpha, "mathematical bold capital u"), + :mbfV => UCMCommand("\\mbfV", '๐•', :mathalpha, "mathematical bold capital v"), + :mbfW => UCMCommand("\\mbfW", '๐–', :mathalpha, "mathematical bold capital w"), + :mbfX => UCMCommand("\\mbfX", '๐—', :mathalpha, "mathematical bold capital x"), + :mbfY => UCMCommand("\\mbfY", '๐˜', :mathalpha, "mathematical bold capital y"), + :mbfZ => UCMCommand("\\mbfZ", '๐™', :mathalpha, "mathematical bold capital z"), + :mbfa => UCMCommand("\\mbfa", '๐š', :mathalpha, "mathematical bold small a"), + :mbfb => UCMCommand("\\mbfb", '๐›', :mathalpha, "mathematical bold small b"), + :mbfc => UCMCommand("\\mbfc", '๐œ', :mathalpha, "mathematical bold small c"), + :mbfd => UCMCommand("\\mbfd", '๐', :mathalpha, "mathematical bold small d"), + :mbfe => UCMCommand("\\mbfe", '๐ž', :mathalpha, "mathematical bold small e"), + :mbff => UCMCommand("\\mbff", '๐Ÿ', :mathalpha, "mathematical bold small f"), + :mbfg => UCMCommand("\\mbfg", '๐ ', :mathalpha, "mathematical bold small g"), + :mbfh => UCMCommand("\\mbfh", '๐ก', :mathalpha, "mathematical bold small h"), + :mbfi => UCMCommand("\\mbfi", '๐ข', :mathalpha, "mathematical bold small i"), + :mbfj => UCMCommand("\\mbfj", '๐ฃ', :mathalpha, "mathematical bold small j"), + :mbfk => UCMCommand("\\mbfk", '๐ค', :mathalpha, "mathematical bold small k"), + :mbfl => UCMCommand("\\mbfl", '๐ฅ', :mathalpha, "mathematical bold small l"), + :mbfm => UCMCommand("\\mbfm", '๐ฆ', :mathalpha, "mathematical bold small m"), + :mbfn => UCMCommand("\\mbfn", '๐ง', :mathalpha, "mathematical bold small n"), + :mbfo => UCMCommand("\\mbfo", '๐จ', :mathalpha, "mathematical bold small o"), + :mbfp => UCMCommand("\\mbfp", '๐ฉ', :mathalpha, "mathematical bold small p"), + :mbfq => UCMCommand("\\mbfq", '๐ช', :mathalpha, "mathematical bold small q"), + :mbfr => UCMCommand("\\mbfr", '๐ซ', :mathalpha, "mathematical bold small r"), + :mbfs => UCMCommand("\\mbfs", '๐ฌ', :mathalpha, "mathematical bold small s"), + :mbft => UCMCommand("\\mbft", '๐ญ', :mathalpha, "mathematical bold small t"), + :mbfu => UCMCommand("\\mbfu", '๐ฎ', :mathalpha, "mathematical bold small u"), + :mbfv => UCMCommand("\\mbfv", '๐ฏ', :mathalpha, "mathematical bold small v"), + :mbfw => UCMCommand("\\mbfw", '๐ฐ', :mathalpha, "mathematical bold small w"), + :mbfx => UCMCommand("\\mbfx", '๐ฑ', :mathalpha, "mathematical bold small x"), + :mbfy => UCMCommand("\\mbfy", '๐ฒ', :mathalpha, "mathematical bold small y"), + :mbfz => UCMCommand("\\mbfz", '๐ณ', :mathalpha, "mathematical bold small z"), + :mitA => UCMCommand("\\mitA", '๐ด', :mathalpha, "mathematical italic capital a"), + :mitB => UCMCommand("\\mitB", '๐ต', :mathalpha, "mathematical italic capital b"), + :mitC => UCMCommand("\\mitC", '๐ถ', :mathalpha, "mathematical italic capital c"), + :mitD => UCMCommand("\\mitD", '๐ท', :mathalpha, "mathematical italic capital d"), + :mitE => UCMCommand("\\mitE", '๐ธ', :mathalpha, "mathematical italic capital e"), + :mitF => UCMCommand("\\mitF", '๐น', :mathalpha, "mathematical italic capital f"), + :mitG => UCMCommand("\\mitG", '๐บ', :mathalpha, "mathematical italic capital g"), + :mitH => UCMCommand("\\mitH", '๐ป', :mathalpha, "mathematical italic capital h"), + :mitI => UCMCommand("\\mitI", '๐ผ', :mathalpha, "mathematical italic capital i"), + :mitJ => UCMCommand("\\mitJ", '๐ฝ', :mathalpha, "mathematical italic capital j"), + :mitK => UCMCommand("\\mitK", '๐พ', :mathalpha, "mathematical italic capital k"), + :mitL => UCMCommand("\\mitL", '๐ฟ', :mathalpha, "mathematical italic capital l"), + :mitM => UCMCommand("\\mitM", '๐‘€', :mathalpha, "mathematical italic capital m"), + :mitN => UCMCommand("\\mitN", '๐‘', :mathalpha, "mathematical italic capital n"), + :mitO => UCMCommand("\\mitO", '๐‘‚', :mathalpha, "mathematical italic capital o"), + :mitP => UCMCommand("\\mitP", '๐‘ƒ', :mathalpha, "mathematical italic capital p"), + :mitQ => UCMCommand("\\mitQ", '๐‘„', :mathalpha, "mathematical italic capital q"), + :mitR => UCMCommand("\\mitR", '๐‘…', :mathalpha, "mathematical italic capital r"), + :mitS => UCMCommand("\\mitS", '๐‘†', :mathalpha, "mathematical italic capital s"), + :mitT => UCMCommand("\\mitT", '๐‘‡', :mathalpha, "mathematical italic capital t"), + :mitU => UCMCommand("\\mitU", '๐‘ˆ', :mathalpha, "mathematical italic capital u"), + :mitV => UCMCommand("\\mitV", '๐‘‰', :mathalpha, "mathematical italic capital v"), + :mitW => UCMCommand("\\mitW", '๐‘Š', :mathalpha, "mathematical italic capital w"), + :mitX => UCMCommand("\\mitX", '๐‘‹', :mathalpha, "mathematical italic capital x"), + :mitY => UCMCommand("\\mitY", '๐‘Œ', :mathalpha, "mathematical italic capital y"), + :mitZ => UCMCommand("\\mitZ", '๐‘', :mathalpha, "mathematical italic capital z"), + :mita => UCMCommand("\\mita", '๐‘Ž', :mathalpha, "mathematical italic small a"), + :mitb => UCMCommand("\\mitb", '๐‘', :mathalpha, "mathematical italic small b"), + :mitc => UCMCommand("\\mitc", '๐‘', :mathalpha, "mathematical italic small c"), + :mitd => UCMCommand("\\mitd", '๐‘‘', :mathalpha, "mathematical italic small d"), + :mite => UCMCommand("\\mite", '๐‘’', :mathalpha, "mathematical italic small e"), + :mitf => UCMCommand("\\mitf", '๐‘“', :mathalpha, "mathematical italic small f"), + :mitg => UCMCommand("\\mitg", '๐‘”', :mathalpha, "mathematical italic small g"), + :miti => UCMCommand("\\miti", '๐‘–', :mathalpha, "mathematical italic small i"), + :mitj => UCMCommand("\\mitj", '๐‘—', :mathalpha, "mathematical italic small j"), + :mitk => UCMCommand("\\mitk", '๐‘˜', :mathalpha, "mathematical italic small k"), + :mitl => UCMCommand("\\mitl", '๐‘™', :mathalpha, "mathematical italic small l"), + :mitm => UCMCommand("\\mitm", '๐‘š', :mathalpha, "mathematical italic small m"), + :mitn => UCMCommand("\\mitn", '๐‘›', :mathalpha, "mathematical italic small n"), + :mito => UCMCommand("\\mito", '๐‘œ', :mathalpha, "mathematical italic small o"), + :mitp => UCMCommand("\\mitp", '๐‘', :mathalpha, "mathematical italic small p"), + :mitq => UCMCommand("\\mitq", '๐‘ž', :mathalpha, "mathematical italic small q"), + :mitr => UCMCommand("\\mitr", '๐‘Ÿ', :mathalpha, "mathematical italic small r"), + :mits => UCMCommand("\\mits", '๐‘ ', :mathalpha, "mathematical italic small s"), + :mitt => UCMCommand("\\mitt", '๐‘ก', :mathalpha, "mathematical italic small t"), + :mitu => UCMCommand("\\mitu", '๐‘ข', :mathalpha, "mathematical italic small u"), + :mitv => UCMCommand("\\mitv", '๐‘ฃ', :mathalpha, "mathematical italic small v"), + :mitw => UCMCommand("\\mitw", '๐‘ค', :mathalpha, "mathematical italic small w"), + :mitx => UCMCommand("\\mitx", '๐‘ฅ', :mathalpha, "mathematical italic small x"), + :mity => UCMCommand("\\mity", '๐‘ฆ', :mathalpha, "mathematical italic small y"), + :mitz => UCMCommand("\\mitz", '๐‘ง', :mathalpha, "mathematical italic small z"), + :mbfitA => UCMCommand("\\mbfitA", '๐‘จ', :mathalpha, "mathematical bold italic capital a"), + :mbfitB => UCMCommand("\\mbfitB", '๐‘ฉ', :mathalpha, "mathematical bold italic capital b"), + :mbfitC => UCMCommand("\\mbfitC", '๐‘ช', :mathalpha, "mathematical bold italic capital c"), + :mbfitD => UCMCommand("\\mbfitD", '๐‘ซ', :mathalpha, "mathematical bold italic capital d"), + :mbfitE => UCMCommand("\\mbfitE", '๐‘ฌ', :mathalpha, "mathematical bold italic capital e"), + :mbfitF => UCMCommand("\\mbfitF", '๐‘ญ', :mathalpha, "mathematical bold italic capital f"), + :mbfitG => UCMCommand("\\mbfitG", '๐‘ฎ', :mathalpha, "mathematical bold italic capital g"), + :mbfitH => UCMCommand("\\mbfitH", '๐‘ฏ', :mathalpha, "mathematical bold italic capital h"), + :mbfitI => UCMCommand("\\mbfitI", '๐‘ฐ', :mathalpha, "mathematical bold italic capital i"), + :mbfitJ => UCMCommand("\\mbfitJ", '๐‘ฑ', :mathalpha, "mathematical bold italic capital j"), + :mbfitK => UCMCommand("\\mbfitK", '๐‘ฒ', :mathalpha, "mathematical bold italic capital k"), + :mbfitL => UCMCommand("\\mbfitL", '๐‘ณ', :mathalpha, "mathematical bold italic capital l"), + :mbfitM => UCMCommand("\\mbfitM", '๐‘ด', :mathalpha, "mathematical bold italic capital m"), + :mbfitN => UCMCommand("\\mbfitN", '๐‘ต', :mathalpha, "mathematical bold italic capital n"), + :mbfitO => UCMCommand("\\mbfitO", '๐‘ถ', :mathalpha, "mathematical bold italic capital o"), + :mbfitP => UCMCommand("\\mbfitP", '๐‘ท', :mathalpha, "mathematical bold italic capital p"), + :mbfitQ => UCMCommand("\\mbfitQ", '๐‘ธ', :mathalpha, "mathematical bold italic capital q"), + :mbfitR => UCMCommand("\\mbfitR", '๐‘น', :mathalpha, "mathematical bold italic capital r"), + :mbfitS => UCMCommand("\\mbfitS", '๐‘บ', :mathalpha, "mathematical bold italic capital s"), + :mbfitT => UCMCommand("\\mbfitT", '๐‘ป', :mathalpha, "mathematical bold italic capital t"), + :mbfitU => UCMCommand("\\mbfitU", '๐‘ผ', :mathalpha, "mathematical bold italic capital u"), + :mbfitV => UCMCommand("\\mbfitV", '๐‘ฝ', :mathalpha, "mathematical bold italic capital v"), + :mbfitW => UCMCommand("\\mbfitW", '๐‘พ', :mathalpha, "mathematical bold italic capital w"), + :mbfitX => UCMCommand("\\mbfitX", '๐‘ฟ', :mathalpha, "mathematical bold italic capital x"), + :mbfitY => UCMCommand("\\mbfitY", '๐’€', :mathalpha, "mathematical bold italic capital y"), + :mbfitZ => UCMCommand("\\mbfitZ", '๐’', :mathalpha, "mathematical bold italic capital z"), + :mbfita => UCMCommand("\\mbfita", '๐’‚', :mathalpha, "mathematical bold italic small a"), + :mbfitb => UCMCommand("\\mbfitb", '๐’ƒ', :mathalpha, "mathematical bold italic small b"), + :mbfitc => UCMCommand("\\mbfitc", '๐’„', :mathalpha, "mathematical bold italic small c"), + :mbfitd => UCMCommand("\\mbfitd", '๐’…', :mathalpha, "mathematical bold italic small d"), + :mbfite => UCMCommand("\\mbfite", '๐’†', :mathalpha, "mathematical bold italic small e"), + :mbfitf => UCMCommand("\\mbfitf", '๐’‡', :mathalpha, "mathematical bold italic small f"), + :mbfitg => UCMCommand("\\mbfitg", '๐’ˆ', :mathalpha, "mathematical bold italic small g"), + :mbfith => UCMCommand("\\mbfith", '๐’‰', :mathalpha, "mathematical bold italic small h"), + :mbfiti => UCMCommand("\\mbfiti", '๐’Š', :mathalpha, "mathematical bold italic small i"), + :mbfitj => UCMCommand("\\mbfitj", '๐’‹', :mathalpha, "mathematical bold italic small j"), + :mbfitk => UCMCommand("\\mbfitk", '๐’Œ', :mathalpha, "mathematical bold italic small k"), + :mbfitl => UCMCommand("\\mbfitl", '๐’', :mathalpha, "mathematical bold italic small l"), + :mbfitm => UCMCommand("\\mbfitm", '๐’Ž', :mathalpha, "mathematical bold italic small m"), + :mbfitn => UCMCommand("\\mbfitn", '๐’', :mathalpha, "mathematical bold italic small n"), + :mbfito => UCMCommand("\\mbfito", '๐’', :mathalpha, "mathematical bold italic small o"), + :mbfitp => UCMCommand("\\mbfitp", '๐’‘', :mathalpha, "mathematical bold italic small p"), + :mbfitq => UCMCommand("\\mbfitq", '๐’’', :mathalpha, "mathematical bold italic small q"), + :mbfitr => UCMCommand("\\mbfitr", '๐’“', :mathalpha, "mathematical bold italic small r"), + :mbfits => UCMCommand("\\mbfits", '๐’”', :mathalpha, "mathematical bold italic small s"), + :mbfitt => UCMCommand("\\mbfitt", '๐’•', :mathalpha, "mathematical bold italic small t"), + :mbfitu => UCMCommand("\\mbfitu", '๐’–', :mathalpha, "mathematical bold italic small u"), + :mbfitv => UCMCommand("\\mbfitv", '๐’—', :mathalpha, "mathematical bold italic small v"), + :mbfitw => UCMCommand("\\mbfitw", '๐’˜', :mathalpha, "mathematical bold italic small w"), + :mbfitx => UCMCommand("\\mbfitx", '๐’™', :mathalpha, "mathematical bold italic small x"), + :mbfity => UCMCommand("\\mbfity", '๐’š', :mathalpha, "mathematical bold italic small y"), + :mbfitz => UCMCommand("\\mbfitz", '๐’›', :mathalpha, "mathematical bold italic small z"), + :mscrA => UCMCommand("\\mscrA", '๐’œ', :mathalpha, "mathematical script capital a"), + :mscrC => UCMCommand("\\mscrC", '๐’ž', :mathalpha, "mathematical script capital c"), + :mscrD => UCMCommand("\\mscrD", '๐’Ÿ', :mathalpha, "mathematical script capital d"), + :mscrG => UCMCommand("\\mscrG", '๐’ข', :mathalpha, "mathematical script capital g"), + :mscrJ => UCMCommand("\\mscrJ", '๐’ฅ', :mathalpha, "mathematical script capital j"), + :mscrK => UCMCommand("\\mscrK", '๐’ฆ', :mathalpha, "mathematical script capital k"), + :mscrN => UCMCommand("\\mscrN", '๐’ฉ', :mathalpha, "mathematical script capital n"), + :mscrO => UCMCommand("\\mscrO", '๐’ช', :mathalpha, "mathematical script capital o"), + :mscrP => UCMCommand("\\mscrP", '๐’ซ', :mathalpha, "mathematical script capital p"), + :mscrQ => UCMCommand("\\mscrQ", '๐’ฌ', :mathalpha, "mathematical script capital q"), + :mscrS => UCMCommand("\\mscrS", '๐’ฎ', :mathalpha, "mathematical script capital s"), + :mscrT => UCMCommand("\\mscrT", '๐’ฏ', :mathalpha, "mathematical script capital t"), + :mscrU => UCMCommand("\\mscrU", '๐’ฐ', :mathalpha, "mathematical script capital u"), + :mscrV => UCMCommand("\\mscrV", '๐’ฑ', :mathalpha, "mathematical script capital v"), + :mscrW => UCMCommand("\\mscrW", '๐’ฒ', :mathalpha, "mathematical script capital w"), + :mscrX => UCMCommand("\\mscrX", '๐’ณ', :mathalpha, "mathematical script capital x"), + :mscrY => UCMCommand("\\mscrY", '๐’ด', :mathalpha, "mathematical script capital y"), + :mscrZ => UCMCommand("\\mscrZ", '๐’ต', :mathalpha, "mathematical script capital z"), + :mscra => UCMCommand("\\mscra", '๐’ถ', :mathalpha, "mathematical script small a"), + :mscrb => UCMCommand("\\mscrb", '๐’ท', :mathalpha, "mathematical script small b"), + :mscrc => UCMCommand("\\mscrc", '๐’ธ', :mathalpha, "mathematical script small c"), + :mscrd => UCMCommand("\\mscrd", '๐’น', :mathalpha, "mathematical script small d"), + :mscrf => UCMCommand("\\mscrf", '๐’ป', :mathalpha, "mathematical script small f"), + :mscrh => UCMCommand("\\mscrh", '๐’ฝ', :mathalpha, "mathematical script small h"), + :mscri => UCMCommand("\\mscri", '๐’พ', :mathalpha, "mathematical script small i"), + :mscrj => UCMCommand("\\mscrj", '๐’ฟ', :mathalpha, "mathematical script small j"), + :mscrk => UCMCommand("\\mscrk", '๐“€', :mathalpha, "mathematical script small k"), + :mscrl => UCMCommand("\\mscrl", '๐“', :mathalpha, "mathematical script small l"), + :mscrm => UCMCommand("\\mscrm", '๐“‚', :mathalpha, "mathematical script small m"), + :mscrn => UCMCommand("\\mscrn", '๐“ƒ', :mathalpha, "mathematical script small n"), + :mscrp => UCMCommand("\\mscrp", '๐“…', :mathalpha, "mathematical script small p"), + :mscrq => UCMCommand("\\mscrq", '๐“†', :mathalpha, "mathematical script small q"), + :mscrr => UCMCommand("\\mscrr", '๐“‡', :mathalpha, "mathematical script small r"), + :mscrs => UCMCommand("\\mscrs", '๐“ˆ', :mathalpha, "mathematical script small s"), + :mscrt => UCMCommand("\\mscrt", '๐“‰', :mathalpha, "mathematical script small t"), + :mscru => UCMCommand("\\mscru", '๐“Š', :mathalpha, "mathematical script small u"), + :mscrv => UCMCommand("\\mscrv", '๐“‹', :mathalpha, "mathematical script small v"), + :mscrw => UCMCommand("\\mscrw", '๐“Œ', :mathalpha, "mathematical script small w"), + :mscrx => UCMCommand("\\mscrx", '๐“', :mathalpha, "mathematical script small x"), + :mscry => UCMCommand("\\mscry", '๐“Ž', :mathalpha, "mathematical script small y"), + :mscrz => UCMCommand("\\mscrz", '๐“', :mathalpha, "mathematical script small z"), + :mbfscrA => UCMCommand("\\mbfscrA", '๐“', :mathalpha, "mathematical bold script capital a"), + :mbfscrB => UCMCommand("\\mbfscrB", '๐“‘', :mathalpha, "mathematical bold script capital b"), + :mbfscrC => UCMCommand("\\mbfscrC", '๐“’', :mathalpha, "mathematical bold script capital c"), + :mbfscrD => UCMCommand("\\mbfscrD", '๐““', :mathalpha, "mathematical bold script capital d"), + :mbfscrE => UCMCommand("\\mbfscrE", '๐“”', :mathalpha, "mathematical bold script capital e"), + :mbfscrF => UCMCommand("\\mbfscrF", '๐“•', :mathalpha, "mathematical bold script capital f"), + :mbfscrG => UCMCommand("\\mbfscrG", '๐“–', :mathalpha, "mathematical bold script capital g"), + :mbfscrH => UCMCommand("\\mbfscrH", '๐“—', :mathalpha, "mathematical bold script capital h"), + :mbfscrI => UCMCommand("\\mbfscrI", '๐“˜', :mathalpha, "mathematical bold script capital i"), + :mbfscrJ => UCMCommand("\\mbfscrJ", '๐“™', :mathalpha, "mathematical bold script capital j"), + :mbfscrK => UCMCommand("\\mbfscrK", '๐“š', :mathalpha, "mathematical bold script capital k"), + :mbfscrL => UCMCommand("\\mbfscrL", '๐“›', :mathalpha, "mathematical bold script capital l"), + :mbfscrM => UCMCommand("\\mbfscrM", '๐“œ', :mathalpha, "mathematical bold script capital m"), + :mbfscrN => UCMCommand("\\mbfscrN", '๐“', :mathalpha, "mathematical bold script capital n"), + :mbfscrO => UCMCommand("\\mbfscrO", '๐“ž', :mathalpha, "mathematical bold script capital o"), + :mbfscrP => UCMCommand("\\mbfscrP", '๐“Ÿ', :mathalpha, "mathematical bold script capital p"), + :mbfscrQ => UCMCommand("\\mbfscrQ", '๐“ ', :mathalpha, "mathematical bold script capital q"), + :mbfscrR => UCMCommand("\\mbfscrR", '๐“ก', :mathalpha, "mathematical bold script capital r"), + :mbfscrS => UCMCommand("\\mbfscrS", '๐“ข', :mathalpha, "mathematical bold script capital s"), + :mbfscrT => UCMCommand("\\mbfscrT", '๐“ฃ', :mathalpha, "mathematical bold script capital t"), + :mbfscrU => UCMCommand("\\mbfscrU", '๐“ค', :mathalpha, "mathematical bold script capital u"), + :mbfscrV => UCMCommand("\\mbfscrV", '๐“ฅ', :mathalpha, "mathematical bold script capital v"), + :mbfscrW => UCMCommand("\\mbfscrW", '๐“ฆ', :mathalpha, "mathematical bold script capital w"), + :mbfscrX => UCMCommand("\\mbfscrX", '๐“ง', :mathalpha, "mathematical bold script capital x"), + :mbfscrY => UCMCommand("\\mbfscrY", '๐“จ', :mathalpha, "mathematical bold script capital y"), + :mbfscrZ => UCMCommand("\\mbfscrZ", '๐“ฉ', :mathalpha, "mathematical bold script capital z"), + :mbfscra => UCMCommand("\\mbfscra", '๐“ช', :mathalpha, "mathematical bold script small a"), + :mbfscrb => UCMCommand("\\mbfscrb", '๐“ซ', :mathalpha, "mathematical bold script small b"), + :mbfscrc => UCMCommand("\\mbfscrc", '๐“ฌ', :mathalpha, "mathematical bold script small c"), + :mbfscrd => UCMCommand("\\mbfscrd", '๐“ญ', :mathalpha, "mathematical bold script small d"), + :mbfscre => UCMCommand("\\mbfscre", '๐“ฎ', :mathalpha, "mathematical bold script small e"), + :mbfscrf => UCMCommand("\\mbfscrf", '๐“ฏ', :mathalpha, "mathematical bold script small f"), + :mbfscrg => UCMCommand("\\mbfscrg", '๐“ฐ', :mathalpha, "mathematical bold script small g"), + :mbfscrh => UCMCommand("\\mbfscrh", '๐“ฑ', :mathalpha, "mathematical bold script small h"), + :mbfscri => UCMCommand("\\mbfscri", '๐“ฒ', :mathalpha, "mathematical bold script small i"), + :mbfscrj => UCMCommand("\\mbfscrj", '๐“ณ', :mathalpha, "mathematical bold script small j"), + :mbfscrk => UCMCommand("\\mbfscrk", '๐“ด', :mathalpha, "mathematical bold script small k"), + :mbfscrl => UCMCommand("\\mbfscrl", '๐“ต', :mathalpha, "mathematical bold script small l"), + :mbfscrm => UCMCommand("\\mbfscrm", '๐“ถ', :mathalpha, "mathematical bold script small m"), + :mbfscrn => UCMCommand("\\mbfscrn", '๐“ท', :mathalpha, "mathematical bold script small n"), + :mbfscro => UCMCommand("\\mbfscro", '๐“ธ', :mathalpha, "mathematical bold script small o"), + :mbfscrp => UCMCommand("\\mbfscrp", '๐“น', :mathalpha, "mathematical bold script small p"), + :mbfscrq => UCMCommand("\\mbfscrq", '๐“บ', :mathalpha, "mathematical bold script small q"), + :mbfscrr => UCMCommand("\\mbfscrr", '๐“ป', :mathalpha, "mathematical bold script small r"), + :mbfscrs => UCMCommand("\\mbfscrs", '๐“ผ', :mathalpha, "mathematical bold script small s"), + :mbfscrt => UCMCommand("\\mbfscrt", '๐“ฝ', :mathalpha, "mathematical bold script small t"), + :mbfscru => UCMCommand("\\mbfscru", '๐“พ', :mathalpha, "mathematical bold script small u"), + :mbfscrv => UCMCommand("\\mbfscrv", '๐“ฟ', :mathalpha, "mathematical bold script small v"), + :mbfscrw => UCMCommand("\\mbfscrw", '๐”€', :mathalpha, "mathematical bold script small w"), + :mbfscrx => UCMCommand("\\mbfscrx", '๐”', :mathalpha, "mathematical bold script small x"), + :mbfscry => UCMCommand("\\mbfscry", '๐”‚', :mathalpha, "mathematical bold script small y"), + :mbfscrz => UCMCommand("\\mbfscrz", '๐”ƒ', :mathalpha, "mathematical bold script small z"), + :mfrakA => UCMCommand("\\mfrakA", '๐”„', :mathalpha, "mathematical fraktur capital a"), + :mfrakB => UCMCommand("\\mfrakB", '๐”…', :mathalpha, "mathematical fraktur capital b"), + :mfrakD => UCMCommand("\\mfrakD", '๐”‡', :mathalpha, "mathematical fraktur capital d"), + :mfrakE => UCMCommand("\\mfrakE", '๐”ˆ', :mathalpha, "mathematical fraktur capital e"), + :mfrakF => UCMCommand("\\mfrakF", '๐”‰', :mathalpha, "mathematical fraktur capital f"), + :mfrakG => UCMCommand("\\mfrakG", '๐”Š', :mathalpha, "mathematical fraktur capital g"), + :mfrakJ => UCMCommand("\\mfrakJ", '๐”', :mathalpha, "mathematical fraktur capital j"), + :mfrakK => UCMCommand("\\mfrakK", '๐”Ž', :mathalpha, "mathematical fraktur capital k"), + :mfrakL => UCMCommand("\\mfrakL", '๐”', :mathalpha, "mathematical fraktur capital l"), + :mfrakM => UCMCommand("\\mfrakM", '๐”', :mathalpha, "mathematical fraktur capital m"), + :mfrakN => UCMCommand("\\mfrakN", '๐”‘', :mathalpha, "mathematical fraktur capital n"), + :mfrakO => UCMCommand("\\mfrakO", '๐”’', :mathalpha, "mathematical fraktur capital o"), + :mfrakP => UCMCommand("\\mfrakP", '๐”“', :mathalpha, "mathematical fraktur capital p"), + :mfrakQ => UCMCommand("\\mfrakQ", '๐””', :mathalpha, "mathematical fraktur capital q"), + :mfrakS => UCMCommand("\\mfrakS", '๐”–', :mathalpha, "mathematical fraktur capital s"), + :mfrakT => UCMCommand("\\mfrakT", '๐”—', :mathalpha, "mathematical fraktur capital t"), + :mfrakU => UCMCommand("\\mfrakU", '๐”˜', :mathalpha, "mathematical fraktur capital u"), + :mfrakV => UCMCommand("\\mfrakV", '๐”™', :mathalpha, "mathematical fraktur capital v"), + :mfrakW => UCMCommand("\\mfrakW", '๐”š', :mathalpha, "mathematical fraktur capital w"), + :mfrakX => UCMCommand("\\mfrakX", '๐”›', :mathalpha, "mathematical fraktur capital x"), + :mfrakY => UCMCommand("\\mfrakY", '๐”œ', :mathalpha, "mathematical fraktur capital y"), + :mfraka => UCMCommand("\\mfraka", '๐”ž', :mathalpha, "mathematical fraktur small a"), + :mfrakb => UCMCommand("\\mfrakb", '๐”Ÿ', :mathalpha, "mathematical fraktur small b"), + :mfrakc => UCMCommand("\\mfrakc", '๐” ', :mathalpha, "mathematical fraktur small c"), + :mfrakd => UCMCommand("\\mfrakd", '๐”ก', :mathalpha, "mathematical fraktur small d"), + :mfrake => UCMCommand("\\mfrake", '๐”ข', :mathalpha, "mathematical fraktur small e"), + :mfrakf => UCMCommand("\\mfrakf", '๐”ฃ', :mathalpha, "mathematical fraktur small f"), + :mfrakg => UCMCommand("\\mfrakg", '๐”ค', :mathalpha, "mathematical fraktur small g"), + :mfrakh => UCMCommand("\\mfrakh", '๐”ฅ', :mathalpha, "mathematical fraktur small h"), + :mfraki => UCMCommand("\\mfraki", '๐”ฆ', :mathalpha, "mathematical fraktur small i"), + :mfrakj => UCMCommand("\\mfrakj", '๐”ง', :mathalpha, "mathematical fraktur small j"), + :mfrakk => UCMCommand("\\mfrakk", '๐”จ', :mathalpha, "mathematical fraktur small k"), + :mfrakl => UCMCommand("\\mfrakl", '๐”ฉ', :mathalpha, "mathematical fraktur small l"), + :mfrakm => UCMCommand("\\mfrakm", '๐”ช', :mathalpha, "mathematical fraktur small m"), + :mfrakn => UCMCommand("\\mfrakn", '๐”ซ', :mathalpha, "mathematical fraktur small n"), + :mfrako => UCMCommand("\\mfrako", '๐”ฌ', :mathalpha, "mathematical fraktur small o"), + :mfrakp => UCMCommand("\\mfrakp", '๐”ญ', :mathalpha, "mathematical fraktur small p"), + :mfrakq => UCMCommand("\\mfrakq", '๐”ฎ', :mathalpha, "mathematical fraktur small q"), + :mfrakr => UCMCommand("\\mfrakr", '๐”ฏ', :mathalpha, "mathematical fraktur small r"), + :mfraks => UCMCommand("\\mfraks", '๐”ฐ', :mathalpha, "mathematical fraktur small s"), + :mfrakt => UCMCommand("\\mfrakt", '๐”ฑ', :mathalpha, "mathematical fraktur small t"), + :mfraku => UCMCommand("\\mfraku", '๐”ฒ', :mathalpha, "mathematical fraktur small u"), + :mfrakv => UCMCommand("\\mfrakv", '๐”ณ', :mathalpha, "mathematical fraktur small v"), + :mfrakw => UCMCommand("\\mfrakw", '๐”ด', :mathalpha, "mathematical fraktur small w"), + :mfrakx => UCMCommand("\\mfrakx", '๐”ต', :mathalpha, "mathematical fraktur small x"), + :mfraky => UCMCommand("\\mfraky", '๐”ถ', :mathalpha, "mathematical fraktur small y"), + :mfrakz => UCMCommand("\\mfrakz", '๐”ท', :mathalpha, "mathematical fraktur small z"), + :BbbA => UCMCommand("\\BbbA", '๐”ธ', :mathalpha, "mathematical double-struck capital a"), + :BbbB => UCMCommand("\\BbbB", '๐”น', :mathalpha, "mathematical double-struck capital b"), + :BbbD => UCMCommand("\\BbbD", '๐”ป', :mathalpha, "mathematical double-struck capital d"), + :BbbE => UCMCommand("\\BbbE", '๐”ผ', :mathalpha, "mathematical double-struck capital e"), + :BbbF => UCMCommand("\\BbbF", '๐”ฝ', :mathalpha, "mathematical double-struck capital f"), + :BbbG => UCMCommand("\\BbbG", '๐”พ', :mathalpha, "mathematical double-struck capital g"), + :BbbI => UCMCommand("\\BbbI", '๐•€', :mathalpha, "mathematical double-struck capital i"), + :BbbJ => UCMCommand("\\BbbJ", '๐•', :mathalpha, "mathematical double-struck capital j"), + :BbbK => UCMCommand("\\BbbK", '๐•‚', :mathalpha, "mathematical double-struck capital k"), + :BbbL => UCMCommand("\\BbbL", '๐•ƒ', :mathalpha, "mathematical double-struck capital l"), + :BbbM => UCMCommand("\\BbbM", '๐•„', :mathalpha, "mathematical double-struck capital m"), + :BbbO => UCMCommand("\\BbbO", '๐•†', :mathalpha, "mathematical double-struck capital o"), + :BbbS => UCMCommand("\\BbbS", '๐•Š', :mathalpha, "mathematical double-struck capital s"), + :BbbT => UCMCommand("\\BbbT", '๐•‹', :mathalpha, "mathematical double-struck capital t"), + :BbbU => UCMCommand("\\BbbU", '๐•Œ', :mathalpha, "mathematical double-struck capital u"), + :BbbV => UCMCommand("\\BbbV", '๐•', :mathalpha, "mathematical double-struck capital v"), + :BbbW => UCMCommand("\\BbbW", '๐•Ž', :mathalpha, "mathematical double-struck capital w"), + :BbbX => UCMCommand("\\BbbX", '๐•', :mathalpha, "mathematical double-struck capital x"), + :BbbY => UCMCommand("\\BbbY", '๐•', :mathalpha, "mathematical double-struck capital y"), + :Bbba => UCMCommand("\\Bbba", '๐•’', :mathalpha, "mathematical double-struck small a"), + :Bbbb => UCMCommand("\\Bbbb", '๐•“', :mathalpha, "mathematical double-struck small b"), + :Bbbc => UCMCommand("\\Bbbc", '๐•”', :mathalpha, "mathematical double-struck small c"), + :Bbbd => UCMCommand("\\Bbbd", '๐••', :mathalpha, "mathematical double-struck small d"), + :Bbbe => UCMCommand("\\Bbbe", '๐•–', :mathalpha, "mathematical double-struck small e"), + :Bbbf => UCMCommand("\\Bbbf", '๐•—', :mathalpha, "mathematical double-struck small f"), + :Bbbg => UCMCommand("\\Bbbg", '๐•˜', :mathalpha, "mathematical double-struck small g"), + :Bbbh => UCMCommand("\\Bbbh", '๐•™', :mathalpha, "mathematical double-struck small h"), + :Bbbi => UCMCommand("\\Bbbi", '๐•š', :mathalpha, "mathematical double-struck small i"), + :Bbbj => UCMCommand("\\Bbbj", '๐•›', :mathalpha, "mathematical double-struck small j"), + :Bbbk => UCMCommand("\\Bbbk", '๐•œ', :mathalpha, "mathematical double-struck small k"), + :Bbbl => UCMCommand("\\Bbbl", '๐•', :mathalpha, "mathematical double-struck small l"), + :Bbbm => UCMCommand("\\Bbbm", '๐•ž', :mathalpha, "mathematical double-struck small m"), + :Bbbn => UCMCommand("\\Bbbn", '๐•Ÿ', :mathalpha, "mathematical double-struck small n"), + :Bbbo => UCMCommand("\\Bbbo", '๐• ', :mathalpha, "mathematical double-struck small o"), + :Bbbp => UCMCommand("\\Bbbp", '๐•ก', :mathalpha, "mathematical double-struck small p"), + :Bbbq => UCMCommand("\\Bbbq", '๐•ข', :mathalpha, "mathematical double-struck small q"), + :Bbbr => UCMCommand("\\Bbbr", '๐•ฃ', :mathalpha, "mathematical double-struck small r"), + :Bbbs => UCMCommand("\\Bbbs", '๐•ค', :mathalpha, "mathematical double-struck small s"), + :Bbbt => UCMCommand("\\Bbbt", '๐•ฅ', :mathalpha, "mathematical double-struck small t"), + :Bbbu => UCMCommand("\\Bbbu", '๐•ฆ', :mathalpha, "mathematical double-struck small u"), + :Bbbv => UCMCommand("\\Bbbv", '๐•ง', :mathalpha, "mathematical double-struck small v"), + :Bbbw => UCMCommand("\\Bbbw", '๐•จ', :mathalpha, "mathematical double-struck small w"), + :Bbbx => UCMCommand("\\Bbbx", '๐•ฉ', :mathalpha, "mathematical double-struck small x"), + :Bbby => UCMCommand("\\Bbby", '๐•ช', :mathalpha, "mathematical double-struck small y"), + :Bbbz => UCMCommand("\\Bbbz", '๐•ซ', :mathalpha, "mathematical double-struck small z"), + :mbffrakA => UCMCommand("\\mbffrakA", '๐•ฌ', :mathalpha, "mathematical bold fraktur capital a"), + :mbffrakB => UCMCommand("\\mbffrakB", '๐•ญ', :mathalpha, "mathematical bold fraktur capital b"), + :mbffrakC => UCMCommand("\\mbffrakC", '๐•ฎ', :mathalpha, "mathematical bold fraktur capital c"), + :mbffrakD => UCMCommand("\\mbffrakD", '๐•ฏ', :mathalpha, "mathematical bold fraktur capital d"), + :mbffrakE => UCMCommand("\\mbffrakE", '๐•ฐ', :mathalpha, "mathematical bold fraktur capital e"), + :mbffrakF => UCMCommand("\\mbffrakF", '๐•ฑ', :mathalpha, "mathematical bold fraktur capital f"), + :mbffrakG => UCMCommand("\\mbffrakG", '๐•ฒ', :mathalpha, "mathematical bold fraktur capital g"), + :mbffrakH => UCMCommand("\\mbffrakH", '๐•ณ', :mathalpha, "mathematical bold fraktur capital h"), + :mbffrakI => UCMCommand("\\mbffrakI", '๐•ด', :mathalpha, "mathematical bold fraktur capital i"), + :mbffrakJ => UCMCommand("\\mbffrakJ", '๐•ต', :mathalpha, "mathematical bold fraktur capital j"), + :mbffrakK => UCMCommand("\\mbffrakK", '๐•ถ', :mathalpha, "mathematical bold fraktur capital k"), + :mbffrakL => UCMCommand("\\mbffrakL", '๐•ท', :mathalpha, "mathematical bold fraktur capital l"), + :mbffrakM => UCMCommand("\\mbffrakM", '๐•ธ', :mathalpha, "mathematical bold fraktur capital m"), + :mbffrakN => UCMCommand("\\mbffrakN", '๐•น', :mathalpha, "mathematical bold fraktur capital n"), + :mbffrakO => UCMCommand("\\mbffrakO", '๐•บ', :mathalpha, "mathematical bold fraktur capital o"), + :mbffrakP => UCMCommand("\\mbffrakP", '๐•ป', :mathalpha, "mathematical bold fraktur capital p"), + :mbffrakQ => UCMCommand("\\mbffrakQ", '๐•ผ', :mathalpha, "mathematical bold fraktur capital q"), + :mbffrakR => UCMCommand("\\mbffrakR", '๐•ฝ', :mathalpha, "mathematical bold fraktur capital r"), + :mbffrakS => UCMCommand("\\mbffrakS", '๐•พ', :mathalpha, "mathematical bold fraktur capital s"), + :mbffrakT => UCMCommand("\\mbffrakT", '๐•ฟ', :mathalpha, "mathematical bold fraktur capital t"), + :mbffrakU => UCMCommand("\\mbffrakU", '๐–€', :mathalpha, "mathematical bold fraktur capital u"), + :mbffrakV => UCMCommand("\\mbffrakV", '๐–', :mathalpha, "mathematical bold fraktur capital v"), + :mbffrakW => UCMCommand("\\mbffrakW", '๐–‚', :mathalpha, "mathematical bold fraktur capital w"), + :mbffrakX => UCMCommand("\\mbffrakX", '๐–ƒ', :mathalpha, "mathematical bold fraktur capital x"), + :mbffrakY => UCMCommand("\\mbffrakY", '๐–„', :mathalpha, "mathematical bold fraktur capital y"), + :mbffrakZ => UCMCommand("\\mbffrakZ", '๐–…', :mathalpha, "mathematical bold fraktur capital z"), + :mbffraka => UCMCommand("\\mbffraka", '๐–†', :mathalpha, "mathematical bold fraktur small a"), + :mbffrakb => UCMCommand("\\mbffrakb", '๐–‡', :mathalpha, "mathematical bold fraktur small b"), + :mbffrakc => UCMCommand("\\mbffrakc", '๐–ˆ', :mathalpha, "mathematical bold fraktur small c"), + :mbffrakd => UCMCommand("\\mbffrakd", '๐–‰', :mathalpha, "mathematical bold fraktur small d"), + :mbffrake => UCMCommand("\\mbffrake", '๐–Š', :mathalpha, "mathematical bold fraktur small e"), + :mbffrakf => UCMCommand("\\mbffrakf", '๐–‹', :mathalpha, "mathematical bold fraktur small f"), + :mbffrakg => UCMCommand("\\mbffrakg", '๐–Œ', :mathalpha, "mathematical bold fraktur small g"), + :mbffrakh => UCMCommand("\\mbffrakh", '๐–', :mathalpha, "mathematical bold fraktur small h"), + :mbffraki => UCMCommand("\\mbffraki", '๐–Ž', :mathalpha, "mathematical bold fraktur small i"), + :mbffrakj => UCMCommand("\\mbffrakj", '๐–', :mathalpha, "mathematical bold fraktur small j"), + :mbffrakk => UCMCommand("\\mbffrakk", '๐–', :mathalpha, "mathematical bold fraktur small k"), + :mbffrakl => UCMCommand("\\mbffrakl", '๐–‘', :mathalpha, "mathematical bold fraktur small l"), + :mbffrakm => UCMCommand("\\mbffrakm", '๐–’', :mathalpha, "mathematical bold fraktur small m"), + :mbffrakn => UCMCommand("\\mbffrakn", '๐–“', :mathalpha, "mathematical bold fraktur small n"), + :mbffrako => UCMCommand("\\mbffrako", '๐–”', :mathalpha, "mathematical bold fraktur small o"), + :mbffrakp => UCMCommand("\\mbffrakp", '๐–•', :mathalpha, "mathematical bold fraktur small p"), + :mbffrakq => UCMCommand("\\mbffrakq", '๐––', :mathalpha, "mathematical bold fraktur small q"), + :mbffrakr => UCMCommand("\\mbffrakr", '๐–—', :mathalpha, "mathematical bold fraktur small r"), + :mbffraks => UCMCommand("\\mbffraks", '๐–˜', :mathalpha, "mathematical bold fraktur small s"), + :mbffrakt => UCMCommand("\\mbffrakt", '๐–™', :mathalpha, "mathematical bold fraktur small t"), + :mbffraku => UCMCommand("\\mbffraku", '๐–š', :mathalpha, "mathematical bold fraktur small u"), + :mbffrakv => UCMCommand("\\mbffrakv", '๐–›', :mathalpha, "mathematical bold fraktur small v"), + :mbffrakw => UCMCommand("\\mbffrakw", '๐–œ', :mathalpha, "mathematical bold fraktur small w"), + :mbffrakx => UCMCommand("\\mbffrakx", '๐–', :mathalpha, "mathematical bold fraktur small x"), + :mbffraky => UCMCommand("\\mbffraky", '๐–ž', :mathalpha, "mathematical bold fraktur small y"), + :mbffrakz => UCMCommand("\\mbffrakz", '๐–Ÿ', :mathalpha, "mathematical bold fraktur small z"), + :msansA => UCMCommand("\\msansA", '๐– ', :mathalpha, "mathematical sans-serif capital a"), + :msansB => UCMCommand("\\msansB", '๐–ก', :mathalpha, "mathematical sans-serif capital b"), + :msansC => UCMCommand("\\msansC", '๐–ข', :mathalpha, "mathematical sans-serif capital c"), + :msansD => UCMCommand("\\msansD", '๐–ฃ', :mathalpha, "mathematical sans-serif capital d"), + :msansE => UCMCommand("\\msansE", '๐–ค', :mathalpha, "mathematical sans-serif capital e"), + :msansF => UCMCommand("\\msansF", '๐–ฅ', :mathalpha, "mathematical sans-serif capital f"), + :msansG => UCMCommand("\\msansG", '๐–ฆ', :mathalpha, "mathematical sans-serif capital g"), + :msansH => UCMCommand("\\msansH", '๐–ง', :mathalpha, "mathematical sans-serif capital h"), + :msansI => UCMCommand("\\msansI", '๐–จ', :mathalpha, "mathematical sans-serif capital i"), + :msansJ => UCMCommand("\\msansJ", '๐–ฉ', :mathalpha, "mathematical sans-serif capital j"), + :msansK => UCMCommand("\\msansK", '๐–ช', :mathalpha, "mathematical sans-serif capital k"), + :msansL => UCMCommand("\\msansL", '๐–ซ', :mathalpha, "mathematical sans-serif capital l"), + :msansM => UCMCommand("\\msansM", '๐–ฌ', :mathalpha, "mathematical sans-serif capital m"), + :msansN => UCMCommand("\\msansN", '๐–ญ', :mathalpha, "mathematical sans-serif capital n"), + :msansO => UCMCommand("\\msansO", '๐–ฎ', :mathalpha, "mathematical sans-serif capital o"), + :msansP => UCMCommand("\\msansP", '๐–ฏ', :mathalpha, "mathematical sans-serif capital p"), + :msansQ => UCMCommand("\\msansQ", '๐–ฐ', :mathalpha, "mathematical sans-serif capital q"), + :msansR => UCMCommand("\\msansR", '๐–ฑ', :mathalpha, "mathematical sans-serif capital r"), + :msansS => UCMCommand("\\msansS", '๐–ฒ', :mathalpha, "mathematical sans-serif capital s"), + :msansT => UCMCommand("\\msansT", '๐–ณ', :mathalpha, "mathematical sans-serif capital t"), + :msansU => UCMCommand("\\msansU", '๐–ด', :mathalpha, "mathematical sans-serif capital u"), + :msansV => UCMCommand("\\msansV", '๐–ต', :mathalpha, "mathematical sans-serif capital v"), + :msansW => UCMCommand("\\msansW", '๐–ถ', :mathalpha, "mathematical sans-serif capital w"), + :msansX => UCMCommand("\\msansX", '๐–ท', :mathalpha, "mathematical sans-serif capital x"), + :msansY => UCMCommand("\\msansY", '๐–ธ', :mathalpha, "mathematical sans-serif capital y"), + :msansZ => UCMCommand("\\msansZ", '๐–น', :mathalpha, "mathematical sans-serif capital z"), + :msansa => UCMCommand("\\msansa", '๐–บ', :mathalpha, "mathematical sans-serif small a"), + :msansb => UCMCommand("\\msansb", '๐–ป', :mathalpha, "mathematical sans-serif small b"), + :msansc => UCMCommand("\\msansc", '๐–ผ', :mathalpha, "mathematical sans-serif small c"), + :msansd => UCMCommand("\\msansd", '๐–ฝ', :mathalpha, "mathematical sans-serif small d"), + :msanse => UCMCommand("\\msanse", '๐–พ', :mathalpha, "mathematical sans-serif small e"), + :msansf => UCMCommand("\\msansf", '๐–ฟ', :mathalpha, "mathematical sans-serif small f"), + :msansg => UCMCommand("\\msansg", '๐—€', :mathalpha, "mathematical sans-serif small g"), + :msansh => UCMCommand("\\msansh", '๐—', :mathalpha, "mathematical sans-serif small h"), + :msansi => UCMCommand("\\msansi", '๐—‚', :mathalpha, "mathematical sans-serif small i"), + :msansj => UCMCommand("\\msansj", '๐—ƒ', :mathalpha, "mathematical sans-serif small j"), + :msansk => UCMCommand("\\msansk", '๐—„', :mathalpha, "mathematical sans-serif small k"), + :msansl => UCMCommand("\\msansl", '๐—…', :mathalpha, "mathematical sans-serif small l"), + :msansm => UCMCommand("\\msansm", '๐—†', :mathalpha, "mathematical sans-serif small m"), + :msansn => UCMCommand("\\msansn", '๐—‡', :mathalpha, "mathematical sans-serif small n"), + :msanso => UCMCommand("\\msanso", '๐—ˆ', :mathalpha, "mathematical sans-serif small o"), + :msansp => UCMCommand("\\msansp", '๐—‰', :mathalpha, "mathematical sans-serif small p"), + :msansq => UCMCommand("\\msansq", '๐—Š', :mathalpha, "mathematical sans-serif small q"), + :msansr => UCMCommand("\\msansr", '๐—‹', :mathalpha, "mathematical sans-serif small r"), + :msanss => UCMCommand("\\msanss", '๐—Œ', :mathalpha, "mathematical sans-serif small s"), + :msanst => UCMCommand("\\msanst", '๐—', :mathalpha, "mathematical sans-serif small t"), + :msansu => UCMCommand("\\msansu", '๐—Ž', :mathalpha, "mathematical sans-serif small u"), + :msansv => UCMCommand("\\msansv", '๐—', :mathalpha, "mathematical sans-serif small v"), + :msansw => UCMCommand("\\msansw", '๐—', :mathalpha, "mathematical sans-serif small w"), + :msansx => UCMCommand("\\msansx", '๐—‘', :mathalpha, "mathematical sans-serif small x"), + :msansy => UCMCommand("\\msansy", '๐—’', :mathalpha, "mathematical sans-serif small y"), + :msansz => UCMCommand("\\msansz", '๐—“', :mathalpha, "mathematical sans-serif small z"), + :mbfsansA => UCMCommand("\\mbfsansA", '๐—”', :mathalpha, "mathematical sans-serif bold capital a"), + :mbfsansB => UCMCommand("\\mbfsansB", '๐—•', :mathalpha, "mathematical sans-serif bold capital b"), + :mbfsansC => UCMCommand("\\mbfsansC", '๐—–', :mathalpha, "mathematical sans-serif bold capital c"), + :mbfsansD => UCMCommand("\\mbfsansD", '๐——', :mathalpha, "mathematical sans-serif bold capital d"), + :mbfsansE => UCMCommand("\\mbfsansE", '๐—˜', :mathalpha, "mathematical sans-serif bold capital e"), + :mbfsansF => UCMCommand("\\mbfsansF", '๐—™', :mathalpha, "mathematical sans-serif bold capital f"), + :mbfsansG => UCMCommand("\\mbfsansG", '๐—š', :mathalpha, "mathematical sans-serif bold capital g"), + :mbfsansH => UCMCommand("\\mbfsansH", '๐—›', :mathalpha, "mathematical sans-serif bold capital h"), + :mbfsansI => UCMCommand("\\mbfsansI", '๐—œ', :mathalpha, "mathematical sans-serif bold capital i"), + :mbfsansJ => UCMCommand("\\mbfsansJ", '๐—', :mathalpha, "mathematical sans-serif bold capital j"), + :mbfsansK => UCMCommand("\\mbfsansK", '๐—ž', :mathalpha, "mathematical sans-serif bold capital k"), + :mbfsansL => UCMCommand("\\mbfsansL", '๐—Ÿ', :mathalpha, "mathematical sans-serif bold capital l"), + :mbfsansM => UCMCommand("\\mbfsansM", '๐— ', :mathalpha, "mathematical sans-serif bold capital m"), + :mbfsansN => UCMCommand("\\mbfsansN", '๐—ก', :mathalpha, "mathematical sans-serif bold capital n"), + :mbfsansO => UCMCommand("\\mbfsansO", '๐—ข', :mathalpha, "mathematical sans-serif bold capital o"), + :mbfsansP => UCMCommand("\\mbfsansP", '๐—ฃ', :mathalpha, "mathematical sans-serif bold capital p"), + :mbfsansQ => UCMCommand("\\mbfsansQ", '๐—ค', :mathalpha, "mathematical sans-serif bold capital q"), + :mbfsansR => UCMCommand("\\mbfsansR", '๐—ฅ', :mathalpha, "mathematical sans-serif bold capital r"), + :mbfsansS => UCMCommand("\\mbfsansS", '๐—ฆ', :mathalpha, "mathematical sans-serif bold capital s"), + :mbfsansT => UCMCommand("\\mbfsansT", '๐—ง', :mathalpha, "mathematical sans-serif bold capital t"), + :mbfsansU => UCMCommand("\\mbfsansU", '๐—จ', :mathalpha, "mathematical sans-serif bold capital u"), + :mbfsansV => UCMCommand("\\mbfsansV", '๐—ฉ', :mathalpha, "mathematical sans-serif bold capital v"), + :mbfsansW => UCMCommand("\\mbfsansW", '๐—ช', :mathalpha, "mathematical sans-serif bold capital w"), + :mbfsansX => UCMCommand("\\mbfsansX", '๐—ซ', :mathalpha, "mathematical sans-serif bold capital x"), + :mbfsansY => UCMCommand("\\mbfsansY", '๐—ฌ', :mathalpha, "mathematical sans-serif bold capital y"), + :mbfsansZ => UCMCommand("\\mbfsansZ", '๐—ญ', :mathalpha, "mathematical sans-serif bold capital z"), + :mbfsansa => UCMCommand("\\mbfsansa", '๐—ฎ', :mathalpha, "mathematical sans-serif bold small a"), + :mbfsansb => UCMCommand("\\mbfsansb", '๐—ฏ', :mathalpha, "mathematical sans-serif bold small b"), + :mbfsansc => UCMCommand("\\mbfsansc", '๐—ฐ', :mathalpha, "mathematical sans-serif bold small c"), + :mbfsansd => UCMCommand("\\mbfsansd", '๐—ฑ', :mathalpha, "mathematical sans-serif bold small d"), + :mbfsanse => UCMCommand("\\mbfsanse", '๐—ฒ', :mathalpha, "mathematical sans-serif bold small e"), + :mbfsansf => UCMCommand("\\mbfsansf", '๐—ณ', :mathalpha, "mathematical sans-serif bold small f"), + :mbfsansg => UCMCommand("\\mbfsansg", '๐—ด', :mathalpha, "mathematical sans-serif bold small g"), + :mbfsansh => UCMCommand("\\mbfsansh", '๐—ต', :mathalpha, "mathematical sans-serif bold small h"), + :mbfsansi => UCMCommand("\\mbfsansi", '๐—ถ', :mathalpha, "mathematical sans-serif bold small i"), + :mbfsansj => UCMCommand("\\mbfsansj", '๐—ท', :mathalpha, "mathematical sans-serif bold small j"), + :mbfsansk => UCMCommand("\\mbfsansk", '๐—ธ', :mathalpha, "mathematical sans-serif bold small k"), + :mbfsansl => UCMCommand("\\mbfsansl", '๐—น', :mathalpha, "mathematical sans-serif bold small l"), + :mbfsansm => UCMCommand("\\mbfsansm", '๐—บ', :mathalpha, "mathematical sans-serif bold small m"), + :mbfsansn => UCMCommand("\\mbfsansn", '๐—ป', :mathalpha, "mathematical sans-serif bold small n"), + :mbfsanso => UCMCommand("\\mbfsanso", '๐—ผ', :mathalpha, "mathematical sans-serif bold small o"), + :mbfsansp => UCMCommand("\\mbfsansp", '๐—ฝ', :mathalpha, "mathematical sans-serif bold small p"), + :mbfsansq => UCMCommand("\\mbfsansq", '๐—พ', :mathalpha, "mathematical sans-serif bold small q"), + :mbfsansr => UCMCommand("\\mbfsansr", '๐—ฟ', :mathalpha, "mathematical sans-serif bold small r"), + :mbfsanss => UCMCommand("\\mbfsanss", '๐˜€', :mathalpha, "mathematical sans-serif bold small s"), + :mbfsanst => UCMCommand("\\mbfsanst", '๐˜', :mathalpha, "mathematical sans-serif bold small t"), + :mbfsansu => UCMCommand("\\mbfsansu", '๐˜‚', :mathalpha, "mathematical sans-serif bold small u"), + :mbfsansv => UCMCommand("\\mbfsansv", '๐˜ƒ', :mathalpha, "mathematical sans-serif bold small v"), + :mbfsansw => UCMCommand("\\mbfsansw", '๐˜„', :mathalpha, "mathematical sans-serif bold small w"), + :mbfsansx => UCMCommand("\\mbfsansx", '๐˜…', :mathalpha, "mathematical sans-serif bold small x"), + :mbfsansy => UCMCommand("\\mbfsansy", '๐˜†', :mathalpha, "mathematical sans-serif bold small y"), + :mbfsansz => UCMCommand("\\mbfsansz", '๐˜‡', :mathalpha, "mathematical sans-serif bold small z"), + :mitsansA => UCMCommand("\\mitsansA", '๐˜ˆ', :mathalpha, "mathematical sans-serif italic capital a"), + :mitsansB => UCMCommand("\\mitsansB", '๐˜‰', :mathalpha, "mathematical sans-serif italic capital b"), + :mitsansC => UCMCommand("\\mitsansC", '๐˜Š', :mathalpha, "mathematical sans-serif italic capital c"), + :mitsansD => UCMCommand("\\mitsansD", '๐˜‹', :mathalpha, "mathematical sans-serif italic capital d"), + :mitsansE => UCMCommand("\\mitsansE", '๐˜Œ', :mathalpha, "mathematical sans-serif italic capital e"), + :mitsansF => UCMCommand("\\mitsansF", '๐˜', :mathalpha, "mathematical sans-serif italic capital f"), + :mitsansG => UCMCommand("\\mitsansG", '๐˜Ž', :mathalpha, "mathematical sans-serif italic capital g"), + :mitsansH => UCMCommand("\\mitsansH", '๐˜', :mathalpha, "mathematical sans-serif italic capital h"), + :mitsansI => UCMCommand("\\mitsansI", '๐˜', :mathalpha, "mathematical sans-serif italic capital i"), + :mitsansJ => UCMCommand("\\mitsansJ", '๐˜‘', :mathalpha, "mathematical sans-serif italic capital j"), + :mitsansK => UCMCommand("\\mitsansK", '๐˜’', :mathalpha, "mathematical sans-serif italic capital k"), + :mitsansL => UCMCommand("\\mitsansL", '๐˜“', :mathalpha, "mathematical sans-serif italic capital l"), + :mitsansM => UCMCommand("\\mitsansM", '๐˜”', :mathalpha, "mathematical sans-serif italic capital m"), + :mitsansN => UCMCommand("\\mitsansN", '๐˜•', :mathalpha, "mathematical sans-serif italic capital n"), + :mitsansO => UCMCommand("\\mitsansO", '๐˜–', :mathalpha, "mathematical sans-serif italic capital o"), + :mitsansP => UCMCommand("\\mitsansP", '๐˜—', :mathalpha, "mathematical sans-serif italic capital p"), + :mitsansQ => UCMCommand("\\mitsansQ", '๐˜˜', :mathalpha, "mathematical sans-serif italic capital q"), + :mitsansR => UCMCommand("\\mitsansR", '๐˜™', :mathalpha, "mathematical sans-serif italic capital r"), + :mitsansS => UCMCommand("\\mitsansS", '๐˜š', :mathalpha, "mathematical sans-serif italic capital s"), + :mitsansT => UCMCommand("\\mitsansT", '๐˜›', :mathalpha, "mathematical sans-serif italic capital t"), + :mitsansU => UCMCommand("\\mitsansU", '๐˜œ', :mathalpha, "mathematical sans-serif italic capital u"), + :mitsansV => UCMCommand("\\mitsansV", '๐˜', :mathalpha, "mathematical sans-serif italic capital v"), + :mitsansW => UCMCommand("\\mitsansW", '๐˜ž', :mathalpha, "mathematical sans-serif italic capital w"), + :mitsansX => UCMCommand("\\mitsansX", '๐˜Ÿ', :mathalpha, "mathematical sans-serif italic capital x"), + :mitsansY => UCMCommand("\\mitsansY", '๐˜ ', :mathalpha, "mathematical sans-serif italic capital y"), + :mitsansZ => UCMCommand("\\mitsansZ", '๐˜ก', :mathalpha, "mathematical sans-serif italic capital z"), + :mitsansa => UCMCommand("\\mitsansa", '๐˜ข', :mathalpha, "mathematical sans-serif italic small a"), + :mitsansb => UCMCommand("\\mitsansb", '๐˜ฃ', :mathalpha, "mathematical sans-serif italic small b"), + :mitsansc => UCMCommand("\\mitsansc", '๐˜ค', :mathalpha, "mathematical sans-serif italic small c"), + :mitsansd => UCMCommand("\\mitsansd", '๐˜ฅ', :mathalpha, "mathematical sans-serif italic small d"), + :mitsanse => UCMCommand("\\mitsanse", '๐˜ฆ', :mathalpha, "mathematical sans-serif italic small e"), + :mitsansf => UCMCommand("\\mitsansf", '๐˜ง', :mathalpha, "mathematical sans-serif italic small f"), + :mitsansg => UCMCommand("\\mitsansg", '๐˜จ', :mathalpha, "mathematical sans-serif italic small g"), + :mitsansh => UCMCommand("\\mitsansh", '๐˜ฉ', :mathalpha, "mathematical sans-serif italic small h"), + :mitsansi => UCMCommand("\\mitsansi", '๐˜ช', :mathalpha, "mathematical sans-serif italic small i"), + :mitsansj => UCMCommand("\\mitsansj", '๐˜ซ', :mathalpha, "mathematical sans-serif italic small j"), + :mitsansk => UCMCommand("\\mitsansk", '๐˜ฌ', :mathalpha, "mathematical sans-serif italic small k"), + :mitsansl => UCMCommand("\\mitsansl", '๐˜ญ', :mathalpha, "mathematical sans-serif italic small l"), + :mitsansm => UCMCommand("\\mitsansm", '๐˜ฎ', :mathalpha, "mathematical sans-serif italic small m"), + :mitsansn => UCMCommand("\\mitsansn", '๐˜ฏ', :mathalpha, "mathematical sans-serif italic small n"), + :mitsanso => UCMCommand("\\mitsanso", '๐˜ฐ', :mathalpha, "mathematical sans-serif italic small o"), + :mitsansp => UCMCommand("\\mitsansp", '๐˜ฑ', :mathalpha, "mathematical sans-serif italic small p"), + :mitsansq => UCMCommand("\\mitsansq", '๐˜ฒ', :mathalpha, "mathematical sans-serif italic small q"), + :mitsansr => UCMCommand("\\mitsansr", '๐˜ณ', :mathalpha, "mathematical sans-serif italic small r"), + :mitsanss => UCMCommand("\\mitsanss", '๐˜ด', :mathalpha, "mathematical sans-serif italic small s"), + :mitsanst => UCMCommand("\\mitsanst", '๐˜ต', :mathalpha, "mathematical sans-serif italic small t"), + :mitsansu => UCMCommand("\\mitsansu", '๐˜ถ', :mathalpha, "mathematical sans-serif italic small u"), + :mitsansv => UCMCommand("\\mitsansv", '๐˜ท', :mathalpha, "mathematical sans-serif italic small v"), + :mitsansw => UCMCommand("\\mitsansw", '๐˜ธ', :mathalpha, "mathematical sans-serif italic small w"), + :mitsansx => UCMCommand("\\mitsansx", '๐˜น', :mathalpha, "mathematical sans-serif italic small x"), + :mitsansy => UCMCommand("\\mitsansy", '๐˜บ', :mathalpha, "mathematical sans-serif italic small y"), + :mitsansz => UCMCommand("\\mitsansz", '๐˜ป', :mathalpha, "mathematical sans-serif italic small z"), + :mbfitsansA => UCMCommand("\\mbfitsansA", '๐˜ผ', :mathalpha, "mathematical sans-serif bold italic capital a"), + :mbfitsansB => UCMCommand("\\mbfitsansB", '๐˜ฝ', :mathalpha, "mathematical sans-serif bold italic capital b"), + :mbfitsansC => UCMCommand("\\mbfitsansC", '๐˜พ', :mathalpha, "mathematical sans-serif bold italic capital c"), + :mbfitsansD => UCMCommand("\\mbfitsansD", '๐˜ฟ', :mathalpha, "mathematical sans-serif bold italic capital d"), + :mbfitsansE => UCMCommand("\\mbfitsansE", '๐™€', :mathalpha, "mathematical sans-serif bold italic capital e"), + :mbfitsansF => UCMCommand("\\mbfitsansF", '๐™', :mathalpha, "mathematical sans-serif bold italic capital f"), + :mbfitsansG => UCMCommand("\\mbfitsansG", '๐™‚', :mathalpha, "mathematical sans-serif bold italic capital g"), + :mbfitsansH => UCMCommand("\\mbfitsansH", '๐™ƒ', :mathalpha, "mathematical sans-serif bold italic capital h"), + :mbfitsansI => UCMCommand("\\mbfitsansI", '๐™„', :mathalpha, "mathematical sans-serif bold italic capital i"), + :mbfitsansJ => UCMCommand("\\mbfitsansJ", '๐™…', :mathalpha, "mathematical sans-serif bold italic capital j"), + :mbfitsansK => UCMCommand("\\mbfitsansK", '๐™†', :mathalpha, "mathematical sans-serif bold italic capital k"), + :mbfitsansL => UCMCommand("\\mbfitsansL", '๐™‡', :mathalpha, "mathematical sans-serif bold italic capital l"), + :mbfitsansM => UCMCommand("\\mbfitsansM", '๐™ˆ', :mathalpha, "mathematical sans-serif bold italic capital m"), + :mbfitsansN => UCMCommand("\\mbfitsansN", '๐™‰', :mathalpha, "mathematical sans-serif bold italic capital n"), + :mbfitsansO => UCMCommand("\\mbfitsansO", '๐™Š', :mathalpha, "mathematical sans-serif bold italic capital o"), + :mbfitsansP => UCMCommand("\\mbfitsansP", '๐™‹', :mathalpha, "mathematical sans-serif bold italic capital p"), + :mbfitsansQ => UCMCommand("\\mbfitsansQ", '๐™Œ', :mathalpha, "mathematical sans-serif bold italic capital q"), + :mbfitsansR => UCMCommand("\\mbfitsansR", '๐™', :mathalpha, "mathematical sans-serif bold italic capital r"), + :mbfitsansS => UCMCommand("\\mbfitsansS", '๐™Ž', :mathalpha, "mathematical sans-serif bold italic capital s"), + :mbfitsansT => UCMCommand("\\mbfitsansT", '๐™', :mathalpha, "mathematical sans-serif bold italic capital t"), + :mbfitsansU => UCMCommand("\\mbfitsansU", '๐™', :mathalpha, "mathematical sans-serif bold italic capital u"), + :mbfitsansV => UCMCommand("\\mbfitsansV", '๐™‘', :mathalpha, "mathematical sans-serif bold italic capital v"), + :mbfitsansW => UCMCommand("\\mbfitsansW", '๐™’', :mathalpha, "mathematical sans-serif bold italic capital w"), + :mbfitsansX => UCMCommand("\\mbfitsansX", '๐™“', :mathalpha, "mathematical sans-serif bold italic capital x"), + :mbfitsansY => UCMCommand("\\mbfitsansY", '๐™”', :mathalpha, "mathematical sans-serif bold italic capital y"), + :mbfitsansZ => UCMCommand("\\mbfitsansZ", '๐™•', :mathalpha, "mathematical sans-serif bold italic capital z"), + :mbfitsansa => UCMCommand("\\mbfitsansa", '๐™–', :mathalpha, "mathematical sans-serif bold italic small a"), + :mbfitsansb => UCMCommand("\\mbfitsansb", '๐™—', :mathalpha, "mathematical sans-serif bold italic small b"), + :mbfitsansc => UCMCommand("\\mbfitsansc", '๐™˜', :mathalpha, "mathematical sans-serif bold italic small c"), + :mbfitsansd => UCMCommand("\\mbfitsansd", '๐™™', :mathalpha, "mathematical sans-serif bold italic small d"), + :mbfitsanse => UCMCommand("\\mbfitsanse", '๐™š', :mathalpha, "mathematical sans-serif bold italic small e"), + :mbfitsansf => UCMCommand("\\mbfitsansf", '๐™›', :mathalpha, "mathematical sans-serif bold italic small f"), + :mbfitsansg => UCMCommand("\\mbfitsansg", '๐™œ', :mathalpha, "mathematical sans-serif bold italic small g"), + :mbfitsansh => UCMCommand("\\mbfitsansh", '๐™', :mathalpha, "mathematical sans-serif bold italic small h"), + :mbfitsansi => UCMCommand("\\mbfitsansi", '๐™ž', :mathalpha, "mathematical sans-serif bold italic small i"), + :mbfitsansj => UCMCommand("\\mbfitsansj", '๐™Ÿ', :mathalpha, "mathematical sans-serif bold italic small j"), + :mbfitsansk => UCMCommand("\\mbfitsansk", '๐™ ', :mathalpha, "mathematical sans-serif bold italic small k"), + :mbfitsansl => UCMCommand("\\mbfitsansl", '๐™ก', :mathalpha, "mathematical sans-serif bold italic small l"), + :mbfitsansm => UCMCommand("\\mbfitsansm", '๐™ข', :mathalpha, "mathematical sans-serif bold italic small m"), + :mbfitsansn => UCMCommand("\\mbfitsansn", '๐™ฃ', :mathalpha, "mathematical sans-serif bold italic small n"), + :mbfitsanso => UCMCommand("\\mbfitsanso", '๐™ค', :mathalpha, "mathematical sans-serif bold italic small o"), + :mbfitsansp => UCMCommand("\\mbfitsansp", '๐™ฅ', :mathalpha, "mathematical sans-serif bold italic small p"), + :mbfitsansq => UCMCommand("\\mbfitsansq", '๐™ฆ', :mathalpha, "mathematical sans-serif bold italic small q"), + :mbfitsansr => UCMCommand("\\mbfitsansr", '๐™ง', :mathalpha, "mathematical sans-serif bold italic small r"), + :mbfitsanss => UCMCommand("\\mbfitsanss", '๐™จ', :mathalpha, "mathematical sans-serif bold italic small s"), + :mbfitsanst => UCMCommand("\\mbfitsanst", '๐™ฉ', :mathalpha, "mathematical sans-serif bold italic small t"), + :mbfitsansu => UCMCommand("\\mbfitsansu", '๐™ช', :mathalpha, "mathematical sans-serif bold italic small u"), + :mbfitsansv => UCMCommand("\\mbfitsansv", '๐™ซ', :mathalpha, "mathematical sans-serif bold italic small v"), + :mbfitsansw => UCMCommand("\\mbfitsansw", '๐™ฌ', :mathalpha, "mathematical sans-serif bold italic small w"), + :mbfitsansx => UCMCommand("\\mbfitsansx", '๐™ญ', :mathalpha, "mathematical sans-serif bold italic small x"), + :mbfitsansy => UCMCommand("\\mbfitsansy", '๐™ฎ', :mathalpha, "mathematical sans-serif bold italic small y"), + :mbfitsansz => UCMCommand("\\mbfitsansz", '๐™ฏ', :mathalpha, "mathematical sans-serif bold italic small z"), + :mttA => UCMCommand("\\mttA", '๐™ฐ', :mathalpha, "mathematical monospace capital a"), + :mttB => UCMCommand("\\mttB", '๐™ฑ', :mathalpha, "mathematical monospace capital b"), + :mttC => UCMCommand("\\mttC", '๐™ฒ', :mathalpha, "mathematical monospace capital c"), + :mttD => UCMCommand("\\mttD", '๐™ณ', :mathalpha, "mathematical monospace capital d"), + :mttE => UCMCommand("\\mttE", '๐™ด', :mathalpha, "mathematical monospace capital e"), + :mttF => UCMCommand("\\mttF", '๐™ต', :mathalpha, "mathematical monospace capital f"), + :mttG => UCMCommand("\\mttG", '๐™ถ', :mathalpha, "mathematical monospace capital g"), + :mttH => UCMCommand("\\mttH", '๐™ท', :mathalpha, "mathematical monospace capital h"), + :mttI => UCMCommand("\\mttI", '๐™ธ', :mathalpha, "mathematical monospace capital i"), + :mttJ => UCMCommand("\\mttJ", '๐™น', :mathalpha, "mathematical monospace capital j"), + :mttK => UCMCommand("\\mttK", '๐™บ', :mathalpha, "mathematical monospace capital k"), + :mttL => UCMCommand("\\mttL", '๐™ป', :mathalpha, "mathematical monospace capital l"), + :mttM => UCMCommand("\\mttM", '๐™ผ', :mathalpha, "mathematical monospace capital m"), + :mttN => UCMCommand("\\mttN", '๐™ฝ', :mathalpha, "mathematical monospace capital n"), + :mttO => UCMCommand("\\mttO", '๐™พ', :mathalpha, "mathematical monospace capital o"), + :mttP => UCMCommand("\\mttP", '๐™ฟ', :mathalpha, "mathematical monospace capital p"), + :mttQ => UCMCommand("\\mttQ", '๐š€', :mathalpha, "mathematical monospace capital q"), + :mttR => UCMCommand("\\mttR", '๐š', :mathalpha, "mathematical monospace capital r"), + :mttS => UCMCommand("\\mttS", '๐š‚', :mathalpha, "mathematical monospace capital s"), + :mttT => UCMCommand("\\mttT", '๐šƒ', :mathalpha, "mathematical monospace capital t"), + :mttU => UCMCommand("\\mttU", '๐š„', :mathalpha, "mathematical monospace capital u"), + :mttV => UCMCommand("\\mttV", '๐š…', :mathalpha, "mathematical monospace capital v"), + :mttW => UCMCommand("\\mttW", '๐š†', :mathalpha, "mathematical monospace capital w"), + :mttX => UCMCommand("\\mttX", '๐š‡', :mathalpha, "mathematical monospace capital x"), + :mttY => UCMCommand("\\mttY", '๐šˆ', :mathalpha, "mathematical monospace capital y"), + :mttZ => UCMCommand("\\mttZ", '๐š‰', :mathalpha, "mathematical monospace capital z"), + :mtta => UCMCommand("\\mtta", '๐šŠ', :mathalpha, "mathematical monospace small a"), + :mttb => UCMCommand("\\mttb", '๐š‹', :mathalpha, "mathematical monospace small b"), + :mttc => UCMCommand("\\mttc", '๐šŒ', :mathalpha, "mathematical monospace small c"), + :mttd => UCMCommand("\\mttd", '๐š', :mathalpha, "mathematical monospace small d"), + :mtte => UCMCommand("\\mtte", '๐šŽ', :mathalpha, "mathematical monospace small e"), + :mttf => UCMCommand("\\mttf", '๐š', :mathalpha, "mathematical monospace small f"), + :mttg => UCMCommand("\\mttg", '๐š', :mathalpha, "mathematical monospace small g"), + :mtth => UCMCommand("\\mtth", '๐š‘', :mathalpha, "mathematical monospace small h"), + :mtti => UCMCommand("\\mtti", '๐š’', :mathalpha, "mathematical monospace small i"), + :mttj => UCMCommand("\\mttj", '๐š“', :mathalpha, "mathematical monospace small j"), + :mttk => UCMCommand("\\mttk", '๐š”', :mathalpha, "mathematical monospace small k"), + :mttl => UCMCommand("\\mttl", '๐š•', :mathalpha, "mathematical monospace small l"), + :mttm => UCMCommand("\\mttm", '๐š–', :mathalpha, "mathematical monospace small m"), + :mttn => UCMCommand("\\mttn", '๐š—', :mathalpha, "mathematical monospace small n"), + :mtto => UCMCommand("\\mtto", '๐š˜', :mathalpha, "mathematical monospace small o"), + :mttp => UCMCommand("\\mttp", '๐š™', :mathalpha, "mathematical monospace small p"), + :mttq => UCMCommand("\\mttq", '๐šš', :mathalpha, "mathematical monospace small q"), + :mttr => UCMCommand("\\mttr", '๐š›', :mathalpha, "mathematical monospace small r"), + :mtts => UCMCommand("\\mtts", '๐šœ', :mathalpha, "mathematical monospace small s"), + :mttt => UCMCommand("\\mttt", '๐š', :mathalpha, "mathematical monospace small t"), + :mttu => UCMCommand("\\mttu", '๐šž', :mathalpha, "mathematical monospace small u"), + :mttv => UCMCommand("\\mttv", '๐šŸ', :mathalpha, "mathematical monospace small v"), + :mttw => UCMCommand("\\mttw", '๐š ', :mathalpha, "mathematical monospace small w"), + :mttx => UCMCommand("\\mttx", '๐šก', :mathalpha, "mathematical monospace small x"), + :mtty => UCMCommand("\\mtty", '๐šข', :mathalpha, "mathematical monospace small y"), + :mttz => UCMCommand("\\mttz", '๐šฃ', :mathalpha, "mathematical monospace small z"), + :imath => UCMCommand("\\imath", '๐šค', :mathalpha, "mathematical italic small dotless i"), + :jmath => UCMCommand("\\jmath", '๐šฅ', :mathalpha, "mathematical italic small dotless j"), + :mbfAlpha => UCMCommand("\\mbfAlpha", '๐šจ', :mathalpha, "mathematical bold capital alpha"), + :mbfBeta => UCMCommand("\\mbfBeta", '๐šฉ', :mathalpha, "mathematical bold capital beta"), + :mbfGamma => UCMCommand("\\mbfGamma", '๐šช', :mathalpha, "mathematical bold capital gamma"), + :mbfDelta => UCMCommand("\\mbfDelta", '๐šซ', :mathalpha, "mathematical bold capital delta"), + :mbfEpsilon => UCMCommand("\\mbfEpsilon", '๐šฌ', :mathalpha, "mathematical bold capital epsilon"), + :mbfZeta => UCMCommand("\\mbfZeta", '๐šญ', :mathalpha, "mathematical bold capital zeta"), + :mbfEta => UCMCommand("\\mbfEta", '๐šฎ', :mathalpha, "mathematical bold capital eta"), + :mbfTheta => UCMCommand("\\mbfTheta", '๐šฏ', :mathalpha, "mathematical bold capital theta"), + :mbfIota => UCMCommand("\\mbfIota", '๐šฐ', :mathalpha, "mathematical bold capital iota"), + :mbfKappa => UCMCommand("\\mbfKappa", '๐šฑ', :mathalpha, "mathematical bold capital kappa"), + :mbfLambda => UCMCommand("\\mbfLambda", '๐šฒ', :mathalpha, "mathematical bold capital lambda"), + :mbfMu => UCMCommand("\\mbfMu", '๐šณ', :mathalpha, "mathematical bold capital mu"), + :mbfNu => UCMCommand("\\mbfNu", '๐šด', :mathalpha, "mathematical bold capital nu"), + :mbfXi => UCMCommand("\\mbfXi", '๐šต', :mathalpha, "mathematical bold capital xi"), + :mbfOmicron => UCMCommand("\\mbfOmicron", '๐šถ', :mathalpha, "mathematical bold capital omicron"), + :mbfPi => UCMCommand("\\mbfPi", '๐šท', :mathalpha, "mathematical bold capital pi"), + :mbfRho => UCMCommand("\\mbfRho", '๐šธ', :mathalpha, "mathematical bold capital rho"), + :mbfvarTheta => UCMCommand("\\mbfvarTheta", '๐šน', :mathalpha, "mathematical bold capital theta symbol"), + :mbfSigma => UCMCommand("\\mbfSigma", '๐šบ', :mathalpha, "mathematical bold capital sigma"), + :mbfTau => UCMCommand("\\mbfTau", '๐šป', :mathalpha, "mathematical bold capital tau"), + :mbfUpsilon => UCMCommand("\\mbfUpsilon", '๐šผ', :mathalpha, "mathematical bold capital upsilon"), + :mbfPhi => UCMCommand("\\mbfPhi", '๐šฝ', :mathalpha, "mathematical bold capital phi"), + :mbfChi => UCMCommand("\\mbfChi", '๐šพ', :mathalpha, "mathematical bold capital chi"), + :mbfPsi => UCMCommand("\\mbfPsi", '๐šฟ', :mathalpha, "mathematical bold capital psi"), + :mbfOmega => UCMCommand("\\mbfOmega", '๐›€', :mathalpha, "mathematical bold capital omega"), + :mbfnabla => UCMCommand("\\mbfnabla", '๐›', :mathalpha, "mathematical bold nabla"), + :mbfalpha => UCMCommand("\\mbfalpha", '๐›‚', :mathalpha, "mathematical bold small alpha"), + :mbfbeta => UCMCommand("\\mbfbeta", '๐›ƒ', :mathalpha, "mathematical bold small beta"), + :mbfgamma => UCMCommand("\\mbfgamma", '๐›„', :mathalpha, "mathematical bold small gamma"), + :mbfdelta => UCMCommand("\\mbfdelta", '๐›…', :mathalpha, "mathematical bold small delta"), + :mbfvarepsilon => UCMCommand("\\mbfvarepsilon", '๐›†', :mathalpha, "mathematical bold small varepsilon"), + :mbfzeta => UCMCommand("\\mbfzeta", '๐›‡', :mathalpha, "mathematical bold small zeta"), + :mbfeta => UCMCommand("\\mbfeta", '๐›ˆ', :mathalpha, "mathematical bold small eta"), + :mbftheta => UCMCommand("\\mbftheta", '๐›‰', :mathalpha, "mathematical bold small theta"), + :mbfiota => UCMCommand("\\mbfiota", '๐›Š', :mathalpha, "mathematical bold small iota"), + :mbfkappa => UCMCommand("\\mbfkappa", '๐›‹', :mathalpha, "mathematical bold small kappa"), + :mbflambda => UCMCommand("\\mbflambda", '๐›Œ', :mathalpha, "mathematical bold small lambda"), + :mbfmu => UCMCommand("\\mbfmu", '๐›', :mathalpha, "mathematical bold small mu"), + :mbfnu => UCMCommand("\\mbfnu", '๐›Ž', :mathalpha, "mathematical bold small nu"), + :mbfxi => UCMCommand("\\mbfxi", '๐›', :mathalpha, "mathematical bold small xi"), + :mbfomicron => UCMCommand("\\mbfomicron", '๐›', :mathalpha, "mathematical bold small omicron"), + :mbfpi => UCMCommand("\\mbfpi", '๐›‘', :mathalpha, "mathematical bold small pi"), + :mbfrho => UCMCommand("\\mbfrho", '๐›’', :mathalpha, "mathematical bold small rho"), + :mbfvarsigma => UCMCommand("\\mbfvarsigma", '๐›“', :mathalpha, "mathematical bold small final sigma"), + :mbfsigma => UCMCommand("\\mbfsigma", '๐›”', :mathalpha, "mathematical bold small sigma"), + :mbftau => UCMCommand("\\mbftau", '๐›•', :mathalpha, "mathematical bold small tau"), + :mbfupsilon => UCMCommand("\\mbfupsilon", '๐›–', :mathalpha, "mathematical bold small upsilon"), + :mbfvarphi => UCMCommand("\\mbfvarphi", '๐›—', :mathalpha, "mathematical bold small phi"), + :mbfchi => UCMCommand("\\mbfchi", '๐›˜', :mathalpha, "mathematical bold small chi"), + :mbfpsi => UCMCommand("\\mbfpsi", '๐›™', :mathalpha, "mathematical bold small psi"), + :mbfomega => UCMCommand("\\mbfomega", '๐›š', :mathalpha, "mathematical bold small omega"), + :mbfpartial => UCMCommand("\\mbfpartial", '๐››', :mathalpha, "mathematical bold partial differential"), + :mbfepsilon => UCMCommand("\\mbfepsilon", '๐›œ', :mathalpha, "mathematical bold varepsilon symbol"), + :mbfvartheta => UCMCommand("\\mbfvartheta", '๐›', :mathalpha, "mathematical bold theta symbol"), + :mbfvarkappa => UCMCommand("\\mbfvarkappa", '๐›ž', :mathalpha, "mathematical bold kappa symbol"), + :mbfphi => UCMCommand("\\mbfphi", '๐›Ÿ', :mathalpha, "mathematical bold phi symbol"), + :mbfvarrho => UCMCommand("\\mbfvarrho", '๐› ', :mathalpha, "mathematical bold rho symbol"), + :mbfvarpi => UCMCommand("\\mbfvarpi", '๐›ก', :mathalpha, "mathematical bold pi symbol"), + :mitAlpha => UCMCommand("\\mitAlpha", '๐›ข', :mathalpha, "mathematical italic capital alpha"), + :mitBeta => UCMCommand("\\mitBeta", '๐›ฃ', :mathalpha, "mathematical italic capital beta"), + :mitGamma => UCMCommand("\\mitGamma", '๐›ค', :mathalpha, "mathematical italic capital gamma"), + :mitDelta => UCMCommand("\\mitDelta", '๐›ฅ', :mathalpha, "mathematical italic capital delta"), + :mitEpsilon => UCMCommand("\\mitEpsilon", '๐›ฆ', :mathalpha, "mathematical italic capital epsilon"), + :mitZeta => UCMCommand("\\mitZeta", '๐›ง', :mathalpha, "mathematical italic capital zeta"), + :mitEta => UCMCommand("\\mitEta", '๐›จ', :mathalpha, "mathematical italic capital eta"), + :mitTheta => UCMCommand("\\mitTheta", '๐›ฉ', :mathalpha, "mathematical italic capital theta"), + :mitIota => UCMCommand("\\mitIota", '๐›ช', :mathalpha, "mathematical italic capital iota"), + :mitKappa => UCMCommand("\\mitKappa", '๐›ซ', :mathalpha, "mathematical italic capital kappa"), + :mitLambda => UCMCommand("\\mitLambda", '๐›ฌ', :mathalpha, "mathematical italic capital lambda"), + :mitMu => UCMCommand("\\mitMu", '๐›ญ', :mathalpha, "mathematical italic capital mu"), + :mitNu => UCMCommand("\\mitNu", '๐›ฎ', :mathalpha, "mathematical italic capital nu"), + :mitXi => UCMCommand("\\mitXi", '๐›ฏ', :mathalpha, "mathematical italic capital xi"), + :mitOmicron => UCMCommand("\\mitOmicron", '๐›ฐ', :mathalpha, "mathematical italic capital omicron"), + :mitPi => UCMCommand("\\mitPi", '๐›ฑ', :mathalpha, "mathematical italic capital pi"), + :mitRho => UCMCommand("\\mitRho", '๐›ฒ', :mathalpha, "mathematical italic capital rho"), + :mitvarTheta => UCMCommand("\\mitvarTheta", '๐›ณ', :mathalpha, "mathematical italic capital theta symbol"), + :mitSigma => UCMCommand("\\mitSigma", '๐›ด', :mathalpha, "mathematical italic capital sigma"), + :mitTau => UCMCommand("\\mitTau", '๐›ต', :mathalpha, "mathematical italic capital tau"), + :mitUpsilon => UCMCommand("\\mitUpsilon", '๐›ถ', :mathalpha, "mathematical italic capital upsilon"), + :mitPhi => UCMCommand("\\mitPhi", '๐›ท', :mathalpha, "mathematical italic capital phi"), + :mitChi => UCMCommand("\\mitChi", '๐›ธ', :mathalpha, "mathematical italic capital chi"), + :mitPsi => UCMCommand("\\mitPsi", '๐›น', :mathalpha, "mathematical italic capital psi"), + :mitOmega => UCMCommand("\\mitOmega", '๐›บ', :mathalpha, "mathematical italic capital omega"), + :mitnabla => UCMCommand("\\mitnabla", '๐›ป', :mathalpha, "mathematical italic nabla"), + :mitalpha => UCMCommand("\\mitalpha", '๐›ผ', :mathalpha, "mathematical italic small alpha"), + :mitbeta => UCMCommand("\\mitbeta", '๐›ฝ', :mathalpha, "mathematical italic small beta"), + :mitgamma => UCMCommand("\\mitgamma", '๐›พ', :mathalpha, "mathematical italic small gamma"), + :mitdelta => UCMCommand("\\mitdelta", '๐›ฟ', :mathalpha, "mathematical italic small delta"), + :mitvarepsilon => UCMCommand("\\mitvarepsilon", '๐œ€', :mathalpha, "mathematical italic small varepsilon"), + :mitzeta => UCMCommand("\\mitzeta", '๐œ', :mathalpha, "mathematical italic small zeta"), + :miteta => UCMCommand("\\miteta", '๐œ‚', :mathalpha, "mathematical italic small eta"), + :mittheta => UCMCommand("\\mittheta", '๐œƒ', :mathalpha, "mathematical italic small theta"), + :mitiota => UCMCommand("\\mitiota", '๐œ„', :mathalpha, "mathematical italic small iota"), + :mitkappa => UCMCommand("\\mitkappa", '๐œ…', :mathalpha, "mathematical italic small kappa"), + :mitlambda => UCMCommand("\\mitlambda", '๐œ†', :mathalpha, "mathematical italic small lambda"), + :mitmu => UCMCommand("\\mitmu", '๐œ‡', :mathalpha, "mathematical italic small mu"), + :mitnu => UCMCommand("\\mitnu", '๐œˆ', :mathalpha, "mathematical italic small nu"), + :mitxi => UCMCommand("\\mitxi", '๐œ‰', :mathalpha, "mathematical italic small xi"), + :mitomicron => UCMCommand("\\mitomicron", '๐œŠ', :mathalpha, "mathematical italic small omicron"), + :mitpi => UCMCommand("\\mitpi", '๐œ‹', :mathalpha, "mathematical italic small pi"), + :mitrho => UCMCommand("\\mitrho", '๐œŒ', :mathalpha, "mathematical italic small rho"), + :mitvarsigma => UCMCommand("\\mitvarsigma", '๐œ', :mathalpha, "mathematical italic small final sigma"), + :mitsigma => UCMCommand("\\mitsigma", '๐œŽ', :mathalpha, "mathematical italic small sigma"), + :mittau => UCMCommand("\\mittau", '๐œ', :mathalpha, "mathematical italic small tau"), + :mitupsilon => UCMCommand("\\mitupsilon", '๐œ', :mathalpha, "mathematical italic small upsilon"), + :mitvarphi => UCMCommand("\\mitvarphi", '๐œ‘', :mathalpha, "mathematical italic small phi"), + :mitchi => UCMCommand("\\mitchi", '๐œ’', :mathalpha, "mathematical italic small chi"), + :mitpsi => UCMCommand("\\mitpsi", '๐œ“', :mathalpha, "mathematical italic small psi"), + :mitomega => UCMCommand("\\mitomega", '๐œ”', :mathalpha, "mathematical italic small omega"), + :mitpartial => UCMCommand("\\mitpartial", '๐œ•', :mathalpha, "mathematical italic partial differential"), + :mitepsilon => UCMCommand("\\mitepsilon", '๐œ–', :mathalpha, "mathematical italic varepsilon symbol"), + :mitvartheta => UCMCommand("\\mitvartheta", '๐œ—', :mathalpha, "mathematical italic theta symbol"), + :mitvarkappa => UCMCommand("\\mitvarkappa", '๐œ˜', :mathalpha, "mathematical italic kappa symbol"), + :mitphi => UCMCommand("\\mitphi", '๐œ™', :mathalpha, "mathematical italic phi symbol"), + :mitvarrho => UCMCommand("\\mitvarrho", '๐œš', :mathalpha, "mathematical italic rho symbol"), + :mitvarpi => UCMCommand("\\mitvarpi", '๐œ›', :mathalpha, "mathematical italic pi symbol"), + :mbfitAlpha => UCMCommand("\\mbfitAlpha", '๐œœ', :mathalpha, "mathematical bold italic capital alpha"), + :mbfitBeta => UCMCommand("\\mbfitBeta", '๐œ', :mathalpha, "mathematical bold italic capital beta"), + :mbfitGamma => UCMCommand("\\mbfitGamma", '๐œž', :mathalpha, "mathematical bold italic capital gamma"), + :mbfitDelta => UCMCommand("\\mbfitDelta", '๐œŸ', :mathalpha, "mathematical bold italic capital delta"), + :mbfitEpsilon => UCMCommand("\\mbfitEpsilon", '๐œ ', :mathalpha, "mathematical bold italic capital epsilon"), + :mbfitZeta => UCMCommand("\\mbfitZeta", '๐œก', :mathalpha, "mathematical bold italic capital zeta"), + :mbfitEta => UCMCommand("\\mbfitEta", '๐œข', :mathalpha, "mathematical bold italic capital eta"), + :mbfitTheta => UCMCommand("\\mbfitTheta", '๐œฃ', :mathalpha, "mathematical bold italic capital theta"), + :mbfitIota => UCMCommand("\\mbfitIota", '๐œค', :mathalpha, "mathematical bold italic capital iota"), + :mbfitKappa => UCMCommand("\\mbfitKappa", '๐œฅ', :mathalpha, "mathematical bold italic capital kappa"), + :mbfitLambda => UCMCommand("\\mbfitLambda", '๐œฆ', :mathalpha, "mathematical bold italic capital lambda"), + :mbfitMu => UCMCommand("\\mbfitMu", '๐œง', :mathalpha, "mathematical bold italic capital mu"), + :mbfitNu => UCMCommand("\\mbfitNu", '๐œจ', :mathalpha, "mathematical bold italic capital nu"), + :mbfitXi => UCMCommand("\\mbfitXi", '๐œฉ', :mathalpha, "mathematical bold italic capital xi"), + :mbfitOmicron => UCMCommand("\\mbfitOmicron", '๐œช', :mathalpha, "mathematical bold italic capital omicron"), + :mbfitPi => UCMCommand("\\mbfitPi", '๐œซ', :mathalpha, "mathematical bold italic capital pi"), + :mbfitRho => UCMCommand("\\mbfitRho", '๐œฌ', :mathalpha, "mathematical bold italic capital rho"), + :mbfitvarTheta => UCMCommand("\\mbfitvarTheta", '๐œญ', :mathalpha, "mathematical bold italic capital theta symbol"), + :mbfitSigma => UCMCommand("\\mbfitSigma", '๐œฎ', :mathalpha, "mathematical bold italic capital sigma"), + :mbfitTau => UCMCommand("\\mbfitTau", '๐œฏ', :mathalpha, "mathematical bold italic capital tau"), + :mbfitUpsilon => UCMCommand("\\mbfitUpsilon", '๐œฐ', :mathalpha, "mathematical bold italic capital upsilon"), + :mbfitPhi => UCMCommand("\\mbfitPhi", '๐œฑ', :mathalpha, "mathematical bold italic capital phi"), + :mbfitChi => UCMCommand("\\mbfitChi", '๐œฒ', :mathalpha, "mathematical bold italic capital chi"), + :mbfitPsi => UCMCommand("\\mbfitPsi", '๐œณ', :mathalpha, "mathematical bold italic capital psi"), + :mbfitOmega => UCMCommand("\\mbfitOmega", '๐œด', :mathalpha, "mathematical bold italic capital omega"), + :mbfitnabla => UCMCommand("\\mbfitnabla", '๐œต', :mathalpha, "mathematical bold italic nabla"), + :mbfitalpha => UCMCommand("\\mbfitalpha", '๐œถ', :mathalpha, "mathematical bold italic small alpha"), + :mbfitbeta => UCMCommand("\\mbfitbeta", '๐œท', :mathalpha, "mathematical bold italic small beta"), + :mbfitgamma => UCMCommand("\\mbfitgamma", '๐œธ', :mathalpha, "mathematical bold italic small gamma"), + :mbfitdelta => UCMCommand("\\mbfitdelta", '๐œน', :mathalpha, "mathematical bold italic small delta"), + :mbfitvarepsilon => UCMCommand("\\mbfitvarepsilon", '๐œบ', :mathalpha, "mathematical bold italic small varepsilon"), + :mbfitzeta => UCMCommand("\\mbfitzeta", '๐œป', :mathalpha, "mathematical bold italic small zeta"), + :mbfiteta => UCMCommand("\\mbfiteta", '๐œผ', :mathalpha, "mathematical bold italic small eta"), + :mbfittheta => UCMCommand("\\mbfittheta", '๐œฝ', :mathalpha, "mathematical bold italic small theta"), + :mbfitiota => UCMCommand("\\mbfitiota", '๐œพ', :mathalpha, "mathematical bold italic small iota"), + :mbfitkappa => UCMCommand("\\mbfitkappa", '๐œฟ', :mathalpha, "mathematical bold italic small kappa"), + :mbfitlambda => UCMCommand("\\mbfitlambda", '๐€', :mathalpha, "mathematical bold italic small lambda"), + :mbfitmu => UCMCommand("\\mbfitmu", '๐', :mathalpha, "mathematical bold italic small mu"), + :mbfitnu => UCMCommand("\\mbfitnu", '๐‚', :mathalpha, "mathematical bold italic small nu"), + :mbfitxi => UCMCommand("\\mbfitxi", '๐ƒ', :mathalpha, "mathematical bold italic small xi"), + :mbfitomicron => UCMCommand("\\mbfitomicron", '๐„', :mathalpha, "mathematical bold italic small omicron"), + :mbfitpi => UCMCommand("\\mbfitpi", '๐…', :mathalpha, "mathematical bold italic small pi"), + :mbfitrho => UCMCommand("\\mbfitrho", '๐†', :mathalpha, "mathematical bold italic small rho"), + :mbfitvarsigma => UCMCommand("\\mbfitvarsigma", '๐‡', :mathalpha, "mathematical bold italic small final sigma"), + :mbfitsigma => UCMCommand("\\mbfitsigma", '๐ˆ', :mathalpha, "mathematical bold italic small sigma"), + :mbfittau => UCMCommand("\\mbfittau", '๐‰', :mathalpha, "mathematical bold italic small tau"), + :mbfitupsilon => UCMCommand("\\mbfitupsilon", '๐Š', :mathalpha, "mathematical bold italic small upsilon"), + :mbfitvarphi => UCMCommand("\\mbfitvarphi", '๐‹', :mathalpha, "mathematical bold italic small phi"), + :mbfitchi => UCMCommand("\\mbfitchi", '๐Œ', :mathalpha, "mathematical bold italic small chi"), + :mbfitpsi => UCMCommand("\\mbfitpsi", '๐', :mathalpha, "mathematical bold italic small psi"), + :mbfitomega => UCMCommand("\\mbfitomega", '๐Ž', :mathalpha, "mathematical bold italic small omega"), + :mbfitpartial => UCMCommand("\\mbfitpartial", '๐', :mathalpha, "mathematical bold italic partial differential"), + :mbfitepsilon => UCMCommand("\\mbfitepsilon", '๐', :mathalpha, "mathematical bold italic varepsilon symbol"), + :mbfitvartheta => UCMCommand("\\mbfitvartheta", '๐‘', :mathalpha, "mathematical bold italic theta symbol"), + :mbfitvarkappa => UCMCommand("\\mbfitvarkappa", '๐’', :mathalpha, "mathematical bold italic kappa symbol"), + :mbfitphi => UCMCommand("\\mbfitphi", '๐“', :mathalpha, "mathematical bold italic phi symbol"), + :mbfitvarrho => UCMCommand("\\mbfitvarrho", '๐”', :mathalpha, "mathematical bold italic rho symbol"), + :mbfitvarpi => UCMCommand("\\mbfitvarpi", '๐•', :mathalpha, "mathematical bold italic pi symbol"), + :mbfsansAlpha => UCMCommand("\\mbfsansAlpha", '๐–', :mathalpha, "mathematical sans-serif bold capital alpha"), + :mbfsansBeta => UCMCommand("\\mbfsansBeta", '๐—', :mathalpha, "mathematical sans-serif bold capital beta"), + :mbfsansGamma => UCMCommand("\\mbfsansGamma", '๐˜', :mathalpha, "mathematical sans-serif bold capital gamma"), + :mbfsansDelta => UCMCommand("\\mbfsansDelta", '๐™', :mathalpha, "mathematical sans-serif bold capital delta"), + :mbfsansEpsilon => UCMCommand("\\mbfsansEpsilon", '๐š', :mathalpha, "mathematical sans-serif bold capital epsilon"), + :mbfsansZeta => UCMCommand("\\mbfsansZeta", '๐›', :mathalpha, "mathematical sans-serif bold capital zeta"), + :mbfsansEta => UCMCommand("\\mbfsansEta", '๐œ', :mathalpha, "mathematical sans-serif bold capital eta"), + :mbfsansTheta => UCMCommand("\\mbfsansTheta", '๐', :mathalpha, "mathematical sans-serif bold capital theta"), + :mbfsansIota => UCMCommand("\\mbfsansIota", '๐ž', :mathalpha, "mathematical sans-serif bold capital iota"), + :mbfsansKappa => UCMCommand("\\mbfsansKappa", '๐Ÿ', :mathalpha, "mathematical sans-serif bold capital kappa"), + :mbfsansLambda => UCMCommand("\\mbfsansLambda", '๐ ', :mathalpha, "mathematical sans-serif bold capital lambda"), + :mbfsansMu => UCMCommand("\\mbfsansMu", '๐ก', :mathalpha, "mathematical sans-serif bold capital mu"), + :mbfsansNu => UCMCommand("\\mbfsansNu", '๐ข', :mathalpha, "mathematical sans-serif bold capital nu"), + :mbfsansXi => UCMCommand("\\mbfsansXi", '๐ฃ', :mathalpha, "mathematical sans-serif bold capital xi"), + :mbfsansOmicron => UCMCommand("\\mbfsansOmicron", '๐ค', :mathalpha, "mathematical sans-serif bold capital omicron"), + :mbfsansPi => UCMCommand("\\mbfsansPi", '๐ฅ', :mathalpha, "mathematical sans-serif bold capital pi"), + :mbfsansRho => UCMCommand("\\mbfsansRho", '๐ฆ', :mathalpha, "mathematical sans-serif bold capital rho"), + :mbfsansvarTheta => UCMCommand("\\mbfsansvarTheta", '๐ง', :mathalpha, "mathematical sans-serif bold capital theta symbol"), + :mbfsansSigma => UCMCommand("\\mbfsansSigma", '๐จ', :mathalpha, "mathematical sans-serif bold capital sigma"), + :mbfsansTau => UCMCommand("\\mbfsansTau", '๐ฉ', :mathalpha, "mathematical sans-serif bold capital tau"), + :mbfsansUpsilon => UCMCommand("\\mbfsansUpsilon", '๐ช', :mathalpha, "mathematical sans-serif bold capital upsilon"), + :mbfsansPhi => UCMCommand("\\mbfsansPhi", '๐ซ', :mathalpha, "mathematical sans-serif bold capital phi"), + :mbfsansChi => UCMCommand("\\mbfsansChi", '๐ฌ', :mathalpha, "mathematical sans-serif bold capital chi"), + :mbfsansPsi => UCMCommand("\\mbfsansPsi", '๐ญ', :mathalpha, "mathematical sans-serif bold capital psi"), + :mbfsansOmega => UCMCommand("\\mbfsansOmega", '๐ฎ', :mathalpha, "mathematical sans-serif bold capital omega"), + :mbfsansnabla => UCMCommand("\\mbfsansnabla", '๐ฏ', :mathalpha, "mathematical sans-serif bold nabla"), + :mbfsansalpha => UCMCommand("\\mbfsansalpha", '๐ฐ', :mathalpha, "mathematical sans-serif bold small alpha"), + :mbfsansbeta => UCMCommand("\\mbfsansbeta", '๐ฑ', :mathalpha, "mathematical sans-serif bold small beta"), + :mbfsansgamma => UCMCommand("\\mbfsansgamma", '๐ฒ', :mathalpha, "mathematical sans-serif bold small gamma"), + :mbfsansdelta => UCMCommand("\\mbfsansdelta", '๐ณ', :mathalpha, "mathematical sans-serif bold small delta"), + :mbfsansvarepsilon => UCMCommand("\\mbfsansvarepsilon", '๐ด', :mathalpha, "mathematical sans-serif bold small varepsilon"), + :mbfsanszeta => UCMCommand("\\mbfsanszeta", '๐ต', :mathalpha, "mathematical sans-serif bold small zeta"), + :mbfsanseta => UCMCommand("\\mbfsanseta", '๐ถ', :mathalpha, "mathematical sans-serif bold small eta"), + :mbfsanstheta => UCMCommand("\\mbfsanstheta", '๐ท', :mathalpha, "mathematical sans-serif bold small theta"), + :mbfsansiota => UCMCommand("\\mbfsansiota", '๐ธ', :mathalpha, "mathematical sans-serif bold small iota"), + :mbfsanskappa => UCMCommand("\\mbfsanskappa", '๐น', :mathalpha, "mathematical sans-serif bold small kappa"), + :mbfsanslambda => UCMCommand("\\mbfsanslambda", '๐บ', :mathalpha, "mathematical sans-serif bold small lambda"), + :mbfsansmu => UCMCommand("\\mbfsansmu", '๐ป', :mathalpha, "mathematical sans-serif bold small mu"), + :mbfsansnu => UCMCommand("\\mbfsansnu", '๐ผ', :mathalpha, "mathematical sans-serif bold small nu"), + :mbfsansxi => UCMCommand("\\mbfsansxi", '๐ฝ', :mathalpha, "mathematical sans-serif bold small xi"), + :mbfsansomicron => UCMCommand("\\mbfsansomicron", '๐พ', :mathalpha, "mathematical sans-serif bold small omicron"), + :mbfsanspi => UCMCommand("\\mbfsanspi", '๐ฟ', :mathalpha, "mathematical sans-serif bold small pi"), + :mbfsansrho => UCMCommand("\\mbfsansrho", '๐ž€', :mathalpha, "mathematical sans-serif bold small rho"), + :mbfsansvarsigma => UCMCommand("\\mbfsansvarsigma", '๐ž', :mathalpha, "mathematical sans-serif bold small final sigma"), + :mbfsanssigma => UCMCommand("\\mbfsanssigma", '๐ž‚', :mathalpha, "mathematical sans-serif bold small sigma"), + :mbfsanstau => UCMCommand("\\mbfsanstau", '๐žƒ', :mathalpha, "mathematical sans-serif bold small tau"), + :mbfsansupsilon => UCMCommand("\\mbfsansupsilon", '๐ž„', :mathalpha, "mathematical sans-serif bold small upsilon"), + :mbfsansvarphi => UCMCommand("\\mbfsansvarphi", '๐ž…', :mathalpha, "mathematical sans-serif bold small phi"), + :mbfsanschi => UCMCommand("\\mbfsanschi", '๐ž†', :mathalpha, "mathematical sans-serif bold small chi"), + :mbfsanspsi => UCMCommand("\\mbfsanspsi", '๐ž‡', :mathalpha, "mathematical sans-serif bold small psi"), + :mbfsansomega => UCMCommand("\\mbfsansomega", '๐žˆ', :mathalpha, "mathematical sans-serif bold small omega"), + :mbfsanspartial => UCMCommand("\\mbfsanspartial", '๐ž‰', :mathalpha, "mathematical sans-serif bold partial differential"), + :mbfsansepsilon => UCMCommand("\\mbfsansepsilon", '๐žŠ', :mathalpha, "mathematical sans-serif bold varepsilon symbol"), + :mbfsansvartheta => UCMCommand("\\mbfsansvartheta", '๐ž‹', :mathalpha, "mathematical sans-serif bold theta symbol"), + :mbfsansvarkappa => UCMCommand("\\mbfsansvarkappa", '๐žŒ', :mathalpha, "mathematical sans-serif bold kappa symbol"), + :mbfsansphi => UCMCommand("\\mbfsansphi", '๐ž', :mathalpha, "mathematical sans-serif bold phi symbol"), + :mbfsansvarrho => UCMCommand("\\mbfsansvarrho", '๐žŽ', :mathalpha, "mathematical sans-serif bold rho symbol"), + :mbfsansvarpi => UCMCommand("\\mbfsansvarpi", '๐ž', :mathalpha, "mathematical sans-serif bold pi symbol"), + :mbfitsansAlpha => UCMCommand("\\mbfitsansAlpha", '๐ž', :mathalpha, "mathematical sans-serif bold italic capital alpha"), + :mbfitsansBeta => UCMCommand("\\mbfitsansBeta", '๐ž‘', :mathalpha, "mathematical sans-serif bold italic capital beta"), + :mbfitsansGamma => UCMCommand("\\mbfitsansGamma", '๐ž’', :mathalpha, "mathematical sans-serif bold italic capital gamma"), + :mbfitsansDelta => UCMCommand("\\mbfitsansDelta", '๐ž“', :mathalpha, "mathematical sans-serif bold italic capital delta"), + :mbfitsansEpsilon => UCMCommand("\\mbfitsansEpsilon", '๐ž”', :mathalpha, "mathematical sans-serif bold italic capital epsilon"), + :mbfitsansZeta => UCMCommand("\\mbfitsansZeta", '๐ž•', :mathalpha, "mathematical sans-serif bold italic capital zeta"), + :mbfitsansEta => UCMCommand("\\mbfitsansEta", '๐ž–', :mathalpha, "mathematical sans-serif bold italic capital eta"), + :mbfitsansTheta => UCMCommand("\\mbfitsansTheta", '๐ž—', :mathalpha, "mathematical sans-serif bold italic capital theta"), + :mbfitsansIota => UCMCommand("\\mbfitsansIota", '๐ž˜', :mathalpha, "mathematical sans-serif bold italic capital iota"), + :mbfitsansKappa => UCMCommand("\\mbfitsansKappa", '๐ž™', :mathalpha, "mathematical sans-serif bold italic capital kappa"), + :mbfitsansLambda => UCMCommand("\\mbfitsansLambda", '๐žš', :mathalpha, "mathematical sans-serif bold italic capital lambda"), + :mbfitsansMu => UCMCommand("\\mbfitsansMu", '๐ž›', :mathalpha, "mathematical sans-serif bold italic capital mu"), + :mbfitsansNu => UCMCommand("\\mbfitsansNu", '๐žœ', :mathalpha, "mathematical sans-serif bold italic capital nu"), + :mbfitsansXi => UCMCommand("\\mbfitsansXi", '๐ž', :mathalpha, "mathematical sans-serif bold italic capital xi"), + :mbfitsansOmicron => UCMCommand("\\mbfitsansOmicron", '๐žž', :mathalpha, "mathematical sans-serif bold italic capital omicron"), + :mbfitsansPi => UCMCommand("\\mbfitsansPi", '๐žŸ', :mathalpha, "mathematical sans-serif bold italic capital pi"), + :mbfitsansRho => UCMCommand("\\mbfitsansRho", '๐ž ', :mathalpha, "mathematical sans-serif bold italic capital rho"), + :mbfitsansvarTheta => UCMCommand("\\mbfitsansvarTheta", '๐žก', :mathalpha, "mathematical sans-serif bold italic capital theta symbol"), + :mbfitsansSigma => UCMCommand("\\mbfitsansSigma", '๐žข', :mathalpha, "mathematical sans-serif bold italic capital sigma"), + :mbfitsansTau => UCMCommand("\\mbfitsansTau", '๐žฃ', :mathalpha, "mathematical sans-serif bold italic capital tau"), + :mbfitsansUpsilon => UCMCommand("\\mbfitsansUpsilon", '๐žค', :mathalpha, "mathematical sans-serif bold italic capital upsilon"), + :mbfitsansPhi => UCMCommand("\\mbfitsansPhi", '๐žฅ', :mathalpha, "mathematical sans-serif bold italic capital phi"), + :mbfitsansChi => UCMCommand("\\mbfitsansChi", '๐žฆ', :mathalpha, "mathematical sans-serif bold italic capital chi"), + :mbfitsansPsi => UCMCommand("\\mbfitsansPsi", '๐žง', :mathalpha, "mathematical sans-serif bold italic capital psi"), + :mbfitsansOmega => UCMCommand("\\mbfitsansOmega", '๐žจ', :mathalpha, "mathematical sans-serif bold italic capital omega"), + :mbfitsansnabla => UCMCommand("\\mbfitsansnabla", '๐žฉ', :mathalpha, "mathematical sans-serif bold italic nabla"), + :mbfitsansalpha => UCMCommand("\\mbfitsansalpha", '๐žช', :mathalpha, "mathematical sans-serif bold italic small alpha"), + :mbfitsansbeta => UCMCommand("\\mbfitsansbeta", '๐žซ', :mathalpha, "mathematical sans-serif bold italic small beta"), + :mbfitsansgamma => UCMCommand("\\mbfitsansgamma", '๐žฌ', :mathalpha, "mathematical sans-serif bold italic small gamma"), + :mbfitsansdelta => UCMCommand("\\mbfitsansdelta", '๐žญ', :mathalpha, "mathematical sans-serif bold italic small delta"), + :mbfitsansvarepsilon => UCMCommand("\\mbfitsansvarepsilon", '๐žฎ', :mathalpha, "mathematical sans-serif bold italic small varepsilon"), + :mbfitsanszeta => UCMCommand("\\mbfitsanszeta", '๐žฏ', :mathalpha, "mathematical sans-serif bold italic small zeta"), + :mbfitsanseta => UCMCommand("\\mbfitsanseta", '๐žฐ', :mathalpha, "mathematical sans-serif bold italic small eta"), + :mbfitsanstheta => UCMCommand("\\mbfitsanstheta", '๐žฑ', :mathalpha, "mathematical sans-serif bold italic small theta"), + :mbfitsansiota => UCMCommand("\\mbfitsansiota", '๐žฒ', :mathalpha, "mathematical sans-serif bold italic small iota"), + :mbfitsanskappa => UCMCommand("\\mbfitsanskappa", '๐žณ', :mathalpha, "mathematical sans-serif bold italic small kappa"), + :mbfitsanslambda => UCMCommand("\\mbfitsanslambda", '๐žด', :mathalpha, "mathematical sans-serif bold italic small lambda"), + :mbfitsansmu => UCMCommand("\\mbfitsansmu", '๐žต', :mathalpha, "mathematical sans-serif bold italic small mu"), + :mbfitsansnu => UCMCommand("\\mbfitsansnu", '๐žถ', :mathalpha, "mathematical sans-serif bold italic small nu"), + :mbfitsansxi => UCMCommand("\\mbfitsansxi", '๐žท', :mathalpha, "mathematical sans-serif bold italic small xi"), + :mbfitsansomicron => UCMCommand("\\mbfitsansomicron", '๐žธ', :mathalpha, "mathematical sans-serif bold italic small omicron"), + :mbfitsanspi => UCMCommand("\\mbfitsanspi", '๐žน', :mathalpha, "mathematical sans-serif bold italic small pi"), + :mbfitsansrho => UCMCommand("\\mbfitsansrho", '๐žบ', :mathalpha, "mathematical sans-serif bold italic small rho"), + :mbfitsansvarsigma => UCMCommand("\\mbfitsansvarsigma", '๐žป', :mathalpha, "mathematical sans-serif bold italic small final sigma"), + :mbfitsanssigma => UCMCommand("\\mbfitsanssigma", '๐žผ', :mathalpha, "mathematical sans-serif bold italic small sigma"), + :mbfitsanstau => UCMCommand("\\mbfitsanstau", '๐žฝ', :mathalpha, "mathematical sans-serif bold italic small tau"), + :mbfitsansupsilon => UCMCommand("\\mbfitsansupsilon", '๐žพ', :mathalpha, "mathematical sans-serif bold italic small upsilon"), + :mbfitsansvarphi => UCMCommand("\\mbfitsansvarphi", '๐žฟ', :mathalpha, "mathematical sans-serif bold italic small phi"), + :mbfitsanschi => UCMCommand("\\mbfitsanschi", '๐Ÿ€', :mathalpha, "mathematical sans-serif bold italic small chi"), + :mbfitsanspsi => UCMCommand("\\mbfitsanspsi", '๐Ÿ', :mathalpha, "mathematical sans-serif bold italic small psi"), + :mbfitsansomega => UCMCommand("\\mbfitsansomega", '๐Ÿ‚', :mathalpha, "mathematical sans-serif bold italic small omega"), + :mbfitsanspartial => UCMCommand("\\mbfitsanspartial", '๐Ÿƒ', :mathalpha, "mathematical sans-serif bold italic partial differential"), + :mbfitsansepsilon => UCMCommand("\\mbfitsansepsilon", '๐Ÿ„', :mathalpha, "mathematical sans-serif bold italic varepsilon symbol"), + :mbfitsansvartheta => UCMCommand("\\mbfitsansvartheta", '๐Ÿ…', :mathalpha, "mathematical sans-serif bold italic theta symbol"), + :mbfitsansvarkappa => UCMCommand("\\mbfitsansvarkappa", '๐Ÿ†', :mathalpha, "mathematical sans-serif bold italic kappa symbol"), + :mbfitsansphi => UCMCommand("\\mbfitsansphi", '๐Ÿ‡', :mathalpha, "mathematical sans-serif bold italic phi symbol"), + :mbfitsansvarrho => UCMCommand("\\mbfitsansvarrho", '๐Ÿˆ', :mathalpha, "mathematical sans-serif bold italic rho symbol"), + :mbfitsansvarpi => UCMCommand("\\mbfitsansvarpi", '๐Ÿ‰', :mathalpha, "mathematical sans-serif bold italic pi symbol"), + :mbfDigamma => UCMCommand("\\mbfDigamma", '๐ŸŠ', :mathalpha, "mathematical bold capital digamma"), + :mbfdigamma => UCMCommand("\\mbfdigamma", '๐Ÿ‹', :mathalpha, "mathematical bold small digamma"), + :mbfzero => UCMCommand("\\mbfzero", '๐ŸŽ', :mathord, "mathematical bold digit 0"), + :mbfone => UCMCommand("\\mbfone", '๐Ÿ', :mathord, "mathematical bold digit 1"), + :mbftwo => UCMCommand("\\mbftwo", '๐Ÿ', :mathord, "mathematical bold digit 2"), + :mbfthree => UCMCommand("\\mbfthree", '๐Ÿ‘', :mathord, "mathematical bold digit 3"), + :mbffour => UCMCommand("\\mbffour", '๐Ÿ’', :mathord, "mathematical bold digit 4"), + :mbffive => UCMCommand("\\mbffive", '๐Ÿ“', :mathord, "mathematical bold digit 5"), + :mbfsix => UCMCommand("\\mbfsix", '๐Ÿ”', :mathord, "mathematical bold digit 6"), + :mbfseven => UCMCommand("\\mbfseven", '๐Ÿ•', :mathord, "mathematical bold digit 7"), + :mbfeight => UCMCommand("\\mbfeight", '๐Ÿ–', :mathord, "mathematical bold digit 8"), + :mbfnine => UCMCommand("\\mbfnine", '๐Ÿ—', :mathord, "mathematical bold digit 9"), + :Bbbzero => UCMCommand("\\Bbbzero", '๐Ÿ˜', :mathord, "mathematical double-struck digit 0"), + :Bbbone => UCMCommand("\\Bbbone", '๐Ÿ™', :mathord, "mathematical double-struck digit 1"), + :Bbbtwo => UCMCommand("\\Bbbtwo", '๐Ÿš', :mathord, "mathematical double-struck digit 2"), + :Bbbthree => UCMCommand("\\Bbbthree", '๐Ÿ›', :mathord, "mathematical double-struck digit 3"), + :Bbbfour => UCMCommand("\\Bbbfour", '๐Ÿœ', :mathord, "mathematical double-struck digit 4"), + :Bbbfive => UCMCommand("\\Bbbfive", '๐Ÿ', :mathord, "mathematical double-struck digit 5"), + :Bbbsix => UCMCommand("\\Bbbsix", '๐Ÿž', :mathord, "mathematical double-struck digit 6"), + :Bbbseven => UCMCommand("\\Bbbseven", '๐ŸŸ', :mathord, "mathematical double-struck digit 7"), + :Bbbeight => UCMCommand("\\Bbbeight", '๐Ÿ ', :mathord, "mathematical double-struck digit 8"), + :Bbbnine => UCMCommand("\\Bbbnine", '๐Ÿก', :mathord, "mathematical double-struck digit 9"), + :msanszero => UCMCommand("\\msanszero", '๐Ÿข', :mathord, "mathematical sans-serif digit 0"), + :msansone => UCMCommand("\\msansone", '๐Ÿฃ', :mathord, "mathematical sans-serif digit 1"), + :msanstwo => UCMCommand("\\msanstwo", '๐Ÿค', :mathord, "mathematical sans-serif digit 2"), + :msansthree => UCMCommand("\\msansthree", '๐Ÿฅ', :mathord, "mathematical sans-serif digit 3"), + :msansfour => UCMCommand("\\msansfour", '๐Ÿฆ', :mathord, "mathematical sans-serif digit 4"), + :msansfive => UCMCommand("\\msansfive", '๐Ÿง', :mathord, "mathematical sans-serif digit 5"), + :msanssix => UCMCommand("\\msanssix", '๐Ÿจ', :mathord, "mathematical sans-serif digit 6"), + :msansseven => UCMCommand("\\msansseven", '๐Ÿฉ', :mathord, "mathematical sans-serif digit 7"), + :msanseight => UCMCommand("\\msanseight", '๐Ÿช', :mathord, "mathematical sans-serif digit 8"), + :msansnine => UCMCommand("\\msansnine", '๐Ÿซ', :mathord, "mathematical sans-serif digit 9"), + :mbfsanszero => UCMCommand("\\mbfsanszero", '๐Ÿฌ', :mathord, "mathematical sans-serif bold digit 0"), + :mbfsansone => UCMCommand("\\mbfsansone", '๐Ÿญ', :mathord, "mathematical sans-serif bold digit 1"), + :mbfsanstwo => UCMCommand("\\mbfsanstwo", '๐Ÿฎ', :mathord, "mathematical sans-serif bold digit 2"), + :mbfsansthree => UCMCommand("\\mbfsansthree", '๐Ÿฏ', :mathord, "mathematical sans-serif bold digit 3"), + :mbfsansfour => UCMCommand("\\mbfsansfour", '๐Ÿฐ', :mathord, "mathematical sans-serif bold digit 4"), + :mbfsansfive => UCMCommand("\\mbfsansfive", '๐Ÿฑ', :mathord, "mathematical sans-serif bold digit 5"), + :mbfsanssix => UCMCommand("\\mbfsanssix", '๐Ÿฒ', :mathord, "mathematical sans-serif bold digit 6"), + :mbfsansseven => UCMCommand("\\mbfsansseven", '๐Ÿณ', :mathord, "mathematical sans-serif bold digit 7"), + :mbfsanseight => UCMCommand("\\mbfsanseight", '๐Ÿด', :mathord, "mathematical sans-serif bold digit 8"), + :mbfsansnine => UCMCommand("\\mbfsansnine", '๐Ÿต', :mathord, "mathematical sans-serif bold digit 9"), + :mttzero => UCMCommand("\\mttzero", '๐Ÿถ', :mathord, "mathematical monospace digit 0"), + :mttone => UCMCommand("\\mttone", '๐Ÿท', :mathord, "mathematical monospace digit 1"), + :mtttwo => UCMCommand("\\mtttwo", '๐Ÿธ', :mathord, "mathematical monospace digit 2"), + :mttthree => UCMCommand("\\mttthree", '๐Ÿน', :mathord, "mathematical monospace digit 3"), + :mttfour => UCMCommand("\\mttfour", '๐Ÿบ', :mathord, "mathematical monospace digit 4"), + :mttfive => UCMCommand("\\mttfive", '๐Ÿป', :mathord, "mathematical monospace digit 5"), + :mttsix => UCMCommand("\\mttsix", '๐Ÿผ', :mathord, "mathematical monospace digit 6"), + :mttseven => UCMCommand("\\mttseven", '๐Ÿฝ', :mathord, "mathematical monospace digit 7"), + :mtteight => UCMCommand("\\mtteight", '๐Ÿพ', :mathord, "mathematical monospace digit 8"), + :mttnine => UCMCommand("\\mttnine", '๐Ÿฟ', :mathord, "mathematical monospace digit 9"), + :arabicmaj => UCMCommand("\\arabicmaj", '๐žปฐ', :mathop, "arabic mathematical operator meem with hah with tatweel"), + :arabichad => UCMCommand("\\arabichad", '๐žปฑ', :mathop, "arabic mathematical operator hah with dal"), +) \ No newline at end of file diff --git a/src/UnicodeMath/src/ucmchars.jl b/src/UnicodeMath/src/ucmchars.jl new file mode 100644 index 0000000..ba15fab --- /dev/null +++ b/src/UnicodeMath/src/ucmchars.jl @@ -0,0 +1,413 @@ +# This file takes inspiration from source file `um-code-usv.dtx` +# of the UNICODE-MATH package + +# We generate two mappings in here: +# +# `const ucmchars_by_alphabet_style_name = all_chars()` +# +# `ucmchars_by_alphabet_style_name` is a dict-of-dict-of-dict (?) +# * alphabet (:Greek, :greek, :Latin, โ€ฆ) +# => style (:up, :bfup, โ€ฆ) +# => name ("a", "Gamma", "1", โ€ฆ ) +# => ucm_ch::UCMChar +# +# `const chars_to_ucmchars = inverse_ucm_dict(ucmchars_by_alphabet_style_name)` +# +# `chars_to_ucmchars` is an inverse look-up dict, mapping +# glyphs of type `Char` to UCMChars (if they are defined in `ucmchars_by_alphabet_style_name`) + +""" + UCMChar(; name, alphabet, style, glyph) + +Internal type decorating a `glyph::Char` with meta data.""" +Base.@kwdef struct UCMChar + name :: String + alphabet :: Symbol + style :: Symbol + glyph :: Char +end + +function Base.show(io::IO, ucmchar::UCMChar) + print(io, "UCMChar('$(ucmchar.glyph)')") +end + +## helper: "theta" โ†ฆ "Theta", "vartheta" โ†ฆ "varTheta" โ€ฆ +_cap(n) = startswith(n, "var") ? "var" * uppercasefirst(n[4:end]) : uppercasefirst(n) +## helper: "Theta" โ†ฆ "theta", "varTheta" โ†ฆ "vartheta" โ€ฆ +_decap(n) = startswith(n, "var") ? "var" * lowercasefirst(n[4:end]) : lowercasefirst(n) + +# ## Greek Alphabet +const names_Greek = ( + "Alpha", "Beta", "Gamma", "Delta", "Epsilon", + "Zeta", "Eta", "Theta", "Iota", "Kappa", + "Lambda", "Mu", "Nu", "Xi", "Omicron", + "Pi", "Rho", "varTheta", "Sigma", "Tau", + "Upsilon", "Phi", "Chi", "Psi", "Omega", +) + +## starting indices for glyph ranges in unicode +const usv_Greek = Dict( + :up => 0x391, + :it => 0x1D6E2, + :bfup => 0x1D6A8, + :bfit => 0x1D71C, + :bfsfup => 0x1D756, + :bfsfit => 0x1D790 +) + +## additional glyphs +const extras_Greek = Dict( + :up => Dict( + "varTheta" => 0x3F4, + "Digamma" => 0x3DC, + ), + :bfup => Dict( + "varTheta" => 0x1D6B9, + "Digamma" => 0x1D7CA, + ), + :it => Dict( + "varTheta" => 0x1D6F3, + ), + :bfit => Dict( + "varTheta" => 0x1D72D, + ), + :bfsfit => Dict( + "varTheta" => 0x1D7A1, + ), + :bb => Dict( + "Gamma" => 0x213E, + "Pi" => 0x0213F, + ) +) + +# ## greek Alphabet + +## generate lowercase names +const names_greek = begin + ng = _decap.(names_Greek) |> collect + + # rename according to LaTeX conventions: + for i in eachindex(ng) + if ng[i] == "phi" || ng[i] == "epsilon" + ng[i] = "var" * ng[i] + end + end + tuple(ng...) +end + +const usv_greek = Dict( + :up => 0x3B1, + :it => 0x1D6FC, + :bfup => 0x1D6C2, + :bfit => 0x1D736, + :bfsfup => 0x1D770, + :bfsfit => 0x1D7AA, +) + +const extras_greek = Dict( + :up => Dict( + "epsilon" => 0x3F5, + "vartheta" => 0x3D1, + "varkappa" => 0x3F0, + "phi" => 0x3D5, + "varrho" => 0x3F1, + "varpi" => 0x3D6, + "digamma" => 0x3DD, + ), + :it => Dict( + "epsilon" => 0x1D716, + "vartheta" => 0x1D717, + "varkappa" => 0x1D718, + "phi" => 0x1D719, + "varrho" => 0x1D71A, + "varpi" => 0x1D71B, + ), + :bfit => Dict( + "epsilon" => 0x1D750, + "vartheta" => 0x1D751, + "varkappa" => 0x1D752, + "phi" => 0x1D753, + "varrho" => 0x1D754, + "varpi" => 0x1D755, + ), + :bfup => Dict( + "epsilon" => 0x1D6DC, + "vartheta" => 0x1D6DD, + "varkappa" => 0x1D6DE, + "phi" => 0x1D6DF, + "varrho" => 0x1D6E0, + "varpi" => 0x1D6E1, + "digamma" => 0x1D7CB, + ), + :bfsfup => Dict( + "epsilon" => 0x1D78A, + "vartheta" => 0x1D78B, + "varkappa" => 0x1D78C, + "phi" => 0x1D78D, + "varrho" => 0x1D78E, + "varpi" => 0x1D78F, + ), + :bfsfit => Dict( + "epsilon" => 0x1D7C4, + "vartheta" => 0x1D7C5, + "varkappa" => 0x1D7C6, + "phi" => 0x1D7C7, + "varrho" => 0x1D7C8, + "varpi" => 0x1D7C9, + ), + :bb => Dict( + "gamma" => 0x0213D, + "pi" => 0x0213C, + ) +) + +# ## Latin +const names_Latin = ( + "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 usv_Latin = Dict( + :up => 65, + :it => 0x1D434, + :bb => 0x1D538, + :cal => 0x1D49C, + :frak => 0x1D504, + :sfup => 0x1D5A0, + :sfit => 0x1D608, + :tt => 0x1D670, + :bfup => 0x1D400, + :bfit => 0x1D468, + :bffrak => 0x1D56C, + :bfcal => 0x1D4D0, + :bfsfup => 0x1D5D4, + :bfsfit => 0x1D63C, +) + +extras_Latin = Dict( + :cal => Dict( + "B" => 0x212C, + "E" => 0x2130, + "F" => 0x2131, + "H" => 0x210B, + "I" => 0x2110, + "L" => 0x2112, + "M" => 0x2133, + "R" => 0x211B, + ), + :bb => Dict( + "C" => 0x2102, + "H" => 0x210D, + "N" => 0x2115, + "P" => 0x2119, + "Q" => 0x211A, + "R" => 0x211D, + "Z" => 0x2124, + ), + :frak => Dict( + "C" => 0x212D, + "H" => 0x210C, + "I" => 0x2111, + "R" => 0x211C, + "Z" => 0x2128, + ), + :bbit => Dict( + "D" => 0x2145 + ) +) + +# ## latin Alphabet +const names_latin = _decap.(names_Latin) + +const extras_latin = Dict( + :cal => Dict( + "e" => 0x212F, + "g" => 0x210A, + "o" => 0x2134 + ), + :it => Dict( + "h" => 0x0210E, + ), + :bbit => Dict( + "d" => 0x2146, + "e" => 0x2147, + "i" => 0x2148, + "j" => 0x2149, + ) +) +const usv_latin = Dict( + :up => 97, + :it => 0x1D44E, + :bb => 0x1D552, + :cal => 0x1D4B6, + :frak => 0x1D51E, + :sfup => 0x1D5BA, + :sfit => 0x1D622, + :tt => 0x1D68A, + :bfup => 0x1D41A, + :bfit => 0x1D482, + :bffrak => 0x1D586, + :bfcal => 0x1D4EA, + :bfsfup => 0x1D5EE, + :bfsfit => 0x1D656 +) + +# ## Numbers +const names_num = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9") +const usv_num = Dict( + :up => 48, + :bb => 0x1D7D8, + :sfup => 0x1D7E2, + :tt => 0x1D7F6, + :bfup => 0x1D7CE, + :bfsfup => 0x1D7EC +) + +# ## Singletons +# ### partial +const names_partial = ("partial",) +const usv_partial = Dict( + :up => 0x02202, + :it => 0x1D715, + :bfup => 0x1D6DB, + :bfit => 0x1D74F, + :bfsfup => 0x1D789, + :bfsfit => 0x1D7C3, +) +# ### Nabla +const names_Nabla = ("Nabla",) +const usv_Nabla = Dict( + :up => 0x02207, + :it => 0x1D6FB, + :bfup => 0x1D6C1, + :bfit => 0x1D735, + :bfsfup => 0x1D76F, + :bfsfit => 0x1D7A9, +) + +# ### dotless +const names_dotless = ("dotlessi", "dotlessj") +const usv_dotless = Dict( + :up => 0x00131, + :it => 0x1D6A4 +) +const extras_dotless = Dict( + :up => Dict( + "dotlessj" => 0x00237, + ), + :it => Dict( + "dotlessi" => 0x1D6A4, + ) +) + +const ucmchars_dotless = Dict( + :up => Dict( + "dotlessi" => UCMChar(; name="dotlessi", glyph=Char(0x00131), alphabet=:dotless, style=:up), + "dotlessj" => UCMChar(; name="dotlessi", glyph=Char(0x00237), alphabet=:dotless, style=:up) + ), + :it => Dict( + "dotlessi" => UCMChar(; name="dotlessi", glyph=Char(0x1D6A4), alphabet=:dotless, style=:it), + "dotlessj" => UCMChar(; name="dotlessi", glyph=Char(0x1D6A5), alphabet=:dotless, style=:it), + ) +) + +""" + all_ucmchars() + +Internal helper function to generate/collect all nested dict of available `UCMChars`.""" +function all_ucmchars() + global ucmchars_dotless + ucmchars_Greek = collect_ucmchars(names_Greek, usv_Greek, extras_Greek; alphabet=:Greek) + ucmchars_greek = collect_ucmchars(names_greek, usv_greek, extras_greek; alphabet=:greek) + + ucmchars_Latin = collect_ucmchars(names_Latin, usv_Latin, extras_Latin; alphabet=:Latin) + ucmchars_latin = collect_ucmchars(names_latin, usv_latin, extras_latin; alphabet=:latin) + ucmchars_num = collect_ucmchars(names_num, usv_num; alphabet=:num) + + ucmchars_Nabla = collect_ucmchars(names_Nabla, usv_Nabla; alphabet=:Nabla) + ucmchars_partial = collect_ucmchars(names_partial, usv_partial; alphabet=:partial) + + return Dict( + :Greek => ucmchars_Greek, + :greek => ucmchars_greek, + :Latin => ucmchars_Latin, + :latin => ucmchars_latin, + :num => ucmchars_num, + :Nabla => ucmchars_Nabla, + :partial => ucmchars_partial, + :dotless => ucmchars_dotless + ) +end + +""" + collect_ucmchars( + char_names, usv_dict, extras_dict=Dict(); + alphabet, fixes=Dict()) + +Given a vector of character names `char_names::AbstractVector{String}`, +and a dictionary mapping style symbols (`:up`, `:it`) to unicode points, +collect all the glyphs as `UCMChar` objects. +The returned dict has structure `Dict(style_symb => Dict(name => ucm_char))`. + +* `fixes` is a global `Char`-to-`Char` dict, overwriting characters independent of style. +* `extras_dict` can be used to overwrite characters or define additional symbols. +""" +function collect_ucmchars( + char_names, + usv_dict, + extras_dict=Dict(); + alphabet=:UnknownAlphabet, + fixes=Dict{Char,Char}() +) + ucm_dict = Dict{Symbol, Dict{String, UCMChar}}() + + for (sn, cp) in pairs(usv_dict) + dict_sn = Dict( + n => let ch = Char(cp + i - 1); + UCMChar(; + name=n, glyph=get(fixes, ch, ch), style=sn, alphabet) + end for (i, n) = enumerate(char_names) + ) + ucm_dict[sn] = dict_sn + end + + for (sn, extras) in pairs(extras_dict) + if !haskey(ucm_dict, sn) + dict_sn = Dict{String, UCMChar}() + ucm_dict[sn] = dict_sn + else + dict_sn = ucm_dict[sn] + end + for (n, cp) in pairs(extras) + if haskey(dict_sn, n) + @unpack name, style = dict_sn[n] + dict_sn[n] = UCMChar(; + glyph=Char(cp), alphabet=dict_sn[n].alphabet, name, style) + else + dict_sn[n] = UCMChar(; + name=n, glyph=Char(cp), style=sn, alphabet) + end + end + end + return ucm_dict +end + +function inverse_ucm_dict(ucm_dict) + d = Dict{Char, UCMChar}() + for (rn, chd) = pairs(ucm_dict) + for (sn, ucms) = pairs(chd) + for (n, uch) = pairs(ucms) + ch = uch.glyph + if haskey(d, ch) + @warn """ + '$(ch)' already assigned: + is : alphabet=$(d[ch].alphabet), style=$(d[ch].style), + new: alphabet=$(uch.alphabet), style=$(uch.style)""" + else + d[ch] = uch + end + end + end + end + return d +end \ No newline at end of file diff --git a/src/latex.jl b/src/latex.jl index bd672f4..2bc1099 100644 --- a/src/latex.jl +++ b/src/latex.jl @@ -18,9 +18,55 @@ function print_modifier(io, mod, substring) elseif mod == "mono" to_mono(io, substring) # leave unmodified for now else - error("Modifier $mod not supported") + _substring = try_sym_modifier(mod, substring) # we could also directly `io` and use `UCM.apply_style` instead of the `sym` commands in `try_sym_modifier` + if isnothing(_substring) + error("Modifier $mod not supported") + end + print(io, _substring) end end + +function try_sym_modifier(mod, substring) + _substring = if mod == "symbf" + symbf(substring) + elseif mod == "symsf" + symsf(substring) + elseif mod=="symup" + symup(substring) + elseif mod=="symit" + symit(substring) + elseif mod=="symtt" + symtt(substring) + elseif mod=="symbb" + symbb(substring) + elseif mod=="symcal" + symcal(substring) + elseif mod=="symbfsf" + symbfsf(substring) + elseif mod=="symbfup" + symbfup(substring) + elseif mod=="symbfit" + symbfit(substring) + elseif mod=="symsfup" + symsfup(substring) + elseif mod=="symsfit" + symsfit(substring) + elseif mod=="symbbit" + symbbit(substring) + elseif mod=="symfrak" + symfrak(substring) + elseif mod=="symbfcal" + symbfcal(substring) + elseif mod=="symbfsfup" + symbfsfup(substring) + elseif mod=="symbffrak" + symbffrak(substring) + else + nothing + end + return _substring +end + """ Base findnext doesn't handle utf8 strings correctly """ @@ -35,7 +81,7 @@ function utf8_findnext(A::AbstractString, v::Char, idx::Integer) 0 end -function to_latex(text) +function to_latex(text; normalize=false) io = IOBuffer() charidx = iterate(text) charidx === nothing && return "" @@ -56,6 +102,12 @@ function to_latex(text) break end end + for mod_candidate in ucm_modifiers + if startswith(ss, mod_candidate) + mod = mod_candidate + break + end + end if mod == "\\" # no match was found # is this a latex symbol? for (k, v) in latex_symbol_map @@ -86,7 +138,11 @@ function to_latex(text) print_modifier(io, mod, char) end else - print(io, char) + if normalize + print(io, UCM._sym(char)) + else + print(io, char) + end end end return String(take!(io)) diff --git a/test/UnicodeMath.jl b/test/UnicodeMath.jl new file mode 100644 index 0000000..a8dba85 --- /dev/null +++ b/test/UnicodeMath.jl @@ -0,0 +1,385 @@ +import UnicodeFun: UCM +import UnPack: @unpack + +function test_parse_cfg(cfg::UCM.UCMConfig) + @unpack math_style_spec, normal_style_spec, bold_style_spec, sans_style, partial, nabla = cfg + return UCM.parse_config(; + math_style_spec, normal_style_spec, bold_style_spec, sans_style, partial, nabla + ) +end + +@testset "UnicodeMath Defaults" begin + @test UCM.UCMConfig() == UCM.UCMConfig(; + math_style_spec=:tex, + normal_style_spec=nothing, + bold_style_spec=nothing, + sans_style=nothing, + partial=nothing, + nabla=nothing, + ) + + for normal_style_spec in (nothing, :tex, :iso, :french, :upright, :literal) + for bold_style_spec in (nothing, :tex, :iso, :upright, :literal) + for sans_style in (nothing, :upright, :italic, :literal) + for partial in (nothing, :upright, :italic, :literal) + for nabla in (nothing, :upright, :italic, :literal) + overrides = (;normal_style_spec, bold_style_spec, sans_style, partial, nabla) + cfg_tex = UCM.UCMConfig(; math_style_spec=:tex, overrides...) + cfg_iso = UCM.UCMConfig(; math_style_spec=:iso, overrides...) + cfg_french = UCM.UCMConfig(; math_style_spec=:french, overrides...) + cfg_upright = UCM.UCMConfig(; math_style_spec=:upright, overrides...) + cfg_literal = UCM.UCMConfig(; math_style_spec=:literal, overrides...) + + ntup_tex = test_parse_cfg(cfg_tex) + ntup_iso = test_parse_cfg(cfg_iso) + ntup_french = test_parse_cfg(cfg_french) + ntup_upright = test_parse_cfg(cfg_upright) + ntup_literal = test_parse_cfg(cfg_literal) + + ns = if isnothing(normal_style_spec) + identity + else + symb -> normal_style_spec + end + bs = if isnothing(bold_style_spec) + identity + else + symb -> bold_style_spec + end + ss = if isnothing(sans_style) + identity + else + symb -> sans_style + end + p = if isnothing(partial) + identity + else + symb -> partial + end + n = if isnothing(nabla) + identity + else + symb -> nabla + end + @test ntup_tex == (; + nabla = n(:upright), + partial = p(:italic), + normal_style_spec = ns(:tex), + bold_style_spec = bs(:tex), + sans_style = ss(:upright) + ) + + @test ntup_iso == (; + nabla = n(:upright), + partial = p(:italic), + normal_style_spec = ns(:iso), + bold_style_spec = bs(:iso), + sans_style = ss(:italic) + ) + + @test ntup_french == (; + nabla = n(:upright), + partial = p(:upright), + normal_style_spec = ns(:french), + bold_style_spec = bs(:upright), + sans_style = ss(:upright) + ) + + @test ntup_upright == (; + nabla = n(:upright), + partial = p(:upright), + normal_style_spec = ns(:upright), + bold_style_spec = bs(:upright), + sans_style = ss(:upright) + ) + + @test ntup_literal == (; + nabla = n(:literal), + partial = p(:literal), + normal_style_spec = ns(:literal), + bold_style_spec = bs(:literal), + sans_style = ss(:literal) + ) + end + end + end + end + end + + @test UCM.parse_normal_style_spec(:iso) == (; + Greek = :italic, + greek = :italic, + Latin = :italic, + latin = :italic + ) + @test UCM.parse_normal_style_spec(:tex) == (; + Greek = :upright, + greek = :italic, + Latin = :italic, + latin = :italic + ) + @test UCM.parse_normal_style_spec(:french) == (; + Greek = :upright, + greek = :upright, + Latin = :upright, + latin = :italic + ) + @test UCM.parse_normal_style_spec(:upright) == (; + Greek = :upright, + greek = :upright, + Latin = :upright, + latin = :upright, + ) + @test UCM.parse_normal_style_spec(:literal) == (; + Greek = :literal, + greek = :literal, + Latin = :literal, + latin = :literal, + ) + + @test UCM.parse_bold_style_spec(:iso) == (; + Greek = :italic, + greek = :italic, + Latin = :italic, + latin = :italic + ) + @test UCM.parse_bold_style_spec(:tex) == (; + Greek = :upright, + greek = :italic, + Latin = :upright, + latin = :upright + ) + @test UCM.parse_bold_style_spec(:upright) == (; + Greek = :upright, + greek = :upright, + Latin = :upright, + latin = :upright, + ) + @test UCM.parse_bold_style_spec(:literal) == (; + Greek = :literal, + greek = :literal, + Latin = :literal, + latin = :literal, + ) +end + +const test_strings = Dict( + :num_up => "1", + :latin_up => "az", + :Latin_up => "BX", + :latin_it => "๐‘Ž๐‘ง", + :Latin_it => "๐ต๐‘‹", + :Latin_bfit => "๐‘จ๐’", + :latin_bfit => "๐’‚๐’›", + :Latin_bfup => "๐€๐™", + :latin_bfup => "๐š๐ณ", + :greek_up => "ฮฑฮฒ", + :Greek_up => "ฮ“ฮž", + :greek_it => "๐›ผ๐›ฝ", + :Greek_it => "๐›ค๐›ฏ", + :greek_bfit => "๐œถ๐œท", + :Greek_bfit => "๐œž๐œฉ", + :greek_bfup => "๐›‚๐›ƒ", + :Greek_bfup => "๐šช๐šต", + :Nabla_up => "โˆ‡", + :Nabla_it => "๐›ป", + :Nabla_bfup => "๐›", + :Nabla_bfit => "๐œต", + :partial_up => "โˆ‚", + :partial_it => "๐œ•", + :partial_bfup => "๐››", + :partial_bfit => "๐", +) + +@testset "UnicodeMath String Styling with `math_style_spec`" begin + + results_tex = Dict( + :num_up => :num_up, + :latin_up => :latin_it, + :Latin_up => :Latin_it, + :latin_it => :latin_it, + :Latin_it => :Latin_it, + :Latin_bfit => :Latin_bfup, + :Latin_bfup => :Latin_bfup, + :latin_bfit => :latin_bfup, + :latin_bfup => :latin_bfup, + :greek_up => :greek_it, + :Greek_up => :Greek_up, + :greek_it => :greek_it, + :Greek_it => :Greek_up, + :greek_bfit => :greek_bfit, + :Greek_bfit => :Greek_bfup, + :greek_bfup => :greek_bfit, + :Greek_bfup => :Greek_bfup, + :Nabla_up => :Nabla_up, + :Nabla_it => :Nabla_up, + :Nabla_bfup => :Nabla_bfup, + :Nabla_bfit => :Nabla_bfup, + :partial_up => :partial_it, + :partial_it => :partial_it, + :partial_bfup => :partial_bfit, + :partial_bfit => :partial_bfit, + ) + + results_iso = Dict( + :num_up => :num_up, + :latin_up => :latin_it, + :Latin_up => :Latin_it, + :latin_it => :latin_it, + :Latin_it => :Latin_it, + :Latin_bfit => :Latin_bfit, + :Latin_bfup => :Latin_bfit, + :latin_bfit => :latin_bfit, + :latin_bfup => :latin_bfit, + :greek_up => :greek_it, + :Greek_up => :Greek_it, + :greek_it => :greek_it, + :Greek_it => :Greek_it, + :greek_bfit => :greek_bfit, + :Greek_bfit => :Greek_bfit, + :greek_bfup => :greek_bfit, + :Greek_bfup => :Greek_bfit, + :Nabla_up => :Nabla_up, + :Nabla_it => :Nabla_up, + :Nabla_bfup => :Nabla_bfup, + :Nabla_bfit => :Nabla_bfup, + :partial_up => :partial_it, + :partial_it => :partial_it, + :partial_bfup => :partial_bfit, + :partial_bfit => :partial_bfit, + ) + + results_upright = Dict( + :num_up => :num_up, + :latin_up => :latin_up, + :Latin_up => :Latin_up, + :latin_it => :latin_up, + :Latin_it => :Latin_up, + :Latin_bfit => :Latin_bfup, + :Latin_bfup => :Latin_bfup, + :latin_bfit => :latin_bfup, + :latin_bfup => :latin_bfup, + :greek_up => :greek_up, + :Greek_up => :Greek_up, + :greek_it => :greek_up, + :Greek_it => :Greek_up, + :greek_bfit => :greek_bfup, + :Greek_bfit => :Greek_bfup, + :greek_bfup => :greek_bfup, + :Greek_bfup => :Greek_bfup, + :Nabla_up => :Nabla_up, + :Nabla_it => :Nabla_up, + :Nabla_bfup => :Nabla_bfup, + :Nabla_bfit => :Nabla_bfup, + :partial_up => :partial_up, + :partial_it => :partial_up, + :partial_bfup => :partial_bfup, + :partial_bfit => :partial_bfup, + ) + + results_french = Dict( + :num_up => :num_up, + :latin_up => :latin_it, + :Latin_up => :Latin_up, + :latin_it => :latin_it, + :Latin_it => :Latin_up, + :Latin_bfit => :Latin_bfit, + :Latin_bfup => :Latin_bfup, + :latin_bfit => :latin_bfit, + :latin_bfup => :latin_bfup, + :greek_up => :greek_up, + :Greek_up => :Greek_up, + :greek_it => :greek_up, + :Greek_it => :Greek_up, + :greek_bfit => :greek_bfup, + :Greek_bfit => :Greek_bfup, + :greek_bfup => :greek_bfup, + :Greek_bfup => :Greek_bfup, + :Nabla_up => :Nabla_up, + :Nabla_it => :Nabla_up, + :Nabla_bfup => :Nabla_bfup, + :Nabla_bfit => :Nabla_bfup, + :partial_up => :partial_up, + :partial_it => :partial_up, + :partial_bfup => :partial_bfup, + :partial_bfit => :partial_bfup, + ) + + results_literal = Dict(k => k for k = keys(test_strings)) + cfg_tex = UCM.UCMConfig(; math_style_spec=:tex) + cfg_iso = UCM.UCMConfig(; math_style_spec=:iso) + cfg_upright = UCM.UCMConfig(; math_style_spec=:iso) + cfg_french = UCM.UCMConfig(; math_style_spec=:french) + cfg_literal = UCM.UCMConfig(; math_style_spec=:literal) + for (cfg, res) = ( + (cfg_iso, results_iso), + (cfg_tex, results_tex), + (cfg_upright, results_upright), + (cfg_french, results_french), + (cfg_literal, results_literal) + ) + for (k, _str) = pairs(test_strings) + _styled = test_strings[results_iso[k]] + @test UCM.apply_style(_str, cfg_iso) == _styled + end + end + +end + +@testset "UnicodeMath granular overrides" begin + normal_style_spec = (; + Greek = :literal, + greek = :upright, + Latin = :upright, + latin = :italic + ) + str_in = test_strings[:Greek_it] * + test_strings[:Greek_up] * + test_strings[:greek_it] * + test_strings[:greek_up] * + test_strings[:Latin_it] * + test_strings[:Latin_up] * + test_strings[:latin_it] * + test_strings[:latin_up] + + str_out = test_strings[:Greek_it] * + test_strings[:Greek_up] * + test_strings[:greek_up] * + test_strings[:greek_up] * + test_strings[:Latin_up] * + test_strings[:Latin_up] * + test_strings[:latin_it] * + test_strings[:latin_it] + + cfg = UCM.UCMConfig(; normal_style_spec) + + @test UCM.apply_style(str_in, cfg) == str_out + + bold_style_spec = (; + Greek = :literal, + greek = :upright, + Latin = :upright, + latin = :italic + ) + str_in = test_strings[:Greek_bfit] * + test_strings[:Greek_bfup] * + test_strings[:greek_bfit] * + test_strings[:greek_bfup] * + test_strings[:Latin_bfit] * + test_strings[:Latin_bfup] * + test_strings[:latin_bfit] * + test_strings[:latin_bfup] + + str_out = test_strings[:Greek_bfit] * + test_strings[:Greek_bfup] * + test_strings[:greek_bfup] * + test_strings[:greek_bfup] * + test_strings[:Latin_bfup] * + test_strings[:Latin_bfup] * + test_strings[:latin_bfit] * + test_strings[:latin_bfit] + + cfg = UCM.UCMConfig(; bold_style_spec) + + @test UCM.apply_style(str_in, cfg) == str_out +end \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index dd24946..04444c2 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -28,3 +28,15 @@ latexstring = "\\bf{boldface} \\it{italic} \\bb{blackboard} \\cal{calligraphic} @test to_root(17,"542") == "ยนโทโˆš5ฬ…4ฬ…2ฬ…" @test to_root(1, "1") == "1" @test to_root(1, "-1") == "-1" + +include("UnicodeMath.jl") +## UCM.extra_commands: +@test to_latex("\\mathexclam") == "!" +## Normalization (same as calling `UCM._sym`) +glyphstring = "BX ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ฮฑฮฒ ๐šช๐šต ๐œต az ๐‘Ž๐‘ง ๐›ค๐›ฏ ๐›ป โˆ‚ ๐›› ฮ“ฮž ๐›ผ๐›ฝ 1 ๐œž๐œฉ ๐›‚๐›ƒ" +@test to_latex(glyphstring) == glyphstring +@test to_latex(glyphstring; normalize=true) == "๐ต๐‘‹ ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ๐›ผ๐›ฝ ๐šช๐šต ๐› ๐‘Ž๐‘ง ๐‘Ž๐‘ง ฮ“ฮž โˆ‡ ๐œ• ๐ ฮ“ฮž ๐›ผ๐›ฝ 1 ๐šช๐šต ๐œถ๐œท" +UnicodeFun.global_config!(; math_style_spec=:iso) +@test to_latex(glyphstring; normalize=true) == "๐ต๐‘‹ ๐ต๐‘‹ โˆ‡ ๐› ๐œ• ๐ ๐œถ๐œท ๐›ผ๐›ฝ ๐œž๐œฉ ๐› ๐‘Ž๐‘ง ๐‘Ž๐‘ง ๐›ค๐›ฏ โˆ‡ ๐œ• ๐ ๐›ค๐›ฏ ๐›ผ๐›ฝ 1 ๐œž๐œฉ ๐œถ๐œท" +## Additional styling modifiers: +@test to_latex("\\symit{a}") == "๐‘Ž" \ No newline at end of file