diff options
author | Karl Berry <karl@freefriends.org> | 2016-10-19 20:38:20 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-10-19 20:38:20 +0000 |
commit | 52b787d36c60fda90673669dd2809c95c1fdfca5 (patch) | |
tree | beb7faf87e1ab5be65f7437e500619b20eba20a1 /Master/texmf-dist/source/latex/l3kernel/l3basics.dtx | |
parent | 97a401ad817da2dafd1069df9d87a28ed39df69b (diff) |
l3 (19oct16)
git-svn-id: svn://tug.org/texlive/trunk@42306 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3basics.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3basics.dtx | 232 |
1 files changed, 119 insertions, 113 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 3e2faf912cf..84e6a2c9086 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3basics.dtx Copyright (C) 1990-2015 The LaTeX3 project +%% File: l3basics.dtx Copyright (C) 1990-2016 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3basics.dtx 6315 2015-11-22 22:49:22Z bruno $ +\GetIdInfo$Id: l3basics.dtx 6696 2016-09-01 16:09:52Z bruno $ {L3 Basic definitions} %</driver|package> %<*driver> @@ -147,7 +147,7 @@ % Declaring a function before setting up the code means that the name % chosen will be checked and an error raised if it is already in use. % The name of a function can be checked at the point of definition using -% the \cs{cs_new\ldots} functions: this is recommended for all +% the \cs[no-index]{cs_new\ldots} functions: this is recommended for all % functions which are defined for the first time. % % There are three ways to define new functions. @@ -558,7 +558,7 @@ % \cs_gset_nopar:Nx, \cs_gset_nopar:cx % } % \begin{syntax} -% \cs{cs_gset_nopar:Nn} \meta{function} \Arg{code} +% \cs{cs_git cogset_nopar:Nn} \meta{function} \Arg{code} % \end{syntax} % Sets \meta{function} to expand to \meta{code} as replacement text. % Within the \meta{code}, the number of \meta{parameters} is detected @@ -743,25 +743,16 @@ % \end{verbatim} % after two expansions of \cs{use:c}. % -% \begin{function}[EXP,added = 2012-11-10] +% \begin{function}[noTF, EXP, added = 2012-11-10] % {\cs_if_exist_use:N, \cs_if_exist_use:c} % \begin{syntax} % \cs{cs_if_exist_use:N} \meta{control sequence} -% \end{syntax} -% Tests whether the \meta{control sequence} is currently defined -% (whether as a function or another control sequence type), and if it -% does inserts the \meta{control sequence} into the input stream. -% \end{function} -% -% \begin{function}[TF,EXP, added = 2012-11-10] -% {\cs_if_exist_use:N, \cs_if_exist_use:c} -% \begin{syntax} % \cs{cs_if_exist_use:NTF} \meta{control sequence} \Arg{true code} \Arg{false code} % \end{syntax} % Tests whether the \meta{control sequence} is currently defined % (whether as a function or another control sequence type), and if it -% does inserts the \meta{control sequence} into the input stream followed -% by the \meta{true code}. +% is inserts the \meta{control sequence} into the input stream followed +% by the \meta{true code}. Otherwise the \meta{false code} is used. % \end{function} % % \begin{function}[EXP]{\cs:w, \cs_end:} @@ -1306,7 +1297,7 @@ % These will be defined as needed in the appropriate modules, but % do a few now, just to get started.\footnote{This renaming gets expensive % in terms of csname usage, an alternative scheme would be to just use -% the \cs{tex\ldots:D} name in the cases where no good alternative exists.} +% the \cs[no-index]{tex_\ldots:D} name in the cases where no good alternative exists.} % % \begin{macro}[EXP] % { @@ -1418,7 +1409,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\token_to_meaning:c, \token_to_str:c, \cs_meaning:c} +% \begin{macro}[EXP, documented-as=\token_to_meaning:N] +% {\token_to_meaning:c, \token_to_str:c, \cs_meaning:c} % A small number of variants defined by hand. % Some of the necessary functions % (\cs{use_i:nn}, \cs{use_ii:nn}, and \cs{exp_args:NNc}) are not @@ -1497,18 +1489,18 @@ % \begin{macrocode} \tex_let:D \cs_set_nopar:Npn \tex_def:D \tex_let:D \cs_set_nopar:Npx \tex_edef:D -\etex_protected:D \cs_set_nopar:Npn \cs_set:Npn - { \tex_long:D \cs_set_nopar:Npn } -\etex_protected:D \cs_set_nopar:Npn \cs_set:Npx - { \tex_long:D \cs_set_nopar:Npx } -\etex_protected:D \cs_set_nopar:Npn \cs_set_protected_nopar:Npn - { \etex_protected:D \cs_set_nopar:Npn } -\etex_protected:D \cs_set_nopar:Npn \cs_set_protected_nopar:Npx - { \etex_protected:D \cs_set_nopar:Npx } -\cs_set_protected_nopar:Npn \cs_set_protected:Npn - { \etex_protected:D \tex_long:D \cs_set_nopar:Npn } -\cs_set_protected_nopar:Npn \cs_set_protected:Npx - { \etex_protected:D \tex_long:D \cs_set_nopar:Npx } +\etex_protected:D \tex_long:D \tex_def:D \cs_set:Npn + { \tex_long:D \tex_def:D } +\etex_protected:D \tex_long:D \tex_def:D \cs_set:Npx + { \tex_long:D \tex_edef:D } +\etex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npn + { \etex_protected:D \tex_def:D } +\etex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npx + { \etex_protected:D \tex_edef:D } +\etex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npn + { \etex_protected:D \tex_long:D \tex_def:D } +\etex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npx + { \etex_protected:D \tex_long:D \tex_edef:D } % \end{macrocode} % \end{macro} % @@ -1523,18 +1515,18 @@ % \begin{macrocode} \tex_let:D \cs_gset_nopar:Npn \tex_gdef:D \tex_let:D \cs_gset_nopar:Npx \tex_xdef:D -\cs_set_protected_nopar:Npn \cs_gset:Npn - { \tex_long:D \cs_gset_nopar:Npn } -\cs_set_protected_nopar:Npn \cs_gset:Npx - { \tex_long:D \cs_gset_nopar:Npx } -\cs_set_protected_nopar:Npn \cs_gset_protected_nopar:Npn - { \etex_protected:D \cs_gset_nopar:Npn } -\cs_set_protected_nopar:Npn \cs_gset_protected_nopar:Npx - { \etex_protected:D \cs_gset_nopar:Npx } -\cs_set_protected_nopar:Npn \cs_gset_protected:Npn - { \etex_protected:D \tex_long:D \cs_gset_nopar:Npn } -\cs_set_protected_nopar:Npn \cs_gset_protected:Npx - { \etex_protected:D \tex_long:D \cs_gset_nopar:Npx } +\cs_set_protected:Npn \cs_gset:Npn + { \tex_long:D \tex_gdef:D } +\cs_set_protected:Npn \cs_gset:Npx + { \tex_long:D \tex_xdef:D } +\cs_set_protected:Npn \cs_gset_protected_nopar:Npn + { \etex_protected:D \tex_gdef:D } +\cs_set_protected:Npn \cs_gset_protected_nopar:Npx + { \etex_protected:D \tex_xdef:D } +\cs_set_protected:Npn \cs_gset_protected:Npn + { \etex_protected:D \tex_long:D \tex_gdef:D } +\cs_set_protected:Npn \cs_gset_protected:Npx + { \etex_protected:D \tex_long:D \tex_xdef:D } % \end{macrocode} % \end{macro} % @@ -1703,9 +1695,9 @@ % at least two tokens: see how the logical tests are actually implemented % to see this. % \begin{macrocode} -\cs_set_nopar:Npn \prg_return_true: +\cs_set:Npn \prg_return_true: { \exp_after:wN \use_i:nn \exp:w } -\cs_set_nopar:Npn \prg_return_false: +\cs_set:Npn \prg_return_false: { \exp_after:wN \use_ii:nn \exp:w} % \end{macrocode} % An extended state space could be implemented by including a more @@ -1731,13 +1723,13 @@ % \Arg{code} to the auxiliary function responsible for defining all % conditionals. % \begin{macrocode} -\cs_set_protected_nopar:Npn \prg_set_conditional:Npnn +\cs_set_protected:Npn \prg_set_conditional:Npnn { \__prg_generate_conditional_parm:nnNpnn { set } { } } -\cs_set_protected_nopar:Npn \prg_new_conditional:Npnn +\cs_set_protected:Npn \prg_new_conditional:Npnn { \__prg_generate_conditional_parm:nnNpnn { new } { } } -\cs_set_protected_nopar:Npn \prg_set_protected_conditional:Npnn +\cs_set_protected:Npn \prg_set_protected_conditional:Npnn { \__prg_generate_conditional_parm:nnNpnn { set } { _protected } } -\cs_set_protected_nopar:Npn \prg_new_protected_conditional:Npnn +\cs_set_protected:Npn \prg_new_protected_conditional:Npnn { \__prg_generate_conditional_parm:nnNpnn { new } { _protected } } \cs_set_protected:Npn \__prg_generate_conditional_parm:nnNpnn #1#2#3#4# { @@ -1773,13 +1765,13 @@ % erroneous case where the function name contains no colon is captured % later. % \begin{macrocode} -\cs_set_protected_nopar:Npn \prg_set_conditional:Nnn +\cs_set_protected:Npn \prg_set_conditional:Nnn { \__prg_generate_conditional_count:nnNnn { set } { } } -\cs_set_protected_nopar:Npn \prg_new_conditional:Nnn +\cs_set_protected:Npn \prg_new_conditional:Nnn { \__prg_generate_conditional_count:nnNnn { new } { } } -\cs_set_protected_nopar:Npn \prg_set_protected_conditional:Nnn +\cs_set_protected:Npn \prg_set_protected_conditional:Nnn { \__prg_generate_conditional_count:nnNnn { set } { _protected } } -\cs_set_protected_nopar:Npn \prg_new_protected_conditional:Nnn +\cs_set_protected:Npn \prg_new_protected_conditional:Nnn { \__prg_generate_conditional_count:nnNnn { new } { _protected } } \cs_set_protected:Npn \__prg_generate_conditional_count:nnNnn #1#2#3 { @@ -1926,9 +1918,9 @@ % |,| \cs{q_recursion_stop} % to a first auxiliary. % \begin{macrocode} -\cs_set_protected_nopar:Npn \prg_set_eq_conditional:NNn +\cs_set_protected:Npn \prg_set_eq_conditional:NNn { \__prg_set_eq_conditional:NNNn \cs_set_eq:cc } -\cs_set_protected_nopar:Npn \prg_new_eq_conditional:NNn +\cs_set_protected:Npn \prg_new_eq_conditional:NNn { \__prg_set_eq_conditional:NNNn \cs_new_eq:cc } \cs_set_protected:Npn \__prg_set_eq_conditional:NNNn #1#2#3#4 { @@ -2084,7 +2076,7 @@ % In all three cases, \cs{cs_to_str:N} takes two expansion steps % to be fully expanded. % \begin{macrocode} -\cs_set_nopar:Npn \cs_to_str:N +\cs_set:Npn \cs_to_str:N { % \end{macrocode} % We implement the expansion scheme using \cs{tex_romannumeral:D} @@ -2101,6 +2093,10 @@ \cs_set:Npn \__cs_to_str:w #1 \__cs_to_str:N { - \__int_value:w \fi: \exp_after:wN \c_zero } % \end{macrocode} +% If speed is a concern we could use \tn{csstring} in \LuaTeX{}. For +% the empty csname that primitive gives an empty result while the +% current \cs{cs_to_str:N} gives incorrect results in all engines +% (this is impossible to fix without huge performance hit). % \end{macro} % \end{macro} % @@ -2250,15 +2246,15 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP,TF,added=2011-10-10] +% \begin{macro}[EXP,noTF,added=2011-10-10] % {\cs_if_exist_use:N, \cs_if_exist_use:c} -% \begin{macro}[EXP,added=2011-10-10] -% {\cs_if_exist_use:N, \cs_if_exist_use:c} -% The \cs{cs_if_exist_use:\ldots{}} functions cannot be implemented +% The \cs[index=cs_if_exist_use:N]{cs_if_exist_use:\ldots{}} +% functions cannot be implemented % as conditionals because the true branch must leave both the control % sequence itself and the true code in the input stream. % For the \texttt{c} variants, we are careful not to put the control % sequence in the hash table if it does not exist. +% In \LuaTeX{} we could use the \tn{lastnamedcs} primitive. % \begin{macrocode} \cs_set:Npn \cs_if_exist_use:NTF #1#2 { \cs_if_exist:NTF #1 { #1 #2 } } @@ -2278,7 +2274,6 @@ { \cs_if_exist:cTF {#1} { \use:c {#1} } { } } % \end{macrocode} % \end{macro} -% \end{macro} % % \subsection{Defining and checking (new) functions} % @@ -2292,14 +2287,14 @@ % allow us to generate error messages. The definitions here are % only temporary, they will be redefined later on. % -% \begin{macro}{\iow_log:x, \iow_term:x} +% \begin{macro}[documented-as=\iow_log:n]{\iow_log:x, \iow_term:x} % We define a routine to write only to the log file. And a % similar one for writing to both the log file and the terminal. % These will be redefined later by \pkg{l3io}. % \begin{macrocode} -\cs_set_protected_nopar:Npn \iow_log:x +\cs_set_protected:Npn \iow_log:x { \tex_immediate:D \tex_write:D \c_minus_one } -\cs_set_protected_nopar:Npn \iow_term:x +\cs_set_protected:Npn \iow_term:x { \tex_immediate:D \tex_write:D \c_sixteen } % \end{macrocode} % \end{macro} @@ -2317,29 +2312,29 @@ % before that point. % \begin{macrocode} %<*initex> -\cs_set_protected_nopar:Npn \__chk_log:x { \use_none:n } -\cs_set_protected_nopar:Npn \__chk_suspend_log: { } -\cs_set_protected_nopar:Npn \__chk_resume_log: { } +\cs_set_protected:Npn \__chk_log:x { \use_none:n } +\cs_set_protected:Npn \__chk_suspend_log: { } +\cs_set_protected:Npn \__chk_resume_log: { } %</initex> %<*package> \tex_ifodd:D \l@expl@log@functions@bool - \cs_set_protected_nopar:Npn \__chk_log:x { \iow_log:x } - \cs_set_protected_nopar:Npn \__chk_suspend_log: + \cs_set_protected:Npn \__chk_log:x { \iow_log:x } + \cs_set_protected:Npn \__chk_suspend_log: { - \cs_set_protected_nopar:Npx \__chk_resume_log: + \cs_set_protected:Npx \__chk_resume_log: { - \cs_set_protected_nopar:Npn \__chk_resume_log: + \cs_set_protected:Npn \__chk_resume_log: { \exp_not:o { \__chk_resume_log: } } - \cs_set_protected_nopar:Npn \__chk_log:x + \cs_set_protected:Npn \__chk_log:x { \exp_not:o { \__chk_log:x } } } - \cs_set_protected_nopar:Npn \__chk_log:x { \use_none:n } + \cs_set_protected:Npn \__chk_log:x { \use_none:n } } - \cs_set_protected_nopar:Npn \__chk_resume_log: { } + \cs_set_protected:Npn \__chk_resume_log: { } \else: - \cs_set_protected_nopar:Npn \__chk_log:x { \use_none:n } - \cs_set_protected_nopar:Npn \__chk_suspend_log: { } - \cs_set_protected_nopar:Npn \__chk_resume_log: { } + \cs_set_protected:Npn \__chk_log:x { \use_none:n } + \cs_set_protected:Npn \__chk_suspend_log: { } + \cs_set_protected:Npn \__chk_resume_log: { } \fi: %</package> % \end{macrocode} @@ -2376,7 +2371,7 @@ % \begin{macro}[rEXP]{\msg_line_context:} % Another one from \pkg{l3msg} which will be altered later. % \begin{macrocode} -\cs_set_nopar:Npn \msg_line_context: +\cs_set:Npn \msg_line_context: { on~line~ \tex_the:D \tex_inputlineno:D } % \end{macrocode} % \end{macro} @@ -2411,7 +2406,7 @@ } \fi: %</package> -\cs_set_protected_nopar:Npn \__chk_if_free_cs:c +\cs_set_protected:Npn \__chk_if_free_cs:c { \exp_args:Nc \__chk_if_free_cs:N } % \end{macrocode} % \end{macro} @@ -2447,7 +2442,7 @@ { \token_to_str:N #1 } } } -\cs_set_protected_nopar:Npn \__chk_if_exist_cs:c +\cs_set_protected:Npn \__chk_if_exist_cs:c { \exp_args:Nc \__chk_if_exist_cs:N } % \end{macrocode} % \end{macro} @@ -2485,7 +2480,7 @@ % \end{macro} % \end{macro} % -% \begin{macro} +% \begin{macro}[documented-as=\cs_set_nopar:Npn] % { % \cs_set_nopar:cpn , \cs_set_nopar:cpx , % \cs_gset_nopar:cpn , \cs_gset_nopar:cpx , @@ -2513,7 +2508,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro} +% \begin{macro}[documented-as=\cs_set:Npn] % { % \cs_set:cpn , \cs_set:cpx , % \cs_gset:cpn , \cs_gset:cpx , @@ -2531,7 +2526,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro} +% \begin{macro}[documented-as=\cs_set_protected_nopar:Npn] % { % \cs_set_protected_nopar:cpn , \cs_set_protected_nopar:cpx , % \cs_gset_protected_nopar:cpn , \cs_gset_protected_nopar:cpx , @@ -2549,7 +2544,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro} +% \begin{macro}[documented-as=\cs_set_protected:Npn] % { % \cs_set_protected:cpn , \cs_set_protected:cpx , % \cs_gset_protected:cpn , \cs_gset_protected:cpx , @@ -2589,21 +2584,21 @@ % \enquote{runaway argument}. % \begin{macrocode} \cs_new_protected:Npn \cs_set_eq:NN #1 { \tex_let:D #1 =~ } -\cs_new_protected_nopar:Npn \cs_set_eq:cN { \exp_args:Nc \cs_set_eq:NN } -\cs_new_protected_nopar:Npn \cs_set_eq:Nc { \exp_args:NNc \cs_set_eq:NN } -\cs_new_protected_nopar:Npn \cs_set_eq:cc { \exp_args:Ncc \cs_set_eq:NN } -\cs_new_protected_nopar:Npn \cs_gset_eq:NN { \tex_global:D \cs_set_eq:NN } -\cs_new_protected_nopar:Npn \cs_gset_eq:Nc { \exp_args:NNc \cs_gset_eq:NN } -\cs_new_protected_nopar:Npn \cs_gset_eq:cN { \exp_args:Nc \cs_gset_eq:NN } -\cs_new_protected_nopar:Npn \cs_gset_eq:cc { \exp_args:Ncc \cs_gset_eq:NN } +\cs_new_protected:Npn \cs_set_eq:cN { \exp_args:Nc \cs_set_eq:NN } +\cs_new_protected:Npn \cs_set_eq:Nc { \exp_args:NNc \cs_set_eq:NN } +\cs_new_protected:Npn \cs_set_eq:cc { \exp_args:Ncc \cs_set_eq:NN } +\cs_new_protected:Npn \cs_gset_eq:NN { \tex_global:D \cs_set_eq:NN } +\cs_new_protected:Npn \cs_gset_eq:Nc { \exp_args:NNc \cs_gset_eq:NN } +\cs_new_protected:Npn \cs_gset_eq:cN { \exp_args:Nc \cs_gset_eq:NN } +\cs_new_protected:Npn \cs_gset_eq:cc { \exp_args:Ncc \cs_gset_eq:NN } \cs_new_protected:Npn \cs_new_eq:NN #1 { \__chk_if_free_cs:N #1 \tex_global:D \cs_set_eq:NN #1 } -\cs_new_protected_nopar:Npn \cs_new_eq:cN { \exp_args:Nc \cs_new_eq:NN } -\cs_new_protected_nopar:Npn \cs_new_eq:Nc { \exp_args:NNc \cs_new_eq:NN } -\cs_new_protected_nopar:Npn \cs_new_eq:cc { \exp_args:Ncc \cs_new_eq:NN } +\cs_new_protected:Npn \cs_new_eq:cN { \exp_args:Nc \cs_new_eq:NN } +\cs_new_protected:Npn \cs_new_eq:Nc { \exp_args:NNc \cs_new_eq:NN } +\cs_new_protected:Npn \cs_new_eq:cc { \exp_args:Ncc \cs_new_eq:NN } % \end{macrocode} % \end{macro} % @@ -2700,7 +2695,7 @@ \c_minus_one \fi: } -\cs_new_nopar:Npn \__cs_count_signature:c +\cs_new:Npn \__cs_count_signature:c { \exp_args:Nc \__cs_count_signature:N } % \end{macrocode} % \end{macro} @@ -2737,9 +2732,9 @@ % A variant form we need right away, plus one which is used elsewhere but % which is most logically created here. % \begin{macrocode} -\cs_new_protected_nopar:Npn \cs_generate_from_arg_count:cNnn +\cs_new_protected:Npn \cs_generate_from_arg_count:cNnn { \exp_args:Nc \cs_generate_from_arg_count:NNnn } -\cs_new_protected_nopar:Npn \cs_generate_from_arg_count:Ncnn +\cs_new_protected:Npn \cs_generate_from_arg_count:Ncnn { \exp_args:NNc \cs_generate_from_arg_count:NNnn } % \end{macrocode} % \end{macro} @@ -2781,7 +2776,7 @@ % \begin{macrocode} \cs_set:Npn \__cs_tmp:w #1#2#3 { - \cs_new_protected_nopar:cpx { cs_ #1 : #2 } + \cs_new_protected:cpx { cs_ #1 : #2 } { \exp_not:N \__cs_generate_from_signature:NNn \exp_after:wN \exp_not:N \cs:w cs_ #1 : #3 \cs_end: @@ -2796,6 +2791,12 @@ { \bool_if:NTF #3 { + \str_if_eq_x:nnF { } + { \tl_map_function:nN {#2} \__cs_generate_from_signature:n } + { + \__msg_kernel_error:nnx { kernel } { non-base-function } + { \token_to_str:N #5 } + } \cs_generate_from_arg_count:NNnn #5 #4 { \tl_count:n {#2} } {#6} } @@ -2804,6 +2805,11 @@ { \token_to_str:N #5 } } } +\cs_new:Npn \__cs_generate_from_signature:n #1 + { + \if:w n #1 \else: \if:w N #1 \else: + \if:w T #1 \else: \if:w F #1 \else: #1 \fi: \fi: \fi: \fi: + } % \end{macrocode} % Then we define the 24 variants beginning with |N|. % \begin{macrocode} @@ -2834,7 +2840,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro} +% \begin{macro}[documented-as=\cs_set:Nn] % { % \cs_set:cn , \cs_set:cx , % \cs_set_nopar:cn , \cs_set_nopar:cx , @@ -2853,7 +2859,7 @@ % \begin{macrocode} \cs_set:Npn \__cs_tmp:w #1#2 { - \cs_new_protected_nopar:cpx { cs_ #1 : c #2 } + \cs_new_protected:cpx { cs_ #1 : c #2 } { \exp_not:N \exp_args:Nc \exp_after:wN \exp_not:N \cs:w cs_ #1 : N #2 \cs_end: @@ -2897,18 +2903,18 @@ \if_meaning:w #1#2 \prg_return_true: \else: \prg_return_false: \fi: } -\cs_new_nopar:Npn \cs_if_eq_p:cN { \exp_args:Nc \cs_if_eq_p:NN } -\cs_new_nopar:Npn \cs_if_eq:cNTF { \exp_args:Nc \cs_if_eq:NNTF } -\cs_new_nopar:Npn \cs_if_eq:cNT { \exp_args:Nc \cs_if_eq:NNT } -\cs_new_nopar:Npn \cs_if_eq:cNF { \exp_args:Nc \cs_if_eq:NNF } -\cs_new_nopar:Npn \cs_if_eq_p:Nc { \exp_args:NNc \cs_if_eq_p:NN } -\cs_new_nopar:Npn \cs_if_eq:NcTF { \exp_args:NNc \cs_if_eq:NNTF } -\cs_new_nopar:Npn \cs_if_eq:NcT { \exp_args:NNc \cs_if_eq:NNT } -\cs_new_nopar:Npn \cs_if_eq:NcF { \exp_args:NNc \cs_if_eq:NNF } -\cs_new_nopar:Npn \cs_if_eq_p:cc { \exp_args:Ncc \cs_if_eq_p:NN } -\cs_new_nopar:Npn \cs_if_eq:ccTF { \exp_args:Ncc \cs_if_eq:NNTF } -\cs_new_nopar:Npn \cs_if_eq:ccT { \exp_args:Ncc \cs_if_eq:NNT } -\cs_new_nopar:Npn \cs_if_eq:ccF { \exp_args:Ncc \cs_if_eq:NNF } +\cs_new:Npn \cs_if_eq_p:cN { \exp_args:Nc \cs_if_eq_p:NN } +\cs_new:Npn \cs_if_eq:cNTF { \exp_args:Nc \cs_if_eq:NNTF } +\cs_new:Npn \cs_if_eq:cNT { \exp_args:Nc \cs_if_eq:NNT } +\cs_new:Npn \cs_if_eq:cNF { \exp_args:Nc \cs_if_eq:NNF } +\cs_new:Npn \cs_if_eq_p:Nc { \exp_args:NNc \cs_if_eq_p:NN } +\cs_new:Npn \cs_if_eq:NcTF { \exp_args:NNc \cs_if_eq:NNTF } +\cs_new:Npn \cs_if_eq:NcT { \exp_args:NNc \cs_if_eq:NNT } +\cs_new:Npn \cs_if_eq:NcF { \exp_args:NNc \cs_if_eq:NNF } +\cs_new:Npn \cs_if_eq_p:cc { \exp_args:Ncc \cs_if_eq_p:NN } +\cs_new:Npn \cs_if_eq:ccTF { \exp_args:Ncc \cs_if_eq:NNTF } +\cs_new:Npn \cs_if_eq:ccT { \exp_args:Ncc \cs_if_eq:NNT } +\cs_new:Npn \cs_if_eq:ccF { \exp_args:Ncc \cs_if_eq:NNF } % \end{macrocode} % \end{macro} % @@ -2926,7 +2932,7 @@ \__msg_show_variable:NNNnn #1 \cs_if_exist:NTF ? { } { > ~ \token_to_str:N #1 = \tex_the:D #1 } } -\cs_new_protected_nopar:Npn \__kernel_register_show:c +\cs_new_protected:Npn \__kernel_register_show:c { \exp_args:Nc \__kernel_register_show:N } % \end{macrocode} % \end{macro} @@ -2942,7 +2948,7 @@ % \begin{macrocode} \cs_new_protected:Npn \cs_show:N #1 { \__msg_show_wrap:n { > ~ \token_to_str:N #1 = \cs_meaning:N #1 } } -\cs_new_protected_nopar:Npn \cs_show:c +\cs_new_protected:Npn \cs_show:c { \group_begin: \exp_args:NNc \group_end: \cs_show:N } % \end{macrocode} % \end{macro} |