diff options
author | Karl Berry <karl@freefriends.org> | 2014-09-15 22:58:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-09-15 22:58:44 +0000 |
commit | 21b7507fd70dbefe4207e9d0dde58c640208095d (patch) | |
tree | f1f3dc5a2397a4addfa5106318633c92748327df /Master/texmf-dist/source/latex/l3kernel | |
parent | 720ab6d5bd9c366793fd8f03c58aec9b4348bf4d (diff) |
l3 (15sep14)
git-svn-id: svn://tug.org/texlive/trunk@35180 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 4 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3.ins | 26 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx | 11 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3int.dtx | 101 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx | 162 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3token.dtx | 42 |
6 files changed, 293 insertions, 53 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 3b53a382d18..d5248ec5e5e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -36,8 +36,8 @@ %<*driver|generic|package> \def\ExplFileName{expl3} \def\ExplFileDescription{L3 programming layer} -\def\ExplFileDate{2014/08/25} -\def\ExplFileVersion{5378} +\def\ExplFileDate{2014/09/15} +\def\ExplFileVersion{5423} %</driver|generic|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins index 3b99651a170..1c1bc9ce336 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins @@ -95,4 +95,30 @@ Do not distribute a modified version of this file. \generate{\file{l3names.def} {\from{l3names.dtx} {names}}} + +% old modules generating a usage error: + +\generate{\file{l3basics.sty} {\from{l3oldmodules.dtx} {l3basics,oldmodules}}} +\generate{\file{l3bootstrap.sty} {\from{l3oldmodules.dtx} {l3bootstrap,oldmodules}}} +\generate{\file{l3box.sty} {\from{l3oldmodules.dtx} {l3box,oldmodules}}} +\generate{\file{l3candidates.sty} {\from{l3oldmodules.dtx} {l3candidates,oldmodules}}} +\generate{\file{l3clist.sty} {\from{l3oldmodules.dtx} {l3clist,oldmodules}}} +\generate{\file{l3coffins.sty} {\from{l3oldmodules.dtx} {l3coffins,oldmodules}}} +\generate{\file{l3color.sty} {\from{l3oldmodules.dtx} {l3color,oldmodules}}} +\generate{\file{l3expan.sty} {\from{l3oldmodules.dtx} {l3expan,oldmodules}}} +\generate{\file{l3file.sty} {\from{l3oldmodules.dtx} {l3file,oldmodules}}} +\generate{\file{l3fp.sty} {\from{l3oldmodules.dtx} {l3fp,oldmodules}}} +\generate{\file{l3int.sty} {\from{l3oldmodules.dtx} {l3int,oldmodules}}} +\generate{\file{l3keys.sty} {\from{l3oldmodules.dtx} {l3keys,oldmodules}}} +\generate{\file{l3msg.sty} {\from{l3oldmodules.dtx} {l3msg,oldmodules}}} +\generate{\file{l3names.sty} {\from{l3oldmodules.dtx} {l3names,oldmodules}}} +\generate{\file{l3prg.sty} {\from{l3oldmodules.dtx} {l3prg,oldmodules}}} +\generate{\file{l3prop.sty} {\from{l3oldmodules.dtx} {l3prop,oldmodules}}} +\generate{\file{l3quark.sty} {\from{l3oldmodules.dtx} {l3quark,oldmodules}}} +\generate{\file{l3seq.sty} {\from{l3oldmodules.dtx} {l3seq,oldmodules}}} +\generate{\file{l3skip.sty} {\from{l3oldmodules.dtx} {l3skip,oldmodules}}} +\generate{\file{l3tl.sty} {\from{l3oldmodules.dtx} {l3tl,oldmodules}}} +\generate{\file{l3token.sty} {\from{l3oldmodules.dtx} {l3token,oldmodules}}} + + \endbatchfile diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 88f30d3ce87..7ce1c6367b1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-parse.dtx 5223 2014-07-18 01:54:05Z bruno $ +\GetIdInfo$Id: l3fp-parse.dtx 5383 2014-08-25 13:17:55Z bruno $ {L3 Floating-point expression parsing} \begin{document} \DocInput{\jobname.dtx} @@ -891,7 +891,10 @@ \exp_after:wN \@@_parse_prefix:NNN \exp_after:wN #1 \exp_after:wN #2 - \cs:w @@_parse_prefix_#2:Nw \exp_after:wN \cs_end: + \cs:w + @@_parse_prefix_ \token_to_str:N #2 :Nw + \exp_after:wN + \cs_end: \tex_romannumeral:D \fi: \@@_parse_expand:w @@ -967,7 +970,7 @@ } \cs_new:Npn \@@_parse_prefix_unknown:NNN #1#2#3 { - \cs_if_exist:cTF { @@_parse_infix_#1:N } + \cs_if_exist:cTF { @@_parse_infix_ \token_to_str:N #1 :N } { \__msg_kernel_expandable_error:nnn { kernel } { fp-missing-number } {#1} @@ -2133,7 +2136,7 @@ \else: \exp_after:wN \@@_parse_infix_check:NNN \cs:w - @@_parse_infix_#2:N + @@_parse_infix_ \token_to_str:N #2 :N \exp_after:wN \exp_after:wN \exp_after:wN \cs_end: \fi: diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 78d244e3845..42036030d8d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3int.dtx 5372 2014-08-25 02:01:41Z bruno $ +\GetIdInfo$Id: l3int.dtx 5421 2014-09-14 07:52:58Z joseph $ {L3 Integers} %</driver|package> %<*driver> @@ -100,10 +100,17 @@ % both evaluate to \( -6 \). The \Arg{integer expression} may % contain the operators \texttt{+}, \texttt{-}, \texttt{*} and % \texttt{/}, along with parenthesis \texttt{(} and \texttt{)}. -% After two expansions, \cs{int_eval:n} yields an -% \meta{integer denotation} which is left in the input stream. This is -% \emph{not} an \meta{internal integer}, and therefore requires -% suitable termination if used in a \TeX{}-style integer assignment. +% Any functions within the expressions should expand to an +% \meta{integer denotation}: a sequence of a sign and digits matching +% the regex |\-?[0-9]+|). +% After expansion \cs{int_eval:n} yields an \meta{integer denotation} +% which is left in the input stream. +% \begin{texnote} +% Exactly two expansions are needed to evaluate \cs{int_eval:n}. +% The result is \emph{not} an \meta{internal integer}, and therefore +% requires suitable termination if used in a \TeX{}-style integer +% assignment. +% \end{texnote} % \end{function} % % \begin{function}[EXP, updated = 2012-09-26]{\int_abs:n} @@ -587,6 +594,8 @@ % \cs{int_to_symbols:nnn} to define an alphabet-specific % function. The basic \cs{int_to_alph:n} and \cs{int_to_Alph:n} % functions should not be modified. +% The resulting tokens are digits with category code $12$ (other) and +% letters with category code $11$ (letter). % \end{function} % % \begin{function}[updated = 2011-09-17, EXP]{\int_to_symbols:nnn} @@ -634,6 +643,8 @@ % input stream. Letters are used for digits beyond~$9$: lower % case letters for \cs{int_to_hex:n} and upper case ones for % \cs{int_to_Hex:n}. +% The resulting tokens are digits with category code $12$ (other) and +% letters with category code $11$ (letter). % \end{function} % % \begin{function}[added = 2014-02-11, EXP]{\int_to_oct:n} @@ -643,6 +654,8 @@ % Calculates the value of the \meta{integer expression} and places % the octal (base~$8$) representation of the result in the input % stream. +% The resulting tokens are digits with category code $12$ (other) and +% letters with category code $11$ (letter). % \end{function} % % \begin{function}[updated = 2014-02-11, EXP] @@ -658,6 +671,8 @@ % case letters for \cs{int_to_base:n} and upper case ones for % \cs{int_to_Base:n}. % The maximum \meta{base} value is $36$. +% The resulting tokens are digits with category code $12$ (other) and +% letters with category code $11$ (letter). % \begin{texnote} % This is a generic version of \cs{int_to_bin:n}, \emph{etc.} % \end{texnote} @@ -675,63 +690,85 @@ % % \section{Converting from other formats to integers} % -% \begin{function}[EXP]{\int_from_alph:n} +% \begin{function}[updated = 2014-08-25, EXP]{\int_from_alph:n} % \begin{syntax} % \cs{int_from_alph:n} \Arg{letters} % \end{syntax} % Converts the \meta{letters} into the integer (base~$10$) -% representation and leaves this in the input stream. The -% \meta{letters} are treated using the English alphabet only, with -% \enquote{a} equal to $1$ through to \enquote{z} equal to $26$. Either lower -% or upper case letters may be used. This is the inverse function of -% \cs{int_to_alph:n}. +% representation and leaves this in the input stream. The +% \meta{letters} are first converted to a string, with no expansion. +% Lower and upper case letters from the English alphabet may be used, +% with \enquote{a} equal to $1$ through to \enquote{z} equal to $26$. +% The function also accepts a leading sign, made of |+| and~|-|. This +% is the inverse function of \cs{int_to_alph:n} and +% \cs{int_to_Alph:n}. % \end{function} % -% \begin{function}[added = 2014-02-11, EXP]{\int_from_bin:n} +% \begin{function}[added = 2014-02-11, updated = 2014-08-25, EXP] +% {\int_from_bin:n} % \begin{syntax} % \cs{int_from_bin:n} \Arg{binary number} % \end{syntax} % Converts the \meta{binary number} into the integer (base~$10$) % representation and leaves this in the input stream. +% The \meta{binary number} is first converted to a string, with no +% expansion. The function accepts a leading sign, made of |+| +% and~|-|, followed by binary digits. This is the inverse function +% of \cs{int_to_bin:n}. % \end{function} % -% \begin{function}[added = 2014-02-11, EXP]{\int_from_hex:n} +% \begin{function}[added = 2014-02-11, updated = 2014-08-25, EXP] +% {\int_from_hex:n} % \begin{syntax} % \cs{int_from_hex:n} \Arg{hexadecimal number} % \end{syntax} -% Converts the \meta{hexadecimal number} into the integer -% (base~$10$) representation and leaves this in the input stream. -% Digits greater than $9$ may be represented in the -% \meta{hexadecimal number} by upper or lower case letters. +% Converts the \meta{hexadecimal number} into the integer (base~$10$) +% representation and leaves this in the input stream. Digits greater +% than $9$ may be represented in the \meta{hexadecimal number} by +% upper or lower case letters. The \meta{hexadecimal number} is first +% converted to a string, with no expansion. The function also accepts +% a leading sign, made of |+| and~|-|. This is the inverse function +% of \cs{int_to_hex:n} and \cs{int_to_Hex:n}. % \end{function} % -% \begin{function}[added = 2014-02-11, EXP]{\int_from_oct:n} +% \begin{function}[added = 2014-02-11, updated = 2014-08-25, EXP] +% {\int_from_oct:n} % \begin{syntax} % \cs{int_from_oct:n} \Arg{octal number} % \end{syntax} % Converts the \meta{octal number} into the integer (base~$10$) % representation and leaves this in the input stream. +% The \meta{octal number} is first converted to a string, with no +% expansion. The function accepts a leading sign, made of |+| +% and~|-|, followed by octal digits. This is the inverse function +% of \cs{int_to_oct:n}. % \end{function} % -% \begin{function}[updated = 2014-08-25, EXP]{\int_from_roman:n} +% \begin{function}[updated = 2014-08-25, updated = 2014-08-25, EXP] +% {\int_from_roman:n} % \begin{syntax} % \cs{int_from_roman:n} \Arg{roman numeral} % \end{syntax} % Converts the \meta{roman numeral} into the integer (base~$10$) -% representation and leaves this in the input stream. The +% representation and leaves this in the input stream. The \meta{roman +% numeral} is first converted to a string, with no expansion. The % \meta{roman numeral} may be in upper or lower case; if the numeral -% contains letters besides |mdclxvi| or |MDCLXVI| then the resulting -% value will be $-1$. +% contains characters besides |mdclxvi| or |MDCLXVI| then the +% resulting value will be $-1$. This is the inverse function of +% \cs{int_to_roman:n} and \cs{int_to_Roman:n}. % \end{function} % -% \begin{function}[EXP]{\int_from_base:nn} +% \begin{function}[updated = 2014-08-25, EXP]{\int_from_base:nn} % \begin{syntax} % \cs{int_from_base:nn} \Arg{number} \Arg{base} % \end{syntax} -% Converts the \meta{number} in \meta{base} into the appropriate -% value in base $10$. The \meta{number} should consist of -% digits and letters (either lower or upper case), plus optionally -% a leading sign. The maximum \meta{base} value is $36$. +% Converts the \meta{number} expressed in \meta{base} into the +% appropriate value in base $10$. The \meta{number} is first +% converted to a string, with no expansion. The \meta{number} should +% consist of digits and letters (either lower or upper case), plus +% optionally a leading sign. The maximum \meta{base} value is $36$. +% This is the inverse function of \cs{int_to_base:nn} and +% \cs{int_to_Base:nn}. % \end{function} % % \section{Viewing integers} @@ -941,7 +978,7 @@ % Done in \pkg{l3basics}. % \end{macro} % \end{macro} -% +% % \begin{macro}{\or:} % Done in \pkg{l3basics}. % \end{macro} @@ -1754,7 +1791,7 @@ % \UnitTested % Nothing exciting here. % \begin{macrocode} -\cs_new:Npn \int_to_arabic:n #1 { \int_eval:n {#1} } +\cs_new_eq:NN \int_to_arabic:n \int_eval:n % \end{macrocode} % \end{macro} % @@ -1795,7 +1832,7 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\int_to_alph:n,\int_to_Alph:n} +% \begin{macro}{\int_to_alph:n, \int_to_Alph:n} % \UnitTested % These both use the above function with input functions that make sense % for the alphabet in English. @@ -2138,7 +2175,7 @@ { \int_eval:n { - \@@_pass_signs:wn #1 + \exp_after:wN \@@_pass_signs:wn \tl_to_str:n {#1} \q_stop { \@@_from_alph:nN { 0 } } \q_recursion_tail \q_recursion_stop } @@ -2170,7 +2207,7 @@ { \int_eval:n { - \@@_pass_signs:wn #1 + \exp_after:wN \@@_pass_signs:wn \tl_to_str:n {#1} \q_stop { \@@_from_base:nnN { 0 } {#2} } \q_recursion_tail \q_recursion_stop } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx new file mode 100644 index 00000000000..4d884f8381d --- /dev/null +++ b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx @@ -0,0 +1,162 @@ +% \iffalse meta-comment +% +%% File: l3oldmodules.dtx Copyright (C) 2014 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 +%% 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 +%% +%% This file is part of the "l3kernel bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% The released version of this bundle is available from CTAN. +%% +%% ----------------------------------------------------------------------- +%% +%% The development version of the bundle can be found at +%% +%% http://www.latex-project.org/svnroot/experimental/trunk/ +%% +%% for those people who are interested. +%% +%%%%%%%%%%% +%% NOTE: %% +%%%%%%%%%%% +%% +%% Snapshots taken from the repository represent work in progress and may +%% not work or may contain conflicting material! We therefore ask +%% people _not_ to put them into distributions, archives, etc. without +%% prior consultation with the LaTeX3 Project. +%% +%% ----------------------------------------------------------------------- +% +%<*driver|oldmodules> +\def\ExplFileDate{2014/09/06} +%</driver|oldmodules> +%<*driver> +\documentclass[full]{l3doc} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% +% \title{Obsolete individual modules} +% +% \author{^^A +% The \LaTeX3 Project\thanks +% {^^A +% E-mail: +% \href{mailto:latex-team@latex-project.org} +% {latex-team@latex-project.org}^^A +% }^^A +% } +% +% +% \date{Released \ExplFileDate} + +% \maketitle +% +% \section{Introduction} +% +% \begin{documentation} +% The source code for \texttt{expl3} is organized by modules, e.g., +% integer processing is found in \texttt{l3int.dtx}, etc. Initially +% each such module was used to generate a corresponding +% \texttt{.sty} that was then loaded as part of the \texttt{expl3} +% package. +% +% It was however also possible to load only individual modules (they +% would then load other modules as necessary. This scheme was done +% to ease testing and updates during the time the kernel code saw a +% lot of update. +% +% However, keeping dependencies between modules current became a +% complex task and in fact most modules would require most other +% modules so that in the end everything or nearly everything was +% loaded anyway. +% +% We therefore decided to stop providing individual module packages +% but instead generate all code into a single file that is then +% loaded as part of the \texttt{expl3} package. This decision was +% announced a while back and with the recent \texttt{expl3} +% distributions it because a reality. +% +% To help user that do have code or documents referencing the old +% module packages, we provide (for the time being) skeleton packages +% that generate an error message and then load the \texttt{expl3} so +% that the user can continue. +% Eventually these packages will get fully removed. +% \end{documentation} +% +% \section{Implementation} +% +% \begin{implementation} +% +% First store the current package name in a macro for later use. +% \begin{macrocode} +%<*oldmodules> +\def\old@liii@module@name +%<l3basics>{l3basics} +%<l3bootstrap>{l3bootstrap} +%<l3box>{l3box} +%<l3candidates>{l3candidates} +%<l3clist>{l3clist} +%<l3coffins>{l3coffins} +%<l3color>{l3color} +%<l3expan>{l3expan} +%<l3file>{l3file} +%<l3fp>{l3fp} +%<l3int>{l3int} +%<l3keys>{l3keys} +%<l3msg>{l3msg} +%<l3names>{l3names} +%<l3prg>{l3prg} +%<l3prop>{l3prop} +%<l3quark>{l3quark} +%<l3seq>{l3seq} +%<l3skip>{l3skip} +%<l3tl>{l3tl} +%<l3token>{l3token} +% \end{macrocode} +% +% Then identify the current package: +% \begin{macrocode} +\ProvidesPackage\old@liii@module@name + [% + \ExplFileDate\space v-no-info + Obsolete L3 package + ] +% \end{macrocode} +% Describe the current situation on the terminal, then generate an +% error to ensure that the message is actually seen. +% \begin{macrocode} +\typeout{*****************************************************************} +\typeout{** } +\typeout{** Package \old@liii@module@name\space is obsolete and has been removed!} +\typeout{** } +\typeout{** Its functionality is now only provided as part of in the expl3 package} +\typeout{** } +\typeout{** After showing you an error message you can hit <return> we will continue} +\typeout{** for now by loading expl3 for you. However, at some point in the future} +\typeout{** the old packages will be removed.} +\typeout{** } +\typeout{** Therefore, please replace '\string\usepackage{\old@liii@module@name}'} +\typeout{** with '\string\usepackage{expl3}' in your documents as soon as possible.} +\typeout{** } +\typeout{*******************************************************************} +\PackageError\old@liii@module@name{This package is obsolete --- + use 'expl3' instead}\@ehc +% \end{macrocode} +% Finally load \texttt{expl3} so that the user can continue for now. +% \begin{macrocode} +\RequirePackage{expl3} +%</oldmodules> +% \end{macrocode} +% +% \end{implementation} +% +% \endinput diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 416bf573160..cd310c06d3a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3token.dtx 5354 2014-08-23 01:35:39Z bruno $ +\GetIdInfo$Id: l3token.dtx 5422 2014-09-15 10:44:23Z joseph $ {L3 Experimental token manipulation} %</driver|package> %<*driver> @@ -911,7 +911,7 @@ % \cs_set:Npn \next #1#2 { x #1 y #2 } % \end{verbatim} % will leave |#1#2| in the input stream. If the \meta{token} is -% not a macro then \cs{scan_stop:} will be left in the input stream +% not a macro then \cs{scan_stop:} will be left in the input stream. % \begin{texnote} % If the arg~spec. contains the string |->|, then the |spec| function % will produce incorrect results. @@ -930,7 +930,11 @@ % \cs_set:Npn \next #1#2 { x #1~y #2 } % \end{verbatim} % will leave \verb|x#1 y#2| in the input stream. If the \meta{token} is -% not a macro then \cs{scan_stop:} will be left in the input stream +% not a macro then \cs{scan_stop:} will be left in the input stream. +% \begin{texnote} +% If the arg~spec. contains the string |->|, then the |spec| function +% will produce incorrect results. +% \end{texnote} % \end{function} % % \begin{function}[EXP]{\token_get_prefix_spec:N} @@ -1171,23 +1175,31 @@ % \c_catcode_letter_token, % \c_catcode_other_token % } -% We define these useful tokens. We have to do it by hand with the -% brace tokens for obvious reasons. +% We define these useful tokens. For the brace and space tokens things have +% to be done by hand: the formal argument spec.~for \cs{cs_new_eq:NN} does +% not cover them so we do things by hand. (As currently coded it would +% \emph{work} with \cs{cs_new_eq:NN} but that's not really a great idea to +% show off: we want people to stick to the defined interfaces and that +% includes us.) So that these few odd names go into the log when appropriate +% there is a need to hand-apply the \cs{__chk_if_free_cs:N} check. % \begin{macrocode} -\cs_new_eq:NN \c_group_begin_token { -\cs_new_eq:NN \c_group_end_token } \group_begin: + \__chk_if_free_cs:N \c_group_begin_token + \tex_global:D \tex_let:D \c_group_begin_token { + \__chk_if_free_cs:N \c_group_end_token + \tex_global:D \tex_let:D \c_group_end_token } \char_set_catcode_math_toggle:N \* - \token_new:Nn \c_math_toggle_token { * } + \cs_new_eq:NN \c_math_toggle_token * \char_set_catcode_alignment:N \* - \token_new:Nn \c_alignment_token { * } - \token_new:Nn \c_parameter_token { # } - \token_new:Nn \c_math_superscript_token { ^ } + \cs_new_eq:NN \c_alignment_token * + \cs_new_eq:NN \c_parameter_token # + \cs_new_eq:NN \c_math_superscript_token ^ \char_set_catcode_math_subscript:N \* - \token_new:Nn \c_math_subscript_token { * } - \token_new:Nn \c_space_token { ~ } - \token_new:Nn \c_catcode_letter_token { a } - \token_new:Nn \c_catcode_other_token { 1 } + \cs_new_eq:NN \c_math_subscript_token * + \__chk_if_free_cs:N \c_space_token + \use:n { \tex_global:D \tex_let:D \c_space_token = ~ } ~ + \cs_new_eq:NN \c_catcode_letter_token a + \cs_new_eq:NN \c_catcode_other_token 1 \group_end: % \end{macrocode} % \end{macro} |