diff options
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3clist.dtx')
-rw-r--r-- | macros/latex/contrib/l3kernel/l3clist.dtx | 216 |
1 files changed, 107 insertions, 109 deletions
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx index 0eaac6a532..8fc2f6870b 100644 --- a/macros/latex/contrib/l3kernel/l3clist.dtx +++ b/macros/latex/contrib/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2023-08-29} +% \date{Released 2023-10-10} % % \maketitle % @@ -123,8 +123,8 @@ % % \begin{function}[added = 2014-07-05] % { -% \clist_const:Nn, \clist_const:Nx, -% \clist_const:cn, \clist_const:cx +% \clist_const:Nn, \clist_const:Ne, +% \clist_const:cn, \clist_const:ce % } % \begin{syntax} % \cs{clist_const:Nn} \meta{clist~var} \Arg{comma list} @@ -216,14 +216,14 @@ % % \begin{function}[added = 2011-09-06] % { -% \clist_set:Nn, \clist_set:NV, -% \clist_set:No, \clist_set:Nx, -% \clist_set:cn, \clist_set:cV, -% \clist_set:co, \clist_set:cx, -% \clist_gset:Nn, \clist_gset:NV, -% \clist_gset:No, \clist_gset:Nx, -% \clist_gset:cn, \clist_gset:cV, -% \clist_gset:co, \clist_gset:cx +% \clist_set:Nn, \clist_set:NV, \clist_set:Ne, +% \clist_set:No, +% \clist_set:cn, \clist_set:cV, \clist_set:ce, +% \clist_set:co, +% \clist_gset:Nn, \clist_gset:NV, \clist_gset:Ne, +% \clist_gset:No, +% \clist_gset:cn, \clist_gset:cV, \clist_gset:ce, +% \clist_gset:co % } % \begin{syntax} % \cs{clist_set:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}| @@ -241,17 +241,17 @@ % \begin{function}[updated = 2011-09-05] % { % \clist_put_left:Nn, \clist_put_left:NV, -% \clist_put_left:Nv, -% \clist_put_left:No, \clist_put_left:Nx, +% \clist_put_left:Nv, \clist_put_left:Ne, +% \clist_put_left:No, % \clist_put_left:cn, \clist_put_left:cV, -% \clist_put_left:cv, -% \clist_put_left:co, \clist_put_left:cx, +% \clist_put_left:cv, \clist_put_left:ce, +% \clist_put_left:co, % \clist_gput_left:Nn, \clist_gput_left:NV, -% \clist_gput_left:Nv, -% \clist_gput_left:No, \clist_gput_left:Nx, +% \clist_gput_left:Nv, \clist_gput_left:Ne, +% \clist_gput_left:No, % \clist_gput_left:cn, \clist_gput_left:cV, -% \clist_gput_left:cv, -% \clist_gput_left:co, \clist_gput_left:cx +% \clist_gput_left:cv, \clist_gput_left:ce, +% \clist_gput_left:co % } % \begin{syntax} % \cs{clist_put_left:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}| @@ -268,17 +268,17 @@ % \begin{function}[updated = 2011-09-05] % { % \clist_put_right:Nn, \clist_put_right:NV, -% \clist_put_right:Nv, -% \clist_put_right:No, \clist_put_right:Nx, +% \clist_put_right:Nv, \clist_put_right:Ne, +% \clist_put_right:No, % \clist_put_right:cn, \clist_put_right:cV, -% \clist_put_right:cv, -% \clist_put_right:co, \clist_put_right:cx, +% \clist_put_right:cv, \clist_put_right:ce, +% \clist_put_right:co, % \clist_gput_right:Nn, \clist_gput_right:NV, -% \clist_gput_right:Nv, -% \clist_gput_right:No, \clist_gput_right:Nx, +% \clist_gput_right:Nv, \clist_gput_right:Ne, +% \clist_gput_right:No, % \clist_gput_right:cn, \clist_gput_right:cV, -% \clist_gput_right:cv, -% \clist_gput_right:co, \clist_gput_right:cx +% \clist_gput_right:cv, \clist_gput_right:ce, +% \clist_gput_right:co % } % \begin{syntax} % \cs{clist_put_right:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}| @@ -444,7 +444,7 @@ % \texttt{n}-type comma lists. % % \begin{function}[rEXP, updated = 2012-06-29] -% {\clist_map_function:NN, \clist_map_function:cN, \clist_map_function:nN} +% {\clist_map_function:NN, \clist_map_function:cN, \clist_map_function:nN, \clist_map_function:eN} % \begin{syntax} % \cs{clist_map_function:NN} \meta{clist~var} \meta{function} % \end{syntax} @@ -548,7 +548,7 @@ % \end{function} % % \begin{function}[EXP, added = 2012-07-13] -% {\clist_count:N, \clist_count:c, \clist_count:n} +% {\clist_count:N, \clist_count:c, \clist_count:n, \clist_count:e} % \begin{syntax} % \cs{clist_count:N} \meta{clist~var} % \end{syntax} @@ -706,10 +706,10 @@ % % \begin{function} % { -% \clist_push:Nn, \clist_push:NV, \clist_push:No, \clist_push:Nx, -% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx, -% \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, \clist_gpush:Nx, -% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx +% \clist_push:Nn, \clist_push:NV, \clist_push:No, +% \clist_push:cn, \clist_push:cV, \clist_push:co, +% \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, +% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, % } % \begin{syntax} % \cs{clist_push:Nn} \meta{clist~var} \Arg{items} @@ -722,7 +722,7 @@ % \section{Using a single item} % % \begin{function}[added = 2014-07-17, EXP] -% {\clist_item:Nn, \clist_item:cn, \clist_item:nn} +% {\clist_item:Nn, \clist_item:cn, \clist_item:nn, \clist_item:en} % \begin{syntax} % \cs{clist_item:Nn} \meta{clist~var} \Arg{int expr} % \end{syntax} @@ -984,15 +984,16 @@ % % \begin{macro} % { -% \clist_const:Nn, \clist_const:cn, -% \clist_const:Nx, \clist_const:cx +% \clist_const:Nn, \clist_const:Ne, \clist_const:Nx, +% \clist_const:cn, \clist_const:ce, \clist_const:cx % } % Creating and initializing a constant comma list is done by % sanitizing all items (stripping spaces and braces). % \begin{macrocode} \cs_new_protected:Npn \clist_const:Nn #1#2 - { \tl_const:Nx #1 { \@@_sanitize:n {#2} } } -\cs_generate_variant:Nn \clist_const:Nn { c , Nx , cx } + { \tl_const:Ne #1 { \@@_sanitize:n {#2} } } +\cs_generate_variant:Nn \clist_const:Nn { Ne , c , ce } +\cs_generate_variant:Nn \clist_const:Nn { Nx , cx } % \end{macrocode} % \end{macro} % @@ -1066,9 +1067,9 @@ % in the case of an empty comma-list. % \begin{macrocode} \cs_new_protected:Npn \clist_set_from_seq:NN - { \@@_set_from_seq:NNNN \clist_clear:N \__kernel_tl_set:Nx } + { \@@_set_from_seq:NNNN \clist_clear:N \__kernel_tl_set:Ne } \cs_new_protected:Npn \clist_gset_from_seq:NN - { \@@_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Nx } + { \@@_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_set_from_seq:NNNN #1#2#3#4 { \seq_if_empty:NTF #4 @@ -1107,9 +1108,9 @@ % a little work to do. % \begin{macrocode} \cs_new_protected:Npn \clist_concat:NNN - { \@@_concat:NNNN \__kernel_tl_set:Nx } + { \@@_concat:NNNN \__kernel_tl_set:Ne } \cs_new_protected:Npn \clist_gconcat:NNN - { \@@_concat:NNNN \__kernel_tl_gset:Nx } + { \@@_concat:NNNN \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_concat:NNNN #1#2#3#4 { #1 #2 @@ -1140,47 +1141,49 @@ % % \begin{macro} % { -% \clist_set:Nn, \clist_set:NV, -% \clist_set:No, \clist_set:Nx, -% \clist_set:cn, \clist_set:cV, -% \clist_set:co, \clist_set:cx +% \clist_set:Nn, \clist_set:NV, \clist_set:Ne, +% \clist_set:No, \clist_set:Nx, +% \clist_set:cn, \clist_set:cV, \clist_set:ce, +% \clist_set:co, \clist_set:cx % } % \begin{macro} % { -% \clist_gset:Nn, \clist_gset:NV, +% \clist_gset:Nn, \clist_gset:NV, \clist_gset:Ne, % \clist_gset:No, \clist_gset:Nx, -% \clist_gset:cn, \clist_gset:cV, -% \clist_gset:co, \clist_gset:cx +% \clist_gset:cn, \clist_gset:cV, \clist_gset:ce, +% \clist_gset:co, \clist_gset:cx, % } % \begin{macrocode} \cs_new_protected:Npn \clist_set:Nn #1#2 - { \__kernel_tl_set:Nx #1 { \@@_sanitize:n {#2} } } + { \__kernel_tl_set:Ne #1 { \@@_sanitize:n {#2} } } \cs_new_protected:Npn \clist_gset:Nn #1#2 - { \__kernel_tl_gset:Nx #1 { \@@_sanitize:n {#2} } } -\cs_generate_variant:Nn \clist_set:Nn { NV , No , Nx , c , cV , co , cx } -\cs_generate_variant:Nn \clist_gset:Nn { NV , No , Nx , c , cV , co , cx } + { \__kernel_tl_gset:Ne #1 { \@@_sanitize:n {#2} } } +\cs_generate_variant:Nn \clist_set:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \clist_set:Nn { No , Nx , co , cx } +\cs_generate_variant:Nn \clist_gset:Nn { NV , Ne , c , cV , ce } +\cs_generate_variant:Nn \clist_gset:Nn { No , Nx , co , cx } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro} % { -% \clist_put_left:Nn, \clist_put_left:NV, -% \clist_put_left:Nv, -% \clist_put_left:No, \clist_put_left:Nx, -% \clist_put_left:cn, \clist_put_left:cV, -% \clist_put_left:cv, -% \clist_put_left:co, \clist_put_left:cx +% \clist_put_left:Nn, \clist_put_left:NV, +% \clist_put_left:Nv, \clist_put_left:Ne, +% \clist_put_left:No, \clist_put_left:Nx, +% \clist_put_left:cn, \clist_put_left:cV, +% \clist_put_left:cv, \clist_put_left:ce, +% \clist_put_left:co, \clist_put_left:cx, % } % \UnitTested % \begin{macro} % { % \clist_gput_left:Nn, \clist_gput_left:NV, -% \clist_gput_left:Nv, +% \clist_gput_left:Nv, \clist_gput_left:Ne, % \clist_gput_left:No, \clist_gput_left:Nx, % \clist_gput_left:cn, \clist_gput_left:cV, -% \clist_gput_left:cv, -% \clist_gput_left:co, \clist_gput_left:cx +% \clist_gput_left:cv, \clist_gput_left:ce, +% \clist_gput_left:co, \clist_gput_left:cx, % } % \UnitTested % \begin{macro}{\@@_put_left:NNNn} @@ -1197,10 +1200,10 @@ #2 \l_@@_internal_clist {#4} #1 #3 \l_@@_internal_clist #3 } -\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , cv , co , cx } -\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , cv , co , cx } +\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \clist_put_left:Nn { No , Nx , co , cx } +\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \clist_gput_left:Nn { No , Nx , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1209,21 +1212,21 @@ % \begin{macro} % { % \clist_put_right:Nn, \clist_put_right:NV, -% \clist_put_right:Nv, +% \clist_put_right:Nv, \clist_put_right:Ne, % \clist_put_right:No, \clist_put_right:Nx, % \clist_put_right:cn, \clist_put_right:cV, -% \clist_put_right:cv, +% \clist_put_right:cv, \clist_put_right:ce, % \clist_put_right:co, \clist_put_right:cx % } % \UnitTested % \begin{macro} % { % \clist_gput_right:Nn, \clist_gput_right:NV, -% \clist_gput_right:Nv, +% \clist_gput_right:Nv, \clist_gput_right:Ne, % \clist_gput_right:No, \clist_gput_right:Nx, % \clist_gput_right:cn, \clist_gput_right:cV, -% \clist_gput_right:cv, -% \clist_gput_right:co, \clist_gput_right:cx +% \clist_gput_right:cv, \clist_gput_right:ce, +% \clist_gput_right:cx, \clist_gput_right:co % } % \UnitTested % \begin{macro}{\@@_put_right:NNNn} @@ -1237,10 +1240,14 @@ #2 \l_@@_internal_clist {#4} #1 #3 #3 \l_@@_internal_clist } -\cs_generate_variant:Nn \clist_put_right:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , cv , co , cx } -\cs_generate_variant:Nn \clist_gput_right:Nn { NV , Nv , No , Nx } -\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , cv , co , cx } +\cs_generate_variant:Nn \clist_put_right:Nn + { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \clist_put_right:Nn + { No , Nx , co , cx } +\cs_generate_variant:Nn \clist_gput_right:Nn + { NV , Nv , Ne , c , cV , cv , ce } +\cs_generate_variant:Nn \clist_gput_right:Nn + { No , Nx , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1288,9 +1295,9 @@ % result can safely be an empty comma list. % \begin{macrocode} \cs_new_protected:Npn \clist_pop:NN - { \@@_pop:NNN \__kernel_tl_set:Nx } + { \@@_pop:NNN \__kernel_tl_set:Ne } \cs_new_protected:Npn \clist_gpop:NN - { \@@_pop:NNN \__kernel_tl_gset:Nx } + { \@@_pop:NNN \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_pop:NNN #1#2#3 { \if_meaning:w #2 \c_empty_clist @@ -1335,9 +1342,9 @@ } \prg_generate_conditional_variant:Nnn \clist_get:NN { c } { T , F , TF } \prg_new_protected_conditional:Npnn \clist_pop:NN #1#2 { T , F , TF } - { \@@_pop_TF:NNN \__kernel_tl_set:Nx #1 #2 } + { \@@_pop_TF:NNN \__kernel_tl_set:Ne #1 #2 } \prg_new_protected_conditional:Npnn \clist_gpop:NN #1#2 { T , F , TF } - { \@@_pop_TF:NNN \__kernel_tl_gset:Nx #1 #2 } + { \@@_pop_TF:NNN \__kernel_tl_gset:Ne #1 #2 } \cs_new_protected:Npn \@@_pop_TF:NNN #1#2#3 { \if_meaning:w #2 \c_empty_clist @@ -1357,32 +1364,20 @@ % % \begin{macro}{ % \clist_push:Nn, \clist_push:NV, \clist_push:No, \clist_push:Nx, -% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx +% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx, % } % \UnitTested % \begin{macro}{ % \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, \clist_gpush:Nx, -% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx +% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx, % } % \UnitTested % Pushing to a comma list is the same as adding on the left. % \begin{macrocode} \cs_new_eq:NN \clist_push:Nn \clist_put_left:Nn -\cs_new_eq:NN \clist_push:NV \clist_put_left:NV -\cs_new_eq:NN \clist_push:No \clist_put_left:No -\cs_new_eq:NN \clist_push:Nx \clist_put_left:Nx -\cs_new_eq:NN \clist_push:cn \clist_put_left:cn -\cs_new_eq:NN \clist_push:cV \clist_put_left:cV -\cs_new_eq:NN \clist_push:co \clist_put_left:co -\cs_new_eq:NN \clist_push:cx \clist_put_left:cx +\cs_generate_variant:Nn \clist_push:Nn { NV , No , Nx , c , cV , co , cx } \cs_new_eq:NN \clist_gpush:Nn \clist_gput_left:Nn -\cs_new_eq:NN \clist_gpush:NV \clist_gput_left:NV -\cs_new_eq:NN \clist_gpush:No \clist_gput_left:No -\cs_new_eq:NN \clist_gpush:Nx \clist_gput_left:Nx -\cs_new_eq:NN \clist_gpush:cn \clist_gput_left:cn -\cs_new_eq:NN \clist_gpush:cV \clist_gput_left:cV -\cs_new_eq:NN \clist_gpush:co \clist_gput_left:co -\cs_new_eq:NN \clist_gpush:cx \clist_gput_left:cx +\cs_generate_variant:Nn \clist_gpush:Nn { NV , No , Nx , c , cV , co , cx } % \end{macrocode} % \end{macro} % \end{macro} @@ -1415,7 +1410,7 @@ { \clist_if_in:NnF \l_@@_internal_remove_clist {##1} { - \tl_put_right:Nx \l_@@_internal_remove_clist + \tl_put_right:Ne \l_@@_internal_remove_clist { \clist_if_empty:NF \l_@@_internal_remove_clist { , } \@@_if_wrap:nTF {##1} { \exp_not:n { {##1} } } { \exp_not:n {##1} } @@ -1478,9 +1473,9 @@ % the second step removes it. % \begin{macrocode} \cs_new_protected:Npn \clist_remove_all:Nn - { \@@_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Nx } + { \@@_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Ne } \cs_new_protected:Npn \clist_gremove_all:Nn - { \@@_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Nx } + { \@@_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Ne } \cs_new_protected:Npn \@@_remove_all:NNNn #1#2#3#4 { \@@_if_wrap:nTF {#4} @@ -1534,9 +1529,9 @@ % \texttt{N}-type comma lists, but the slow-down is not too bad. % \begin{macrocode} \cs_new_protected:Npn \clist_reverse:N #1 - { \__kernel_tl_set:Nx #1 { \exp_args:No \clist_reverse:n {#1} } } + { \__kernel_tl_set:Ne #1 { \exp_args:No \clist_reverse:n {#1} } } \cs_new_protected:Npn \clist_greverse:N #1 - { \__kernel_tl_gset:Nx #1 { \exp_args:No \clist_reverse:n {#1} } } + { \__kernel_tl_gset:Ne #1 { \exp_args:No \clist_reverse:n {#1} } } \cs_generate_variant:Nn \clist_reverse:N { c } \cs_generate_variant:Nn \clist_greverse:N { c } % \end{macrocode} @@ -1657,7 +1652,7 @@ { \@@_if_wrap:nTF {#2} { - \cs_set:Npx \@@_tmp:w ##1 + \cs_set:Npe \@@_tmp:w ##1 { \exp_not:N \tl_if_eq:nnT {##1} \exp_not:n @@ -1726,7 +1721,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\clist_map_function:nN} +% \begin{macro}{\clist_map_function:nN, \clist_map_function:eN} % \UnitTested % \begin{macro}{\@@_map_function_n:Nn} % \begin{macro}{\@@_map_unbrace:wn} @@ -1745,6 +1740,7 @@ \s_@@_stop \clist_map_break: , \prg_break_point:Nn \clist_map_break: { } } +\cs_generate_variant:Nn \clist_map_function:nN { e } \cs_new:Npn \@@_map_function_n:Nn #1 #2 { \@@_use_none_delimit_by_s_stop:w #2 \s_@@_stop @@ -1893,7 +1889,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\clist_count:N, \clist_count:c, \clist_count:n} +% \begin{macro}{\clist_count:N, \clist_count:c, \clist_count:n, \clist_count:e} % \begin{macro}{\@@_count:n} % \begin{macro}{\@@_count:w} % Counting the items in a comma list is done using the same approach as for @@ -1933,6 +1929,7 @@ } } \exp_args:No \@@_tmp:w \c_space_tl +\cs_generate_variant:Nn \clist_count:n { e } % \end{macrocode} % \end{macro} % \end{macro} @@ -2110,7 +2107,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\clist_item:nn} +% \begin{macro}{\clist_item:nn, \clist_item:en} % \begin{macro}{ % \@@_item_n:nw, % \@@_item_n_loop:nw, @@ -2130,6 +2127,7 @@ {#1} \@@_item_n:nw } +\cs_generate_variant:Nn \clist_item:nn { e } \cs_new:Npn \@@_item_n:nw #1 { \@@_item_n_loop:nw {#1} \prg_do_nothing: } \cs_new:Npn \@@_item_n_loop:nw #1 #2, @@ -2188,9 +2186,9 @@ % |#2| serving as a dummy code to prevent a check performed by this % auxiliary. % \begin{macrocode} -\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nnxxxx } +\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nneeee } \cs_generate_variant:Nn \clist_show:N { c } -\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nnxxxx } +\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nneeee } \cs_generate_variant:Nn \clist_log:N { c } \cs_new_protected:Npn \@@_show:NN #1#2 { @@ -2205,7 +2203,7 @@ { } { } } { - \msg_error:nnxx { clist } { non-clist } + \msg_error:nnee { clist } { non-clist } { \token_to_str:N #2 } { \tl_to_str:N #2 } } } @@ -2217,8 +2215,8 @@ % A variant of the above: no existence check, empty first argument for % the message. % \begin{macrocode} -\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nnxxxx } -\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nnxxxx } +\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nneeee } +\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nneeee } \cs_new_protected:Npn \@@_show:Nn #1#2 { #1 { clist } { show } |