# base/atop-to-genfrac

Rewrite infix atop to an explicit no-rule genfrac form.

https://texform.dev/rules/base/atop-to-genfrac

## Metadata

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

## Rewrite patterns

From:

```latex
#1 \atop #2
```

To:

```latex
\genfrac{}{}{0pt}{}{#1}{#2}
```

## Examples

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

### No rule stacked fraction

Before:

```latex
x_1+\cdots+x_m \atop y_1y_2\cdots y_n
```

After this rule:

```latex
\genfrac{}{}{0pt}{}{x_1+\cdots+x_m}{y_1y_2\cdots y_n}
```

Packages: base, ams.

Rendering verified with the declared packages.

### Script atop condition

Before:

```latex
\sum_{i \atop i\ne j} a_i
```

After this rule:

```latex
\sum_{\genfrac{}{}{0pt}{}{i}{i\ne j}} a_i
```

Packages: base, ams.

Rendering verified with the declared packages.

## Triggers

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

## Eliminates

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

## Produces

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

## Same family

- [ams/cfrac-to-frac](https://texform.dev/rules/ams/cfrac-to-frac): Drop continued-fraction styling from centered AMS cfrac forms.
- [ams/dbinom-and-tbinom-to-binom](https://texform.dev/rules/ams/dbinom-and-tbinom-to-binom): Rewrite AMS display-style and text-style binomial commands to binom.
- [ams/dfrac-to-frac](https://texform.dev/rules/ams/dfrac-to-frac): Rewrite the AMS display-style fraction command to frac.
- [ams/tfrac-to-frac](https://texform.dev/rules/ams/tfrac-to-frac): Rewrite the AMS text-style fraction command to frac.
- [base/above-to-genfrac](https://texform.dev/rules/base/above-to-genfrac): Rewrite above to a thickness-preserving genfrac form.
- [base/abovewithdelims-to-genfrac](https://texform.dev/rules/base/abovewithdelims-to-genfrac): Rewrite abovewithdelims to an explicit genfrac with delimiters and thickness.
- [base/atopwithdelims-to-genfrac](https://texform.dev/rules/base/atopwithdelims-to-genfrac): Rewrite atopwithdelims to an explicit delimited no-rule genfrac form.
- [base/brace-to-genfrac](https://texform.dev/rules/base/brace-to-genfrac): Rewrite infix brace to an explicit genfrac with brace delimiters.
- [base/brack-to-genfrac](https://texform.dev/rules/base/brack-to-genfrac): Rewrite infix brack to an explicit genfrac with bracket delimiters.
- [base/choose-to-binom](https://texform.dev/rules/base/choose-to-binom): Rewrite infix choose to an explicit binom command.
- [base/over-to-frac](https://texform.dev/rules/base/over-to-frac): Rewrite infix over to an explicit frac command.
- [base/overwithdelims-to-genfrac](https://texform.dev/rules/base/overwithdelims-to-genfrac): Rewrite overwithdelims to an explicit genfrac with delimiters.
- [base/root-of-to-sqrt](https://texform.dev/rules/base/root-of-to-sqrt): Rewrite legacy root-of syntax to bracketed sqrt notation.
- [base/leftroot-drop](https://texform.dev/rules/base/leftroot-drop): Drop the leftroot index-position hint in cleanup-oriented normalization.
- [base/uproot-drop](https://texform.dev/rules/base/uproot-drop): Drop the uproot index-position hint in cleanup-oriented normalization.

## Disable this rule

```python
TransformEngine(profile="corpus", disable_rules=["base/atop-to-genfrac"])
```

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

[Open in Playground](https://play.texform.dev/?input=x_1%2B%5Ccdots%2Bx_m+%5Catop+y_1y_2%5Ccdots+y_n)
