diff options
Diffstat (limited to 'Master/texmf-dist')
105 files changed, 1890 insertions, 1695 deletions
diff --git a/Master/texmf-dist/doc/latex/l3build/README.md b/Master/texmf-dist/doc/latex/l3build/README.md index e8f654531bb..cf0ca12e8d5 100644 --- a/Master/texmf-dist/doc/latex/l3build/README.md +++ b/Master/texmf-dist/doc/latex/l3build/README.md @@ -1,7 +1,7 @@ l3build: a testing and building system for LaTeX3 ================================================= -Release 2016/01/19 (r6377) +Release 2016/03/26 (r6466) Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3build/l3build.pdf b/Master/texmf-dist/doc/latex/l3build/l3build.pdf Binary files differindex caaee9acca6..393bcec3644 100644 --- a/Master/texmf-dist/doc/latex/l3build/l3build.pdf +++ b/Master/texmf-dist/doc/latex/l3build/l3build.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md index 9e77cb01fa6..dcf8ecb1a4b 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 2016/01/19 (r6377) +Release 2016/03/26 (r6466) Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf Binary files differindex 84675ac5f3e..384d28b86e9 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3sort/l3sort.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf Binary files differindex 8f4f4b3ccc4..2fc0c52037c 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3flag.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf Binary files differindex 0731cdbebf5..042198c086a 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3regex.pdf 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 211280d17aa..7bac7f36f56 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 36848b53330..11157e6ee96 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/l3str/l3tl-analysis.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf Binary files differindex 2af08da3ec9..a4754b36e1a 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-analysis.pdf diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf Binary files differindex d8d815f0103..517fa5f3690 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.pdf +++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3tl-build.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 9d520fbaca1..371cd0be3e1 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 ceeeabc402c..7c1e2a52a96 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 6bfbb4b6117..cfab0a913b5 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 80c776d3df7..e5eb6a9cfef 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 2016/01/19 (r6377) +Release 2016/03/26 (r6466) Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex b9481032c12..a7b381e5a85 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 c4c22c927ad..66502931ca7 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/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf Binary files differindex 2803009f039..c3d91fc89fb 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 fa462699326..81babd0acaf 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt +++ b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt @@ -25,6 +25,8 @@ Function Expires end \pdftex_if_engine:T 2016 \pdftex_if_engine:TF 2016 \scan_align_safe_stop: 2016 +\tl_to_lowercase:n 2017 +\tl_to_uppercase:n 2017 \xetex_if_engine_p: 2016 \xetex_if_engine:F 2016 \xetex_if_engine:T 2016 @@ -543,4 +545,4 @@ Function Date removed SVN [key property] .code:x 2013-07-10 4539 [key property] .generate_choices:n 2015-07-14 5655 [key property] .meta:x 2013-07-10 4538 -------------------------------------------------------------------
\ No newline at end of file +------------------------------------------------------------------ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex 636658aee56..afa7003cc7f 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/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf Binary files differindex 2e8e46ec6b6..d662b1dd024 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/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf Binary files differindex d569deef67f..3e07ee06f64 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/l3packages/README.md b/Master/texmf-dist/doc/latex/l3packages/README.md index ae80c879027..17cfea7cc36 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 2016/01/19 (r6377) +Release 2016/03/26 (r6466) 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 1e6e261f4fc..6bfffd4daed 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/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf Binary files differindex 5920f8b0547..aed575f2164 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 40d2b8946c9..a0c481d7bc9 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 2e04de9413c..f25997a76ac 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/l3build/l3build.dtx b/Master/texmf-dist/source/latex/l3build/l3build.dtx index 7c7c9574cfc..91847d2db7e 100644 --- a/Master/texmf-dist/source/latex/l3build/l3build.dtx +++ b/Master/texmf-dist/source/latex/l3build/l3build.dtx @@ -39,8 +39,8 @@ \RequirePackage{expl3} \def\ExplFileName{l3build} \def\ExplFileDescription{L3 Regression test suite} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} \documentclass[full]{l3doc} \renewcommand\partname{Part} \usepackage{multicol,needspace} @@ -92,7 +92,7 @@ \luavarset{tdsdir} {distribdir .. "/tds"} {Generated folder where files are organised for a TDS.} \luavarset{tdsroot} {"latex"}{Root directory of the TDS structure for the bundle/module to be installed into.} \luavarseparator -\luavarset{bibfiles} {\{"*.bst"\}}{\BibTeX{} database files.} +\luavarset{bibfiles} {\{"*.bib"\}}{\BibTeX{} database files.} \luavarset{binaryfiles} {\{"*.pdf", "*.zip"\}} {Files to be added in binary mode to zip files.} \luavarset{bstfiles} {\{"*.bst"\}}{\BibTeX{} style files.} @@ -941,19 +941,19 @@ % % As detailed above, the |setversion| target will automatically edit % source files to modify date and version. This behaviour is governed by -% variable \luavar{versionform}. As standard, no automatic replacement -% takes place, but setting \luavar{versionform} will allow this to happen, +% variable \var{versionform}. As standard, no automatic replacement +% takes place, but setting \var{versionform} will allow this to happen, % with options % \begin{itemize} -% \item |ProvidesPackage| Searches for lines using the \LaTeXe{} +% \item |ProvidesPackage| --- Searches for lines using the \LaTeXe{} % \cs{ProvidesPackage}, \cs{ProvidesClass} and \cs{ProvidesFile} % identifiers (as a whole line). -% \item |ProvidesExplPackage| Searches for lines using the \pkg{expl3} +% \item |ProvidesExplPackage| --- Searches for lines using the \pkg{expl3} % \cs{ProvidesExplPackage}, \cs{ProvidesExplClass} and % \cs{ProvidesExplFile} identifiers (at the start of a line). -% \item |filename| Searches for lines using |\def\filename|, +% \item |filename| --- Searches for lines using |\def\filename|, % |\def\filedate|, \dots, formulation. -% \item |ExplFileName| Searches for lines using |\def\ExplFileName|, +% \item |ExplFileName| --- Searches for lines using |\def\ExplFileName|, % |\def\ExplFileDate|, \dots, formulation. % \end{itemize} % @@ -1125,7 +1125,7 @@ \def\START{\LONGTYPEOUT{START-TEST-LOG^^J^^J% \STARTMESSAGE% ^^J^^JDon't change this file in any respect.% -^^J^^J\CTable^^J}} +^^J^^J}} \begingroup \catcode`\^^\=0 \catcode`\^^A=\catcode`\% diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx index cfd7f977c8b..6f34d2836ce 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx @@ -37,8 +37,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{l3sort}{Support package l3kernel too old} @@ -50,7 +50,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3sort.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3sort.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental sorting functions} %</driver|package> %<*driver> @@ -394,7 +394,7 @@ \if_int_compare:w #3 < \l_@@_length_int #1 #2 { \tex_the:D \tex_toks:D #3 } \exp_after:wN \@@_toks:NNw \exp_after:wN #1 \exp_after:wN #2 - \int_use:N \__int_eval:w #3 + \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #3 + \c_one \exp_after:wN ; \fi: } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx index 52fa61bbd8e..8807c514eb3 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx @@ -36,8 +36,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{l3flag}{Support package l3kernel too old} @@ -49,7 +49,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3flag.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3flag.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental flags} %</driver|package> %<*driver> @@ -226,7 +226,7 @@ \fi: \cs_set_eq:cN { @@_#2_#1: } \tex_undefined:D \exp_after:wN \@@_clear:ww - \int_use:N \__int_eval:w \c_one + #1 ; + \__int_value:w \__int_eval:w \c_one + #1 ; #2 \q_stop } % \end{macrocode} @@ -288,7 +288,7 @@ \cs_new:Npn \@@_height_loop:ww #1 ; #2 \q_stop { \if_cs_exist:w @@_#2_#1: \cs_end: - \exp_after:wN \@@_height_loop:ww \int_use:N \__int_eval:w \c_one + + \exp_after:wN \@@_height_loop:ww \__int_value:w \__int_eval:w \c_one + \else: \exp_after:wN \@@_height_end:ww \fi: diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx index db1fc7c1f1a..9a80d0e37a1 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx @@ -36,8 +36,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{l3regex}{Support package l3kernel too old} @@ -49,7 +49,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3regex.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3regex.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental regular expressions} %</driver|package> %<*driver> @@ -4383,7 +4383,7 @@ { \__int_value:w \tex_skip:D #1 } { \tex_the:D \tex_toks:D #1 } \exp_after:wN \@@_match_one_active:w - \int_use:N \__int_eval:w #1 + \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #1 + \c_one \exp_after:wN ; \fi: } % \end{macrocode} @@ -4542,7 +4542,7 @@ \cs_new_protected:Npn \@@_action_cost:n #1 { \exp_args:No \@@_store_state:n - { \int_use:N \__int_eval:w \l_@@_current_state_int + #1 } + { \__int_value:w \__int_eval:w \l_@@_current_state_int + #1 } } % \end{macrocode} % \end{macro} @@ -4715,8 +4715,8 @@ \cs_new:Npn \@@_query_range:nn #1#2 { \exp_after:wN \@@_query_range_loop:ww - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 ; + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 ; \__prg_break_point: } \cs_new:Npn \@@_query_range_loop:ww #1 ; #2 ; @@ -4727,7 +4727,7 @@ \fi: \tex_the:D \tex_toks:D #1 \exp_stop_f: \exp_after:wN \@@_query_range_loop:ww - \int_use:N \__int_eval:w #1 + \c_one ; #2 ; + \__int_value:w \__int_eval:w #1 + \c_one ; #2 ; } % \end{macrocode} % \end{macro} 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 df7047f93ed..cda42b33ccc 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{expl3} -\GetIdInfo$Id: l3str-convert.dtx 6106 2015-09-26 08:54:30Z joseph $ +\GetIdInfo$Id: l3str-convert.dtx 6443 2016-03-24 10:59:09Z joseph $ {L3 Experimental string encoding conversions} %</driver|package> %<*driver> @@ -438,7 +438,7 @@ \group_begin: \char_set_lccode:nn { `\* } { `\ } \char_set_lccode:nn { `\A } { `\A } -\tl_to_lowercase:n +\tex_lowercase:D { \group_end: \cs_new_protected:Npn \@@_gset_other:Nn #1#2 @@ -581,23 +581,15 @@ % an empty result for the input $-1$. % \begin{macrocode} \group_begin: - \char_set_catcode_other:n { \c_zero } - \tl_set:Nx \l_@@_internal_tl { \tl_to_str:n { 0123456789ABCDEF } } - \exp_args:No \tl_map_inline:nn { \l_@@_internal_tl " } - { \char_set_lccode:nn {`#1} { \c_zero } } - \tl_map_inline:Nn \l_@@_internal_tl - { - \tl_map_inline:Nn \l_@@_internal_tl - { - \char_set_lccode:nn { \c_zero } {"#1##1} - \tl_to_lowercase:n - { - \tl_const:cx - { c_@@_byte_ \int_eval:n {"#1##1} _tl } - { ^^@ #1 ##1 } - } - } - } + \tl_set:Nx \l__str_internal_tl { \tl_to_str:n { 0123456789ABCDEF } } + \tl_map_inline:Nn \l__str_internal_tl + { + \tl_map_inline:Nn \l__str_internal_tl + { + \tl_const:cx { c__str_byte_ \int_eval:n {"#1##1} _tl } + { \char_generate:nn { "#1##1 } { 12 } #1 ##1 } + } + } \group_end: \tl_const:cn { c_@@_byte_-1_tl } { { } \use_none:n { } } % \end{macrocode} @@ -623,7 +615,7 @@ { \exp_after:wN \exp_after:wN \exp_after:wN \use_i:nnn - \cs:w c_@@_byte_ \int_use:N \__int_eval:w + \cs:w c_@@_byte_ \__int_value:w \__int_eval:w } \cs_new:Npn \@@_output_hexadecimal:n #1 { \@@_output_hexadecimal:w #1 \@@_output_end: } @@ -631,7 +623,7 @@ { \exp_after:wN \exp_after:wN \exp_after:wN \use_none:n - \cs:w c_@@_byte_ \int_use:N \__int_eval:w + \cs:w c_@@_byte_ \__int_value:w \__int_eval:w } \cs_new_nopar:Npn \@@_output_end: { \__int_eval_end: _tl \cs_end: } @@ -1145,8 +1137,8 @@ % cannot be done expandably in \TeX{}, we cannot hope to get a % linear-time function. However, we get quite close using the % \pkg{l3tl-build} module, which abuses \tn{toks} to reach an almost -% linear time. Use the standard lowercase trick to produce an -% arbitrary character from the null character, and add that character +% linear time. We produce an arbitrary character of category code 12 +% and add that character % to the end of the token list being built. At the end of the loop, % put the token list together with \cs{__tl_build_end:}. Note that we % use an \texttt{x}-expanding assignment because it is slightly @@ -1166,8 +1158,8 @@ \cs_new_protected:Npn \@@_encode_native_loop:w #1 \s__tl #2 \s__tl { \use_none_delimit_by_q_stop:w #2 \q_stop - \tex_lccode:D \l_@@_internal_int \__int_eval:w #2 \__int_eval_end: - \tl_to_lowercase:n { \__tl_build_one:n { ^^@ } } + \exp_args:Nx \__tl_build_one:n + { \char_generate:nn {#2} {12} } \@@_encode_native_loop:w } } @@ -1683,14 +1675,14 @@ % If followed by an end-of-line character, the backslash and the % end-of-line are ignored. If followed by anything else, the backslash % is ignored, raising the error flag. -%^^A Be paranoid: \tl_to_lowercase:n is unsafe. +%^^A Be paranoid: \tex_lowercase:D is unsafe. % \begin{macrocode} %<*string> \group_begin: \char_set_lccode:nn {`\*} {`\\} \char_set_catcode_other:N \^^J \char_set_catcode_other:N \^^M - \tl_to_lowercase:n + \tex_lowercase:D { \cs_new_protected_nopar:Npn \@@_convert_unescape_string: { @@ -2185,7 +2177,7 @@ \fi: \else: \exp_after:wN \@@_decode_utf_viii_continuation:wwN - \int_use:N \__int_eval:w `#1 - "C0 \exp_after:wN \__int_eval_end: + \__int_value:w \__int_eval:w `#1 - "C0 \exp_after:wN \__int_eval_end: \fi: \s__tl \use_none_delimit_by_q_stop:w {"80} {"800} {"10000} {"110000} \q_stop @@ -2200,7 +2192,7 @@ "C0 \exp_stop_f: #3 \exp_after:wN \@@_decode_utf_viii_aux:wNnnwN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w #1 * "40 + `#3 - "80 \exp_after:wN \__int_eval_end: \else: @@ -2230,7 +2222,7 @@ \@@_decode_utf_viii_overflow:w #1 \fi: \exp_after:wN \@@_decode_utf_viii_continuation:wwN - \int_use:N \__int_eval:w #1 - #4 \exp_after:wN \__int_eval_end: + \__int_value:w \__int_eval:w #1 - #4 \exp_after:wN \__int_eval_end: \fi: \s__tl #2 {#4} #5 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 89e650c53ca..189ea896cc0 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{expl3} -\GetIdInfo$Id: l3str-format.dtx 6009 2015-09-18 08:09:21Z joseph $ +\GetIdInfo$Id: l3str-format.dtx 6439 2016-03-23 12:03:41Z joseph $ {L3 Experimental string formatting} %</driver|package> %<*driver> @@ -825,42 +825,37 @@ % case, round to |#4+1| significant figures (one before the decimal % separator, |#4| after). % \begin{macrocode} -\group_begin: -\char_set_catcode_other:N E -\tl_to_lowercase:n +\cs_new:Npn \@@_fp_e:wn \s__fp \__fp_chk:w #1#2#3 ; #4 { - \group_end: - \cs_new:Npn \@@_fp_e:wn \s__fp \__fp_chk:w #1#2#3 ; #4 + \int_case:nnF {#1} { - \int_case:nnF {#1} - { - {0} { \use:nf { 0 . } { \prg_replicate:nn {#4} { 0 } } e 0 } - {2} { inf } - {3} { nan } - } - { - \exp_last_unbraced:Nf \@@_fp_e_aux:wn - \@@_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 } - {#4} - } + { 0 } { \use:nf { 0 . } { \prg_replicate:nn {#4} { 0 } } e 0 } + { 2 } { inf } + { 3 } { nan } } - \cs_new:Npn \@@_fp_e_aux:wn - \s__fp \__fp_chk:w #1#2 #3 #4#5#6#7 ; #8 { - \@@_put:fw { \int_eval:n { #3 - 1 } } - \@@_put:nw { e } - \int_compare:nNnTF {#8} > \c_sixteen - { - \@@_put:fw { \prg_replicate:nn { #8 - \c_fifteen } {0} } - \@@_put:fw { \use_none:n #4#5#6#7 } - } - { - \@@_put:fw - { \str_range:nnn { #4#5#6#7 0 } { 2 } { #8 + 1 } } - } - \@@_put:fw { \use_i:nnnn #4 . } - \use_none:n \s__stop + \exp_last_unbraced:Nf \@@_fp_e_aux:wn + \@@_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 } + {#4} + } + } +\cs_new:Npn \@@_fp_e_aux:wn + \s__fp \__fp_chk:w #1#2 #3 #4#5#6#7 ; #8 + { + \@@_put:fw { \int_eval:n { #3 - 1 } } + \@@_put:nw { e } + \int_compare:nNnTF {#8} > \c_sixteen + { + \@@_put:fw { \prg_replicate:nn { #8 - \c_fifteen } {0} } + \@@_put:fw { \use_none:n #4#5#6#7 } + } + { + \@@_put:fw + { \str_range:nnn { #4#5#6#7 0 } { 2 } { #8 + 1 } } } + \@@_put:fw { \use_i:nnnn #4 . } + \use_none:n \s__stop + } } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx index 41178195dc6..b33d81aedb2 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3tl-analysis.dtx Copyright (C) 2011-2012,2015 The LaTeX3 Project +%% File: l3tl-analysis.dtx Copyright (C) 2011-2012,2015,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -35,7 +35,7 @@ % %<*driver|package> \RequirePackage{expl3} -\GetIdInfo$Id: l3tl-analysis.dtx 6244 2015-11-09 13:33:20Z joseph $ +\GetIdInfo$Id: l3tl-analysis.dtx 6443 2016-03-24 10:59:09Z joseph $ {L3 Experimental token lists analysis} %</driver|package> %<*driver> @@ -815,7 +815,7 @@ \exp_not:n { \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: } \exp_not:N \__int_value:w `#1 \s__tl \exp_not:N \exp_after:wN \exp_not:N \@@_b_normals:ww - \exp_not:N \int_use:N \exp_not:N \__int_eval:w \c_minus_one + + \exp_not:N \__int_value:w \exp_not:N \__int_eval:w \c_minus_one + } % \end{macrocode} % \end{macro} @@ -835,7 +835,7 @@ \cs_new:Npn \@@_b_cs_test:ww #1 ; #2 ; #3 ; #4 ; { \exp_after:wN \@@_b_normals:ww - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_compare:w #1 = \c_zero #3 \else: @@ -843,7 +843,7 @@ \fi: - #2 \exp_after:wN ; - \int_use:N \__int_eval:w #4 + #1 ; + \__int_value:w \__int_eval:w #4 + #1 ; } % \end{macrocode} % \end{macro} @@ -878,9 +878,9 @@ \else: 2 \fi: \if_int_odd:w \etex_gluestretch:D \tex_skip:D #1 \exp_stop_f: - \exp_after:wN \@@_b_special_char:wN \int_use:N + \exp_after:wN \@@_b_special_char:wN \__int_value:w \else: - \exp_after:wN \@@_b_special_space:w \int_use:N + \exp_after:wN \@@_b_special_space:w \__int_value:w \fi: \__int_eval:w \c_one + #1 \exp_after:wN ; \token_to_str:N diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx index eb44382e0a2..02ea7635874 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx @@ -36,8 +36,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{l3tl-build}{Support package l3kernel too old} @@ -49,7 +49,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3tl-build.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3tl-build.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental token list construction} %</driver|package> %<*driver> diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index 8bc0bafa285..602463015fe 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -38,8 +38,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{l3galley}{Support package l3kernel too old} @@ -51,7 +51,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3galley.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3galley.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental galley code} %</driver|package> %<*driver> @@ -1798,7 +1798,7 @@ \@@_parshape_set_cutouts: \tl_set:Nx \l_@@_tmp_tl { - \int_use:N \tex_parshape:D + \__int_value:w \tex_parshape:D \int_step_function:nnnN \c_one \c_one \tex_parshape:D \tmp } @@ -1806,8 +1806,8 @@ } \def\tmp#1{% \c_space_tl - \int_use:N \etex_parshapeindent:D #1 \c_space_tl \c_space_tl - \int_use:N \etex_parshapelength:D #1 \c_space_tl + \__int_value:w \etex_parshapeindent:D #1 \c_space_tl \c_space_tl + \__int_value:w \etex_parshapelength:D #1 \c_space_tl } % \end{macrocode} % Setting the margins is simple. Either they are zero, using the full measure, @@ -2408,7 +2408,7 @@ } } \cs_new:Npn \@@_save_display_club_penalties:n #1 - { \int_use:N \etex_clubpenalties:D \__int_eval:w #1 \__int_eval_end: , } + { \__int_value:w \etex_clubpenalties:D \__int_eval:w #1 \__int_eval_end: , } \cs_new_protected:Npn \galley_save_display_widow_penalties:N #1 { \clist_set:Nx #1 @@ -2419,7 +2419,7 @@ } } \cs_new:Npn \@@_save_display_widow_penalties:n #1 - { \int_use:N \etex_displaywidowpenalties:D \__int_eval:w #1 \__int_eval_end: , } + { \__int_value:w \etex_displaywidowpenalties:D \__int_eval:w #1 \__int_eval_end: , } \cs_new_protected:Npn \galley_save_widow_penalties:N #1 { \clist_set:Nx #1 @@ -2430,14 +2430,14 @@ } } \cs_new:Npn \@@_save_widow_penalties:n #1 - { \int_use:N \etex_widowpenalties:D \__int_eval:w #1 \__int_eval_end: , } + { \__int_value:w \etex_widowpenalties:D \__int_eval:w #1 \__int_eval_end: , } % \end{macrocode} % This one is not an array, but is stored in a primitive, so there is % a simple conversion. The general interline penalty is always the % last value in the primitive array. % \begin{macrocode} \cs_new_protected_nopar:Npn \galley_interline_penalty: - { \int_use:N \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero } + { \__int_value:w \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero } % \end{macrocode} % \end{macro} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 00d6a7eec50..5bd12abf53e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -36,8 +36,8 @@ %<*driver|generic|package> \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2016/01/19}% -\def\ExplFileVersion{6377}% +\def\ExplFileDate{2016/03/26}% +\def\ExplFileVersion{6466}% %</driver|generic|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 0f255e13be1..dafec8604da 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -145,7 +145,7 @@ % \end{macro} % \end{macro} % \end{macro} -\GetIdInfo$Id: l3bootstrap.dtx 6339 2016-01-01 09:30:10Z joseph $ +\GetIdInfo$Id: l3bootstrap.dtx 6412 2016-02-12 21:45:29Z joseph $ {L3 Bootstrap code}% %</driver|package> %<*driver> @@ -267,10 +267,10 @@ % some pretty basic character codes set up. % \begin{macrocode} %<*initex> -\catcode `\{ = 1\relax -\catcode `\} = 2\relax -\catcode `\# = 6\relax -\catcode `\^ = 7\relax +\catcode `\{ = 1 % +\catcode `\} = 2 % +\catcode `\# = 6 % +\catcode `\^ = 7 % %</initex> % \end{macrocode} % @@ -278,14 +278,12 @@ % safe side. % \begin{macrocode} %<*initex> -\catcode `\^^I = 10\relax +\catcode `\^^I = 10 % %</initex> % \end{macrocode} % % For \LuaTeX{}, the extra primitives need to be enabled. This is not needed -% in package mode: plain \TeX{} and Con\TeX{}t have the primitives enabled -% while \LaTeXe{} has them with the prefix \texttt{luatex} (which is handled -% in \pkg{l3names}). +% in package mode: common formats have the primitives enabled. % \begin{macrocode} %<*initex> \begingroup\expandafter\expandafter\expandafter\endgroup @@ -515,10 +513,10 @@ % anywhere, other engines have to build them into the format and so we % \emph{must} do this set up before reading the patterns. For the Unicode % engines, there are shared loaders available to obtain the relevant -% information irectly from the Unicode Consortium data files. These need -% standard (Ini)\TeX{} category codes and primitive availablity and must +% information directly from the Unicode Consortium data files. These need +% standard (Ini)\TeX{} category codes and primitive availability and must % therefore loaded \emph{very} early. This has a knock-on effect on the -% $8$-bit set up: it makes sense to do the defintions for those here as +% $8$-bit set up: it makes sense to do the definitions for those here as % well so it is all in one place. % % For \XeTeX{} and \LuaTeX{}, which are natively Unicode engines, simply @@ -527,9 +525,10 @@ %<*initex> \ifdefined\Umathcode \input load-unicode-data % + \input load-unicode-math-classes % \else % \end{macrocode} -% For the $8$-bit engines an encoding scheme must be chosen. At present, +% For the $8$-bit engines a font encoding scheme must be chosen. At present, % this is the EC (|T1|) scheme, with the assumption that languages for which % this is not appropriate will be used with one of the Unicode engines. % \begin{macrocode} @@ -547,11 +546,11 @@ \expandafter\temp \fi } - \count0="A0 % - \count2="BC % + \count0 = "A0 % + \count2 = "BC % \temp - \count0="E0 % - \count2="FF % + \count0 = "E0 % + \count2 = "FF % \temp % \end{macrocode} % Upper case chars: map up by |"20| when lower casing, to themselves when upper @@ -568,11 +567,11 @@ \expandafter\temp \fi } - \count0="80 % - \count2="9C % + \count0 = "80 % + \count2 = "9C % \temp - \count0="C0 % - \count2="DF % + \count0 = "C0 % + \count2 = "DF % \temp % \end{macrocode} % A few special cases where things are not as one might expect using the above @@ -598,7 +597,7 @@ % hyphenation of the rest of a word following it (suggested by % Lars Helstr\"om). % \begin{macrocode} -\global\lccode`\-=`\- % +\global\lccode`\- = `\- % %</initex> % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 8bceb8e6661..d3432d6ba07 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3candidates.dtx Copyright(C) 2012-2016 The LaTeX3 Project +%% File: l3candidates.dtx Copyright (C) 2012-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -38,7 +38,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3candidates.dtx 6376 2016-01-14 08:36:20Z joseph $ +\GetIdInfo$Id: l3candidates.dtx 6456 2016-03-25 21:09:37Z joseph $ {L3 Experimental additions to l3kernel} %</driver|package> %<*driver> @@ -94,7 +94,7 @@ % are being finalized. % \item Consider informing us that you use a particular function in your public package, e.g., by % discussing this on the \texttt{LaTeX-L} -% mailing list. This way it becomes easier to coordinate any updates necessary without a issues +% mailing list. This way it becomes easier to coordinate any updates necessary without issues % for the users of your package. % \item Discussing and understanding use cases for a particular addition or concept also helps to % ensure that we provide the right interfaces in the final version so please give us feedback @@ -970,8 +970,8 @@ % \end{verbatim} % irrespective of the expandability of |\"|. % -% The standard contents of this variable is |\"|, |\^|, |\'|, -% |\`|, |\.|, |\c|, |\u|, |\~|, |\H| and |\v| +% The standard contents of this variable is |\"|, |\'|, |\.|, |\^|, |\`|, +% |\~|, |\c|, |\H|, |\k|, |\r|, |\t|, |\u| and |\v|. % \end{variable} % % \enquote{Mixed} case conversion may be regarded informally as converting the @@ -1098,62 +1098,6 @@ % % \section{Additions to \pkg{l3tokens}} % -% \begin{function}[updated = 2015-11-12] -% { -% \char_set_active_eq:NN, \char_set_active_eq:Nc, -% \char_gset_active_eq:NN, \char_gset_active_eq:Nc -% } -% \begin{syntax} -% \cs{char_set_active_eq:NN} \meta{char} \meta{function} -% \end{syntax} -% Sets the behaviour of the \meta{char} in situations where it is -% active (category code $13$) to be equivalent to that of the -% \meta{function}. The category code of the \meta{char} is -% \emph{unchanged} by this process. The \meta{function} may itself -% be an active character. -% \end{function} -% -% \begin{function}[added = 2015-11-12] -% { -% \char_set_active_eq:nN, \char_set_active_eq:nc -% \char_gset_active_eq:nN, \char_gset_active_eq:nc -% } -% \begin{syntax} -% \cs{char_set_active_eq:nN} \Arg{integer expression} \meta{function} -% \end{syntax} -% Sets the behaviour of the \meta{char} which has character -% code as given by the \meta{integer expression} in situations -% where it is active (category code $13$) to be equivalent to that of the -% \meta{function}. The category code of the \meta{char} is -% \emph{unchanged} by this process. The \meta{function} may itself -% be an active character. -% \end{function} -% -% \begin{function}[EXP, added = 2015-09-09]{\char_generate:nn} -% \begin{syntax} -% \cs{char_generate:nn} \Arg{charcode} \Arg{catcode} -% \end{syntax} -% Generates a character token of the given \meta{charcode} and \meta{catcode} -% (both of which may be integer expressions). The \meta{catcode} may be -% one of -% \begin{itemize} -% \item $1$ (begin group) -% \item $2$ (end group) -% \item $3$ (math toggle) -% \item $4$ (alignment) -% \item $6$ (parameter) -% \item $7$ (math superscript) -% \item $8$ (math subscript) -% \item $11$ (letter) -% \item $12$ (other) -% \end{itemize} -% and other values will raise an error. -% -% The \meta{charcode} may be any one valid for the engine in use. Note -% however that for \XeTeX{} releases prior to 0.99992 only the 8-bit -% range ($0$ to $255$) is accepted due to engine limitations. -% \end{function} -% % \begin{function}[TF, updated = 2012-12-20]{\peek_N_type:} % \begin{syntax} % \cs{peek_N_type:TF} \Arg{true code} \Arg{false code} @@ -2012,14 +1956,14 @@ \cs_new_protected:Npn \@@_set_bounding:N #1 { \prop_put:Nnx \l_@@_bounding_prop { tl } - { { 0 pt } { \dim_use:N \box_ht:N #1 } } + { { 0 pt } { \dim_eval:n { \box_ht:N #1 } } } \prop_put:Nnx \l_@@_bounding_prop { tr } - { { \dim_use:N \box_wd:N #1 } { \dim_use:N \box_ht:N #1 } } - \dim_set:Nn \l_@@_internal_dim { - \box_dp:N #1 } + { { \dim_eval:n { \box_wd:N #1 } } { \dim_eval:n { \box_ht:N #1 } } } + \dim_set:Nn \l_@@_internal_dim { -\box_dp:N #1 } \prop_put:Nnx \l_@@_bounding_prop { bl } { { 0 pt } { \dim_use:N \l_@@_internal_dim } } \prop_put:Nnx \l_@@_bounding_prop { br } - { { \dim_use:N \box_wd:N #1 } { \dim_use:N \l_@@_internal_dim } } + { { \dim_eval:n { \box_wd:N #1 } } { \dim_use:N \l_@@_internal_dim } } } % \end{macrocode} % \end{macro} @@ -3074,7 +3018,7 @@ % \@@_change_case_output:nwn , % \@@_change_case_output:Vwn , % \@@_change_case_output:own , -% \@@_change_case_output:Vwn , +% \@@_change_case_output:vwn , % \@@_change_case_output:fwn , % } % \begin{macro}[aux, EXP]{\@@_change_case_end:wn} @@ -3094,10 +3038,10 @@ % {\@@_change_case_char_auxi:nN, \@@_change_case_char_auxii:nN} % \begin{macro}[aux] % {\@@_lookup_lower:N, \@@_lookup_upper:N, \@@_lookup_title:N} -% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFiix:nNN} -% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFiix:nNNN} -% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFiix:nNNNN} -% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFiix:nn} +% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFviii:nNN} +% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFviii:nNNN} +% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFviii:nNNNN} +% \begin{macro}[aux, EXP]{\@@_change_case_char_UTFviii:nn} % \begin{macro}[aux, EXP]{\@@_change_case_cs_letterlike:Nnn} % \begin{macro}[aux, EXP]{\@@_change_case_cs_accents:NN} % \begin{macro}[aux, EXP]{\@@_change_case_cs:N} @@ -3321,11 +3265,11 @@ \int_compare:nNnTF { `#2 } > { "80 } { \int_compare:nNnTF { `#2 } < { "E0 } - { \@@_change_case_char_UTFiix:nNNN {#1} #2 } + { \@@_change_case_char_UTFviii:nNNN {#1} #2 } { \int_compare:nNnTF { `#2 } < { "F0 } - { \@@_change_case_char_UTFiix:nNNNN {#1} #2 } - { \@@_change_case_char_UTFiix:nNNNNN {#1} #2 } + { \@@_change_case_char_UTFviii:nNNNN {#1} #2 } + { \@@_change_case_char_UTFviii:nNNNNN {#1} #2 } } } { \@@_change_case_char_auxi:nN {#1} #2 } @@ -3346,7 +3290,9 @@ \int_compare:nNnTF { \use:c { @@_lookup_ #1 :N } #2 } = { 0 } { \exp_stop_f: #2 } { - \utex_char:D \use:c { @@_lookup_ #1 :N } #2 + \char_generate:nn + { \use:c { @@_lookup_ #1 :N } #2 } + { \char_value_catcode:n { \use:c { @@_lookup_ #1 :N } #2 } } } } \cs_new_protected:Npn \@@_lookup_lower:N #1 { \tex_lccode:D `#1 } @@ -3355,13 +3301,13 @@ } { \cs_new:Npn \@@_change_case_char_auxii:nN #1#2 { \exp_stop_f: #2 } - \cs_new:Npn \@@_change_case_char_UTFiix:nNNN #1#2#3#4 - { \@@_change_case_char_UTFiix:nnN {#1} {#2#4} #3 } - \cs_new:Npn \@@_change_case_char_UTFiix:nNNNN #1#2#3#4#5 - { \@@_change_case_char_UTFiix:nnN {#1} {#2#4#5} #3 } - \cs_new:Npn \@@_change_case_char_UTFiix:nNNNNN #1#2#3#4#5#6 - { \@@_change_case_char_UTFiix:nnN {#1} {#2#4#5#6} #3 } - \cs_new:Npn \@@_change_case_char_UTFiix:nnN #1#2#3 + \cs_new:Npn \@@_change_case_char_UTFviii:nNNN #1#2#3#4 + { \@@_change_case_char_UTFviii:nnN {#1} {#2#4} #3 } + \cs_new:Npn \@@_change_case_char_UTFviii:nNNNN #1#2#3#4#5 + { \@@_change_case_char_UTFviii:nnN {#1} {#2#4#5} #3 } + \cs_new:Npn \@@_change_case_char_UTFviii:nNNNNN #1#2#3#4#5#6 + { \@@_change_case_char_UTFviii:nnN {#1} {#2#4#5#6} #3 } + \cs_new:Npn \@@_change_case_char_UTFviii:nnN #1#2#3 { \cs_if_exist:cTF { c__unicode_ #1 _ \tl_to_str:n {#2} _tl } { @@ -3832,47 +3778,47 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP, int]{\__unicode_codepoint_to_UTFiix:n} -% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFiix_auxi:n} -% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFiix_auxii:Nnn} -% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFiix_auxiii:n} -% This code will convert a codepoint into the correct UTF-8 represenation. +% \begin{macro}[EXP, int]{\__unicode_codepoint_to_UTFviii:n} +% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFviii_auxi:n} +% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFviii_auxii:Nnn} +% \begin{macro}[EXP, aux]{\__unicode_codepoint_to_UTFviii_auxiii:n} +% This code will convert a codepoint into the correct UTF-8 representation. % As there are a variable number of octets, the result starts with the % numeral |1|--|4| to indicate the nature of the returned value. Note that % this code will cover the full range even though at this stage it is not % required here. Also note that longer-term this is likely to need a public % interface and/or moving to \pkg{l3str} (see experimental string -% conversions). In terms of the algoritm itself, see +% conversions). In terms of the algorithm itself, see % \url{https://en.wikipedia.org/wiki/UTF-8} for the octet pattern. % \begin{macrocode} -\cs_new:Npn \__unicode_codepoint_to_UTFiix:n #1 +\cs_new:Npn \__unicode_codepoint_to_UTFviii:n #1 { - \exp_args:Nf \__unicode_codepoint_to_UTFiix_auxi:n + \exp_args:Nf \__unicode_codepoint_to_UTFviii_auxi:n { \int_eval:n {#1} } } -\cs_new:Npn \__unicode_codepoint_to_UTFiix_auxi:n #1 +\cs_new:Npn \__unicode_codepoint_to_UTFviii_auxi:n #1 { \if_int_compare:w #1 > "80 ~ \if_int_compare:w #1 < "800 ~ 2 - \__unicode_codepoint_to_UTFiix_auxii:Nnn C {#1} { 64 } - \__unicode_codepoint_to_UTFiix_auxiii:n {#1} + \__unicode_codepoint_to_UTFviii_auxii:Nnn C {#1} { 64 } + \__unicode_codepoint_to_UTFviii_auxiii:n {#1} \else: \if_int_compare:w #1 < "10000 ~ 3 - \__unicode_codepoint_to_UTFiix_auxii:Nnn E {#1} { 64 * 64 } - \__unicode_codepoint_to_UTFiix_auxiii:n {#1} - \__unicode_codepoint_to_UTFiix_auxiii:n + \__unicode_codepoint_to_UTFviii_auxii:Nnn E {#1} { 64 * 64 } + \__unicode_codepoint_to_UTFviii_auxiii:n {#1} + \__unicode_codepoint_to_UTFviii_auxiii:n { \int_div_truncate:nn {#1} { 64 } } \else: 4 - \__unicode_codepoint_to_UTFiix_auxii:Nnn F + \__unicode_codepoint_to_UTFviii_auxii:Nnn F {#1} { 64 * 64 * 64 } - \__unicode_codepoint_to_UTFiix_auxiii:n + \__unicode_codepoint_to_UTFviii_auxiii:n { \int_div_truncate:nn {#1} { 64 * 64 } } - \__unicode_codepoint_to_UTFiix_auxiii:n + \__unicode_codepoint_to_UTFviii_auxiii:n { \int_div_truncate:nn {#1} { 64 } } - \__unicode_codepoint_to_UTFiix_auxiii:n {#1} + \__unicode_codepoint_to_UTFviii_auxiii:n {#1} \fi: \fi: @@ -3880,9 +3826,9 @@ 1 {#1} \fi: } -\cs_new:Npn \__unicode_codepoint_to_UTFiix_auxii:Nnn #1#2#3 +\cs_new:Npn \__unicode_codepoint_to_UTFviii_auxii:Nnn #1#2#3 { { \int_eval:n { "#10 + \int_div_truncate:nn {#2} {#3} } } } -\cs_new:Npn \__unicode_codepoint_to_UTFiix_auxiii:n #1 +\cs_new:Npn \__unicode_codepoint_to_UTFviii_auxiii:n #1 { { \int_eval:n { \int_mod:nn {#1} { 64 } + 128 } } } % \end{macrocode} % \end{macro} @@ -3916,7 +3862,7 @@ { \utex_char:D "0069 ~ \utex_char:D "0307 ~ \utex_char:D "0303 ~ } } \tl_const:Nx \c__unicode_dot_above_tl { \utex_char:D "0307 ~ } - \tl_const:Nx \c__unicode_upper_Eszett_tl { \utex_char:D "1E9E ~} + \tl_const:Nx \c__unicode_upper_Eszett_tl { \utex_char:D "1E9E ~ } } { \tl_const:Nn \c__unicode_std_sigma_tl { } @@ -3944,20 +3890,21 @@ { \tl_const:Nx #1 { \utex_char:D "#2 ~ } } } { - \char_set_catcode_active:N . - \char_set_catcode_active:N ! \cs_set_protected:Npn \@@_tmp:w #1#2 { \group_begin: \cs_set_protected:Npn \@@_tmp:w ##1##2##3 { - \char_set_lccode:nn { `\. } {##2} - \char_set_lccode:nn { `\! } {##3} - \tex_lowercase:D - { \tl_const:Nn #1 { . ! } } + \tl_const:Nx #1 + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {##2} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {##3} { 13 } + } } \tl_set:Nx \l_@@_internal_a_tl - { \__unicode_codepoint_to_UTFiix:n {"#2} } + { \__unicode_codepoint_to_UTFviii:n {"#2} } \exp_after:wN \@@_tmp:w \l_@@_internal_a_tl \group_end: } @@ -3977,10 +3924,6 @@ % octets, so that is taken as read. % \begin{macrocode} \group_begin: - \char_set_catcode_active:N . - \char_set_catcode_active:N ! - \char_set_catcode_active:N ; - \char_set_catcode_active:N , \bool_if:nT { \sys_if_engine_pdftex_p: || \sys_if_engine_uptex_p: @@ -3991,24 +3934,39 @@ \quark_if_recursion_tail_stop:n {#1} \tl_set:Nx \l_@@_internal_a_tl { - \__unicode_codepoint_to_UTFiix:n {"#1} - \__unicode_codepoint_to_UTFiix:n {"#2} + \__unicode_codepoint_to_UTFviii:n {"#1} + \__unicode_codepoint_to_UTFviii:n {"#2} } \exp_after:wN \@@_tmp:w \l_@@_internal_a_tl \@@_loop:nn } \cs_set_protected:Npn \@@_tmp:w #1#2#3#4#5#6 { - \char_set_lccode:nn { `\. } {#2} - \char_set_lccode:nn { `\! } {#3} - \char_set_lccode:nn { `\; } {#5} - \char_set_lccode:nn { `\, } {#6} - \tex_lowercase:D + \tl_const:cx { - \tl_const:cn { c__unicode_lower_ \tl_to_str:n { . ! } _tl } - { ; , } - \tl_const:cn { c__unicode_upper_ \tl_to_str:n { ; , } _tl } - { . ! } + c__unicode_lower_ + \char_generate:nn {#2} { 12 } + \char_generate:nn {#3} { 12 } + _tl + } + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {#5} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {#6} { 13 } + } + \tl_const:cx + { + c__unicode_upper_ + \char_generate:nn {#5} { 12 } + \char_generate:nn {#6} { 12 } + _tl + } + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {#2} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {#3} { 13 } } } \@@_loop:nn @@ -4118,17 +4076,17 @@ \group_begin: \cs_set_protected:Npn \@@_tmp:w ##1##2##3 { - \char_set_lccode:nn { `\. } {##2} - \char_set_lccode:nn { `\! } {##3} - \tex_lowercase:D + \tl_const:cx { - \tl_const:cn - { c__unicode_ #3 _ \tl_to_str:n { . ! } _tl } + c__unicode_ #3 _ + \char_generate:nn {##2} { 12 } + \char_generate:nn {##3} { 12 } + _tl } - { #2 } + {#2} } \tl_set:Nx \l_@@_internal_a_tl - { \__unicode_codepoint_to_UTFiix:n { "#1 } } + { \__unicode_codepoint_to_UTFviii:n { "#1 } } \exp_after:wN \@@_tmp:w \l_@@_internal_a_tl \group_end: } @@ -4145,8 +4103,8 @@ \cs_set_protected:Npn \@@_change_case_setup:NN #1#2 { \quark_if_recursion_tail_stop:N #1 - \tl_const:cn { c_@@_change_case_lower_ \token_to_str:N #1 _tl } { #2 } - \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N #2 _tl } { #1 } + \tl_const:cn { c_@@_change_case_lower_ \token_to_str:N #1 _tl } { #2 } + \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N #2 _tl } { #1 } \@@_change_case_setup:NN } \@@_change_case_setup:NN @@ -4154,6 +4112,7 @@ \AE \ae \DH \dh \DJ \dj + \IJ \ij \L \l \NG \ng \O \o @@ -4162,8 +4121,8 @@ \TH \th \q_recursion_tail ? \q_recursion_stop - \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N \i _tl } { I } - \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N \j _tl } { J } + \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N \i _tl } { I } + \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N \j _tl } { J } \group_end: % \end{macrocode} % @@ -4171,7 +4130,8 @@ % A list of accents to leave alone. % \begin{macrocode} \tl_new:N \l_tl_case_change_accents_tl -\tl_set:Nn \l_tl_case_change_accents_tl { \" \^ \' \` \. \c \u \~ \H \v } +\tl_set:Nn \l_tl_case_change_accents_tl + { \" \' \. \^ \` \~ \c \H \k \r \t \u \v } % \end{macrocode} % \end{variable} % @@ -4472,248 +4432,6 @@ % \subsection{Additions to \pkg{l3tokens}} % % \begin{macrocode} -%<@@=char> -% \end{macrocode} -% -% \begin{macro} -% {^^A -% \char_set_active_eq:NN, \char_gset_active_eq:NN, -% \char_set_active_eq:Nc, \char_gset_active_eq:Nc, -% \char_set_active_eq:nN, \char_gset_active_eq:nN, -% \char_set_active_eq:nc, \char_gset_active_eq:nc -% } -% Four simple functions with very similar definitions, so set up using -% an auxiliary. -% \begin{macrocode} -\group_begin: - \char_set_catcode_active:N \^^@ - \cs_set_protected:Npn \@@_tmp:nN #1#2 - { - \cs_new_protected:cpn { #1 :nN } ##1 - { - \group_begin: - \char_set_catcode_active:n { ##1 } - \char_set_lccode:nn { `\^^@ } { ##1 } - \tex_lowercase:D { \group_end: #2 ^^@ } - } - \cs_new_protected:cpx { #1 :NN } ##1 - { \exp_not:c { #1 : nN } { `##1 } } - } - \@@_tmp:nN { char_set_active_eq } \cs_set_eq:NN - \@@_tmp:nN { char_gset_active_eq } \cs_gset_eq:NN -\group_end: -\cs_generate_variant:Nn \char_set_active_eq:NN { Nc } -\cs_generate_variant:Nn \char_gset_active_eq:NN { Nc } -\cs_generate_variant:Nn \char_set_active_eq:nN { nc } -\cs_generate_variant:Nn \char_gset_active_eq:nN { nc } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[EXP]{\char_generate:nn} -% \begin{macro}[EXP, aux]{\@@_generate_aux:nn} -% \begin{macro}[EXP, aux]{\@@_generate_aux:nnw} -% \begin{variable}{\l_@@_tmp_tl} -% \begin{variable}{\c_@@_max_int} -% \begin{macro}[EXP, aux]{\@@_generate_invalid_catcode:} -% The aim here is to generate characters of (broadly) arbitrary category -% code. Where possible, that is done using engine support (\XeTeX{}, -% \LuaTeX{}). There are though various issues which are covered below. At -% the interface layer, turn the two arguments into integers up-front so -% this is only done once. -% \begin{macrocode} -\cs_new:Npn \char_generate:nn #1#2 - { - \exp:w \exp_after:wN \@@_generate_aux:w - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 ; - } -% \end{macrocode} -% Before doing any actual conversion, first some special case filtering. -% The \tn{Ucharcat} primitive cannot make active chars, so that is turned -% off here: if the primitive gets altered then the code is already in -% place for 8-bit engines and will kick in for \LuaTeX{} too. Spaces -% are also banned here as \LuaTeX{} emulation only makes normal (charcode -% $32$ spaces. However, |^^@| is filtered out separately as that can't be -% done with macro emulation either, so is flagged up separately. That -% done, hand off to the engine-dependent part. -% \begin{macrocode} -\cs_new:Npn \@@_generate_aux:w #1 ; #2 ; - { - \if_int_compare:w #2 = \c_thirteen - \__msg_kernel_expandable_error:nn { kernel } { char-active } - \else: - \if_int_compare:w #2 = \c_ten - \if_int_compare:w #1 = \c_zero - \__msg_kernel_expandable_error:nn { kernel } { char-null-space } - \else: - \__msg_kernel_expandable_error:nn { kernel } { char-space } - \fi: - \else: - \if_int_odd:w 0 - \if_int_compare:w #2 < \c_one 1 \fi: - \if_int_compare:w #2 = \c_five 1 \fi: - \if_int_compare:w #2 = \c_nine 1 \fi: - \if_int_compare:w #2 > \c_thirteen 1 \fi: \exp_stop_f: - \__msg_kernel_expandable_error:nn { kernel } - { char-invalid-catcode } - \else: - \if_int_odd:w 0 - \if_int_compare:w #1 < \c_zero 1 \fi: - \if_int_compare:w #1 > \c_@@_max_int 1 \fi: \exp_stop_f: - \__msg_kernel_expandable_error:nn { kernel } - { char-out-of-range } - \else: - \@@_generate_aux:nnw {#1} {#2} - \fi: - \fi: - \fi: - \fi: - \exp_end: - } -\tl_new:N \l_@@_tmp_tl -% \end{macrocode} -% Engine-dependent definitions are now needed for the implementation. For -% \LuaTeX{} and recent \XeTeX{} releases there is engine-level support. -% They can do cases that macro emulation can't. All of those are filtered -% out here using a primitive-based boolean expression for speed. -% The final level is the basic definition at the engine level: the arguments -% here are integers so there is no need to worry about them too much. -% \begin{macrocode} -\group_begin: -%<*package> - \char_set_catcode_active:N \^^L - \cs_set_nopar:Npn ^^L { } -%</package> - \char_set_catcode_other:n { 0 } - \if_int_odd:w 0 - \cs_if_exist:NT \luatex_directlua:D { 1 } - \cs_if_exist:NT \utex_charcat:D { 1 } \exp_stop_f: - \int_const:Nn \c_@@_max_int { 1114111 } - \cs_if_exist:NTF \luatex_directlua:D - { - \cs_new:Npn \@@_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \exp_after:wN \exp_end: - \luatex_directlua:D { l3kernel.charcat(#1, #2) } - } - } - { - \cs_new:Npn \@@_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \exp_after:wN \exp_end: - \utex_charcat:D #1 ~ #2 ~ - } - } - \else: -% \end{macrocode} -% For engines where \tn{Ucharcat} isn't available (or emulated) then we have -% to work in macros, and cover only the $8$-bit range. The first stage is -% to build up a |tl| containing |^^@| with each category code that can -% be accessed in this way, with an error set up for the other cases. This -% is all done such that it can be quickly accessed using a |\if_case:w| -% low-level conditional. There are a few things to notice here. -% As |^^L| is |\outer| we need to locally set it to avoid a problem. -% To get open/close braces into the list, they are set up using |\if_false:| -% pairing here and will later be |x|-type expanded into the desired form. -% For making spaces, there needs to be an |o|-type expansion of a |\use:n| -% (or some other tokenization) to avoid dropping the space. We also -% set up active tokens although they are (currently) filtered out by the -% interface layer (\tn{Ucharcat} cannot make active tokens). -% \begin{macrocode} - \int_const:Nn \c_@@_max_int { 255 } - \tl_set:Nn \l_@@_tmp_tl { \exp_not:N \or: } - \char_set_catcode_group_begin:n { 0 } % { - \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \if_false: } } - \char_set_catcode_group_end:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { { \fi: \exp_not:N \or: ^^@ } % } - \tl_set:Nx \l_@@_tmp_tl { \l_@@_tmp_tl } - \char_set_catcode_math_toggle:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } - \char_set_catcode_alignment:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } - \tl_put_right:Nn \l_@@_tmp_tl { \or: } - \char_set_catcode_parameter:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } - \char_set_catcode_math_superscript:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } - \char_set_catcode_math_subscript:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } - \tl_put_right:Nn \l_@@_tmp_tl { \or: } - \char_set_catcode_space:n { 0 } - \tl_put_right:No \l_@@_tmp_tl { \use:n { \or: } ^^@ } - \char_set_catcode_letter:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } - \char_set_catcode_other:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } - \char_set_catcode_active:n { 0 } - \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } -% \end{macrocode} -% Convert the above temporary list into a series of constant token -% lists, one for each character code, using \tn{tex_lowercase:D} to -% convert |^^@| in each case. The \texttt{x}-type expansion deals with -% the |\if_false:| stuff introduced earlier. This is done in three parts -% as |^^L| is awkward. Notice that at this stage |^^@| is active. In -% format mode this is not needed. -% \begin{macrocode} - \cs_set_protected:Npn \@@_tmp:n #1 - { - \char_set_lccode:nn { 0 } {#1} - \char_set_lccode:nn { 32 } {#1} - \exp_args:Nx \tex_lowercase:D - { - \tl_const:Nn - \exp_not:c { c_@@_ \__int_to_roman:w #1 _tl } - { \exp_not:o \l_@@_tmp_tl } - } - } -%<*package> - \int_step_function:nnnN { 0 } { 1 } { 11 } \@@_tmp:n - \group_begin: - \tl_replace_once:Nnn \l_@@_tmp_tl { ^^@ } { \ERROR } - \@@_tmp:n { 12 } - \group_end: - \int_step_function:nnnN { 13 } { 1 } { 255 } \@@_tmp:n -%</package> -%<*initex> - \int_step_function:nnnN { 0 } { 1 } { 255 } \@@_tmp:n -%</initex> - \cs_new:Npn \@@_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \exp_after:wN \exp_after:wN - \exp_after:wN \exp_end: - \exp_after:wN \exp_after:wN - \if_case:w #2 - \exp_last_unbraced:Nv \exp_stop_f: - { c_@@_ \__int_to_roman:w #1 _tl } - \fi: - } - \fi: -\group_end: -% \end{macrocode} -% Job done, set up a few messages. -% \begin{macrocode} -\__msg_kernel_new:nnn { kernel } { char-active } - { Cannot~generate~active~chars. } -\__msg_kernel_new:nnn { kernel } { char-invalid-catcode } - { Invalid~catcode~for~char~generation. } -\__msg_kernel_new:nnn { kernel } { char-null-space } - { Cannot~generate~null~char~as~a~space. } -\__msg_kernel_new:nnn { kernel } { char-out-of-range } - { Charcode~requested~out~of~engine~range. } -\__msg_kernel_new:nnn { kernel } { char-space } - { Cannot~generate~space~chars. } -% \end{macrocode} -% \end{macro} -% \end{variable} -% \end{variable} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macrocode} %<@@=peek> % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index 17cdb15379e..22f322f2498 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3coffins.dtx Copyright(C) 2010-2015 The LaTeX3 Project +%% File: l3coffins.dtx Copyright(C) 2010-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -38,7 +38,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3coffins.dtx 5789 2015-08-06 02:32:11Z bruno $ +\GetIdInfo$Id: l3coffins.dtx 6440 2016-03-24 09:59:29Z joseph $ {L3 Coffin code layer} %</driver|package> %<*driver> @@ -839,13 +839,13 @@ \cs_new_protected:Npn \@@_update_corners:N #1 { \prop_put:cnx { l_@@_corners_ \__int_value:w #1 _prop } { tl } - { { 0 pt } { \dim_use:N \box_ht:N #1 } } + { { 0 pt } { \dim_eval:n { \box_ht:N #1 } } } \prop_put:cnx { l_@@_corners_ \__int_value:w #1 _prop } { tr } - { { \dim_use:N \box_wd:N #1 } { \dim_use:N \box_ht:N #1 } } + { { \dim_eval:n { \box_wd:N #1 } } { \dim_eval:n { \box_ht:N #1 } } } \prop_put:cnx { l_@@_corners_ \__int_value:w #1 _prop } { bl } { { 0 pt } { \dim_eval:n { - \box_dp:N #1 } } } \prop_put:cnx { l_@@_corners_ \__int_value:w #1 _prop } { br } - { { \dim_use:N \box_wd:N #1 } { \dim_eval:n { - \box_dp:N #1 } } } + { { \dim_eval:n { \box_wd:N #1 } } { \dim_eval:n { -\box_dp:N #1 } } } } % \end{macrocode} % \end{macro} @@ -866,7 +866,7 @@ } \prop_put:cnx { l_@@_poles_ \__int_value:w #1 _prop } { r } { - { \dim_use:N \box_wd:N #1 } + { \dim_eval:n { \box_wd:N #1 } } { 0 pt } { 0 pt } { 1000 pt } } \prop_put:cnx { l_@@_poles_ \__int_value:w #1 _prop } { vc } @@ -879,7 +879,7 @@ \prop_put:cnx { l_@@_poles_ \__int_value:w #1 _prop } { t } { { 0 pt } - { \dim_use:N \box_ht:N #1 } + { \dim_eval:n { \box_ht:N #1 } } { 1000 pt } { 0 pt } } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index ac09c7635d3..0a7199928e0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3doc.dtx Copyright (C) 1990-2015 The LaTeX3 project +%% File: l3doc.dtx Copyright (C) 1990-2016 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -75,7 +75,7 @@ Do not distribute a modified version of this file. % %<*driver|class> \RequirePackage{expl3,xparse,calc} -\GetIdInfo$Id: l3doc.dtx 6037 2015-09-23 12:41:15Z joseph $ +\GetIdInfo$Id: l3doc.dtx 6448 2016-03-25 12:27:53Z bruno $ {L3 Experimental documentation class} %</driver|class> % @@ -2973,7 +2973,6 @@ Do not distribute a modified version of this file. % before and after the assignment). Is this a waste? % \begin{macrocode} \group_begin: - \char_set_catcode_escape:N \/ \char_set_catcode_other:N \^^A \char_set_catcode_active:N \^^S \char_set_catcode_active:N \^^B @@ -2989,7 +2988,7 @@ Do not distribute a modified version of this file. \group_end: \cs_set_protected:Npn \xmacro@code #1 ^^A ^^S^^S^^S^^S ^^Bend ^^Lmacrocode^^R - { \@@_xmacro_code:n {#1} /end{macrocode} } + { \@@_xmacro_code:n {#1} \end{macrocode} } } \group_begin: \char_set_catcode_active:N \< diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 1c904d50bf3..a60bb8819b0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3file.dtx Copyright (C) 1990-2015 The LaTeX3 Project +%% File: l3file.dtx Copyright (C) 1990-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3file.dtx 6317 2015-12-03 16:25:17Z joseph $ +\GetIdInfo$Id: l3file.dtx 6458 2016-03-25 21:19:04Z joseph $ {L3 File and I/O operations} %</driver|package> %<*driver> @@ -1549,15 +1549,9 @@ % \end{macro} % % \begin{macro}{\c_catcode_other_space_tl} -% Lowercase a character with category code $12$ to produce an -% \enquote{other} space. We can do everything within the group, -% because \cs{tl_const:Nn} defines its argument globally. +% Create a space with category code $12$: an \enquote{other} space. % \begin{macrocode} -\group_begin: - \char_set_catcode_other:N \* - \char_set_lccode:nn {`\*} {`\ } - \tex_lowercase:D { \tl_const:Nn \c_catcode_other_space_tl { * } } -\group_end: +\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index 96ffcd918fc..2a62d525d4a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3final.dtx Copyright (C) 1990-2015 The LaTeX3 Project +%% File: l3final.dtx Copyright (C) 1990-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -35,7 +35,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3final.dtx 6320 2015-12-15 09:49:47Z joseph $ +\GetIdInfo$Id: l3final.dtx 6411 2016-02-12 21:06:00Z joseph $ {L3 Experimental format finalisation} \begin{document} \DocInput{\jobname.dtx} @@ -260,16 +260,88 @@ % % \subsection{Temporary hacks} % -% \begin{macro}{\T1/lmr/m/n/10} +% \begin{macro}{\T1/lmr/m/n/10, \TU/lmr/m/n/10} % For \emph{testing only} provide some kind of output: for that we % need a font. At present, select Latin Modern Roman at 10\,pt: % entirely arbitrary but at least usable. % \begin{macrocode} -\tex_everypar:D \exp_after:wN +\sys_if_engine_luatex:T { - \exp_after:wN \tex_font:D \cs:w T1/lmr/m/n/10 \cs_end: - = ec-lmr10 \scan_stop: - \use:c { T1/lmr/m/n/10 } + \tex_everyjob:D \exp_after:wN + { + \tex_the:D \tex_everyjob:D + \lua_now_x:n { require("l3format.lua") } + } + } +\use:x + { + \tex_everyjob:D + { + \tex_the:D \tex_everyjob:D + \bool_if:nTF + { + \sys_if_engine_luatex_p: || + \sys_if_engine_xetex_p: + } + { + \tex_font:D \exp_not:c { TU/lmr/m/n/10 } + = "[lmroman10-regular.otf]/OT" \scan_stop: + \exp_not:c { TU/lmr/m/n/10 } + \tex_font:D \exp_not:c { TU/lmm/m/n/10 } + = "[latinmodern-math.otf]/OT:mode=base;script=math;" \scan_stop: + \tex_font:D \exp_not:c { TU/lmm/m/n/7 } + = "[latinmodern-math.otf]/OT:mode=base;script=math;+ssty=0;"~at~7pt \scan_stop: + \tex_font:D \exp_not:c { TU/lmm/m/n/5 } + = "[latinmodern-math.otf]/OT:mode=base;script=math;+ssty=1;"~at~5pt \scan_stop: + \exp_not:N \int_step_inline:nnnn { 0 } { 1 } { 3 } + { + \tex_textfont:D ##1 = \exp_not:c { TU/lmm/m/n/10 } + \tex_scriptfont:D ##1 = \exp_not:c { TU/lmm/m/n/7 } + \tex_scriptscriptfont:D ##1 = \exp_not:c { TU/lmm/m/n/5 } + } + } + { + \tex_font:D \exp_not:c { T1/lmr/m/n/10 } + = ec-lmr10 \scan_stop: + \exp_not:c { T1/lmr/m/n/10 } + \tex_font:D \exp_not:c { OT1/lmr/m/n/10 } + = rm-lmr10 \scan_stop: + \tex_font:D \exp_not:c { OML/lmm/m/it/10 } + = lmmi10 \scan_stop: + \tex_font:D \exp_not:c { OMS/lmsy/m/n/10 } + = lmsy10 \scan_stop: + \tex_font:D \exp_not:c { OMX/lmex/m/n/10 } + = lmex10 \scan_stop: + \tex_font:D \exp_not:c { OT1/lmr/m/n/7 } + = rm-lmr7 \scan_stop: + \tex_font:D \exp_not:c { OML/lmm/m/it/7 } + = lmmi7 \scan_stop: + \tex_font:D \exp_not:c { OMS/lmsy/m/n/7 } + = lmsy7 \scan_stop: + \tex_font:D \exp_not:c { OMX/lmex/m/n/7 } + = lmex10~at~7pt \scan_stop: + \tex_font:D \exp_not:c { OT1/lmr/m/n/5 } + = rm-lmr5 \scan_stop: + \tex_font:D \exp_not:c { OML/lmm/m/it/5 } + = lmmi5 \scan_stop: + \tex_font:D \exp_not:c { OMS/lmsy/m/n/5 } + = lmsy5 \scan_stop: + \tex_font:D \exp_not:c { OMX/lmex/m/n/5 } + = lmex10~at~5pt \scan_stop: + \tex_textfont:D 0 = \exp_not:c { OT1/lmr/m/n/10 } + \tex_textfont:D 1 = \exp_not:c { OML/lmm/m/it/10 } + \tex_textfont:D 2 = \exp_not:c { OMS/lmsy/m/n/10 } + \tex_textfont:D 3 = \exp_not:c { OMX/lmex/m/n/10 } + \tex_scriptfont:D 0 = \exp_not:c { OT1/lmr/m/n/7 } + \tex_scriptfont:D 1 = \exp_not:c { OML/lmm/m/it/7 } + \tex_scriptfont:D 2 = \exp_not:c { OMS/lmsy/m/n/7 } + \tex_scriptfont:D 3 = \exp_not:c { OMX/lmex/m/n/7 } + \tex_scriptscriptfont:D 0 = \exp_not:c { OT1/lmr/m/n/5 } + \tex_scriptscriptfont:D 1 = \exp_not:c { OML/lmm/m/it/5 } + \tex_scriptscriptfont:D 2 = \exp_not:c { OMS/lmsy/m/n/5 } + \tex_scriptscriptfont:D 3 = \exp_not:c { OMX/lmex/m/n/5 } + } + } } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3format.ins b/Master/texmf-dist/source/latex/l3kernel/l3format.ins index 381cf7ce0fe..1dabe7732ed 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3format.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3format.ins @@ -104,6 +104,7 @@ Do not distribute a modified version of this file. \endpreamble \nopostamble -\generate{\file{expl3.lua}{\from{l3luatex.dtx}{package,lua}}} +\generate{\file{expl3.lua} {\from{l3luatex.dtx}{lua,package}}} +\generate{\file{l3format.lua}{\from{l3luatex.dtx}{fontloader}}} \endbatchfile diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx index aaa08b12204..0c60dc96abe 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-aux.dtx Copyright(C) 2011-2014 The LaTeX3 Project +%% File: l3fp-aux.dtx Copyright(C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-aux.dtx 5893 2015-08-26 16:16:52Z mittelba $ +\GetIdInfo$Id: l3fp-aux.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Floating-point support functions} \documentclass[full]{l3doc} \begin{document} @@ -543,7 +543,7 @@ % \begin{verbatim} % \cs_new:Npn \pack:NNNNNw #1 #2#3#4#5 #6; { {#2#3#4#5} {#6} } % \exp_after:wN \pack:NNNNNw -% \int_use:N \__int_eval:w 1 0000 0000 + #1 ; +% \__int_value:w \__int_eval:w 1 0000 0000 + #1 ; % \end{verbatim} % The idea is that adding $10^8$ to the number ensures that it has % exactly $9$ digits, and can then easily find which digits correspond @@ -558,19 +558,19 @@ % 6677\,8899$. With simplified names, we would do % \begin{verbatim} % \exp_after:wN \post_processing:w -% \int_use:N \__int_eval:w - 5 0000 +% \__int_value:w \__int_eval:w - 5 0000 % \exp_after:wN \pack:NNNNNw -% \int_use:N \__int_eval:w 4 9995 0000 +% \__int_value:w \__int_eval:w 4 9995 0000 % + 12345 * 6677 % \exp_after:wN \pack:NNNNNw -% \int_use:N \__int_eval:w 5 0000 0000 +% \__int_value:w \__int_eval:w 5 0000 0000 % + 12345 * 8899 ; % \end{verbatim} -% The \cs{exp_after:wN} triggers |\int_use:N \__int_eval:w|, which +% The \cs{exp_after:wN} triggers |\__int_value:w \__int_eval:w|, which % starts a first computation, whose initial value is $- 5\,0000$ (the % \enquote{leading shift}). In that computation appears an % \cs{exp_after:wN}, which triggers the nested computation -% |\int_use:N \__int_eval:w| with starting value $4\,9995\,0000$ (the +% |\__int_value:w \__int_eval:w| with starting value $4\,9995\,0000$ (the % \enquote{middle shift}). That, in turn, expands \cs{exp_after:wN} % which triggers the third computation. The third computation's value % is $5\,0000\,0000 + 12345 \times 8899$, which has $9$ digits. Adding @@ -1022,7 +1022,7 @@ % \begin{macrocode} \cs_new:Npn \@@_array_count:n #1 { - \int_use:N \__int_eval:w \c_zero + \__int_value:w \__int_eval:w \c_zero \@@_array_count_loop:Nw #1 { ? \__prg_break: } ; \__prg_break_point: \__int_eval_end: diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 177e8246a94..cc540f60ee4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-basics.dtx Copyright (C) 2011-2014 The LaTeX3 Project +%% File: l3fp-basics.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-basics.dtx 5354 2014-08-23 01:35:39Z bruno $ +\GetIdInfo$Id: l3fp-basics.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Floating-point arithmetic} \begin{document} \DocInput{\jobname.dtx} @@ -336,7 +336,7 @@ { \exp_after:wN \@@_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_compare:w #2 > #5 \exp_stop_f: #2 \exp_after:wN \@@_add_big_i_o:wNww \__int_value:w - @@ -400,9 +400,9 @@ \cs_new:Npn \@@_add_significand_o:NnnwnnnnN #1 #2#3 #4; #5#6#7#8 { \exp_after:wN \@@_add_significand_test_o:N - \int_use:N \__int_eval:w 1#5#6 + #2 + \__int_value:w \__int_eval:w 1#5#6 + #2 \exp_after:wN \@@_add_significand_pack:NNNNNNN - \int_use:N \__int_eval:w 1#7#8 + #3 ; #1 + \__int_value:w \__int_eval:w 1#7#8 + #3 ; #1 } \cs_new:Npn \@@_add_significand_pack:NNNNNNN #1 #2#3#4#5#6#7 { @@ -437,9 +437,9 @@ #1; #2; #3#4 ; #5#6 { \exp_after:wN \@@_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1 #1 + \__int_value:w \__int_eval:w 1 #1 \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1 #2 #3#4 + \__int_value:w \__int_eval:w 1 #2 #3#4 + \@@_round:NNN #6 #4 #5 \exp_after:wN ; } @@ -460,9 +460,9 @@ { + \c_one \exp_after:wN \@@_basics_pack_weird_high:NNNNNNNNw - \int_use:N \__int_eval:w 1 1 #1 + \__int_value:w \__int_eval:w 1 1 #1 \exp_after:wN \@@_basics_pack_weird_low:NNNNw - \int_use:N \__int_eval:w 1 #2#3 + + \__int_value:w \__int_eval:w 1 #2#3 + \exp_after:wN \@@_round:NNN \exp_after:wN #6 \exp_after:wN #3 @@ -503,7 +503,7 @@ \cs_new:Npn \@@_sub_npos_ii_o:Nnwnw #1 #2; #3; { \exp_after:wN \@@_sub_npos_i_o:Nnwnw - \int_use:N \__int_eval:w \c_two - #1 \__int_eval_end: + \__int_value:w \__int_eval:w \c_two - #1 \__int_eval_end: #3; #2; } % \end{macrocode} @@ -525,13 +525,13 @@ { \exp_after:wN \@@_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w #2 \if_int_compare:w #2 = #4 \exp_stop_f: \exp_after:wN \@@_sub_back_near_o:nnnnnnnnN \else: \exp_after:wN \@@_decimate:nNnnnn \exp_after:wN - { \int_use:N \__int_eval:w #2 - #4 - \c_one \exp_after:wN } + { \__int_value:w \__int_eval:w #2 - #4 - \c_one \exp_after:wN } \exp_after:wN \@@_sub_back_far_o:NnnwnnnnN \fi: #5 @@ -560,9 +560,9 @@ \cs_new:Npn \@@_sub_back_near_o:nnnnnnnnN #1#2#3#4 #5#6#7#8 #9 { \exp_after:wN \@@_sub_back_near_after:wNNNNw - \int_use:N \__int_eval:w 10#5#6 - #1#2 - \c_eleven + \__int_value:w \__int_eval:w 10#5#6 - #1#2 - \c_eleven \exp_after:wN \@@_sub_back_near_pack:NNNNNNw - \int_use:N \__int_eval:w 11#7#8 - #3#4 \exp_after:wN ; + \__int_value:w \__int_eval:w 11#7#8 - #3#4 \exp_after:wN ; } \cs_new:Npn \@@_sub_back_near_pack:NNNNNNw #1#2#3#4#5#6#7 ; { + #1#2 ; {#3#4#5#6} {#7} ; } @@ -717,9 +717,9 @@ { - \c_one \exp_after:wN \@@_sub_back_near_after:wNNNNw - \int_use:N \__int_eval:w 1#30 - #1 - \c_eleven + \__int_value:w \__int_eval:w 1#30 - #1 - \c_eleven \exp_after:wN \@@_sub_back_near_pack:NNNNNNw - \int_use:N \__int_eval:w 11 0000 0000 + #40 - #2 + \__int_value:w \__int_eval:w 11 0000 0000 + #40 - #2 - \exp_after:wN \@@_round_neg:NNN \exp_after:wN #6 \use_none:nnnnnnn #2 #5 @@ -750,9 +750,9 @@ \cs_new:Npn \@@_sub_back_very_far_ii_o:nnNwwNN #1#2 ; #3 ; #4 ~ #5; #6#7 { \exp_after:wN \@@_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1#4 - #1 - \c_one + \__int_value:w \__int_eval:w 1#4 - #1 - \c_one \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 2#5 - #2 + \__int_value:w \__int_eval:w 2#5 - #2 - \exp_after:wN \@@_round_neg:NNN \exp_after:wN #7 \__int_value:w @@ -872,7 +872,7 @@ { \exp_after:wN \@@_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w #4 + #8 \@@_mul_significand_o:nnnnNnnnn #5 #1 #9 } @@ -907,19 +907,19 @@ { \exp_after:wN \@@_mul_significand_test_f:NNN \exp_after:wN #5 - \int_use:N \__int_eval:w 99990000 + #1*#6 + + \__int_value:w \__int_eval:w 99990000 + #1*#6 + \exp_after:wN \@@_mul_significand_keep:NNNNNw - \int_use:N \__int_eval:w 99990000 + #1*#7 + #2*#6 + + \__int_value:w \__int_eval:w 99990000 + #1*#7 + #2*#6 + \exp_after:wN \@@_mul_significand_keep:NNNNNw - \int_use:N \__int_eval:w 99990000 + #1*#8 + #2*#7 + #3*#6 + + \__int_value:w \__int_eval:w 99990000 + #1*#8 + #2*#7 + #3*#6 + \exp_after:wN \@@_mul_significand_drop:NNNNNw - \int_use:N \__int_eval:w 99990000 + #1*#9 + #2*#8 + #3*#7 + #4*#6 + + \__int_value:w \__int_eval:w 99990000 + #1*#9 + #2*#8 + #3*#7 + #4*#6 + \exp_after:wN \@@_mul_significand_drop:NNNNNw - \int_use:N \__int_eval:w 99990000 + #2*#9 + #3*#8 + #4*#7 + + \__int_value:w \__int_eval:w 99990000 + #2*#9 + #3*#8 + #4*#7 + \exp_after:wN \@@_mul_significand_drop:NNNNNw - \int_use:N \__int_eval:w 99990000 + #3*#9 + #4*#8 + + \__int_value:w \__int_eval:w 99990000 + #3*#9 + #4*#8 + \exp_after:wN \@@_mul_significand_drop:NNNNNw - \int_use:N \__int_eval:w 100000000 + #4*#9 ; + \__int_value:w \__int_eval:w 100000000 + #4*#9 ; ; \exp_after:wN ; } \cs_new:Npn \@@_mul_significand_drop:NNNNNw #1#2#3#4#5 #6; @@ -967,9 +967,9 @@ \cs_new:Npn \@@_mul_significand_large_f:NwwNNNN #1 #2; #3; #4#5#6#7; + { \exp_after:wN \@@_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1#2 + \__int_value:w \__int_eval:w 1#2 \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1#3#4#5#6#7 + \__int_value:w \__int_eval:w 1#3#4#5#6#7 + \exp_after:wN \@@_round:NNN \exp_after:wN #1 \exp_after:wN #7 @@ -990,9 +990,9 @@ { - \c_one \exp_after:wN \@@_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1#3#4 + \__int_value:w \__int_eval:w 1#3#4 \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1#5#6#7 + \__int_value:w \__int_eval:w 1#5#6#7 + \exp_after:wN \@@_round:NNN \exp_after:wN #1 \exp_after:wN #7 @@ -1060,10 +1060,10 @@ { \exp_after:wN \@@_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w #3 - #6 \exp_after:wN \@@_div_significand_i_o:wnnw - \int_use:N \__int_eval:w #7 \use_i:nnnn #8 + \c_one ; + \__int_value:w \__int_eval:w #7 \use_i:nnnn #8 + \c_one ; #4 {#7}{#8}#9 ; #1 @@ -1259,9 +1259,9 @@ \cs_new:Npn \@@_div_significand_i_o:wnnw #1 ; #2#3 #4 ; { \exp_after:wN \@@_div_significand_test_o:w - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \@@_div_significand_calc:wwnnnnnnn - \int_use:N \__int_eval:w 999999 + #2 #3 0 / #1 ; + \__int_value:w \__int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ; #4 { \exp_after:wN \@@_div_significand_ii:wwn \__int_value:w #1 } @@ -1343,16 +1343,16 @@ { 1 1 #1 #9 \exp_after:wN ; - \int_use:N \__int_eval:w \c_@@_Bigg_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_Bigg_leading_shift_int + #2 - #1 * #5 - #5#60 \exp_after:wN \@@_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c_@@_Bigg_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_Bigg_middle_shift_int + #3 - #1 * #6 - #70 \exp_after:wN \@@_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c_@@_Bigg_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_Bigg_middle_shift_int + #4 - #1 * #7 - #80 \exp_after:wN \@@_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c_@@_Bigg_trailing_shift_int + \__int_value:w \__int_eval:w \c_@@_Bigg_trailing_shift_int - #1 * #8 ; {#5}{#6}{#7}{#8} } @@ -1360,16 +1360,16 @@ { 1 0 #1 #9 \exp_after:wN ; - \int_use:N \__int_eval:w \c_@@_Bigg_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_Bigg_leading_shift_int + #2 - #1 * #5 \exp_after:wN \@@_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c_@@_Bigg_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_Bigg_middle_shift_int + #3 - #1 * #6 \exp_after:wN \@@_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c_@@_Bigg_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_Bigg_middle_shift_int + #4 - #1 * #7 \exp_after:wN \@@_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c_@@_Bigg_trailing_shift_int + \__int_value:w \__int_eval:w \c_@@_Bigg_trailing_shift_int - #1 * #8 ; {#5}{#6}{#7}{#8} } @@ -1396,9 +1396,9 @@ \cs_new:Npn \@@_div_significand_ii:wwn #1; #2;#3 { \exp_after:wN \@@_div_significand_pack:NNN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \@@_div_significand_calc:wwnnnnnnn - \int_use:N \__int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ; + \__int_value:w \__int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ; } % \end{macrocode} % \end{macro} @@ -1418,7 +1418,7 @@ { 0 \exp_after:wN \@@_div_significand_iv:wwnnnnnnn - \int_use:N \__int_eval:w (\c_two * #2 #3) / #6 #7 ; % <- P + \__int_value:w \__int_eval:w (\c_two * #2 #3) / #6 #7 ; % <- P #2 ; {#3} {#4} {#5} {#6} {#7} } @@ -1477,11 +1477,11 @@ { + \c_five * #1 \exp_after:wN \@@_div_significand_vi:Nw - \int_use:N \__int_eval:w -20 + 2*#2#3 - #1*#6#7 + + \__int_value:w \__int_eval:w -20 + 2*#2#3 - #1*#6#7 + \exp_after:wN \@@_div_significand_v:NN - \int_use:N \__int_eval:w 199980 + 2*#4 - #1*#8 + + \__int_value:w \__int_eval:w 199980 + 2*#4 - #1*#8 + \exp_after:wN \@@_div_significand_v:NN - \int_use:N \__int_eval:w 200000 + 2*#5 - #1*#9 ; + \__int_value:w \__int_eval:w 200000 + 2*#5 - #1*#9 ; } \cs_new:Npn \@@_div_significand_v:NN #1#2 { #1#2 \__int_eval_end: + } \cs_new:Npn \@@_div_significand_vi:Nw #1#2; @@ -1557,9 +1557,9 @@ 0 #1; #2; #3; #4#5#6#7#8; #9 { \exp_after:wN \@@_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1 #1#2 + \__int_value:w \__int_eval:w 1 #1#2 \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1 #3#4#5#6#7 + \__int_value:w \__int_eval:w 1 #3#4#5#6#7 + \@@_round:NNN #9 #7 #8 \exp_after:wN ; } @@ -1581,9 +1581,9 @@ { + \c_one \exp_after:wN \@@_basics_pack_weird_high:NNNNNNNNw - \int_use:N \__int_eval:w 1 #1 #2 + \__int_value:w \__int_eval:w 1 #1 #2 \exp_after:wN \@@_basics_pack_weird_low:NNNNw - \int_use:N \__int_eval:w 1 #3 #4 #5 #6 + + \__int_value:w \__int_eval:w 1 #3 #4 #5 #6 + \exp_after:wN \@@_round:NNN \exp_after:wN #9 \exp_after:wN #6 @@ -1631,7 +1631,7 @@ { \exp_after:wN \@@_sanitize:Nw \exp_after:wN 0 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_odd:w #1 \exp_stop_f: \exp_after:wN \@@_sqrt_npos_auxi_o:wwnnN \fi: @@ -1720,11 +1720,11 @@ { \if_int_compare:w #1 = #2 \exp_stop_f: \exp_after:wN \@@_sqrt_auxi_o:NNNNwnnN - \int_use:N \__int_eval:w 9999 9999 + + \__int_value:w \__int_eval:w 9999 9999 + \exp_after:wN \@@_use_none_until_s:w \fi: \exp_after:wN \@@_sqrt_Newton_o:wwn - \int_use:N \__int_eval:w (#1 + #3 * 1 0000 0000 / #1) / \c_two ; + \__int_value:w \__int_eval:w (#1 + #3 * 1 0000 0000 / #1) / \c_two ; #1; {#3} } % \end{macrocode} @@ -1813,32 +1813,32 @@ \cs_new:Npn \@@_sqrt_auxii_o:NnnnnnnnN #1 #2#3#4#5#6 #7#8#9 { \exp_after:wN #1 - \int_use:N \__int_eval:w \c_@@_big_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_big_leading_shift_int + #7 - #2 * #2 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int - 2 * #2 * #3 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int + #8 - #3 * #3 - 2 * #2 * #4 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int - 2 * #3 * #4 - 2 * #2 * #5 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int + #9 000 0000 - #4 * #4 - 2 * #3 * #5 - 2 * #2 * #6 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int - 2 * #4 * #5 - 2 * #3 * #6 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int - #5 * #5 - 2 * #4 * #6 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int - 2 * #5 * #6 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \c_@@_big_trailing_shift_int - #6 * #6 ; % ( @@ -1896,18 +1896,18 @@ { \if_int_compare:w #1 > \c_one \exp_after:wN \@@_sqrt_auxiv_o:NNNNNw - \int_use:N \__int_eval:w (#1#2 %) + \__int_value:w \__int_eval:w (#1#2 %) \else: \if_int_compare:w #1#2 > \c_one \exp_after:wN \@@_sqrt_auxv_o:NNNNNw - \int_use:N \__int_eval:w (#1#2#3 %) + \__int_value:w \__int_eval:w (#1#2#3 %) \else: \if_int_compare:w #1#2#3 > \c_one \exp_after:wN \@@_sqrt_auxvi_o:NNNNNw - \int_use:N \__int_eval:w (#1#2#3#4 %) + \__int_value:w \__int_eval:w (#1#2#3#4 %) \else: \exp_after:wN \@@_sqrt_auxvii_o:NNNNNw - \int_use:N \__int_eval:w (#1#2#3#4#5 %) + \__int_value:w \__int_eval:w (#1#2#3#4#5 %) \fi: \fi: \fi: @@ -1937,11 +1937,11 @@ \cs_new:Npn \@@_sqrt_auxviii_o:nnnnnnn #1#2 #3#4#5#6#7 { \exp_after:wN \@@_sqrt_auxix_o:wnwnw - \int_use:N \__int_eval:w #3 + \__int_value:w \__int_eval:w #3 \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w #1 + 1#4#5 + \__int_value:w \__int_eval:w #1 + 1#4#5 \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w #2 + 1#6#7 ; + \__int_value:w \__int_eval:w #2 + 1#6#7 ; } \cs_new:Npn \@@_sqrt_auxix_o:wnwnw #1; #2#3; #4#5; { @@ -1987,7 +1987,7 @@ \cs_new:Npn \@@_sqrt_auxx_o:Nnnnnnnn #1#2#3 #4#5#6#7#8 { \exp_after:wN \@@_sqrt_auxxi_o:wwnnN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w (#8 + 2499) / 5000 * 5000 ; {#4} {#5} {#6} {#7} ; } @@ -2065,9 +2065,9 @@ \cs_new:Npn \@@_sqrt_auxxiv_o:wnnnnnnnN #1; #2#3#4#5#6 #7#8#9 { \exp_after:wN \@@_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1 0000 0000 + #2#3 + \__int_value:w \__int_eval:w 1 0000 0000 + #2#3 \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1 0000 0000 + \__int_value:w \__int_eval:w 1 0000 0000 + #4#5 \if_int_compare:w #6 > #1 \exp_stop_f: + \c_one \fi: + \exp_after:wN \@@_round:NNN @@ -2076,7 +2076,7 @@ \__int_value:w \exp_after:wN \use_i:nn \exp_after:wN \@@_round_digit:Nw - \int_use:N \__int_eval:w #6 + 19999 - #1 ; + \__int_value:w \__int_eval:w #6 + 19999 - #1 ; \exp_after:wN ; } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index dd30a2f4ff0..69c8a7dc71a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-convert.dtx Copyright(C) 2011-2014 The LaTeX3 Project +%% File: l3fp-convert.dtx Copyright(C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-convert.dtx 5983 2015-09-10 18:57:56Z joseph $ +\GetIdInfo$Id: l3fp-convert.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Floating-point conversion} \begin{document} \DocInput{\jobname.dtx} @@ -138,54 +138,46 @@ % \enquote{invalid_operation} exception. In the normal case, % decrement the exponent and unbrace the $4$ brace groups, then in a % second step grab the first digit (previously hidden in braces) to -% order the various parts correctly. Finally trim zeros. The whole -% construction is within a call to \cs{tl_to_lowercase:n}, responsible -% for creating |e| with category \enquote{other}. +% order the various parts correctly. Finally trim zeros. % \begin{macrocode} -\group_begin: -\char_set_catcode_other:N E -\tl_to_lowercase:n +\cs_new:Npn \@@_to_scientific_dispatch:w \s_@@ \@@_chk:w #1#2 { - \group_end: - \cs_new:Npn \@@_to_scientific_dispatch:w \s_@@ \@@_chk:w #1#2 - { - \if_meaning:w 2 #2 \exp_after:wN - \exp:w \exp_end_continue_f:w \fi: - \if_case:w #1 \exp_stop_f: - \@@_case_return:nw { 0 } - \or: \exp_after:wN \@@_to_scientific_normal:wnnnnn - \or: - \@@_case_use:nw - { - \@@_invalid_operation:nnw - { - \exp_after:wN 1 - \exp_after:wN E - \int_use:N \c_@@_max_exponent_int - } - { fp_to_scientific } - } - \or: - \@@_case_use:nw + \if_meaning:w 2 #2 \exp_after:wN - \exp:w \exp_end_continue_f:w \fi: + \if_case:w #1 \exp_stop_f: + \@@_case_return:nw { 0 } + \or: \exp_after:wN \@@_to_scientific_normal:wnnnnn + \or: + \@@_case_use:nw + { + \@@_invalid_operation:nnw { - \@@_invalid_operation:nnw - { 0 } - { fp_to_scientific } + \exp_after:wN 1 + \exp_after:wN e + \int_use:N \c_@@_max_exponent_int } - \fi: - \s_@@ \@@_chk:w #1 #2 - } - \cs_new:Npn \@@_to_scientific_normal:wnnnnn - \s_@@ \@@_chk:w 1 #1 #2 #3#4#5#6 ; - { - \if_int_compare:w #2 = \c_one - \exp_after:wN \@@_to_scientific_normal:wNw - \else: - \exp_after:wN \@@_to_scientific_normal:wNw - \exp_after:wN E - \int_use:N \__int_eval:w #2 - \c_one - \fi: - ; #3 #4 #5 #6 ; - } + { fp_to_scientific } + } + \or: + \@@_case_use:nw + { + \@@_invalid_operation:nnw + { 0 } + { fp_to_scientific } + } + \fi: + \s_@@ \@@_chk:w #1 #2 + } +\cs_new:Npn \@@_to_scientific_normal:wnnnnn + \s_@@ \@@_chk:w 1 #1 #2 #3#4#5#6 ; + { + \if_int_compare:w #2 = \c_one + \exp_after:wN \@@_to_scientific_normal:wNw + \else: + \exp_after:wN \@@_to_scientific_normal:wNw + \exp_after:wN e + \__int_value:w \__int_eval:w #2 - \c_one + \fi: + ; #3 #4 #5 #6 ; } \cs_new:Npn \@@_to_scientific_normal:wNw #1 ; #2#3; { \@@_trim_zeros:w #2.#3 ; #1 } @@ -325,8 +317,8 @@ \if_case:w #1 \exp_stop_f: \@@_case_return:nw { 0 } \or: \exp_after:wN \@@_to_tl_normal:nnnnn - \or: \@@_case_return:nw { \tl_to_str:n {inf} } - \else: \@@_case_return:nw { \tl_to_str:n {nan} } + \or: \@@_case_return:nw { inf } + \else: \@@_case_return:nw { nan } \fi: } \cs_new:Npn \@@_to_tl_normal:nnnnn #1 @@ -360,11 +352,11 @@ % These three public functions rely on \cs{fp_to_decimal:n} % internally. We make sure to produce |pt| with category other. % \begin{macrocode} -\cs_new:Npx \fp_to_dim:N #1 - { \exp_not:N \fp_to_decimal:N #1 \tl_to_str:n {pt} } +\cs_new:Npn \fp_to_dim:N #1 + { \fp_to_decimal:N #1 pt } \cs_generate_variant:Nn \fp_to_dim:N { c } -\cs_new:Npx \fp_to_dim:n #1 - { \exp_not:N \fp_to_decimal:n {#1} \tl_to_str:n {pt} } +\cs_new:Npn \fp_to_dim:n #1 + { \fp_to_decimal:n {#1} pt } % \end{macrocode} % \end{macro} % @@ -433,7 +425,7 @@ \@@_case_return:nw { \exp_after:wN \c_zero_fp } \else: \exp_after:wN \@@_from_dim:wNw - \int_use:N \__int_eval:w #1 - \c_four + \__int_value:w \__int_eval:w #1 - \c_four \if_meaning:w - #2 \exp_after:wN , \exp_after:wN 2 \__int_value:w \else: diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index c994fe3ce2c..05da6150eb4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-expo.dtx Copyright (C) 2011-2014 The LaTeX3 Project +%% File: l3fp-expo.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-expo.dtx 5893 2015-08-26 16:16:52Z mittelba $ +\GetIdInfo$Id: l3fp-expo.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Floating-point exponential-related functions} \begin{document} \DocInput{\jobname.dtx} @@ -187,7 +187,7 @@ 0 \fi: \exp_after:wN \exp_stop_f: - \int_use:N \__int_eval:w % for the exponent + \__int_value:w \__int_eval:w % for the exponent \@@_ln_significand:NNNNnnnN #2#3 \@@_ln_exponent:wn {#1} } @@ -239,11 +239,11 @@ \cs:w c_@@_ln_ \__int_to_roman:w #1 _fixed_tl \exp_after:wN \cs_end: \__int_value:w \exp_after:wN \@@_ln_x_iv:wnnnnnnnn - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \@@_ln_x_iii_var:NNNNNw - \int_use:N \__int_eval:w 9999 9990 + #1*#2#3 + + \__int_value:w \__int_eval:w 9999 9990 + #1*#2#3 + \exp_after:wN \@@_ln_x_iii:NNNNNNw - \int_use:N \__int_eval:w 10 0000 0000 + #1*#4#5 ; + \__int_value:w \__int_eval:w 10 0000 0000 + #1*#4#5 ; {20000} {0000} {0000} {0000} } %^^A todo: reoptimize (a generalization attempt failed). \cs_new:Npn \@@_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7; @@ -328,7 +328,7 @@ \cs_new:Npn \@@_ln_x_iv:wnnnnnnnn #1; #2#3#4#5 #6#7#8#9 { \exp_after:wN \@@_div_significand_pack:NNN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \@@_ln_div_i:w #1 ; #6 #7 ; {#8} {#9} {#2} {#3} {#4} {#5} @@ -341,20 +341,20 @@ \cs_new:Npn \@@_ln_div_i:w #1; { \exp_after:wN \@@_div_significand_calc:wwnnnnnnn - \int_use:N \__int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1 + \__int_value:w \__int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1 } \cs_new:Npn \@@_ln_div_ii:wwn #1; #2;#3 % y; B1;B2 <- for k=1 { \exp_after:wN \@@_div_significand_pack:NNN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \@@_div_significand_calc:wwnnnnnnn - \int_use:N \__int_eval:w 999999 + #2 #3 / #1 ; % Q2 + \__int_value:w \__int_eval:w 999999 + #2 #3 / #1 ; % Q2 #2 #3 ; } \cs_new:Npn \@@_ln_div_vi:wwn #1; #2;#3#4#5 #6#7#8#9 %y;F1;F2F3F4x1x2x3x4 { \exp_after:wN \@@_div_significand_pack:NNN - \int_use:N \__int_eval:w 1000000 + #2 #3 / #1 ; % Q6 + \__int_value:w \__int_eval:w 1000000 + #2 #3 / #1 ; % Q6 } % \end{macrocode} % We now have essentially\footnote{Bruno: add a mention that @@ -402,12 +402,12 @@ \exp_after:wN \@@_ln_t_large:NNw \exp_after:wN + % <sign> \exp_after:wN #1 - \int_use:N \__int_eval:w 9999 - #2 \exp_after:wN ; - \int_use:N \__int_eval:w 9999 - #3 \exp_after:wN ; - \int_use:N \__int_eval:w 9999 - #4 \exp_after:wN ; - \int_use:N \__int_eval:w 9999 - #5 \exp_after:wN ; - \int_use:N \__int_eval:w 9999 - #6 \exp_after:wN ; - \int_use:N \__int_eval:w 1 0000 - #7 ; + \__int_value:w \__int_eval:w 9999 - #2 \exp_after:wN ; + \__int_value:w \__int_eval:w 9999 - #3 \exp_after:wN ; + \__int_value:w \__int_eval:w 9999 - #4 \exp_after:wN ; + \__int_value:w \__int_eval:w 9999 - #5 \exp_after:wN ; + \__int_value:w \__int_eval:w 9999 - #6 \exp_after:wN ; + \__int_value:w \__int_eval:w 1 0000 - #7 ; } % \end{macrocode} % @@ -422,29 +422,29 @@ \cs_new:Npn \@@_ln_t_large:NNw #1 #2 #3; #4; #5; #6; #7; #8; { \exp_after:wN \@@_ln_square_t_after:w - \int_use:N \__int_eval:w 9999 0000 + #3*#3 + \__int_value:w \__int_eval:w 9999 0000 + #3*#3 \exp_after:wN \@@_ln_square_t_pack:NNNNNw - \int_use:N \__int_eval:w 9999 0000 + 2*#3*#4 + \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#4 \exp_after:wN \@@_ln_square_t_pack:NNNNNw - \int_use:N \__int_eval:w 9999 0000 + 2*#3*#5 + #4*#4 + \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#5 + #4*#4 \exp_after:wN \@@_ln_square_t_pack:NNNNNw - \int_use:N \__int_eval:w 9999 0000 + 2*#3*#6 + 2*#4*#5 + \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#6 + 2*#4*#5 \exp_after:wN \@@_ln_square_t_pack:NNNNNw - \int_use:N \__int_eval:w 1 0000 0000 + 2*#3*#7 + 2*#4*#6 + #5*#5 + \__int_value:w \__int_eval:w 1 0000 0000 + 2*#3*#7 + 2*#4*#6 + #5*#5 + (2*#3*#8 + 2*#4*#7 + 2*#5*#6) / 1 0000 % ; ; ; \exp_after:wN \@@_ln_twice_t_after:w - \int_use:N \__int_eval:w -1 + 2*#3 + \__int_value:w \__int_eval:w -1 + 2*#3 \exp_after:wN \@@_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 9999 + 2*#4 + \__int_value:w \__int_eval:w 9999 + 2*#4 \exp_after:wN \@@_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 9999 + 2*#5 + \__int_value:w \__int_eval:w 9999 + 2*#5 \exp_after:wN \@@_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 9999 + 2*#6 + \__int_value:w \__int_eval:w 9999 + 2*#6 \exp_after:wN \@@_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 9999 + 2*#7 + \__int_value:w \__int_eval:w 9999 + 2*#7 \exp_after:wN \@@_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 10000 + 2*#8 ; ; + \__int_value:w \__int_eval:w 10000 + 2*#8 ; ; { \@@_ln_c:NwNw #1 } #2 } @@ -498,7 +498,7 @@ \@@_fixed_mul:wwn #3; { \exp_after:wN \@@_ln_Taylor_loop:www - \int_use:N \__int_eval:w #1 - \c_two ; + \__int_value:w \__int_eval:w #1 - \c_two ; } #3; } @@ -506,7 +506,7 @@ { \fi: \exp_after:wN \@@_fixed_mul:wwn - \exp_after:wN { \int_use:N \__int_eval:w 10000 + #2 } #3; + \exp_after:wN { \__int_value:w \__int_eval:w 10000 + #2 } #3; } % \end{macrocode} % \end{macro} @@ -652,7 +652,7 @@ \if_int_compare:w #4 < - \c_eight \c_one \exp_after:wN \@@_add_big_i_o:wNww - \int_use:N \__int_eval:w \c_one - #4 ; + \__int_value:w \__int_eval:w \c_one - #4 ; 0 {1000}{0000}{0000}{0000} ; #5; \exp:w \else: @@ -717,7 +717,7 @@ \@@_fixed_mul:wwn #2 ; { \exp_after:wN \@@_exp_Taylor_loop:www - \int_use:N \__int_eval:w #1 - 1 ; + \__int_value:w \__int_eval:w #1 - 1 ; #2 ; } } @@ -1086,21 +1086,21 @@ \cs_new:Npn \@@_pow_exponent:Nwnnnnnw #1#2; #3#4#5#6#7#8; { %^^A todo: use that in ln. \exp_after:wN \@@_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c_@@_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_leading_shift_int \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int #1#2*23025 - #1 #3 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int #1 #2*8509 - #1 #4 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int #1 #2*2994 - #1 #5 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int #1 #2*0456 - #1 #6 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_trailing_shift_int + \__int_value:w \__int_eval:w \c_@@_trailing_shift_int #1 #2*8401 - #1 #7 #1 ( #2*7991 - #8 ) / 1 0000 ; ; } @@ -1116,7 +1116,7 @@ \fi: \fi: #7 \exp_after:wN ; - \int_use:N \__int_eval:w 10 0000 + #1 \__int_eval_end: + \__int_value:w \__int_eval:w 10 0000 + #1 \__int_eval_end: #2#3#4#5#6 0000 0000 0000 0000 0000 0000 ; %^^A todo: how many 0? } \cs_new:Npn \@@_pow_C_overflow:w #1; #2; #3 @@ -1183,7 +1183,7 @@ \exp_after:wN \s_@@ \exp_after:wN \@@_chk:w \exp_after:wN #2 - \int_use:N \__int_eval:w \c_two - #3 \__int_eval_end: + \__int_value:w \__int_eval:w \c_two - #3 \__int_eval_end: } % \end{macrocode} % ^^A todo: is this \@@_exp_after_o:w necessary? Appropriate? diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 08ef4a66bf7..ea40a707007 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-extended.dtx Copyright (C) 2011-2014 The LaTeX3 Project +%% File: l3fp-extended.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-extended.dtx 5893 2015-08-26 16:16:52Z mittelba $ +\GetIdInfo$Id: l3fp-extended.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Floating-points with extended precision} \begin{document} \DocInput{\jobname.dtx} @@ -154,7 +154,7 @@ \cs_new:Npn \@@_fixed_add_one:wN #1#2; #3 { \exp_after:wN #3 \exp_after:wN - { \int_use:N \__int_eval:w \c_ten_thousand + #1 } #2 ; + { \__int_value:w \__int_eval:w \c_ten_thousand + #1 } #2 ; } % \end{macrocode} % \end{macro} @@ -170,9 +170,9 @@ \cs_new:Npn \@@_fixed_div_myriad:wn #1#2#3#4#5#6; { \exp_after:wN \@@_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c_@@_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_leading_shift_int \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_trailing_shift_int + \__int_value:w \__int_eval:w \c_@@_trailing_shift_int + #1 ; {#2}{#3}{#4}{#5}; } % \end{macrocode} @@ -210,22 +210,22 @@ \cs_new:Npn \@@_fixed_mul_short:wwn #1#2#3#4#5#6; #7#8#9; { \exp_after:wN \@@_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c_@@_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_leading_shift_int + #1*#7 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #1*#8 + #2*#7 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #1*#9 + #2*#8 + #3*#7 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #2*#9 + #3*#8 + #4*#7 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #3*#9 + #4*#8 + #5*#7 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_trailing_shift_int + \__int_value:w \__int_eval:w \c_@@_trailing_shift_int + #4*#9 + #5*#8 + #6*#7 + ( #5*#9 + #6*#8 + #6*#9 / \c_ten_thousand ) / \c_ten_thousand ; ; @@ -290,7 +290,7 @@ { \exp_after:wN \@@_fixed_div_int_after:Nw \exp_after:wN #8 - \int_use:N \__int_eval:w \c_minus_one + \__int_value:w \__int_eval:w \c_minus_one \@@_fixed_div_int:wnN #1; {#7} \@@_fixed_div_int_auxi:wnn #2; {#7} \@@_fixed_div_int_auxi:wnn @@ -302,7 +302,7 @@ \cs_new:Npn \@@_fixed_div_int:wnN #1; #2 #3 { \exp_after:wN #3 - \int_use:N \__int_eval:w #1 / #2 - \c_one ; + \__int_value:w \__int_eval:w #1 / #2 - \c_one ; {#2} {#1} } @@ -310,9 +310,9 @@ { + #1 \exp_after:wN \@@_fixed_div_int_pack:Nw - \int_use:N \__int_eval:w 9999 + \__int_value:w \__int_eval:w 9999 \exp_after:wN \@@_fixed_div_int:wnN - \int_use:N \__int_eval:w #3 - #1*#2 \__int_eval_end: + \__int_value:w \__int_eval:w #3 - #1*#2 \__int_eval_end: } \cs_new:Npn \@@_fixed_div_int_auxii:wnn #1; #2 #3 { + #1 + \c_two ; } \cs_new:Npn \@@_fixed_div_int_pack:Nw #1 #2; { + #1; {#2} } @@ -354,16 +354,16 @@ \cs_new:Npn \@@_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6; #7#8 { \exp_after:wN \@@_fixed_add_after:NNNNNwn - \int_use:N \__int_eval:w 9 9999 9998 + #2#3 #1 #7#8 + \__int_value:w \__int_eval:w 9 9999 9998 + #2#3 #1 #7#8 \exp_after:wN \@@_fixed_add_pack:NNNNNwn - \int_use:N \__int_eval:w 1 9999 9998 + #4#5 + \__int_value:w \__int_eval:w 1 9999 9998 + #4#5 \@@_fixed_add:nnNnnnwn #6 #1 } \cs_new:Npn \@@_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 ; #8 { #3 #4#5 \exp_after:wN \@@_fixed_add_pack:NNNNNwn - \int_use:N \__int_eval:w 2 0000 0000 #3 #6#7 + #1#2 ; {#8} ; + \__int_value:w \__int_eval:w 2 0000 0000 #3 #6#7 + #1#2 ; {#8} ; } \cs_new:Npn \@@_fixed_add_pack:NNNNNwn #1 #2#3#4#5 #6; #7 { + #1 ; {#7} {#2#3#4#5} {#6} } @@ -423,21 +423,21 @@ \cs_new:Npn \@@_fixed_mul:wwn #1#2#3#4 #5; #6#7#8#9 { \exp_after:wN \@@_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c_@@_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_leading_shift_int \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #1*#6 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #1*#7 + #2*#6 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #1*#8 + #2*#7 + #3*#6 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #1*#9 + #2*#8 + #3*#7 + #4*#6 \exp_after:wN \@@_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_trailing_shift_int + \__int_value:w \__int_eval:w \c_@@_trailing_shift_int + #2*#9 + #3*#8 + #4*#7 + ( #3*#9 + #4*#8 + \@@_fixed_mul:nnnnnnnw #5 {#6}{#7} {#1}{#2} @@ -507,9 +507,9 @@ \cs_new:Npn \@@_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8; { \exp_after:wN \@@_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c_@@_big_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_big_leading_shift_int \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + #3 #4 + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int + #3 #4 \@@_fixed_mul_add:Nwnnnwnnn + + #5 #6 ; #2 ; #1 ; #2 ; + + #7 #8 ; ; @@ -517,9 +517,9 @@ \cs_new:Npn \@@_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8; { \exp_after:wN \@@_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c_@@_big_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_big_leading_shift_int \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + #3 #4 + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int + #3 #4 \@@_fixed_mul_add:Nwnnnwnnn - + #5 #6 ; #2 ; #1 ; #2 ; - + #7 #8 ; ; @@ -527,9 +527,9 @@ \cs_new:Npn \@@_fixed_one_minus_mul:wwn #1; #2; { \exp_after:wN \@@_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c_@@_big_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_big_leading_shift_int \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + 1 0000 0000 + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int + 1 0000 0000 \@@_fixed_mul_add:Nwnnnwnnn - ; #2 ; #1 ; #2 ; - ; ; @@ -559,13 +559,13 @@ { #1 #7*#3 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int #1 #7*#4 #1 #8*#3 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int #1 #7*#5 #1 #8*#4 #1 #9*#3 #2 \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_big_middle_shift_int #1 \@@_fixed_mul_add:nnnnwnnnn {#7}{#8}{#9} } % \end{macrocode} @@ -597,7 +597,7 @@ { ( #1*#9 + #2*#8 + #3*#7 + #4*#6 ) \exp_after:wN \@@_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c_@@_big_trailing_shift_int + \__int_value:w \__int_eval:w \c_@@_big_trailing_shift_int \@@_fixed_mul_add:nnnnwnnwN { #6 + #4*#7 + #3*#8 + #2*#9 + #1 } { #7 + #4*#8 + #3*#9 + #2 } @@ -651,7 +651,7 @@ \cs_new:Npn \@@_ep_to_fixed:wwn #1,#2 { \exp_after:wN \@@_ep_to_fixed_auxi:www - \int_use:N \__int_eval:w 1 0000 0000 + #2 \exp_after:wN ; + \__int_value:w \__int_eval:w 1 0000 0000 + #2 \exp_after:wN ; \exp:w \exp_end_continue_f:w \prg_replicate:nn { \c_four - \int_max:nn {#1} { -32 } } { 0 } ; } @@ -692,10 +692,10 @@ \cs_new:Npn \@@_ep_to_ep:wwN #1,#2#3#4#5#6#7; #8 { \exp_after:wN #8 - \int_use:N \__int_eval:w #1 + \c_four + \__int_value:w \__int_eval:w #1 + \c_four \exp_after:wN \use_i:nn \exp_after:wN \@@_ep_to_ep_loop:N - \int_use:N \__int_eval:w 1 0000 0000 + #2 \__int_eval_end: + \__int_value:w \__int_eval:w 1 0000 0000 + #2 \__int_eval_end: #3#4#5#6#7 ; ; ! } \cs_new:Npn \@@_ep_to_ep_loop:N #1 @@ -776,7 +776,7 @@ \cs_new:Npn \@@_ep_mul_raw:wwwwN #1,#2; #3,#4; #5 { \@@_fixed_mul:wwn #2; #4; - { \exp_after:wN #5 \int_use:N \__int_eval:w #1 + #3 , } + { \exp_after:wN #5 \__int_value:w \__int_eval:w #1 + #3 , } } % \end{macrocode} % \end{macro} @@ -952,15 +952,15 @@ \cs_new:Npn \@@_ep_div_esti:wwwwn #1,#2#3; #4, { \exp_after:wN \@@_ep_div_estii:wwnnwwn - \int_use:N \__int_eval:w 10 0000 0000 / ( #2 + \c_one ) + \__int_value:w \__int_eval:w 10 0000 0000 / ( #2 + \c_one ) \exp_after:wN ; - \int_use:N \__int_eval:w #4 - #1 + \c_one , + \__int_value:w \__int_eval:w #4 - #1 + \c_one , {#2} #3; } \cs_new:Npn \@@_ep_div_estii:wwnnwwn #1; #2,#3#4#5; #6; #7 { \exp_after:wN \@@_ep_div_estiii:NNNNNwwwn - \int_use:N \__int_eval:w 10 0000 0000 - 1750 + \__int_value:w \__int_eval:w 10 0000 0000 - 1750 + #1 000 + (10 0000 0000 / #3 - #1) * (1000 - #4 / 10) ; {#3}{#4}#5; #6; { #7 #2, } } @@ -995,11 +995,11 @@ \cs_new:Npn \@@_ep_div_epsi:wnNNNNNn #1#2#3#4#5#6; { \exp_after:wN \@@_ep_div_epsii:wwnNNNNNn - \int_use:N \__int_eval:w 1 9998 - #2 + \__int_value:w \__int_eval:w 1 9998 - #2 \exp_after:wN \@@_ep_div_eps_pack:NNNNNw - \int_use:N \__int_eval:w 1 9999 9998 - #3#4 + \__int_value:w \__int_eval:w 1 9999 9998 - #3#4 \exp_after:wN \@@_ep_div_eps_pack:NNNNNw - \int_use:N \__int_eval:w 2 0000 0000 - #5#6 ; ; + \__int_value:w \__int_eval:w 2 0000 0000 - #5#6 ; ; } \cs_new:Npn \@@_ep_div_eps_pack:NNNNNw #1#2#3#4#5#6; { + #1 ; {#2#3#4#5} {#6} } @@ -1069,7 +1069,7 @@ \cs_new:Npn \@@_ep_isqrt_auxi:wwn #1, { \exp_after:wN \@@_ep_isqrt_auxii:wwnnnwn - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \int_if_odd:nTF {#1} { (\c_one - #1) / \c_two , 535 , { 0 } { } } { \c_one - #1 / \c_two , 168 , { } { 0 } } @@ -1112,15 +1112,15 @@ \exp_after:wN \@@_ep_isqrt_estii:wwwnnwn \fi: \exp_after:wN \@@_ep_isqrt_esti:wwwnnwn - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w (#1 + 1 0050 0000 #4 / (#1 * #3)) / \c_two , #1, #3, {#4} } \cs_new:Npn \@@_ep_isqrt_estii:wwwnnwn #1, #2, #3, #4#5 { \exp_after:wN \@@_ep_isqrt_estiii:NNNNNwwwn - \int_use:N \__int_eval:w 1000 0000 + #2 * #2 #5 * \c_five - \exp_after:wN , \int_use:N \__int_eval:w 10000 + #2 ; + \__int_value:w \__int_eval:w 1000 0000 + #2 * #2 #5 * \c_five + \exp_after:wN , \__int_value:w \__int_eval:w 10000 + #2 ; } \cs_new:Npn \@@_ep_isqrt_estiii:NNNNNwwwn 1#1#2#3#4#5#6, 1#7#8; #9; { @@ -1225,7 +1225,7 @@ \exp_after:wN \exp_after:wN \exp_after:wN \@@_fixed_to_loop:N \exp_after:wN \use_none:n - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w 1 0000 0000 + #1 \exp_after:wN \@@_use_none_stop_f:n \__int_value:w 1#2 \exp_after:wN \@@_use_none_stop_f:n \__int_value:w 1#3#4 \exp_after:wN \@@_use_none_stop_f:n @@ -1270,9 +1270,9 @@ \cs_new:Npn \@@_fixed_to_float_round_up:wnnnnw ; #1#2#3#4 ; { \exp_after:wN \@@_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1 #1#2 + \__int_value:w \__int_eval:w 1 #1#2 \exp_after:wN \@@_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1 #3#4 + \c_one ; + \__int_value:w \__int_eval:w 1 #3#4 + \c_one ; } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 42921f9a9da..9c3d53d797d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-parse.dtx Copyright (C) 2011-2015 The LaTeX3 Project +%% File: l3fp-parse.dtx Copyright (C) 2011-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-parse.dtx 6037 2015-09-23 12:41:15Z joseph $ +\GetIdInfo$Id: l3fp-parse.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Floating-point expression parsing} \begin{document} \DocInput{\jobname.dtx} @@ -888,7 +888,7 @@ \exp_after:wN #1 \exp:w \exp_end_continue_f:w \exp_after:wN \@@_sanitize:wN - \int_use:N \__int_eval:w \c_zero \@@_parse_trim_zeros:N + \__int_value:w \__int_eval:w \c_zero \@@_parse_trim_zeros:N } % \end{macrocode} % \end{macro} @@ -1123,7 +1123,7 @@ \cs_new:Npn \@@_parse_small:N #1 { \exp_after:wN \@@_parse_pack_leading:NNNNNww - \int_use:N \__int_eval:w 1 \token_to_str:N #1 + \__int_value:w \__int_eval:w 1 \token_to_str:N #1 \exp_after:wN \@@_parse_small_leading:wwNN \__int_value:w 1 \exp_after:wN \@@_parse_digits_vii:N @@ -1151,7 +1151,7 @@ #1 #2 \exp_after:wN \@@_parse_pack_trailing:NNNNNNww \exp_after:wN \c_zero - \int_use:N \__int_eval:w 1 + \__int_value:w \__int_eval:w 1 \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: \token_to_str:N #4 \exp_after:wN \@@_parse_small_trailing:wwNN @@ -1275,7 +1275,7 @@ { + \c_eight - #3 \exp_after:wN \@@_parse_pack_leading:NNNNNww - \int_use:N \__int_eval:w 1 #1 + \__int_value:w \__int_eval:w 1 #1 \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: \exp_after:wN \@@_parse_large_trailing:wwNN \__int_value:w 1 \token_to_str:N #4 @@ -1327,14 +1327,14 @@ \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: \exp_after:wN \@@_parse_pack_trailing:NNNNNNww \exp_after:wN \c_eight - \int_use:N \__int_eval:w 1 #1 \token_to_str:N #4 + \__int_value:w \__int_eval:w 1 #1 \token_to_str:N #4 \exp_after:wN \@@_parse_large_round:NN \exp_after:wN #4 \exp:w \else: \exp_after:wN \@@_parse_pack_trailing:NNNNNNww - \int_use:N \__int_eval:w \c_seven - #3 \exp_stop_f: - \int_use:N \__int_eval:w 1 #1 + \__int_value:w \__int_eval:w \c_seven - #3 \exp_stop_f: + \__int_value:w \__int_eval:w 1 #1 \if:w . \exp_not:N #4 \exp_after:wN \@@_parse_small_trailing:wwNN \__int_value:w 1 @@ -1405,7 +1405,7 @@ \cs_new:Npn \@@_parse_round_after:wN #1; #2 { + #2 \exp_after:wN ; - \int_use:N \__int_eval:w #1 + \@@_parse_exponent:N + \__int_value:w \__int_eval:w #1 + \@@_parse_exponent:N } % \end{macrocode} % \end{macro} @@ -1433,9 +1433,9 @@ \exp_after:wN 0 \exp_after:wN #1 \exp_after:wN #2 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \@@_parse_round_after:wN - \int_use:N \__int_eval:w \c_zero * \__int_eval:w \c_zero + \__int_value:w \__int_eval:w \c_zero * \__int_eval:w \c_zero \exp_after:wN \@@_parse_round_loop:N \exp:w \else: @@ -1474,9 +1474,9 @@ \exp_after:wN 0 \exp_after:wN #1 \exp_after:wN #2 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \@@_parse_large_round_aux:wNN - \int_use:N \__int_eval:w \c_one + \__int_value:w \__int_eval:w \c_one \exp_after:wN \@@_parse_round_loop:N \else: %^^A could be dot, or e, or other \exp_after:wN \@@_parse_large_round_test:NN @@ -1499,7 +1499,7 @@ { + #2 \exp_after:wN \@@_parse_round_after:wN - \int_use:N \__int_eval:w #1 + \__int_value:w \__int_eval:w #1 \if:w . \exp_not:N #3 + \c_zero * \__int_eval:w \c_zero \exp_after:wN \@@_parse_round_loop:N @@ -1774,7 +1774,7 @@ \exp_after:wN #1 \exp:w \exp_end_continue_f:w \exp_after:wN \@@_sanitize:wN - \int_use:N \__int_eval:w \c_zero \@@_parse_strim_zeros:N + \__int_value:w \__int_eval:w \c_zero \@@_parse_strim_zeros:N } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 844e229fa1a..cc6299b8dfd 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-round.dtx Copyright(C) 2011-2012,2014,2015 The LaTeX3 Project +%% File: l3fp-round.dtx Copyright(C) 2011-2012,2014-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-round.dtx 5893 2015-08-26 16:16:52Z mittelba $ +\GetIdInfo$Id: l3fp-round.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Floating-point rounding} \begin{document} \DocInput{\jobname.dtx} @@ -257,7 +257,7 @@ \exp_after:wN \@@_round:NNN \exp_after:wN #1 \exp_after:wN #2 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_odd:w 0 \if_meaning:w 0 #3 1 \fi: \if_meaning:w 5 #3 1 \fi: \exp_stop_f: @@ -462,11 +462,11 @@ \cs_new:Npn \@@_round_normal:NnnwNNnn #1#2#3#4; #5#6 { \exp_after:wN \@@_round_normal:NNwNnn - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_compare:w #2 > \c_zero 1 \__int_value:w #2 \exp_after:wN \@@_round_pack:Nw - \int_use:N \__int_eval:w 1#3 + + \__int_value:w \__int_eval:w 1#3 + \else: \if_int_compare:w #3 > \c_zero 1 \__int_value:w #3 + @@ -505,7 +505,7 @@ \else: \exp_after:wN \@@_round_special_aux:Nw \exp_after:wN #4 - \int_use:N \__int_eval:w \c_one + \__int_value:w \__int_eval:w \c_one \if_meaning:w 1 #1 -#6 \else: +#5 \fi: \fi: ; diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx index d40149175ef..54509f57b54 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp-trig.dtx Copyright (C) 2011-2014 The LaTeX3 Project +%% File: l3fp-trig.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -36,7 +36,7 @@ % %<*driver> \documentclass[full]{l3doc} -\GetIdInfo$Id: l3fp-trig.dtx 5893 2015-08-26 16:16:52Z mittelba $ +\GetIdInfo$Id: l3fp-trig.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Floating-point trigonometric functions} \begin{document} \DocInput{\jobname.dtx} @@ -318,7 +318,7 @@ \exp_after:wN #2 \exp_after:wN #3 \exp_after:wN #4 - \int_use:N \__int_eval:w #5 + \__int_value:w \__int_eval:w #5 \exp_after:wN \exp_after:wN \exp_after:wN \exp_after:wN \if_int_compare:w #7 > #1 \c_zero \c_one #1 \@@_trig_large:ww \@@_trigd_large:ww @@ -410,7 +410,7 @@ \cs_new:Npn \@@_trigd_large_auxi:nnnnwNNNN #1#2#3#4#5; #6#7#8#9 { \exp_after:wN \@@_trigd_large_auxii:wNw - \int_use:N \__int_eval:w #1 + #2 + \__int_value:w \__int_eval:w #1 + #2 - (#1 + #2 - \c_four) / \c_nine * \c_nine \__int_eval_end: #3; #4; #5{#6#7#8#9}; @@ -419,7 +419,7 @@ { + (#1#2 - \c_four) / \c_nine * \c_two \exp_after:wN \@@_trigd_large_auxiii:www - \int_use:N \__int_eval:w #1#2 + \__int_value:w \__int_eval:w #1#2 - (#1#2 - \c_four) / \c_nine * \c_nine \__int_eval_end: #3 ; } \cs_new:Npn \@@_trigd_large_auxiii:www #1; #2; #3! @@ -665,8 +665,8 @@ \cs_new:Npn \@@_trig_large:ww #1, #2#3#4#5#6; { \exp_after:wN \@@_trig_large_auxi:wwwwww - \int_use:N \__int_eval:w (#1 - 32) / 64 \exp_after:wN , - \int_use:N \__int_eval:w (#1 - 4) / 8 \exp_after:wN , + \__int_value:w \__int_eval:w (#1 - 32) / 64 \exp_after:wN , + \__int_value:w \__int_eval:w (#1 - 4) / 8 \exp_after:wN , \__int_value:w #1 \@@_trig_inverse_two_pi: ; {#2}{#3}{#4}{#5} ; } @@ -716,7 +716,7 @@ { \exp_after:wN \@@_use_i_until_s:nw \exp_after:wN \@@_trig_large_auxvii:w - \int_use:N \__int_eval:w \c_@@_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_leading_shift_int \prg_replicate:nn { \c_thirteen } { \@@_trig_large_auxvi:wnnnnnnnn } + \c_@@_trailing_shift_int - \c_@@_middle_shift_int @@ -726,7 +726,7 @@ \cs_new:Npn \@@_trig_large_auxvi:wnnnnnnnn #1; #2#3#4#5#6#7#8#9 { \exp_after:wN \@@_trig_large_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int + #2*#9 + #3*#8 + #4*#7 + #5*#6 #1; {#2}{#3}{#4}{#5} {#7}{#8}{#9} } @@ -764,7 +764,7 @@ \cs_new:Npn \@@_trig_large_auxvii:w #1#2#3 { \exp_after:wN \@@_trig_large_auxviii:ww - \int_use:N \__int_eval:w (#1#2#3 - 62) / 125 ; + \__int_value:w \__int_eval:w (#1#2#3 - 62) / 125 ; #1#2#3 } \cs_new:Npn \@@_trig_large_auxviii:ww #1; @@ -782,7 +782,7 @@ { \exp_after:wN \@@_use_i_until_s:nw \exp_after:wN \@@_trig_large_auxxi:w - \int_use:N \__int_eval:w \c_@@_leading_shift_int + \__int_value:w \__int_eval:w \c_@@_leading_shift_int \prg_replicate:nn { \c_thirteen } { \@@_trig_large_auxx:wNNNNN } + \c_@@_trailing_shift_int - \c_@@_middle_shift_int @@ -791,14 +791,14 @@ \cs_new:Npn \@@_trig_large_auxx:wNNNNN #1; #2 #3#4#5#6 { \exp_after:wN \@@_trig_large_pack:NNNNNw - \int_use:N \__int_eval:w \c_@@_middle_shift_int + \__int_value:w \__int_eval:w \c_@@_middle_shift_int #2 \c_eight * #3#4#5#6 #1; #2 } \cs_new:Npn \@@_trig_large_auxxi:w #1; { \exp_after:wN \@@_ep_mul_raw:wwwwN - \int_use:N \__int_eval:w \c_zero \@@_ep_to_ep_loop:N #1 ; ; ! + \__int_value:w \__int_eval:w \c_zero \@@_ep_to_ep_loop:N #1 ; ; ! 0,{7853}{9816}{3397}{4483}{0961}{5661}; \@@_trig_small:ww } @@ -889,7 +889,7 @@ { \exp_after:wN \@@_sanitize:Nw \exp_after:wN #2 - \int_use:N \__int_eval:w #1 + \__int_value:w \__int_eval:w #1 } #2 } @@ -968,7 +968,7 @@ { \exp_after:wN \@@_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w \@@_ep_to_float:wwN + \__int_value:w \__int_eval:w \@@_ep_to_float:wwN } #1 } @@ -1134,7 +1134,7 @@ { \exp_after:wN \@@_atan_combine_o:NwwwwwN \exp_after:wN #2 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_meaning:w 2 #5 \c_seven - \fi: #3 \exp_after:wN ; \c_@@_one_fixed_tl ; {0000}{0000}{0000}{0000}{0000}{0000}; @@ -1181,7 +1181,7 @@ { \exp_after:wN \@@_atan_combine_o:NwwwwwN \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_meaning:w 2 #4 \c_seven - \__int_eval:w \fi: @@ -1279,7 +1279,7 @@ \@@_rrot:www \@@_fixed_mul_sub_back:wwwn #2; #3; { \exp_after:wN \@@_atan_Taylor_loop:www - \int_use:N \__int_eval:w #1 - \c_two ; + \__int_value:w \__int_eval:w #1 - \c_two ; } #3; } @@ -1318,7 +1318,7 @@ { \exp_after:wN \@@_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_meaning:w 0 #2 \exp_after:wN \use_i:nn \else: @@ -1329,7 +1329,7 @@ \@@_fixed_mul:wwn #3; #4; { \exp_after:wN \@@_atan_combine_aux:ww - \int_use:N \__int_eval:w #2 / \c_two ; #2; + \__int_value:w \__int_eval:w #2 / \c_two ; #2; } } { #7 \@@_fixed_to_float:wN \@@_fixed_to_float_rad:wN } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 1fcd1749003..a7afaebb410 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3fp.dtx Copyright (C) 2011-2015 The LaTeX3 Project +%% File: l3fp.dtx Copyright (C) 2011-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -38,7 +38,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3fp.dtx 5890 2015-08-25 07:47:22Z joseph $ +\GetIdInfo$Id: l3fp.dtx 6465 2016-03-26 16:15:09Z joseph $ {L3 Floating points} %</driver|package> %<*driver> @@ -253,8 +253,7 @@ % exception. This function is identical to \cs{fp_to_decimal:n}. % \end{function} % -% \begin{function}[EXP, added = 2012-05-08, updated = 2012-07-08, -% tested = m3fp-convert003] +% \begin{function}[EXP, added = 2012-05-08, updated = 2012-07-08] % {\fp_to_decimal:N, \fp_to_decimal:c, \fp_to_decimal:n} % \begin{syntax} % \cs{fp_to_decimal:N} \meta{fp~var} @@ -269,7 +268,7 @@ % exception. % \end{function} % -% \begin{function}[EXP, updated = 2012-07-08, tested = m3fp-convert003] +% \begin{function}[EXP, updated = 2016-03-22] % {\fp_to_dim:N, \fp_to_dim:c, \fp_to_dim:n} % \begin{syntax} % \cs{fp_to_dim:N} \meta{fp~var} @@ -278,14 +277,15 @@ % Evaluates the \meta{floating point expression} and expresses the % result as a dimension (in~\texttt{pt}) suitable for use in dimension % expressions. The output is identical to \cs{fp_to_decimal:n}, with -% an additional trailing~\texttt{pt}. In particular, the result may +% an additional trailing~\texttt{pt} (both letter tokens). +% In particular, the result may % be outside the range $[- 2^{14} + 2^{-17}, 2^{14} - 2^{-17}]$ of % valid \TeX{} dimensions, leading to overflow errors if used as a % dimension. The values $\pm\infty$ and~\nan{} trigger an % \enquote{invalid operation} exception. % \end{function} % -% \begin{function}[EXP, updated = 2012-07-08, tested = m3fp-convert003] +% \begin{function}[EXP, updated = 2012-07-08] % {\fp_to_int:N, \fp_to_int:c, \fp_to_int:n} % \begin{syntax} % \cs{fp_to_int:N} \meta{fp~var} @@ -300,8 +300,7 @@ % an \enquote{invalid operation} exception. % \end{function} % -% \begin{function}[EXP, added = 2012-05-08, updated = 2012-07-08, -% tested = m3fp-convert003] +% \begin{function}[EXP, added = 2012-05-08, updated = 2016-03-22] % {\fp_to_scientific:N, \fp_to_scientific:c, \fp_to_scientific:n} % \begin{syntax} % \cs{fp_to_scientific:N} \meta{fp~var} @@ -314,11 +313,11 @@ % \end{quote} % The leading \meta{digit} is non-zero except in the case of $\pm 0$. % The values $\pm\infty$ and~\nan{} trigger an \enquote{invalid -% operation} exception. The entire representation is in the form of -% a string (tokens of category code~$12$), \emph{including} the |e|. +% operation} exception. Normal category codes apply: thus the |e| is +% category code~$11$ (a letter). % \end{function} % -% \begin{function}[EXP, updated = 2012-07-08, tested = m3fp-convert003] +% \begin{function}[EXP, updated = 2016-03-22] % {\fp_to_tl:N, \fp_to_tl:c, \fp_to_tl:n} % \begin{syntax} % \cs{fp_to_tl:N} \meta{fp~var} @@ -335,10 +334,11 @@ % \cs{fp_to_decimal:n}. Negative numbers start with~|-|. The % special values $\pm 0$, $\pm\infty$ and~\nan{} are rendered as % |0|, |-0|, \texttt{inf}, \texttt{-inf}, and~\texttt{nan} -% respectively. +% respectively. Normal category codes apply and thus \texttt{inf} or +% \texttt{nan}, if produced, will be made up of letters. % \end{function} % -% \begin{function}[EXP, updated = 2012-07-08, tested = m3fp-convert003] +% \begin{function}[EXP, updated = 2012-07-08] % {\fp_use:N, \fp_use:c} % \begin{syntax} % \cs{fp_use:N} \meta{fp~var} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 2bd45b71fe1..9eb4b79cc34 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3int.dtx 6366 2016-01-05 22:18:59Z joseph $ +\GetIdInfo$Id: l3int.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Integers} %</driver|package> %<*driver> @@ -1038,7 +1038,7 @@ \cs_new:Npn \int_abs:n #1 { \@@_value:w \exp_after:wN \@@_abs:N - \int_use:N \@@_eval:w #1 \@@_eval_end: + \@@_value:w \@@_eval:w #1 \@@_eval_end: \exp_stop_f: } \cs_new:Npn \@@_abs:N #1 @@ -1046,16 +1046,16 @@ \cs_set:Npn \int_max:nn #1#2 { \@@_value:w \exp_after:wN \@@_maxmin:wwN - \int_use:N \@@_eval:w #1 \exp_after:wN ; - \int_use:N \@@_eval:w #2 ; + \@@_value:w \@@_eval:w #1 \exp_after:wN ; + \@@_value:w \@@_eval:w #2 ; > \exp_stop_f: } \cs_set:Npn \int_min:nn #1#2 { \@@_value:w \exp_after:wN \@@_maxmin:wwN - \int_use:N \@@_eval:w #1 \exp_after:wN ; - \int_use:N \@@_eval:w #2 ; + \@@_value:w \@@_eval:w #1 \exp_after:wN ; + \@@_value:w \@@_eval:w #2 ; < \exp_stop_f: } @@ -1097,10 +1097,10 @@ % \begin{macrocode} \cs_new:Npn \int_div_truncate:nn #1#2 { - \int_use:N \@@_eval:w + \@@_value:w \@@_eval:w \exp_after:wN \@@_div_truncate:NwNw - \int_use:N \@@_eval:w #1 \exp_after:wN ; - \int_use:N \@@_eval:w #2 ; + \@@_value:w \@@_eval:w #1 \exp_after:wN ; + \@@_value:w \@@_eval:w #2 ; \@@_eval_end: } \cs_new:Npn \@@_div_truncate:NwNw #1#2; #3#4; @@ -1439,7 +1439,7 @@ \prg_new_conditional:Npnn \int_compare:n #1 { p , T , F , TF } { \exp_after:wN \@@_compare:w - \int_use:N \@@_eval:w #1 \__prg_compare_error: + \@@_value:w \@@_eval:w #1 \__prg_compare_error: } \cs_new:Npn \@@_compare:w #1 \__prg_compare_error: { @@ -1721,9 +1721,9 @@ \cs_new:Npn \int_step_function:nnnN #1#2#3 { \exp_after:wN \@@_step:wwwN - \int_use:N \@@_eval:w #1 \exp_after:wN ; - \int_use:N \@@_eval:w #2 \exp_after:wN ; - \int_use:N \@@_eval:w #3 ; + \@@_value:w \@@_eval:w #1 \exp_after:wN ; + \@@_value:w \@@_eval:w #2 \exp_after:wN ; + \@@_value:w \@@_eval:w #3 ; } \cs_new:Npn \@@_step:wwwN #1; #2; #3; #4 { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 28a4eba5fa2..48d7446d71e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3luatex.dtx Copyright (C) 2010-2015 The LaTeX3 Project +%% File: l3luatex.dtx Copyright (C) 2010-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package&tex> -\GetIdInfo$Id: l3luatex.dtx 6250 2015-11-11 13:45:38Z joseph $ +\GetIdInfo$Id: l3luatex.dtx 6465 2016-03-26 16:15:09Z joseph $ {L3 Experimental LuaTeX-specific functions} %</driver|package&tex> %<*driver> @@ -262,7 +262,7 @@ local unicode_utf8_char = unicode.utf8.char % String comparison which gives the same results as \pdfTeX{}'s % \tn{pdfstrcmp}, although the ordering should likely not be relied upon! % \begin{macrocode} -local function strcmp(A, B) +local function strcmp (A, B) if A == B then tex_write("0") elseif A < B then @@ -282,7 +282,7 @@ l3kernel.strcmp = strcmp % to match an eventual allocator. % \begin{macrocode} local charcat_table = l3kernel.charcat_table or 1 -local function charcat(charcode, catcode) +local function charcat (charcode, catcode) tex_setcatcode(charcat_table, charcode, catcode) tex_sprint(charcat_table, unicode_utf8_char(charcode)) end @@ -298,6 +298,90 @@ l3kernel.charcat = charcat %</initex|package> % \end{macrocode} % +% \subsection{Format mode code: font loader} +% +% \begin{macrocode} +%<*fontloader> +% \end{macrocode} +% +% In format mode, there needs to be a font loader available to let us +% use OpenType fonts. For testing, this is provided by +% \texttt{fontloader.lua} from the Speedata Publisher system +% (\url{https://github.com/speedata/publisher}). The code there is designed +% to be self-contained and has a certain number of build-in assumptions, +% so there is a small amount of compatibility required. +% +% The code we load looks up \texttt{texmf} tree files using +% \texttt{kpse.filelist}, which isn't part of the standard \texttt{kpse} +% library. The interface is emulated using metatable. +% \begin{macrocode} +kpse.filelist = setmetatable({}, { + __index = function (t, key) + return kpse.lookup(key) + end +}) +% \end{macrocode} +% There is a built-in assumption in \texttt{fontloader.lua} that various +% environmental variables are set. We deal with that by intercepting the +% relevant names and returning something sane. +% \begin{macrocode} +local os_getenv = os.getenv +function os.getenv (var) + if var == "SP_FONT_PATH" then return "" end + return os_getenv(var) +end +% \end{macrocode} +% As detailed in +% \url{https://github.com/speedata/publisher/blob/develop/COPYING}, the current +% license for Speedata Publisher is \textsc{AGPLv3}. We therefore only +% load the file and use its public interfaces rather than copying/modifying +% the code itself. Note though that we do have permission to use +% \texttt{fontloader.lua} as a public domain work +% (\url{http://chat.stackexchange.com/transcript/message/27273687#27273687}): +% if we want to develop a richer loader we may want to take advantage of that +% (which also applies to the simple shaper in the related \texttt{fonts.lua} +% file). +% \begin{macrocode} +local fontloader = require("fontloader.lua") +% \end{macrocode} +% That done, register a callback which at present simply passes everything +% through. There's no attempt to pick up font settings (which presumably +% will be needed). Syntax is coerced to the same as for \XeTeX{}. +% \begin{macrocode} +callback.register("define_font", + function (name, size, id) + local opts, opttab, otfeatures = "", { }, { } + if string.match(name, "^%[") then + name, opts = string.match(name, "^%[([^%]]*)%][^:]*:?(.*)") + end + if opts ~= "" then + for _,kv in ipairs(string.explode(opts,";")) do + if string.match(kv, "=") then + local k, v = string.match(kv, "([^=]*)=?(.*)") + opttab[k] = v + else + if string.match(kv, "^+") then + otfeatures[string.sub(kv,2,-1)] = "true" + elseif string.match(kv, "^-") then + otfeatures[string.sub(kv,2,-1)] = "false" + else + otfeatures[kv] = "true" + end + end + end + end + if next(otfeatures) then + opttab["otfeatures"] = otfeatures + end + return select(2, fontloader.define_font(name, size, opttab)) + end +) +% \end{macrocode} +% +% \begin{macrocode} +%</fontloader> +% \end{macrocode} +% %\end{implementation} % %\PrintIndex diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index c4cce9a58aa..d3054544bdb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3msg.dtx Copyright (C) 2009-2015 The LaTeX3 Project +%% File: l3msg.dtx Copyright (C) 2009-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3msg.dtx 6113 2015-09-28 21:30:11Z bruno $ +\GetIdInfo$Id: l3msg.dtx 6464 2016-03-26 13:03:37Z bruno $ {L3 Messages} %</driver|package> %<*driver> @@ -1790,7 +1790,7 @@ { Message~'#2'~for~module~'#1'~already~defined. } { \c_@@_coding_error_text_tl - LaTeX~was~asked~to~define~a~new~message~called~'#2'\ + LaTeX~was~asked~to~define~a~new~message~called~'#2'\\ by~the~module~'#1':~this~message~already~exists. \c_@@_return_text_tl } @@ -1832,6 +1832,16 @@ #2~arguments.~ TeX~allows~between~0~and~9~arguments~for~a~single~function. } +\@@_kernel_new:nnn { kernel } { char-active } + { Cannot~generate~active~chars. } +\@@_kernel_new:nnn { kernel } { char-invalid-catcode } + { Invalid~catcode~for~char~generation. } +\@@_kernel_new:nnn { kernel } { char-null-space } + { Cannot~generate~null~char~as~a~space. } +\@@_kernel_new:nnn { kernel } { char-out-of-range } + { Charcode~requested~out~of~engine~range. } +\@@_kernel_new:nnn { kernel } { char-space } + { Cannot~generate~space~chars. } \@@_kernel_new:nnnn { kernel } { command-already-defined } { Control~sequence~#1~already~defined. } { @@ -1858,7 +1868,7 @@ \@@_kernel_new:nnnn { kernel } { out-of-registers } { No~room~for~a~new~#1. } { - TeX~only~supports~\int_use:N \c_max_register_int \ + TeX~only~supports~\int_use:N \c_max_register_int \ % of~each~type.~All~the~#1~registers~have~been~used.~ This~run~will~be~aborted~now. } @@ -2005,14 +2015,12 @@ % (with category code $7$) and keep tokens until that space character, % dropping everything else until \cs{q_stop}. The \cs{exp_end:} prevents % losing braces around the user-inserted text if any, and stops the -% expansion of \cs{exp:w}. One group is used to keep the settings -% for \tn{lowercase} local and the other one is used to prevent -% |\LaTeX3~error:| from being equal to \cs{scan_stop:}. +% expansion of \cs{exp:w}. The group is used to prevent +% |\LaTeX3~error:| from being globally equal to \cs{scan_stop:}. % \begin{macrocode} \group_begin: \cs_set_protected:Npn \@@_tmp:w #1#2 { - \group_end: \cs_new:Npn \@@_expandable_error:n ##1 { \exp:w @@ -2020,15 +2028,13 @@ \exp_after:wN \@@_expandable_error:w \exp_after:wN \exp_after:wN \exp_after:wN \exp_end: - \use:n { #2 #1 ##1 } #1 + \use:n { #1 #2 ##1 } #2 } - \cs_new:Npn \@@_expandable_error:w ##1 #1 ##2 #1 {##1} + \cs_new:Npn \@@_expandable_error:w ##1 #2 ##2 #2 {##1} } -\group_begin: -\char_set_catcode_math_superscript:N \^ -\char_set_lccode:nn { `^ } { `\ } -\tex_lowercase:D - { \group_end: \exp_args:NNc \@@_tmp:w ^ } { LaTeX3~error: } +\exp_args:Ncx \@@_tmp:w { LaTeX3~error: } + { \char_generate:nn { `\ } { 7 } } +\group_end: % \end{macrocode} % \end{macro} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index e9b77107076..d27ab75c171 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3names.dtx Copyright (C) 1990-2015 The LaTeX3 project +%% File: l3names.dtx Copyright (C) 1990-2016 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3names.dtx 6328 2015-12-21 12:41:32Z joseph $ +\GetIdInfo$Id: l3names.dtx 6433 2016-03-11 20:04:27Z joseph $ {L3 Namespace for primitives} %</driver|package> %<*driver> @@ -623,6 +623,7 @@ \__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 @@ -737,6 +738,7 @@ \__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 @@ -790,6 +792,7 @@ \__kernel_primitive:NN \aligntab \luatex_aligntab:D \__kernel_primitive:NN \attribute \luatex_attribute:D \__kernel_primitive:NN \attributedef \luatex_attributedef: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 @@ -800,7 +803,10 @@ \__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 \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 @@ -808,6 +814,7 @@ \__kernel_primitive:NN \hyphenationmin \luatex_hypenationmin: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 @@ -824,7 +831,7 @@ \__kernel_primitive:NN \nohrule \luatex_nohrule:D \__kernel_primitive:NN \nokerns \luatex_nokerns:D \__kernel_primitive:NN \noligs \luatex_noligs:D - \__kernel_primitive:NN \nospace \luatex_nospace: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 \pageleftoffset \luatex_pageleftoffset:D @@ -843,6 +850,8 @@ \__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 % \end{macrocode} @@ -872,6 +881,8 @@ \__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 @@ -892,6 +903,7 @@ \__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 % \end{macrocode} % The set of Unicode math primitives were introduced by \XeTeX{} and \LuaTeX{} @@ -1117,6 +1129,25 @@ \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{(pdf)tracingfonts}. Newer \LuaTeX{} has +% this simply as \tn{tracingfonts}, but that will have been 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 +% 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.) +% \begin{macrocode} + \tex_let:D \pdftex_tracingfonts:D \tex_undefined:D + \etex_ifdefined:D \pdftracingfonts + \tex_let:D \pdftex_tracingfonts:D \pdftracingfonts + \tex_else:D + \etex_ifdefined:D \luatex_directlua:D + \luatex_directlua:D { tex.enableprimitives("@@", {"tracingfonts"}) } + \tex_let:D \pdftex_tracingfonts:D \luatextracingfonts + \tex_fi:D + \tex_fi:D \tex_fi:D % \end{macrocode} % That is also true for the \LuaTeX{} primitives under \LaTeXe{} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 7e43436ecd5..05b327cf286 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3str.dtx Copyright (C) 2011-2015 The LaTeX3 Project +%% File: l3str.dtx Copyright (C) 2011-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3str.dtx 6357 2016-01-03 08:42:55Z joseph $ +\GetIdInfo$Id: l3str.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Strings} %</driver|package> %<*driver> @@ -425,8 +425,15 @@ % \iow_term:x { \str_range:nnn { abcdef } { -2 } { -1 } } % \iow_term:x { \str_range:nnn { abcdef } { 0 } { -1 } } % \end{verbatim} -% will print \texttt{bcd}, \texttt{cdef}, \texttt{ef}, and an empty -% line to the terminal. +% will print \texttt{bcde}, \texttt{cdef}, \texttt{ef}, and an empty +% line to the terminal. The \meta{start index} must always be smaller than +% or equal to the \meta{end index}: if this is not the case then no output +% is generated. Thus +% \begin{verbatim} +% \iow_term:x { \str_range:nnn { abcdef } { 5 } { 2 } } +% \iow_term:x { \str_range:nnn { abcdef } { -1 } { -4 } } +% \end{verbatim} +% both yield empty strings. % \end{function} % % \section{String manipulation} @@ -490,7 +497,7 @@ % \end{texnote} % \end{function} % -% \begin{function}[rEXP, added = 2014-06-19, updated = 2015-09-04] +% \begin{function}[EXP, added = 2014-06-19, updated = 2016-03-07] % {\str_fold_case:n, \str_fold_case:V} % \begin{syntax} % \cs{str_fold_case:n} \Arg{tokens} @@ -1017,7 +1024,7 @@ \cs_new:Npn \@@_item:nn #1#2 { \exp_after:wN \@@_item:w - \int_use:N \__int_eval:w #2 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 \exp_after:wN ; \__int_value:w \@@_count:n {#1} ; #1 \q_stop } @@ -1030,7 +1037,7 @@ { \exp_after:wN \use_i_delimit_by_q_stop:nw \exp:w \exp_after:wN \@@_skip_exp_end:w - \int_use:N \__int_eval:w #1 + #2 ; + \__int_value:w \__int_eval:w #1 + #2 ; } } { @@ -1069,12 +1076,12 @@ \exp_after:wN \@@_skip_loop:wNNNNNNNN \else: \exp_after:wN \@@_skip_end:w - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \fi: #1 ; } \cs_new:Npn \@@_skip_loop:wNNNNNNNN #1; #2#3#4#5#6#7#8#9 - { \exp_after:wN \@@_skip_exp_end:w \int_use:N \__int_eval:w #1 - \c_eight ; } + { \exp_after:wN \@@_skip_exp_end:w \__int_value:w \__int_eval:w #1 - \c_eight ; } \cs_new:Npn \@@_skip_end:w #1 ; { \exp_after:wN \@@_skip_end:NNNNNNNN @@ -1114,8 +1121,8 @@ { \exp_after:wN \@@_range:w \__int_value:w \@@_count:n {#1} \exp_after:wN ; - \int_use:N \__int_eval:w #2 - \c_one \exp_after:wN ; - \int_use:N \__int_eval:w #3 ; + \__int_value:w \__int_eval:w #2 - \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #3 ; #1 \q_stop } \cs_new:Npn \@@_range:w #1; #2; #3; @@ -1127,7 +1134,7 @@ \cs_new:Npn \@@_range:nnw #1#2 { \exp_after:wN \@@_collect_delimit_by_q_stop:w - \int_use:N \__int_eval:w #2 - #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 - #1 \exp_after:wN ; \exp:w \@@_skip_exp_end:w #1 ; } % \end{macrocode} @@ -1193,7 +1200,7 @@ \cs_new:Npn \@@_collect_loop:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9 { \exp_after:wN \@@_collect_loop:wn - \int_use:N \__int_eval:w #1 - \c_seven ; + \__int_value:w \__int_eval:w #1 - \c_seven ; { #2 #3#4#5#6#7#8#9 } } \cs_new:Npn \@@_collect_end:wn #1 ; @@ -1390,6 +1397,9 @@ % } % \begin{macro}[aux, EXP]{\@@_change_case:nn} % \begin{macro}[aux, EXP]{\@@_change_case_aux:nn} +% \begin{macro}[aux, EXP]{\@@_change_case_result:n} +% \begin{macro}[aux, EXP]{\@@_change_case_output:nw, \@@_change_case_output:fw} +% \begin{macro}[aux, EXP]{\@@_change_case_end:nw} % \begin{macro}[aux, EXP]{\@@_change_case_loop:nw} % \begin{macro}[aux, EXP]{\@@_change_case_space:n} % \begin{macro}[aux, EXP]{\@@_change_case_char:nN} @@ -1414,7 +1424,12 @@ \cs_new:Npn \@@_change_case_aux:nn #1#2 { \@@_change_case_loop:nw {#2} #1 \q_recursion_tail \q_recursion_stop + \@@_change_case_result:n { } } +\cs_new:Npn \@@_change_case_output:nw #1#2 \@@_change_case_result:n #3 + { #2 \@@_change_case_result:n { #3 #1 } } +\cs_generate_variant:Nn \@@_change_case_output:nw { f } +\cs_new:Npn \@@_change_case_end:wn #1 \@@_change_case_result:n #2 { #2 } \cs_new:Npn \@@_change_case_loop:nw #1#2 \q_recursion_stop { \tl_if_head_is_space:nTF {#2} @@ -1425,16 +1440,20 @@ \use:x { \cs_new:Npn \exp_not:N \@@_change_case_space:n ##1 \c_space_tl } { - \c_space_tl + \@@_change_case_output:nw { ~ } \@@_change_case_loop:nw {#1} } \cs_new:Npn \@@_change_case_char:nN #1#2 { - \quark_if_recursion_tail_stop:N #2 + \quark_if_recursion_tail_stop_do:Nn #2 + { \@@_change_case_end:wn } \cs_if_exist:cTF { c__unicode_ #1 _ #2 _tl } - { \tl_to_str:c { c__unicode_ #1 _ #2 _tl } } + { + \@@_change_case_output:fw + { \tl_to_str:c { c__unicode_ #1 _ #2 _tl } } + } { \@@_change_case_char_aux:nN {#1} #2 } - \__str_change_case_loop:nw {#1} + \@@_change_case_loop:nw {#1} } % \end{macrocode} % For Unicode engines there's a look up to see if the current character @@ -1446,18 +1465,20 @@ { \cs_new:Npn \@@_change_case_char_aux:nN #1#2 { - \int_compare:nNnTF { \use:c { @@_lookup_ #1 :N } #2 } = { 0 } - { #2 } + \int_compare:nNnTF { \use:c { __str_lookup_ #1 :N } #2 } = { 0 } + { \@@_change_case_output:nw {#2} } { - \utex_char:D \use:c { @@_lookup_ #1 :N } #2 ~ + \@@_change_case_output:fw + { \utex_char:D \use:c { __str_lookup_ #1 :N } #2 ~ } } } - \cs_new_protected:Npn \@@_lookup_lower:N #1 { \tex_lccode:D `#1 } - \cs_new_protected:Npn \@@_lookup_upper:N #1 { \tex_uccode:D `#1 } - \cs_new_eq:NN \@@_lookup_fold:N \@@_lookup_lower:N + \cs_set_protected:Npn \@@_lookup_lower:N #1 { \tex_lccode:D `#1 } + \cs_set_protected:Npn \@@_lookup_upper:N #1 { \tex_uccode:D `#1 } + \cs_set_eq:NN \@@_lookup_fold:N \@@_lookup_lower:N } { - \cs_new:Npn \@@_change_case_char_aux:nN #1#2 { #2 } + \cs_new:Npn \@@_change_case_char_aux:nN #1#2 + { \@@_change_case_output:nw {#2} } } % \end{macrocode} % \end{macro} @@ -1467,6 +1488,9 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % % \begin{variable} % { @@ -1533,7 +1557,7 @@ % \tn{lccode} and \tn{uccode} values) but this covers only the simple % one-to-one situations and does not fully handle for example case folding. % -% The data required for cross-module manipulations is loaded here: currenty +% The data required for cross-module manipulations is loaded here: currently % this means for |str| and |tl| functions. As such, the prefix used is not % |str| but rather |unicode|. For performance (as the entire data set must % be read during each run) and as this code comes somewhat early in the @@ -1566,7 +1590,7 @@ \scan_stop: %</package> % \end{macrocode} -% Set up to read each file. As they use C-style comments, thre is a need to +% Set up to read each file. As they use C-style comments, there is a need to % deal with |#|. At the same time, spaces are important so they need to be % picked up as they are important. Beyond that, the current category code % scheme works fine. With no I/O loop available, hard-code one that will work @@ -1660,8 +1684,8 @@ % \end{macrocode} % The set up for case folding is in two parts. For the basic (core) mappings, % folding is the same as lower casing in most positions so only store -% the differences. For the more complex foldings, always sotre the result, -% splitting up the two or three code points in the inout as required. +% the differences. For the more complex foldings, always store the result, +% splitting up the two or three code points in the input as required. % \begin{macrocode} \cs_set_protected:Npn \@@_parse_auxi:w #1 ;~ #2 ;~ #3 ; #4 \q_stop { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 57bfe04f3d7..829f45c6201 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3tl.dtx Copyright (C) 1990-2015 The LaTeX3 Project +%% File: l3tl.dtx Copyright (C) 1990-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3tl.dtx 6121 2015-09-29 20:31:06Z bruno $ +\GetIdInfo$Id: l3tl.dtx 6465 2016-03-26 16:15:09Z joseph $ {L3 Token lists} %</driver|package> %<*driver> @@ -124,7 +124,7 @@ % time, it is converted to an explicit space character, with character % code $32$, regardless of the initial character code. % \enquote{Funny} spaces with a different category code, can be -% produced using \cs{tl_to_lowercase:n} or \cs{tl_to_uppercase:n}. +% produced using \tn{tex_lowercase:D} or \tn{tex_uppercase:D}. % Explicit space characters are also produced as a result of % \cs{token_to_str:N}, \cs{tl_to_str:n}, etc. % \end{texnote} @@ -397,36 +397,6 @@ % \end{texnote} % \end{function} % -% \section{Reassigning token list character codes} -% -% \begin{function}[updated = 2012-09-08]{\tl_to_lowercase:n} -% \begin{syntax} -% \cs{tl_to_lowercase:n} \Arg{tokens} -% \end{syntax} -% Works through all of the \meta{tokens}, replacing each character token -% with the lower case equivalent as defined by \cs{char_set_lccode:nn}. -% Characters with no defined lower case character code are left -% unchanged. This process does not alter the category code assigned -% to the \meta{tokens}. -% \begin{texnote} -% This is a wrapper around the \TeX{} primitive \tn{lowercase}. -% \end{texnote} -% \end{function} -% -% \begin{function}[updated = 2012-09-08]{\tl_to_uppercase:n} -% \begin{syntax} -% \cs{tl_to_uppercase:n} \Arg{tokens} -% \end{syntax} -% Works through all of the \meta{tokens}, replacing each character token -% with the upper case equivalent as defined by \cs{char_set_uccode:nn}. -% Characters with no defined upper case character code are left -% unchanged. This process does not alter the category code assigned -% to the \meta{tokens}. -% \begin{texnote} -% This is a wrapper around the \TeX{} primitive \tn{uppercase}. -% \end{texnote} -% \end{function} -% % \section{Token list conditionals} % % \begin{function}[EXP,pTF]{\tl_if_blank:n, \tl_if_blank:V, \tl_if_blank:o} @@ -1667,21 +1637,6 @@ % \end{macro} % \end{macro} % -% \subsection{Reassigning token list character codes} -% -% \begin{macro}{\tl_to_lowercase:n} -% \begin{macro}{\tl_to_uppercase:n} -% Just some names for a few primitives: we take care or wrapping the -% argument in braces. -% \begin{macrocode} -\cs_new_protected:Npn \tl_to_lowercase:n #1 - { \tex_lowercase:D {#1} } -\cs_new_protected:Npn \tl_to_uppercase:n #1 - { \tex_uppercase:D {#1} } -% \end{macrocode} -% \end{macro} -% \end{macro} -% % \subsection{Modifying token list variables} % % \begin{macro}{\tl_replace_all:Nnn, \tl_replace_all:cnn} @@ -3015,6 +2970,18 @@ % \end{macrocode} % \end{variable} % +% \subsection{Deprecated functions} +% +% \begin{macro}{\tl_to_lowercase:n, \tl_to_uppercase:n} +% For removal after 2017-12-31. +% \begin{macrocode} +\cs_new_protected:Npn \tl_to_lowercase:n #1 + { \tex_lowercase:D {#1} } +\cs_new_protected:Npn \tl_to_uppercase:n #1 + { \tex_uppercase:D {#1} } +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} %</initex|package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index cc2cf5d3f4d..3485c03c978 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3token.dtx Copyright (C) 2005-2015 The LaTeX3 Project +%% File: l3token.dtx Copyright (C) 2005-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -37,7 +37,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3token.dtx 6249 2015-11-11 08:40:42Z joseph $ +\GetIdInfo$Id: l3token.dtx 6465 2016-03-26 16:15:09Z joseph $ {L3 Experimental token manipulation} %</driver|package> %<*driver> @@ -86,11 +86,6 @@ % time the function we're describing can equally well by used on a % control sequence as such one is one token as well. % -% We shall refer to list of tokens as |tlist|s and such lists -% represented by a single control sequence is a \enquote{token list variable} -% |tl var|. Functions for these two types are found in the \textsf{l3tl} -% module. -% % \section{All possible tokens} % % Let us start by reviewing every case that a given token can fall into. @@ -110,7 +105,65 @@ % \show_until_if:w \tex_if:D \if_charcode:w \if:w % \end{verbatim} % -% \section{Character tokens} +% \section{Creating character tokens} +% +% \begin{function}[updated = 2015-11-12] +% { +% \char_set_active_eq:NN, \char_set_active_eq:Nc, +% \char_gset_active_eq:NN, \char_gset_active_eq:Nc +% } +% \begin{syntax} +% \cs{char_set_active_eq:NN} \meta{char} \meta{function} +% \end{syntax} +% Sets the behaviour of the \meta{char} in situations where it is +% active (category code $13$) to be equivalent to that of the +% \meta{function}. The category code of the \meta{char} is +% \emph{unchanged} by this process. The \meta{function} may itself +% be an active character. +% \end{function} +% +% \begin{function}[added = 2015-11-12] +% { +% \char_set_active_eq:nN, \char_set_active_eq:nc +% \char_gset_active_eq:nN, \char_gset_active_eq:nc +% } +% \begin{syntax} +% \cs{char_set_active_eq:nN} \Arg{integer expression} \meta{function} +% \end{syntax} +% Sets the behaviour of the \meta{char} which has character +% code as given by the \meta{integer expression} in situations +% where it is active (category code $13$) to be equivalent to that of the +% \meta{function}. The category code of the \meta{char} is +% \emph{unchanged} by this process. The \meta{function} may itself +% be an active character. +% \end{function} +% +% \begin{function}[EXP, added = 2015-09-09]{\char_generate:nn} +% \begin{syntax} +% \cs{char_generate:nn} \Arg{charcode} \Arg{catcode} +% \end{syntax} +% Generates a character token of the given \meta{charcode} and \meta{catcode} +% (both of which may be integer expressions). The \meta{catcode} may be +% one of +% \begin{itemize} +% \item $1$ (begin group) +% \item $2$ (end group) +% \item $3$ (math toggle) +% \item $4$ (alignment) +% \item $6$ (parameter) +% \item $7$ (math superscript) +% \item $8$ (math subscript) +% \item $11$ (letter) +% \item $12$ (other) +% \end{itemize} +% and other values will raise an error. +% +% The \meta{charcode} may be any one valid for the engine in use. Note +% however that for \XeTeX{} releases prior to 0.99992 only the 8-bit +% range ($0$ to $255$) is accepted due to engine limitations. +% \end{function} +% +% \section{Manipulating and interrogating character tokens} % % \begin{function}[updated = 2015-11-11] % { @@ -204,7 +257,7 @@ % % \begin{function}[updated = 2015-08-06]{\char_set_lccode:nn} % \begin{syntax} -% \cs{char_set_lcode:nn} \Arg{intexpr_1} \Arg{intexpr_2} +% \cs{char_set_lccode:nn} \Arg{intexpr_1} \Arg{intexpr_2} % \end{syntax} % Sets up the behaviour of the \meta{character} when % found inside \cs{tl_to_lowercase:n}, such that \meta{character_1} @@ -954,6 +1007,18 @@ % not a macro then \cs{scan_stop:} will be left in the input stream % \end{function} % +% \section{Internal functions} +% +% \begin{function}[EXP, added = 2016-03-25]{\__char_generate:nn} +% \begin{syntax} +% \cs{__char_generate:nn} \Arg{charcode} \Arg{catcode} +% \end{syntax} +% This function is identical in operation to the public +% \cs{char_generate:nn} but omits various sanity tests. In particular, this +% means it is used in certain places where engine variations need to be +% accounted for by the kernel. +% \end{function} +% % \end{documentation} % % \begin{implementation} @@ -968,7 +1033,7 @@ %<@@=char> % \end{macrocode} % -% \subsection{Character tokens} +% \section{Manipulating and interrogating character tokens} % % \begin{macro}{\char_set_catcode:nn} % \begin{macro}{\char_value_catcode:n} @@ -1180,6 +1245,242 @@ % \end{macrocode} % \end{variable} % +% \section{Creating character tokens} +% +% \begin{macro} +% {^^A +% \char_set_active_eq:NN, \char_gset_active_eq:NN, +% \char_set_active_eq:Nc, \char_gset_active_eq:Nc, +% \char_set_active_eq:nN, \char_gset_active_eq:nN, +% \char_set_active_eq:nc, \char_gset_active_eq:nc +% } +% Four simple functions with very similar definitions, so set up using +% an auxiliary. +% \begin{macrocode} +\group_begin: + \char_set_catcode_active:N \^^@ + \cs_set_protected:Npn \@@_tmp:nN #1#2 + { + \cs_new_protected:cpn { #1 :nN } ##1 + { + \group_begin: + \char_set_catcode_active:n { ##1 } + \char_set_lccode:nn { `\^^@ } { ##1 } + \tex_lowercase:D { \group_end: #2 ^^@ } + } + \cs_new_protected:cpx { #1 :NN } ##1 + { \exp_not:c { #1 : nN } { `##1 } } + } + \@@_tmp:nN { char_set_active_eq } \cs_set_eq:NN + \@@_tmp:nN { char_gset_active_eq } \cs_gset_eq:NN +\group_end: +\cs_generate_variant:Nn \char_set_active_eq:NN { Nc } +\cs_generate_variant:Nn \char_gset_active_eq:NN { Nc } +\cs_generate_variant:Nn \char_set_active_eq:nN { nc } +\cs_generate_variant:Nn \char_gset_active_eq:nN { nc } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[EXP]{\char_generate:nn} +% \begin{macro}[EXP, int]{\__char_generate:nn} +% \begin{macro}[EXP, aux]{\@@_generate_aux:nn} +% \begin{macro}[EXP, aux]{\@@_generate_aux:nnw} +% \begin{variable}{\l_@@_tmp_tl} +% \begin{variable}{\c_@@_max_int} +% \begin{macro}[EXP, aux]{\@@_generate_invalid_catcode:} +% The aim here is to generate characters of (broadly) arbitrary category +% code. Where possible, that is done using engine support (\XeTeX{}, +% \LuaTeX{}). There are though various issues which are covered below. At +% the interface layer, turn the two arguments into integers up-front so +% this is only done once. +% \begin{macrocode} +\cs_new:Npn \char_generate:nn #1#2 + { + \exp:w \exp_after:wN \@@_generate_aux:w + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 ; + } +\cs_new:Npn \__char_generate:nn #1#2 + { + \exp:w \exp_after:wN + \@@_generate_aux:nnw \exp_after:wN + { \__int_value:w \__int_eval:w #1 \exp_after:wN } + {#2} \exp_end: + } +% \end{macrocode} +% Before doing any actual conversion, first some special case filtering. +% The \tn{Ucharcat} primitive cannot make active chars, so that is turned +% off here: if the primitive gets altered then the code is already in +% place for 8-bit engines and will kick in for \LuaTeX{} too. Spaces +% are also banned here as \LuaTeX{} emulation only makes normal (charcode +% $32$ spaces. However, |^^@| is filtered out separately as that can't be +% done with macro emulation either, so is flagged up separately. That +% done, hand off to the engine-dependent part. +% \begin{macrocode} +\cs_new:Npn \@@_generate_aux:w #1 ; #2 ; + { + \if_int_compare:w #2 = \c_thirteen + \__msg_kernel_expandable_error:nn { kernel } { char-active } + \else: + \if_int_compare:w #2 = \c_ten + \if_int_compare:w #1 = \c_zero + \__msg_kernel_expandable_error:nn { kernel } { char-null-space } + \else: + \__msg_kernel_expandable_error:nn { kernel } { char-space } + \fi: + \else: + \if_int_odd:w 0 + \if_int_compare:w #2 < \c_one 1 \fi: + \if_int_compare:w #2 = \c_five 1 \fi: + \if_int_compare:w #2 = \c_nine 1 \fi: + \if_int_compare:w #2 > \c_thirteen 1 \fi: \exp_stop_f: + \__msg_kernel_expandable_error:nn { kernel } + { char-invalid-catcode } + \else: + \if_int_odd:w 0 + \if_int_compare:w #1 < \c_zero 1 \fi: + \if_int_compare:w #1 > \c_@@_max_int 1 \fi: \exp_stop_f: + \__msg_kernel_expandable_error:nn { kernel } + { char-out-of-range } + \else: + \@@_generate_aux:nnw {#1} {#2} + \fi: + \fi: + \fi: + \fi: + \exp_end: + } +\tl_new:N \l_@@_tmp_tl +% \end{macrocode} +% Engine-dependent definitions are now needed for the implementation. For +% \LuaTeX{} and recent \XeTeX{} releases there is engine-level support. +% They can do cases that macro emulation can't. All of those are filtered +% out here using a primitive-based boolean expression for speed. +% The final level is the basic definition at the engine level: the arguments +% here are integers so there is no need to worry about them too much. +% \begin{macrocode} +\group_begin: +%<*package> + \char_set_catcode_active:N \^^L + \cs_set_nopar:Npn ^^L { } +%</package> + \char_set_catcode_other:n { 0 } + \if_int_odd:w 0 + \cs_if_exist:NT \luatex_directlua:D { 1 } + \cs_if_exist:NT \utex_charcat:D { 1 } \exp_stop_f: + \int_const:Nn \c_@@_max_int { 1114111 } + \cs_if_exist:NTF \luatex_directlua:D + { + \cs_new:Npn \@@_generate_aux:nnw #1#2#3 \exp_end: + { + #3 + \exp_after:wN \exp_end: + \luatex_directlua:D { l3kernel.charcat(#1, #2) } + } + } + { + \cs_new:Npn \@@_generate_aux:nnw #1#2#3 \exp_end: + { + #3 + \exp_after:wN \exp_end: + \utex_charcat:D #1 ~ #2 ~ + } + } + \else: +% \end{macrocode} +% For engines where \tn{Ucharcat} isn't available (or emulated) then we have +% to work in macros, and cover only the $8$-bit range. The first stage is +% to build up a |tl| containing |^^@| with each category code that can +% be accessed in this way, with an error set up for the other cases. This +% is all done such that it can be quickly accessed using a |\if_case:w| +% low-level conditional. There are a few things to notice here. +% As |^^L| is |\outer| we need to locally set it to avoid a problem. +% To get open/close braces into the list, they are set up using |\if_false:| +% pairing here and will later be |x|-type expanded into the desired form. +% For making spaces, there needs to be an |o|-type expansion of a |\use:n| +% (or some other tokenization) to avoid dropping the space. We also +% set up active tokens although they are (currently) filtered out by the +% interface layer (\tn{Ucharcat} cannot make active tokens). +% \begin{macrocode} + \int_const:Nn \c_@@_max_int { 255 } + \tl_set:Nn \l_@@_tmp_tl { \exp_not:N \or: } + \char_set_catcode_group_begin:n { 0 } % { + \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \if_false: } } + \char_set_catcode_group_end:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { { \fi: \exp_not:N \or: ^^@ } % } + \tl_set:Nx \l_@@_tmp_tl { \l_@@_tmp_tl } + \char_set_catcode_math_toggle:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } + \char_set_catcode_alignment:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } + \tl_put_right:Nn \l_@@_tmp_tl { \or: } + \char_set_catcode_parameter:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } + \char_set_catcode_math_superscript:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } + \char_set_catcode_math_subscript:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } + \tl_put_right:Nn \l_@@_tmp_tl { \or: } + \char_set_catcode_space:n { 0 } + \tl_put_right:No \l_@@_tmp_tl { \use:n { \or: } ^^@ } + \char_set_catcode_letter:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } + \char_set_catcode_other:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } + \char_set_catcode_active:n { 0 } + \tl_put_right:Nn \l_@@_tmp_tl { \or: ^^@ } +% \end{macrocode} +% Convert the above temporary list into a series of constant token +% lists, one for each character code, using \tn{tex_lowercase:D} to +% convert |^^@| in each case. The \texttt{x}-type expansion deals with +% the |\if_false:| stuff introduced earlier. This is done in three parts +% as |^^L| is awkward. Notice that at this stage |^^@| is active. In +% format mode this is not needed. +% \begin{macrocode} + \cs_set_protected:Npn \@@_tmp:n #1 + { + \char_set_lccode:nn { 0 } {#1} + \char_set_lccode:nn { 32 } {#1} + \exp_args:Nx \tex_lowercase:D + { + \tl_const:Nn + \exp_not:c { c_@@_ \__int_to_roman:w #1 _tl } + { \exp_not:o \l_@@_tmp_tl } + } + } +%<*package> + \int_step_function:nnnN { 0 } { 1 } { 11 } \@@_tmp:n + \group_begin: + \tl_replace_once:Nnn \l_@@_tmp_tl { ^^@ } { \ERROR } + \@@_tmp:n { 12 } + \group_end: + \int_step_function:nnnN { 13 } { 1 } { 255 } \@@_tmp:n +%</package> +%<*initex> + \int_step_function:nnnN { 0 } { 1 } { 255 } \@@_tmp:n +%</initex> + \cs_new:Npn \@@_generate_aux:nnw #1#2#3 \exp_end: + { + #3 + \exp_after:wN \exp_after:wN + \exp_after:wN \exp_end: + \exp_after:wN \exp_after:wN + \if_case:w #2 + \exp_last_unbraced:Nv \exp_stop_f: + { c_@@_ \__int_to_roman:w #1 _tl } + \fi: + } + \fi: +\group_end: +% \end{macrocode} +% \end{macro} +% \end{variable} +% \end{variable} +% \end{macro} +% \end{macro} +% \end{macro} +% \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 f3d52e71669..acd7c2238d5 100644 --- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx +++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx @@ -37,8 +37,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{l3keys2e}{Support package l3kernel too old} @@ -52,8 +52,8 @@ %<package> } \def\ExplFileName{l3keys2e} \def\ExplFileDescription{LaTeX2e option processing using LaTeX3 keys} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx index 44d94da461c..08d71a22a87 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx @@ -38,8 +38,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{xfrac}{Support package l3kernel too old} @@ -54,8 +54,8 @@ \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} \def\ExplFileName{xfrac} \def\ExplFileDescription{L3 Experimental split-level fractions} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx index 7150b65947c..8e1e42dee6f 100644 --- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx @@ -41,8 +41,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{xparse}{Support package l3kernel too old} @@ -56,8 +56,8 @@ %<package> } \def\ExplFileName{xparse} \def\ExplFileDescription{L3 Experimental document command parser} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} %</driver|package> %<*driver> \documentclass[full]{l3doc} @@ -2008,13 +2008,8 @@ % \begin{macrocode} \token_if_eq_catcode:NNTF + #1 { - \group_begin: - \char_set_lccode:nn { `A } { `#1 } - \tex_lowercase:D - { - \group_end: - \l_@@_fn_tl A - } + \exp_after:wN \exp_after:wN \exp_after:wN + \l_@@_fn_tl \char_generate:nn { `#1 } { 11 } } { \exp_after:wN \l_@@_fn_tl @@ -2654,10 +2649,8 @@ { \@@_grab_v_group_end: \@@_add_arg:o \c_@@_no_value_tl - \group_begin: - \char_set_lccode:nn { `\# } { \tex_endlinechar:D } - \tex_lowercase:D - { \group_end: \peek_meaning_remove:NTF ## } + \exp_after:wN \exp_after:wN \exp_after:wN + \peek_meaning_remove:NTF \char_generate:nn { \tex_endlinechar:D } { 6 } { \__msg_kernel_error:nnxxx { xparse } { verbatim-newline } { \exp_after:wN \token_to_str:N \l_@@_fn_tl } diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx index 9fe0c844ab2..d425d052698 100644 --- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx @@ -41,8 +41,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}[2016/01/19] -%<package>\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +%<package>\@ifpackagelater{expl3}{2016/03/26} %<package> {} %<package> {% %<package> \PackageError{xtemplate}{Support package l3kernel too old} @@ -56,8 +56,8 @@ %<package> } \def\ExplFileName{xtemplate} \def\ExplFileDescription{L3 Experimental prototype document functions} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/tex/latex/l3build/l3build.lua b/Master/texmf-dist/tex/latex/l3build/l3build.lua index e6766737673..edb88994984 100644 --- a/Master/texmf-dist/tex/latex/l3build/l3build.lua +++ b/Master/texmf-dist/tex/latex/l3build/l3build.lua @@ -17,8 +17,8 @@ --]] -- Version information: should be identical to that in l3build.dtx -release_date = "2016/01/19" -release_ver = "6377" +release_date = "2016/03/26" +release_ver = "6466" -- "module" is a deprecated function in Lua 5.2: as we want the name -- for other purposes, and it should eventually be 'free', simply @@ -859,6 +859,8 @@ function formatlualog(logfile, newfile) if string.match(line, "^%.+\\mathon$") then return line, line end + -- LuaTeX identifies spaceskip glue + line = string.gsub(line,"%(\\spaceskip%) ", " ") -- Remove 'display' at end of display math boxes: -- LuaTeX omits this as it includes direction in all cases line = string.gsub(line, "(\\hbox%(.*), display$", "%1") @@ -1360,7 +1362,9 @@ help = help or function() print(" --engine|-e Sets the engine to use for running test") print(" --halt-on-error|-H Stops running tests after the first failure") print(" --version|-v Sets the version to insert into sources") + print(" --quiet|-q Suppresses TeX output when unpacking") print("") + print("See l3build.pdf for further details.") end function check(names) @@ -1498,7 +1502,7 @@ function ctan(standalone) dir, zipexe .. " " .. zipopts .. " -ll ".. zipname .. " " .. "." .. ( - (binfiles or exclude) and (" -x" .. binfiles .. " " .. exclude) + (binfiles or exclude) and (" -x" .. binfiles .. " " .. exclude) or "" ) ) diff --git a/Master/texmf-dist/tex/latex/l3build/regression-test.tex b/Master/texmf-dist/tex/latex/l3build/regression-test.tex index 96dc4320a58..a4256a227dc 100644 --- a/Master/texmf-dist/tex/latex/l3build/regression-test.tex +++ b/Master/texmf-dist/tex/latex/l3build/regression-test.tex @@ -70,7 +70,7 @@ \def\START{\LONGTYPEOUT{START-TEST-LOG^^J^^J% \STARTMESSAGE% ^^J^^JDon't change this file in any respect.% -^^J^^J\CTable^^J}} +^^J^^J}} \begingroup \catcode`\^^\=0 \catcode`\^^A=\catcode`\% diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty index 498929faa53..4cfee22198c 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty @@ -46,8 +46,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{l3sort}{Support package l3kernel too old} @@ -59,7 +59,7 @@ }% \endinput } -\GetIdInfo$Id: l3sort.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3sort.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental sorting functions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -139,7 +139,7 @@ \if_int_compare:w #3 < \l__sort_length_int #1 #2 { \tex_the:D \tex_toks:D #3 } \exp_after:wN \__sort_toks:NNw \exp_after:wN #1 \exp_after:wN #2 - \int_use:N \__int_eval:w #3 + \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #3 + \c_one \exp_after:wN ; \fi: } \cs_new_protected_nopar:Npn \__sort_level: diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty index 7e5945af50f..9ff38bdc7c0 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3flag.sty @@ -45,8 +45,8 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{l3flag}{Support package l3kernel too old} @@ -58,7 +58,7 @@ }% \endinput } -\GetIdInfo$Id: l3flag.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3flag.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental flags} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -77,7 +77,7 @@ \fi: \cs_set_eq:cN { __flag_#2_#1: } \tex_undefined:D \exp_after:wN \__flag_clear:ww - \int_use:N \__int_eval:w \c_one + #1 ; + \__int_value:w \__int_eval:w \c_one + #1 ; #2 \q_stop } \cs_new_protected:Npn \flag_clear_new:n #1 @@ -101,7 +101,7 @@ \cs_new:Npn \__flag_height_loop:ww #1 ; #2 \q_stop { \if_cs_exist:w __flag_#2_#1: \cs_end: - \exp_after:wN \__flag_height_loop:ww \int_use:N \__int_eval:w \c_one + + \exp_after:wN \__flag_height_loop:ww \__int_value:w \__int_eval:w \c_one + \else: \exp_after:wN \__flag_height_end:ww \fi: diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty index afdd2caefae..60ed114345a 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty @@ -45,8 +45,8 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{l3regex}{Support package l3kernel too old} @@ -58,7 +58,7 @@ }% \endinput } -\GetIdInfo$Id: l3regex.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3regex.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental regular expressions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -1952,7 +1952,7 @@ { \__int_value:w \tex_skip:D #1 } { \tex_the:D \tex_toks:D #1 } \exp_after:wN \__regex_match_one_active:w - \int_use:N \__int_eval:w #1 + \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #1 + \c_one \exp_after:wN ; \fi: } \cs_new_protected:Npn \__regex_query_set:nnn #1#2#3 @@ -2027,7 +2027,7 @@ \cs_new_protected:Npn \__regex_action_cost:n #1 { \exp_args:No \__regex_store_state:n - { \int_use:N \__int_eval:w \l__regex_current_state_int + #1 } + { \__int_value:w \__int_eval:w \l__regex_current_state_int + #1 } } \cs_new_protected:Npn \__regex_store_state:n #1 { @@ -2077,8 +2077,8 @@ \cs_new:Npn \__regex_query_range:nn #1#2 { \exp_after:wN \__regex_query_range_loop:ww - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 ; + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 ; \__prg_break_point: } \cs_new:Npn \__regex_query_range_loop:ww #1 ; #2 ; @@ -2089,7 +2089,7 @@ \fi: \tex_the:D \tex_toks:D #1 \exp_stop_f: \exp_after:wN \__regex_query_range_loop:ww - \int_use:N \__int_eval:w #1 + \c_one ; #2 ; + \__int_value:w \__int_eval:w #1 + \c_one ; #2 ; } \cs_new:Npn \__regex_query_submatch:n #1 { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty index 66d1317d434..37286265b16 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty @@ -45,8 +45,8 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{l3regex}{Support package l3kernel too old} @@ -58,7 +58,7 @@ }% \endinput } -\GetIdInfo$Id: l3regex.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3regex.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental regular expressions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -1928,7 +1928,7 @@ { \__int_value:w \tex_skip:D #1 } { \tex_the:D \tex_toks:D #1 } \exp_after:wN \__regex_match_one_active:w - \int_use:N \__int_eval:w #1 + \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #1 + \c_one \exp_after:wN ; \fi: } \cs_new_protected:Npn \__regex_query_set:nnn #1#2#3 @@ -2002,7 +2002,7 @@ \cs_new_protected:Npn \__regex_action_cost:n #1 { \exp_args:No \__regex_store_state:n - { \int_use:N \__int_eval:w \l__regex_current_state_int + #1 } + { \__int_value:w \__int_eval:w \l__regex_current_state_int + #1 } } \cs_new_protected:Npn \__regex_store_state:n #1 { @@ -2052,8 +2052,8 @@ \cs_new:Npn \__regex_query_range:nn #1#2 { \exp_after:wN \__regex_query_range_loop:ww - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 ; + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 ; \__prg_break_point: } \cs_new:Npn \__regex_query_range_loop:ww #1 ; #2 ; @@ -2064,7 +2064,7 @@ \fi: \tex_the:D \tex_toks:D #1 \exp_stop_f: \exp_after:wN \__regex_query_range_loop:ww - \int_use:N \__int_eval:w #1 + \c_one ; #2 ; + \__int_value:w \__int_eval:w #1 + \c_one ; #2 ; } \cs_new:Npn \__regex_query_submatch:n #1 { 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 eec15a9d29d..bedffef50f0 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{expl3} -\GetIdInfo$Id: l3str-convert.dtx 6106 2015-09-26 08:54:30Z joseph $ +\GetIdInfo$Id: l3str-convert.dtx 6443 2016-03-24 10:59:09Z joseph $ {L3 Experimental string encoding conversions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -97,7 +97,7 @@ \group_begin: \char_set_lccode:nn { `\* } { `\ } \char_set_lccode:nn { `\A } { `\A } -\tl_to_lowercase:n +\tex_lowercase:D { \group_end: \cs_new_protected:Npn \__str_gset_other:Nn #1#2 @@ -172,23 +172,15 @@ \fi: } \group_begin: - \char_set_catcode_other:n { \c_zero } \tl_set:Nx \l__str_internal_tl { \tl_to_str:n { 0123456789ABCDEF } } - \exp_args:No \tl_map_inline:nn { \l__str_internal_tl " } - { \char_set_lccode:nn {`#1} { \c_zero } } - \tl_map_inline:Nn \l__str_internal_tl - { - \tl_map_inline:Nn \l__str_internal_tl - { - \char_set_lccode:nn { \c_zero } {"#1##1} - \tl_to_lowercase:n - { - \tl_const:cx - { c__str_byte_ \int_eval:n {"#1##1} _tl } - { ^^@ #1 ##1 } - } - } - } + \tl_map_inline:Nn \l__str_internal_tl + { + \tl_map_inline:Nn \l__str_internal_tl + { + \tl_const:cx { c__str_byte_ \int_eval:n {"#1##1} _tl } + { \char_generate:nn { "#1##1 } { 12 } #1 ##1 } + } + } \group_end: \tl_const:cn { c__str_byte_-1_tl } { { } \use_none:n { } } \cs_new:Npn \__str_output_byte:n #1 @@ -197,7 +189,7 @@ { \exp_after:wN \exp_after:wN \exp_after:wN \use_i:nnn - \cs:w c__str_byte_ \int_use:N \__int_eval:w + \cs:w c__str_byte_ \__int_value:w \__int_eval:w } \cs_new:Npn \__str_output_hexadecimal:n #1 { \__str_output_hexadecimal:w #1 \__str_output_end: } @@ -205,7 +197,7 @@ { \exp_after:wN \exp_after:wN \exp_after:wN \use_none:n - \cs:w c__str_byte_ \int_use:N \__int_eval:w + \cs:w c__str_byte_ \__int_value:w \__int_eval:w } \cs_new_nopar:Npn \__str_output_end: { \__int_eval_end: _tl \cs_end: } @@ -472,8 +464,8 @@ \cs_new_protected:Npn \__str_encode_native_loop:w #1 \s__tl #2 \s__tl { \use_none_delimit_by_q_stop:w #2 \q_stop - \tex_lccode:D \l__str_internal_int \__int_eval:w #2 \__int_eval_end: - \tl_to_lowercase:n { \__tl_build_one:n { ^^@ } } + \exp_args:Nx \__tl_build_one:n + { \char_generate:nn {#2} {12} } \__str_encode_native_loop:w } } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def index 99de1b010fe..96322083f8f 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def index cd8a90ba144..7e4a862344e 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def index e77c1716c23..6fcf045535a 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def index b5bfe82a6ea..2528a8f9feb 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def index a3eeed87e07..b8c66c6283b 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def index cdb0cdc7d76..3ab9c444dab 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def index d2768180dd2..dfc1ad947b9 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def index a213cac77af..aac1d299767 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def index 035f036807d..f333229dd00 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def index 56e89c1d093..e5ca8871aa4 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def index a0c604da86c..d019f144949 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def index d1fb24ca153..f2e9da49095 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def index 63d1bfb7051..e36f926ceb1 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def index 85f8bc71ed3..e8cb981a621 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def index 0db19bc3cb7..8d46779b6e9 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def index 009201a278f..e2b8568d358 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def index 08730c09ae0..df8659954e7 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def index ffb8e2fbea3..b1b0d554590 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -144,7 +144,7 @@ \fi: \else: \exp_after:wN \__str_decode_utf_viii_continuation:wwN - \int_use:N \__int_eval:w `#1 - "C0 \exp_after:wN \__int_eval_end: + \__int_value:w \__int_eval:w `#1 - "C0 \exp_after:wN \__int_eval_end: \fi: \s__tl \use_none_delimit_by_q_stop:w {"80} {"800} {"10000} {"110000} \q_stop @@ -159,7 +159,7 @@ "C0 \exp_stop_f: #3 \exp_after:wN \__str_decode_utf_viii_aux:wNnnwN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w #1 * "40 + `#3 - "80 \exp_after:wN \__int_eval_end: \else: @@ -189,7 +189,7 @@ \__str_decode_utf_viii_overflow:w #1 \fi: \exp_after:wN \__str_decode_utf_viii_continuation:wwN - \int_use:N \__int_eval:w #1 - #4 \exp_after:wN \__int_eval_end: + \__int_value:w \__int_eval:w #1 - #4 \exp_after:wN \__int_eval_end: \fi: \s__tl #2 {#4} #5 diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def index 552f2e9e1ed..2999bf6abd6 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def index a0a1dcc9b3c..35550296787 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def index 5e9735441f6..28babc286f9 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -49,7 +49,7 @@ \char_set_lccode:nn {`\*} {`\\} \char_set_catcode_other:N \^^J \char_set_catcode_other:N \^^M - \tl_to_lowercase:n + \tex_lowercase:D { \cs_new_protected_nopar:Npn \__str_convert_unescape_string: { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def index 3f61cb1b950..5fcd1eeb79c 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3str-convert.dtx Copyright (C) 2013-2015 The LaTeX3 Project +%% File: l3str-convert.dtx Copyright (C) 2013-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this 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 ab454bf1ad2..961ff91b149 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{expl3} -\GetIdInfo$Id: l3str-format.dtx 6009 2015-09-18 08:09:21Z joseph $ +\GetIdInfo$Id: l3str-format.dtx 6439 2016-03-23 12:03:41Z joseph $ {L3 Experimental string formatting} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -371,42 +371,37 @@ } \cs_new:Npn \__str_format_fp_round:wn #1 ; #2 { \__fp_parse:n { round ( #1; , #2 - \__fp_exponent:w #1; ) } } -\group_begin: -\char_set_catcode_other:N E -\tl_to_lowercase:n +\cs_new:Npn \__str_format_fp_e:wn \s__fp \__fp_chk:w #1#2#3 ; #4 { - \group_end: - \cs_new:Npn \__str_format_fp_e:wn \s__fp \__fp_chk:w #1#2#3 ; #4 + \int_case:nnF {#1} { - \int_case:nnF {#1} - { - {0} { \use:nf { 0 . } { \prg_replicate:nn {#4} { 0 } } e 0 } - {2} { inf } - {3} { nan } - } - { - \exp_last_unbraced:Nf \__str_format_fp_e_aux:wn - \__str_format_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 } - {#4} - } + { 0 } { \use:nf { 0 . } { \prg_replicate:nn {#4} { 0 } } e 0 } + { 2 } { inf } + { 3 } { nan } } - \cs_new:Npn \__str_format_fp_e_aux:wn - \s__fp \__fp_chk:w #1#2 #3 #4#5#6#7 ; #8 { - \__str_format_put:fw { \int_eval:n { #3 - 1 } } - \__str_format_put:nw { e } - \int_compare:nNnTF {#8} > \c_sixteen - { - \__str_format_put:fw { \prg_replicate:nn { #8 - \c_fifteen } {0} } - \__str_format_put:fw { \use_none:n #4#5#6#7 } - } - { - \__str_format_put:fw - { \str_range:nnn { #4#5#6#7 0 } { 2 } { #8 + 1 } } - } - \__str_format_put:fw { \use_i:nnnn #4 . } - \use_none:n \s__stop + \exp_last_unbraced:Nf \__str_format_fp_e_aux:wn + \__str_format_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 } + {#4} + } + } +\cs_new:Npn \__str_format_fp_e_aux:wn + \s__fp \__fp_chk:w #1#2 #3 #4#5#6#7 ; #8 + { + \__str_format_put:fw { \int_eval:n { #3 - 1 } } + \__str_format_put:nw { e } + \int_compare:nNnTF {#8} > \c_sixteen + { + \__str_format_put:fw { \prg_replicate:nn { #8 - \c_fifteen } {0} } + \__str_format_put:fw { \use_none:n #4#5#6#7 } + } + { + \__str_format_put:fw + { \str_range:nnn { #4#5#6#7 0 } { 2 } { #8 + 1 } } } + \__str_format_put:fw { \use_i:nnnn #4 . } + \use_none:n \s__stop + } } \cs_new:Npn \__str_format_fp_f:wn \s__fp \__fp_chk:w #1#2#3 ; #4 { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty index 6d5715f7d48..3d5ca864417 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-analysis.sty @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3tl-analysis.dtx Copyright (C) 2011-2012,2015 The LaTeX3 Project +%% File: l3tl-analysis.dtx Copyright (C) 2011-2012,2015,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{expl3} -\GetIdInfo$Id: l3tl-analysis.dtx 6244 2015-11-09 13:33:20Z joseph $ +\GetIdInfo$Id: l3tl-analysis.dtx 6443 2016-03-24 10:59:09Z joseph $ {L3 Experimental token lists analysis} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -277,7 +277,7 @@ \exp_not:n { \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: } \exp_not:N \__int_value:w `#1 \s__tl \exp_not:N \exp_after:wN \exp_not:N \__tl_analysis_b_normals:ww - \exp_not:N \int_use:N \exp_not:N \__int_eval:w \c_minus_one + + \exp_not:N \__int_value:w \exp_not:N \__int_eval:w \c_minus_one + } \cs_new:Npn \__tl_analysis_b_cs:Nww #1 { @@ -287,7 +287,7 @@ \cs_new:Npn \__tl_analysis_b_cs_test:ww #1 ; #2 ; #3 ; #4 ; { \exp_after:wN \__tl_analysis_b_normals:ww - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_compare:w #1 = \c_zero #3 \else: @@ -295,7 +295,7 @@ \fi: - #2 \exp_after:wN ; - \int_use:N \__int_eval:w #4 + #1 ; + \__int_value:w \__int_eval:w #4 + #1 ; } \group_begin: \char_set_catcode_other:N A @@ -314,9 +314,9 @@ \else: 2 \fi: \if_int_odd:w \etex_gluestretch:D \tex_skip:D #1 \exp_stop_f: - \exp_after:wN \__tl_analysis_b_special_char:wN \int_use:N + \exp_after:wN \__tl_analysis_b_special_char:wN \__int_value:w \else: - \exp_after:wN \__tl_analysis_b_special_space:w \int_use:N + \exp_after:wN \__tl_analysis_b_special_space:w \__int_value:w \fi: \__int_eval:w \c_one + #1 \exp_after:wN ; \token_to_str:N diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty index 7d38e2cc355..c9c22b3fd38 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3tl-build.sty @@ -45,8 +45,8 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{l3tl-build}{Support package l3kernel too old} @@ -58,7 +58,7 @@ }% \endinput } -\GetIdInfo$Id: l3tl-build.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3tl-build.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental token list construction} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty index f7ee4dc07a3..6f37ce57337 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -47,8 +47,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{l3galley}{Support package l3kernel too old} @@ -60,7 +60,7 @@ }% \endinput } -\GetIdInfo$Id: l3galley.dtx 6377 2016-01-19 22:28:13Z joseph $ +\GetIdInfo$Id: l3galley.dtx 6466 2016-03-26 16:23:41Z joseph $ {L3 Experimental galley code} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -554,15 +554,15 @@ \__galley_parshape_set_cutouts: \tl_set:Nx \l__galley_tmp_tl { - \int_use:N \tex_parshape:D + \__int_value:w \tex_parshape:D \int_step_function:nnnN \c_one \c_one \tex_parshape:D \tmp } } \def\tmp#1{% \c_space_tl - \int_use:N \etex_parshapeindent:D #1 \c_space_tl \c_space_tl - \int_use:N \etex_parshapelength:D #1 \c_space_tl + \__int_value:w \etex_parshapeindent:D #1 \c_space_tl \c_space_tl + \__int_value:w \etex_parshapelength:D #1 \c_space_tl } \cs_new_protected_nopar:Npn \__galley_parshape_set_margins: { @@ -864,7 +864,7 @@ } } \cs_new:Npn \__galley_save_display_club_penalties:n #1 - { \int_use:N \etex_clubpenalties:D \__int_eval:w #1 \__int_eval_end: , } + { \__int_value:w \etex_clubpenalties:D \__int_eval:w #1 \__int_eval_end: , } \cs_new_protected:Npn \galley_save_display_widow_penalties:N #1 { \clist_set:Nx #1 @@ -875,7 +875,7 @@ } } \cs_new:Npn \__galley_save_display_widow_penalties:n #1 - { \int_use:N \etex_displaywidowpenalties:D \__int_eval:w #1 \__int_eval_end: , } + { \__int_value:w \etex_displaywidowpenalties:D \__int_eval:w #1 \__int_eval_end: , } \cs_new_protected:Npn \galley_save_widow_penalties:N #1 { \clist_set:Nx #1 @@ -886,9 +886,9 @@ } } \cs_new:Npn \__galley_save_widow_penalties:n #1 - { \int_use:N \etex_widowpenalties:D \__int_eval:w #1 \__int_eval_end: , } + { \__int_value:w \etex_widowpenalties:D \__int_eval:w #1 \__int_eval_end: , } \cs_new_protected_nopar:Npn \galley_interline_penalty: - { \int_use:N \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero } + { \__int_value:w \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero } \__msg_kernel_new:nnn { galley } { no-line-to-end } { There's~no~line~here~to~end. } \cs_set_nopar:Npn \clearpage diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 048905cce52..8f1690fb2cf 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -82,8 +82,8 @@ %% ----------------------------------------------------------------------- \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2016/01/19}% -\def\ExplFileVersion{6377}% +\def\ExplFileDate{2016/03/26}% +\def\ExplFileVersion{6466}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -242,7 +242,7 @@ }% }% \endgroup -\GetIdInfo$Id: l3bootstrap.dtx 6339 2016-01-01 09:30:10Z joseph $ +\GetIdInfo$Id: l3bootstrap.dtx 6412 2016-02-12 21:45:29Z joseph $ {L3 Bootstrap code}% \begingroup \expandafter\ifx\csname directlua\endcsname\relax @@ -417,7 +417,7 @@ \tex_endlinechar:D = 32 \scan_stop: \bool_set_true:N \l__kernel_expl_bool } -%% File: l3names.dtx Copyright (C) 1990-2015 The LaTeX3 project +%% File: l3names.dtx Copyright (C) 1990-2016 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -449,7 +449,7 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3names.dtx 6328 2015-12-21 12:41:32Z joseph $ +\GetIdInfo$Id: l3names.dtx 6433 2016-03-11 20:04:27Z joseph $ {L3 Namespace for primitives} \let \tex_global:D \global \let \tex_let:D \let @@ -904,6 +904,7 @@ \__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 @@ -987,6 +988,7 @@ \__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 @@ -1028,6 +1030,7 @@ \__kernel_primitive:NN \aligntab \luatex_aligntab:D \__kernel_primitive:NN \attribute \luatex_attribute:D \__kernel_primitive:NN \attributedef \luatex_attributedef: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 @@ -1038,7 +1041,10 @@ \__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 \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 @@ -1046,6 +1052,7 @@ \__kernel_primitive:NN \hyphenationmin \luatex_hypenationmin: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 @@ -1062,7 +1069,7 @@ \__kernel_primitive:NN \nohrule \luatex_nohrule:D \__kernel_primitive:NN \nokerns \luatex_nokerns:D \__kernel_primitive:NN \noligs \luatex_noligs:D - \__kernel_primitive:NN \nospace \luatex_nospace: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 \pageleftoffset \luatex_pageleftoffset:D @@ -1081,6 +1088,8 @@ \__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 \__kernel_primitive:NN \bodydir \luatex_bodydir:D @@ -1101,6 +1110,8 @@ \__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 @@ -1121,6 +1132,7 @@ \__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 \__kernel_primitive:NN \Uchar \utex_char:D \__kernel_primitive:NN \Ucharcat \utex_charcat:D @@ -1316,6 +1328,15 @@ \tex_let:D \tex_input:D \@@input \tex_let:D \tex_italiccorrection:D \@@italiccorr \tex_let:D \tex_underline:D \@@underline + \tex_let:D \pdftex_tracingfonts:D \tex_undefined:D + \etex_ifdefined:D \pdftracingfonts + \tex_let:D \pdftex_tracingfonts:D \pdftracingfonts + \tex_else:D + \etex_ifdefined:D \luatex_directlua:D + \luatex_directlua:D { tex.enableprimitives("@@", {"tracingfonts"}) } + \tex_let:D \pdftex_tracingfonts:D \luatextracingfonts + \tex_fi:D + \tex_fi:D \tex_fi:D \etex_ifdefined:D \luatexsuppressfontnotfounderror \tex_let:D \luatex_alignmark:D \luatexalignmark @@ -2664,7 +2685,7 @@ \exp_after:wN \exp_not:N \cs:w :: #1 \cs_end: \__cs_generate_internal_variant_loop:n } -%% File: l3tl.dtx Copyright (C) 1990-2015 The LaTeX3 Project +%% File: l3tl.dtx Copyright (C) 1990-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -2696,7 +2717,7 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3tl.dtx 6121 2015-09-29 20:31:06Z bruno $ +\GetIdInfo$Id: l3tl.dtx 6465 2016-03-26 16:15:09Z joseph $ {L3 Token lists} \cs_new_protected:Npn \tl_new:N #1 { @@ -2971,10 +2992,6 @@ } } \group_end: -\cs_new_protected:Npn \tl_to_lowercase:n #1 - { \tex_lowercase:D {#1} } -\cs_new_protected:Npn \tl_to_uppercase:n #1 - { \tex_uppercase:D {#1} } \cs_new_protected_nopar:Npn \tl_replace_once:Nnn { \__tl_replace:NnNNNnn \q_mark ? \__tl_replace_wrap:w \tl_set:Nx } \cs_new_protected_nopar:Npn \tl_greplace_once:Nnn @@ -3581,7 +3598,11 @@ \tl_new:N \g_tmpb_tl \tl_new:N \l_tmpa_tl \tl_new:N \l_tmpb_tl -%% File: l3str.dtx Copyright (C) 2011-2015 The LaTeX3 Project +\cs_new_protected:Npn \tl_to_lowercase:n #1 + { \tex_lowercase:D {#1} } +\cs_new_protected:Npn \tl_to_uppercase:n #1 + { \tex_uppercase:D {#1} } +%% File: l3str.dtx Copyright (C) 2011-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -3613,7 +3634,7 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3str.dtx 6357 2016-01-03 08:42:55Z joseph $ +\GetIdInfo$Id: l3str.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Strings} \group_begin: \cs_set_protected:Npn \__str_tmp:n #1 @@ -3821,7 +3842,7 @@ \cs_new:Npn \__str_item:nn #1#2 { \exp_after:wN \__str_item:w - \int_use:N \__int_eval:w #2 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 \exp_after:wN ; \__int_value:w \__str_count:n {#1} ; #1 \q_stop } @@ -3834,7 +3855,7 @@ { \exp_after:wN \use_i_delimit_by_q_stop:nw \exp:w \exp_after:wN \__str_skip_exp_end:w - \int_use:N \__int_eval:w #1 + #2 ; + \__int_value:w \__int_eval:w #1 + #2 ; } } { @@ -3852,12 +3873,12 @@ \exp_after:wN \__str_skip_loop:wNNNNNNNN \else: \exp_after:wN \__str_skip_end:w - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \fi: #1 ; } \cs_new:Npn \__str_skip_loop:wNNNNNNNN #1; #2#3#4#5#6#7#8#9 - { \exp_after:wN \__str_skip_exp_end:w \int_use:N \__int_eval:w #1 - \c_eight ; } + { \exp_after:wN \__str_skip_exp_end:w \__int_value:w \__int_eval:w #1 - \c_eight ; } \cs_new:Npn \__str_skip_end:w #1 ; { \exp_after:wN \__str_skip_end:NNNNNNNN @@ -3880,8 +3901,8 @@ { \exp_after:wN \__str_range:w \__int_value:w \__str_count:n {#1} \exp_after:wN ; - \int_use:N \__int_eval:w #2 - \c_one \exp_after:wN ; - \int_use:N \__int_eval:w #3 ; + \__int_value:w \__int_eval:w #2 - \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #3 ; #1 \q_stop } \cs_new:Npn \__str_range:w #1; #2; #3; @@ -3893,7 +3914,7 @@ \cs_new:Npn \__str_range:nnw #1#2 { \exp_after:wN \__str_collect_delimit_by_q_stop:w - \int_use:N \__int_eval:w #2 - #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 - #1 \exp_after:wN ; \exp:w \__str_skip_exp_end:w #1 ; } \cs_new:Npn \__str_range_normalize:nn #1#2 @@ -3929,7 +3950,7 @@ \cs_new:Npn \__str_collect_loop:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9 { \exp_after:wN \__str_collect_loop:wn - \int_use:N \__int_eval:w #1 - \c_seven ; + \__int_value:w \__int_eval:w #1 - \c_seven ; { #2 #3#4#5#6#7#8#9 } } \cs_new:Npn \__str_collect_end:wn #1 ; @@ -4042,7 +4063,12 @@ \cs_new:Npn \__str_change_case_aux:nn #1#2 { \__str_change_case_loop:nw {#2} #1 \q_recursion_tail \q_recursion_stop + \__str_change_case_result:n { } } +\cs_new:Npn \__str_change_case_output:nw #1#2 \__str_change_case_result:n #3 + { #2 \__str_change_case_result:n { #3 #1 } } +\cs_generate_variant:Nn \__str_change_case_output:nw { f } +\cs_new:Npn \__str_change_case_end:wn #1 \__str_change_case_result:n #2 { #2 } \cs_new:Npn \__str_change_case_loop:nw #1#2 \q_recursion_stop { \tl_if_head_is_space:nTF {#2} @@ -4053,14 +4079,18 @@ \use:x { \cs_new:Npn \exp_not:N \__str_change_case_space:n ##1 \c_space_tl } { - \c_space_tl + \__str_change_case_output:nw { ~ } \__str_change_case_loop:nw {#1} } \cs_new:Npn \__str_change_case_char:nN #1#2 { - \quark_if_recursion_tail_stop:N #2 + \quark_if_recursion_tail_stop_do:Nn #2 + { \__str_change_case_end:wn } \cs_if_exist:cTF { c__unicode_ #1 _ #2 _tl } - { \tl_to_str:c { c__unicode_ #1 _ #2 _tl } } + { + \__str_change_case_output:fw + { \tl_to_str:c { c__unicode_ #1 _ #2 _tl } } + } { \__str_change_case_char_aux:nN {#1} #2 } \__str_change_case_loop:nw {#1} } @@ -4069,17 +4099,19 @@ \cs_new:Npn \__str_change_case_char_aux:nN #1#2 { \int_compare:nNnTF { \use:c { __str_lookup_ #1 :N } #2 } = { 0 } - { #2 } + { \__str_change_case_output:nw {#2} } { - \utex_char:D \use:c { __str_lookup_ #1 :N } #2 ~ + \__str_change_case_output:fw + { \utex_char:D \use:c { __str_lookup_ #1 :N } #2 ~ } } } - \cs_new_protected:Npn \__str_lookup_lower:N #1 { \tex_lccode:D `#1 } - \cs_new_protected:Npn \__str_lookup_upper:N #1 { \tex_uccode:D `#1 } - \cs_new_eq:NN \__str_lookup_fold:N \__str_lookup_lower:N + \cs_set_protected:Npn \__str_lookup_lower:N #1 { \tex_lccode:D `#1 } + \cs_set_protected:Npn \__str_lookup_upper:N #1 { \tex_uccode:D `#1 } + \cs_set_eq:NN \__str_lookup_fold:N \__str_lookup_lower:N } { - \cs_new:Npn \__str_change_case_char_aux:nN #1#2 { #2 } + \cs_new:Npn \__str_change_case_char_aux:nN #1#2 + { \__str_change_case_output:nw {#2} } } \str_const:Nx \c_ampersand_str { \cs_to_str:N \& } \str_const:Nx \c_atsign_str { \cs_to_str:N \@ } @@ -4821,7 +4853,7 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3int.dtx 6366 2016-01-05 22:18:59Z joseph $ +\GetIdInfo$Id: l3int.dtx 6441 2016-03-24 10:11:59Z joseph $ {L3 Integers} \cs_new_eq:NN \__int_value:w \tex_number:D \cs_new_eq:NN \__int_eval:w \etex_numexpr:D @@ -4833,7 +4865,7 @@ \cs_new:Npn \int_abs:n #1 { \__int_value:w \exp_after:wN \__int_abs:N - \int_use:N \__int_eval:w #1 \__int_eval_end: + \__int_value:w \__int_eval:w #1 \__int_eval_end: \exp_stop_f: } \cs_new:Npn \__int_abs:N #1 @@ -4841,16 +4873,16 @@ \cs_set:Npn \int_max:nn #1#2 { \__int_value:w \exp_after:wN \__int_maxmin:wwN - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 ; + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 ; > \exp_stop_f: } \cs_set:Npn \int_min:nn #1#2 { \__int_value:w \exp_after:wN \__int_maxmin:wwN - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 ; + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 ; < \exp_stop_f: } @@ -4864,10 +4896,10 @@ } \cs_new:Npn \int_div_truncate:nn #1#2 { - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \__int_div_truncate:NwNw - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 ; + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 ; \__int_eval_end: } \cs_new:Npn \__int_div_truncate:NwNw #1#2; #3#4; @@ -5003,7 +5035,7 @@ \prg_new_conditional:Npnn \int_compare:n #1 { p , T , F , TF } { \exp_after:wN \__int_compare:w - \int_use:N \__int_eval:w #1 \__prg_compare_error: + \__int_value:w \__int_eval:w #1 \__prg_compare_error: } \cs_new:Npn \__int_compare:w #1 \__prg_compare_error: { @@ -5165,9 +5197,9 @@ \cs_new:Npn \int_step_function:nnnN #1#2#3 { \exp_after:wN \__int_step:wwwN - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 \exp_after:wN ; - \int_use:N \__int_eval:w #3 ; + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 \exp_after:wN ; + \__int_value:w \__int_eval:w #3 ; } \cs_new:Npn \__int_step:wwwN #1; #2; #3; #4 { @@ -6648,7 +6680,7 @@ \clist_new:N \l_tmpb_clist \clist_new:N \g_tmpa_clist \clist_new:N \g_tmpb_clist -%% File: l3token.dtx Copyright (C) 2005-2015 The LaTeX3 Project +%% File: l3token.dtx Copyright (C) 2005-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -6680,7 +6712,7 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3token.dtx 6249 2015-11-11 08:40:42Z joseph $ +\GetIdInfo$Id: l3token.dtx 6465 2016-03-26 16:15:09Z joseph $ {L3 Experimental token manipulation} \cs_new_protected:Npn \char_set_catcode:nn #1#2 { @@ -6797,6 +6829,157 @@ \seq_new:N \l_char_active_seq \seq_set_split:Nnn \l_char_special_seq { } { \" \$ \& \^ \_ \~ } +\group_begin: + \char_set_catcode_active:N \^^@ + \cs_set_protected:Npn \__char_tmp:nN #1#2 + { + \cs_new_protected:cpn { #1 :nN } ##1 + { + \group_begin: + \char_set_catcode_active:n { ##1 } + \char_set_lccode:nn { `\^^@ } { ##1 } + \tex_lowercase:D { \group_end: #2 ^^@ } + } + \cs_new_protected:cpx { #1 :NN } ##1 + { \exp_not:c { #1 : nN } { `##1 } } + } + \__char_tmp:nN { char_set_active_eq } \cs_set_eq:NN + \__char_tmp:nN { char_gset_active_eq } \cs_gset_eq:NN +\group_end: +\cs_generate_variant:Nn \char_set_active_eq:NN { Nc } +\cs_generate_variant:Nn \char_gset_active_eq:NN { Nc } +\cs_generate_variant:Nn \char_set_active_eq:nN { nc } +\cs_generate_variant:Nn \char_gset_active_eq:nN { nc } +\cs_new:Npn \char_generate:nn #1#2 + { + \exp:w \exp_after:wN \__char_generate_aux:w + \__int_value:w \__int_eval:w #1 \exp_after:wN ; + \__int_value:w \__int_eval:w #2 ; + } +\cs_new:Npn \__char_generate:nn #1#2 + { + \exp:w \exp_after:wN + \__char_generate_aux:nnw \exp_after:wN + { \__int_value:w \__int_eval:w #1 \exp_after:wN } + {#2} \exp_end: + } +\cs_new:Npn \__char_generate_aux:w #1 ; #2 ; + { + \if_int_compare:w #2 = \c_thirteen + \__msg_kernel_expandable_error:nn { kernel } { char-active } + \else: + \if_int_compare:w #2 = \c_ten + \if_int_compare:w #1 = \c_zero + \__msg_kernel_expandable_error:nn { kernel } { char-null-space } + \else: + \__msg_kernel_expandable_error:nn { kernel } { char-space } + \fi: + \else: + \if_int_odd:w 0 + \if_int_compare:w #2 < \c_one 1 \fi: + \if_int_compare:w #2 = \c_five 1 \fi: + \if_int_compare:w #2 = \c_nine 1 \fi: + \if_int_compare:w #2 > \c_thirteen 1 \fi: \exp_stop_f: + \__msg_kernel_expandable_error:nn { kernel } + { char-invalid-catcode } + \else: + \if_int_odd:w 0 + \if_int_compare:w #1 < \c_zero 1 \fi: + \if_int_compare:w #1 > \c__char_max_int 1 \fi: \exp_stop_f: + \__msg_kernel_expandable_error:nn { kernel } + { char-out-of-range } + \else: + \__char_generate_aux:nnw {#1} {#2} + \fi: + \fi: + \fi: + \fi: + \exp_end: + } +\tl_new:N \l__char_tmp_tl +\group_begin: + \char_set_catcode_active:N \^^L + \cs_set_nopar:Npn ^^L { } + \char_set_catcode_other:n { 0 } + \if_int_odd:w 0 + \cs_if_exist:NT \luatex_directlua:D { 1 } + \cs_if_exist:NT \utex_charcat:D { 1 } \exp_stop_f: + \int_const:Nn \c__char_max_int { 1114111 } + \cs_if_exist:NTF \luatex_directlua:D + { + \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: + { + #3 + \exp_after:wN \exp_end: + \luatex_directlua:D { l3kernel.charcat(#1, #2) } + } + } + { + \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: + { + #3 + \exp_after:wN \exp_end: + \utex_charcat:D #1 ~ #2 ~ + } + } + \else: + \int_const:Nn \c__char_max_int { 255 } + \tl_set:Nn \l__char_tmp_tl { \exp_not:N \or: } + \char_set_catcode_group_begin:n { 0 } % { + \tl_put_right:Nn \l__char_tmp_tl { ^^@ \if_false: } } + \char_set_catcode_group_end:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { { \fi: \exp_not:N \or: ^^@ } % } + \tl_set:Nx \l__char_tmp_tl { \l__char_tmp_tl } + \char_set_catcode_math_toggle:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } + \char_set_catcode_alignment:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } + \tl_put_right:Nn \l__char_tmp_tl { \or: } + \char_set_catcode_parameter:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } + \char_set_catcode_math_superscript:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } + \char_set_catcode_math_subscript:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } + \tl_put_right:Nn \l__char_tmp_tl { \or: } + \char_set_catcode_space:n { 0 } + \tl_put_right:No \l__char_tmp_tl { \use:n { \or: } ^^@ } + \char_set_catcode_letter:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } + \char_set_catcode_other:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } + \char_set_catcode_active:n { 0 } + \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } + \cs_set_protected:Npn \__char_tmp:n #1 + { + \char_set_lccode:nn { 0 } {#1} + \char_set_lccode:nn { 32 } {#1} + \exp_args:Nx \tex_lowercase:D + { + \tl_const:Nn + \exp_not:c { c__char_ \__int_to_roman:w #1 _tl } + { \exp_not:o \l__char_tmp_tl } + } + } + \int_step_function:nnnN { 0 } { 1 } { 11 } \__char_tmp:n + \group_begin: + \tl_replace_once:Nnn \l__char_tmp_tl { ^^@ } { \ERROR } + \__char_tmp:n { 12 } + \group_end: + \int_step_function:nnnN { 13 } { 1 } { 255 } \__char_tmp:n + \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: + { + #3 + \exp_after:wN \exp_after:wN + \exp_after:wN \exp_end: + \exp_after:wN \exp_after:wN + \if_case:w #2 + \exp_last_unbraced:Nv \exp_stop_f: + { c__char_ \__int_to_roman:w #1 _tl } + \fi: + } + \fi: +\group_end: \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 @@ -7563,7 +7746,7 @@ { \prop_map_function:NN #1 \__msg_show_item:nn } } \cs_generate_variant:Nn \prop_show:N { c } -%% File: l3msg.dtx Copyright (C) 2009-2015 The LaTeX3 Project +%% File: l3msg.dtx Copyright (C) 2009-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -7595,7 +7778,7 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3msg.dtx 6113 2015-09-28 21:30:11Z bruno $ +\GetIdInfo$Id: l3msg.dtx 6464 2016-03-26 13:03:37Z bruno $ {L3 Messages} \tl_new:N \l__msg_internal_tl \tl_const:Nn \c__msg_text_prefix_tl { msg~text~>~ } @@ -8072,7 +8255,7 @@ { Message~'#2'~for~module~'#1'~already~defined. } { \c__msg_coding_error_text_tl - LaTeX~was~asked~to~define~a~new~message~called~'#2'\ + LaTeX~was~asked~to~define~a~new~message~called~'#2'\\ by~the~module~'#1':~this~message~already~exists. \c__msg_return_text_tl } @@ -8110,6 +8293,16 @@ #2~arguments.~ TeX~allows~between~0~and~9~arguments~for~a~single~function. } +\__msg_kernel_new:nnn { kernel } { char-active } + { Cannot~generate~active~chars. } +\__msg_kernel_new:nnn { kernel } { char-invalid-catcode } + { Invalid~catcode~for~char~generation. } +\__msg_kernel_new:nnn { kernel } { char-null-space } + { Cannot~generate~null~char~as~a~space. } +\__msg_kernel_new:nnn { kernel } { char-out-of-range } + { Charcode~requested~out~of~engine~range. } +\__msg_kernel_new:nnn { kernel } { char-space } + { Cannot~generate~space~chars. } \__msg_kernel_new:nnnn { kernel } { command-already-defined } { Control~sequence~#1~already~defined. } { @@ -8136,7 +8329,7 @@ \__msg_kernel_new:nnnn { kernel } { out-of-registers } { No~room~for~a~new~#1. } { - TeX~only~supports~\int_use:N \c_max_register_int \ + TeX~only~supports~\int_use:N \c_max_register_int \ % of~each~type.~All~the~#1~registers~have~been~used.~ This~run~will~be~aborted~now. } @@ -8253,7 +8446,6 @@ \group_begin: \cs_set_protected:Npn \__msg_tmp:w #1#2 { - \group_end: \cs_new:Npn \__msg_expandable_error:n ##1 { \exp:w @@ -8261,15 +8453,13 @@ \exp_after:wN \__msg_expandable_error:w \exp_after:wN \exp_after:wN \exp_after:wN \exp_end: - \use:n { #2 #1 ##1 } #1 + \use:n { #1 #2 ##1 } #2 } - \cs_new:Npn \__msg_expandable_error:w ##1 #1 ##2 #1 {##1} + \cs_new:Npn \__msg_expandable_error:w ##1 #2 ##2 #2 {##1} } -\group_begin: -\char_set_catcode_math_superscript:N \^ -\char_set_lccode:nn { `^ } { `\ } -\tex_lowercase:D - { \group_end: \exp_args:NNc \__msg_tmp:w ^ } { LaTeX3~error: } +\exp_args:Ncx \__msg_tmp:w { LaTeX3~error: } + { \char_generate:nn { `\ } { 7 } } +\group_end: \cs_new:Npn \__msg_kernel_expandable_error:nnnnnn #1#2#3#4#5#6 { \exp_args:Nf \__msg_expandable_error:n @@ -8379,7 +8569,7 @@ \\ > \ \ \tl_to_str:n {#1} \ \ => \ \ \tl_to_str:n {#2} } -%% File: l3file.dtx Copyright (C) 1990-2015 The LaTeX3 Project +%% File: l3file.dtx Copyright (C) 1990-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -8411,7 +8601,7 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3file.dtx 6317 2015-12-03 16:25:17Z joseph $ +\GetIdInfo$Id: l3file.dtx 6458 2016-03-25 21:19:04Z joseph $ {L3 File and I/O operations} \tl_new:N \g_file_current_name_tl \cs_if_exist:NT \@currname @@ -8790,11 +8980,7 @@ \tl_new:N \l__iow_wrap_tl \tl_new:N \l__iow_newline_tl \bool_new:N \l__iow_line_start_bool -\group_begin: - \char_set_catcode_other:N \* - \char_set_lccode:nn {`\*} {`\ } - \tex_lowercase:D { \tl_const:Nn \c_catcode_other_space_tl { * } } -\group_end: +\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } \group_begin: \int_set_eq:NN \tex_escapechar:D \c_minus_one \tl_const:Nx \c__iow_wrap_marker_tl @@ -10303,7 +10489,7 @@ { \__keys_value_requirement:nn { forbidden } { true } } \cs_new_protected_nopar:cpn { \c__keys_props_root_tl .value_required: } { \__keys_value_requirement:nn { required } { true } } -%% File: l3fp.dtx Copyright (C) 2011-2015 The LaTeX3 Project +%% File: l3fp.dtx Copyright (C) 2011-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -10336,9 +10522,9 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3fp.dtx 5890 2015-08-25 07:47:22Z joseph $ +\GetIdInfo$Id: l3fp.dtx 6465 2016-03-26 16:15:09Z joseph $ {L3 Floating points} -%% File: l3fp-aux.dtx Copyright(C) 2011-2014 The LaTeX3 Project +%% File: l3fp-aux.dtx Copyright(C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -10621,7 +10807,7 @@ } \cs_new:Npn \__fp_array_count:n #1 { - \int_use:N \__int_eval:w \c_zero + \__int_value:w \__int_eval:w \c_zero \__fp_array_count_loop:Nw #1 { ? \__prg_break: } ; \__prg_break_point: \__int_eval_end: @@ -10862,7 +11048,7 @@ { Invalid~operation~ #1 (#2) } \__msg_kernel_new:nnn { kernel } { fp-invalid-ii } { Invalid~operation~ (#1) #3 (#2) } -%% File: l3fp-round.dtx Copyright(C) 2011-2012,2014,2015 The LaTeX3 Project +%% File: l3fp-round.dtx Copyright(C) 2011-2012,2014-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -10968,7 +11154,7 @@ \exp_after:wN \__fp_round:NNN \exp_after:wN #1 \exp_after:wN #2 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_odd:w 0 \if_meaning:w 0 #3 1 \fi: \if_meaning:w 5 #3 1 \fi: \exp_stop_f: @@ -11085,11 +11271,11 @@ \cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4; #5#6 { \exp_after:wN \__fp_round_normal:NNwNnn - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_compare:w #2 > \c_zero 1 \__int_value:w #2 \exp_after:wN \__fp_round_pack:Nw - \int_use:N \__int_eval:w 1#3 + + \__int_value:w \__int_eval:w 1#3 + \else: \if_int_compare:w #3 > \c_zero 1 \__int_value:w #3 + @@ -11128,7 +11314,7 @@ \else: \exp_after:wN \__fp_round_special_aux:Nw \exp_after:wN #4 - \int_use:N \__int_eval:w \c_one + \__int_value:w \__int_eval:w \c_one \if_meaning:w 1 #1 -#6 \else: +#5 \fi: \fi: ; @@ -11138,7 +11324,7 @@ \exp_after:wN \__fp_exp_after_o:w \exp:w \exp_end_continue_f:w \__fp_sanitize:Nw #1#2; {1000}{0000}{0000}{0000}; } -%% File: l3fp-parse.dtx Copyright (C) 2011-2015 The LaTeX3 Project +%% File: l3fp-parse.dtx Copyright (C) 2011-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -11312,7 +11498,7 @@ \exp_after:wN #1 \exp:w \exp_end_continue_f:w \exp_after:wN \__fp_sanitize:wN - \int_use:N \__int_eval:w \c_zero \__fp_parse_trim_zeros:N + \__int_value:w \__int_eval:w \c_zero \__fp_parse_trim_zeros:N } \cs_new:Npn \__fp_parse_one_other:NN #1 #2 { @@ -11445,7 +11631,7 @@ \cs_new:Npn \__fp_parse_small:N #1 { \exp_after:wN \__fp_parse_pack_leading:NNNNNww - \int_use:N \__int_eval:w 1 \token_to_str:N #1 + \__int_value:w \__int_eval:w 1 \token_to_str:N #1 \exp_after:wN \__fp_parse_small_leading:wwNN \__int_value:w 1 \exp_after:wN \__fp_parse_digits_vii:N @@ -11456,7 +11642,7 @@ #1 #2 \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww \exp_after:wN \c_zero - \int_use:N \__int_eval:w 1 + \__int_value:w \__int_eval:w 1 \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: \token_to_str:N #4 \exp_after:wN \__fp_parse_small_trailing:wwNN @@ -11505,7 +11691,7 @@ { + \c_eight - #3 \exp_after:wN \__fp_parse_pack_leading:NNNNNww - \int_use:N \__int_eval:w 1 #1 + \__int_value:w \__int_eval:w 1 #1 \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: \exp_after:wN \__fp_parse_large_trailing:wwNN \__int_value:w 1 \token_to_str:N #4 @@ -11536,14 +11722,14 @@ \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww \exp_after:wN \c_eight - \int_use:N \__int_eval:w 1 #1 \token_to_str:N #4 + \__int_value:w \__int_eval:w 1 #1 \token_to_str:N #4 \exp_after:wN \__fp_parse_large_round:NN \exp_after:wN #4 \exp:w \else: \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww - \int_use:N \__int_eval:w \c_seven - #3 \exp_stop_f: - \int_use:N \__int_eval:w 1 #1 + \__int_value:w \__int_eval:w \c_seven - #3 \exp_stop_f: + \__int_value:w \__int_eval:w 1 #1 \if:w . \exp_not:N #4 \exp_after:wN \__fp_parse_small_trailing:wwNN \__int_value:w 1 @@ -11589,7 +11775,7 @@ \cs_new:Npn \__fp_parse_round_after:wN #1; #2 { + #2 \exp_after:wN ; - \int_use:N \__int_eval:w #1 + \__fp_parse_exponent:N + \__int_value:w \__int_eval:w #1 + \__fp_parse_exponent:N } \cs_new:Npn \__fp_parse_small_round:NN #1#2 { @@ -11599,9 +11785,9 @@ \exp_after:wN 0 \exp_after:wN #1 \exp_after:wN #2 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \__fp_parse_round_after:wN - \int_use:N \__int_eval:w \c_zero * \__int_eval:w \c_zero + \__int_value:w \__int_eval:w \c_zero * \__int_eval:w \c_zero \exp_after:wN \__fp_parse_round_loop:N \exp:w \else: @@ -11617,9 +11803,9 @@ \exp_after:wN 0 \exp_after:wN #1 \exp_after:wN #2 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \__fp_parse_large_round_aux:wNN - \int_use:N \__int_eval:w \c_one + \__int_value:w \__int_eval:w \c_one \exp_after:wN \__fp_parse_round_loop:N \else: %^^A could be dot, or e, or other \exp_after:wN \__fp_parse_large_round_test:NN @@ -11642,7 +11828,7 @@ { + #2 \exp_after:wN \__fp_parse_round_after:wN - \int_use:N \__int_eval:w #1 + \__int_value:w \__int_eval:w #1 \if:w . \exp_not:N #3 + \c_zero * \__int_eval:w \c_zero \exp_after:wN \__fp_parse_round_loop:N @@ -11781,7 +11967,7 @@ \exp_after:wN #1 \exp:w \exp_end_continue_f:w \exp_after:wN \__fp_sanitize:wN - \int_use:N \__int_eval:w \c_zero \__fp_parse_strim_zeros:N + \__int_value:w \__int_eval:w \c_zero \__fp_parse_strim_zeros:N } \group_begin: \char_set_catcode_letter:N ( @@ -12678,7 +12864,7 @@ \__fp_exp_after_array_f:w #3 \s__fp_stop #4 #1 } -%% File: l3fp-basics.dtx Copyright (C) 2011-2014 The LaTeX3 Project +%% File: l3fp-basics.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -12805,7 +12991,7 @@ { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_compare:w #2 > #5 \exp_stop_f: #2 \exp_after:wN \__fp_add_big_i_o:wNww \__int_value:w - @@ -12834,9 +13020,9 @@ \cs_new:Npn \__fp_add_significand_o:NnnwnnnnN #1 #2#3 #4; #5#6#7#8 { \exp_after:wN \__fp_add_significand_test_o:N - \int_use:N \__int_eval:w 1#5#6 + #2 + \__int_value:w \__int_eval:w 1#5#6 + #2 \exp_after:wN \__fp_add_significand_pack:NNNNNNN - \int_use:N \__int_eval:w 1#7#8 + #3 ; #1 + \__int_value:w \__int_eval:w 1#7#8 + #3 ; #1 } \cs_new:Npn \__fp_add_significand_pack:NNNNNNN #1 #2#3#4#5#6#7 { @@ -12857,9 +13043,9 @@ #1; #2; #3#4 ; #5#6 { \exp_after:wN \__fp_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1 #1 + \__int_value:w \__int_eval:w 1 #1 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1 #2 #3#4 + \__int_value:w \__int_eval:w 1 #2 #3#4 + \__fp_round:NNN #6 #4 #5 \exp_after:wN ; } @@ -12868,9 +13054,9 @@ { + \c_one \exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw - \int_use:N \__int_eval:w 1 1 #1 + \__int_value:w \__int_eval:w 1 1 #1 \exp_after:wN \__fp_basics_pack_weird_low:NNNNw - \int_use:N \__int_eval:w 1 #2#3 + + \__int_value:w \__int_eval:w 1 #2#3 + \exp_after:wN \__fp_round:NNN \exp_after:wN #6 \exp_after:wN #3 @@ -12892,20 +13078,20 @@ \cs_new:Npn \__fp_sub_npos_ii_o:Nnwnw #1 #2; #3; { \exp_after:wN \__fp_sub_npos_i_o:Nnwnw - \int_use:N \__int_eval:w \c_two - #1 \__int_eval_end: + \__int_value:w \__int_eval:w \c_two - #1 \__int_eval_end: #3; #2; } \cs_new:Npn \__fp_sub_npos_i_o:Nnwnw #1 #2#3; #4#5; { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w #2 \if_int_compare:w #2 = #4 \exp_stop_f: \exp_after:wN \__fp_sub_back_near_o:nnnnnnnnN \else: \exp_after:wN \__fp_decimate:nNnnnn \exp_after:wN - { \int_use:N \__int_eval:w #2 - #4 - \c_one \exp_after:wN } + { \__int_value:w \__int_eval:w #2 - #4 - \c_one \exp_after:wN } \exp_after:wN \__fp_sub_back_far_o:NnnwnnnnN \fi: #5 @@ -12915,9 +13101,9 @@ \cs_new:Npn \__fp_sub_back_near_o:nnnnnnnnN #1#2#3#4 #5#6#7#8 #9 { \exp_after:wN \__fp_sub_back_near_after:wNNNNw - \int_use:N \__int_eval:w 10#5#6 - #1#2 - \c_eleven + \__int_value:w \__int_eval:w 10#5#6 - #1#2 - \c_eleven \exp_after:wN \__fp_sub_back_near_pack:NNNNNNw - \int_use:N \__int_eval:w 11#7#8 - #3#4 \exp_after:wN ; + \__int_value:w \__int_eval:w 11#7#8 - #3#4 \exp_after:wN ; } \cs_new:Npn \__fp_sub_back_near_pack:NNNNNNw #1#2#3#4#5#6#7 ; { + #1#2 ; {#3#4#5#6} {#7} ; } @@ -12990,9 +13176,9 @@ { - \c_one \exp_after:wN \__fp_sub_back_near_after:wNNNNw - \int_use:N \__int_eval:w 1#30 - #1 - \c_eleven + \__int_value:w \__int_eval:w 1#30 - #1 - \c_eleven \exp_after:wN \__fp_sub_back_near_pack:NNNNNNw - \int_use:N \__int_eval:w 11 0000 0000 + #40 - #2 + \__int_value:w \__int_eval:w 11 0000 0000 + #40 - #2 - \exp_after:wN \__fp_round_neg:NNN \exp_after:wN #6 \use_none:nnnnnnn #2 #5 @@ -13008,9 +13194,9 @@ \cs_new:Npn \__fp_sub_back_very_far_ii_o:nnNwwNN #1#2 ; #3 ; #4 ~ #5; #6#7 { \exp_after:wN \__fp_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1#4 - #1 - \c_one + \__int_value:w \__int_eval:w 1#4 - #1 - \c_one \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 2#5 - #2 + \__int_value:w \__int_eval:w 2#5 - #2 - \exp_after:wN \__fp_round_neg:NNN \exp_after:wN #7 \__int_value:w @@ -13070,7 +13256,7 @@ { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w #4 + #8 \__fp_mul_significand_o:nnnnNnnnn #5 #1 #9 } @@ -13078,19 +13264,19 @@ { \exp_after:wN \__fp_mul_significand_test_f:NNN \exp_after:wN #5 - \int_use:N \__int_eval:w 99990000 + #1*#6 + + \__int_value:w \__int_eval:w 99990000 + #1*#6 + \exp_after:wN \__fp_mul_significand_keep:NNNNNw - \int_use:N \__int_eval:w 99990000 + #1*#7 + #2*#6 + + \__int_value:w \__int_eval:w 99990000 + #1*#7 + #2*#6 + \exp_after:wN \__fp_mul_significand_keep:NNNNNw - \int_use:N \__int_eval:w 99990000 + #1*#8 + #2*#7 + #3*#6 + + \__int_value:w \__int_eval:w 99990000 + #1*#8 + #2*#7 + #3*#6 + \exp_after:wN \__fp_mul_significand_drop:NNNNNw - \int_use:N \__int_eval:w 99990000 + #1*#9 + #2*#8 + #3*#7 + #4*#6 + + \__int_value:w \__int_eval:w 99990000 + #1*#9 + #2*#8 + #3*#7 + #4*#6 + \exp_after:wN \__fp_mul_significand_drop:NNNNNw - \int_use:N \__int_eval:w 99990000 + #2*#9 + #3*#8 + #4*#7 + + \__int_value:w \__int_eval:w 99990000 + #2*#9 + #3*#8 + #4*#7 + \exp_after:wN \__fp_mul_significand_drop:NNNNNw - \int_use:N \__int_eval:w 99990000 + #3*#9 + #4*#8 + + \__int_value:w \__int_eval:w 99990000 + #3*#9 + #4*#8 + \exp_after:wN \__fp_mul_significand_drop:NNNNNw - \int_use:N \__int_eval:w 100000000 + #4*#9 ; + \__int_value:w \__int_eval:w 100000000 + #4*#9 ; ; \exp_after:wN ; } \cs_new:Npn \__fp_mul_significand_drop:NNNNNw #1#2#3#4#5 #6; @@ -13109,9 +13295,9 @@ \cs_new:Npn \__fp_mul_significand_large_f:NwwNNNN #1 #2; #3; #4#5#6#7; + { \exp_after:wN \__fp_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1#2 + \__int_value:w \__int_eval:w 1#2 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1#3#4#5#6#7 + \__int_value:w \__int_eval:w 1#3#4#5#6#7 + \exp_after:wN \__fp_round:NNN \exp_after:wN #1 \exp_after:wN #7 @@ -13121,9 +13307,9 @@ { - \c_one \exp_after:wN \__fp_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1#3#4 + \__int_value:w \__int_eval:w 1#3#4 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1#5#6#7 + \__int_value:w \__int_eval:w 1#5#6#7 + \exp_after:wN \__fp_round:NNN \exp_after:wN #1 \exp_after:wN #7 @@ -13149,10 +13335,10 @@ { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w #3 - #6 \exp_after:wN \__fp_div_significand_i_o:wnnw - \int_use:N \__int_eval:w #7 \use_i:nnnn #8 + \c_one ; + \__int_value:w \__int_eval:w #7 \use_i:nnnn #8 + \c_one ; #4 {#7}{#8}#9 ; #1 @@ -13160,9 +13346,9 @@ \cs_new:Npn \__fp_div_significand_i_o:wnnw #1 ; #2#3 #4 ; { \exp_after:wN \__fp_div_significand_test_o:w - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \__fp_div_significand_calc:wwnnnnnnn - \int_use:N \__int_eval:w 999999 + #2 #3 0 / #1 ; + \__int_value:w \__int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ; #4 { \exp_after:wN \__fp_div_significand_ii:wwn \__int_value:w #1 } @@ -13182,16 +13368,16 @@ { 1 1 #1 #9 \exp_after:wN ; - \int_use:N \__int_eval:w \c__fp_Bigg_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_Bigg_leading_shift_int + #2 - #1 * #5 - #5#60 \exp_after:wN \__fp_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c__fp_Bigg_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_Bigg_middle_shift_int + #3 - #1 * #6 - #70 \exp_after:wN \__fp_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c__fp_Bigg_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_Bigg_middle_shift_int + #4 - #1 * #7 - #80 \exp_after:wN \__fp_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c__fp_Bigg_trailing_shift_int + \__int_value:w \__int_eval:w \c__fp_Bigg_trailing_shift_int - #1 * #8 ; {#5}{#6}{#7}{#8} } @@ -13199,31 +13385,31 @@ { 1 0 #1 #9 \exp_after:wN ; - \int_use:N \__int_eval:w \c__fp_Bigg_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_Bigg_leading_shift_int + #2 - #1 * #5 \exp_after:wN \__fp_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c__fp_Bigg_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_Bigg_middle_shift_int + #3 - #1 * #6 \exp_after:wN \__fp_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c__fp_Bigg_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_Bigg_middle_shift_int + #4 - #1 * #7 \exp_after:wN \__fp_pack_Bigg:NNNNNNw - \int_use:N \__int_eval:w \c__fp_Bigg_trailing_shift_int + \__int_value:w \__int_eval:w \c__fp_Bigg_trailing_shift_int - #1 * #8 ; {#5}{#6}{#7}{#8} } \cs_new:Npn \__fp_div_significand_ii:wwn #1; #2;#3 { \exp_after:wN \__fp_div_significand_pack:NNN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \__fp_div_significand_calc:wwnnnnnnn - \int_use:N \__int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ; + \__int_value:w \__int_eval:w 999999 + #2 #3 0 / #1 ; #2 #3 ; } \cs_new:Npn \__fp_div_significand_iii:wwnnnnn #1; #2;#3#4#5 #6#7 { 0 \exp_after:wN \__fp_div_significand_iv:wwnnnnnnn - \int_use:N \__int_eval:w (\c_two * #2 #3) / #6 #7 ; % <- P + \__int_value:w \__int_eval:w (\c_two * #2 #3) / #6 #7 ; % <- P #2 ; {#3} {#4} {#5} {#6} {#7} } @@ -13231,11 +13417,11 @@ { + \c_five * #1 \exp_after:wN \__fp_div_significand_vi:Nw - \int_use:N \__int_eval:w -20 + 2*#2#3 - #1*#6#7 + + \__int_value:w \__int_eval:w -20 + 2*#2#3 - #1*#6#7 + \exp_after:wN \__fp_div_significand_v:NN - \int_use:N \__int_eval:w 199980 + 2*#4 - #1*#8 + + \__int_value:w \__int_eval:w 199980 + 2*#4 - #1*#8 + \exp_after:wN \__fp_div_significand_v:NN - \int_use:N \__int_eval:w 200000 + 2*#5 - #1*#9 ; + \__int_value:w \__int_eval:w 200000 + 2*#5 - #1*#9 ; } \cs_new:Npn \__fp_div_significand_v:NN #1#2 { #1#2 \__int_eval_end: + } \cs_new:Npn \__fp_div_significand_vi:Nw #1#2; @@ -13261,9 +13447,9 @@ 0 #1; #2; #3; #4#5#6#7#8; #9 { \exp_after:wN \__fp_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1 #1#2 + \__int_value:w \__int_eval:w 1 #1#2 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1 #3#4#5#6#7 + \__int_value:w \__int_eval:w 1 #3#4#5#6#7 + \__fp_round:NNN #9 #7 #8 \exp_after:wN ; } @@ -13272,9 +13458,9 @@ { + \c_one \exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw - \int_use:N \__int_eval:w 1 #1 #2 + \__int_value:w \__int_eval:w 1 #1 #2 \exp_after:wN \__fp_basics_pack_weird_low:NNNNw - \int_use:N \__int_eval:w 1 #3 #4 #5 #6 + + \__int_value:w \__int_eval:w 1 #3 #4 #5 #6 + \exp_after:wN \__fp_round:NNN \exp_after:wN #9 \exp_after:wN #6 @@ -13295,7 +13481,7 @@ { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN 0 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_int_odd:w #1 \exp_stop_f: \exp_after:wN \__fp_sqrt_npos_auxi_o:wwnnN \fi: @@ -13316,11 +13502,11 @@ { \if_int_compare:w #1 = #2 \exp_stop_f: \exp_after:wN \__fp_sqrt_auxi_o:NNNNwnnN - \int_use:N \__int_eval:w 9999 9999 + + \__int_value:w \__int_eval:w 9999 9999 + \exp_after:wN \__fp_use_none_until_s:w \fi: \exp_after:wN \__fp_sqrt_Newton_o:wwn - \int_use:N \__int_eval:w (#1 + #3 * 1 0000 0000 / #1) / \c_two ; + \__int_value:w \__int_eval:w (#1 + #3 * 1 0000 0000 / #1) / \c_two ; #1; {#3} } \cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5; @@ -13332,32 +13518,32 @@ \cs_new:Npn \__fp_sqrt_auxii_o:NnnnnnnnN #1 #2#3#4#5#6 #7#8#9 { \exp_after:wN #1 - \int_use:N \__int_eval:w \c__fp_big_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_big_leading_shift_int + #7 - #2 * #2 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int - 2 * #2 * #3 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int + #8 - #3 * #3 - 2 * #2 * #4 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int - 2 * #3 * #4 - 2 * #2 * #5 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int + #9 000 0000 - #4 * #4 - 2 * #3 * #5 - 2 * #2 * #6 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int - 2 * #4 * #5 - 2 * #3 * #6 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int - #5 * #5 - 2 * #4 * #6 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int - 2 * #5 * #6 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \c__fp_big_trailing_shift_int - #6 * #6 ; % ( @@ -13369,18 +13555,18 @@ { \if_int_compare:w #1 > \c_one \exp_after:wN \__fp_sqrt_auxiv_o:NNNNNw - \int_use:N \__int_eval:w (#1#2 %) + \__int_value:w \__int_eval:w (#1#2 %) \else: \if_int_compare:w #1#2 > \c_one \exp_after:wN \__fp_sqrt_auxv_o:NNNNNw - \int_use:N \__int_eval:w (#1#2#3 %) + \__int_value:w \__int_eval:w (#1#2#3 %) \else: \if_int_compare:w #1#2#3 > \c_one \exp_after:wN \__fp_sqrt_auxvi_o:NNNNNw - \int_use:N \__int_eval:w (#1#2#3#4 %) + \__int_value:w \__int_eval:w (#1#2#3#4 %) \else: \exp_after:wN \__fp_sqrt_auxvii_o:NNNNNw - \int_use:N \__int_eval:w (#1#2#3#4#5 %) + \__int_value:w \__int_eval:w (#1#2#3#4#5 %) \fi: \fi: \fi: @@ -13401,11 +13587,11 @@ \cs_new:Npn \__fp_sqrt_auxviii_o:nnnnnnn #1#2 #3#4#5#6#7 { \exp_after:wN \__fp_sqrt_auxix_o:wnwnw - \int_use:N \__int_eval:w #3 + \__int_value:w \__int_eval:w #3 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w #1 + 1#4#5 + \__int_value:w \__int_eval:w #1 + 1#4#5 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w #2 + 1#6#7 ; + \__int_value:w \__int_eval:w #2 + 1#6#7 ; } \cs_new:Npn \__fp_sqrt_auxix_o:wnwnw #1; #2#3; #4#5; { @@ -13415,7 +13601,7 @@ \cs_new:Npn \__fp_sqrt_auxx_o:Nnnnnnnn #1#2#3 #4#5#6#7#8 { \exp_after:wN \__fp_sqrt_auxxi_o:wwnnN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w (#8 + 2499) / 5000 * 5000 ; {#4} {#5} {#6} {#7} ; } @@ -13454,9 +13640,9 @@ \cs_new:Npn \__fp_sqrt_auxxiv_o:wnnnnnnnN #1; #2#3#4#5#6 #7#8#9 { \exp_after:wN \__fp_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1 0000 0000 + #2#3 + \__int_value:w \__int_eval:w 1 0000 0000 + #2#3 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1 0000 0000 + \__int_value:w \__int_eval:w 1 0000 0000 + #4#5 \if_int_compare:w #6 > #1 \exp_stop_f: + \c_one \fi: + \exp_after:wN \__fp_round:NNN @@ -13465,7 +13651,7 @@ \__int_value:w \exp_after:wN \use_i:nn \exp_after:wN \__fp_round_digit:Nw - \int_use:N \__int_eval:w #6 + 19999 - #1 ; + \__int_value:w \__int_eval:w #6 + 19999 - #1 ; \exp_after:wN ; } \cs_new:Npn \__fp_set_sign_o:w #1 \s__fp \__fp_chk:w #2#3#4; @ @@ -13478,7 +13664,7 @@ \if_case:w #3 \exp_stop_f: #1 \or: 1 \or: 0 \fi: \exp_stop_f: #4; } -%% File: l3fp-extended.dtx Copyright (C) 2011-2014 The LaTeX3 Project +%% File: l3fp-extended.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -13517,36 +13703,36 @@ \cs_new:Npn \__fp_fixed_add_one:wN #1#2; #3 { \exp_after:wN #3 \exp_after:wN - { \int_use:N \__int_eval:w \c_ten_thousand + #1 } #2 ; + { \__int_value:w \__int_eval:w \c_ten_thousand + #1 } #2 ; } \cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6; { \exp_after:wN \__fp_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c__fp_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_leading_shift_int \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_trailing_shift_int + \__int_value:w \__int_eval:w \c__fp_trailing_shift_int + #1 ; {#2}{#3}{#4}{#5}; } \cs_new:Npn \__fp_fixed_mul_after:wwn #1; #2; #3 { #3 {#1} #2; } \cs_new:Npn \__fp_fixed_mul_short:wwn #1#2#3#4#5#6; #7#8#9; { \exp_after:wN \__fp_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c__fp_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_leading_shift_int + #1*#7 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #1*#8 + #2*#7 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #1*#9 + #2*#8 + #3*#7 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #2*#9 + #3*#8 + #4*#7 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #3*#9 + #4*#8 + #5*#7 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_trailing_shift_int + \__int_value:w \__int_eval:w \c__fp_trailing_shift_int + #4*#9 + #5*#8 + #6*#7 + ( #5*#9 + #6*#8 + #6*#9 / \c_ten_thousand ) / \c_ten_thousand ; ; @@ -13555,7 +13741,7 @@ { \exp_after:wN \__fp_fixed_div_int_after:Nw \exp_after:wN #8 - \int_use:N \__int_eval:w \c_minus_one + \__int_value:w \__int_eval:w \c_minus_one \__fp_fixed_div_int:wnN #1; {#7} \__fp_fixed_div_int_auxi:wnn #2; {#7} \__fp_fixed_div_int_auxi:wnn @@ -13567,7 +13753,7 @@ \cs_new:Npn \__fp_fixed_div_int:wnN #1; #2 #3 { \exp_after:wN #3 - \int_use:N \__int_eval:w #1 / #2 - \c_one ; + \__int_value:w \__int_eval:w #1 / #2 - \c_one ; {#2} {#1} } @@ -13575,9 +13761,9 @@ { + #1 \exp_after:wN \__fp_fixed_div_int_pack:Nw - \int_use:N \__int_eval:w 9999 + \__int_value:w \__int_eval:w 9999 \exp_after:wN \__fp_fixed_div_int:wnN - \int_use:N \__int_eval:w #3 - #1*#2 \__int_eval_end: + \__int_value:w \__int_eval:w #3 - #1*#2 \__int_eval_end: } \cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1; #2 #3 { + #1 + \c_two ; } \cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2; { + #1; {#2} } @@ -13587,16 +13773,16 @@ \cs_new:Npn \__fp_fixed_add:Nnnnnwnn #1 #2#3#4#5 #6; #7#8 { \exp_after:wN \__fp_fixed_add_after:NNNNNwn - \int_use:N \__int_eval:w 9 9999 9998 + #2#3 #1 #7#8 + \__int_value:w \__int_eval:w 9 9999 9998 + #2#3 #1 #7#8 \exp_after:wN \__fp_fixed_add_pack:NNNNNwn - \int_use:N \__int_eval:w 1 9999 9998 + #4#5 + \__int_value:w \__int_eval:w 1 9999 9998 + #4#5 \__fp_fixed_add:nnNnnnwn #6 #1 } \cs_new:Npn \__fp_fixed_add:nnNnnnwn #1#2 #3 #4#5 #6#7 ; #8 { #3 #4#5 \exp_after:wN \__fp_fixed_add_pack:NNNNNwn - \int_use:N \__int_eval:w 2 0000 0000 #3 #6#7 + #1#2 ; {#8} ; + \__int_value:w \__int_eval:w 2 0000 0000 #3 #6#7 + #1#2 ; {#8} ; } \cs_new:Npn \__fp_fixed_add_pack:NNNNNwn #1 #2#3#4#5 #6; #7 { + #1 ; {#7} {#2#3#4#5} {#6} } @@ -13605,21 +13791,21 @@ \cs_new:Npn \__fp_fixed_mul:wwn #1#2#3#4 #5; #6#7#8#9 { \exp_after:wN \__fp_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c__fp_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_leading_shift_int \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #1*#6 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #1*#7 + #2*#6 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #1*#8 + #2*#7 + #3*#6 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #1*#9 + #2*#8 + #3*#7 + #4*#6 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_trailing_shift_int + \__int_value:w \__int_eval:w \c__fp_trailing_shift_int + #2*#9 + #3*#8 + #4*#7 + ( #3*#9 + #4*#8 + \__fp_fixed_mul:nnnnnnnw #5 {#6}{#7} {#1}{#2} @@ -13632,9 +13818,9 @@ \cs_new:Npn \__fp_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8; { \exp_after:wN \__fp_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c__fp_big_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_big_leading_shift_int \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + #3 #4 + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int + #3 #4 \__fp_fixed_mul_add:Nwnnnwnnn + + #5 #6 ; #2 ; #1 ; #2 ; + + #7 #8 ; ; @@ -13642,9 +13828,9 @@ \cs_new:Npn \__fp_fixed_mul_sub_back:wwwn #1; #2; #3#4#5#6#7#8; { \exp_after:wN \__fp_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c__fp_big_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_big_leading_shift_int \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + #3 #4 + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int + #3 #4 \__fp_fixed_mul_add:Nwnnnwnnn - + #5 #6 ; #2 ; #1 ; #2 ; - + #7 #8 ; ; @@ -13652,9 +13838,9 @@ \cs_new:Npn \__fp_fixed_one_minus_mul:wwn #1; #2; { \exp_after:wN \__fp_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c__fp_big_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_big_leading_shift_int \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + 1 0000 0000 + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int + 1 0000 0000 \__fp_fixed_mul_add:Nwnnnwnnn - ; #2 ; #1 ; #2 ; - ; ; @@ -13663,20 +13849,20 @@ { #1 #7*#3 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int #1 #7*#4 #1 #8*#3 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int #1 #7*#5 #1 #8*#4 #1 #9*#3 #2 \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_big_middle_shift_int #1 \__fp_fixed_mul_add:nnnnwnnnn {#7}{#8}{#9} } \cs_new:Npn \__fp_fixed_mul_add:nnnnwnnnn #1#2#3#4#5; #6#7#8#9 { ( #1*#9 + #2*#8 + #3*#7 + #4*#6 ) \exp_after:wN \__fp_pack_big:NNNNNNw - \int_use:N \__int_eval:w \c__fp_big_trailing_shift_int + \__int_value:w \__int_eval:w \c__fp_big_trailing_shift_int \__fp_fixed_mul_add:nnnnwnnwN { #6 + #4*#7 + #3*#8 + #2*#9 + #1 } { #7 + #4*#8 + #3*#9 + #2 } @@ -13691,7 +13877,7 @@ \cs_new:Npn \__fp_ep_to_fixed:wwn #1,#2 { \exp_after:wN \__fp_ep_to_fixed_auxi:www - \int_use:N \__int_eval:w 1 0000 0000 + #2 \exp_after:wN ; + \__int_value:w \__int_eval:w 1 0000 0000 + #2 \exp_after:wN ; \exp:w \exp_end_continue_f:w \prg_replicate:nn { \c_four - \int_max:nn {#1} { -32 } } { 0 } ; } @@ -13709,10 +13895,10 @@ \cs_new:Npn \__fp_ep_to_ep:wwN #1,#2#3#4#5#6#7; #8 { \exp_after:wN #8 - \int_use:N \__int_eval:w #1 + \c_four + \__int_value:w \__int_eval:w #1 + \c_four \exp_after:wN \use_i:nn \exp_after:wN \__fp_ep_to_ep_loop:N - \int_use:N \__int_eval:w 1 0000 0000 + #2 \__int_eval_end: + \__int_value:w \__int_eval:w 1 0000 0000 + #2 \__int_eval_end: #3#4#5#6#7 ; ; ! } \cs_new:Npn \__fp_ep_to_ep_loop:N #1 @@ -13768,7 +13954,7 @@ \cs_new:Npn \__fp_ep_mul_raw:wwwwN #1,#2; #3,#4; #5 { \__fp_fixed_mul:wwn #2; #4; - { \exp_after:wN #5 \int_use:N \__int_eval:w #1 + #3 , } + { \exp_after:wN #5 \__int_value:w \__int_eval:w #1 + #3 , } } \cs_new:Npn \__fp_ep_div:wwwwn #1,#2; #3,#4; { @@ -13782,15 +13968,15 @@ \cs_new:Npn \__fp_ep_div_esti:wwwwn #1,#2#3; #4, { \exp_after:wN \__fp_ep_div_estii:wwnnwwn - \int_use:N \__int_eval:w 10 0000 0000 / ( #2 + \c_one ) + \__int_value:w \__int_eval:w 10 0000 0000 / ( #2 + \c_one ) \exp_after:wN ; - \int_use:N \__int_eval:w #4 - #1 + \c_one , + \__int_value:w \__int_eval:w #4 - #1 + \c_one , {#2} #3; } \cs_new:Npn \__fp_ep_div_estii:wwnnwwn #1; #2,#3#4#5; #6; #7 { \exp_after:wN \__fp_ep_div_estiii:NNNNNwwwn - \int_use:N \__int_eval:w 10 0000 0000 - 1750 + \__int_value:w \__int_eval:w 10 0000 0000 - 1750 + #1 000 + (10 0000 0000 / #3 - #1) * (1000 - #4 / 10) ; {#3}{#4}#5; #6; { #7 #2, } } @@ -13803,11 +13989,11 @@ \cs_new:Npn \__fp_ep_div_epsi:wnNNNNNn #1#2#3#4#5#6; { \exp_after:wN \__fp_ep_div_epsii:wwnNNNNNn - \int_use:N \__int_eval:w 1 9998 - #2 + \__int_value:w \__int_eval:w 1 9998 - #2 \exp_after:wN \__fp_ep_div_eps_pack:NNNNNw - \int_use:N \__int_eval:w 1 9999 9998 - #3#4 + \__int_value:w \__int_eval:w 1 9999 9998 - #3#4 \exp_after:wN \__fp_ep_div_eps_pack:NNNNNw - \int_use:N \__int_eval:w 2 0000 0000 - #5#6 ; ; + \__int_value:w \__int_eval:w 2 0000 0000 - #5#6 ; ; } \cs_new:Npn \__fp_ep_div_eps_pack:NNNNNw #1#2#3#4#5#6; { + #1 ; {#2#3#4#5} {#6} } @@ -13831,7 +14017,7 @@ \cs_new:Npn \__fp_ep_isqrt_auxi:wwn #1, { \exp_after:wN \__fp_ep_isqrt_auxii:wwnnnwn - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \int_if_odd:nTF {#1} { (\c_one - #1) / \c_two , 535 , { 0 } { } } { \c_one - #1 / \c_two , 168 , { } { 0 } } @@ -13847,15 +14033,15 @@ \exp_after:wN \__fp_ep_isqrt_estii:wwwnnwn \fi: \exp_after:wN \__fp_ep_isqrt_esti:wwwnnwn - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w (#1 + 1 0050 0000 #4 / (#1 * #3)) / \c_two , #1, #3, {#4} } \cs_new:Npn \__fp_ep_isqrt_estii:wwwnnwn #1, #2, #3, #4#5 { \exp_after:wN \__fp_ep_isqrt_estiii:NNNNNwwwn - \int_use:N \__int_eval:w 1000 0000 + #2 * #2 #5 * \c_five - \exp_after:wN , \int_use:N \__int_eval:w 10000 + #2 ; + \__int_value:w \__int_eval:w 1000 0000 + #2 * #2 #5 * \c_five + \exp_after:wN , \__int_value:w \__int_eval:w 10000 + #2 ; } \cs_new:Npn \__fp_ep_isqrt_estiii:NNNNNwwwn 1#1#2#3#4#5#6, 1#7#8; #9; { @@ -13898,7 +14084,7 @@ \exp_after:wN \exp_after:wN \exp_after:wN \__fp_fixed_to_loop:N \exp_after:wN \use_none:n - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w 1 0000 0000 + #1 \exp_after:wN \__fp_use_none_stop_f:n \__int_value:w 1#2 \exp_after:wN \__fp_use_none_stop_f:n \__int_value:w 1#3#4 \exp_after:wN \__fp_use_none_stop_f:n @@ -13943,11 +14129,11 @@ \cs_new:Npn \__fp_fixed_to_float_round_up:wnnnnw ; #1#2#3#4 ; { \exp_after:wN \__fp_basics_pack_high:NNNNNw - \int_use:N \__int_eval:w 1 #1#2 + \__int_value:w \__int_eval:w 1 #1#2 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \int_use:N \__int_eval:w 1 #3#4 + \c_one ; + \__int_value:w \__int_eval:w 1 #3#4 + \c_one ; } -%% File: l3fp-expo.dtx Copyright (C) 2011-2014 The LaTeX3 Project +%% File: l3fp-expo.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -14013,7 +14199,7 @@ 0 \fi: \exp_after:wN \exp_stop_f: - \int_use:N \__int_eval:w % for the exponent + \__int_value:w \__int_eval:w % for the exponent \__fp_ln_significand:NNNNnnnN #2#3 \__fp_ln_exponent:wn {#1} } @@ -14043,11 +14229,11 @@ \cs:w c__fp_ln_ \__int_to_roman:w #1 _fixed_tl \exp_after:wN \cs_end: \__int_value:w \exp_after:wN \__fp_ln_x_iv:wnnnnnnnn - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \__fp_ln_x_iii_var:NNNNNw - \int_use:N \__int_eval:w 9999 9990 + #1*#2#3 + + \__int_value:w \__int_eval:w 9999 9990 + #1*#2#3 + \exp_after:wN \__fp_ln_x_iii:NNNNNNw - \int_use:N \__int_eval:w 10 0000 0000 + #1*#4#5 ; + \__int_value:w \__int_eval:w 10 0000 0000 + #1*#4#5 ; {20000} {0000} {0000} {0000} } %^^A todo: reoptimize (a generalization attempt failed). \cs_new:Npn \__fp_ln_x_iii:NNNNNNw #1#2 #3#4#5#6 #7; @@ -14060,7 +14246,7 @@ \cs_new:Npn \__fp_ln_x_iv:wnnnnnnnn #1; #2#3#4#5 #6#7#8#9 { \exp_after:wN \__fp_div_significand_pack:NNN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \__fp_ln_div_i:w #1 ; #6 #7 ; {#8} {#9} {#2} {#3} {#4} {#5} @@ -14073,20 +14259,20 @@ \cs_new:Npn \__fp_ln_div_i:w #1; { \exp_after:wN \__fp_div_significand_calc:wwnnnnnnn - \int_use:N \__int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1 + \__int_value:w \__int_eval:w 999999 + 2 0000 0000 / #1 ; % Q1 } \cs_new:Npn \__fp_ln_div_ii:wwn #1; #2;#3 % y; B1;B2 <- for k=1 { \exp_after:wN \__fp_div_significand_pack:NNN - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \exp_after:wN \__fp_div_significand_calc:wwnnnnnnn - \int_use:N \__int_eval:w 999999 + #2 #3 / #1 ; % Q2 + \__int_value:w \__int_eval:w 999999 + #2 #3 / #1 ; % Q2 #2 #3 ; } \cs_new:Npn \__fp_ln_div_vi:wwn #1; #2;#3#4#5 #6#7#8#9 %y;F1;F2F3F4x1x2x3x4 { \exp_after:wN \__fp_div_significand_pack:NNN - \int_use:N \__int_eval:w 1000000 + #2 #3 / #1 ; % Q6 + \__int_value:w \__int_eval:w 1000000 + #2 #3 / #1 ; % Q6 } \cs_new:Npn \__fp_ln_div_after:Nw #1#2; { @@ -14103,39 +14289,39 @@ \exp_after:wN \__fp_ln_t_large:NNw \exp_after:wN + % <sign> \exp_after:wN #1 - \int_use:N \__int_eval:w 9999 - #2 \exp_after:wN ; - \int_use:N \__int_eval:w 9999 - #3 \exp_after:wN ; - \int_use:N \__int_eval:w 9999 - #4 \exp_after:wN ; - \int_use:N \__int_eval:w 9999 - #5 \exp_after:wN ; - \int_use:N \__int_eval:w 9999 - #6 \exp_after:wN ; - \int_use:N \__int_eval:w 1 0000 - #7 ; + \__int_value:w \__int_eval:w 9999 - #2 \exp_after:wN ; + \__int_value:w \__int_eval:w 9999 - #3 \exp_after:wN ; + \__int_value:w \__int_eval:w 9999 - #4 \exp_after:wN ; + \__int_value:w \__int_eval:w 9999 - #5 \exp_after:wN ; + \__int_value:w \__int_eval:w 9999 - #6 \exp_after:wN ; + \__int_value:w \__int_eval:w 1 0000 - #7 ; } \cs_new:Npn \__fp_ln_t_large:NNw #1 #2 #3; #4; #5; #6; #7; #8; { \exp_after:wN \__fp_ln_square_t_after:w - \int_use:N \__int_eval:w 9999 0000 + #3*#3 + \__int_value:w \__int_eval:w 9999 0000 + #3*#3 \exp_after:wN \__fp_ln_square_t_pack:NNNNNw - \int_use:N \__int_eval:w 9999 0000 + 2*#3*#4 + \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#4 \exp_after:wN \__fp_ln_square_t_pack:NNNNNw - \int_use:N \__int_eval:w 9999 0000 + 2*#3*#5 + #4*#4 + \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#5 + #4*#4 \exp_after:wN \__fp_ln_square_t_pack:NNNNNw - \int_use:N \__int_eval:w 9999 0000 + 2*#3*#6 + 2*#4*#5 + \__int_value:w \__int_eval:w 9999 0000 + 2*#3*#6 + 2*#4*#5 \exp_after:wN \__fp_ln_square_t_pack:NNNNNw - \int_use:N \__int_eval:w 1 0000 0000 + 2*#3*#7 + 2*#4*#6 + #5*#5 + \__int_value:w \__int_eval:w 1 0000 0000 + 2*#3*#7 + 2*#4*#6 + #5*#5 + (2*#3*#8 + 2*#4*#7 + 2*#5*#6) / 1 0000 % ; ; ; \exp_after:wN \__fp_ln_twice_t_after:w - \int_use:N \__int_eval:w -1 + 2*#3 + \__int_value:w \__int_eval:w -1 + 2*#3 \exp_after:wN \__fp_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 9999 + 2*#4 + \__int_value:w \__int_eval:w 9999 + 2*#4 \exp_after:wN \__fp_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 9999 + 2*#5 + \__int_value:w \__int_eval:w 9999 + 2*#5 \exp_after:wN \__fp_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 9999 + 2*#6 + \__int_value:w \__int_eval:w 9999 + 2*#6 \exp_after:wN \__fp_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 9999 + 2*#7 + \__int_value:w \__int_eval:w 9999 + 2*#7 \exp_after:wN \__fp_ln_twice_t_pack:Nw - \int_use:N \__int_eval:w 10000 + 2*#8 ; ; + \__int_value:w \__int_eval:w 10000 + 2*#8 ; ; { \__fp_ln_c:NwNw #1 } #2 } @@ -14157,7 +14343,7 @@ \__fp_fixed_mul:wwn #3; { \exp_after:wN \__fp_ln_Taylor_loop:www - \int_use:N \__int_eval:w #1 - \c_two ; + \__int_value:w \__int_eval:w #1 - \c_two ; } #3; } @@ -14165,7 +14351,7 @@ { \fi: \exp_after:wN \__fp_fixed_mul:wwn - \exp_after:wN { \int_use:N \__int_eval:w 10000 + #2 } #3; + \exp_after:wN { \__int_value:w \__int_eval:w 10000 + #2 } #3; } \cs_new:Npn \__fp_ln_c:NwNw #1 #2; #3 { @@ -14247,7 +14433,7 @@ \if_int_compare:w #4 < - \c_eight \c_one \exp_after:wN \__fp_add_big_i_o:wNww - \int_use:N \__int_eval:w \c_one - #4 ; + \__int_value:w \__int_eval:w \c_one - #4 ; 0 {1000}{0000}{0000}{0000} ; #5; \exp:w \else: @@ -14300,7 +14486,7 @@ \__fp_fixed_mul:wwn #2 ; { \exp_after:wN \__fp_exp_Taylor_loop:www - \int_use:N \__int_eval:w #1 - 1 ; + \__int_value:w \__int_eval:w #1 - 1 ; #2 ; } } @@ -14532,21 +14718,21 @@ \cs_new:Npn \__fp_pow_exponent:Nwnnnnnw #1#2; #3#4#5#6#7#8; { %^^A todo: use that in ln. \exp_after:wN \__fp_fixed_mul_after:wwn - \int_use:N \__int_eval:w \c__fp_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_leading_shift_int \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int #1#2*23025 - #1 #3 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int #1 #2*8509 - #1 #4 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int #1 #2*2994 - #1 #5 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int #1 #2*0456 - #1 #6 \exp_after:wN \__fp_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_trailing_shift_int + \__int_value:w \__int_eval:w \c__fp_trailing_shift_int #1 #2*8401 - #1 #7 #1 ( #2*7991 - #8 ) / 1 0000 ; ; } @@ -14562,7 +14748,7 @@ \fi: \fi: #7 \exp_after:wN ; - \int_use:N \__int_eval:w 10 0000 + #1 \__int_eval_end: + \__int_value:w \__int_eval:w 10 0000 + #1 \__int_eval_end: #2#3#4#5#6 0000 0000 0000 0000 0000 0000 ; %^^A todo: how many 0? } \cs_new:Npn \__fp_pow_C_overflow:w #1; #2; #3 @@ -14614,7 +14800,7 @@ \exp_after:wN \s__fp \exp_after:wN \__fp_chk:w \exp_after:wN #2 - \int_use:N \__int_eval:w \c_two - #3 \__int_eval_end: + \__int_value:w \__int_eval:w \c_two - #3 \__int_eval_end: } \cs_new:Npn \__fp_pow_neg_case:w \s__fp \__fp_chk:w #1#2#3; { @@ -14660,7 +14846,7 @@ \c_one \fi: } -%% File: l3fp-trig.dtx Copyright (C) 2011-2014 The LaTeX3 Project +%% File: l3fp-trig.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -14796,7 +14982,7 @@ \exp_after:wN #2 \exp_after:wN #3 \exp_after:wN #4 - \int_use:N \__int_eval:w #5 + \__int_value:w \__int_eval:w #5 \exp_after:wN \exp_after:wN \exp_after:wN \exp_after:wN \if_int_compare:w #7 > #1 \c_zero \c_one #1 \__fp_trig_large:ww \__fp_trigd_large:ww @@ -14828,7 +15014,7 @@ \cs_new:Npn \__fp_trigd_large_auxi:nnnnwNNNN #1#2#3#4#5; #6#7#8#9 { \exp_after:wN \__fp_trigd_large_auxii:wNw - \int_use:N \__int_eval:w #1 + #2 + \__int_value:w \__int_eval:w #1 + #2 - (#1 + #2 - \c_four) / \c_nine * \c_nine \__int_eval_end: #3; #4; #5{#6#7#8#9}; @@ -14837,7 +15023,7 @@ { + (#1#2 - \c_four) / \c_nine * \c_two \exp_after:wN \__fp_trigd_large_auxiii:www - \int_use:N \__int_eval:w #1#2 + \__int_value:w \__int_eval:w #1#2 - (#1#2 - \c_four) / \c_nine * \c_nine \__int_eval_end: #3 ; } \cs_new:Npn \__fp_trigd_large_auxiii:www #1; #2; #3! @@ -15019,8 +15205,8 @@ \cs_new:Npn \__fp_trig_large:ww #1, #2#3#4#5#6; { \exp_after:wN \__fp_trig_large_auxi:wwwwww - \int_use:N \__int_eval:w (#1 - 32) / 64 \exp_after:wN , - \int_use:N \__int_eval:w (#1 - 4) / 8 \exp_after:wN , + \__int_value:w \__int_eval:w (#1 - 32) / 64 \exp_after:wN , + \__int_value:w \__int_eval:w (#1 - 4) / 8 \exp_after:wN , \__int_value:w #1 \__fp_trig_inverse_two_pi: ; {#2}{#3}{#4}{#5} ; } @@ -15043,7 +15229,7 @@ { \exp_after:wN \__fp_use_i_until_s:nw \exp_after:wN \__fp_trig_large_auxvii:w - \int_use:N \__int_eval:w \c__fp_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_leading_shift_int \prg_replicate:nn { \c_thirteen } { \__fp_trig_large_auxvi:wnnnnnnnn } + \c__fp_trailing_shift_int - \c__fp_middle_shift_int @@ -15053,7 +15239,7 @@ \cs_new:Npn \__fp_trig_large_auxvi:wnnnnnnnn #1; #2#3#4#5#6#7#8#9 { \exp_after:wN \__fp_trig_large_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int + #2*#9 + #3*#8 + #4*#7 + #5*#6 #1; {#2}{#3}{#4}{#5} {#7}{#8}{#9} } @@ -15062,7 +15248,7 @@ \cs_new:Npn \__fp_trig_large_auxvii:w #1#2#3 { \exp_after:wN \__fp_trig_large_auxviii:ww - \int_use:N \__int_eval:w (#1#2#3 - 62) / 125 ; + \__int_value:w \__int_eval:w (#1#2#3 - 62) / 125 ; #1#2#3 } \cs_new:Npn \__fp_trig_large_auxviii:ww #1; @@ -15080,7 +15266,7 @@ { \exp_after:wN \__fp_use_i_until_s:nw \exp_after:wN \__fp_trig_large_auxxi:w - \int_use:N \__int_eval:w \c__fp_leading_shift_int + \__int_value:w \__int_eval:w \c__fp_leading_shift_int \prg_replicate:nn { \c_thirteen } { \__fp_trig_large_auxx:wNNNNN } + \c__fp_trailing_shift_int - \c__fp_middle_shift_int @@ -15089,14 +15275,14 @@ \cs_new:Npn \__fp_trig_large_auxx:wNNNNN #1; #2 #3#4#5#6 { \exp_after:wN \__fp_trig_large_pack:NNNNNw - \int_use:N \__int_eval:w \c__fp_middle_shift_int + \__int_value:w \__int_eval:w \c__fp_middle_shift_int #2 \c_eight * #3#4#5#6 #1; #2 } \cs_new:Npn \__fp_trig_large_auxxi:w #1; { \exp_after:wN \__fp_ep_mul_raw:wwwwN - \int_use:N \__int_eval:w \c_zero \__fp_ep_to_ep_loop:N #1 ; ; ! + \__int_value:w \__int_eval:w \c_zero \__fp_ep_to_ep_loop:N #1 ; ; ! 0,{7853}{9816}{3397}{4483}{0961}{5661}; \__fp_trig_small:ww } @@ -15150,7 +15336,7 @@ { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #2 - \int_use:N \__int_eval:w #1 + \__int_value:w \__int_eval:w #1 } #2 } @@ -15194,7 +15380,7 @@ { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w \__fp_ep_to_float:wwN + \__int_value:w \__int_eval:w \__fp_ep_to_float:wwN } #1 } @@ -15247,7 +15433,7 @@ { \exp_after:wN \__fp_atan_combine_o:NwwwwwN \exp_after:wN #2 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_meaning:w 2 #5 \c_seven - \fi: #3 \exp_after:wN ; \c__fp_one_fixed_tl ; {0000}{0000}{0000}{0000}{0000}{0000}; @@ -15264,7 +15450,7 @@ { \exp_after:wN \__fp_atan_combine_o:NwwwwwN \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_meaning:w 2 #4 \c_seven - \__int_eval:w \fi: @@ -15319,7 +15505,7 @@ \__fp_rrot:www \__fp_fixed_mul_sub_back:wwwn #2; #3; { \exp_after:wN \__fp_atan_Taylor_loop:www - \int_use:N \__int_eval:w #1 - \c_two ; + \__int_value:w \__int_eval:w #1 - \c_two ; } #3; } @@ -15330,7 +15516,7 @@ { \exp_after:wN \__fp_sanitize:Nw \exp_after:wN #1 - \int_use:N \__int_eval:w + \__int_value:w \__int_eval:w \if_meaning:w 0 #2 \exp_after:wN \use_i:nn \else: @@ -15341,7 +15527,7 @@ \__fp_fixed_mul:wwn #3; #4; { \exp_after:wN \__fp_atan_combine_aux:ww - \int_use:N \__int_eval:w #2 / \c_two ; #2; + \__int_value:w \__int_eval:w #2 / \c_two ; #2; } } { #7 \__fp_fixed_to_float:wN \__fp_fixed_to_float_rad:wN } @@ -15470,7 +15656,7 @@ { \__fp_asin_auxi_o:NnNww #1 {#3} #4 } } } -%% File: l3fp-convert.dtx Copyright(C) 2011-2014 The LaTeX3 Project +%% File: l3fp-convert.dtx Copyright(C) 2011-2014,2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -15519,50 +15705,44 @@ \exp_after:wN \__fp_to_scientific_dispatch:w \exp:w \exp_end_continue_f:w \__fp_parse:n } -\group_begin: -\char_set_catcode_other:N E -\tl_to_lowercase:n +\cs_new:Npn \__fp_to_scientific_dispatch:w \s__fp \__fp_chk:w #1#2 { - \group_end: - \cs_new:Npn \__fp_to_scientific_dispatch:w \s__fp \__fp_chk:w #1#2 - { - \if_meaning:w 2 #2 \exp_after:wN - \exp:w \exp_end_continue_f:w \fi: - \if_case:w #1 \exp_stop_f: - \__fp_case_return:nw { 0 } - \or: \exp_after:wN \__fp_to_scientific_normal:wnnnnn - \or: - \__fp_case_use:nw - { - \__fp_invalid_operation:nnw - { - \exp_after:wN 1 - \exp_after:wN E - \int_use:N \c__fp_max_exponent_int - } - { fp_to_scientific } - } - \or: - \__fp_case_use:nw + \if_meaning:w 2 #2 \exp_after:wN - \exp:w \exp_end_continue_f:w \fi: + \if_case:w #1 \exp_stop_f: + \__fp_case_return:nw { 0 } + \or: \exp_after:wN \__fp_to_scientific_normal:wnnnnn + \or: + \__fp_case_use:nw + { + \__fp_invalid_operation:nnw { - \__fp_invalid_operation:nnw - { 0 } - { fp_to_scientific } + \exp_after:wN 1 + \exp_after:wN e + \int_use:N \c__fp_max_exponent_int } - \fi: - \s__fp \__fp_chk:w #1 #2 - } - \cs_new:Npn \__fp_to_scientific_normal:wnnnnn - \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ; - { - \if_int_compare:w #2 = \c_one - \exp_after:wN \__fp_to_scientific_normal:wNw - \else: - \exp_after:wN \__fp_to_scientific_normal:wNw - \exp_after:wN E - \int_use:N \__int_eval:w #2 - \c_one - \fi: - ; #3 #4 #5 #6 ; - } + { fp_to_scientific } + } + \or: + \__fp_case_use:nw + { + \__fp_invalid_operation:nnw + { 0 } + { fp_to_scientific } + } + \fi: + \s__fp \__fp_chk:w #1 #2 + } +\cs_new:Npn \__fp_to_scientific_normal:wnnnnn + \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ; + { + \if_int_compare:w #2 = \c_one + \exp_after:wN \__fp_to_scientific_normal:wNw + \else: + \exp_after:wN \__fp_to_scientific_normal:wNw + \exp_after:wN e + \__int_value:w \__int_eval:w #2 - \c_one + \fi: + ; #3 #4 #5 #6 ; } \cs_new:Npn \__fp_to_scientific_normal:wNw #1 ; #2#3; { \__fp_trim_zeros:w #2.#3 ; #1 } @@ -15648,8 +15828,8 @@ \if_case:w #1 \exp_stop_f: \__fp_case_return:nw { 0 } \or: \exp_after:wN \__fp_to_tl_normal:nnnnn - \or: \__fp_case_return:nw { \tl_to_str:n {inf} } - \else: \__fp_case_return:nw { \tl_to_str:n {nan} } + \or: \__fp_case_return:nw { inf } + \else: \__fp_case_return:nw { nan } \fi: } \cs_new:Npn \__fp_to_tl_normal:nnnnn #1 @@ -15667,11 +15847,11 @@ \fi: \s__fp \__fp_chk:w 1 0 {#1} } -\cs_new:Npx \fp_to_dim:N #1 - { \exp_not:N \fp_to_decimal:N #1 \tl_to_str:n {pt} } +\cs_new:Npn \fp_to_dim:N #1 + { \fp_to_decimal:N #1 pt } \cs_generate_variant:Nn \fp_to_dim:N { c } -\cs_new:Npx \fp_to_dim:n #1 - { \exp_not:N \fp_to_decimal:n {#1} \tl_to_str:n {pt} } +\cs_new:Npn \fp_to_dim:n #1 + { \fp_to_decimal:n {#1} pt } \cs_new:Npn \fp_to_int:N #1 { \exp_after:wN \__fp_to_int_dispatch:w #1 } \cs_generate_variant:Nn \fp_to_int:N { c } \cs_new_nopar:Npn \fp_to_int:n @@ -15697,7 +15877,7 @@ \__fp_case_return:nw { \exp_after:wN \c_zero_fp } \else: \exp_after:wN \__fp_from_dim:wNw - \int_use:N \__int_eval:w #1 - \c_four + \__int_value:w \__int_eval:w #1 - \c_four \if_meaning:w - #2 \exp_after:wN , \exp_after:wN 2 \__int_value:w \else: @@ -16077,7 +16257,7 @@ \cs_generate_variant:Nn \vbox_unpack_clear:N { c } \cs_new_protected:Npn \vbox_set_split_to_ht:NNn #1#2#3 { \tex_setbox:D #1 \tex_vsplit:D #2 to \__dim_eval:w #3 \__dim_eval_end: } -%% File: l3coffins.dtx Copyright(C) 2010-2015 The LaTeX3 Project +%% File: l3coffins.dtx Copyright(C) 2010-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -16110,7 +16290,7 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3coffins.dtx 5789 2015-08-06 02:32:11Z bruno $ +\GetIdInfo$Id: l3coffins.dtx 6440 2016-03-24 09:59:29Z joseph $ {L3 Coffin code layer} \box_new:N \l__coffin_internal_box \dim_new:N \l__coffin_internal_dim @@ -16368,13 +16548,13 @@ \cs_new_protected:Npn \__coffin_update_corners:N #1 { \prop_put:cnx { l__coffin_corners_ \__int_value:w #1 _prop } { tl } - { { 0 pt } { \dim_use:N \box_ht:N #1 } } + { { 0 pt } { \dim_eval:n { \box_ht:N #1 } } } \prop_put:cnx { l__coffin_corners_ \__int_value:w #1 _prop } { tr } - { { \dim_use:N \box_wd:N #1 } { \dim_use:N \box_ht:N #1 } } + { { \dim_eval:n { \box_wd:N #1 } } { \dim_eval:n { \box_ht:N #1 } } } \prop_put:cnx { l__coffin_corners_ \__int_value:w #1 _prop } { bl } { { 0 pt } { \dim_eval:n { - \box_dp:N #1 } } } \prop_put:cnx { l__coffin_corners_ \__int_value:w #1 _prop } { br } - { { \dim_use:N \box_wd:N #1 } { \dim_eval:n { - \box_dp:N #1 } } } + { { \dim_eval:n { \box_wd:N #1 } } { \dim_eval:n { -\box_dp:N #1 } } } } \cs_new_protected:Npn \__coffin_update_poles:N #1 { @@ -16385,7 +16565,7 @@ } \prop_put:cnx { l__coffin_poles_ \__int_value:w #1 _prop } { r } { - { \dim_use:N \box_wd:N #1 } + { \dim_eval:n { \box_wd:N #1 } } { 0 pt } { 0 pt } { 1000 pt } } \prop_put:cnx { l__coffin_poles_ \__int_value:w #1 _prop } { vc } @@ -16398,7 +16578,7 @@ \prop_put:cnx { l__coffin_poles_ \__int_value:w #1 _prop } { t } { { 0 pt } - { \dim_use:N \box_ht:N #1 } + { \dim_eval:n { \box_ht:N #1 } } { 1000 pt } { 0 pt } } @@ -17115,7 +17295,7 @@ \cs_new_eq:NN \pdftex_if_engine_p: \c_true_bool } \cs_set_eq:NN \c_job_name_tl \c_sys_jobname_str -%% File: l3candidates.dtx Copyright(C) 2012-2016 The LaTeX3 Project +%% File: l3candidates.dtx Copyright (C) 2012-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -17148,7 +17328,7 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3candidates.dtx 6376 2016-01-14 08:36:20Z joseph $ +\GetIdInfo$Id: l3candidates.dtx 6456 2016-03-25 21:09:37Z joseph $ {L3 Experimental additions to l3kernel} \cs_new_protected_nopar:Npn \cs_log:N { \__msg_log_next: \cs_show:N } @@ -17594,14 +17774,14 @@ \cs_new_protected:Npn \__coffin_set_bounding:N #1 { \prop_put:Nnx \l__coffin_bounding_prop { tl } - { { 0 pt } { \dim_use:N \box_ht:N #1 } } + { { 0 pt } { \dim_eval:n { \box_ht:N #1 } } } \prop_put:Nnx \l__coffin_bounding_prop { tr } - { { \dim_use:N \box_wd:N #1 } { \dim_use:N \box_ht:N #1 } } - \dim_set:Nn \l__coffin_internal_dim { - \box_dp:N #1 } + { { \dim_eval:n { \box_wd:N #1 } } { \dim_eval:n { \box_ht:N #1 } } } + \dim_set:Nn \l__coffin_internal_dim { -\box_dp:N #1 } \prop_put:Nnx \l__coffin_bounding_prop { bl } { { 0 pt } { \dim_use:N \l__coffin_internal_dim } } \prop_put:Nnx \l__coffin_bounding_prop { br } - { { \dim_use:N \box_wd:N #1 } { \dim_use:N \l__coffin_internal_dim } } + { { \dim_eval:n { \box_wd:N #1 } } { \dim_use:N \l__coffin_internal_dim } } } \cs_new_protected:Npn \__coffin_rotate_bounding:nnn #1#2#3 { @@ -18245,11 +18425,11 @@ \int_compare:nNnTF { `#2 } > { "80 } { \int_compare:nNnTF { `#2 } < { "E0 } - { \__tl_change_case_char_UTFiix:nNNN {#1} #2 } + { \__tl_change_case_char_UTFviii:nNNN {#1} #2 } { \int_compare:nNnTF { `#2 } < { "F0 } - { \__tl_change_case_char_UTFiix:nNNNN {#1} #2 } - { \__tl_change_case_char_UTFiix:nNNNNN {#1} #2 } + { \__tl_change_case_char_UTFviii:nNNNN {#1} #2 } + { \__tl_change_case_char_UTFviii:nNNNNN {#1} #2 } } } { \__tl_change_case_char_auxi:nN {#1} #2 } @@ -18270,7 +18450,9 @@ \int_compare:nNnTF { \use:c { __tl_lookup_ #1 :N } #2 } = { 0 } { \exp_stop_f: #2 } { - \utex_char:D \use:c { __tl_lookup_ #1 :N } #2 + \char_generate:nn + { \use:c { __tl_lookup_ #1 :N } #2 } + { \char_value_catcode:n { \use:c { __tl_lookup_ #1 :N } #2 } } } } \cs_new_protected:Npn \__tl_lookup_lower:N #1 { \tex_lccode:D `#1 } @@ -18279,13 +18461,13 @@ } { \cs_new:Npn \__tl_change_case_char_auxii:nN #1#2 { \exp_stop_f: #2 } - \cs_new:Npn \__tl_change_case_char_UTFiix:nNNN #1#2#3#4 - { \__tl_change_case_char_UTFiix:nnN {#1} {#2#4} #3 } - \cs_new:Npn \__tl_change_case_char_UTFiix:nNNNN #1#2#3#4#5 - { \__tl_change_case_char_UTFiix:nnN {#1} {#2#4#5} #3 } - \cs_new:Npn \__tl_change_case_char_UTFiix:nNNNNN #1#2#3#4#5#6 - { \__tl_change_case_char_UTFiix:nnN {#1} {#2#4#5#6} #3 } - \cs_new:Npn \__tl_change_case_char_UTFiix:nnN #1#2#3 + \cs_new:Npn \__tl_change_case_char_UTFviii:nNNN #1#2#3#4 + { \__tl_change_case_char_UTFviii:nnN {#1} {#2#4} #3 } + \cs_new:Npn \__tl_change_case_char_UTFviii:nNNNN #1#2#3#4#5 + { \__tl_change_case_char_UTFviii:nnN {#1} {#2#4#5} #3 } + \cs_new:Npn \__tl_change_case_char_UTFviii:nNNNNN #1#2#3#4#5#6 + { \__tl_change_case_char_UTFviii:nnN {#1} {#2#4#5#6} #3 } + \cs_new:Npn \__tl_change_case_char_UTFviii:nnN #1#2#3 { \cs_if_exist:cTF { c__unicode_ #1 _ \tl_to_str:n {#2} _tl } { @@ -18598,34 +18780,34 @@ { \__tl_change_case_output:Vwn \c__unicode_upper_Eszett_tl } {#2} } -\cs_new:Npn \__unicode_codepoint_to_UTFiix:n #1 +\cs_new:Npn \__unicode_codepoint_to_UTFviii:n #1 { - \exp_args:Nf \__unicode_codepoint_to_UTFiix_auxi:n + \exp_args:Nf \__unicode_codepoint_to_UTFviii_auxi:n { \int_eval:n {#1} } } -\cs_new:Npn \__unicode_codepoint_to_UTFiix_auxi:n #1 +\cs_new:Npn \__unicode_codepoint_to_UTFviii_auxi:n #1 { \if_int_compare:w #1 > "80 ~ \if_int_compare:w #1 < "800 ~ 2 - \__unicode_codepoint_to_UTFiix_auxii:Nnn C {#1} { 64 } - \__unicode_codepoint_to_UTFiix_auxiii:n {#1} + \__unicode_codepoint_to_UTFviii_auxii:Nnn C {#1} { 64 } + \__unicode_codepoint_to_UTFviii_auxiii:n {#1} \else: \if_int_compare:w #1 < "10000 ~ 3 - \__unicode_codepoint_to_UTFiix_auxii:Nnn E {#1} { 64 * 64 } - \__unicode_codepoint_to_UTFiix_auxiii:n {#1} - \__unicode_codepoint_to_UTFiix_auxiii:n + \__unicode_codepoint_to_UTFviii_auxii:Nnn E {#1} { 64 * 64 } + \__unicode_codepoint_to_UTFviii_auxiii:n {#1} + \__unicode_codepoint_to_UTFviii_auxiii:n { \int_div_truncate:nn {#1} { 64 } } \else: 4 - \__unicode_codepoint_to_UTFiix_auxii:Nnn F + \__unicode_codepoint_to_UTFviii_auxii:Nnn F {#1} { 64 * 64 * 64 } - \__unicode_codepoint_to_UTFiix_auxiii:n + \__unicode_codepoint_to_UTFviii_auxiii:n { \int_div_truncate:nn {#1} { 64 * 64 } } - \__unicode_codepoint_to_UTFiix_auxiii:n + \__unicode_codepoint_to_UTFviii_auxiii:n { \int_div_truncate:nn {#1} { 64 } } - \__unicode_codepoint_to_UTFiix_auxiii:n {#1} + \__unicode_codepoint_to_UTFviii_auxiii:n {#1} \fi: \fi: @@ -18633,9 +18815,9 @@ 1 {#1} \fi: } -\cs_new:Npn \__unicode_codepoint_to_UTFiix_auxii:Nnn #1#2#3 +\cs_new:Npn \__unicode_codepoint_to_UTFviii_auxii:Nnn #1#2#3 { { \int_eval:n { "#10 + \int_div_truncate:nn {#2} {#3} } } } -\cs_new:Npn \__unicode_codepoint_to_UTFiix_auxiii:n #1 +\cs_new:Npn \__unicode_codepoint_to_UTFviii_auxiii:n #1 { { \int_eval:n { \int_mod:nn {#1} { 64 } + 128 } } } \cs_if_exist:NTF \utex_char:D { @@ -18651,7 +18833,7 @@ { \utex_char:D "0069 ~ \utex_char:D "0307 ~ \utex_char:D "0303 ~ } } \tl_const:Nx \c__unicode_dot_above_tl { \utex_char:D "0307 ~ } - \tl_const:Nx \c__unicode_upper_Eszett_tl { \utex_char:D "1E9E ~} + \tl_const:Nx \c__unicode_upper_Eszett_tl { \utex_char:D "1E9E ~ } } { \tl_const:Nn \c__unicode_std_sigma_tl { } @@ -18667,20 +18849,21 @@ { \tl_const:Nx #1 { \utex_char:D "#2 ~ } } } { - \char_set_catcode_active:N . - \char_set_catcode_active:N ! \cs_set_protected:Npn \__tl_tmp:w #1#2 { \group_begin: \cs_set_protected:Npn \__tl_tmp:w ##1##2##3 { - \char_set_lccode:nn { `\. } {##2} - \char_set_lccode:nn { `\! } {##3} - \tex_lowercase:D - { \tl_const:Nn #1 { . ! } } + \tl_const:Nx #1 + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {##2} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {##3} { 13 } + } } \tl_set:Nx \l__tl_internal_a_tl - { \__unicode_codepoint_to_UTFiix:n {"#2} } + { \__unicode_codepoint_to_UTFviii:n {"#2} } \exp_after:wN \__tl_tmp:w \l__tl_internal_a_tl \group_end: } @@ -18691,10 +18874,6 @@ \__tl_tmp:w \c__unicode_I_ogonek_tl { 012E } \group_end: \group_begin: - \char_set_catcode_active:N . - \char_set_catcode_active:N ! - \char_set_catcode_active:N ; - \char_set_catcode_active:N , \bool_if:nT { \sys_if_engine_pdftex_p: || \sys_if_engine_uptex_p: @@ -18705,24 +18884,39 @@ \quark_if_recursion_tail_stop:n {#1} \tl_set:Nx \l__tl_internal_a_tl { - \__unicode_codepoint_to_UTFiix:n {"#1} - \__unicode_codepoint_to_UTFiix:n {"#2} + \__unicode_codepoint_to_UTFviii:n {"#1} + \__unicode_codepoint_to_UTFviii:n {"#2} } \exp_after:wN \__tl_tmp:w \l__tl_internal_a_tl \__tl_loop:nn } \cs_set_protected:Npn \__tl_tmp:w #1#2#3#4#5#6 { - \char_set_lccode:nn { `\. } {#2} - \char_set_lccode:nn { `\! } {#3} - \char_set_lccode:nn { `\; } {#5} - \char_set_lccode:nn { `\, } {#6} - \tex_lowercase:D + \tl_const:cx + { + c__unicode_lower_ + \char_generate:nn {#2} { 12 } + \char_generate:nn {#3} { 12 } + _tl + } + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {#5} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {#6} { 13 } + } + \tl_const:cx { - \tl_const:cn { c__unicode_lower_ \tl_to_str:n { . ! } _tl } - { ; , } - \tl_const:cn { c__unicode_upper_ \tl_to_str:n { ; , } _tl } - { . ! } + c__unicode_upper_ + \char_generate:nn {#5} { 12 } + \char_generate:nn {#6} { 12 } + _tl + } + { + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {#2} { 13 } + \exp_after:wN \exp_after:wN \exp_after:wN + \exp_not:N \__char_generate:nn {#3} { 13 } } } \__tl_loop:nn @@ -18832,17 +19026,17 @@ \group_begin: \cs_set_protected:Npn \__tl_tmp:w ##1##2##3 { - \char_set_lccode:nn { `\. } {##2} - \char_set_lccode:nn { `\! } {##3} - \tex_lowercase:D + \tl_const:cx { - \tl_const:cn - { c__unicode_ #3 _ \tl_to_str:n { . ! } _tl } + c__unicode_ #3 _ + \char_generate:nn {##2} { 12 } + \char_generate:nn {##3} { 12 } + _tl } - { #2 } + {#2} } \tl_set:Nx \l__tl_internal_a_tl - { \__unicode_codepoint_to_UTFiix:n { "#1 } } + { \__unicode_codepoint_to_UTFviii:n { "#1 } } \exp_after:wN \__tl_tmp:w \l__tl_internal_a_tl \group_end: } @@ -18855,8 +19049,8 @@ \cs_set_protected:Npn \__tl_change_case_setup:NN #1#2 { \quark_if_recursion_tail_stop:N #1 - \tl_const:cn { c__tl_change_case_lower_ \token_to_str:N #1 _tl } { #2 } - \tl_const:cn { c__tl_change_case_upper_ \token_to_str:N #2 _tl } { #1 } + \tl_const:cn { c__tl_change_case_lower_ \token_to_str:N #1 _tl } { #2 } + \tl_const:cn { c__tl_change_case_upper_ \token_to_str:N #2 _tl } { #1 } \__tl_change_case_setup:NN } \__tl_change_case_setup:NN @@ -18864,6 +19058,7 @@ \AE \ae \DH \dh \DJ \dj + \IJ \ij \L \l \NG \ng \O \o @@ -18872,11 +19067,12 @@ \TH \th \q_recursion_tail ? \q_recursion_stop - \tl_const:cn { c__tl_change_case_upper_ \token_to_str:N \i _tl } { I } - \tl_const:cn { c__tl_change_case_upper_ \token_to_str:N \j _tl } { J } + \tl_const:cn { c__tl_change_case_upper_ \token_to_str:N \i _tl } { I } + \tl_const:cn { c__tl_change_case_upper_ \token_to_str:N \j _tl } { J } \group_end: \tl_new:N \l_tl_case_change_accents_tl -\tl_set:Nn \l_tl_case_change_accents_tl { \" \^ \' \` \. \c \u \~ \H \v } +\tl_set:Nn \l_tl_case_change_accents_tl + { \" \' \. \^ \` \~ \c \H \k \r \t \u \v } \cs_new:Npn \__tl_mixed_case:nn #1#2 { \etex_unexpanded:D \exp_after:wN @@ -19064,160 +19260,6 @@ \cs_new_protected_nopar:Npn \tl_log:n { \__msg_log_next: \tl_show:n } \group_begin: - \char_set_catcode_active:N \^^@ - \cs_set_protected:Npn \__char_tmp:nN #1#2 - { - \cs_new_protected:cpn { #1 :nN } ##1 - { - \group_begin: - \char_set_catcode_active:n { ##1 } - \char_set_lccode:nn { `\^^@ } { ##1 } - \tex_lowercase:D { \group_end: #2 ^^@ } - } - \cs_new_protected:cpx { #1 :NN } ##1 - { \exp_not:c { #1 : nN } { `##1 } } - } - \__char_tmp:nN { char_set_active_eq } \cs_set_eq:NN - \__char_tmp:nN { char_gset_active_eq } \cs_gset_eq:NN -\group_end: -\cs_generate_variant:Nn \char_set_active_eq:NN { Nc } -\cs_generate_variant:Nn \char_gset_active_eq:NN { Nc } -\cs_generate_variant:Nn \char_set_active_eq:nN { nc } -\cs_generate_variant:Nn \char_gset_active_eq:nN { nc } -\cs_new:Npn \char_generate:nn #1#2 - { - \exp:w \exp_after:wN \__char_generate_aux:w - \int_use:N \__int_eval:w #1 \exp_after:wN ; - \int_use:N \__int_eval:w #2 ; - } -\cs_new:Npn \__char_generate_aux:w #1 ; #2 ; - { - \if_int_compare:w #2 = \c_thirteen - \__msg_kernel_expandable_error:nn { kernel } { char-active } - \else: - \if_int_compare:w #2 = \c_ten - \if_int_compare:w #1 = \c_zero - \__msg_kernel_expandable_error:nn { kernel } { char-null-space } - \else: - \__msg_kernel_expandable_error:nn { kernel } { char-space } - \fi: - \else: - \if_int_odd:w 0 - \if_int_compare:w #2 < \c_one 1 \fi: - \if_int_compare:w #2 = \c_five 1 \fi: - \if_int_compare:w #2 = \c_nine 1 \fi: - \if_int_compare:w #2 > \c_thirteen 1 \fi: \exp_stop_f: - \__msg_kernel_expandable_error:nn { kernel } - { char-invalid-catcode } - \else: - \if_int_odd:w 0 - \if_int_compare:w #1 < \c_zero 1 \fi: - \if_int_compare:w #1 > \c__char_max_int 1 \fi: \exp_stop_f: - \__msg_kernel_expandable_error:nn { kernel } - { char-out-of-range } - \else: - \__char_generate_aux:nnw {#1} {#2} - \fi: - \fi: - \fi: - \fi: - \exp_end: - } -\tl_new:N \l__char_tmp_tl -\group_begin: - \char_set_catcode_active:N \^^L - \cs_set_nopar:Npn ^^L { } - \char_set_catcode_other:n { 0 } - \if_int_odd:w 0 - \cs_if_exist:NT \luatex_directlua:D { 1 } - \cs_if_exist:NT \utex_charcat:D { 1 } \exp_stop_f: - \int_const:Nn \c__char_max_int { 1114111 } - \cs_if_exist:NTF \luatex_directlua:D - { - \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \exp_after:wN \exp_end: - \luatex_directlua:D { l3kernel.charcat(#1, #2) } - } - } - { - \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \exp_after:wN \exp_end: - \utex_charcat:D #1 ~ #2 ~ - } - } - \else: - \int_const:Nn \c__char_max_int { 255 } - \tl_set:Nn \l__char_tmp_tl { \exp_not:N \or: } - \char_set_catcode_group_begin:n { 0 } % { - \tl_put_right:Nn \l__char_tmp_tl { ^^@ \if_false: } } - \char_set_catcode_group_end:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { { \fi: \exp_not:N \or: ^^@ } % } - \tl_set:Nx \l__char_tmp_tl { \l__char_tmp_tl } - \char_set_catcode_math_toggle:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } - \char_set_catcode_alignment:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } - \tl_put_right:Nn \l__char_tmp_tl { \or: } - \char_set_catcode_parameter:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } - \char_set_catcode_math_superscript:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } - \char_set_catcode_math_subscript:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } - \tl_put_right:Nn \l__char_tmp_tl { \or: } - \char_set_catcode_space:n { 0 } - \tl_put_right:No \l__char_tmp_tl { \use:n { \or: } ^^@ } - \char_set_catcode_letter:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } - \char_set_catcode_other:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } - \char_set_catcode_active:n { 0 } - \tl_put_right:Nn \l__char_tmp_tl { \or: ^^@ } - \cs_set_protected:Npn \__char_tmp:n #1 - { - \char_set_lccode:nn { 0 } {#1} - \char_set_lccode:nn { 32 } {#1} - \exp_args:Nx \tex_lowercase:D - { - \tl_const:Nn - \exp_not:c { c__char_ \__int_to_roman:w #1 _tl } - { \exp_not:o \l__char_tmp_tl } - } - } - \int_step_function:nnnN { 0 } { 1 } { 11 } \__char_tmp:n - \group_begin: - \tl_replace_once:Nnn \l__char_tmp_tl { ^^@ } { \ERROR } - \__char_tmp:n { 12 } - \group_end: - \int_step_function:nnnN { 13 } { 1 } { 255 } \__char_tmp:n - \cs_new:Npn \__char_generate_aux:nnw #1#2#3 \exp_end: - { - #3 - \exp_after:wN \exp_after:wN - \exp_after:wN \exp_end: - \exp_after:wN \exp_after:wN - \if_case:w #2 - \exp_last_unbraced:Nv \exp_stop_f: - { c__char_ \__int_to_roman:w #1 _tl } - \fi: - } - \fi: -\group_end: -\__msg_kernel_new:nnn { kernel } { char-active } - { Cannot~generate~active~chars. } -\__msg_kernel_new:nnn { kernel } { char-invalid-catcode } - { Invalid~catcode~for~char~generation. } -\__msg_kernel_new:nnn { kernel } { char-null-space } - { Cannot~generate~null~char~as~a~space. } -\__msg_kernel_new:nnn { kernel } { char-out-of-range } - { Charcode~requested~out~of~engine~range. } -\__msg_kernel_new:nnn { kernel } { char-space } - { Cannot~generate~space~chars. } -\group_begin: \cs_set_protected:Npn \__peek_tmp:w #1 \q_stop { \cs_new_protected_nopar:Npn \__peek_execute_branches_N_type: @@ -19255,7 +19297,7 @@ { \__peek_token_generic:NNT \__peek_execute_branches_N_type: \scan_stop: } \cs_new_protected_nopar:Npn \peek_N_type:F { \__peek_token_generic:NNF \__peek_execute_branches_N_type: \scan_stop: } -%% File: l3luatex.dtx Copyright (C) 2010-2015 The LaTeX3 Project +%% File: l3luatex.dtx Copyright (C) 2010-2016 The LaTeX3 Project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -19287,7 +19329,7 @@ %% prior consultation with the LaTeX3 Project. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3luatex.dtx 6250 2015-11-11 13:45:38Z joseph $ +\GetIdInfo$Id: l3luatex.dtx 6465 2016-03-26 16:15:09Z joseph $ {L3 Experimental LuaTeX-specific functions} \cs_new:Npn \lua_now_x:n #1 { \luatex_directlua:D {#1} } \cs_new:Npn \lua_now:n #1 { \lua_now_x:n { \exp_not:n {#1} } } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index ebc170e2f19..8fa1e2c5b2f 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -47,8 +47,8 @@ %% ----------------------------------------------------------------------- \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2016/01/19}% -\def\ExplFileVersion{6377}% +\def\ExplFileDate{2016/03/26}% +\def\ExplFileVersion{6466}% \let\ExplLoaderFileVersion\ExplFileVersion \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua index c8f78ed2ce3..e3ee46ccdea 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua @@ -13,7 +13,7 @@ -- -- Do not distribute a modified version of this file. -- --- File: l3luatex.dtx Copyright (C) 2010-2015 The LaTeX3 Project +-- File: l3luatex.dtx Copyright (C) 2010-2016 The LaTeX3 Project -- -- It may be distributed and/or modified under the conditions of the -- LaTeX Project Public License (LPPL), either version 1.3c of this @@ -50,7 +50,7 @@ local tex_setcatcode = tex.setcatcode local tex_sprint = tex.sprint local tex_write = tex.write local unicode_utf8_char = unicode.utf8.char -local function strcmp(A, B) +local function strcmp (A, B) if A == B then tex_write("0") elseif A < B then @@ -61,7 +61,7 @@ local function strcmp(A, B) end l3kernel.strcmp = strcmp local charcat_table = l3kernel.charcat_table or 1 -local function charcat(charcode, catcode) +local function charcat (charcode, catcode) tex_setcatcode(charcat_table, charcode, catcode) tex_sprint(charcat_table, unicode_utf8_char(charcode)) end diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 843acbfeca7..9db718ade91 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -47,8 +47,8 @@ %% ----------------------------------------------------------------------- \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2016/01/19}% -\def\ExplFileVersion{6377}% +\def\ExplFileDate{2016/03/26}% +\def\ExplFileVersion{6466}% \let\ExplLoaderFileVersion\ExplFileVersion \ProvidesPackage{\ExplFileName} [% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index ed1d01cec9d..05d51452e27 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3doc.dtx Copyright (C) 1990-2015 The LaTeX3 project +%% File: l3doc.dtx Copyright (C) 1990-2016 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the %% LaTeX Project Public License (LPPL), either version 1.3c of this @@ -50,7 +50,7 @@ \let \fileversionOld \ExplFileVersion \let \filedescriptionOld \ExplFileDescription \RequirePackage{expl3,xparse,calc} -\GetIdInfo$Id: l3doc.dtx 6037 2015-09-23 12:41:15Z joseph $ +\GetIdInfo$Id: l3doc.dtx 6448 2016-03-25 12:27:53Z bruno $ {L3 Experimental documentation class} \ProvidesExplClass {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -1405,7 +1405,6 @@ \cs_set_eq:NN \@evenfoot \@oddfoot } \group_begin: - \char_set_catcode_escape:N \/ \char_set_catcode_other:N \^^A \char_set_catcode_active:N \^^S \char_set_catcode_active:N \^^B @@ -1421,7 +1420,7 @@ \group_end: \cs_set_protected:Npn \xmacro@code #1 ^^A ^^S^^S^^S^^S ^^Bend ^^Lmacrocode^^R - { \__codedoc_xmacro_code:n {#1} /end{macrocode} } + { \__codedoc_xmacro_code:n {#1} \end{macrocode} } } \group_begin: \char_set_catcode_active:N \< diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index 7a73a3992b0..75cc7440606 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -46,8 +46,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{l3keys2e}{Support package l3kernel too old} @@ -61,8 +61,8 @@ } \def\ExplFileName{l3keys2e} \def\ExplFileDescription{LaTeX2e option processing using LaTeX3 keys} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \cs_generate_variant:Nn \clist_put_right:Nn { Nv } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty index 46caf08faf1..10ac44aee76 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty @@ -47,8 +47,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{xfrac}{Support package l3kernel too old} @@ -63,8 +63,8 @@ \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} \def\ExplFileName{xfrac} \def\ExplFileDescription{L3 Experimental split-level fractions} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \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 01b6243fff0..ba0540c21cf 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -50,8 +50,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{xparse}{Support package l3kernel too old} @@ -65,8 +65,8 @@ } \def\ExplFileName{xparse} \def\ExplFileDescription{L3 Experimental document command parser} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \tl_const:Nx \c__xparse_no_value_tl @@ -723,13 +723,8 @@ } \token_if_eq_catcode:NNTF + #1 { - \group_begin: - \char_set_lccode:nn { `A } { `#1 } - \tex_lowercase:D - { - \group_end: - \l__xparse_fn_tl A - } + \exp_after:wN \exp_after:wN \exp_after:wN + \l__xparse_fn_tl \char_generate:nn { `#1 } { 11 } } { \exp_after:wN \l__xparse_fn_tl @@ -1135,10 +1130,8 @@ { \__xparse_grab_v_group_end: \__xparse_add_arg:o \c__xparse_no_value_tl - \group_begin: - \char_set_lccode:nn { `\# } { \tex_endlinechar:D } - \tex_lowercase:D - { \group_end: \peek_meaning_remove:NTF ## } + \exp_after:wN \exp_after:wN \exp_after:wN + \peek_meaning_remove:NTF \char_generate:nn { \tex_endlinechar:D } { 6 } { \__msg_kernel_error:nnxxx { xparse } { verbatim-newline } { \exp_after:wN \token_to_str:N \l__xparse_fn_tl } diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index 00e7c3e19b1..9caca5a9c6e 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -50,8 +50,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2016/01/19] -\@ifpackagelater{expl3}{2016/01/19} +\RequirePackage{expl3}[2016/03/26] +\@ifpackagelater{expl3}{2016/03/26} {} {% \PackageError{xtemplate}{Support package l3kernel too old} @@ -65,8 +65,8 @@ } \def\ExplFileName{xtemplate} \def\ExplFileDescription{L3 Experimental prototype document functions} -\def\ExplFileDate{2016/01/19} -\def\ExplFileVersion{6377} +\def\ExplFileDate{2016/03/26} +\def\ExplFileVersion{6466} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \tl_const:Nn \c__xtemplate_code_root_tl { template~code~>~ } |