New on CTAN: expkv-bundle
CTAN Announcements
ctan-ann at ctan.org
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
https://gitlab.com/islandoftex/texmf/expkv-bundle/-/blob/master/changelog.md
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
sign)
## `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
https://ctan.org/pkg/expkv-bundle
The bundle’s files themselves can be inspected at
https://mirrors.ctan.org/macros/generic/expkv-bundle/
------------------------------------------------------------------------
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 https://ctan.org/lugs
More information about the Ctan-ann
mailing list