On 27/08/2011 13:16, Bruno Le Floch wrote: > On 8/27/11, Will Robertson <[log in to unmask]> wrote: >> On 26/08/2011, at 3:04 AM, Ulrike Fischer wrote: >> >>> Now I want to define a "mirrored" key >>> >>> no-sym >>> >>> so that "no-sym = true" sets \l_chessfss_sym_bool to false. >>> >>> Is there some easy way? >> >> Not directly as far as I know (using >> >> .code:n = { \bool_set_false:N \l_chessfss_sym_bool } >> >> works of course but it's not the best interface), so I think this would be a >> good addition. (I seem to remember kvoptions has a similar feature.) Which >> do you think is best to name it? >> >> no-sym .bool_unset:N = \l_chessfss_sym_bool >> no-sym .bool_set_false:N = \l_chessfss_sym_bool >> no-sym .bool_set_reverse:N = \l_chessfss_sym_bool > > I find .bool_set_reverse:N more descriptive (cf. \reverse_if:N), as > no-sym = false is valid user input, I guess? Early-on in the life of l3keys, we did have '.bool_set_<something>:N' (where I forget exactly what <something> was). The reasons we did not keep it then were: a) The idea was to keep things simply initially; b) The other variable-setting functions all mirror the base expl3 names. Now, boolean keys are a bit odd, as they are actually a special kind of choice (that's how they are implemented). So it may well be best to provide this ability. I guess I favour '.bool_set_inverse:N'. -- Joseph Wright