diff options
Diffstat (limited to 'Master/texmf-dist')
103 files changed, 2114 insertions, 1558 deletions
diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md index 8357a8c9a95..369da481434 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/README.md +++ b/Master/texmf-dist/doc/latex/l3experimental/README.md @@ -1,7 +1,7 @@ Experimental LaTeX3 Concepts ============================ -Release 2017/07/19 +Release 2017/09/18 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf Binary files differindex 4c51d3a409d..3b0f003f84f 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf Binary files differindex 3e4c403e224..51e7fff2221 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf Binary files differindex 8c90b1c31d4..8a6686cf9bc 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf Binary files differindex f8fc65ee0fa..2de8fe1a3e6 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf Binary files differindex 5a379c5da2b..9919c5c4531 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index d76033a8871..7c72c0069e5 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/README.md +++ b/Master/texmf-dist/doc/latex/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2017/07/19 +Release 2017/09/18 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex 8280d2538c3..b6e3d02a2f9 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex 654f427e902..6c8e30b0232 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex index 58949528dc4..5d8913b0b41 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex @@ -63,7 +63,7 @@ {latex-team@latex-project.org}% }% } -\date{Released 2017/07/19} +\date{Released 2017/09/18} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf Binary files differindex 563405032e0..357e015a315 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt index 4db8952ebe7..4aec455953d 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt +++ b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt @@ -18,6 +18,8 @@ Function Expires end \c_minus_one 2018 \box_resize:cnn 2018 \box_resize:Nnn 2018 +\box_use_clear:c 2018 +\box_use_clear:N 2018 \file_add_path:nN 2018 \file_if_exist_input:nT 2017 \file_if_exist_input:nTF 2017 diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex 6dac1336d6b..ec66c75d00a 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex index e9772486846..066727fd6d7 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex @@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2017/07/19} +\date{Released 2017/09/18} \begin{document} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf Binary files differindex 81cb6d6f0be..520533091c3 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex index 422e7960e08..adb8f9cd704 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex @@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2017/07/19} +\date{Released 2017/09/18} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf Binary files differindex 01b9baa2543..5aca44f1468 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex index 2f02b61e46f..a5a3251f977 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex @@ -62,7 +62,7 @@ {latex-team@latex-project.org}% }% } -\date{Released 2017/07/19} +\date{Released 2017/09/18} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3packages/README.md b/Master/texmf-dist/doc/latex/l3packages/README.md index 0ba406bc4ea..259dda0ffab 100644 --- a/Master/texmf-dist/doc/latex/l3packages/README.md +++ b/Master/texmf-dist/doc/latex/l3packages/README.md @@ -1,7 +1,7 @@ LaTeX3 High-Level Concepts ========================== -Release 2017/07/19 +Release 2017/09/18 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf Binary files differindex 149e84f92a2..f246f3802dc 100644 --- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf Binary files differindex d002557a3a6..dfd5475b6e7 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf Binary files differindex 2749ab6017b..06cb233abff 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf Binary files differindex c722f5003b9..6817324c538 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf Binary files differindex 2a8eefc2c4c..43d2f84fa9b 100644 --- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf +++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx index b2147969d79..6d903956cb1 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -252,7 +252,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3str-convert}{2017/07/19}{} +\ProvidesExplPackage{l3str-convert}{2017/09/18}{} {L3 Experimental string encoding conversions} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx index 2cbc3ae82ef..ebfbfe82542 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -163,7 +163,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3str-format}{2017/07/19}{} +\ProvidesExplPackage{l3str-format}{2017/09/18}{} {L3 Experimental string formatting} \RequirePackage{l3str} %</package> diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx index ad176e7a727..9bf6dc86f34 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx @@ -54,7 +54,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -673,7 +673,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xcoffins}{2017/07/19}{} +\ProvidesExplPackage{xcoffins}{2017/09/18}{} {L3 Experimental design level coffins} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index ca799677f59..57aa30fa328 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -24,8 +24,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/07/19] -%<package>\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +%<package>\@ifpackagelater{expl3}{2017/09/18} %<package> {} %<package> {% %<package> \PackageError{l3galley}{Support package l3kernel too old} @@ -59,7 +59,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -685,7 +685,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3galley}{2017/07/19}{} +\ProvidesExplPackage{l3galley}{2017/09/18}{} {L3 Experimental galley code} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx index f1c746e2aa8..6de00154467 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx @@ -45,7 +45,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -732,7 +732,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xgalley}{2017/07/19}{} +\ProvidesExplPackage{xgalley}{2017/09/18}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 13ad6e42e04..d25bc734518 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -21,7 +21,7 @@ % for those people who are interested. % %<*driver|generic|package> -\def\ExplFileDate{2017/07/19}% +\def\ExplFileDate{2017/09/18}% %</driver|generic|package> %<*driver> \documentclass[full]{l3doc} @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -459,7 +459,7 @@ % Due to the nature of the underlying \TeX{} implementation, it is % possible to assign values to token list variables and comma lists % without first declaring them. However, this is \emph{not supported -% behaviour}. The \LaTeX3 coding convention is that all variables must +% behavior}. The \LaTeX3 coding convention is that all variables must % be declared before use. % % The \pkg{expl3} package can be loaded with the \texttt{check-declarations} @@ -563,7 +563,7 @@ % % To denote that some argument to a function needs special treatment one % just uses different letters in the arg-spec part of the function to -% mark the desired behaviour. In the above example one would write +% mark the desired behavior. In the above example one would write % \begin{quote} % \cs{seq_gpush:NV} |\g_ior_file_name_seq \l_ior_curr_file_tl| % \end{quote} @@ -949,6 +949,7 @@ % than \LaTeX3 code. % \item[dvips] Use the \texttt{dvips} driver. % \item[dvipdfmx] Use the \texttt{dvipdfmx} driver. +% \item[dvisvgm] Use the \texttt{dvisvgm} driver. % \item[pdfmode] Use the \texttt{pdfmode} driver (direct PDF output from % \pdfTeX{} or \LuaTeX{}). % \item[xdvipdfmx] Use the \texttt{xdvipdfmx} driver (\XeTeX{} only). @@ -989,7 +990,8 @@ % \end{itemize} % Any engine which defines |\pdfoutput| (\emph{i.e.}~allows direct production % of a PDF file without a DVI intermediate) must also provide |\pdfcolorstack|, -% |\pdfliteral|, |\pdfmatrix|, |\pdfrestore| and |\pdfsave|. +% |\pdfliteral|, |\pdfmatrix|, |\pdfrestore| and |\pdfsave| or equivalent +% functionality. % % Practically, these requirements are met by the engines % \begin{itemize} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index 74c0d275820..d2f9c6e42de 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 573b39c470f..7afc9938780 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -1233,6 +1233,23 @@ % \cs{cs_if_exist_p:N}, and if not raises a kernel-level error. % \end{function} % +% \begin{function}{\__debug_chk_expr:nNnN} +% \begin{syntax} +% \cs{__debug_chk_expr:nNnN} \Arg{expr} \meta{eval} \Arg{convert} \meta{caller} +% \end{syntax} +% This function is only created if debugging is enabled. By default +% it is equivalent to \cs{use_i:nnnn}. When expression checking is +% enabled, it leaves in the input stream the result of \cs{tex_the:D} +% \meta{eval} \meta{expr} \cs{tex_relax:D} after checking that no +% token was left over. If any token was not taken as part of the +% expression, there is an error message displaying the result of the +% evaluation as well as the \meta{caller}. For instance \meta{eval} +% can be \cs{__int_eval:w} and \meta{caller} can be \cs{int_eval:n} or +% \cs{int_set:Nn}. The argument \meta{convert} is empty except for mu +% expressions where it is \cs{etex_mutoglue:D}, used for internal +% purposes. +% \end{function} +% % \begin{function}{\__debug_chk_var_exist:N} % \begin{syntax} % \cs{__debug_chk_var_exist:N} \meta{var} @@ -1307,7 +1324,7 @@ % \cs{cs_new:Npn} \cs{int_eval:n} |#1| \\ % ~~|{ \__int_value:w \__int_eval:w #1 \__int_eval_end: }| % \end{quote} -% replaces |#1| by |(#1)| in the definition of \cs{int_eval:n} when +% would replace |#1| by |(#1)| in the definition of \cs{int_eval:n} when % debugging is enabled. This fails if the \meta{code} contains~|##|. % The \cs{__debug_patch_conditional_args:nNNpnn} function is for use % before \cs{prg_new_conditional:Npnn} or its \texttt{_protected} @@ -1446,11 +1463,15 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\if_int_compare:w, \__int_to_roman:w} +% \begin{macrocode} +%<@@=int> +% \end{macrocode} +% +% \begin{macro}[EXP]{\if_int_compare:w, \@@_to_roman:w} % For integers. % \begin{macrocode} \tex_let:D \if_int_compare:w \tex_ifnum:D -\tex_let:D \__int_to_roman:w \tex_romannumeral:D +\tex_let:D \@@_to_roman:w \tex_romannumeral:D % \end{macrocode} % \end{macro} % @@ -1583,12 +1604,16 @@ % % \subsection{Selecting tokens} % -% \begin{variable}{\l__exp_internal_tl} +% \begin{macrocode} +%<@@=exp> +% \end{macrocode} +% +% \begin{variable}{\l_@@_internal_tl} % Scratch token list variable for \pkg{l3expan}, used by \cs{use:x}, % used in defining conditionals. We don't use |tl| methods because % \pkg{l3basics} is loaded earlier. % \begin{macrocode} -\cs_set_nopar:Npn \l__exp_internal_tl { } +\cs_set_nopar:Npn \l_@@_internal_tl { } % \end{macrocode} % \end{variable} % @@ -1601,12 +1626,12 @@ % % \begin{macro}{\use:x} % Fully expands its argument and passes it to the input stream. Uses -% the reserved \cs{l__exp_internal_tl} which will be set up in \pkg{l3expan}. +% the reserved \cs{l_@@_internal_tl} which will be set up in \pkg{l3expan}. % \begin{macrocode} \cs_set_protected:Npn \use:x #1 { - \cs_set_nopar:Npx \l__exp_internal_tl {#1} - \l__exp_internal_tl + \cs_set_nopar:Npx \l_@@_internal_tl {#1} + \l_@@_internal_tl } % \end{macrocode} % \end{macro} @@ -1715,7 +1740,11 @@ % % \subsection{Debugging and patching later definitions} % -% \begin{macro}[int]{\__debug:TF} +% \begin{macrocode} +%<@@=debug> +% \end{macrocode} +% +% \begin{macro}[int]{\@@:TF} % A more meaningful test of whether debugging is enabled than messing % up with guards. We can also more easily change the logic in one % place then. At present, debugging is disabled in the format and in @@ -1723,10 +1752,10 @@ % options \texttt{enable-debug}, \texttt{log-functions} or % \texttt{check-declarations} was given. % \begin{macrocode} -\cs_set_protected:Npn \__debug:TF #1#2 {#2} +\cs_set_protected:Npn \@@:TF #1#2 {#2} %<*package> \tex_ifodd:D \l@expl@enable@debug@bool - \cs_set_protected:Npn \__debug:TF #1#2 {#1} + \cs_set_protected:Npn \@@:TF #1#2 {#1} \fi: %</package> % \end{macrocode} @@ -1735,13 +1764,13 @@ % \begin{macro}{\debug_on:n, \debug_off:n} % % \begin{macrocode} -\__debug:TF +\@@:TF { \cs_set_protected:Npn \debug_on:n #1 { \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} } { - \cs_if_exist_use:cF { __debug_##1_on: } + \cs_if_exist_use:cF { @@_##1_on: } { \__msg_kernel_error:nnn { kernel } { debug } {##1} } } } @@ -1749,7 +1778,7 @@ { \exp_args:No \clist_map_inline:nn { \tl_to_str:n {#1} } { - \cs_if_exist_use:cF { __debug_##1_off: } + \cs_if_exist_use:cF { @@_##1_off: } { \__msg_kernel_error:nnn { kernel } { debug } {##1} } } } @@ -1770,20 +1799,20 @@ % \end{macro} % % \begin{macro}[aux] -% {\__debug_check-declarations_on:, \__debug_check-declarations_off:} -% \begin{macro}[int]{\__debug_chk_var_exist:N} -% \begin{macro}[int]{\__debug_chk_cs_exist:N, \__debug_chk_cs_exist:c} -% When debugging is not active these two functions produce an -% error. Otherwise they set up \cs{__debug_chk_var_exist:N} and -% \cs{__debug_chk_cs_exist:N}, two functions that test (when +% {\@@_check-declarations_on:, \@@_check-declarations_off:} +% \begin{macro}[int]{\@@_chk_var_exist:N} +% \begin{macro}[int]{\@@_chk_cs_exist:N, \@@_chk_cs_exist:c} +% When debugging is enabled these two functions +% set up \cs{@@_chk_var_exist:N} and +% \cs{@@_chk_cs_exist:N}, two functions that test (when % \texttt{check-declarations} is active) that their argument is % defined. % \begin{macrocode} -\__debug:TF +\@@:TF { - \exp_args:Nc \cs_set_protected:Npn { __debug_check-declarations_on: } + \exp_args:Nc \cs_set_protected:Npn { @@_check-declarations_on: } { - \cs_set_protected:Npn \__debug_chk_var_exist:N ##1 + \cs_set_protected:Npn \@@_chk_var_exist:N ##1 { \cs_if_exist:NF ##1 { @@ -1791,7 +1820,7 @@ { \token_to_str:N ##1 } } } - \cs_set_protected:Npn \__debug_chk_cs_exist:N ##1 + \cs_set_protected:Npn \@@_chk_cs_exist:N ##1 { \cs_if_exist:NF ##1 { @@ -1800,17 +1829,17 @@ } } } - \exp_args:Nc \cs_set_protected:Npn { __debug_check-declarations_off: } + \exp_args:Nc \cs_set_protected:Npn { @@_check-declarations_off: } { - \cs_set_protected:Npn \__debug_chk_var_exist:N ##1 { } - \cs_set_protected:Npn \__debug_chk_cs_exist:N ##1 { } + \cs_set_protected:Npn \@@_chk_var_exist:N ##1 { } + \cs_set_protected:Npn \@@_chk_cs_exist:N ##1 { } } - \cs_set_protected:Npn \__debug_chk_cs_exist:c - { \exp_args:Nc \__debug_chk_cs_exist:N } + \cs_set_protected:Npn \@@_chk_cs_exist:c + { \exp_args:Nc \@@_chk_cs_exist:N } \tex_ifodd:D \l@expl@check@declarations@bool - \use:c { __debug_check-declarations_on: } + \use:c { @@_check-declarations_on: } \else: - \use:c { __debug_check-declarations_off: } + \use:c { @@_check-declarations_off: } \fi: } { } @@ -1819,52 +1848,110 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux]{\__debug_log-functions_on:, \__debug_log-functions_off:} -% \begin{macro}[int]{\__debug_log:x, \__debug_suspend_log:, \__debug_resume_log:} +% \begin{macro}[aux] +% {\@@_check-expressions_on:, \@@_check-expressions_off:} +% \begin{macro}[int]{\@@_chk_expr:nNnN} +% \begin{macro}[aux]{\@@_chk_expr_aux:nNnN} +% When debugging is enabled these two functions set +% \cs{@@_chk_expr:nNnN} to test or not whether the given +% expression is valid. The idea is to evaluate the expression within +% a brace group (to catch trailing \cs{use_none:nn} or similar), then +% test that the result is what we expect. This is done by turning it +% to an integer and hitting that with \cs{tex_romannumeral:D} after +% replacing the first character by |-0|. If all goes well, that +% primitive finds a non-positive integer and gives an empty output. +% If the original expression evaluation stopped early it leaves a +% trailing \cs{tex_relax:D}, which stops the second evaluation (used +% to convert to integer) before it encounters the final +% \cs{tex_relax:D}. Since \cs{tex_romannumeral:D} does not absorb +% \cs{tex_relax:D} the output will be nonempty. Note that |#3| is +% empty except for mu expressions for which it is \cs{etex_mutoglue:D} +% to avoid an \enquote{incompatible glue units} error. Note also that +% if we had omitted the first \cs{tex_relax:D} then for instance +% |1+2\relax+3| would incorrectly be accepted as a valid integer +% expression. +% \begin{macrocode} +\@@:TF + { + \exp_args:Nc \cs_set_protected:Npn { @@_check-expressions_on: } + { + \cs_set:Npn \@@_chk_expr:nNnN ##1##2 + { + \exp_after:wN \@@_chk_expr_aux:nNnN + \exp_after:wN { \tex_the:D ##2 ##1 \tex_relax:D } + ##2 + } + } + \exp_args:Nc \cs_set_protected:Npn { @@_check-expressions_off: } + { \cs_set:Npn \@@_chk_expr:nNnN ##1##2##3##4 {##1} } + \use:c { @@_check-expressions_off: } + \cs_set:Npn \@@_chk_expr_aux:nNnN #1#2#3#4 + { + \tl_if_empty:oF + { + \tex_romannumeral:D - 0 + \exp_after:wN \use_none:n + \__int_value:w #3 #2 #1 \tex_relax:D + } + { + \__msg_kernel_expandable_error:nnnn + { kernel } { expr } {#4} {#1} + } + #1 + } + } + { } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}[aux]{\@@_log-functions_on:, \@@_log-functions_off:} +% \begin{macro}[int]{\@@_log:x, \@@_suspend_log:, \@@_resume_log:} % These two functions % (corresponding to the \pkg{expl3} option \texttt{log-functions}) -% control whether \cs{__debug_log:x} writes to the log file or not. +% control whether \cs{@@_log:x} writes to the log file or not. % Since \cs{iow_log:x} does not yet have its final definition we do % not use \cs{cs_set_eq:NN} (not defined yet anyway). The -% \cs{__debug_suspend_log:} function disables \cs{__debug_log:x} until -% the matching \cs{__debug_resume_log:}. These two commands are used +% \cs{@@_suspend_log:} function disables \cs{@@_log:x} until +% the matching \cs{@@_resume_log:}. These two commands are used % to improve the logging for datatypes with multiple parts, currently % only coffins. They should come in pairs, which can be nested (this % complicates the code here and is currently unused). The function % \cs{exp_not:o} is defined in \pkg{l3expan} later on but -% \cs{__debug_suspend_log:} and \cs{__debug_resume_log:} are not used +% \cs{@@_suspend_log:} and \cs{@@_resume_log:} are not used % before that point. Once everything is defined, turn logging on or % off depending on what option was given. % When debugging is not enabled, simply produce an error. % \begin{macrocode} -\__debug:TF +\@@:TF { - \exp_args:Nc \cs_set_protected:Npn { __debug_log-functions_on: } + \exp_args:Nc \cs_set_protected:Npn { @@_log-functions_on: } { - \cs_set_protected:Npn \__debug_log:x { \iow_log:x } - \cs_set_protected:Npn \__debug_suspend_log: + \cs_set_protected:Npn \@@_log:x { \iow_log:x } + \cs_set_protected:Npn \@@_suspend_log: { - \cs_set_protected:Npx \__debug_resume_log: + \cs_set_protected:Npx \@@_resume_log: { - \cs_set_protected:Npn \__debug_resume_log: - { \exp_not:o { \__debug_resume_log: } } - \cs_set_protected:Npn \__debug_log:x - { \exp_not:o { \__debug_log:x } } + \cs_set_protected:Npn \@@_resume_log: + { \exp_not:o { \@@_resume_log: } } + \cs_set_protected:Npn \@@_log:x + { \exp_not:o { \@@_log:x } } } - \cs_set_protected:Npn \__debug_log:x { \use_none:n } + \cs_set_protected:Npn \@@_log:x { \use_none:n } } - \cs_set_protected:Npn \__debug_resume_log: { } + \cs_set_protected:Npn \@@_resume_log: { } } - \exp_args:Nc \cs_set_protected:Npn { __debug_log-functions_off: } + \exp_args:Nc \cs_set_protected:Npn { @@_log-functions_off: } { - \cs_set_protected:Npn \__debug_log:x { \use_none:n } - \cs_set_protected:Npn \__debug_suspend_log: { } - \cs_set_protected:Npn \__debug_resume_log: { } + \cs_set_protected:Npn \@@_log:x { \use_none:n } + \cs_set_protected:Npn \@@_suspend_log: { } + \cs_set_protected:Npn \@@_resume_log: { } } \tex_ifodd:D \l@expl@log@functions@bool - \use:c { __debug_log-functions_on: } + \use:c { @@_log-functions_on: } \else: - \use:c { __debug_log-functions_off: } + \use:c { @@_log-functions_off: } \fi: } { } @@ -1872,33 +1959,33 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\__debug_deprecation_on:, \__debug_deprecation_off:} -% \begin{variable}{\g__debug_deprecation_on_tl, \g__debug_deprecation_off_tl} +% \begin{macro}{\@@_deprecation_on:, \@@_deprecation_off:} +% \begin{variable}{\g_@@_deprecation_on_tl, \g_@@_deprecation_off_tl} % Some commands were more recently deprecated and not yet removed; % only make these into errors if the user requests it. This relies on % two token lists, filled up by calls to -% \cs{__debug_deprecation:nnNNpn} in each module. +% \cs{@@_deprecation:nnNNpn} in each module. % \begin{macrocode} -\__debug:TF +\@@:TF { - \cs_set_protected:Npn \__debug_deprecation_on: - { \g__debug_deprecation_on_tl } - \cs_set_protected:Npn \__debug_deprecation_off: - { \g__debug_deprecation_off_tl } - \cs_set_nopar:Npn \g__debug_deprecation_on_tl { } - \cs_set_nopar:Npn \g__debug_deprecation_off_tl { } + \cs_set_protected:Npn \@@_deprecation_on: + { \g_@@_deprecation_on_tl } + \cs_set_protected:Npn \@@_deprecation_off: + { \g_@@_deprecation_off_tl } + \cs_set_nopar:Npn \g_@@_deprecation_on_tl { } + \cs_set_nopar:Npn \g_@@_deprecation_off_tl { } } { } % \end{macrocode} % \end{variable} % \end{macro} % -% \begin{macro}[int]{\__debug_deprecation:nnNNpn} -% \begin{macro}[aux]{\__debug_deprecation_aux:nnNnn} +% \begin{macro}[int]{\@@_deprecation:nnNNpn} +% \begin{macro}[aux]{\@@_deprecation_aux:nnNnn} % Grab a definition (at present, must be \cs{cs_new_protected:Npn}). -% Add to \cs{g__debug_deprecation_on_tl} some code that makes the +% Add to \cs{g_@@_deprecation_on_tl} some code that makes the % defined macro |#3| outer (and defines it as an error). Add to -% \cs{g__debug_deprecation_off_tl} the definition itself. In both +% \cs{g_@@_deprecation_off_tl} the definition itself. In both % cases we undefine the token with \cs{tex_let:D} to avoid taking a % potentially outer macro as the argument of some \pkg{expl3} % function. Finally define the macro itself to produce a warning then @@ -1906,28 +1993,28 @@ % together with the \texttt{x}-expanding assignment and \cs{exp_not:n} % this gives a convenient way of storing the macro's definition in % itself in order to only produce the warning once for each macro. -% If debugging is disabled, \cs{__debug_deprecation:nnNNpn} lets the +% If debugging is disabled, \cs{@@_deprecation:nnNNpn} lets the % definition happen. % \begin{macrocode} -\__debug:TF +\@@:TF { - \cs_set_protected:Npn \__debug_deprecation:nnNNpn #1#2#3#4#5# + \cs_set_protected:Npn \@@_deprecation:nnNNpn #1#2#3#4#5# { \if_meaning:w \cs_new_protected:Npn #3 \else: \__msg_kernel_error:nnx { kernel } { debug-unpatchable } { \token_to_str:N #3 ~(for~deprecation) } \fi: - \__debug_deprecation_aux:nnNnn {#1} {#2} #4 {#5} + \@@_deprecation_aux:nnNnn {#1} {#2} #4 {#5} } - \cs_set_protected:Npn \__debug_deprecation_aux:nnNnn #1#2#3#4#5 + \cs_set_protected:Npn \@@_deprecation_aux:nnNnn #1#2#3#4#5 { - \tl_gput_right:Nn \g__debug_deprecation_on_tl + \tl_gput_right:Nn \g_@@_deprecation_on_tl { \tex_let:D #3 \scan_stop: \__deprecation_error:Nnn #3 {#2} {#1} } - \tl_gput_right:Nn \g__debug_deprecation_off_tl + \tl_gput_right:Nn \g_@@_deprecation_off_tl { \tex_let:D #3 \scan_stop: \cs_set_protected:Npn #3 #4 {#5} @@ -1942,50 +2029,50 @@ } } } - { \cs_set_protected:Npn \__debug_deprecation:nnNNpn #1#2 { } } + { \cs_set_protected:Npn \@@_deprecation:nnNNpn #1#2 { } } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}[int] -% {\__debug_patch:nnNNpn, \__debug_patch_conditional:nNNpnn} +% {\@@_patch:nnNNpn, \@@_patch_conditional:nNNpnn} % \begin{macro}[aux] -% {\__debug_patch_aux:nnNNnn, \__debug_patch_aux:nNNnnn} -% When debugging is not enabled, \cs{__debug_patch:nnNNpn} and -% \cs{__debug_patch_conditional:nNNpnn} throw the patch away. +% {\@@_patch_aux:nnNNnn, \@@_patch_aux:nNNnnn} +% When debugging is not enabled, \cs{@@_patch:nnNNpn} and +% \cs{@@_patch_conditional:nNNpnn} throw the patch away. % Otherwise they can be followed by \cs{cs_new:Npn} (or similar), and % \cs{prg_new_conditional:Npnn} (or similar), respectively. In each % case, grab the name of the function to be defined and its parameters % then insert tokens before and/or after the definition. % \begin{macrocode} -\__debug:TF +\@@:TF { - \cs_set_protected:Npn \__debug_patch:nnNNpn #1#2#3#4#5# - { \__debug_patch_aux:nnNNnn {#1} {#2} #3 #4 {#5} } - \cs_set_protected:Npn \__debug_patch_conditional:nNNpnn #1#2#3#4# - { \__debug_patch_aux:nNNnnn {#1} #2 #3 {#4} } - \cs_set_protected:Npn \__debug_patch_aux:nnNNnn #1#2#3#4#5#6 + \cs_set_protected:Npn \@@_patch:nnNNpn #1#2#3#4#5# + { \@@_patch_aux:nnNNnn {#1} {#2} #3 #4 {#5} } + \cs_set_protected:Npn \@@_patch_conditional:nNNpnn #1#2#3#4# + { \@@_patch_aux:nNNnnn {#1} #2 #3 {#4} } + \cs_set_protected:Npn \@@_patch_aux:nnNNnn #1#2#3#4#5#6 { #3 #4 #5 { #1 #6 #2 } } - \cs_set_protected:Npn \__debug_patch_aux:nNNnnn #1#2#3#4#5#6 + \cs_set_protected:Npn \@@_patch_aux:nNNnnn #1#2#3#4#5#6 { #2 #3 #4 {#5} { #1 #6 } } } { - \cs_set_protected:Npn \__debug_patch:nnNNpn #1#2 { } - \cs_set_protected:Npn \__debug_patch_conditional:nNNpnn #1 { } + \cs_set_protected:Npn \@@_patch:nnNNpn #1#2 { } + \cs_set_protected:Npn \@@_patch_conditional:nNNpnn #1 { } } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}[int] -% {\__debug_patch_args:nNNpn, \__debug_patch_conditional_args:nNNpnn} +% {\@@_patch_args:nNNpn, \@@_patch_conditional_args:nNNpnn} % \begin{macro}[aux] % { -% \__debug_tmp:w, -% \__debug_patch_args_aux:nNNnn, -% \__debug_patch_args_aux:nNNnnn +% \@@_tmp:w, +% \@@_patch_args_aux:nNNnn, +% \@@_patch_args_aux:nNNnnn % } -% See \cs{__debug_patch:nnNNpn}. The first argument is something like +% See \cs{@@_patch:nnNNpn}. The first argument is something like % |{#1}{(#2)}|. Define a temporary macro using the \meta{parameters} % and \meta{code} of the definition that follows, then expand that % temporary macro in front of the first argument to obtain new @@ -1993,28 +2080,28 @@ % was directly typed in the file. To make it easy to expand in the % definition, treat it as a \enquote{pre}-code to an empty definition. % \begin{macrocode} -\__debug:TF +\@@:TF { - \cs_set_protected:Npn \__debug_patch_args:nNNpn #1#2#3#4# - { \__debug_patch_args_aux:nNNnn {#1} #2 #3 {#4} } - \cs_set_protected:Npn \__debug_patch_conditional_args:nNNpnn #1#2#3#4# - { \__debug_patch_args_aux:nNNnnn {#1} #2 #3 {#4} } - \cs_set_protected:Npn \__debug_patch_args_aux:nNNnn #1#2#3#4#5 + \cs_set_protected:Npn \@@_patch_args:nNNpn #1#2#3#4# + { \@@_patch_args_aux:nNNnn {#1} #2 #3 {#4} } + \cs_set_protected:Npn \@@_patch_conditional_args:nNNpnn #1#2#3#4# + { \@@_patch_args_aux:nNNnnn {#1} #2 #3 {#4} } + \cs_set_protected:Npn \@@_patch_args_aux:nNNnn #1#2#3#4#5 { - \cs_set:Npn \__debug_tmp:w #4 {#5} - \exp_after:wN \__debug_patch_aux:nnNNnn \exp_after:wN - { \__debug_tmp:w #1 } { } #2 #3 {#4} { } + \cs_set:Npn \@@_tmp:w #4 {#5} + \exp_after:wN \@@_patch_aux:nnNNnn \exp_after:wN + { \@@_tmp:w #1 } { } #2 #3 {#4} { } } - \cs_set_protected:Npn \__debug_patch_args_aux:nNNnnn #1#2#3#4#5#6 + \cs_set_protected:Npn \@@_patch_args_aux:nNNnnn #1#2#3#4#5#6 { - \cs_set:Npn \__debug_tmp:w #4 {#6} - \exp_after:wN \__debug_patch_aux:nNNnnn \exp_after:wN - { \__debug_tmp:w #1 } #2 #3 {#4} {#5} { } + \cs_set:Npn \@@_tmp:w #4 {#6} + \exp_after:wN \@@_patch_aux:nNNnnn \exp_after:wN + { \@@_tmp:w #1 } #2 #3 {#4} {#5} { } } } { - \cs_set_protected:Npn \__debug_patch_args:nNNpn #1 { } - \cs_set_protected:Npn \__debug_patch_conditional_args:nNNpnn #1 { } + \cs_set_protected:Npn \@@_patch_args:nNNpn #1 { } + \cs_set_protected:Npn \@@_patch_conditional_args:nNNpnn #1 { } } % \end{macrocode} % \end{macro} @@ -2022,6 +2109,10 @@ % % \subsection{Conditional processing and definitions} % +% \begin{macrocode} +%<@@=prg> +% \end{macrocode} +% % Underneath any predicate function (|_p|) or other conditional forms % (|TF|, etc.) is a built-in logic saying that it after all of the % testing and processing must return the \meta{state} this leaves @@ -2070,7 +2161,7 @@ % \prg_set_protected_conditional:Npnn , % \prg_new_protected_conditional:Npnn , % } -% \begin{macro}[aux]{\__prg_generate_conditional_parm:nnNpnn} +% \begin{macro}[aux]{\@@_generate_conditional_parm:nnNpnn} % The user functions for the types using parameter text from the % programmer. The various functions only differ by which function is % used for the assignment. For those |Npnn| type functions, we must @@ -2082,16 +2173,16 @@ % conditionals. % \begin{macrocode} \cs_set_protected:Npn \prg_set_conditional:Npnn - { \__prg_generate_conditional_parm:nnNpnn { set } { } } + { \@@_generate_conditional_parm:nnNpnn { set } { } } \cs_set_protected:Npn \prg_new_conditional:Npnn - { \__prg_generate_conditional_parm:nnNpnn { new } { } } + { \@@_generate_conditional_parm:nnNpnn { new } { } } \cs_set_protected:Npn \prg_set_protected_conditional:Npnn - { \__prg_generate_conditional_parm:nnNpnn { set } { _protected } } + { \@@_generate_conditional_parm:nnNpnn { set } { _protected } } \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# + { \@@_generate_conditional_parm:nnNpnn { new } { _protected } } +\cs_set_protected:Npn \@@_generate_conditional_parm:nnNpnn #1#2#3#4# { - \__cs_split_function:NN #3 \__prg_generate_conditional:nnNnnnnn + \__cs_split_function:NN #3 \@@_generate_conditional:nnNnnnnn {#1} {#2} {#4} } % \end{macrocode} @@ -2107,8 +2198,8 @@ % } % \begin{macro}[aux] % { -% \__prg_generate_conditional_count:nnNnn , -% \__prg_generate_conditional_count:nnNnnnn +% \@@_generate_conditional_count:nnNnn , +% \@@_generate_conditional_count:nnNnnnn % } % The user functions for the types automatically inserting the correct % parameter text based on the signature. The various functions only @@ -2124,22 +2215,22 @@ % later. % \begin{macrocode} \cs_set_protected:Npn \prg_set_conditional:Nnn - { \__prg_generate_conditional_count:nnNnn { set } { } } + { \@@_generate_conditional_count:nnNnn { set } { } } \cs_set_protected:Npn \prg_new_conditional:Nnn - { \__prg_generate_conditional_count:nnNnn { new } { } } + { \@@_generate_conditional_count:nnNnn { new } { } } \cs_set_protected:Npn \prg_set_protected_conditional:Nnn - { \__prg_generate_conditional_count:nnNnn { set } { _protected } } + { \@@_generate_conditional_count:nnNnn { set } { _protected } } \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 + { \@@_generate_conditional_count:nnNnn { new } { _protected } } +\cs_set_protected:Npn \@@_generate_conditional_count:nnNnn #1#2#3 { - \__cs_split_function:NN #3 \__prg_generate_conditional_count:nnNnnnn + \__cs_split_function:NN #3 \@@_generate_conditional_count:nnNnnnn {#1} {#2} } -\cs_set_protected:Npn \__prg_generate_conditional_count:nnNnnnn #1#2#3#4#5 +\cs_set_protected:Npn \@@_generate_conditional_count:nnNnnnn #1#2#3#4#5 { \__cs_parm_from_arg_count:nnF - { \__prg_generate_conditional:nnNnnnnn {#1} {#2} #3 {#4} {#5} } + { \@@_generate_conditional:nnNnnnnn {#1} {#2} #3 {#4} {#5} } { \tl_count:n {#2} } { \__msg_kernel_error:nnxx { kernel } { bad-number-of-arguments } @@ -2154,8 +2245,8 @@ % % \begin{macro}[aux] % { -% \__prg_generate_conditional:nnNnnnnn, -% \__prg_generate_conditional:nnnnnnw +% \@@_generate_conditional:nnNnnnnn, +% \@@_generate_conditional:nnnnnnw % } % The workhorse here is going through a list of desired forms, \emph{i.e.}, % |p|, |TF|, |T| and |F|. The first three arguments come from splitting up @@ -2168,7 +2259,7 @@ % replacement text which we will augment when defining the forms. % The use of \cs{tl_to_str:n} makes the later loop more robust. % \begin{macrocode} -\cs_set_protected:Npn \__prg_generate_conditional:nnNnnnnn #1#2#3#4#5#6#7#8 +\cs_set_protected:Npn \@@_generate_conditional:nnNnnnnn #1#2#3#4#5#6#7#8 { \if_meaning:w \c_false_bool #3 \__msg_kernel_error:nnx { kernel } { missing-colon } @@ -2177,7 +2268,7 @@ \fi: \use:x { - \exp_not:N \__prg_generate_conditional:nnnnnnw + \exp_not:N \@@_generate_conditional:nnnnnnw \exp_not:n { {#4} {#5} {#1} {#2} {#6} {#8} } \tl_to_str:n {#7} \exp_not:n { , \q_recursion_tail , \q_recursion_stop } @@ -2192,12 +2283,12 @@ % then \cs{use_none:nnnnnnn} cleans up. Otherwise, the % error message is removed by the variant form. % \begin{macrocode} -\cs_set_protected:Npn \__prg_generate_conditional:nnnnnnw #1#2#3#4#5#6#7 , +\cs_set_protected:Npn \@@_generate_conditional:nnnnnnw #1#2#3#4#5#6#7 , { \if_meaning:w \q_recursion_tail #7 \exp_after:wN \use_none_delimit_by_q_recursion_stop:w \fi: - \use:c { __prg_generate_ #7 _form:wnnnnnn } + \use:c { @@_generate_ #7 _form:wnnnnnn } \tl_if_empty:nF {#7} { \__msg_kernel_error:nnxx @@ -2207,17 +2298,17 @@ \use_none:nnnnnnn \q_stop {#1} {#2} {#3} {#4} {#5} {#6} - \__prg_generate_conditional:nnnnnnw {#1} {#2} {#3} {#4} {#5} {#6} + \@@_generate_conditional:nnnnnnw {#1} {#2} {#3} {#4} {#5} {#6} } % \end{macrocode} % \end{macro} % % \begin{macro}[aux] % { -% \__prg_generate_p_form:wnnnnnn, -% \__prg_generate_TF_form:wnnnnnn, -% \__prg_generate_T_form:wnnnnnn, -% \__prg_generate_F_form:wnnnnnn +% \@@_generate_p_form:wnnnnnn, +% \@@_generate_TF_form:wnnnnnn, +% \@@_generate_T_form:wnnnnnn, +% \@@_generate_F_form:wnnnnnn % } % How to generate the various forms. Those functions take the % following arguments: 1: \texttt{set} or \texttt{new}, 2: empty or @@ -2229,7 +2320,7 @@ % version. The |p| form is only valid for expandable tests, we check % for that by making sure that the second argument is empty. % \begin{macrocode} -\cs_set_protected:Npn \__prg_generate_p_form:wnnnnnn +\cs_set_protected:Npn \@@_generate_p_form:wnnnnnn #1 \q_stop #2#3#4#5#6#7 { \if_meaning:w \scan_stop: #3 \scan_stop: @@ -2246,19 +2337,19 @@ { \token_to_str:c { #4 _p: #5 } } } } -\cs_set_protected:Npn \__prg_generate_T_form:wnnnnnn +\cs_set_protected:Npn \@@_generate_T_form:wnnnnnn #1 \q_stop #2#3#4#5#6#7 { \exp_args:cc { cs_ #2 #3 :Npn } { #4 : #5 T } #6 { #7 \exp_end: \use:n \use_none:n } } -\cs_set_protected:Npn \__prg_generate_F_form:wnnnnnn +\cs_set_protected:Npn \@@_generate_F_form:wnnnnnn #1 \q_stop #2#3#4#5#6#7 { \exp_args:cc { cs_ #2 #3 :Npn } { #4 : #5 F } #6 { #7 \exp_end: { } } } -\cs_set_protected:Npn \__prg_generate_TF_form:wnnnnnn +\cs_set_protected:Npn \@@_generate_TF_form:wnnnnnn #1 \q_stop #2#3#4#5#6#7 { \exp_args:cc { cs_ #2 #3 :Npn } { #4 : #5 TF } #6 @@ -2268,7 +2359,7 @@ % \end{macro} % % \begin{macro}{\prg_set_eq_conditional:NNn, \prg_new_eq_conditional:NNn} -% \begin{macro}[aux]{\__prg_set_eq_conditional:NNNn} +% \begin{macro}[aux]{\@@_set_eq_conditional:NNNn} % The setting-equal functions. Split both functions and feed % \Arg{name_1} \Arg{signature_1} \meta{boolean_1} % \Arg{name_2} \Arg{signature_2} \meta{boolean_2} @@ -2277,14 +2368,14 @@ % to a first auxiliary. % \begin{macrocode} \cs_set_protected:Npn \prg_set_eq_conditional:NNn - { \__prg_set_eq_conditional:NNNn \cs_set_eq:cc } + { \@@_set_eq_conditional:NNNn \cs_set_eq:cc } \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 + { \@@_set_eq_conditional:NNNn \cs_new_eq:cc } +\cs_set_protected:Npn \@@_set_eq_conditional:NNNn #1#2#3#4 { \use:x { - \exp_not:N \__prg_set_eq_conditional:nnNnnNNw + \exp_not:N \@@_set_eq_conditional:nnNnnNNw \__cs_split_function:NN #2 \prg_do_nothing: \__cs_split_function:NN #3 \prg_do_nothing: \exp_not:N #1 @@ -2298,15 +2389,15 @@ % % \begin{macro}[aux] % { -% \__prg_set_eq_conditional:nnNnnNNw , -% \__prg_set_eq_conditional_loop:nnnnNw +% \@@_set_eq_conditional:nnNnnNNw , +% \@@_set_eq_conditional_loop:nnnnNw % } % \begin{macro}[aux, EXP] % { -% \__prg_set_eq_conditional_p_form:nnn , -% \__prg_set_eq_conditional_TF_form:nnn , -% \__prg_set_eq_conditional_T_form:nnn , -% \__prg_set_eq_conditional_F_form:nnn , +% \@@_set_eq_conditional_p_form:nnn , +% \@@_set_eq_conditional_TF_form:nnn , +% \@@_set_eq_conditional_T_form:nnn , +% \@@_set_eq_conditional_F_form:nnn , % } % Split the function to be defined, and setup a manual clist loop over % argument |#6| of the first auxiliary. The second auxiliary receives @@ -2319,7 +2410,7 @@ % step in the loop, make sure that the conditional form we copy is % defined, and copy it, otherwise abort. % \begin{macrocode} -\cs_set_protected:Npn \__prg_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6 +\cs_set_protected:Npn \@@_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6 { \if_meaning:w \c_false_bool #3 \__msg_kernel_error:nnx { kernel } { missing-colon } @@ -2331,14 +2422,14 @@ { \token_to_str:c {#4} } \exp_after:wN \use_none_delimit_by_q_recursion_stop:w \fi: - \__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#4} {#5} + \@@_set_eq_conditional_loop:nnnnNw {#1} {#2} {#4} {#5} } -\cs_set_protected:Npn \__prg_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 , +\cs_set_protected:Npn \@@_set_eq_conditional_loop:nnnnNw #1#2#3#4#5#6 , { \if_meaning:w \q_recursion_tail #6 \exp_after:wN \use_none_delimit_by_q_recursion_stop:w \fi: - \use:c { __prg_set_eq_conditional_ #6 _form:wNnnnn } + \use:c { @@_set_eq_conditional_ #6 _form:wNnnnn } \tl_if_empty:nF {#6} { \__msg_kernel_error:nnxx @@ -2348,23 +2439,23 @@ \use_none:nnnnnn \q_stop #5 {#1} {#2} {#3} {#4} - \__prg_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5 + \@@_set_eq_conditional_loop:nnnnNw {#1} {#2} {#3} {#4} #5 } \__debug_patch:nnNNpn { \__debug_chk_cs_exist:c { #5 _p : #6 } } { } -\cs_set:Npn \__prg_set_eq_conditional_p_form:wNnnnn #1 \q_stop #2#3#4#5#6 +\cs_set:Npn \@@_set_eq_conditional_p_form:wNnnnn #1 \q_stop #2#3#4#5#6 { #2 { #3 _p : #4 } { #5 _p : #6 } } \__debug_patch:nnNNpn { \__debug_chk_cs_exist:c { #5 : #6 TF } } { } -\cs_set:Npn \__prg_set_eq_conditional_TF_form:wNnnnn #1 \q_stop #2#3#4#5#6 +\cs_set:Npn \@@_set_eq_conditional_TF_form:wNnnnn #1 \q_stop #2#3#4#5#6 { #2 { #3 : #4 TF } { #5 : #6 TF } } \__debug_patch:nnNNpn { \__debug_chk_cs_exist:c { #5 : #6 T } } { } -\cs_set:Npn \__prg_set_eq_conditional_T_form:wNnnnn #1 \q_stop #2#3#4#5#6 +\cs_set:Npn \@@_set_eq_conditional_T_form:wNnnnn #1 \q_stop #2#3#4#5#6 { #2 { #3 : #4 T } { #5 : #6 T } } \__debug_patch:nnNNpn { \__debug_chk_cs_exist:c { #5 : #6 F } } { } -\cs_set:Npn \__prg_set_eq_conditional_F_form:wNnnnn #1 \q_stop #2#3#4#5#6 +\cs_set:Npn \@@_set_eq_conditional_F_form:wNnnnn #1 \q_stop #2#3#4#5#6 { #2 { #3 : #4 F } { #5 : #6 F } } % \end{macrocode} % \end{macro} @@ -2389,8 +2480,12 @@ % % \subsection{Dissecting a control sequence} % +% \begin{macrocode} +%<@@=cs> +% \end{macrocode} +% % \begin{macro}[EXP]{\cs_to_str:N} -% \begin{macro}[aux, EXP]{\__cs_to_str:N, \__cs_to_str:w} +% \begin{macro}[aux, EXP]{\@@_to_str:N, \@@_to_str:w} % This converts a control sequence into the character string of its % name, removing the leading escape character. This turns out to be % a non-trivial matter as there a different cases: @@ -2411,17 +2506,17 @@ % a little more intricate still. When the escape character is printable, % \verb*|\token_to_str:N \ | yields the escape character itself and a space. % The character codes are different, thus the \cs{if:w} test is false, -% and \TeX{} reads \cs{__cs_to_str:N} after turning the following +% and \TeX{} reads \cs{@@_to_str:N} after turning the following % control sequence into a string; this auxiliary removes the escape % character, and stops the expansion of the initial \cs{tex_romannumeral:D}. % The second case is that the escape character is not printable. Then % the \cs{if:w} test is unfinished after reading a the space from -% \verb*|\token_to_str:N \ |, and the auxiliary \cs{__cs_to_str:w} +% \verb*|\token_to_str:N \ |, and the auxiliary \cs{@@_to_str:w} % is expanded, feeding |-| as a second character for the test; % the test is false, and \TeX{} skips to \cs{fi:}, then performs % \cs{token_to_str:N}, and stops the \cs{tex_romannumeral:D} with \cs{c_zero}. % The last case is that the escape character is itself a space. In this -% case, the \cs{if:w} test is true, and the auxiliary \cs{__cs_to_str:w} +% case, the \cs{if:w} test is true, and the auxiliary \cs{@@_to_str:w} % comes into play, inserting |-\__int_value:w|, which expands \cs{c_zero} % to the character |0|. The initial \cs{tex_romannumeral:D} then sees % |0|, which is not a terminated number, followed by the escape character, @@ -2440,11 +2535,11 @@ % we make this dependency explicit. % \begin{macrocode} \tex_romannumeral:D - \if:w \token_to_str:N \ \__cs_to_str:w \fi: - \exp_after:wN \__cs_to_str:N \token_to_str:N + \if:w \token_to_str:N \ \@@_to_str:w \fi: + \exp_after:wN \@@_to_str:N \token_to_str:N } -\cs_set:Npn \__cs_to_str:N #1 { \c_zero } -\cs_set:Npn \__cs_to_str:w #1 \__cs_to_str:N +\cs_set:Npn \@@_to_str:N #1 { \c_zero } +\cs_set:Npn \@@_to_str:w #1 \@@_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 @@ -2454,18 +2549,18 @@ % \end{macro} % \end{macro} % -% \begin{macro}[EXP, int]{\__cs_split_function:NN} +% \begin{macro}[EXP, int]{\@@_split_function:NN} % \begin{macro}[aux, EXP] -% {\__cs_split_function_auxi:w, \__cs_split_function_auxii:w} +% {\@@_split_function_auxi:w, \@@_split_function_auxii:w} % This function takes a function name and splits it into name with % the escape char removed and argument specification. In addition to % this, a third argument, a boolean \meta{true} or \meta{false} is % returned with \meta{true} for when there is a colon in the function % and \meta{false} if there is not. Lastly, the second argument of -% \cs{__cs_split_function:NN} is supposed to be a function +% \cs{@@_split_function:NN} is supposed to be a function % taking three variables, one for name, one for signature, and one % for the boolean. For example, -% |\__cs_split_function:NN \foo_bar:cnx \use_i:nnn| as input +% |\@@_split_function:NN \foo_bar:cnx \use_i:nnn| as input % becomes |\use_i:nnn {foo_bar} {cnx} \c_true_bool|. % % We cannot use |:| directly as it has the wrong category code so @@ -2482,34 +2577,34 @@ % auxiliary trims the trailing \cs{q_mark} from the function name if % present (that is, if the original function had no colon). % \begin{macrocode} -\cs_set:Npx \__cs_split_function:NN #1 +\cs_set:Npx \@@_split_function:NN #1 { \exp_not:N \exp_after:wN \exp_not:N \exp_after:wN - \exp_not:N \exp_after:wN \exp_not:N \__cs_split_function_auxi:w + \exp_not:N \exp_after:wN \exp_not:N \@@_split_function_auxi:w \exp_not:N \cs_to_str:N #1 \exp_not:N \q_mark \c_true_bool \token_to_str:N : \exp_not:N \q_mark \c_false_bool \exp_not:N \q_stop } \use:x { - \cs_set:Npn \exp_not:N \__cs_split_function_auxi:w + \cs_set:Npn \exp_not:N \@@_split_function_auxi:w ##1 \token_to_str:N : ##2 \exp_not:N \q_mark ##3##4 \exp_not:N \q_stop ##5 } - { \__cs_split_function_auxii:w #5 #1 \q_mark \q_stop {#2} #3 } -\cs_set:Npn \__cs_split_function_auxii:w #1#2 \q_mark #3 \q_stop + { \@@_split_function_auxii:w #5 #1 \q_mark \q_stop {#2} #3 } +\cs_set:Npn \@@_split_function_auxii:w #1#2 \q_mark #3 \q_stop { #1 {#2} } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}[EXP, int] -% {\__cs_get_function_name:N, \__cs_get_function_signature:N} +% {\@@_get_function_name:N, \@@_get_function_signature:N} % Simple wrappers. % \begin{macrocode} -\cs_set:Npn \__cs_get_function_name:N #1 - { \__cs_split_function:NN #1 \use_i:nnn } -\cs_set:Npn \__cs_get_function_signature:N #1 - { \__cs_split_function:NN #1 \use_ii:nnn } +\cs_set:Npn \@@_get_function_name:N #1 + { \@@_split_function:NN #1 \use_i:nnn } +\cs_set:Npn \@@_get_function_signature:N #1 + { \@@_split_function:NN #1 \use_ii:nnn } % \end{macrocode} % \end{macro} % @@ -2715,6 +2810,10 @@ % % \subsection{Defining new functions} % +% \begin{macrocode} +%<@@=cs> +% \end{macrocode} +% % \begin{macro} % { % \cs_new_nopar:Npn , \cs_new_nopar:Npx , @@ -2722,11 +2821,11 @@ % \cs_new_protected_nopar:Npn , \cs_new_protected_nopar:Npx , % \cs_new_protected:Npn , \cs_new_protected:Npx % } -% \begin{macro}[int]{\__cs_tmp:w} +% \begin{macro}[int]{\@@_tmp:w} % Function which check that the control sequence is free before % defining it. % \begin{macrocode} -\cs_set:Npn \__cs_tmp:w #1#2 +\cs_set:Npn \@@_tmp:w #1#2 { \cs_set_protected:Npn #1 ##1 { @@ -2734,14 +2833,14 @@ #2 ##1 } } -\__cs_tmp:w \cs_new_nopar:Npn \cs_gset_nopar:Npn -\__cs_tmp:w \cs_new_nopar:Npx \cs_gset_nopar:Npx -\__cs_tmp:w \cs_new:Npn \cs_gset:Npn -\__cs_tmp:w \cs_new:Npx \cs_gset:Npx -\__cs_tmp:w \cs_new_protected_nopar:Npn \cs_gset_protected_nopar:Npn -\__cs_tmp:w \cs_new_protected_nopar:Npx \cs_gset_protected_nopar:Npx -\__cs_tmp:w \cs_new_protected:Npn \cs_gset_protected:Npn -\__cs_tmp:w \cs_new_protected:Npx \cs_gset_protected:Npx +\@@_tmp:w \cs_new_nopar:Npn \cs_gset_nopar:Npn +\@@_tmp:w \cs_new_nopar:Npx \cs_gset_nopar:Npx +\@@_tmp:w \cs_new:Npn \cs_gset:Npn +\@@_tmp:w \cs_new:Npx \cs_gset:Npx +\@@_tmp:w \cs_new_protected_nopar:Npn \cs_gset_protected_nopar:Npn +\@@_tmp:w \cs_new_protected_nopar:Npx \cs_gset_protected_nopar:Npx +\@@_tmp:w \cs_new_protected:Npn \cs_gset_protected:Npn +\@@_tmp:w \cs_new_protected:Npx \cs_gset_protected:Npx % \end{macrocode} % \end{macro} % \end{macro} @@ -2763,14 +2862,14 @@ % \cs{cs_set_nopar:Npn}. This means that there might be a parameter % string between the two arguments. % \begin{macrocode} -\cs_set:Npn \__cs_tmp:w #1#2 +\cs_set:Npn \@@_tmp:w #1#2 { \cs_new_protected_nopar:Npn #1 { \exp_args:Nc #2 } } -\__cs_tmp:w \cs_set_nopar:cpn \cs_set_nopar:Npn -\__cs_tmp:w \cs_set_nopar:cpx \cs_set_nopar:Npx -\__cs_tmp:w \cs_gset_nopar:cpn \cs_gset_nopar:Npn -\__cs_tmp:w \cs_gset_nopar:cpx \cs_gset_nopar:Npx -\__cs_tmp:w \cs_new_nopar:cpn \cs_new_nopar:Npn -\__cs_tmp:w \cs_new_nopar:cpx \cs_new_nopar:Npx +\@@_tmp:w \cs_set_nopar:cpn \cs_set_nopar:Npn +\@@_tmp:w \cs_set_nopar:cpx \cs_set_nopar:Npx +\@@_tmp:w \cs_gset_nopar:cpn \cs_gset_nopar:Npn +\@@_tmp:w \cs_gset_nopar:cpx \cs_gset_nopar:Npx +\@@_tmp:w \cs_new_nopar:cpn \cs_new_nopar:Npn +\@@_tmp:w \cs_new_nopar:cpx \cs_new_nopar:Npx % \end{macrocode} % \end{macro} % @@ -2783,12 +2882,12 @@ % Variants of the \cs{cs_set:Npn} versions which make a csname out % of the first arguments. We may also do this globally. % \begin{macrocode} -\__cs_tmp:w \cs_set:cpn \cs_set:Npn -\__cs_tmp:w \cs_set:cpx \cs_set:Npx -\__cs_tmp:w \cs_gset:cpn \cs_gset:Npn -\__cs_tmp:w \cs_gset:cpx \cs_gset:Npx -\__cs_tmp:w \cs_new:cpn \cs_new:Npn -\__cs_tmp:w \cs_new:cpx \cs_new:Npx +\@@_tmp:w \cs_set:cpn \cs_set:Npn +\@@_tmp:w \cs_set:cpx \cs_set:Npx +\@@_tmp:w \cs_gset:cpn \cs_gset:Npn +\@@_tmp:w \cs_gset:cpx \cs_gset:Npx +\@@_tmp:w \cs_new:cpn \cs_new:Npn +\@@_tmp:w \cs_new:cpx \cs_new:Npx % \end{macrocode} % \end{macro} % @@ -2801,12 +2900,12 @@ % Variants of the \cs{cs_set_protected_nopar:Npn} versions which make % a csname out of the first arguments. We may also do this globally. % \begin{macrocode} -\__cs_tmp:w \cs_set_protected_nopar:cpn \cs_set_protected_nopar:Npn -\__cs_tmp:w \cs_set_protected_nopar:cpx \cs_set_protected_nopar:Npx -\__cs_tmp:w \cs_gset_protected_nopar:cpn \cs_gset_protected_nopar:Npn -\__cs_tmp:w \cs_gset_protected_nopar:cpx \cs_gset_protected_nopar:Npx -\__cs_tmp:w \cs_new_protected_nopar:cpn \cs_new_protected_nopar:Npn -\__cs_tmp:w \cs_new_protected_nopar:cpx \cs_new_protected_nopar:Npx +\@@_tmp:w \cs_set_protected_nopar:cpn \cs_set_protected_nopar:Npn +\@@_tmp:w \cs_set_protected_nopar:cpx \cs_set_protected_nopar:Npx +\@@_tmp:w \cs_gset_protected_nopar:cpn \cs_gset_protected_nopar:Npn +\@@_tmp:w \cs_gset_protected_nopar:cpx \cs_gset_protected_nopar:Npx +\@@_tmp:w \cs_new_protected_nopar:cpn \cs_new_protected_nopar:Npn +\@@_tmp:w \cs_new_protected_nopar:cpx \cs_new_protected_nopar:Npx % \end{macrocode} % \end{macro} % @@ -2819,12 +2918,12 @@ % Variants of the \cs{cs_set_protected:Npn} versions which make a csname % out of the first arguments. We may also do this globally. % \begin{macrocode} -\__cs_tmp:w \cs_set_protected:cpn \cs_set_protected:Npn -\__cs_tmp:w \cs_set_protected:cpx \cs_set_protected:Npx -\__cs_tmp:w \cs_gset_protected:cpn \cs_gset_protected:Npn -\__cs_tmp:w \cs_gset_protected:cpx \cs_gset_protected:Npx -\__cs_tmp:w \cs_new_protected:cpn \cs_new_protected:Npn -\__cs_tmp:w \cs_new_protected:cpx \cs_new_protected:Npx +\@@_tmp:w \cs_set_protected:cpn \cs_set_protected:Npn +\@@_tmp:w \cs_set_protected:cpx \cs_set_protected:Npx +\@@_tmp:w \cs_gset_protected:cpn \cs_gset_protected:Npn +\@@_tmp:w \cs_gset_protected:cpx \cs_gset_protected:Npx +\@@_tmp:w \cs_new_protected:cpn \cs_new_protected:Npn +\@@_tmp:w \cs_new_protected:cpx \cs_new_protected:Npx % \end{macrocode} % \end{macro} % @@ -2893,8 +2992,12 @@ % % \subsection{Generating parameter text from argument count} % -% \begin{macro}[int]{\__cs_parm_from_arg_count:nnF} -% \begin{macro}[aux]{\__cs_parm_from_arg_count_test:nnF} +% \begin{macrocode} +%<@@=cs> +% \end{macrocode} +% +% \begin{macro}[int]{\@@_parm_from_arg_count:nnF} +% \begin{macro}[aux]{\@@_parm_from_arg_count_test:nnF} % \LaTeX3 provides shorthands to define control sequences and % conditionals with a simple parameter text, derived directly from the % signature, or more generally from knowing the number of arguments, @@ -2907,9 +3010,9 @@ % the functions use here are not defined yet, but will be defined % before this function is called. % \begin{macrocode} -\cs_set_protected:Npn \__cs_parm_from_arg_count:nnF #1#2 +\cs_set_protected:Npn \@@_parm_from_arg_count:nnF #1#2 { - \exp_args:Nx \__cs_parm_from_arg_count_test:nnF + \exp_args:Nx \@@_parm_from_arg_count_test:nnF { \exp_after:wN \exp_not:n \if_case:w \__int_eval:w (#2) \__int_eval_end: @@ -2928,7 +3031,7 @@ } {#1} } -\cs_set_protected:Npn \__cs_parm_from_arg_count_test:nnF #1#2 +\cs_set_protected:Npn \@@_parm_from_arg_count_test:nnF #1#2 { \if_meaning:w \c_false_bool #1 \exp_after:wN \use_ii:nn @@ -2943,17 +3046,21 @@ % % \subsection{Defining functions from a given number of arguments} % -% \begin{macro}[EXP, int]{\__cs_count_signature:N, \__cs_count_signature:c} -% \begin{macro}[aux, EXP]{\__cs_count_signature:nnN} +% \begin{macrocode} +%<@@=cs> +% \end{macrocode} +% +% \begin{macro}[EXP, int]{\@@_count_signature:N, \@@_count_signature:c} +% \begin{macro}[aux, EXP]{\@@_count_signature:nnN} % Counting the number of tokens in the signature, \emph{i.e.}, the % number of arguments the function should take. Since this is not % used in any time-critical function, we simply use \cs{tl_count:n} if % there is a signature, otherwise $-1$ arguments to signal an error. % We need a variant form right away. % \begin{macrocode} -\cs_new:Npn \__cs_count_signature:N #1 - { \int_eval:n { \__cs_split_function:NN #1 \__cs_count_signature:nnN } } -\cs_new:Npn \__cs_count_signature:nnN #1#2#3 +\cs_new:Npn \@@_count_signature:N #1 + { \int_eval:n { \@@_split_function:NN #1 \@@_count_signature:nnN } } +\cs_new:Npn \@@_count_signature:nnN #1#2#3 { \if_meaning:w \c_true_bool #3 \tl_count:n {#2} @@ -2961,8 +3068,8 @@ -1 \fi: } -\cs_new:Npn \__cs_count_signature:c - { \exp_args:Nc \__cs_count_signature:N } +\cs_new:Npn \@@_count_signature:c + { \exp_args:Nc \@@_count_signature:N } % \end{macrocode} % \end{macro} % \end{macro} @@ -2986,7 +3093,7 @@ % \begin{macrocode} \cs_new_protected:Npn \cs_generate_from_arg_count:NNnn #1#2#3#4 { - \__cs_parm_from_arg_count:nnF { \use:nnn #2 #1 } {#3} + \@@_parm_from_arg_count:nnF { \use:nnn #2 #1 } {#3} { \__msg_kernel_error:nnxx { kernel } { bad-number-of-arguments } { \token_to_str:N #1 } { \int_eval:n {#3} } @@ -3007,6 +3114,10 @@ % % \subsection{Using the signature to define functions} % +% \begin{macrocode} +%<@@=cs> +% \end{macrocode} +% % We can now combine some of the tools we have to provide a simple % interface for defining functions, where the number of arguments is % read from the signature. For instance, @@ -3040,25 +3151,25 @@ % make it simpler by temporarily defining a function to do this for % us. % \begin{macrocode} -\cs_set:Npn \__cs_tmp:w #1#2#3 +\cs_set:Npn \@@_tmp:w #1#2#3 { \cs_new_protected:cpx { cs_ #1 : #2 } { - \exp_not:N \__cs_generate_from_signature:NNn + \exp_not:N \@@_generate_from_signature:NNn \exp_after:wN \exp_not:N \cs:w cs_ #1 : #3 \cs_end: } } -\cs_new_protected:Npn \__cs_generate_from_signature:NNn #1#2 +\cs_new_protected:Npn \@@_generate_from_signature:NNn #1#2 { - \__cs_split_function:NN #2 \__cs_generate_from_signature:nnNNNn + \@@_split_function:NN #2 \@@_generate_from_signature:nnNNNn #1 #2 } -\cs_new_protected:Npn \__cs_generate_from_signature:nnNNNn #1#2#3#4#5#6 +\cs_new_protected:Npn \@@_generate_from_signature:nnNNNn #1#2#3#4#5#6 { \bool_if:NTF #3 { \str_if_eq_x:nnF { } - { \tl_map_function:nN {#2} \__cs_generate_from_signature:n } + { \tl_map_function:nN {#2} \@@_generate_from_signature:n } { \__msg_kernel_error:nnx { kernel } { non-base-function } { \token_to_str:N #5 } @@ -3071,7 +3182,7 @@ { \token_to_str:N #5 } } } -\cs_new:Npn \__cs_generate_from_signature:n #1 +\cs_new:Npn \@@_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: @@ -3079,30 +3190,30 @@ % \end{macrocode} % Then we define the 24 variants beginning with |N|. % \begin{macrocode} -\__cs_tmp:w { set } { Nn } { Npn } -\__cs_tmp:w { set } { Nx } { Npx } -\__cs_tmp:w { set_nopar } { Nn } { Npn } -\__cs_tmp:w { set_nopar } { Nx } { Npx } -\__cs_tmp:w { set_protected } { Nn } { Npn } -\__cs_tmp:w { set_protected } { Nx } { Npx } -\__cs_tmp:w { set_protected_nopar } { Nn } { Npn } -\__cs_tmp:w { set_protected_nopar } { Nx } { Npx } -\__cs_tmp:w { gset } { Nn } { Npn } -\__cs_tmp:w { gset } { Nx } { Npx } -\__cs_tmp:w { gset_nopar } { Nn } { Npn } -\__cs_tmp:w { gset_nopar } { Nx } { Npx } -\__cs_tmp:w { gset_protected } { Nn } { Npn } -\__cs_tmp:w { gset_protected } { Nx } { Npx } -\__cs_tmp:w { gset_protected_nopar } { Nn } { Npn } -\__cs_tmp:w { gset_protected_nopar } { Nx } { Npx } -\__cs_tmp:w { new } { Nn } { Npn } -\__cs_tmp:w { new } { Nx } { Npx } -\__cs_tmp:w { new_nopar } { Nn } { Npn } -\__cs_tmp:w { new_nopar } { Nx } { Npx } -\__cs_tmp:w { new_protected } { Nn } { Npn } -\__cs_tmp:w { new_protected } { Nx } { Npx } -\__cs_tmp:w { new_protected_nopar } { Nn } { Npn } -\__cs_tmp:w { new_protected_nopar } { Nx } { Npx } +\@@_tmp:w { set } { Nn } { Npn } +\@@_tmp:w { set } { Nx } { Npx } +\@@_tmp:w { set_nopar } { Nn } { Npn } +\@@_tmp:w { set_nopar } { Nx } { Npx } +\@@_tmp:w { set_protected } { Nn } { Npn } +\@@_tmp:w { set_protected } { Nx } { Npx } +\@@_tmp:w { set_protected_nopar } { Nn } { Npn } +\@@_tmp:w { set_protected_nopar } { Nx } { Npx } +\@@_tmp:w { gset } { Nn } { Npn } +\@@_tmp:w { gset } { Nx } { Npx } +\@@_tmp:w { gset_nopar } { Nn } { Npn } +\@@_tmp:w { gset_nopar } { Nx } { Npx } +\@@_tmp:w { gset_protected } { Nn } { Npn } +\@@_tmp:w { gset_protected } { Nx } { Npx } +\@@_tmp:w { gset_protected_nopar } { Nn } { Npn } +\@@_tmp:w { gset_protected_nopar } { Nx } { Npx } +\@@_tmp:w { new } { Nn } { Npn } +\@@_tmp:w { new } { Nx } { Npx } +\@@_tmp:w { new_nopar } { Nn } { Npn } +\@@_tmp:w { new_nopar } { Nx } { Npx } +\@@_tmp:w { new_protected } { Nn } { Npn } +\@@_tmp:w { new_protected } { Nx } { Npx } +\@@_tmp:w { new_protected_nopar } { Nn } { Npn } +\@@_tmp:w { new_protected_nopar } { Nx } { Npx } % \end{macrocode} % \end{macro} % @@ -3123,7 +3234,7 @@ % } % The 24 |c| variants simply use \cs{exp_args:Nc}. % \begin{macrocode} -\cs_set:Npn \__cs_tmp:w #1#2 +\cs_set:Npn \@@_tmp:w #1#2 { \cs_new_protected:cpx { cs_ #1 : c #2 } { @@ -3131,30 +3242,30 @@ \exp_after:wN \exp_not:N \cs:w cs_ #1 : N #2 \cs_end: } } -\__cs_tmp:w { set } { n } -\__cs_tmp:w { set } { x } -\__cs_tmp:w { set_nopar } { n } -\__cs_tmp:w { set_nopar } { x } -\__cs_tmp:w { set_protected } { n } -\__cs_tmp:w { set_protected } { x } -\__cs_tmp:w { set_protected_nopar } { n } -\__cs_tmp:w { set_protected_nopar } { x } -\__cs_tmp:w { gset } { n } -\__cs_tmp:w { gset } { x } -\__cs_tmp:w { gset_nopar } { n } -\__cs_tmp:w { gset_nopar } { x } -\__cs_tmp:w { gset_protected } { n } -\__cs_tmp:w { gset_protected } { x } -\__cs_tmp:w { gset_protected_nopar } { n } -\__cs_tmp:w { gset_protected_nopar } { x } -\__cs_tmp:w { new } { n } -\__cs_tmp:w { new } { x } -\__cs_tmp:w { new_nopar } { n } -\__cs_tmp:w { new_nopar } { x } -\__cs_tmp:w { new_protected } { n } -\__cs_tmp:w { new_protected } { x } -\__cs_tmp:w { new_protected_nopar } { n } -\__cs_tmp:w { new_protected_nopar } { x } +\@@_tmp:w { set } { n } +\@@_tmp:w { set } { x } +\@@_tmp:w { set_nopar } { n } +\@@_tmp:w { set_nopar } { x } +\@@_tmp:w { set_protected } { n } +\@@_tmp:w { set_protected } { x } +\@@_tmp:w { set_protected_nopar } { n } +\@@_tmp:w { set_protected_nopar } { x } +\@@_tmp:w { gset } { n } +\@@_tmp:w { gset } { x } +\@@_tmp:w { gset_nopar } { n } +\@@_tmp:w { gset_nopar } { x } +\@@_tmp:w { gset_protected } { n } +\@@_tmp:w { gset_protected } { x } +\@@_tmp:w { gset_protected_nopar } { n } +\@@_tmp:w { gset_protected_nopar } { x } +\@@_tmp:w { new } { n } +\@@_tmp:w { new } { x } +\@@_tmp:w { new_nopar } { n } +\@@_tmp:w { new_nopar } { x } +\@@_tmp:w { new_protected } { n } +\@@_tmp:w { new_protected } { x } +\@@_tmp:w { new_protected_nopar } { n } +\@@_tmp:w { new_protected_nopar } { x } % \end{macrocode} % \end{macro} % @@ -3186,8 +3297,12 @@ % % \subsection{Diagnostic functions} % -% \begin{macro}[int]{\__kernel_register_show:N, \__kernel_register_show:c} -% \begin{macro}[aux]{\__kernel_register_show_aux:n} +% \begin{macrocode} +%<@@=kernel> +% \end{macrocode} +% +% \begin{macro}[int]{\@@_register_show:N, \@@_register_show:c} +% \begin{macro}[aux]{\@@_register_show_aux:n} % Simply using the \tn{showthe} primitive does not allow for % line-wrapping, so instead use \cs{__msg_show_variable:NNNnn} (defined % in \pkg{l3msg}). This checks that the variable exists (using @@ -3197,26 +3312,26 @@ % \tn{currentgrouptype}) altered by the line-wrapping code would show % wrong values. % \begin{macrocode} -\cs_new_protected:Npn \__kernel_register_show:N #1 - { \exp_args:No \__kernel_register_show_aux:nN { \tex_the:D #1 } #1 } -\cs_new_protected:Npn \__kernel_register_show_aux:nN #1#2 +\cs_new_protected:Npn \@@_register_show:N #1 + { \exp_args:No \@@_register_show_aux:nN { \tex_the:D #1 } #1 } +\cs_new_protected:Npn \@@_register_show_aux:nN #1#2 { \__msg_show_variable:NNNnn #2 \cs_if_exist:NTF ? { } { > ~ \token_to_str:N #2 = #1 } } -\cs_new_protected:Npn \__kernel_register_show:c - { \exp_args:Nc \__kernel_register_show:N } +\cs_new_protected:Npn \@@_register_show:c + { \exp_args:Nc \@@_register_show:N } % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}[int]{\__kernel_register_log:N, \__kernel_register_log:c} -% Redirect the output of \cs{__kernel_register_show:N} to the log. +% \begin{macro}[int]{\@@_register_log:N, \@@_register_log:c} +% Redirect the output of \cs{@@_register_show:N} to the log. % \begin{macrocode} -\cs_new_protected:Npn \__kernel_register_log:N - { \__msg_log_next: \__kernel_register_show:N } -\cs_new_protected:Npn \__kernel_register_log:c - { \exp_args:Nc \__kernel_register_log:N } +\cs_new_protected:Npn \@@_register_log:N + { \__msg_log_next: \@@_register_show:N } +\cs_new_protected:Npn \@@_register_log:c + { \exp_args:Nc \@@_register_log:N } % \end{macrocode} % \end{macro} % @@ -3269,38 +3384,42 @@ % % \subsection{Breaking out of mapping functions} % -% \begin{macro}[EXP]{\__prg_break_point:Nn, \__prg_map_break:Nn} +% \begin{macrocode} +%<@@=prg> +% \end{macrocode} +% +% \begin{macro}[EXP]{\@@_break_point:Nn, \@@_map_break:Nn} % In inline mappings, the nesting level must be reset % at the end of the mapping, even when the user decides % to break out. This is done by putting the code that -% must be performed as an argument of \cs{__prg_break_point:Nn}. +% must be performed as an argument of \cs{@@_break_point:Nn}. % The breaking functions are then defined to jump to -% that point and perform the argument of \cs{__prg_break_point:Nn}, +% that point and perform the argument of \cs{@@_break_point:Nn}, % before the user's code (if any). There is a check that we close the % correct loop, otherwise we continue breaking. % \begin{macrocode} -\cs_new_eq:NN \__prg_break_point:Nn \use_ii:nn -\cs_new:Npn \__prg_map_break:Nn #1#2#3 \__prg_break_point:Nn #4#5 +\cs_new_eq:NN \@@_break_point:Nn \use_ii:nn +\cs_new:Npn \@@_map_break:Nn #1#2#3 \@@_break_point:Nn #4#5 { #5 \if_meaning:w #1 #4 \exp_after:wN \use_iii:nnn \fi: - \__prg_map_break:Nn #1 {#2} + \@@_map_break:Nn #1 {#2} } % \end{macrocode} % \end{macro} % -% \begin{macro}{\__prg_break_point:} -% \begin{macro}{\__prg_break:, \__prg_break:n} -% Very simple analogues of \cs{__prg_break_point:Nn} and -% \cs{__prg_map_break:Nn}, for use in fast short-term recursions which +% \begin{macro}{\@@_break_point:} +% \begin{macro}{\@@_break:, \@@_break:n} +% Very simple analogues of \cs{@@_break_point:Nn} and +% \cs{@@_map_break:Nn}, for use in fast short-term recursions which % are not mappings, do not need to support nesting, and in which % nothing has to be done at the end of the loop. % \begin{macrocode} -\cs_new_eq:NN \__prg_break_point: \prg_do_nothing: -\cs_new:Npn \__prg_break: #1 \__prg_break_point: { } -\cs_new:Npn \__prg_break:n #1#2 \__prg_break_point: {#1} +\cs_new_eq:NN \@@_break_point: \prg_do_nothing: +\cs_new:Npn \@@_break: #1 \@@_break_point: { } +\cs_new:Npn \@@_break:n #1#2 \@@_break_point: {#1} % \end{macrocode} % \end{macro} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index a1a14e30bdf..f0ed38dd901 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -138,7 +138,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -227,7 +227,7 @@ % % \begin{macrocode} %<*initex|package> -%<@@=expl> +%<@@=kernel> % \end{macrocode} % % \subsection{Format-specific code} @@ -597,7 +597,7 @@ \catcode 124 = \the\catcode 124\relax \catcode 126 = \the\catcode 126\relax \endlinechar = \the\endlinechar\relax - \chardef\csname\detokenize{l__kernel_expl_bool}\endcsname = 0\relax + \chardef\csname\detokenize{l_@@_expl_bool}\endcsname = 0\relax }% %</package> % \end{macrocode} @@ -617,10 +617,10 @@ \endlinechar = 32\relax % \end{macrocode} % -% \begin{variable}{\l__kernel_expl_bool} +% \begin{variable}{\l_@@_expl_bool} % The status for experimental code syntax: this is on at present. % \begin{macrocode} -\chardef\l__kernel_expl_bool = 1\relax +\chardef\l_@@_expl_bool = 1\relax % \end{macrocode} %\end{variable} % @@ -634,7 +634,7 @@ % \begin{macrocode} \protected \def \ExplSyntaxOn { - \bool_if:NF \l__kernel_expl_bool + \bool_if:NF \l_@@_expl_bool { \cs_set_protected:Npx \ExplSyntaxOff { @@ -649,7 +649,7 @@ \char_set_catcode:nn { 126 } { \char_value_catcode:n { 126 } } \tex_endlinechar:D = \tex_the:D \tex_endlinechar:D \scan_stop: - \bool_set_false:N \l__kernel_expl_bool + \bool_set_false:N \l_@@_expl_bool \cs_set_protected:Npn \ExplSyntaxOff { } } } @@ -663,7 +663,7 @@ \char_set_catcode_other:n { 124 } % pipe \char_set_catcode_space:n { 126 } % tilde \tex_endlinechar:D = 32 \scan_stop: - \bool_set_true:N \l__kernel_expl_bool + \bool_set_true:N \l_@@_expl_bool } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index 4a1d1b34627..d864dc55b4c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -67,7 +67,7 @@ % \cs{box_clear:N} \meta{box} % \end{syntax} % Clears the content of the \meta{box} by setting the box equal to -% \cs{c_void_box}. +% \cs{c_empty_box}. % \end{function} % % \begin{function} @@ -139,13 +139,34 @@ % \end{texnote} % \end{function} % -% \begin{function}{\box_use_clear:N, \box_use_clear:c} +% \begin{function}{\box_use_drop:N, \box_use_drop:c} % \begin{syntax} -% \cs{box_use_clear:N} \meta{box} +% \cs{box_use_drop:N} \meta{box} % \end{syntax} % Inserts the current content of the \meta{box} onto the current -% list for typesetting, then globally clears the content of the -% \meta{box}. +% list for typesetting. The \meta{box} is then cleared at the group level the +% box was set at, \emph{i.e.}~the current content is \enquote{dropped} entirely. +% For example, with +% \begin{verbatim} +% \hbox_set:Nn \l_tmpa_box { A } +% \group_begin: +% \hbox_set:Nn \l_tmpa_box { B } +% \group_begin: +% \box_use_drop:N \l_tmpa_box +% \group_end: +% \box_show:N \l_tmpa_box +% \group_end: +% \box_show:N \l_tmpa_box +% \end{verbatim} +% the first use of |\box_show:N| will show an entirely cleared (void) box, and the +% second will show the letter |A| in the box. +% +% This function is useful as boxes can contain an open-ended amount of material. As +% such, they can have a significant memory impact on \TeX{}. At the same time, it is +% often the case that once a box has been inserted, it is no longer needed at all. +% Using |\box_use_drop:N| in these circumstances therefore offers improved memory +% use and performance. It should therefore be preferred over \cs{box_use:N} where +% it is clear that the content is no longer needed in the variable. % \begin{texnote} % This is the \TeX{} primitive \tn{box}. % \end{texnote} @@ -170,7 +191,7 @@ % \end{syntax} % This function operates in horizontal mode, and inserts the % material specified by the \meta{box function} -% such that its reference point is displaced vertical by the given +% such that its reference point is displaced vertically by the given % \meta{dimexpr} from the reference point for typesetting, up % or down as appropriate. The \meta{box function} should be % a box operation such as |\box_use:N \<box>| or a \enquote{raw} @@ -283,6 +304,9 @@ % \begin{variable}[updated = 2012-11-04]{\c_empty_box} % This is a permanently empty box, which is neither set as horizontal % nor vertical. +% \begin{texnote} +% At the \TeX{} level this is a void box. +% \end{texnote} % \end{variable} % % \section{Scratch boxes} @@ -604,7 +628,7 @@ % \end{texnote} % \end{function} % -% \subsection{Affine transformations} +% \section{Affine transformations} % % Affine transformations are changes which (informally) preserve straight % lines. Simple translations are affine transformations, but are better handled @@ -968,14 +992,14 @@ % % \subsection{Using boxes} % -% \begin{macro}{\box_use_clear:N, \box_use_clear:c} +% \begin{macro}{\box_use_drop:N, \box_use_drop:c} % \begin{macro}{\box_use:N, \box_use:c} % Using a \meta{box}. These are just \TeX{} primitives with meaningful % names. % \begin{macrocode} -\cs_new_eq:NN \box_use_clear:N \tex_box:D +\cs_new_eq:NN \box_use_drop:N \tex_box:D \cs_new_eq:NN \box_use:N \tex_copy:D -\cs_generate_variant:Nn \box_use_clear:N { c } +\cs_generate_variant:Nn \box_use_drop:N { c } \cs_generate_variant:Nn \box_use:N { c } % \end{macrocode} % \end{macro} @@ -1166,7 +1190,7 @@ % \end{macrocode} % \end{macro} % -% \subsection{Horizontal mode boxes} +% \subsection{Horizontal mode boxes} % % \begin{macro}{\hbox:n} % \testfile{m3box002.lvt} @@ -1629,7 +1653,7 @@ \box_set_dp:Nn \l_@@_internal_box { -\l_@@_bottom_new_dim } \box_set_wd:Nn \l_@@_internal_box { \l_@@_right_new_dim - \l_@@_left_new_dim } - \box_use:N \l_@@_internal_box + \box_use_drop:N \l_@@_internal_box } % \end{macrocode} % \end{macro} @@ -1982,7 +2006,7 @@ \hbox_to_wd:nn { \l_@@_right_new_dim } { \tex_kern:D \l_@@_right_new_dim - \box_use:N \l_@@_internal_box + \box_use_drop:N \l_@@_internal_box \tex_hss:D } } @@ -1991,7 +2015,7 @@ \hbox:n { \tex_kern:D \c_zero_dim - \box_use:N \l_@@_internal_box + \box_use_drop:N \l_@@_internal_box \tex_hss:D } } @@ -2002,6 +2026,7 @@ % \subsection{Deprecated functions} % % \begin{macro}[deprecated = 2018-12-31]{\box_resize:Nnn, \box_resize:cnn} +% \begin{macro}[deprecated = 2018-12-31]{\box_use_clear:N, \box_use_clear:c} % \begin{macrocode} \__debug_deprecation:nnNNpn { 2018-12-31 } { \box_resize_to_wd_and_ht_plus_dp:Nnn } @@ -2011,8 +2036,15 @@ { 2018-12-31 } { \box_resize_to_wd_and_ht_plus_dp:cnn } \cs_new_protected:Npn \box_resize:cnn { \box_resize_to_wd_and_ht_plus_dp:cnn } +\__debug_deprecation:nnNNpn + { 2018-12-31 } { \box_use_clear:N } +\cs_new_protected:Npn \box_use_clear:N { \box_use_drop:N } +\__debug_deprecation:nnNNpn + { 2018-12-31 } { \box_use_clear:c } +\cs_new_protected:Npn \box_use_clear:c { \box_use_drop:c } % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{macrocode} %</initex|package> diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index fd489351898..69e62bdd4f6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -84,7 +84,7 @@ % % \section{Additions to \pkg{l3basics}} % -% \begin{function}[added = 2017-07-16]{\debug_on:n, \debug_off:n} +% \begin{function}[added = 2017-07-16, updated = 2017-08-02]{\debug_on:n, \debug_off:n} % \begin{syntax} % \cs{debug_on:n} |{| \meta{comma-separated list} |}| % \cs{debug_off:n} |{| \meta{comma-separated list} |}| @@ -95,6 +95,8 @@ % \begin{itemize} % \item \texttt{check-declarations} that checks all \pkg{expl3} % variables used were previously declared; +% \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; % \item \texttt{log-functions} that logs function definitions; % \end{itemize} @@ -935,6 +937,11 @@ % % \section{Additions to \pkg{l3token}} % +% \begin{variable}[added = 2017-08-07]{\c_catcode_active_space_tl} +% Token list containing one character with category code $13$, +% (\enquote{active}), and character code $32$ (space). +% \end{variable} +% % \begin{function}[TF, updated = 2012-12-20]{\peek_N_type:} % \begin{syntax} % \cs{peek_N_type:TF} \Arg{true code} \Arg{false code} @@ -2151,6 +2158,8 @@ % Unpack the primitive. % \begin{macrocode} \cs_new:Npn \sys_rand_seed: { \tex_the:D \pdftex_randomseed:D } +\cs_if_exist:NF \pdftex_randomseed:D + { \cs_set:Npn \sys_rand_seed: { 0 } } % \end{macrocode} % \end{macro} % @@ -4060,6 +4069,21 @@ % % \subsection{Additions to \pkg{l3token}} % +% \begin{variable}{\c_catcode_active_space_tl} +% While \cs{__char_generate:nn} can produce active characters in some +% engines it cannot in general. It would be possible to simply change +% the catcode of space but then the code would need to avoid all +% spaces, making it quite unreadable. Instead we use the primitive +% \cs{tex_lowercase:D} trick. +% \begin{macrocode} +\group_begin: + \char_set_catcode_active:N * + \char_set_lccode:nn { `* } { `\ } + \tex_lowercase:D { \tl_const:Nn \c_catcode_active_space_tl { * } } +\group_end: +% \end{macrocode} +% \end{variable} +% % \begin{macrocode} %<@@=peek> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index 12ab4c124e7..ba3b678a69d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 3ac5cea4fb7..e54553b75b9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -1352,7 +1352,7 @@ \mode_leave_vertical: \@@_align:NnnNnnnnN \c_empty_coffin { H } { l } #1 {#2} {#3} {#4} {#5} \l_@@_aligned_coffin - \box_use:N \l_@@_aligned_coffin + \box_use_drop:N \l_@@_aligned_coffin } \cs_generate_variant:Nn \coffin_typeset:Nnnnn { c } % \end{macrocode} @@ -1565,7 +1565,7 @@ \prop_remove:Nn \l_@@_display_poles_prop {##1} \@@_display_handles_aux:nnnnnn {##1} ##2 {#2} } - \box_use:N \l_@@_display_coffin + \box_use_drop:N \l_@@_display_coffin } % \end{macrocode} % For each pole there is a check for an intersection, which here does diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx index 22ed6f1d24e..607189ea12a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index e6adade9d42..d4bec2770ee 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 985518e71e4..7bf43aa7933 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -70,14 +70,14 @@ and all files in that bundle must be distributed together. % This isn't included in the typeset documentation because it's a bit % ugly: %<*class> -\ProvidesExplClass{l3doc}{2017/07/19}{} +\ProvidesExplClass{l3doc}{2017/09/18}{} {L3 Experimental documentation class} %</class> % \fi % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % \maketitle % \tableofcontents % @@ -564,6 +564,19 @@ and all files in that bundle must be distributed together. % \end{macrocode} % \end{variable} % +% \begin{variable}[int]{\l_@@_detect_internals_bool, \l_@@_detect_internals_tl} +% If \texttt{true}, \pkg{l3doc} will check for use of internal +% commands \cs[no-index]{__\meta{pkg}_\ldots{}} from other packages in +% \texttt{macrocode} environments and in~\cs{cs}. Also a token list +% to store temporary data for this purpose. +% \begin{macrocode} +\bool_new:N \l_@@_detect_internals_bool +\bool_set_true:N \l_@@_detect_internals_bool +\tl_new:N \l_@@_detect_internals_tl +\tl_new:N \l_@@_detect_internals_cs_tl +% \end{macrocode} +% \end{variable} +% % \begin{variable}[int]{\l_@@_output_coffin} % The \env{function} environment is typeset by combining coffins % containing various pieces (function names, description, \emph{etc.}) @@ -968,9 +981,23 @@ and all files in that bundle must be distributed together. % \end{macrocode} % \end{macro} % +% \begin{macro}[int]{\@@_trim_right:Nn, \@@_trim_right:No} +% Removes all material after |#2| in the token list variable~|#1|. +% Perhaps combine with \cs{@@_key_trim_module:n}? +% \begin{macrocode} +\cs_new_protected:Npn \@@_trim_right:Nn #1#2 + { + \cs_set:Npn \@@_tmp:w ##1 #2 ##2 \q_stop { \exp_not:n {##1} } + \tl_set:Nx #1 { \exp_after:wN \@@_tmp:w #1 #2 \q_stop } + } +\cs_generate_variant:Nn \@@_trim_right:Nn { No } +% \end{macrocode} +% \end{macro} +% % \begin{macro}[int]{\@@_replace_at_at:N} % \begin{macro}[aux]{\@@_replace_at_at_aux:Nn} -% The goal is to replace |@@| by the current module name. If there is +% The goal is to replace |@@| by the current module name. We take +% advantage of this function to also detect internal macros. If there is % no \meta{module~name}, do nothing. Otherwise, sanitize the catcodes % of |@| and~|_|, temporarily change |@@@@| to |aa| with different catcodes and later to |@@|, and replace |__@@| and |_@@| and |@@| by % |__|\meta{module~name}. The result contains |_| with category @@ -982,6 +1009,11 @@ and all files in that bundle must be distributed together. % \begin{macrocode} \cs_new_protected:Npn \@@_replace_at_at:N #1 { + \bool_if:NT \l_@@_in_implementation_bool + { + \bool_if:NT \l_@@_detect_internals_bool + { \@@_detect_internals:N #1 } + } \tl_if_empty:NF \g_@@_module_name_tl { \exp_args:NNo \@@_replace_at_at_aux:Nn @@ -1002,6 +1034,48 @@ and all files in that bundle must be distributed together. % \end{macro} % \end{macro} % +% \begin{macro}[aux]{\@@_detect_internals:N} +% After splitting at each |__| and removing the leading item from the +% sequence (since it does not follow |__|), remove everything after +% any space or end-of-line to get a good approximation of the control +% sequence (for the warning message), then remove anything after any +% |_| or |:| (with either catcode) to get the module name. If that +% name is not empty and differs from the current |@@| name then +% complain. +% \begin{macrocode} +\group_begin: + \char_set_catcode_active:N \^^M + \cs_new_protected:Npn \@@_detect_internals:N #1 + { + \tl_set_eq:NN \l_@@_detect_internals_tl #1 + \tl_replace_all:Non \l_@@_detect_internals_tl { \token_to_str:N _ } { _ } + \seq_set_split:NnV \l_@@_tmpa_seq { _ _ } \l_@@_detect_internals_tl + \seq_pop_left:NN \l_@@_tmpa_seq \l_@@_detect_internals_tl + \seq_map_variable:NNn \l_@@_tmpa_seq \l_@@_detect_internals_tl + { + \@@_trim_right:No \l_@@_detect_internals_tl + \c_catcode_active_space_tl + \@@_trim_right:Nn \l_@@_detect_internals_tl ^^M + \tl_set_eq:NN \l_@@_detect_internals_cs_tl \l_@@_detect_internals_tl + \@@_trim_right:Nn \l_@@_detect_internals_tl _ + \@@_trim_right:Nn \l_@@_detect_internals_tl : + \@@_trim_right:No \l_@@_detect_internals_tl { \token_to_str:N : } + \tl_if_empty:NF \l_@@_detect_internals_tl + { + \str_if_eq:NNF \l_@@_detect_internals_tl \g_@@_module_name_tl + { + \msg_warning:nnxxx { l3doc } { foreign-internal } + { \tl_to_str:N \l_@@_detect_internals_cs_tl } + { \tl_to_str:N \l_@@_detect_internals_tl } + { \tl_to_str:N \g_@@_module_name_tl } + } + } + } + } +\group_end: +% \end{macrocode} +% \end{macro} +% % \begin{macro}[aux,rEXP]{\@@_signature_base_form:n} % \begin{macro}[aux] % {\@@_signature_base_form_aux:n, \@@_signature_base_form_aux:w} @@ -1244,6 +1318,12 @@ and all files in that bundle must be distributed together. The~'syntax'~environment~should~only~be~used~once~in~ a~'function'~environment. } +\msg_new:nnn { l3doc } { foreign-internal } + { + A~control~sequence~of~the~form~'...__#1'~was~used.~ + It~should~only~be~used~in~the~module~'#2' + \tl_if_empty:nF {#3} { ,~not~in~'#3' } . + } % \end{macrocode} % % \subsection{Options and configuration} @@ -2355,7 +2435,7 @@ and all files in that bundle must be distributed together. \cs_new_protected:Npn \@@_function_assemble: { \hcoffin_set:Nn \l_@@_syntax_coffin - { \box_use_clear:N \g_@@_syntax_box } + { \box_use_drop:N \g_@@_syntax_box } \bool_if:NTF \l_@@_long_name_bool { \coffin_join:NnnNnnnn @@ -2568,7 +2648,7 @@ and all files in that bundle must be distributed together. { \begin{quote} \mode_leave_vertical: - \box_use_clear:N \g_@@_syntax_box + \box_use_drop:N \g_@@_syntax_box \end{quote} } } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 90b78be08e2..4a0838811a6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx index ff1503c1200..0ec3f3bd451 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx @@ -45,7 +45,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -519,7 +519,7 @@ \@ifpackageloaded { color } { \cs_new_protected:Npn \@@_color_pickup: - { \tl_set_eq:NN \l__color_current_tl \current@color } + { \tl_set:Nx \l__color_current_tl { \current@color } } } { \cs_new_protected:Npn \@@_color_pickup: { } } } @@ -555,10 +555,13 @@ % \end{macrocode} % % \begin{macro}[aux]{\@@_color_pickup:} -% \begin{macro}[aux]{\@@_color_pickup_aux:} +% \begin{macro}[aux]{\@@_color_pickup_aux:w} % The current color in driver-dependent format: pick up the package-mode % data if available. We end up converting back and forward in this route as % we store our color data in \texttt{dvips} format. +% The \tn{current@color} needs to be \texttt{x}-expanded before +% \cs{@@_color_pickup_aux:w} breaks it apart, because for instance +% \pkg{xcolor} sets it to be instructions to generate a colour % \begin{macrocode} %<*package> \AtBeginDocument @@ -567,24 +570,23 @@ { \cs_new_protected:Npn \@@_color_pickup: { - \tl_set:Nx \l__color_current_tl - { - \exp_after:wN \exp_after:wN\exp_after:wN - \@@_color_pickup_aux:w \exp_after:wN - \current@color \c_space_tl 0 ~ 0 ~ 0 \q_stop - } + \exp_last_unbraced:Nx \@@_color_pickup_aux:w + { \current@color } ~ 0 ~ 0 ~ 0 \q_stop } \cs_new:Npn \@@_color_pickup_aux:w #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \q_stop { - \str_if_eq:nnTF {#2} { g } - { gray ~ #1 } + \tl_set:Nx \l__color_current_tl { - \str_if_eq:nnTF {#4} { rg } - { rgb ~ #1 ~ #2 ~ #3 } + \str_if_eq:nnTF {#2} { g } + { gray ~ #1 } { - \str_if_eq:nnTF {#5} { k } - { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } - { gray ~ #1 } + \str_if_eq:nnTF {#4} { rg } + { rgb ~ #1 ~ #2 ~ #3 } + { + \str_if_eq:nnTF {#5} { k } + { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } + { gray ~ #1 } + } } } } @@ -1218,12 +1220,10 @@ \tex_special:D { ps::~72~Resolution~div~72~VResolution~div~neg~scale } \tex_special:D { ps::~magscale~{1~DVImag~div~dup~scale}~if } \tex_special:D { ps::~l3x~neg~l3y~neg~translate } - \group_begin: - \box_set_wd:Nn #1 { 0pt } - \box_set_ht:Nn #1 { 0pt } - \box_set_dp:Nn #1 { 0pt } - \box_use:N #1 - \group_end: + \box_set_wd:Nn #1 { 0pt } + \box_set_ht:Nn #1 { 0pt } + \box_set_dp:Nn #1 { 0pt } + \box_use:N #1 \tex_special:D { ps::[begin] } \@@_scope_end: } @@ -1339,7 +1339,7 @@ \cs_new_protected:Npn \@@_box_use_rotate:Nn #1#2 { \@@_scope_begin: - \box_set_wd:Nn #1 \c_zero_dim + \box_set_wd:Nn #1 { 0pt } \fp_set:Nn \l_@@_cos_fp { round ( cosd ( #2 ) , 5 ) } \fp_compare:nNnT \l_@@_cos_fp = \c_zero_fp { \fp_zero:N \l_@@_cos_fp } @@ -1733,11 +1733,11 @@ (#1) \bool_lazy_or:nnT { \l__image_interpolate_bool } - { ! \tl_if_empty_p:N \l__imge_decode_tl } + { ! \tl_if_empty_p:N \l__image_decode_tl } { << - \tl_if_empty:NF \l__imge_decode_tl - { /Decode~[ \l__imge_decode_tl ] } + \tl_if_empty:NF \l__image_decode_tl + { /Decode~[ \l__image_decode_tl ] } \bool_if:NT \l__image_interpolate_bool { /Interpolate~true> } >> @@ -2849,12 +2849,10 @@ transform="scale(-1,1)~translate({?x},{?y})~scale(-1,-1)" > } - \group_begin: - \box_set_wd:Nn #1 { 0pt } - \box_set_ht:Nn #1 { 0pt } - \box_set_dp:Nn #1 { 0pt } - \box_use:N #1 - \group_end: + \box_set_wd:Nn #1 { 0pt } + \box_set_ht:Nn #1 { 0pt } + \box_set_dp:Nn #1 { 0pt } + \box_use:N #1 \@@_literal:n { </g> } \@@_scope_end: } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 0dda580c27d..e827abfe9fb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index c81711dcf85..0e77624c53e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -600,11 +600,6 @@ % and MiK\TeX{} systems. % \end{variable} % -% \begin{variable}[added = 2011-09-05]{\c_catcode_other_space_tl} -% Token list containing one character with category code $12$, -% (\enquote{other}), and character code $32$ (space). -% \end{variable} -% % \subsection{Constant input--output streams} % % \begin{variable}{\c_term_ior} @@ -1754,13 +1749,6 @@ % used by the messaging system, but is designed such that it is % available for other uses. % -% \begin{macro}{\c_catcode_other_space_tl} -% Create a space with category code $12$: an \enquote{other} space. -% \begin{macrocode} -\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } -% \end{macrocode} -% \end{macro} -% % \begin{variable}{\l_iow_line_count_int} % This is the \enquote{raw} number of characters in a line which % can be written to the terminal. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index 6cfa0e15a21..68cbf77b5f1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index e53a8a9093f..4bc2f1f4743 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 2721cac127b..274d2f750b6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index 8bfe95207c5..2ea5e64ce04 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -703,8 +703,9 @@ % \[ % \left( % \sum_{i=1}^{4} \meta{X_i} \cdot 10^{-4i} \cdot 10^{-\meta{shift}} -% - \meta{X'_1} \cdot 10^{-8} + \meta{X'_2} \cdot 10^{-16} % \right) +% - \bigl( \meta{X'_1} \cdot 10^{-8} + \meta{X'_2} \cdot 10^{-16} \bigr) +% = 0.\meta{extra-digits} \cdot 10^{-16} % \in [0,10^{-16}). % \] % To round properly later, we need to remember some information diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 10b3b57f62b..10cf0931ff1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 5ba88f3c664..78d31ec345e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index edbfdcc57d6..e348db5a2f1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -868,24 +868,22 @@ % Raising a number $a$ to a power $b$ leads to many distinct situations. % \begin{center}\def\abs#1{\lvert #1\rvert} % \begin{tabular}{>{$}c<{$}|*8{>{$}l<{$}}} -% a^b &-\infty &(-\infty,-0) &-p/5^k &\pm 0 &+p/5^k &(0,\infty) &+\infty &\nan \\ \hline +% a^b &-\infty &(-\infty,-0) &-\text{integer} &\pm 0 &+\text{integer} &(0,\infty) &+\infty &\nan \\ \hline % +\infty &+0 &\multicolumn{2}{c}{$+0$} &+1 &\multicolumn{2}{c}{$+\infty$} &+\infty &\nan \\ % (1,\infty) &+0 &\multicolumn{2}{c}{$+\abs{a}^{b}$} &+1 &\multicolumn{2}{c}{$+\abs{a}^{b}$} &+\infty &\nan \\ % +1 &+1 &\multicolumn{2}{c}{$+1$} &+1 &\multicolumn{2}{c}{$+1$} &+1 &+1 \\ % (0,1) &+\infty &\multicolumn{2}{c}{$+\abs{a}^{b}$} &+1 &\multicolumn{2}{c}{$+\abs{a}^{b}$} &+0 &\nan \\ % +0 &+\infty &\multicolumn{2}{c}{$+\infty$} &+1 &\multicolumn{2}{c}{$+0$} &+0 &\nan \\ -% -0 &+\infty &\nan &(-1)^p\infty &+1 &(-1)^p 0 &+0 &+0 &\nan \\ -% (-1,0) &+\infty &\nan &(-1)^p\abs{a}^{b} &+1 &(-1)^p\abs{a}^{b} &\nan &+0 &\nan \\ -% -1 &+1 &\nan &(-1)^p &+1 &(-1)^p &\nan &+1 &\nan \\ -% (-\infty,-1) &+0 &\nan &(-1)^p\abs{a}^{b} &+1 &(-1)^p\abs{a}^{b} &\nan &+\infty &\nan \\ -% -\infty &+0 &+0 &(-1)^p 0 &+1 &(-1)^p\infty &\nan &+\infty &\nan \\ +% -0 &+\infty &\nan &(-1)^b\infty &+1 &(-1)^b 0 &+0 &+0 &\nan \\ +% (-1,0) &+\infty &\nan &(-1)^b\abs{a}^{b} &+1 &(-1)^b\abs{a}^{b} &\nan &+0 &\nan \\ +% -1 &+1 &\nan &(-1)^b &+1 &(-1)^b &\nan &+1 &\nan \\ +% (-\infty,-1) &+0 &\nan &(-1)^b\abs{a}^{b} &+1 &(-1)^b\abs{a}^{b} &\nan &+\infty &\nan \\ +% -\infty &+0 &+0 &(-1)^b 0 &+1 &(-1)^b\infty &\nan &+\infty &\nan \\ % \nan &\nan &\nan &\nan &+1 &\nan &\nan &\nan &\nan \\ % \end{tabular} % \end{center} % We distinguished in this table the cases of finite (positive or -% negative) exponents of the form $b=p/q$ with $q$~odd (hence -% necessarily a power of~$5$), as $(-1)^{p/q}=(-1)^p$ is defined in that -% case. +% negative) integer exponents, as $(-1)^b$ is defined in that case. % One peculiarity of this operation is that $\nan^0 = 1^\nan = 1$, % because this relation is obeyed for any number, even $\pm\infty$. % @@ -1189,22 +1187,18 @@ % \begin{macro}[aux, rEXP] % { % \@@_pow_neg_case:w, \@@_pow_neg_case_aux:nnnnn, -% \@@_pow_neg_case_aux:w +% \@@_pow_neg_case_aux:Nnnw % } % This function expects a floating point number, and determines its % \enquote{parity}. It should be used after \cs{if_case:w} or in an -% integer expression. It gives $-1$ if the number is an even integer -% divided by some power of~$5$, $0$~if the number is an odd integer -% divided by some power of~$5$, and $1$~otherwise. Zeros and +% integer expression. It gives $-1$ if the number is an even integer, +% $0$~if the number is an odd integer, and $1$~otherwise. Zeros and % $\pm\infty$ are even (because very large finite floating points are % even), while \texttt{nan} is a non-integer. The sign of normal -% numbers is irrelevant to parity. The idea is to repeatedly multiply -% the number by~$5$ (by halving the mantissa and shifting the -% exponent) until the mantissa is odd (this can only happen at most -% $53$ times since $2^{54}>10^{16}$): if the resulting exponent is -% larger than $16$ the parity is even, if it is exactly $16$ the -% parity is odd, and otherwise we should return~$1$. Of course there -% is a shortcut: we stop as soon as the exponent exceeds~$16$. +% numbers is irrelevant to parity. After \cs{@@_decimate:nNnnnn} the +% argument |#1| of \cs{@@_pow_neg_case_aux:Nnnw} is a rounding digit, +% |0|~if and only if the number was an integer, and |#3| is the $8$ +% least significant digits of that integer. % \begin{macrocode} \cs_new:Npn \@@_pow_neg_case:w \s_@@ \@@_chk:w #1#2#3; { @@ -1217,25 +1211,25 @@ \exp_stop_f: } \cs_new:Npn \@@_pow_neg_case_aux:nnnnn #1#2#3#4#5 - { \@@_pow_neg_case_aux:w #1 ; #2 #3 ; #4 #5 ; } -\cs_new:Npn \@@_pow_neg_case_aux:w #1 ; #2 ; #3 ; { \if_int_compare:w #1 > \c_@@_prec_int -1 \else: + \@@_decimate:nNnnnn { \c_@@_prec_int - #1 } + \@@_pow_neg_case_aux:Nnnw + {#2} {#3} {#4} {#5} + \fi: + } +\cs_new:Npn \@@_pow_neg_case_aux:Nnnw #1#2#3#4 ; + { + \if_meaning:w 0 #1 \if_int_odd:w #3 \exp_stop_f: - \if_int_compare:w #1 = \c_@@_prec_int - 0 - \else: - 1 - \fi: + 0 \else: - \exp_after:wN \@@_pow_neg_case_aux:w - \__int_value:w \__int_eval:w #1 + 1 \exp_after:wN ; - \__int_value:w \__int_eval:w (#2 + 1) / 2 - 1 \exp_after:wN ; - \__int_value:w \__int_eval:w - \if_int_odd:w #2 \exp_stop_f: 5000 0000 + \fi: #3 / 2 ; + -1 \fi: + \else: + 1 \fi: } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 5553fc4c5cb..7164feefe1e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 26f18c3c1e2..c29dd3dc182 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index cd0bf745c9d..bbc9101c4b6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 28e006e3a19..2497c281e3c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 87a59147606..a8717cdb21c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 15834540953..301b665bc18 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % \maketitle % % \begin{documentation} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index 0af1408ec84..8e01ee8fe91 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index e4e0e69724d..dd852a596d8 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -932,8 +932,8 @@ % operation is right associative, hence \texttt{2 ** 2 ** 3} equals % $2^{2^{3}} = 256$. If \meta{operand_1} is negative or $-0$ then: % the result's sign is $+$ if the \meta{operand_2} is infinite and -% $(-1)^p$ if the \meta{operand_2} is $p/q$ with $p$ integer and $q$ -% odd; the result is $+0$ if +% $(-1)^p$ if the \meta{operand_2} is $p/5^q$ with $p$, $q$ integers; +% the result is $+0$ if % |abs(|\meta{operand_1}|)^|\meta{operand_2} evaluates to zero; in % other cases the \enquote{invalid operation} exception occurs because % the sign cannot be determined. \enquote{Division by zero} occurs diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 26155d7526d..96ee0d939f1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -1010,7 +1010,8 @@ % or directly in the input stream. % When debugging, use parentheses to catch early termination. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_eval:n } } \cs_new:Npn \int_eval:n #1 { \@@_value:w \@@_eval:w #1 \@@_eval_end: } % \end{macrocode} @@ -1028,7 +1029,8 @@ % evaluation. The absolute value is obtained by removing a leading % sign if any. All three functions expand in two steps. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_abs:n } } \cs_new:Npn \int_abs:n #1 { \@@_value:w \exp_after:wN \@@_abs:N @@ -1037,7 +1039,11 @@ } \cs_new:Npn \@@_abs:N #1 { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_max:nn } + { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_max:nn } + } \cs_set:Npn \int_max:nn #1#2 { \@@_value:w \exp_after:wN \@@_maxmin:wwN @@ -1046,7 +1052,11 @@ > \exp_stop_f: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_min:nn } + { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_min:nn } + } \cs_set:Npn \int_min:nn #1#2 { \@@_value:w \exp_after:wN \@@_maxmin:wwN @@ -1091,7 +1101,11 @@ % truncating behaviour that we want. The details are thanks to Heiko % Oberdiek: getting things right in all cases is not so easy. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_div_truncate:nn } + { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_div_truncate:nn } + } \cs_new:Npn \int_div_truncate:nn #1#2 { \@@_value:w \@@_eval:w @@ -1121,7 +1135,11 @@ % \end{macrocode} % Finally there's the modulus operation. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_mod:nn } + { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_mod:nn } + } \cs_new:Npn \int_mod:nn #1#2 { \@@_value:w \@@_eval:w \exp_after:wN \@@_mod:ww @@ -1168,6 +1186,8 @@ % set up code to determine what can be done. No full engine testing just yet % so everything is a little awkward. % \begin{macrocode} +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_const:Nn } } \cs_new_protected:Npn \int_const:Nn #1#2 { \int_compare:nNnTF {#2} < \c_zero @@ -1184,7 +1204,7 @@ { \__chk_if_free_cs:N #1 \tex_global:D \@@_constdef:Nw #1 = - \@@_eval:w (#2) \@@_eval_end: + \@@_eval:w #2 \@@_eval_end: } } } @@ -1274,10 +1294,12 @@ % \UnitTested % Adding and subtracting to and from a counter \ldots % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_add:Nn } } \cs_new_protected:Npn \int_add:Nn #1#2 { \tex_advance:D #1 by \@@_eval:w #2 \@@_eval_end: } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_sub:Nn } } \cs_new_protected:Npn \int_sub:Nn #1#2 { \tex_advance:D #1 by - \@@_eval:w #2 \@@_eval_end: } \cs_new_protected:Npn \int_gadd:Nn @@ -1331,7 +1353,8 @@ % if they are not defined. Thus there is no need for the checking % code seen with token list variables. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_set:Nn } } \cs_new_protected:Npn \int_set:Nn #1#2 { #1 ~ \@@_eval:w #2 \@@_eval_end: } \cs_new_protected:Npn \int_gset:Nn { \tex_global:D \int_set:Nn } @@ -1536,7 +1559,12 @@ % \UnitTested % More efficient but less natural in typing. % \begin{macrocode} -\__debug_patch_conditional_args:nNNpnn { { (#1) \@@_eval_end: } {#2} { (#3) } } +\__debug_patch_conditional_args:nNNpnn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_compare:nNn } + { \@@_eval_end: #2 } + { \__debug_chk_expr:nNnN {#3} \@@_eval:w { } \int_compare:nNn } + } \prg_new_conditional:Npnn \int_compare:nNn #1#2#3 { p , T , F , TF } { \if_int_compare:w \@@_eval:w #1 #2 \@@_eval:w #3 \@@_eval_end: @@ -1595,7 +1623,8 @@ % \UnitTested % A predicate function. % \begin{macrocode} -\__debug_patch_conditional_args:nNNpnn { { (#1) } } +\__debug_patch_conditional_args:nNNpnn + { { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_if_odd:n } } \prg_new_conditional:Npnn \int_if_odd:n #1 { p , T , F , TF} { \if_int_odd:w \@@_eval:w #1 \@@_eval_end: @@ -1604,7 +1633,8 @@ \prg_return_false: \fi: } -\__debug_patch_conditional_args:nNNpnn { { (#1) } } +\__debug_patch_conditional_args:nNNpnn + { { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_if_even:n } } \prg_new_conditional:Npnn \int_if_even:n #1 { p , T , F , TF} { \if_int_odd:w \@@_eval:w #1 \@@_eval_end: @@ -1720,7 +1750,12 @@ % step size of zero before checking the sign, but we optimize for the % most frequent case (positive step). % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } { (#2) } { (#3) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \int_step_function:nnnN } + { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \int_step_function:nnnN } + { \__debug_chk_expr:nNnN {#3} \@@_eval:w { } \int_step_function:nnnN } + } \cs_new:Npn \int_step_function:nnnN #1#2#3 { \exp_after:wN \@@_step:wwwN diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index 19c924b2018..0117e34f979 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index f1a5202abad..5d3fa1a6cef 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index c0b66d51732..9841a478ea6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 582db1433c5..25333097495 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -1959,6 +1959,7 @@ '\iow_char:N\\debug_off:n'~only~accept~the~arguments~ 'check-declarations',~'deprecation',~'log-functions',~not~'#1'. } + \@@_kernel_new:nnn { kernel } { expr } { '#2'~in~#1 } \@@_kernel_new:nnnn { kernel } { non-declared-variable } { The~variable~#1~has~not~been~declared~\msg_line_context:. } { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index c540774860c..751b4dea1b2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -85,9 +85,10 @@ %<*initex|package> % \end{macrocode} % -% No prefix substitution here. +% The prefix here is \texttt{kernel}. A few places need |@@| to be left +% as is; this is obtained as |@@@@|. % \begin{macrocode} -%<@@=> +%<@@=kernel> % \end{macrocode} % % The code here simply renames all of the primitives to new, internal, @@ -109,16 +110,16 @@ % \end{macrocode} % % Everything is inside a (rather long) group, which keeps -% \cs{__kernel_primitive:NN} trapped. +% \cs{@@_primitive:NN} trapped. % \begin{macrocode} \begingroup % \end{macrocode} % -% \begin{macro}[aux]{\__kernel_primitive:NN} +% \begin{macro}[aux]{\@@_primitive:NN} % A temporary function to actually do the renaming. This also allows the % original names to be removed in format mode. % \begin{macrocode} - \long \def \__kernel_primitive:NN #1#2 + \long \def \@@_primitive:NN #1#2 { \tex_global:D \tex_let:D #2 #1 %<*initex> @@ -140,406 +141,406 @@ % These are given modified new names, so that they may be entered % without catcode tricks. % \begin{macrocode} - \__kernel_primitive:NN \ \tex_space:D - \__kernel_primitive:NN \/ \tex_italiccorrection:D - \__kernel_primitive:NN \- \tex_hyphen:D + \@@_primitive:NN \ \tex_space:D + \@@_primitive:NN \/ \tex_italiccorrection:D + \@@_primitive:NN \- \tex_hyphen:D % \end{macrocode} % % Now all the other primitives. % \begin{macrocode} - \__kernel_primitive:NN \above \tex_above:D - \__kernel_primitive:NN \abovedisplayshortskip \tex_abovedisplayshortskip:D - \__kernel_primitive:NN \abovedisplayskip \tex_abovedisplayskip:D - \__kernel_primitive:NN \abovewithdelims \tex_abovewithdelims:D - \__kernel_primitive:NN \accent \tex_accent:D - \__kernel_primitive:NN \adjdemerits \tex_adjdemerits:D - \__kernel_primitive:NN \advance \tex_advance:D - \__kernel_primitive:NN \afterassignment \tex_afterassignment:D - \__kernel_primitive:NN \aftergroup \tex_aftergroup:D - \__kernel_primitive:NN \atop \tex_atop:D - \__kernel_primitive:NN \atopwithdelims \tex_atopwithdelims:D - \__kernel_primitive:NN \badness \tex_badness:D - \__kernel_primitive:NN \baselineskip \tex_baselineskip:D - \__kernel_primitive:NN \batchmode \tex_batchmode:D - \__kernel_primitive:NN \begingroup \tex_begingroup:D - \__kernel_primitive:NN \belowdisplayshortskip \tex_belowdisplayshortskip:D - \__kernel_primitive:NN \belowdisplayskip \tex_belowdisplayskip:D - \__kernel_primitive:NN \binoppenalty \tex_binoppenalty:D - \__kernel_primitive:NN \botmark \tex_botmark:D - \__kernel_primitive:NN \box \tex_box:D - \__kernel_primitive:NN \boxmaxdepth \tex_boxmaxdepth:D - \__kernel_primitive:NN \brokenpenalty \tex_brokenpenalty:D - \__kernel_primitive:NN \catcode \tex_catcode:D - \__kernel_primitive:NN \char \tex_char:D - \__kernel_primitive:NN \chardef \tex_chardef:D - \__kernel_primitive:NN \cleaders \tex_cleaders:D - \__kernel_primitive:NN \closein \tex_closein:D - \__kernel_primitive:NN \closeout \tex_closeout:D - \__kernel_primitive:NN \clubpenalty \tex_clubpenalty:D - \__kernel_primitive:NN \copy \tex_copy:D - \__kernel_primitive:NN \count \tex_count:D - \__kernel_primitive:NN \countdef \tex_countdef:D - \__kernel_primitive:NN \cr \tex_cr:D - \__kernel_primitive:NN \crcr \tex_crcr:D - \__kernel_primitive:NN \csname \tex_csname:D - \__kernel_primitive:NN \day \tex_day:D - \__kernel_primitive:NN \deadcycles \tex_deadcycles:D - \__kernel_primitive:NN \def \tex_def:D - \__kernel_primitive:NN \defaulthyphenchar \tex_defaulthyphenchar:D - \__kernel_primitive:NN \defaultskewchar \tex_defaultskewchar:D - \__kernel_primitive:NN \delcode \tex_delcode:D - \__kernel_primitive:NN \delimiter \tex_delimiter:D - \__kernel_primitive:NN \delimiterfactor \tex_delimiterfactor:D - \__kernel_primitive:NN \delimitershortfall \tex_delimitershortfall:D - \__kernel_primitive:NN \dimen \tex_dimen:D - \__kernel_primitive:NN \dimendef \tex_dimendef:D - \__kernel_primitive:NN \discretionary \tex_discretionary:D - \__kernel_primitive:NN \displayindent \tex_displayindent:D - \__kernel_primitive:NN \displaylimits \tex_displaylimits:D - \__kernel_primitive:NN \displaystyle \tex_displaystyle:D - \__kernel_primitive:NN \displaywidowpenalty \tex_displaywidowpenalty:D - \__kernel_primitive:NN \displaywidth \tex_displaywidth:D - \__kernel_primitive:NN \divide \tex_divide:D - \__kernel_primitive:NN \doublehyphendemerits \tex_doublehyphendemerits:D - \__kernel_primitive:NN \dp \tex_dp:D - \__kernel_primitive:NN \dump \tex_dump:D - \__kernel_primitive:NN \edef \tex_edef:D - \__kernel_primitive:NN \else \tex_else:D - \__kernel_primitive:NN \emergencystretch \tex_emergencystretch:D - \__kernel_primitive:NN \end \tex_end:D - \__kernel_primitive:NN \endcsname \tex_endcsname:D - \__kernel_primitive:NN \endgroup \tex_endgroup:D - \__kernel_primitive:NN \endinput \tex_endinput:D - \__kernel_primitive:NN \endlinechar \tex_endlinechar:D - \__kernel_primitive:NN \eqno \tex_eqno:D - \__kernel_primitive:NN \errhelp \tex_errhelp:D - \__kernel_primitive:NN \errmessage \tex_errmessage:D - \__kernel_primitive:NN \errorcontextlines \tex_errorcontextlines:D - \__kernel_primitive:NN \errorstopmode \tex_errorstopmode:D - \__kernel_primitive:NN \escapechar \tex_escapechar:D - \__kernel_primitive:NN \everycr \tex_everycr:D - \__kernel_primitive:NN \everydisplay \tex_everydisplay:D - \__kernel_primitive:NN \everyhbox \tex_everyhbox:D - \__kernel_primitive:NN \everyjob \tex_everyjob:D - \__kernel_primitive:NN \everymath \tex_everymath:D - \__kernel_primitive:NN \everypar \tex_everypar:D - \__kernel_primitive:NN \everyvbox \tex_everyvbox:D - \__kernel_primitive:NN \exhyphenpenalty \tex_exhyphenpenalty:D - \__kernel_primitive:NN \expandafter \tex_expandafter:D - \__kernel_primitive:NN \fam \tex_fam:D - \__kernel_primitive:NN \fi \tex_fi:D - \__kernel_primitive:NN \finalhyphendemerits \tex_finalhyphendemerits:D - \__kernel_primitive:NN \firstmark \tex_firstmark:D - \__kernel_primitive:NN \floatingpenalty \tex_floatingpenalty:D - \__kernel_primitive:NN \font \tex_font:D - \__kernel_primitive:NN \fontdimen \tex_fontdimen:D - \__kernel_primitive:NN \fontname \tex_fontname:D - \__kernel_primitive:NN \futurelet \tex_futurelet:D - \__kernel_primitive:NN \gdef \tex_gdef:D - \__kernel_primitive:NN \global \tex_global:D - \__kernel_primitive:NN \globaldefs \tex_globaldefs:D - \__kernel_primitive:NN \halign \tex_halign:D - \__kernel_primitive:NN \hangafter \tex_hangafter:D - \__kernel_primitive:NN \hangindent \tex_hangindent:D - \__kernel_primitive:NN \hbadness \tex_hbadness:D - \__kernel_primitive:NN \hbox \tex_hbox:D - \__kernel_primitive:NN \hfil \tex_hfil:D - \__kernel_primitive:NN \hfill \tex_hfill:D - \__kernel_primitive:NN \hfilneg \tex_hfilneg:D - \__kernel_primitive:NN \hfuzz \tex_hfuzz:D - \__kernel_primitive:NN \hoffset \tex_hoffset:D - \__kernel_primitive:NN \holdinginserts \tex_holdinginserts:D - \__kernel_primitive:NN \hrule \tex_hrule:D - \__kernel_primitive:NN \hsize \tex_hsize:D - \__kernel_primitive:NN \hskip \tex_hskip:D - \__kernel_primitive:NN \hss \tex_hss:D - \__kernel_primitive:NN \ht \tex_ht:D - \__kernel_primitive:NN \hyphenation \tex_hyphenation:D - \__kernel_primitive:NN \hyphenchar \tex_hyphenchar:D - \__kernel_primitive:NN \hyphenpenalty \tex_hyphenpenalty:D - \__kernel_primitive:NN \if \tex_if:D - \__kernel_primitive:NN \ifcase \tex_ifcase:D - \__kernel_primitive:NN \ifcat \tex_ifcat:D - \__kernel_primitive:NN \ifdim \tex_ifdim:D - \__kernel_primitive:NN \ifeof \tex_ifeof:D - \__kernel_primitive:NN \iffalse \tex_iffalse:D - \__kernel_primitive:NN \ifhbox \tex_ifhbox:D - \__kernel_primitive:NN \ifhmode \tex_ifhmode:D - \__kernel_primitive:NN \ifinner \tex_ifinner:D - \__kernel_primitive:NN \ifmmode \tex_ifmmode:D - \__kernel_primitive:NN \ifnum \tex_ifnum:D - \__kernel_primitive:NN \ifodd \tex_ifodd:D - \__kernel_primitive:NN \iftrue \tex_iftrue:D - \__kernel_primitive:NN \ifvbox \tex_ifvbox:D - \__kernel_primitive:NN \ifvmode \tex_ifvmode:D - \__kernel_primitive:NN \ifvoid \tex_ifvoid:D - \__kernel_primitive:NN \ifx \tex_ifx:D - \__kernel_primitive:NN \ignorespaces \tex_ignorespaces:D - \__kernel_primitive:NN \immediate \tex_immediate:D - \__kernel_primitive:NN \indent \tex_indent:D - \__kernel_primitive:NN \input \tex_input:D - \__kernel_primitive:NN \inputlineno \tex_inputlineno:D - \__kernel_primitive:NN \insert \tex_insert:D - \__kernel_primitive:NN \insertpenalties \tex_insertpenalties:D - \__kernel_primitive:NN \interlinepenalty \tex_interlinepenalty:D - \__kernel_primitive:NN \jobname \tex_jobname:D - \__kernel_primitive:NN \kern \tex_kern:D - \__kernel_primitive:NN \language \tex_language:D - \__kernel_primitive:NN \lastbox \tex_lastbox:D - \__kernel_primitive:NN \lastkern \tex_lastkern:D - \__kernel_primitive:NN \lastpenalty \tex_lastpenalty:D - \__kernel_primitive:NN \lastskip \tex_lastskip:D - \__kernel_primitive:NN \lccode \tex_lccode:D - \__kernel_primitive:NN \leaders \tex_leaders:D - \__kernel_primitive:NN \left \tex_left:D - \__kernel_primitive:NN \lefthyphenmin \tex_lefthyphenmin:D - \__kernel_primitive:NN \leftskip \tex_leftskip:D - \__kernel_primitive:NN \leqno \tex_leqno:D - \__kernel_primitive:NN \let \tex_let:D - \__kernel_primitive:NN \limits \tex_limits:D - \__kernel_primitive:NN \linepenalty \tex_linepenalty:D - \__kernel_primitive:NN \lineskip \tex_lineskip:D - \__kernel_primitive:NN \lineskiplimit \tex_lineskiplimit:D - \__kernel_primitive:NN \long \tex_long:D - \__kernel_primitive:NN \looseness \tex_looseness:D - \__kernel_primitive:NN \lower \tex_lower:D - \__kernel_primitive:NN \lowercase \tex_lowercase:D - \__kernel_primitive:NN \mag \tex_mag:D - \__kernel_primitive:NN \mark \tex_mark:D - \__kernel_primitive:NN \mathaccent \tex_mathaccent:D - \__kernel_primitive:NN \mathbin \tex_mathbin:D - \__kernel_primitive:NN \mathchar \tex_mathchar:D - \__kernel_primitive:NN \mathchardef \tex_mathchardef:D - \__kernel_primitive:NN \mathchoice \tex_mathchoice:D - \__kernel_primitive:NN \mathclose \tex_mathclose:D - \__kernel_primitive:NN \mathcode \tex_mathcode:D - \__kernel_primitive:NN \mathinner \tex_mathinner:D - \__kernel_primitive:NN \mathop \tex_mathop:D - \__kernel_primitive:NN \mathopen \tex_mathopen:D - \__kernel_primitive:NN \mathord \tex_mathord:D - \__kernel_primitive:NN \mathpunct \tex_mathpunct:D - \__kernel_primitive:NN \mathrel \tex_mathrel:D - \__kernel_primitive:NN \mathsurround \tex_mathsurround:D - \__kernel_primitive:NN \maxdeadcycles \tex_maxdeadcycles:D - \__kernel_primitive:NN \maxdepth \tex_maxdepth:D - \__kernel_primitive:NN \meaning \tex_meaning:D - \__kernel_primitive:NN \medmuskip \tex_medmuskip:D - \__kernel_primitive:NN \message \tex_message:D - \__kernel_primitive:NN \mkern \tex_mkern:D - \__kernel_primitive:NN \month \tex_month:D - \__kernel_primitive:NN \moveleft \tex_moveleft:D - \__kernel_primitive:NN \moveright \tex_moveright:D - \__kernel_primitive:NN \mskip \tex_mskip:D - \__kernel_primitive:NN \multiply \tex_multiply:D - \__kernel_primitive:NN \muskip \tex_muskip:D - \__kernel_primitive:NN \muskipdef \tex_muskipdef:D - \__kernel_primitive:NN \newlinechar \tex_newlinechar:D - \__kernel_primitive:NN \noalign \tex_noalign:D - \__kernel_primitive:NN \noboundary \tex_noboundary:D - \__kernel_primitive:NN \noexpand \tex_noexpand:D - \__kernel_primitive:NN \noindent \tex_noindent:D - \__kernel_primitive:NN \nolimits \tex_nolimits:D - \__kernel_primitive:NN \nonscript \tex_nonscript:D - \__kernel_primitive:NN \nonstopmode \tex_nonstopmode:D - \__kernel_primitive:NN \nulldelimiterspace \tex_nulldelimiterspace:D - \__kernel_primitive:NN \nullfont \tex_nullfont:D - \__kernel_primitive:NN \number \tex_number:D - \__kernel_primitive:NN \omit \tex_omit:D - \__kernel_primitive:NN \openin \tex_openin:D - \__kernel_primitive:NN \openout \tex_openout:D - \__kernel_primitive:NN \or \tex_or:D - \__kernel_primitive:NN \outer \tex_outer:D - \__kernel_primitive:NN \output \tex_output:D - \__kernel_primitive:NN \outputpenalty \tex_outputpenalty:D - \__kernel_primitive:NN \over \tex_over:D - \__kernel_primitive:NN \overfullrule \tex_overfullrule:D - \__kernel_primitive:NN \overline \tex_overline:D - \__kernel_primitive:NN \overwithdelims \tex_overwithdelims:D - \__kernel_primitive:NN \pagedepth \tex_pagedepth:D - \__kernel_primitive:NN \pagefilllstretch \tex_pagefilllstretch:D - \__kernel_primitive:NN \pagefillstretch \tex_pagefillstretch:D - \__kernel_primitive:NN \pagefilstretch \tex_pagefilstretch:D - \__kernel_primitive:NN \pagegoal \tex_pagegoal:D - \__kernel_primitive:NN \pageshrink \tex_pageshrink:D - \__kernel_primitive:NN \pagestretch \tex_pagestretch:D - \__kernel_primitive:NN \pagetotal \tex_pagetotal:D - \__kernel_primitive:NN \par \tex_par:D - \__kernel_primitive:NN \parfillskip \tex_parfillskip:D - \__kernel_primitive:NN \parindent \tex_parindent:D - \__kernel_primitive:NN \parshape \tex_parshape:D - \__kernel_primitive:NN \parskip \tex_parskip:D - \__kernel_primitive:NN \patterns \tex_patterns:D - \__kernel_primitive:NN \pausing \tex_pausing:D - \__kernel_primitive:NN \penalty \tex_penalty:D - \__kernel_primitive:NN \postdisplaypenalty \tex_postdisplaypenalty:D - \__kernel_primitive:NN \predisplaypenalty \tex_predisplaypenalty:D - \__kernel_primitive:NN \predisplaysize \tex_predisplaysize:D - \__kernel_primitive:NN \pretolerance \tex_pretolerance:D - \__kernel_primitive:NN \prevdepth \tex_prevdepth:D - \__kernel_primitive:NN \prevgraf \tex_prevgraf:D - \__kernel_primitive:NN \radical \tex_radical:D - \__kernel_primitive:NN \raise \tex_raise:D - \__kernel_primitive:NN \read \tex_read:D - \__kernel_primitive:NN \relax \tex_relax:D - \__kernel_primitive:NN \relpenalty \tex_relpenalty:D - \__kernel_primitive:NN \right \tex_right:D - \__kernel_primitive:NN \righthyphenmin \tex_righthyphenmin:D - \__kernel_primitive:NN \rightskip \tex_rightskip:D - \__kernel_primitive:NN \romannumeral \tex_romannumeral:D - \__kernel_primitive:NN \scriptfont \tex_scriptfont:D - \__kernel_primitive:NN \scriptscriptfont \tex_scriptscriptfont:D - \__kernel_primitive:NN \scriptscriptstyle \tex_scriptscriptstyle:D - \__kernel_primitive:NN \scriptspace \tex_scriptspace:D - \__kernel_primitive:NN \scriptstyle \tex_scriptstyle:D - \__kernel_primitive:NN \scrollmode \tex_scrollmode:D - \__kernel_primitive:NN \setbox \tex_setbox:D - \__kernel_primitive:NN \setlanguage \tex_setlanguage:D - \__kernel_primitive:NN \sfcode \tex_sfcode:D - \__kernel_primitive:NN \shipout \tex_shipout:D - \__kernel_primitive:NN \show \tex_show:D - \__kernel_primitive:NN \showbox \tex_showbox:D - \__kernel_primitive:NN \showboxbreadth \tex_showboxbreadth:D - \__kernel_primitive:NN \showboxdepth \tex_showboxdepth:D - \__kernel_primitive:NN \showlists \tex_showlists:D - \__kernel_primitive:NN \showthe \tex_showthe:D - \__kernel_primitive:NN \skewchar \tex_skewchar:D - \__kernel_primitive:NN \skip \tex_skip:D - \__kernel_primitive:NN \skipdef \tex_skipdef:D - \__kernel_primitive:NN \spacefactor \tex_spacefactor:D - \__kernel_primitive:NN \spaceskip \tex_spaceskip:D - \__kernel_primitive:NN \span \tex_span:D - \__kernel_primitive:NN \special \tex_special:D - \__kernel_primitive:NN \splitbotmark \tex_splitbotmark:D - \__kernel_primitive:NN \splitfirstmark \tex_splitfirstmark:D - \__kernel_primitive:NN \splitmaxdepth \tex_splitmaxdepth:D - \__kernel_primitive:NN \splittopskip \tex_splittopskip:D - \__kernel_primitive:NN \string \tex_string:D - \__kernel_primitive:NN \tabskip \tex_tabskip:D - \__kernel_primitive:NN \textfont \tex_textfont:D - \__kernel_primitive:NN \textstyle \tex_textstyle:D - \__kernel_primitive:NN \the \tex_the:D - \__kernel_primitive:NN \thickmuskip \tex_thickmuskip:D - \__kernel_primitive:NN \thinmuskip \tex_thinmuskip:D - \__kernel_primitive:NN \time \tex_time:D - \__kernel_primitive:NN \toks \tex_toks:D - \__kernel_primitive:NN \toksdef \tex_toksdef:D - \__kernel_primitive:NN \tolerance \tex_tolerance:D - \__kernel_primitive:NN \topmark \tex_topmark:D - \__kernel_primitive:NN \topskip \tex_topskip:D - \__kernel_primitive:NN \tracingcommands \tex_tracingcommands:D - \__kernel_primitive:NN \tracinglostchars \tex_tracinglostchars:D - \__kernel_primitive:NN \tracingmacros \tex_tracingmacros:D - \__kernel_primitive:NN \tracingonline \tex_tracingonline:D - \__kernel_primitive:NN \tracingoutput \tex_tracingoutput:D - \__kernel_primitive:NN \tracingpages \tex_tracingpages:D - \__kernel_primitive:NN \tracingparagraphs \tex_tracingparagraphs:D - \__kernel_primitive:NN \tracingrestores \tex_tracingrestores:D - \__kernel_primitive:NN \tracingstats \tex_tracingstats:D - \__kernel_primitive:NN \uccode \tex_uccode:D - \__kernel_primitive:NN \uchyph \tex_uchyph:D - \__kernel_primitive:NN \underline \tex_underline:D - \__kernel_primitive:NN \unhbox \tex_unhbox:D - \__kernel_primitive:NN \unhcopy \tex_unhcopy:D - \__kernel_primitive:NN \unkern \tex_unkern:D - \__kernel_primitive:NN \unpenalty \tex_unpenalty:D - \__kernel_primitive:NN \unskip \tex_unskip:D - \__kernel_primitive:NN \unvbox \tex_unvbox:D - \__kernel_primitive:NN \unvcopy \tex_unvcopy:D - \__kernel_primitive:NN \uppercase \tex_uppercase:D - \__kernel_primitive:NN \vadjust \tex_vadjust:D - \__kernel_primitive:NN \valign \tex_valign:D - \__kernel_primitive:NN \vbadness \tex_vbadness:D - \__kernel_primitive:NN \vbox \tex_vbox:D - \__kernel_primitive:NN \vcenter \tex_vcenter:D - \__kernel_primitive:NN \vfil \tex_vfil:D - \__kernel_primitive:NN \vfill \tex_vfill:D - \__kernel_primitive:NN \vfilneg \tex_vfilneg:D - \__kernel_primitive:NN \vfuzz \tex_vfuzz:D - \__kernel_primitive:NN \voffset \tex_voffset:D - \__kernel_primitive:NN \vrule \tex_vrule:D - \__kernel_primitive:NN \vsize \tex_vsize:D - \__kernel_primitive:NN \vskip \tex_vskip:D - \__kernel_primitive:NN \vsplit \tex_vsplit:D - \__kernel_primitive:NN \vss \tex_vss:D - \__kernel_primitive:NN \vtop \tex_vtop:D - \__kernel_primitive:NN \wd \tex_wd:D - \__kernel_primitive:NN \widowpenalty \tex_widowpenalty:D - \__kernel_primitive:NN \write \tex_write:D - \__kernel_primitive:NN \xdef \tex_xdef:D - \__kernel_primitive:NN \xleaders \tex_xleaders:D - \__kernel_primitive:NN \xspaceskip \tex_xspaceskip:D - \__kernel_primitive:NN \year \tex_year:D + \@@_primitive:NN \above \tex_above:D + \@@_primitive:NN \abovedisplayshortskip \tex_abovedisplayshortskip:D + \@@_primitive:NN \abovedisplayskip \tex_abovedisplayskip:D + \@@_primitive:NN \abovewithdelims \tex_abovewithdelims:D + \@@_primitive:NN \accent \tex_accent:D + \@@_primitive:NN \adjdemerits \tex_adjdemerits:D + \@@_primitive:NN \advance \tex_advance:D + \@@_primitive:NN \afterassignment \tex_afterassignment:D + \@@_primitive:NN \aftergroup \tex_aftergroup:D + \@@_primitive:NN \atop \tex_atop:D + \@@_primitive:NN \atopwithdelims \tex_atopwithdelims:D + \@@_primitive:NN \badness \tex_badness:D + \@@_primitive:NN \baselineskip \tex_baselineskip:D + \@@_primitive:NN \batchmode \tex_batchmode:D + \@@_primitive:NN \begingroup \tex_begingroup:D + \@@_primitive:NN \belowdisplayshortskip \tex_belowdisplayshortskip:D + \@@_primitive:NN \belowdisplayskip \tex_belowdisplayskip:D + \@@_primitive:NN \binoppenalty \tex_binoppenalty:D + \@@_primitive:NN \botmark \tex_botmark:D + \@@_primitive:NN \box \tex_box:D + \@@_primitive:NN \boxmaxdepth \tex_boxmaxdepth:D + \@@_primitive:NN \brokenpenalty \tex_brokenpenalty:D + \@@_primitive:NN \catcode \tex_catcode:D + \@@_primitive:NN \char \tex_char:D + \@@_primitive:NN \chardef \tex_chardef:D + \@@_primitive:NN \cleaders \tex_cleaders:D + \@@_primitive:NN \closein \tex_closein:D + \@@_primitive:NN \closeout \tex_closeout:D + \@@_primitive:NN \clubpenalty \tex_clubpenalty:D + \@@_primitive:NN \copy \tex_copy:D + \@@_primitive:NN \count \tex_count:D + \@@_primitive:NN \countdef \tex_countdef:D + \@@_primitive:NN \cr \tex_cr:D + \@@_primitive:NN \crcr \tex_crcr:D + \@@_primitive:NN \csname \tex_csname:D + \@@_primitive:NN \day \tex_day:D + \@@_primitive:NN \deadcycles \tex_deadcycles:D + \@@_primitive:NN \def \tex_def:D + \@@_primitive:NN \defaulthyphenchar \tex_defaulthyphenchar:D + \@@_primitive:NN \defaultskewchar \tex_defaultskewchar:D + \@@_primitive:NN \delcode \tex_delcode:D + \@@_primitive:NN \delimiter \tex_delimiter:D + \@@_primitive:NN \delimiterfactor \tex_delimiterfactor:D + \@@_primitive:NN \delimitershortfall \tex_delimitershortfall:D + \@@_primitive:NN \dimen \tex_dimen:D + \@@_primitive:NN \dimendef \tex_dimendef:D + \@@_primitive:NN \discretionary \tex_discretionary:D + \@@_primitive:NN \displayindent \tex_displayindent:D + \@@_primitive:NN \displaylimits \tex_displaylimits:D + \@@_primitive:NN \displaystyle \tex_displaystyle:D + \@@_primitive:NN \displaywidowpenalty \tex_displaywidowpenalty:D + \@@_primitive:NN \displaywidth \tex_displaywidth:D + \@@_primitive:NN \divide \tex_divide:D + \@@_primitive:NN \doublehyphendemerits \tex_doublehyphendemerits:D + \@@_primitive:NN \dp \tex_dp:D + \@@_primitive:NN \dump \tex_dump:D + \@@_primitive:NN \edef \tex_edef:D + \@@_primitive:NN \else \tex_else:D + \@@_primitive:NN \emergencystretch \tex_emergencystretch:D + \@@_primitive:NN \end \tex_end:D + \@@_primitive:NN \endcsname \tex_endcsname:D + \@@_primitive:NN \endgroup \tex_endgroup:D + \@@_primitive:NN \endinput \tex_endinput:D + \@@_primitive:NN \endlinechar \tex_endlinechar:D + \@@_primitive:NN \eqno \tex_eqno:D + \@@_primitive:NN \errhelp \tex_errhelp:D + \@@_primitive:NN \errmessage \tex_errmessage:D + \@@_primitive:NN \errorcontextlines \tex_errorcontextlines:D + \@@_primitive:NN \errorstopmode \tex_errorstopmode:D + \@@_primitive:NN \escapechar \tex_escapechar:D + \@@_primitive:NN \everycr \tex_everycr:D + \@@_primitive:NN \everydisplay \tex_everydisplay:D + \@@_primitive:NN \everyhbox \tex_everyhbox:D + \@@_primitive:NN \everyjob \tex_everyjob:D + \@@_primitive:NN \everymath \tex_everymath:D + \@@_primitive:NN \everypar \tex_everypar:D + \@@_primitive:NN \everyvbox \tex_everyvbox:D + \@@_primitive:NN \exhyphenpenalty \tex_exhyphenpenalty:D + \@@_primitive:NN \expandafter \tex_expandafter:D + \@@_primitive:NN \fam \tex_fam:D + \@@_primitive:NN \fi \tex_fi:D + \@@_primitive:NN \finalhyphendemerits \tex_finalhyphendemerits:D + \@@_primitive:NN \firstmark \tex_firstmark:D + \@@_primitive:NN \floatingpenalty \tex_floatingpenalty:D + \@@_primitive:NN \font \tex_font:D + \@@_primitive:NN \fontdimen \tex_fontdimen:D + \@@_primitive:NN \fontname \tex_fontname:D + \@@_primitive:NN \futurelet \tex_futurelet:D + \@@_primitive:NN \gdef \tex_gdef:D + \@@_primitive:NN \global \tex_global:D + \@@_primitive:NN \globaldefs \tex_globaldefs:D + \@@_primitive:NN \halign \tex_halign:D + \@@_primitive:NN \hangafter \tex_hangafter:D + \@@_primitive:NN \hangindent \tex_hangindent:D + \@@_primitive:NN \hbadness \tex_hbadness:D + \@@_primitive:NN \hbox \tex_hbox:D + \@@_primitive:NN \hfil \tex_hfil:D + \@@_primitive:NN \hfill \tex_hfill:D + \@@_primitive:NN \hfilneg \tex_hfilneg:D + \@@_primitive:NN \hfuzz \tex_hfuzz:D + \@@_primitive:NN \hoffset \tex_hoffset:D + \@@_primitive:NN \holdinginserts \tex_holdinginserts:D + \@@_primitive:NN \hrule \tex_hrule:D + \@@_primitive:NN \hsize \tex_hsize:D + \@@_primitive:NN \hskip \tex_hskip:D + \@@_primitive:NN \hss \tex_hss:D + \@@_primitive:NN \ht \tex_ht:D + \@@_primitive:NN \hyphenation \tex_hyphenation:D + \@@_primitive:NN \hyphenchar \tex_hyphenchar:D + \@@_primitive:NN \hyphenpenalty \tex_hyphenpenalty:D + \@@_primitive:NN \if \tex_if:D + \@@_primitive:NN \ifcase \tex_ifcase:D + \@@_primitive:NN \ifcat \tex_ifcat:D + \@@_primitive:NN \ifdim \tex_ifdim:D + \@@_primitive:NN \ifeof \tex_ifeof:D + \@@_primitive:NN \iffalse \tex_iffalse:D + \@@_primitive:NN \ifhbox \tex_ifhbox:D + \@@_primitive:NN \ifhmode \tex_ifhmode:D + \@@_primitive:NN \ifinner \tex_ifinner:D + \@@_primitive:NN \ifmmode \tex_ifmmode:D + \@@_primitive:NN \ifnum \tex_ifnum:D + \@@_primitive:NN \ifodd \tex_ifodd:D + \@@_primitive:NN \iftrue \tex_iftrue:D + \@@_primitive:NN \ifvbox \tex_ifvbox:D + \@@_primitive:NN \ifvmode \tex_ifvmode:D + \@@_primitive:NN \ifvoid \tex_ifvoid:D + \@@_primitive:NN \ifx \tex_ifx:D + \@@_primitive:NN \ignorespaces \tex_ignorespaces:D + \@@_primitive:NN \immediate \tex_immediate:D + \@@_primitive:NN \indent \tex_indent:D + \@@_primitive:NN \input \tex_input:D + \@@_primitive:NN \inputlineno \tex_inputlineno:D + \@@_primitive:NN \insert \tex_insert:D + \@@_primitive:NN \insertpenalties \tex_insertpenalties:D + \@@_primitive:NN \interlinepenalty \tex_interlinepenalty:D + \@@_primitive:NN \jobname \tex_jobname:D + \@@_primitive:NN \kern \tex_kern:D + \@@_primitive:NN \language \tex_language:D + \@@_primitive:NN \lastbox \tex_lastbox:D + \@@_primitive:NN \lastkern \tex_lastkern:D + \@@_primitive:NN \lastpenalty \tex_lastpenalty:D + \@@_primitive:NN \lastskip \tex_lastskip:D + \@@_primitive:NN \lccode \tex_lccode:D + \@@_primitive:NN \leaders \tex_leaders:D + \@@_primitive:NN \left \tex_left:D + \@@_primitive:NN \lefthyphenmin \tex_lefthyphenmin:D + \@@_primitive:NN \leftskip \tex_leftskip:D + \@@_primitive:NN \leqno \tex_leqno:D + \@@_primitive:NN \let \tex_let:D + \@@_primitive:NN \limits \tex_limits:D + \@@_primitive:NN \linepenalty \tex_linepenalty:D + \@@_primitive:NN \lineskip \tex_lineskip:D + \@@_primitive:NN \lineskiplimit \tex_lineskiplimit:D + \@@_primitive:NN \long \tex_long:D + \@@_primitive:NN \looseness \tex_looseness:D + \@@_primitive:NN \lower \tex_lower:D + \@@_primitive:NN \lowercase \tex_lowercase:D + \@@_primitive:NN \mag \tex_mag:D + \@@_primitive:NN \mark \tex_mark:D + \@@_primitive:NN \mathaccent \tex_mathaccent:D + \@@_primitive:NN \mathbin \tex_mathbin:D + \@@_primitive:NN \mathchar \tex_mathchar:D + \@@_primitive:NN \mathchardef \tex_mathchardef:D + \@@_primitive:NN \mathchoice \tex_mathchoice:D + \@@_primitive:NN \mathclose \tex_mathclose:D + \@@_primitive:NN \mathcode \tex_mathcode:D + \@@_primitive:NN \mathinner \tex_mathinner:D + \@@_primitive:NN \mathop \tex_mathop:D + \@@_primitive:NN \mathopen \tex_mathopen:D + \@@_primitive:NN \mathord \tex_mathord:D + \@@_primitive:NN \mathpunct \tex_mathpunct:D + \@@_primitive:NN \mathrel \tex_mathrel:D + \@@_primitive:NN \mathsurround \tex_mathsurround:D + \@@_primitive:NN \maxdeadcycles \tex_maxdeadcycles:D + \@@_primitive:NN \maxdepth \tex_maxdepth:D + \@@_primitive:NN \meaning \tex_meaning:D + \@@_primitive:NN \medmuskip \tex_medmuskip:D + \@@_primitive:NN \message \tex_message:D + \@@_primitive:NN \mkern \tex_mkern:D + \@@_primitive:NN \month \tex_month:D + \@@_primitive:NN \moveleft \tex_moveleft:D + \@@_primitive:NN \moveright \tex_moveright:D + \@@_primitive:NN \mskip \tex_mskip:D + \@@_primitive:NN \multiply \tex_multiply:D + \@@_primitive:NN \muskip \tex_muskip:D + \@@_primitive:NN \muskipdef \tex_muskipdef:D + \@@_primitive:NN \newlinechar \tex_newlinechar:D + \@@_primitive:NN \noalign \tex_noalign:D + \@@_primitive:NN \noboundary \tex_noboundary:D + \@@_primitive:NN \noexpand \tex_noexpand:D + \@@_primitive:NN \noindent \tex_noindent:D + \@@_primitive:NN \nolimits \tex_nolimits:D + \@@_primitive:NN \nonscript \tex_nonscript:D + \@@_primitive:NN \nonstopmode \tex_nonstopmode:D + \@@_primitive:NN \nulldelimiterspace \tex_nulldelimiterspace:D + \@@_primitive:NN \nullfont \tex_nullfont:D + \@@_primitive:NN \number \tex_number:D + \@@_primitive:NN \omit \tex_omit:D + \@@_primitive:NN \openin \tex_openin:D + \@@_primitive:NN \openout \tex_openout:D + \@@_primitive:NN \or \tex_or:D + \@@_primitive:NN \outer \tex_outer:D + \@@_primitive:NN \output \tex_output:D + \@@_primitive:NN \outputpenalty \tex_outputpenalty:D + \@@_primitive:NN \over \tex_over:D + \@@_primitive:NN \overfullrule \tex_overfullrule:D + \@@_primitive:NN \overline \tex_overline:D + \@@_primitive:NN \overwithdelims \tex_overwithdelims:D + \@@_primitive:NN \pagedepth \tex_pagedepth:D + \@@_primitive:NN \pagefilllstretch \tex_pagefilllstretch:D + \@@_primitive:NN \pagefillstretch \tex_pagefillstretch:D + \@@_primitive:NN \pagefilstretch \tex_pagefilstretch:D + \@@_primitive:NN \pagegoal \tex_pagegoal:D + \@@_primitive:NN \pageshrink \tex_pageshrink:D + \@@_primitive:NN \pagestretch \tex_pagestretch:D + \@@_primitive:NN \pagetotal \tex_pagetotal:D + \@@_primitive:NN \par \tex_par:D + \@@_primitive:NN \parfillskip \tex_parfillskip:D + \@@_primitive:NN \parindent \tex_parindent:D + \@@_primitive:NN \parshape \tex_parshape:D + \@@_primitive:NN \parskip \tex_parskip:D + \@@_primitive:NN \patterns \tex_patterns:D + \@@_primitive:NN \pausing \tex_pausing:D + \@@_primitive:NN \penalty \tex_penalty:D + \@@_primitive:NN \postdisplaypenalty \tex_postdisplaypenalty:D + \@@_primitive:NN \predisplaypenalty \tex_predisplaypenalty:D + \@@_primitive:NN \predisplaysize \tex_predisplaysize:D + \@@_primitive:NN \pretolerance \tex_pretolerance:D + \@@_primitive:NN \prevdepth \tex_prevdepth:D + \@@_primitive:NN \prevgraf \tex_prevgraf:D + \@@_primitive:NN \radical \tex_radical:D + \@@_primitive:NN \raise \tex_raise:D + \@@_primitive:NN \read \tex_read:D + \@@_primitive:NN \relax \tex_relax:D + \@@_primitive:NN \relpenalty \tex_relpenalty:D + \@@_primitive:NN \right \tex_right:D + \@@_primitive:NN \righthyphenmin \tex_righthyphenmin:D + \@@_primitive:NN \rightskip \tex_rightskip:D + \@@_primitive:NN \romannumeral \tex_romannumeral:D + \@@_primitive:NN \scriptfont \tex_scriptfont:D + \@@_primitive:NN \scriptscriptfont \tex_scriptscriptfont:D + \@@_primitive:NN \scriptscriptstyle \tex_scriptscriptstyle:D + \@@_primitive:NN \scriptspace \tex_scriptspace:D + \@@_primitive:NN \scriptstyle \tex_scriptstyle:D + \@@_primitive:NN \scrollmode \tex_scrollmode:D + \@@_primitive:NN \setbox \tex_setbox:D + \@@_primitive:NN \setlanguage \tex_setlanguage:D + \@@_primitive:NN \sfcode \tex_sfcode:D + \@@_primitive:NN \shipout \tex_shipout:D + \@@_primitive:NN \show \tex_show:D + \@@_primitive:NN \showbox \tex_showbox:D + \@@_primitive:NN \showboxbreadth \tex_showboxbreadth:D + \@@_primitive:NN \showboxdepth \tex_showboxdepth:D + \@@_primitive:NN \showlists \tex_showlists:D + \@@_primitive:NN \showthe \tex_showthe:D + \@@_primitive:NN \skewchar \tex_skewchar:D + \@@_primitive:NN \skip \tex_skip:D + \@@_primitive:NN \skipdef \tex_skipdef:D + \@@_primitive:NN \spacefactor \tex_spacefactor:D + \@@_primitive:NN \spaceskip \tex_spaceskip:D + \@@_primitive:NN \span \tex_span:D + \@@_primitive:NN \special \tex_special:D + \@@_primitive:NN \splitbotmark \tex_splitbotmark:D + \@@_primitive:NN \splitfirstmark \tex_splitfirstmark:D + \@@_primitive:NN \splitmaxdepth \tex_splitmaxdepth:D + \@@_primitive:NN \splittopskip \tex_splittopskip:D + \@@_primitive:NN \string \tex_string:D + \@@_primitive:NN \tabskip \tex_tabskip:D + \@@_primitive:NN \textfont \tex_textfont:D + \@@_primitive:NN \textstyle \tex_textstyle:D + \@@_primitive:NN \the \tex_the:D + \@@_primitive:NN \thickmuskip \tex_thickmuskip:D + \@@_primitive:NN \thinmuskip \tex_thinmuskip:D + \@@_primitive:NN \time \tex_time:D + \@@_primitive:NN \toks \tex_toks:D + \@@_primitive:NN \toksdef \tex_toksdef:D + \@@_primitive:NN \tolerance \tex_tolerance:D + \@@_primitive:NN \topmark \tex_topmark:D + \@@_primitive:NN \topskip \tex_topskip:D + \@@_primitive:NN \tracingcommands \tex_tracingcommands:D + \@@_primitive:NN \tracinglostchars \tex_tracinglostchars:D + \@@_primitive:NN \tracingmacros \tex_tracingmacros:D + \@@_primitive:NN \tracingonline \tex_tracingonline:D + \@@_primitive:NN \tracingoutput \tex_tracingoutput:D + \@@_primitive:NN \tracingpages \tex_tracingpages:D + \@@_primitive:NN \tracingparagraphs \tex_tracingparagraphs:D + \@@_primitive:NN \tracingrestores \tex_tracingrestores:D + \@@_primitive:NN \tracingstats \tex_tracingstats:D + \@@_primitive:NN \uccode \tex_uccode:D + \@@_primitive:NN \uchyph \tex_uchyph:D + \@@_primitive:NN \underline \tex_underline:D + \@@_primitive:NN \unhbox \tex_unhbox:D + \@@_primitive:NN \unhcopy \tex_unhcopy:D + \@@_primitive:NN \unkern \tex_unkern:D + \@@_primitive:NN \unpenalty \tex_unpenalty:D + \@@_primitive:NN \unskip \tex_unskip:D + \@@_primitive:NN \unvbox \tex_unvbox:D + \@@_primitive:NN \unvcopy \tex_unvcopy:D + \@@_primitive:NN \uppercase \tex_uppercase:D + \@@_primitive:NN \vadjust \tex_vadjust:D + \@@_primitive:NN \valign \tex_valign:D + \@@_primitive:NN \vbadness \tex_vbadness:D + \@@_primitive:NN \vbox \tex_vbox:D + \@@_primitive:NN \vcenter \tex_vcenter:D + \@@_primitive:NN \vfil \tex_vfil:D + \@@_primitive:NN \vfill \tex_vfill:D + \@@_primitive:NN \vfilneg \tex_vfilneg:D + \@@_primitive:NN \vfuzz \tex_vfuzz:D + \@@_primitive:NN \voffset \tex_voffset:D + \@@_primitive:NN \vrule \tex_vrule:D + \@@_primitive:NN \vsize \tex_vsize:D + \@@_primitive:NN \vskip \tex_vskip:D + \@@_primitive:NN \vsplit \tex_vsplit:D + \@@_primitive:NN \vss \tex_vss:D + \@@_primitive:NN \vtop \tex_vtop:D + \@@_primitive:NN \wd \tex_wd:D + \@@_primitive:NN \widowpenalty \tex_widowpenalty:D + \@@_primitive:NN \write \tex_write:D + \@@_primitive:NN \xdef \tex_xdef:D + \@@_primitive:NN \xleaders \tex_xleaders:D + \@@_primitive:NN \xspaceskip \tex_xspaceskip:D + \@@_primitive:NN \year \tex_year:D % \end{macrocode} % Since \LaTeX3 requires at least the \eTeX{} extensions, % we also rename the additional primitives. These are all % given the prefix | \etex_|. % \begin{macrocode} - \__kernel_primitive:NN \beginL \etex_beginL:D - \__kernel_primitive:NN \beginR \etex_beginR:D - \__kernel_primitive:NN \botmarks \etex_botmarks:D - \__kernel_primitive:NN \clubpenalties \etex_clubpenalties:D - \__kernel_primitive:NN \currentgrouplevel \etex_currentgrouplevel:D - \__kernel_primitive:NN \currentgrouptype \etex_currentgrouptype:D - \__kernel_primitive:NN \currentifbranch \etex_currentifbranch:D - \__kernel_primitive:NN \currentiflevel \etex_currentiflevel:D - \__kernel_primitive:NN \currentiftype \etex_currentiftype:D - \__kernel_primitive:NN \detokenize \etex_detokenize:D - \__kernel_primitive:NN \dimexpr \etex_dimexpr:D - \__kernel_primitive:NN \displaywidowpenalties \etex_displaywidowpenalties:D - \__kernel_primitive:NN \endL \etex_endL:D - \__kernel_primitive:NN \endR \etex_endR:D - \__kernel_primitive:NN \eTeXrevision \etex_eTeXrevision:D - \__kernel_primitive:NN \eTeXversion \etex_eTeXversion:D - \__kernel_primitive:NN \everyeof \etex_everyeof:D - \__kernel_primitive:NN \firstmarks \etex_firstmarks:D - \__kernel_primitive:NN \fontchardp \etex_fontchardp:D - \__kernel_primitive:NN \fontcharht \etex_fontcharht:D - \__kernel_primitive:NN \fontcharic \etex_fontcharic:D - \__kernel_primitive:NN \fontcharwd \etex_fontcharwd:D - \__kernel_primitive:NN \glueexpr \etex_glueexpr:D - \__kernel_primitive:NN \glueshrink \etex_glueshrink:D - \__kernel_primitive:NN \glueshrinkorder \etex_glueshrinkorder:D - \__kernel_primitive:NN \gluestretch \etex_gluestretch:D - \__kernel_primitive:NN \gluestretchorder \etex_gluestretchorder:D - \__kernel_primitive:NN \gluetomu \etex_gluetomu:D - \__kernel_primitive:NN \ifcsname \etex_ifcsname:D - \__kernel_primitive:NN \ifdefined \etex_ifdefined:D - \__kernel_primitive:NN \iffontchar \etex_iffontchar:D - \__kernel_primitive:NN \interactionmode \etex_interactionmode:D - \__kernel_primitive:NN \interlinepenalties \etex_interlinepenalties:D - \__kernel_primitive:NN \lastlinefit \etex_lastlinefit:D - \__kernel_primitive:NN \lastnodetype \etex_lastnodetype:D - \__kernel_primitive:NN \marks \etex_marks:D - \__kernel_primitive:NN \middle \etex_middle:D - \__kernel_primitive:NN \muexpr \etex_muexpr:D - \__kernel_primitive:NN \mutoglue \etex_mutoglue:D - \__kernel_primitive:NN \numexpr \etex_numexpr:D - \__kernel_primitive:NN \pagediscards \etex_pagediscards:D - \__kernel_primitive:NN \parshapedimen \etex_parshapedimen:D - \__kernel_primitive:NN \parshapeindent \etex_parshapeindent:D - \__kernel_primitive:NN \parshapelength \etex_parshapelength:D - \__kernel_primitive:NN \predisplaydirection \etex_predisplaydirection:D - \__kernel_primitive:NN \protected \etex_protected:D - \__kernel_primitive:NN \readline \etex_readline:D - \__kernel_primitive:NN \savinghyphcodes \etex_savinghyphcodes:D - \__kernel_primitive:NN \savingvdiscards \etex_savingvdiscards:D - \__kernel_primitive:NN \scantokens \etex_scantokens:D - \__kernel_primitive:NN \showgroups \etex_showgroups:D - \__kernel_primitive:NN \showifs \etex_showifs:D - \__kernel_primitive:NN \showtokens \etex_showtokens:D - \__kernel_primitive:NN \splitbotmarks \etex_splitbotmarks:D - \__kernel_primitive:NN \splitdiscards \etex_splitdiscards:D - \__kernel_primitive:NN \splitfirstmarks \etex_splitfirstmarks:D - \__kernel_primitive:NN \TeXXeTstate \etex_TeXXeTstate:D - \__kernel_primitive:NN \topmarks \etex_topmarks:D - \__kernel_primitive:NN \tracingassigns \etex_tracingassigns:D - \__kernel_primitive:NN \tracinggroups \etex_tracinggroups:D - \__kernel_primitive:NN \tracingifs \etex_tracingifs:D - \__kernel_primitive:NN \tracingnesting \etex_tracingnesting:D - \__kernel_primitive:NN \tracingscantokens \etex_tracingscantokens:D - \__kernel_primitive:NN \unexpanded \etex_unexpanded:D - \__kernel_primitive:NN \unless \etex_unless:D - \__kernel_primitive:NN \widowpenalties \etex_widowpenalties:D + \@@_primitive:NN \beginL \etex_beginL:D + \@@_primitive:NN \beginR \etex_beginR:D + \@@_primitive:NN \botmarks \etex_botmarks:D + \@@_primitive:NN \clubpenalties \etex_clubpenalties:D + \@@_primitive:NN \currentgrouplevel \etex_currentgrouplevel:D + \@@_primitive:NN \currentgrouptype \etex_currentgrouptype:D + \@@_primitive:NN \currentifbranch \etex_currentifbranch:D + \@@_primitive:NN \currentiflevel \etex_currentiflevel:D + \@@_primitive:NN \currentiftype \etex_currentiftype:D + \@@_primitive:NN \detokenize \etex_detokenize:D + \@@_primitive:NN \dimexpr \etex_dimexpr:D + \@@_primitive:NN \displaywidowpenalties \etex_displaywidowpenalties:D + \@@_primitive:NN \endL \etex_endL:D + \@@_primitive:NN \endR \etex_endR:D + \@@_primitive:NN \eTeXrevision \etex_eTeXrevision:D + \@@_primitive:NN \eTeXversion \etex_eTeXversion:D + \@@_primitive:NN \everyeof \etex_everyeof:D + \@@_primitive:NN \firstmarks \etex_firstmarks:D + \@@_primitive:NN \fontchardp \etex_fontchardp:D + \@@_primitive:NN \fontcharht \etex_fontcharht:D + \@@_primitive:NN \fontcharic \etex_fontcharic:D + \@@_primitive:NN \fontcharwd \etex_fontcharwd:D + \@@_primitive:NN \glueexpr \etex_glueexpr:D + \@@_primitive:NN \glueshrink \etex_glueshrink:D + \@@_primitive:NN \glueshrinkorder \etex_glueshrinkorder:D + \@@_primitive:NN \gluestretch \etex_gluestretch:D + \@@_primitive:NN \gluestretchorder \etex_gluestretchorder:D + \@@_primitive:NN \gluetomu \etex_gluetomu:D + \@@_primitive:NN \ifcsname \etex_ifcsname:D + \@@_primitive:NN \ifdefined \etex_ifdefined:D + \@@_primitive:NN \iffontchar \etex_iffontchar:D + \@@_primitive:NN \interactionmode \etex_interactionmode:D + \@@_primitive:NN \interlinepenalties \etex_interlinepenalties:D + \@@_primitive:NN \lastlinefit \etex_lastlinefit:D + \@@_primitive:NN \lastnodetype \etex_lastnodetype:D + \@@_primitive:NN \marks \etex_marks:D + \@@_primitive:NN \middle \etex_middle:D + \@@_primitive:NN \muexpr \etex_muexpr:D + \@@_primitive:NN \mutoglue \etex_mutoglue:D + \@@_primitive:NN \numexpr \etex_numexpr:D + \@@_primitive:NN \pagediscards \etex_pagediscards:D + \@@_primitive:NN \parshapedimen \etex_parshapedimen:D + \@@_primitive:NN \parshapeindent \etex_parshapeindent:D + \@@_primitive:NN \parshapelength \etex_parshapelength:D + \@@_primitive:NN \predisplaydirection \etex_predisplaydirection:D + \@@_primitive:NN \protected \etex_protected:D + \@@_primitive:NN \readline \etex_readline:D + \@@_primitive:NN \savinghyphcodes \etex_savinghyphcodes:D + \@@_primitive:NN \savingvdiscards \etex_savingvdiscards:D + \@@_primitive:NN \scantokens \etex_scantokens:D + \@@_primitive:NN \showgroups \etex_showgroups:D + \@@_primitive:NN \showifs \etex_showifs:D + \@@_primitive:NN \showtokens \etex_showtokens:D + \@@_primitive:NN \splitbotmarks \etex_splitbotmarks:D + \@@_primitive:NN \splitdiscards \etex_splitdiscards:D + \@@_primitive:NN \splitfirstmarks \etex_splitfirstmarks:D + \@@_primitive:NN \TeXXeTstate \etex_TeXXeTstate:D + \@@_primitive:NN \topmarks \etex_topmarks:D + \@@_primitive:NN \tracingassigns \etex_tracingassigns:D + \@@_primitive:NN \tracinggroups \etex_tracinggroups:D + \@@_primitive:NN \tracingifs \etex_tracingifs:D + \@@_primitive:NN \tracingnesting \etex_tracingnesting:D + \@@_primitive:NN \tracingscantokens \etex_tracingscantokens:D + \@@_primitive:NN \unexpanded \etex_unexpanded:D + \@@_primitive:NN \unless \etex_unless:D + \@@_primitive:NN \widowpenalties \etex_widowpenalties:D % \end{macrocode} % The newer primitives are more complex: there are an awful lot of them, % and we don't use them all at the moment. So the following is selective, @@ -550,134 +551,134 @@ % are not related to PDF output. These ones related to PDF output or only % work in PDF mode. % \begin{macrocode} - \__kernel_primitive:NN \pdfannot \pdftex_pdfannot:D - \__kernel_primitive:NN \pdfcatalog \pdftex_pdfcatalog:D - \__kernel_primitive:NN \pdfcompresslevel \pdftex_pdfcompresslevel:D - \__kernel_primitive:NN \pdfcolorstack \pdftex_pdfcolorstack:D - \__kernel_primitive:NN \pdfcolorstackinit \pdftex_pdfcolorstackinit:D - \__kernel_primitive:NN \pdfcreationdate \pdftex_pdfcreationdate:D - \__kernel_primitive:NN \pdfdecimaldigits \pdftex_pdfdecimaldigits:D - \__kernel_primitive:NN \pdfdest \pdftex_pdfdest:D - \__kernel_primitive:NN \pdfdestmargin \pdftex_pdfdestmargin:D - \__kernel_primitive:NN \pdfendlink \pdftex_pdfendlink:D - \__kernel_primitive:NN \pdfendthread \pdftex_pdfendthread:D - \__kernel_primitive:NN \pdffontattr \pdftex_pdffontattr:D - \__kernel_primitive:NN \pdffontname \pdftex_pdffontname:D - \__kernel_primitive:NN \pdffontobjnum \pdftex_pdffontobjnum:D - \__kernel_primitive:NN \pdfgamma \pdftex_pdfgamma:D - \__kernel_primitive:NN \pdfimageapplygamma \pdftex_pdfimageapplygamma:D - \__kernel_primitive:NN \pdfimagegamma \pdftex_pdfimagegamma:D - \__kernel_primitive:NN \pdfgentounicode \pdftex_pdfgentounicode:D - \__kernel_primitive:NN \pdfglyphtounicode \pdftex_pdfglyphtounicode:D - \__kernel_primitive:NN \pdfhorigin \pdftex_pdfhorigin:D - \__kernel_primitive:NN \pdfimagehicolor \pdftex_pdfimagehicolor:D - \__kernel_primitive:NN \pdfimageresolution \pdftex_pdfimageresolution:D - \__kernel_primitive:NN \pdfincludechars \pdftex_pdfincludechars:D - \__kernel_primitive:NN \pdfinclusioncopyfonts \pdftex_pdfinclusioncopyfonts:D - \__kernel_primitive:NN \pdfinclusionerrorlevel \pdftex_pdfinclusionerrorlevel:D - \__kernel_primitive:NN \pdfinfo \pdftex_pdfinfo:D - \__kernel_primitive:NN \pdflastannot \pdftex_pdflastannot:D - \__kernel_primitive:NN \pdflastlink \pdftex_pdflastlink:D - \__kernel_primitive:NN \pdflastobj \pdftex_pdflastobj:D - \__kernel_primitive:NN \pdflastxform \pdftex_pdflastxform:D - \__kernel_primitive:NN \pdflastximage \pdftex_pdflastximage:D - \__kernel_primitive:NN \pdflastximagecolordepth \pdftex_pdflastximagecolordepth:D - \__kernel_primitive:NN \pdflastximagepages \pdftex_pdflastximagepages:D - \__kernel_primitive:NN \pdflinkmargin \pdftex_pdflinkmargin:D - \__kernel_primitive:NN \pdfliteral \pdftex_pdfliteral:D - \__kernel_primitive:NN \pdfminorversion \pdftex_pdfminorversion:D - \__kernel_primitive:NN \pdfnames \pdftex_pdfnames:D - \__kernel_primitive:NN \pdfobj \pdftex_pdfobj:D - \__kernel_primitive:NN \pdfobjcompresslevel \pdftex_pdfobjcompresslevel:D - \__kernel_primitive:NN \pdfoutline \pdftex_pdfoutline:D - \__kernel_primitive:NN \pdfoutput \pdftex_pdfoutput:D - \__kernel_primitive:NN \pdfpageattr \pdftex_pdfpageattr:D - \__kernel_primitive:NN \pdfpagebox \pdftex_pdfpagebox:D - \__kernel_primitive:NN \pdfpageref \pdftex_pdfpageref:D - \__kernel_primitive:NN \pdfpageresources \pdftex_pdfpageresources:D - \__kernel_primitive:NN \pdfpagesattr \pdftex_pdfpagesattr:D - \__kernel_primitive:NN \pdfrefobj \pdftex_pdfrefobj:D - \__kernel_primitive:NN \pdfrefxform \pdftex_pdfrefxform:D - \__kernel_primitive:NN \pdfrefximage \pdftex_pdfrefximage:D - \__kernel_primitive:NN \pdfrestore \pdftex_pdfrestore:D - \__kernel_primitive:NN \pdfretval \pdftex_pdfretval:D - \__kernel_primitive:NN \pdfsave \pdftex_pdfsave:D - \__kernel_primitive:NN \pdfsetmatrix \pdftex_pdfsetmatrix:D - \__kernel_primitive:NN \pdfstartlink \pdftex_pdfstartlink:D - \__kernel_primitive:NN \pdfstartthread \pdftex_pdfstartthread:D - \__kernel_primitive:NN \pdfsuppressptexinfo \pdftex_pdfsuppressptexinfo:D - \__kernel_primitive:NN \pdfthread \pdftex_pdfthread:D - \__kernel_primitive:NN \pdfthreadmargin \pdftex_pdfthreadmargin:D - \__kernel_primitive:NN \pdftrailer \pdftex_pdftrailer:D - \__kernel_primitive:NN \pdfuniqueresname \pdftex_pdfuniqueresname:D - \__kernel_primitive:NN \pdfvorigin \pdftex_pdfvorigin:D - \__kernel_primitive:NN \pdfxform \pdftex_pdfxform:D - \__kernel_primitive:NN \pdfxformattr \pdftex_pdfxformattr:D - \__kernel_primitive:NN \pdfxformname \pdftex_pdfxformname:D - \__kernel_primitive:NN \pdfxformresources \pdftex_pdfxformresources:D - \__kernel_primitive:NN \pdfximage \pdftex_pdfximage:D - \__kernel_primitive:NN \pdfximagebbox \pdftex_pdfximagebbox:D + \@@_primitive:NN \pdfannot \pdftex_pdfannot:D + \@@_primitive:NN \pdfcatalog \pdftex_pdfcatalog:D + \@@_primitive:NN \pdfcompresslevel \pdftex_pdfcompresslevel:D + \@@_primitive:NN \pdfcolorstack \pdftex_pdfcolorstack:D + \@@_primitive:NN \pdfcolorstackinit \pdftex_pdfcolorstackinit:D + \@@_primitive:NN \pdfcreationdate \pdftex_pdfcreationdate:D + \@@_primitive:NN \pdfdecimaldigits \pdftex_pdfdecimaldigits:D + \@@_primitive:NN \pdfdest \pdftex_pdfdest:D + \@@_primitive:NN \pdfdestmargin \pdftex_pdfdestmargin:D + \@@_primitive:NN \pdfendlink \pdftex_pdfendlink:D + \@@_primitive:NN \pdfendthread \pdftex_pdfendthread:D + \@@_primitive:NN \pdffontattr \pdftex_pdffontattr:D + \@@_primitive:NN \pdffontname \pdftex_pdffontname:D + \@@_primitive:NN \pdffontobjnum \pdftex_pdffontobjnum:D + \@@_primitive:NN \pdfgamma \pdftex_pdfgamma:D + \@@_primitive:NN \pdfimageapplygamma \pdftex_pdfimageapplygamma:D + \@@_primitive:NN \pdfimagegamma \pdftex_pdfimagegamma:D + \@@_primitive:NN \pdfgentounicode \pdftex_pdfgentounicode:D + \@@_primitive:NN \pdfglyphtounicode \pdftex_pdfglyphtounicode:D + \@@_primitive:NN \pdfhorigin \pdftex_pdfhorigin:D + \@@_primitive:NN \pdfimagehicolor \pdftex_pdfimagehicolor:D + \@@_primitive:NN \pdfimageresolution \pdftex_pdfimageresolution:D + \@@_primitive:NN \pdfincludechars \pdftex_pdfincludechars:D + \@@_primitive:NN \pdfinclusioncopyfonts \pdftex_pdfinclusioncopyfonts:D + \@@_primitive:NN \pdfinclusionerrorlevel \pdftex_pdfinclusionerrorlevel:D + \@@_primitive:NN \pdfinfo \pdftex_pdfinfo:D + \@@_primitive:NN \pdflastannot \pdftex_pdflastannot:D + \@@_primitive:NN \pdflastlink \pdftex_pdflastlink:D + \@@_primitive:NN \pdflastobj \pdftex_pdflastobj:D + \@@_primitive:NN \pdflastxform \pdftex_pdflastxform:D + \@@_primitive:NN \pdflastximage \pdftex_pdflastximage:D + \@@_primitive:NN \pdflastximagecolordepth \pdftex_pdflastximagecolordepth:D + \@@_primitive:NN \pdflastximagepages \pdftex_pdflastximagepages:D + \@@_primitive:NN \pdflinkmargin \pdftex_pdflinkmargin:D + \@@_primitive:NN \pdfliteral \pdftex_pdfliteral:D + \@@_primitive:NN \pdfminorversion \pdftex_pdfminorversion:D + \@@_primitive:NN \pdfnames \pdftex_pdfnames:D + \@@_primitive:NN \pdfobj \pdftex_pdfobj:D + \@@_primitive:NN \pdfobjcompresslevel \pdftex_pdfobjcompresslevel:D + \@@_primitive:NN \pdfoutline \pdftex_pdfoutline:D + \@@_primitive:NN \pdfoutput \pdftex_pdfoutput:D + \@@_primitive:NN \pdfpageattr \pdftex_pdfpageattr:D + \@@_primitive:NN \pdfpagebox \pdftex_pdfpagebox:D + \@@_primitive:NN \pdfpageref \pdftex_pdfpageref:D + \@@_primitive:NN \pdfpageresources \pdftex_pdfpageresources:D + \@@_primitive:NN \pdfpagesattr \pdftex_pdfpagesattr:D + \@@_primitive:NN \pdfrefobj \pdftex_pdfrefobj:D + \@@_primitive:NN \pdfrefxform \pdftex_pdfrefxform:D + \@@_primitive:NN \pdfrefximage \pdftex_pdfrefximage:D + \@@_primitive:NN \pdfrestore \pdftex_pdfrestore:D + \@@_primitive:NN \pdfretval \pdftex_pdfretval:D + \@@_primitive:NN \pdfsave \pdftex_pdfsave:D + \@@_primitive:NN \pdfsetmatrix \pdftex_pdfsetmatrix:D + \@@_primitive:NN \pdfstartlink \pdftex_pdfstartlink:D + \@@_primitive:NN \pdfstartthread \pdftex_pdfstartthread:D + \@@_primitive:NN \pdfsuppressptexinfo \pdftex_pdfsuppressptexinfo:D + \@@_primitive:NN \pdfthread \pdftex_pdfthread:D + \@@_primitive:NN \pdfthreadmargin \pdftex_pdfthreadmargin:D + \@@_primitive:NN \pdftrailer \pdftex_pdftrailer:D + \@@_primitive:NN \pdfuniqueresname \pdftex_pdfuniqueresname:D + \@@_primitive:NN \pdfvorigin \pdftex_pdfvorigin:D + \@@_primitive:NN \pdfxform \pdftex_pdfxform:D + \@@_primitive:NN \pdfxformattr \pdftex_pdfxformattr:D + \@@_primitive:NN \pdfxformname \pdftex_pdfxformname:D + \@@_primitive:NN \pdfxformresources \pdftex_pdfxformresources:D + \@@_primitive:NN \pdfximage \pdftex_pdfximage:D + \@@_primitive:NN \pdfximagebbox \pdftex_pdfximagebbox:D % \end{macrocode} % While these are not. % \begin{macrocode} - \__kernel_primitive:NN \ifpdfabsdim \pdftex_ifabsdim:D - \__kernel_primitive:NN \ifpdfabsnum \pdftex_ifabsnum:D - \__kernel_primitive:NN \ifpdfprimitive \pdftex_ifprimitive:D - \__kernel_primitive:NN \pdfadjustspacing \pdftex_adjustspacing:D - \__kernel_primitive:NN \pdfcopyfont \pdftex_copyfont:D - \__kernel_primitive:NN \pdfdraftmode \pdftex_draftmode:D - \__kernel_primitive:NN \pdfeachlinedepth \pdftex_eachlinedepth:D - \__kernel_primitive:NN \pdfeachlineheight \pdftex_eachlineheight:D - \__kernel_primitive:NN \pdffilemoddate \pdftex_filemoddate:D - \__kernel_primitive:NN \pdffilesize \pdftex_filesize:D - \__kernel_primitive:NN \pdffirstlineheight \pdftex_firstlineheight:D - \__kernel_primitive:NN \pdffontexpand \pdftex_fontexpand:D - \__kernel_primitive:NN \pdffontsize \pdftex_fontsize:D - \__kernel_primitive:NN \pdfignoreddimen \pdftex_ignoreddimen:D - \__kernel_primitive:NN \pdfinsertht \pdftex_insertht:D - \__kernel_primitive:NN \pdflastlinedepth \pdftex_lastlinedepth:D - \__kernel_primitive:NN \pdflastxpos \pdftex_lastxpos:D - \__kernel_primitive:NN \pdflastypos \pdftex_lastypos:D - \__kernel_primitive:NN \pdfmapfile \pdftex_mapfile:D - \__kernel_primitive:NN \pdfmapline \pdftex_mapline:D - \__kernel_primitive:NN \pdfmdfivesum \pdftex_mdfivesum:D - \__kernel_primitive:NN \pdfnoligatures \pdftex_noligatures:D - \__kernel_primitive:NN \pdfnormaldeviate \pdftex_normaldeviate:D - \__kernel_primitive:NN \pdfpageheight \pdftex_pageheight:D - \__kernel_primitive:NN \pdfpagewidth \pdftex_pagewidth:D - \__kernel_primitive:NN \pdfpkmode \pdftex_pkmode:D - \__kernel_primitive:NN \pdfpkresolution \pdftex_pkresolution:D - \__kernel_primitive:NN \pdfprimitive \pdftex_primitive:D - \__kernel_primitive:NN \pdfprotrudechars \pdftex_protrudechars:D - \__kernel_primitive:NN \pdfpxdimen \pdftex_pxdimen:D - \__kernel_primitive:NN \pdfrandomseed \pdftex_randomseed:D - \__kernel_primitive:NN \pdfsavepos \pdftex_savepos:D - \__kernel_primitive:NN \pdfstrcmp \pdftex_strcmp:D - \__kernel_primitive:NN \pdfsetrandomseed \pdftex_setrandomseed:D - \__kernel_primitive:NN \pdfshellescape \pdftex_shellescape:D - \__kernel_primitive:NN \pdftracingfonts \pdftex_tracingfonts:D - \__kernel_primitive:NN \pdfuniformdeviate \pdftex_uniformdeviate:D + \@@_primitive:NN \ifpdfabsdim \pdftex_ifabsdim:D + \@@_primitive:NN \ifpdfabsnum \pdftex_ifabsnum:D + \@@_primitive:NN \ifpdfprimitive \pdftex_ifprimitive:D + \@@_primitive:NN \pdfadjustspacing \pdftex_adjustspacing:D + \@@_primitive:NN \pdfcopyfont \pdftex_copyfont:D + \@@_primitive:NN \pdfdraftmode \pdftex_draftmode:D + \@@_primitive:NN \pdfeachlinedepth \pdftex_eachlinedepth:D + \@@_primitive:NN \pdfeachlineheight \pdftex_eachlineheight:D + \@@_primitive:NN \pdffilemoddate \pdftex_filemoddate:D + \@@_primitive:NN \pdffilesize \pdftex_filesize:D + \@@_primitive:NN \pdffirstlineheight \pdftex_firstlineheight:D + \@@_primitive:NN \pdffontexpand \pdftex_fontexpand:D + \@@_primitive:NN \pdffontsize \pdftex_fontsize:D + \@@_primitive:NN \pdfignoreddimen \pdftex_ignoreddimen:D + \@@_primitive:NN \pdfinsertht \pdftex_insertht:D + \@@_primitive:NN \pdflastlinedepth \pdftex_lastlinedepth:D + \@@_primitive:NN \pdflastxpos \pdftex_lastxpos:D + \@@_primitive:NN \pdflastypos \pdftex_lastypos:D + \@@_primitive:NN \pdfmapfile \pdftex_mapfile:D + \@@_primitive:NN \pdfmapline \pdftex_mapline:D + \@@_primitive:NN \pdfmdfivesum \pdftex_mdfivesum:D + \@@_primitive:NN \pdfnoligatures \pdftex_noligatures:D + \@@_primitive:NN \pdfnormaldeviate \pdftex_normaldeviate:D + \@@_primitive:NN \pdfpageheight \pdftex_pageheight:D + \@@_primitive:NN \pdfpagewidth \pdftex_pagewidth:D + \@@_primitive:NN \pdfpkmode \pdftex_pkmode:D + \@@_primitive:NN \pdfpkresolution \pdftex_pkresolution:D + \@@_primitive:NN \pdfprimitive \pdftex_primitive:D + \@@_primitive:NN \pdfprotrudechars \pdftex_protrudechars:D + \@@_primitive:NN \pdfpxdimen \pdftex_pxdimen:D + \@@_primitive:NN \pdfrandomseed \pdftex_randomseed:D + \@@_primitive:NN \pdfsavepos \pdftex_savepos:D + \@@_primitive:NN \pdfstrcmp \pdftex_strcmp:D + \@@_primitive:NN \pdfsetrandomseed \pdftex_setrandomseed:D + \@@_primitive:NN \pdfshellescape \pdftex_shellescape:D + \@@_primitive:NN \pdftracingfonts \pdftex_tracingfonts:D + \@@_primitive:NN \pdfuniformdeviate \pdftex_uniformdeviate:D % \end{macrocode} % The version primitives are not related to PDF mode but are related to % \pdfTeX{} so retain the full prefix. % \begin{macrocode} - \__kernel_primitive:NN \pdftexbanner \pdftex_pdftexbanner:D - \__kernel_primitive:NN \pdftexrevision \pdftex_pdftexrevision:D - \__kernel_primitive:NN \pdftexversion \pdftex_pdftexversion:D + \@@_primitive:NN \pdftexbanner \pdftex_pdftexbanner:D + \@@_primitive:NN \pdftexrevision \pdftex_pdftexrevision:D + \@@_primitive:NN \pdftexversion \pdftex_pdftexversion:D % \end{macrocode} % These ones appear in \pdfTeX{} but don't have |pdf| in the name at all. % (\tn{synctex} is odd as it's really not from \pdfTeX{} but from SyncTeX!) % \begin{macrocode} - \__kernel_primitive:NN \efcode \pdftex_efcode:D - \__kernel_primitive:NN \ifincsname \pdftex_ifincsname:D - \__kernel_primitive:NN \leftmarginkern \pdftex_leftmarginkern:D - \__kernel_primitive:NN \letterspacefont \pdftex_letterspacefont:D - \__kernel_primitive:NN \lpcode \pdftex_lpcode:D - \__kernel_primitive:NN \quitvmode \pdftex_quitvmode:D - \__kernel_primitive:NN \rightmarginkern \pdftex_rightmarginkern:D - \__kernel_primitive:NN \rpcode \pdftex_rpcode:D - \__kernel_primitive:NN \synctex \pdftex_synctex:D - \__kernel_primitive:NN \tagcode \pdftex_tagcode:D + \@@_primitive:NN \efcode \pdftex_efcode:D + \@@_primitive:NN \ifincsname \pdftex_ifincsname:D + \@@_primitive:NN \leftmarginkern \pdftex_leftmarginkern:D + \@@_primitive:NN \letterspacefont \pdftex_letterspacefont:D + \@@_primitive:NN \lpcode \pdftex_lpcode:D + \@@_primitive:NN \quitvmode \pdftex_quitvmode:D + \@@_primitive:NN \rightmarginkern \pdftex_rightmarginkern:D + \@@_primitive:NN \rpcode \pdftex_rpcode:D + \@@_primitive:NN \synctex \pdftex_synctex:D + \@@_primitive:NN \tagcode \pdftex_tagcode:D % \end{macrocode} % Post \pdfTeX{} primitive availability gets more complex. Both \XeTeX{} and % \LuaTeX{} have varying names for some primitives from \pdfTeX{}. Particularly @@ -688,7 +689,7 @@ %<*initex|package> \tex_long:D \tex_def:D \use_ii:nn #1#2 {#2} \tex_long:D \tex_def:D \use_none:n #1 { } - \tex_long:D \tex_def:D \__kernel_primitive:NN #1#2 + \tex_long:D \tex_def:D \@@_primitive:NN #1#2 { \etex_ifdefined:D #1 \tex_expandafter:D \use_ii:nn @@ -707,201 +708,201 @@ % into the \enquote{base} name. A few cross-compatibility names which lack % the |pdf| of the original are handled later. % \begin{macrocode} - \__kernel_primitive:NN \suppressfontnotfounderror \xetex_suppressfontnotfounderror:D - \__kernel_primitive:NN \XeTeXcharclass \xetex_charclass:D - \__kernel_primitive:NN \XeTeXcharglyph \xetex_charglyph:D - \__kernel_primitive:NN \XeTeXcountfeatures \xetex_countfeatures:D - \__kernel_primitive:NN \XeTeXcountglyphs \xetex_countglyphs:D - \__kernel_primitive:NN \XeTeXcountselectors \xetex_countselectors:D - \__kernel_primitive:NN \XeTeXcountvariations \xetex_countvariations:D - \__kernel_primitive:NN \XeTeXdefaultencoding \xetex_defaultencoding:D - \__kernel_primitive:NN \XeTeXdashbreakstate \xetex_dashbreakstate:D - \__kernel_primitive:NN \XeTeXfeaturecode \xetex_featurecode:D - \__kernel_primitive:NN \XeTeXfeaturename \xetex_featurename:D - \__kernel_primitive:NN \XeTeXfindfeaturebyname \xetex_findfeaturebyname:D - \__kernel_primitive:NN \XeTeXfindselectorbyname \xetex_findselectorbyname:D - \__kernel_primitive:NN \XeTeXfindvariationbyname \xetex_findvariationbyname:D - \__kernel_primitive:NN \XeTeXfirstfontchar \xetex_firstfontchar:D - \__kernel_primitive:NN \XeTeXfonttype \xetex_fonttype:D - \__kernel_primitive:NN \XeTeXgenerateactualtext \xetex_generateactualtext:D - \__kernel_primitive:NN \XeTeXglyph \xetex_glyph:D - \__kernel_primitive:NN \XeTeXglyphbounds \xetex_glyphbounds:D - \__kernel_primitive:NN \XeTeXglyphindex \xetex_glyphindex:D - \__kernel_primitive:NN \XeTeXglyphname \xetex_glyphname:D - \__kernel_primitive:NN \XeTeXinputencoding \xetex_inputencoding:D - \__kernel_primitive:NN \XeTeXinputnormalization \xetex_inputnormalization:D - \__kernel_primitive:NN \XeTeXinterchartokenstate \xetex_interchartokenstate:D - \__kernel_primitive:NN \XeTeXinterchartoks \xetex_interchartoks:D - \__kernel_primitive:NN \XeTeXisdefaultselector \xetex_isdefaultselector:D - \__kernel_primitive:NN \XeTeXisexclusivefeature \xetex_isexclusivefeature:D - \__kernel_primitive:NN \XeTeXlastfontchar \xetex_lastfontchar:D - \__kernel_primitive:NN \XeTeXlinebreakskip \xetex_linebreakskip:D - \__kernel_primitive:NN \XeTeXlinebreaklocale \xetex_linebreaklocale:D - \__kernel_primitive:NN \XeTeXlinebreakpenalty \xetex_linebreakpenalty:D - \__kernel_primitive:NN \XeTeXOTcountfeatures \xetex_OTcountfeatures:D - \__kernel_primitive:NN \XeTeXOTcountlanguages \xetex_OTcountlanguages:D - \__kernel_primitive:NN \XeTeXOTcountscripts \xetex_OTcountscripts:D - \__kernel_primitive:NN \XeTeXOTfeaturetag \xetex_OTfeaturetag:D - \__kernel_primitive:NN \XeTeXOTlanguagetag \xetex_OTlanguagetag:D - \__kernel_primitive:NN \XeTeXOTscripttag \xetex_OTscripttag:D - \__kernel_primitive:NN \XeTeXpdffile \xetex_pdffile:D - \__kernel_primitive:NN \XeTeXpdfpagecount \xetex_pdfpagecount:D - \__kernel_primitive:NN \XeTeXpicfile \xetex_picfile:D - \__kernel_primitive:NN \XeTeXselectorname \xetex_selectorname:D - \__kernel_primitive:NN \XeTeXtracingfonts \xetex_tracingfonts:D - \__kernel_primitive:NN \XeTeXupwardsmode \xetex_upwardsmode:D - \__kernel_primitive:NN \XeTeXuseglyphmetrics \xetex_useglyphmetrics:D - \__kernel_primitive:NN \XeTeXvariation \xetex_variation:D - \__kernel_primitive:NN \XeTeXvariationdefault \xetex_variationdefault:D - \__kernel_primitive:NN \XeTeXvariationmax \xetex_variationmax:D - \__kernel_primitive:NN \XeTeXvariationmin \xetex_variationmin:D - \__kernel_primitive:NN \XeTeXvariationname \xetex_variationname:D + \@@_primitive:NN \suppressfontnotfounderror \xetex_suppressfontnotfounderror:D + \@@_primitive:NN \XeTeXcharclass \xetex_charclass:D + \@@_primitive:NN \XeTeXcharglyph \xetex_charglyph:D + \@@_primitive:NN \XeTeXcountfeatures \xetex_countfeatures:D + \@@_primitive:NN \XeTeXcountglyphs \xetex_countglyphs:D + \@@_primitive:NN \XeTeXcountselectors \xetex_countselectors:D + \@@_primitive:NN \XeTeXcountvariations \xetex_countvariations:D + \@@_primitive:NN \XeTeXdefaultencoding \xetex_defaultencoding:D + \@@_primitive:NN \XeTeXdashbreakstate \xetex_dashbreakstate:D + \@@_primitive:NN \XeTeXfeaturecode \xetex_featurecode:D + \@@_primitive:NN \XeTeXfeaturename \xetex_featurename:D + \@@_primitive:NN \XeTeXfindfeaturebyname \xetex_findfeaturebyname:D + \@@_primitive:NN \XeTeXfindselectorbyname \xetex_findselectorbyname:D + \@@_primitive:NN \XeTeXfindvariationbyname \xetex_findvariationbyname:D + \@@_primitive:NN \XeTeXfirstfontchar \xetex_firstfontchar:D + \@@_primitive:NN \XeTeXfonttype \xetex_fonttype:D + \@@_primitive:NN \XeTeXgenerateactualtext \xetex_generateactualtext:D + \@@_primitive:NN \XeTeXglyph \xetex_glyph:D + \@@_primitive:NN \XeTeXglyphbounds \xetex_glyphbounds:D + \@@_primitive:NN \XeTeXglyphindex \xetex_glyphindex:D + \@@_primitive:NN \XeTeXglyphname \xetex_glyphname:D + \@@_primitive:NN \XeTeXinputencoding \xetex_inputencoding:D + \@@_primitive:NN \XeTeXinputnormalization \xetex_inputnormalization:D + \@@_primitive:NN \XeTeXinterchartokenstate \xetex_interchartokenstate:D + \@@_primitive:NN \XeTeXinterchartoks \xetex_interchartoks:D + \@@_primitive:NN \XeTeXisdefaultselector \xetex_isdefaultselector:D + \@@_primitive:NN \XeTeXisexclusivefeature \xetex_isexclusivefeature:D + \@@_primitive:NN \XeTeXlastfontchar \xetex_lastfontchar:D + \@@_primitive:NN \XeTeXlinebreakskip \xetex_linebreakskip:D + \@@_primitive:NN \XeTeXlinebreaklocale \xetex_linebreaklocale:D + \@@_primitive:NN \XeTeXlinebreakpenalty \xetex_linebreakpenalty:D + \@@_primitive:NN \XeTeXOTcountfeatures \xetex_OTcountfeatures:D + \@@_primitive:NN \XeTeXOTcountlanguages \xetex_OTcountlanguages:D + \@@_primitive:NN \XeTeXOTcountscripts \xetex_OTcountscripts:D + \@@_primitive:NN \XeTeXOTfeaturetag \xetex_OTfeaturetag:D + \@@_primitive:NN \XeTeXOTlanguagetag \xetex_OTlanguagetag:D + \@@_primitive:NN \XeTeXOTscripttag \xetex_OTscripttag:D + \@@_primitive:NN \XeTeXpdffile \xetex_pdffile:D + \@@_primitive:NN \XeTeXpdfpagecount \xetex_pdfpagecount:D + \@@_primitive:NN \XeTeXpicfile \xetex_picfile:D + \@@_primitive:NN \XeTeXselectorname \xetex_selectorname:D + \@@_primitive:NN \XeTeXtracingfonts \xetex_tracingfonts:D + \@@_primitive:NN \XeTeXupwardsmode \xetex_upwardsmode:D + \@@_primitive:NN \XeTeXuseglyphmetrics \xetex_useglyphmetrics:D + \@@_primitive:NN \XeTeXvariation \xetex_variation:D + \@@_primitive:NN \XeTeXvariationdefault \xetex_variationdefault:D + \@@_primitive:NN \XeTeXvariationmax \xetex_variationmax:D + \@@_primitive:NN \XeTeXvariationmin \xetex_variationmin:D + \@@_primitive:NN \XeTeXvariationname \xetex_variationname:D % \end{macrocode} % The version primitives retain |XeTeX|. % \begin{macrocode} - \__kernel_primitive:NN \XeTeXrevision \xetex_XeTeXrevision:D - \__kernel_primitive:NN \XeTeXversion \xetex_XeTeXversion:D + \@@_primitive:NN \XeTeXrevision \xetex_XeTeXrevision:D + \@@_primitive:NN \XeTeXversion \xetex_XeTeXversion:D % \end{macrocode} % Primitives from \pdfTeX{} that \XeTeX{} renames: also helps with % \LuaTeX{}. % \begin{macrocode} - \__kernel_primitive:NN \mdfivesum \pdftex_mdfivesum:D - \__kernel_primitive:NN \ifprimitive \pdftex_ifprimitive:D - \__kernel_primitive:NN \primitive \pdftex_primitive:D - \__kernel_primitive:NN \shellescape \pdftex_shellescape:D + \@@_primitive:NN \mdfivesum \pdftex_mdfivesum:D + \@@_primitive:NN \ifprimitive \pdftex_ifprimitive:D + \@@_primitive:NN \primitive \pdftex_primitive:D + \@@_primitive:NN \shellescape \pdftex_shellescape:D % \end{macrocode} % Primitives from \LuaTeX{}, some of which have been ported back to % \XeTeX{}. Notice that \tn{expanded} was intended for \pdfTeX{}~1.50 but % as that was not released we call this a \LuaTeX{} primitive. % \begin{macrocode} - \__kernel_primitive:NN \alignmark \luatex_alignmark:D - \__kernel_primitive:NN \aligntab \luatex_aligntab:D - \__kernel_primitive:NN \attribute \luatex_attribute:D - \__kernel_primitive:NN \attributedef \luatex_attributedef:D - \__kernel_primitive:NN \automatichyphenpenalty \luatex_automatichyphenpenalty:D - \__kernel_primitive:NN \begincsname \luatex_begincsname:D - \__kernel_primitive:NN \catcodetable \luatex_catcodetable:D - \__kernel_primitive:NN \clearmarks \luatex_clearmarks:D - \__kernel_primitive:NN \crampeddisplaystyle \luatex_crampeddisplaystyle:D - \__kernel_primitive:NN \crampedscriptscriptstyle \luatex_crampedscriptscriptstyle:D - \__kernel_primitive:NN \crampedscriptstyle \luatex_crampedscriptstyle:D - \__kernel_primitive:NN \crampedtextstyle \luatex_crampedtextstyle:D - \__kernel_primitive:NN \directlua \luatex_directlua:D - \__kernel_primitive:NN \dviextension \luatex_dviextension:D - \__kernel_primitive:NN \dvifeedback \luatex_dvifeedback:D - \__kernel_primitive:NN \dvivariable \luatex_dvivariable:D - \__kernel_primitive:NN \etoksapp \luatex_etoksapp:D - \__kernel_primitive:NN \etokspre \luatex_etokspre:D - \__kernel_primitive:NN \explicithyphenpenalty \luatex_explicithyphenpenalty:D - \__kernel_primitive:NN \expanded \luatex_expanded:D - \__kernel_primitive:NN \firstvalidlanguage \luatex_firstvalidlanguage:D - \__kernel_primitive:NN \fontid \luatex_fontid:D - \__kernel_primitive:NN \formatname \luatex_formatname:D - \__kernel_primitive:NN \hjcode \luatex_hjcode:D - \__kernel_primitive:NN \hpack \luatex_hpack:D - \__kernel_primitive:NN \hyphenationbounds \luatex_hyphenationbounds:D - \__kernel_primitive:NN \hyphenationmin \luatex_hyphenationmin:D - \__kernel_primitive:NN \hyphenpenaltymode \luatex_hyphenpenaltymode:D - \__kernel_primitive:NN \gleaders \luatex_gleaders:D - \__kernel_primitive:NN \initcatcodetable \luatex_initcatcodetable:D - \__kernel_primitive:NN \lastnamedcs \luatex_lastnamedcs:D - \__kernel_primitive:NN \latelua \luatex_latelua:D - \__kernel_primitive:NN \letcharcode \luatex_letcharcode:D - \__kernel_primitive:NN \luaescapestring \luatex_luaescapestring:D - \__kernel_primitive:NN \luafunction \luatex_luafunction:D - \__kernel_primitive:NN \luatexbanner \luatex_luatexbanner:D - \__kernel_primitive:NN \luatexdatestamp \luatex_luatexdatestamp:D - \__kernel_primitive:NN \luatexrevision \luatex_luatexrevision:D - \__kernel_primitive:NN \luatexversion \luatex_luatexversion:D - \__kernel_primitive:NN \mathdisplayskipmode \luatex_mathdisplayskipmode:D - \__kernel_primitive:NN \matheqnogapstep \luatex_matheqnogapstep:D - \__kernel_primitive:NN \mathnolimitsmode \luatex_mathnolimitsmode:D - \__kernel_primitive:NN \mathoption \luatex_mathoption:D - \__kernel_primitive:NN \mathrulesfam \luatex_mathrulesfam:D - \__kernel_primitive:NN \mathscriptsmode \luatex_mathscriptsmode:D - \__kernel_primitive:NN \mathstyle \luatex_mathstyle:D - \__kernel_primitive:NN \mathsurroundmode \luatex_mathsurroundmode:D - \__kernel_primitive:NN \mathsurroundskip \luatex_mathsurroundskip:D - \__kernel_primitive:NN \nohrule \luatex_nohrule:D - \__kernel_primitive:NN \nokerns \luatex_nokerns:D - \__kernel_primitive:NN \noligs \luatex_noligs:D - \__kernel_primitive:NN \nospaces \luatex_nospaces:D - \__kernel_primitive:NN \novrule \luatex_novrule:D - \__kernel_primitive:NN \outputbox \luatex_outputbox:D - \__kernel_primitive:NN \pagebottomoffset \luatex_pagebottomoffset:D - \__kernel_primitive:NN \pageleftoffset \luatex_pageleftoffset:D - \__kernel_primitive:NN \pagerightoffset \luatex_pagerightoffset:D - \__kernel_primitive:NN \pagetopoffset \luatex_pagetopoffset:D - \__kernel_primitive:NN \pdfextension \luatex_pdfextension:D - \__kernel_primitive:NN \pdffeedback \luatex_pdffeedback:D - \__kernel_primitive:NN \pdfvariable \luatex_pdfvariable:D - \__kernel_primitive:NN \postexhyphenchar \luatex_postexhyphenchar:D - \__kernel_primitive:NN \posthyphenchar \luatex_posthyphenchar:D - \__kernel_primitive:NN \predisplaygapfactor \luatex_predisplaygapfactor:D - \__kernel_primitive:NN \preexhyphenchar \luatex_preexhyphenchar:D - \__kernel_primitive:NN \prehyphenchar \luatex_prehyphenchar:D - \__kernel_primitive:NN \savecatcodetable \luatex_savecatcodetable:D - \__kernel_primitive:NN \scantextokens \luatex_scantextokens:D - \__kernel_primitive:NN \setfontid \luatex_setfontid:D - \__kernel_primitive:NN \shapemode \luatex_shapemode:D - \__kernel_primitive:NN \suppressifcsnameerror \luatex_suppressifcsnameerror:D - \__kernel_primitive:NN \suppresslongerror \luatex_suppresslongerror:D - \__kernel_primitive:NN \suppressmathparerror \luatex_suppressmathparerror:D - \__kernel_primitive:NN \suppressoutererror \luatex_suppressoutererror:D - \__kernel_primitive:NN \toksapp \luatex_toksapp:D - \__kernel_primitive:NN \tokspre \luatex_tokspre:D - \__kernel_primitive:NN \tpack \luatex_tpack:D - \__kernel_primitive:NN \vpack \luatex_vpack:D + \@@_primitive:NN \alignmark \luatex_alignmark:D + \@@_primitive:NN \aligntab \luatex_aligntab:D + \@@_primitive:NN \attribute \luatex_attribute:D + \@@_primitive:NN \attributedef \luatex_attributedef:D + \@@_primitive:NN \automatichyphenpenalty \luatex_automatichyphenpenalty:D + \@@_primitive:NN \begincsname \luatex_begincsname:D + \@@_primitive:NN \catcodetable \luatex_catcodetable:D + \@@_primitive:NN \clearmarks \luatex_clearmarks:D + \@@_primitive:NN \crampeddisplaystyle \luatex_crampeddisplaystyle:D + \@@_primitive:NN \crampedscriptscriptstyle \luatex_crampedscriptscriptstyle:D + \@@_primitive:NN \crampedscriptstyle \luatex_crampedscriptstyle:D + \@@_primitive:NN \crampedtextstyle \luatex_crampedtextstyle:D + \@@_primitive:NN \directlua \luatex_directlua:D + \@@_primitive:NN \dviextension \luatex_dviextension:D + \@@_primitive:NN \dvifeedback \luatex_dvifeedback:D + \@@_primitive:NN \dvivariable \luatex_dvivariable:D + \@@_primitive:NN \etoksapp \luatex_etoksapp:D + \@@_primitive:NN \etokspre \luatex_etokspre:D + \@@_primitive:NN \explicithyphenpenalty \luatex_explicithyphenpenalty:D + \@@_primitive:NN \expanded \luatex_expanded:D + \@@_primitive:NN \firstvalidlanguage \luatex_firstvalidlanguage:D + \@@_primitive:NN \fontid \luatex_fontid:D + \@@_primitive:NN \formatname \luatex_formatname:D + \@@_primitive:NN \hjcode \luatex_hjcode:D + \@@_primitive:NN \hpack \luatex_hpack:D + \@@_primitive:NN \hyphenationbounds \luatex_hyphenationbounds:D + \@@_primitive:NN \hyphenationmin \luatex_hyphenationmin:D + \@@_primitive:NN \hyphenpenaltymode \luatex_hyphenpenaltymode:D + \@@_primitive:NN \gleaders \luatex_gleaders:D + \@@_primitive:NN \initcatcodetable \luatex_initcatcodetable:D + \@@_primitive:NN \lastnamedcs \luatex_lastnamedcs:D + \@@_primitive:NN \latelua \luatex_latelua:D + \@@_primitive:NN \letcharcode \luatex_letcharcode:D + \@@_primitive:NN \luaescapestring \luatex_luaescapestring:D + \@@_primitive:NN \luafunction \luatex_luafunction:D + \@@_primitive:NN \luatexbanner \luatex_luatexbanner:D + \@@_primitive:NN \luatexdatestamp \luatex_luatexdatestamp:D + \@@_primitive:NN \luatexrevision \luatex_luatexrevision:D + \@@_primitive:NN \luatexversion \luatex_luatexversion:D + \@@_primitive:NN \mathdisplayskipmode \luatex_mathdisplayskipmode:D + \@@_primitive:NN \matheqnogapstep \luatex_matheqnogapstep:D + \@@_primitive:NN \mathnolimitsmode \luatex_mathnolimitsmode:D + \@@_primitive:NN \mathoption \luatex_mathoption:D + \@@_primitive:NN \mathrulesfam \luatex_mathrulesfam:D + \@@_primitive:NN \mathscriptsmode \luatex_mathscriptsmode:D + \@@_primitive:NN \mathstyle \luatex_mathstyle:D + \@@_primitive:NN \mathsurroundmode \luatex_mathsurroundmode:D + \@@_primitive:NN \mathsurroundskip \luatex_mathsurroundskip:D + \@@_primitive:NN \nohrule \luatex_nohrule:D + \@@_primitive:NN \nokerns \luatex_nokerns:D + \@@_primitive:NN \noligs \luatex_noligs:D + \@@_primitive:NN \nospaces \luatex_nospaces:D + \@@_primitive:NN \novrule \luatex_novrule:D + \@@_primitive:NN \outputbox \luatex_outputbox:D + \@@_primitive:NN \pagebottomoffset \luatex_pagebottomoffset:D + \@@_primitive:NN \pageleftoffset \luatex_pageleftoffset:D + \@@_primitive:NN \pagerightoffset \luatex_pagerightoffset:D + \@@_primitive:NN \pagetopoffset \luatex_pagetopoffset:D + \@@_primitive:NN \pdfextension \luatex_pdfextension:D + \@@_primitive:NN \pdffeedback \luatex_pdffeedback:D + \@@_primitive:NN \pdfvariable \luatex_pdfvariable:D + \@@_primitive:NN \postexhyphenchar \luatex_postexhyphenchar:D + \@@_primitive:NN \posthyphenchar \luatex_posthyphenchar:D + \@@_primitive:NN \predisplaygapfactor \luatex_predisplaygapfactor:D + \@@_primitive:NN \preexhyphenchar \luatex_preexhyphenchar:D + \@@_primitive:NN \prehyphenchar \luatex_prehyphenchar:D + \@@_primitive:NN \savecatcodetable \luatex_savecatcodetable:D + \@@_primitive:NN \scantextokens \luatex_scantextokens:D + \@@_primitive:NN \setfontid \luatex_setfontid:D + \@@_primitive:NN \shapemode \luatex_shapemode:D + \@@_primitive:NN \suppressifcsnameerror \luatex_suppressifcsnameerror:D + \@@_primitive:NN \suppresslongerror \luatex_suppresslongerror:D + \@@_primitive:NN \suppressmathparerror \luatex_suppressmathparerror:D + \@@_primitive:NN \suppressoutererror \luatex_suppressoutererror:D + \@@_primitive:NN \toksapp \luatex_toksapp:D + \@@_primitive:NN \tokspre \luatex_tokspre:D + \@@_primitive:NN \tpack \luatex_tpack:D + \@@_primitive:NN \vpack \luatex_vpack:D % \end{macrocode} % Slightly more awkward are the directional primitives in \LuaTeX{}. These % come from Omega/Aleph, but we do not support those engines and % so it seems most sensible to treat them as \LuaTeX{} primitives for prefix % purposes. One here is \enquote{new} but fits into the general set. % \begin{macrocode} - \__kernel_primitive:NN \bodydir \luatex_bodydir:D - \__kernel_primitive:NN \boxdir \luatex_boxdir:D - \__kernel_primitive:NN \leftghost \luatex_leftghost:D - \__kernel_primitive:NN \linedir \luatex_linedir:D - \__kernel_primitive:NN \localbrokenpenalty \luatex_localbrokenpenalty:D - \__kernel_primitive:NN \localinterlinepenalty \luatex_localinterlinepenalty:D - \__kernel_primitive:NN \localleftbox \luatex_localleftbox:D - \__kernel_primitive:NN \localrightbox \luatex_localrightbox:D - \__kernel_primitive:NN \mathdir \luatex_mathdir:D - \__kernel_primitive:NN \pagedir \luatex_pagedir:D - \__kernel_primitive:NN \pardir \luatex_pardir:D - \__kernel_primitive:NN \rightghost \luatex_rightghost:D - \__kernel_primitive:NN \textdir \luatex_textdir:D + \@@_primitive:NN \bodydir \luatex_bodydir:D + \@@_primitive:NN \boxdir \luatex_boxdir:D + \@@_primitive:NN \leftghost \luatex_leftghost:D + \@@_primitive:NN \linedir \luatex_linedir:D + \@@_primitive:NN \localbrokenpenalty \luatex_localbrokenpenalty:D + \@@_primitive:NN \localinterlinepenalty \luatex_localinterlinepenalty:D + \@@_primitive:NN \localleftbox \luatex_localleftbox:D + \@@_primitive:NN \localrightbox \luatex_localrightbox:D + \@@_primitive:NN \mathdir \luatex_mathdir:D + \@@_primitive:NN \pagedir \luatex_pagedir:D + \@@_primitive:NN \pardir \luatex_pardir:D + \@@_primitive:NN \rightghost \luatex_rightghost:D + \@@_primitive:NN \textdir \luatex_textdir:D % \end{macrocode} % Primitives from \pdfTeX{} that \LuaTeX{} renames. % \begin{macrocode} - \__kernel_primitive:NN \adjustspacing \pdftex_adjustspacing:D - \__kernel_primitive:NN \copyfont \pdftex_copyfont:D - \__kernel_primitive:NN \draftmode \pdftex_draftmode:D - \__kernel_primitive:NN \expandglyphsinfont \pdftex_fontexpand:D - \__kernel_primitive:NN \ifabsdim \pdftex_ifabsdim:D - \__kernel_primitive:NN \ifabsnum \pdftex_ifabsnum:D - \__kernel_primitive:NN \ignoreligaturesinfont \pdftex_ignoreligaturesinfont:D - \__kernel_primitive:NN \insertht \pdftex_insertht:D - \__kernel_primitive:NN \lastsavedboxresourceindex \pdftex_pdflastxform:D - \__kernel_primitive:NN \lastsavedimageresourceindex \pdftex_pdflastximage:D - \__kernel_primitive:NN \lastsavedimageresourcepages \pdftex_pdflastximagepages:D - \__kernel_primitive:NN \lastxpos \pdftex_lastxpos:D - \__kernel_primitive:NN \lastypos \pdftex_lastypos:D - \__kernel_primitive:NN \normaldeviate \pdftex_normaldeviate:D - \__kernel_primitive:NN \outputmode \pdftex_pdfoutput:D - \__kernel_primitive:NN \pageheight \pdftex_pageheight:D - \__kernel_primitive:NN \pagewidth \pdftex_pagewith:D - \__kernel_primitive:NN \protrudechars \pdftex_protrudechars:D - \__kernel_primitive:NN \pxdimen \pdftex_pxdimen:D - \__kernel_primitive:NN \randomseed \pdftex_randomseed:D - \__kernel_primitive:NN \useboxresource \pdftex_pdfrefxform:D - \__kernel_primitive:NN \useimageresource \pdftex_pdfrefximage:D - \__kernel_primitive:NN \savepos \pdftex_savepos:D - \__kernel_primitive:NN \saveboxresource \pdftex_pdfxform:D - \__kernel_primitive:NN \saveimageresource \pdftex_pdfximage:D - \__kernel_primitive:NN \setrandomseed \pdftex_setrandomseed:D - \__kernel_primitive:NN \tracingfonts \pdftex_tracingfonts:D - \__kernel_primitive:NN \uniformdeviate \pdftex_uniformdeviate:D + \@@_primitive:NN \adjustspacing \pdftex_adjustspacing:D + \@@_primitive:NN \copyfont \pdftex_copyfont:D + \@@_primitive:NN \draftmode \pdftex_draftmode:D + \@@_primitive:NN \expandglyphsinfont \pdftex_fontexpand:D + \@@_primitive:NN \ifabsdim \pdftex_ifabsdim:D + \@@_primitive:NN \ifabsnum \pdftex_ifabsnum:D + \@@_primitive:NN \ignoreligaturesinfont \pdftex_ignoreligaturesinfont:D + \@@_primitive:NN \insertht \pdftex_insertht:D + \@@_primitive:NN \lastsavedboxresourceindex \pdftex_pdflastxform:D + \@@_primitive:NN \lastsavedimageresourceindex \pdftex_pdflastximage:D + \@@_primitive:NN \lastsavedimageresourcepages \pdftex_pdflastximagepages:D + \@@_primitive:NN \lastxpos \pdftex_lastxpos:D + \@@_primitive:NN \lastypos \pdftex_lastypos:D + \@@_primitive:NN \normaldeviate \pdftex_normaldeviate:D + \@@_primitive:NN \outputmode \pdftex_pdfoutput:D + \@@_primitive:NN \pageheight \pdftex_pageheight:D + \@@_primitive:NN \pagewidth \pdftex_pagewith:D + \@@_primitive:NN \protrudechars \pdftex_protrudechars:D + \@@_primitive:NN \pxdimen \pdftex_pxdimen:D + \@@_primitive:NN \randomseed \pdftex_randomseed:D + \@@_primitive:NN \useboxresource \pdftex_pdfrefxform:D + \@@_primitive:NN \useimageresource \pdftex_pdfrefximage:D + \@@_primitive:NN \savepos \pdftex_savepos:D + \@@_primitive:NN \saveboxresource \pdftex_pdfxform:D + \@@_primitive:NN \saveimageresource \pdftex_pdfximage:D + \@@_primitive:NN \setrandomseed \pdftex_setrandomseed:D + \@@_primitive:NN \tracingfonts \pdftex_tracingfonts:D + \@@_primitive:NN \uniformdeviate \pdftex_uniformdeviate:D % \end{macrocode} % The set of Unicode math primitives were introduced by \XeTeX{} and \LuaTeX{} % in a somewhat complex fashion: a few first as |\XeTeX...| which were then @@ -911,199 +912,199 @@ % and drop |\U(math)| from the names. Where there is a related \TeX{}90 % primitive or where it really seems required we keep the |math| part of the name. % \begin{macrocode} - \__kernel_primitive:NN \Uchar \utex_char:D - \__kernel_primitive:NN \Ucharcat \utex_charcat:D - \__kernel_primitive:NN \Udelcode \utex_delcode:D - \__kernel_primitive:NN \Udelcodenum \utex_delcodenum:D - \__kernel_primitive:NN \Udelimiter \utex_delimiter:D - \__kernel_primitive:NN \Udelimiterover \utex_delimiterover:D - \__kernel_primitive:NN \Udelimiterunder \utex_delimiterunder:D - \__kernel_primitive:NN \Uhextensible \utex_hextensible:D - \__kernel_primitive:NN \Umathaccent \utex_mathaccent:D - \__kernel_primitive:NN \Umathaxis \utex_mathaxis:D - \__kernel_primitive:NN \Umathbinbinspacing \utex_binbinspacing:D - \__kernel_primitive:NN \Umathbinclosespacing \utex_binclosespacing:D - \__kernel_primitive:NN \Umathbininnerspacing \utex_bininnerspacing:D - \__kernel_primitive:NN \Umathbinopenspacing \utex_binopenspacing:D - \__kernel_primitive:NN \Umathbinopspacing \utex_binopspacing:D - \__kernel_primitive:NN \Umathbinordspacing \utex_binordspacing:D - \__kernel_primitive:NN \Umathbinpunctspacing \utex_binpunctspacing:D - \__kernel_primitive:NN \Umathbinrelspacing \utex_binrelspacing:D - \__kernel_primitive:NN \Umathchar \utex_mathchar:D - \__kernel_primitive:NN \Umathcharclass \utex_mathcharclass:D - \__kernel_primitive:NN \Umathchardef \utex_mathchardef:D - \__kernel_primitive:NN \Umathcharfam \utex_mathcharfam:D - \__kernel_primitive:NN \Umathcharnum \utex_mathcharnum:D - \__kernel_primitive:NN \Umathcharnumdef \utex_mathcharnumdef:D - \__kernel_primitive:NN \Umathcharslot \utex_mathcharslot:D - \__kernel_primitive:NN \Umathclosebinspacing \utex_closebinspacing:D - \__kernel_primitive:NN \Umathcloseclosespacing \utex_closeclosespacing:D - \__kernel_primitive:NN \Umathcloseinnerspacing \utex_closeinnerspacing:D - \__kernel_primitive:NN \Umathcloseopenspacing \utex_closeopenspacing:D - \__kernel_primitive:NN \Umathcloseopspacing \utex_closeopspacing:D - \__kernel_primitive:NN \Umathcloseordspacing \utex_closeordspacing:D - \__kernel_primitive:NN \Umathclosepunctspacing \utex_closepunctspacing:D - \__kernel_primitive:NN \Umathcloserelspacing \utex_closerelspacing:D - \__kernel_primitive:NN \Umathcode \utex_mathcode:D - \__kernel_primitive:NN \Umathcodenum \utex_mathcodenum:D - \__kernel_primitive:NN \Umathconnectoroverlapmin \utex_connectoroverlapmin:D - \__kernel_primitive:NN \Umathfractiondelsize \utex_fractiondelsize:D - \__kernel_primitive:NN \Umathfractiondenomdown \utex_fractiondenomdown:D - \__kernel_primitive:NN \Umathfractiondenomvgap \utex_fractiondenomvgap:D - \__kernel_primitive:NN \Umathfractionnumup \utex_fractionnumup:D - \__kernel_primitive:NN \Umathfractionnumvgap \utex_fractionnumvgap:D - \__kernel_primitive:NN \Umathfractionrule \utex_fractionrule:D - \__kernel_primitive:NN \Umathinnerbinspacing \utex_innerbinspacing:D - \__kernel_primitive:NN \Umathinnerclosespacing \utex_innerclosespacing:D - \__kernel_primitive:NN \Umathinnerinnerspacing \utex_innerinnerspacing:D - \__kernel_primitive:NN \Umathinneropenspacing \utex_inneropenspacing:D - \__kernel_primitive:NN \Umathinneropspacing \utex_inneropspacing:D - \__kernel_primitive:NN \Umathinnerordspacing \utex_innerordspacing:D - \__kernel_primitive:NN \Umathinnerpunctspacing \utex_innerpunctspacing:D - \__kernel_primitive:NN \Umathinnerrelspacing \utex_innerrelspacing:D - \__kernel_primitive:NN \Umathlimitabovebgap \utex_limitabovebgap:D - \__kernel_primitive:NN \Umathlimitabovekern \utex_limitabovekern:D - \__kernel_primitive:NN \Umathlimitabovevgap \utex_limitabovevgap:D - \__kernel_primitive:NN \Umathlimitbelowbgap \utex_limitbelowbgap:D - \__kernel_primitive:NN \Umathlimitbelowkern \utex_limitbelowkern:D - \__kernel_primitive:NN \Umathlimitbelowvgap \utex_limitbelowvgap:D - \__kernel_primitive:NN \Umathnolimitsubfactor \utex_nolimitsubfactor:D - \__kernel_primitive:NN \Umathnolimitsupfactor \utex_nolimitsupfactor:D - \__kernel_primitive:NN \Umathopbinspacing \utex_opbinspacing:D - \__kernel_primitive:NN \Umathopclosespacing \utex_opclosespacing:D - \__kernel_primitive:NN \Umathopenbinspacing \utex_openbinspacing:D - \__kernel_primitive:NN \Umathopenclosespacing \utex_openclosespacing:D - \__kernel_primitive:NN \Umathopeninnerspacing \utex_openinnerspacing:D - \__kernel_primitive:NN \Umathopenopenspacing \utex_openopenspacing:D - \__kernel_primitive:NN \Umathopenopspacing \utex_openopspacing:D - \__kernel_primitive:NN \Umathopenordspacing \utex_openordspacing:D - \__kernel_primitive:NN \Umathopenpunctspacing \utex_openpunctspacing:D - \__kernel_primitive:NN \Umathopenrelspacing \utex_openrelspacing:D - \__kernel_primitive:NN \Umathoperatorsize \utex_operatorsize:D - \__kernel_primitive:NN \Umathopinnerspacing \utex_opinnerspacing:D - \__kernel_primitive:NN \Umathopopenspacing \utex_opopenspacing:D - \__kernel_primitive:NN \Umathopopspacing \utex_opopspacing:D - \__kernel_primitive:NN \Umathopordspacing \utex_opordspacing:D - \__kernel_primitive:NN \Umathoppunctspacing \utex_oppunctspacing:D - \__kernel_primitive:NN \Umathoprelspacing \utex_oprelspacing:D - \__kernel_primitive:NN \Umathordbinspacing \utex_ordbinspacing:D - \__kernel_primitive:NN \Umathordclosespacing \utex_ordclosespacing:D - \__kernel_primitive:NN \Umathordinnerspacing \utex_ordinnerspacing:D - \__kernel_primitive:NN \Umathordopenspacing \utex_ordopenspacing:D - \__kernel_primitive:NN \Umathordopspacing \utex_ordopspacing:D - \__kernel_primitive:NN \Umathordordspacing \utex_ordordspacing:D - \__kernel_primitive:NN \Umathordpunctspacing \utex_ordpunctspacing:D - \__kernel_primitive:NN \Umathordrelspacing \utex_ordrelspacing:D - \__kernel_primitive:NN \Umathoverbarkern \utex_overbarkern:D - \__kernel_primitive:NN \Umathoverbarrule \utex_overbarrule:D - \__kernel_primitive:NN \Umathoverbarvgap \utex_overbarvgap:D - \__kernel_primitive:NN \Umathoverdelimiterbgap \utex_overdelimiterbgap:D - \__kernel_primitive:NN \Umathoverdelimitervgap \utex_overdelimitervgap:D - \__kernel_primitive:NN \Umathpunctbinspacing \utex_punctbinspacing:D - \__kernel_primitive:NN \Umathpunctclosespacing \utex_punctclosespacing:D - \__kernel_primitive:NN \Umathpunctinnerspacing \utex_punctinnerspacing:D - \__kernel_primitive:NN \Umathpunctopenspacing \utex_punctopenspacing:D - \__kernel_primitive:NN \Umathpunctopspacing \utex_punctopspacing:D - \__kernel_primitive:NN \Umathpunctordspacing \utex_punctordspacing:D - \__kernel_primitive:NN \Umathpunctpunctspacing \utex_punctpunctspacing:D - \__kernel_primitive:NN \Umathpunctrelspacing \utex_punctrelspacing:D - \__kernel_primitive:NN \Umathquad \utex_quad:D - \__kernel_primitive:NN \Umathradicaldegreeafter \utex_radicaldegreeafter:D - \__kernel_primitive:NN \Umathradicaldegreebefore \utex_radicaldegreebefore:D - \__kernel_primitive:NN \Umathradicaldegreeraise \utex_radicaldegreeraise:D - \__kernel_primitive:NN \Umathradicalkern \utex_radicalkern:D - \__kernel_primitive:NN \Umathradicalrule \utex_radicalrule:D - \__kernel_primitive:NN \Umathradicalvgap \utex_radicalvgap:D - \__kernel_primitive:NN \Umathrelbinspacing \utex_relbinspacing:D - \__kernel_primitive:NN \Umathrelclosespacing \utex_relclosespacing:D - \__kernel_primitive:NN \Umathrelinnerspacing \utex_relinnerspacing:D - \__kernel_primitive:NN \Umathrelopenspacing \utex_relopenspacing:D - \__kernel_primitive:NN \Umathrelopspacing \utex_relopspacing:D - \__kernel_primitive:NN \Umathrelordspacing \utex_relordspacing:D - \__kernel_primitive:NN \Umathrelpunctspacing \utex_relpunctspacing:D - \__kernel_primitive:NN \Umathrelrelspacing \utex_relrelspacing:D - \__kernel_primitive:NN \Umathskewedfractionhgap \utex_skewedfractionhgap:D - \__kernel_primitive:NN \Umathskewedfractionvgap \utex_skewedfractionvgap:D - \__kernel_primitive:NN \Umathspaceafterscript \utex_spaceafterscript:D - \__kernel_primitive:NN \Umathstackdenomdown \utex_stackdenomdown:D - \__kernel_primitive:NN \Umathstacknumup \utex_stacknumup:D - \__kernel_primitive:NN \Umathstackvgap \utex_stackvgap:D - \__kernel_primitive:NN \Umathsubshiftdown \utex_subshiftdown:D - \__kernel_primitive:NN \Umathsubshiftdrop \utex_subshiftdrop:D - \__kernel_primitive:NN \Umathsubsupshiftdown \utex_subsupshiftdown:D - \__kernel_primitive:NN \Umathsubsupvgap \utex_subsupvgap:D - \__kernel_primitive:NN \Umathsubtopmax \utex_subtopmax:D - \__kernel_primitive:NN \Umathsupbottommin \utex_supbottommin:D - \__kernel_primitive:NN \Umathsupshiftdrop \utex_supshiftdrop:D - \__kernel_primitive:NN \Umathsupshiftup \utex_supshiftup:D - \__kernel_primitive:NN \Umathsupsubbottommax \utex_supsubbottommax:D - \__kernel_primitive:NN \Umathunderbarkern \utex_underbarkern:D - \__kernel_primitive:NN \Umathunderbarrule \utex_underbarrule:D - \__kernel_primitive:NN \Umathunderbarvgap \utex_underbarvgap:D - \__kernel_primitive:NN \Umathunderdelimiterbgap \utex_underdelimiterbgap:D - \__kernel_primitive:NN \Umathunderdelimitervgap \utex_underdelimitervgap:D - \__kernel_primitive:NN \Uoverdelimiter \utex_overdelimiter:D - \__kernel_primitive:NN \Uradical \utex_radical:D - \__kernel_primitive:NN \Uroot \utex_root:D - \__kernel_primitive:NN \Uskewed \utex_skewed:D - \__kernel_primitive:NN \Uskewedwithdelims \utex_skewedwithdelims:D - \__kernel_primitive:NN \Ustack \utex_stack:D - \__kernel_primitive:NN \Ustartdisplaymath \utex_startdisplaymath:D - \__kernel_primitive:NN \Ustartmath \utex_startmath:D - \__kernel_primitive:NN \Ustopdisplaymath \utex_stopdisplaymath:D - \__kernel_primitive:NN \Ustopmath \utex_stopmath:D - \__kernel_primitive:NN \Usubscript \utex_subscript:D - \__kernel_primitive:NN \Usuperscript \utex_superscript:D - \__kernel_primitive:NN \Uunderdelimiter \utex_underdelimiter:D - \__kernel_primitive:NN \Uvextensible \utex_vextensible:D + \@@_primitive:NN \Uchar \utex_char:D + \@@_primitive:NN \Ucharcat \utex_charcat:D + \@@_primitive:NN \Udelcode \utex_delcode:D + \@@_primitive:NN \Udelcodenum \utex_delcodenum:D + \@@_primitive:NN \Udelimiter \utex_delimiter:D + \@@_primitive:NN \Udelimiterover \utex_delimiterover:D + \@@_primitive:NN \Udelimiterunder \utex_delimiterunder:D + \@@_primitive:NN \Uhextensible \utex_hextensible:D + \@@_primitive:NN \Umathaccent \utex_mathaccent:D + \@@_primitive:NN \Umathaxis \utex_mathaxis:D + \@@_primitive:NN \Umathbinbinspacing \utex_binbinspacing:D + \@@_primitive:NN \Umathbinclosespacing \utex_binclosespacing:D + \@@_primitive:NN \Umathbininnerspacing \utex_bininnerspacing:D + \@@_primitive:NN \Umathbinopenspacing \utex_binopenspacing:D + \@@_primitive:NN \Umathbinopspacing \utex_binopspacing:D + \@@_primitive:NN \Umathbinordspacing \utex_binordspacing:D + \@@_primitive:NN \Umathbinpunctspacing \utex_binpunctspacing:D + \@@_primitive:NN \Umathbinrelspacing \utex_binrelspacing:D + \@@_primitive:NN \Umathchar \utex_mathchar:D + \@@_primitive:NN \Umathcharclass \utex_mathcharclass:D + \@@_primitive:NN \Umathchardef \utex_mathchardef:D + \@@_primitive:NN \Umathcharfam \utex_mathcharfam:D + \@@_primitive:NN \Umathcharnum \utex_mathcharnum:D + \@@_primitive:NN \Umathcharnumdef \utex_mathcharnumdef:D + \@@_primitive:NN \Umathcharslot \utex_mathcharslot:D + \@@_primitive:NN \Umathclosebinspacing \utex_closebinspacing:D + \@@_primitive:NN \Umathcloseclosespacing \utex_closeclosespacing:D + \@@_primitive:NN \Umathcloseinnerspacing \utex_closeinnerspacing:D + \@@_primitive:NN \Umathcloseopenspacing \utex_closeopenspacing:D + \@@_primitive:NN \Umathcloseopspacing \utex_closeopspacing:D + \@@_primitive:NN \Umathcloseordspacing \utex_closeordspacing:D + \@@_primitive:NN \Umathclosepunctspacing \utex_closepunctspacing:D + \@@_primitive:NN \Umathcloserelspacing \utex_closerelspacing:D + \@@_primitive:NN \Umathcode \utex_mathcode:D + \@@_primitive:NN \Umathcodenum \utex_mathcodenum:D + \@@_primitive:NN \Umathconnectoroverlapmin \utex_connectoroverlapmin:D + \@@_primitive:NN \Umathfractiondelsize \utex_fractiondelsize:D + \@@_primitive:NN \Umathfractiondenomdown \utex_fractiondenomdown:D + \@@_primitive:NN \Umathfractiondenomvgap \utex_fractiondenomvgap:D + \@@_primitive:NN \Umathfractionnumup \utex_fractionnumup:D + \@@_primitive:NN \Umathfractionnumvgap \utex_fractionnumvgap:D + \@@_primitive:NN \Umathfractionrule \utex_fractionrule:D + \@@_primitive:NN \Umathinnerbinspacing \utex_innerbinspacing:D + \@@_primitive:NN \Umathinnerclosespacing \utex_innerclosespacing:D + \@@_primitive:NN \Umathinnerinnerspacing \utex_innerinnerspacing:D + \@@_primitive:NN \Umathinneropenspacing \utex_inneropenspacing:D + \@@_primitive:NN \Umathinneropspacing \utex_inneropspacing:D + \@@_primitive:NN \Umathinnerordspacing \utex_innerordspacing:D + \@@_primitive:NN \Umathinnerpunctspacing \utex_innerpunctspacing:D + \@@_primitive:NN \Umathinnerrelspacing \utex_innerrelspacing:D + \@@_primitive:NN \Umathlimitabovebgap \utex_limitabovebgap:D + \@@_primitive:NN \Umathlimitabovekern \utex_limitabovekern:D + \@@_primitive:NN \Umathlimitabovevgap \utex_limitabovevgap:D + \@@_primitive:NN \Umathlimitbelowbgap \utex_limitbelowbgap:D + \@@_primitive:NN \Umathlimitbelowkern \utex_limitbelowkern:D + \@@_primitive:NN \Umathlimitbelowvgap \utex_limitbelowvgap:D + \@@_primitive:NN \Umathnolimitsubfactor \utex_nolimitsubfactor:D + \@@_primitive:NN \Umathnolimitsupfactor \utex_nolimitsupfactor:D + \@@_primitive:NN \Umathopbinspacing \utex_opbinspacing:D + \@@_primitive:NN \Umathopclosespacing \utex_opclosespacing:D + \@@_primitive:NN \Umathopenbinspacing \utex_openbinspacing:D + \@@_primitive:NN \Umathopenclosespacing \utex_openclosespacing:D + \@@_primitive:NN \Umathopeninnerspacing \utex_openinnerspacing:D + \@@_primitive:NN \Umathopenopenspacing \utex_openopenspacing:D + \@@_primitive:NN \Umathopenopspacing \utex_openopspacing:D + \@@_primitive:NN \Umathopenordspacing \utex_openordspacing:D + \@@_primitive:NN \Umathopenpunctspacing \utex_openpunctspacing:D + \@@_primitive:NN \Umathopenrelspacing \utex_openrelspacing:D + \@@_primitive:NN \Umathoperatorsize \utex_operatorsize:D + \@@_primitive:NN \Umathopinnerspacing \utex_opinnerspacing:D + \@@_primitive:NN \Umathopopenspacing \utex_opopenspacing:D + \@@_primitive:NN \Umathopopspacing \utex_opopspacing:D + \@@_primitive:NN \Umathopordspacing \utex_opordspacing:D + \@@_primitive:NN \Umathoppunctspacing \utex_oppunctspacing:D + \@@_primitive:NN \Umathoprelspacing \utex_oprelspacing:D + \@@_primitive:NN \Umathordbinspacing \utex_ordbinspacing:D + \@@_primitive:NN \Umathordclosespacing \utex_ordclosespacing:D + \@@_primitive:NN \Umathordinnerspacing \utex_ordinnerspacing:D + \@@_primitive:NN \Umathordopenspacing \utex_ordopenspacing:D + \@@_primitive:NN \Umathordopspacing \utex_ordopspacing:D + \@@_primitive:NN \Umathordordspacing \utex_ordordspacing:D + \@@_primitive:NN \Umathordpunctspacing \utex_ordpunctspacing:D + \@@_primitive:NN \Umathordrelspacing \utex_ordrelspacing:D + \@@_primitive:NN \Umathoverbarkern \utex_overbarkern:D + \@@_primitive:NN \Umathoverbarrule \utex_overbarrule:D + \@@_primitive:NN \Umathoverbarvgap \utex_overbarvgap:D + \@@_primitive:NN \Umathoverdelimiterbgap \utex_overdelimiterbgap:D + \@@_primitive:NN \Umathoverdelimitervgap \utex_overdelimitervgap:D + \@@_primitive:NN \Umathpunctbinspacing \utex_punctbinspacing:D + \@@_primitive:NN \Umathpunctclosespacing \utex_punctclosespacing:D + \@@_primitive:NN \Umathpunctinnerspacing \utex_punctinnerspacing:D + \@@_primitive:NN \Umathpunctopenspacing \utex_punctopenspacing:D + \@@_primitive:NN \Umathpunctopspacing \utex_punctopspacing:D + \@@_primitive:NN \Umathpunctordspacing \utex_punctordspacing:D + \@@_primitive:NN \Umathpunctpunctspacing \utex_punctpunctspacing:D + \@@_primitive:NN \Umathpunctrelspacing \utex_punctrelspacing:D + \@@_primitive:NN \Umathquad \utex_quad:D + \@@_primitive:NN \Umathradicaldegreeafter \utex_radicaldegreeafter:D + \@@_primitive:NN \Umathradicaldegreebefore \utex_radicaldegreebefore:D + \@@_primitive:NN \Umathradicaldegreeraise \utex_radicaldegreeraise:D + \@@_primitive:NN \Umathradicalkern \utex_radicalkern:D + \@@_primitive:NN \Umathradicalrule \utex_radicalrule:D + \@@_primitive:NN \Umathradicalvgap \utex_radicalvgap:D + \@@_primitive:NN \Umathrelbinspacing \utex_relbinspacing:D + \@@_primitive:NN \Umathrelclosespacing \utex_relclosespacing:D + \@@_primitive:NN \Umathrelinnerspacing \utex_relinnerspacing:D + \@@_primitive:NN \Umathrelopenspacing \utex_relopenspacing:D + \@@_primitive:NN \Umathrelopspacing \utex_relopspacing:D + \@@_primitive:NN \Umathrelordspacing \utex_relordspacing:D + \@@_primitive:NN \Umathrelpunctspacing \utex_relpunctspacing:D + \@@_primitive:NN \Umathrelrelspacing \utex_relrelspacing:D + \@@_primitive:NN \Umathskewedfractionhgap \utex_skewedfractionhgap:D + \@@_primitive:NN \Umathskewedfractionvgap \utex_skewedfractionvgap:D + \@@_primitive:NN \Umathspaceafterscript \utex_spaceafterscript:D + \@@_primitive:NN \Umathstackdenomdown \utex_stackdenomdown:D + \@@_primitive:NN \Umathstacknumup \utex_stacknumup:D + \@@_primitive:NN \Umathstackvgap \utex_stackvgap:D + \@@_primitive:NN \Umathsubshiftdown \utex_subshiftdown:D + \@@_primitive:NN \Umathsubshiftdrop \utex_subshiftdrop:D + \@@_primitive:NN \Umathsubsupshiftdown \utex_subsupshiftdown:D + \@@_primitive:NN \Umathsubsupvgap \utex_subsupvgap:D + \@@_primitive:NN \Umathsubtopmax \utex_subtopmax:D + \@@_primitive:NN \Umathsupbottommin \utex_supbottommin:D + \@@_primitive:NN \Umathsupshiftdrop \utex_supshiftdrop:D + \@@_primitive:NN \Umathsupshiftup \utex_supshiftup:D + \@@_primitive:NN \Umathsupsubbottommax \utex_supsubbottommax:D + \@@_primitive:NN \Umathunderbarkern \utex_underbarkern:D + \@@_primitive:NN \Umathunderbarrule \utex_underbarrule:D + \@@_primitive:NN \Umathunderbarvgap \utex_underbarvgap:D + \@@_primitive:NN \Umathunderdelimiterbgap \utex_underdelimiterbgap:D + \@@_primitive:NN \Umathunderdelimitervgap \utex_underdelimitervgap:D + \@@_primitive:NN \Uoverdelimiter \utex_overdelimiter:D + \@@_primitive:NN \Uradical \utex_radical:D + \@@_primitive:NN \Uroot \utex_root:D + \@@_primitive:NN \Uskewed \utex_skewed:D + \@@_primitive:NN \Uskewedwithdelims \utex_skewedwithdelims:D + \@@_primitive:NN \Ustack \utex_stack:D + \@@_primitive:NN \Ustartdisplaymath \utex_startdisplaymath:D + \@@_primitive:NN \Ustartmath \utex_startmath:D + \@@_primitive:NN \Ustopdisplaymath \utex_stopdisplaymath:D + \@@_primitive:NN \Ustopmath \utex_stopmath:D + \@@_primitive:NN \Usubscript \utex_subscript:D + \@@_primitive:NN \Usuperscript \utex_superscript:D + \@@_primitive:NN \Uunderdelimiter \utex_underdelimiter:D + \@@_primitive:NN \Uvextensible \utex_vextensible:D % \end{macrocode} % Primitives from p\TeX{}. % \begin{macrocode} - \__kernel_primitive:NN \autospacing \ptex_autospacing:D - \__kernel_primitive:NN \autoxspacing \ptex_autoxspacing:D - \__kernel_primitive:NN \dtou \ptex_dtou:D - \__kernel_primitive:NN \euc \ptex_euc:D - \__kernel_primitive:NN \ifdbox \ptex_ifdbox:D - \__kernel_primitive:NN \ifddir \ptex_ifddir:D - \__kernel_primitive:NN \ifmdir \ptex_ifmdir:D - \__kernel_primitive:NN \iftbox \ptex_iftbox:D - \__kernel_primitive:NN \iftdir \ptex_iftdir:D - \__kernel_primitive:NN \ifybox \ptex_ifybox:D - \__kernel_primitive:NN \ifydir \ptex_ifydir:D - \__kernel_primitive:NN \inhibitglue \ptex_inhibitglue:D - \__kernel_primitive:NN \inhibitxspcode \ptex_inhibitxspcode:D - \__kernel_primitive:NN \jcharwidowpenalty \ptex_jcharwidowpenalty:D - \__kernel_primitive:NN \jfam \ptex_jfam:D - \__kernel_primitive:NN \jfont \ptex_jfont:D - \__kernel_primitive:NN \jis \ptex_jis:D - \__kernel_primitive:NN \kanjiskip \ptex_kanjiskip:D - \__kernel_primitive:NN \kansuji \ptex_kansuji:D - \__kernel_primitive:NN \kansujichar \ptex_kansujichar:D - \__kernel_primitive:NN \kcatcode \ptex_kcatcode:D - \__kernel_primitive:NN \kuten \ptex_kuten:D - \__kernel_primitive:NN \noautospacing \ptex_noautospacing:D - \__kernel_primitive:NN \noautoxspacing \ptex_noautoxspacing:D - \__kernel_primitive:NN \postbreakpenalty \ptex_postbreakpenalty:D - \__kernel_primitive:NN \prebreakpenalty \ptex_prebreakpenalty:D - \__kernel_primitive:NN \showmode \ptex_showmode:D - \__kernel_primitive:NN \sjis \ptex_sjis:D - \__kernel_primitive:NN \tate \ptex_tate:D - \__kernel_primitive:NN \tbaselineshift \ptex_tbaselineshift:D - \__kernel_primitive:NN \tfont \ptex_tfont:D - \__kernel_primitive:NN \xkanjiskip \ptex_xkanjiskip:D - \__kernel_primitive:NN \xspcode \ptex_xspcode:D - \__kernel_primitive:NN \ybaselineshift \ptex_ybaselineshift:D - \__kernel_primitive:NN \yoko \ptex_yoko:D + \@@_primitive:NN \autospacing \ptex_autospacing:D + \@@_primitive:NN \autoxspacing \ptex_autoxspacing:D + \@@_primitive:NN \dtou \ptex_dtou:D + \@@_primitive:NN \euc \ptex_euc:D + \@@_primitive:NN \ifdbox \ptex_ifdbox:D + \@@_primitive:NN \ifddir \ptex_ifddir:D + \@@_primitive:NN \ifmdir \ptex_ifmdir:D + \@@_primitive:NN \iftbox \ptex_iftbox:D + \@@_primitive:NN \iftdir \ptex_iftdir:D + \@@_primitive:NN \ifybox \ptex_ifybox:D + \@@_primitive:NN \ifydir \ptex_ifydir:D + \@@_primitive:NN \inhibitglue \ptex_inhibitglue:D + \@@_primitive:NN \inhibitxspcode \ptex_inhibitxspcode:D + \@@_primitive:NN \jcharwidowpenalty \ptex_jcharwidowpenalty:D + \@@_primitive:NN \jfam \ptex_jfam:D + \@@_primitive:NN \jfont \ptex_jfont:D + \@@_primitive:NN \jis \ptex_jis:D + \@@_primitive:NN \kanjiskip \ptex_kanjiskip:D + \@@_primitive:NN \kansuji \ptex_kansuji:D + \@@_primitive:NN \kansujichar \ptex_kansujichar:D + \@@_primitive:NN \kcatcode \ptex_kcatcode:D + \@@_primitive:NN \kuten \ptex_kuten:D + \@@_primitive:NN \noautospacing \ptex_noautospacing:D + \@@_primitive:NN \noautoxspacing \ptex_noautoxspacing:D + \@@_primitive:NN \postbreakpenalty \ptex_postbreakpenalty:D + \@@_primitive:NN \prebreakpenalty \ptex_prebreakpenalty:D + \@@_primitive:NN \showmode \ptex_showmode:D + \@@_primitive:NN \sjis \ptex_sjis:D + \@@_primitive:NN \tate \ptex_tate:D + \@@_primitive:NN \tbaselineshift \ptex_tbaselineshift:D + \@@_primitive:NN \tfont \ptex_tfont:D + \@@_primitive:NN \xkanjiskip \ptex_xkanjiskip:D + \@@_primitive:NN \xspcode \ptex_xspcode:D + \@@_primitive:NN \ybaselineshift \ptex_ybaselineshift:D + \@@_primitive:NN \yoko \ptex_yoko:D % \end{macrocode} % Primitives from up\TeX{}. % \begin{macrocode} - \__kernel_primitive:NN \disablecjktoken \uptex_disablecjktoken:D - \__kernel_primitive:NN \enablecjktoken \uptex_enablecjktoken:D - \__kernel_primitive:NN \forcecjktoken \uptex_forcecjktoken:D - \__kernel_primitive:NN \kchar \uptex_kchar:D - \__kernel_primitive:NN \kchardef \uptex_kchardef:D - \__kernel_primitive:NN \kuten \uptex_kuten:D - \__kernel_primitive:NN \ucs \uptex_ucs:D + \@@_primitive:NN \disablecjktoken \uptex_disablecjktoken:D + \@@_primitive:NN \enablecjktoken \uptex_enablecjktoken:D + \@@_primitive:NN \forcecjktoken \uptex_forcecjktoken:D + \@@_primitive:NN \kchar \uptex_kchar:D + \@@_primitive:NN \kchardef \uptex_kchardef:D + \@@_primitive:NN \kuten \uptex_kuten:D + \@@_primitive:NN \ucs \uptex_ucs:D % \end{macrocode} % End of the \enquote{just the names} part of the source. % \begin{macrocode} @@ -1117,23 +1118,23 @@ % \end{macrocode} % % \LaTeXe{} moves a few primitives, so these are sorted out. -% A convenient test for \LaTeXe{} is the \cs{@@end} saved primitive. +% A convenient test for \LaTeXe{} is the \cs{@@@@end} saved primitive. % \begin{macrocode} %<*package> -\etex_ifdefined:D \@@end - \tex_let:D \tex_end:D \@@end +\etex_ifdefined:D \@@@@end + \tex_let:D \tex_end:D \@@@@end \tex_let:D \tex_everydisplay:D \frozen@everydisplay \tex_let:D \tex_everymath:D \frozen@everymath - \tex_let:D \tex_hyphen:D \@@hyph - \tex_let:D \tex_input:D \@@input - \tex_let:D \tex_italiccorrection:D \@@italiccorr - \tex_let:D \tex_underline:D \@@underline + \tex_let:D \tex_hyphen:D \@@@@hyph + \tex_let:D \tex_input:D \@@@@input + \tex_let:D \tex_italiccorrection:D \@@@@italiccorr + \tex_let:D \tex_underline:D \@@@@underline % \end{macrocode} % Some tidying up is needed for \tn[index=tracingfonts]{(pdf)tracingfonts}. Newer \LuaTeX{} has % this simply as \tn{tracingfonts}, but that is overwritten by % the \LaTeXe{} kernel. So any spurious definition has to be removed, then % the real version saved either from the \pdfTeX{} name or from \LuaTeX{}. -% In the latter case, we leave \tn{@@tracingfonts} available: this might +% In the latter case, we leave \tn{@@@@tracingfonts} available: this might % be useful and almost all \LaTeXe{} users will have \pkg{expl3} loaded by % \pkg{fontspec}. (We follow the usual kernel convention that |@@| is used % for saved primitives.) @@ -1143,7 +1144,7 @@ \tex_let:D \pdftex_tracingfonts:D \pdftracingfonts \tex_else:D \etex_ifdefined:D \luatex_directlua:D - \luatex_directlua:D { tex.enableprimitives("@@", {"tracingfonts"}) } + \luatex_directlua:D { tex.enableprimitives("@@@@", {"tracingfonts"}) } \tex_let:D \pdftex_tracingfonts:D \luatextracingfonts \tex_fi:D \tex_fi:D diff --git a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx index 4fe4cb652c9..1fd750dd607 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx @@ -42,7 +42,7 @@ % } % % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index 67af5299b7c..e1b4e52caf2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -280,7 +280,7 @@ % the logical truth of this evaluation. % \end{function} % -% \begin{function}[EXP,pTF]{\bool_if:N, \bool_if:c} +% \begin{function}[EXP,pTF, updated = 2017-07-15]{\bool_if:N, \bool_if:c} % \begin{syntax} % \cs{bool_if_p:N} \meta{boolean} % \cs{bool_if:NTF} \meta{boolean} \Arg{true code} \Arg{false code} @@ -497,7 +497,7 @@ % % Loops using either boolean expressions or stored boolean values. % -% \begin{function}[rEXP]{\bool_do_until:Nn, \bool_do_until:cn} +% \begin{function}[rEXP, updated = 2017-07-15]{\bool_do_until:Nn, \bool_do_until:cn} % \begin{syntax} % \cs{bool_do_until:Nn} \meta{boolean} \Arg{code} % \end{syntax} @@ -508,7 +508,7 @@ % \texttt{true}. % \end{function} % -% \begin{function}[rEXP]{\bool_do_while:Nn, \bool_do_while:cn} +% \begin{function}[rEXP, updated = 2017-07-15]{\bool_do_while:Nn, \bool_do_while:cn} % \begin{syntax} % \cs{bool_do_while:Nn} \meta{boolean} \Arg{code} % \end{syntax} @@ -519,7 +519,7 @@ % \texttt{false}. % \end{function} % -% \begin{function}[rEXP]{\bool_until_do:Nn, \bool_until_do:cn} +% \begin{function}[rEXP, updated = 2017-07-15]{\bool_until_do:Nn, \bool_until_do:cn} % \begin{syntax} % \cs{bool_until_do:Nn} \meta{boolean} \Arg{code} % \end{syntax} @@ -530,7 +530,7 @@ % until the \meta{boolean} is \texttt{true}. % \end{function} % -% \begin{function}[rEXP]{\bool_while_do:Nn, \bool_while_do:cn} +% \begin{function}[rEXP, updated = 2017-07-15]{\bool_while_do:Nn, \bool_while_do:cn} % \begin{syntax} % \cs{bool_while_do:Nn} \meta{boolean} \Arg{code} % \end{syntax} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index b44693bdb13..ea39fcc4b58 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index 5ad64e6a37f..e6332836e3a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index c1e07cca601..e499957216a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 44fb86d338c..6d8a0d0acdd 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 044aba65b3e..9d810aa9872 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -1110,7 +1110,8 @@ % \begin{macro}{\dim_gset:Nn, \dim_gset:cn} % Setting dimensions is easy enough. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \dim_set:Nn } } \cs_new_protected:Npn \dim_set:Nn #1#2 { #1 ~ \@@_eval:w #2 \@@_eval_end: } \cs_new_protected:Npn \dim_gset:Nn { \tex_global:D \dim_set:Nn } @@ -1141,13 +1142,15 @@ % \begin{macro}{\dim_gsub:Nn, \dim_gsub:cn} % Using |by| here deals with the (incorrect) case |\dimen123|. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \dim_add:Nn } } \cs_new_protected:Npn \dim_add:Nn #1#2 { \tex_advance:D #1 by \@@_eval:w #2 \@@_eval_end: } \cs_new_protected:Npn \dim_gadd:Nn { \tex_global:D \dim_add:Nn } \cs_generate_variant:Nn \dim_add:Nn { c } \cs_generate_variant:Nn \dim_gadd:Nn { c } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \dim_sub:Nn } } \cs_new_protected:Npn \dim_sub:Nn #1#2 { \tex_advance:D #1 by - \@@_eval:w #2 \@@_eval_end: } \cs_new_protected:Npn \dim_gsub:Nn { \tex_global:D \dim_sub:Nn } @@ -1172,7 +1175,8 @@ % Functions for $\min$, $\max$, and absolute value with only one evaluation. % The absolute value is evaluated by removing a leading~|-| if present. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \dim_abs:n } } \cs_new:Npn \dim_abs:n #1 { \exp_after:wN \@@_abs:N @@ -1180,7 +1184,11 @@ } \cs_new:Npn \@@_abs:N #1 { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \dim_max:nn } + { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \dim_max:nn } + } \cs_new:Npn \dim_max:nn #1#2 { \dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN @@ -1189,7 +1197,11 @@ > \@@_eval_end: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \dim_min:nn } + { \__debug_chk_expr:nNnN {#2} \@@_eval:w { } \dim_min:nn } + } \cs_new:Npn \dim_min:nn #1#2 { \dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN @@ -1233,7 +1245,12 @@ % \begin{macro}[pTF, EXP]{\dim_compare:nNn} % Simple comparison. % \begin{macrocode} -\__debug_patch_conditional_args:nNNpnn { { (#1) \@@_eval_end: } {#2} { (#3) } } +\__debug_patch_conditional_args:nNNpnn + { + { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \dim_compare:nNn } + { \@@_eval_end: #2 } + { \__debug_chk_expr:nNnN {#3} \@@_eval:w { } \dim_compare:nNn } + } \prg_new_conditional:Npnn \dim_compare:nNn #1#2#3 { p , T , F , TF } { \if_dim:w \@@_eval:w #1 #2 \@@_eval:w #3 \@@_eval_end: @@ -1433,7 +1450,8 @@ % \begin{macro}{\dim_eval:n} % Evaluating a dimension expression expandably. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \dim_eval:n } } \cs_new:Npn \dim_eval:n #1 { \dim_use:N \@@_eval:w #1 \@@_eval_end: } % \end{macrocode} @@ -1460,7 +1478,8 @@ % terminating early and leaving extra tokens lying around. This is % used a lot by low-level manipulations. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \dim_to_decimal:n } } \cs_new:Npn \dim_to_decimal:n #1 { \exp_after:wN @@ -1495,7 +1514,8 @@ % Another hard-coded conversion: this one is necessary to avoid things going % off-scale. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \@@_eval:w { } \dim_to_decimal_in_sp:n } } \cs_new:Npn \dim_to_decimal_in_sp:n #1 { \int_eval:n { \@@_eval:w #1 \@@_eval_end: } } % \end{macrocode} @@ -1645,7 +1665,8 @@ % \begin{macro}{\skip_gset:Nn, \skip_gset:cn} % Much the same as for dimensions. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \etex_glueexpr:D { } \skip_set:Nn } } \cs_new_protected:Npn \skip_set:Nn #1#2 { #1 ~ \etex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gset:Nn { \tex_global:D \skip_set:Nn } @@ -1677,13 +1698,15 @@ % \begin{macro}{\skip_gsub:Nn, \skip_gsub:cn} % Using |by| here deals with the (incorrect) case |\skip123|. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \etex_glueexpr:D { } \skip_add:Nn } } \cs_new_protected:Npn \skip_add:Nn #1#2 { \tex_advance:D #1 by \etex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gadd:Nn { \tex_global:D \skip_add:Nn } \cs_generate_variant:Nn \skip_add:Nn { c } \cs_generate_variant:Nn \skip_gadd:Nn { c } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \etex_glueexpr:D { } \skip_sub:Nn } } \cs_new_protected:Npn \skip_sub:Nn #1#2 { \tex_advance:D #1 by - \etex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gsub:Nn { \tex_global:D \skip_sub:Nn } @@ -1726,7 +1749,13 @@ % \begin{macrocode} \cs_set_protected:Npn \__cs_tmp:w #1 { - \__debug_patch_conditional_args:nNNpnn { { (##1) } } + \__debug_patch_conditional_args:nNNpnn + { + { + \__debug_chk_expr:nNnN + {##1} \etex_glueexpr:D { } \skip_if_finite:n + } + } \prg_new_conditional:Npnn \skip_if_finite:n ##1 { p , T , F , TF } { \exp_after:wN \__skip_if_finite:wwNw @@ -1745,7 +1774,8 @@ % \begin{macro}{\skip_eval:n} % Evaluating a skip expression expandably. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \etex_glueexpr:D { } \skip_eval:n } } \cs_new:Npn \skip_eval:n #1 { \skip_use:N \etex_glueexpr:D #1 \scan_stop: } % \end{macrocode} @@ -1767,11 +1797,13 @@ % Inserting skips. % \begin{macrocode} \cs_new_eq:NN \skip_horizontal:N \tex_hskip:D -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \etex_glueexpr:D { } \skip_horizontal:n } } \cs_new:Npn \skip_horizontal:n #1 { \skip_horizontal:N \etex_glueexpr:D #1 \scan_stop: } \cs_new_eq:NN \skip_vertical:N \tex_vskip:D -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \etex_glueexpr:D { } \skip_vertical:n } } \cs_new:Npn \skip_vertical:n #1 { \skip_vertical:N \etex_glueexpr:D #1 \scan_stop: } \cs_generate_variant:Nn \skip_horizontal:N { c } @@ -1909,7 +1941,14 @@ % \begin{macro}{\muskip_gset:Nn, \muskip_gset:cn} % This should be pretty familiar. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { + {#1} + { + \__debug_chk_expr:nNnN {#2} \etex_muexpr:D + { \etex_mutoglue:D } \muskip_set:Nn + } + } \cs_new_protected:Npn \muskip_set:Nn #1#2 { #1 ~ \etex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gset:Nn { \tex_global:D \muskip_set:Nn } @@ -1947,13 +1986,27 @@ % \begin{macro}{\muskip_gsub:Nn, \muskip_gsub:cn} % Using |by| here deals with the (incorrect) case |\muskip123|. % \begin{macrocode} -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { + {#1} + { + \__debug_chk_expr:nNnN {#2} \etex_muexpr:D + { \etex_mutoglue:D } \muskip_add:Nn + } + } \cs_new_protected:Npn \muskip_add:Nn #1#2 { \tex_advance:D #1 by \etex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gadd:Nn { \tex_global:D \muskip_add:Nn } \cs_generate_variant:Nn \muskip_add:Nn { c } \cs_generate_variant:Nn \muskip_gadd:Nn { c } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { + {#1} + { + \__debug_chk_expr:nNnN {#2} \etex_muexpr:D + { \etex_mutoglue:D } \muskip_sub:Nn + } + } \cs_new_protected:Npn \muskip_sub:Nn #1#2 { \tex_advance:D #1 by - \etex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gsub:Nn { \tex_global:D \muskip_sub:Nn } @@ -1970,7 +2023,13 @@ % \begin{macro}{\muskip_eval:n} % Evaluating a muskip expression expandably. % \begin{macrocode} -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { + { + \__debug_chk_expr:nNnN {#1} \etex_muexpr:D + { \etex_mutoglue:D } \muskip_eval:n + } + } \cs_new:Npn \muskip_eval:n #1 { \muskip_use:N \etex_muexpr:D #1 \scan_stop: } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 2f3bc0afab5..7b4c334f8a1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 2ed04451f7d..6b29004467d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -71,7 +71,7 @@ % % As a string is a subset of the more general token list, it is sometimes unclear % when one should be used over the other. -% Use a string variable for data that isn’t primarily intended for typesetting +% Use a string variable for data that isn't primarily intended for typesetting % and for which a level of protection from unwanted expansion is suitable. % This data type simplifies comparison of variables since there are no concerns % about expansion of their contents. diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index e23a84d4717..9cc690459ff 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 1be06702cb6..18fccde9344 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx index 0b34405e188..4208ba085be 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-build.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 4d9390f0654..4613e18fda0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index fa14dede902..55f5805e538 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -146,6 +146,11 @@ % range ($0$ to $255$) is accepted due to engine limitations. % \end{function} % +% \begin{variable}[added = 2011-09-05]{\c_catcode_other_space_tl} +% Token list containing one character with category code $12$, +% (\enquote{other}), and character code $32$ (space). +% \end{variable} +% % \section{Manipulating and interrogating character tokens} % % \begin{function}[updated = 2015-11-11] @@ -1597,6 +1602,13 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\c_catcode_other_space_tl} +% Create a space with category code $12$: an \enquote{other} space. +% \begin{macrocode} +\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } +% \end{macrocode} +% \end{macro} +% % \subsection{Generic tokens} % % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx index abd41d41c05..3c7709fe63b 100644 --- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx +++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx @@ -23,8 +23,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/07/19] -%<package>\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +%<package>\@ifpackagelater{expl3}{2017/09/18} %<package> {} %<package> {% %<package> \PackageError{l3keys2e}{Support package l3kernel too old} @@ -60,7 +60,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -131,7 +131,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3keys2e}{2017/07/19}{} +\ProvidesExplPackage{l3keys2e}{2017/09/18}{} {LaTeX2e option processing using LaTeX3 keys} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx index 1b0a6063dac..7d0787fefa6 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx @@ -23,8 +23,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/07/19] -%<package>\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +%<package>\@ifpackagelater{expl3}{2017/09/18} %<package> {} %<package> {% %<package> \PackageError{xfp}{Support package l3kernel too old} @@ -62,14 +62,15 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % % \begin{documentation} % % This package provides a \LaTeXe{} document-level interface to the \LaTeX{}3 -% floating point unit (part of \pkg{expl3}). +% floating point unit (part of \pkg{expl3}). It also provides a parallel +% integer expression interface for convenience. % % \begin{function}[EXP]{\fpeval} % The expandable command \cs{fpeval} takes as it's argument a floating @@ -129,7 +130,22 @@ % An example of use could be the following. % \begin{verbatim} % \LaTeX{} can now compute: $ \frac{\sin (3.5)}{2} + 2\cdot 10^{-3} -% = \fpeval{sin 3.5 /2 + 2e-3} $. +% = \fpeval{sin(3.5)/2 + 2e-3} $. +% \end{verbatim} +% +% \begin{function}[EXP]{\inteval} +% The expandable command \cs{inteval} takes as its argument an integer +% expression and produces a result using the normal rules of +% mathematics. The operations recognised are |+|, |-|, |*| and |/| plus +% parentheses. Division occurs with \emph{rounding}, and ties are rounded +% away from zero. As this command is +% expandable it can be used where \TeX{} requires a number and for example +% within a low-level \cs{edef} operation to give a purely numerical result. +% \end{function} +% +% An example of use could be the following. +% \begin{verbatim} +% \LaTeX{} can now compute: The sum of the numbers is $\inteval{1 + 2 + 3}$. % \end{verbatim} % % \end{documentation} @@ -143,7 +159,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfp}{2017/07/19}{} +\ProvidesExplPackage{xfp}{2017/09/18}{} {L3 Floating point unit} % \end{macrocode} % @@ -154,6 +170,13 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\inteval} +% A second one, this time around an \eTeX{} primitive. +% \begin{macrocode} +\NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} } +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx index 668a640a081..b448459147d 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx @@ -24,8 +24,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/07/19] -%<package>\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +%<package>\@ifpackagelater{expl3}{2017/09/18} %<package> {} %<package> {% %<package> \PackageError{xfrac}{Support package l3kernel too old} @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -533,7 +533,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfrac}{2017/07/19}{} +\ProvidesExplPackage{xfrac}{2017/09/18}{} {L3 Experimental split-level fractions} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx index 34826137abe..30b8ff8abd8 100644 --- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx @@ -27,8 +27,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/07/19] -%<package>\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +%<package>\@ifpackagelater{expl3}{2017/09/18} %<package> {} %<package> {% %<package> \PackageError{xparse}{Support package l3kernel too old} @@ -67,7 +67,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -776,7 +776,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2017/07/19}{} +\ProvidesExplPackage{xparse}{2017/09/18}{} {L3 Experimental document command parser} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx index 8a472f07df9..c2ce2a86593 100644 --- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx @@ -27,8 +27,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/07/19] -%<package>\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +%<package>\@ifpackagelater{expl3}{2017/09/18} %<package> {} %<package> {% %<package> \PackageError{xtemplate}{Support package l3kernel too old} @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2017/07/19} +% \date{Released 2017/09/18} % % \maketitle % @@ -682,7 +682,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xtemplate}{2017/07/19}{} +\ProvidesExplPackage{xtemplate}{2017/09/18}{} {L3 Experimental prototype document functions} % \end{macrocode} % diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty index ea31b631e3e..c1acc984d1e 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty @@ -20,7 +20,7 @@ %% %% File: l3str-convert.dtx Copyright (C) 2013-2017 The LaTeX3 Project \RequirePackage{expl3} -\ProvidesExplPackage{l3str-convert}{2017/07/19}{} +\ProvidesExplPackage{l3str-convert}{2017/09/18}{} {L3 Experimental string encoding conversions} \cs_if_exist:NF \use_ii_i:nn { \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty index 07f749f82e4..3fda583f978 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty @@ -20,7 +20,7 @@ %% %% File: l3str-format.dtx Copyright (C) 2012-2013,2015-2017 The LaTeX3 Project \RequirePackage{expl3} -\ProvidesExplPackage{l3str-format}{2017/07/19}{} +\ProvidesExplPackage{l3str-format}{2017/09/18}{} {L3 Experimental string formatting} \RequirePackage{l3str} \cs_generate_variant:Nn \use:nn { nf } diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty index 46d6e88037a..defb96c8445 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty @@ -20,7 +20,7 @@ %% %% File: xcoffins.dtx Copyright(C) 2010-2012,2014,2016,2017 The LaTeX3 Project \RequirePackage{xparse} -\ProvidesExplPackage{xcoffins}{2017/07/19}{} +\ProvidesExplPackage{xcoffins}{2017/09/18}{} {L3 Experimental design level coffins} \keys_define:nn { coffin } { diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty index d081dfb51ba..8ec66f1f311 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -20,8 +20,8 @@ %% %% File: l3galley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach %% (C) 2010-2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/07/19] -\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +\@ifpackagelater{expl3}{2017/09/18} {} {% \PackageError{l3galley}{Support package l3kernel too old} @@ -33,7 +33,7 @@ }% \endinput } -\ProvidesExplPackage{l3galley}{2017/07/19}{} +\ProvidesExplPackage{l3galley}{2017/09/18}{} {L3 Experimental galley code} \int_new:N \l__galley_tmp_int \seq_new:N \g__galley_tmpa_seq diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty index a44fe9600fd..a31b3af3855 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty @@ -21,7 +21,7 @@ %% File: xgalley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach %% (C) 2010-2012,2014,2016-2017 The LaTeX3 Project \RequirePackage{xparse} -\ProvidesExplPackage{xgalley}{2017/07/19}{} +\ProvidesExplPackage{xgalley}{2017/09/18}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} \clist_new:N \l__galley_tmpa_clist diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 55ca81971be..4e9108fafe9 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -62,7 +62,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2017 The LaTeX3 Project -\def\ExplFileDate{2017/07/19}% +\def\ExplFileDate{2017/09/18}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -1552,6 +1552,36 @@ { } \__debug:TF { + \exp_args:Nc \cs_set_protected:Npn { __debug_check-expressions_on: } + { + \cs_set:Npn \__debug_chk_expr:nNnN ##1##2 + { + \exp_after:wN \__debug_chk_expr_aux:nNnN + \exp_after:wN { \tex_the:D ##2 ##1 \tex_relax:D } + ##2 + } + } + \exp_args:Nc \cs_set_protected:Npn { __debug_check-expressions_off: } + { \cs_set:Npn \__debug_chk_expr:nNnN ##1##2##3##4 {##1} } + \use:c { __debug_check-expressions_off: } + \cs_set:Npn \__debug_chk_expr_aux:nNnN #1#2#3#4 + { + \tl_if_empty:oF + { + \tex_romannumeral:D - 0 + \exp_after:wN \use_none:n + \__int_value:w #3 #2 #1 \tex_relax:D + } + { + \__msg_kernel_expandable_error:nnnn + { kernel } { expr } {#4} {#1} + } + #1 + } + } + { } +\__debug:TF + { \exp_args:Nc \cs_set_protected:Npn { __debug_log-functions_on: } { \cs_set_protected:Npn \__debug_log:x { \iow_log:x } @@ -4763,10 +4793,12 @@ \cs_new_eq:NN \__int_eval_end: \tex_relax:D \cs_new_eq:NN \if_int_odd:w \tex_ifodd:D \cs_new_eq:NN \if_case:w \tex_ifcase:D -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_eval:n } } \cs_new:Npn \int_eval:n #1 { \__int_value:w \__int_eval:w #1 \__int_eval_end: } -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_abs:n } } \cs_new:Npn \int_abs:n #1 { \__int_value:w \exp_after:wN \__int_abs:N @@ -4775,7 +4807,11 @@ } \cs_new:Npn \__int_abs:N #1 { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_max:nn } + { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_max:nn } + } \cs_set:Npn \int_max:nn #1#2 { \__int_value:w \exp_after:wN \__int_maxmin:wwN @@ -4784,7 +4820,11 @@ > \exp_stop_f: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_min:nn } + { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_min:nn } + } \cs_set:Npn \int_min:nn #1#2 { \__int_value:w \exp_after:wN \__int_maxmin:wwN @@ -4801,7 +4841,11 @@ #2 \fi: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_div_truncate:nn } + { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_div_truncate:nn } + } \cs_new:Npn \int_div_truncate:nn #1#2 { \__int_value:w \__int_eval:w @@ -4825,7 +4869,11 @@ } \cs_new:Npn \int_div_round:nn #1#2 { \__int_value:w \__int_eval:w ( #1 ) / ( #2 ) \__int_eval_end: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_mod:nn } + { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_mod:nn } + } \cs_new:Npn \int_mod:nn #1#2 { \__int_value:w \__int_eval:w \exp_after:wN \__int_mod:ww @@ -4841,6 +4889,8 @@ \cs:w newcount \cs_end: #1 } \cs_generate_variant:Nn \int_new:N { c } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_const:Nn } } \cs_new_protected:Npn \int_const:Nn #1#2 { \int_compare:nNnTF {#2} < \c_zero @@ -4857,7 +4907,7 @@ { \__chk_if_free_cs:N #1 \tex_global:D \__int_constdef:Nw #1 = - \__int_eval:w (#2) \__int_eval_end: + \__int_eval:w #2 \__int_eval_end: } } } @@ -4895,10 +4945,12 @@ { TF , T , F , p } \prg_new_eq_conditional:NNn \int_if_exist:c \cs_if_exist:c { TF , T , F , p } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_add:Nn } } \cs_new_protected:Npn \int_add:Nn #1#2 { \tex_advance:D #1 by \__int_eval:w #2 \__int_eval_end: } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_sub:Nn } } \cs_new_protected:Npn \int_sub:Nn #1#2 { \tex_advance:D #1 by - \__int_eval:w #2 \__int_eval_end: } \cs_new_protected:Npn \int_gadd:Nn @@ -4921,7 +4973,8 @@ \cs_generate_variant:Nn \int_decr:N { c } \cs_generate_variant:Nn \int_gincr:N { c } \cs_generate_variant:Nn \int_gdecr:N { c } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_set:Nn } } \cs_new_protected:Npn \int_set:Nn #1#2 { #1 ~ \__int_eval:w #2 \__int_eval_end: } \cs_new_protected:Npn \int_gset:Nn { \tex_global:D \int_set:Nn } @@ -4997,7 +5050,12 @@ { \__int_compare:nnN { \if_int_compare:w } {#3} > } \cs_new:cpn { __int_compare_>=:NNw } #1#2#3 >= { \__int_compare:nnN { \if_int_compare:w } {#3} < } -\__debug_patch_conditional_args:nNNpnn { { (#1) \__int_eval_end: } {#2} { (#3) } } +\__debug_patch_conditional_args:nNNpnn + { + { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_compare:nNn } + { \__int_eval_end: #2 } + { \__debug_chk_expr:nNnN {#3} \__int_eval:w { } \int_compare:nNn } + } \prg_new_conditional:Npnn \int_compare:nNn #1#2#3 { p , T , F , TF } { \if_int_compare:w \__int_eval:w #1 #2 \__int_eval:w #3 \__int_eval_end: @@ -5035,7 +5093,8 @@ { \__int_case:nw {#1} } } \cs_new_eq:NN \__int_case_end:nw \__prg_case_end:nw -\__debug_patch_conditional_args:nNNpnn { { (#1) } } +\__debug_patch_conditional_args:nNNpnn + { { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_if_odd:n } } \prg_new_conditional:Npnn \int_if_odd:n #1 { p , T , F , TF} { \if_int_odd:w \__int_eval:w #1 \__int_eval_end: @@ -5044,7 +5103,8 @@ \prg_return_false: \fi: } -\__debug_patch_conditional_args:nNNpnn { { (#1) } } +\__debug_patch_conditional_args:nNNpnn + { { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_if_even:n } } \prg_new_conditional:Npnn \int_if_even:n #1 { p , T , F , TF} { \if_int_odd:w \__int_eval:w #1 \__int_eval_end: @@ -5109,7 +5169,12 @@ \int_compare:nNnF {#1} #2 {#3} { \int_do_until:nNnn {#1} #2 {#3} {#4} } } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } { (#3) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \__int_eval:w { } \int_step_function:nnnN } + { \__debug_chk_expr:nNnN {#2} \__int_eval:w { } \int_step_function:nnnN } + { \__debug_chk_expr:nNnN {#3} \__int_eval:w { } \int_step_function:nnnN } + } \cs_new:Npn \int_step_function:nnnN #1#2#3 { \exp_after:wN \__int_step:wwwN @@ -6893,6 +6958,7 @@ } \fi: \group_end: +\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } \cs_new_protected:Npn \token_new:Nn #1#2 { \cs_new_eq:NN #1 #2 } \group_begin: \__chk_if_free_cs:N \c_group_begin_token @@ -8272,6 +8338,7 @@ '\iow_char:N\\debug_off:n'~only~accept~the~arguments~ 'check-declarations',~'deprecation',~'log-functions',~not~'#1'. } + \__msg_kernel_new:nnn { kernel } { expr } { '#2'~in~#1 } \__msg_kernel_new:nnnn { kernel } { non-declared-variable } { The~variable~#1~has~not~been~declared~\msg_line_context:. } { @@ -8929,7 +8996,6 @@ \cs_new_protected:Npn \iow_term:n { \iow_now:Nn \c_term_iow } \cs_new:Npn \iow_newline: { ^^J } \cs_new_eq:NN \iow_char:N \cs_to_str:N -\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } \int_new:N \l_iow_line_count_int \int_set:Nn \l_iow_line_count_int { 78 } \tl_new:N \l__iow_newline_tl @@ -9317,7 +9383,8 @@ { TF , T , F , p } \prg_new_eq_conditional:NNn \dim_if_exist:c \cs_if_exist:c { TF , T , F , p } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \__dim_eval:w { } \dim_set:Nn } } \cs_new_protected:Npn \dim_set:Nn #1#2 { #1 ~ \__dim_eval:w #2 \__dim_eval_end: } \cs_new_protected:Npn \dim_gset:Nn { \tex_global:D \dim_set:Nn } @@ -9329,19 +9396,22 @@ \cs_new_protected:Npn \dim_gset_eq:NN #1#2 { \tex_global:D #1 = #2 } \cs_generate_variant:Nn \dim_gset_eq:NN { c } \cs_generate_variant:Nn \dim_gset_eq:NN { Nc , cc } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \__dim_eval:w { } \dim_add:Nn } } \cs_new_protected:Npn \dim_add:Nn #1#2 { \tex_advance:D #1 by \__dim_eval:w #2 \__dim_eval_end: } \cs_new_protected:Npn \dim_gadd:Nn { \tex_global:D \dim_add:Nn } \cs_generate_variant:Nn \dim_add:Nn { c } \cs_generate_variant:Nn \dim_gadd:Nn { c } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \__dim_eval:w { } \dim_sub:Nn } } \cs_new_protected:Npn \dim_sub:Nn #1#2 { \tex_advance:D #1 by - \__dim_eval:w #2 \__dim_eval_end: } \cs_new_protected:Npn \dim_gsub:Nn { \tex_global:D \dim_sub:Nn } \cs_generate_variant:Nn \dim_sub:Nn { c } \cs_generate_variant:Nn \dim_gsub:Nn { c } -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_abs:n } } \cs_new:Npn \dim_abs:n #1 { \exp_after:wN \__dim_abs:N @@ -9349,7 +9419,11 @@ } \cs_new:Npn \__dim_abs:N #1 { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_max:nn } + { \__debug_chk_expr:nNnN {#2} \__dim_eval:w { } \dim_max:nn } + } \cs_new:Npn \dim_max:nn #1#2 { \dim_use:N \__dim_eval:w \exp_after:wN \__dim_maxmin:wwN @@ -9358,7 +9432,11 @@ > \__dim_eval_end: } -\__debug_patch_args:nNNpn { { (#1) } { (#2) } } +\__debug_patch_args:nNNpn + { + { \__debug_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_min:nn } + { \__debug_chk_expr:nNnN {#2} \__dim_eval:w { } \dim_min:nn } + } \cs_new:Npn \dim_min:nn #1#2 { \dim_use:N \__dim_eval:w \exp_after:wN \__dim_maxmin:wwN @@ -9379,7 +9457,12 @@ { \__dim_ratio:n {#1} / \__dim_ratio:n {#2} } \cs_new:Npn \__dim_ratio:n #1 { \__int_value:w \__dim_eval:w (#1) \__dim_eval_end: } -\__debug_patch_conditional_args:nNNpnn { { (#1) \__dim_eval_end: } {#2} { (#3) } } +\__debug_patch_conditional_args:nNNpnn + { + { \__debug_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_compare:nNn } + { \__dim_eval_end: #2 } + { \__debug_chk_expr:nNnN {#3} \__dim_eval:w { } \dim_compare:nNn } + } \prg_new_conditional:Npnn \dim_compare:nNn #1#2#3 { p , T , F , TF } { \if_dim:w \__dim_eval:w #1 #2 \__dim_eval:w #3 \__dim_eval_end: @@ -9506,12 +9589,14 @@ \dim_compare:nNnF {#1} #2 {#3} { \dim_do_until:nNnn {#1} #2 {#3} {#4} } } -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_eval:n } } \cs_new:Npn \dim_eval:n #1 { \dim_use:N \__dim_eval:w #1 \__dim_eval_end: } \cs_new_eq:NN \dim_use:N \tex_the:D \cs_new:Npn \dim_use:c #1 { \tex_the:D \cs:w #1 \cs_end: } -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_to_decimal:n } } \cs_new:Npn \dim_to_decimal:n #1 { \exp_after:wN @@ -9529,7 +9614,8 @@ } \cs_new:Npn \dim_to_decimal_in_bp:n #1 { \dim_to_decimal:n { ( #1 ) * 800 / 803 } } -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \__dim_eval:w { } \dim_to_decimal_in_sp:n } } \cs_new:Npn \dim_to_decimal_in_sp:n #1 { \int_eval:n { \__dim_eval:w #1 \__dim_eval_end: } } \cs_new:Npn \dim_to_decimal_in_unit:nn #1#2 @@ -9580,7 +9666,8 @@ { TF , T , F , p } \prg_new_eq_conditional:NNn \skip_if_exist:c \cs_if_exist:c { TF , T , F , p } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \etex_glueexpr:D { } \skip_set:Nn } } \cs_new_protected:Npn \skip_set:Nn #1#2 { #1 ~ \etex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gset:Nn { \tex_global:D \skip_set:Nn } @@ -9592,13 +9679,15 @@ \cs_new_protected:Npn \skip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 } \cs_generate_variant:Nn \skip_gset_eq:NN { c } \cs_generate_variant:Nn \skip_gset_eq:NN { Nc , cc } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \etex_glueexpr:D { } \skip_add:Nn } } \cs_new_protected:Npn \skip_add:Nn #1#2 { \tex_advance:D #1 by \etex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gadd:Nn { \tex_global:D \skip_add:Nn } \cs_generate_variant:Nn \skip_add:Nn { c } \cs_generate_variant:Nn \skip_gadd:Nn { c } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { {#1} { \__debug_chk_expr:nNnN {#2} \etex_glueexpr:D { } \skip_sub:Nn } } \cs_new_protected:Npn \skip_sub:Nn #1#2 { \tex_advance:D #1 by - \etex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gsub:Nn { \tex_global:D \skip_sub:Nn } @@ -9616,7 +9705,13 @@ } \cs_set_protected:Npn \__cs_tmp:w #1 { - \__debug_patch_conditional_args:nNNpnn { { (##1) } } + \__debug_patch_conditional_args:nNNpnn + { + { + \__debug_chk_expr:nNnN + {##1} \etex_glueexpr:D { } \skip_if_finite:n + } + } \prg_new_conditional:Npnn \skip_if_finite:n ##1 { p , T , F , TF } { \exp_after:wN \__skip_if_finite:wwNw @@ -9626,17 +9721,20 @@ \cs_new:Npn \__skip_if_finite:wwNw ##1 #1 ##2 ; ##3 ##4 \q_stop {##3} } \exp_args:No \__cs_tmp:w { \tl_to_str:n { fil } } -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \etex_glueexpr:D { } \skip_eval:n } } \cs_new:Npn \skip_eval:n #1 { \skip_use:N \etex_glueexpr:D #1 \scan_stop: } \cs_new_eq:NN \skip_use:N \tex_the:D \cs_new:Npn \skip_use:c #1 { \tex_the:D \cs:w #1 \cs_end: } \cs_new_eq:NN \skip_horizontal:N \tex_hskip:D -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \etex_glueexpr:D { } \skip_horizontal:n } } \cs_new:Npn \skip_horizontal:n #1 { \skip_horizontal:N \etex_glueexpr:D #1 \scan_stop: } \cs_new_eq:NN \skip_vertical:N \tex_vskip:D -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { { \__debug_chk_expr:nNnN {#1} \etex_glueexpr:D { } \skip_vertical:n } } \cs_new:Npn \skip_vertical:n #1 { \skip_vertical:N \etex_glueexpr:D #1 \scan_stop: } \cs_generate_variant:Nn \skip_horizontal:N { c } @@ -9682,7 +9780,14 @@ { TF , T , F , p } \prg_new_eq_conditional:NNn \muskip_if_exist:c \cs_if_exist:c { TF , T , F , p } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { + {#1} + { + \__debug_chk_expr:nNnN {#2} \etex_muexpr:D + { \etex_mutoglue:D } \muskip_set:Nn + } + } \cs_new_protected:Npn \muskip_set:Nn #1#2 { #1 ~ \etex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gset:Nn { \tex_global:D \muskip_set:Nn } @@ -9694,19 +9799,39 @@ \cs_new_protected:Npn \muskip_gset_eq:NN #1#2 { \tex_global:D #1 = #2 } \cs_generate_variant:Nn \muskip_gset_eq:NN { c } \cs_generate_variant:Nn \muskip_gset_eq:NN { Nc , cc } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { + {#1} + { + \__debug_chk_expr:nNnN {#2} \etex_muexpr:D + { \etex_mutoglue:D } \muskip_add:Nn + } + } \cs_new_protected:Npn \muskip_add:Nn #1#2 { \tex_advance:D #1 by \etex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gadd:Nn { \tex_global:D \muskip_add:Nn } \cs_generate_variant:Nn \muskip_add:Nn { c } \cs_generate_variant:Nn \muskip_gadd:Nn { c } -\__debug_patch_args:nNNpn { {#1} { (#2) } } +\__debug_patch_args:nNNpn + { + {#1} + { + \__debug_chk_expr:nNnN {#2} \etex_muexpr:D + { \etex_mutoglue:D } \muskip_sub:Nn + } + } \cs_new_protected:Npn \muskip_sub:Nn #1#2 { \tex_advance:D #1 by - \etex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gsub:Nn { \tex_global:D \muskip_sub:Nn } \cs_generate_variant:Nn \muskip_sub:Nn { c } \cs_generate_variant:Nn \muskip_gsub:Nn { c } -\__debug_patch_args:nNNpn { { (#1) } } +\__debug_patch_args:nNNpn + { + { + \__debug_chk_expr:nNnN {#1} \etex_muexpr:D + { \etex_mutoglue:D } \muskip_eval:n + } + } \cs_new:Npn \muskip_eval:n #1 { \muskip_use:N \etex_muexpr:D #1 \scan_stop: } \cs_new_eq:NN \muskip_use:N \tex_the:D @@ -14854,25 +14979,25 @@ \exp_stop_f: } \cs_new:Npn \__fp_pow_neg_case_aux:nnnnn #1#2#3#4#5 - { \__fp_pow_neg_case_aux:w #1 ; #2 #3 ; #4 #5 ; } -\cs_new:Npn \__fp_pow_neg_case_aux:w #1 ; #2 ; #3 ; { \if_int_compare:w #1 > \c__fp_prec_int -1 \else: + \__fp_decimate:nNnnnn { \c__fp_prec_int - #1 } + \__fp_pow_neg_case_aux:Nnnw + {#2} {#3} {#4} {#5} + \fi: + } +\cs_new:Npn \__fp_pow_neg_case_aux:Nnnw #1#2#3#4 ; + { + \if_meaning:w 0 #1 \if_int_odd:w #3 \exp_stop_f: - \if_int_compare:w #1 = \c__fp_prec_int - 0 - \else: - 1 - \fi: + 0 \else: - \exp_after:wN \__fp_pow_neg_case_aux:w - \__int_value:w \__int_eval:w #1 + 1 \exp_after:wN ; - \__int_value:w \__int_eval:w (#2 + 1) / 2 - 1 \exp_after:wN ; - \__int_value:w \__int_eval:w - \if_int_odd:w #2 \exp_stop_f: 5000 0000 + \fi: #3 / 2 ; + -1 \fi: + \else: + 1 \fi: } %% File: l3fp-trig.dtx Copyright (C) 2011-2014,2016,2017 The LaTeX3 Project @@ -20177,9 +20302,9 @@ \cs_generate_variant:Nn \box_set_ht:Nn { c } \cs_generate_variant:Nn \box_set_dp:Nn { c } \cs_generate_variant:Nn \box_set_wd:Nn { c } -\cs_new_eq:NN \box_use_clear:N \tex_box:D +\cs_new_eq:NN \box_use_drop:N \tex_box:D \cs_new_eq:NN \box_use:N \tex_copy:D -\cs_generate_variant:Nn \box_use_clear:N { c } +\cs_generate_variant:Nn \box_use_drop:N { c } \cs_generate_variant:Nn \box_use:N { c } \__debug_patch_args:nNNpn { { (#1) } {#2} } \cs_new_protected:Npn \box_move_left:nn #1#2 @@ -20452,7 +20577,7 @@ \box_set_dp:Nn \l__box_internal_box { -\l__box_bottom_new_dim } \box_set_wd:Nn \l__box_internal_box { \l__box_right_new_dim - \l__box_left_new_dim } - \box_use:N \l__box_internal_box + \box_use_drop:N \l__box_internal_box } \cs_new_protected:Npn \__box_rotate_x:nnN #1#2#3 { @@ -20683,7 +20808,7 @@ \hbox_to_wd:nn { \l__box_right_new_dim } { \tex_kern:D \l__box_right_new_dim - \box_use:N \l__box_internal_box + \box_use_drop:N \l__box_internal_box \tex_hss:D } } @@ -20692,7 +20817,7 @@ \hbox:n { \tex_kern:D \c_zero_dim - \box_use:N \l__box_internal_box + \box_use_drop:N \l__box_internal_box \tex_hss:D } } @@ -20705,6 +20830,12 @@ { 2018-12-31 } { \box_resize_to_wd_and_ht_plus_dp:cnn } \cs_new_protected:Npn \box_resize:cnn { \box_resize_to_wd_and_ht_plus_dp:cnn } +\__debug_deprecation:nnNNpn + { 2018-12-31 } { \box_use_clear:N } +\cs_new_protected:Npn \box_use_clear:N { \box_use_drop:N } +\__debug_deprecation:nnNNpn + { 2018-12-31 } { \box_use_clear:c } +\cs_new_protected:Npn \box_use_clear:c { \box_use_drop:c } %% File: l3coffins.dtx Copyright(C) 2010-2017 The LaTeX3 Project \box_new:N \l__coffin_internal_box \dim_new:N \l__coffin_internal_dim @@ -21277,7 +21408,7 @@ \mode_leave_vertical: \__coffin_align:NnnNnnnnN \c_empty_coffin { H } { l } #1 {#2} {#3} {#4} {#5} \l__coffin_aligned_coffin - \box_use:N \l__coffin_aligned_coffin + \box_use_drop:N \l__coffin_aligned_coffin } \cs_generate_variant:Nn \coffin_typeset:Nnnnn { c } \coffin_new:N \l__coffin_display_coffin @@ -21394,7 +21525,7 @@ \prop_remove:Nn \l__coffin_display_poles_prop {##1} \__coffin_display_handles_aux:nnnnnn {##1} ##2 {#2} } - \box_use:N \l__coffin_display_coffin + \box_use_drop:N \l__coffin_display_coffin } \cs_new_protected:Npn \__coffin_display_handles_aux:nnnnnn #1#2#3#4#5#6 { @@ -22302,6 +22433,8 @@ { \prg_return_false: } } \cs_new:Npn \sys_rand_seed: { \tex_the:D \pdftex_randomseed:D } +\cs_if_exist:NF \pdftex_randomseed:D + { \cs_set:Npn \sys_rand_seed: { 0 } } \__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: } @@ -23548,6 +23681,11 @@ } } \group_begin: + \char_set_catcode_active:N * + \char_set_lccode:nn { `* } { `\ } + \tex_lowercase:D { \tl_const:Nn \c_catcode_active_space_tl { * } } +\group_end: +\group_begin: \cs_set_protected:Npn \__peek_tmp:w #1 \q_stop { \cs_new_protected:Npn \__peek_execute_branches_N_type: diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index a73f34c362b..a84caf1da12 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2017 The LaTeX3 Project -\def\ExplFileDate{2017/07/19}% +\def\ExplFileDate{2017/09/18}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 0aad65f46ce..86cc90262ad 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2017 The LaTeX3 Project -\def\ExplFileDate{2017/07/19}% +\def\ExplFileDate{2017/09/18}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index f65fc2134c6..9040af56ff9 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -20,11 +20,15 @@ %% %% File: l3doc.dtx Copyright (C) 1990-2017 The LaTeX3 project \RequirePackage{expl3,xparse,calc} -\ProvidesExplClass{l3doc}{2017/07/19}{} +\ProvidesExplClass{l3doc}{2017/09/18}{} {L3 Experimental documentation class} \clist_new:N \g_docinput_clist \seq_new:N \g_doc_functions_seq \seq_new:N \g_doc_macros_seq +\bool_new:N \l__codedoc_detect_internals_bool +\bool_set_true:N \l__codedoc_detect_internals_bool +\tl_new:N \l__codedoc_detect_internals_tl +\tl_new:N \l__codedoc_detect_internals_cs_tl \coffin_new:N \l__codedoc_output_coffin \coffin_new:N \l__codedoc_functions_coffin \coffin_new:N \l__codedoc_descr_coffin @@ -123,8 +127,19 @@ { \prg_return_true: } } \cs_generate_variant:Nn \__codedoc_if_almost_str:nT { V } +\cs_new_protected:Npn \__codedoc_trim_right:Nn #1#2 + { + \cs_set:Npn \__codedoc_tmp:w ##1 #2 ##2 \q_stop { \exp_not:n {##1} } + \tl_set:Nx #1 { \exp_after:wN \__codedoc_tmp:w #1 #2 \q_stop } + } +\cs_generate_variant:Nn \__codedoc_trim_right:Nn { No } \cs_new_protected:Npn \__codedoc_replace_at_at:N #1 { + \bool_if:NT \l__codedoc_in_implementation_bool + { + \bool_if:NT \l__codedoc_detect_internals_bool + { \__codedoc_detect_internals:N #1 } + } \tl_if_empty:NF \g__codedoc_module_name_tl { \exp_args:NNo \__codedoc_replace_at_at_aux:Nn @@ -141,6 +156,36 @@ \tl_replace_all:Nnn #1 { @ @ } { _ _ #2 } \tl_replace_all:Nnn #1 { \token_to_str:N a a } { @ @ } } +\group_begin: + \char_set_catcode_active:N \^^M + \cs_new_protected:Npn \__codedoc_detect_internals:N #1 + { + \tl_set_eq:NN \l__codedoc_detect_internals_tl #1 + \tl_replace_all:Non \l__codedoc_detect_internals_tl { \token_to_str:N _ } { _ } + \seq_set_split:NnV \l__codedoc_tmpa_seq { _ _ } \l__codedoc_detect_internals_tl + \seq_pop_left:NN \l__codedoc_tmpa_seq \l__codedoc_detect_internals_tl + \seq_map_variable:NNn \l__codedoc_tmpa_seq \l__codedoc_detect_internals_tl + { + \__codedoc_trim_right:No \l__codedoc_detect_internals_tl + \c_catcode_active_space_tl + \__codedoc_trim_right:Nn \l__codedoc_detect_internals_tl ^^M + \tl_set_eq:NN \l__codedoc_detect_internals_cs_tl \l__codedoc_detect_internals_tl + \__codedoc_trim_right:Nn \l__codedoc_detect_internals_tl _ + \__codedoc_trim_right:Nn \l__codedoc_detect_internals_tl : + \__codedoc_trim_right:No \l__codedoc_detect_internals_tl { \token_to_str:N : } + \tl_if_empty:NF \l__codedoc_detect_internals_tl + { + \str_if_eq:NNF \l__codedoc_detect_internals_tl \g__codedoc_module_name_tl + { + \msg_warning:nnxxx { l3doc } { foreign-internal } + { \tl_to_str:N \l__codedoc_detect_internals_cs_tl } + { \tl_to_str:N \l__codedoc_detect_internals_tl } + { \tl_to_str:N \g__codedoc_module_name_tl } + } + } + } + } +\group_end: \cs_new:Npn \__codedoc_signature_base_form:n #1 { \__codedoc_signature_base_form_aux:n #1 \q_stop } \cs_new:Npn \__codedoc_signature_base_form_aux:n #1 @@ -310,6 +355,12 @@ The~'syntax'~environment~should~only~be~used~once~in~ a~'function'~environment. } +\msg_new:nnn { l3doc } { foreign-internal } + { + A~control~sequence~of~the~form~'...__#1'~was~used.~ + It~should~only~be~used~in~the~module~'#2' + \tl_if_empty:nF {#3} { ,~not~in~'#3' } . + } \DeclareOption { a5paper } { \@latexerr { Option~not~supported } { } } \DeclareOption { full } { @@ -939,7 +990,7 @@ \cs_new_protected:Npn \__codedoc_function_assemble: { \hcoffin_set:Nn \l__codedoc_syntax_coffin - { \box_use_clear:N \g__codedoc_syntax_box } + { \box_use_drop:N \g__codedoc_syntax_box } \bool_if:NTF \l__codedoc_long_name_bool { \coffin_join:NnnNnnnn @@ -1106,7 +1157,7 @@ { \begin{quote} \mode_leave_vertical: - \box_use_clear:N \g__codedoc_syntax_box + \box_use_drop:N \g__codedoc_syntax_box \end{quote} } } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index 60886d1f6c7..5bfce1cc6ed 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -27,7 +27,7 @@ \@ifpackageloaded { color } { \cs_new_protected:Npn \__driver_color_pickup: - { \tl_set_eq:NN \l__color_current_tl \current@color } + { \tl_set:Nx \l__color_current_tl { \current@color } } } { \cs_new_protected:Npn \__driver_color_pickup: { } } } @@ -155,11 +155,11 @@ (#1) \bool_lazy_or:nnT { \l__image_interpolate_bool } - { ! \tl_if_empty_p:N \l__imge_decode_tl } + { ! \tl_if_empty_p:N \l__image_decode_tl } { << - \tl_if_empty:NF \l__imge_decode_tl - { /Decode~[ \l__imge_decode_tl ] } + \tl_if_empty:NF \l__image_decode_tl + { /Decode~[ \l__image_decode_tl ] } \bool_if:NT \l__image_interpolate_bool { /Interpolate~true> } >> diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index 727fbcbd454..eed9fcf2658 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -27,7 +27,7 @@ \@ifpackageloaded { color } { \cs_new_protected:Npn \__driver_color_pickup: - { \tl_set_eq:NN \l__color_current_tl \current@color } + { \tl_set:Nx \l__color_current_tl { \current@color } } } { \cs_new_protected:Npn \__driver_color_pickup: { } } } @@ -379,12 +379,10 @@ \tex_special:D { ps::~72~Resolution~div~72~VResolution~div~neg~scale } \tex_special:D { ps::~magscale~{1~DVImag~div~dup~scale}~if } \tex_special:D { ps::~l3x~neg~l3y~neg~translate } - \group_begin: - \box_set_wd:Nn #1 { 0pt } - \box_set_ht:Nn #1 { 0pt } - \box_set_dp:Nn #1 { 0pt } - \box_use:N #1 - \group_end: + \box_set_wd:Nn #1 { 0pt } + \box_set_ht:Nn #1 { 0pt } + \box_set_dp:Nn #1 { 0pt } + \box_use:N #1 \tex_special:D { ps::[begin] } \__driver_scope_end: } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def index f9bf990c499..df5c3f262fb 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def @@ -27,7 +27,7 @@ \@ifpackageloaded { color } { \cs_new_protected:Npn \__driver_color_pickup: - { \tl_set_eq:NN \l__color_current_tl \current@color } + { \tl_set:Nx \l__color_current_tl { \current@color } } } { \cs_new_protected:Npn \__driver_color_pickup: { } } } @@ -440,12 +440,10 @@ transform="scale(-1,1)~translate({?x},{?y})~scale(-1,-1)" > } - \group_begin: - \box_set_wd:Nn #1 { 0pt } - \box_set_ht:Nn #1 { 0pt } - \box_set_dp:Nn #1 { 0pt } - \box_use:N #1 - \group_end: + \box_set_wd:Nn #1 { 0pt } + \box_set_ht:Nn #1 { 0pt } + \box_set_dp:Nn #1 { 0pt } + \box_use:N #1 \__driver_literal:n { </g> } \__driver_scope_end: } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index bb94bd8e8ac..8590bc67530 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -28,24 +28,23 @@ { \cs_new_protected:Npn \__driver_color_pickup: { - \tl_set:Nx \l__color_current_tl - { - \exp_after:wN \exp_after:wN\exp_after:wN - \__driver_color_pickup_aux:w \exp_after:wN - \current@color \c_space_tl 0 ~ 0 ~ 0 \q_stop - } + \exp_last_unbraced:Nx \__driver_color_pickup_aux:w + { \current@color } ~ 0 ~ 0 ~ 0 \q_stop } \cs_new:Npn \__driver_color_pickup_aux:w #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \q_stop { - \str_if_eq:nnTF {#2} { g } - { gray ~ #1 } + \tl_set:Nx \l__color_current_tl { - \str_if_eq:nnTF {#4} { rg } - { rgb ~ #1 ~ #2 ~ #3 } + \str_if_eq:nnTF {#2} { g } + { gray ~ #1 } { - \str_if_eq:nnTF {#5} { k } - { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } - { gray ~ #1 } + \str_if_eq:nnTF {#4} { rg } + { rgb ~ #1 ~ #2 ~ #3 } + { + \str_if_eq:nnTF {#5} { k } + { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } + { gray ~ #1 } + } } } } @@ -127,7 +126,7 @@ \cs_new_protected:Npn \__driver_box_use_rotate:Nn #1#2 { \__driver_scope_begin: - \box_set_wd:Nn #1 \c_zero_dim + \box_set_wd:Nn #1 { 0pt } \fp_set:Nn \l__driver_cos_fp { round ( cosd ( #2 ) , 5 ) } \fp_compare:nNnT \l__driver_cos_fp = \c_zero_fp { \fp_zero:N \l__driver_cos_fp } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index f66bc633b4c..31bd085b8b1 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -27,7 +27,7 @@ \@ifpackageloaded { color } { \cs_new_protected:Npn \__driver_color_pickup: - { \tl_set_eq:NN \l__color_current_tl \current@color } + { \tl_set:Nx \l__color_current_tl { \current@color } } } { \cs_new_protected:Npn \__driver_color_pickup: { } } } @@ -140,11 +140,11 @@ (#1) \bool_lazy_or:nnT { \l__image_interpolate_bool } - { ! \tl_if_empty_p:N \l__imge_decode_tl } + { ! \tl_if_empty_p:N \l__image_decode_tl } { << - \tl_if_empty:NF \l__imge_decode_tl - { /Decode~[ \l__imge_decode_tl ] } + \tl_if_empty:NF \l__image_decode_tl + { /Decode~[ \l__image_decode_tl ] } \bool_if:NT \l__image_interpolate_bool { /Interpolate~true> } >> diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index be7ed994821..a994028c128 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -19,8 +19,8 @@ %% and all files in that bundle must be distributed together. %% %% File: l3keys2e.dtx (C) Copyright 2009,2011-2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/07/19] -\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +\@ifpackagelater{expl3}{2017/09/18} {} {% \PackageError{l3keys2e}{Support package l3kernel too old} @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3keys2e}{2017/07/19}{} +\ProvidesExplPackage{l3keys2e}{2017/09/18}{} {LaTeX2e option processing using LaTeX3 keys} \cs_generate_variant:Nn \clist_put_right:Nn { Nv } \cs_generate_variant:Nn \keys_if_exist:nnT { nx } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty index 14b9610c35a..542e0ab69ef 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty @@ -19,8 +19,8 @@ %% and all files in that bundle must be distributed together. %% %% File: xfp.dtx (C) Copyright 2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/07/19] -\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +\@ifpackagelater{expl3}{2017/09/18} {} {% \PackageError{xfp}{Support package l3kernel too old} @@ -33,9 +33,10 @@ \endinput } \RequirePackage{xparse} -\ProvidesExplPackage{xfp}{2017/07/19}{} +\ProvidesExplPackage{xfp}{2017/09/18}{} {L3 Floating point unit} \NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} } +\NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} } %% %% %% End of file `xfp.sty'. diff --git a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty index fed2e2923f4..a14dec2c0e4 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty @@ -20,8 +20,8 @@ %% %% File: xfrac.dtx Copyright (C) 2004, 2008-2010 Morten Hoegholm %% (C) 2011,2012,2014-2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/07/19] -\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +\@ifpackagelater{expl3}{2017/09/18} {} {% \PackageError{xfrac}{Support package l3kernel too old} @@ -34,7 +34,7 @@ \endinput } \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} -\ProvidesExplPackage{xfrac}{2017/07/19}{} +\ProvidesExplPackage{xfrac}{2017/09/18}{} {L3 Experimental split-level fractions} \keys_define:nn { xfrac } { diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index 2210b51102d..812f8863e59 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -23,8 +23,8 @@ %% (C) Copyright 2004-2008 Frank Mittelbach, %% The LaTeX3 Project %% (C) Copyright 2009-2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/07/19] -\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +\@ifpackagelater{expl3}{2017/09/18} {} {% \PackageError{xparse}{Support package l3kernel too old} @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xparse}{2017/07/19}{} +\ProvidesExplPackage{xparse}{2017/09/18}{} {L3 Experimental document command parser} \tl_const:Nx \c__xparse_no_value_tl { \char_generate:nn { `\- } { 11 } NoValue- } diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index 1d1ef856964..897feae9d8a 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -23,8 +23,8 @@ %% (C) Copyright 2004-2010 Frank Mittelbach, %% The LaTeX3 Project %% (C) Copyright 2011-2016 The LaTeX3 Project -\RequirePackage{expl3}[2017/07/19] -\@ifpackagelater{expl3}{2017/07/19} +\RequirePackage{expl3}[2017/09/18] +\@ifpackagelater{expl3}{2017/09/18} {} {% \PackageError{xtemplate}{Support package l3kernel too old} @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xtemplate}{2017/07/19}{} +\ProvidesExplPackage{xtemplate}{2017/09/18}{} {L3 Experimental prototype document functions} \tl_const:Nn \c__xtemplate_code_root_tl { template~code~>~ } \tl_const:Nn \c__xtemplate_defaults_root_tl { template~defaults~>~ } |