From bdfe812fbef57e095af9b6fcd044153923190ff6 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 10 Jun 2021 23:26:56 +0000 Subject: semantex (11jun21) git-svn-id: svn://tug.org/texlive/trunk@59543 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/semantex/semantex.sty | 5122 +++++++++++++------- .../tex/latex/semantex/stripsemantex.sty | 4 +- 2 files changed, 3478 insertions(+), 1648 deletions(-) (limited to 'Master/texmf-dist/tex/latex/semantex') diff --git a/Master/texmf-dist/tex/latex/semantex/semantex.sty b/Master/texmf-dist/tex/latex/semantex/semantex.sty index 7346d026b07..3e7e1422b25 100644 --- a/Master/texmf-dist/tex/latex/semantex/semantex.sty +++ b/Master/texmf-dist/tex/latex/semantex/semantex.sty @@ -1,11 +1,11 @@ \RequirePackage{xparse,l3keys2e,leftindex,semtex} -\ProvidesExplPackage{semantex}{2020/11/05}{0.463}{} +\ProvidesExplPackage{semantex}{2021/06/10}{0.500}{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % SemanTeX -- semantic, keyval-based mathematics % % https://ctan.org/pkg/semantex % -% (C) 2020 Sebastian Ørsted % +% (C) 2021 Sebastian Ørsted % % sorsted@gmail.com % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -15,13 +15,13 @@ \keys_define:nn { semantex } { - keyvalparser .code:n = \cs_set_eq:NN \semantex_keyval_parse:NNn #1, - keyvalparser .value_required:n = true, - semtexfile .choice:, - semtexfile / true .code:n = \semantex_turn_semtex_file_on:, - semtexfile / false .code:n = \semantex_turn_semtex_file_off:, - semtexfile / .code:n = \semantex_turn_semtex_file_on:, - semtexfile / unknown .code:n = \msg_error:nnnn { semantex } { semantex_setup_key_value_not_found } { semtexfile } { #1 }, + keyval~parser .code:n = \cs_set_eq:NN \semantex_keyval_parse:NNn #1, + keyval~parser .value_required:n = true, + semtex~file .choice:, + semtex~file / true .code:n = \semantex_turn_semtex_file_on:, + semtex~file / false .code:n = \semantex_turn_semtex_file_off:, + semtex~file / .code:n = \semantex_turn_semtex_file_on:, + semtex~file / unknown .code:n = \msg_error:nnnn { semantex } { semantex_setup_key_value_not_found } { semtexfile } { #1 }, unknown .code:n = \msg_error:nnx { semantex } { semantex_setup_key_not_found } { \l_keys_key_str } } @@ -512,7 +512,7 @@ \semantex_class_do_output:N #1 \semantex_class_set_symbol:Nn #1 { ##1 } \semantex_class_set_keys:Nn #1 { ##2 } - \semantex_class_set_degreedefault:Nn #1 { ##3 } + \semantex_class_set_degree_default:Nn #1 { ##3 } \semantex_class_set_arg:Nn #1 { ##4 } } } @@ -523,7 +523,7 @@ \semantex_class_do_output:N #1 \semantex_class_set_symbol:Nn #1 { ##1 } \semantex_class_set_keys:Nn #1 { ##2 } - \semantex_class_set_degreedefault:Nn #1 { ##3 } + \semantex_class_set_degree_default:Nn #1 { ##3 } } } } @@ -610,7 +610,7 @@ \semantex_render_class:Nn #1 { \semantex_class_do_output:N #1 \semantex_class_set_symbol:Nn #1 { ##1 } - \semantex_class_set_degreedefault:Nn #1 { ##3 } + \semantex_class_set_degree_default:Nn #1 { ##3 } \semantex_class_set_arg:Nn #1 { ##4 } } } @@ -620,7 +620,7 @@ \semantex_render_class:Nn #1 { \semantex_class_do_output:N #1 \semantex_class_set_symbol:Nn #1 { ##1 } - \semantex_class_set_degreedefault:Nn #1 { ##3 } + \semantex_class_set_degree_default:Nn #1 { ##3 } } } } @@ -718,7 +718,7 @@ \semantex_class_set_symbol:Nn #1 { ##2 } ##1 \semantex_class_set_keys:Nn #1 { ##3 } - \semantex_class_set_degreedefault:Nn #1 { ##4 } + \semantex_class_set_degree_default:Nn #1 { ##4 } \semantex_class_set_arg:Nn #1 { ##5 } } } @@ -730,7 +730,7 @@ \semantex_class_set_symbol:Nn #1 { ##2 } ##1 \semantex_class_set_keys:Nn #1 { ##3 } - \semantex_class_set_degreedefault:Nn #1 { ##4 } + \semantex_class_set_degree_default:Nn #1 { ##4 } } } } @@ -824,7 +824,7 @@ \semantex_class_do_output:N #1 \semantex_class_set_symbol:Nn #1 { ##2 } ##1 - \semantex_class_set_degreedefault:Nn #1 { ##4 } + \semantex_class_set_degree_default:Nn #1 { ##4 } \semantex_class_set_arg:Nn #1 { ##5 } } } @@ -835,7 +835,7 @@ \semantex_class_do_output:N #1 \semantex_class_set_symbol:Nn #1 { ##2 } ##1 - \semantex_class_set_degreedefault:Nn #1 { ##4 } + \semantex_class_set_degree_default:Nn #1 { ##4 } } } } @@ -944,7 +944,7 @@ \semantex_render_object:Nn ##1 { \semantex_object_do_output:N ##1 \semantex_object_set_keys:Nn ##1 { ####1 } - \semantex_object_set_degreedefault:Nn ##1 { ####2 } + \semantex_object_set_degree_default:Nn ##1 { ####2 } \semantex_object_set_arg:Nn ##1 { ####3 } } } @@ -954,7 +954,7 @@ \semantex_render_object:Nn ##1 { \semantex_object_do_output:N ##1 \semantex_object_set_keys:Nn ##1 { ####1 } - \semantex_object_set_degreedefault:Nn ##1 { ####2 } + \semantex_object_set_degree_default:Nn ##1 { ####2 } } } } @@ -1034,7 +1034,7 @@ { ##1 { ####2 } { ####3 } } \semantex_render_object:Nn ##1 { \semantex_object_do_output:N ##1 - \semantex_object_set_degreedefault:Nn ##1 { ####2 } + \semantex_object_set_degree_default:Nn ##1 { ####2 } \semantex_object_set_arg:Nn ##1 { ####3 } } } @@ -1043,7 +1043,7 @@ { ##1 { ####2 } } \semantex_render_object:Nn ##1 { \semantex_object_do_output:N ##1 - \semantex_object_set_degreedefault:Nn ##1 { ####2 } + \semantex_object_set_degree_default:Nn ##1 { ####2 } } } } @@ -1178,8 +1178,8 @@ % ##2 = symbol % ##3 = options \semantex_new_object:NNn #1 { ##1 }{ - \semantex_object_set_leftpar:Nn ##1 { ##2 } - \semantex_object_set_rightpar:Nn ##1 { ##3 } + \semantex_object_set_left_par:Nn ##1 { ##2 } + \semantex_object_set_right_par:Nn ##1 { ##3 } \semantex_object_set_keys:Nn ##1 { ##4 } } % creates the object with name ##1 @@ -1408,14 +1408,14 @@ \semantex_valuekey:nnn { \semantex_object_to_register:N #1 } { arg } { #2 } } -\cs_new_protected:Npn\semantex_class_set_degreedefault:Nn#1#2 +\cs_new_protected:Npn\semantex_class_set_degree_default:Nn#1#2 { - \semantex_valuekey:nnn { \semantex_class_to_register:N #1 } { degreedefault } { #2 } + \semantex_valuekey:nnn { \semantex_class_to_register:N #1 } { degree~default } { #2 } } -\cs_new_protected:Npn\semantex_object_set_degreedefault:Nn#1#2 +\cs_new_protected:Npn\semantex_object_set_degree_default:Nn#1#2 { - \semantex_valuekey:nnn { \semantex_object_to_register:N #1 } { degreedefault } { #2 } + \semantex_valuekey:nnn { \semantex_object_to_register:N #1 } { degree~default } { #2 } } \cs_new_protected:Npn\semantex_class_use_bullet:N#1 @@ -1438,24 +1438,24 @@ \semantex_singlekey:nn { \semantex_object_to_register:N #1 } { * } } -\cs_new_protected:Npn\semantex_class_set_leftpar:Nn#1#2 +\cs_new_protected:Npn\semantex_class_set_left_par:Nn#1#2 { - \semantex_data_tl_set:nnn { \semantex_class_to_register:N #1 } { leftpar } { #2 } + \semantex_data_tl_set:nnn { \semantex_class_to_register:N #1 } { left~par } { #2 } } -\cs_new_protected:Npn\semantex_object_set_leftpar:Nn#1#2 +\cs_new_protected:Npn\semantex_object_set_left_par:Nn#1#2 { - \semantex_data_tl_set:nnn { \semantex_object_to_register:N #1 } { leftpar } { #2 } + \semantex_data_tl_set:nnn { \semantex_object_to_register:N #1 } { left~par } { #2 } } -\cs_new_protected:Npn\semantex_class_set_rightpar:Nn#1#2 +\cs_new_protected:Npn\semantex_class_set_right_par:Nn#1#2 { - \semantex_data_tl_set:nnn { \semantex_class_to_register:N #1 } { rightpar } { #2 } + \semantex_data_tl_set:nnn { \semantex_class_to_register:N #1 } { right~par } { #2 } } -\cs_new_protected:Npn\semantex_object_set_rightpar:Nn#1#2 +\cs_new_protected:Npn\semantex_object_set_right_par:Nn#1#2 { - \semantex_data_tl_set:nnn { \semantex_object_to_register:N #1 } { rightpar } { #2 } + \semantex_data_tl_set:nnn { \semantex_object_to_register:N #1 } { right~par } { #2 } } \cs_new_protected:Npn\semantex_object_set_class:Nn#1#2 @@ -1505,29 +1505,29 @@ \group_begin: \cs_set:Nn\semantex_this: { #1 } #2 % This is where keys can be set up - \semantex_parse:n { #1 } % Run the "parse" routine, i.e. run the collection of code that the user has added via the key "parseoptions" + \semantex_singlekey:nn { #1 } { parse } % Run the "parse" routine, i.e. run the collection of code that the user has added via the key "parse options" \semantex_data_bool_get:nnTF { #1 } { output } % Checks if the register is supposed to output { \semantex_inner_return:n { #1 } \tl_set:Nx \l__semantex_render_output_class_temp_tl { \semantex_data_tl_get:nn { #1 } { output } } % The output class - \exp_args:NNx\cs_set:Nn\l__semantex_render_outputoptions_temp_cs:n - { \semantex_data_tl_get_exp_not:nn { #1 } { outputoptions } } + \exp_args:NNx\cs_set:Nn\l__semantex_render_output_options_temp_cs:n + { \semantex_data_tl_get_exp_not:nn { #1 } { output~options } } % \cs_set:Nx did not work here, as it changes ##1 to #1, which we don't want. - \tl_set:Nn\l__semantex_render_outputoptions_temp_tl + \tl_set:Nn\l__semantex_render_output_options_temp_tl { - \l__semantex_render_outputoptions_temp_cs:n + \l__semantex_render_output_options_temp_cs:n } - \tl_put_right:Nx \l__semantex_render_outputoptions_temp_tl + \tl_put_right:Nx \l__semantex_render_output_options_temp_tl { { \l__semantex_render_output_class_temp_tl } } - \exp_args:NNo\tl_set:No \l__semantex_render_outputoptions_temp_tl + \exp_args:NNo\tl_set:No \l__semantex_render_output_options_temp_tl { - \l__semantex_render_outputoptions_temp_tl + \l__semantex_render_output_options_temp_tl } % This was necessary, trust me. - \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments } % Checks if more than one argument has been received, i.e. whether we want to render any argument + \semantex_data_int_if_positive:nnTF { #1 } { number~of~arguments } % Checks if more than one argument has been received, i.e. whether we want to render any argument { - \semantex_data_bool_get:nnTF { #1 } { leftargument } % Checks if left or right argument + \semantex_data_bool_get:nnTF { #1 } { left~argument } % Checks if left or right argument { \semantex_left_indices_pre_return:n { #1 } \semantex_left_arg_pre_return:n { #1 } @@ -1543,20 +1543,20 @@ % immediately pass options to it { \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { upperputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } } + { upper~put~left } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { lowerputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } } + { lower~put~left } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { preupper } { \semantex_data_tl_get_exp_not:nn { #1 } { preupper } } + { pre~upper } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { postupper } { \semantex_data_tl_get_exp_not:nn { #1 } { postupper } } + { post~upper } { \semantex_data_tl_get_exp_not:nn { #1 } { post~upper } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { prelower } { \semantex_data_tl_get_exp_not:nn { #1 } { prelower } } + { pre~lower } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { postlower } { \semantex_data_tl_get_exp_not:nn { #1 } { postlower } } + { post~lower } { \semantex_data_tl_get_exp_not:nn { #1 } { post~lower } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { mathclass } { \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } } - \exp_not:V \l__semantex_render_outputoptions_temp_tl + { math~class } { \semantex_data_tl_get_exp_not:nn { #1 } { math~class } } + \exp_not:V \l__semantex_render_output_options_temp_tl % These are the options we pass to the output class so that it % can eventually render it } @@ -1578,24 +1578,24 @@ % immediately pass options to it { \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { upperleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { upperleft } } + { upper~left~put~right } { \semantex_data_tl_get_exp_not:nn { #1 } { upper~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { lowerleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } } + { lower~left~put~right } { \semantex_data_tl_get_exp_not:nn { #1 } { lower~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { preupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft } } + { pre~upper~left } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { postupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft } } + { post~upper~left } { \semantex_data_tl_get_exp_not:nn { #1 } { post~upper~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { prelowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } } + { pre~lower~left } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { postlowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } } + { post~lower~left } { \semantex_data_tl_get_exp_not:nn { #1 } { post~lower~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { heightphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } } + { height~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { height~phantom } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { slantingphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom } } + { slanting~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slanting~phantom } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { mathclass } { \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } } - \exp_not:V \l__semantex_render_outputoptions_temp_tl + { math~class } { \semantex_data_tl_get_exp_not:nn { #1 } { math~class } } + \exp_not:V \l__semantex_render_output_options_temp_tl % These are the options we pass to the output class so that it % can eventually render it } @@ -1616,36 +1616,36 @@ % immediately pass options to it { \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { upperputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } } + { upper~put~left } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { lowerputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } } + { lower~put~left } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { upperleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { upperleft } } + { upper~left~put~right } { \semantex_data_tl_get_exp_not:nn { #1 } { upper~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { lowerleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } } + { lower~left~put~right } { \semantex_data_tl_get_exp_not:nn { #1 } { lower~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { preupper } { \semantex_data_tl_get_exp_not:nn { #1 } { preupper } } + { pre~upper } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { postupper } { \semantex_data_tl_get_exp_not:nn { #1 } { postupper } } + { post~upper } { \semantex_data_tl_get_exp_not:nn { #1 } { post~upper } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { prelower } { \semantex_data_tl_get_exp_not:nn { #1 } { prelower } } + { pre~lower } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { postlower } { \semantex_data_tl_get_exp_not:nn { #1 } { postlower } } + { post~lower } { \semantex_data_tl_get_exp_not:nn { #1 } { post~lower } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { preupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft } } + { pre~upper~left } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { postupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft } } + { post~upper~left } { \semantex_data_tl_get_exp_not:nn { #1 } { post~upper~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { prelowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } } + { pre~lower~left } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { postlowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } } + { post~lower~left } { \semantex_data_tl_get_exp_not:nn { #1 } { post~lower~left } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { heightphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } } + { height~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { height~phantom } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { slantingphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom } } + { slanting~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slanting~phantom } } \exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl } - { mathclass } { \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } } - \exp_not:V \l__semantex_render_outputoptions_temp_tl + { math~class } { \semantex_data_tl_get_exp_not:nn { #1 } { math~class } } + \exp_not:V \l__semantex_render_output_options_temp_tl % These are the options we pass to the output class so that it % can eventually render it } @@ -1655,8 +1655,8 @@ } { \semantex_pre_return:n { #1 } % Performs the pre_return routine, i.e. adds all remaining indices and arguments to the symbol - \tl_if_blank:xTF { \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } } - % Checks whether the mathclass register has been declared -- this is + \tl_if_blank:xTF { \semantex_data_tl_get_exp_not:nn { #1 } { math~class } } + % Checks whether the math~class register has been declared -- this is % where you store \mathord, \mathbin, \mathrel, etc., if you want % the object to be eventually wrapped in this. { @@ -1668,7 +1668,7 @@ { \tl_set:Nx\l__semantex_render_temp_tl { - \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } + \semantex_data_tl_get_exp_not:nn { #1 } { math~class } { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } } } @@ -1760,43 +1760,43 @@ \cs_new_protected:Npn \semantex_parentheses_store:nN#1#2 { - \semantex_data_tl_get_store:nnN { #1 } { parsize } \l__semantex_parentheses_store_temp_tl + \semantex_data_tl_get_store:nnN { #1 } { par~size } \l__semantex_parentheses_store_temp_tl \str_case:VnF { \l__semantex_parentheses_store_temp_tl } % This is where \big,\Big, etc. go. { { normal } { \tl_set:Nx #2 { \exp_not:N \SemantexMathOpen { } - \semantex_data_tl_get_exp_not:nn { #1 } { leftpar } - \semantex_data_tl_get_exp_not:nn { #1 } { prearg } + \semantex_data_tl_get_exp_not:nn { #1 } { left~par } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg } \semantex_data_tl_get_exp_not:nn { #1 } { arg } - \semantex_data_tl_get_exp_not:nn { #1 } { postarg } + \semantex_data_tl_get_exp_not:nn { #1 } { post~arg } \exp_not:N \SemantexMathClose { } - \semantex_data_tl_get_exp_not:nn { #1 } { rightpar } + \semantex_data_tl_get_exp_not:nn { #1 } { right~par } } } { auto } { \tl_set:Nx #2 { \exp_not:N \SemantexMathOpenAuto - \semantex_data_tl_get_exp_not:nn { #1 } { leftpar } - \semantex_data_tl_get_exp_not:nn { #1 } { prearg } + \semantex_data_tl_get_exp_not:nn { #1 } { left~par } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg } \semantex_data_tl_get_exp_not:nn { #1 } { arg } - \semantex_data_tl_get_exp_not:nn { #1 } { postarg } + \semantex_data_tl_get_exp_not:nn { #1 } { post~arg } \exp_not:N \SemantexMathCloseAuto - \semantex_data_tl_get_exp_not:nn { #1 } { rightpar } + \semantex_data_tl_get_exp_not:nn { #1 } { right~par } } } { * } { \tl_set:Nx #2 { \exp_not:N \SemantexMathOpenAuto - \semantex_data_tl_get_exp_not:nn { #1 } { leftpar } - \semantex_data_tl_get_exp_not:nn { #1 } { prearg } + \semantex_data_tl_get_exp_not:nn { #1 } { left~par } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg } \semantex_data_tl_get_exp_not:nn { #1 } { arg } - \semantex_data_tl_get_exp_not:nn { #1 } { postarg } + \semantex_data_tl_get_exp_not:nn { #1 } { post~arg } \exp_not:N \SemantexMathCloseAuto - \semantex_data_tl_get_exp_not:nn { #1 } { rightpar } + \semantex_data_tl_get_exp_not:nn { #1 } { right~par } } } } @@ -1805,13 +1805,13 @@ { \exp_not:N \SemantexMathOpen \exp_not:V \l__semantex_parentheses_store_temp_tl - \semantex_data_tl_get_exp_not:nn { #1 } { leftpar } - \semantex_data_tl_get_exp_not:nn { #1 } { prearg } + \semantex_data_tl_get_exp_not:nn { #1 } { left~par } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg } \semantex_data_tl_get_exp_not:nn { #1 } { arg } - \semantex_data_tl_get_exp_not:nn { #1 } { postarg } + \semantex_data_tl_get_exp_not:nn { #1 } { post~arg } \exp_not:N \SemantexMathClose \exp_not:V \l__semantex_parentheses_store_temp_tl - \semantex_data_tl_get_exp_not:nn { #1 } { rightpar } + \semantex_data_tl_get_exp_not:nn { #1 } { right~par } } } } @@ -1826,9 +1826,9 @@ \tl_set:Nx#2 { \exp_not:N\SemantexMathOpenNoPar - \semantex_data_tl_get_exp_not:nn { #1 } { prearg } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg } \semantex_data_tl_get_exp_not:nn { #1 } { arg } - \semantex_data_tl_get_exp_not:nn { #1 } { postarg } + \semantex_data_tl_get_exp_not:nn { #1 } { post~arg } \exp_not:N\SemantexMathCloseNoPar } } @@ -1921,14 +1921,14 @@ \cs_new_protected:Npn\semantex_inner_return:n#1 { \semantex_inner_pre_return:n { #1 } - \semantex_data_seq_clear:nn { #1 } { commands_sequence } + \semantex_data_seq_clear:nn { #1 } { commands~sequence } } \cs_new_protected:Npn\semantex_inner_pre_return:n#1 { % This adds all of the commands added via the command key % to the symbol - \semantex_data_seq_get_store:nnN { #1 } { commands_sequence } + \semantex_data_seq_get_store:nnN { #1 } { commands~sequence } \l__semantex_data_seq_commands_sequence_temp \seq_map_inline:Nn \l__semantex_data_seq_commands_sequence_temp { @@ -1940,7 +1940,7 @@ } } } - \semantex_data_seq_clear:nn { #1 } { commands_sequence } + \semantex_data_seq_clear:nn { #1 } { commands~sequence } } \cs_new_protected:Npn\semantex_right_return:n#1 @@ -1954,15 +1954,15 @@ { \semantex_right_indices_pre_return:n { #1 } \semantex_data_tl_clear:nn { #1 } { upper } - \semantex_data_tl_clear:nn { #1 } { preupper } - \semantex_data_tl_clear:nn { #1 } { postupper } - \semantex_data_bool_set_false:nn { #1 } { nextupperwithsep } - \semantex_data_int_clear:nn { #1 } { numberofupperindices } + \semantex_data_tl_clear:nn { #1 } { pre~upper } + \semantex_data_tl_clear:nn { #1 } { post~upper } + \semantex_data_bool_set_false:nn { #1 } { next~upper~with~sep } + \semantex_data_int_clear:nn { #1 } { number~of~upper~indices } \semantex_data_tl_clear:nn { #1 } { lower } - \semantex_data_tl_clear:nn { #1 } { prelower } - \semantex_data_tl_clear:nn { #1 } { postlower } - \semantex_data_bool_set_false:nn { #1 } { nextlowerwithsep } - \semantex_data_int_clear:nn { #1 } { numberoflowerindices } + \semantex_data_tl_clear:nn { #1 } { pre~lower } + \semantex_data_tl_clear:nn { #1 } { post~lower } + \semantex_data_bool_set_false:nn { #1 } { next~lower~with~sep } + \semantex_data_int_clear:nn { #1 } { number~of~lower~indices } } \cs_new_protected:Npn\semantex_right_indices_pre_return:n#1 @@ -1978,28 +1978,28 @@ \cs_new_protected:Npn \_semantex_right_index_return_store:nN#1#2 { \tl_set:Nn#2{} - \semantex_data_int_if_positive:nnTF { #1 } { numberoflowerindices } + \semantex_data_int_if_positive:nnTF { #1 } { number~of~lower~indices } { \tl_put_right:Nx#2 { \sb{ - \semantex_data_tl_get_exp_not:nn { #1 } { prelower } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower } \semantex_data_tl_get_exp_not:nn { #1 } { lower } - \semantex_data_tl_get_exp_not:nn { #1 } { postlower } + \semantex_data_tl_get_exp_not:nn { #1 } { post~lower } } } } { % do nothing } - \semantex_data_int_if_positive:nnTF { #1 } { numberofupperindices } + \semantex_data_int_if_positive:nnTF { #1 } { number~of~upper~indices } { \tl_put_right:Nx#2 { \sp{ - \semantex_data_tl_get_exp_not:nn { #1 } { preupper } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper } \semantex_data_tl_get_exp_not:nn { #1 } { upper } - \semantex_data_tl_get_exp_not:nn { #1 } { postupper } + \semantex_data_tl_get_exp_not:nn { #1 } { post~upper } } } } @@ -2018,21 +2018,21 @@ \cs_new_protected:Npn\semantex_left_index_return:n#1 { \semantex_left_indices_pre_return:n { #1 } - \semantex_data_tl_clear:nn { #1 } { upperleft } - \semantex_data_tl_clear:nn { #1 } { preupperleft } - \semantex_data_tl_clear:nn { #1 } { postupperleft } - \semantex_data_bool_set_false:nn { #1 } { nextupperleftwithsep } - \semantex_data_int_clear:nn { #1 } { numberofupperleftindices } - \semantex_data_tl_clear:nn { #1 } { lowerleft } - \semantex_data_tl_clear:nn { #1 } { prelowerleft } - \semantex_data_tl_clear:nn { #1 } { postlowerleft } - \semantex_data_bool_set_false:nn { #1 } { nextlowerleftwithsep } - \semantex_data_int_clear:nn { #1 } { numberoflowerleftindices } - \semantex_data_tl_set:nnx { #1 } { heightphantom } + \semantex_data_tl_clear:nn { #1 } { upper~left } + \semantex_data_tl_clear:nn { #1 } { pre~upper~left } + \semantex_data_tl_clear:nn { #1 } { post~upper~left } + \semantex_data_bool_set_false:nn { #1 } { next~upper~left~with~sep } + \semantex_data_int_clear:nn { #1 } { number~of~upper~left~indices } + \semantex_data_tl_clear:nn { #1 } { lower~left } + \semantex_data_tl_clear:nn { #1 } { pre~lower~left } + \semantex_data_tl_clear:nn { #1 } { post~lower~left } + \semantex_data_bool_set_false:nn { #1 } { next~lower~left~with~sep } + \semantex_data_int_clear:nn { #1 } { number~of~lower~left~indices } + \semantex_data_tl_set:nnx { #1 } { height~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } - \semantex_data_tl_clear:nn { #1 } { slantingphantom } + \semantex_data_tl_clear:nn { #1 } { slanting~phantom } } \cs_new_protected:Npn\semantex_left_indices_pre_return:n#1 @@ -2048,27 +2048,27 @@ \cs_new_protected:Npn \_semantex_left_index_return_store:nN#1#2 { \tl_set:Nn#2{} - \semantex_data_int_if_positive:nnTF { #1 } { numberofupperleftindices } + \semantex_data_int_if_positive:nnTF { #1 } { number~of~upper~left~indices } { \tl_put_right:Nn #2 { \manualleftindex } \tl_put_right:Nx #2 { - { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } } - { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom} } + { \semantex_data_tl_get_exp_not:nn { #1 } { height~phantom } } + { \semantex_data_tl_get_exp_not:nn { #1 } { slanting~phantom} } { - \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft } - \semantex_data_tl_get_exp_not:nn { #1 } { upperleft } - \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper~left } + \semantex_data_tl_get_exp_not:nn { #1 } { upper~left } + \semantex_data_tl_get_exp_not:nn { #1 } { post~upper~left } } } - \semantex_data_int_if_positive:nnTF { #1 } { numberoflowerleftindices } + \semantex_data_int_if_positive:nnTF { #1 } { number~of~lower~left~indices } { \tl_put_right:Nx#2 { { - \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } - \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } - \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower~left } + \semantex_data_tl_get_exp_not:nn { #1 } { lower~left } + \semantex_data_tl_get_exp_not:nn { #1 } { post~lower~left } } } } @@ -2080,18 +2080,18 @@ } } { - \semantex_data_int_if_positive:nnTF { #1 } { numberoflowerleftindices } + \semantex_data_int_if_positive:nnTF { #1 } { number~of~lower~left~indices } { \tl_put_right:Nn #2 { \manualleftindex } \tl_put_right:Nx #2 { - { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } } - { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom} } + { \semantex_data_tl_get_exp_not:nn { #1 } { height~phantom } } + { \semantex_data_tl_get_exp_not:nn { #1 } { slanting~phantom} } { } { - \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } - \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } - \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } + \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower~left } + \semantex_data_tl_get_exp_not:nn { #1 } { lower~left } + \semantex_data_tl_get_exp_not:nn { #1 } { post~lower~left } } } } @@ -2103,7 +2103,7 @@ \cs_new_protected:Npn\semantex_right_arg_return:n#1 { - \semantex_data_bool_get:nnTF { #1 } { leftargument } + \semantex_data_bool_get:nnTF { #1 } { left~argument } { % do nothing } @@ -2115,16 +2115,16 @@ \l__semantex_rightreturn_arg_temp } \semantex_data_tl_clear:nn { #1 } { arg } - \semantex_data_tl_clear:nn { #1 } { prearg } - \semantex_data_tl_clear:nn { #1 } { postarg } - \semantex_data_int_clear:nn { #1 } { numberofarguments } - \semantex_data_bool_set_false:nn { #1 } { nextargwithsep } + \semantex_data_tl_clear:nn { #1 } { pre~arg } + \semantex_data_tl_clear:nn { #1 } { post~arg } + \semantex_data_int_clear:nn { #1 } { number~of~arguments } + \semantex_data_bool_set_false:nn { #1 } { next~arg~with~sep } } } \cs_new_protected:Npn\semantex_right_arg_pre_return:n#1 { - \semantex_data_bool_get:nnTF { #1 } { leftargument } + \semantex_data_bool_get:nnTF { #1 } { left~argument } { % do nothing } @@ -2140,7 +2140,7 @@ \cs_new_protected:Npn\semantex_left_arg_return:n#1 { - \semantex_data_bool_get:nnTF { #1 } { leftargument } + \semantex_data_bool_get:nnTF { #1 } { left~argument } { \_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp \semantex_data_tl_put_left:nnx { #1 } { symbol } @@ -2148,10 +2148,10 @@ \exp_not:V \l__semantex_leftreturn_arg_temp } \semantex_data_tl_clear:nn { #1 } { arg } - \semantex_data_tl_clear:nn { #1 } { prearg } - \semantex_data_tl_clear:nn { #1 } { postarg } - \semantex_data_int_clear:nn { #1 } { numberofarguments } - \semantex_data_bool_set_false:nn { #1 } { nextargwithsep } + \semantex_data_tl_clear:nn { #1 } { pre~arg } + \semantex_data_tl_clear:nn { #1 } { post~arg } + \semantex_data_int_clear:nn { #1 } { number~of~arguments } + \semantex_data_bool_set_false:nn { #1 } { next~arg~with~sep } } { % do nothing @@ -2160,7 +2160,7 @@ \cs_new_protected:Npn\semantex_left_arg_pre_return:n#1 { - \semantex_data_bool_get:nnTF { #1 } { leftargument } + \semantex_data_bool_get:nnTF { #1 } { left~argument } { \_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp \semantex_data_tl_put_left:nnx { #1 } { symbol } @@ -2177,15 +2177,15 @@ { \semantex_arg_pre_return:n { #1 } \semantex_data_tl_clear:nn { #1 } { arg } - \semantex_data_tl_clear:nn { #1 } { prearg } - \semantex_data_tl_clear:nn { #1 } { postarg } - \semantex_data_int_clear:nn { #1 } { numberofarguments } - \semantex_data_bool_set_false:nn { #1 } { nextargwithsep } + \semantex_data_tl_clear:nn { #1 } { pre~arg } + \semantex_data_tl_clear:nn { #1 } { post~arg } + \semantex_data_int_clear:nn { #1 } { number~of~arguments } + \semantex_data_bool_set_false:nn { #1 } { next~arg~with~sep } } \cs_new_protected:Npn\semantex_arg_pre_return:n#1 { - \semantex_data_bool_get:nnTF { #1 } { leftargument } + \semantex_data_bool_get:nnTF { #1 } { left~argument } { \_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp \semantex_data_tl_put_left:nnx { #1 } { symbol } @@ -2207,7 +2207,7 @@ { \semantex_data_bool_get:nnTF { #1 } { par } { - \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments } + \semantex_data_int_if_positive:nnTF { #1 } { number~of~arguments } { \semantex_parentheses_store:nN { #1 } #2 } @@ -2216,14 +2216,14 @@ } } { - \semantex_data_bool_get:nnTF { #1 } { flexpar } + \semantex_data_bool_get:nnTF { #1 } { flex~par } { - \semantex_data_int_if_greater_than_one:nnTF { #1 } { numberofarguments } + \semantex_data_int_if_greater_than_one:nnTF { #1 } { number~of~arguments } { \semantex_parentheses_store:nN { #1 } #2 } { - \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments } + \semantex_data_int_if_positive:nnTF { #1 } { number~of~arguments } { \semantex_no_parentheses_store:nN { #1 } #2 } @@ -2233,7 +2233,7 @@ } } { - \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments } + \semantex_data_int_if_positive:nnTF { #1 } { number~of~arguments } { \semantex_no_parentheses_store:nN { #1 } #2 } @@ -2259,16 +2259,16 @@ \semantex_return:n { #1 } \tl_if_blank:nTF { #2 } { - \semantex_data_tl_get_store:nnN { #1 } { sparsize } - \l__semantex_spar_sparsize_temp_tl + \semantex_data_tl_get_store:nnN { #1 } { spar~size } + \l__semantex_spar_spar_size_temp_tl } { - \tl_set:Nn \l__semantex_spar_sparsize_temp_tl { #2 } + \tl_set:Nn \l__semantex_spar_spar_size_temp_tl { #2 } } \__semantex_symbol_parentheses_store:xxxxN - { \exp_not:V\l__semantex_spar_sparsize_temp_tl } - { \semantex_data_tl_get_exp_not:nn { #1 } { leftspar } } - { \semantex_data_tl_get_exp_not:nn { #1 } { rightspar } } + { \exp_not:V\l__semantex_spar_spar_size_temp_tl } + { \semantex_data_tl_get_exp_not:nn { #1 } { left~spar } } + { \semantex_data_tl_get_exp_not:nn { #1 } { right~spar } } { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } \l__semantex_spar_temp_tl \semantex_data_tl_set:nnx { #1 } { symbol } @@ -2276,16 +2276,16 @@ \exp_not:V \l__semantex_spar_temp_tl } \semantex_spar_set_height_phantom_to_parentheses_size:nx { #1 } - { \exp_not:V \l__semantex_spar_sparsize_temp_tl } + { \exp_not:V \l__semantex_spar_spar_size_temp_tl } } \cs_new_protected:Npn\semantex_other_spar:nnn#1#2#3 { \semantex_return:n { #1 } - \semantex_data_tl_get_store:nnN { #1 } { sparsize } - \l__semantex_other_spar_sparsize_temp_tl + \semantex_data_tl_get_store:nnN { #1 } { spar~size } + \l__semantex_other_spar_spar_size_temp_tl \__semantex_symbol_parentheses_store:xxxxN - { \exp_not:V \l__semantex_other_spar_sparsize_temp_tl } + { \exp_not:V \l__semantex_other_spar_spar_size_temp_tl } { \exp_not:n { #2 } } { \exp_not:n { #3 } } { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } @@ -2295,7 +2295,7 @@ \exp_not:V \l__semantex_other_spar_temp_tl } \semantex_spar_set_height_phantom_to_parentheses_size:nx { #1 } - { \exp_not:V \l__semantex_other_spar_sparsize_temp_tl } + { \exp_not:V \l__semantex_other_spar_spar_size_temp_tl } } \cs_new_protected:Npn\semantex_other_spar_with_size:nnnn#1#2#3#4 @@ -2322,23 +2322,23 @@ \str_case:nnF { #2 } { { normal } { - \semantex_data_tl_set:nnn { #1 } { heightphantom } { \vert } + \semantex_data_tl_set:nnn { #1 } { height~phantom } { \vert } } { auto } { - \semantex_data_tl_set:nnx { #1 } { heightphantom } + \semantex_data_tl_set:nnx { #1 } { height~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } } { * } { - \semantex_data_tl_set:nnx { #1 } { heightphantom } + \semantex_data_tl_set:nnx { #1 } { height~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { symbol } } } } { - \semantex_data_tl_set:nnx { #1 } { heightphantom } + \semantex_data_tl_set:nnx { #1 } { height~phantom } { \exp_not:n { #2 \vert } } @@ -3053,6 +3053,246 @@ \cs_generate_variant:Nn \__semantex_singlekey_x:nnn { fnn } +\cs_new_protected:Npn\semantex_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } { ##1 } { ##2 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_singlekey_store:nnN#1#2#3 +{ + % Stores the content of the singlekey + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } { ##1 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_singlekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_singlekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_two_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } { ##2 } { ##3 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_two_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_two_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_three_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } { ##2 } { ##3 } { ##4 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_three_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_three_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_four_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_four_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_four_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_five_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_five_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_five_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_six_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_six_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_six_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_seven_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_seven_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_seven_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_eight_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_eight_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_eight_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_nine_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_nine_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_nine_valuekey_store:nnN { fnN } + + \cs_new_protected:Npn\semantex_arg_valuekey:nnn#1#2#3 { % Takes care of argument valuekeys, @@ -3146,90 +3386,345 @@ { % Sets the argument (no keyval interface allowed) \semantex_data_tl_put_right:nnn { #1 } { arg } { #2 } - \semantex_data_int_incr:nn { #1 } { numberofarguments } - \semantex_data_bool_set_true:nn { #1 } { nextargwithsep } + \semantex_data_int_incr:nn { #1 } { number~of~arguments } + \semantex_data_bool_set_true:nn { #1 } { next~arg~with~sep } } \cs_generate_variant:Nn \semantex_arg_without_keyval:nn { nx } -% NOW SOME KEYS FOR DEFINING NEW KEYS: - -% First, we define the central commands for preprocessing keys +\cs_new_protected:Npn\semantex_arg_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } { ##1 } { ##2 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_arg_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} -\cs_generate_variant:Nn \semantex_keyval_parse:NNn { NNo } +\cs_generate_variant:Nn \semantex_arg_valuekey_store:nnN { fnN } -\cs_new_protected:Npn\semantex_preprocess_keys:nN#1#2 +\cs_new_protected:Npn\semantex_arg_singlekey_store:nnN#1#2#3 { - \cs_set:Npn\l__semantex_preprocess_singlekey_temp_cs:n##1 + % Stores the content of the argument singlekey + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n } { - \__semantex_preprocess_singlekey:nnN { ####1 } { ##1 } #2 + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n } { ##1 } } } - \cs_set:Npn\l__semantex_preprocess_valuekey_temp_cs:nn##1##2 { - \__semantex_preprocess_valuekey:nnnN { ####1 } { ##1 } { ##2 } #2 + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_arg_singlekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } } - \semantex_keyval_parse:NNn - \l__semantex_preprocess_singlekey_temp_cs:n - \l__semantex_preprocess_valuekey_temp_cs:nn - { #1 } } -\cs_generate_variant:Nn \semantex_preprocess_keys:nN { oN } +\cs_generate_variant:Nn \semantex_arg_singlekey_store:nnN { fnN } -\cs_new_protected:Npn\__semantex_preprocess_singlekey:nnN#1#2#3 +\cs_new_protected:Npn\semantex_arg_two_valuekey_store:nnN#1#2#3 { - \tl_put_right:Nn#3 + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { - \semantex_singlekey:nn { #1 } { #2 } + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } { ##2 } { ##3 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_arg_two_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } } } -\cs_new_protected:Npn\__semantex_preprocess_valuekey:nnnN#1#2#3#4 + +\cs_generate_variant:Nn \semantex_arg_two_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_arg_three_valuekey_store:nnN#1#2#3 { - \str_case:nnF { #2 } + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { - { execute }{ - \tl_put_right:Nn #4 { #3 } + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } { ##2 } { ##3 } { ##4 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} } - { setkeys }{ - \semantex_preprocess_keys:nN { #3 } #4 + { + \semantex_arg_three_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 } - { keysset }{ - \semantex_preprocess_keys:nN { #3 } #4 + } +} + +\cs_generate_variant:Nn \semantex_arg_three_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_arg_four_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} } - { setkeysx }{ - \semantex_preprocess_keys_x:nN { #3 } #4 + { + \semantex_arg_four_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 } - { keyssetx }{ - \semantex_preprocess_keys_x:nN { #3 } #4 + } +} + +\cs_generate_variant:Nn \semantex_arg_four_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_arg_five_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} } - { setargkeys }{ - \semantex_preprocess_arg_keys:nN { #3 } #4 + { + \semantex_arg_five_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 } - { argkeysset }{ - \semantex_preprocess_arg_keys:nN { #3 } #4 + } +} + +\cs_generate_variant:Nn \semantex_arg_five_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_arg_six_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_arg_six_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_arg_six_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_arg_seven_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_arg_seven_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_arg_seven_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_arg_eight_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_arg_eight_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_arg_eight_valuekey_store:nnN { fnN } + +\cs_new_protected:Npn\semantex_arg_nine_valuekey_store:nnN#1#2#3 +{ + % Stores the content of the argument valuekey + % i.e. keys taking a value + % #1 = register + % #2 = name of the key + % #3 = command to store the content in + \cs_if_exist:cTF { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } + { + \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } } + } + { + \str_if_eq:nnTF { #1 } { class_SemantexBaseObject } + { + \tl_set:Nn #3 {} + } + { + \semantex_arg_nine_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3 + } + } +} + +\cs_generate_variant:Nn \semantex_arg_nine_valuekey_store:nnN { fnN } + +% NOW SOME KEYS FOR DEFINING NEW KEYS: + +% First, we define the central commands for preprocessing keys + +\cs_generate_variant:Nn \semantex_keyval_parse:NNn { NNo } + +\cs_new_protected:Npn\semantex_preprocess_keys:nN#1#2 +{ + \cs_set:Npn\l__semantex_preprocess_singlekey_temp_cs:n##1 + { + \__semantex_preprocess_singlekey:nnN { ####1 } { ##1 } #2 + } + \cs_set:Npn\l__semantex_preprocess_valuekey_temp_cs:nn##1##2 + { + \__semantex_preprocess_valuekey:nnnN { ####1 } { ##1 } { ##2 } #2 + } + \semantex_keyval_parse:NNn + \l__semantex_preprocess_singlekey_temp_cs:n + \l__semantex_preprocess_valuekey_temp_cs:nn + { #1 } +} + +\cs_generate_variant:Nn \semantex_preprocess_keys:nN { oN } + +\cs_new_protected:Npn\__semantex_preprocess_singlekey:nnN#1#2#3 +{ + \tl_put_right:Nn#3 + { + \semantex_singlekey:nn { #1 } { #2 } + } +} + +\cs_new_protected:Npn\__semantex_preprocess_valuekey:nnnN#1#2#3#4 +{ + \str_case:nnF { #2 } + { + { execute }{ + \tl_put_right:Nn #4 { #3 } + } + { set~keys }{ + \semantex_preprocess_keys:nN { #3 } #4 + } + { keys~set }{ + \semantex_preprocess_keys:nN { #3 } #4 + } + { set~keys~x }{ + \semantex_preprocess_keys_x:nN { #3 } #4 } - { setargkeysx }{ + { keys~set~x }{ + \semantex_preprocess_keys_x:nN { #3 } #4 + } + { set~arg~keys }{ + \semantex_preprocess_arg_keys:nN { #3 } #4 + } + { arg~keys~set }{ + \semantex_preprocess_arg_keys:nN { #3 } #4 + } + { set~arg~keys~x }{ \semantex_preprocess_arg_keys_x:nN { #3 } #4 } - { argkeyssetx }{ + { arg~keys~set~x }{ \semantex_preprocess_arg_keys_x:nN { #3 } #4 } - { setargsinglekeys }{ + { set~arg~single~keys }{ \semantex_preprocess_arg_singlekeys:nN { #3 } #4 } - { argsinglekeysset }{ + { arg~single~keys~set }{ \semantex_preprocess_arg_singlekeys:nN { #3 } #4 } - { setargsinglekeysx }{ + { set~arg~single~keys~x }{ \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 } - { argsinglekeyssetx }{ + { arg~single~keys~set~x }{ \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 } - { parseoptions }{ + { parse~options }{ + \tl_put_right:Nn#4 + { + \semantex_append_singlekey_with_raw_code:nnn { #1 } { parse~code } + } + \group_begin: + \tl_set:Nn\l__semantex_preprocess_valuekey_keys_temp_tl {} + \semantex_preprocess_keys:nN { #3 } \l__semantex_preprocess_valuekey_keys_temp_tl + \exp_args:NNNx + \group_end: + \tl_put_right:Nn#4 + { + { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } + } + } + { pre~parse~options }{ \tl_put_right:Nn#4 { - \semantex_add_raw_commands_to_parse_options:nn { #1 } + \semantex_pre_append_singlekey_with_raw_code:nnn { #1 } { parse~code } } \group_begin: \tl_set:Nn\l__semantex_preprocess_valuekey_keys_temp_tl {} @@ -3241,21 +3736,44 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - { outputoptions }{ + { output~options }{ + \tl_put_right:Nn#4 + { + \semantex_add_raw_code_to_output_options:nn { #1 } + } + \group_begin: + \tl_set:Nn\l__semantex_preprocess_valuekey_keys_pre_temp_tl {} + \semantex_preprocess_keys:nN { #3 } \l__semantex_preprocess_valuekey_keys_pre_temp_tl + \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 + { + \l__semantex_preprocess_valuekey_keys_pre_temp_tl + } + \tl_set:No\l__semantex_preprocess_valuekey_keys_temp_tl + { + \l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn { ###1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } + } + \exp_args:NNNx + \group_end: + \tl_put_right:Nn#4 + { + { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } + } + } + { pre~output~options }{ \tl_put_right:Nn#4 { - \semantex_add_raw_commands_to_output_options:nn { #1 } + \semantex_add_raw_code_to_the_left_of_output_options:nn { #1 } } \group_begin: \tl_set:Nn\l__semantex_preprocess_valuekey_keys_pre_temp_tl {} \semantex_preprocess_keys:nN { #3 } \l__semantex_preprocess_valuekey_keys_pre_temp_tl - \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nn##1##2 + \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { \l__semantex_preprocess_valuekey_keys_pre_temp_tl } \tl_set:No\l__semantex_preprocess_valuekey_keys_temp_tl { - \l__semantex_preprocess_valuekey_keys_temp_cs:nn { ###1 } { ##2 } + \l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn { ###1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } } \exp_args:NNNx \group_end: @@ -3264,8 +3782,8 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - { boolifTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_boolifTF_temp_cs:nTF##1##2##3 + { bool~if~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_TF_temp_cs:nTF##1##2##3 { \tl_put_right:Nn#4 { @@ -3290,10 +3808,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_boolifTF_temp_cs:nTF #3 + \l__semantex_preprocess_valuekey_bool_if_TF_temp_cs:nTF #3 } - { boolifT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_boolifT_temp_cs:nT##1##2 + { bool~if~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_T_temp_cs:nT##1##2 { \tl_put_right:Nn#4 { @@ -3310,10 +3828,10 @@ { } } } - \l__semantex_preprocess_valuekey_boolifT_temp_cs:nT #3 + \l__semantex_preprocess_valuekey_bool_if_T_temp_cs:nT #3 } - { boolifF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_boolifF_temp_cs:nF##1##2 + { bool~if~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_F_temp_cs:nF##1##2 { \tl_put_right:Nn#4 { @@ -3330,10 +3848,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_boolifF_temp_cs:nF #3 + \l__semantex_preprocess_valuekey_bool_if_F_temp_cs:nF #3 } - { ifblankTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankTF_temp_cs:nTF##1##2##3 + { if~blank~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_TF_temp_cs:nTF##1##2##3 { \tl_put_right:Nn#4 { @@ -3358,10 +3876,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_ifblankTF_temp_cs:nTF #3 + \l__semantex_preprocess_valuekey_if_blank_TF_temp_cs:nTF #3 } - { ifblankT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankT_temp_cs:nT##1##2 + { if~blank~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_T_temp_cs:nT##1##2 { \tl_put_right:Nn#4 { @@ -3378,10 +3896,10 @@ { } } } - \l__semantex_preprocess_valuekey_ifblankT_temp_cs:nT #3 + \l__semantex_preprocess_valuekey_if_blank_T_temp_cs:nT #3 } - { ifblankF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankF_temp_cs:nF##1##2 + { if~blank~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_F_temp_cs:nF##1##2 { \tl_put_right:Nn#4 { @@ -3398,10 +3916,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_ifblankF_temp_cs:nF #3 + \l__semantex_preprocess_valuekey_if_blank_F_temp_cs:nF #3 } - { strifeqTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqTF_temp_cs:nnTF##1##2##3##4 + { str~if~eq~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_TF_temp_cs:nnTF##1##2##3##4 { \tl_put_right:Nn#4 { @@ -3426,10 +3944,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_strifeqTF_temp_cs:nnTF #3 + \l__semantex_preprocess_valuekey_str_if_eq_TF_temp_cs:nnTF #3 } - { strifeqT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqT_temp_cs:nnT##1##2##3 + { str~if~eq~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_T_temp_cs:nnT##1##2##3 { \tl_put_right:Nn#4 { @@ -3446,10 +3964,10 @@ { } } } - \l__semantex_preprocess_valuekey_strifeqT_temp_cs:nnT #3 + \l__semantex_preprocess_valuekey_str_if_eq_T_temp_cs:nnT #3 } - { strifeqF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqF_temp_cs:nnF##1##2##3 + { str~if~eq~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_F_temp_cs:nnF##1##2##3 { \tl_put_right:Nn#4 { @@ -3466,10 +3984,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_strifeqF_temp_cs:nnF #3 + \l__semantex_preprocess_valuekey_str_if_eq_F_temp_cs:nnF #3 } - { intifgreaterTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterTF_temp_cs:nnTF##1##2##3##4 + { int~if~greater~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_TF_temp_cs:nnTF##1##2##3##4 { \tl_put_right:Nn#4 { @@ -3494,10 +4012,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intifgreaterTF_temp_cs:nnTF #3 + \l__semantex_preprocess_valuekey_int_if_greater_TF_temp_cs:nnTF #3 } - { intifgreaterT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterT_temp_cs:nnT##1##2##3 + { int~if~greater~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_T_temp_cs:nnT##1##2##3 { \tl_put_right:Nn#4 { @@ -3514,10 +4032,10 @@ { } } } - \l__semantex_preprocess_valuekey_intifgreaterT_temp_cs:nnT #3 + \l__semantex_preprocess_valuekey_int_if_greater_T_temp_cs:nnT #3 } - { intifgreaterF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterF_temp_cs:nnF##1##2##3 + { int~if~greater~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_F_temp_cs:nnF##1##2##3 { \tl_put_right:Nn#4 { @@ -3534,10 +4052,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intifgreaterF_temp_cs:nnF #3 + \l__semantex_preprocess_valuekey_int_if_greater_F_temp_cs:nnF #3 } - { intifeqTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqTF_temp_cs:nnTF##1##2##3##4 + { int~if~eq~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_TF_temp_cs:nnTF##1##2##3##4 { \tl_put_right:Nn#4 { @@ -3562,10 +4080,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intifeqTF_temp_cs:nnTF #3 + \l__semantex_preprocess_valuekey_int_if_eq_TF_temp_cs:nnTF #3 } - { intifeqT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqT_temp_cs:nnT##1##2##3 + { int~if~eq~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_T_temp_cs:nnT##1##2##3 { \tl_put_right:Nn#4 { @@ -3582,10 +4100,10 @@ { } } } - \l__semantex_preprocess_valuekey_intifeqT_temp_cs:nnT #3 + \l__semantex_preprocess_valuekey_int_if_eq_T_temp_cs:nnT #3 } - { intifeqF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqF_temp_cs:nnF##1##2##3 + { int~if~eq~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_F_temp_cs:nnF##1##2##3 { \tl_put_right:Nn#4 { @@ -3602,10 +4120,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intifeqF_temp_cs:nnF #3 + \l__semantex_preprocess_valuekey_int_if_eq_F_temp_cs:nnF #3 } - { intiflessTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessTF_temp_cs:nnTF##1##2##3##4 + { int~if~less~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_TF_temp_cs:nnTF##1##2##3##4 { \tl_put_right:Nn#4 { @@ -3630,10 +4148,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intiflessTF_temp_cs:nnTF #3 + \l__semantex_preprocess_valuekey_int_if_less_TF_temp_cs:nnTF #3 } - { intiflessT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessT_temp_cs:nnT##1##2##3 + { int~if~less~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_T_temp_cs:nnT##1##2##3 { \tl_put_right:Nn#4 { @@ -3650,10 +4168,10 @@ { } } } - \l__semantex_preprocess_valuekey_intiflessT_temp_cs:nnT #3 + \l__semantex_preprocess_valuekey_int_if_less_T_temp_cs:nnT #3 } - { intiflessF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessF_temp_cs:nnF##1##2##3 + { int~if~less~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_F_temp_cs:nnF##1##2##3 { \tl_put_right:Nn#4 { @@ -3670,7 +4188,7 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intiflessF_temp_cs:nnF #3 + \l__semantex_preprocess_valuekey_int_if_less_F_temp_cs:nnF #3 } } { @@ -3717,46 +4235,61 @@ #3 } } - { setkeys }{ + { set~keys }{ \semantex_preprocess_keys:nN { #3 } #4 } - { keysset }{ + { keys~set }{ \semantex_preprocess_keys:nN { #3 } #4 } - { setkeysx }{ + { set~keys~x }{ \semantex_preprocess_keys_x:nN { #3 } #4 } - { keyssetx }{ + { keys~set~x }{ \semantex_preprocess_keys_x:nN { #3 } #4 } - { setargkeys }{ + { set~arg~keys }{ \semantex_preprocess_arg_keys:nN { #3 } #4 } - { argkeysset }{ + { arg~keys~set }{ \semantex_preprocess_arg_keys:nN { #3 } #4 } - { setargkeysx }{ + { set~arg~keys~x }{ \semantex_preprocess_arg_keys_x:nN { #3 } #4 } - { argkeyssetx }{ + { arg~keys~set~x }{ \semantex_preprocess_arg_keys_x:nN { #3 } #4 } - { setargsinglekeys }{ + { set~arg~single~keys }{ \semantex_preprocess_arg_singlekeys:nN { #3 } #4 } - { argsinglekeysset }{ + { arg~single~keys~set }{ \semantex_preprocess_arg_singlekeys:nN { #3 } #4 } - { setargsinglekeysx }{ + { set~arg~single~keys~x }{ \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 } - { argsinglekeyssetx }{ + { arg~single~keys~set~x }{ \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 } - { parseoptions }{ + { parse~options }{ + \tl_put_right:Nn#4 + { + \semantex_append_singlekey_with_raw_code:nnn { #1 } { parse~code } + } + \group_begin: + \tl_set:Nn\l__semantex_preprocess_valuekey_keys_temp_tl {} + \semantex_preprocess_keys_x:nN { #3 } \l__semantex_preprocess_valuekey_keys_temp_tl + \exp_args:NNNx + \group_end: + \tl_put_right:Nn#4 + { + { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } + } + } + { pre~parse~options }{ \tl_put_right:Nn#4 { - \semantex_add_raw_commands_to_parse_options:nn { #1 } + \semantex_pre_append_singlekey_with_raw_code:nnn { #1 } { parse~code } } \group_begin: \tl_set:Nn\l__semantex_preprocess_valuekey_keys_temp_tl {} @@ -3768,21 +4301,44 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - { outputoptions }{ + { output~options }{ + \tl_put_right:Nn#4 + { + \semantex_add_raw_code_to_output_options:nn { #1 } + } + \group_begin: + \tl_set:Nn\l__semantex_preprocess_valuekey_keys_pre_temp_tl {} + \semantex_preprocess_keys_x:nN { #3 } \l__semantex_preprocess_valuekey_keys_pre_temp_tl + \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 + { + \l__semantex_preprocess_valuekey_keys_pre_temp_tl + } + \tl_set:No\l__semantex_preprocess_valuekey_keys_temp_tl + { + \l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn { ###1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } + } + \exp_args:NNNx + \group_end: + \tl_put_right:Nn#4 + { + { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } + } + } + { pre~output~options }{ \tl_put_right:Nn#4 { - \semantex_add_raw_commands_to_output_options:nn { #1 } + \semantex_add_raw_code_to_the_left_of_output_options:nn { #1 } } \group_begin: \tl_set:Nn\l__semantex_preprocess_valuekey_keys_pre_temp_tl {} \semantex_preprocess_keys_x:nN { #3 } \l__semantex_preprocess_valuekey_keys_pre_temp_tl - \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nn##1##2 + \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { \l__semantex_preprocess_valuekey_keys_pre_temp_tl } \tl_set:No\l__semantex_preprocess_valuekey_keys_temp_tl { - \l__semantex_preprocess_valuekey_keys_temp_cs:nn { ###1 } { ##2 } + \l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn { ###1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } } \exp_args:NNNx \group_end: @@ -3791,8 +4347,8 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - { boolifTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_boolifTF_temp_cs:nTF##1##2##3 + { bool~if~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_TF_temp_cs:nTF##1##2##3 { \tl_put_right:Nn#4 { @@ -3817,10 +4373,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_boolifTF_temp_cs:nTF #3 + \l__semantex_preprocess_valuekey_bool_if_TF_temp_cs:nTF #3 } - { boolifT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_boolifT_temp_cs:nT##1##2 + { bool~if~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_T_temp_cs:nT##1##2 { \tl_put_right:Nn#4 { @@ -3837,10 +4393,10 @@ { } } } - \l__semantex_preprocess_valuekey_boolifT_temp_cs:nT #3 + \l__semantex_preprocess_valuekey_bool_if_T_temp_cs:nT #3 } - { boolifF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_boolifF_temp_cs:nF##1##2 + { bool~if~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_F_temp_cs:nF##1##2 { \tl_put_right:Nn#4 { @@ -3857,10 +4413,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_boolifF_temp_cs:nF #3 + \l__semantex_preprocess_valuekey_bool_if_F_temp_cs:nF #3 } - { ifblankTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankTF_temp_cs:nTF##1##2##3 + { if~blank~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_TF_temp_cs:nTF##1##2##3 { \tl_put_right:Nn#4 { @@ -3885,10 +4441,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_ifblankTF_temp_cs:nTF #3 + \l__semantex_preprocess_valuekey_if_blank_TF_temp_cs:nTF #3 } - { ifblankT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankT_temp_cs:nT##1##2 + { if~blank~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_T_temp_cs:nT##1##2 { \tl_put_right:Nn#4 { @@ -3905,10 +4461,10 @@ { } } } - \l__semantex_preprocess_valuekey_ifblankT_temp_cs:nT #3 + \l__semantex_preprocess_valuekey_if_blank_T_temp_cs:nT #3 } - { ifblankF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankF_temp_cs:nF##1##2 + { if~blank~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_F_temp_cs:nF##1##2 { \tl_put_right:Nn#4 { @@ -3925,10 +4481,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_ifblankF_temp_cs:nF #3 + \l__semantex_preprocess_valuekey_if_blank_F_temp_cs:nF #3 } - { strifeqTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqTF_temp_cs:nnTF##1##2##3##4 + { str~if~eq~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_TF_temp_cs:nnTF##1##2##3##4 { \tl_put_right:Nn#4 { @@ -3953,10 +4509,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_strifeqTF_temp_cs:nnTF #3 + \l__semantex_preprocess_valuekey_str_if_eq_TF_temp_cs:nnTF #3 } - { strifeqT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqT_temp_cs:nnT##1##2##3 + { str~if~eq~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_T_temp_cs:nnT##1##2##3 { \tl_put_right:Nn#4 { @@ -3973,10 +4529,10 @@ { } } } - \l__semantex_preprocess_valuekey_strifeqT_temp_cs:nnT #3 + \l__semantex_preprocess_valuekey_str_if_eq_T_temp_cs:nnT #3 } - { strifeqF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqF_temp_cs:nnF##1##2##3 + { str~if~eq~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_F_temp_cs:nnF##1##2##3 { \tl_put_right:Nn#4 { @@ -3993,10 +4549,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_strifeqF_temp_cs:nnF #3 + \l__semantex_preprocess_valuekey_str_if_eq_F_temp_cs:nnF #3 } - { intifgreaterTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterTF_temp_cs:nnTF##1##2##3##4 + { int~if~greater~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_TF_temp_cs:nnTF##1##2##3##4 { \tl_put_right:Nn#4 { @@ -4021,10 +4577,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intifgreaterTF_temp_cs:nnTF #3 + \l__semantex_preprocess_valuekey_int_if_greater_TF_temp_cs:nnTF #3 } - { intifgreaterT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterT_temp_cs:nnT##1##2##3 + { int~if~greater~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_T_temp_cs:nnT##1##2##3 { \tl_put_right:Nn#4 { @@ -4041,10 +4597,10 @@ { } } } - \l__semantex_preprocess_valuekey_intifgreaterT_temp_cs:nnT #3 + \l__semantex_preprocess_valuekey_int_if_greater_T_temp_cs:nnT #3 } - { intifgreaterF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterF_temp_cs:nnF##1##2##3 + { int~if~greater~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_F_temp_cs:nnF##1##2##3 { \tl_put_right:Nn#4 { @@ -4061,10 +4617,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intifgreaterF_temp_cs:nnF #3 + \l__semantex_preprocess_valuekey_int_if_greater_F_temp_cs:nnF #3 } - { intifeqTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqTF_temp_cs:nnTF##1##2##3##4 + { int~if~eq~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_TF_temp_cs:nnTF##1##2##3##4 { \tl_put_right:Nn#4 { @@ -4089,10 +4645,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intifeqTF_temp_cs:nnTF #3 + \l__semantex_preprocess_valuekey_int_if_eq_TF_temp_cs:nnTF #3 } - { intifeqT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqT_temp_cs:nnT##1##2##3 + { int~if~eq~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_T_temp_cs:nnT##1##2##3 { \tl_put_right:Nn#4 { @@ -4109,10 +4665,10 @@ { } } } - \l__semantex_preprocess_valuekey_intifeqT_temp_cs:nnT #3 + \l__semantex_preprocess_valuekey_int_if_eq_T_temp_cs:nnT #3 } - { intifeqF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqF_temp_cs:nnF##1##2##3 + { int~if~eq~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_F_temp_cs:nnF##1##2##3 { \tl_put_right:Nn#4 { @@ -4129,10 +4685,10 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intifeqF_temp_cs:nnF #3 + \l__semantex_preprocess_valuekey_int_if_eq_F_temp_cs:nnF #3 } - { intiflessTF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessTF_temp_cs:nnTF##1##2##3##4 + { int~if~less~TF }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_TF_temp_cs:nnTF##1##2##3##4 { \tl_put_right:Nn#4 { @@ -4157,10 +4713,10 @@ { \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intiflessTF_temp_cs:nnTF #3 + \l__semantex_preprocess_valuekey_int_if_less_TF_temp_cs:nnTF #3 } - { intiflessT }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessT_temp_cs:nnT##1##2##3 + { int~if~less~T }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_T_temp_cs:nnT##1##2##3 { \tl_put_right:Nn#4 { @@ -4177,10 +4733,10 @@ { } } } - \l__semantex_preprocess_valuekey_intiflessT_temp_cs:nnT #3 + \l__semantex_preprocess_valuekey_int_if_less_T_temp_cs:nnT #3 } - { intiflessF }{ - \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessF_temp_cs:nnF##1##2##3 + { int~if~less~F }{ + \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_F_temp_cs:nnF##1##2##3 { \tl_put_right:Nn#4 { @@ -4197,7 +4753,7 @@ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl } } } - \l__semantex_preprocess_valuekey_intiflessF_temp_cs:nnF #3 + \l__semantex_preprocess_valuekey_int_if_less_F_temp_cs:nnF #3 } } { @@ -4261,6 +4817,14 @@ } } +\cs_new_protected:Npn \semantex_clear_singlekey:nn#1#2 +{ + \cs_set_protected:cpo { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } ##1 + { + % do nothing + } +} + \cs_new_protected:Npn\semantex_remove_singlekey:nn#1#2 { \cs_undefine:c { __semantex_data_cs_custom_singlekey_#1_#2:n } @@ -4448,356 +5012,1380 @@ } } -\cs_new_protected:Npn\semantex_define_nine_valuekeys:nn#1#2 -{ - % Add new valuekeys with 9 values +%\cs_new_protected:Npn\semantex_define_nine_valuekeys:nn#1#2 +%{ +% % Add new valuekeys with 9 values +% \clist_map_inline:nn { #2 }{ +% \__semantex_nine_valuekey_format_auxiliary:nnn{#1}##1 +% } +%} +% +%\cs_new_protected:Npn\__semantex_nine_valuekey_format_auxiliary:nnn#1#2#3%CHECK2 +%{ +% \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 } +% \tl_set:Nn\l__semantex_nine_valuekey_auxiliary_temp_tl{} +% \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_singlekey_temp_cs:n##1 +% { +% \__semantex_preprocess_singlekey:nnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2 +% { +% \__semantex_preprocess_valuekey:nnnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_nine_valuekey_auxiliary_temp_tl +% } +% \semantex_keyval_parse:NNo +% \l__semantex_nine_valuekey_auxiliary_singlekey_temp_cs:n +% \l__semantex_nine_valuekey_auxiliary_valuekey_temp_cs:nn +% { +% \l__semantex_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } +% } +% \cs_set_protected:cpo { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9 +% { +% \l__semantex_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 +% { +% \tl_set:Nn \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 } +% \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2 +% } +%} + + + +\cs_new_protected:Npn\semantex_append_valuekeys:nn#1#2 +{ + % Appends keys taking one value \clist_map_inline:nn { #2 }{ - \__semantex_nine_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_append_valuekeys_format_auxiliary:nnn { #1 } ##1 } } -\cs_new_protected:Npn\__semantex_nine_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_append_valuekeys_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 } - \tl_set:Nn\l__semantex_nine_valuekey_auxiliary_temp_tl{} - \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_singlekey_temp_cs:n##1 + \cs_set:Npn\l__semantex_append_valuekeys_auxiliary_temp_cs:n##1 { #3 } + \tl_set:Nn \l__semantex_append_valuekeys_auxiliary_temp_tl {} + \semantex_preprocess_keys:oN { - \__semantex_preprocess_singlekey:nnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_nine_valuekey_auxiliary_temp_tl - } - \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2 + \l__semantex_append_valuekeys_auxiliary_temp_cs:n { ##2 } + } \l__semantex_append_valuekeys_auxiliary_temp_tl + \semantex_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_valuekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } { - \__semantex_preprocess_valuekey:nnnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_nine_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_append_valuekeys_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_valuekeys_auxiliary_temp_tl } - \semantex_keyval_parse:NNo - \l__semantex_nine_valuekey_auxiliary_singlekey_temp_cs:n - \l__semantex_nine_valuekey_auxiliary_valuekey_temp_cs:nn - { - \l__semantex_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } - } - \cs_set_protected:cpo { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9 - { - \l__semantex_nine_valuekey_auxiliary_temp_tl +} + +\cs_new_protected:Npn\semantex_pre_append_valuekeys:nn#1#2 +{ + % Pre-appends keys taking one value + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_valuekeys_format_auxiliary:nnn { #1 } ##1 } - \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 +} + +\cs_new_protected:Npn\__semantex_pre_append_valuekeys_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_valuekeys_auxiliary_temp_cs:n##1 { #3 } + \tl_set:Nn \l__semantex_pre_append_valuekeys_auxiliary_temp_tl {} + \semantex_preprocess_keys:oN + { + \l__semantex_pre_append_valuekeys_auxiliary_temp_cs:n { ##2 } + } \l__semantex_pre_append_valuekeys_auxiliary_temp_tl + \semantex_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_valuekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } { - \tl_set:Nn \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 } - \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2 + \exp_not:V\l__semantex_pre_append_valuekeys_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_valuekeys_auxiliary_original_temp_tl } } +\cs_new_protected:Npn\semantex_append_singlekeys:nn#1#2 +{ + % Appends keys taking no values + \clist_map_inline:nn { #2 }{ + \__semantex_append_singlekeys_format_auxiliary:nnn { #1 } ##1 + } +} -% SETTING UP THE ARGUMENT KEYVAL INTERFACE - -\cs_new_protected:Npn\semantex_preprocess_arg_keys:nN#1#2 +\cs_new_protected:Npn \__semantex_append_singlekeys_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_preprocess_arg_singlekey_temp_cs:n##1 + \cs_set:Npn\l__semantex_append_singlekeys_auxiliary_temp_cs: { #3 } + \tl_set:Nn \l__semantex_append_singlekeys_auxiliary_temp_tl {} + \semantex_preprocess_keys:oN { - \__semantex_preprocess_arg_singlekey:nnN { ####1 } { ##1 } #2 - } - \cs_set:Npn\l__semantex_preprocess_arg_valuekey_temp_cs:nn##1##2 + \l__semantex_append_singlekeys_auxiliary_temp_cs: + } \l__semantex_append_singlekeys_auxiliary_temp_tl + \semantex_singlekey_store:nnN { #1 } { #2 } \l__semantex_append_singlekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } { - \__semantex_preprocess_arg_valuekey:nnnN { ####1 } { ##1 } { ##2 } #2 + \exp_not:V\l__semantex_append_singlekeys_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_singlekeys_auxiliary_temp_tl } - \semantex_keyval_parse:NNn - \l__semantex_preprocess_arg_singlekey_temp_cs:n - \l__semantex_preprocess_arg_valuekey_temp_cs:nn - { #1 } } -\cs_generate_variant:Nn \semantex_preprocess_arg_keys:nN { oN } +\cs_new_protected:Npn \semantex_append_singlekey_with_raw_code:nnn#1#2#3 +{ + % Appends the key #2 with the raw code #3 + % #1 = register + % #2 = key + % #3 = raw code + \tl_set:Nn \l__semantex_add_raw_code_to_singlekey_auxiliary_temp_tl { #3 } + \semantex_singlekey_store:nnN { #1 } { #2 } \l__semantex_append_singlekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } + { + \exp_not:V\l__semantex_append_singlekeys_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_singlekeys_auxiliary_temp_tl + } +} -\cs_new_protected:Npn\semantex_preprocess_arg_singlekeys:nN#1#2 +\cs_new_protected:Npn \semantex_pre_append_singlekey_with_raw_code:nnn#1#2#3 { - \cs_set:Npn\l__semantex_preprocess_arg_singlekey_temp_cs:n##1 + % Appends the key #2 with the raw code #3 + % #1 = register + % #2 = key + % #3 = raw code + \tl_set:Nn \l__semantex_add_raw_code_to_singlekey_auxiliary_temp_tl { #3 } + \semantex_singlekey_store:nnN { #1 } { #2 } \l__semantex_append_singlekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } { - \__semantex_preprocess_arg_singlekey:nnN { ####1 } { ##1 } #2 + \exp_not:V\l__semantex_append_singlekeys_auxiliary_temp_tl + \exp_not:V\l__semantex_append_singlekeys_auxiliary_original_temp_tl } - \clist_map_function:nN { #1 } \l__semantex_preprocess_arg_singlekey_temp_cs:n } +\cs_new_protected:Npn\semantex_pre_append_singlekeys:nn#1#2 +{ + % Pre-appends keys taking no values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_singlekeys_format_auxiliary:nnn { #1 } ##1 + } +} -\cs_new_protected:Npn\__semantex_preprocess_arg_singlekey:nnN#1#2#3 +\cs_new_protected:Npn \__semantex_pre_append_singlekeys_format_auxiliary:nnn#1#2#3 { - \tl_put_right:Nn#3 + \cs_set:Npn\l__semantex_pre_append_singlekeys_auxiliary_temp_cs: { #3 } + \tl_set:Nn \l__semantex_pre_append_singlekeys_auxiliary_temp_tl {} + \semantex_preprocess_keys:oN { - \semantex_arg_singlekey:nn { #1 } { #2 } + \l__semantex_pre_append_singlekeys_auxiliary_temp_cs: + } \l__semantex_pre_append_singlekeys_auxiliary_temp_tl + \semantex_singlekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_singlekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } + { + \exp_not:V\l__semantex_pre_append_singlekeys_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_singlekeys_auxiliary_original_temp_tl } } +\cs_new_protected:Npn\semantex_append_two_valuekeys:nn#1#2 +{ + % Appends valuekeys with 2 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_two_valuekey_format_auxiliary:nnn { #1 } ##1 + } +} -\cs_new_protected:Npn\__semantex_preprocess_arg_valuekey:nnnN#1#2#3#4 +\cs_new_protected:Npn\__semantex_append_two_valuekey_format_auxiliary:nnn#1#2#3 { - \str_case:nnF { #2 } + \cs_set:Npn\l__semantex_append_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 } + \tl_set:Nn\l__semantex_append_two_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN { - { execute }{ - \tl_put_right:Nn#4 - { - #3 - } + \l__semantex_append_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 } + } \l__semantex_append_two_valuekey_auxiliary_temp_tl + \semantex_two_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_two_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } + { + \exp_not:V\l__semantex_append_two_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_two_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_pre_append_two_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 2 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_two_valuekey_format_auxiliary:nnn { #1 } ##1 + } +} + +\cs_new_protected:Npn\__semantex_pre_append_two_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 } + \tl_set:Nn\l__semantex_pre_append_two_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_pre_append_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 } + } \l__semantex_pre_append_two_valuekey_auxiliary_temp_tl + \semantex_two_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_two_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } + { + \exp_not:V\l__semantex_pre_append_two_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_pre_append_two_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_append_three_valuekeys:nn#1#2 +{ + % Appends valuekeys with 3 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_three_valuekey_format_auxiliary:nnn {#1} ##1 + } +} + +\cs_new_protected:Npn\__semantex_append_three_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_append_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 } + \tl_set:Nn\l__semantex_append_three_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_append_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 } + } \l__semantex_append_three_valuekey_auxiliary_temp_tl + \semantex_three_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_three_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } + { + \exp_not:V\l__semantex_append_three_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_three_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_pre_append_three_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 3 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_three_valuekey_format_auxiliary:nnn {#1} ##1 + } +} + +\cs_new_protected:Npn\__semantex_pre_append_three_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 } + \tl_set:Nn\l__semantex_pre_append_three_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_pre_append_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 } + } \l__semantex_pre_append_three_valuekey_auxiliary_temp_tl + \semantex_three_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_three_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } + { + \exp_not:V\l__semantex_pre_append_three_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_three_valuekey_auxiliary_original_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_append_four_valuekeys:nn#1#2 +{ + % Appends valuekeys with 4 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_four_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_append_four_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_append_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 } + \tl_set:Nn\l__semantex_append_four_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_append_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 } + } \l__semantex_append_four_valuekey_auxiliary_temp_tl + \semantex_four_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_four_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } + { + \exp_not:V\l__semantex_append_four_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_four_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_pre_append_four_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 4 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_four_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_pre_append_four_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 } + \tl_set:Nn\l__semantex_pre_append_four_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_pre_append_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 } + } \l__semantex_pre_append_four_valuekey_auxiliary_temp_tl + \semantex_four_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_four_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } + { + \exp_not:V\l__semantex_pre_append_four_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_four_valuekey_auxiliary_original_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_append_five_valuekeys:nn#1#2 +{ + % Appends valuekeys with 5 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_five_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_append_five_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_append_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 } + \tl_set:Nn\l__semantex_append_five_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_append_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } + } \l__semantex_append_five_valuekey_auxiliary_temp_tl + \semantex_five_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_five_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } + { + \exp_not:V\l__semantex_append_five_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_five_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_pre_append_five_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 5 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_five_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_pre_append_five_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 } + \tl_set:Nn\l__semantex_pre_append_five_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_pre_append_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } + } \l__semantex_pre_append_five_valuekey_auxiliary_temp_tl + \semantex_five_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_five_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } + { + \exp_not:V\l__semantex_pre_append_five_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_five_valuekey_auxiliary_original_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_append_six_valuekeys:nn#1#2 +{ + % Appends valuekeys with 6 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_six_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_append_six_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_append_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 } + \tl_set:Nn\l__semantex_append_six_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_append_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } + } \l__semantex_append_six_valuekey_auxiliary_temp_tl + \semantex_six_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_six_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } + { + \exp_not:V\l__semantex_append_six_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_six_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_pre_append_six_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 6 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_six_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_pre_append_six_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 } + \tl_set:Nn\l__semantex_pre_append_six_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_pre_append_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } + } \l__semantex_pre_append_six_valuekey_auxiliary_temp_tl + \semantex_six_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_six_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } + { + \exp_not:V\l__semantex_pre_append_six_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_pre_append_six_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_append_seven_valuekeys:nn#1#2 +{ + % Appends valuekeys with 7 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_seven_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_append_seven_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_append_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 } + \tl_set:Nn\l__semantex_append_seven_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_append_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } + } \l__semantex_append_seven_valuekey_auxiliary_temp_tl + \semantex_seven_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_seven_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } + { + \exp_not:V\l__semantex_append_seven_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_seven_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_pre_append_seven_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 7 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_seven_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_pre_append_seven_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 } + \tl_set:Nn\l__semantex_pre_append_seven_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_pre_append_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } + } \l__semantex_pre_append_seven_valuekey_auxiliary_temp_tl + \semantex_seven_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_seven_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } + { + \exp_not:V\l__semantex_pre_append_seven_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_pre_append_seven_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_append_eight_valuekeys:nn#1#2 +{ + % Appends valuekeys with 8 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_eight_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_append_eight_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_append_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 } + \tl_set:Nn\l__semantex_append_eight_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_append_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } + } \l__semantex_append_eight_valuekey_auxiliary_temp_tl + \semantex_eight_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_eight_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } + { + \exp_not:V\l__semantex_append_eight_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_eight_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_pre_append_eight_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 8 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_eight_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_pre_append_eight_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 } + \tl_set:Nn\l__semantex_pre_append_eight_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_keys:oN + { + \l__semantex_pre_append_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } + } \l__semantex_pre_append_eight_valuekey_auxiliary_temp_tl + \semantex_eight_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_eight_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } + { + \exp_not:V\l__semantex_pre_append_eight_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_eight_valuekey_auxiliary_original_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2 + } +} + +%\cs_new_protected:Npn\semantex_append_nine_valuekeys:nn#1#2 +%{ +% % Appends valuekeys with 9 values +% \clist_map_inline:nn { #2 }{ +% \__semantex_append_nine_valuekey_format_auxiliary:nnn{#1}##1 +% } +%} +% +%\cs_new_protected:Npn\__semantex_append_nine_valuekey_format_auxiliary:nnn#1#2#3 +%{ +% \cs_set:Npn\l__semantex_append_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 } +% \tl_set:Nn\l__semantex_append_nine_valuekey_auxiliary_temp_tl{} +% \cs_set:Npn\l__semantex_append_nine_valuekey_auxiliary_singlekey_temp_cs:n##1 +% { +% \__semantex_preprocess_singlekey:nnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_append_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set:Npn\l__semantex_append_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2 +% { +% \__semantex_preprocess_valuekey:nnnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_append_nine_valuekey_auxiliary_temp_tl +% } +% \semantex_keyval_parse:NNo +% \l__semantex_append_nine_valuekey_auxiliary_singlekey_temp_cs:n +% \l__semantex_append_nine_valuekey_auxiliary_valuekey_temp_cs:nn +% { +% \l__semantex_append_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } +% } +% \semantex_nine_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_nine_valuekey_auxiliary_original_temp_tl +% \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } +% { +% \exp_not:V\l__semantex_append_nine_valuekey_auxiliary_original_temp_tl +% \exp_not:V\l__semantex_append_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 +% { +% \tl_set:Nn \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 } +% \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2 +% } +%} +% +%\cs_new_protected:Npn\semantex_pre_append_nine_valuekeys:nn#1#2 +%{ +% % Pre-appends valuekeys with 9 values +% \clist_map_inline:nn { #2 }{ +% \__semantex_pre_append_nine_valuekey_format_auxiliary:nnn{#1}##1 +% } +%} +% +%\cs_new_protected:Npn\__semantex_pre_append_nine_valuekey_format_auxiliary:nnn#1#2#3 +%{ +% \cs_set:Npn\l__semantex_pre_append_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 } +% \tl_set:Nn\l__semantex_pre_append_nine_valuekey_auxiliary_temp_tl{} +% \cs_set:Npn\l__semantex_pre_append_nine_valuekey_auxiliary_singlekey_temp_cs:n##1 +% { +% \__semantex_preprocess_singlekey:nnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_pre_append_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set:Npn\l__semantex_pre_append_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2 +% { +% \__semantex_preprocess_valuekey:nnnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_pre_append_nine_valuekey_auxiliary_temp_tl +% } +% \semantex_keyval_parse:NNo +% \l__semantex_pre_append_nine_valuekey_auxiliary_singlekey_temp_cs:n +% \l__semantex_pre_append_nine_valuekey_auxiliary_valuekey_temp_cs:nn +% { +% \l__semantex_pre_append_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } +% } +% \semantex_nine_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_nine_valuekey_auxiliary_original_temp_tl +% \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } +% { +% \exp_not:V\l__semantex_pre_append_nine_valuekey_auxiliary_temp_tl +% \exp_not:V\l__semantex_pre_append_nine_valuekey_auxiliary_original_temp_tl +% } +% \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 +% { +% \tl_set:Nn \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 } +% \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2 +% } +%} + + +% SETTING UP THE ARGUMENT KEYVAL INTERFACE + +\cs_new_protected:Npn\semantex_preprocess_arg_keys:nN#1#2 +{ + \cs_set:Npn\l__semantex_preprocess_arg_singlekey_temp_cs:n##1 + { + \__semantex_preprocess_arg_singlekey:nnN { ####1 } { ##1 } #2 + } + \cs_set:Npn\l__semantex_preprocess_arg_valuekey_temp_cs:nn##1##2 + { + \__semantex_preprocess_arg_valuekey:nnnN { ####1 } { ##1 } { ##2 } #2 + } + \semantex_keyval_parse:NNn + \l__semantex_preprocess_arg_singlekey_temp_cs:n + \l__semantex_preprocess_arg_valuekey_temp_cs:nn + { #1 } +} + +\cs_generate_variant:Nn \semantex_preprocess_arg_keys:nN { oN } + +\cs_new_protected:Npn\semantex_preprocess_arg_singlekeys:nN#1#2 +{ + \cs_set:Npn\l__semantex_preprocess_arg_singlekey_temp_cs:n##1 + { + \__semantex_preprocess_arg_singlekey:nnN { ####1 } { ##1 } #2 + } + \clist_map_function:nN { #1 } \l__semantex_preprocess_arg_singlekey_temp_cs:n +} + + +\cs_new_protected:Npn\__semantex_preprocess_arg_singlekey:nnN#1#2#3 +{ + \tl_put_right:Nn#3 + { + \semantex_arg_singlekey:nn { #1 } { #2 } + } +} + + +\cs_new_protected:Npn\__semantex_preprocess_arg_valuekey:nnnN#1#2#3#4%CHECK4 +{ + \str_case:nnF { #2 } + { + { execute }{ + \tl_put_right:Nn#4 + { + #3 + } + } + { set~keys }{ + \semantex_preprocess_keys:nN { #3 } #4 + } + { keys~set }{ + \semantex_preprocess_keys:nN { #3 } #4 + } + { set~keys~x }{ + \semantex_preprocess_keys_x:nN { #3 } #4 + } + { keys~set~x }{ + \semantex_preprocess_keys_x:nN { #3 } #4 + } + { set~arg~keys }{ + \semantex_preprocess_arg_keys:nN { #3 } #4 + } + { arg~keys~set }{ + \semantex_preprocess_arg_keys:nN { #3 } #4 + } + { set~arg~keys~x }{ + \semantex_preprocess_arg_keys_x:nN { #3 } #4 + } + { arg~keys~set~x }{ + \semantex_preprocess_arg_keys_x:nN { #3 } #4 + } + { set~arg~single~keys }{ + \semantex_preprocess_arg_singlekeys:nN { #3 } #4 + } + { arg~single~keys~set }{ + \semantex_preprocess_arg_singlekeys:nN { #3 } #4 + } + { set~arg~single~keys~x }{ + \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 + } + { arg~single~keys~set~x }{ + \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 + } + } + { + \tl_put_right:Nn#4 + { + \semantex_arg_valuekey:nnn { #1 } { #2 } { #3 } + } + } +} + +% The x version: + +\cs_new_protected:Npn\semantex_preprocess_arg_keys_x:nN#1#2 +{ + \cs_set:Npn\l__semantex_preprocess_arg_singlekey_x_temp_cs:n##1 + { + \__semantex_preprocess_arg_singlekey_x:nnN { ####1 } { ##1 } #2 + } + \cs_set:Npn\l__semantex_preprocess_arg_valuekey_x_temp_cs:nn##1##2 + { + \__semantex_preprocess_arg_valuekey_x:nnnN { ####1 } { ##1 } { ##2 } #2 + } + \semantex_keyval_parse:NNn + \l__semantex_preprocess_arg_singlekey_x_temp_cs:n + \l__semantex_preprocess_arg_valuekey_x_temp_cs:nn + { #1 } +} + +\cs_new_protected:Npn\semantex_preprocess_arg_singlekeys_x:nN#1#2 +{ + \cs_set:Npn\l__semantex_preprocess_arg_singlekey_x_temp_cs:n##1 + { + \__semantex_preprocess_arg_singlekey_x:nnN { ####1 } { ##1 } #2 + } + \clist_map_function:nN { #1 } \l__semantex_preprocess_arg_singlekey_x_temp_cs:n +} + + +\cs_new_protected:Npn\__semantex_preprocess_arg_singlekey_x:nnN#1#2#3 +{ + \tl_put_right:Nn#3 + { + \semantex_arg_singlekey_x:nn { #1 } { #2 } + } +} + +\cs_new_protected:Npn\__semantex_preprocess_arg_valuekey_x:nnnN#1#2#3#4 +{ + \str_case:nnF { #2 } + { + { execute } { + \tl_put_right:Nn#4 + { + #3 + } } - { setkeys }{ + { set~keys }{ \semantex_preprocess_keys:nN { #3 } #4 } - { keysset }{ + { keys~set }{ \semantex_preprocess_keys:nN { #3 } #4 } - { setkeysx }{ + { set~keys~x }{ \semantex_preprocess_keys_x:nN { #3 } #4 } - { keyssetx }{ + { keys~set~x }{ \semantex_preprocess_keys_x:nN { #3 } #4 } - { setargkeys }{ + { set~arg~keys }{ \semantex_preprocess_arg_keys:nN { #3 } #4 } - { argkeysset }{ + { arg~keys~set }{ \semantex_preprocess_arg_keys:nN { #3 } #4 } - { setargkeysx }{ + { set~arg~keys~x }{ \semantex_preprocess_arg_keys_x:nN { #3 } #4 } - { argkeyssetx }{ + { arg~keys~set~x }{ \semantex_preprocess_arg_keys_x:nN { #3 } #4 } - { setargsinglekeys }{ + { set~arg~single~keys }{ \semantex_preprocess_arg_singlekeys:nN { #3 } #4 } - { argsinglekeysset }{ + { arg~single~keys~set }{ \semantex_preprocess_arg_singlekeys:nN { #3 } #4 } - { setargsinglekeysx }{ + { set~arg~single~keys~x }{ \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 } - { argsinglekeyssetx }{ + { arg~single~keys~set~x }{ \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 } } { \tl_put_right:Nn#4 { - \semantex_arg_valuekey:nnn { #1 } { #2 } { #3 } + \semantex_arg_valuekey:nnx { #1 } { #2 } { #3 } } } } -% The x version: +\cs_new_protected:Npn\semantex_define_arg_valuekeys:nn#1#2 +{ + % Add new valuekeys + \clist_map_inline:nn { #2 }{ + \__semantex_arg_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_generate_variant:Nn \l__semantex_auxiliary_preprocess_arg_keys_temp:n { o } + +\cs_new_protected:Npn\__semantex_arg_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_arg_valuekey_auxiliary_temp_cs:n##1 { #3 } + \tl_set:Nn \l__semantex_arg_valuekey_auxiliary_temp_tl {} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_valuekey_auxiliary_temp_cs:n { ##2 } + } \l__semantex_arg_valuekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \l__semantex_arg_valuekey_auxiliary_temp_tl + } +} + +\cs_new_protected:Npn\semantex_remove_arg_valuekey:nn#1#2 +{ + \cs_undefine:c { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } +} + +\cs_new_protected:Npn\semantex_define_arg_singlekeys:nn#1#2 +{ + % Add keys taking no values + \clist_map_inline:nn { #2 }{ + \__semantex_arg_singlekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn \__semantex_arg_singlekey_format_auxiliary:nnn#1#2#3{ + \cs_set:Npn\l__semantex_arg_singlekey_auxiliary_temp_cs: { #3 } + \tl_set:Nn \l__semantex_arg_singlekey_auxiliary_temp_tl {} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_singlekey_auxiliary_temp_cs: + } \l__semantex_arg_singlekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n } ##1 + { + \l__semantex_arg_singlekey_auxiliary_temp_tl + } +} + + +\cs_new_protected:Npn\semantex_remove_arg_singlekey:nn#1#2 +{ + \cs_undefine:c { __semantex_data_cs_custom_arg_singlekey_#1_#2:n } +} + +\cs_new_protected:Npn\semantex_define_arg_two_valuekeys:nn#1#2 +{ + % Add new argument valuekeys with 2 values + \clist_map_inline:nn { #2 }{ + \__semantex_arg_two_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_arg_two_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_arg_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 } + \tl_set:Nn\l__semantex_arg_two_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 } + } \l__semantex_arg_two_valuekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } ##1##2##3 + { + \l__semantex_arg_two_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_define_arg_three_valuekeys:nn#1#2 +{ + % Add new argument valuekeys with 3 values + \clist_map_inline:nn { #2 }{ + \__semantex_arg_three_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_arg_three_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_arg_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 } + \tl_set:Nn\l__semantex_arg_three_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 } + } \l__semantex_arg_three_valuekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } ##1##2##3##4 + { + \l__semantex_arg_three_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2 + } +} + +\cs_new:Npn\semantex_define_arg_four_valuekeys:nn#1#2 +{ + % Add new argument valuekeys with 4 values + \clist_map_inline:nn { #2 }{ + \__semantex_arg_four_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_arg_four_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_arg_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 } + \tl_set:Nn\l__semantex_arg_four_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 } + } \l__semantex_arg_four_valuekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } ##1##2##3##4##5 + { + \l__semantex_arg_four_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_define_arg_five_valuekeys:nn#1#2 +{ + % Add new argument valuekeys with 5 values + \clist_map_inline:nn { #2 }{ + \__semantex_arg_five_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_arg_five_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_arg_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 } + \tl_set:Nn\l__semantex_arg_five_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } + } \l__semantex_arg_five_valuekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } ##1##2##3##4##5##6 + { + \l__semantex_arg_five_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_define_arg_six_valuekeys:nn#1#2 +{ + % Add new argument valuekeys with 6 values + \clist_map_inline:nn { #2 }{ + \__semantex_arg_six_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_arg_six_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_arg_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 } + \tl_set:Nn\l__semantex_arg_six_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } + } \l__semantex_arg_six_valuekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } ##1##2##3##4##5##6##7 + { + \l__semantex_arg_six_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_define_arg_seven_valuekeys:nn#1#2 +{ + % Add new argument valuekeys with 7 values + \clist_map_inline:nn { #2 }{ + \__semantex_arg_seven_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_arg_seven_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 } + \tl_set:Nn\l__semantex_arg_seven_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } + } \l__semantex_arg_seven_valuekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } ##1##2##3##4##5##6##7##8 + { + \l__semantex_arg_seven_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_define_arg_eight_valuekeys:nn#1#2 +{ + % Add new argument valuekeys with 8 values + \clist_map_inline:nn { #2 }{ + \__semantex_arg_eight_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_arg_eight_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 } + \tl_set:Nn\l__semantex_arg_eight_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } + } \l__semantex_arg_eight_valuekey_auxiliary_temp_tl + \cs_set_protected:cpo { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9 + { + \l__semantex_arg_eight_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2 + } +} + +%\cs_new_protected:Npn\semantex_define_arg_nine_valuekeys:nn#1#2 +%{ +% % Add new argument valuekeys with 9 values +% \clist_map_inline:nn { #2 }{ +% \__semantex_arg_nine_valuekey_format_auxiliary:nnn{#1}##1 +% } +%} +% +%\cs_new_protected:Npn\__semantex_arg_nine_valuekey_format_auxiliary:nnn#1#2#3 +%{ +% \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 } +% \tl_set:Nn\l__semantex_arg_nine_valuekey_auxiliary_temp_tl{} +% \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n##1 +% { +% \__semantex_preprocess_arg_singlekey:nnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_arg_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2 +% { +% \__semantex_preprocess_arg_valuekey:nnnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_arg_nine_valuekey_auxiliary_temp_tl +% } +% \semantex_keyval_parse:NNo +% \l__semantex_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n +% \l__semantex_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn +% { +% \l__semantex_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } +% } +% \cs_set_protected:cpo { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9 +% { +% \l__semantex_arg_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 +% { +% \tl_set:Nn \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 } +% \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2 +% } +%} + + +\cs_new_protected:Npn\semantex_append_arg_valuekeys:nn#1#2 +{ + % Appends keys taking one value + \clist_map_inline:nn { #2 }{ + \__semantex_append_arg_valuekeys_format_auxiliary:nnn { #1 } ##1 + } +} -\cs_new_protected:Npn\semantex_preprocess_arg_keys_x:nN#1#2 +\cs_new_protected:Npn\__semantex_append_arg_valuekeys_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_preprocess_arg_singlekey_x_temp_cs:n##1 + \cs_set:Npn\l__semantex_append_arg_valuekeys_auxiliary_temp_cs:n##1 { #3 } + \tl_set:Nn \l__semantex_append_arg_valuekeys_auxiliary_temp_tl {} + \semantex_preprocess_arg_keys:oN { - \__semantex_preprocess_arg_singlekey_x:nnN { ####1 } { ##1 } #2 - } - \cs_set:Npn\l__semantex_preprocess_arg_valuekey_x_temp_cs:nn##1##2 + \l__semantex_append_arg_valuekeys_auxiliary_temp_cs:n { ##2 } + } \l__semantex_append_arg_valuekeys_auxiliary_temp_tl + \semantex_arg_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_valuekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } { - \__semantex_preprocess_arg_valuekey_x:nnnN { ####1 } { ##1 } { ##2 } #2 + \exp_not:V\l__semantex_append_arg_valuekeys_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_valuekeys_auxiliary_temp_tl } - \semantex_keyval_parse:NNn - \l__semantex_preprocess_arg_singlekey_x_temp_cs:n - \l__semantex_preprocess_arg_valuekey_x_temp_cs:nn - { #1 } } -\cs_new_protected:Npn\semantex_preprocess_arg_singlekeys_x:nN#1#2 +\cs_new_protected:Npn\semantex_pre_append_arg_valuekeys:nn#1#2 { - \cs_set:Npn\l__semantex_preprocess_arg_singlekey_x_temp_cs:n##1 - { - \__semantex_preprocess_arg_singlekey_x:nnN { ####1 } { ##1 } #2 + % Pre-appends keys taking one value + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_arg_valuekeys_format_auxiliary:nnn { #1 } ##1 } - \clist_map_function:nN { #1 } \l__semantex_preprocess_arg_singlekey_x_temp_cs:n } - -\cs_new_protected:Npn\__semantex_preprocess_arg_singlekey_x:nnN#1#2#3 +\cs_new_protected:Npn\__semantex_pre_append_arg_valuekeys_format_auxiliary:nnn#1#2#3 { - \tl_put_right:Nn#3 + \cs_set:Npn\l__semantex_pre_append_arg_valuekeys_auxiliary_temp_cs:n##1 { #3 } + \tl_set:Nn \l__semantex_pre_append_arg_valuekeys_auxiliary_temp_tl {} + \semantex_preprocess_arg_keys:oN { - \semantex_arg_singlekey_x:nn { #1 } { #2 } + \l__semantex_pre_append_arg_valuekeys_auxiliary_temp_cs:n { ##2 } + } \l__semantex_pre_append_arg_valuekeys_auxiliary_temp_tl + \semantex_arg_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_valuekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } + { + \exp_not:V\l__semantex_pre_append_arg_valuekeys_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_valuekeys_auxiliary_original_temp_tl } } -\cs_new_protected:Npn\__semantex_preprocess_arg_valuekey_x:nnnN#1#2#3#4 +\cs_new_protected:Npn\semantex_append_arg_singlekeys:nn#1#2 { - \str_case:nnF { #2 } - { - { execute } { - \tl_put_right:Nn#4 - { - #3 - } - } - { setkeys }{ - \semantex_preprocess_keys:nN { #3 } #4 - } - { keysset }{ - \semantex_preprocess_keys:nN { #3 } #4 - } - { setkeysx }{ - \semantex_preprocess_keys_x:nN { #3 } #4 - } - { keyssetx }{ - \semantex_preprocess_keys_x:nN { #3 } #4 - } - { setargkeys }{ - \semantex_preprocess_arg_keys:nN { #3 } #4 - } - { argkeysset }{ - \semantex_preprocess_arg_keys:nN { #3 } #4 - } - { setargkeysx }{ - \semantex_preprocess_arg_keys_x:nN { #3 } #4 - } - { argkeyssetx }{ - \semantex_preprocess_arg_keys_x:nN { #3 } #4 - } - { setargsinglekeys }{ - \semantex_preprocess_arg_singlekeys:nN { #3 } #4 - } - { argsinglekeysset }{ - \semantex_preprocess_arg_singlekeys:nN { #3 } #4 - } - { setargsinglekeysx }{ - \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 - } - { argsinglekeyssetx }{ - \semantex_preprocess_arg_singlekeys_x:nN { #3 } #4 - } + % Appends keys taking no values + \clist_map_inline:nn { #2 }{ + \__semantex_append_arg_singlekeys_format_auxiliary:nnn { #1 } ##1 } +} + +\cs_new_protected:Npn \__semantex_append_arg_singlekeys_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_append_arg_singlekeys_auxiliary_temp_cs: { #3 } + \tl_set:Nn \l__semantex_append_arg_singlekeys_auxiliary_temp_tl {} + \semantex_preprocess_arg_keys:oN { - \tl_put_right:Nn#4 - { - \semantex_arg_valuekey:nnx { #1 } { #2 } { #3 } - } + \l__semantex_append_arg_singlekeys_auxiliary_temp_cs: + } \l__semantex_append_arg_singlekeys_auxiliary_temp_tl + \semantex_arg_singlekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_singlekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n } + { + \exp_not:V\l__semantex_append_arg_singlekeys_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_singlekeys_auxiliary_temp_tl } } -\cs_new_protected:Npn\semantex_define_arg_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_pre_append_arg_singlekeys:nn#1#2 { - % Add new valuekeys + % Pre-append_args keys taking no values \clist_map_inline:nn { #2 }{ - \__semantex_arg_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_pre_append_arg_singlekeys_format_auxiliary:nnn { #1 } ##1 } } -\cs_generate_variant:Nn \l__semantex_auxiliary_preprocess_arg_keys_temp:n { o } - -\cs_new_protected:Npn\__semantex_arg_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn \__semantex_pre_append_arg_singlekeys_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_valuekey_auxiliary_temp_cs:n##1 { #3 } - \tl_set:Nn \l__semantex_arg_valuekey_auxiliary_temp_tl {} + \cs_set:Npn\l__semantex_pre_append_arg_singlekeys_auxiliary_temp_cs: { #3 } + \tl_set:Nn \l__semantex_pre_append_arg_singlekeys_auxiliary_temp_tl {} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_valuekey_auxiliary_temp_cs:n { ##2 } - } \l__semantex_arg_valuekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + \l__semantex_pre_append_arg_singlekeys_auxiliary_temp_cs: + } \l__semantex_pre_append_arg_singlekeys_auxiliary_temp_tl + \semantex_arg_singlekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_singlekeys_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn + % \cs_set_protected:cx gave us ##1 where we wanted #1 + { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n } { - \l__semantex_arg_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_singlekeys_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_singlekeys_auxiliary_original_temp_tl } } -\cs_new_protected:Npn\semantex_remove_arg_valuekey:nn#1#2 +\cs_new_protected:Npn\semantex_append_arg_two_valuekeys:nn#1#2 { - \cs_undefine:c { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } + % Appends valuekeys with 2 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_arg_two_valuekey_format_auxiliary:nnn { #1 } ##1 + } } -\cs_new_protected:Npn\semantex_define_arg_singlekeys:nn#1#2 +\cs_new_protected:Npn\__semantex_append_arg_two_valuekey_format_auxiliary:nnn#1#2#3 { - % Add keys taking no values + \cs_set:Npn\l__semantex_append_arg_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 } + \tl_set:Nn\l__semantex_append_arg_two_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_append_arg_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 } + } \l__semantex_append_arg_two_valuekey_auxiliary_temp_tl + \semantex_arg_two_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_two_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } + { + \exp_not:V\l__semantex_append_arg_two_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_two_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2 + } +} + +\cs_new_protected:Npn\semantex_pre_append_arg_two_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 2 values \clist_map_inline:nn { #2 }{ - \__semantex_arg_singlekey_format_auxiliary:nnn{#1}##1 + \__semantex_pre_append_arg_two_valuekey_format_auxiliary:nnn { #1 } ##1 } } -\cs_new_protected:Npn \__semantex_arg_singlekey_format_auxiliary:nnn#1#2#3{ - \cs_set:Npn\l__semantex_arg_singlekey_auxiliary_temp_cs: { #3 } - \tl_set:Nn \l__semantex_arg_singlekey_auxiliary_temp_tl {} +\cs_new_protected:Npn\__semantex_pre_append_arg_two_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 } + \tl_set:Nn\l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_tl{} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_singlekey_auxiliary_temp_cs: - } \l__semantex_arg_singlekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n } ##1 + \l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 } + } \l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_tl + \semantex_arg_two_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_two_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { - \l__semantex_arg_singlekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_two_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2 } } +\cs_new_protected:Npn\semantex_append_arg_three_valuekeys:nn#1#2 +{ + % Appends valuekeys with 3 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_arg_three_valuekey_format_auxiliary:nnn {#1} ##1 + } +} -\cs_new_protected:Npn\semantex_remove_arg_singlekey:nn#1#2 +\cs_new_protected:Npn\__semantex_append_arg_three_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_undefine:c { __semantex_data_cs_custom_arg_singlekey_#1_#2:n } + \cs_set:Npn\l__semantex_append_arg_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 } + \tl_set:Nn\l__semantex_append_arg_three_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_append_arg_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 } + } \l__semantex_append_arg_three_valuekey_auxiliary_temp_tl + \semantex_arg_three_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_three_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } + { + \exp_not:V\l__semantex_append_arg_three_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_three_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2 + } } -\cs_new_protected:Npn\semantex_define_arg_two_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_pre_append_arg_three_valuekeys:nn#1#2 { - % Add new argument valuekeys with 2 values + % Pre-appends valuekeys with 3 values \clist_map_inline:nn { #2 }{ - \__semantex_arg_two_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_pre_append_arg_three_valuekey_format_auxiliary:nnn {#1} ##1 } } -\cs_new_protected:Npn\__semantex_arg_two_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_pre_append_arg_three_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 } - \tl_set:Nn\l__semantex_arg_two_valuekey_auxiliary_temp_tl{} + \cs_set:Npn\l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 } + \tl_set:Nn\l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_tl{} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 } - } \l__semantex_arg_two_valuekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } ##1##2##3 + \l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 } + } \l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_tl + \semantex_arg_three_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_three_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { - \l__semantex_arg_two_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_three_valuekey_auxiliary_original_temp_tl } \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { - \use:c { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2 + \use:c { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2 } } -\cs_new_protected:Npn\semantex_define_arg_three_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_append_arg_four_valuekeys:nn#1#2 { - % Add new argument valuekeys with 3 values + % Appends valuekeys with 4 values \clist_map_inline:nn { #2 }{ - \__semantex_three_arg_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_append_arg_four_valuekey_format_auxiliary:nnn{#1}##1 } } -\cs_new_protected:Npn\__semantex_three_arg_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_append_arg_four_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 } - \tl_set:Nn\l__semantex_arg_three_valuekey_auxiliary_temp_tl{} + \cs_set:Npn\l__semantex_append_arg_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 } + \tl_set:Nn\l__semantex_append_arg_four_valuekey_auxiliary_temp_tl{} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 } - } \l__semantex_arg_three_valuekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } ##1##2##3##4 + \l__semantex_append_arg_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 } + } \l__semantex_append_arg_four_valuekey_auxiliary_temp_tl + \semantex_arg_four_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_four_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { - \l__semantex_arg_three_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_append_arg_four_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_four_valuekey_auxiliary_temp_tl } \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { - \use:c { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2 + \use:c { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } ##2 } } -\cs_new:Npn\semantex_define_arg_four_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_pre_append_arg_four_valuekeys:nn#1#2 { - % Add new argument valuekeys with 4 values + % Pre-appends valuekeys with 4 values \clist_map_inline:nn { #2 }{ - \__semantex_four_arg_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_pre_append_arg_four_valuekey_format_auxiliary:nnn{#1}##1 } } -\cs_new_protected:Npn\__semantex_four_arg_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_pre_append_arg_four_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 } - \tl_set:Nn\l__semantex_arg_four_valuekey_auxiliary_temp_tl{} + \cs_set:Npn\l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 } + \tl_set:Nn\l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_tl{} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 } - } \l__semantex_arg_four_valuekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } ##1##2##3##4##5 + \l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 } + } \l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_tl + \semantex_arg_four_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_four_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { - \l__semantex_arg_four_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_four_valuekey_auxiliary_original_temp_tl } \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { @@ -4805,25 +6393,27 @@ } } -\cs_new_protected:Npn\semantex_define_arg_five_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_append_arg_five_valuekeys:nn#1#2 { - % Add new argument valuekeys with 5 values + % Appends valuekeys with 5 values \clist_map_inline:nn { #2 }{ - \__semantex_five_arg_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_append_arg_five_valuekey_format_auxiliary:nnn{#1}##1 } } -\cs_new_protected:Npn\__semantex_five_arg_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_append_arg_five_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 } - \tl_set:Nn\l__semantex_arg_five_valuekey_auxiliary_temp_tl{} + \cs_set:Npn\l__semantex_append_arg_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 } + \tl_set:Nn\l__semantex_append_arg_five_valuekey_auxiliary_temp_tl{} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } - } \l__semantex_arg_five_valuekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } ##1##2##3##4##5##6 + \l__semantex_append_arg_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } + } \l__semantex_append_arg_five_valuekey_auxiliary_temp_tl + \semantex_arg_five_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_five_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { - \l__semantex_arg_five_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_append_arg_five_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_five_valuekey_auxiliary_temp_tl } \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { @@ -4831,153 +6421,279 @@ } } -\cs_new_protected:Npn\semantex_define_arg_six_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_pre_append_arg_five_valuekeys:nn#1#2 { - % Add new argument valuekeys with 6 values + % Pre-appends valuekeys with 5 values \clist_map_inline:nn { #2 }{ - \__semantex_six_arg_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_pre_append_arg_five_valuekey_format_auxiliary:nnn{#1}##1 } } -\cs_new_protected:Npn\__semantex_six_arg_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_pre_append_arg_five_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 } - \tl_set:Nn\l__semantex_arg_six_valuekey_auxiliary_temp_tl{} + \cs_set:Npn\l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 } + \tl_set:Nn\l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_tl{} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } - } \l__semantex_arg_six_valuekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } ##1##2##3##4##5##6##7 + \l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } + } \l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_tl + \semantex_arg_five_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_five_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { - \l__semantex_arg_six_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_five_valuekey_auxiliary_original_temp_tl } \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { - \use:c { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2 + \use:c { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } ##2 } } -\cs_new_protected:Npn\semantex_define_arg_seven_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_append_arg_six_valuekeys:nn#1#2 { - % Add new argument valuekeys with 7 values + % Appends valuekeys with 6 values \clist_map_inline:nn { #2 }{ - \__semantex_seven_arg_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_append_arg_six_valuekey_format_auxiliary:nnn{#1}##1 } } -\cs_new_protected:Npn\__semantex_seven_arg_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_append_arg_six_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 } - \tl_set:Nn\l__semantex_arg_seven_valuekey_auxiliary_temp_tl{} + \cs_set:Npn\l__semantex_append_arg_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 } + \tl_set:Nn\l__semantex_append_arg_six_valuekey_auxiliary_temp_tl{} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } - } \l__semantex_arg_seven_valuekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } ##1##2##3##4##5##6##7##8 + \l__semantex_append_arg_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } + } \l__semantex_append_arg_six_valuekey_auxiliary_temp_tl + \semantex_arg_six_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_six_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { - \l__semantex_arg_seven_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_append_arg_six_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_six_valuekey_auxiliary_temp_tl } \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { - \use:c { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2 + \use:c { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2 } } -\cs_new_protected:Npn\semantex_define_arg_eight_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_pre_append_arg_six_valuekeys:nn#1#2 { - % Add new argument valuekeys with 8 values + % Pre-appends valuekeys with 6 values \clist_map_inline:nn { #2 }{ - \__semantex_eight_arg_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_pre_append_arg_six_valuekey_format_auxiliary:nnn{#1}##1 } } -\cs_new_protected:Npn\__semantex_eight_arg_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_pre_append_arg_six_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 } - \tl_set:Nn\l__semantex_arg_eight_valuekey_auxiliary_temp_tl{} + \cs_set:Npn\l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 } + \tl_set:Nn\l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_tl{} \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } - } \l__semantex_arg_eight_valuekey_auxiliary_temp_tl - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9 + \l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } + } \l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_tl + \semantex_arg_six_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_six_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { - \l__semantex_arg_eight_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_six_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_tl } \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { - \use:c { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2 + \use:c { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2 } } -\cs_new_protected:Npn\semantex_define_arg_nine_valuekeys:nn#1#2 +\cs_new_protected:Npn\semantex_append_arg_seven_valuekeys:nn#1#2 { - % Add new argument valuekeys with 9 values + % Appends valuekeys with 7 values \clist_map_inline:nn { #2 }{ - \__semantex_nine_arg_valuekey_format_auxiliary:nnn{#1}##1 + \__semantex_append_arg_seven_valuekey_format_auxiliary:nnn{#1}##1 } } -\cs_new_protected:Npn\__semantex_nine_arg_valuekey_format_auxiliary:nnn#1#2#3 +\cs_new_protected:Npn\__semantex_append_arg_seven_valuekey_format_auxiliary:nnn#1#2#3 { - \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 } - \tl_set:Nn\l__semantex_arg_nine_valuekey_auxiliary_temp_tl{} - \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n##1 + \cs_set:Npn\l__semantex_append_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 } + \tl_set:Nn\l__semantex_append_arg_seven_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN { - \__semantex_preprocess_arg_singlekey:nnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_arg_nine_valuekey_auxiliary_temp_tl + \l__semantex_append_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } + } \l__semantex_append_arg_seven_valuekey_auxiliary_temp_tl + \semantex_arg_seven_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_seven_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } + { + \exp_not:V\l__semantex_append_arg_seven_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_seven_valuekey_auxiliary_temp_tl } - \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2 + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { - \__semantex_preprocess_arg_valuekey:nnnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_arg_nine_valuekey_auxiliary_temp_tl + \use:c { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2 } - \semantex_keyval_parse:NNo - \l__semantex_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n - \l__semantex_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn - { - \l__semantex_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } - } - \cs_set_protected:cpo { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9 +} + +\cs_new_protected:Npn\semantex_pre_append_arg_seven_valuekeys:nn#1#2 +{ + % Pre-appends valuekeys with 7 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_arg_seven_valuekey_format_auxiliary:nnn{#1}##1 + } +} + +\cs_new_protected:Npn\__semantex_pre_append_arg_seven_valuekey_format_auxiliary:nnn#1#2#3 +{ + \cs_set:Npn\l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 } + \tl_set:Nn\l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN { - \l__semantex_arg_nine_valuekey_auxiliary_temp_tl + \l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } + } \l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_tl + \semantex_arg_seven_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_seven_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } + { + \exp_not:V\l__semantex_pre_append_arg_seven_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_tl } \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 { - \tl_set:Nn \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 } - \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2 + \use:c { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2 } } -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% COMMANDS HANDLING THE PARSE ROUTINE -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\cs_new_protected:Npn\semantex_append_arg_eight_valuekeys:nn#1#2 +{ + % Appends valuekeys with 8 values + \clist_map_inline:nn { #2 }{ + \__semantex_append_arg_eight_valuekey_format_auxiliary:nnn{#1}##1 + } +} -\cs_new_protected:Npn\semantex_parse:n#1 +\cs_new_protected:Npn\__semantex_append_arg_eight_valuekey_format_auxiliary:nnn#1#2#3 { - % This command runs all the keys that the user may have - % stored via the parseoptions key - \exp_args:NNx\cs_set_protected:Nn\l__semantex_parse_temp_cs:n - % \cs_set:Nx gave us ##1 where we wanted #1 + \cs_set:Npn\l__semantex_append_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 } + \tl_set:Nn\l__semantex_append_arg_eight_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_append_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } + } \l__semantex_append_arg_eight_valuekey_auxiliary_temp_tl + \semantex_arg_eight_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_eight_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { - \semantex_data_tl_get_exp_not:nn { #1 } { parseoptions } + \exp_not:V\l__semantex_append_arg_eight_valuekey_auxiliary_original_temp_tl + \exp_not:V\l__semantex_append_arg_eight_valuekey_auxiliary_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2 } - \l__semantex_parse_temp_cs:n { #1 } - \semantex_data_tl_clear:nn { #1 } { parseoptions } } -\cs_new_protected:Npn\semantex_add_to_parse_options:nn#1#2 +\cs_new_protected:Npn\semantex_pre_append_arg_eight_valuekeys:nn#1#2 { - \tl_set:Nn\l__semantex_parseoptions_auxiliary_temp_tl{} - \semantex_preprocess_keys:nN { #2 } \l__semantex_parseoptions_auxiliary_temp_tl - \semantex_add_raw_commands_to_parse_options:no { #1 } { \l__semantex_parseoptions_auxiliary_temp_tl } + % Pre-appends valuekeys with 8 values + \clist_map_inline:nn { #2 }{ + \__semantex_pre_append_arg_eight_valuekey_format_auxiliary:nnn{#1}##1 + } } -\cs_new_protected:Npn\semantex_add_raw_commands_to_parse_options:nn#1#2 +\cs_new_protected:Npn\__semantex_pre_append_arg_eight_valuekey_format_auxiliary:nnn#1#2#3 { - \semantex_data_tl_put_right:nnn { #1 } { parseoptions } { #2 } + \cs_set:Npn\l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 } + \tl_set:Nn\l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_tl{} + \semantex_preprocess_arg_keys:oN + { + \l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } + } \l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_tl + \semantex_arg_eight_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_eight_valuekey_auxiliary_original_temp_tl + \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } + { + \exp_not:V\l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_tl + \exp_not:V\l__semantex_pre_append_arg_eight_valuekey_auxiliary_original_temp_tl + } + \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 + { + \use:c { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2 + } } -\cs_generate_variant:Nn \semantex_add_raw_commands_to_parse_options:nn { no } +%\cs_new_protected:Npn\semantex_append_arg_nine_valuekeys:nn#1#2 +%{ +% % Appends valuekeys with 9 values +% \clist_map_inline:nn { #2 }{ +% \__semantex_append_arg_nine_valuekey_format_auxiliary:nnn{#1}##1 +% } +%} +% +%\cs_new_protected:Npn\__semantex_append_arg_nine_valuekey_format_auxiliary:nnn#1#2#3 +%{ +% \cs_set:Npn\l__semantex_append_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 } +% \tl_set:Nn\l__semantex_append_arg_nine_valuekey_auxiliary_temp_tl{} +% \cs_set:Npn\l__semantex_append_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n##1 +% { +% \__semantex_preprocess_arg_singlekey:nnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_append_arg_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set:Npn\l__semantex_append_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2 +% { +% \__semantex_preprocess_arg_valuekey:nnnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_append_arg_nine_valuekey_auxiliary_temp_tl +% } +% \semantex_keyval_parse:NNo +% \l__semantex_append_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n +% \l__semantex_append_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn +% { +% \l__semantex_append_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } +% } +% \semantex_arg_nine_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_nine_valuekey_auxiliary_original_temp_tl +% \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } +% { +% \exp_not:V\l__semantex_append_arg_nine_valuekey_auxiliary_original_temp_tl +% \exp_not:V\l__semantex_append_arg_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 +% { +% \tl_set:Nn \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 } +% \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2 +% } +%} +% +%\cs_new_protected:Npn\semantex_pre_append_arg_nine_valuekeys:nn#1#2 +%{ +% % Pre-appends valuekeys with 9 values +% \clist_map_inline:nn { #2 }{ +% \__semantex_pre_append_arg_nine_valuekey_format_auxiliary:nnn{#1}##1 +% } +%} +% +%\cs_new_protected:Npn\__semantex_pre_append_arg_nine_valuekey_format_auxiliary:nnn#1#2#3 +%{ +% \cs_set:Npn\l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 } +% \tl_set:Nn\l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_tl{} +% \cs_set:Npn\l__semantex_pre_append_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n##1 +% { +% \__semantex_preprocess_arg_singlekey:nnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_tl +% } +% \cs_set:Npn\l__semantex_pre_append_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2 +% { +% \__semantex_preprocess_arg_valuekey:nnnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_tl +% } +% \semantex_keyval_parse:NNo +% \l__semantex_pre_append_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n +% \l__semantex_pre_append_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn +% { +% \l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } +% } +% \semantex_arg_nine_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_nine_valuekey_auxiliary_original_temp_tl +% \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } +% { +% \exp_not:V\l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_tl +% \exp_not:V\l__semantex_pre_append_arg_nine_valuekey_auxiliary_original_temp_tl +% } +% \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2 +% { +% \tl_set:Nn \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 } +% \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2 +% } +%} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -5001,16 +6717,29 @@ { \tl_set:Nn\l__semantex_output_options_auxiliary_temp_tl{} \semantex_preprocess_keys:nN { #2 } \l__semantex_output_options_auxiliary_temp_tl - \semantex_add_raw_commands_to_output_options:no { #1 } { \l__semantex_output_options_auxiliary_temp_tl } + \semantex_add_raw_code_to_output_options:no { #1 } { \l__semantex_output_options_auxiliary_temp_tl } +} + +\cs_new_protected:Npn\semantex_add_raw_code_to_output_options:nn#1#2 +{ + \semantex_data_tl_put_right:nnn { #1 } { output~options } { #2 } } -\cs_new_protected:Npn\semantex_add_raw_commands_to_output_options:nn#1#2 +\cs_generate_variant:Nn \semantex_add_raw_code_to_output_options:nn { no } + +\cs_new_protected:Npn\semantex_add_to_the_left_of_output_options:nn#1#2 { - \semantex_data_tl_put_right:nnn { #1 } { outputoptions } { #2 } + \tl_set:Nn\l__semantex_left_of_output_options_auxiliary_temp_tl{} + \semantex_preprocess_keys:nN { #2 } \l__semantex_left_of_output_options_auxiliary_temp_tl + \semantex_add_raw_code_to_the_left_of_output_options:no { #1 } { \l__semantex_left_of_output_options_auxiliary_temp_tl } } -\cs_generate_variant:Nn \semantex_add_raw_commands_to_output_options:nn { no } +\cs_new_protected:Npn\semantex_add_raw_code_to_the_left_of_output_options:nn#1#2 +{ + \semantex_data_tl_put_left:nnn { #1 } { output~options } { #2 } +} +\cs_generate_variant:Nn \semantex_add_raw_code_to_the_left_of_output_options:nn { no } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -5229,7 +6958,7 @@ \msg_new:nnnn { semantex } { created_a_SemantexBaseObject } { Never~create~objects~of~class~\token_to_str:N\SemantexBaseObject;~create~a~new~class~yourself~instead.~You~created~the~object~#1 on~line~\msg_line_number: } {} -\msg_new:nnnn { semantex } { SemantexThis_in_input_stream } { The~command~\token_to_str:N\SemantexThis~was~found~outside~a~class~or~object~on~line~\msg_line_number:;~did~you~forget~to~use~setkeysx={...}? } {} +\msg_new:nnnn { semantex } { SemantexThis_in_input_stream } { The~command~\token_to_str:N\SemantexThis~was~found~outside~a~class~or~object~on~line~\msg_line_number:;~did~you~forget~to~use~set~keys~x={...}? } {} \msg_new:nnnn { semantex } { generic_error } { #2~#1 on~line~\msg_line_number: } {} @@ -5307,11 +7036,11 @@ \semantex_define_valuekeys:nn { \semantex_class_to_register:N \SemantexBaseObject } { - {definekeys[1]}{execute={ \semantex_define_valuekeys:nn { ##1 } { #1 } }}, + {define~keys[1]}{execute={ \semantex_define_valuekeys:nn { ##1 } { #1 } }}, } \semantex_new_simple_class:Nw \SemantexBaseObject [ - definekeys[1]={ + define~keys[1]={ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % THE MOST BASIC KEYS, INCLUDING PROGRAMMING KEYS @@ -5321,121 +7050,205 @@ % Yes, this really does make sense % -- check how \semantex_define_valuekeys:nn was defined % Keys for setting up the keyval interface - {definekeys}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } }, - {definekeys[0]}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } }, - {definekeys[{0}]}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } }, - {definekeys[{1}]}{ execute={ \semantex_define_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[2]}{ execute={ \semantex_define_two_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[{2}]}{ execute={ \semantex_define_two_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[3]}{ execute={ \semantex_define_three_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[{3}]}{ execute={ \semantex_define_three_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[4]}{ execute={ \semantex_define_four_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[{4}]}{ execute={ \semantex_define_four_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[5]}{ execute={ \semantex_define_five_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[{5}]}{ execute={ \semantex_define_five_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[6]}{ execute={ \semantex_define_six_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[{6}]}{ execute={ \semantex_define_six_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[7]}{ execute={ \semantex_define_seven_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[{7}]}{ execute={ \semantex_define_seven_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[8]}{ execute={ \semantex_define_eight_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[{8}]}{ execute={ \semantex_define_eight_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[9]}{ execute={ \semantex_define_nine_valuekeys:nn { ##1 } { #1 } } }, - {definekeys[{9}]}{ execute={ \semantex_define_nine_valuekeys:nn { ##1 } { #1 } } }, - {removekey}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } }, - {removekey[0]}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } }, - {removekey[{0}]}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } }, - {removekey[1]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[{1}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[2]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[{2}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[3]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[{3}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[4]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[{5}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[6]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[{6}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[7]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[{7}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[8]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[{8}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[9]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, - {removekey[{9}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {define~keys}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } }, + {define~keys[0]}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } }, + {define~keys[{0}]}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } }, + {define~keys[{1}]}{ execute={ \semantex_define_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[2]}{ execute={ \semantex_define_two_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[{2}]}{ execute={ \semantex_define_two_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[3]}{ execute={ \semantex_define_three_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[{3}]}{ execute={ \semantex_define_three_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[4]}{ execute={ \semantex_define_four_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[{4}]}{ execute={ \semantex_define_four_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[5]}{ execute={ \semantex_define_five_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[{5}]}{ execute={ \semantex_define_five_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[6]}{ execute={ \semantex_define_six_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[{6}]}{ execute={ \semantex_define_six_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[7]}{ execute={ \semantex_define_seven_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[{7}]}{ execute={ \semantex_define_seven_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[8]}{ execute={ \semantex_define_eight_valuekeys:nn { ##1 } { #1 } } }, + {define~keys[{8}]}{ execute={ \semantex_define_eight_valuekeys:nn { ##1 } { #1 } } }, +% {define~keys[9]}{ execute={ \semantex_define_nine_valuekeys:nn { ##1 } { #1 } } }, +% {define~keys[{9}]}{ execute={ \semantex_define_nine_valuekeys:nn { ##1 } { #1 } } }, + {append~keys}{ execute={ \semantex_append_singlekeys:nn { ##1 } { #1 } } }, + {append~keys[0]}{ execute={ \semantex_append_singlekeys:nn { ##1 } { #1 } } }, + {append~keys[{0}]}{ execute={ \semantex_append_singlekeys:nn { ##1 } { #1 } } }, + {append~keys[1]}{ execute={ \semantex_append_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[{1}]}{ execute={ \semantex_append_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[2]}{ execute={ \semantex_append_two_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[{2}]}{ execute={ \semantex_append_two_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[3]}{ execute={ \semantex_append_three_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[{3}]}{ execute={ \semantex_append_three_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[4]}{ execute={ \semantex_append_four_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[{4}]}{ execute={ \semantex_append_four_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[5]}{ execute={ \semantex_append_five_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[{5}]}{ execute={ \semantex_append_five_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[6]}{ execute={ \semantex_append_six_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[{6}]}{ execute={ \semantex_append_six_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[7]}{ execute={ \semantex_append_seven_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[{7}]}{ execute={ \semantex_append_seven_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[8]}{ execute={ \semantex_append_eight_valuekeys:nn { ##1 } { #1 } } }, + {append~keys[{8}]}{ execute={ \semantex_append_eight_valuekeys:nn { ##1 } { #1 } } }, +% {append~keys[9]}{ execute={ \semantex_append_nine_valuekeys:nn { ##1 } { #1 } } }, +% {append~keys[{9}]}{ execute={ \semantex_append_nine_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys}{ execute={ \semantex_pre_append_singlekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[0]}{ execute={ \semantex_pre_append_singlekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{0}]}{ execute={ \semantex_pre_append_singlekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[1]}{ execute={ \semantex_pre_append_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{1}]}{ execute={ \semantex_pre_append_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[2]}{ execute={ \semantex_pre_append_two_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{2}]}{ execute={ \semantex_pre_append_two_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[3]}{ execute={ \semantex_pre_append_three_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{3}]}{ execute={ \semantex_pre_append_three_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[4]}{ execute={ \semantex_pre_append_four_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{4}]}{ execute={ \semantex_pre_append_four_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[5]}{ execute={ \semantex_pre_append_five_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{5}]}{ execute={ \semantex_pre_append_five_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[6]}{ execute={ \semantex_pre_append_six_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{6}]}{ execute={ \semantex_pre_append_six_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[7]}{ execute={ \semantex_pre_append_seven_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{7}]}{ execute={ \semantex_pre_append_seven_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[8]}{ execute={ \semantex_pre_append_eight_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~keys[{8}]}{ execute={ \semantex_pre_append_eight_valuekeys:nn { ##1 } { #1 } } }, +% {pre~append~keys[9]}{ execute={ \semantex_pre_append_nine_valuekeys:nn { ##1 } { #1 } } }, +% {pre~append~keys[{9}]}{ execute={ \semantex_pre_append_nine_valuekeys:nn { ##1 } { #1 } } }, + {remove~key}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } }, + {remove~key[0]}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } }, + {remove~key[{0}]}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } }, + {remove~key[1]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[{1}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[2]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[{2}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[3]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[{3}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[4]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[{5}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[6]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[{6}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[7]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[{7}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[8]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, + {remove~key[{8}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, +% {remove~key[9]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, +% {remove~key[{9}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } }, % Keys for setting up the argument keyval interface: - {defineargkeys}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } }, - {defineargkeys[0]}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{0}]}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } }, - {defineargkeys[1]}{ execute={ \semantex_define_arg_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{1}]}{ execute={ \semantex_define_arg_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[2]}{ execute={ \semantex_define_arg_two_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{2}]}{ execute={ \semantex_define_arg_two_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[3]}{ execute={ \semantex_define_arg_three_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{3}]}{ execute={ \semantex_define_arg_three_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[4]}{ execute={ \semantex_define_arg_four_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{4}]}{ execute={ \semantex_define_arg_four_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[5]}{ execute={ \semantex_define_arg_five_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{5}]}{ execute={ \semantex_define_arg_five_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[6]}{ execute={ \semantex_define_arg_six_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{6}]}{ execute={ \semantex_define_arg_six_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[7]}{ execute={ \semantex_define_arg_seven_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{7}]}{ execute={ \semantex_define_arg_seven_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[8]}{ execute={ \semantex_define_arg_eight_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{8}]}{ execute={ \semantex_define_arg_eight_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[9]}{ execute={ \semantex_define_arg_nine_valuekeys:nn { ##1 } { #1 } } }, - {defineargkeys[{9}]}{ execute={ \semantex_define_arg_nine_valuekeys:nn { ##1 } { #1 } } }, - {removeargkey}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } }, - {removeargkey[0]}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } }, - {removeargkey[{0}]}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } }, - {removeargkey[1]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[{1}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[2]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[{2}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[3]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[{3}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[4]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[{5}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[6]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[{6}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[7]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[{7}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[8]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[{8}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[9]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, - {removeargkey[{9}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {define~arg~keys}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[0]}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{0}]}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[1]}{ execute={ \semantex_define_arg_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{1}]}{ execute={ \semantex_define_arg_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[2]}{ execute={ \semantex_define_arg_two_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{2}]}{ execute={ \semantex_define_arg_two_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[3]}{ execute={ \semantex_define_arg_three_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{3}]}{ execute={ \semantex_define_arg_three_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[4]}{ execute={ \semantex_define_arg_four_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{4}]}{ execute={ \semantex_define_arg_four_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[5]}{ execute={ \semantex_define_arg_five_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{5}]}{ execute={ \semantex_define_arg_five_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[6]}{ execute={ \semantex_define_arg_six_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{6}]}{ execute={ \semantex_define_arg_six_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[7]}{ execute={ \semantex_define_arg_seven_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{7}]}{ execute={ \semantex_define_arg_seven_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[8]}{ execute={ \semantex_define_arg_eight_valuekeys:nn { ##1 } { #1 } } }, + {define~arg~keys[{8}]}{ execute={ \semantex_define_arg_eight_valuekeys:nn { ##1 } { #1 } } }, +% {define~arg~keys[9]}{ execute={ \semantex_define_arg_nine_valuekeys:nn { ##1 } { #1 } } }, +% {define~arg~keys[{9}]}{ execute={ \semantex_define_arg_nine_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys}{ execute={ \semantex_append_arg_singlekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[0]}{ execute={ \semantex_append_arg_singlekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{0}]}{ execute={ \semantex_append_arg_singlekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[1]}{ execute={ \semantex_append_arg_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{1}]}{ execute={ \semantex_append_arg_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[2]}{ execute={ \semantex_append_arg_two_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{2}]}{ execute={ \semantex_append_arg_two_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[3]}{ execute={ \semantex_append_arg_three_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{3}]}{ execute={ \semantex_append_arg_three_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[4]}{ execute={ \semantex_append_arg_four_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{4}]}{ execute={ \semantex_append_arg_four_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[5]}{ execute={ \semantex_append_arg_five_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{5}]}{ execute={ \semantex_append_arg_five_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[6]}{ execute={ \semantex_append_arg_six_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{6}]}{ execute={ \semantex_append_arg_six_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[7]}{ execute={ \semantex_append_arg_seven_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{7}]}{ execute={ \semantex_append_arg_seven_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[8]}{ execute={ \semantex_append_arg_eight_valuekeys:nn { ##1 } { #1 } } }, + {append~arg~keys[{8}]}{ execute={ \semantex_append_arg_eight_valuekeys:nn { ##1 } { #1 } } }, +% {append~arg~keys[9]}{ execute={ \semantex_append_arg_nine_valuekeys:nn { ##1 } { #1 } } }, +% {append~arg~keys[{9}]}{ execute={ \semantex_append_arg_nine_valuekeys:nn { ##1 } { #1 } } },% + {pre~append~arg~keys}{ execute={ \semantex_pre_append_arg_singlekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[0]}{ execute={ \semantex_pre_append_arg_singlekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{0}]}{ execute={ \semantex_pre_append_arg_singlekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[1]}{ execute={ \semantex_pre_append_arg_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{1}]}{ execute={ \semantex_pre_append_arg_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[2]}{ execute={ \semantex_pre_append_arg_two_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{2}]}{ execute={ \semantex_pre_append_arg_two_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[3]}{ execute={ \semantex_pre_append_arg_three_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{3}]}{ execute={ \semantex_pre_append_arg_three_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[4]}{ execute={ \semantex_pre_append_arg_four_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{4}]}{ execute={ \semantex_pre_append_arg_four_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[5]}{ execute={ \semantex_pre_append_arg_five_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{5}]}{ execute={ \semantex_pre_append_arg_five_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[6]}{ execute={ \semantex_pre_append_arg_six_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{6}]}{ execute={ \semantex_pre_append_arg_six_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[7]}{ execute={ \semantex_pre_append_arg_seven_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{7}]}{ execute={ \semantex_pre_append_arg_seven_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[8]}{ execute={ \semantex_pre_append_arg_eight_valuekeys:nn { ##1 } { #1 } } }, + {pre~append~arg~keys[{8}]}{ execute={ \semantex_pre_append_arg_eight_valuekeys:nn { ##1 } { #1 } } }, +% {pre~append~arg~keys[9]}{ execute={ \semantex_pre_append_arg_nine_valuekeys:nn { ##1 } { #1 } } }, +% {pre~append~arg~keys[{9}]}{ execute={ \semantex_pre_append_arg_nine_valuekeys:nn { ##1 } { #1 } } }, + {remove~arg~key}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } }, + {remove~arg~key[0]}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } }, + {remove~arg~key[{0}]}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } }, + {remove~arg~key[1]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[{1}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[2]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[{2}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[3]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[{3}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[4]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[{5}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[6]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[{6}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[7]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[{7}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[8]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, + {remove~arg~key[{8}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, +% {remove~arg~key[9]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, +% {remove~arg~key[{9}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } }, % Keys for programming: - {dataprovide}{ execute={ \semantex_data_tl_provide:nn { ##1 } { \tl_trim_spaces:n { #1 } } } }, - {dataclear}{ + {data~provide}{ execute={ \semantex_data_tl_provide:nn { ##1 } { \tl_trim_spaces:n { #1 } } } }, + {data~clear}{ execute={ \semantex_data_tl_clear:nn { ##1 } { \tl_trim_spaces:n { #1 } } }, }, - {keysset}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } }, - {setkeys}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } }, - {keyssetx}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } }, - {setkeysx}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } }, - {boolprovide}{ + {keys~set}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } }, + {set~keys}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } }, + {keys~set~x}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } }, + {set~keys~x}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } }, + {bool~provide}{ execute={ \semantex_data_bool_provide:nn { ##1 } { \tl_trim_spaces:n { #1 } } }, }, - {boolsettrue}{ + {bool~set~true}{ execute={ \semantex_data_bool_set_true:nn { ##1 } { \tl_trim_spaces:n { #1 } } }, }, - {boolsetfalse}{ + {bool~set~false}{ execute={ \semantex_data_bool_set_false:nn { ##1 } { \tl_trim_spaces:n { #1 } } }, }, - {intprovide}{ + {int~provide}{ execute={ \semantex_data_int_provide:nn { ##1 } { \tl_trim_spaces:n { #1 } } }, }, - {intclear}{ + {int~clear}{ execute={ \semantex_data_int_clear:nn { ##1 } { \tl_trim_spaces:n { #1 } } }, }, - {intincr}{ + {int~incr}{ execute={ \semantex_data_int_incr:nn { ##1 } { \tl_trim_spaces:n { #1 } } }, @@ -5446,52 +7259,52 @@ }, }, }, - definekeys[2]={ - {dataset}{ + define~keys[2]={ + {data~set}{ execute={ \semantex_data_tl_set:nnn { ##1 } { \tl_trim_spaces:n { #1 } } { #2 } }, }, - {datasetx}{ + {data~set~x}{ execute={ \semantex_data_tl_set:nnx { ##1 } { \tl_trim_spaces:n { #1 } } { #2 } }, }, - {dataputright}{ + {data~put~right}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { \tl_trim_spaces:n { #1 } } { #2 } }, }, - {dataputrightx}{ + {data~put~right~x}{ execute={ \semantex_data_tl_put_right:nnx { ##1 } { \tl_trim_spaces:n { #1 } } { #2 } }, }, - {dataputleft}{ + {data~put~left}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { \tl_trim_spaces:n { #1 } } { #2 } }, }, - {dataputleftx}{ + {data~put~left~x}{ execute={ \semantex_data_tl_put_left:nnx { ##1 } { \tl_trim_spaces:n { #1 } } { #2 } }, }, - {ifblankT}{ + {if~blank~T}{ execute={ \tl_if_blank:xTF { #1 } { \semantex_keys_set:nn { ##1 } { #2 } } { } }, }, - {ifblankF}{ + {if~blank~F}{ execute={ \tl_if_blank:xTF { #1 } { } { \semantex_keys_set:nn { ##1 } { #2 } } }, }, - {boolifT}{ + {bool~if~T}{ execute={ \semantex_data_bool_get:nnTF { ##1 } { \tl_trim_spaces:n { #1 } } @@ -5499,7 +7312,7 @@ { } }, }, - {boolifF}{ + {bool~if~F}{ execute={ \semantex_data_bool_get:nnTF { ##1 } { \tl_trim_spaces:n { #1 } } @@ -5507,45 +7320,45 @@ { \semantex_keys_set:nn { ##1 } { #2 } } }, }, - {intset}{ + {int~set}{ execute={ \semantex_data_int_set:nnn { ##1 } { \tl_trim_spaces:n { #1 } } { #2 } }, }, - {ERRORkeyvaluenotfound}{ + {ERROR~key~value~not~found}{ execute={ \semantex_error_key_value_not_found:nnn { ##1 } { #1 } { #2 } }, }, - {ERRORargkeyvaluenotfound}{ + {ERROR~arg~key~value~not~found}{ execute={ \semantex_error_arg_key_value_not_found:nnn { ##1 } { #1 } { #2 } }, }, }, - definekeys[3]={ - {strifeqT}{ + define~keys[3]={ + {str~if~eq~T}{ execute={ \str_if_eq:xxTF { #1 } { #2 } { \semantex_keys_set:nn { ##1 } { #3 } } { } }, }, - {strifeqF}{ + {str~if~eq~F}{ execute={ \str_if_eq:xxTF { #1 } { #2 } { } { \semantex_keys_set:nn { ##1 } { #3 } } }, }, - {ifblankTF}{ + {if~blank~TF}{ execute={ \tl_if_blank:xTF { #1 } { \semantex_keys_set:nn { ##1 } { #2 } } { \semantex_keys_set:nn { ##1 } { #3 } } }, }, - {boolifTF}{ + {bool~if~TF}{ execute={ \semantex_data_bool_get:nnTF { ##1 } { \tl_trim_spaces:n { #1 } } @@ -5553,42 +7366,42 @@ { \semantex_keys_set:nn { ##1 } { #3 } } }, }, - {intifgreaterT}{ + {int~if~greater~T}{ execute={ \int_compare:nNnTF { #1 } > { #2 } { \semantex_keys_set:nn { ##1 } { #3 } } { } }, }, - {intifgreaterF}{ + {int~if~greater~F}{ execute={ \int_compare:nNnTF { #1 } > { #2 } { } { \semantex_keys_set:nn { ##1 } { #3 } } }, }, - {intifeqT}{ + {int~if~eq~T}{ execute={ \int_compare:nNnTF { #1 } = { #2 } { \semantex_keys_set:nn { ##1 } { #3 } } { } }, }, - {intifeqF}{ + {int~if~eq~F}{ execute={ \int_compare:nNnTF { #1 } = { #2 } { } { \semantex_keys_set:nn { ##1 } { #3 } } }, }, - {intiflessT}{ + {int~if~less~T}{ execute={ \int_compare:nNnTF { #1 } < { #2 } { \semantex_keys_set:nn { ##1 } { #3 } } { } }, }, - {intiflessF}{ + {int~if~less~F}{ execute={ \int_compare:nNnTF { #1 } < { #2 } { } @@ -5596,29 +7409,29 @@ }, }, }, - definekeys[4]={ - {strifeqTF}{ + define~keys[4]={ + {str~if~eq~TF}{ execute={ \str_if_eq:xxTF { #1 } { #2 } { \semantex_keys_set:nn { ##1 } { #3 } } { \semantex_keys_set:nn { ##1 } { #4 } } }, }, - {intifgreaterTF}{ + {int~if~greater~TF}{ execute={ \int_compare:nNnTF { #1 } > { #2 } { \semantex_keys_set:nn { ##1 } { #3 } } { \semantex_keys_set:nn { ##1 } { #4 } } }, }, - {intifeqTF}{ + {int~if~eq~TF}{ execute={ \int_compare:nNnTF { #1 } = { #2 } { \semantex_keys_set:nn { ##1 } { #3 } } { \semantex_keys_set:nn { ##1 } { #4 } } }, }, - {intiflessTF}{ + {int~if~less~TF}{ execute={ \int_compare:nNnTF { #1 } < { #2 } { \semantex_keys_set:nn { ##1 } { #3 } } @@ -5631,1644 +7444,1661 @@ % THE COLLECTION OF SLIGHTLY LESS FUNDAMENTAL KEYS % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - dataprovide=symbol, - boolprovide=uppergrading, - boolsettrue=uppergrading, - boolprovide=output, - dataprovide=outputoptions, - boolprovide=par, - boolsettrue=par, - boolprovide=flexpar, - dataprovide=parseoptions, - dataprovide=mathclass, - boolprovide=leftargument, - dataprovide=heightphantom, - dataprovide=slantingphantom, - execute={ \semantex_data_seq_provide:nn { \semantex_this: } { commands_sequence } }, - definekeys[1]={ + data~provide=symbol, + bool~provide=upper~grading, + bool~set~true=upper~grading, + bool~provide=output, + data~provide=output~options, + bool~provide=par, + bool~set~true=par, + bool~provide=flex~par, + data~provide=math~class, + bool~provide=left~argument, + data~provide=height~phantom, + data~provide=slanting~phantom, + execute={ \semantex_data_seq_provide:nn { \semantex_this: } { commands~sequence } }, + define~keys[1]={ {parent}{ execute={ \semantex_data_parent_set:nn { ##1 } { #1 } } }, {class}{ execute={ \semantex_data_class_set:nn { ##1 } { #1 } } }, {copy}{ execute={ \semantex_data_copy_object:nn { ##1 } { #1 } } }, - {mathclass}{ execute={ \semantex_data_tl_set:nnn { ##1 } { mathclass } { #1 } } }, + {math~class}{ execute={ \semantex_data_tl_set:nnn { ##1 } { math~class } { #1 } } }, {symbol}{ execute={ \semantex_data_tl_set:nnn { ##1 } { symbol } { #1 } - \semantex_data_tl_set:nnn { ##1 } { heightphantom } { #1 } - \semantex_data_tl_set:nnn { ##1 } { slantingphantom } { #1 } + \semantex_data_tl_set:nnn { ##1 } { height~phantom } { #1 } + \semantex_data_tl_set:nnn { ##1 } { slanting~phantom } { #1 } } }, - {symbolputright}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { symbol } { #1 } } }, - {symbolputleft}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { symbol } { #1 } } }, - {heightphantom}{ execute={ \semantex_data_tl_set:nnn { ##1 } { heightphantom } { #1 } } }, - {slantingphantom}{ execute={ \semantex_data_tl_set:nnn { ##1 } { slantingphantom } { #1 } } }, - {parseoptions}{ execute={ \semantex_add_to_parse_options:nn { ##1 } { #1 } } }, - {command}{ execute={ \semantex_data_seq_put_right:nnn { ##1 } { commands_sequence } { #1 } } }, + {symbol~put~right}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { symbol } { #1 } } }, + {symbol~put~left}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { symbol } { #1 } } }, + {height~phantom}{ execute={ \semantex_data_tl_set:nnn { ##1 } { height~phantom } { #1 } } }, + {slanting~phantom}{ execute={ \semantex_data_tl_set:nnn { ##1 } { slanting~phantom } { #1 } } }, + {parse~options}{ append~keys={ {parse~code}{#1} } }, + {pre~parse~options}{ pre~append~keys={ {parse~code}{#1} } }, + {command}{ execute={ \semantex_data_seq_put_right:nnn { ##1 } { commands~sequence } { #1 } } }, {output}{ execute={ \semantex_set_output:nn { ##1 } { #1 } } }, - {outputoptions}{ execute={ \semantex_add_to_output_options:nn { ##1 } { #1 } } }, - {dooutput}{ - strifeqTF={#1}{true} + {output~options}{ execute={ \semantex_add_to_output_options:nn { ##1 } { #1 } } }, + {pre~output~options}{ execute={ \semantex_add_to_the_left_of_output_options:nn { ##1 } { #1 } } }, + {do~output}{ + str~if~eq~TF={#1}{true} { - boolsettrue={output}, + bool~set~true={output}, } { - strifeqTF={#1}{false} + str~if~eq~TF={#1}{false} { - boolsetfalse={output}, + bool~set~false={output}, } { - ERRORkeyvaluenotfound={dooutput}{#1}, + ERROR~key~value~not~found={do~output}{#1}, } }, }, - {gradingposition}{ - strifeqTF={#1}{upper} + {grading~position}{ + str~if~eq~TF={#1}{upper} { - boolsettrue={uppergrading}, + bool~set~true={upper~grading}, } { - strifeqTF={#1}{lower} + str~if~eq~TF={#1}{lower} { - boolsetfalse={uppergrading}, + bool~set~false={upper~grading}, } { - ERRORkeyvaluenotfound={gradingposition}{#1}, + ERROR~key~value~not~found={grading~position}{#1}, }, }, }, - {gradingpos}{ - strifeqTF={#1}{upper} + {grading~pos}{ + str~if~eq~TF={#1}{upper} { - boolsettrue={uppergrading}, + bool~set~true={upper~grading}, } { - strifeqTF={#1}{lower} + str~if~eq~TF={#1}{lower} { - boolsetfalse={uppergrading}, + bool~set~false={upper~grading}, } { - ERRORkeyvaluenotfound={gradingpos}{#1}, + ERROR~key~value~not~found={grading~pos}{#1}, }, }, }, - {default}{sepi={#1}}, - {degreedefault}{sepd={#1}}, + {default}{sep~i={#1}}, + {degree~default}{sep~d={#1}}, {arg}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, - {*withothersep}{ - d*withothersep={#1}, + {*~with~other~sep}{ + d~*~with~other~sep={#1}, }, - {**withothersep}{ - d**withothersep={#1}, + {**~with~other~sep}{ + d~**~with~other~sep={#1}, }, }, output=\SemantexBaseObject, - definekeys={ + define~keys={ {return}{ execute={ \semantex_return:n { ##1 } } }, - {innerreturn}{ execute={ \semantex_inner_return:n { ##1 } } }, - {rightreturn}{ execute={ \semantex_right_return:n { ##1 } } }, - {leftreturn}{ execute={ \semantex_left_return:n { ##1 } } }, - {rightindexreturn}{ execute={ \semantex_right_index_return:n { ##1 } } }, - {leftindexreturn}{ execute={ \semantex_left_index_return:n { ##1 } } }, - {indexreturn}{ leftindexreturn, rightindexreturn }, - {rightargreturn}{ execute={ \semantex_right_arg_return:n { ##1 } } }, - {leftargreturn}{ execute={ \semantex_left_arg_return:n { ##1 } } }, - {argreturn}{ execute={ \semantex_arg_return:n { ##1 } } }, - {parse}{ execute={ \semantex_parse:n { ##1 } } }, - {clearcommand}{ execute={ \semantex_data_seq_clear:nn { ##1 } { commands_sequence } } }, - {dots}{sepidots}, + {inner~return}{ execute={ \semantex_inner_return:n { ##1 } } }, + {right~return}{ execute={ \semantex_right_return:n { ##1 } } }, + {left~return}{ execute={ \semantex_left_return:n { ##1 } } }, + {right~index~return}{ execute={ \semantex_right_index_return:n { ##1 } } }, + {left~index~return}{ execute={ \semantex_left_index_return:n { ##1 } } }, + {index~return}{ left~index~return, right~index~return }, + {right~arg~return}{ execute={ \semantex_right_arg_return:n { ##1 } } }, + {left~arg~return}{ execute={ \semantex_left_arg_return:n { ##1 } } }, + {arg~return}{ execute={ \semantex_arg_return:n { ##1 } } }, + {parse}{ parse~code, execute={ \semantex_clear_singlekey:nn { ##1 } { parse~code } } }, + {parse~code}{ }, + {clear~command}{ execute={ \semantex_data_seq_clear:nn { ##1 } { commands~sequence } } }, + {dots}{sep~i~dots}, {...}{dots}, - {slot}{sepislot}, + {slot}{sep~i~slot}, {-}{slot}, - {*}{sepd*}, - {**}{sepd**}, + {*}{sep~d~*}, + {**}{sep~d~**}, }, % The "spar" routine: - definekeys={ + define~keys={ {spar}{spar=}, }, - definekeys[1]={ + define~keys[1]={ {spar}{ execute={ \semantex_spar:nn { ##1 } { #1 } } }, - {sparsize}{ execute={ \semantex_data_tl_set:nnn { ##1 } { sparsize } { #1 } } }, - {leftspar}{ execute={ \semantex_data_tl_set:nnn { ##1 } { leftspar } { #1 } } }, - {rightspar}{ execute={ \semantex_data_tl_set:nnn { ##1 } { rightspar } { #1 } } }, + {spar~size}{ execute={ \semantex_data_tl_set:nnn { ##1 } { spar~size } { #1 } } }, + {left~spar}{ execute={ \semantex_data_tl_set:nnn { ##1 } { left~spar } { #1 } } }, + {right~spar}{ execute={ \semantex_data_tl_set:nnn { ##1 } { right~spar } { #1 } } }, }, - definekeys[2]={ - {otherspar}{ execute={ \semantex_other_spar:nnn { ##1 } { #1 } { #2 } } }, + define~keys[2]={ + {other~spar}{ execute={ \semantex_other_spar:nnn { ##1 } { #1 } { #2 } } }, }, - definekeys[3]={ - {Otherspar}{ execute={ \semantex_other_spar_with_size:nnnn { ##1 } { #1 } { #2 } { #3 } } }, + define~keys[3]={ + {Other~spar}{ execute={ \semantex_other_spar_with_size:nnnn { ##1 } { #1 } { #2 } { #3 } } }, }, - leftspar=(, - rightspar=), - sparsize=normal, + left~spar=(, + right~spar=), + spar~size=normal, % The argument: - dataprovide=arg, - boolprovide=nextargwithsep, - intprovide=numberofarguments, - dataprovide=prearg, - dataprovide=postarg, - definekeys={ - {argdots}{setargkeys={...}}, - {arg...}{setargkeys={dots}}, - {commaargdots}{setargkeys={commadots}}, - {commaarg...}{setargkeys={comma...}}, - {argslot}{setargkeys={slot}}, - {arg-}{setargkeys={-}}, - {commaargslot}{setargkeys={commaslot}}, - {commaarg-}{setargkeys={comma-}}, - {cleararg}{ execute={ + data~provide=arg, + bool~provide=next~arg~with~sep, + int~provide=number~of~arguments, + data~provide=pre~arg, + data~provide=post~arg, + define~keys={ + {arg~dots}{set~arg~keys={...}}, + {arg~...}{set~arg~keys={dots}}, + {comma~arg~dots}{set~arg~keys={comma~dots}}, + {comma~arg~...}{set~arg~keys={comma~...}}, + {arg~slot}{set~arg~keys={slot}}, + {arg-}{set~arg~keys={-}}, + {comma~arg~slot}{set~arg~keys={comma~slot}}, + {comma~arg~-}{set~arg~keys={comma~-}}, + {clear~arg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { arg } - \semantex_data_int_clear:nn { ##1 } { numberofarguments } - \semantex_data_bool_set_false:nn { ##1 } { nextargwithsep } + \semantex_data_int_clear:nn { ##1 } { number~of~arguments } + \semantex_data_bool_set_false:nn { ##1 } { next~arg~with~sep } } }, - {clearprearg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { prearg } } }, - {clearpostarg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { postarg } } }, + {clear~pre~arg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { pre~arg } } }, + {clear~post~arg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { post~arg } } }, }, - definekeys[1]={ - {setargkeys}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } }, - {argkeysset}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } }, - {setargkeysx}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } }, - {argkeyssetx}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } }, - {setargsinglekeys}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, - {argsinglekeysset}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, - {setargsinglekeysx}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } }, - {argsinglekeyssetx}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } }, - {setoneargsinglekey}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } }, - {oneargsinglekeyset}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } }, - {setoneargsinglekeyx}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } }, - {oneargsinglekeysetx}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } }, - {setargwithoutkeyval}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } }, - {argwithoutkeyvalset}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } }, - {setargwithoutkeyvalx}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } }, - {argwithoutkeyvalsetx}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } }, - {prearg}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { prearg } { #1 } } }, - {postarg}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { postarg } { #1 } } }, - {setargsep}{ execute={ \semantex_data_tl_set:nnn { ##1 } { argsep } { #1 } } }, - {setargslot}{ execute={ \semantex_data_tl_set:nnn { ##1 } { argslot } { #1 } } }, - {setargdots}{ execute={ \semantex_data_tl_set:nnn { ##1 } { argdots } { #1 } } }, - {argkeyval}{ - strifeqTF={#1}{true} - { - definekeys[1]={ + define~keys[1]={ + {set~arg~keys}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } }, + {arg~keys~set}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } }, + {set~arg~keys~x}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } }, + {arg~keys~set~x}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } }, + {set~arg~single~keys}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, + {arg~single~keys~set}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, + {set~arg~single~keys~x}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } }, + {arg~single~keys~set~x}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } }, + {set~one~arg~single~key}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } }, + {one~arg~single~key~set}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } }, + {set~one~arg~single~key~x}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } }, + {one~arg~single~key~set~x}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } }, + {set~arg~without~keyval}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } }, + {arg~without~keyval~set}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } }, + {set~arg~without~keyval~x}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } }, + {arg~without~keyval~set~x}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } }, + {pre~arg}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { pre~arg } { #1 } } }, + {post~arg}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { post~arg } { #1 } } }, + {set~arg~sep}{ execute={ \semantex_data_tl_set:nnn { ##1 } { arg~sep } { #1 } } }, + {set~arg~slot}{ execute={ \semantex_data_tl_set:nnn { ##1 } { arg~slot } { #1 } } }, + {set~arg~dots}{ execute={ \semantex_data_tl_set:nnn { ##1 } { arg~dots } { #1 } } }, + {arg~keyval}{ + str~if~eq~TF={#1}{true} + { + define~keys[1]={ {arg}{execute={ \semantex_arg_keys_set:nn { ########1 } { ####1 } }}, }, } { - strifeqTF={#1}{false} + str~if~eq~TF={#1}{false} { - definekeys[1]={ + define~keys[1]={ {arg}{ execute={ \semantex_arg_without_keyval:nn { ########1 } { ####1 } } }, }, } { - strifeqTF={#1}{singlekeys} + str~if~eq~TF={#1}{single~keys} { - definekeys[1]={ + define~keys[1]={ {arg}{ execute={ \semantex_arg_singlekeys_set:nn { ########1 } { ####1 } } }, }, } { - strifeqTF={#1}{onesinglekey} + str~if~eq~TF={#1}{one~single~key} { - definekeys[1]={ + define~keys[1]={ {arg}{ execute={ \semantex_arg_singlekey:nn { ########1 } { ####1 } } }, }, } { - ERRORkeyvaluenotfound={argkeyval}{#1}, + ERROR~key~value~not~found={arg~keyval}{#1}, }, }, }, }, }, - {argposition}{ - strifeqTF={#1}{left} + {arg~position}{ + str~if~eq~TF={#1}{left} + { + bool~set~true=left~argument, + } + { + str~if~eq~TF={#1}{right} + { + bool~set~false=left~argument, + } + { + ERROR~key~value~not~found={arg~position}{#1}, + }, + }, + }, + {arg~pos}{ + str~if~eq~TF={#1}{left} { - boolsettrue={leftargument}, + bool~set~true=left~argument, } { - strifeqTF={#1}{right} + str~if~eq~TF={#1}{right} { - boolsetfalse={leftargument}, + bool~set~false=left~argument, } { - ERRORkeyvaluenotfound={argposition}{#1}, + ERROR~key~value~not~found={arg~pos}{#1}, }, }, }, - {nextargwithsep}{ - strifeqTF={#1}{true} + {next~arg~with~sep}{ + str~if~eq~TF={#1}{true} { - boolsettrue={nextargwithsep}, + bool~set~true=next~arg~with~sep, } { - strifeqTF={#1}{false} + str~if~eq~TF={#1}{false} { - boolsetfalse={nextargwithsep}, + bool~set~false=next~arg~with~sep, } { - ERRORkeyvaluenotfound={nextargwithsep}{#1}, + ERROR~key~value~not~found={next~arg~with~sep}{#1}, }, }, }, - {separg}{setargkeys={sep={#1}}}, - {commaarg}{setargkeys={comma={#1}}}, - {argdotswithothersep}{setargkeys={dotswithothersep={#1}}}, - {arg...withothersep}{setargkeys={dotswithothersep={#1}}}, - {argslotwithothersep}{setargkeys={slotwithothersep={#1}}}, - {arg-withothersep}{setargkeys={slotwithothersep={#1}}}, + {sep~arg}{set~arg~keys={sep={#1}}}, + {comma~arg}{set~arg~keys={comma={#1}}}, + {arg~dots~with~other~sep}{set~arg~keys={dots~with~other~sep={#1}}}, + {arg~...~with~other~sep}{set~arg~keys={dots~with~other~sep={#1}}}, + {arg~slot~with~other~sep}{set~arg~keys={slot~with~other~sep={#1}}}, + {arg~-~with~other~sep}{set~arg~keys={slot~with~other~sep={#1}}}, }, - definekeys[2]={ - {argwithothersep}{setargkeys={othersep={#1}{#2}}}, + define~keys[2]={ + {arg~with~other~sep}{set~arg~keys={other~sep={#1}{#2}}}, }, - setargsep={,}, - setargslot={ {-} }, - setargdots={ \dots }, + set~arg~sep={,}, + set~arg~slot={ {-} }, + set~arg~dots={ \dots }, % Parentheses: - definekeys={ - {par}{usepar=true}, - {neverpar}{usepar=never}, - {nopar}{usepar=false}, + define~keys={ + {par}{use~par=true}, + {never~par}{use~par=never}, + {no~par}{use~par=false}, }, - definekeys[1]={ + define~keys[1]={ {par}{ execute={ - \semantex_data_tl_set:nnn { ##1 } { parsize } { #1 } + \semantex_data_tl_set:nnn { ##1 } { par~size } { #1 } \semantex_data_bool_set_true:nn { ##1 } { par } }, }, - {parsize}{ + {par~size}{ execute={ - \semantex_data_tl_set:nnn { ##1 } { parsize } { #1 } + \semantex_data_tl_set:nnn { ##1 } { par~size } { #1 } }, }, - {leftpar}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { leftpar } { #1 } }, + {left~par}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { left~par } { #1 } }, }, - {rightpar}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { rightpar } { #1 } }, + {right~par}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { right~par } { #1 } }, }, - {usepar}{ - strifeqTF={#1}{true} + {use~par}{ + str~if~eq~TF={#1}{true} { - boolsettrue={par}, - boolsetfalse={flexpar}, + bool~set~true=par, + bool~set~false=flex~par, } { - strifeqTF={#1}{false} + str~if~eq~TF={#1}{false} { - boolsetfalse={par}, - boolsettrue={flexpar}, + bool~set~false=par, + bool~set~true=flex~par, } { - strifeqTF={#1}{never} + str~if~eq~TF={#1}{never} { - boolsetfalse={par}, - boolsetfalse={flexpar}, + bool~set~false=par, + bool~set~false=flex~par, } { - ERRORkeyvaluenotfound={usepar}{#1}, + ERROR~key~value~not~found={use~par}{#1}, }, }, }, }, }, - leftpar=(, - rightpar=), + left~par=(, + right~par=), par=normal, % Accents, primes, bullets, etc.: - definekeys={ - {smash}{command=\smash}, - {prime}{upper={\prime},nextupperwithsep=false}, + define~keys={ + {smash}{return,command=\smash}, + {prime}{upper={\prime},next~upper~with~sep=false}, {'}{prime}, {''}{prime,prime}, {'''}{prime,prime,prime}, }, % Upper indices: - dataprovide=upper, - boolprovide=nextupperwithsep, - intprovide=numberofupperindices, - dataprovide=preupper, - dataprovide=postupper, - definekeys={ - {upperslot}{ setkeysx={ upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } } }, - {upper-}{upperslot}, - {sepupperslot}{ setkeysx={ sepupper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } } }, - {sepupper-}{sepupperslot}, - {commaupperslot}{ setkeysx={ commaupper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } } }, - {commaupper-}{commaupperslot}, - {upperdots}{ setkeysx={ upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } } }, - {upper...}{upperdots}, - {sepupperdots}{ setkeysx={ sepupper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } } }, - {sepupper...}{sepupperdots}, - {commaupperdots}{ setkeysx={ commaupper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } } }, - {commaupper...}{commaupperdots}, - {clearupper}{ + data~provide=upper, + bool~provide=next~upper~with~sep, + int~provide=number~of~upper~indices, + data~provide=pre~upper, + data~provide=post~upper, + define~keys={ + {upper~slot}{ set~keys~x={ upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } } }, + {upper~-}{upper~slot}, + {sep~upper~slot}{ set~keys~x={ sep~upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } } }, + {sep~upper~-}{sep~upper~slot}, + {comma~upper~slot}{ set~keys~x={ comma~upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } } }, + {comma~upper~-}{comma~upper~slot}, + {upper~dots}{ set~keys~x={ upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } } }, + {upper~...}{upper~dots}, + {sep~upper~dots}{ set~keys~x={ sep~upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } } }, + {sep~upper~...}{sep~upper~dots}, + {comma~upper~dots}{ set~keys~x={ comma~upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } } }, + {comma~upper~...}{comma~upper~dots}, + {clear~upper}{ execute={ \semantex_data_tl_clear:nn { ##1 } { upper } - \semantex_data_bool_set_false:nn { ##1 } { nextupperwithsep } - \semantex_data_int_clear:nn { ##1 } { numberofupperindices } + \semantex_data_bool_set_false:nn { ##1 } { next~upper~with~sep } + \semantex_data_int_clear:nn { ##1 } { number~of~upper~indices } }, }, - {clearpreupper}{ - execute={ \semantex_data_tl_clear:nn { ##1 } { preupper } }, + {clear~pre~upper}{ + execute={ \semantex_data_tl_clear:nn { ##1 } { pre~upper } }, }, - {clearpostupper}{ - execute={ \semantex_data_tl_clear:nn { ##1 } { postupper } }, + {clear~post~upper}{ + execute={ \semantex_data_tl_clear:nn { ##1 } { post~upper } }, }, - {upper*}{upper=\SemantexBullet}, - {upper**}{upper=\SemantexDoubleBullet}, - {sepupper*}{sepupper=\SemantexBullet}, - {sepupper**}{sepupper=\SemantexDoubleBullet}, - {commaupper*}{commaupper=\SemantexBullet}, - {commaupper**}{commaupper=\SemantexDoubleBullet}, + {upper~*}{upper=\SemantexBullet}, + {upper~**}{upper=\SemantexDoubleBullet}, + {sep~upper~*}{sep~upper=\SemantexBullet}, + {sep~upper~**}{sep~upper=\SemantexDoubleBullet}, + {comma~upper~*}{comma~upper=\SemantexBullet}, + {comma~upper~**}{comma~upper=\SemantexDoubleBullet}, }, - definekeys[1]={ + define~keys[1]={ {upper}{ execute={ \tl_if_blank:nF { #1 } { \semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 } - \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperindices } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices } } }, }, - {sepupper}{ + {sep~upper}{ execute={ \tl_if_blank:nF { #1 } { - \semantex_data_bool_get:nnTF { ##1 } { nextupperwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~upper~with~sep } { \semantex_data_tl_put_right:nnx { ##1 } { upper } - { \semantex_data_tl_get_exp_not:nn { ##1 } { uppersep } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~sep } } \semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 } } { \semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 } } - \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperindices } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices } } }, }, - {commaupper}{ + {comma~upper}{ execute={ \tl_if_blank:nF{#1} { - \semantex_data_bool_get:nnTF { ##1 } { nextupperwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~upper~with~sep } { \semantex_data_tl_put_right:nnn { ##1 } { upper } { , #1 } } { \semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 } } - \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperindices } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices } } } }, - {preupper}{ + {pre~upper}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_right:nnn { ##1 } { preupper } { #1 } + \semantex_data_tl_put_right:nnn { ##1 } { pre~upper } { #1 } } }, }, - {postupper}{ + {post~upper}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_left:nnn { ##1 } { postupper } { #1 } + \semantex_data_tl_put_left:nnn { ##1 } { post~upper } { #1 } } }, }, - {upperputleft}{ + {upper~put~left}{ execute={ \tl_if_blank:nF { #1 } { \semantex_data_tl_put_left:nnn { ##1 } { upper } { #1 } - \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperindices } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices } } }, }, - {setupperslot}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { upperslot } { #1 } }, + {set~upper~slot}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { upper~slot } { #1 } }, }, - {upperslotwithothersep}{ + {upper~slot~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { upperwithothersep } + \semantex_valuekey:nnx { ##1 } { upper~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } } } }, }, - {upper-withothersep}{ + {upper~-~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { upperwithothersep } + \semantex_valuekey:nnx { ##1 } { upper~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } } } }, }, - {setupperdots}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { upperdots } { #1 } }, + {set~upper~dots}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { upper~dots } { #1 } }, }, - {upperdotswithothersep}{ + {upper~dots~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { upperwithothersep } + \semantex_valuekey:nnx { ##1 } { upper~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } } } }, }, - {upper...withothersep}{ + {upper~...~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { upperwithothersep } + \semantex_valuekey:nnx { ##1 } { upper~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } } } }, }, - {upper*withothersep}{upperwithothersep={#1}{\SemantexBullet}}, - {upper**withothersep}{upperwithothersep={#1}{\SemantexDoubleBullet}}, - {setuppersep}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { uppersep } { #1 } }, + {upper~*~with~other~sep}{upper~with~other~sep={#1}{\SemantexBullet}}, + {upper~**~with~other~sep}{upper~with~other~sep={#1}{\SemantexDoubleBullet}}, + {set~upper~sep}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { upper~sep } { #1 } }, }, - {nextupperwithsep}{ - strifeqTF={#1}{false} + {next~upper~with~sep}{ + str~if~eq~TF={#1}{false} { - boolsetfalse={nextupperwithsep}, + bool~set~false={next~upper~with~sep}, } { - strifeqTF={#1}{true} + str~if~eq~TF={#1}{true} { - boolsettrue={nextupperwithsep}, + bool~set~true={next~upper~with~sep}, } { - ERRORkeyvaluenotfound={nextupperwithsep}{#1}, + ERROR~key~value~not~found={next~upper~with~sep}{#1}, }, }, }, }, - definekeys[2]={ - {upperwithothersep}{ + define~keys[2]={ + {upper~with~other~sep}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { nextupperwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~upper~with~sep } { \semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 #2 } } { \semantex_data_tl_put_right:nnn { ##1 } { upper } { #2 } } - \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperindices } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices } }, }, }, - setuppersep={ , }, - setupperdots={ \dots }, - setupperslot={ {-} }, + set~upper~sep={ , }, + set~upper~dots={ \dots }, + set~upper~slot={ {-} }, % Lower indices: - dataprovide=lower, - boolprovide=nextlowerwithsep, - intprovide=numberoflowerindices, - dataprovide=prelower, - dataprovide=postlower, - definekeys={ - {lowerslot}{ setkeysx={ lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } } }, - {lower-}{lowerslot}, - {seplowerslot}{ setkeysx={ seplower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } } }, - {seplower-}{seplowerslot}, - {commalowerslot}{ setkeysx={ commalower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } } }, - {commalower-}{commalowerslot}, - {lowerdots}{ setkeysx={ lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } } }, - {lower...}{lowerdots}, - {seplowerdots}{ setkeysx={ seplower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } } }, - {seplower...}{seplowerdots}, - {commalowerdots}{ setkeysx={ commalower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } } }, - {commalower...}{commalowerdots}, - {clearlower}{ + data~provide=lower, + bool~provide=next~lower~with~sep, + int~provide=number~of~lower~indices, + data~provide=pre~lower, + data~provide=post~lower, + define~keys={ + {lower~slot}{ set~keys~x={ lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } } }, + {lower~-}{lower~slot}, + {sep~lower~slot}{ set~keys~x={ sep~lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } } }, + {sep~lower~-}{sep~lower~slot}, + {comma~lower~slot}{ set~keys~x={ comma~lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } } }, + {comma~lower~-}{comma~lower~slot}, + {lower~dots}{ set~keys~x={ lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } } }, + {lower~...}{lower~dots}, + {sep~lower~dots}{ set~keys~x={ sep~lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } } }, + {sep~lower~...}{sep~lower~dots}, + {comma~lower~dots}{ set~keys~x={ comma~lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } } }, + {comma~lower~...}{comma~lower~dots}, + {clear~lower}{ execute={ \semantex_data_tl_clear:nn { ##1 } { lower } - \semantex_data_bool_set_false:nn { ##1 } { nextlowerwithsep } - \semantex_data_int_clear:nn { ##1 } { numberoflowerindices } + \semantex_data_bool_set_false:nn { ##1 } { next~lower~with~sep } + \semantex_data_int_clear:nn { ##1 } { number~of~lower~indices } }, }, - {clearprelower}{ - execute={ \semantex_data_tl_clear:nn { ##1 } { prelower } }, + {clear~pre~lower}{ + execute={ \semantex_data_tl_clear:nn { ##1 } { pre~lower } }, }, - {clearpostlower}{ - execute={ \semantex_data_tl_clear:nn { ##1 } { postlower } }, + {clear~post~lower}{ + execute={ \semantex_data_tl_clear:nn { ##1 } { post~lower } }, }, - {lower*}{lower=\SemantexBullet}, - {lower**}{lower=\SemantexDoubleBullet}, - {seplower*}{seplower=\SemantexBullet}, - {seplower**}{seplower=\SemantexDoubleBullet}, - {commalower*}{commalower=\SemantexBullet}, - {commalower**}{commalower=\SemantexDoubleBullet}, + {lower~**}{lower=\SemantexBullet}, + {lower~***}{lower=\SemantexDoubleBullet}, + {sep~lower~**}{sep~lower=\SemantexBullet}, + {sep~lower~***}{sep~lower=\SemantexDoubleBullet}, + {comma~lower~**}{comma~lower=\SemantexBullet}, + {comma~lower~***}{comma~lower=\SemantexDoubleBullet}, }, - definekeys[1]={ + define~keys[1]={ {lower}{ execute={ \tl_if_blank:nF{#1}{ \semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerindices } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices } } }, }, - {seplower}{ + {sep~lower}{ execute={ \tl_if_blank:nF { #1 } { - \semantex_data_bool_get:nnTF { ##1 } { nextlowerwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~lower~with~sep } { \semantex_data_tl_put_right:nnx { ##1 } { lower } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowersep } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~sep } } \semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 } } { \semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 } } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerindices } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices } } }, }, - {commalower}{ + {comma~lower}{ execute={ \tl_if_blank:nF{#1} { - \semantex_data_bool_get:nnTF { ##1 } { nextlowerwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~lower~with~sep } { \semantex_data_tl_put_right:nnn { ##1 } { lower } { , #1 } } { \semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 } } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerindices } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices } } } }, - {prelower}{ + {pre~lower}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_right:nnn { ##1 } { prelower } { #1 } + \semantex_data_tl_put_right:nnn { ##1 } { pre~lower } { #1 } } }, }, - {postlower}{ + {post~lower}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_left:nnn { ##1 } { postlower } { #1 } + \semantex_data_tl_put_left:nnn { ##1 } { post~lower } { #1 } } }, }, - {lowerputleft}{ + {lower~put~left}{ execute={ \tl_if_blank:nF { #1 } { \semantex_data_tl_put_left:nnn { ##1 } { lower } { #1 } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerindices } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices } } }, }, - {setlowerslot}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { lowerslot } { #1 } }, + {set~lower~slot}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { lower~slot } { #1 } }, }, - {lowerslotwithothersep}{ + {lower~slot~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { lowerwithothersep } + \semantex_valuekey:nnx { ##1 } { lower~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } } } }, }, - {lower-withothersep}{ + {lower~-~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { lowerwithothersep } + \semantex_valuekey:nnx { ##1 } { lower~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } } } }, }, - {setlowerdots}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { lowerdots } { #1 } }, + {set~lower~dots}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { lower~dots } { #1 } }, }, - {lowerdotswithothersep}{ + {lower~dots~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { lowerwithothersep } + \semantex_valuekey:nnx { ##1 } { lower~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } } } }, }, - {lower...withothersep}{ + {lower~...~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { lowerwithothersep } + \semantex_valuekey:nnx { ##1 } { lower~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } } } }, }, - {lower*withothersep}{lowerwithothersep={#1}{\SemantexBullet}}, - {lower**withothersep}{lowerwithothersep={#1}{\SemantexDoubleBullet}}, - {setlowersep}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { lowersep } { #1 } }, + {lower~**~with~other~sep}{lower~with~other~sep={#1}{\SemantexBullet}}, + {lower~***~with~other~sep}{lower~with~other~sep={#1}{\SemantexDoubleBullet}}, + {set~lower~sep}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { lower~sep } { #1 } }, }, - {nextlowerwithsep}{ - strifeqTF={#1}{false} + {next~lower~with~sep}{ + str~if~eq~TF={#1}{false} { - boolsetfalse={nextlowerwithsep}, + bool~set~false={next~lower~with~sep}, } { - strifeqTF={#1}{true} + str~if~eq~TF={#1}{true} { - boolsettrue={nextlowerwithsep}, + bool~set~true={next~lower~with~sep}, } { - ERRORkeyvaluenotfound={nextlowerwithsep}{#1}, + ERROR~key~value~not~found={next~lower~with~sep}{#1}, }, }, }, }, - definekeys[2]={ - {lowerwithothersep}{ + define~keys[2]={ + {lower~with~other~sep}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { nextlowerwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~lower~with~sep } { \semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 #2 } } { \semantex_data_tl_put_right:nnn { ##1 } { lower } { #2 } } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerindices } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices } }, }, }, - setlowersep={ , }, - setlowerdots={ \dots }, - setlowerslot={ {-} }, + set~lower~sep={ , }, + set~lower~dots={ \dots }, + set~lower~slot={ {-} }, % Upper left indices: - dataprovide=upperleft, - intprovide=nextupperleftwithsep, - intprovide=numberofupperleftindices, - dataprovide=preupperleft, - dataprovide=postupperleft, - definekeys={ - {upperleftslot}{ setkeysx={ upperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } } }, - {upperleft-}{upperleftslot}, - {sepupperleftslot}{ setkeysx={ sepupperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } } }, - {sepupperleft-}{sepupperleftslot}, - {commaupperleftslot}{ setkeysx={ commaupperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } } }, - {commaupperleft-}{commaupperleftslot}, - {upperleftdots}{ setkeysx={ upperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } } }, - {upperleft...}{upperleftdots}, - {sepupperleftdots}{ setkeysx={ sepupperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } } }, - {sepupperleft...}{sepupperleftdots}, - {commaupperleftdots}{ setkeysx={ commaupperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } } }, - {commaupperleft...}{commaupperleftdots}, - {clearupperleft}{ + data~provide=upper~left, + int~provide=next~upper~left~with~sep, + int~provide=number~of~upper~left~indices, + data~provide=pre~upper~left, + data~provide=post~upper~left, + define~keys={ + {upper~left~slot}{ set~keys~x={ upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } }, + {upper~left~-}{upper~left~slot}, + {sep~upper~left~slot}{ set~keys~x={ sep~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } }, + {sep~upper~left~-}{sep~upper~left~slot}, + {comma~upper~left~slot}{ set~keys~x={ comma~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } }, + {comma~upper~left~-}{comma~upper~left~slot}, + {lower~left~dots}{ set~keys~x={ upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } }, + {upper~left~...}{lower~left~dots}, + {sep~lower~left~dots}{ set~keys~x={ sep~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } }, + {sep~upper~left~...}{sep~lower~left~dots}, + {comma~lower~left~dots}{ set~keys~x={ comma~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } }, + {comma~upper~left~...}{comma~lower~left~dots}, + {clear~upper~left}{ execute={ - \semantex_data_tl_clear:nn { ##1 } { upperleft } - \semantex_data_bool_set_false:nn { ##1 } { nextupperleftwithsep } - \semantex_data_int_clear:nn { ##1 } { numberofupperleftindices } + \semantex_data_tl_clear:nn { ##1 } { upper~left } + \semantex_data_bool_set_false:nn { ##1 } { next~upper~left~with~sep } + \semantex_data_int_clear:nn { ##1 } { number~of~upper~left~indices } }, }, - {clearpreupperleft}{ - execute={ \semantex_data_tl_clear:nn { ##1 } { preupperleft } }, + {clear~pre~upper~left}{ + execute={ \semantex_data_tl_clear:nn { ##1 } { pre~upper~left } }, }, - {clearpostupperleft}{ - execute={ \semantex_data_tl_clear:nn { ##1 } { postupperleft } }, + {clear~post~upper~left}{ + execute={ \semantex_data_tl_clear:nn { ##1 } { post~upper~left } }, }, - {upperleft*}{upperleft=\SemantexBullet}, - {upperleft**}{upperleft=\SemantexDoubleBullet}, - {sepupperleft*}{sepupperleft=\SemantexBullet}, - {sepupperleft**}{sepupperleft=\SemantexDoubleBullet}, - {commaupperleft*}{commaupperleft=\SemantexBullet}, - {commaupperleft**}{commaupperleft=\SemantexDoubleBullet}, + {upper~left~*}{upper~left=\SemantexBullet}, + {upper~left~**}{upper~left=\SemantexDoubleBullet}, + {sep~upper~left~*}{sep~upper~left=\SemantexBullet}, + {sep~upper~left~**}{sep~upper~left=\SemantexDoubleBullet}, + {comma~upper~left~*}{comma~upper~left=\SemantexBullet}, + {comma~upper~left~**}{comma~upper~left=\SemantexDoubleBullet}, }, - definekeys[1]={ - {upperleft}{ + define~keys[1]={ + {upper~left}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #1 } - \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices } + \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #1 } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices } } }, }, - {sepupperleft}{ + {sep~upper~left}{ execute={ \tl_if_blank:nF { #1 } { - \semantex_data_bool_get:nnTF { ##1 } { nextupperleftwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~upper~left~with~sep } { - \semantex_data_tl_put_left:nnx { ##1 } { upperleft } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftsep } } - \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #1 } + \semantex_data_tl_put_left:nnx { ##1 } { upper~left } + { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~sep } } + \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #1 } } { - \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #1 } + \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #1 } } - \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices } } }, }, - {commaupperleft}{ + {comma~upper~left}{ execute={ \tl_if_blank:nF{#1} { - \semantex_data_bool_get:nnTF { ##1 } { nextupperleftwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~upper~left~with~sep } { - \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { , #1 } + \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { , #1 } } { - \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #1 } + \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #1 } } - \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices } } } }, - {preupperleft}{ + {pre~upper~left}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_right:nnn { ##1 } { preupperleft } { #1 } + \semantex_data_tl_put_right:nnn { ##1 } { pre~upper~left } { #1 } } }, }, - {postupperleft}{ + {post~upper~left}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_left:nnn { ##1 } { postupperleft } { #1 } + \semantex_data_tl_put_left:nnn { ##1 } { post~upper~left } { #1 } } }, }, - {upperleftputright}{ + {upper~left~put~right}{ execute={ \tl_if_blank:nF { #1 } { - \semantex_data_tl_put_right:nnn { ##1 } { upperleft } { #1 } - \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices } + \semantex_data_tl_put_right:nnn { ##1 } { upper~left } { #1 } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices } } }, }, - {setupperleftslot}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { upperleftslot } { #1 } }, + {set~upper~left~slot}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { upper~left~slot } { #1 } }, }, - {upperleftslotwithothersep}{ + {upper~left~slot~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { upperleftwithothersep } + \semantex_valuekey:nnx { ##1 } { upper~left~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } } }, }, - {upperleft-withothersep}{ + {upper~left~-~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { upperleftwithothersep } + \semantex_valuekey:nnx { ##1 } { upper~left~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } } }, }, - {setupperleftdots}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { upperleftdots } { #1 } }, + {set~lower~left~dots}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~dots } { #1 } }, }, - {upperleftdotswithothersep}{ + {lower~left~dots~with~other~sep}{ execute={ - \semantex_valuekey:nnx { upperleftwithothersep } + \semantex_valuekey:nnx { upper~left~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } } }, }, - {upperleft...withothersep}{ + {upper~left~...~with~other~sep}{ execute={ - \semantex_valuekey:nnx { upperleftwithothersep } + \semantex_valuekey:nnx { upper~left~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } } }, }, - {upperleft*withothersep}{upperleftwithothersep={#1}{\SemantexBullet}}, - {upperleft**withothersep}{upperleftwithothersep={#1}{\SemantexDoubleBullet}}, - {setupperleftsep}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { upperleftsep } { #1 } }, + {upper~left~*~with~other~sep}{upper~left~with~other~sep={#1}{\SemantexBullet}}, + {upper~left~**~with~other~sep}{upper~left~with~other~sep={#1}{\SemantexDoubleBullet}}, + {set~upper~left~sep}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { upper~left~sep } { #1 } }, }, - {nextupperleftwithsep}{ - strifeqTF={#1}{false} + {next~upper~left~with~sep}{ + str~if~eq~TF={#1}{false} { - boolsetfalse={nextupperleftwithsep}, + bool~set~false=next~upper~left~with~sep, } { - strifeqTF={#1}{true} + str~if~eq~TF={#1}{true} { - boolsettrue={nextupperleftwithsep}, + bool~set~true=next~upper~left~with~sep, } { - ERRORkeyvaluenotfound={nextupperleftwithsep}{#1}, + ERROR~key~value~not~found={next~upper~left~with~sep}{#1}, }, }, }, }, - definekeys[2]={ - {upperleftwithothersep}{ + define~keys[2]={ + {upper~left~with~other~sep}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { nextupperleftwithsep } - { \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #2 #1 } } - { \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #2 } } - \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices } + \semantex_data_bool_get:nnTF { ##1 } { next~upper~left~with~sep } + { \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #2 #1 } } + { \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #2 } } + \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices } }, }, }, - setupperleftsep={ , }, - setupperleftdots={ \dots }, - setupperleftslot={ {-} }, + set~upper~left~sep={ , }, + set~lower~left~dots={ \dots }, + set~upper~left~slot={ {-} }, % Lower left indices: - dataprovide=lowerleft, - boolprovide=nextlowerleftwithsep, - intprovide=numberoflowerleftindices, - dataprovide=prelowerleft, - dataprovide=postlowerleft, - definekeys={ - {lowerleftslot}{ setkeysx={ lowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } } }, - {lowerleft-}{lowerleftslot}, - {seplowerleftslot}{ setkeysx={ seplowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } } }, - {seplowerleft-}{seplowerleftslot}, - {commalowerleftslot}{ setkeysx={ commalowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } } }, - {commalowerleft-}{commalowerleftslot}, - {lowerleftdots}{ setkeysx={ lowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } } }, - {lowerleft...}{lowerleftdots}, - {seplowerleftdots}{ setkeysx={ seplowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } } }, - {seplowerleft...}{seplowerleftdots}, - {commalowerleftdots}{ setkeysx={ commalowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } } }, - {commalowerleft...}{commalowerleftdots}, - {clearlowerleft}{ + data~provide=lower~left, + bool~provide=next~lower~left~with~sep, + int~provide=number~of~lower~left~indices, + data~provide=pre~lower~left, + data~provide=post~lower~left, + define~keys={ + {lower~left~slot}{ set~keys~x={ lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } } }, + {lower~left~-}{lower~left~slot}, + {sep~lower~left~slot}{ set~keys~x={ sep~lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } } }, + {sep~lower~left~-}{sep~lower~left~slot}, + {comma~lower~left~slot}{ set~keys~x={ comma~lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } } }, + {comma~lower~left~-}{comma~lower~left~slot}, + {lower~left~dots}{ set~keys~x={ lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } }, + {lower~left~...}{lower~left~dots}, + {sep~lower~left~dots}{ set~keys~x={ sep~lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } }, + {sep~lower~left~...}{sep~lower~left~dots}, + {comma~lower~left~dots}{ set~keys~x={ comma~lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } }, + {comma~lower~left~...}{comma~lower~left~dots}, + {clear~lower~left}{ execute={ - \semantex_data_tl_clear:nn { ##1 } { lowerleft } - \semantex_data_bool_set_false:nn { ##1 } { nextlowerleftwithsep } - \semantex_data_int_clear:nn { ##1 } { numberoflowerleftindices } + \semantex_data_tl_clear:nn { ##1 } { lower~left } + \semantex_data_bool_set_false:nn { ##1 } { next~lower~left~with~sep } + \semantex_data_int_clear:nn { ##1 } { number~of~lower~left~indices } }, }, - {clearprelowerleft}{ - execute={ \semantex_data_tl_clear:nn { ##1 } { prelowerleft } }, + {clear~pre~lower~left}{ + execute={ \semantex_data_tl_clear:nn { ##1 } { pre~lower~left } }, }, - {clearpostlowerleft}{ - execute={ \semantex_data_tl_clear:nn { ##1 } { postlowerleft } }, + {clear~post~lower~left}{ + execute={ \semantex_data_tl_clear:nn { ##1 } { post~lower~left } }, }, - {lowerleft*}{lowerleft=\SemantexBullet}, - {lowerleft**}{lowerleft=\SemantexDoubleBullet}, - {seplowerleft*}{seplowerleft=\SemantexBullet}, - {seplowerleft**}{seplowerleft=\SemantexDoubleBullet}, - {commalowerleft*}{commalowerleft=\SemantexBullet}, - {commalowerleft**}{commalowerleft=\SemantexDoubleBullet}, + {lower~left~*}{lower~left=\SemantexBullet}, + {lower~left~**}{lower~left=\SemantexDoubleBullet}, + {sep~lower~left~*}{sep~lower~left=\SemantexBullet}, + {sep~lower~left~**}{sep~lower~left=\SemantexDoubleBullet}, + {comma~lower~left~*}{comma~lower~left=\SemantexBullet}, + {comma~lower~left~**}{comma~lower~left=\SemantexDoubleBullet}, }, - definekeys[1]={ - {lowerleft}{ + define~keys[1]={ + {lower~left}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #1 } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices } + \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #1 } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices } } }, }, - {seplowerleft}{ + {sep~lower~left}{ execute={ \tl_if_blank:nF { #1 } { - \semantex_data_bool_get:nnTF { ##1 } { nextlowerleftwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~lower~left~with~sep } { - \semantex_data_tl_put_left:nnx { ##1 } { lowerleft } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftsep } } - \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #1 } + \semantex_data_tl_put_left:nnx { ##1 } { lower~left } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~sep } } + \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #1 } } { - \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #1 } + \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #1 } } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices } } }, }, - {commalowerleft}{ + {comma~lower~left}{ execute={ \tl_if_blank:nF{#1} { - \semantex_data_bool_get:nnTF { ##1 } { nextlowerleftwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~lower~left~with~sep } { - \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { , #1 } + \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { , #1 } } { - \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #1 } + \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #1 } } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices } } } }, - {prelowerleft}{ + {pre~lower~left}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_right:nnn { ##1 } { prelowerleft } { #1 } + \semantex_data_tl_put_right:nnn { ##1 } { pre~lower~left } { #1 } } }, }, - {postlowerleft}{ + {post~lower~left}{ execute={ \tl_if_blank:nF{#1}{ - \semantex_data_tl_put_left:nnn { ##1 } { postlowerleft } { #1 } + \semantex_data_tl_put_left:nnn { ##1 } { post~lower~left } { #1 } } }, }, - {lowerleftputright}{ + {lower~left~put~right}{ execute={ \tl_if_blank:nF { #1 } { - \semantex_data_tl_put_right:nnn { ##1 } { lowerleft } { #1 } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices } + \semantex_data_tl_put_right:nnn { ##1 } { lower~left } { #1 } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices } } }, }, - {setlowerleftslot}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { lowerleftslot } { #1 } }, + {set~lower~left~slot}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~slot } { #1 } }, }, - {lowerleftslotwithothersep}{ + {lower~left~slot~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { lowerleftwithothersep } + \semantex_valuekey:nnx { ##1 } { lower~left~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } }, + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } }, } }, }, - {lowerleft-withothersep}{ + {lower~left~-~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { lowerleftwithothersep } + \semantex_valuekey:nnx { ##1 } { lower~left~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } }, + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } }, } }, }, - {setlowerleftdots}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { lowerleftdots } { #1 } }, + {set~lower~left~dots}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~dots } { #1 } }, }, - {lowerleftdotswithothersep}{ + {lower~left~dots~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { lowerleftwithothersep } + \semantex_valuekey:nnx { ##1 } { lower~left~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } } }, }, - {lowerleft...withothersep}{ + {lower~left~...~with~other~sep}{ execute={ - \semantex_valuekey:nnx { ##1 } { lowerleftwithothersep } + \semantex_valuekey:nnx { ##1 } { lower~left~with~other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } } }, }, - {lowerleft*withothersep}{lowerleftwithothersep={#1}{\SemantexBullet}}, - {lowerleft**withothersep}{lowerleftwithothersep={#1}{\SemantexDoubleBullet}}, - {setlowerleftsep}{ - execute={ \semantex_data_tl_set:nnn { ##1 } { lowerleftsep } { #1 } }, + {lower~left~*~with~other~sep}{lower~left~with~other~sep={#1}{\SemantexBullet}}, + {lower~left~**~with~other~sep}{lower~left~with~other~sep={#1}{\SemantexDoubleBullet}}, + {set~lower~left~sep}{ + execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~sep } { #1 } }, }, - {nextlowerleftwithsep}{ - strifeqTF={#1}{false} + {next~lower~left~with~sep}{ + str~if~eq~TF={#1}{false} { - boolsetfalse={nextlowerleftwithsep}, + bool~set~false=next~lower~left~with~sep, } { - strifeqTF={#1}{true} + str~if~eq~TF={#1}{true} { - boolsettrue={nextlowerleftwithsep}, + bool~set~true=next~lower~left~with~sep, } { - ERRORkeyvaluenotfound={nextlowerleftwithsep}{#1}, + ERROR~key~value~not~found={next~lower~left~with~sep}{#1}, }, }, }, }, - definekeys[2]={ - {lowerleftwithothersep}{ + define~keys[2]={ + {lower~left~with~other~sep}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { nextlowerleftwithsep } - { \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #2 #1 } } - { \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #2 } } - \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep } - \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices } + \semantex_data_bool_get:nnTF { ##1 } { next~lower~left~with~sep } + { \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #2 #1 } } + { \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #2 } } + \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep } + \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices } }, }, }, - setlowerleftsep={ , }, - setlowerleftdots={ \dots }, - setlowerleftslot={ {-} }, + set~lower~left~sep={ , }, + set~lower~left~dots={ \dots }, + set~lower~left~slot={ {-} }, % The "d" index: - definekeys={ - {dslot}{ - boolifTF={uppergrading} - { upperslot } - { lowerslot }, - }, - {d-}{dslot}, - {sepdslot}{ - boolifTF={uppergrading} - { sepupperslot } - { seplowerslot }, - }, - {sepd-}{sepdslot}, - {commadslot}{ - boolifTF={uppergrading} - { commaupperslot } - { commalowerslot }, - }, - {commad-}{commadslot}, - {ddots}{ - boolifTF={uppergrading} - { upperdots } - { lowerdots }, - }, - {d...}{ddots}, - {sepddots}{ - boolifTF={uppergrading} - { sepupperdots } - { seplowerdots }, - }, - {sepd...}{sepddots}, - {commaddots}{ - boolifTF={uppergrading} - { commaupperdots } - { commalowerdots }, - }, - {commad...}{commaddots}, - {cleard}{ - boolifTF={uppergrading} - { clearupper } - { clearlower }, - }, - {clearpred}{ - boolifTF={uppergrading} - { clearpreupper } - { clearprelower }, - }, - {clearpostd}{ - boolifTF={uppergrading} - { clearpostupper } - { clearpostlower }, - }, - {d*}{ - boolifTF={uppergrading} - { upper* } - { lower* }, - }, - {d**}{ - boolifTF={uppergrading} - { upper** } - { lower** }, - }, - {sepd*}{ - boolifTF={uppergrading} - { sepupper* } - { seplower* }, - }, - {sepd**}{ - boolifTF={uppergrading} - { sepupper** } - { seplower** }, - }, - {commad*}{ - boolifTF={uppergrading} - { commaupper* } - { commalower* }, - }, - {commad**}{ - boolifTF={uppergrading} - { commaupper** } - { commalower** }, + define~keys={ + {d~slot}{ + bool~if~TF={upper~grading} + { upper~slot } + { lower~slot }, + }, + {d~-}{d~slot}, + {sep~d~slot}{ + bool~if~TF={upper~grading} + { sep~upper~slot } + { sep~lower~slot }, + }, + {sep~d~-}{sep~d~slot}, + {comma~d~slot}{ + bool~if~TF={upper~grading} + { comma~upper~slot } + { comma~lower~slot }, + }, + {comma~d~-}{comma~d~slot}, + {d~dots}{ + bool~if~TF={upper~grading} + { upper~dots } + { lower~dots }, + }, + {d~...}{d~dots}, + {sep~d~dots}{ + bool~if~TF={upper~grading} + { sep~upper~dots } + { sep~lower~dots }, + }, + {sep~d~...}{sep~d~dots}, + {comma~d~dots}{ + bool~if~TF={upper~grading} + { comma~upper~dots } + { comma~lower~dots }, + }, + {comma~d~...}{comma~d~dots}, + {clear~d}{ + bool~if~TF={upper~grading} + { clear~upper } + { clear~lower }, + }, + {clear~pre~d}{ + bool~if~TF={upper~grading} + { clear~pre~upper } + { clear~pre~lower }, + }, + {clear~post~d}{ + bool~if~TF={upper~grading} + { clear~post~upper } + { clear~post~lower }, + }, + {d~*}{ + bool~if~TF={upper~grading} + { upper~* } + { lower~** }, + }, + {d~**}{ + bool~if~TF={upper~grading} + { upper~** } + { lower~*** }, + }, + {sep~d~*}{ + bool~if~TF={upper~grading} + { sep~upper~* } + { sep~lower~** }, + }, + {sep~d~**}{ + bool~if~TF={upper~grading} + { sep~upper~** } + { sep~lower~*** }, + }, + {comma~d~*}{ + bool~if~TF={upper~grading} + { comma~upper~* } + { comma~lower~** }, + }, + {comma~d~**}{ + bool~if~TF={upper~grading} + { comma~upper~** } + { comma~lower~*** }, }, }, - definekeys[1]={ + define~keys[1]={ {d}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { uppergrading } + \semantex_data_bool_get:nnTF { ##1 } { upper~grading } { \semantex_valuekey:nnn { ##1 } { upper } { #1 } } { \semantex_valuekey:nnn { ##1 } { lower } { #1 } } }, }, - {sepd}{ + {sep~d}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { uppergrading } - { \semantex_valuekey:nnn { ##1 } { sepupper } { #1 } } - { \semantex_valuekey:nnn { ##1 } { seplower } { #1 } } + \semantex_data_bool_get:nnTF { ##1 } { upper~grading } + { \semantex_valuekey:nnn { ##1 } { sep~upper } { #1 } } + { \semantex_valuekey:nnn { ##1 } { sep~lower } { #1 } } }, }, - {commad}{ + {comma~d}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { uppergrading } - { \semantex_valuekey:nnn { ##1 } { commaupper } { #1 } } - { \semantex_valuekey:nnn { ##1 } { commalower } { #1 } } + \semantex_data_bool_get:nnTF { ##1 } { upper~grading } + { \semantex_valuekey:nnn { ##1 } { comma~upper } { #1 } } + { \semantex_valuekey:nnn { ##1 } { comma~lower } { #1 } } }, }, - {pred}{ - boolifTF={uppergrading} + {pre~d}{ + bool~if~TF={upper~grading} { - preupper={#1}, + pre~upper={#1}, } { - prelower={#1}, + pre~lower={#1}, }, }, - {postd}{ - boolifTF={uppergrading} + {post~d}{ + bool~if~TF={upper~grading} { - postupper={#1}, + post~upper={#1}, } { - postlower={#1}, + post~lower={#1}, }, }, - {dputleft}{ - boolifTF={uppergrading} + {d~put~left}{ + bool~if~TF={upper~grading} { - upperputleft={#1}, + upper~put~left={#1}, } { - lowerputleft={#1}, + lower~put~left={#1}, }, }, - {setdslot}{ - boolifTF={uppergrading} + {set~d~slot}{ + bool~if~TF={upper~grading} { - setupperslot={#1}, + set~upper~slot={#1}, } { - setlowerslot={#1}, + set~lower~slot={#1}, } }, - {dslotwithothersep}{ - boolifTF={uppergrading} + {d~slot~with~other~sep}{ + bool~if~TF={upper~grading} { - upperslotwithothersep={#1}, + upper~slot~with~other~sep={#1}, } { - lowerslotwithothersep={#1}, + lower~slot~with~other~sep={#1}, }, }, - {d-withothersep}{ - dslotwithothersep={#1}, + {d~-~with~other~sep}{ + d~slot~with~other~sep={#1}, }, - {setddots}{ - boolifTF={uppergrading} + {set~d~dots}{ + bool~if~TF={upper~grading} { - setupperdots={#1}, + set~upper~dots={#1}, } { - setlowerdots={#1}, + set~lower~dots={#1}, } }, - {ddotswithothersep}{ - boolifTF={uppergrading} + {d~dots~with~other~sep}{ + bool~if~TF={upper~grading} { - upperdotswithothersep={#1}, + upper~dots~with~other~sep={#1}, } { - lowerdotswithothersep={#1}, + lower~dots~with~other~sep={#1}, }, }, - {d...withothersep}{ - ddotswithothersep={#1}, + {d~...~with~other~sep}{ + d~dots~with~other~sep={#1}, }, - {d*withothersep}{ - boolifTF={uppergrading} - { upper*withothersep={#1} } - { lower*withothersep={#1} }, + {d~*~with~other~sep}{ + bool~if~TF={upper~grading} + { upper~*~with~other~sep={#1} } + { lower~**~with~other~sep={#1} }, }, - {d**withothersep}{ - boolifTF={uppergrading} - { upper**withothersep={#1} } - { lower**withothersep={#1} }, + {d~**~with~other~sep}{ + bool~if~TF={upper~grading} + { upper~**~with~other~sep={#1} } + { lower~***~with~other~sep={#1} }, }, - {setdsep}{ - boolifTF={uppergrading} + {set~d~sep}{ + bool~if~TF={upper~grading} { - setuppersep={#1}, + set~upper~sep={#1}, } { - setlowersep={#1}, + set~lower~sep={#1}, }, }, - {nextdwithsep}{ - strifeqTF={#1}{true} + {next~d~with~sep}{ + str~if~eq~TF={#1}{true} { - boolifTF={uppergrading} + bool~if~TF={upper~grading} { - nextupperwithsep=true, + next~upper~with~sep=true, } { - nextlowerwithsep=true, + next~lower~with~sep=true, }, } { - strifeqTF={#1}{false} + str~if~eq~TF={#1}{false} { - boolifTF={uppergrading} + bool~if~TF={upper~grading} { - nextupperwithsep=false, + next~upper~with~sep=false, } { - nextlowerwithsep=false, + next~lower~with~sep=false, }, } { - ERRORkeyvaluenotfound={nextdwithothersep}{#1}, + ERROR~key~value~not~found={next~d~with~other~sep}{#1}, }, }, }, }, - definekeys[2]={ - {dwithothersep}{ - boolifTF={uppergrading} + define~keys[2]={ + {d~with~other~sep}{ + bool~if~TF={upper~grading} { - upperwithothersep={#1}{#2}, + upper~with~other~sep={#1}{#2}, } { - lowerwithothersep={#1}{#2}, + lower~with~other~sep={#1}{#2}, }, }, }, % The "i" index: - definekeys={ - {islot}{ - boolifTF={uppergrading} - { lowerslot } - { upperslot }, - }, - {i-}{islot}, - {sepislot}{ - boolifTF={uppergrading} - { seplowerslot } - { sepupperslot }, - }, - {sepi-}{sepislot}, - {commaislot}{ - boolifTF={uppergrading} - { commalowerslot } - { commaupperslot }, - }, - {commai-}{commaislot}, - {idots}{ - boolifTF={uppergrading} - { lowerdots } - { upperdots }, - }, - {i...}{idots}, - {sepidots}{ - boolifTF={uppergrading} - { seplowerdots } - { sepupperdots }, - }, - {sepi...}{sepidots}, - {commaidots}{ - boolifTF={uppergrading} - { commalowerdots } - { commaupperdots }, - }, - {commai...}{commaidots}, - {cleari}{ - boolifTF={uppergrading} - { clearlower } - { clearupper }, - }, - {clearprei}{ - boolifTF={uppergrading} - { clearprelower } - { clearpreupper }, - }, - {clearposti}{ - boolifTF={uppergrading} - { clearpostlower } - { clearpostupper }, - }, - {i*}{ - boolifTF={uppergrading} - { lower* } - { upper* }, - }, - {i**}{ - boolifTF={uppergrading} - { lower** } - { upper** }, - }, - {sepi*}{ - boolifTF={uppergrading} - { seplower* } - { sepupper* }, - }, - {sepi**}{ - boolifTF={uppergrading} - { seplower** } - { sepupper** }, - }, - {commai*}{ - boolifTF={uppergrading} - { commalower* } - { commaupper* }, - }, - {commai**}{ - boolifTF={uppergrading} - { commalower** } - { commaupper** }, + define~keys={ + {i~slot}{ + bool~if~TF={upper~grading} + { lower~slot } + { upper~slot }, + }, + {i~-}{i~slot}, + {sep~i~slot}{ + bool~if~TF={upper~grading} + { sep~lower~slot } + { sep~upper~slot }, + }, + {sep~i~-}{sep~i~slot}, + {comma~i~slot}{ + bool~if~TF={upper~grading} + { comma~lower~slot } + { comma~upper~slot }, + }, + {comma~i~-}{comma~i~slot}, + {i~dots}{ + bool~if~TF={upper~grading} + { lower~dots } + { upper~dots }, + }, + {i~...}{i~dots}, + {sep~i~dots}{ + bool~if~TF={upper~grading} + { sep~lower~dots } + { sep~upper~dots }, + }, + {sep~i~...}{sep~i~dots}, + {comma~i~dots}{ + bool~if~TF={upper~grading} + { comma~lower~dots } + { comma~upper~dots }, + }, + {comma~i~...}{comma~i~dots}, + {clear~i}{ + bool~if~TF={upper~grading} + { clear~lower } + { clear~upper }, + }, + {clear~pre~i}{ + bool~if~TF={upper~grading} + { clear~pre~lower } + { clear~pre~upper }, + }, + {clear~post~i}{ + bool~if~TF={upper~grading} + { clear~post~lower } + { clear~post~upper }, + }, + {i~*}{ + bool~if~TF={upper~grading} + { lower~** } + { upper~* }, + }, + {i~**}{ + bool~if~TF={upper~grading} + { lower~*** } + { upper~** }, + }, + {sep~i~*}{ + bool~if~TF={upper~grading} + { sep~lower~** } + { sep~upper~* }, + }, + {sep~i~**}{ + bool~if~TF={upper~grading} + { sep~lower~*** } + { sep~upper~** }, + }, + {comma~i~*}{ + bool~if~TF={upper~grading} + { comma~lower~** } + { comma~upper~* }, + }, + {comma~i~**}{ + bool~if~TF={upper~grading} + { comma~lower~*** } + { comma~upper~** }, }, }, - definekeys[1]={ + define~keys[1]={ {i}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { uppergrading } + \semantex_data_bool_get:nnTF { ##1 } { upper~grading } { \semantex_valuekey:nnn { ##1 } { lower } { #1 } } { \semantex_valuekey:nnn { ##1 } { upper } { #1 } } }, }, - {sepi}{ + {sep~i}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { uppergrading } - { \semantex_valuekey:nnn { ##1 } { seplower } { #1 } } - { \semantex_valuekey:nnn { ##1 } { sepupper } { #1 } } + \semantex_data_bool_get:nnTF { ##1 } { upper~grading } + { \semantex_valuekey:nnn { ##1 } { sep~lower } { #1 } } + { \semantex_valuekey:nnn { ##1 } { sep~upper } { #1 } } }, }, - {commai}{ + {comma~i}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { uppergrading } - { \semantex_valuekey:nnn { ##1 } { commalower } { #1 } } - { \semantex_valuekey:nnn { ##1 } { commaupper } { #1 } } + \semantex_data_bool_get:nnTF { ##1 } { upper~grading } + { \semantex_valuekey:nnn { ##1 } { comma~lower } { #1 } } + { \semantex_valuekey:nnn { ##1 } { comma~upper } { #1 } } }, }, - {prei}{ - boolifTF={uppergrading} + {pre~i}{ + bool~if~TF={upper~grading} { - prelower={#1}, + pre~lower={#1}, } { - preupper={#1}, + pre~upper={#1}, }, }, - {posti}{ - boolifTF={uppergrading} + {post~i}{ + bool~if~TF={upper~grading} { - postlower={#1}, + post~lower={#1}, } { - postupper={#1}, + post~upper={#1}, }, }, - {iputleft}{ - boolifTF={uppergrading} + {i~put~left}{ + bool~if~TF={upper~grading} { - lowerputleft={#1}, + lower~put~left={#1}, }{ - upperputleft={#1}, + upper~put~left={#1}, }, }, - {setislot}{ - boolifTF={uppergrading} + {set~i~slot}{ + bool~if~TF={upper~grading} { - setlowerslot={#1}, + set~lower~slot={#1}, } { - setupperslot={#1}, + set~upper~slot={#1}, } }, - {islotwithothersep}{ - boolifTF={uppergrading} + {i~slot~with~other~sep}{ + bool~if~TF={upper~grading} { - lowerslotwithothersep={#1}, + lower~slot~with~other~sep={#1}, } { - upperslotwithothersep={#1}, + upper~slot~with~other~sep={#1}, }, }, - {i-withothersep}{ - islotwithothersep={#1}, + {i~-~with~other~sep}{ + i~slot~with~other~sep={#1}, }, - {setidots}{ - boolifTF={uppergrading} + {set~i~dots}{ + bool~if~TF={upper~grading} { - setlowerdots={#1}, + set~lower~dots={#1}, } { - setupperdots={#1}, + set~upper~dots={#1}, } }, - {idotswithothersep}{ - boolifTF={uppergrading} + {i~dots~with~other~sep}{ + bool~if~TF={upper~grading} { - lowerdotswithothersep={#1}, + lower~dots~with~other~sep={#1}, } { - upperdotswithothersep={#1}, + upper~dots~with~other~sep={#1}, }, }, - {i...withothersep}{ - idotswithothersep={#1}, + {i~...~with~other~sep}{ + i~dots~with~other~sep={#1}, }, - {i*withothersep}{ - boolifTF={uppergrading} - { lower*withothersep={#1} } - { upper*withothersep={#1} }, + {i~*~with~other~sep}{ + bool~if~TF={upper~grading} + { lower~**~with~other~sep={#1} } + { upper~*~with~other~sep={#1} }, }, - {i**withothersep}{ - boolifTF={uppergrading} - { lower**withothersep={#1} } - { upper**withothersep={#1} }, + {i~**~with~other~sep}{ + bool~if~TF={upper~grading} + { lower~***~with~other~sep={#1} } + { upper~**~with~other~sep={#1} }, }, - {setisep}{ - boolifTF={uppergrading} + {set~i~sep}{ + bool~if~TF={upper~grading} { - setlowersep={#1}, + set~lower~sep={#1}, } { - setuppersep={#1}, + set~upper~sep={#1}, }, }, - {nextiwithsep}{ - strifeqTF={#1}{true} + {next~i~with~sep}{ + str~if~eq~TF={#1}{true} { - boolifTF={uppergrading} + bool~if~TF={upper~grading} { - nextlowerwithsep={#1}, + next~lower~with~sep={#1}, } { - nextupperwithsep={#1}, + next~upper~with~sep={#1}, }, } { - strifeqTF={#1}{false} + str~if~eq~TF={#1}{false} { - boolifTF={uppergrading} + bool~if~TF={upper~grading} { - nextupperwithsep={#1}, + next~upper~with~sep={#1}, } { - nextlowerwithsep={#1}, + next~lower~with~sep={#1}, }, } { - ERRORkeyvaluenotfound={nextiwithothersep}{#1}, + ERROR~key~value~not~found={next~i~with~other~sep}{#1}, }, }, }, }, - definekeys[2]={ - {iwithothersep}{ + define~keys[2]={ + {i~with~other~sep}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { uppergrading } - { \semantex_valuekey:nnn { ##1 } { lowerwithothersep } { { #1 } { #2 } } } - { \semantex_valuekey:nnn { ##1 } { upperwithothersep } { { #1 } { #2 } } } + \semantex_data_bool_get:nnTF { ##1 } { upper~grading } + { \semantex_valuekey:nnn { ##1 } { lower~with~other~sep } { { #1 } { #2 } } } + { \semantex_valuekey:nnn { ##1 } { upper~with~other~sep } { { #1 } { #2 } } } }, }, }, % Argument keyval interface - defineargkeys[1]={ + define~arg~keys[1]={ {execute}{execute={#1}}, - {setkeys}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } }, - {keysset}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } }, - {setkeysx}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } }, - {keyssetx}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } }, - {setargkeys}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } }, - {argkeysset}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } }, - {setargkeysx}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } }, - {argkeyssetx}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } }, - {setargsinglekeys}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, - {argsinglekeysset}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, - {setargsinglekeysx}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } }, - {argsinglekeyssetx}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } }, - {setoneargsinglekey}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } }, - {oneargsinglekeyset}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } }, - {setoneargsinglekeyx}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } }, - {oneargsinglekeysetx}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } }, - {setargwithoutkeyval}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } }, - {argwithoutkeyvalset}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } }, - {setargwithoutkeyvalx}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } }, - {argwithoutkeyvalsetx}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } }, + {set~keys}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } }, + {keys~set}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } }, + {set~keys~x}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } }, + {keys~set~x}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } }, + {set~arg~keys}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } }, + {arg~keys~set}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } }, + {set~arg~keys~x}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } }, + {arg~keys~set~x}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } }, + {set~arg~single~keys}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, + {arg~single~keys~set}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } }, + {set~arg~single~keys~x}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } }, + {arg~single~keys~set~x}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } }, + {set~one~arg~single~key}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } }, + {one~arg~single~key~set}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } }, + {set~one~arg~single~key~x}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } }, + {one~arg~single~key~set~x}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } }, + {set~arg~without~keyval}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } }, + {arg~without~keyval~set}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } }, + {set~arg~without~keyval~x}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } }, + {arg~without~keyval~set~x}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } }, {default}{sep={#1}}, - {-withothersep}{slotwithothersep={#1}}, - {...withothersep}{dotswithothersep={#1}}, + {-~with~other~sep}{slot~with~other~sep={#1}}, + {...~with~other~sep}{dots~with~other~sep={#1}}, {sep}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { nextargwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~arg~with~sep } { \semantex_data_tl_put_right:nnx { ##1 } { arg } { - \semantex_data_tl_get_exp_not:nn { ##1 } { argsep } + \semantex_data_tl_get_exp_not:nn { ##1 } { arg~sep } } } { % do nothing } \semantex_data_tl_put_right:nnn { ##1 } { arg } { #1 } - \semantex_data_int_incr:nn { ##1 } { numberofarguments } - \semantex_data_bool_set_true:nn { ##1 } { nextargwithsep } + \semantex_data_int_incr:nn { ##1 } { number~of~arguments } + \semantex_data_bool_set_true:nn { ##1 } { next~arg~with~sep } } }, {comma}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { nextargwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~arg~with~sep } { \semantex_data_tl_put_right:nnn { ##1 } { arg } { , #1 } } { \semantex_data_tl_put_right:nnn { ##1 } { arg } { #1 } } - \semantex_data_int_incr:nn { ##1 } { numberofarguments } - \semantex_data_bool_set_true:nn { ##1 } { nextargwithsep } + \semantex_data_int_incr:nn { ##1 } { number~of~arguments } + \semantex_data_bool_set_true:nn { ##1 } { next~arg~with~sep } } }, - {dotswithothersep}{ + {dots~with~other~sep}{ execute={ - \semantex_arg_valuekey:nnx { ##1 } { othersep } + \semantex_arg_valuekey:nnx { ##1 } { other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { argdots } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { arg~dots } } } }, }, - {slotwithothersep}{ + {slot~with~other~sep}{ execute={ - \semantex_arg_valuekey:nnx { ##1 } { othersep } + \semantex_arg_valuekey:nnx { ##1 } { other~sep } { { \exp_not:n { #1 } } - { \semantex_data_tl_get_exp_not:nn { ##1 } { argslot } } + { \semantex_data_tl_get_exp_not:nn { ##1 } { arg~slot } } } }, }, }, - defineargkeys={ + define~arg~keys={ {dots}{ execute={ \semantex_arg_valuekey:nnx { ##1 } { sep } { - \semantex_data_tl_get_exp_not:nn { ##1 } { argdots } + \semantex_data_tl_get_exp_not:nn { ##1 } { arg~dots } } }, }, {...}{dots}, - {commadots}{ + {comma~dots}{ execute={ \semantex_arg_valuekey:nnx { ##1 } { comma } { - \semantex_data_tl_get_exp_not:nn { ##1 } { argdots } + \semantex_data_tl_get_exp_not:nn { ##1 } { arg~dots } } }, }, - {comma...}{commadots}, + {comma~...}{comma~dots}, {slot}{ execute={ \semantex_arg_valuekey:nnx { ##1 } { sep } { - \semantex_data_tl_get_exp_not:nn { ##1 } { argslot } + \semantex_data_tl_get_exp_not:nn { ##1 } { arg~slot } } }, }, {-}{slot}, - {commaslot}{ + {comma~slot}{ execute={ \semantex_arg_valuekey:nnx { ##1 } { comma } { - \semantex_data_tl_get_exp_not:nn { ##1 } { argslot } + \semantex_data_tl_get_exp_not:nn { ##1 } { arg~slot } } }, }, - {comma-}{commaslot}, + {comma~-}{comma~slot}, }, - defineargkeys[2]={ - {othersep}{ + define~arg~keys[2]={ + {other~sep}{ execute={ - \semantex_data_bool_get:nnTF { ##1 } { nextargwithsep } + \semantex_data_bool_get:nnTF { ##1 } { next~arg~with~sep } { \semantex_data_tl_put_right:nnn { ##1 } { arg } { #1 #2 } } { \semantex_data_tl_put_right:nnn { ##1 } { arg } { #2 } } - \semantex_data_int_incr:nn { ##1 } { numberofarguments } - \semantex_data_bool_set_true:nn { ##1 } { nextargwithsep } + \semantex_data_int_incr:nn { ##1 } { number~of~arguments } + \semantex_data_bool_set_true:nn { ##1 } { next~arg~with~sep } }, }, }, diff --git a/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty b/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty index 1a3d69f78ea..c4fce11d956 100644 --- a/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty +++ b/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty @@ -1,11 +1,11 @@ \RequirePackage{xparse} -\ProvidesExplPackage{stripsemantex}{2020/11/05}{0.463}{} +\ProvidesExplPackage{stripsemantex}{2021/06/10}{0.500}{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % stripSemanTeX -- strip the document of SemanTeX markup % % https://ctan.org/pkg/semantex % -% (C) 2020 Sebastian Ørsted % +% (C) 2021 Sebastian Ørsted % % sorsted@gmail.com % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -- cgit v1.2.3