# base/control-space-to-tilde

Rewrite math-mode control space to the canonical active space token.

https://texform.dev/rules/base/control-space-to-tilde

## Metadata

| Field | Value |
| --- | --- |
| Key | base/control-space-to-tilde |
| Level | authoring |
| Fidelity | render |
| Enabled by packages | base |
| Profiles | Authoring, Faithful, Corpus, Equiv |

## Rewrite patterns

From:

```latex
\ 
```

To:

```latex
~
```

## Examples

Examples show the rule in isolation, not a complete normalization profile.

### Math control space

Before:

```latex
a\ b
```

After this rule:

```latex
a~b
```

Packages: base.

Rendering verified with the declared packages.

### Text control space preserved

Before:

```latex
\text{A\ B}
```

After this rule:

```latex
\text{A\ B}
```

Packages: base, textmacros.

Rendering verified with the declared packages.

## Triggers

- [\\ ](https://texform.dev/latex/commands/-20-)

## Touches

- [\\ ](https://texform.dev/latex/commands/-20-)

## Same family

- [ams/nobreakspace-to-tilde](https://texform.dev/rules/ams/nobreakspace-to-tilde): Collapse nobreakspace to the canonical nonbreaking space token.
- [base/break-to-linebreak](https://texform.dev/rules/base/break-to-linebreak): Collapse break to the explicit linebreak command.
- [base/newline-to-linebreak](https://texform.dev/rules/base/newline-to-linebreak): Collapse newline to the explicit linebreak command.
- [base/gt-space-to-colon-space](https://texform.dev/rules/base/gt-space-to-colon-space): Collapse \> to the canonical medium math space command \:
- [base/hfil-to-hfill](https://texform.dev/rules/base/hfil-to-hfill): Collapse hfil to the canonical hfill command under MathJax spacing semantics.
- [base/hfilll-to-hfill](https://texform.dev/rules/base/hfilll-to-hfill): Collapse hfilll to the canonical hfill command.
- [base/hskip-to-hspace](https://texform.dev/rules/base/hskip-to-hspace): Collapse hskip to the explicit hspace command.
- [base/negthinspace-to-neg-comma-space](https://texform.dev/rules/base/negthinspace-to-neg-comma-space): Collapse negthinspace to the explicit negative thin math space command.
- [base/space-to-tilde](https://texform.dev/rules/base/space-to-tilde): Collapse space to the explicit nonbreaking space token.
- [base/thinspace-to-comma-space](https://texform.dev/rules/base/thinspace-to-comma-space): Collapse thinspace to the explicit thin math space command.
- [base/double-enspace-to-quad](https://texform.dev/rules/base/double-enspace-to-quad): Rewrite two adjacent enspaces to one exact-width quad.
- [base/double-quad-to-qquad](https://texform.dev/rules/base/double-quad-to-qquad): Merge two adjacent quads into one qquad for authoring normalization.
- [base/small-spacer-merge-to-enspace](https://texform.dev/rules/base/small-spacer-merge-to-enspace): Merge exact half-em small-spacer chunks into enspace in one pass.
- [base/allowbreak-drop](https://texform.dev/rules/base/allowbreak-drop): Drop allowbreak as a pure linebreak hint during cleanup-oriented normalization.
- [base/badbreak-drop](https://texform.dev/rules/base/badbreak-drop): Drop badbreak as a pure linebreak hint during cleanup-oriented normalization.
- [base/goodbreak-drop](https://texform.dev/rules/base/goodbreak-drop): Drop goodbreak as a pure linebreak hint during cleanup-oriented normalization.
- [base/mathstrut-drop](https://texform.dev/rules/base/mathstrut-drop): Drop the invisible mathstrut layout helper in cleanup-oriented normalization.
- [base/nobreak-drop](https://texform.dev/rules/base/nobreak-drop): Drop nobreak as a pure linebreak hint during cleanup-oriented normalization.
- [base/strut-drop](https://texform.dev/rules/base/strut-drop): Drop the fixed empty strut node in cleanup-oriented normalization.
- [base/enspace-drop](https://texform.dev/rules/base/enspace-drop): Drop enspace in math mode and collapse each text-mode enspace run to one ordinary space.
- [base/qquad-drop](https://texform.dev/rules/base/qquad-drop): Drop qquad in math mode and collapse each text-mode qquad run to one ordinary space.
- [base/quad-drop](https://texform.dev/rules/base/quad-drop): Drop quad in math mode and collapse each text-mode quad run to one ordinary space.
- [base/mkern-to-mspace](https://texform.dev/rules/base/mkern-to-mspace): Collapse mkern to the explicit mspace command.
- [base/mskip-to-mspace](https://texform.dev/rules/base/mskip-to-mspace): Collapse mskip to the explicit mspace command.

## Notes

This is a partial matcher because the same command name has different base/math and textmacros/text semantics, so it touches rather than eliminates cmd: . The rule derives the actual content mode from the AST parent and slot and rewrite only math content; active_command() and match_command() are not sufficient mode tests. Text-mode control space remains an ordinary U+0020. Produces is empty because ~ is an ActiveSpace token rather than a knowledge target. Every Applied result replaces one math-mode control-space command with an ActiveSpace node; text-mode and otherwise ineligible nodes return Skipped, so the number of eligible control-space commands strictly decreases.

## Disable this rule

```python
TransformEngine(profile="corpus", disable_rules=["base/control-space-to-tilde"])
```

```javascript
new TransformEngine({ profile: 'corpus', disableRules: ['base/control-space-to-tilde'] })
```

[Open in Playground](https://play.texform.dev/?input=a%5C+b)
