New on CTAN: expkv-bundle
`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
expkv-bundle – An expandable key=val implementation and friends
This is a collection of different packages that provide key=value functionality in plainTeX, LaTeX, and ConTeXt.
At the core, the expkv package implements two expandable key=value parsers that are somewhat fast and robust against common bugs in many key=value implementations (no accidental brace stripping, no fragility for active commas or equals signs).
expkv-cs enables users to define expandable key=value macros in a comfortable and straightforward way.
expkv-def provides an interface to define common key types for expkv similar to the key defining interfaces of widespread key=value implementations.
expkv-opt allows to parse package or class options in LaTeX via expkv.
expkv-pop is a utility package to define prefix oriented parsers that allow a somewhat natural formulation (it provides the core functionality for the key-defining front ends of both expkv-cs and expkv-def).
|Copyright||2020–2023 Jonathan P. Spratte|
|Maintainer||Jonathan P. Spratte|