# base/limits-drop

Drop explicit limits from an audited operator while preserving attached scripts.

https://texform.dev/rules/base/limits-drop

## Metadata

| Field | Value |
| --- | --- |
| Key | base/limits-drop |
| Level | equiv |
| Fidelity | reading |
| Enabled by packages | base |
| Profiles | Equiv |

## Rewrite patterns

### bare

From:

```latex
#1\limits
```

To:

```latex
#1
```

### scripted

From:

```latex
#1\limits_{#2}^{#3}
```

To:

```latex
#1_{#2}^{#3}
```

## Examples

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

### Base bare

Before:

```latex
\sin\limits
```

After this rule:

```latex
\sin
```

Packages: base.

Rendering verified with the declared packages.

### Base scripted

Before:

```latex
\sum\limits_{i=1}^{n}
```

After this rule:

```latex
\sum_{i=1}^{n}
```

Packages: base.

The rendered result has pixel differences from the input.

### Base collision

Before:

```latex
\det\limits
```

After this rule:

```latex
\det
```

Packages: base.

Rendering verified with the declared packages.

### Physics owner preserved

Before:

```latex
\det\limits_x
```

After this rule:

```latex
\det\limits_x
```

Packages: base, physics.

Rendering verified with the declared packages.

### Ams scripted

Before:

```latex
\varlimsup\limits_x^y
```

After this rule:

```latex
\varlimsup_x^y
```

Packages: base, ams.

The rendered result has pixel differences from the input.

### Starred operatorname

Before:

```latex
\operatorname*{foo}\limits_x
```

After this rule:

```latex
\operatorname*{foo}_x
```

Packages: base, ams.

The rendered result has pixel differences from the input.

### Ams character

Before:

```latex
\iiiint\limits^1
```

After this rule:

```latex
\iiiint^1
```

Packages: base, ams.

The rendered result has pixel differences from the input.

## Triggers

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

## Touches

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

## Upstream

- [ams/idotsint-expand](https://texform.dev/rules/ams/idotsint-expand): Expand idotsint to explicit repeated integral surfaces.
- [base/stackbin-expand](https://texform.dev/rules/base/stackbin-expand): Expand stackbin to an explicit binary-level stacked operator form.
- [base/stackrel-expand](https://texform.dev/rules/base/stackrel-expand): Expand stackrel to an explicit relation-level stacked operator form.

## Same family

- [ams/operatorname-to-named-function](https://texform.dev/rules/ams/operatorname-to-named-function): Rewrite plain operatorname arguments to equivalent base named-function or named-operator commands.
- [ams/idotsint-expand](https://texform.dev/rules/ams/idotsint-expand): Expand idotsint to explicit repeated integral surfaces.
- [base/nolimits-drop](https://texform.dev/rules/base/nolimits-drop): Drop explicit nolimits from an audited operator while preserving attached scripts.
- [physics/cosine-to-cos](https://texform.dev/rules/physics/cosine-to-cos): Collapse a bare cosine helper to the standard cos operator.
- [physics/naturallogarithm-to-ln](https://texform.dev/rules/physics/naturallogarithm-to-ln): Collapse a bare natural logarithm helper to the standard ln operator.
- [physics/probability-to-pr](https://texform.dev/rules/physics/probability-to-pr): Collapse a bare Probability helper to the standard Pr operator.
- [physics/sine-to-sin](https://texform.dev/rules/physics/sine-to-sin): Collapse a bare sine helper to the standard sin operator.
- [physics/trace-capital-to-Tr](https://texform.dev/rules/physics/trace-capital-to-Tr): Collapse a bare Trace with no following argument group to the local Tr anchor.
- [physics/trace-to-tr](https://texform.dev/rules/physics/trace-to-tr): Collapse a bare trace with no following argument group to the local tr anchor.
- [physics/named-fn-paren-expand](https://texform.dev/rules/physics/named-fn-paren-expand): Expand physics power and auto-sized parenthesis arguments of standard named functions.
- [physics/named-fn-to-operatorname](https://texform.dev/rules/physics/named-fn-to-operatorname): Rewrite physics-only named functions to operatorname and expand their auto-sized arguments.
- [physics/physics-operator-fence-expand](https://texform.dev/rules/physics/physics-operator-fence-expand): Expand the physics auto-sized argument of exp, det, and Pr into an explicit fence.
- [physics/rank-to-operatorname-rank](https://texform.dev/rules/physics/rank-to-operatorname-rank): Rewrite rank to an explicit operatorname form instead of a package-local alias.

## Notes

This rule matches only its audited active-record whitelist. The modifier and preceding operator must occupy the same Root or Group child slot. Relocate attached subscript and superscript ownership from a Scripted limits node to the preceding operator. Isolated, misplaced, runtime-defined, unknown, cross-group, and cross-slot modifiers remain unchanged. The det, exp, and Pr collision commands are eligible only when their active record is the base owner; physics-owned records fail closed. Starred operatorname and the AMS iiiint character are explicit whitelist branches. Audited preceding targets: cmd:mathop, cmd:arccos, cmd:arcsin, cmd:arctan, cmd:arg, cmd:cos, cmd:cosh, cmd:cot, cmd:coth, cmd:csc, cmd:deg, cmd:dim, cmd:gcd, cmd:hom, cmd:inf, cmd:ker, cmd:lg, cmd:lim, cmd:liminf, cmd:limsup, cmd:ln, cmd:log, cmd:max, cmd:min, cmd:sec, cmd:sin, cmd:sinh, cmd:sup, cmd:tan, cmd:tanh, cmd:det, cmd:exp, cmd:Pr, cmd:operatorname, cmd:injlim, cmd:projlim, cmd:varliminf, cmd:varlimsup, cmd:varinjlim, cmd:varprojlim, char:coprod, char:bigvee, char:bigwedge, char:biguplus, char:bigcap, char:bigcup, char:int, char:intop, char:iint, char:iiint, char:prod, char:sum, char:bigotimes, char:bigoplus, char:bigodot, char:oint, char:ointop, char:oiint, char:oiiint, char:bigsqcup, char:smallint, char:iiiint. Every Applied result removes one eligible cmd:limits modifier; all non-whitelisted or misplaced modifiers return Skipped, so the number of eligible cmd:limits nodes strictly decreases. Removing explicit stacking can change visible limit placement in display or inline math. This Reading-fidelity projection is enabled only by Equiv; Authoring, Faithful, and Corpus retain the modifier, including modifiers generated by stacked-operator expansion.

## Disable this rule

```python
TransformEngine(profile="corpus", disable_rules=["base/limits-drop"])
```

```javascript
new TransformEngine({ profile: 'corpus', disableRules: ['base/limits-drop'] })
```

[Open in Playground](https://play.texform.dev/?input=%5Csin%5Climits)
