Rewrite patterns#
- parenthesized-numeric-number
\eqalignno{#1&(#3)}\begin{align*} #1 \tag{#3} \end{align*} - raw-numeric-number
\eqalignno{#1}\begin{align*} #1 \tag*{#3} \end{align*} - parenthesized-math-number
\eqalignno{#1&(#3)}\begin{align*} #1 \tag{$#3$} \end{align*} - raw-math-number
\eqalignno{#1}\begin{align*} #1 \tag*{$#3$} \end{align*} - empty-number-cell
\eqalignno{#1&}\begin{align*} #1 \end{align*} - missing-number-cell
\eqalignno{#1}\begin{align*} #1 \end{align*} - final-row-terminator
\eqalignno{#1&(#3)\cr}\begin{align*} #1 \tag{#3} \end{align*} - internal-empty-row
\eqalignno{#1&(#3)\cr\cr#4&(#6)}\begin{align*} #1 \tag{#3}\\\\#4 \tag{#6} \end{align*} - linebreak-arguments
\eqalignno{#1&(#3)\\*[#4]}\begin{align*} #1 \tag{#3}\\*[#4] \end{align*} - newline
\eqalignno{#1&(#3)\newline#4&(#6)}\begin{align*} #1 \tag{#3}\\#4 \tag{#6} \end{align*} - leading-row-scripts
\eqalignno{#1&(#3)\cr_{#4}^{#5}#6&(#8)}\begin{align*} #1 \tag{#3}\\{}_{#4}^{#5}#6 \tag{#8} \end{align*}
Examples#
Each example shows this rule applied in isolation. A complete normalization profile may make additional changes.
eqalignno right tag branch#
The rendered result has pixel differences from the input.
Related rules#
Same family#
ams/Bmatrix-env-to-brace-matrixRewrite the fenced Bmatrix environment to explicit braces around a core matrix environment.ams/Vmatrix-env-to-Vert-matrixRewrite the fenced Vmatrix environment to explicit double bars around a core matrix environment.ams/bmatrix-env-to-bracket-matrixRewrite the fenced bmatrix environment to explicit brackets around a core matrix environment.ams/pmatrix-env-to-paren-matrixRewrite the fenced pmatrix environment to explicit parens around a core matrix environment.ams/vmatrix-env-to-vert-matrixRewrite the fenced vmatrix environment to explicit vertical bars around a core matrix environment.base/cases-to-cases-envRewrite plain-TeX cases to the standard cases environment with row breaks.base/eqalign-to-aligned-envRewrite eqalign to the standard aligned environment.base/matrix-to-matrix-envRewrite plain-TeX matrix to the standard matrix environment with row breaks.base/pmatrix-to-pmatrix-envRewrite plain-TeX pmatrix to the standard pmatrix environment with row breaks.physics/antidiagonalmatrix-to-admatCollapse antidiagonalmatrix to the shorter admat helper.physics/diagonalmatrix-to-dmatCollapse diagonalmatrix to the shorter dmat helper.physics/matrixdeterminant-to-mdetCollapse matrixdeterminant to the shorter mdet determinant helper.physics/bmqty-to-mqtyExpand bmqty to the core mqty builder with bracket fence syntax.physics/mdet-to-vmqtyExpand mdet to the vmqty determinant-style builder.physics/pmqty-to-mqtyExpand pmqty to the core mqty builder with paren fence syntax.physics/zmat-to-xmatExpand zmat to the explicit xmat zero-filled builder.
Notes#
The second body-level AlignmentTab separates the third mathematical numbering cell; nested alignment tabs do not create new cells, and a row with more than three cells returns a normal transform error. Rows with a missing or empty number cell and actual empty rows get no tag, because \eqalignno never numbers rows automatically; the target is align* so no automatic numbers appear. A single complete outer parenthesis pair becomes \tag; otherwise retain the number verbatim with \tag*, without adding parentheses. Numeric patterns apply to ASCII-digit-only content after removal of that outer pair; all other numbering content retains its mathematical subtree inside a $...$ text-mode tag argument, including scripts, groups, fractions, text commands, and nested environments. Only a complete outer pair is removed, so (n)+(m) remains raw. Split only known body-level \cr, \\, and \newline; copy the original \\ star and optional spacing arguments, including \\*[2pt]. Remove exactly the artificial empty segment after a final terminator and omit a final default separator; retain final starred or spaced separators, consecutive internal empty rows, and explicitly terminated final empty rows. Transfer scripts and primes on a parsed separator to an empty base in the next row rather than to the preceding tag. Do not descend into explicit groups or nested environments when identifying separators.
Disable this rule#
TransformEngine(profile="corpus", disable_rules=["base/eqalignno-to-align-env"])new TransformEngine({ profile: 'corpus', disableRules: ['base/eqalignno-to-align-env'] })