summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx28
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx40
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx167
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx20
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx9
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx79
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx189
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx8
52 files changed, 433 insertions, 277 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 72f276c7c6c..9d19e45ee11 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -21,7 +21,7 @@
% for those people who are interested.
%
%<*driver|generic|package>
-\def\ExplFileDate{2018-06-14}%
+\def\ExplFileDate{2018-08-23}%
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
index a92680e7e71..f8926277432 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index c5581d46850..90f6d3c80ec 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -939,6 +939,20 @@
% (\emph{i.e.}~an \texttt{N} argument).
% \end{function}
%
+% \begin{function}[EXP, added = 2018-06-18]{\use:e}
+% \begin{syntax}
+% \cs{use:e} \Arg{expandable tokens}
+% \end{syntax}
+% Fully expands the \meta{token list} in an \texttt{x}-type manner,
+% \emph{but} the function remains fully expandable, and parameter
+% character (usually~|#|) need not be doubled.
+% \begin{texnote}
+% \cs{use:e} the a wrapper around the primitive \tn{expanded}
+% where it is available:
+% it requires two expansions to complete its action.
+% \end{texnote}
+% \end{function}
+%
% \begin{function}[updated = 2011-12-31]{\use:x}
% \begin{syntax}
% \cs{use:x} \Arg{expandable tokens}
@@ -1454,11 +1468,13 @@
%<@@=use>
% \end{macrocode}
%
-% \begin{macro}[EXP]{\use_x:n}
-% A candidate, but needed early as it links to string comparisons.
-% Currently \LuaTeX-only.
+% \begin{macro}[EXP]{\use:e}
+% Currently \LuaTeX-only: emulated for older engines.
% \begin{macrocode}
-\cs_set:Npn \use_x:n #1 { \tex_expanded:D {#1} }
+\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} }
+\tex_ifdefined:D \tex_expanded:D \tex_else:D
+ \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} }
+\tex_fi:D
% \end{macrocode}
% \end{macro}
%
@@ -3240,7 +3256,7 @@
{
\bool_if:NTF #3
{
- \str_if_eq_x:nnF { }
+ \str_if_eq:eeF { }
{ \tl_map_function:nN {#2} \@@_generate_from_signature:n }
{
\__kernel_msg_error:nnx { kernel } { non-base-function }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 0d69acb9600..de180429e47 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -138,7 +138,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -340,7 +340,7 @@
}>0 %
\everyjob\expandafter{%
\the\expandafter\everyjob
- \csname\detokenize{lua_now_x:n}\endcsname{require("expl3")}%
+ \csname\detokenize{lua_now:n}\endcsname{require("expl3")}%
}%
\fi
\fi
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index d9e6e44abe6..552a2e93ed9 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -1606,7 +1606,7 @@
%
% \begin{macro}{\box_rotate:Nn}
% \begin{macro}{\@@_rotate:N}
-% \begin{macro}{\@@_rotate_x:nnN, \@@_rotate_y:nnN}
+% \begin{macro}{\@@_rotate_xdir:nnN, \@@_rotate_ydir:nnN}
% \begin{macro}
% {
% \@@_rotate_quadrant_one:, \@@_rotate_quadrant_two:,
@@ -1729,7 +1729,7 @@
% the equivalent function in the \pkg{l3coffins} module, where both parts
% are needed.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_rotate_x:nnN #1#2#3
+\cs_new_protected:Npn \@@_rotate_xdir:nnN #1#2#3
{
\dim_set:Nn #3
{
@@ -1740,7 +1740,7 @@
}
}
}
-\cs_new_protected:Npn \@@_rotate_y:nnN #1#2#3
+\cs_new_protected:Npn \@@_rotate_ydir:nnN #1#2#3
{
\dim_set:Nn #3
{
@@ -1762,46 +1762,46 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_rotate_quadrant_one:
{
- \@@_rotate_y:nnN \l_@@_right_dim \l_@@_top_dim
+ \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_top_dim
\l_@@_top_new_dim
- \@@_rotate_y:nnN \l_@@_left_dim \l_@@_bottom_dim
+ \@@_rotate_ydir:nnN \l_@@_left_dim \l_@@_bottom_dim
\l_@@_bottom_new_dim
- \@@_rotate_x:nnN \l_@@_left_dim \l_@@_top_dim
+ \@@_rotate_xdir:nnN \l_@@_left_dim \l_@@_top_dim
\l_@@_left_new_dim
- \@@_rotate_x:nnN \l_@@_right_dim \l_@@_bottom_dim
+ \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_bottom_dim
\l_@@_right_new_dim
}
\cs_new_protected:Npn \@@_rotate_quadrant_two:
{
- \@@_rotate_y:nnN \l_@@_right_dim \l_@@_bottom_dim
+ \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_bottom_dim
\l_@@_top_new_dim
- \@@_rotate_y:nnN \l_@@_left_dim \l_@@_top_dim
+ \@@_rotate_ydir:nnN \l_@@_left_dim \l_@@_top_dim
\l_@@_bottom_new_dim
- \@@_rotate_x:nnN \l_@@_right_dim \l_@@_top_dim
+ \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_top_dim
\l_@@_left_new_dim
- \@@_rotate_x:nnN \l_@@_left_dim \l_@@_bottom_dim
+ \@@_rotate_xdir:nnN \l_@@_left_dim \l_@@_bottom_dim
\l_@@_right_new_dim
}
\cs_new_protected:Npn \@@_rotate_quadrant_three:
{
- \@@_rotate_y:nnN \l_@@_left_dim \l_@@_bottom_dim
+ \@@_rotate_ydir:nnN \l_@@_left_dim \l_@@_bottom_dim
\l_@@_top_new_dim
- \@@_rotate_y:nnN \l_@@_right_dim \l_@@_top_dim
+ \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_top_dim
\l_@@_bottom_new_dim
- \@@_rotate_x:nnN \l_@@_right_dim \l_@@_bottom_dim
+ \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_bottom_dim
\l_@@_left_new_dim
- \@@_rotate_x:nnN \l_@@_left_dim \l_@@_top_dim
+ \@@_rotate_xdir:nnN \l_@@_left_dim \l_@@_top_dim
\l_@@_right_new_dim
}
\cs_new_protected:Npn \@@_rotate_quadrant_four:
{
- \@@_rotate_y:nnN \l_@@_left_dim \l_@@_top_dim
+ \@@_rotate_ydir:nnN \l_@@_left_dim \l_@@_top_dim
\l_@@_top_new_dim
- \@@_rotate_y:nnN \l_@@_right_dim \l_@@_bottom_dim
+ \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_bottom_dim
\l_@@_bottom_new_dim
- \@@_rotate_x:nnN \l_@@_left_dim \l_@@_bottom_dim
+ \@@_rotate_xdir:nnN \l_@@_left_dim \l_@@_bottom_dim
\l_@@_left_new_dim
- \@@_rotate_x:nnN \l_@@_right_dim \l_@@_top_dim
+ \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_top_dim
\l_@@_right_new_dim
}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index 58c53afecc0..43c19185279 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -137,19 +137,6 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[EXP, added = 2018-04-17]{\use_x:n}
-% \begin{syntax}
-% \cs{use_x:n} \Arg{token list}
-% \end{syntax}
-% Fully expands the \meta{token list} in an \texttt{x}-type manner,
-% \emph{but} the function remains fully expandable, and parameter
-% character (usually~|#|) need not be doubled.
-% \begin{texnote}
-% \cs{use_x:n} the a wrapper around the primitive \tn{expanded}:
-% it requires two expansions to complete its action.
-% \end{texnote}
-% \end{function}
-%
% \section{Additions to \pkg{l3box}}
%
% \subsection{Viewing part of a box}
@@ -359,7 +346,7 @@
% If found, sets the \meta{str var} to the size of the file in bytes.
% Where the file is not found, the \meta{str var} will be empty.
% \begin{texnote}
-% The \XeTeX{} engine provides no way to implement this function.
+% Currently this is not available with \XeTeX{}.
% \end{texnote}
% \end{function}
%
@@ -375,7 +362,7 @@
% (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|.
% Where the file is not found, the \meta{str var} will be empty.
% \begin{texnote}
-% The \XeTeX{} engine provides no way to implement this function.
+% Currently this is not available with \XeTeX{}.
% \end{texnote}
% \end{function}
%
@@ -905,6 +892,24 @@
% \end{texnote}
% \end{function}
%
+% \begin{function}[added = 2018-07-27, EXP, pTF]
+% {
+% \sys_if_platform_unix:,
+% \sys_if_platform_windows:
+% }
+% \begin{syntax}
+% \cs{sys_if_platform_unix:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Conditionals which allow platform-specific code to be used. The names
+% follow the \Lua{} |os.type()| function, \emph{i.e.}~all Unix-like systems
+% are |unix| (including Linux and MacOS).
+% \end{function}
+%
+% \begin{variable}[added = 2018-07-27]{\c_sys_platform_str}
+% The current platform given as a lower case string: one of
+% |unix|, |windows| or |unknown|.
+% \end{variable}
+%
% \begin{variable}[added = 2017-05-27]{\c_sys_shell_escape_int}
% This variable exposes the internal triple of the shell escape
% status. The possible values are
@@ -1225,6 +1230,21 @@
% argument.
% \end{function}
%
+% \begin{function}[added = 2018-07-23]
+% {
+% \tl_set_from_shell:Nnn, \tl_set_from_shell:cnn,
+% \tl_gset_from_shell:Nnn, \tl_gset_from_shell:cnn
+% }
+% \begin{syntax}
+% \cs{tl_set_from_shell:Nnn} \meta{tl~var} \Arg{setup} \Arg{shell~command}
+% \end{syntax}
+% Defines \meta{tl} to the text returned by the \meta{shell command}.
+% Category codes may need to be set appropriately via the \meta{setup}
+% argument. If shell escape is disabled, the \meta{tl~var} will be empty.
+% Note that quote characters (|"|) \emph{cannot} be used inside the
+% \meta{shell command}.
+% \end{function}
+%
% \begin{function}[EXP, added = 2016-12-06]
% {\tl_rand_item:N, \tl_rand_item:c, \tl_rand_item:n}
% \begin{syntax}
@@ -2164,10 +2184,10 @@
\file_get_full_name:nN {#1} \l_@@_full_name_str
\str_set:Nx #3
{
- \lua_now_x:n
+ \lua_now:e
{
l3kernel.file#2
- ( " \lua_escape_x:n { \l_@@_full_name_str } " )
+ ( " \lua_escape:e { \l_@@_full_name_str } " )
}
}
}
@@ -2878,6 +2898,45 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\c_sys_platform_str}
+% Detecting the platform on \LuaTeX{} is easy: for other engines, we use
+% the fact that the two common cases have special null files. It is possible
+% to probe further (see package \pkg{platform}), but that requires shell
+% escape and seems unlikely to be useful.
+% \begin{macrocode}
+\sys_if_engine_luatex:TF
+ {
+ \str_const:Nx \c_sys_platform_str
+ { \lua_now:n { tex.print(os.type) } }
+ }
+ {
+ \file_if_exist:nTF { nul: }
+ {
+ \file_if_exist:nF { /dev/null }
+ { \str_const:Nn \c_sys_platform_str { windows } }
+ }
+ {
+ \file_if_exist:nT { /dev/null }
+ { \str_const:Nn \c_sys_platform_str { unix } }
+ }
+ }
+\cs_if_exist:NF \c_sys_platform_str
+ { \str_const:Nn \c_sys_platform_str { unknown } }
+% \end{macrocode}
+% \end{variable}
+% \begin{macro}[pTF]{\sys_if_platform_unix:}
+% \begin{macro}[pTF]{\sys_if_platform_windows:}
+% We can now set up the tests.
+% \begin{macrocode}
+\clist_map_inline:nn { unix , windows }
+ {
+ \@@_const:nn { sys_if_platform_ #1 }
+ { \str_if_eq_p:Vn \c_sys_platform_str { #1 } }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:}
% Performs a check for whether shell escape is enabled. The first set
% of functions returns true if either of restricted or unrestricted
@@ -2895,7 +2954,7 @@
%
% \begin{variable}{\c_@@_shell_stream_int}
% This is not needed for \LuaTeX{}: shell escape there isn't done using
-% a \TeX{} interface
+% a \TeX{} interface.
% \begin{macrocode}
\sys_if_engine_luatex:F
{ \int_const:Nn \c_@@_shell_stream_int { 18 } }
@@ -2909,8 +2968,8 @@
{
\cs_new_protected:Npn \sys_shell_now:n #1
{
- \lua_now_x:n
- { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") }
+ \lua_now:e
+ { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
}
}
{
@@ -2928,8 +2987,8 @@
{
\cs_new_protected:Npn \sys_shell_shipout:n #1
{
- \lua_shipout_x:n
- { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") }
+ \lua_shipout_e:n
+ { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") }
}
}
{
@@ -3048,6 +3107,7 @@
% }
% \begin{macro}{\@@_set_from_file:NNnn}
% \begin{macro}{\@@_from_file_do:w}
+% \begin{macro}{\@@_set_from:nNNn}
% The approach here is similar to that for doing a rescan, and so the same
% internals can be reused. Thus the plan is to insert a pair of tokens of
% the same charcode but different catcodes after the file has been read.
@@ -3066,25 +3126,32 @@
\str_if_empty:NTF \l_@@_file_name_str
{ \__kernel_file_missing:n {#4} }
{
- \group_begin:
- \exp_args:No \tex_everyeof:D
- { \c_@@_rescan_marker_tl \exp_not:N }
- #3 \scan_stop:
- \exp_after:wN \@@_from_file_do:w
- \exp_after:wN \prg_do_nothing:
- \tex_input:D \l_@@_file_name_str \scan_stop:
- \exp_args:NNNo \group_end:
- #1 #2 \l_@@_internal_a_tl
+ \exp_args:NV \@@_set_from:nNNn
+ \l_@@_file_name_str
+ #1 #2 {#3}
}
}
\exp_args:Nno \use:nn
{ \cs_new_protected:Npn \@@_from_file_do:w #1 }
{ \c_@@_rescan_marker_tl }
{ \tl_set:No \l_@@_internal_a_tl {#1} }
+\cs_new_protected:Npn \@@_set_from:nNNn #1#2#3#4
+ {
+ \group_begin:
+ \exp_args:No \tex_everyeof:D
+ { \c_@@_rescan_marker_tl \exp_not:N }
+ #4 \scan_stop:
+ \exp_after:wN \@@_from_file_do:w
+ \exp_after:wN \prg_do_nothing:
+ \tex_input:D #1 \scan_stop:
+ \exp_args:NNNo \group_end:
+ #2 #3 \l_@@_internal_a_tl
+ }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}
% {
@@ -3128,6 +3195,42 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{macro}
+% {
+% \tl_set_from_shell:Nnn, \tl_set_from_shell:cnn,
+% \tl_gset_from_shell:Nnn, \tl_gset_from_shell:cnn
+% }
+% \begin{macro}{\@@_set_from_shell:NNnn}
+% Setting using a shell is at this level just a slightly specialised file
+% operation.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_set_from_shell:Nnn
+ { \@@_set_from_shell:NNnn \tl_set:Nn }
+\cs_generate_variant:Nn \tl_set_from_shell:Nnn { c }
+\cs_new_protected:Npn \tl_gset_from_shell:Nnn
+ { \@@_set_from_shell:NNnn \tl_gset:Nn }
+\cs_generate_variant:Nn \tl_gset_from_shell:Nnn { c }
+\cs_new_protected:Npn \@@_set_from_shell:NNnn #1#2#3#4
+ {
+ \sys_if_shell:TF
+ {
+ \tl_set:Nn \l_@@_internal_a_tl {#4}
+ \tl_if_in:NnTF \l_@@_internal_a_tl { " }
+ {
+ \__kernel_msg_error:nnx
+ { kernel } { quote-in-shell } {#4}
+ }
+ { \@@_set_from:nNNn { | " #4 " } #1 #2 {#3} }
+ }
+ { #1 #2 { } }
+ }
+\__kernel_msg_new:nnnn { kernel } { quote-in-shell }
+ { Quotes~in~shell~command~'#1'. }
+ { Shell~commands~cannot~contain~quotes~("). }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \subsubsection{Unicode case changing}
%
% The mechanisms needed for case changing are somewhat involved, particularly
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 85f9dcc0f5a..97ff75f1a17 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index b43b944ae69..fb396cf66e6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
index 0dea8a8f8ee..9ac01cb070d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index bdfc64fb87d..c8f6a5e5da7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -138,7 +138,7 @@
\__kernel_deprecation_error:Nnn \str_case:onn
{ \str_case:onF } { 2015-07-14 }
\__kernel_deprecation_error:Nnn \str_case_x:nnn
- { \str_case_x:nnF } { 2015-07-14 }
+ { \str_case_e:nnF } { 2015-07-14 }
\__kernel_deprecation_error:Nnn \tl_case:cnn
{ \tl_case:cnF } { 2015-07-14 }
\__kernel_deprecation_error:Nnn \tl_case:Nnn
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index d8346b81541..b1f0a63c060 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -77,7 +77,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
% \maketitle
% \tableofcontents
%
@@ -2191,7 +2191,7 @@ and all files in that bundle must be distributed together.
\tl_greplace_all:Nno \g_@@_base_name_tl
{ ~ } { \c_catcode_other_space_tl }
\seq_get:NN #1 \l_@@_tmpa_tl
- \str_if_eq_x:nnTF { \l_@@_tmpa_tl } { \scan_stop: }
+ \str_if_eq:VnTF \l_@@_tmpa_tl { \scan_stop: }
{
\seq_gclear:N \g_@@_variants_seq
\@@_names_typeset_auxii:x { \g_@@_base_name_tl }
@@ -2296,7 +2296,7 @@ and all files in that bundle must be distributed together.
#1
{
\l_@@_tmpa_tl
- \str_if_eq_x:nnF { \l_@@_tmpb_tl } { \scan_stop: }
+ \str_if_eq:VnF \l_@@_tmpb_tl { \scan_stop: }
{ : \l_@@_tmpb_tl }
\bool_if:NT \l_@@_macro_TF_bool { TF }
}
@@ -3983,7 +3983,7 @@ and all files in that bundle must be distributed together.
\tl_if_empty:nTF {#3}
{ { } { } { } }
{
- \str_if_eq_x:nnTF {#3} { TeX }
+ \str_if_eq:nnTF {#3} { TeX }
{
{ TeX~and~LaTeX2e }
{ \string\TeX{}~and~\string\LaTeXe{} }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index 632d72902ea..14eb116ba35 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 52987355f9f..d46578027d6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -481,23 +481,23 @@
%<*package>
\ProvidesExplFile
%<*dvipdfmx>
- {l3dvidpfmx.def}{2018-06-14}{}
+ {l3dvidpfmx.def}{2018-08-23}{}
{L3 Experimental driver: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3dvips.def}{2018-06-14}{}
+ {l3dvips.def}{2018-08-23}{}
{L3 Experimental driver: dvips}
%</dvips>
%<*dvisvgm>
- {l3dvisvgm.def}{2018-06-14}{}
+ {l3dvisvgm.def}{2018-08-23}{}
{L3 Experimental driver: dvisvgm}
%</dvisvgm>
%<*pdfmode>
- {l3pdfmode.def}{2018-06-14}{}
+ {l3pdfmode.def}{2018-08-23}{}
{L3 Experimental driver: PDF mode}
%</pdfmode>
%<*xdvipdfmx>
- {l3xdvidpfmx.def}{2018-06-14}{}
+ {l3xdvidpfmx.def}{2018-08-23}{}
{L3 Experimental driver: xdvipdfmx}
%</xdvipdfmx>
%</package>
@@ -514,14 +514,14 @@
% takes most of the same code.
% \end{itemize}
%
-% \begin{macro}{\@@_literal_x:n, \@@_literal:n, \@@_literal:x}
+% \begin{macro}{\@@_literal:e, \@@_literal:n, \@@_literal:x}
% The one shared function for all drivers is access to the basic
% \tn{special} primitive: it has slightly odd expansion behaviour
% so a wrapper is provided.
% \begin{macrocode}
-\cs_new_eq:NN \@@_literal_x:n \tex_special:D
+\cs_new_eq:NN \@@_literal:e \tex_special:D
\cs_new_protected:Npn \@@_literal:n #1
- { \@@_literal_x:n { \exp_not:n {#1} } }
+ { \@@_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \@@_literal:n { x }
% \end{macrocode}
% \end{macro}
@@ -695,7 +695,7 @@
% \end{variable}
%
% \begin{macro}{\driver_color_cmyk:nnnn, \@@_color_cmyk:nnnn}
-% \begin{macro}{\driver_color_gray:n, @@_color_gray:n}
+% \begin{macro}{\driver_color_gray:n, \@@_color_gray:n}
% \begin{macro}{\driver_color_rgb:nnn, \@@_color_rgb:nnn}
% \begin{macro}{\driver_color_spot:nn}
% \begin{macro}{\@@_color_select:n, \@@_color_select:x}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index 0352ce35604..4a4224b5936 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index 724bdfeb3d0..ecacb84a841 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
index b8dd58c15cc..bf5c5d7e3b5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -255,7 +255,7 @@
\tex_everyjob:D \exp_after:wN
{
\tex_the:D \tex_everyjob:D
- \lua_now_x:n { require("l3format.lua") }
+ \lua_now:n { require("l3format.lua") }
}
}
\use:x
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index 0f41b396bba..5caf1ad0be1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index 84debbf16d5..9e98ff8f43e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index 639e1261738..0e17a7ddb4d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -1238,17 +1238,17 @@
%
% \subsection{Fast string comparison}
%
-% \begin{macro}{\@@_str_if_eq_x:nn}
+% \begin{macro}{\@@_str_if_eq:nn}
% A private version of the low-level string comparison function. As
% the nature of the arguments is restricted and as speed is of the essence,
% this version does not seek to deal with |#| tokens.
% No \pkg{l3sys} or \pkg{l3luatex} just yet so we have to define in terms of
% primitives.
% \begin{macrocode}
-\cs_new:Npn \@@_str_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\cs_new:Npn \@@_str_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} }
\sys_if_engine_luatex:T
{
- \cs_set:Npn \@@_str_if_eq_x:nn #1#2
+ \cs_set:Npn \@@_str_if_eq:nn #1#2
{
\tex_directlua:D
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index c57242901d4..fed862dc2f2 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index 2e4af3817a8..c473ab1b110 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index b07da9d6fd5..dddaebe50e9 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -995,7 +995,7 @@
\cs_new:Npn \@@_pow_normal_o:ww
\s_@@ \@@_chk:w 1 #1#2#3; \s_@@ \@@_chk:w #4#5
{
- \if_int_compare:w \@@_str_if_eq_x:nn { #2 #3 }
+ \if_int_compare:w \@@_str_if_eq:nn { #2 #3 }
{ 1 {1000} {0000} {0000} {0000} } = 0 \exp_stop_f:
\if_int_compare:w #4 #1 = 32 \exp_stop_f:
\exp_after:wN \@@_case_return_ii_o:ww
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index c6bb0534d92..99bfe1d1ae7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index bd7bbf096c6..ffc7edf283b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index aca31d7b51b..c56d92ea761 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -1752,7 +1752,7 @@
\if_catcode:w \scan_stop: \exp_not:N #1
\if_meaning:w \scan_stop: #1
\if_int_compare:w
- \@@_str_if_eq_x:nn { \s_@@ } { \exp_not:N #1 }
+ \@@_str_if_eq:nn { \s_@@ } { \exp_not:N #1 }
= 0 \exp_stop_f:
0
\__kernel_msg_expandable_error:nnn
@@ -1766,7 +1766,7 @@
\fi:
\else:
\if_int_compare:w
- \@@_str_if_eq_x:nn { \int_value:w #1 } { \tex_the:D #1 }
+ \@@_str_if_eq:nn { \int_value:w #1 } { \tex_the:D #1 }
= 0 \exp_stop_f:
\int_value:w #1
\else:
@@ -2260,7 +2260,7 @@
{
\if_catcode:w \scan_stop: \exp_not:N #2
\if_int_compare:w
- \@@_str_if_eq_x:nn { \s_@@_mark } { \exp_not:N #2 }
+ \@@_str_if_eq:nn { \s_@@_mark } { \exp_not:N #2 }
= 0 \exp_stop_f:
\exp_after:wN \exp_after:wN
\exp_after:wN \@@_parse_infix_mark:NNN
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index 76472fd51bf..3526519ddc4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 7b49f5b1f88..9eed28891c5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index ecf482fd402..c01862ddec1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index df678477317..373d0b111e7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -38,7 +38,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index b4e2bfa1c00..33ac720b455 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index 345cdbe8df0..76b4668c239 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 80bf9afd7f7..29b930a6340 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 75f4bb46740..7739ddd76d3 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index f1e28968315..ef418edc446 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -136,6 +136,14 @@
% the \meta{follow-on}.
% \end{function}
%
+% \begin{function}{\__kernel_deprecation_code:nn}
+% \begin{syntax}
+% \cs{__kernel_deprecation_code:nn} \Arg{error code} \Arg{working code}
+% \end{syntax}
+% Stores both an \meta{error} and \meta{working} definition for given material
+% such that they can be exchanged by \cs{debug_on:} and \cs{debug_off:}.
+% \end{function}
+%
% \begin{function}{\__kernel_if_debug:TF}
% \begin{syntax}
% \cs{__kernel_if_debug:TF} \Arg{true code} \Arg{false code}
@@ -394,6 +402,14 @@
% because that would interfere with the action of the conditional.
% \end{function}
%
+% \begin{function}{\__kernel_patch_deprecation:nnNNpn}
+% \begin{syntax}
+% \cs{__kernel_patch_deprecation:nnNNpn} \Arg{before} \Arg{after}
+% \meta{definition} \meta{function}\meta{parameters} \Arg{type} \Arg{code}
+% \end{syntax}
+% Similar to \cs{__kernel_patch:nnNNpn} for deprecated functions.
+% \end{function}
+%
% \begin{function}
% {\__kernel_patch_args:nNNpn, \__kernel_patch_conditional_args:nNNpnn}
% \begin{syntax}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index f711bf5cbdb..da03797c65d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -1459,11 +1459,8 @@
\cs_if_exist:cTF
{ \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
{
- \str_if_eq_x:nnTF
- {
- \exp_not:v
- { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
- }
+ \str_if_eq:vnTF
+ { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl }
{ choice }
{
\__kernel_msg_error:nnxx { kernel } { nested-choice-key }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 87a535ce163..ca9935e58cc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -56,7 +56,7 @@
%
% \section{Breaking out to \Lua{}}
%
-% \begin{function}[EXP, added = 2015-06-29]{\lua_now_x:n, \lua_now:n}
+% \begin{function}[EXP, added = 2018-06-18]{\lua_now:n, \lua_now:e}
% \begin{syntax}
% \cs{lua_now:n} \Arg{token list}
% \end{syntax}
@@ -67,18 +67,14 @@
% Each \cs{lua_now:n} block is treated by \Lua{} as a separate chunk.
% The \Lua{} interpreter executes the \meta{\Lua{} input} immediately,
% and in an expandable manner.
-%
-% In the case of the \cs{lua_now_x:n} version the input is fully expanded
-% by \TeX{} in an \texttt{x}-type manner \emph{but} the function remains
-% fully expandable.
% \begin{texnote}
-% \cs{lua_now_x:n} is a macro wrapper around \tn{directlua}: when
+% \cs{lua_now:e} is a macro wrapper around \tn{directlua}: when
% \LuaTeX{} is in use two expansions are required to yield the
% result of the \Lua{} code.
% \end{texnote}
% \end{function}
%
-% \begin{function}[added = 2015-06-30]{\lua_shipout_x:n, \lua_shipout:n}
+% \begin{function}[added = 2018-06-18]{\lua_shipout_e:n, \lua_shipout:n}
% \begin{syntax}
% \cs{lua_shipout:n} \Arg{token list}
% \end{syntax}
@@ -92,8 +88,8 @@
% page-building routine: no \TeX{} expansion of the \meta{\Lua{} input}
% will occur at this stage.
%
-% In the case of the \cs{lua_shipout_x:n} version the input is fully
-% expanded by \TeX{} in an \texttt{x}-type manner during the shipout
+% In the case of the \cs{lua_shipout_e:n} version the input is fully
+% expanded by \TeX{} in an \texttt{e}-type manner during the shipout
% operation.
% \begin{texnote}
% At a \TeX{} level, the \meta{\Lua{} input} is stored as a
@@ -101,7 +97,7 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[EXP, added = 2015-06-29]{\lua_escape_x:n, \lua_escape:n}
+% \begin{function}[EXP, added = 2015-06-29]{\lua_escape:n, \lua_escape:e}
% \begin{syntax}
% \cs{lua_escape:n} \Arg{token list}
% \end{syntax}
@@ -110,12 +106,8 @@
% and carriage returns are escaped. This is done by prepending an extra
% token consisting of a backslash with category code~$12$, and for the line
% endings, converting them to |\n| and |\r|, respectively.
-%
-% In the case of the \cs{lua_escape_x:n} version the input is fully expanded
-% by \TeX{} in an \texttt{x}-type manner \emph{but} the function remains
-% fully expandable.
% \begin{texnote}
-% \cs{lua_escape_x:n} is a macro wrapper around \tn{luaescapestring}:
+% \cs{lua_escape:e} is a macro wrapper around \tn{luaescapestring}:
% when \LuaTeX{} is in use two expansions are required to yield the
% result of the \Lua{} code.
% \end{texnote}
@@ -197,46 +189,45 @@
% \end{macrocode}
%
% \begin{macrocode}
-%<@@=luatex>
+%<@@=lua>
% \end{macrocode}
%
-% \begin{macro}[EXP]{\@@_escape_x:n, \@@_now_x:n, \@@_shipout_x:n}
+% \begin{macro}[EXP]{\@@_escape:n, \@@_now:n, \@@_shipout:n}
% Copies of primitives.
% \begin{macrocode}
-\cs_new_eq:NN \@@_escape_x:n \tex_luaescapestring:D
-\cs_new_eq:NN \@@_now_x:n \tex_directlua:D
-\cs_new_eq:NN \@@_shipout_x:n \tex_latelua:D
+\cs_new_eq:NN \@@_escape:n \tex_luaescapestring:D
+\cs_new_eq:NN \@@_now:n \tex_directlua:D
+\cs_new_eq:NN \@@_shipout:n \tex_latelua:D
% \end{macrocode}
% \end{macro}
%
% These functions are set up in \pkg{l3str} for bootstrapping: we want to
% replace them with a \enquote{proper} version at this stage, so clean up.
% \begin{macrocode}
-\cs_undefine:N \lua_escape_x:n
-\cs_undefine:N \lua_now_x:n
+\cs_undefine:N \lua_escape:e
+\cs_undefine:N \lua_now:e
% \end{macrocode}
%
-% \begin{macro}[EXP]{\lua_now_x:n, \lua_now:n}
-% \begin{macro}{\lua_shipout_x:n, \lua_shipout:n}
-% \begin{macro}[EXP]{\lua_escape_x:n, \lua_escape:n}
+% \begin{macro}[EXP]{\lua_now:n, \lua_now:e}
+% \begin{macro}{\lua_shipout_e:n, \lua_shipout:n}
+% \begin{macro}[EXP]{\lua_escape:n, \lua_escape:e}
% Wrappers around the primitives. As with engines other than \LuaTeX{}
% these have to be macros, we give them the same status in all cases.
% When \LuaTeX{} is not in use, simply give an error message/
% \begin{macrocode}
-\cs_new:Npn \lua_now_x:n #1 { \@@_now_x:n {#1} }
-\cs_new:Npn \lua_now:n #1 { \lua_now_x:n { \exp_not:n {#1} } }
-\cs_new_protected:Npn \lua_shipout_x:n #1 { \@@_shiphout_x:n {#1} }
+\cs_new:Npn \lua_now:e #1 { \@@_now:n {#1} }
+\cs_new:Npn \lua_now:n #1 { \lua_now:e { \exp_not:n {#1} } }
+\cs_new_protected:Npn \lua_shipout_e:n #1 { \@@_shiphout:n {#1} }
\cs_new_protected:Npn \lua_shipout:n #1
- { \lua_shipout_x:n { \exp_not:n {#1} } }
-\cs_new:Npn \lua_escape_x:n #1 { \@@_escape_x:n {#1} }
-\cs_new:Npn \lua_escape:n #1 { \lua_escape_x:n { \exp_not:n {#1} } }
+ { \lua_shipout_e:n { \exp_not:n {#1} } }
+\cs_new:Npn \lua_escape:e #1 { \@@_escape:n {#1} }
+\cs_new:Npn \lua_escape:n #1 { \lua_escape:e { \exp_not:n {#1} } }
\sys_if_engine_luatex:F
{
\clist_map_inline:nn
{
- \use_x:n ,
- \lua_escape_x:n , \lua_escape:n ,
- \lua_now_x:n , \lua_now:n
+ \lua_escape:n , \lua_escape:e ,
+ \lua_now:n , \lua_now:e
}
{
\cs_set:Npn #1 ##1
@@ -246,7 +237,7 @@
}
}
\clist_map_inline:nn
- { \lua_shipout_x:n , \lua_shipout:n }
+ { \lua_shipout_e:n , \lua_shipout:n }
{
\cs_set_protected:Npn #1 ##1
{
@@ -271,6 +262,22 @@
}
% \end{macrocode}
%
+% \subsection{Deprecated functions}
+%
+% \begin{macro}[EXP, deprecated = 2019-12-31]{\lua_now_x:n, \lua_escape_x:n}
+% \begin{macro}[deprecated = 2019-12-31]{\lua_shipout_x:n}
+% For removal after 2019-12-31.
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_now:e }
+\cs_new:Npn \lua_now_x:n #1 { \@@_now:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_escape:e }
+\cs_new:Npn \lua_escape_x:n #1 { \@@_escape:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_shipout_e:n }
+\cs_new_protected:Npn \lua_shipout_x:n #1 { \@@_shipout:n {#1} }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</tex>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 1bfa2be1700..bd180cd0af9 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -1429,7 +1429,7 @@
\seq_put_right:Nn \l_@@_class_loop_seq {#1}
\prop_get:cnNT { l_@@_redirect_ #1 _prop } {#3} \l_@@_class_tl
{
- \str_if_eq_x:nnF { \l_@@_class_tl } {#1}
+ \str_if_eq:VnF \l_@@_class_tl {#1}
{
\tl_if_eq:NNTF \l_@@_class_tl \l_@@_current_class_tl
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 39ecba1694f..52374a5935e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
index 43815ad5e19..eb1be68f173 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx
@@ -42,7 +42,7 @@
% }
%
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index ed55b5052be..e936df28377 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index f31874d7fe4..191c9e70157 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -861,7 +861,7 @@
}
\cs_new:Npn \@@_item_Nn:nwwn #1#2 \@@_pair:wn #3 \s_@@ #4
{
- \str_if_eq_x:nnTF {#1} {#3}
+ \str_if_eq:eeTF {#1} {#3}
{ \prg_break:n { \exp_not:n {#4} } }
{ \@@_item_Nn:nwwn {#1} }
}
@@ -1034,10 +1034,10 @@
% but \cs{@@_split:NnTF} is non-expandable.
%
% Instead, the key is compared to each key in turn using
-% \cs{str_if_eq_x:nn}, which is expandable. To terminate the mapping,
+% \cs{str_if_eq:ee}, which is expandable. To terminate the mapping,
% we append to the property list the key that is searched for. This
% second \cs{tl_to_str:n} is not expanded at the start, but only when
-% included in the \cs{str_if_eq_x:nn}. It cannot make the breaking
+% included in the \cs{str_if_eq:ee}. It cannot make the breaking
% mechanism choke, because the arbitrary token list material is
% enclosed in braces. The second argument of \cs{@@_if_in:nwwn} is
% most often empty. When the \meta{key} is found in the list,
@@ -1058,7 +1058,7 @@
}
\cs_new:Npn \@@_if_in:nwwn #1#2 \@@_pair:wn #3 \s_@@ #4
{
- \str_if_eq_x:nnTF {#1} {#3}
+ \str_if_eq:eeTF {#1} {#3}
{ \@@_if_in:N }
{ \@@_if_in:nwwn {#1} }
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index 727c0e9974c..e649702601a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index 02ffddf2116..d4eb2c4066c 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -1612,7 +1612,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_escape_x_test:N #1
{
- \str_if_eq_x:nnTF {#1} { break } { ; }
+ \str_if_eq:nnTF {#1} { break } { ; }
{
\if_charcode:w \c_space_token #1
\exp_after:wN \@@_escape_x_test:N
@@ -1640,7 +1640,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_escape_x:N #1
{
- \str_if_eq_x:nnTF {#1} { break } { ; }
+ \str_if_eq:nnTF {#1} { break } { ; }
{
\@@_hexadecimal_use:NTF #1
{ ; \@@_escape_loop:N }
@@ -1657,7 +1657,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_escape_x_loop:N #1
{
- \str_if_eq_x:nnTF {#1} { break }
+ \str_if_eq:nnTF {#1} { break }
{ ; \@@_escape_x_loop_error:n { } {#1} }
{
\@@_hexadecimal_use:NTF #1
@@ -2421,7 +2421,7 @@
}
\cs_new_protected:Npn \@@_compile_quantifier_braced_auxi:w #1#2
{
- \str_case_x:nnF { #1 #2 }
+ \str_case_e:nnF { #1 #2 }
{
{ \@@_compile_special:N \c_right_brace_str }
{
@@ -6468,7 +6468,7 @@
{ Missing~right~brace~inserted~for~'\iow_char:N\\u'~escape. }
{
LaTeX~
- \str_if_eq_x:nnTF { } {#2}
+ \str_if_eq:eeTF { } {#2}
{ reached~the~end~of~the~string~ }
{ encountered~an~escaped~alphanumeric~character '\iow_char:N\\#2'~ }
when~parsing~the~argument~of~an~
@@ -6628,7 +6628,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_msg_repeated:nnN #1#2#3
{
- \str_if_eq_x:nnF { #1 #2 } { 1 0 }
+ \str_if_eq:eeF { #1 #2 } { 1 0 }
{
, ~ repeated ~
\int_case:nnF {#2}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 1c9eac77cba..5e590bd0c2d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 8069b0dc57b..182427cb48a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -1942,7 +1942,7 @@
% \begin{macrocode}
\prg_new_conditional:Npnn \skip_if_eq:nn #1#2 { p , T , F , TF }
{
- \str_if_eq_x:nnTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } }
+ \str_if_eq:eeTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } }
{ \prg_return_true: }
{ \prg_return_false: }
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index 5cce081b462..b1f2b7eabe5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index 56e01c67d4e..af918d1d164 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -104,8 +104,11 @@
% initially empty.
% \end{function}
%
-% \begin{function}[added = 2015-09-18]
-% {\str_const:Nn, \str_const:Nx, \str_const:cn, \str_const:cx}
+% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
+% {
+% \str_const:Nn, \str_const:NV, \str_const:Nx,
+% \str_const:cn, \str_const:cV, \str_const:cx
+% }
% \begin{syntax}
% \cs{str_const:Nn} \meta{str~var} \Arg{token list}
% \end{syntax}
@@ -161,10 +164,12 @@
%
% \section{Adding data to string variables}
%
-% \begin{function}[added = 2015-09-18]
+% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
% {
-% \str_set:Nn, \str_set:Nx, \str_set:cn, \str_set:cx,
-% \str_gset:Nn, \str_gset:Nx, \str_gset:cn, \str_gset:cx
+% \str_set:Nn, \str_set:NV, \str_set:Nx,
+% \str_set:cn, \str_set:cV, \str_set:cx,
+% \str_gset:Nn, \str_gset:NV, \str_gset:Nx,
+% \str_gset:cn, \str_gset:cV, \str_gset:cx
% }
% \begin{syntax}
% \cs{str_set:Nn} \meta{str var} \Arg{token list}
@@ -173,12 +178,12 @@
% result in \meta{str var}.
% \end{function}
%
-% \begin{function}[added = 2015-09-18]
+% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
% {
-% \str_put_left:Nn, \str_put_left:Nx,
-% \str_put_left:cn, \str_put_left:cx,
-% \str_gput_left:Nn, \str_gput_left:Nx,
-% \str_gput_left:cn, \str_gput_left:cx
+% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx,
+% \str_put_left:cn, \str_put_left:cV, \str_put_left:cx,
+% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx,
+% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx
% }
% \begin{syntax}
% \cs{str_put_left:Nn} \meta{str var} \Arg{token list}
@@ -188,12 +193,12 @@
% var} are not automatically converted to a string.
% \end{function}
%
-% \begin{function}[added = 2015-09-18]
+% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
% {
-% \str_put_right:Nn, \str_put_right:Nx,
-% \str_put_right:cn, \str_put_right:cx,
-% \str_gput_right:Nn, \str_gput_right:Nx,
-% \str_gput_right:cn, \str_gput_right:cx
+% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx,
+% \str_put_right:cn, \str_put_right:cV, \str_put_right:cx,
+% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx,
+% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx
% }
% \begin{syntax}
% \cs{str_put_right:Nn} \meta{str var} \Arg{token list}
@@ -302,10 +307,11 @@
% in the same order.
% \end{function}
%
-% \begin{function}[EXP,pTF]
+% \begin{function}[EXP,pTF, updated = 2018-06-18]
% {
% \str_if_eq:nn, \str_if_eq:Vn, \str_if_eq:on, \str_if_eq:no,
-% \str_if_eq:nV, \str_if_eq:VV
+% \str_if_eq:nV, \str_if_eq:VV, \str_if_eq:vn, \str_if_eq:nv,
+% \str_if_eq:ee
% }
% \begin{syntax}
% \cs{str_if_eq_p:nn} \Arg{tl_1} \Arg{tl_2}
@@ -321,21 +327,6 @@
% is logically \texttt{true}.
% \end{function}
%
-% \begin{function}[EXP,pTF, added = 2012-06-05]{\str_if_eq_x:nn}
-% \begin{syntax}
-% \cs{str_if_eq_x_p:nn} \Arg{tl_1} \Arg{tl_2}
-% \cs{str_if_eq_x:nnTF} \Arg{tl_1} \Arg{tl_2} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Fully expands the two \meta{token lists} and converts them to \meta{strings}, then
-% compares these on a character by character basis:
-% it is \texttt{true} if the two \meta{strings} contain the same
-% characters in the same order. Thus for example
-% \begin{verbatim}
-% \str_if_eq_x_p:nn { abc } { \tl_to_str:n { abc } }
-% \end{verbatim}
-% is logically \texttt{true}.
-% \end{function}
-%
% \begin{function}[TF, added = 2017-10-08]{\str_if_in:Nn, \str_if_in:cn}
% \begin{syntax}
% \cs{str_if_in:NnTF} \meta{str~var} \Arg{token list} \Arg{true code} \Arg{false code}
@@ -378,9 +369,9 @@
% available.
% \end{function}
%
-% \begin{function}[added = 2013-07-24, EXP, noTF]{\str_case_x:nn}
+% \begin{function}[added = 2018-06-19, EXP, noTF]{\str_case_e:nn}
% \begin{syntax}
-% \cs{str_case_x:nnTF} \Arg{test string} \\
+% \cs{str_case_e:nnTF} \Arg{test string} \\
% ~~|{| \\
% ~~~~\Arg{string case_1} \Arg{code case_1} \\
% ~~~~\Arg{string case_2} \Arg{code case_2} \\
@@ -399,7 +390,7 @@
% cases are matched, the \meta{true code} is also inserted into the
% input stream (after the code for the appropriate case), while if none
% match then the \meta{false code} is inserted. The function
-% \cs{str_case_x:nn}, which does nothing if there is no match, is also
+% \cs{str_case_e:nn}, which does nothing if there is no match, is also
% available.
% The \meta{test string} is expanded in each comparison, and must
% always yield the same result: for example, random numbers must
@@ -868,20 +859,20 @@
%
% \begin{macro}
% {
-% \str_set:Nn, \str_set:Nx,
-% \str_set:cn, \str_set:cx,
-% \str_gset:Nn, \str_gset:Nx,
-% \str_gset:cn, \str_gset:cx,
-% \str_const:Nn, \str_const:Nx,
-% \str_const:cn, \str_const:cx,
-% \str_put_left:Nn, \str_put_left:Nx,
-% \str_put_left:cn, \str_put_left:cx,
-% \str_gput_left:Nn, \str_gput_left:Nx,
-% \str_gput_left:cn, \str_gput_left:cx,
-% \str_put_right:Nn, \str_put_right:Nx,
-% \str_put_right:cn, \str_put_right:cx,
-% \str_gput_right:Nn, \str_gput_right:Nx,
-% \str_gput_right:cn, \str_gput_right:cx,
+% \str_set:Nn, \str_set:NV, \str_set:Nx,
+% \str_set:cn, \str_set:cV, \str_set:cx,
+% \str_gset:Nn, \str_gset:NV, \str_gset:Nx,
+% \str_gset:cn, \str_gset:cV, \str_gset:cx,
+% \str_const:Nn, \str_const:NV, \str_const:Nx,
+% \str_const:cn, \str_const:cV, \str_const:cx,
+% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx,
+% \str_put_left:cn, \str_put_left:cV, \str_put_left:cx,
+% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx,
+% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx,
+% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx,
+% \str_put_right:cn, \str_put_right:cV, \str_put_right:cx,
+% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx,
+% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx
% }
% Simply convert the token list inputs to \meta{strings}.
% \begin{macrocode}
@@ -895,7 +886,7 @@
\exp_not:c { tl_ #1 :Nx } ##1
{ \exp_not:N \tl_to_str:n {##2} }
}
- \cs_generate_variant:cn { str_ #1 :Nn } { Nx , cn , cx }
+ \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx }
\@@_tmp:n
}
}
@@ -1029,8 +1020,8 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_if_eq_x:nn}
-% \begin{macro}[EXP]{\@@_escape_x:n}
+% \begin{macro}[EXP]{\@@_if_eq:nn}
+% \begin{macro}[EXP]{\@@_escape:n}
% String comparisons rely on the primitive \cs[index=pdfstrcmp]{(pdf)strcmp} if available:
% \LuaTeX{} does not have it, so emulation is required. As the net result
% is that we do not \emph{always} use the primitive, the correct approach
@@ -1039,30 +1030,30 @@
% the necessary Lua code is loaded in \pkg{l3boostrap}.
% The need to detokenize and force
% expansion of input arises from the case where a |#| token is used in the
-% input, \emph{e.g.}~|\__str_if_eq_x:nn {#} { \tl_to_str:n {#} }|, which
+% input, \emph{e.g.}~|\__str_if_eq:nn {#} { \tl_to_str:n {#} }|, which
% otherwise would fail as \cs{tex_luaescapestring:D} does not double
% such tokens.
% \begin{macrocode}
-\cs_new:Npn \@@_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\cs_new:Npn \@@_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} }
\cs_if_exist:NT \tex_luatexversion:D
{
- \cs_set_eq:NN \lua_escape_x:n \tex_luaescapestring:D
- \cs_set_eq:NN \lua_now_x:n \tex_directlua:D
- \cs_set:Npn \@@_if_eq_x:nn #1#2
+ \cs_set_eq:NN \lua_escape:e \tex_luaescapestring:D
+ \cs_set_eq:NN \lua_now:e \tex_directlua:D
+ \cs_set:Npn \@@_if_eq:nn #1#2
{
- \lua_now_x:n
+ \lua_now:e
{
l3kernel.strcmp
(
- " \@@_escape_x:n {#1} " ,
- " \@@_escape_x:n {#2} "
+ " \@@_escape:n {#1} " ,
+ " \@@_escape:n {#2} "
)
}
}
- \cs_new:Npn \@@_escape_x:n #1
+ \cs_new:Npn \@@_escape:n #1
{
- \lua_escape_x:n
- { \__kernel_tl_to_str:w \use_x:n { {#1} } }
+ \lua_escape:e
+ { \__kernel_tl_to_str:w \use:e { {#1} } }
}
}
% \end{macrocode}
@@ -1073,7 +1064,7 @@
% {
% \str_if_eq:nn, \str_if_eq:Vn, \str_if_eq:on, \str_if_eq:nV,
% \str_if_eq:no, \str_if_eq:VV,
-% \str_if_eq_x:nn
+% \str_if_eq:ee
% }
% Modern engines provide a direct way of comparing two token lists,
% but returning a number. This set of conditionals therefore make life
@@ -1083,15 +1074,15 @@
\prg_new_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF }
{
\if_int_compare:w
- \@@_if_eq_x:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
+ \@@_if_eq:nn { \exp_not:n {#1} } { \exp_not:n {#2} }
= 0 \exp_stop_f:
\prg_return_true: \else: \prg_return_false: \fi:
}
\prg_generate_conditional_variant:Nnn \str_if_eq:nn
- { V , o , nV , no , VV } { p , T , F , TF }
-\prg_new_conditional:Npnn \str_if_eq_x:nn #1#2 { p , T , F , TF }
+ { V , v , o , nV , no , VV , nv } { p , T , F , TF }
+\prg_new_conditional:Npnn \str_if_eq:ee #1#2 { p , T , F , TF }
{
- \if_int_compare:w \@@_if_eq_x:nn {#1} {#2} = 0 \exp_stop_f:
+ \if_int_compare:w \@@_if_eq:nn {#1} {#2} = 0 \exp_stop_f:
\prg_return_true: \else: \prg_return_false: \fi:
}
% \end{macrocode}
@@ -1105,7 +1096,7 @@
\prg_new_conditional:Npnn \str_if_eq:NN #1#2 { p , TF , T , F }
{
\if_int_compare:w
- \@@_if_eq_x:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 }
+ \@@_if_eq:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 }
= 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi:
}
\prg_generate_conditional_variant:Nnn \str_if_eq:NN
@@ -1137,10 +1128,10 @@
% \end{macro}
%
% \begin{macro}[EXP, noTF]
-% {\str_case:nn, \str_case:on, \str_case:nV, \str_case:nv, \str_case_x:nn}
-% \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_x:nnTF}
+% {\str_case:nn, \str_case:on, \str_case:nV, \str_case:nv, \str_case_e:nn}
+% \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_e:nnTF}
% \begin{macro}[EXP]
-% {\@@_case:nw, \@@_case_x:nw, \@@_case_end:nw}
+% {\@@_case:nw, \@@_case_e:nw, \@@_case_end:nw}
% Much the same as \cs[index=tl_case:nn]{tl_case:nn(TF)} here:
% just a change in the internal comparison.
% \begin{macrocode}
@@ -1175,33 +1166,33 @@
{ \@@_case_end:nw {#3} }
{ \@@_case:nw {#1} }
}
-\cs_new:Npn \str_case_x:nn #1#2
+\cs_new:Npn \str_case_e:nn #1#2
{
\exp:w
- \@@_case_x:nnTF {#1} {#2} { } { }
+ \@@_case_e:nnTF {#1} {#2} { } { }
}
-\cs_new:Npn \str_case_x:nnT #1#2#3
+\cs_new:Npn \str_case_e:nnT #1#2#3
{
\exp:w
- \@@_case_x:nnTF {#1} {#2} {#3} { }
+ \@@_case_e:nnTF {#1} {#2} {#3} { }
}
-\cs_new:Npn \str_case_x:nnF #1#2
+\cs_new:Npn \str_case_e:nnF #1#2
{
\exp:w
- \@@_case_x:nnTF {#1} {#2} { }
+ \@@_case_e:nnTF {#1} {#2} { }
}
-\cs_new:Npn \str_case_x:nnTF #1#2
+\cs_new:Npn \str_case_e:nnTF #1#2
{
\exp:w
- \@@_case_x:nnTF {#1} {#2}
+ \@@_case_e:nnTF {#1} {#2}
}
-\cs_new:Npn \@@_case_x:nnTF #1#2#3#4
- { \@@_case_x:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop }
-\cs_new:Npn \@@_case_x:nw #1#2#3
+\cs_new:Npn \@@_case_e:nnTF #1#2#3#4
+ { \@@_case_e:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop }
+\cs_new:Npn \@@_case_e:nw #1#2#3
{
- \str_if_eq_x:nnTF {#1} {#2}
+ \str_if_eq:eeTF {#1} {#2}
{ \@@_case_end:nw {#3} }
- { \@@_case_x:nw {#1} }
+ { \@@_case_e:nw {#1} }
}
\cs_new:Npn \@@_case_end:nw #1#2#3 \q_mark #4#5 \q_stop
{ \exp_end: #1 #4 }
@@ -1921,6 +1912,32 @@
% \end{macrocode}
% \end{macro}
%
+% \subsection{Deprecated functions}
+%
+% \begin{macro}[EXP, deprecated = 2019-12-31, noTF]{\str_case_x:nn}
+% \begin{macro}[EXP, deprecated = 2019-12-31, pTF]{\str_if_eq_x:nn}
+% For removal after 2019-12-31.
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nn }
+\cs_new:Npn \str_case_x:nn { \str_case_e:nn }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnT }
+\cs_new:Npn \str_case_x:nnT { \str_case_e:nnT }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnF }
+\cs_new:Npn \str_case_x:nnF { \str_case_e:nnF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnTF }
+\cs_new:Npn \str_case_x:nnTF { \str_case_e:nnTF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq_p:ee }
+\cs_new:Npn \str_if_eq_x_p:nn { \str_if_eq_p:ee }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeT }
+\cs_new:Npn \str_if_eq_x:nnT { \str_if_eq:eeT }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeF }
+\cs_new:Npn \str_if_eq_x:nnF { \str_if_eq:eeF }
+\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeTF }
+\cs_new:Npn \str_if_eq_x:nnTF { \str_if_eq:eeTF }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</initex|package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index 35e352edb99..a1d10f187c2 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -237,7 +237,7 @@
\tl_map_inline:nn { { luatex } { pdftex } { ptex } { uptex } { xetex } }
{
\@@_const:nn { sys_if_engine_ #1 }
- { \str_if_eq_x_p:nn \c_sys_engine_str {#1} }
+ { \str_if_eq_p:Vn \c_sys_engine_str {#1} }
}
% \end{macrocode}
% \end{variable}
@@ -261,9 +261,9 @@
{ dvi }
}
\@@_const:nn { sys_if_output_dvi }
- { \str_if_eq_x_p:nn \c_sys_output_str { dvi } }
+ { \str_if_eq_p:Vn \c_sys_output_str { dvi } }
\@@_const:nn { sys_if_output_pdf }
- { \str_if_eq_x_p:nn \c_sys_output_str { pdf } }
+ { \str_if_eq_p:Vn \c_sys_output_str { pdf } }
% \end{macrocode}
% \end{variable}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index c365620f54b..2b8048e6dc2 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 863cc92a668..fcd5084c318 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index 7fe05c7f502..3188f7709d9 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -1436,7 +1436,7 @@
{
#3
\exp_after:wN \exp_after:wN \exp_after:wN \exp_end:
- \lua_now_x:n { l3kernel.charcat(#1, #2) }
+ \lua_now:e { l3kernel.charcat(#1, #2) }
}
}
{
@@ -1855,7 +1855,7 @@
##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \exp_not:N \q_stop
}
{
- \str_if_eq_x:nnTF { #2 } { cro }
+ \str_if_eq:nnTF { #2 } { cro }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -1957,7 +1957,7 @@
% function cannot be defined on the fly because tests must remain
% expandable): instead the first argument of the auxiliary (plus the
% delimiter to avoid complications with trailing spaces) is compared
-% using \cs{str_if_eq_x:nnTF} to the result of applying
+% using \cs{str_if_eq:eeTF} to the result of applying
% \cs{token_to_str:N} to a control sequence. Second, the
% \tn{meaning} of primitives such as \tn{dimen} or \tn{dimendef}
% starts in the same way as registers such as
@@ -2005,7 +2005,7 @@
\exp_not:N \prg_return_false:
\exp_not:N \else:
}
- \exp_not:N \str_if_eq_x:nnTF
+ \exp_not:N \str_if_eq:eeTF
{
\exp_not:N \exp_after:wN
\exp_not:c { @@_delimit_by_ #2 :w }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index e45aaec2a1f..e154f1850ee 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
@@ -41,7 +41,7 @@
% }^^A
% }
%
-% \date{Released 2018-06-14}
+% \date{Released 2018-08-23}
%
% \maketitle
%
@@ -163,7 +163,7 @@
{
\tl_if_blank:nF {#1}
{
- \str_if_eq_x:nnF { \tl_head:n {#1} } { \c_hash_str }
+ \str_if_eq:eeF { \tl_head:n {#1} } { \c_hash_str }
{ \@@_data_auxi:w #1 \q_stop }
}
}
@@ -205,9 +205,9 @@
{
\tl_if_blank:nF {#1}
{
- \str_if_eq_x:nnTF { \tl_head:n {#1} } { \c_hash_str }
+ \str_if_eq:eeTF { \tl_head:n {#1} } { \c_hash_str }
{
- \str_if_eq_x:nnT
+ \str_if_eq:eeT
{#1}
{ \c_hash_str \c_space_tl Conditional~Mappings }
{ \ior_map_break: }