# Changelog

## v0.1.0 — 2026-07-30

Initial version.

- `\subst[<keys>]{<expr>}{<vars>}{<terms>}` sets a substitution in one of
  seven conventions: `slash`, `slashrev`, `assign`, `arrow`, `mapsto`,
  `updown`, `updownrev`. The starred form scales the delimiters to their
  contents.
- `\substmark` sets the mark alone, for attaching to material already
  typeset. In the up-down styles it omits the delimiters, which would
  otherwise enclose nothing.
- Simultaneous substitutions are taken from two comma lists paired by
  index. Lists of different lengths are reported as an error rather than
  having the surplus entries discarded.
- Both commands are mode-aware: mathematics in math mode, text in text
  mode, at the surrounding style.
- Keys `style=`, `fences=` and `pairsep=` work as package options and per
  use; `synonym=<name>` is a load-time option. Unknown values for
  `style` and `fences` are reported together with the list of allowed
  ones.
- `fences` chooses the delimiters in both families of styles: they
  enclose the mark in the delimited styles and the expression in the
  up-down ones. The up-down styles are never left undelimited, so `none`
  is read there as `parens`.
- In `assign` the colon is centred on the math axis and set close to the
  equals sign. The symbol is taken from the font under `unicode-math`,
  from `mathtools` when that is loaded, and is otherwise assembled by the
  package, so no further package is required.
- An existing `\subst` or `\substmark` from another package is never
  overwritten; `synonym=<name>` provides copies of both under a chosen
  name.
- Requires only a LaTeX kernel from 2022-06-01 or newer.
- l3build test suite covering the seven styles and every key, moving
  arguments (section titles, captions), comma-list parsing, per-use key
  scoping, and the load-time diagnostics.
