diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx | 428 |
1 files changed, 310 insertions, 118 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 2ddf658d7a5..00137d96bed 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -7,7 +7,7 @@ % license or (at your option) any later version. The latest version % of this license is in the file % -% http://www.latex-project.org/lppl.txt +% https://www.latex-project.org/lppl.txt % % This file is part of the "l3kernel bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -21,7 +21,7 @@ % for those people who are interested. % %<*driver> -\documentclass[full]{l3doc} +\documentclass[full,kernel]{l3doc} \begin{document} \DocInput{\jobname.dtx} \end{document} @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -94,7 +94,9 @@ % can be used in the \meta{list} are % \begin{itemize} % \item \texttt{check-declarations} that checks all \pkg{expl3} -% variables used were previously declared; +% variables used were previously declared and that local/global +% variables (based on their name or on their first assignment) are +% only locally/globally assigned; % \item \texttt{check-expressions} that checks integer, dimension, % skip, and muskip expressions are not terminated prematurely; % \item \texttt{deprecation} that makes soon-to-be-deprecated commands produce errors; @@ -107,6 +109,17 @@ % loaded with \texttt{enable-debug} or another option implying it. % \end{function} % +% \begin{function}[added = 2017-11-28]{\debug_suspend:, \debug_resume:} +% \begin{syntax} +% \cs{debug_suspend:} \ldots{} \cs{debug_resume:} +% \end{syntax} +% Suppress (locally) errors and logging from \texttt{debug} commands, +% except for the \texttt{deprecation} errors or warnings. These pairs +% of commands can be nested. This can be used around pieces of code +% that are known to fail checks, if such failures should be ignored. +% See for instance \pkg{l3coffins}. +% \end{function} +% % \begin{function}[added = 2017-07-04]{\mode_leave_vertical:} % \begin{syntax} % \cs{mode_leave_vertical:} @@ -357,6 +370,66 @@ % space might be removed as well. % \end{function} % +% \begin{function}[added = 2017-12-04]{\msg_show_eval:Nn, \msg_log_eval:Nn} +% \begin{syntax} +% \cs{msg_show_eval:Nn} \meta{function} \Arg{expression} +% \end{syntax} +% Shows or logs the \meta{expression} (turned into a string), an equal +% sign, and the result of applying the \meta{function} to the +% \Arg{expression} (with \texttt{f}-expansion). For instance, if the +% \meta{function} is \cs{int_eval:n} and the \meta{expression} is +% |1+2| then this logs |> 1+2=3.| +% \end{function} +% +% \begin{function}[added = 2017-12-04] +% { +% \msg_show:nnnnnn , +% \msg_show:nnnnn , +% \msg_show:nnnn , +% \msg_show:nnn , +% \msg_show:nn , +% \msg_show:nnxxxx , +% \msg_show:nnxxx , +% \msg_show:nnxx , +% \msg_show:nnx +% } +% \begin{syntax} +% \cs{msg_show:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} +% \end{syntax} +% Issues \meta{module} information \meta{message}, passing \meta{arg +% one} to \meta{arg four} to the text-creating functions. The +% information text is shown on the terminal and the \TeX{} run is +% interrupted in a manner similar to \cs{tl_show:n}. This is used in +% conjunction with \cs{msg_show_item:n} and similar functions to print +% complex variable contents completely. If the formatted text does +% not contain |>~| at the start of a line, an additional line |>~.| +% will be put at the end. In addition, a final period is added if not +% present. +% \end{function} +% +% \begin{function}[EXP, added = 2017-12-04] +% {\msg_show_item:n, \msg_show_item_unbraced:n, \msg_show_item:nn, \msg_show_item_unbraced:nn} +% \begin{syntax} +% \cs{seq_map_function:NN} \meta{seq} \cs{msg_show_item:n} +% \cs{prop_map_function:NN} \meta{prop} \cs{msg_show_item:nn} +% \end{syntax} +% Used in the text of messages for \cs{msg_show:nnxxxx} to show or log +% a list of items or key--value pairs. The one-argument functions are +% used for sequences, clist or token lists and the others for property +% lists. These functions turn their arguments to strings. +% \end{function} +% +% \section{Additions to \pkg{l3prg}} +% +% \begin{function}[added = 2017-11-28]{\bool_const:Nn, \bool_const:cn} +% \begin{syntax} +% \cs{bool_const:Nn} \meta{boolean} \Arg{boolexpr} +% \end{syntax} +% Creates a new constant \meta{boolean} or raises an error if the name +% is already taken. The value of the \meta{boolean} is set globally to +% the result of evaluating the \meta{boolexpr}. +% \end{function} +% % \section{Additions to \pkg{l3prop}} % % \begin{function}[EXP]{\prop_count:N, \prop_count:c} @@ -402,6 +475,36 @@ % \end{texnote} % \end{function} % +% \begin{function}[added = 2017-11-28] +% { +% \prop_set_from_keyval:Nn, \prop_set_from_keyval:cn, +% \prop_gset_from_keyval:Nn, \prop_gset_from_keyval:cn, +% } +% \begin{syntax} +% \cs{prop_set_from_keyval:Nn} \meta{prop~var} +% \{ +% \meta{key1} |=| \meta{value1} |,| +% \meta{key2} |=| \meta{value2} |,| \ldots{} +% \} +% \end{syntax} +% Sets \meta{prop~var} to contain key--value pairs given in the second +% argument. +% \end{function} +% +% \begin{function}[added = 2017-11-28] +% {\prop_const_from_keyval:Nn, \prop_const_from_keyval:cn} +% \begin{syntax} +% \cs{prop_const_from_keyval:Nn} \meta{prop~var} +% \{ +% \meta{key1} |=| \meta{value1} |,| +% \meta{key2} |=| \meta{value2} |,| \ldots{} +% \} +% \end{syntax} +% Creates a new constant \meta{prop~var} or raises an error if the +% name is already taken. The \meta{prop~var} is set globally to +% contain key--value pairs given in the second argument. +% \end{function} +% % \section{Additions to \pkg{l3seq}} % % \begin{function}[rEXP] @@ -470,6 +573,16 @@ % \end{texnote} % \end{function} % +% \begin{function}[added = 2017-11-28] +% {\seq_const_from_clist:Nn, \seq_const_from_clist:cn} +% \begin{syntax} +% \cs{seq_const_from_clist:Nn} \meta{seq~var} \Arg{comma-list} +% \end{syntax} +% Creates a new constant \meta{seq~var} or raises an error if the name +% is already taken. The \meta{seq~var} is set globally to contain the +% items in the \meta{comma list}. +% \end{function} +% % \section{Additions to \pkg{l3skip}} % % \begin{function}{\skip_split_finite_else_action:nnNN} @@ -1027,14 +1140,13 @@ % Trimming from the left- and right-hand edges of the box is easy: kern the % appropriate parts off each side. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} { (#4) } {#5} } \cs_new_protected:Npn \box_trim:Nnnnn #1#2#3#4#5 { \hbox_set:Nn \l_@@_internal_box { - \tex_kern:D -\__dim_eval:w #2 \__dim_eval_end: + \tex_kern:D - \__dim_eval:n {#2} \box_use:N #1 - \tex_kern:D -\__dim_eval:w #4 \__dim_eval_end: + \tex_kern:D - \__dim_eval:n {#4} } % \end{macrocode} % For the height and depth, there is a need to watch the baseline is @@ -1094,14 +1206,13 @@ % dimensions. As a result, there are some things to watch out for in the % vertical direction. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } {#3} { (#4) } {#5} } \cs_new_protected:Npn \box_viewport:Nnnnn #1#2#3#4#5 { \hbox_set:Nn \l_@@_internal_box { - \tex_kern:D -\__dim_eval:w #2 \__dim_eval_end: + \tex_kern:D - \__dim_eval:n {#2} \box_use:N #1 - \tex_kern:D \__dim_eval:w #4 - \box_wd:N #1 \__dim_eval_end: + \tex_kern:D \__dim_eval:n { #4 - \box_wd:N #1 } } \dim_compare:nNnTF {#3} < \c_zero_dim { @@ -1110,7 +1221,7 @@ \box_move_down:nn \c_zero_dim { \box_use:N \l_@@_internal_box } } - \box_set_dp:Nn \l_@@_internal_box { -\dim_eval:n {#3} } + \box_set_dp:Nn \l_@@_internal_box { - \__dim_eval:n {#3} } } { \hbox_set:Nn \l_@@_internal_box @@ -1134,7 +1245,7 @@ { \hbox_set:Nn \l_@@_internal_box { - \box_move_up:nn { -\dim_eval:n {#5} } + \box_move_up:nn { - \__dim_eval:n {#5} } { \box_use:N \l_@@_internal_box } } \box_set_ht:Nn \l_@@_internal_box \c_zero_dim @@ -1152,7 +1263,7 @@ % \end{macrocode} % % \begin{macro}{\clist_rand_item:n, \clist_rand_item:N, \clist_rand_item:c} -% \begin{macro}[aux]{\@@_rand_item:nn} +% \begin{macro}{\@@_rand_item:nn} % The |N|-type function is not implemented through the |n|-type % function for efficiency: for instance comma-list variables do not % require space-trimming of their items. Even testing for emptyness @@ -1274,9 +1385,8 @@ \hbox_set:Nn \l_@@_internal_box { \tex_kern:D - \__dim_eval:w - \l_@@_bounding_shift_dim - \l_@@_left_corner_dim - \__dim_eval_end: + \__dim_eval:n + { \l_@@_bounding_shift_dim - \l_@@_left_corner_dim } \box_move_down:nn { \l_@@_bottom_corner_dim } { \box_use:N #1 } } @@ -1401,7 +1511,7 @@ % \end{macro} % % \begin{macro}{\@@_find_corner_maxima:N} -% \begin{macro}[aux]{\@@_find_corner_maxima_aux:nn} +% \begin{macro}{\@@_find_corner_maxima_aux:nn} % The idea here is to find the extremities of the content of the % coffin. This is done by looking for the smallest values for the bottom % and left corners, and the largest values for the top and right @@ -1433,7 +1543,7 @@ % \end{macro} % % \begin{macro}{\@@_find_bounding_shift:} -% \begin{macro}[aux]{\@@_find_bounding_shift_aux:nn} +% \begin{macro}{\@@_find_bounding_shift_aux:nn} % The approach to finding the shift for the bounding box is similar to % that for the corners. However, there is only one value needed here and % a fixed input property list, so things are a bit clearer. @@ -1646,7 +1756,7 @@ % % \begin{macro} % {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN} -% \begin{macro}[aux]{\@@_get_details:nnN} +% \begin{macro}{\@@_get_details:nnN} % These are all wrappers around the \pdfTeX{} primitives doing the same % jobs: as we want consistent file paths to be found, they are all set up % using \cs{file_get_full_name:nN} and so are non-expandable \texttt{get} @@ -1723,16 +1833,16 @@ % \begin{macrocode} \cs_new_protected:Npn \file_if_exist_input:n #1 { - \file_get_full_name:nN {#1} \l__file_full_name_str - \str_if_empty:NF \l__file_full_name_str - { \@@_input:V \l__file_full_name_str } + \file_get_full_name:nN {#1} \l_@@_full_name_str + \str_if_empty:NF \l_@@_full_name_str + { \@@_input:V \l_@@_full_name_str } } \cs_new_protected:Npn \file_if_exist_input:nF #1#2 { - \file_get_full_name:nN {#1} \l__file_full_name_str - \str_if_empty:NTF \l__file_full_name_str + \file_get_full_name:nN {#1} \l_@@_full_name_str + \str_if_empty:NTF \l_@@_full_name_str {#2} - { \@@_input:V \l__file_full_name_str } + { \@@_input:V \l_@@_full_name_str } } % \end{macrocode} % \end{macro} @@ -1744,17 +1854,17 @@ { \file_if_exist:nTF and~ \file_input:n } \cs_new_protected:Npn \file_if_exist_input:nTF #1#2#3 { - \file_get_full_name:nN {#1} \l__file_full_name_str - \str_if_empty:NTF \l__file_full_name_str - {#3} { #2 \@@_input:V \l__file_full_name_str } + \file_get_full_name:nN {#1} \l_@@_full_name_str + \str_if_empty:NTF \l_@@_full_name_str + {#3} { #2 \@@_input:V \l_@@_full_name_str } } \__debug_deprecation:nnNNpn { 2017-12-31 } { \file_if_exist:nT and~ \file_input:n } \cs_new_protected:Npn \file_if_exist_input:nT #1#2 { - \file_get_full_name:nN {#1} \l__file_full_name_str - \str_if_empty:NF \l__file_full_name_str - { #2 \@@_input:V \l__file_full_name_str } + \file_get_full_name:nN {#1} \l_@@_full_name_str + \str_if_empty:NF \l_@@_full_name_str + { #2 \@@_input:V \l_@@_full_name_str } } % \end{macrocode} % \end{macro} @@ -1773,7 +1883,7 @@ % \end{macrocode} % % \begin{macro}[EXP]{\int_rand:nn} -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_rand:ww, \@@_rand_narrow:n, % \@@_rand_narrow:nnn, \@@_rand_narrow:nnnn @@ -1793,12 +1903,16 @@ % \begin{macrocode} \cs_if_exist:NTF \pdftex_uniformdeviate:D { - \__debug_patch_args:nNNpn { { (#1) } { (#2) } } + \__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_rand:nn } + { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_rand:nn } + } \cs_new:Npn \int_rand:nn #1#2 { \exp_after:wN \@@_rand:ww - \__int_value:w \__int_eval:w #1 \exp_after:wN ; - \__int_value:w \__int_eval:w #2 ; + \@@_value:w \@@_eval:w #1 \exp_after:wN ; + \@@_value:w \@@_eval:w #2 ; } \cs_new:Npn \@@_rand:ww #1; #2; { @@ -1874,7 +1988,7 @@ % \msg_expandable_error:nnff , % \msg_expandable_error:nnf % } -% \begin{macro}[aux]{\__msg_expandable_error_module:nn} +% \begin{macro}{\@@_expandable_error_module:nn} % Pass to an auxiliary the message to display and the module name % \begin{macrocode} \cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6 @@ -1908,6 +2022,73 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\msg_show_eval:Nn, \msg_log_eval:Nn, \@@_show_eval:nnN} +% A short-hand used for \cs{int_show:n} and similar functions that +% passes to \cs{tl_show:n} the result of applying |#1| (a +% function such as \cs{int_eval:n}) to the expression |#2|. The use of +% \texttt{f}-expansion ensures that |#1| is expanded in the scope in which the +% show command is called, rather than in the group created by +% \cs{iow_wrap:nnnN}. This is only important for expressions +% involving the \tn{currentgrouplevel} or \tn{currentgrouptype}. +% On the other hand we want the expression to be converted to a string +% with the usual escape character, hence within the wrapping code. +% \begin{macrocode} +\cs_new_protected:Npn \msg_show_eval:Nn #1#2 + { \exp_args:Nf \@@_show_eval:nnN { #1 {#2} } {#2} \tl_show:n } +\cs_new_protected:Npn \msg_log_eval:Nn #1#2 + { \exp_args:Nf \@@_show_eval:nnN { #1 {#2} } {#2} \tl_log:n } +\cs_new_protected:Npn \@@_show_eval:nnN #1#2#3 { #3 { #2 = #1 } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[EXP]{\msg_show_item:n} +% \begin{macro}[EXP]{\msg_show_item_unbraced:n} +% \begin{macro}[EXP]{\msg_show_item:nn} +% \begin{macro}[EXP]{\msg_show_item_unbraced:nn} +% Each item in the variable is formatted using one of the following +% functions. We cannot use |\\| and so on because these short-hands +% cannot be used inside the arguments of messages, only when defining +% the messages. +% \begin{macrocode} +\cs_new:Npx \msg_show_item:n #1 + { \iow_newline: > ~ \c_space_tl \exp_not:N \tl_to_str:n { {#1} } } +\cs_new:Npx \msg_show_item_unbraced:n #1 + { \iow_newline: > ~ \c_space_tl \exp_not:N \tl_to_str:n {#1} } +\cs_new:Npx \msg_show_item:nn #1#2 + { + \iow_newline: > \use:nn { ~ } { ~ } + \exp_not:N \tl_to_str:n { {#1} } + \use:nn { ~ } { ~ } => \use:nn { ~ } { ~ } + \exp_not:N \tl_to_str:n { {#2} } + } +\cs_new:Npx \msg_show_item_unbraced:nn #1#2 + { + \iow_newline: > \use:nn { ~ } { ~ } + \exp_not:N \tl_to_str:n {#1} + \use:nn { ~ } { ~ } => \use:nn { ~ } { ~ } + \exp_not:N \tl_to_str:n {#2} + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Additions to \pkg{l3prg}} +% +% \begin{macro}[added = 2017-11-28]{\bool_const:Nn, \bool_const:cn} +% A merger between \cs{tl_const:Nn} and \cs{bool_set:Nn}. +% \begin{macrocode} +\__debug_patch:nnNNpn { \__debug_chk_var_scope:NN c #1 } { } +\cs_new_protected:Npn \bool_const:Nn #1#2 + { + \__chk_if_free_cs:N #1 + \tex_global:D \tex_chardef:D #1 = \bool_if_p:n {#2} + } +\cs_generate_variant:Nn \bool_const:Nn { c } +% \end{macrocode} +% \end{macro} +% % \subsection{Additions to \pkg{l3prop}} % % \begin{macrocode} @@ -1915,7 +2096,7 @@ % \end{macrocode} % % \begin{macro}[EXP]{\prop_count:N, \prop_count:c} -% \begin{macro}[aux,EXP]{\@@_count:nn} +% \begin{macro}[EXP]{\@@_count:nn} % Counting the key--value pairs in a property list is done using the % same approach as for other count functions: turn each entry into a % \texttt{+1} then use integer evaluation to actually do the @@ -1936,7 +2117,7 @@ % \end{macro} % % \begin{macro}[rEXP]{\prop_map_tokens:Nn, \prop_map_tokens:cn} -% \begin{macro}[aux]{\@@_map_tokens:nwwn} +% \begin{macro}{\@@_map_tokens:nwwn} % The mapping is very similar to \cs{prop_map_function:NN}. It grabs % one key--value pair at a time, and stops when reaching the marker % key \cs{q_recursion_tail}, which cannot appear in normal keys since @@ -1966,7 +2147,7 @@ % % \begin{macro}[EXP] % {\prop_rand_key_value:N, \prop_rand_key_value:c} -% \begin{macro}[aux, EXP]{\@@_rand:NN, \@@_rand_item:Nw} +% \begin{macro}[EXP]{\@@_rand:NN, \@@_rand_item:Nw} % Contrarily to |clist|, |seq| and |tl|, there is no function to get % an item of a |prop| given an integer between $1$ and the number of % items, so we write the appropriate code. There is no bounds @@ -2008,7 +2189,7 @@ % \seq_mapthread_function:NNN, \seq_mapthread_function:NcN, % \seq_mapthread_function:cNN, \seq_mapthread_function:ccN % } -% \begin{macro}[aux] +% \begin{macro} % { % \@@_mapthread_function:wNN, \@@_mapthread_function:wNw, % \@@_mapthread_function:Nnnwnn @@ -2052,7 +2233,7 @@ % \end{macro} % % \begin{macro}{\seq_set_filter:NNn, \seq_gset_filter:NNn} -% \begin{macro}[aux]{\@@_set_filter:NNNn} +% \begin{macro}{\@@_set_filter:NNNn} % Similar to \cs{seq_map_inline:Nn}, without a % \cs{__prg_break_point:} because the user's code % is performed within the evaluation of a boolean expression, @@ -2076,7 +2257,7 @@ % \end{macro} % % \begin{macro}{\seq_set_map:NNn, \seq_gset_map:NNn} -% \begin{macro}[aux]{\@@_set_map:NNNn} +% \begin{macro}{\@@_set_map:NNNn} % Very similar to \cs{seq_set_filter:NNn}. We could actually % merge the two within a single function, but it would have weird % semantics. @@ -2107,6 +2288,18 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\seq_const_from_clist:Nn, \seq_const_from_clist:cn} +% Almost identical to \cs{seq_set_from_clist:Nn}. +% \begin{macrocode} +\cs_new_protected:Npn \seq_const_from_clist:Nn #1#2 + { + \tl_const:Nx #1 + { \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n } + } +\cs_generate_variant:Nn \seq_const_from_clist:Nn { c } +% \end{macrocode} +% \end{macro} +% % \subsection{Additions to \pkg{l3skip}} % % \begin{macrocode} @@ -2170,9 +2363,8 @@ % \begin{macro}{\sys_gset_rand_seed:n} % The primitive always assigns the seed globally. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } \cs_new_protected:Npn \sys_gset_rand_seed:n #1 - { \pdftex_setrandomseed:D \__int_eval:w #1 \__int_eval_end: } + { \pdftex_setrandomseed:D \__int_eval:n {#1} } % \end{macrocode} % \end{macro} % @@ -2332,7 +2524,7 @@ % \end{macro} % % \begin{macro}[EXP]{\tl_reverse_tokens:n} -% \begin{macro}[EXP,aux]{\@@_reverse_group:nn} +% \begin{macro}[EXP]{\@@_reverse_group:nn} % The same as \cs{tl_reverse:n} but with recursion within brace groups. % \begin{macrocode} \cs_new:Npn \tl_reverse_tokens:n #1 @@ -2356,7 +2548,7 @@ } % \end{macrocode} % \end{macro} -% \begin{macro}[EXP,aux]{\@@_act_group_recurse:Nnn} +% \begin{macro}[EXP]{\@@_act_group_recurse:Nnn} % In many applications of \cs{@@_act:NNNnn}, we need to recursively % apply some transformation within brace groups, then output. In this % code, |#1| is the output function, |#2| is the transformation, @@ -2372,7 +2564,7 @@ % \end{macro} % % \begin{macro}[EXP]{\tl_count_tokens:n} -% \begin{macro}[EXP,aux]{\@@_act_count_normal:nN, +% \begin{macro}[EXP]{\@@_act_count_normal:nN, % \@@_act_count_group:nn, \@@_act_count_space:n} % The token count is computed through an \cs{int_eval:n} construction. % Each \texttt{1+} is output to the \emph{left}, into the integer @@ -2405,8 +2597,8 @@ % \tl_set_from_file:Nnn, \tl_set_from_file:cnn, % \tl_gset_from_file:Nnn, \tl_gset_from_file:cnn % } -% \begin{macro}[aux]{\@@_set_from_file:NNnn} -% \begin{macro}[aux]{\@@_from_file_do:w} +% \begin{macro}{\@@_set_from_file:NNnn} +% \begin{macro}{\@@_from_file_do:w} % The approach here is similar to that for doing a rescan, and so the same % internals can be reused. Thus the plan is to insert a pair of tokens of % the same charcode but different catcodes after the file has been read. @@ -2450,7 +2642,7 @@ % \tl_set_from_file_x:Nnn, \tl_set_from_file_x:cnn, % \tl_gset_from_file_x:Nnn, \tl_gset_from_file_x:cnn % } -% \begin{macro}[aux]{\@@_set_from_file_x:NNnn} +% \begin{macro}{\@@_set_from_file_x:NNnn} % When reading a file and allowing expansion of the content, the set up % only needs to prevent \TeX{} complaining about the end of the file. That % is done simply, with a group then used to trap the definition needed. @@ -2512,10 +2704,10 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_change_case:nnn} -% \begin{macro}[aux, EXP]{\@@_change_case_aux:nnn} -% \begin{macro}[aux, EXP]{\@@_change_case_loop:wnn} -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP]{\@@_change_case:nnn} +% \begin{macro}[EXP]{\@@_change_case_aux:nnn} +% \begin{macro}[EXP]{\@@_change_case_loop:wnn} +% \begin{macro}[EXP] % { % \@@_change_case_output:nwn , % \@@_change_case_output:Vwn , @@ -2523,58 +2715,58 @@ % \@@_change_case_output:vwn , % \@@_change_case_output:fwn , % } -% \begin{macro}[aux, EXP]{\@@_change_case_end:wn} -% \begin{macro}[aux, EXP]{\@@_change_case_group:nwnn} -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP]{\@@_change_case_end:wn} +% \begin{macro}[EXP]{\@@_change_case_group:nwnn} +% \begin{macro}[EXP] % { % \@@_change_case_group_lower:nnnn , % \@@_change_case_group_upper:nnnn , % \@@_change_case_group_mixed:nnnn % } -% \begin{macro}[aux, EXP]{\@@_change_case_space:wnn} -% \begin{macro}[aux, EXP]{\@@_change_case_N_type:Nwnn} -% \begin{macro}[aux, EXP]{\@@_change_case_N_type:NNNnnn} -% \begin{macro}[aux, EXP]{\@@_change_case_math:NNNnnn} -% \begin{macro}[aux, EXP]{\@@_change_case_math_loop:wNNnn} -% \begin{macro}[aux, EXP]{\@@_change_case_math:NwNNnn} -% \begin{macro}[aux, EXP]{\@@_change_case_math_group:nwNNnn} -% \begin{macro}[aux, EXP]{\@@_change_case_math_space:wNNnn} -% \begin{macro}[aux, EXP]{\@@_change_case_N_type:Nnnn} -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP]{\@@_change_case_space:wnn} +% \begin{macro}[EXP]{\@@_change_case_N_type:Nwnn} +% \begin{macro}[EXP]{\@@_change_case_N_type:NNNnnn} +% \begin{macro}[EXP]{\@@_change_case_math:NNNnnn} +% \begin{macro}[EXP]{\@@_change_case_math_loop:wNNnn} +% \begin{macro}[EXP]{\@@_change_case_math:NwNNnn} +% \begin{macro}[EXP]{\@@_change_case_math_group:nwNNnn} +% \begin{macro}[EXP]{\@@_change_case_math_space:wNNnn} +% \begin{macro}[EXP]{\@@_change_case_N_type:Nnnn} +% \begin{macro}[EXP] % { % \@@_change_case_char_lower:Nnn , % \@@_change_case_char_upper:Nnn , % \@@_change_case_char_mixed:Nnn % } -% \begin{macro}[aux, EXP]{\@@_change_case_char:nN} -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP]{\@@_change_case_char:nN} +% \begin{macro}[EXP] % {\@@_change_case_char_auxi:nN, \@@_change_case_char_auxii:nN} -% \begin{macro}[aux, EXP] +% \begin{macro}[EXP] % { % \@@_change_case_char_mixed:N, % \@@_change_case_char_lower:N, % \@@_change_case_char_upper:N % } -% \begin{macro}[aux] +% \begin{macro} % {\@@_lookup_mixed:N, \@@_lookup_lower:N, \@@_lookup_upper:N} -% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFviii:nNN} -% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFviii:nNNN} -% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFviii:nNNNN} -% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFviii:nn} -% \begin{macro}[aux, EXP]{\@@_change_case_cs_letterlike:Nn} -% \begin{macro}[aux, EXP]{\@@_change_case_cs_letterlike:NnN} -% \begin{macro}[aux, EXP]{\@@_change_case_cs_accents:NN} -% \begin{macro}[aux, EXP]{\@@_change_case_cs:N} -% \begin{macro}[aux, EXP]{\@@_change_case_cs:NN} -% \begin{macro}[aux, EXP]{\@@_change_case_cs:NNn} -% \begin{macro}[aux, EXP]{\@@_change_case_protect:wNN} -% \begin{macro}[aux, EXP]{\@@_change_case_if_expandable:NTF} -% \begin{macro}[aux, EXP]{\@@_change_case_cs_expand:Nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_cs_expand:NN} -% \begin{macro}[aux, EXP]{\@@_change_case_mixed_skip:N} -% \begin{macro}[aux, EXP]{\@@_change_case_mixed_skip:NN} -% \begin{macro}[aux, EXP]{\@@_change_case_mixed_skip_tidy:Nwn} -% \begin{macro}[aux, EXP]{\@@_change_case_mixed_switch:w} +% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nNN} +% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nNNN} +% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nNNNN} +% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nn} +% \begin{macro}[EXP]{\@@_change_case_cs_letterlike:Nn} +% \begin{macro}[EXP]{\@@_change_case_cs_letterlike:NnN} +% \begin{macro}[EXP]{\@@_change_case_cs_accents:NN} +% \begin{macro}[EXP]{\@@_change_case_cs:N} +% \begin{macro}[EXP]{\@@_change_case_cs:NN} +% \begin{macro}[EXP]{\@@_change_case_cs:NNn} +% \begin{macro}[EXP]{\@@_change_case_protect:wNN} +% \begin{macro}[EXP]{\@@_change_case_if_expandable:NTF} +% \begin{macro}[EXP]{\@@_change_case_cs_expand:Nnw} +% \begin{macro}[EXP]{\@@_change_case_cs_expand:NN} +% \begin{macro}[EXP]{\@@_change_case_mixed_skip:N} +% \begin{macro}[EXP]{\@@_change_case_mixed_skip:NN} +% \begin{macro}[EXP]{\@@_change_case_mixed_skip_tidy:Nwn} +% \begin{macro}[EXP]{\@@_change_case_mixed_switch:w} % The mechanism for the core conversion of case is based on the idea that % we can use a loop to grab the entire token list plus a quark: the latter is % used as an end marker and to avoid any brace stripping. Depending on the @@ -3114,10 +3306,10 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_change_case_lower_sigma:Nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_sigma:w} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_sigma:Nw} -% \begin{macro}[aux, EXP]{\@@_change_case_upper_sigma:Nnw} +% \begin{macro}[EXP]{\@@_change_case_lower_sigma:Nnw} +% \begin{macro}[EXP]{\@@_change_case_lower_sigma:w} +% \begin{macro}[EXP]{\@@_change_case_lower_sigma:Nw} +% \begin{macro}[EXP]{\@@_change_case_upper_sigma:Nnw} % If the current char is an upper case sigma, the a check is made on the next % item in the input. If it is \texttt{N}-type and not a control sequence % then there is a look-ahead phase. @@ -3161,12 +3353,12 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_change_case_lower_tr:Nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_tr_auxi:Nw} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_tr_auxii:Nw} -% \begin{macro}[aux, EXP]{\@@_change_case_upper_tr:Nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_az:Nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_upper_az:Nnw} +% \begin{macro}[EXP]{\@@_change_case_lower_tr:Nnw} +% \begin{macro}[EXP]{\@@_change_case_lower_tr_auxi:Nw} +% \begin{macro}[EXP]{\@@_change_case_lower_tr_auxii:Nw} +% \begin{macro}[EXP]{\@@_change_case_upper_tr:Nnw} +% \begin{macro}[EXP]{\@@_change_case_lower_az:Nnw} +% \begin{macro}[EXP]{\@@_change_case_upper_az:Nnw} % The Turkic languages need special treatment for dotted-i and dotless-i. % The lower casing rule can be expressed in terms of searching first for % either a dotless-I or a dotted-I. In the latter case the mapping is @@ -3270,15 +3462,15 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux, EXP]{\@@_change_case_lower_lt:Nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_lt:nNnw} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_lt:nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_lt:Nw} -% \begin{macro}[aux, EXP]{\@@_change_case_lower_lt:NNw} -% \begin{macro}[aux, EXP]{\@@_change_case_upper_lt:Nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_upper_lt:nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_upper_lt:Nw} -% \begin{macro}[aux, EXP]{\@@_change_case_upper_lt:NNw} +% \begin{macro}[EXP]{\@@_change_case_lower_lt:Nnw} +% \begin{macro}[EXP]{\@@_change_case_lower_lt:nNnw} +% \begin{macro}[EXP]{\@@_change_case_lower_lt:nnw} +% \begin{macro}[EXP]{\@@_change_case_lower_lt:Nw} +% \begin{macro}[EXP]{\@@_change_case_lower_lt:NNw} +% \begin{macro}[EXP]{\@@_change_case_upper_lt:Nnw} +% \begin{macro}[EXP]{\@@_change_case_upper_lt:nnw} +% \begin{macro}[EXP]{\@@_change_case_upper_lt:Nw} +% \begin{macro}[EXP]{\@@_change_case_upper_lt:NNw} % For Lithuanian, the issue to be dealt with is dots over lower case % letters: these should be present if there is another accent. That means % that there is some work to do when lower casing I and J. The first step @@ -3428,10 +3620,10 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP, int]{\__unicode_codepoint_to_UTFviii:n} -% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFviii_auxi:n} -% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFviii_auxii:Nnn} -% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFviii_auxiii:n} +% \begin{macro}[EXP]{\__unicode_codepoint_to_UTFviii:n} +% \begin{macro}[EXP]{\__unicode_codepoint_to_UTFviii_auxi:n} +% \begin{macro}[EXP]{\__unicode_codepoint_to_UTFviii_auxii:Nnn} +% \begin{macro}[EXP]{\__unicode_codepoint_to_UTFviii_auxiii:n} % This code converts a codepoint into the correct UTF-8 representation. % As there are a variable number of octets, the result starts with the % numeral |1|--|4| to indicate the nature of the returned value. Note that @@ -3784,9 +3976,9 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}[aux, EXP]{\@@_change_case_mixed_nl:Nnw} -% \begin{macro}[aux, EXP]{\@@_change_case_mixed_nl:Nw} -% \begin{macro}[aux, EXP]{\@@_change_case_mixed_nl:NNw} +% \begin{macro}[EXP]{\@@_change_case_mixed_nl:Nnw} +% \begin{macro}[EXP]{\@@_change_case_mixed_nl:Nw} +% \begin{macro}[EXP]{\@@_change_case_mixed_nl:NNw} % For Dutch, there is a single look-ahead test for \texttt{ij} when % title casing. If the appropriate letters are found, produce \texttt{IJ} % and gobble the \texttt{j}/\texttt{J}. @@ -3895,7 +4087,7 @@ % \begin{macro}{\tl_range_braced:Nnn, \tl_range_braced:cnn, \tl_range_braced:nnn} % \begin{macro} % {\tl_range_unbraced:Nnn, \tl_range_unbraced:cnn, \tl_range_unbraced:nnn} -% \begin{macro}[aux] +% \begin{macro} % { % \@@_range:Nnnn, \@@_range:nnnNn, \@@_range:nnNn, \@@_range_skip:w, % \@@_range_braced:w, \@@_range_collect_braced:w, @@ -4042,7 +4234,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[EXP, aux]{\@@_range_normalize:nn} +% \begin{macro}[EXP]{\@@_range_normalize:nn} % This function converts an \meta{index} argument into an explicit % position in the token list (a result of $0$ denoting \enquote{out of % bounds}). Expects two explicit integer arguments: the \meta{index} @@ -4093,7 +4285,7 @@ % \end{macrocode} % % \begin{macro}[TF]{\peek_N_type:} -% \begin{macro}[aux] +% \begin{macro} % {\@@_execute_branches_N_type:, \@@_N_type:w, \@@_N_type_aux:nnw} % All tokens are \texttt{N}-type tokens, except in four cases: % begin-group tokens, end-group tokens, space tokens with character |