diff options
author | Karl Berry <karl@freefriends.org> | 2017-12-06 23:56:06 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-12-06 23:56:06 +0000 |
commit | cc862e582aa0dd7c0dee16bb5475394338a07641 (patch) | |
tree | b03dbc5b6657d47f5c61b8fcc26f04a564ad6afd /Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | |
parent | 7ffad570b11726b0ca150867d23878fc1a949865 (diff) |
l3 (7dec17)
git-svn-id: svn://tug.org/texlive/trunk@46003 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3msg.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | 413 |
1 files changed, 99 insertions, 314 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 073980e325f..b3810e18fff 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.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} @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -683,89 +683,6 @@ % % \section{Internal \pkg{l3msg} functions} % -% The following functions are used in several kernel modules. -% -% \begin{function}[added = 2015-08-05]{\__msg_log_next:} -% \begin{syntax} -% \cs{__msg_log_next:} \meta{show-command} -% \end{syntax} -% Causes the next \meta{show-command} to send its output to the log -% file instead of the terminal. This allows for instance -% \cs{cs_log:N} to be defined as \cs{__msg_log_next:} \cs{cs_show:N}. -% The effect of this command lasts until the next use of -% \cs{__msg_show_wrap:Nn} or \cs{__msg_show_wrap:n} or -% \cs{__msg_show_variable:NNNnn}, in other words until the next time -% the \eTeX{} primitive \tn{showtokens} would have been used for -% showing to the terminal or until the next -% \texttt{variable-not-defined} error. -% \end{function} -% -% \begin{function}[added = 2015-08-05] -% { -% \__msg_show_pre:nnnnnn, -% \__msg_show_pre:nnxxxx, -% \__msg_show_pre:nnnnnV -% } -% \begin{syntax} -% \cs{__msg_show_pre:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four} -% \end{syntax} -% Prints the \meta{message} from \meta{module} in the terminal (or -% log file if \cs{__msg_log_next:} was issued) without formatting. -% Used in messages which print complex variable contents completely. -% \end{function} -% -% \begin{function}[added = 2015-08-04]{\__msg_show_variable:NNNnn} -% \begin{syntax} -% \cs{__msg_show_variable:NNNnn} \meta{variable} \meta{if-exist} \meta{if-empty} \Arg{msg} \Arg{formatted content} -% \end{syntax} -% If the \meta{variable} does not exist according to \meta{if-exist} -% (typically \cs{cs_if_exist:NTF}) then throw an error and do nothing -% more. Otherwise, if \meta{msg} is not empty, display the message -% |LaTeX/kernel/show-|\meta{msg} with \cs{token_to_str:N} -% \meta{variable} as a first argument, and a second argument that is -% |?| or empty depending on the result of \meta{if-empty} (typically -% \cs{tl_if_empty:NTF}) on the \meta{variable}. Then display the -% \meta{formatted content} by giving it as an argument to -% \cs{__msg_show_wrap:n}. -% \end{function} -% -% \begin{function}[added = 2015-08-03, updated = 2015-08-07]{\__msg_show_wrap:Nn} -% \begin{syntax} -% \cs{__msg_show_wrap: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}. For instance, if the \meta{function} is -% \cs{int_eval:n} and the \meta{expression} is |1+2| then this -% logs |> 1+2=3.| The case where the \meta{function} is -% \cs{tl_to_str:n} is special: then the string representation of the -% \meta{expression} is only logged once. -% \end{function} -% -% \begin{function}[added = 2015-08-03]{\__msg_show_wrap:n} -% \begin{syntax} -% \cs{__msg_show_wrap:n} \Arg{formatted text} -% \end{syntax} -% Shows or logs the \meta{formatted text}. After expansion, -% unless it is empty, the \meta{formatted text} must contain |>|, -% and the part of \meta{formatted text} before the first |>| is -% removed. Failure to do so causes low-level \TeX{} errors. -% \end{function} -% -% \begin{function}[updated = 2012-09-09] -% {\__msg_show_item:n, \__msg_show_item:nn, \__msg_show_item_unbraced:nn} -% \begin{syntax} -% \cs{__msg_show_item:n} \Arg{item} -% \cs{__msg_show_item:nn} \Arg{item-key} \Arg{item-value} -% \end{syntax} -% Auxiliary functions used within the last argument of -% \cs{__msg_show_variable:NNNnn} or \cs{__msg_show_wrap:n} -% to format variable items correctly for -% display. The \cs{__msg_show_item:n} version is used for simple lists, -% the \cs{__msg_show_item:nn} and \cs{__msg_show_item_unbraced:nn} versions -% for key--value like data structures. -% \end{function} -% % \begin{variable}{\c__msg_coding_error_text_tl} % The text % \begin{verbatim} @@ -829,7 +746,7 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux]{\__chk_if_free_msg:nn} +% \begin{macro}{\__chk_if_free_msg:nn} % This auxiliary is similar to \cs{__chk_if_free_cs:N}, and is used when % defining messages with \cs{msg_new:nnnn}. % \begin{macrocode} @@ -972,8 +889,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[aux]{\@@_interrupt_wrap:nn} -% \begin{macro}[aux]{\@@_interrupt_more_text:n} +% \begin{macro}{\@@_interrupt_wrap:nn} +% \begin{macro}{\@@_interrupt_more_text:n} % First setup \TeX{}'s \tn{errhelp} register with the extra help |#1|, % then build a nice-looking error message with |#2|. Everything is % done using \texttt{x}-type expansion as the new line markers are @@ -999,7 +916,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux]{\@@_interrupt_text:n} +% \begin{macro}{\@@_interrupt_text:n} % The business end of the process starts by producing some visual % separation of the message from the main part of the log. The error % message needs to be printed with everything made @@ -1264,7 +1181,7 @@ % \msg_error:nnxx , % \msg_error:nnx % } -% \begin{macro}[aux]{\@@_error:cnnnnn, \@@_no_more_text:nnnn} +% \begin{macro}{\@@_error:cnnnnn, \@@_no_more_text:nnnn} % For an error, the interrupt routine is called. We check if there is % a \enquote{more text} by comparing that control sequence with a % permanently empty text. @@ -1386,12 +1303,74 @@ % \end{macrocode} % \end{macro} % +% \begin{macro} +% { +% \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{macro}[aux]{\@@_show:n, \@@_show:w, \@@_show_dot:w, \@@_show:nn} +% The \texttt{show} message type is used for \cs{seq_show:N} and +% similar complicated data structures. Wrap the given text with a +% trailing dot (important later) then pass it to \cs{@@_show:n}. If +% there is |\\>~| (or if the whole thing starts with |>~|) we split +% there, print the first part and show the second part using +% \tn{showtokens} (the \cs{exp_after:wN} ensure a nice display). Note +% that that primitive adds a leading |>~| and trailing dot. That is +% why we included a trailing dot before wrapping and removed it +% afterwards. If there is no |\\>~| do the same but with an empty +% second part which adds a spurious but inevitable |>~.| +% \begin{macrocode} + \@@_class_new:nn { show } + { + \iow_wrap:nnnN + { \use:c { \c_@@_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} } + { } { } \@@_show:n + } + \cs_new_protected:Npn \@@_show:n #1 + { + \tl_if_in:nnTF { ^^J #1 } { ^^J > ~ } + { + \tl_if_in:nnTF { #1 \q_mark } { . \q_mark } + { \@@_show_dot:w } { \@@_show:w } + ^^J #1 \q_stop + } + { \@@_show:nn { ? #1 } { } } + } + \cs_new:Npn \@@_show_dot:w #1 ^^J > ~ #2 . \q_stop + { \@@_show:nn {#1} {#2} } + \cs_new:Npn \@@_show:w #1 ^^J > ~ #2 \q_stop + { \@@_show:nn {#1} {#2} } + \cs_new_protected:Npn \@@_show:nn #1#2 + { + \tl_if_empty:nF {#1} + { \exp_args:No \iow_term:n { \use_none:n #1 } } + \tl_set:Nn \l_@@_internal_tl {#2} + \__iow_with:Nnn \tex_newlinechar:D { 10 } + { + \__iow_with:Nnn \tex_errorcontextlines:D { -1 } + { + \etex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN + { \exp_after:wN \l_@@_internal_tl } + } + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % End the group to eliminate \cs{@@_class_new:nn}. % \begin{macrocode} \group_end: % \end{macrocode} % -% \begin{macro}[aux]{\@@_class_chk_exist:nT} +% \begin{macro}{\@@_class_chk_exist:nT} % Checking that a message class exists. We build this from % \cs{cs_if_free:cTF} rather than \cs{cs_if_exist:cTF} because that % avoids reading the second argument earlier than necessary. @@ -1434,8 +1413,8 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}[int]{\@@_use:nnnnnnn} -% \begin{macro}[aux] +% \begin{macro}{\@@_use:nnnnnnn} +% \begin{macro} % { % \@@_use_redirect_name:n , \@@_use_hierarchy:nwwN , % \@@_use_redirect_module:n, \@@_use_code: @@ -1557,8 +1536,8 @@ % \end{macro} % % \begin{macro}{\msg_redirect_class:nn, \msg_redirect_module:nnn} -% \begin{macro}[aux]{\@@_redirect:nnn, \@@_redirect_loop_chk:nnn} -% \begin{macro}[aux]{\@@_redirect_loop_list:n} +% \begin{macro}{\@@_redirect:nnn, \@@_redirect_loop_chk:nnn} +% \begin{macro}{\@@_redirect_loop_list:n} % If the target class is empty, eliminate the corresponding % redirection. Otherwise, add the redirection. We must then check % for a loop: as an initialization, we start by storing the initial @@ -1655,8 +1634,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux]{\@@_kernel_class_new:nN} -% \begin{macro}[aux]{\@@_kernel_class_new_aux:nN} +% \begin{macro}{\@@_kernel_class_new:nN} +% \begin{macro}{\@@_kernel_class_new_aux:nN} % All the functions for kernel messages come in variants ranging % from~$0$ to~$4$ arguments. Those with less than~$4$ arguments are % defined in terms of the $4$-argument variant, in a way very similar @@ -1960,6 +1939,15 @@ 'check-declarations',~'deprecation',~'log-functions',~not~'#1'. } \@@_kernel_new:nnn { kernel } { expr } { '#2'~in~#1 } + \@@_kernel_new:nnnn { kernel } { local-global } + { Inconsistent~local/global~assignment } + { + \c_@@_coding_error_text_tl + \if:w l #2 Local \else: Global \fi: \ + assignment~to~a~ + \if:w l #1 local \else: \if:w g #1 global \else: constant \fi: \fi: \ + variable~'#3'. + } \@@_kernel_new:nnnn { kernel } { non-declared-variable } { The~variable~#1~has~not~been~declared~\msg_line_context:. } { @@ -1999,6 +1987,8 @@ % Some errors only appear in expandable settings, % hence don't need a \enquote{more-text} argument. % \begin{macrocode} +\@@_kernel_new:nnn { kernel } { bad-exp-end-f } + { Misused~\exp_end_continue_f:w or~:nw } \@@_kernel_new:nnn { kernel } { bad-variable } { Erroneous~variable~#1 used! } \@@_kernel_new:nnn { kernel } { misused-sequence } @@ -2007,6 +1997,8 @@ { A~property~list~was~misused. } \@@_kernel_new:nnn { kernel } { negative-replication } { Negative~argument~for~\prg_replicate:nn. } +\@@_kernel_new:nnn { kernel } { prop-keyval } + { Missing/extra~'='~in~'#1'~(in~'..._keyval:Nn') } \@@_kernel_new:nnn { kernel } { unknown-comparison } { Relation~'#1'~unknown:~use~=,~<,~>,~==,~!=,~<=,~>=. } \@@_kernel_new:nnn { kernel } { zero-step } @@ -2019,22 +2011,22 @@ { The~comma~list~ \tl_if_empty:nF {#1} { #1 ~ } \tl_if_empty:nTF {#2} - { is~empty } - { contains~the~items~(without~outer~braces): } + { is~empty \\>~ . } + { contains~the~items~(without~outer~braces): #2 . } } \@@_kernel_new:nnn { kernel } { show-prop } { The~property~list~#1~ \tl_if_empty:nTF {#2} - { is~empty } - { contains~the~pairs~(without~outer~braces): } + { is~empty \\>~ . } + { contains~the~pairs~(without~outer~braces): #2 . } } \@@_kernel_new:nnn { kernel } { show-seq } { The~sequence~#1~ \tl_if_empty:nTF {#2} - { is~empty } - { contains~the~items~(without~outer~braces): } + { is~empty \\>~ . } + { contains~the~items~(without~outer~braces): #2 . } } \@@_kernel_new:nnn { kernel } { show-streams } { @@ -2045,14 +2037,14 @@ { iow } { output ~ } } streams~are~ - \tl_if_empty:nTF {#2} { open } { in~use: } + \tl_if_empty:nTF {#2} { open } { in~use: #2 . } } % \end{macrocode} % % \subsection{Expandable errors} % -% \begin{macro}[int]{\@@_expandable_error:n} -% \begin{macro}[aux]{\@@_expandable_error:w} +% \begin{macro}{\@@_expandable_error:n} +% \begin{macro}{\@@_expandable_error:w} % In expansion only context, we cannot use the normal means of % reporting errors. Instead, we feed \TeX{} an undefined control % sequence, \cs{LaTeX3 error:}. It is thus interrupted, and shows @@ -2138,213 +2130,6 @@ % \end{macrocode} % \end{macro} % -% \subsection{Showing variables} -% -% Functions defined in this section are used for diagnostic functions -% in \pkg{l3clist}, \pkg{l3file}, \pkg{l3prop}, \pkg{l3seq}, \pkg{xtemplate} -% -% \begin{variable}{\g_@@_log_next_bool} -% \begin{macro}[int]{\@@_log_next:} -% \begin{macrocode} -\bool_new:N \g_@@_log_next_bool -\cs_new_protected:Npn \@@_log_next: - { \bool_gset_true:N \g_@@_log_next_bool } -% \end{macrocode} -% \end{macro} -% \end{variable} -% -% \begin{macro}[int]{\@@_show_pre:nnnnnn, \@@_show_pre:nnxxxx, \@@_show_pre:nnnnnV} -% \begin{macro}[aux]{\@@_show_pre_aux:n} -% Print the text of a message to the terminal or log file without -% formatting: short cuts around \cs{iow_wrap:nnnN}. The choice of -% terminal or log file is done by \cs{@@_show_pre_aux:n}. -% \begin{macrocode} -\cs_new_protected:Npn \@@_show_pre:nnnnnn #1#2#3#4#5#6 - { - \exp_args:Nx \iow_wrap:nnnN - { - \exp_not:c { \c_@@_text_prefix_tl #1 / #2 } - { \tl_to_str:n {#3} } - { \tl_to_str:n {#4} } - { \tl_to_str:n {#5} } - { \tl_to_str:n {#6} } - } - { } { } \@@_show_pre_aux:n - } -\cs_new_protected:Npn \@@_show_pre:nnxxxx #1#2#3#4#5#6 - { - \use:x - { \exp_not:n { \@@_show_pre:nnnnnn {#1} {#2} } {#3} {#4} {#5} {#6} } - } -\cs_generate_variant:Nn \@@_show_pre:nnnnnn { nnnnnV } -\cs_new_protected:Npn \@@_show_pre_aux:n - { \bool_if:NTF \g_@@_log_next_bool { \iow_log:n } { \iow_term:n } } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}[int]{\@@_show_variable:NNNnn} -% The arguments of \cs{@@_show_variable:NNNnn} are -% \begin{itemize} -% \item The \meta{variable} to be shown as |#1|. -% \item An \meta{if-exist} conditional |#2| with \texttt{NTF} -% signature. -% \item An \meta{if-empty} conditional |#3| or other function with -% \texttt{NTF} signature (sometimes \cs{use_ii:nnn}). -% \item The \meta{message} |#4| to use. -% \item A construction |#5| which produces the formatted string -% eventually passed to the \tn{showtokens} primitive. Typically -% this is a mapping of the form \cs{seq_map_function:NN} -% \meta{variable} \cs{@@_show_item:n}. -% \end{itemize} -% If \meta{if-exist} \meta{variable} is \texttt{false}, throw an -% error and remember to reset \cs{g_@@_log_next_bool}, which is -% otherwise reset by \cs{@@_show_wrap:n}. If \meta{message} is not -% empty, output the message |LaTeX/kernel/show-|\meta{message} with -% as its arguments the \meta{variable}, and either an empty second -% argument or |?| depending on the result of \meta{if-empty} -% \meta{variable}. Afterwards, show the contents of |#5| using -% \cs{@@_show_wrap:n} or \cs{@@_log_wrap:n}. -% \begin{macrocode} -\cs_new_protected:Npn \@@_show_variable:NNNnn #1#2#3#4#5 - { - #2 #1 - { - \tl_if_empty:nF {#4} - { - \@@_show_pre:nnxxxx { LaTeX / kernel } { show- #4 } - { \token_to_str:N #1 } { #3 #1 { } { ? } } { } { } - } - \@@_show_wrap:n {#5} - } - { - \@@_kernel_error:nnx { kernel } { variable-not-defined } - { \token_to_str:N #1 } - \bool_gset_false:N \g_@@_log_next_bool - } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[int]{\@@_show_wrap:Nn} -% A short-hand used for \cs{int_show:n} and many other functions that -% passes to \cs{@@_show_wrap:n} the result of applying |#1| (a -% function such as \cs{int_eval:n}) to the expression |#2|. The -% leading |>~| is needed by \cs{@@_show_wrap:n}. The use of -% \texttt{x}-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 \@@_show_wrap:Nn #1#2 - { - \exp_args:Nx \@@_show_wrap:n - { - > ~ \exp_not:n { \tl_to_str:n {#2} } = - \exp_not:N \tl_to_str:n { #1 {#2} } - } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[int]{\@@_show_wrap:n} -% \begin{macro}[aux]{\@@_show_wrap_aux:n} -% \begin{macro}[aux, EXP]{\@@_show_wrap_aux:w} -% The argument of \cs{@@_show_wrap:n} is line-wrapped using -% \cs{iow_wrap:nnnN}. Everything before the first~|>| in the wrapped -% text is removed, as well as an optional space following it (because -% of \texttt{f}-expansion). In order for line-wrapping to give the -% correct result, the first~|>| must in fact appear at the beginning -% of a line and be followed by a space (or a line-break), so in -% practice, the argument of \cs{@@_show_wrap:n} begins with |>~| or -% |\\>~|. -% -% The line-wrapped text is then either sent to the log file through -% \cs{iow_log:x}, or shown in the terminal using the -% \eTeX{} primitive \tn{showtokens} after removing a leading |>~| and -% trailing dot since those are added automatically by -% \tn{showtokens}. The trailing dot was included in the first place -% because its presence can affect line-wrapping. Note that the space -% after |>| is removed through \texttt{f}-expansion rather than by -% using an argument delimited by |>~| because the space may have been -% replaced by a line-break when line-wrapping. -% -% A special case is that if the line-wrapped text is a single dot (in -% other words if the argument of \cs{@@_show_wrap:n} -% \texttt{x}-expands to nothing) then no |>~| should be removed. -% This makes it unnecessary to check explicitly for emptyness when -% using for instance \cs{seq_map_function:NN} \meta{seq~var} -% \cs{@@_show_item:n} as the argument of \cs{@@_show_wrap:n}. -% -% Finally, the token list \cs{l_@@_internal_tl} containing the result -% of all these manipulations is displayed to the terminal using -% \cs{etex_showtokens:D} and odd \cs{exp_after:wN} which expand the -% closing brace to improve the output slightly. The calls to -% \cs{__iow_with:Nnn} ensure that the \tn{newlinechar} is set to~$10$ -% so that the \cs{iow_newline:} inserted by the line-wrapping code -% are correctly recognized by \TeX{}, and that \tn{errorcontextlines} -% is $-1$ to avoid printing irrelevant context. -% -% Note also that \cs{g_@@_log_next_bool} is only reset if that is -% necessary. This allows the user of an interactive prompt to insert -% tokens as a response to \eTeX{}'s \tn{showtokens}. -% \begin{macrocode} -\cs_new_protected:Npn \@@_show_wrap:n #1 - { \iow_wrap:nnnN { #1 . } { } { } \@@_show_wrap_aux:n } -\cs_new_protected:Npn \@@_show_wrap_aux:n #1 - { - \tl_if_single:nTF {#1} - { \tl_clear:N \l_@@_internal_tl } - { \tl_set:Nf \l_@@_internal_tl { \@@_show_wrap_aux:w #1 \q_stop } } - \bool_if:NTF \g_@@_log_next_bool - { - \iow_log:x { > ~ \l_@@_internal_tl . } - \bool_gset_false:N \g_@@_log_next_bool - } - { - \__iow_with:Nnn \tex_newlinechar:D { 10 } - { - \__iow_with:Nnn \tex_errorcontextlines:D { -1 } - { - \etex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN - { \exp_after:wN \l_@@_internal_tl } - } - } - } - } -\cs_new:Npn \@@_show_wrap_aux:w #1 > #2 . \q_stop {#2} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}[int,EXP]{\@@_show_item:n} -% \begin{macro}[int,EXP]{\@@_show_item:nn} -% \begin{macro}[int,EXP]{\@@_show_item_unbraced:nn} -% Each item in the variable is formatted using one of -% the following functions. -% \begin{macrocode} -\cs_new:Npn \@@_show_item:n #1 - { - \\ > \ \ \{ \tl_to_str:n {#1} \} - } -\cs_new:Npn \@@_show_item:nn #1#2 - { - \\ > \ \ \{ \tl_to_str:n {#1} \} - \ \ => \ \ \{ \tl_to_str:n {#2} \} - } -\cs_new:Npn \@@_show_item_unbraced:nn #1#2 - { - \\ > \ \ \tl_to_str:n {#1} - \ \ => \ \ \tl_to_str:n {#2} - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% % \begin{macrocode} %</initex|package> % \end{macrocode} |