Repository navigation
This release lets the PyPI package install the texform command-line tool, and fixes transform failures and output that did not reparse, mostly with physics. One rule key changes; see Changed.
Changed
- The rule key
base/operatorname-to-named-functionbecomesams/operatorname-to-named-function, because the rule only applies whenamsprovides\operatorname. Configurations that enable or disable the old key must use the new one; the old key is not kept as an alias. Output is unchanged.
Added
- The PyPI package installs the
texformcommand, also available aspython -m texform, so the command-line tool no longer needs a Rust toolchain. Install it withuv tool install texform, or run it once withuvx texform. It runs the same code ascargo install texform-cli, with the same commands, output, and exit statuses; each invocation adds about 10 ms of Python startup, and--linesandservethroughput is unchanged.
Fixed
- With
physics,\eval,\eval*, and\evaluatedwithout a following(,[, or brace group no longer fail with a rewrite contract violation. As in MathJax, they expand to\left.\vphantom{\int}\right|, so\eval xbecomes\left.\vphantom{\int}\right| x. - With
physics, an ordered derivative whose variable already has a superscript no longer produces a double superscript that fails to reparse:\dv[2]{f}{x^2}now gives\mathrm{d}{x^{2}}^{2}in the denominator.\pdvand\fdvare fixed the same way. - A delimited argument whose content ends with an unpaired copy of its opening delimiter is kept in a protective brace group, and the parser strips that group again. Under Equiv with
physics,\qty(a{\big(}b)now becomes\qty({a(b})instead of\qty(a(b), which failed to parse. - Rewriting a scripted
\breakor\newlineattaches its scripts to an empty base, so\break'becomes\\{}', and FlattenGroups keeps the group in{\cr}_1. Both outputs previously changed when parsed again. - Dropping
\goodbreakused as a script base no longer panics in Corpus and lower profiles:\goodbreak^2becomes{}^{2}.