Rewrite Rulesbase/limits-drop

base/limits-drop

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

Rewrite patterns#

  1. bare#1\limits#1
  2. scripted#1\limits_{#2}^{#3}#1_{#2}^{#3}

Examples#

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

Base bare#

Before

\sin\limits

After this rule

\sin

Rendering verified with the declared packages.

Base scripted#

Before

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

After this rule

\sum_{i=1}^{n}

The rendered result has pixel differences from the input.

Base collision#

Before

\det\limits

After this rule

\det

Rendering verified with the declared packages.

Physics owner preserved#

Before

\det\limits_x

After this rule

\det\limits_x

Rendering verified with the declared packages.

Ams scripted#

Before

\varlimsup\limits_x^y

After this rule

\varlimsup_x^y

The rendered result has pixel differences from the input.

Starred operatorname#

Before

\operatorname*{foo}\limits_x

After this rule

\operatorname*{foo}_x

The rendered result has pixel differences from the input.

One remaining example#

Listed as LaTeX source. Hover over, focus, or tap a row to preview the rendering before and after. One renders with pixel differences from the input.

ExampleBeforeAfter this rule
Ams character
Pixel differences
\iiiint\limits^1\iiiint^1

Upstream rules#

Same family#

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#

TransformEngine(profile="corpus", disable_rules=["base/limits-drop"])
new TransformEngine({ profile: 'corpus', disableRules: ['base/limits-drop'] })

Open in Playground