Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MyCommand[
- opt1="this is val1",
- opt4="this is val4",
- optN="this is valN"
- ]{argument1}
- MyCommand{
- arg1="this is val1",
- arg4="this is val4",
- argN="this is valN"
- }
- documentclass{article}
- usepackage{xparse}
- ExplSyntaxOn
- NewDocumentCommand kvargcommand { +m +m }
- {
- omnesia_kvargcommand:nn { #1 } { #2 }
- }
- cs_new_protected:Npn omnesia_kvargcommand:nn #1 #2
- {
- group_begin:
- keys_set:nn { omnesia / kvargcommand } { #1 }
- cs_set:Npn omnesia_action:nnnnnnnnn ##1 ##2 ##3 ##4 ##5 ##6 ##7 ##8 ##9 { #2 }
- cs_set:Npx __omnesia_tmp:w
- {
- exp_not:N omnesia_action:nnnnnnnnn
- { exp_not:V l_omnesia_arg_i_tl }
- { exp_not:V l_omnesia_arg_ii_tl }
- { exp_not:V l_omnesia_arg_iii_tl }
- { exp_not:V l_omnesia_arg_iv_tl }
- { exp_not:V l_omnesia_arg_v_tl }
- { exp_not:V l_omnesia_arg_vi_tl }
- { exp_not:V l_omnesia_arg_vii_tl }
- { exp_not:V l_omnesia_arg_viii_tl }
- { exp_not:V l_omnesia_arg_ix_tl }
- }
- __omnesia_tmp:w
- group_end:
- }
- keys_define:nn { omnesia / kvargcommand }
- {
- opt1 .tl_set:N = l_omnesia_arg_i_tl ,
- opt2 .tl_set:N = l_omnesia_arg_ii_tl ,
- opt3 .tl_set:N = l_omnesia_arg_iii_tl ,
- opt4 .tl_set:N = l_omnesia_arg_iv_tl ,
- opt5 .tl_set:N = l_omnesia_arg_v_tl ,
- opt6 .tl_set:N = l_omnesia_arg_vi_tl ,
- opt7 .tl_set:N = l_omnesia_arg_vii_tl ,
- opt8 .tl_set:N = l_omnesia_arg_viii_tl ,
- opt9 .tl_set:N = l_omnesia_arg_ix_tl ,
- }
- ExplSyntaxOff
- begin{document}
- kvargcommand{
- opt1 = this is val1,
- opt4 = this is val4,
- opt7 = this is val7,
- opt6 = {this is val6, that contains a comma, so it has to be enclosed in braces},
- }
- {do something with one [#1] and four [#4] and seven [#7], the special case six [[#6]]
- and also some empty ones by default like (#2) and (#3)}
- end{document}
Add Comment
Please, Sign In to add comment