use mathml_renderer::{
attribute::{
FracAttr, HtmlTextSize, HtmlTextStyle, Notation, OpAttrs, Size, Style, TextTransform,
},
super_char::{OverlayChar, SuperChar},
symbol::{self, MathMLOperator},
};
use crate::predefined;
use crate::specifications::LatexUnit;
use crate::token::{
ForceStretchy, InfixDelim, MathClassKind, Mode, PhantomKind, TextToken,
Token::{self, *},
UnitKind,
};
use crate::{
character_class::{MathVariant, ParenType},
token::LimitsKind,
};
static FUNCTIONS: phf::Set<&'static str> = phf::phf_set!(
"arccos", "arcctg", "arcsin", "arctan", "arctg", "arg", "ch", "cos", "cosec", "cosh", "cot",
"cotg", "coth", "csc", "ctg", "cth", "deg", "det", "dim", "erf", "erfc", "exp", "hom", "ker",
"lg", "ln", "log", "sec", "sh", "sin", "sinh", "tan", "tanh", "tg", "th"
);
static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
" " => MathOrTextMode(&NonBreakingSpace, symbol::NO_BREAK_SPACE),
"#" => Letter(SuperChar::from_char(symbol::NUMBER_SIGN), Mode::MathOrText),
"$" => Letter(SuperChar::from_char(symbol::DOLLAR_SIGN), Mode::MathOrText),
"%" => Letter(SuperChar::from_char(symbol::PERCENT_SIGN), Mode::MathOrText),
"&" => MathOrTextMode(&Ord(symbol::AMPERSAND), '&'),
"'" => TextMode(TextToken::Accent(symbol::COMBINING_ACUTE_ACCENT)),
"," => MathOrTextMode(&Space(LatexUnit::Mu.length_with_unit(3.0)), symbol::THIN_SPACE),
"." => TextMode(TextToken::Accent(symbol::COMBINING_DOT_ABOVE)),
":" => MathOrTextMode(&Space(LatexUnit::Mu.length_with_unit(4.0)), symbol::MEDIUM_MATHEMATICAL_SPACE),
";" => MathOrTextMode(&Space(LatexUnit::Mu.length_with_unit(5.0)), symbol::THREE_PER_EM_SPACE),
"=" => TextMode(TextToken::Accent(symbol::COMBINING_MACRON)),
">" => MathOrTextMode(&Space(LatexUnit::Mu.length_with_unit(4.0)), symbol::MEDIUM_MATHEMATICAL_SPACE),
"AA" => TextMode(TextToken::Letter('Å')),
"AE" => TextMode(TextToken::Letter('Æ')),
"Alpha" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_ALPHA)),
"And" => CustomCmd(0, &predefined::AND),
"Bbb" => Transform(MathVariant::Transform(TextTransform::DoubleStruck)),
"Bbbk" => Letter(TextTransform::DoubleStruck.transform_char('k', false), Mode::Math),
"Beta" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_BETA)),
"Big" => Big(Size::Scale2, None),
"Bigg" => Big(Size::Scale4, None),
"Biggl" => Big(Size::Scale4, Some(ParenType::Left)),
"Biggm" => Big(Size::Scale4, Some(ParenType::Middle)),
"Biggr" => Big(Size::Scale4, Some(ParenType::Right)),
"Bigl" => Big(Size::Scale2, Some(ParenType::Left)),
"Bigm" => Big(Size::Scale2, Some(ParenType::Middle)),
"Bigr" => Big(Size::Scale2, Some(ParenType::Right)),
"Box" => Letter(SuperChar::from_char(symbol::WHITE_MEDIUM_SQUARE), Mode::Math),
"Bra" => CustomCmd(1, &predefined::BIG_BRA),
"Bumpeq" => Relation(symbol::GEOMETRICALLY_EQUIVALENT_TO),
"Cap" => BinaryOp(symbol::DOUBLE_INTERSECTION),
"Chi" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_CHI)),
"Colon" => Relation(symbol::PROPORTION),
"Coloneq" => Relation(symbol::DOUBLE_COLON_EQUAL),
"Coloneqq" => Relation(symbol::DOUBLE_COLON_EQUAL),
"Complex" => Letter(SuperChar::from_char(symbol::DOUBLE_STRUCK_CAPITAL_C), Mode::Math),
"Cup" => BinaryOp(symbol::DOUBLE_UNION),
"Dagger" => ForceBinaryOp(MathMLOperator::from_char(symbol::DOUBLE_DAGGER)),
"Darr" => Relation(symbol::DOWNWARDS_DOUBLE_ARROW),
"Delta" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_DELTA)),
"Diamond" => Letter(SuperChar::from_char(symbol::LOZENGE), Mode::Math),
"Doteq" => Relation(symbol::GEOMETRICALLY_EQUAL_TO),
"Downarrow" => Relation(symbol::DOWNWARDS_DOUBLE_ARROW),
"Epsilon" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_EPSILON)),
"Eta" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_ETA)),
"Finv" => Letter(SuperChar::from_char(symbol::TURNED_CAPITAL_F), Mode::Math),
"Game" => Letter(SuperChar::from_char(symbol::TURNED_SANS_SERIF_CAPITAL_G), Mode::Math),
"Gamma" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_GAMMA)),
"H" => TextMode(TextToken::Accent(symbol::COMBINING_DOUBLE_ACUTE_ACCENT)),
"Harr" => Relation(symbol::LEFT_RIGHT_DOUBLE_ARROW),
"Huge" => TextMode(TextToken::Size(HtmlTextSize::Size250)),
"Im" => Letter(SuperChar::from_char(symbol::BLACK_LETTER_CAPITAL_I), Mode::Math),
"Iota" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_IOTA)),
"Join" => Relation(symbol::BOWTIE),
"Kappa" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_KAPPA)),
"Ket" => CustomCmd(1, &predefined::BIG_KET),
"L" => TextMode(TextToken::Letter('Ł')),
"LARGE" => TextMode(TextToken::Size(HtmlTextSize::Size170)),
"Lambda" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_LAMBDA)),
"Large" => TextMode(TextToken::Size(HtmlTextSize::Size140)),
"Larr" => Relation(symbol::LEFTWARDS_DOUBLE_ARROW),
"Leftarrow" => Relation(symbol::LEFTWARDS_DOUBLE_ARROW),
"Leftrightarrow" => Relation(symbol::LEFT_RIGHT_DOUBLE_ARROW),
"Lleftarrow" => Relation(symbol::LEFTWARDS_TRIPLE_ARROW),
"Longleftarrow" => Relation(symbol::LONG_LEFTWARDS_DOUBLE_ARROW),
"Longleftrightarrow" => Relation(symbol::LONG_LEFT_RIGHT_DOUBLE_ARROW),
"Longrightarrow" => Relation(symbol::LONG_RIGHTWARDS_DOUBLE_ARROW),
"Lrarr" => Relation(symbol::LEFT_RIGHT_DOUBLE_ARROW),
"Lsh" => Relation(symbol::UPWARDS_ARROW_WITH_TIP_LEFTWARDS),
"Mu" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_MU)),
"N" => Letter(SuperChar::from_char(symbol::DOUBLE_STRUCK_CAPITAL_N), Mode::Math),
"Nu" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_NU)),
"O" => TextMode(TextToken::Letter('Ø')),
"OE" => TextMode(TextToken::Letter('Œ')),
"Omega" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_OMEGA)),
"Omicron" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_OMICRON)),
"P" => Letter(SuperChar::from_char(symbol::PILCROW_SIGN), Mode::MathOrText),
"Phi" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_PHI)),
"Pi" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_PI)),
"Pr" => PseudoOperatorLimits("Pr"),
"Psi" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_PSI)),
"R" => Letter(SuperChar::from_char(symbol::DOUBLE_STRUCK_CAPITAL_R), Mode::Math),
"Rarr" => Relation(symbol::RIGHTWARDS_DOUBLE_ARROW),
"Re" => Letter(SuperChar::from_char(symbol::BLACK_LETTER_CAPITAL_R), Mode::Math),
"Reals" => Letter(SuperChar::from_char(symbol::DOUBLE_STRUCK_CAPITAL_R), Mode::Math),
"Rho" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_RHO)),
"Rightarrow" => Relation(symbol::RIGHTWARDS_DOUBLE_ARROW),
"Rrightarrow" => Relation(symbol::RIGHTWARDS_TRIPLE_ARROW),
"Rsh" => Relation(symbol::UPWARDS_ARROW_WITH_TIP_RIGHTWARDS),
"S" => Letter(SuperChar::from_char(symbol::SECTION_SIGN), Mode::MathOrText),
"Sigma" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_SIGMA)),
"Subset" => Relation(symbol::DOUBLE_SUBSET),
"Supset" => Relation(symbol::DOUBLE_SUPERSET),
"Tau" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_TAU)),
"Theta" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_THETA)),
"Uarr" => Relation(symbol::UPWARDS_DOUBLE_ARROW),
"Uparrow" => Relation(symbol::UPWARDS_DOUBLE_ARROW),
"Updownarrow" => Relation(symbol::UP_DOWN_DOUBLE_ARROW),
"Upsilon" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_UPSILON)),
"VDash" => Relation(symbol::DOUBLE_VERTICAL_BAR_DOUBLE_RIGHT_TURNSTILE),
"Vdash" => Relation(symbol::FORCES),
"Vert" => Ord(symbol::DOUBLE_VERTICAL_LINE),
"Vvdash" => Relation(symbol::TRIPLE_VERTICAL_BAR_RIGHT_TURNSTILE),
"Xi" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_XI)),
"Yleft" => Relation(symbol::LEFTWARDS_ARROW_TAIL),
"Yright" => Relation(symbol::RIGHTWARDS_ARROW_TAIL),
"Z" => Letter(SuperChar::from_char(symbol::DOUBLE_STRUCK_CAPITAL_Z), Mode::Math),
"Zeta" => UprightLetter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_ZETA)),
"\"" => TextMode(TextToken::Accent(symbol::COMBINING_DIAERESIS)),
"\\" => NewLine,
"^" => TextMode(TextToken::Accent(symbol::COMBINING_CIRCUMFLEX_ACCENT.try_as_char().unwrap())),
"_" => Letter(symbol::LOW_LINE.as_op().as_superchar(), Mode::MathOrText),
"`" => TextMode(TextToken::Accent(symbol::COMBINING_GRAVE_ACCENT)),
"aa" => TextMode(TextToken::Letter('å')),
"acute" => Accent(symbol::ACUTE_ACCENT, true, OpAttrs::empty()),
"ae" => TextMode(TextToken::Letter('æ')),
"alef" => Letter(SuperChar::from_char(symbol::ALEF_SYMBOL), Mode::Math),
"alefsym" => Letter(SuperChar::from_char(symbol::ALEF_SYMBOL), Mode::Math),
"aleph" => Letter(SuperChar::from_char(symbol::ALEF_SYMBOL), Mode::Math),
"alpha" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_ALPHA), Mode::Math),
"amalg" => ForceBinaryOp(symbol::AMALGAMATION_OR_COPRODUCT.as_op()),
"angle" => Letter(SuperChar::from_char(symbol::ANGLE), Mode::Math),
"approx" => Relation(symbol::ALMOST_EQUAL_TO),
"approxeq" => Relation(symbol::ALMOST_EQUAL_OR_EQUAL_TO),
"arceq" => Relation(symbol::CORRESPONDS_TO), "argmax" => PseudoOperatorLimits("arg\u{2009}max"),
"argmin" => PseudoOperatorLimits("arg\u{2009}min"),
"ascnode" => Letter(SuperChar::from_char(symbol::ASCENDING_NODE), Mode::Math),
"ast" => ForceBinaryOp(symbol::ASTERISK_OPERATOR.as_op()),
"asymp" => Relation(symbol::EQUIVALENT_TO),
"atop" => InfixGenFrac { with_line: false, delim: None },
"awint" => Op(symbol::ANTICLOCKWISE_INTEGRATION),
"backepsilon" => Letter(SuperChar::from_char(symbol::GREEK_REVERSED_LUNATE_EPSILON_SYMBOL), Mode::Math),
"backprime" => Ord(symbol::REVERSED_PRIME),
"backsim" => Relation(symbol::REVERSED_TILDE),
"backsimeq" => Relation(symbol::REVERSED_TILDE_EQUALS),
"backslash" => Ord(symbol::REVERSE_SOLIDUS),
"bar" => Accent(symbol::MACRON, true, OpAttrs::STRETCHY_FALSE),
"barwedge" => BinaryOp(symbol::NAND),
"bcancel" => Enclose(Notation::DOWN_DIAGONAL),
"because" => ForceRelation(symbol::BECAUSE.as_op()),
"beta" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_BETA), Mode::Math),
"beth" => Letter(SuperChar::from_char(symbol::BET_SYMBOL), Mode::Math),
"between" => Relation(symbol::BETWEEN),
"bf" => TransformSwitch(MathVariant::Transform(TextTransform::Bold)),
"big" => Big(Size::Scale1, None),
"bigcap" => Op(symbol::N_ARY_INTERSECTION),
"bigcirc" => Letter(SuperChar::from_char(symbol::LARGE_CIRCLE), Mode::Math),
"bigcup" => Op(symbol::N_ARY_UNION),
"bigcupdot" => Op(symbol::N_ARY_UNION_OPERATOR_WITH_DOT),
"bigdoublevee" => Op(symbol::TWO_LOGICAL_OR_OPERATOR),
"bigdoublewedge" => Op(symbol::TWO_LOGICAL_AND_OPERATOR),
"bigg" => Big(Size::Scale3, None),
"biggl" => Big(Size::Scale3, Some(ParenType::Left)),
"biggm" => Big(Size::Scale3, Some(ParenType::Middle)),
"biggr" => Big(Size::Scale3, Some(ParenType::Right)),
"bigl" => Big(Size::Scale1, Some(ParenType::Left)),
"bigm" => Big(Size::Scale1, Some(ParenType::Middle)),
"bigodot" => Op(symbol::N_ARY_CIRCLED_DOT_OPERATOR),
"bigoplus" => Op(symbol::N_ARY_CIRCLED_PLUS_OPERATOR),
"bigotimes" => Op(symbol::N_ARY_CIRCLED_TIMES_OPERATOR),
"bigr" => Big(Size::Scale1, Some(ParenType::Right)),
"bigsqcap" => Op(symbol::N_ARY_SQUARE_INTERSECTION_OPERATOR),
"bigsqcup" => Op(symbol::N_ARY_SQUARE_UNION_OPERATOR),
"bigstar" => Letter(SuperChar::from_char(symbol::BLACK_STAR), Mode::Math),
"bigtimes" => Op(symbol::N_ARY_TIMES_OPERATOR),
"bigtriangledown" => ForceBinaryOp(symbol::WHITE_DOWN_POINTING_TRIANGLE),
"bigtriangleup" => ForceBinaryOp(symbol::WHITE_UP_POINTING_TRIANGLE),
"biguplus" => Op(symbol::N_ARY_UNION_OPERATOR_WITH_PLUS),
"bigvee" => Op(symbol::N_ARY_LOGICAL_OR),
"bigwedge" => Op(symbol::N_ARY_LOGICAL_AND),
"binom" => Binom(None),
"blacklozenge" => Letter(SuperChar::from_char(symbol::BLACK_LOZENGE), Mode::Math),
"blacksquare" => Letter(SuperChar::from_char(symbol::BLACK_SQUARE), Mode::Math),
"blacktriangle" => Letter(SuperChar::from_char(symbol::BLACK_UP_POINTING_TRIANGLE), Mode::Math),
"blacktriangledown" => Letter(SuperChar::from_char(symbol::BLACK_DOWN_POINTING_TRIANGLE), Mode::Math),
"blacktriangleleft" => ForceRelation(symbol::BLACK_LEFT_POINTING_TRIANGLE),
"blacktriangleright" => ForceRelation(symbol::BLACK_RIGHT_POINTING_TRIANGLE),
"bm" => Transform(MathVariant::Transform(TextTransform::BoldItalic)),
"bmod" => CustomCmd(0, &predefined::BMOD),
"bold" => Transform(MathVariant::Transform(TextTransform::Bold)),
"boldsymbol" => Transform(MathVariant::Transform(TextTransform::BoldItalic)),
"bot" => Letter(SuperChar::from_char(symbol::UP_TACK), Mode::Math),
"botdoteq" => Relation(symbol::EQUALS_SIGN_WITH_DOT_BELOW),
"bowtie" => Relation(symbol::BOWTIE),
"boxdot" => ForceBinaryOp(symbol::SQUARED_DOT_OPERATOR.as_op()),
"boxminus" => BinaryOp(symbol::SQUARED_MINUS),
"boxplus" => BinaryOp(symbol::SQUARED_PLUS),
"boxtimes" => ForceBinaryOp(symbol::SQUARED_TIMES.as_op()),
"bra" => CustomCmd(1, &predefined::BRA),
"brace" => InfixGenFrac { with_line: false, delim: Some(InfixDelim::Brace) },
"brack" => InfixGenFrac { with_line: false, delim: Some(InfixDelim::Brack) },
"braket" => CustomCmd(1, &predefined::BRAKET),
"breve" => Accent(symbol::BREVE, true, OpAttrs::empty()),
"bull" => ForceBinaryOp(symbol::BULLET_OPERATOR.as_op()),
"bullet" => ForceBinaryOp(symbol::BULLET_OPERATOR.as_op()),
"bumpeq" => Relation(symbol::DIFFERENCE_BETWEEN),
"c" => TextMode(TextToken::Accent(symbol::COMBINING_CEDILLA)),
"cal" => TransformSwitch(MathVariant::Transform(TextTransform::ScriptChancery)),
"cancel" => Enclose(Notation::UP_DIAGONAL),
"cap" => BinaryOp(symbol::INTERSECTION),
"cdot" => ForceBinaryOp(symbol::DOT_OPERATOR.as_op()),
"cdotp" => ForcePunctuation(symbol::MIDDLE_DOT.as_op()),
"cdots" => CustomCmd(0, &predefined::CDOTS),
"cfrac" => Frac(Some(FracAttr::CFracStyle)),
"check" => Accent(symbol::CARON, true, OpAttrs::STRETCHY_FALSE),
"checkmark" => Letter(SuperChar::from_char(symbol::CHECK_MARK), Mode::MathOrText),
"chi" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_CHI), Mode::Math),
"choose" => InfixGenFrac { with_line: false, delim: Some(InfixDelim::Paren) },
"circ" => ForceBinaryOp(symbol::RING_OPERATOR.as_op()),
"circeq" => Relation(symbol::RING_EQUAL_TO),
"circlearrowleft" => Relation(symbol::ANTICLOCKWISE_OPEN_CIRCLE_ARROW),
"circlearrowright" => Relation(symbol::CLOCKWISE_OPEN_CIRCLE_ARROW),
"circledR" => Letter(SuperChar::from_char(symbol::CIRCLED_LATIN_CAPITAL_LETTER_R), Mode::MathOrText),
"circledS" => Letter(SuperChar::from_char(symbol::CIRCLED_LATIN_CAPITAL_LETTER_S), Mode::Math),
"circledast" => ForceBinaryOp(symbol::CIRCLED_ASTERISK_OPERATOR.as_op()),
"circledcirc" => ForceBinaryOp(symbol::CIRCLED_RING_OPERATOR.as_op()),
"circleddash" => ForceBinaryOp(symbol::CIRCLED_DASH.as_op()),
"cirfnint" => Op(symbol::CIRCULATION_FUNCTION),
"clubs" => Letter(SuperChar::from_char(symbol::BLACK_CLUB_SUIT), Mode::Math),
"clubsuit" => Letter(SuperChar::from_char(symbol::BLACK_CLUB_SUIT), Mode::Math),
"cnums" => Letter(SuperChar::from_char(symbol::DOUBLE_STRUCK_CAPITAL_C), Mode::Math),
"colon" => Letter(symbol::COLON.as_op().as_superchar(), Mode::Math),
"coloncolon" => Relation(symbol::PROPORTION),
"coloncolonequals" => Relation(symbol::DOUBLE_COLON_EQUAL),
"coloneq" => Relation(symbol::COLON_EQUALS),
"colonequals" => Relation(symbol::COLON_EQUALS),
"coloneqq" => Relation(symbol::COLON_EQUALS),
"color" => Color,
"complement" => Letter(symbol::COMPLEMENT.as_op().as_superchar(), Mode::Math), "cong" => Relation(symbol::APPROXIMATELY_EQUAL_TO),
"coprod" => Op(symbol::N_ARY_COPRODUCT),
"copyright" => Letter(SuperChar::from_char(symbol::COPYRIGHT_SIGN), Mode::Math),
"cramped" => Cramped,
"cup" => BinaryOp(symbol::UNION),
"curlyeqprec" => Relation(symbol::EQUAL_TO_OR_PRECEDES),
"curlyeqsucc" => Relation(symbol::EQUAL_TO_OR_SUCCEEDS),
"curlyvee" => BinaryOp(symbol::CURLY_LOGICAL_OR),
"curlywedge" => BinaryOp(symbol::CURLY_LOGICAL_AND),
"curvearrowleft" => Relation(symbol::ANTICLOCKWISE_TOP_SEMICIRCLE_ARROW),
"curvearrowright" => Relation(symbol::CLOCKWISE_TOP_SEMICIRCLE_ARROW),
"dArr" => Relation(symbol::DOWNWARDS_DOUBLE_ARROW),
"dag" => Letter(SuperChar::from_char(symbol::DAGGER), Mode::MathOrText),
"dagger" => ForceBinaryOp(MathMLOperator::from_char(symbol::DAGGER)),
"daleth" => Letter(SuperChar::from_char(symbol::DALET_SYMBOL), Mode::Math),
"darr" => Relation(symbol::DOWNWARDS_ARROW),
"dashcolon" => Relation(symbol::EXCESS),
"dashleftarrow" => Relation(symbol::LEFTWARDS_DASHED_ARROW),
"dashrightarrow" => Relation(symbol::RIGHTWARDS_DASHED_ARROW),
"dashv" => Relation(symbol::LEFT_TACK),
"dbinom" => Binom(Some(FracAttr::DisplayStyleTrue)),
"dblcolon" => Relation(symbol::PROPORTION),
"ddag" => Letter(SuperChar::from_char(symbol::DOUBLE_DAGGER), Mode::MathOrText),
"ddagger" => ForceBinaryOp(MathMLOperator::from_char(symbol::DOUBLE_DAGGER)),
"ddddot" => Accent(symbol::COMBINING_FOUR_DOTS_ABOVE, true, OpAttrs::empty()),
"dddot" => Accent(symbol::COMBINING_THREE_DOTS_ABOVE, true, OpAttrs::empty()),
"ddot" => Accent(symbol::DIAERESIS, true, OpAttrs::empty()),
"ddots" => Relation(symbol::DOWN_RIGHT_DIAGONAL_ELLIPSIS),
"degree" => Letter(SuperChar::from_char(symbol::DEGREE_SIGN), Mode::MathOrText),
"delta" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_DELTA), Mode::Math),
"dfrac" => Frac(Some(FracAttr::DisplayStyleTrue)),
"diamond" => ForceBinaryOp(symbol::DIAMOND_OPERATOR.as_op()),
"diamonds" => Letter(SuperChar::from_char(symbol::WHITE_DIAMOND_SUIT), Mode::Math),
"diamondsuit" => Letter(SuperChar::from_char(symbol::WHITE_DIAMOND_SUIT), Mode::Math),
"digamma" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_DIGAMMA), Mode::Math),
"displaylimits" => Limits(LimitsKind::Display),
"displaystyle" => Style(Style::Display),
"div" => BinaryOp(symbol::DIVISION_SIGN),
"divideontimes" => ForceBinaryOp(symbol::DIVISION_TIMES.as_op()),
"dot" => Accent(symbol::DOT_ABOVE, true, OpAttrs::empty()),
"doteq" => Relation(symbol::APPROACHES_THE_LIMIT),
"doteqdot" => Relation(symbol::GEOMETRICALLY_EQUAL_TO),
"dotplus" => BinaryOp(symbol::DOT_PLUS),
"dots" => MathOrTextMode(&CustomCmd(0, &predefined::DOTS), symbol::HORIZONTAL_ELLIPSIS),
"dotsminusdots" => Relation(symbol::GEOMETRIC_PROPORTION),
"doublebarwedge" => BinaryOp(symbol::LOGICAL_AND_WITH_DOUBLE_OVERBAR),
"doublecap" => BinaryOp(symbol::DOUBLE_INTERSECTION),
"doublecup" => BinaryOp(symbol::DOUBLE_UNION),
"downarrow" => Relation(symbol::DOWNWARDS_ARROW),
"downdownarrows" => Relation(symbol::DOWNWARDS_PAIRED_ARROWS),
"downharpoonleft" => Relation(symbol::DOWNWARDS_HARPOON_WITH_BARB_LEFTWARDS),
"downharpoonright" => Relation(symbol::DOWNWARDS_HARPOON_WITH_BARB_RIGHTWARDS),
"ell" => Letter(SuperChar::from_char(symbol::SCRIPT_SMALL_L), Mode::Math),
"emph" => Text(Some(HtmlTextStyle::Emphasis)),
"empty" => Letter(symbol::EMPTY_SET_ZERO_WITH_LONG_DIAGONAL_STROKE_OVERLAY_FORM, Mode::Math),
"emptyset" => Letter(symbol::EMPTY_SET_ZERO_WITH_LONG_DIAGONAL_STROKE_OVERLAY_FORM, Mode::Math),
"epsilon" => Letter(SuperChar::from_char(symbol::GREEK_LUNATE_EPSILON_SYMBOL), Mode::Math),
"eqcirc" => Relation(symbol::RING_IN_EQUAL_TO),
"eqcolon" => Relation(symbol::EQUALS_COLON),
"eqdef" => Relation(symbol::EQUAL_TO_BY_DEFINITION), "eqqcolon" => Relation(symbol::EQUALS_COLON),
"eqref" => EqRef,
"eqsim" => Relation(symbol::MINUS_TILDE),
"eqslantgtr" => Relation(symbol::SLANTED_EQUAL_TO_OR_GREATER_THAN),
"eqslantless" => Relation(symbol::SLANTED_EQUAL_TO_OR_LESS_THAN),
"equalscolon" => Relation(symbol::EQUALS_COLON),
"equiv" => Relation(symbol::IDENTICAL_TO),
"eta" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_ETA), Mode::Math),
"eth" => Letter(SuperChar::from_char(symbol::LATIN_SMALL_LETTER_ETH), Mode::Math),
"exist" => Ord(symbol::THERE_EXISTS),
"exists" => Ord(symbol::THERE_EXISTS),
"fallingdotseq" => Relation(symbol::APPROXIMATELY_EQUAL_TO_OR_THE_IMAGE_OF),
"fcmp" => BinaryOp(symbol::Z_NOTATION_RELATIONAL_COMPOSITION),
"fint" => Op(symbol::INTEGRAL_AVERAGE_WITH_SLASH),
"flat" => Letter(SuperChar::from_char(symbol::MUSIC_FLAT_SIGN), Mode::Math),
"footnotesize" => TextMode(TextToken::Size(HtmlTextSize::Size80)),
"forall" => Ord(symbol::FOR_ALL),
"frac" => Frac(None),
"frak" => Transform(MathVariant::Transform(TextTransform::Fraktur)),
"frown" => ForceRelation(symbol::FROWN.as_op()),
"gamma" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_GAMMA), Mode::Math),
"gcd" => PseudoOperatorLimits("gcd"),
"ge" => Relation(symbol::GREATER_THAN_OR_EQUAL_TO),
"genfrac" => Genfrac,
"geq" => Relation(symbol::GREATER_THAN_OR_EQUAL_TO),
"geqq" => Relation(symbol::GREATER_THAN_OVER_EQUAL_TO),
"geqslant" => Relation(symbol::GREATER_THAN_OR_SLANTED_EQUAL_TO),
"gets" => Relation(symbol::LEFTWARDS_ARROW),
"gg" => Relation(symbol::MUCH_GREATER_THAN),
"ggg" => Relation(symbol::VERY_MUCH_GREATER_THAN),
"gggtr" => Relation(symbol::VERY_MUCH_GREATER_THAN),
"gimel" => Letter(SuperChar::from_char(symbol::GIMEL_SYMBOL), Mode::Math),
"gnapprox" => Relation(symbol::GREATER_THAN_AND_NOT_APPROXIMATE),
"gneq" => Relation(symbol::GREATER_THAN_AND_SINGLE_LINE_NOT_EQUAL_TO),
"gneqq" => Relation(symbol::GREATER_THAN_BUT_NOT_EQUAL_TO),
"gnsim" => Relation(symbol::GREATER_THAN_BUT_NOT_EQUIVALENT_TO),
"grave" => Accent(symbol::GRAVE_ACCENT, true, OpAttrs::empty()),
"gt" => Relation(symbol::GREATER_THAN_SIGN),
"gtrapprox" => Relation(symbol::GREATER_THAN_OR_APPROXIMATE),
"gtreqless" => Relation(symbol::GREATER_THAN_EQUAL_TO_OR_LESS_THAN),
"gtreqqless" => Relation(symbol::GREATER_THAN_ABOVE_DOUBLE_LINE_EQUAL_ABOVE_LESS_THAN),
"gtrdot" => Relation(symbol::GREATER_THAN_WITH_DOT),
"gtrless" => Relation(symbol::GREATER_THAN_OR_LESS_THAN),
"gtrsim" => Relation(symbol::GREATER_THAN_OR_EQUIVALENT_TO),
"gvertneqq" => Relation(symbol::GREATER_THAN_BUT_NOT_EQUAL_TO_WITH_VERTICAL_STROKE),
"hArr" => Relation(symbol::LEFT_RIGHT_DOUBLE_ARROW),
"harr" => Relation(symbol::LEFT_RIGHT_ARROW),
"hat" => Accent(symbol::MODIFIER_LETTER_CIRCUMFLEX_ACCENT, true, OpAttrs::STRETCHY_FALSE),
"hbar" => Letter(SuperChar::from_char(symbol::PLANCK_CONSTANT_OVER_TWO_PI), Mode::Math),
"hearts" => Letter(SuperChar::from_char(symbol::WHITE_HEART_SUIT), Mode::Math),
"heartsuit" => Letter(SuperChar::from_char(symbol::WHITE_HEART_SUIT), Mode::Math),
"hookleftarrow" => Relation(symbol::LEFTWARDS_ARROW_WITH_HOOK),
"hookrightarrow" => Relation(symbol::RIGHTWARDS_ARROW_WITH_HOOK),
"hphantom" => Phantom(PhantomKind::H),
"hskip" => KernOrSkip(UnitKind::TextUnits),
"hslash" => Letter(SuperChar::from_char(symbol::PLANCK_CONSTANT_OVER_TWO_PI), Mode::Math),
"hspace" => CustomSpace(UnitKind::TextUnits),
"huge" => TextMode(TextToken::Size(HtmlTextSize::Size200)),
"i" => TextMode(TextToken::Letter('ı')),
"idotsint" => CustomCmd(0, &predefined::IDOTSINT),
"iff" => CustomCmd(0, &predefined::IFF),
"iiiint" => Op(symbol::QUADRUPLE_INTEGRAL_OPERATOR),
"iiint" => Op(symbol::TRIPLE_INTEGRAL),
"iint" => Op(symbol::DOUBLE_INTEGRAL),
"image" => Letter(SuperChar::from_char(symbol::BLACK_LETTER_CAPITAL_I), Mode::Math),
"imageof" => Relation(symbol::IMAGE_OF),
"imath" => Letter(SuperChar::from_char(symbol::LATIN_SMALL_LETTER_DOTLESS_I), Mode::Math),
"impliedby" => CustomCmd(0, &predefined::IMPLIEDBY),
"implies" => CustomCmd(0, &predefined::IMPLIES),
"in" => Relation(symbol::ELEMENT_OF),
"inf" => PseudoOperatorLimits("inf"),
"infin" => Letter(SuperChar::from_char(symbol::INFINITY), Mode::Math),
"infty" => Letter(SuperChar::from_char(symbol::INFINITY), Mode::Math),
"injlim" => PseudoOperatorLimits("inj\u{2009}lim"),
"int" => Op(symbol::INTEGRAL),
"intBar" => Op(symbol::INTEGRAL_WITH_DOUBLE_STROKE),
"intbar" => Op(symbol::FINITE_PART_INTEGRAL),
"intclockwise" => Op(symbol::CLOCKWISE_INTEGRAL),
"intercal" => ForceBinaryOp(symbol::INTERCALATE.as_op()),
"iota" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_IOTA), Mode::Math),
"isin" => Relation(symbol::ELEMENT_OF),
"it" => TransformSwitch(MathVariant::Transform(TextTransform::Italic)),
"j" => TextMode(TextToken::Letter('ȷ')),
"jmath" => Letter(SuperChar::from_char(symbol::LATIN_SMALL_LETTER_DOTLESS_J), Mode::Math),
"kappa" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_KAPPA), Mode::Math),
"kern" => KernOrSkip(UnitKind::TextUnits),
"kernelcontraction" => Relation(symbol::HOMOTHETIC),
"ket" => CustomCmd(1, &predefined::KET),
"l" => TextMode(TextToken::Letter('ł')),
"lAngle" => Open(symbol::MATHEMATICAL_LEFT_DOUBLE_ANGLE_BRACKET),
"lArr" => Relation(symbol::LEFTWARDS_DOUBLE_ARROW),
"lBrace" => Open(symbol::LEFT_WHITE_CURLY_BRACKET),
"lVert" => Open(symbol::DOUBLE_VERTICAL_LINE),
"label" => Label,
"lambda" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_LAMBDA), Mode::Math),
"land" => BinaryOp(symbol::LOGICAL_AND),
"lang" => Open(symbol::MATHEMATICAL_LEFT_ANGLE_BRACKET),
"langle" => Open(symbol::MATHEMATICAL_LEFT_ANGLE_BRACKET),
"large" => TextMode(TextToken::Size(HtmlTextSize::Size120)),
"larr" => Relation(symbol::LEFTWARDS_ARROW),
"lbrace" => Open(symbol::LEFT_CURLY_BRACKET),
"lbrack" => Open(symbol::LEFT_SQUARE_BRACKET),
"lceil" => Open(symbol::LEFT_CEILING),
"ldotp" => ForcePunctuation(symbol::FULL_STOP.as_op()),
"ldots" => MathOrTextMode(&CustomCmd(0, &predefined::DOTS), symbol::HORIZONTAL_ELLIPSIS),
"le" => Relation(symbol::LESS_THAN_OR_EQUAL_TO),
"leadsto" => Relation(symbol::RIGHTWARDS_SQUIGGLE_ARROW),
"left" => Left,
"leftarrow" => Relation(symbol::LEFTWARDS_ARROW),
"leftarrowtail" => Relation(symbol::LEFTWARDS_ARROW_WITH_TAIL),
"leftharpoondown" => Relation(symbol::LEFTWARDS_HARPOON_WITH_BARB_DOWNWARDS),
"leftharpoonup" => Relation(symbol::LEFTWARDS_HARPOON_WITH_BARB_UPWARDS),
"leftleftarrows" => Relation(symbol::LEFTWARDS_PAIRED_ARROWS),
"leftrightarrow" => Relation(symbol::LEFT_RIGHT_ARROW),
"leftrightarrows" => Relation(symbol::LEFTWARDS_ARROW_OVER_RIGHTWARDS_ARROW),
"leftrightharpoons" => Relation(symbol::LEFTWARDS_HARPOON_OVER_RIGHTWARDS_HARPOON),
"leftrightsquigarrow" => Relation(symbol::LEFT_RIGHT_WAVE_ARROW),
"leftthreetimes" => ForceBinaryOp(symbol::LEFT_SEMIDIRECT_PRODUCT.as_op()),
"leq" => Relation(symbol::LESS_THAN_OR_EQUAL_TO),
"leqq" => Relation(symbol::LESS_THAN_OVER_EQUAL_TO),
"leqslant" => Relation(symbol::LESS_THAN_OR_SLANTED_EQUAL_TO),
"lessapprox" => Relation(symbol::LESS_THAN_OR_APPROXIMATE),
"lessdot" => Relation(symbol::LESS_THAN_WITH_DOT),
"lesseqgtr" => Relation(symbol::LESS_THAN_EQUAL_TO_OR_GREATER_THAN),
"lesseqqgtr" => Relation(symbol::LESS_THAN_ABOVE_DOUBLE_LINE_EQUAL_ABOVE_GREATER_THAN),
"lessgtr" => Relation(symbol::LESS_THAN_OR_GREATER_THAN),
"lesssim" => Relation(symbol::LESS_THAN_OR_EQUIVALENT_TO),
"lfloor" => Open(symbol::LEFT_FLOOR),
"lgroup" => Open(symbol::MATHEMATICAL_LEFT_FLATTENED_PARENTHESIS),
"lhd" => Relation(symbol::NORMAL_SUBGROUP_OF),
"lightning" => Relation(symbol::DOWNWARDS_ZIGZAG_ARROW),
"lim" => PseudoOperatorLimits("lim"),
"liminf" => PseudoOperatorLimits("lim\u{2009}inf"),
"limits" => Limits(LimitsKind::Always),
"limsup" => PseudoOperatorLimits("lim\u{2009}sup"),
"ll" => Relation(symbol::MUCH_LESS_THAN),
"llangle" => Open(symbol::Z_NOTATION_LEFT_BINDING_BRACKET), "llbracket" => Open(symbol::MATHEMATICAL_LEFT_WHITE_SQUARE_BRACKET),
"llcorner" => ForceOpen(symbol::BOTTOM_LEFT_CORNER, ForceStretchy::Pretend),
"lll" => Relation(symbol::VERY_MUCH_LESS_THAN),
"llless" => Relation(symbol::VERY_MUCH_LESS_THAN),
"lmoustache" => ForceOpen(symbol::UPPER_LEFT_OR_LOWER_RIGHT_CURLY_BRACKET_SECTION, ForceStretchy::Yes),
"llparenthesis" => Open(symbol::Z_NOTATION_LEFT_IMAGE_BRACKET),
"lnapprox" => Relation(symbol::LESS_THAN_AND_NOT_APPROXIMATE),
"lneq" => Relation(symbol::LESS_THAN_AND_SINGLE_LINE_NOT_EQUAL_TO),
"lneqq" => Relation(symbol::LESS_THAN_BUT_NOT_EQUAL_TO),
"lnot" => Ord(symbol::NOT_SIGN),
"lnsim" => Relation(symbol::LESS_THAN_BUT_NOT_EQUIVALENT_TO),
"longleftarrow" => Relation(symbol::LONG_LEFTWARDS_ARROW),
"longleftrightarrow" => Relation(symbol::LONG_LEFT_RIGHT_ARROW),
"longmapsto" => Relation(symbol::LONG_RIGHTWARDS_ARROW_FROM_BAR),
"longrightarrow" => Relation(symbol::LONG_RIGHTWARDS_ARROW),
"looparrowleft" => Relation(symbol::LEFTWARDS_ARROW_WITH_LOOP),
"looparrowright" => Relation(symbol::RIGHTWARDS_ARROW_WITH_LOOP),
"lor" => BinaryOp(symbol::LOGICAL_OR),
"lozenge" => Letter(SuperChar::from_char(symbol::LOZENGE), Mode::Math),
"lq" => Letter(SuperChar::from_char(symbol::LEFT_SINGLE_QUOTATION_MARK), Mode::MathOrText),
"lrArr" => Relation(symbol::LEFT_RIGHT_DOUBLE_ARROW),
"lrarr" => Relation(symbol::LEFT_RIGHT_ARROW),
"lrcorner" => ForceClose(symbol::BOTTOM_RIGHT_CORNER, ForceStretchy::Pretend),
"lt" => Relation(symbol::LESS_THAN_SIGN),
"ltimes" => ForceBinaryOp(symbol::LEFT_NORMAL_FACTOR_SEMIDIRECT_PRODUCT.as_op()),
"lvert" => Open(symbol::VERTICAL_LINE),
"lvertneqq" => Relation(symbol::LESS_THAN_BUT_NOT_EQUAL_TO_WITH_VERTICAL_STROKE),
"maltese" => Letter(SuperChar::from_char(symbol::MALTESE_CROSS), Mode::MathOrText),
"mapsto" => Relation(symbol::RIGHTWARDS_ARROW_FROM_BAR),
"mathbb" => Transform(MathVariant::Transform(TextTransform::DoubleStruck)),
"mathbf" => Transform(MathVariant::Transform(TextTransform::Bold)),
"mathbin" => MathClass(MathClassKind::Bin),
"mathcal" => Transform(MathVariant::Transform(TextTransform::ScriptChancery)),
"mathclose" => MathClass(MathClassKind::Close),
"mathfrak" => Transform(MathVariant::Transform(TextTransform::Fraktur)),
"mathit" => Transform(MathVariant::Transform(TextTransform::Italic)),
"mathop" => MathClass(MathClassKind::Op),
"mathopen" => MathClass(MathClassKind::Open),
"mathord" => MathClass(MathClassKind::Ord),
"mathpunct" => MathClass(MathClassKind::Punct),
"mathrel" => MathClass(MathClassKind::Rel),
"mathring" => Accent(symbol::RING_ABOVE, true, OpAttrs::empty()),
"mathrm" => Transform(MathVariant::Normal),
"mathscr" => Transform(MathVariant::Transform(TextTransform::ScriptRoundhand)),
"mathsf" => Transform(MathVariant::Transform(TextTransform::SansSerif)),
"mathsterling" => Letter(SuperChar::from_char(symbol::POUND_SIGN), Mode::Math),
"mathstrut" => CustomCmd(0, &predefined::MATHSTRUT),
"mathtt" => Transform(MathVariant::Transform(TextTransform::Monospace)),
"max" => PseudoOperatorLimits("max"),
"measeq" => Relation(symbol::MEASURED_BY), "measuredangle" => Letter(SuperChar::from_char(symbol::MEASURED_ANGLE), Mode::Math),
"medspace" => Space(LatexUnit::Mu.length_with_unit(4.0)),
"mho" => Letter(SuperChar::from_char(symbol::INVERTED_OHM_SIGN), Mode::Math),
"mid" => Relation(symbol::DIVIDES),
"middle" => Middle,
"min" => PseudoOperatorLimits("min"),
"minuscolon" => Relation(symbol::EXCESS),
"minuso" => ForceBinaryOp(symbol::CIRCLE_WITH_HORIZONTAL_BAR),
"mkern" => KernOrSkip(UnitKind::MathUnits),
"mod" => CustomCmd(0, &predefined::MOD),
"models" => Relation(symbol::TRUE),
"mp" => BinaryOp(symbol::MINUS_OR_PLUS_SIGN),
"mskip" => KernOrSkip(UnitKind::MathUnits),
"mspace" => CustomSpace(UnitKind::MathUnits),
"mu" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_MU), Mode::Math),
"multimap" => Relation(symbol::MULTIMAP),
"nLeftarrow" => Relation(symbol::LEFTWARDS_DOUBLE_ARROW_WITH_STROKE),
"nLeftrightarrow" => Relation(symbol::LEFT_RIGHT_DOUBLE_ARROW_WITH_STROKE),
"nRightarrow" => Relation(symbol::RIGHTWARDS_DOUBLE_ARROW_WITH_STROKE),
"nVDash" => Relation(symbol::NEGATED_DOUBLE_VERTICAL_BAR_DOUBLE_RIGHT_TURNSTILE),
"nVdash" => Relation(symbol::DOES_NOT_FORCE),
"nabla" => UprightLetter(SuperChar::from_char(symbol::NABLA)),
"natnums" => Letter(SuperChar::from_char(symbol::DOUBLE_STRUCK_CAPITAL_N), Mode::Math),
"natural" => Letter(SuperChar::from_char(symbol::MUSIC_NATURAL_SIGN), Mode::Math),
"ncong" => Relation(symbol::NEITHER_APPROXIMATELY_NOR_ACTUALLY_EQUAL_TO),
"ne" => Relation(symbol::NOT_EQUAL_TO),
"nearrow" => Relation(symbol::NORTH_EAST_ARROW),
"neg" => Ord(symbol::NOT_SIGN),
"neq" => Relation(symbol::NOT_EQUAL_TO),
"nequiv" => Relation(symbol::NOT_IDENTICAL_TO),
"newline" => NewLine,
"nexists" => Ord(symbol::THERE_DOES_NOT_EXIST),
"ngeq" => Relation(symbol::NEITHER_GREATER_THAN_NOR_EQUAL_TO),
"ngeqq" => CustomCmd(0, &[Overlay(OverlayChar::Solidus), Relation(symbol::GREATER_THAN_OVER_EQUAL_TO)]),
"ngeqslant" => CustomCmd(0, &[Overlay(OverlayChar::Solidus), Relation(symbol::GREATER_THAN_OR_SLANTED_EQUAL_TO)]),
"ngtr" => Relation(symbol::NOT_GREATER_THAN),
"ngtrless" => Relation(symbol::NEITHER_GREATER_THAN_NOR_LESS_THAN),
"ngtrsim" => Relation(symbol::NEITHER_GREATER_THAN_NOR_EQUIVALENT_TO),
"ni" => Relation(symbol::CONTAINS_AS_MEMBER),
"nleftarrow" => Relation(symbol::LEFTWARDS_ARROW_WITH_STROKE),
"nleftrightarrow" => Relation(symbol::LEFT_RIGHT_ARROW_WITH_STROKE),
"nleqq" => CustomCmd(0, &[Overlay(OverlayChar::Solidus), Relation(symbol::LESS_THAN_OVER_EQUAL_TO)]),
"nleqslant" => CustomCmd(0, &[Overlay(OverlayChar::Solidus), Relation(symbol::LESS_THAN_OR_SLANTED_EQUAL_TO)]),
"nleq" => Relation(symbol::NEITHER_LESS_THAN_NOR_EQUAL_TO),
"nless" => Relation(symbol::NOT_LESS_THAN),
"nlessgt" => Relation(symbol::NEITHER_LESS_THAN_NOR_GREATER_THAN),
"nlesssim" => Relation(symbol::NEITHER_LESS_THAN_NOR_EQUIVALENT_TO),
"nmid" => Relation(symbol::DOES_NOT_DIVIDE),
"nolimits" => Limits(LimitsKind::Never),
"nonumber" => NoNumber,
"normalsize" => TextMode(TextToken::Size(HtmlTextSize::Size100)),
"not" => Overlay(OverlayChar::Solidus),
"notag" => NoNumber,
"notin" => Relation(symbol::NOT_AN_ELEMENT_OF),
"notni" => Relation(symbol::DOES_NOT_CONTAIN_AS_MEMBER),
"nparallel" => Relation(symbol::NOT_PARALLEL_TO),
"nprec" => Relation(symbol::DOES_NOT_PRECEDE),
"npreceq" => Relation(symbol::DOES_NOT_PRECEDE_OR_EQUAL),
"nrightarrow" => Relation(symbol::RIGHTWARDS_ARROW_WITH_STROKE),
"nsim" => Relation(symbol::NOT_TILDE),
"nsubset" => Relation(symbol::NOT_A_SUBSET_OF),
"nsubseteq" => Relation(symbol::NEITHER_A_SUBSET_OF_NOR_EQUAL_TO),
"nsubseteqq" => CustomCmd(0, &[Overlay(OverlayChar::Solidus), Relation(symbol::SUBSET_OF_ABOVE_EQUALS_SIGN)]),
"nsucc" => Relation(symbol::DOES_NOT_SUCCEED),
"nsucceq" => Relation(symbol::DOES_NOT_SUCCEED_OR_EQUAL),
"nsupset" => Relation(symbol::NOT_A_SUPERSET_OF),
"nsupseteq" => Relation(symbol::NEITHER_A_SUPERSET_OF_NOR_EQUAL_TO),
"nsupseteqq" => CustomCmd(0, &[Overlay(OverlayChar::Solidus), Relation(symbol::SUPERSET_OF_ABOVE_EQUALS_SIGN)]),
"ntriangleleft" => Relation(symbol::NOT_NORMAL_SUBGROUP_OF),
"ntrianglelefteq" => Relation(symbol::NOT_NORMAL_SUBGROUP_OF_OR_EQUAL_TO),
"ntriangleright" => Relation(symbol::DOES_NOT_CONTAIN_AS_NORMAL_SUBGROUP),
"ntrianglerighteq" => Relation(symbol::DOES_NOT_CONTAIN_AS_NORMAL_SUBGROUP_OR_EQUAL),
"nu" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_NU), Mode::Math),
"nvDash" => Relation(symbol::NOT_TRUE),
"nvdash" => Relation(symbol::DOES_NOT_PROVE),
"nwarrow" => Relation(symbol::NORTH_WEST_ARROW),
"o" => TextMode(TextToken::Letter('ø')),
"odot" => ForceBinaryOp(symbol::CIRCLED_DOT_OPERATOR.as_op()),
"oe" => TextMode(TextToken::Letter('œ')),
"oiiint" => Op(symbol::VOLUME_INTEGRAL),
"oiint" => Op(symbol::SURFACE_INTEGRAL),
"oint" => Op(symbol::CONTOUR_INTEGRAL),
"ointctrclockwise" => Op(symbol::ANTICLOCKWISE_CONTOUR_INTEGRAL),
"omega" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_OMEGA), Mode::Math),
"omicron" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_OMICRON), Mode::Math),
"ominus" => BinaryOp(symbol::CIRCLED_MINUS),
"operatorname" => OperatorName { with_limits: false },
"operatorname*" => OperatorName { with_limits: true },
"operatornamewithlimits" => OperatorName { with_limits: true },
"oplus" => BinaryOp(symbol::CIRCLED_PLUS),
"origof" => Relation(symbol::ORIGINAL_OF),
"oslash" => BinaryOp(symbol::CIRCLED_DIVISION_SLASH),
"otimes" => ForceBinaryOp(symbol::CIRCLED_TIMES.as_op()),
"over" => InfixGenFrac { with_line: true, delim: None },
"overbrace" => OverUnderBrace(symbol::TOP_CURLY_BRACKET, true),
"overbracket" => OverUnderBrace(symbol::TOP_SQUARE_BRACKET, true),
"overleftarrow" => Accent(symbol::LEFTWARDS_ARROW.as_op(), true, OpAttrs::empty()),
"overline" => Accent(symbol::COMBINING_LOW_LINE, true, OpAttrs::STRETCHY_TRUE),
"overparen" => OverUnderBrace(symbol::TOP_PARENTHESIS, true),
"overrightarrow" => Accent(symbol::RIGHTWARDS_ARROW.as_op(), true, OpAttrs::empty()),
"overset" => Overset,
"owns" => Relation(symbol::CONTAINS_AS_MEMBER),
"parallel" => Relation(symbol::PARALLEL_TO),
"partial" => Letter(SuperChar::from_char(symbol::PARTIAL_DIFFERENTIAL), Mode::Math),
"perp" => Relation(symbol::PERPENDICULAR),
"phantom" => Phantom(PhantomKind::Full),
"phi" => Letter(SuperChar::from_char(symbol::GREEK_PHI_SYMBOL), Mode::Math),
"pi" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_PI), Mode::Math),
"pitchfork" => Relation(symbol::PITCHFORK),
"plim" => PseudoOperatorLimits("plim"),
"plusmn" => BinaryOp(symbol::PLUS_MINUS_SIGN),
"pm" => BinaryOp(symbol::PLUS_MINUS_SIGN),
"pmod" => CustomCmd(1, &predefined::PMOD),
"pounds" => Letter(SuperChar::from_char(symbol::POUND_SIGN), Mode::Math),
"prec" => Relation(symbol::PRECEDES),
"precapprox" => Relation(symbol::PRECEDES_ABOVE_ALMOST_EQUAL_TO),
"preccurlyeq" => Relation(symbol::PRECEDES_OR_EQUAL_TO),
"preceq" => Relation(symbol::PRECEDES_ABOVE_SINGLE_LINE_EQUALS_SIGN),
"precnapprox" => Relation(symbol::PRECEDES_ABOVE_NOT_ALMOST_EQUAL_TO),
"precneqq" => Relation(symbol::PRECEDES_ABOVE_NOT_EQUAL_TO),
"precnsim" => Relation(symbol::PRECEDES_BUT_NOT_EQUIVALENT_TO),
"precsim" => Relation(symbol::PRECEDES_OR_EQUIVALENT_TO),
"prescript" => Prescript,
"prime" => Ord(symbol::PRIME),
"prod" => Op(symbol::N_ARY_PRODUCT),
"propto" => Relation(symbol::PROPORTIONAL_TO),
"psi" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_PSI), Mode::Math),
"qquad" => Space(LatexUnit::Em.length_with_unit(2.0)),
"quad" => Space(LatexUnit::Em.length_with_unit(1.0)),
"questeq" => Relation(symbol::QUESTIONED_EQUAL_TO), "r" => TextMode(TextToken::Accent(symbol::COMBINING_RING_ABOVE)),
"rAngle" => Close(symbol::MATHEMATICAL_RIGHT_DOUBLE_ANGLE_BRACKET),
"rArr" => Relation(symbol::RIGHTWARDS_DOUBLE_ARROW),
"rBrace" => Close(symbol::RIGHT_WHITE_CURLY_BRACKET),
"rVert" => Close(symbol::DOUBLE_VERTICAL_LINE),
"rang" => Close(symbol::MATHEMATICAL_RIGHT_ANGLE_BRACKET),
"rangle" => Close(symbol::MATHEMATICAL_RIGHT_ANGLE_BRACKET),
"rarr" => Relation(symbol::RIGHTWARDS_ARROW),
"ratio" => ForceRelation(symbol::RATIO.as_op()),
"rbrace" => Close(symbol::RIGHT_CURLY_BRACKET),
"rbrack" => Close(symbol::RIGHT_SQUARE_BRACKET),
"rceil" => Close(symbol::RIGHT_CEILING),
"real" => Letter(SuperChar::from_char(symbol::BLACK_LETTER_CAPITAL_R), Mode::Math),
"reals" => Letter(SuperChar::from_char(symbol::DOUBLE_STRUCK_CAPITAL_R), Mode::Math),
"restriction" => Relation(symbol::UPWARDS_HARPOON_WITH_BARB_RIGHTWARDS),
"rfloor" => Close(symbol::RIGHT_FLOOR),
"rgroup" => Close(symbol::MATHEMATICAL_RIGHT_FLATTENED_PARENTHESIS),
"rhd" => Relation(symbol::CONTAINS_AS_NORMAL_SUBGROUP),
"rho" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_RHO), Mode::Math),
"right" => Right,
"rightarrow" => Relation(symbol::RIGHTWARDS_ARROW),
"rightarrowtail" => Relation(symbol::RIGHTWARDS_ARROW_WITH_TAIL),
"rightharpoondown" => Relation(symbol::RIGHTWARDS_HARPOON_WITH_BARB_DOWNWARDS),
"rightharpoonup" => Relation(symbol::RIGHTWARDS_HARPOON_WITH_BARB_UPWARDS),
"rightleftarrows" => Relation(symbol::RIGHTWARDS_ARROW_OVER_LEFTWARDS_ARROW),
"rightleftharpoons" => Relation(symbol::RIGHTWARDS_HARPOON_OVER_LEFTWARDS_HARPOON),
"rightrightarrows" => Relation(symbol::RIGHTWARDS_PAIRED_ARROWS),
"rightsquigarrow" => Relation(symbol::RIGHTWARDS_SQUIGGLE_ARROW),
"rightthreetimes" => ForceBinaryOp(symbol::RIGHT_SEMIDIRECT_PRODUCT.as_op()),
"risingdotseq" => Relation(symbol::IMAGE_OF_OR_APPROXIMATELY_EQUAL_TO),
"rm" => TransformSwitch(MathVariant::Normal),
"rmoustache" => ForceClose(symbol::UPPER_RIGHT_OR_LOWER_LEFT_CURLY_BRACKET_SECTION, ForceStretchy::Yes),
"rq" => Letter(SuperChar::from_char(symbol::RIGHT_SINGLE_QUOTATION_MARK), Mode::MathOrText),
"rrangle" => Close(symbol::Z_NOTATION_RIGHT_BINDING_BRACKET), "rrbracket" => Close(symbol::MATHEMATICAL_RIGHT_WHITE_SQUARE_BRACKET),
"rrparenthesis" => Close(symbol::Z_NOTATION_RIGHT_IMAGE_BRACKET),
"rtimes" => ForceBinaryOp(symbol::RIGHT_NORMAL_FACTOR_SEMIDIRECT_PRODUCT.as_op()),
"rupee" => Letter(SuperChar::from_char('₹'), Mode::Math),
"rvert" => Close(symbol::VERTICAL_LINE),
"scriptscriptstyle" => Style(Style::ScriptScript),
"scriptsize" => TextMode(TextToken::Size(HtmlTextSize::Size70)),
"scriptstyle" => Style(Style::Script),
"searrow" => Relation(symbol::SOUTH_EAST_ARROW),
"sect" => Letter(SuperChar::from_char(symbol::SECTION_SIGN), Mode::MathOrText),
"setminus" => BinaryOp(symbol::SET_MINUS),
"sf" => TransformSwitch(MathVariant::Transform(TextTransform::SansSerif)),
"sideset" => Sideset,
"sixptsize" => TextMode(TextToken::Size(HtmlTextSize::Size60)),
"sharp" => Letter(SuperChar::from_char(symbol::MUSIC_SHARP_SIGN), Mode::Math),
"sigma" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_SIGMA), Mode::Math),
"sim" => Relation(symbol::TILDE_OPERATOR),
"simeq" => Relation(symbol::ASYMPTOTICALLY_EQUAL_TO),
"slashed" => Overlay(OverlayChar::Solidus),
"small" => TextMode(TextToken::Size(HtmlTextSize::Size90)),
"smile" => ForceRelation(symbol::SMILE.as_op()),
"sout" => TextMode(TextToken::Style(HtmlTextStyle::Strikethrough)),
"space" => NonBreakingSpace,
"spades" => Letter(SuperChar::from_char(symbol::BLACK_SPADE_SUIT), Mode::Math),
"spadesuit" => Letter(SuperChar::from_char(symbol::BLACK_SPADE_SUIT), Mode::Math),
"sphericalangle" => Letter(SuperChar::from_char(symbol::SPHERICAL_ANGLE), Mode::Math),
"sqcap" => BinaryOp(symbol::SQUARE_CAP),
"sqcup" => BinaryOp(symbol::SQUARE_CUP),
"sqrt" => Sqrt,
"sqsubset" => Relation(symbol::SQUARE_IMAGE_OF),
"sqsubseteq" => Relation(symbol::SQUARE_IMAGE_OF_OR_EQUAL_TO),
"sqsupset" => Relation(symbol::SQUARE_ORIGINAL_OF),
"sqsupseteq" => Relation(symbol::SQUARE_ORIGINAL_OF_OR_EQUAL_TO),
"square" => Letter(SuperChar::from_char(symbol::WHITE_SQUARE), Mode::Math),
"ss" => TextMode(TextToken::Letter('ß')),
"stackrel" => Overset,
"star" => ForceBinaryOp(symbol::STAR_OPERATOR.as_op()),
"stareq" => Relation(symbol::STAR_EQUALS), "sub" => Relation(symbol::SUBSET_OF),
"sube" => Relation(symbol::SUBSET_OF_OR_EQUAL_TO),
"subset" => Relation(symbol::SUBSET_OF),
"subseteq" => Relation(symbol::SUBSET_OF_OR_EQUAL_TO),
"subseteqq" => Relation(symbol::SUBSET_OF_ABOVE_EQUALS_SIGN),
"subsetneq" => Relation(symbol::SUBSET_OF_WITH_NOT_EQUAL_TO),
"subsetneqq" => Relation(symbol::SUBSET_OF_ABOVE_NOT_EQUAL_TO),
"succ" => Relation(symbol::SUCCEEDS),
"succapprox" => Relation(symbol::SUCCEEDS_ABOVE_ALMOST_EQUAL_TO),
"succcurlyeq" => Relation(symbol::SUCCEEDS_OR_EQUAL_TO),
"succeq" => Relation(symbol::SUCCEEDS_ABOVE_SINGLE_LINE_EQUALS_SIGN),
"succnapprox" => Relation(symbol::SUCCEEDS_ABOVE_NOT_ALMOST_EQUAL_TO),
"succneqq" => Relation(symbol::SUCCEEDS_ABOVE_NOT_EQUAL_TO),
"succnsim" => Relation(symbol::SUCCEEDS_BUT_NOT_EQUIVALENT_TO),
"succsim" => Relation(symbol::SUCCEEDS_OR_EQUIVALENT_TO),
"sum" => Op(symbol::N_ARY_SUMMATION),
"sumint" => Op(symbol::SUMMATION_WITH_INTEGRAL),
"sup" => PseudoOperatorLimits("sup"),
"supe" => Relation(symbol::SUPERSET_OF_OR_EQUAL_TO),
"supset" => Relation(symbol::SUPERSET_OF),
"supseteq" => Relation(symbol::SUPERSET_OF_OR_EQUAL_TO),
"supseteqq" => Relation(symbol::SUPERSET_OF_ABOVE_EQUALS_SIGN),
"supsetneq" => Relation(symbol::SUPERSET_OF_WITH_NOT_EQUAL_TO),
"supsetneqq" => Relation(symbol::SUPERSET_OF_ABOVE_NOT_EQUAL_TO),
"surd" => CustomCmd(0, &predefined::SURD),
"swarrow" => Relation(symbol::SOUTH_WEST_ARROW),
"symbf" => Transform(MathVariant::Transform(TextTransform::BoldItalic)),
"tag" => Tag,
"tau" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_TAU), Mode::Math),
"tbinom" => Binom(Some(FracAttr::DisplayStyleFalse)),
"text" => Text(None),
"textasciicircum" => TextMode(TextToken::Letter('ˆ')),
"textbackslash" => TextMode(TextToken::Letter('\\')),
"textbar" => TextMode(TextToken::Letter('|')),
"textbardbl" => TextMode(TextToken::Letter('‖')),
"textbf" => Text(Some(HtmlTextStyle::Bold)),
"textbraceleft" => TextMode(TextToken::Letter('{')),
"textbraceright" => TextMode(TextToken::Letter('}')),
"textdagger" => TextMode(TextToken::Letter(symbol::DAGGER)),
"textdaggerdbl" => TextMode(TextToken::Letter(symbol::DOUBLE_DAGGER)),
"textdegree" => TextMode(TextToken::Letter(symbol::DEGREE_SIGN)),
"textdollar" => TextMode(TextToken::Letter(symbol::DOLLAR_SIGN)),
"textellipsis" => TextMode(TextToken::Letter(symbol::HORIZONTAL_ELLIPSIS)),
"textemdash" => TextMode(TextToken::Letter('—')),
"textendash" => TextMode(TextToken::Letter('–')),
"textgreater" => TextMode(TextToken::Letter('>')),
"textit" => Text(Some(HtmlTextStyle::Italic)),
"textless" => TextMode(TextToken::Letter('<')),
"textquotedblleft" => TextMode(TextToken::Letter('“')),
"textquotedblright" => TextMode(TextToken::Letter(symbol::RIGHT_DOUBLE_QUOTATION_MARK)),
"textquoteleft" => TextMode(TextToken::Letter(symbol::LEFT_SINGLE_QUOTATION_MARK)),
"textquoteright" => TextMode(TextToken::Letter(symbol::RIGHT_SINGLE_QUOTATION_MARK)),
"textregistered" => TextMode(TextToken::Letter('®')),
"textrm" => Text(Some(HtmlTextStyle::Serif)),
"textsc" => Text(Some(HtmlTextStyle::SmallCaps)),
"textsf" => Text(Some(HtmlTextStyle::SansSerif)),
"textsterling" => TextMode(TextToken::Letter(symbol::POUND_SIGN)),
"textstyle" => Style(Style::Text),
"texttt" => Text(Some(HtmlTextStyle::Typewriter)),
"textunderscore" => TextMode(TextToken::Letter('_')),
"textyen" => TextMode(TextToken::Letter(symbol::YEN_SIGN)),
"tfrac" => Frac(Some(FracAttr::DisplayStyleFalse)),
"therefore" => ForceRelation(symbol::THEREFORE.as_op()),
"theta" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_THETA), Mode::Math),
"thetasym" => Letter(SuperChar::from_char(symbol::GREEK_THETA_SYMBOL), Mode::Math),
"thickspace" => Space(LatexUnit::Mu.length_with_unit(5.0)),
"thinspace" => Space(LatexUnit::Mu.length_with_unit(3.0)),
"tilde" => Accent(symbol::SMALL_TILDE, true, OpAttrs::STRETCHY_FALSE),
"times" => ForceBinaryOp(symbol::MULTIPLICATION_SIGN.as_op()),
"tiny" => TextMode(TextToken::Size(HtmlTextSize::Size50)),
"to" => Relation(symbol::RIGHTWARDS_ARROW),
"top" => Letter(SuperChar::from_char(symbol::DOWN_TACK), Mode::Math),
"triangle" => Letter(symbol::WHITE_UP_POINTING_TRIANGLE.as_superchar(), Mode::Math),
"triangledown" => Letter(symbol::WHITE_DOWN_POINTING_TRIANGLE.as_superchar(), Mode::Math),
"triangleleft" => ForceBinaryOp(symbol::WHITE_LEFT_POINTING_TRIANGLE),
"trianglelefteq" => Relation(symbol::NORMAL_SUBGROUP_OF_OR_EQUAL_TO),
"triangleq" => Relation(symbol::DELTA_EQUAL_TO),
"triangleright" => ForceBinaryOp(symbol::WHITE_RIGHT_POINTING_TRIANGLE),
"trianglerighteq" => Relation(symbol::CONTAINS_AS_NORMAL_SUBGROUP_OR_EQUAL_TO),
"tt" => TransformSwitch(MathVariant::Transform(TextTransform::Monospace)),
"twoheadleftarrow" => Relation(symbol::LEFTWARDS_TWO_HEADED_ARROW),
"twoheadrightarrow" => Relation(symbol::RIGHTWARDS_TWO_HEADED_ARROW),
"u" => TextMode(TextToken::Accent(symbol::COMBINING_BREVE)),
"uArr" => Relation(symbol::UPWARDS_DOUBLE_ARROW),
"uarr" => Relation(symbol::UPWARDS_ARROW),
"ulcorner" => ForceOpen(symbol::TOP_LEFT_CORNER, ForceStretchy::Pretend),
"underbrace" => OverUnderBrace(symbol::BOTTOM_CURLY_BRACKET, false),
"underbracket" => OverUnderBrace(symbol::BOTTOM_SQUARE_BRACKET, false),
"underline" => Accent(symbol::COMBINING_LOW_LINE, false, OpAttrs::STRETCHY_TRUE),
"underparen" => OverUnderBrace(symbol::BOTTOM_PARENTHESIS, false),
"underset" => Underset,
"unlhd" => Relation(symbol::NORMAL_SUBGROUP_OF_OR_EQUAL_TO),
"unrhd" => Relation(symbol::CONTAINS_AS_NORMAL_SUBGROUP_OR_EQUAL_TO),
"uparrow" => Relation(symbol::UPWARDS_ARROW),
"updownarrow" => Relation(symbol::UP_DOWN_ARROW),
"upharpoonleft" => Relation(symbol::UPWARDS_HARPOON_WITH_BARB_LEFTWARDS),
"upharpoonright" => Relation(symbol::UPWARDS_HARPOON_WITH_BARB_RIGHTWARDS),
"uplus" => BinaryOp(symbol::MULTISET_UNION),
"upsilon" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_UPSILON), Mode::Math),
"upuparrows" => Relation(symbol::UPWARDS_PAIRED_ARROWS),
"urcorner" => ForceClose(symbol::TOP_RIGHT_CORNER, ForceStretchy::Pretend),
"v" => TextMode(TextToken::Accent(symbol::COMBINING_CARON)),
"vDash" => Relation(symbol::TRUE),
"varDelta" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_DELTA), Mode::Math), "varGamma" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_GAMMA), Mode::Math), "varLambda" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_LAMBDA), Mode::Math), "varOmega" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_OMEGA), Mode::Math), "varPhi" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_PHI), Mode::Math), "varPi" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_PI), Mode::Math), "varPsi" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_PSI), Mode::Math), "varSigma" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_SIGMA), Mode::Math), "varTheta" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_THETA), Mode::Math), "varUpsilon" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_UPSILON), Mode::Math), "varXi" => Letter(SuperChar::from_char(symbol::GREEK_CAPITAL_LETTER_XI), Mode::Math), "varepsilon" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_EPSILON), Mode::Math),
"varkappa" => Letter(SuperChar::from_char(symbol::GREEK_KAPPA_SYMBOL), Mode::Math),
"varnothing" => Letter(SuperChar::from_char(symbol::EMPTY_SET), Mode::Math),
"varointclockwise" => Op(symbol::CLOCKWISE_CONTOUR_INTEGRAL),
"varphi" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_PHI), Mode::Math),
"varpi" => Letter(SuperChar::from_char(symbol::GREEK_PI_SYMBOL), Mode::Math),
"varrho" => Letter(SuperChar::from_char(symbol::GREEK_RHO_SYMBOL), Mode::Math),
"varsigma" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_FINAL_SIGMA), Mode::Math),
"varsubsetneq" => Relation(symbol::SUBSET_OF_WITH_NOT_EQUAL_TO_WITH_STROKE_THROUGH_BOTTOM_MEMBERS),
"varsubsetneqq" => Relation(symbol::SUBSET_OF_ABOVE_NOT_EQUAL_TO_WITH_STROKE_THROUGH_BOTTOM_MEMBERS),
"varsupsetneq" => Relation(symbol::SUPERSET_OF_WITH_NOT_EQUAL_TO_WITH_STROKE_THROUGH_BOTTOM_MEMBERS),
"varsupsetneqq" => Relation(symbol::SUPERSET_OF_ABOVE_NOT_EQUAL_TO_WITH_STROKE_THROUGH_BOTTOM_MEMBERS),
"vartheta" => Letter(SuperChar::from_char(symbol::GREEK_THETA_SYMBOL), Mode::Math),
"vartriangle" => ForceRelation(symbol::WHITE_UP_POINTING_TRIANGLE),
"vartriangleleft" => Relation(symbol::NORMAL_SUBGROUP_OF),
"vartriangleright" => Relation(symbol::CONTAINS_AS_NORMAL_SUBGROUP),
"vcentcolon" => ForceRelation(symbol::RATIO.as_op()),
"vdash" => Relation(symbol::RIGHT_TACK),
"vdots" => Relation(symbol::VERTICAL_ELLIPSIS),
"vec" => Accent(symbol::COMBINING_RIGHT_ARROW_ABOVE, true, OpAttrs::STRETCHY_FALSE),
"vee" => BinaryOp(symbol::LOGICAL_OR),
"veebar" => BinaryOp(symbol::XOR),
"veeeq" => Relation(symbol::EQUIANGULAR_TO), "vert" => Ord(symbol::VERTICAL_LINE),
"vertoverlay" => Overlay(OverlayChar::VerticalLine),
"vphantom" => Phantom(PhantomKind::V),
"wedge" => BinaryOp(symbol::LOGICAL_AND),
"wedgeq" => Relation(symbol::ESTIMATES), "weierp" => Letter(SuperChar::from_char(symbol::SCRIPT_CAPITAL_P), Mode::Math),
"widehat" => Accent(symbol::COMBINING_CIRCUMFLEX_ACCENT, true, OpAttrs::STRETCHY_TRUE),
"wp" => Letter(SuperChar::from_char(symbol::SCRIPT_CAPITAL_P), Mode::Math),
"wr" => ForceBinaryOp(symbol::WREATH_PRODUCT.as_op()),
"xLeftarrow" => XArrow(symbol::LEFTWARDS_DOUBLE_ARROW),
"xLeftrightarrow" => XArrow(symbol::LEFT_RIGHT_DOUBLE_ARROW),
"xRightarrow" => XArrow(symbol::RIGHTWARDS_DOUBLE_ARROW),
"xcancel" => Enclose(Notation::UP_DIAGONAL.union(Notation::DOWN_DIAGONAL)),
"xhookleftarrow" => XArrow(symbol::LEFTWARDS_ARROW_WITH_HOOK),
"xhookrightarrow" => XArrow(symbol::RIGHTWARDS_ARROW_WITH_HOOK),
"xi" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_XI), Mode::Math),
"xleftarrow" => XArrow(symbol::LEFTWARDS_ARROW),
"xleftharpoondown" => XArrow(symbol::LEFTWARDS_HARPOON_WITH_BARB_DOWNWARDS),
"xleftharpoonup" => XArrow(symbol::LEFTWARDS_HARPOON_WITH_BARB_UPWARDS),
"xleftrightarrow" => XArrow(symbol::LEFT_RIGHT_ARROW),
"xleftrightharpoons" => XArrow(symbol::LEFTWARDS_HARPOON_OVER_RIGHTWARDS_HARPOON),
"xlongequal" => XArrow(symbol::EQUALS_SIGN),
"xmapsto" => XArrow(symbol::RIGHTWARDS_ARROW_FROM_BAR),
"xrightarrow" => XArrow(symbol::RIGHTWARDS_ARROW),
"xrightharpoondown" => XArrow(symbol::RIGHTWARDS_HARPOON_WITH_BARB_DOWNWARDS),
"xrightharpoonup" => XArrow(symbol::RIGHTWARDS_HARPOON_WITH_BARB_UPWARDS),
"xrightleftharpoons" => XArrow(symbol::RIGHTWARDS_HARPOON_OVER_LEFTWARDS_HARPOON),
"xtofrom" => XArrow(symbol::RIGHTWARDS_ARROW_OVER_LEFTWARDS_ARROW),
"xtwoheadleftarrow" => XArrow(symbol::LEFTWARDS_TWO_HEADED_ARROW),
"xtwoheadrightarrow" => XArrow(symbol::RIGHTWARDS_TWO_HEADED_ARROW),
"yen" => Letter(SuperChar::from_char(symbol::YEN_SIGN), Mode::MathOrText),
"zeta" => Letter(SuperChar::from_char(symbol::GREEK_SMALL_LETTER_ZETA), Mode::Math),
"{" => MathOrTextMode(&Open(symbol::LEFT_CURLY_BRACKET), '{'),
"|" => Ord(symbol::DOUBLE_VERTICAL_LINE),
"}" => MathOrTextMode(&Close(symbol::RIGHT_CURLY_BRACKET), '}'),
"~" => TextMode(TextToken::Accent(symbol::COMBINING_TILDE)),
};
pub fn get_command(command: &str) -> Option<Token<'static>> {
if let Some(token) = COMMANDS.get(command) {
Some(*token)
} else {
if let Some(function) = FUNCTIONS.get_key(command) {
return Some(PseudoOperator(function));
}
None
}
}
static UNICODE_OPERATORS: phf::Map<char, Token> = phf::phf_map! {
'⌈' => Open(symbol::LEFT_CEILING),
'⌊' => Open(symbol::LEFT_FLOOR),
'⌜' => ForceOpen(symbol::TOP_LEFT_CORNER, ForceStretchy::Pretend),
'⌞' => ForceOpen(symbol::BOTTOM_LEFT_CORNER, ForceStretchy::Pretend),
'⎰' => ForceOpen(symbol::UPPER_LEFT_OR_LOWER_RIGHT_CURLY_BRACKET_SECTION, ForceStretchy::Yes),
'❲' => Open(symbol::LIGHT_LEFT_TORTOISE_SHELL_BRACKET_ORNAMENT),
'⟅' => ForceOpen(symbol::LEFT_S_SHAPED_BAG_DELIMITER, ForceStretchy::Yes),
'⟦' => Open(symbol::MATHEMATICAL_LEFT_WHITE_SQUARE_BRACKET),
'⟨' => Open(symbol::MATHEMATICAL_LEFT_ANGLE_BRACKET),
'⟪' => Open(symbol::MATHEMATICAL_LEFT_DOUBLE_ANGLE_BRACKET),
'⟬' => Open(symbol::MATHEMATICAL_LEFT_WHITE_TORTOISE_SHELL_BRACKET),
'⟮' => Open(symbol::MATHEMATICAL_LEFT_FLATTENED_PARENTHESIS),
'⦃' => Open(symbol::LEFT_WHITE_CURLY_BRACKET),
'⦅' => Open(symbol::LEFT_WHITE_PARENTHESIS),
'⦇' => Open(symbol::Z_NOTATION_LEFT_IMAGE_BRACKET),
'⦉' => Open(symbol::Z_NOTATION_LEFT_BINDING_BRACKET),
'⦋' => Open(symbol::LEFT_SQUARE_BRACKET_WITH_UNDERBAR),
'⦍' => Open(symbol::LEFT_SQUARE_BRACKET_WITH_TICK_IN_TOP_CORNER),
'⦏' => Open(symbol::LEFT_SQUARE_BRACKET_WITH_TICK_IN_BOTTOM_CORNER),
'⦑' => Open(symbol::LEFT_ANGLE_BRACKET_WITH_DOT),
'⦓' => Open(symbol::LEFT_ARC_LESS_THAN_BRACKET),
'⦕' => Open(symbol::DOUBLE_LEFT_ARC_GREATER_THAN_BRACKET),
'⦗' => Open(symbol::LEFT_BLACK_TORTOISE_SHELL_BRACKET),
'⧘' => Open(symbol::LEFT_WIGGLY_FENCE),
'⧚' => Open(symbol::LEFT_DOUBLE_WIGGLY_FENCE),
'⧼' => Open(symbol::LEFT_POINTING_CURVED_ANGLE_BRACKET),
'⌉' => Close(symbol::RIGHT_CEILING),
'⌋' => Close(symbol::RIGHT_FLOOR),
'⌝' => ForceClose(symbol::TOP_RIGHT_CORNER, ForceStretchy::Pretend),
'⌟' => ForceClose(symbol::BOTTOM_RIGHT_CORNER, ForceStretchy::Pretend),
'⎱' => ForceClose(symbol::UPPER_RIGHT_OR_LOWER_LEFT_CURLY_BRACKET_SECTION, ForceStretchy::Yes),
'❳' => Close(symbol::LIGHT_RIGHT_TORTOISE_SHELL_BRACKET_ORNAMENT),
'⟆' => ForceClose(symbol::RIGHT_S_SHAPED_BAG_DELIMITER, ForceStretchy::Yes),
'⟧' => Close(symbol::MATHEMATICAL_RIGHT_WHITE_SQUARE_BRACKET),
'⟩' => Close(symbol::MATHEMATICAL_RIGHT_ANGLE_BRACKET),
'⟫' => Close(symbol::MATHEMATICAL_RIGHT_DOUBLE_ANGLE_BRACKET),
'⟭' => Close(symbol::MATHEMATICAL_RIGHT_WHITE_TORTOISE_SHELL_BRACKET),
'⟯' => Close(symbol::MATHEMATICAL_RIGHT_FLATTENED_PARENTHESIS),
'⦄' => Close(symbol::RIGHT_WHITE_CURLY_BRACKET),
'⦆' => Close(symbol::RIGHT_WHITE_PARENTHESIS),
'⦈' => Close(symbol::Z_NOTATION_RIGHT_IMAGE_BRACKET),
'⦊' => Close(symbol::Z_NOTATION_RIGHT_BINDING_BRACKET),
'⦌' => Close(symbol::RIGHT_SQUARE_BRACKET_WITH_UNDERBAR),
'⦎' => Close(symbol::RIGHT_SQUARE_BRACKET_WITH_TICK_IN_BOTTOM_CORNER),
'⦐' => Close(symbol::RIGHT_SQUARE_BRACKET_WITH_TICK_IN_TOP_CORNER),
'⦒' => Close(symbol::RIGHT_ANGLE_BRACKET_WITH_DOT),
'⦔' => Close(symbol::RIGHT_ARC_GREATER_THAN_BRACKET),
'⦖' => Close(symbol::DOUBLE_RIGHT_ARC_LESS_THAN_BRACKET),
'⦘' => Close(symbol::RIGHT_BLACK_TORTOISE_SHELL_BRACKET),
'⧙' => Close(symbol::RIGHT_WIGGLY_FENCE),
'⧛' => Close(symbol::RIGHT_DOUBLE_WIGGLY_FENCE),
'⧽' => Close(symbol::RIGHT_POINTING_CURVED_ANGLE_BRACKET),
'|' => Ord(symbol::VERTICAL_LINE),
'‖' => Ord(symbol::DOUBLE_VERTICAL_LINE),
'⦀' => Ord(symbol::TRIPLE_VERTICAL_BAR_DELIMITER),
'⅀' => ForceLargeOp(symbol::DOUBLE_STRUCK_N_ARY_SUMMATION),
'∏' => Op(symbol::N_ARY_PRODUCT),
'∐' => Op(symbol::N_ARY_COPRODUCT),
'∑' => Op(symbol::N_ARY_SUMMATION),
'∫' => Op(symbol::INTEGRAL),
'∬' => Op(symbol::DOUBLE_INTEGRAL),
'∭' => Op(symbol::TRIPLE_INTEGRAL),
'∮' => Op(symbol::CONTOUR_INTEGRAL),
'∯' => Op(symbol::SURFACE_INTEGRAL),
'∰' => Op(symbol::VOLUME_INTEGRAL),
'∱' => Op(symbol::CLOCKWISE_INTEGRAL),
'∲' => Op(symbol::CLOCKWISE_CONTOUR_INTEGRAL),
'∳' => Op(symbol::ANTICLOCKWISE_CONTOUR_INTEGRAL),
'⋀' => Op(symbol::N_ARY_LOGICAL_AND),
'⋁' => Op(symbol::N_ARY_LOGICAL_OR),
'⋂' => Op(symbol::N_ARY_INTERSECTION),
'⋃' => Op(symbol::N_ARY_UNION),
'⟕' => ForceLargeOp(symbol::LEFT_OUTER_JOIN),
'⟖' => ForceLargeOp(symbol::RIGHT_OUTER_JOIN),
'⟗' => ForceLargeOp(symbol::FULL_OUTER_JOIN),
'⟘' => ForceLargeOp(symbol::LARGE_UP_TACK),
'⟙' => ForceLargeOp(symbol::LARGE_DOWN_TACK),
'⧸' => ForceLargeOp(symbol::BIG_SOLIDUS.as_op()),
'⧹' => ForceLargeOp(symbol::BIG_REVERSE_SOLIDUS.as_op()),
'⨀' => Op(symbol::N_ARY_CIRCLED_DOT_OPERATOR),
'⨁' => Op(symbol::N_ARY_CIRCLED_PLUS_OPERATOR),
'⨂' => Op(symbol::N_ARY_CIRCLED_TIMES_OPERATOR),
'⨃' => Op(symbol::N_ARY_UNION_OPERATOR_WITH_DOT),
'⨄' => Op(symbol::N_ARY_UNION_OPERATOR_WITH_PLUS),
'⨅' => Op(symbol::N_ARY_SQUARE_INTERSECTION_OPERATOR),
'⨆' => Op(symbol::N_ARY_SQUARE_UNION_OPERATOR),
'⨇' => Op(symbol::TWO_LOGICAL_AND_OPERATOR),
'⨈' => Op(symbol::TWO_LOGICAL_OR_OPERATOR),
'⨉' => Op(symbol::N_ARY_TIMES_OPERATOR),
'⨊' => Op(symbol::MODULO_TWO_SUM),
'⨋' => Op(symbol::SUMMATION_WITH_INTEGRAL),
'⨌' => Op(symbol::QUADRUPLE_INTEGRAL_OPERATOR),
'⨍' => Op(symbol::FINITE_PART_INTEGRAL),
'⨎' => Op(symbol::INTEGRAL_WITH_DOUBLE_STROKE),
'⨏' => Op(symbol::INTEGRAL_AVERAGE_WITH_SLASH),
'⨐' => Op(symbol::CIRCULATION_FUNCTION),
'⨑' => Op(symbol::ANTICLOCKWISE_INTEGRATION),
'⨒' => Op(symbol::LINE_INTEGRATION_WITH_RECTANGULAR_PATH_AROUND_POLE),
'⨓' => Op(symbol::LINE_INTEGRATION_WITH_SEMICIRCULAR_PATH_AROUND_POLE),
'⨔' => Op(symbol::LINE_INTEGRATION_NOT_INCLUDING_THE_POLE),
'⨕' => Op(symbol::INTEGRAL_AROUND_A_POINT_OPERATOR),
'⨖' => Op(symbol::QUATERNION_INTEGRAL_OPERATOR),
'⨗' => Op(symbol::INTEGRAL_WITH_LEFTWARDS_ARROW_WITH_HOOK),
'⨘' => Op(symbol::INTEGRAL_WITH_TIMES_SIGN),
'⨙' => Op(symbol::INTEGRAL_WITH_INTERSECTION),
'⨚' => Op(symbol::INTEGRAL_WITH_UNION),
'⨛' => Op(symbol::INTEGRAL_WITH_OVERBAR),
'⨜' => Op(symbol::INTEGRAL_WITH_UNDERBAR),
'⨝' => ForceLargeOp(symbol::JOIN),
'⨞' => ForceLargeOp(symbol::LARGE_LEFT_TRIANGLE_OPERATOR),
'⫼' => Op(symbol::LARGE_TRIPLE_VERTICAL_BAR_OPERATOR),
'⫿' => Op(symbol::N_ARY_WHITE_VERTICAL_BAR),
'±' => BinaryOp(symbol::PLUS_MINUS_SIGN),
'·' => ForcePunctuation(symbol::MIDDLE_DOT.as_op()),
'×' => ForceBinaryOp(symbol::MULTIPLICATION_SIGN.as_op()),
'÷' => BinaryOp(symbol::DIVISION_SIGN),
'†' => ForceBinaryOp(MathMLOperator::from_char(symbol::DAGGER)),
'‡' => ForceBinaryOp(MathMLOperator::from_char(symbol::DOUBLE_DAGGER)),
'•' => ForceBinaryOp(MathMLOperator::from_char(symbol::BULLET)),
'⁀' => ForceBinaryOp(symbol::CHARACTER_TIE),
'⁄' => BinaryOp(symbol::FRACTION_SLASH),
'⅋' => ForceBinaryOp(symbol::TURNED_AMPERSAND),
'−' => BinaryOp(symbol::MINUS_SIGN),
'∓' => BinaryOp(symbol::MINUS_OR_PLUS_SIGN),
'∔' => BinaryOp(symbol::DOT_PLUS),
'∕' => BinaryOp(symbol::DIVISION_SLASH),
'∖' => BinaryOp(symbol::SET_MINUS),
'∗' => ForceBinaryOp(symbol::ASTERISK_OPERATOR.as_op()),
'∘' => ForceBinaryOp(symbol::RING_OPERATOR.as_op()),
'∙' => ForceBinaryOp(symbol::BULLET_OPERATOR.as_op()),
'∧' => BinaryOp(symbol::LOGICAL_AND),
'∨' => BinaryOp(symbol::LOGICAL_OR),
'∩' => BinaryOp(symbol::INTERSECTION),
'∪' => BinaryOp(symbol::UNION),
'∸' => BinaryOp(symbol::DOT_MINUS),
'∾' => ForceBinaryOp(symbol::INVERTED_LAZY_S),
'≀' => ForceBinaryOp(symbol::WREATH_PRODUCT.as_op()),
'⊌' => BinaryOp(symbol::MULTISET),
'⊍' => BinaryOp(symbol::MULTISET_MULTIPLICATION),
'⊎' => BinaryOp(symbol::MULTISET_UNION),
'⊓' => BinaryOp(symbol::SQUARE_CAP),
'⊔' => BinaryOp(symbol::SQUARE_CUP),
'⊕' => BinaryOp(symbol::CIRCLED_PLUS),
'⊖' => BinaryOp(symbol::CIRCLED_MINUS),
'⊗' => ForceBinaryOp(symbol::CIRCLED_TIMES.as_op()),
'⊘' => BinaryOp(symbol::CIRCLED_DIVISION_SLASH),
'⊙' => ForceBinaryOp(symbol::CIRCLED_DOT_OPERATOR.as_op()),
'⊚' => ForceBinaryOp(symbol::CIRCLED_RING_OPERATOR.as_op()),
'⊛' => ForceBinaryOp(symbol::CIRCLED_ASTERISK_OPERATOR.as_op()),
'⊜' => ForceBinaryOp(symbol::CIRCLED_EQUALS.as_op()),
'⊝' => BinaryOp(symbol::CIRCLED_DASH),
'⊞' => BinaryOp(symbol::SQUARED_PLUS),
'⊟' => BinaryOp(symbol::SQUARED_MINUS),
'⊠' => ForceBinaryOp(symbol::SQUARED_TIMES.as_op()),
'⊡' => ForceBinaryOp(symbol::SQUARED_DOT_OPERATOR.as_op()),
'⊺' => ForceBinaryOp(symbol::INTERCALATE.as_op()),
'⊻' => BinaryOp(symbol::XOR),
'⊼' => BinaryOp(symbol::NAND),
'⊽' => BinaryOp(symbol::NOR),
'⋄' => ForceBinaryOp(symbol::DIAMOND_OPERATOR.as_op()),
'⋅' => ForceBinaryOp(symbol::DOT_OPERATOR.as_op()),
'⋆' => ForceBinaryOp(symbol::STAR_OPERATOR.as_op()),
'⋇' => ForceBinaryOp(symbol::DIVISION_TIMES.as_op()),
'⋉' => ForceBinaryOp(symbol::LEFT_NORMAL_FACTOR_SEMIDIRECT_PRODUCT.as_op()),
'⋊' => ForceBinaryOp(symbol::RIGHT_NORMAL_FACTOR_SEMIDIRECT_PRODUCT.as_op()),
'⋋' => ForceBinaryOp(symbol::LEFT_SEMIDIRECT_PRODUCT.as_op()),
'⋌' => ForceBinaryOp(symbol::RIGHT_SEMIDIRECT_PRODUCT.as_op()),
'⋎' => BinaryOp(symbol::CURLY_LOGICAL_OR),
'⋏' => BinaryOp(symbol::CURLY_LOGICAL_AND),
'⋒' => BinaryOp(symbol::DOUBLE_INTERSECTION),
'⋓' => BinaryOp(symbol::DOUBLE_UNION),
'△' => ForceBinaryOp(symbol::WHITE_UP_POINTING_TRIANGLE),
'▷' => ForceBinaryOp(symbol::WHITE_RIGHT_POINTING_TRIANGLE),
'◁' => ForceBinaryOp(symbol::WHITE_LEFT_POINTING_TRIANGLE),
'○' => ForceBinaryOp(symbol::WHITE_CIRCLE),
'◫' => ForceBinaryOp(symbol::WHITE_SQUARE_WITH_VERTICAL_BISECTING_LINE),
'⟇' => ForceBinaryOp(symbol::OR_WITH_DOT_INSIDE),
'⟑' => ForceBinaryOp(symbol::AND_WITH_DOT),
'⦵' => ForceBinaryOp(symbol::CIRCLE_WITH_HORIZONTAL_BAR),
'⦶' => ForceBinaryOp(symbol::CIRCLED_VERTICAL_BAR.as_op()),
'⦷' => ForceBinaryOp(symbol::CIRCLED_PARALLEL.as_op()),
'⦸' => ForceBinaryOp(symbol::CIRCLED_REVERSE_SOLIDUS.as_op()),
'⦹' => ForceBinaryOp(symbol::CIRCLED_PERPENDICULAR.as_op()),
'⧀' => ForceBinaryOp(symbol::CIRCLED_LESS_THAN.as_op()),
'⧁' => ForceBinaryOp(symbol::CIRCLED_GREATER_THAN.as_op()),
'⧄' => BinaryOp(symbol::SQUARED_RISING_DIAGONAL_SLASH),
'⧅' => BinaryOp(symbol::SQUARED_FALLING_DIAGONAL_SLASH),
'⧆' => ForceBinaryOp(symbol::SQUARED_ASTERISK.as_op()),
'⧇' => ForceBinaryOp(symbol::SQUARED_SMALL_CIRCLE.as_op()),
'⧈' => ForceBinaryOp(symbol::SQUARED_SQUARE.as_op()),
'⧢' => ForceBinaryOp(symbol::SHUFFLE_PRODUCT.as_op()),
'⧵' => BinaryOp(symbol::REVERSE_SOLIDUS_OPERATOR),
'⧶' => BinaryOp(symbol::SOLIDUS_WITH_OVERBAR),
'⧷' => BinaryOp(symbol::REVERSE_SOLIDUS_WITH_HORIZONTAL_STROKE),
'⧺' => BinaryOp(symbol::DOUBLE_PLUS),
'⧻' => BinaryOp(symbol::TRIPLE_PLUS),
'⨢' => BinaryOp(symbol::PLUS_SIGN_WITH_SMALL_CIRCLE_ABOVE),
'⨣' => BinaryOp(symbol::PLUS_SIGN_WITH_CIRCUMFLEX_ACCENT_ABOVE),
'⨤' => BinaryOp(symbol::PLUS_SIGN_WITH_TILDE_ABOVE),
'⨥' => BinaryOp(symbol::PLUS_SIGN_WITH_DOT_BELOW),
'⨦' => BinaryOp(symbol::PLUS_SIGN_WITH_TILDE_BELOW),
'⨧' => BinaryOp(symbol::PLUS_SIGN_WITH_SUBSCRIPT_TWO),
'⨨' => BinaryOp(symbol::PLUS_SIGN_WITH_BLACK_TRIANGLE),
'⨩' => BinaryOp(symbol::MINUS_SIGN_WITH_COMMA_ABOVE),
'⨪' => BinaryOp(symbol::MINUS_SIGN_WITH_DOT_BELOW),
'⨫' => BinaryOp(symbol::MINUS_SIGN_WITH_FALLING_DOTS),
'⨬' => BinaryOp(symbol::MINUS_SIGN_WITH_RISING_DOTS),
'⨭' => BinaryOp(symbol::PLUS_SIGN_IN_LEFT_HALF_CIRCLE),
'⨮' => BinaryOp(symbol::PLUS_SIGN_IN_RIGHT_HALF_CIRCLE),
'⨯' => ForceBinaryOp(symbol::VECTOR_OR_CROSS_PRODUCT.as_op()),
'⨰' => ForceBinaryOp(symbol::MULTIPLICATION_SIGN_WITH_DOT_ABOVE.as_op()),
'⨱' => ForceBinaryOp(symbol::MULTIPLICATION_SIGN_WITH_UNDERBAR.as_op()),
'⨲' => ForceBinaryOp(symbol::SEMIDIRECT_PRODUCT_WITH_BOTTOM_CLOSED.as_op()),
'⨳' => ForceBinaryOp(symbol::SMASH_PRODUCT.as_op()),
'⨴' => ForceBinaryOp(symbol::MULTIPLICATION_SIGN_IN_LEFT_HALF_CIRCLE.as_op()),
'⨵' => ForceBinaryOp(symbol::MULTIPLICATION_SIGN_IN_RIGHT_HALF_CIRCLE.as_op()),
'⨶' => ForceBinaryOp(symbol::CIRCLED_MULTIPLICATION_SIGN_WITH_CIRCUMFLEX_ACCENT.as_op()),
'⨷' => ForceBinaryOp(symbol::MULTIPLICATION_SIGN_IN_DOUBLE_CIRCLE.as_op()),
'⨸' => BinaryOp(symbol::CIRCLED_DIVISION_SIGN),
'⨹' => BinaryOp(symbol::PLUS_SIGN_IN_TRIANGLE),
'⨺' => BinaryOp(symbol::MINUS_SIGN_IN_TRIANGLE),
'⨻' => ForceBinaryOp(symbol::MULTIPLICATION_SIGN_IN_TRIANGLE.as_op()),
'⨼' => ForceBinaryOp(symbol::INTERIOR_PRODUCT.as_op()),
'⨽' => ForceBinaryOp(symbol::RIGHTHAND_INTERIOR_PRODUCT.as_op()),
'⨾' => BinaryOp(symbol::Z_NOTATION_RELATIONAL_COMPOSITION),
'⨿' => ForceBinaryOp(symbol::AMALGAMATION_OR_COPRODUCT.as_op()),
'⩀' => BinaryOp(symbol::INTERSECTION_WITH_DOT),
'⩁' => BinaryOp(symbol::UNION_WITH_MINUS_SIGN),
'⩂' => BinaryOp(symbol::UNION_WITH_OVERBAR),
'⩃' => BinaryOp(symbol::INTERSECTION_WITH_OVERBAR),
'⩄' => BinaryOp(symbol::INTERSECTION_WITH_LOGICAL_AND),
'⩅' => BinaryOp(symbol::UNION_WITH_LOGICAL_OR),
'⩆' => BinaryOp(symbol::UNION_ABOVE_INTERSECTION),
'⩇' => BinaryOp(symbol::INTERSECTION_ABOVE_UNION),
'⩈' => BinaryOp(symbol::UNION_ABOVE_BAR_ABOVE_INTERSECTION),
'⩉' => BinaryOp(symbol::INTERSECTION_ABOVE_BAR_ABOVE_UNION),
'⩊' => BinaryOp(symbol::UNION_BESIDE_AND_JOINED_WITH_UNION),
'⩋' => BinaryOp(symbol::INTERSECTION_BESIDE_AND_JOINED_WITH_INTERSECTION),
'⩌' => BinaryOp(symbol::CLOSED_UNION_WITH_SERIFS),
'⩍' => BinaryOp(symbol::CLOSED_INTERSECTION_WITH_SERIFS),
'⩎' => BinaryOp(symbol::DOUBLE_SQUARE_INTERSECTION),
'⩏' => BinaryOp(symbol::DOUBLE_SQUARE_UNION),
'⩐' => ForceBinaryOp(symbol::CLOSED_UNION_WITH_SERIFS_AND_SMASH_PRODUCT.as_op()),
'⩑' => BinaryOp(symbol::LOGICAL_AND_WITH_DOT_ABOVE),
'⩒' => BinaryOp(symbol::LOGICAL_OR_WITH_DOT_ABOVE),
'⩓' => BinaryOp(symbol::DOUBLE_LOGICAL_AND),
'⩔' => BinaryOp(symbol::DOUBLE_LOGICAL_OR),
'⩕' => BinaryOp(symbol::TWO_INTERSECTING_LOGICAL_AND),
'⩖' => BinaryOp(symbol::TWO_INTERSECTING_LOGICAL_OR),
'⩗' => BinaryOp(symbol::SLOPING_LARGE_OR),
'⩘' => BinaryOp(symbol::SLOPING_LARGE_AND),
'⩙' => BinaryOp(symbol::LOGICAL_OR_OVERLAPPING_LOGICAL_AND), '⩚' => BinaryOp(symbol::LOGICAL_AND_WITH_MIDDLE_STEM),
'⩛' => BinaryOp(symbol::LOGICAL_OR_WITH_MIDDLE_STEM),
'⩜' => BinaryOp(symbol::LOGICAL_AND_WITH_HORIZONTAL_DASH),
'⩝' => BinaryOp(symbol::LOGICAL_OR_WITH_HORIZONTAL_DASH),
'⩞' => BinaryOp(symbol::LOGICAL_AND_WITH_DOUBLE_OVERBAR),
'⩟' => BinaryOp(symbol::LOGICAL_AND_WITH_UNDERBAR),
'⩠' => BinaryOp(symbol::LOGICAL_AND_WITH_DOUBLE_UNDERBAR),
'⩢' => BinaryOp(symbol::LOGICAL_OR_WITH_DOUBLE_OVERBAR),
'⩣' => BinaryOp(symbol::LOGICAL_OR_WITH_DOUBLE_UNDERBAR),
'⩤' => ForceBinaryOp(symbol::Z_NOTATION_DOMAIN_ANTIRESTRICTION.as_op()),
'⩥' => ForceBinaryOp(symbol::Z_NOTATION_RANGE_ANTIRESTRICTION.as_op()),
'⫶' => BinaryOp(symbol::TRIPLE_COLON_OPERATOR),
'⫽' => BinaryOp(symbol::DOUBLE_SOLIDUS_OPERATOR),
'⫾' => ForceBinaryOp(symbol::WHITE_VERTICAL_BAR.as_op()),
'¬' => Ord(symbol::NOT_SIGN),
'″' => Ord(symbol::DOUBLE_PRIME),
'‴' => Ord(symbol::TRIPLE_PRIME),
'‵' => Ord(symbol::REVERSED_PRIME),
'‶' => Ord(symbol::REVERSED_DOUBLE_PRIME),
'‷' => Ord(symbol::REVERSED_TRIPLE_PRIME),
'⁗' => Ord(symbol::QUADRUPLE_PRIME),
'∀' => Ord(symbol::FOR_ALL),
'∁' => Ord(symbol::COMPLEMENT),
'∃' => Ord(symbol::THERE_EXISTS),
'∄' => Ord(symbol::THERE_DOES_NOT_EXIST),
'←' => Relation(symbol::LEFTWARDS_ARROW),
'↑' => Relation(symbol::UPWARDS_ARROW),
'→' => Relation(symbol::RIGHTWARDS_ARROW),
'↓' => Relation(symbol::DOWNWARDS_ARROW),
'↔' => Relation(symbol::LEFT_RIGHT_ARROW),
'↕' => Relation(symbol::UP_DOWN_ARROW),
'↖' => Relation(symbol::NORTH_WEST_ARROW),
'↗' => Relation(symbol::NORTH_EAST_ARROW),
'↘' => Relation(symbol::SOUTH_EAST_ARROW),
'↙' => Relation(symbol::SOUTH_WEST_ARROW),
'↚' => Relation(symbol::LEFTWARDS_ARROW_WITH_STROKE),
'↛' => Relation(symbol::RIGHTWARDS_ARROW_WITH_STROKE),
'↜' => Relation(symbol::LEFTWARDS_WAVE_ARROW),
'↝' => Relation(symbol::RIGHTWARDS_WAVE_ARROW),
'↞' => Relation(symbol::LEFTWARDS_TWO_HEADED_ARROW),
'↟' => Relation(symbol::UPWARDS_TWO_HEADED_ARROW),
'↠' => Relation(symbol::RIGHTWARDS_TWO_HEADED_ARROW),
'↡' => Relation(symbol::DOWNWARDS_TWO_HEADED_ARROW),
'↢' => Relation(symbol::LEFTWARDS_ARROW_WITH_TAIL),
'↣' => Relation(symbol::RIGHTWARDS_ARROW_WITH_TAIL),
'↤' => Relation(symbol::LEFTWARDS_ARROW_FROM_BAR),
'↥' => Relation(symbol::UPWARDS_ARROW_FROM_BAR),
'↦' => Relation(symbol::RIGHTWARDS_ARROW_FROM_BAR),
'↧' => Relation(symbol::DOWNWARDS_ARROW_FROM_BAR),
'↩' => Relation(symbol::LEFTWARDS_ARROW_WITH_HOOK),
'↪' => Relation(symbol::RIGHTWARDS_ARROW_WITH_HOOK),
'↫' => Relation(symbol::LEFTWARDS_ARROW_WITH_LOOP),
'↬' => Relation(symbol::RIGHTWARDS_ARROW_WITH_LOOP),
'↭' => Relation(symbol::LEFT_RIGHT_WAVE_ARROW),
'↮' => Relation(symbol::LEFT_RIGHT_ARROW_WITH_STROKE),
'↯' => Relation(symbol::DOWNWARDS_ZIGZAG_ARROW),
'↰' => Relation(symbol::UPWARDS_ARROW_WITH_TIP_LEFTWARDS),
'↱' => Relation(symbol::UPWARDS_ARROW_WITH_TIP_RIGHTWARDS),
'↲' => Relation(symbol::DOWNWARDS_ARROW_WITH_TIP_LEFTWARDS),
'↳' => Relation(symbol::DOWNWARDS_ARROW_WITH_TIP_RIGHTWARDS),
'↶' => Relation(symbol::ANTICLOCKWISE_TOP_SEMICIRCLE_ARROW),
'↷' => Relation(symbol::CLOCKWISE_TOP_SEMICIRCLE_ARROW),
'↼' => Relation(symbol::LEFTWARDS_HARPOON_WITH_BARB_UPWARDS),
'↽' => Relation(symbol::LEFTWARDS_HARPOON_WITH_BARB_DOWNWARDS),
'↾' => Relation(symbol::UPWARDS_HARPOON_WITH_BARB_RIGHTWARDS),
'↿' => Relation(symbol::UPWARDS_HARPOON_WITH_BARB_LEFTWARDS),
'⇀' => Relation(symbol::RIGHTWARDS_HARPOON_WITH_BARB_UPWARDS),
'⇁' => Relation(symbol::RIGHTWARDS_HARPOON_WITH_BARB_DOWNWARDS),
'⇂' => Relation(symbol::DOWNWARDS_HARPOON_WITH_BARB_RIGHTWARDS),
'⇃' => Relation(symbol::DOWNWARDS_HARPOON_WITH_BARB_LEFTWARDS),
'⇄' => Relation(symbol::RIGHTWARDS_ARROW_OVER_LEFTWARDS_ARROW),
'⇅' => Relation(symbol::UPWARDS_ARROW_LEFTWARDS_OF_DOWNWARDS_ARROW),
'⇆' => Relation(symbol::LEFTWARDS_ARROW_OVER_RIGHTWARDS_ARROW),
'⇇' => Relation(symbol::LEFTWARDS_PAIRED_ARROWS),
'⇈' => Relation(symbol::UPWARDS_PAIRED_ARROWS),
'⇉' => Relation(symbol::RIGHTWARDS_PAIRED_ARROWS),
'⇊' => Relation(symbol::DOWNWARDS_PAIRED_ARROWS),
'⇋' => Relation(symbol::LEFTWARDS_HARPOON_OVER_RIGHTWARDS_HARPOON),
'⇌' => Relation(symbol::RIGHTWARDS_HARPOON_OVER_LEFTWARDS_HARPOON),
'⇍' => Relation(symbol::LEFTWARDS_DOUBLE_ARROW_WITH_STROKE),
'⇎' => Relation(symbol::LEFT_RIGHT_DOUBLE_ARROW_WITH_STROKE),
'⇏' => Relation(symbol::RIGHTWARDS_DOUBLE_ARROW_WITH_STROKE),
'⇐' => Relation(symbol::LEFTWARDS_DOUBLE_ARROW),
'⇑' => Relation(symbol::UPWARDS_DOUBLE_ARROW),
'⇒' => Relation(symbol::RIGHTWARDS_DOUBLE_ARROW),
'⇓' => Relation(symbol::DOWNWARDS_DOUBLE_ARROW),
'⇔' => Relation(symbol::LEFT_RIGHT_DOUBLE_ARROW),
'⇕' => Relation(symbol::UP_DOWN_DOUBLE_ARROW),
'⇖' => Relation(symbol::NORTH_WEST_DOUBLE_ARROW),
'⇗' => Relation(symbol::NORTH_EAST_DOUBLE_ARROW),
'⇘' => Relation(symbol::SOUTH_EAST_DOUBLE_ARROW),
'⇙' => Relation(symbol::SOUTH_WEST_DOUBLE_ARROW),
'⇚' => Relation(symbol::LEFTWARDS_TRIPLE_ARROW),
'⇛' => Relation(symbol::RIGHTWARDS_TRIPLE_ARROW),
'⇜' => Relation(symbol::LEFTWARDS_SQUIGGLE_ARROW),
'⇝' => Relation(symbol::RIGHTWARDS_SQUIGGLE_ARROW),
'⇤' => Relation(symbol::LEFTWARDS_ARROW_TO_BAR),
'⇥' => Relation(symbol::RIGHTWARDS_ARROW_TO_BAR),
'⇴' => Relation(symbol::RIGHT_ARROW_WITH_SMALL_CIRCLE),
'⇵' => Relation(symbol::DOWNWARDS_ARROW_LEFTWARDS_OF_UPWARDS_ARROW),
'⇶' => Relation(symbol::THREE_RIGHTWARDS_ARROWS),
'⇷' => Relation(symbol::LEFTWARDS_ARROW_WITH_VERTICAL_STROKE),
'⇸' => Relation(symbol::RIGHTWARDS_ARROW_WITH_VERTICAL_STROKE),
'⇹' => Relation(symbol::LEFT_RIGHT_ARROW_WITH_VERTICAL_STROKE),
'⇺' => Relation(symbol::LEFTWARDS_ARROW_WITH_DOUBLE_VERTICAL_STROKE),
'⇻' => Relation(symbol::RIGHTWARDS_ARROW_WITH_DOUBLE_VERTICAL_STROKE),
'⇼' => Relation(symbol::LEFT_RIGHT_ARROW_WITH_DOUBLE_VERTICAL_STROKE),
'⇽' => Relation(symbol::LEFTWARDS_OPEN_HEADED_ARROW),
'⇾' => Relation(symbol::RIGHTWARDS_OPEN_HEADED_ARROW),
'⇿' => Relation(symbol::LEFT_RIGHT_OPEN_HEADED_ARROW),
'∈' => Relation(symbol::ELEMENT_OF),
'∉' => Relation(symbol::NOT_AN_ELEMENT_OF),
'∊' => Relation(symbol::SMALL_ELEMENT_OF),
'∋' => Relation(symbol::CONTAINS_AS_MEMBER),
'∌' => Relation(symbol::DOES_NOT_CONTAIN_AS_MEMBER),
'∍' => Relation(symbol::SMALL_CONTAINS_AS_MEMBER),
'∝' => Relation(symbol::PROPORTIONAL_TO),
'∣' => Relation(symbol::DIVIDES),
'∤' => Relation(symbol::DOES_NOT_DIVIDE),
'∥' => Relation(symbol::PARALLEL_TO),
'∦' => Relation(symbol::NOT_PARALLEL_TO),
'∶' => ForceRelation(symbol::RATIO.as_op()),
'∷' => Relation(symbol::PROPORTION),
'∹' => Relation(symbol::EXCESS),
'∺' => Relation(symbol::GEOMETRIC_PROPORTION),
'∻' => Relation(symbol::HOMOTHETIC),
'∼' => Relation(symbol::TILDE_OPERATOR),
'∽' => Relation(symbol::REVERSED_TILDE),
'≁' => Relation(symbol::NOT_TILDE),
'≂' => Relation(symbol::MINUS_TILDE),
'≃' => Relation(symbol::ASYMPTOTICALLY_EQUAL_TO),
'≄' => Relation(symbol::NOT_ASYMPTOTICALLY_EQUAL_TO),
'≅' => Relation(symbol::APPROXIMATELY_EQUAL_TO),
'≆' => Relation(symbol::APPROXIMATELY_BUT_NOT_ACTUALLY_EQUAL_TO),
'≇' => Relation(symbol::NEITHER_APPROXIMATELY_NOR_ACTUALLY_EQUAL_TO),
'≈' => Relation(symbol::ALMOST_EQUAL_TO),
'≉' => Relation(symbol::NOT_ALMOST_EQUAL_TO),
'≊' => Relation(symbol::ALMOST_EQUAL_OR_EQUAL_TO),
'≋' => Relation(symbol::TRIPLE_TILDE),
'≌' => Relation(symbol::ALL_EQUAL_TO),
'≍' => Relation(symbol::EQUIVALENT_TO),
'≎' => Relation(symbol::GEOMETRICALLY_EQUIVALENT_TO),
'≏' => Relation(symbol::DIFFERENCE_BETWEEN),
'≐' => Relation(symbol::APPROACHES_THE_LIMIT),
'≑' => Relation(symbol::GEOMETRICALLY_EQUAL_TO),
'≒' => Relation(symbol::APPROXIMATELY_EQUAL_TO_OR_THE_IMAGE_OF),
'≓' => Relation(symbol::IMAGE_OF_OR_APPROXIMATELY_EQUAL_TO),
'≔' => Relation(symbol::COLON_EQUALS),
'≕' => Relation(symbol::EQUALS_COLON),
'≖' => Relation(symbol::RING_IN_EQUAL_TO),
'≗' => Relation(symbol::RING_EQUAL_TO),
'≘' => Relation(symbol::CORRESPONDS_TO),
'≙' => Relation(symbol::ESTIMATES),
'≚' => Relation(symbol::EQUIANGULAR_TO),
'≛' => Relation(symbol::STAR_EQUALS),
'≜' => Relation(symbol::DELTA_EQUAL_TO),
'≝' => Relation(symbol::EQUAL_TO_BY_DEFINITION),
'≞' => Relation(symbol::MEASURED_BY),
'≟' => Relation(symbol::QUESTIONED_EQUAL_TO),
'≠' => Relation(symbol::NOT_EQUAL_TO),
'≡' => Relation(symbol::IDENTICAL_TO),
'≢' => Relation(symbol::NOT_IDENTICAL_TO),
'≣' => Relation(symbol::STRICTLY_EQUIVALENT_TO),
'≤' => Relation(symbol::LESS_THAN_OR_EQUAL_TO),
'≥' => Relation(symbol::GREATER_THAN_OR_EQUAL_TO),
'≦' => Relation(symbol::LESS_THAN_OVER_EQUAL_TO),
'≧' => Relation(symbol::GREATER_THAN_OVER_EQUAL_TO),
'≨' => Relation(symbol::LESS_THAN_BUT_NOT_EQUAL_TO),
'≩' => Relation(symbol::GREATER_THAN_BUT_NOT_EQUAL_TO),
'≪' => Relation(symbol::MUCH_LESS_THAN),
'≫' => Relation(symbol::MUCH_GREATER_THAN),
'≬' => Relation(symbol::BETWEEN),
'≭' => Relation(symbol::NOT_EQUIVALENT_TO),
'≮' => Relation(symbol::NOT_LESS_THAN),
'≯' => Relation(symbol::NOT_GREATER_THAN),
'≰' => Relation(symbol::NEITHER_LESS_THAN_NOR_EQUAL_TO),
'≱' => Relation(symbol::NEITHER_GREATER_THAN_NOR_EQUAL_TO),
'≲' => Relation(symbol::LESS_THAN_OR_EQUIVALENT_TO),
'≳' => Relation(symbol::GREATER_THAN_OR_EQUIVALENT_TO),
'≴' => Relation(symbol::NEITHER_LESS_THAN_NOR_EQUIVALENT_TO),
'≵' => Relation(symbol::NEITHER_GREATER_THAN_NOR_EQUIVALENT_TO),
'≶' => Relation(symbol::LESS_THAN_OR_GREATER_THAN),
'≷' => Relation(symbol::GREATER_THAN_OR_LESS_THAN),
'≸' => Relation(symbol::NEITHER_LESS_THAN_NOR_GREATER_THAN),
'≹' => Relation(symbol::NEITHER_GREATER_THAN_NOR_LESS_THAN),
'≺' => Relation(symbol::PRECEDES),
'≻' => Relation(symbol::SUCCEEDS),
'≼' => Relation(symbol::PRECEDES_OR_EQUAL_TO),
'≽' => Relation(symbol::SUCCEEDS_OR_EQUAL_TO),
'≾' => Relation(symbol::PRECEDES_OR_EQUIVALENT_TO),
'≿' => Relation(symbol::SUCCEEDS_OR_EQUIVALENT_TO),
'⊀' => Relation(symbol::DOES_NOT_PRECEDE),
'⊁' => Relation(symbol::DOES_NOT_SUCCEED),
'⊂' => Relation(symbol::SUBSET_OF),
'⊃' => Relation(symbol::SUPERSET_OF),
'⊄' => Relation(symbol::NOT_A_SUBSET_OF),
'⊅' => Relation(symbol::NOT_A_SUPERSET_OF),
'⊆' => Relation(symbol::SUBSET_OF_OR_EQUAL_TO),
'⊇' => Relation(symbol::SUPERSET_OF_OR_EQUAL_TO),
'⊈' => Relation(symbol::NEITHER_A_SUBSET_OF_NOR_EQUAL_TO),
'⊉' => Relation(symbol::NEITHER_A_SUPERSET_OF_NOR_EQUAL_TO),
'⊊' => Relation(symbol::SUBSET_OF_WITH_NOT_EQUAL_TO),
'⊋' => Relation(symbol::SUPERSET_OF_WITH_NOT_EQUAL_TO),
'⊏' => Relation(symbol::SQUARE_IMAGE_OF),
'⊐' => Relation(symbol::SQUARE_ORIGINAL_OF),
'⊑' => Relation(symbol::SQUARE_IMAGE_OF_OR_EQUAL_TO),
'⊒' => Relation(symbol::SQUARE_ORIGINAL_OF_OR_EQUAL_TO),
'⊢' => Relation(symbol::RIGHT_TACK),
'⊣' => Relation(symbol::LEFT_TACK),
'⊦' => Relation(symbol::ASSERTION),
'⊧' => Relation(symbol::MODELS),
'⊨' => Relation(symbol::TRUE),
'⊩' => Relation(symbol::FORCES),
'⊪' => Relation(symbol::TRIPLE_VERTICAL_BAR_RIGHT_TURNSTILE),
'⊫' => Relation(symbol::DOUBLE_VERTICAL_BAR_DOUBLE_RIGHT_TURNSTILE),
'⊬' => Relation(symbol::DOES_NOT_PROVE),
'⊭' => Relation(symbol::NOT_TRUE),
'⊮' => Relation(symbol::DOES_NOT_FORCE),
'⊯' => Relation(symbol::NEGATED_DOUBLE_VERTICAL_BAR_DOUBLE_RIGHT_TURNSTILE),
'⊰' => Relation(symbol::PRECEDES_UNDER_RELATION),
'⊱' => Relation(symbol::SUCCEEDS_UNDER_RELATION),
'⊲' => Relation(symbol::NORMAL_SUBGROUP_OF),
'⊳' => Relation(symbol::CONTAINS_AS_NORMAL_SUBGROUP),
'⊴' => Relation(symbol::NORMAL_SUBGROUP_OF_OR_EQUAL_TO),
'⊵' => Relation(symbol::CONTAINS_AS_NORMAL_SUBGROUP_OR_EQUAL_TO),
'⊶' => Relation(symbol::ORIGINAL_OF),
'⊷' => Relation(symbol::IMAGE_OF),
'⊸' => Relation(symbol::MULTIMAP),
'⋈' => Relation(symbol::BOWTIE),
'⋍' => Relation(symbol::REVERSED_TILDE_EQUALS),
'⋐' => Relation(symbol::DOUBLE_SUBSET),
'⋑' => Relation(symbol::DOUBLE_SUPERSET),
'⋔' => Relation(symbol::PITCHFORK),
'⋕' => Relation(symbol::EQUAL_AND_PARALLEL_TO),
'⋖' => Relation(symbol::LESS_THAN_WITH_DOT),
'⋗' => Relation(symbol::GREATER_THAN_WITH_DOT),
'⋘' => Relation(symbol::VERY_MUCH_LESS_THAN),
'⋙' => Relation(symbol::VERY_MUCH_GREATER_THAN),
'⋚' => Relation(symbol::LESS_THAN_EQUAL_TO_OR_GREATER_THAN),
'⋛' => Relation(symbol::GREATER_THAN_EQUAL_TO_OR_LESS_THAN),
'⋜' => Relation(symbol::EQUAL_TO_OR_LESS_THAN),
'⋝' => Relation(symbol::EQUAL_TO_OR_GREATER_THAN),
'⋞' => Relation(symbol::EQUAL_TO_OR_PRECEDES),
'⋟' => Relation(symbol::EQUAL_TO_OR_SUCCEEDS),
'⋠' => Relation(symbol::DOES_NOT_PRECEDE_OR_EQUAL),
'⋡' => Relation(symbol::DOES_NOT_SUCCEED_OR_EQUAL),
'⋢' => Relation(symbol::NOT_SQUARE_IMAGE_OF_OR_EQUAL_TO),
'⋣' => Relation(symbol::NOT_SQUARE_ORIGINAL_OF_OR_EQUAL_TO),
'⋤' => Relation(symbol::SQUARE_IMAGE_OF_OR_NOT_EQUAL_TO),
'⋥' => Relation(symbol::SQUARE_ORIGINAL_OF_OR_NOT_EQUAL_TO),
'⋦' => Relation(symbol::LESS_THAN_BUT_NOT_EQUIVALENT_TO),
'⋧' => Relation(symbol::GREATER_THAN_BUT_NOT_EQUIVALENT_TO),
'⋨' => Relation(symbol::PRECEDES_BUT_NOT_EQUIVALENT_TO),
'⋩' => Relation(symbol::SUCCEEDS_BUT_NOT_EQUIVALENT_TO),
'⋪' => Relation(symbol::NOT_NORMAL_SUBGROUP_OF),
'⋫' => Relation(symbol::DOES_NOT_CONTAIN_AS_NORMAL_SUBGROUP),
'⋬' => Relation(symbol::NOT_NORMAL_SUBGROUP_OF_OR_EQUAL_TO),
'⋭' => Relation(symbol::DOES_NOT_CONTAIN_AS_NORMAL_SUBGROUP_OR_EQUAL),
'⋮' => Relation(symbol::VERTICAL_ELLIPSIS),
'⋰' => Relation(symbol::UP_RIGHT_DIAGONAL_ELLIPSIS),
'⋱' => Relation(symbol::DOWN_RIGHT_DIAGONAL_ELLIPSIS),
'⋲' => Relation(symbol::ELEMENT_OF_WITH_LONG_HORIZONTAL_STROKE),
'⋳' => Relation(symbol::ELEMENT_OF_WITH_VERTICAL_BAR_AT_END_OF_HORIZONTAL_STROKE),
'⋴' => Relation(symbol::SMALL_ELEMENT_OF_WITH_VERTICAL_BAR_AT_END_OF_HORIZONTAL_STROKE),
'⋵' => Relation(symbol::ELEMENT_OF_WITH_DOT_ABOVE),
'⋶' => Relation(symbol::ELEMENT_OF_WITH_OVERBAR),
'⋷' => Relation(symbol::SMALL_ELEMENT_OF_WITH_OVERBAR),
'⋸' => Relation(symbol::ELEMENT_OF_WITH_UNDERBAR),
'⋹' => Relation(symbol::ELEMENT_OF_WITH_TWO_HORIZONTAL_STROKES),
'⋺' => Relation(symbol::CONTAINS_WITH_LONG_HORIZONTAL_STROKE),
'⋻' => Relation(symbol::CONTAINS_WITH_VERTICAL_BAR_AT_END_OF_HORIZONTAL_STROKE),
'⋼' => Relation(symbol::SMALL_CONTAINS_WITH_VERTICAL_BAR_AT_END_OF_HORIZONTAL_STROKE),
'⋽' => Relation(symbol::CONTAINS_WITH_OVERBAR),
'⋾' => Relation(symbol::SMALL_CONTAINS_WITH_OVERBAR),
'⋿' => Relation(symbol::Z_NOTATION_BAG_MEMBERSHIP),
'⌢' => ForceRelation(symbol::FROWN.as_op()),
'⌣' => ForceRelation(symbol::SMILE.as_op()),
'⟂' => Relation(symbol::PERPENDICULAR),
'⟈' => Relation(symbol::REVERSE_SOLIDUS_PRECEDING_SUPERSET),
'⟉' => Relation(symbol::SUPERSET_PRECEDING_SOLIDUS),
'⟒' => Relation(symbol::ELEMENT_OF_OPENING_UPWARDS),
'⟚' => Relation(symbol::LEFT_AND_RIGHT_DOUBLE_TURNSTILE),
'⟛' => Relation(symbol::LEFT_AND_RIGHT_TACK),
'⟜' => Relation(symbol::LEFT_MULTIMAP),
'⟝' => Relation(symbol::LONG_RIGHT_TACK),
'⟞' => Relation(symbol::LONG_LEFT_TACK),
'⟟' => Relation(symbol::UP_TACK_WITH_CIRCLE_ABOVE),
'⟰' => Relation(symbol::UPWARDS_QUADRUPLE_ARROW),
'⟱' => Relation(symbol::DOWNWARDS_QUADRUPLE_ARROW),
'⟲' => Relation(symbol::ANTICLOCKWISE_GAPPED_CIRCLE_ARROW),
'⟳' => Relation(symbol::CLOCKWISE_GAPPED_CIRCLE_ARROW),
'⟴' => Relation(symbol::RIGHT_ARROW_WITH_CIRCLED_PLUS),
'⟵' => Relation(symbol::LONG_LEFTWARDS_ARROW),
'⟶' => Relation(symbol::LONG_RIGHTWARDS_ARROW),
'⟷' => Relation(symbol::LONG_LEFT_RIGHT_ARROW),
'⟸' => Relation(symbol::LONG_LEFTWARDS_DOUBLE_ARROW),
'⟹' => Relation(symbol::LONG_RIGHTWARDS_DOUBLE_ARROW),
'⟺' => Relation(symbol::LONG_LEFT_RIGHT_DOUBLE_ARROW),
'⟻' => Relation(symbol::LONG_LEFTWARDS_ARROW_FROM_BAR),
'⟼' => Relation(symbol::LONG_RIGHTWARDS_ARROW_FROM_BAR),
'⟽' => Relation(symbol::LONG_LEFTWARDS_DOUBLE_ARROW_FROM_BAR),
'⟾' => Relation(symbol::LONG_RIGHTWARDS_DOUBLE_ARROW_FROM_BAR),
'⟿' => Relation(symbol::LONG_RIGHTWARDS_SQUIGGLE_ARROW),
};
pub fn get_operator_from_unicode(c: char) -> Option<Token<'static>> {
UNICODE_OPERATORS
.get(&c)
.map(|tok| Token::MathOrTextMode(tok, c))
}