\LeadsheetsExplLibrary{shorthands} {2014/08/10 definition and activation of shorthands} \seq_new:N \l__leadsheets_shorthands_seq \group_begin: \char_set_catcode_active:N \~ \cs_new_protected:Npn \leadsheets_define_shorthand:Npn #1 { \seq_if_in:NnF \l__leadsheets_shorthands_seq {#1} { \seq_put_right:Nn \l__leadsheets_shorthands_seq {#1} } \group_begin: \__leadsheets_define_shorthand_aux_i:np {#1} } \cs_new_protected:Npn \__leadsheets_define_shorthand_aux_i:np #1#2#{ \char_set_lccode:nn {`~} {`#1} \__leadsheets_define_shorthand_aux_ii:nn {#2} } \cs_new_protected:Npn \__leadsheets_define_shorthand_aux_ii:nn #1#2 { \tl_to_lowercase:n { \group_end: \cs_set:Npn ~ } #1 {#2} } \group_end: \cs_new_protected:Npn \leadsheets_activate_shorthands:n #1 { \tl_map_inline:nn {#1} { \seq_if_in:NnT \l__leadsheets_shorthands_seq {##1} { \char_set_catcode_active:N ##1 } } } \cs_new_protected:Npn \leadsheets_activate_all_shorthands: { \seq_map_inline:Nn \l__leadsheets_shorthands_seq { \char_set_catcode_active:N ##1 } } \endinput