summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-03-26 22:56:01 +0000
committerKarl Berry <karl@freefriends.org>2016-03-26 22:56:01 +0000
commitacbc4b3c1d3629ae290305ff7c6056eb83d1151c (patch)
tree59c4ad13167b9bad138b2c231cbd6bc9f2c9c311 /Master/texmf-dist/source/latex
parent473c539aefe98fc932ea0ed651464b9f91482938 (diff)
l3 (26mar16)
git-svn-id: svn://tug.org/texlive/trunk@40146 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/l3build/l3build.dtx20
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx54
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx59
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx20
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx43
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx474
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx7
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx86
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3format.ins3
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx150
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx98
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx80
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx102
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx32
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx12
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx40
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx28
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx26
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx92
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx36
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx37
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx80
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx63
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx321
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx23
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx8
37 files changed, 1141 insertions, 973 deletions
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}