Keyval Improvements and xkeyval support #860
Tl;DR: This PR adds major improvements to the handling of KeyValue arguments, mostly based on the
I have been working on this for the past few weeks and I am going to try to summarize the changes that I have made. I probably forgot something, so please have a look at the diffs as well.
The KeyVals logic, previously contained in
This does not support the pointer system of
This commit extends support for the keyval package by extending the existing bindings to be able to read key-value definitions and the associated defaults from raw macro definitions. Furthermore, it prepares the implementation for support of extended packages, like 'xkeyval' and friends. Furthermore, it adds a new group of tests 'keyval'. For now, this contains two tests, `keyvalinline` and `keyvalstyle`. The first of these is testing the new functionality, the second one is an old test that was moved out of the graphics package.
This commit adds bindings for the xkeyval package which work without relying on the .sty file. These bindings do not support pre-setting keys or using the built-in pointer system. Furthermore, this commit refactors and extends the KeyVals class, to be compatible with the new types of key-value pairs defined in the xkeyval package. It also adds tests for all appropriate cases.