I am new to LaTeX and I am trying to iterate on the available solution that I found on LaTeX Stack Exchange.
Code: Select all
Code, edit and compile here:
% Credit: https://tex.stackexchange.com/questions/215563/storing-an-array-of-strings-in-a-command\ExplSyntaxOn% Some commands are declared with NewDocumentCommand and NewExpandableDocumentCommand because \ExplSyntaxOn messes up with text% (produces no spaces)\NewDocumentCommand{\storedata}{m % #1: <token list> array name; for example, ``a_wonderful_name_for_my_array"m % #2: <sequence> that stores braced list of values; for example, ``{one}{two}{three}"}{\au_store_data:nn { #1 } { #2 }}\NewDocumentCommand{\appenddata}{m % #1: <token list> array name; for example, ``a_wonderful_name_for_my_array"m % #2: <sequence> of values to append; for example, ``{one}{two}{three}"}{\au_append_data:nn { #1 } { #2 }}\NewExpandableDocumentCommand{\getdata}{O{1} % #1: <integer expression> that evalues to the accessed indexm % #2: <token list> array name; for example, ``a_wonderful_name_for_my_array"}{\au_get_data:nn { #1 } { #2 }}\NewExpandableDocumentCommand{\getlength}{m % #1: <token list> array name; for example, ``a_wonderful_name_for_my_array"}{\au_get_length:n { #1 }}\NewDocumentCommand{\removelast}{o % #1: <cname> output variable prefixed with a '\'; for example, scratch variable ``\l_tmpa_tl" or ``\scope_module_description_type"m % #2: <token list> array name; for example, ``a_wonderful_name_for_my_array"}
Code: Select all
Code, edit and compile here:
\cs_new_protected:Npn \au_get_internal_seq_name_by_array_name:n#1 % <token list> array name; for example, ``a_wonderful_name_for_my_array"{\tl_set_eq:NN \l_tmpa_tl \g_au_internal_seq_prefix_tl\tl_put_right:Nn \l_tmpa_tl { #1 }\tl_put_right:NV \l_tmpa_tl \g_au_internal_seq_prefix_tl\tl:use:N \l_tmpa_tl}
Code: Select all
Code, edit and compile here:
\cs_new_protected:Npn \au_store_data:nn#1 % <token list> array name; for example, ``a_wonderful_name_for_my_array"#2 % <sequence> that stores braced list of values; for example, ``{one}{two}{three}"{% create the sequence if it doesn't exist or clear it if it exists%\seq_clear_new:c { l_au_data_#1_seq }\seq_clear_new:c { \tl_use:N \au_get_internal_seq_name_by_array_name:n{ #1 } }% append the items\__au_append_data:nn { #1 } { #2 }}