Rewrite patterns#
- to-command
\not\to\nrightarrow - rightarrow-command
\not\rightarrow\nrightarrow - literal
\not→\nrightarrow
Examples#
Each example shows this rule applied in isolation. A complete normalization profile may make additional changes.
to command#
Rendering verified with the declared packages.
rightarrow command#
Rendering verified with the declared packages.
Literal#
Rendering verified with the declared packages.
Related rules#
Same family#
ams/Doteq-to-doteqdotCollapse Doteq to the descriptive doteqdot character.ams/doublecap-to-CapCollapse doublecap to the more common Cap character.ams/gggtr-to-gggCollapse gggtr to the shorter ggg character.ams/llless-to-lllCollapse llless to the shorter lll character.ams/trianglerighteq-to-unrhdCollapse trianglerighteq to the more common unrhd character.ams/unlhd-to-trianglelefteqCollapse unlhd to the descriptive trianglelefteq character.ams/vartriangleleft-to-lhdCollapse vartriangleleft to the more common lhd character.ams/vartriangleright-to-rhdCollapse vartriangleright to the more common rhd character.ams/impliedby-to-LongleftarrowCollapse impliedby to the explicit AMS long-left-arrow spelling with source-backed spacing.ams/implies-to-LongrightarrowCollapse implies to the explicit AMS long-right-arrow spelling with source-backed spacing.ams/Join-to-bowtieNormalize Join to bowtie for corpus form.ams/centerdot-to-cdotNormalize AMS centerdot to the base cdot character for corpus form.ams/doublecup-to-CupNormalize doublecup to Cup for corpus form.ams/leadsto-to-rightsquigarrowNormalize leadsto to the more common rightsquigarrow corpus form.ams/lozenge-to-DiamondNormalize lozenge to Diamond for corpus form.ams/restriction-to-upharpoonrightNormalize restriction to upharpoonright for corpus form.ams/square-to-BoxNormalize square to Box for corpus form.ams/vartriangle-to-bigtriangleupNormalize vartriangle to bigtriangleup for corpus form.base/ast-to-asteriskCanonicalize the math binary operator \ast to the pixel-identical literal asterisk form.base/ge-to-geqCollapse ge to the explicit geq relation character.base/le-to-leqCollapse le to the explicit leq relation character.base/lnot-to-negCollapse lnot to the standard neg character.base/ne-to-neqCollapse ne to the explicit neq relation character.base/owns-to-niCollapse owns to the shorter ni character.base/prime-to-prime-nodeConvert the prime control sequence to the Prime AST node.base/not-equals-to-neqRewrite \not followed by an equals sign to the canonical \neq character.base/not-exists-to-nexistsRewrite \not\exists to the canonical AMS \nexists character when the target is available.base/not-in-to-notinRewrite \not\in to the canonical \notin character.base/dots-to-ldots-or-cdotsResolve plain \dots to an explicit ellipsis only when the following math atom class determines MathJax's choice.base/gets-to-leftarrowNormalize gets to leftarrow for corpus form.base/land-to-wedgeNormalize land to wedge for corpus form.base/lor-to-veeNormalize lor to vee for corpus form.base/rightarrow-to-toNormalize rightarrow to the shorter to arrow character for corpus form.base/semantic-dots-to-cdotsNormalize semantic centered-dot ellipsis aliases to cdots for corpus form.base/semantic-dots-to-ldotsNormalize semantic baseline ellipsis aliases to ldots for corpus form.physics/divsymbol-to-divisionsymbolCollapse divsymbol to the documented divisionsymbol character alias.physics/dotproduct-to-vdotCollapse dotproduct to the shorter vdot character alias.physics/cross-aliases-to-timesNormalize physics cross-product glyph aliases to times for corpus form.
Notes#
Uses the exact MathJax not_remap entry U+2192 -> U+219B. Accept a bare U+2192 Char or a zero-argument known character command backed by either to or rightarrow. The source owner remains base because not is a base command; AMS is required only for the produced character target, whose availability must guard the rule. Both atoms must occupy the same Root or Group child slot. Scripted, arguments, unknown nodes, Error, Environment, and cross-slot content fail closed. Consume not and its sibling atomically. Every Applied result removes the matched cmd:not node and its right-arrow sibling; all other shapes return Skipped, so the number of eligible cmd:not nodes strictly decreases.
Disable this rule#
TransformEngine(profile="corpus", disable_rules=["base/not-right-arrow-to-nrightarrow"])new TransformEngine({ profile: 'corpus', disableRules: ['base/not-right-arrow-to-nrightarrow'] })