New on CTAN: expkv-bundle

CTAN Announcements ctan-ann at
Tue Jan 24 20:34:11 CET 2023

Jonathan P. Spratte submitted the

                expkv-bundle  .

Version:  2023-01-23
License:  lppl1.3c

Summary description:  An expandable key=val implementation and friends

Announcement text:
 `expkv-bundle` replaces the earlier CTAN packages `expkv`, `expkv-cs`,
 `expkv-def`, and `expkv-opt` to distribute them as a single CTAN-package
 (they are still individual LaTeX-packages). There were some changes to
 the individual packages that might break backwards compatibility in
 edge cases. The most noteworthy change perhaps is the new expansion control
 mechanism for key=value input supported by all packages in the bundle.

 A complete changelog can be found at

 The following changes might break existing code:

 ## `expkv`
 - allow access to the raw key names in unknown handlers (might break existing
     code if `\par` is part of a key name and your unknown handlers aren't
     defined `\long`, also might break existing uses of `\ekvletunknown` and
     `\ekvletunknownNoVal`, as the macros should now expect an argument more)
 - `\ekvsetdef` no longer defines the macro as `\long` automatically (use a
     prefix if you need to)
 - the expansion control might break existing uses of `\ekvparse` if the keys
     contain a colon followed by a space (only if the tokenlist following the
     space is not blank and the colon is not preceded by a space)

 ## `expkv-cs`
 - the unknown handlers defined with `...` forward the raw key names now.
 - the unknown handlers defined with `...` forward the key name surrounded by one
     set of braces and spaces now
 - use `\ekvmorekv` for `meta` and `nmeta` instead of a nested `\ekvset` (might
     affect behaviour if a set-changing key is used in the meta list, though this
     would most likely break in `expkv-cs` in the first place)

 ## `expkv-def`
 - add `unprotected` prefix for choices (might break existing choices starting
     with that word)
 - use `\expanded` in `estore`, `xstore`, `edata`, `xdata`, `edataT`, `xdataT`,
     `einitial`, and `edefault` instead of `\edef` expansion. Might break
     existing usage using `#`-doubling.
 - use `\ekvmorekv` for `meta` and `nmeta` instead of a nested `\ekvset` (might
     affect behaviour if a set-changing key is used in the meta list, you can get
     the old behaviour using `smeta` or `snmeta`)
 - allow values stored in the underlying control sequence differing from their
     choice in `choice-store` (might break existing choices containing an equals

 ## `expkv-opt`
 - the deprecated `\ekvoProcessUnusedGlobalOptions` now throws an error (will be
     removed next version)
 - also remove from unused global options if in a class the local options are
     identical to the global options and the unused global options aren't empty


The bundle’s Catalogue entry can be viewed at

The bundle’s files themselves can be inspected at


   Thanks for the upload.

     For the CTAN Team
    Petra Rübe-Pugliese


CTAN is run entirely by volunteers and supported by TeX user groups.
Please join a user group or donate to one, see

More information about the Ctan-ann mailing list