Rewrite Rulesbase/not-in-to-notin

base/not-in-to-notin

Rewrite \not\in to the canonical \notin character.

Rewrite patterns#

  1. command\not\in\notin
  2. literal\not∈\notin

Examples#

Each example shows this rule applied in isolation. A complete normalization profile may make additional changes.

Command#

Before

x\not\in A

After this rule

x\notin A

Rendering verified with the declared packages.

Literal#

Before

x\not∈ A

After this rule

x\notin A

Rendering verified with the declared packages.

Same family#

Notes#

Uses the exact MathJax not_remap entry U+2208 -> U+2209. The zero-argument not command and the following bare U+2208 Char or zero-argument known in character command 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 in 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-in-to-notin"])
new TransformEngine({ profile: 'corpus', disableRules: ['base/not-in-to-notin'] })

Open in Playground