The code below outputs:
ERROR: Package Foo Error: Unknown key, \l_keys_key_tl
Why does \l_keys_key_tl expand at Hook 1, not Hook 2?
\documentclass{report}
\usepackage{xparse}
\ExplSyntaxOn
\msg_new:nnn
{Foo}
{generic}
{#1}
\keys_define:nn { \__erw_foo_options }
{
key .value_required:n = true,
unknown .code:n =
{
{ Unknown~key,~\l_keys_key_tl} % Hook 1
\msg_error:nnn
{ Foo }
{ generic }
{ Unknown~key,~\l_keys_key_tl} % Hook 2
}
}
\NewDocumentCommand{\FooOptions}
{m}
{
\keys_set:nn { \__erw_foo_options } {#1}
}
\NewDocumentCommand{\FooTest}
{}
{
\FooOptions{bar}
}
\ExplSyntaxOff
\begin{document}
\FooTest
\end{document}
l3keys. There should be no need to explicitly handle this situation. – frougon Mar 05 '20 at 19:57