Rewrite patterns#
\enspace\enspace\quad
Examples#
Each example shows this rule applied in isolation. A complete normalization profile may make additional changes.
Double enspace#
Rendering verified with the declared packages.
Text double enspace preserved#
Rendering verified with the declared packages.
Related rules#
Upstream rules#
base/small-spacer-merge-to-enspaceMerge exact half-em small-spacer chunks into enspace in one pass.
Downstream rules#
base/double-quad-to-qquadMerge two adjacent quads into one qquad for authoring normalization.base/quad-dropDrop quad in math mode and collapse each text-mode quad run to one ordinary space.
Same family#
ams/nobreakspace-to-tildeCollapse nobreakspace to the canonical nonbreaking space token.base/break-to-linebreakCollapse break to the explicit linebreak command.base/newline-to-linebreakCollapse newline to the explicit linebreak command.base/control-space-to-tildeRewrite math-mode control space to the canonical active space token.base/gt-space-to-colon-spaceCollapse \> to the canonical medium math space command \:base/hfil-to-hfillCollapse hfil to the canonical hfill command under MathJax spacing semantics.base/hfilll-to-hfillCollapse hfilll to the canonical hfill command.base/hskip-to-hspaceCollapse hskip to the explicit hspace command.base/negthinspace-to-neg-comma-spaceCollapse negthinspace to the explicit negative thin math space command.base/space-to-tildeCollapse space to the explicit nonbreaking space token.base/thinspace-to-comma-spaceCollapse thinspace to the explicit thin math space command.base/double-quad-to-qquadMerge two adjacent quads into one qquad for authoring normalization.base/small-spacer-merge-to-enspaceMerge exact half-em small-spacer chunks into enspace in one pass.base/allowbreak-dropDrop allowbreak as a pure linebreak hint during cleanup-oriented normalization.base/badbreak-dropDrop badbreak as a pure linebreak hint during cleanup-oriented normalization.base/goodbreak-dropDrop goodbreak as a pure linebreak hint during cleanup-oriented normalization.base/mathstrut-dropDrop the invisible mathstrut layout helper in cleanup-oriented normalization.base/nobreak-dropDrop nobreak as a pure linebreak hint during cleanup-oriented normalization.base/strut-dropDrop the fixed empty strut node in cleanup-oriented normalization.base/enspace-dropDrop enspace in math mode and collapse each text-mode enspace run to one ordinary space.base/qquad-dropDrop qquad in math mode and collapse each text-mode qquad run to one ordinary space.base/quad-dropDrop quad in math mode and collapse each text-mode quad run to one ordinary space.base/mkern-to-mspaceCollapse mkern to the explicit mspace command.base/mskip-to-mspaceCollapse mskip to the explicit mspace command.
Notes#
Authoring-level exact-width canonicalization for two adjacent math-mode enspaces in one sibling container and slot. Do not cross groups, scripts, cells, modes, or non-Spacer nodes. Text-mode records remain unchanged. The Equiv spacing-drop family eliminates both enspace and the produced quad, so enabling or omitting this canonicalization does not change the final Equiv normal form. Every Applied result consumes two adjacent cmd:enspace nodes and produces no cmd:enspace, so the total cmd:enspace count strictly decreases; ineligible text-mode and boundary cases return Skipped.
Disable this rule#
TransformEngine(profile="corpus", disable_rules=["base/double-enspace-to-quad"])new TransformEngine({ profile: 'corpus', disableRules: ['base/double-enspace-to-quad'] })