summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-10-19 20:37:37 +0000
committerKarl Berry <karl@freefriends.org>2016-10-19 20:37:37 +0000
commit97a401ad817da2dafd1069df9d87a28ed39df69b (patch)
treef1555539115424980d80f573f5d17ded80989dd8 /Master/texmf-dist/source
parent8bd51564ec4daf2be1c0e6767abbd5215cb8b21a (diff)
l3experimental (18oct16)
git-svn-id: svn://tug.org/texlive/trunk@42305 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx34
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx228
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx102
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx20
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx20
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx176
8 files changed, 299 insertions, 291 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx
index c6a0962d867..ed4eb58736d 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/05/14]
-%<package>\@ifpackagelater{expl3}{2016/05/14}
+\RequirePackage{expl3}[2016/10/19]
+%<package>\@ifpackagelater{expl3}{2016/10/19}
%<package> {}
%<package> {%
%<package> \PackageError{l3sort}{Support package l3kernel too old}
@@ -50,7 +50,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3sort.dtx 6492 2016-05-14 20:27:55Z joseph $
+\GetIdInfo$Id: l3sort.dtx 6730 2016-10-19 11:19:38Z joseph $
{L3 Experimental sorting functions}
%</driver|package>
%<*driver>
@@ -147,6 +147,8 @@
% \meta{clist var}.
% \end{function}
%
+% {\renewcommand{\thefootnote}{}\footnotetext{\CodedocExplainEXP}}
+%
% \begin{function}[EXP]{\tl_sort:nN}
% \begin{syntax}
% \cs{tl_sort:nN} \Arg{token list} \meta{conditional}
@@ -302,13 +304,13 @@
% arguments are the variable to sort, and the sorting method
% as inline code.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \seq_sort:Nn
+\cs_new_protected:Npn \seq_sort:Nn
{
\@@_main:NNNnNn \tl_set:Nn
\seq_map_inline:Nn \seq_map_break:
{ \s__seq \@@_toks:NNw \exp_not:N \__seq_item:n 0 ; }
}
-\cs_new_protected_nopar:Npn \seq_gsort:Nn
+\cs_new_protected:Npn \seq_gsort:Nn
{
\@@_main:NNNnNn \tl_gset:Nn
\seq_map_inline:Nn \seq_map_break:
@@ -324,13 +326,13 @@
% the token list is very similar to sequences, removing
% \cs{seq_item:Nn}.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \tl_sort:Nn
+\cs_new_protected:Npn \tl_sort:Nn
{
\@@_main:NNNnNn \tl_set:Nn
\tl_map_inline:Nn \tl_map_break:
{ \@@_toks:NNw \prg_do_nothing: \prg_do_nothing: 0 ; }
}
-\cs_new_protected_nopar:Npn \tl_gsort:Nn
+\cs_new_protected:Npn \tl_gsort:Nn
{
\@@_main:NNNnNn \tl_gset:Nn
\tl_map_inline:Nn \tl_map_break:
@@ -353,9 +355,9 @@
% argument to that function; hence we need to expand this argument
% once to unpack the register.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \clist_sort:Nn
+\cs_new_protected:Npn \clist_sort:Nn
{ \@@_clist:NNn \tl_set:Nn }
-\cs_new_protected_nopar:Npn \clist_gsort:Nn
+\cs_new_protected:Npn \clist_gsort:Nn
{ \@@_clist:NNn \tl_gset:Nn }
\cs_new_protected:Npn \@@_clist:NNn #1#2#3
{
@@ -409,7 +411,7 @@
% empty list or a list with one item). Otherwise, go through pairs
% of blocks starting from $0$, then double the block size, and repeat.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_level:
+\cs_new_protected:Npn \@@_level:
{
\if_int_compare:w \l_@@_block_int < \l_@@_length_int
\l_@@_end_int \c_zero
@@ -439,7 +441,7 @@
% those ranges. Of course, once that pair of blocks is merged,
% move on to the next pair.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_merge_blocks:
+\cs_new_protected:Npn \@@_merge_blocks:
{
\l_@@_begin_int \l_@@_end_int
\tex_advance:D \l_@@_end_int \l_@@_block_int
@@ -469,7 +471,7 @@
% (excluded) into a new range starting at the initial value
% of \cs{l_@@_C_int}, namely \cs{l_@@_length_int}.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \sort_copy_block:
+\cs_new_protected:Npn \sort_copy_block:
{
\tex_toks:D \l_@@_C_int \tex_toks:D \l_@@_B_int
\tex_advance:D \l_@@_C_int \c_one
@@ -496,7 +498,7 @@
% means the arguments need to be given in the order they
% appear originally in the list.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_merge_blocks_aux:
+\cs_new_protected:Npn \@@_merge_blocks_aux:
{
\exp_after:wN \sort_compare:nn \exp_after:wN
{ \tex_the:D \tex_toks:D \exp_after:wN \l_@@_A_int \exp_after:wN }
@@ -517,7 +519,7 @@
% is already in the correct register and we are done
% with merging those two blocks.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \sort_ordered:
+\cs_new_protected:Npn \sort_ordered:
{
\tex_toks:D \l_@@_B_int \tex_toks:D \l_@@_C_int
\tex_advance:D \l_@@_B_int \c_minus_one
@@ -541,7 +543,7 @@
% the second block, indexed by $C$, should be copied
% to the merger (see \cs{@@_merge_blocks_end:}).
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \sort_reversed:
+\cs_new_protected:Npn \sort_reversed:
{
\tex_toks:D \l_@@_B_int \tex_toks:D \l_@@_A_int
\tex_advance:D \l_@@_B_int \c_minus_one
@@ -561,7 +563,7 @@
% the threshold \texttt{begin}, or when $C$ reaches
% \texttt{length}.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_merge_blocks_end:
+\cs_new_protected:Npn \@@_merge_blocks_end:
{
\tex_toks:D \l_@@_B_int \tex_toks:D \l_@@_C_int
\tex_advance:D \l_@@_B_int \c_minus_one
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx
index d929259efaa..446504ae65b 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/05/14]
-%<package>\@ifpackagelater{expl3}{2016/05/14}
+\RequirePackage{expl3}[2016/10/19]
+%<package>\@ifpackagelater{expl3}{2016/10/19}
%<package> {}
%<package> {%
%<package> \PackageError{l3flag}{Support package l3kernel too old}
@@ -49,7 +49,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3flag.dtx 6492 2016-05-14 20:27:55Z joseph $
+\GetIdInfo$Id: l3flag.dtx 6730 2016-10-19 11:19:38Z joseph $
{L3 Experimental flags}
%</driver|package>
%<*driver>
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx
index e9fc42c8cf2..41969971c69 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/05/14]
-%<package>\@ifpackagelater{expl3}{2016/05/14}
+\RequirePackage{expl3}[2016/10/19]
+%<package>\@ifpackagelater{expl3}{2016/10/19}
%<package> {}
%<package> {%
%<package> \PackageError{l3regex}{Support package l3kernel too old}
@@ -49,7 +49,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3regex.dtx 6492 2016-05-14 20:27:55Z joseph $
+\GetIdInfo$Id: l3regex.dtx 6730 2016-10-19 11:19:38Z joseph $
{L3 Experimental regular expressions}
%</driver|package>
%<*driver>
@@ -1038,7 +1038,7 @@
% $[65,90]$ (upper-case), then add $32$, making it lowercase. If it is
% in the lower-case letter range $[97,122]$, subtract $32$.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_compute_case_changed_char:
+\cs_new_protected:Npn \@@_compute_case_changed_char:
{
\int_set_eq:NN \l_@@_case_changed_char_int \l_@@_current_char_int
\if_int_compare:w \l_@@_current_char_int < \c_ninety_one
@@ -1182,14 +1182,14 @@
% order in which the various tests appear is optimized for usual
% mostly lower case letter text.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_prop_d:
+\cs_new_protected:Npn \@@_prop_d:
{ \@@_item_caseful_range:nn \c_forty_eight { 57 } } % 0--9
-\cs_new_protected_nopar:Npn \@@_prop_h:
+\cs_new_protected:Npn \@@_prop_h:
{
\@@_item_caseful_equal:n \c_thirty_two % space
\@@_item_caseful_equal:n \c_nine % tab
}
-\cs_new_protected_nopar:Npn \@@_prop_s:
+\cs_new_protected:Npn \@@_prop_s:
{
\@@_item_caseful_equal:n \c_thirty_two % space
\@@_item_caseful_equal:n \c_nine % tab
@@ -1197,16 +1197,16 @@
\@@_item_caseful_equal:n \c_twelve % ff
\@@_item_caseful_equal:n \c_thirteen % cr
}
-\cs_new_protected_nopar:Npn \@@_prop_v:
+\cs_new_protected:Npn \@@_prop_v:
{ \@@_item_caseful_range:nn \c_ten \c_thirteen } % lf, vtab, ff, cr
-\cs_new_protected_nopar:Npn \@@_prop_w:
+\cs_new_protected:Npn \@@_prop_w:
{
\@@_item_caseful_range:nn \c_ninety_seven { 122 } % a--z
\@@_item_caseful_range:nn \c_sixty_five { 90 } % A--Z
\@@_item_caseful_range:nn \c_forty_eight { 57 } % 0--9
\@@_item_caseful_equal:n { 95 } % _
}
-\cs_new_protected_nopar:Npn \@@_prop_N:
+\cs_new_protected:Npn \@@_prop_N:
{ \@@_item_reverse:n { \@@_item_caseful_equal:n \c_ten } }
% \end{macrocode}
% \end{macro}
@@ -1221,41 +1221,41 @@
% }
% \textsc{posix} properties. No surprise.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_posix_alnum:
+\cs_new_protected:Npn \@@_posix_alnum:
{ \@@_posix_alpha: \@@_posix_digit: }
-\cs_new_protected_nopar:Npn \@@_posix_alpha:
+\cs_new_protected:Npn \@@_posix_alpha:
{ \@@_posix_lower: \@@_posix_upper: }
-\cs_new_protected_nopar:Npn \@@_posix_ascii:
+\cs_new_protected:Npn \@@_posix_ascii:
{ \@@_item_caseful_range:nn \c_zero \c_one_hundred_twenty_seven }
\cs_new_eq:NN \@@_posix_blank: \@@_prop_h:
-\cs_new_protected_nopar:Npn \@@_posix_cntrl:
+\cs_new_protected:Npn \@@_posix_cntrl:
{
\@@_item_caseful_range:nn \c_zero { 31 }
\@@_item_caseful_equal:n \c_one_hundred_twenty_seven
}
\cs_new_eq:NN \@@_posix_digit: \@@_prop_d:
-\cs_new_protected_nopar:Npn \@@_posix_graph:
+\cs_new_protected:Npn \@@_posix_graph:
{ \@@_item_caseful_range:nn { 33 } { 126 } }
-\cs_new_protected_nopar:Npn \@@_posix_lower:
+\cs_new_protected:Npn \@@_posix_lower:
{ \@@_item_caseful_range:nn \c_ninety_seven { 122 } }
-\cs_new_protected_nopar:Npn \@@_posix_print:
+\cs_new_protected:Npn \@@_posix_print:
{ \@@_item_caseful_range:nn \c_thirty_two { 126 } }
-\cs_new_protected_nopar:Npn \@@_posix_punct:
+\cs_new_protected:Npn \@@_posix_punct:
{
\@@_item_caseful_range:nn { 33 } { 47 }
\@@_item_caseful_range:nn { 58 } { 64 }
\@@_item_caseful_range:nn { 91 } { 96 }
\@@_item_caseful_range:nn { 123 } { 126 }
}
-\cs_new_protected_nopar:Npn \@@_posix_space:
+\cs_new_protected:Npn \@@_posix_space:
{
\@@_item_caseful_equal:n \c_thirty_two
\@@_item_caseful_range:nn \c_nine \c_thirteen
}
-\cs_new_protected_nopar:Npn \@@_posix_upper:
+\cs_new_protected:Npn \@@_posix_upper:
{ \@@_item_caseful_range:nn \c_sixty_five { 90 } }
\cs_new_eq:NN \@@_posix_word: \@@_prop_w:
-\cs_new_protected_nopar:Npn \@@_posix_xdigit:
+\cs_new_protected:Npn \@@_posix_xdigit:
{
\@@_posix_digit:
\@@_item_caseful_range:nn \c_sixty_five { 70 }
@@ -1306,9 +1306,9 @@
{
%<trace> \trace_push:nnn { regex } { 1 } { @@_escape_use:nnnn }
\__tl_build:Nw \l_@@_internal_a_tl
- \cs_set_nopar:Npn \@@_escape_unescaped:N ##1 { #1 }
- \cs_set_nopar:Npn \@@_escape_escaped:N ##1 { #2 }
- \cs_set_nopar:Npn \@@_escape_raw:N ##1 { #3 }
+ \cs_set:Npn \@@_escape_unescaped:N ##1 { #1 }
+ \cs_set:Npn \@@_escape_escaped:N ##1 { #2 }
+ \cs_set:Npn \@@_escape_raw:N ##1 { #3 }
\int_set:Nn \tex_escapechar:D { 92 }
\__str_gset_other:Nn \g_@@_internal_tl { #4 }
\tl_set:Nx \l_@@_internal_b_tl
@@ -1337,7 +1337,7 @@
{ \@@_escape_unescaped:N #1 }
\@@_escape_loop:N
}
-\cs_new_nopar:cpn { @@_escape_ \c_backslash_str :w }
+\cs_new:cpn { @@_escape_ \c_backslash_str :w }
\@@_escape_loop:N #1
{
\cs_if_exist_use:cF { @@_escape_/\token_to_str:N #1:w }
@@ -1372,24 +1372,24 @@
% |\t| take their meaning here.
% \begin{macrocode}
\cs_new_eq:NN \@@_escape_break:w \__prg_break:
-\cs_new_nopar:cpn { @@_escape_/break:w }
+\cs_new:cpn { @@_escape_/break:w }
{
\if_false: { \fi: }
\__msg_kernel_error:nn { regex } { trailing-backslash }
\exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi:
}
-\cs_new_nopar:cpn { @@_escape_~:w } { }
-\cs_new_nopar:cpx { @@_escape_/a:w }
+\cs_new:cpn { @@_escape_~:w } { }
+\cs_new:cpx { @@_escape_/a:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^G }
-\cs_new_nopar:cpx { @@_escape_/t:w }
+\cs_new:cpx { @@_escape_/t:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^I }
-\cs_new_nopar:cpx { @@_escape_/n:w }
+\cs_new:cpx { @@_escape_/n:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^J }
-\cs_new_nopar:cpx { @@_escape_/f:w }
+\cs_new:cpx { @@_escape_/f:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^L }
-\cs_new_nopar:cpx { @@_escape_/r:w }
+\cs_new:cpx { @@_escape_/r:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^M }
-\cs_new_nopar:cpx { @@_escape_/e:w }
+\cs_new:cpx { @@_escape_/e:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^[ }
% \end{macrocode}
% \end{macro}
@@ -1444,7 +1444,7 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-%
+% ^^A todo: use char_generate in above and rest of file
% \begin{macro}[aux]{\@@_escape_x_test:N, \@@_escape_x_testii:N}
% Find out whether the first character is a left brace (allowing any
% number of hexadecimal digits), or not (allowing up to two
@@ -1812,7 +1812,7 @@
% and special characters are normal. Also, for every raw character, we
% must look ahead for a possible raw dash.
% \begin{macrocode}
-\cs_new_nopar:Npn \@@_if_in_class:TF
+\cs_new:Npn \@@_if_in_class:TF
{
\if_int_odd:w \l_@@_mode_int
\exp_after:wN \use_i:nn
@@ -1827,7 +1827,7 @@
% Right braces are special only directly inside control sequences (at
% the inner-most level of nesting, not counting groups).
% \begin{macrocode}
-\cs_new_nopar:Npn \@@_if_in_cs:TF
+\cs_new:Npn \@@_if_in_cs:TF
{
\if_int_odd:w \l_@@_mode_int
\exp_after:wN \use_ii:nn
@@ -1846,7 +1846,7 @@
% Assertions are only allowed in modes $0$, $-2$, and $-6$,
% \emph{i.e.}, even, non-positive modes.
% \begin{macrocode}
-\cs_new_nopar:Npn \@@_if_in_class_or_catcode:TF
+\cs_new:Npn \@@_if_in_class_or_catcode:TF
{
\if_int_odd:w \l_@@_mode_int
\exp_after:wN \use_i:nn
@@ -1867,7 +1867,7 @@
% it applies (modes $23$ and $63$). This is used to tweak how left
% brackets behave in modes $2$ and $6$.
% \begin{macrocode}
-\cs_new_nopar:Npn \@@_if_within_catcode:TF
+\cs_new:Npn \@@_if_within_catcode:TF
{
\if_int_compare:w \l_@@_mode_int > \c_zero
\exp_after:wN \use_i:nn
@@ -1925,17 +1925,17 @@
% the end, make sure there are no dangling classes nor groups, close
% the last branch: we are done building \cs{l_@@_internal_regex}.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_compile:w
+\cs_new_protected:Npn \@@_compile:w
{
\__tl_build_x:Nw \l_@@_internal_regex
\int_zero:N \l_@@_group_level_int
\int_set_eq:NN \l_@@_default_catcodes_int \c_@@_all_catcodes_int
\int_set_eq:NN \l_@@_catcodes_int \l_@@_default_catcodes_int
- \cs_set_nopar:Npn \@@_item_equal:n { \@@_item_caseful_equal:n }
- \cs_set_nopar:Npn \@@_item_range:nn { \@@_item_caseful_range:nn }
+ \cs_set:Npn \@@_item_equal:n { \@@_item_caseful_equal:n }
+ \cs_set:Npn \@@_item_range:nn { \@@_item_caseful_range:nn }
\__tl_build_one:n { \@@_branch:n { \if_false: } \fi: }
}
-\cs_new_protected_nopar:Npn \@@_compile_end:
+\cs_new_protected:Npn \@@_compile_end:
{
\@@_if_in_class:TF
{
@@ -2146,11 +2146,11 @@
% arguments to \cs{@@_compile_quantifier_lazyness:nnNN}, $-1$ means
% that there is no upper bound on the number of repetitions.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_quantifier_?:w }
+\cs_new_protected:cpn { @@_compile_quantifier_?:w }
{ \@@_compile_quantifier_lazyness:nnNN { 0 } { 1 } }
-\cs_new_protected_nopar:cpn { @@_compile_quantifier_*:w }
+\cs_new_protected:cpn { @@_compile_quantifier_*:w }
{ \@@_compile_quantifier_lazyness:nnNN { 0 } { -1 } }
-\cs_new_protected_nopar:cpn { @@_compile_quantifier_+:w }
+\cs_new_protected:cpn { @@_compile_quantifier_+:w }
{ \@@_compile_quantifier_lazyness:nnNN { 1 } { -1 } }
% \end{macrocode}
% \end{macro}
@@ -2348,13 +2348,13 @@
% \cs{@@_prop_.:}, which matches any character or control
% sequence, and refuses $-2$ (end-marker).
% \begin{macrocode}
-\cs_new_protected_nopar:cpx { @@_compile_.: }
+\cs_new_protected:cpx { @@_compile_.: }
{
\exp_not:N \@@_if_in_class:TF
{ \@@_compile_raw:N . }
{ \@@_compile_one:x \exp_not:c { @@_prop_.: } }
}
-\cs_new_protected_nopar:cpn { @@_prop_.: }
+\cs_new_protected:cpn { @@_prop_.: }
{
\if_int_compare:w \l_@@_current_char_int > - \c_two
\exp_after:wN \@@_break_true:w
@@ -2379,9 +2379,9 @@
% \begin{macrocode}
\cs_set_protected:Npn \@@_tmp:w #1#2
{
- \cs_new_protected_nopar:cpx { @@_compile_/#1: }
+ \cs_new_protected:cpx { @@_compile_/#1: }
{ \@@_compile_one:x \exp_not:c { @@_prop_#1: } }
- \cs_new_protected_nopar:cpx { @@_compile_/#2: }
+ \cs_new_protected:cpx { @@_compile_/#2: }
{
\@@_compile_one:x
{ \@@_item_reverse:n \exp_not:c { @@_prop_#1: } }
@@ -2392,7 +2392,7 @@
\@@_tmp:w s S
\@@_tmp:w v V
\@@_tmp:w w W
-\cs_new_protected_nopar:cpn { @@_compile_/N: }
+\cs_new_protected:cpn { @@_compile_/N: }
{ \@@_compile_one:x \@@_prop_N: }
% \end{macrocode}
% \end{macro}
@@ -2420,7 +2420,7 @@
}
\cs_set_protected:Npn \@@_tmp:w #1#2
{
- \cs_new_protected_nopar:cpn { @@_compile_/#1: }
+ \cs_new_protected:cpn { @@_compile_/#1: }
{ \@@_compile_anchor:NF #2 { \@@_compile_raw_error:N #1 } }
}
\@@_tmp:w A \l_@@_min_pos_int
@@ -2429,7 +2429,7 @@
\@@_tmp:w z \l_@@_max_pos_int
\cs_set_protected:Npn \@@_tmp:w #1#2
{
- \cs_new_protected_nopar:cpn { @@_compile_#1: }
+ \cs_new_protected:cpn { @@_compile_#1: }
{ \@@_compile_anchor:NF #2 { \@@_compile_raw:N #1 } }
}
\exp_args:Nx \@@_tmp:w { \iow_char:N \^ } \l_@@_min_pos_int
@@ -2446,7 +2446,7 @@
% knowing what precedes in the token list, this requires more
% information, namely, the knowledge of the last character code.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_/b: }
+\cs_new_protected:cpn { @@_compile_/b: }
{
\@@_if_in_class_or_catcode:TF
{ \@@_compile_raw_error:N b }
@@ -2455,7 +2455,7 @@
{ \@@_assertion:Nn \c_true_bool { \@@_b_test: } }
}
}
-\cs_new_protected_nopar:cpn { @@_compile_/B: }
+\cs_new_protected:cpn { @@_compile_/B: }
{
\@@_if_in_class_or_catcode:TF
{ \@@_compile_raw_error:N B }
@@ -2501,7 +2501,7 @@
% pre-expand the catcode as an optimization. Otherwise (modes $0$,
% $-2$ and $-6$) just parse the class. The mode is updated later.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_[: }
+\cs_new_protected:cpn { @@_compile_[: }
{
\@@_if_in_class:TF
{ \@@_compile_class_posix_test:w }
@@ -2524,7 +2524,7 @@
% leading |^|. The auxiliary \cs{@@_compile_class:TFNN} also
% checks for a leading |]| which has a special meaning.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_compile_class_normal:w
+\cs_new_protected:Npn \@@_compile_class_normal:w
{
\@@_compile_class:TFNN
{ \@@_class:NnnnN \c_true_bool }
@@ -2710,7 +2710,7 @@
% denoting special groups, and run the code for the corresponding
% special group.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_(: }
+\cs_new_protected:cpn { @@_compile_(: }
{
\@@_if_in_class:TF { \@@_compile_raw:N ( }
{ \@@_compile_lparen:w }
@@ -2740,7 +2740,7 @@
% In a class, the pipe is not special. Otherwise, end the current
% branch and open another one.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_|: }
+\cs_new_protected:cpn { @@_compile_|: }
{
\@@_if_in_class:TF { \@@_compile_raw:N | }
{
@@ -2754,7 +2754,7 @@
% \begin{macro}[aux]{\@@_compile_):}
% Within a class, parentheses are not special. Outside, close a group.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_): }
+\cs_new_protected:cpn { @@_compile_): }
{
\@@_if_in_class:TF { \@@_compile_raw:N ) }
{ \@@_compile_group_end: }
@@ -2768,9 +2768,9 @@
% compilation; for those groups, the harder parts will come when
% building.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_special_group_::w }
+\cs_new_protected:cpn { @@_compile_special_group_::w }
{ \@@_compile_group_begin:N \@@_group_no_capture:nnnN }
-\cs_new_protected_nopar:cpn { @@_compile_special_group_|:w }
+\cs_new_protected:cpn { @@_compile_special_group_|:w }
{ \@@_compile_group_begin:N \@@_group_resetting:nnnN }
% \end{macrocode}
% \end{macro}
@@ -2786,8 +2786,8 @@
{
\str_if_eq:nnTF { #1 #2 } { \@@_compile_special:N ) }
{
- \cs_set_nopar:Npn \@@_item_equal:n { \@@_item_caseless_equal:n }
- \cs_set_nopar:Npn \@@_item_range:nn { \@@_item_caseless_range:nn }
+ \cs_set:Npn \@@_item_equal:n { \@@_item_caseless_equal:n }
+ \cs_set:Npn \@@_item_range:nn { \@@_item_caseless_range:nn }
}
{
\__msg_kernel_warning:nnx { regex } { unknown-option } { (?i #2 }
@@ -2797,13 +2797,13 @@
#1 #2
}
}
-\cs_new_protected_nopar:cpn { @@_compile_special_group_-:w } #1#2#3#4
+\cs_new_protected:cpn { @@_compile_special_group_-:w } #1#2#3#4
{
\str_if_eq:nnTF { #1 #2 #3 #4 }
{ \@@_compile_raw:N i \@@_compile_special:N ) }
{
- \cs_set_nopar:Npn \@@_item_equal:n { \@@_item_caseful_equal:n }
- \cs_set_nopar:Npn \@@_item_range:nn { \@@_item_caseful_range:nn }
+ \cs_set:Npn \@@_item_equal:n { \@@_item_caseful_equal:n }
+ \cs_set:Npn \@@_item_range:nn { \@@_item_caseful_range:nn }
}
{
\__msg_kernel_warning:nnx { regex } { unknown-option } { (?-#2#4 }
@@ -2901,7 +2901,7 @@
\tex_advance:D \l_@@_catcodes_int #1
\fi:
}
-\cs_new_protected_nopar:Npn \@@_compile_c_lbrack_end:
+\cs_new_protected:Npn \@@_compile_c_lbrack_end:
{
\if_meaning:w \c_false_bool \l_@@_catcodes_bool
\int_set:Nn \l_@@_catcodes_int
@@ -2917,7 +2917,7 @@
% to forbid nesting |\c|. Additionally, disable submatch tracking
% since groups don't escape the scope of |\c{...}|.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_c_ \c_left_brace_str :w }
+\cs_new_protected:cpn { @@_compile_c_ \c_left_brace_str :w }
{
\@@_compile:w
\@@_disable_submatches:
@@ -3079,7 +3079,7 @@
% allowed in the same contexts as |\b|. At the compilation stage, we
% leave it as a single control sequence, defined later.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_compile_/K: }
+\cs_new_protected:cpn { @@_compile_/K: }
{
\int_compare:nNnTF \l_@@_mode_int = \c_zero
{ \__tl_build_one:n { \@@_command_K: } }
@@ -3098,25 +3098,25 @@
\cs_new_protected:Npn \@@_show:Nx #1#2
{
\__tl_build:Nw \l_@@_internal_a_tl
- \cs_set_protected_nopar:Npn \@@_branch:n
+ \cs_set_protected:Npn \@@_branch:n
{
\seq_pop_right:NN \l_@@_show_prefix_seq \l_@@_internal_a_tl
\@@_show_one:n { +-branch }
\seq_put_right:No \l_@@_show_prefix_seq \l_@@_internal_a_tl
\use:n
}
- \cs_set_protected_nopar:Npn \@@_group:nnnN
+ \cs_set_protected:Npn \@@_group:nnnN
{ \@@_show_group_aux:nnnnN { } }
- \cs_set_protected_nopar:Npn \@@_group_no_capture:nnnN
+ \cs_set_protected:Npn \@@_group_no_capture:nnnN
{ \@@_show_group_aux:nnnnN { ~(no~capture) } }
- \cs_set_protected_nopar:Npn \@@_group_resetting:nnnN
+ \cs_set_protected:Npn \@@_group_resetting:nnnN
{ \@@_show_group_aux:nnnnN { ~(resetting) } }
\cs_set_eq:NN \@@_class:NnnnN \@@_show_class:NnnnN
- \cs_set_protected_nopar:Npn \@@_command_K:
+ \cs_set_protected:Npn \@@_command_K:
{ \@@_show_one:n { reset~match~start~(\iow_char:N\\K) } }
\cs_set_protected:Npn \@@_assertion:Nn ##1##2
{ \@@_show_one:n { \bool_if:NF ##1 { negative~ } assertion:~##2 } }
- \cs_set_nopar:Npn \@@_b_test: { word~boundary }
+ \cs_set:Npn \@@_b_test: { word~boundary }
\cs_set_eq:NN \@@_anchor:N \@@_show_anchor_to_str:N
\cs_set_protected:Npn \@@_item_caseful_equal:n ##1
{ \@@_show_one:n { char~code~\int_eval:n{##1} } }
@@ -3449,14 +3449,14 @@
% the left-end and right-end of each group without help from \TeX{}'s
% grouping.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_push_lr_states:
+\cs_new_protected:Npn \@@_push_lr_states:
{
\seq_push:No \l_@@_left_state_seq
{ \int_use:N \l_@@_left_state_int }
\seq_push:No \l_@@_right_state_seq
{ \int_use:N \l_@@_right_state_int }
}
-\cs_new_protected_nopar:Npn \@@_pop_lr_states:
+\cs_new_protected:Npn \@@_pop_lr_states:
{
\seq_pop:NN \l_@@_left_state_seq \l_@@_internal_a_tl
\int_set:Nn \l_@@_left_state_int \l_@@_internal_a_tl
@@ -3477,13 +3477,13 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_toks_put_left:Nx #1#2
{
- \cs_set_nopar:Npx \@@_tmp:w { #2 }
+ \cs_set:Npx \@@_tmp:w { #2 }
\tex_toks:D #1 \exp_after:wN \exp_after:wN \exp_after:wN
{ \exp_after:wN \@@_tmp:w \tex_the:D \tex_toks:D #1 }
}
\cs_new_protected:Npn \@@_toks_put_right:Nx #1#2
{
- \cs_set_nopar:Npx \@@_tmp:w {#2}
+ \cs_set:Npx \@@_tmp:w {#2}
\tex_toks:D #1 \exp_after:wN
{ \tex_the:D \tex_toks:D \exp_after:wN #1 \@@_tmp:w }
}
@@ -3517,7 +3517,7 @@
% \texttt{right} state is the new empty state, and the \texttt{left}
% state points to the previously \enquote{current} state.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_build_new_state:
+\cs_new_protected:Npn \@@_build_new_state:
{
%<*trace>
\trace:nnx { regex } { 2 }
@@ -3574,7 +3574,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_class:NnnnN #1#2#3#4#5
{
- \cs_set_nopar:Npx \@@_tests_action_cost:n ##1
+ \cs_set:Npx \@@_tests_action_cost:n ##1
{
\exp_not:n { \exp_not:n {#2} }
\bool_if:NTF #1
@@ -3718,7 +3718,7 @@
#1
}
}
-\cs_new_protected_nopar:Npn \@@_group_no_capture:nnnN
+\cs_new_protected:Npn \@@_group_no_capture:nnnN
{ \@@_group_aux:nnnnN { -1 } }
% \end{macrocode}
% \end{macro}
@@ -4001,7 +4001,7 @@
\exp_after:wN \@@_break_true:w
\fi:
}
-\cs_new_protected_nopar:Npn \@@_b_test:
+\cs_new_protected:Npn \@@_b_test:
{
\group_begin:
\int_set_eq:NN \l_@@_current_char_int \l_@@_last_char_int
@@ -4017,7 +4017,7 @@
% Change the starting point of the $0$-th submatch (full match), and
% transition to a new state, pretending that this is a fresh thread.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_command_K:
+\cs_new_protected:Npn \@@_command_K:
{
\@@_build_new_state:
\@@_toks_put_right:Nx \l_@@_left_state_int
@@ -4294,10 +4294,10 @@
% boundaries. Then call \cs{@@_match_loop:}, which runs through the
% query until the end or until a successful match breaks early.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_match_once:
+\cs_new_protected:Npn \@@_match_once:
{
\if_meaning:w \c_true_bool \l_@@_empty_success_bool
- \cs_set_nopar:Npn \@@_if_two_empty_matches:F
+ \cs_set:Npn \@@_if_two_empty_matches:F
{ \int_compare:nNnF \l_@@_start_pos_int = \l_@@_current_pos_int }
\else:
\cs_set_eq:NN \@@_if_two_empty_matches:F \use:n
@@ -4322,7 +4322,7 @@
% overall matching is successful as soon as any match
% succeeds. Perform the action |#1|, then find the next match.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_single_match:
+\cs_new_protected:Npn \@@_single_match:
{
\tl_set:Nn \l_@@_every_match_tl
{ \bool_gset_eq:NN \g_@@_success_bool \l_@@_match_success_bool }
@@ -4355,7 +4355,7 @@
% \cs{@@_match_once:} matches. We explain the \texttt{fresh_thread}
% business when describing \cs{@@_action_wildcard:}.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_match_loop:
+\cs_new_protected:Npn \@@_match_loop:
{
\tex_advance:D \l_@@_step_int \c_two
\int_incr:N \l_@@_current_pos_int
@@ -4421,7 +4421,7 @@
% the stretch components, and we need a conversion to avoid \TeX{}'s
% \enquote{incompatible glue units} error.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_query_get:
+\cs_new_protected:Npn \@@_query_get:
{
\l_@@_current_char_int
= \etex_mutoglue:D \tex_muskip:D \l_@@_current_pos_int
@@ -4441,7 +4441,7 @@
% state is marked as $\texttt{step}+1$: any thread hitting it at that
% point will be terminated.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_use_state:
+\cs_new_protected:Npn \@@_use_state:
{
%<*trace>
\trace:nnx { regex } { 2 } { state~\int_use:N \l_@@_current_state_int }
@@ -4484,7 +4484,7 @@
% \cs{l_@@_fresh_thread_bool} may be skipped by a successful
% thread, hence we had to add it to \cs{@@_match_loop:} too.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_action_start_wildcard:
+\cs_new_protected:Npn \@@_action_start_wildcard:
{
\bool_set_true:N \l_@@_fresh_thread_bool
\@@_action_free:n {1}
@@ -4508,9 +4508,9 @@
% \enquote{normal} version will revisit a state when within the thread
% itself.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_action_free:n
+\cs_new_protected:Npn \@@_action_free:n
{ \@@_action_free_aux:nn { > \l_@@_step_int \else: } }
-\cs_new_protected_nopar:Npn \@@_action_free_group:n
+\cs_new_protected:Npn \@@_action_free_group:n
{ \@@_action_free_aux:nn { < \l_@@_step_int } }
\cs_new_protected:Npn \@@_action_free_aux:nn #1#2
{
@@ -4562,7 +4562,7 @@
\tex_skip:D \l_@@_max_active_int = #1 sp \scan_stop:
\int_incr:N \l_@@_max_active_int
}
-\cs_new_protected_nopar:Npn \@@_store_submatches:
+\cs_new_protected:Npn \@@_store_submatches:
{
\tex_toks:D \l_@@_max_active_int \exp_after:wN
{ \l_@@_current_submatches_prop }
@@ -4577,9 +4577,9 @@
% relevant functions to remove their argument and do nothing
% with it.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_disable_submatches:
+\cs_new_protected:Npn \@@_disable_submatches:
{
- \cs_set_protected_nopar:Npn \@@_store_submatches: { }
+ \cs_set_protected:Npn \@@_store_submatches: { }
\cs_set_protected:Npn \@@_action_submatch:n ##1 { }
}
% \end{macrocode}
@@ -4607,7 +4607,7 @@
% pursued further. The values stored here may be overwritten by a
% later success of a path with higher precedence.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_action_success:
+\cs_new_protected:Npn \@@_action_success:
{
\@@_if_two_empty_matches:F
{
@@ -4939,7 +4939,7 @@
}
{ \@@_replacement_error:NNN c #1#2 }
}
-\cs_new_protected_nopar:cpn { @@_replacement_c_ \c_left_brace_str :w }
+\cs_new_protected:cpn { @@_replacement_c_ \c_left_brace_str :w }
{
\if_case:w \l_@@_replacement_csnames_int
\__tl_build_one:n
@@ -5028,7 +5028,7 @@
% query, and to expand their contents to tokens of the query.
% \begin{macrocode}
\char_set_catcode_active:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_A:w
+ \cs_new_protected:Npn \@@_replacement_c_A:w
{ \@@_replacement_char:nNN { \exp_not:n { \exp_not:N ^^@ } } }
% \end{macrocode}
% \end{macro}
@@ -5043,7 +5043,7 @@
% with \pkg{l3tl-analysis}.
% \begin{macrocode}
\char_set_catcode_group_begin:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_B:w
+ \cs_new_protected:Npn \@@_replacement_c_B:w
{
\if_int_compare:w \l_@@_replacement_csnames_int = \c_zero
\int_incr:N \l_@@_balance_int
@@ -5070,7 +5070,7 @@
% correct category.
% \begin{macrocode}
\char_set_catcode_math_subscript:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_D:w
+ \cs_new_protected:Npn \@@_replacement_c_D:w
{ \@@_replacement_char:nNN { ^^@ } }
% \end{macrocode}
% \end{macro}
@@ -5080,7 +5080,7 @@
% produces the bare end-group token.
% \begin{macrocode}
\char_set_catcode_group_end:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_E:w
+ \cs_new_protected:Npn \@@_replacement_c_E:w
{
\if_int_compare:w \l_@@_replacement_csnames_int = \c_zero
\int_decr:N \l_@@_balance_int
@@ -5095,7 +5095,7 @@
% Simply \tn{lowercase} a letter null byte to produce an arbitrary letter.
% \begin{macrocode}
\char_set_catcode_letter:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_L:w
+ \cs_new_protected:Npn \@@_replacement_c_L:w
{ \@@_replacement_char:nNN { ^^@ } }
% \end{macrocode}
% \end{macro}
@@ -5104,7 +5104,7 @@
% No surprise here, we lowercase the null math toggle.
% \begin{macrocode}
\char_set_catcode_math_toggle:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_M:w
+ \cs_new_protected:Npn \@@_replacement_c_M:w
{ \@@_replacement_char:nNN { ^^@ } }
% \end{macrocode}
% \end{macro}
@@ -5113,7 +5113,7 @@
% Lowercase an other null byte.
% \begin{macrocode}
\char_set_catcode_other:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_O:w
+ \cs_new_protected:Npn \@@_replacement_c_O:w
{ \@@_replacement_char:nNN { ^^@ } }
% \end{macrocode}
% \end{macro}
@@ -5127,7 +5127,7 @@
% parameter character would be doubled.
% \begin{macrocode}
\char_set_catcode_parameter:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_P:w
+ \cs_new_protected:Npn \@@_replacement_c_P:w
{
\@@_replacement_char:nNN
{ \exp_not:n { \exp_not:n { ^^@^^@^^@^^@ } } }
@@ -5162,7 +5162,7 @@
% trouble in alignment settings.
% \begin{macrocode}
\char_set_catcode_alignment:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_T:w
+ \cs_new_protected:Npn \@@_replacement_c_T:w
{ \@@_replacement_char:nNN { ^^@ } }
% \end{macrocode}
% \end{macro}
@@ -5172,7 +5172,7 @@
% math superscript |^^@|.
% \begin{macrocode}
\char_set_catcode_math_superscript:N \^^@
- \cs_new_protected_nopar:Npn \@@_replacement_c_U:w
+ \cs_new_protected:Npn \@@_replacement_c_U:w
{ \@@_replacement_char:nNN { ^^@ } }
% \end{macrocode}
% \end{macro}
@@ -5212,17 +5212,17 @@
% Compile, then store the result in the user variable with the
% appropriate assignment function.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \regex_set:Nn #1#2
+\cs_new_protected:Npn \regex_set:Nn #1#2
{
\@@_compile:n {#2}
\tl_set_eq:NN #1 \l_@@_internal_regex
}
-\cs_new_protected_nopar:Npn \regex_gset:Nn #1#2
+\cs_new_protected:Npn \regex_gset:Nn #1#2
{
\@@_compile:n {#2}
\tl_gset_eq:NN #1 \l_@@_internal_regex
}
-\cs_new_protected_nopar:Npn \regex_const:Nn #1#2
+\cs_new_protected:Npn \regex_const:Nn #1#2
{
\@@_compile:n {#2}
\tl_const:Nx #1 { \exp_not:o \l_@@_internal_regex }
@@ -5364,7 +5364,7 @@
% \cs{prg_return_true:} as appropriate to whether a match was found or
% not. It is used by all user conditionals.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_return:
+\cs_new_protected:Npn \@@_return:
{
\if_meaning:w \c_true_bool \g_@@_success_bool
\prg_return_true:
@@ -5567,7 +5567,7 @@
% end, store the information about the position at which the match
% attempt started, as a shrink component.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_extract:
+\cs_new_protected:Npn \@@_extract:
{
\if_meaning:w \c_true_bool \g_@@_success_bool
\int_set_eq:NN \l_@@_zeroth_submatch_int \l_@@_submatch_int
@@ -5698,7 +5698,7 @@
% \cs{l_@@_internal_a_tl}, adding the appropriate braces to produce
% a balanced result. And end the group.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_group_end_replace:N #1
+\cs_new_protected:Npn \@@_group_end_replace:N #1
{
\if_int_compare:w \l_@@_balance_int = \c_zero
\else:
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 cda42b33ccc..2412dead14b 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{expl3}
-\GetIdInfo$Id: l3str-convert.dtx 6443 2016-03-24 10:59:09Z joseph $
+\GetIdInfo$Id: l3str-convert.dtx 6699 2016-09-07 16:03:15Z bruno $
{L3 Experimental string encoding conversions}
%</driver|package>
%<*driver>
@@ -207,11 +207,6 @@
% encoding. Instead, the \meta{false code} is performed.
% \end{function}
%
-% \begin{variable}{\c_max_char_int}
-% The maximum valid character code, $255$ for pdf\TeX{}, and $1114111$
-% for \XeTeX{} and \LuaTeX{}.
-% \end{variable}
-%
% \section{Internal string functions}
%
% \begin{function}{\__str_gset_other:Nn}
@@ -313,29 +308,12 @@
%
% \subsubsection{Variables and constants}
%
-% \begin{variable}{\c_max_char_int}
-% The maximum valid character code is $255$ for pdf\TeX{}, and
-% $1114111$ for other engines.
-% \begin{macrocode}
-\int_const:Nn \c_max_char_int
- {
- \bool_if:nTF
- {
- \sys_if_engine_luatex_p: ||
- \sys_if_engine_xetex_p:
- }
- { "10FFFF }
- { "FF }
- }
-% \end{macrocode}
-% \end{variable}
-%
% \begin{macro}{\@@_tmp:w}
% \begin{variable}{\l_@@_internal_int}
% \begin{variable}{\l_@@_internal_tl}
% Internal scratch space for some functions.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_tmp:w { }
+\cs_new_protected:Npn \@@_tmp:w { }
\tl_new:N \l_@@_internal_tl
\int_new:N \l_@@_internal_int
% \end{macrocode}
@@ -425,7 +403,7 @@
% \end{variable}
%
% \subsubsection{Escaping spaces}
-%
+% ^^A todo: use char_generate in this file
% \begin{macro}[int]{\@@_gset_other:Nn}
% \begin{macro}[aux,EXP]{\@@_gset_other_loop:w}
% \begin{macro}[aux,EXP]{\@@_gset_other_end:w}
@@ -502,7 +480,7 @@
\fi:
\@@_if_contains_char_aux:NN #1
}
-\cs_new_nopar:Npn \@@_if_contains_char_true:
+\cs_new:Npn \@@_if_contains_char_true:
{ \__prg_break:n { \prg_return_true: \use_none:n } }
% \end{macrocode}
% \end{macro}
@@ -611,7 +589,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_output_byte:n #1
{ \@@_output_byte:w #1 \@@_output_end: }
-\cs_new_nopar:Npn \@@_output_byte:w
+\cs_new:Npn \@@_output_byte:w
{
\exp_after:wN \exp_after:wN
\exp_after:wN \use_i:nnn
@@ -619,13 +597,13 @@
}
\cs_new:Npn \@@_output_hexadecimal:n #1
{ \@@_output_hexadecimal:w #1 \@@_output_end: }
-\cs_new_nopar:Npn \@@_output_hexadecimal:w
+\cs_new:Npn \@@_output_hexadecimal:w
{
\exp_after:wN \exp_after:wN
\exp_after:wN \use_none:n
\cs:w c_@@_byte_ \__int_value:w \__int_eval:w
}
-\cs_new_nopar:Npn \@@_output_end:
+\cs_new:Npn \@@_output_end:
{ \__int_eval_end: _tl \cs_end: }
% \end{macrocode}
% \end{macro}
@@ -794,9 +772,9 @@
% act on \cs{g_@@_result_tl}. Errors are silenced for the conditional
% functions by redefining \cs{@@_if_flag_error:nnx} locally.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \str_set_convert:Nnnn
+\cs_new_protected:Npn \str_set_convert:Nnnn
{ \@@_convert:nNNnnn { } \tl_set_eq:NN }
-\cs_new_protected_nopar:Npn \str_gset_convert:Nnnn
+\cs_new_protected:Npn \str_gset_convert:Nnnn
{ \@@_convert:nNNnnn { } \tl_gset_eq:NN }
\prg_new_protected_conditional:Npnn
\str_set_convert:Nnnn #1#2#3#4 { T , F , TF }
@@ -1077,7 +1055,7 @@
\sys_if_engine_xetex_p:
}
{
- \cs_new_protected_nopar:Npn \@@_convert_unescape_:
+ \cs_new_protected:Npn \@@_convert_unescape_:
{
\flag_clear:n { str_byte }
\tl_gset:Nx \g_@@_result_tl
@@ -1085,7 +1063,7 @@
\@@_if_flag_error:nnx { str_byte } { non-byte } { bytes }
}
}
- { \cs_new_protected_nopar:Npn \@@_convert_unescape_: { } }
+ { \cs_new_protected:Npn \@@_convert_unescape_: { } }
\cs_new_eq:NN \@@_convert_unescape_bytes: \@@_convert_unescape_:
% \end{macrocode}
% \end{macro}
@@ -1096,7 +1074,7 @@
% The simplest form of escape leaves the bytes from the previous step
% of the conversion unchanged.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_convert_escape_: { }
+\cs_new_protected:Npn \@@_convert_escape_: { }
\cs_new_eq:NN \@@_convert_escape_bytes: \@@_convert_escape_:
% \end{macrocode}
% \end{macro}
@@ -1108,7 +1086,7 @@
% \begin{macro}[aux, rEXP]{\@@_decode_native_char:N}
% Convert each character to its character code, one at a time.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_convert_decode_:
+\cs_new_protected:Npn \@@_convert_decode_:
{ \@@_convert_gmap:N \@@_decode_native_char:N }
\cs_new:Npn \@@_decode_native_char:N #1
{ #1 \s__tl \__int_value:w `#1 \s__tl }
@@ -1147,7 +1125,7 @@
% $[0,\hexnum{10FFFF}]$.
% \begin{macrocode}
{
- \cs_new_protected_nopar:Npn \@@_convert_encode_:
+ \cs_new_protected:Npn \@@_convert_encode_:
{
\__tl_gbuild_x:Nw \g_@@_result_tl
\exp_after:wN \@@_encode_native_loop:w
@@ -1172,7 +1150,7 @@
% which then triggers a pdf\TeX{}-specific error.
% \begin{macrocode}
{
- \cs_new_protected_nopar:Npn \@@_convert_encode_:
+ \cs_new_protected:Npn \@@_convert_encode_:
{
\flag_clear:n { str_error }
\@@_convert_gmap_internal:N \@@_encode_native_char:n
@@ -1215,7 +1193,7 @@
% \cs{g_@@_result_tl} into a clist variable, as this avoids problems
% with leading or trailing commas.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_convert_decode_clist:
+\cs_new_protected:Npn \@@_convert_decode_clist:
{
\clist_set:No \g_@@_result_tl \g_@@_result_tl
\tl_gset:Nx \g_@@_result_tl
@@ -1238,7 +1216,7 @@
% empty case, since \cs{tl_tail:N} does not trigger an error in this
% case).
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_convert_encode_clist:
+\cs_new_protected:Npn \@@_convert_encode_clist:
{
\@@_convert_gmap_internal:N \@@_encode_clist_char:n
\tl_gset:Nx \g_@@_result_tl { \tl_tail:N \g_@@_result_tl }
@@ -1288,9 +1266,9 @@
\cs_new_protected:Npn \@@_declare_eight_bit_encoding:nnn #1#2#3
{
\tl_set:Nn \l_@@_internal_tl {#1}
- \cs_new_protected_nopar:cpn { @@_convert_decode_#1: }
+ \cs_new_protected:cpn { @@_convert_decode_#1: }
{ \@@_convert_decode_eight_bit:n {#1} }
- \cs_new_protected_nopar:cpn { @@_convert_encode_#1: }
+ \cs_new_protected:cpn { @@_convert_encode_#1: }
{ \@@_convert_encode_eight_bit:n {#1} }
\tl_const:cn { c_@@_encoding_#1_tl } {#2}
\tl_const:cn { c_@@_encoding_#1_missing_tl } {#3}
@@ -1510,7 +1488,7 @@
% appending a |0| in all cases, and dropping it if it is alone.
% \begin{macrocode}
%<*hex>
-\cs_new_protected_nopar:Npn \@@_convert_unescape_hex:
+\cs_new_protected:Npn \@@_convert_unescape_hex:
{
\group_begin:
\flag_clear:n { str_error }
@@ -1684,7 +1662,7 @@
\char_set_catcode_other:N \^^M
\tex_lowercase:D
{
- \cs_new_protected_nopar:Npn \@@_convert_unescape_string:
+ \cs_new_protected:Npn \@@_convert_unescape_string:
{
\group_begin:
\flag_clear:n { str_byte }
@@ -1782,7 +1760,7 @@
% Loop and convert each byte to hexadecimal.
% \begin{macrocode}
%<*hex>
-\cs_new_protected_nopar:Npn \@@_convert_escape_hex:
+\cs_new_protected:Npn \@@_convert_escape_hex:
{ \@@_convert_gmap:N \@@_escape_hex_char:N }
\cs_new:Npn \@@_escape_hex_char:N #1
{ \@@_output_hexadecimal:n { `#1 } }
@@ -1806,7 +1784,7 @@
%<*name>
\str_const:Nn \c_@@_escape_name_not_str { ! " $ & ' } %$
\str_const:Nn \c_@@_escape_name_str { {}/<>[] }
-\cs_new_protected_nopar:Npn \@@_convert_escape_name:
+\cs_new_protected:Npn \@@_convert_escape_name:
{ \@@_convert_gmap:N \@@_escape_name_char:N }
\cs_new:Npn \@@_escape_name_char:N #1
{
@@ -1846,7 +1824,7 @@
%<*string>
\str_const:Nx \c_@@_escape_string_str
{ \c_backslash_str ( ) }
-\cs_new_protected_nopar:Npn \@@_convert_escape_string:
+\cs_new_protected:Npn \@@_convert_escape_string:
{ \@@_convert_gmap:N \@@_escape_string_char:N }
\cs_new:Npn \@@_escape_string_char:N #1
{
@@ -1890,7 +1868,7 @@
% different characters.
% \begin{macrocode}
%<*url>
-\cs_new_protected_nopar:Npn \@@_convert_escape_url:
+\cs_new_protected:Npn \@@_convert_escape_url:
{ \@@_convert_gmap:N \@@_escape_url_char:N }
\cs_new:Npn \@@_escape_url_char:N #1
{
@@ -1974,7 +1952,7 @@
% construction |\c_minus_one + \c_zero *| removes the spurious initial
% continuation byte (better methods welcome).
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_convert_encode_utf8: }
+\cs_new_protected:cpn { @@_convert_encode_utf8: }
{ \@@_convert_gmap_internal:N \@@_encode_utf_viii_char:n }
\cs_new:Npn \@@_encode_utf_viii_char:n #1
{
@@ -2148,7 +2126,7 @@
% auxiliary, which raises the appropriate error flag before ending the
% mapping.
% \begin{macrocode}
-\cs_new_protected_nopar:cpn { @@_convert_decode_utf8: }
+\cs_new_protected:cpn { @@_convert_decode_utf8: }
{
\flag_clear:n { str_error }
\flag_clear:n { str_missing }
@@ -2235,7 +2213,7 @@
\flag_raise:n { str_error }
\int_use:N \c_@@_replacement_char_int
}
-\cs_new_nopar:Npn \@@_decode_utf_viii_end:
+\cs_new:Npn \@@_decode_utf_viii_end:
{
\s__tl
\flag_raise:n { str_missing }
@@ -2295,14 +2273,14 @@
% compute the remainder, and output two bytes for the quotient and
% remainder.
% \begin{macrocode}
- \cs_new_protected_nopar:cpn { @@_convert_encode_utf16: }
+ \cs_new_protected:cpn { @@_convert_encode_utf16: }
{
\@@_encode_utf_xvi_aux:N \@@_output_byte_pair_be:n
\tl_gput_left:Nx \g_@@_result_tl { ^^fe ^^ff }
}
- \cs_new_protected_nopar:cpn { @@_convert_encode_utf16be: }
+ \cs_new_protected:cpn { @@_convert_encode_utf16be: }
{ \@@_encode_utf_xvi_aux:N \@@_output_byte_pair_be:n }
- \cs_new_protected_nopar:cpn { @@_convert_encode_utf16le: }
+ \cs_new_protected:cpn { @@_convert_encode_utf16le: }
{ \@@_encode_utf_xvi_aux:N \@@_output_byte_pair_le:n }
\cs_new_protected:Npn \@@_encode_utf_xvi_aux:N #1
{
@@ -2423,11 +2401,11 @@
% little-endian, then loops over the string using
% \cs{@@_decode_utf_xvi_pair:NN} described below.
% \begin{macrocode}
- \cs_new_protected_nopar:cpn { @@_convert_decode_utf16be: }
+ \cs_new_protected:cpn { @@_convert_decode_utf16be: }
{ \@@_decode_utf_xvi:Nw 1 \g_@@_result_tl \s__stop }
- \cs_new_protected_nopar:cpn { @@_convert_decode_utf16le: }
+ \cs_new_protected:cpn { @@_convert_decode_utf16le: }
{ \@@_decode_utf_xvi:Nw 2 \g_@@_result_tl \s__stop }
- \cs_new_protected_nopar:cpn { @@_convert_decode_utf16: }
+ \cs_new_protected:cpn { @@_convert_decode_utf16: }
{
\exp_after:wN \@@_decode_utf_xvi_bom:NN
\g_@@_result_tl \s__stop \s__stop \s__stop
@@ -2606,14 +2584,14 @@
% little-endian encodings are very similar, but the
% \cs{@@_output_byte:n} instructions are reversed.
% \begin{macrocode}
- \cs_new_protected_nopar:cpn { @@_convert_encode_utf32: }
+ \cs_new_protected:cpn { @@_convert_encode_utf32: }
{
\@@_convert_gmap_internal:N \@@_encode_utf_xxxii_be:n
\tl_gput_left:Nx \g_@@_result_tl { ^^00 ^^00 ^^fe ^^ff }
}
- \cs_new_protected_nopar:cpn { @@_convert_encode_utf32be: }
+ \cs_new_protected:cpn { @@_convert_encode_utf32be: }
{ \@@_convert_gmap_internal:N \@@_encode_utf_xxxii_be:n }
- \cs_new_protected_nopar:cpn { @@_convert_encode_utf32le: }
+ \cs_new_protected:cpn { @@_convert_encode_utf32le: }
{ \@@_convert_gmap_internal:N \@@_encode_utf_xxxii_le:n }
\cs_new:Npn \@@_encode_utf_xxxii_be:n #1
{
@@ -2710,11 +2688,11 @@
% In the ending code, we check that there remains no byte: there
% should be nothing left until the first \cs{s__stop}. Break the map.
% \begin{macrocode}
- \cs_new_protected_nopar:cpn { @@_convert_decode_utf32be: }
+ \cs_new_protected:cpn { @@_convert_decode_utf32be: }
{ \@@_decode_utf_xxxii:Nw 1 \g_@@_result_tl \s__stop }
- \cs_new_protected_nopar:cpn { @@_convert_decode_utf32le: }
+ \cs_new_protected:cpn { @@_convert_decode_utf32le: }
{ \@@_decode_utf_xxxii:Nw 2 \g_@@_result_tl \s__stop }
- \cs_new_protected_nopar:cpn { @@_convert_decode_utf32: }
+ \cs_new_protected:cpn { @@_convert_decode_utf32: }
{
\exp_after:wN \@@_decode_utf_xxxii_bom:NNNN \g_@@_result_tl
\s__stop \s__stop \s__stop \s__stop \s__stop
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 189ea896cc0..309c57a0f2e 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 6439 2016-03-23 12:03:41Z joseph $
+\GetIdInfo$Id: l3str-format.dtx 6589 2016-06-13 11:11:55Z joseph $
{L3 Experimental string formatting}
%</driver|package>
%<*driver>
@@ -448,7 +448,7 @@
% Call \cs{@@_tl:NNNnnNn} to read the parsed \meta{format
% specification}. Then convert the result to a string.
% \begin{macrocode}
-\cs_new_nopar:Npn \tl_format:Nn { \exp_args:No \tl_format:nn }
+\cs_new:Npn \tl_format:Nn { \exp_args:No \tl_format:nn }
\cs_generate_variant:Nn \tl_format:Nn { c }
\cs_new:Npn \tl_format:nn #1#2
{
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 b33d81aedb2..838da42e278 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-analysis.dtx
@@ -35,7 +35,7 @@
%
%<*driver|package>
\RequirePackage{expl3}
-\GetIdInfo$Id: l3tl-analysis.dtx 6443 2016-03-24 10:59:09Z joseph $
+\GetIdInfo$Id: l3tl-analysis.dtx 6589 2016-06-13 11:11:55Z joseph $
{L3 Experimental token lists analysis}
%</driver|package>
%<*driver>
@@ -280,7 +280,7 @@
% only be assumed to work for begin-group and end-group character
% tokens. It produces a number in the form |`|\meta{char}.
% \begin{macrocode}
-\cs_new_nopar:Npn \@@_extract_charcode:
+\cs_new:Npn \@@_extract_charcode:
{
\exp_after:wN \@@_extract_charcode_aux:w
\token_to_meaning:N \l_@@_token
@@ -488,7 +488,7 @@
% \begin{macro}[int]{\@@_a_loop:w}
% Read one character and check its type.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_a_loop:w
+\cs_new_protected:Npn \@@_a_loop:w
{ \tex_futurelet:D \l_@@_token \@@_a_type:w }
% \end{macrocode}
% \end{macro}
@@ -510,7 +510,7 @@
% over \cs{l_@@_token} if it matches with one of the
% character tokens (hence is not a primitive conditional).
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_a_type:w
+\cs_new_protected:Npn \@@_a_type:w
{
\l_@@_type_int =
\if_meaning:w \l_@@_token \c_space_token
@@ -558,14 +558,14 @@
% so that the second pass does not need to test the meaning of tokens,
% only strings.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_a_space:w
+\cs_new_protected:Npn \@@_a_space:w
{
\tex_afterassignment:D \@@_a_space_test:w
\exp_after:wN \cs_set_eq:NN
\exp_after:wN \l_@@_char_token
\token_to_str:N
}
-\cs_new_protected_nopar:Npn \@@_a_space_test:w
+\cs_new_protected:Npn \@@_a_space_test:w
{
\if_meaning:w \l_@@_char_token \c_space_token
\tex_toks:D \l_@@_index_int { \exp_not:n { ~ } }
@@ -597,11 +597,11 @@
\group_begin:
\char_set_catcode_group_begin:N \^^@
\char_set_catcode_group_end:N \^^E
- \cs_new_protected_nopar:Npn \@@_a_bgroup:w
+ \cs_new_protected:Npn \@@_a_bgroup:w
{ \@@_a_group:nw { \exp_after:wN ^^@ \if_false: ^^E \fi: } }
\char_set_catcode_group_begin:N \^^B
\char_set_catcode_group_end:N \^^@
- \cs_new_protected_nopar:Npn \@@_a_egroup:w
+ \cs_new_protected:Npn \@@_a_egroup:w
{ \@@_a_group:nw { \if_false: ^^B \fi: ^^@ } }
\group_end:
\cs_new_protected:Npn \@@_a_group:nw #1
@@ -616,7 +616,7 @@
\exp_after:wN \l_@@_char_token
\token_to_str:N
}
-\cs_new_protected_nopar:Npn \@@_a_group_test:w
+\cs_new_protected:Npn \@@_a_group_test:w
{
\if_charcode:w \l_@@_token \l_@@_char_token
\@@_a_store:
@@ -660,7 +660,7 @@
% Finally, we check whether we reached the last closing brace, in which
% case we stop by disabling the looping function (locally).
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_a_store:
+\cs_new_protected:Npn \@@_a_store:
{
\tex_advance:D \l_@@_nesting_int \l_@@_type_int
\if_int_compare:w \tex_lccode:D \c_zero = \c_thirty_two
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 db33b260adc..50a67c3858f 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/05/14]
-%<package>\@ifpackagelater{expl3}{2016/05/14}
+\RequirePackage{expl3}[2016/10/19]
+%<package>\@ifpackagelater{expl3}{2016/10/19}
%<package> {}
%<package> {%
%<package> \PackageError{l3tl-build}{Support package l3kernel too old}
@@ -49,7 +49,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3tl-build.dtx 6492 2016-05-14 20:27:55Z joseph $
+\GetIdInfo$Id: l3tl-build.dtx 6730 2016-10-19 11:19:38Z joseph $
{L3 Experimental token list construction}
%</driver|package>
%<*driver>
@@ -205,7 +205,7 @@
% expanding to |\the\toks#10...\the\toks#19|, but this should be kept
% for much later.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_unpack:
+\cs_new_protected:Npn \@@_unpack:
{
\tl_put_right:Nx \l_@@_result_tl
{
@@ -240,18 +240,18 @@
% \cs{@@_end:} for details). Then initialize the start index and
% the current index at zero, and empty the \texttt{result} token list.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@:Nw
+\cs_new_protected:Npn \@@:Nw
{ \@@_aux:NNw \tl_set:Nn }
-\cs_new_protected_nopar:Npn \@@_x:Nw
+\cs_new_protected:Npn \@@_x:Nw
{ \@@_aux:NNw \tl_set:Nx }
-\cs_new_protected_nopar:Npn \__tl_gbuild:Nw
+\cs_new_protected:Npn \__tl_gbuild:Nw
{ \@@_aux:NNw \tl_gset:Nn }
-\cs_new_protected_nopar:Npn \__tl_gbuild_x:Nw
+\cs_new_protected:Npn \__tl_gbuild_x:Nw
{ \@@_aux:NNw \tl_gset:Nx }
\cs_new_protected:Npn \@@_aux:NNw #1#2
{
\group_begin:
- \cs_set_nopar:Npn \@@_end_assignment:n
+ \cs_set:Npn \@@_end_assignment:n
{ \group_end: #1 #2 }
\int_zero:N \l_@@_start_index_int
\int_zero:N \l_@@_index_int
@@ -271,7 +271,7 @@
% set it to a function which would clean up the contents of
% \cs{l_@@_result_tl}.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_end:
+\cs_new_protected:Npn \@@_end:
{
\@@_unpack:
\exp_args:No
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
index a35de8f7643..70147a113d9 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/05/14]
-%<package>\@ifpackagelater{expl3}{2016/05/14}
+\RequirePackage{expl3}[2016/10/19]
+%<package>\@ifpackagelater{expl3}{2016/10/19}
%<package> {}
%<package> {%
%<package> \PackageError{l3galley}{Support package l3kernel too old}
@@ -51,7 +51,7 @@
%<package> }%
%<package> \endinput
%<package> }
-\GetIdInfo$Id: l3galley.dtx 6493 2016-05-14 21:08:13Z joseph $
+\GetIdInfo$Id: l3galley.dtx 6730 2016-10-19 11:19:38Z joseph $
{L3 Experimental galley code}
%</driver|package>
%<*driver>
@@ -744,9 +744,16 @@
% Settings for application by the galley respect the usual \TeX{} grouping and
% so are all local variables.
%
+% \begin{variable}{\g_@@_cutout_active_bool, \g_@@_cutout_active_bool}
+% \begin{macrocode}
+\bool_new:N \g_@@_cutout_active_bool
+\bool_new:N \l_@@_cutout_active_bool
+% \end{macrocode}
+% \end{variable}
+%
% \begin{variable}
% {\l_@@_cutout_left_indent_seq, \l_@@_cutout_right_indent_seq}
-% Essentially scratch space, used when setting up a cutout in a paragrph,
+% Essentially scratch space, used when setting up a cutout in a paragraph,
% but named as there is quite a bit to do in that code.
% \begin{macrocode}
\seq_new:N \l_@@_cutout_left_indent_seq
@@ -982,14 +989,25 @@
% galley level must form a group: galley levels are tied to vertical
% boxes and so this is a reasonable requirements.
%
+% \begin{variable}{\l_@@_group_level_int}
+% The top group level for the galley needs to be known to allow
+% some data structures to be reset correctly: they can only be
+% fully cleared at the outer level.
+% \begin{macrocode}
+\int_new:N \l_@@_group_level_int
+% \end{macrocode}
+% \end{variable}
+%
% \begin{macro}{\@@_initialise_variables:}
% At the start of a galley level the global variables need to be reset to
% standard values. For example, the measure is set to the galley width and
% any paragraph shape is cleared.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_initialise_variables:
+\cs_new_protected:Npn \@@_initialise_variables:
{
+ \int_set:Nn \l_@@_group_level_int { \etex_currentgrouplevel:D }
\bool_gset_true:N \g_@@_begin_level_bool
+ \bool_gset_false:N \g_@@_cutout_active_bool
\seq_gclear:N \g_@@_cutout_left_seq
\seq_gclear:N \g_@@_cutout_right_seq
\tl_gclear:N \g_@@_interpar_penalty_user_tl
@@ -1012,10 +1030,10 @@
% \begin{macro}{\@@_initialise_settings:}
% This sets the local values of the various galley settings. The
% flag \cs{l_@@_parshape_multipar_bool} is set \texttt{true} here
-% as it allows an efficency saving in parshape setting: only
+% as it allows an efficiency saving in parshape setting: only
% when it is actively set \texttt{false} is action needed.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_initialise_settings:
+\cs_new_protected:Npn \@@_initialise_settings:
{
\bool_set_true:N \l_@@_parshape_multipar_bool
\seq_clear:N \l_@@_parshape_left_indent_seq
@@ -1031,10 +1049,12 @@
% Saving and restoring parameters is carried out by a series of copy
% functions.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_save_parameters:
+\cs_new_protected:Npn \@@_save_parameters:
{
\bool_set_eq:NN \l_@@_begin_level_bool
\g_@@_begin_level_bool
+ \bool_set_eq:NN \l_@@_cutout_active_bool
+ \g_@@_cutout_active_bool
\seq_set_eq:NN \l_@@_cutout_left_seq
\g_@@_cutout_left_seq
\seq_set_eq:NN \l_@@_cutout_right_seq
@@ -1064,10 +1084,12 @@
\tl_set_eq:NN \l_@@_whatsit_next_tl
\g_galley_whatsit_next_tl
}
-\cs_new_protected_nopar:Npn \@@_restore_parameters:
+\cs_new_protected:Npn \@@_restore_parameters:
{
\bool_gset_eq:NN \g_@@_begin_level_bool
\l_@@_begin_level_bool
+ \bool_gset_eq:NN \g_@@_cutout_active_bool
+ \l_@@_cutout_active_bool
\seq_gset_eq:NN \g_@@_cutout_left_seq
\l_@@_cutout_left_seq
\seq_gset_eq:NN \g_@@_cutout_right_seq
@@ -1106,7 +1128,7 @@
% settings, starting a group then initialising both the local and global
% variables.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \galley_level:
+\cs_new_protected:Npn \galley_level:
{
\@@_save_parameters:
\group_begin:
@@ -1122,7 +1144,7 @@
% must come in a fixed location. All of this relies on the
% \enquote{color safe} group used inside a box.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_level_end:
+\cs_new_protected:Npn \@@_level_end:
{
\par
\@@_restore_parameters:
@@ -1144,13 +1166,13 @@
% \begin{macro}{\galley_par:}
% \begin{macro}[aux]{\@@_par_auxi:, \@@_par_auxii:, \@@_par_auxiii:}
% \begin{macro}[aux]{\@@_par_aux:N}
-% \begin{macro}[int]{\@@_par_set_cutout:, \@@_par_update_cutout:}
+% \begin{macro}[int]{\@@_par_update_cutout:}
% The idea here is to expand the next token in exactly the same way as \TeX{}
% would do anyway. The \texttt{f}-type expansion will ignore any protection,
% but will stop at a scan marker. Thus the code can test for an
% \enquote{omit paragraph} marker.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \galley_par:
+\cs_new_protected:Npn \galley_par:
{
\s__par_omit
\exp_after:wN \@@_par_auxi: \exp:w \exp_end_continue_f:w
@@ -1175,7 +1197,7 @@
% \cs{etex_interlinepenalties:D}). In vertical mode, that means just
% inserting the primitive.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_par_auxii:
+\cs_new_protected:Npn \@@_par_auxii:
{
\mode_if_vertical:TF
{
@@ -1194,7 +1216,8 @@
% \begin{macrocode}
{
\g_galley_par_end_hook_tl
- \@@_par_set_cutout:
+ \bool_if:NT \g_@@_cutout_active_bool
+ { \@@_parshape_set: }
\group_begin:
\tex_par:D
\group_end:
@@ -1221,22 +1244,26 @@
\tex_penalty:D \c_ten_thousand
}
% \end{macrocode}
-% When cutouts are active, there is a need to set the paragraph shape
-% \enquote{just in time}. After the typesetting, the lines remaining in
-% the cutout has to be updated for the next run. This is all done for
-% each paragraph to avoid any grouping issues and without needing to set
-% \cs{tex_parshape:n} globally.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_par_set_cutout:
- {
- \bool_if:nF
- {
- \seq_if_empty_p:N \g_@@_cutout_left_seq
- && \seq_if_empty_p:N \g_@@_cutout_right_seq
- }
- { \@@_parshape_set: }
- }
-\cs_new_protected_nopar:Npn \@@_par_update_cutout:
+% Once a cutout has been set, properly tidying up needs some work. The
+% cutout is applied \enquote{just in time} at the start of each paragraph
+% (see above). After the paragraph, the consumed lines are removed from
+% the tracking sequences and the paragraph shape is reset. The latter step
+% is required as we do not set the paragraph shape for every paragraph.
+% Once the two sequences are empty, there is no cutout to apply. However,
+% it can still be \enquote{active}. If a cutout is started then we have a
+% group, it is possible for the cutout to be entirely applied before the
+% end of the group. At that point, the two sequences show there is nothing
+% to do \emph{but} the active paragraph shape still has some lines indented.
+% As we avoid setting the \tn{parshape} primitive for every paragraph,
+% the result of only checking the sequences would be that the cutout would
+% reappear after the group! Instead, we use a boolean and only set it
+% false once the group level is that of the galley itself. (There is a slight
+% inefficiency here in that we thus do set the paragraph shape for each
+% paragraph after a cutout until we reach the top group level of the galley.
+% That should be an acceptable hit given the extra work needed to track
+% reset-in-this-group as well.)
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_par_update_cutout:
{
\bool_if:nF
{
@@ -1251,12 +1278,20 @@
}
\@@_parshape_set:
}
+ \int_compare:nNnT \l_@@_group_level_int = \etex_currentgrouplevel:D
+ {
+ \bool_if:nT
+ {
+ \seq_if_empty_p:N \g_@@_cutout_left_seq
+ && \seq_if_empty_p:N \g_@@_cutout_right_seq
+ }
+ { \bool_gset_false:N \g_@@_cutout_active_bool }
+ }
}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\galley_par:n}
% Inserts tokens such that they are appended to the end of the last
@@ -1278,7 +1313,7 @@
% The meaning of the token \cs{par} itself starts off as a standard
% paragraph.
% \begin{macrocode}
-\cs_set_protected_nopar:Npn \par { \galley_par: }
+\cs_set_protected:Npn \par { \galley_par: }
% \end{macrocode}
% \end{macro}
%
@@ -1304,7 +1339,7 @@
% settings from the surrounding material. They may also start and end with
% special spacing values.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \galley_display_begin:
+\cs_new_protected:Npn \galley_display_begin:
{
\group_begin:
\@@_save_parameters:
@@ -1355,7 +1390,7 @@
% \cs{group_insert_after:N}. Resetting the meaning of the \cs{par} token
% needs to be carried out after the group used for the environment.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \galley_display_end:
+\cs_new_protected:Npn \galley_display_end:
{
\par
\@@_restore_parameters:
@@ -1369,7 +1404,7 @@
% \cs{par} token is then altered so that a check can be made to see if
% this assumption was correct.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_display_par_setup:
+\cs_new_protected:Npn \@@_display_par_setup:
{
\bool_gset_false:N \g_galley_omit_next_indent_bool
\cs_set_eq:NN \par \@@_display_par:
@@ -1388,7 +1423,7 @@
% cutout will have to be updated as it depends on the number of lines
% \TeX{} has typeset.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_display_par:
+\cs_new_protected:Npn \@@_display_par:
{
\cs_set_eq:NN \par \galley_par:
\mode_if_vertical:TF
@@ -1506,7 +1541,7 @@
% tidied up before sorting out any items which have been set on a
% single-paragraph basis.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_start_paragraph_std:
+\cs_new_protected:Npn \@@_start_paragraph_std:
{
\@@_start_paragraph_common:N \@@_insert_vertical_items:
\@@_insert_horizontal_items:
@@ -1523,7 +1558,7 @@
% must not add any vertical space as the start of the box unless there
% is a user space to insert.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_start_paragraph_first:
+\cs_new_protected:Npn \@@_start_paragraph_first:
{
\bool_gset_false:N \g_@@_begin_level_bool
\mode_if_horizontal:TF
@@ -1532,7 +1567,7 @@
\@@_insert_horizontal_items:
\@@_restore_running_parameters:
}
-\cs_new_protected_nopar:Npn \@@_insert_vspace_first:
+\cs_new_protected:Npn \@@_insert_vspace_first:
{
\tl_if_empty:NF \g_@@_interpar_vspace_user_tl
{ \skip_vertical:n { \g_@@_interpar_vspace_user_tl } }
@@ -1553,7 +1588,7 @@
% the inter-paragraph space is applied: only one space is ever added
% there.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_insert_vertical_items:
+\cs_new_protected:Npn \@@_insert_vertical_items:
{
\g_galley_whatsit_previous_tl
\tl_gclear:N \g_galley_whatsit_previous_tl
@@ -1583,7 +1618,7 @@
% Horizontal mode objects start with the whatsits for the next paragraph. An
% indent is then included if the removed box was not void.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_insert_horizontal_items:
+\cs_new_protected:Npn \@@_insert_horizontal_items:
{
\g_galley_whatsit_next_tl
\tl_gclear:N \g_galley_whatsit_next_tl
@@ -1604,7 +1639,7 @@
% variable in which the appropriate assignments are stored. The
% list can then be cleared.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_restore_running_parameters:
+\cs_new_protected:Npn \@@_restore_running_parameters:
{
\g_galley_restore_running_tl
\tl_gclear:N \g_galley_restore_running_tl
@@ -1669,12 +1704,12 @@
% Setting the paragraph shape is mainly a question of converting the input.
% First, though, a flag is set.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \galley_parshape_set_multi:nnnN
+\cs_new_protected:Npn \galley_parshape_set_multi:nnnN
{
\bool_set_true:N \l_@@_parshape_multipar_bool
\@@_parshape_set:nnnN
}
-\cs_new_protected_nopar:Npn \galley_parshape_set_single:nnnN
+\cs_new_protected:Npn \galley_parshape_set_single:nnnN
{
\bool_set_false:N \l_@@_parshape_multipar_bool
\@@_parshape_set:nnnN
@@ -1725,9 +1760,9 @@
% the same idea with one or two very specific points of difference. As such,
% the two interface functions both use the same implementation.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \galley_cutout_left:nn
+\cs_new_protected:Npn \galley_cutout_left:nn
{ \@@_cutout:nnn { left } }
-\cs_new_protected_nopar:Npn \galley_cutout_right:nn
+\cs_new_protected:Npn \galley_cutout_right:nn
{ \@@_cutout:nnn { right } }
% \end{macrocode}
% The cutout information needs to be saved in in the appropriate sequence.
@@ -1757,6 +1792,8 @@
{ \@@_cutout:Nc \g_@@_tmpa_seq { g_@@_cutout_ #1 _seq } }
\seq_gset_eq:cN { g_@@_cutout_ #1 _seq } \l_@@_tmp_seq
}
+ \seq_if_empty:cF { g_@@_cutout_ #1 _seq }
+ { \bool_gset_true:N \g_@@_cutout_active_bool }
}
\cs_new_protected:Npn \@@_cutout:NN #1#2
{
@@ -1796,31 +1833,19 @@
% code, the approach taken here is always to reset the entire shape. This
% is done in three stages, one for each conceptual element.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_parshape_set:
+\cs_new_protected:Npn \@@_parshape_set:
{
\@@_parshape_set_margins:
\@@_parshape_set_indents:
\@@_parshape_set_cutouts:
- \tl_set:Nx \l_@@_tmp_tl
- {
- \__int_value:w \tex_parshape:D
- \int_step_function:nnnN \c_one \c_one \tex_parshape:D
- \tmp
- }
-% \tl_show:N \l_@@_tmp_tl
}
- \def\tmp#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,
% or they are not. This is always set even if there are other elements to
% apply as these settings are very fast, so it is not worth doing a check
% at this stage for further parts to apply.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_parshape_set_margins:
+\cs_new_protected:Npn \@@_parshape_set_margins:
{
\bool_if:nTF
{
@@ -1842,7 +1867,7 @@
% will always apply. The margins are reapplied at this stage as part of
% the auxiliary for the calculation of indentation.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_parshape_set_indents:
+\cs_new_protected:Npn \@@_parshape_set_indents:
{
\bool_if:nF
{
@@ -1878,12 +1903,12 @@
% temporary sequences so that they can safely be \enquote{chomped} by
% \cs{@@_cutout:NN}. We then construct the overall list of indents required
% and store them in dedicated temporary storage. That is necessary as to get
-% the indents corret on both sides is to use a thread mapping. That also
+% the indents correct on both sides is to use a thread mapping. That also
% means that the two sequences need to be of the same length. That is
% done by finding the length difference then applying an auxiliary to
% the shorter sequence.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_parshape_set_cutouts:
+\cs_new_protected:Npn \@@_parshape_set_cutouts:
{
\bool_if:nF
{
@@ -2363,7 +2388,7 @@
% so an \texttt{f}-type expansion is used to make life a little less
% complex.
% \begin{macrocode}
-\cs_new_protected_nopar:Npn \@@_calc_interline_penalties:
+\cs_new_protected:Npn \@@_calc_interline_penalties:
{
\exp_args:Nff \@@_calc_interline_penalties:nn
{
@@ -2466,7 +2491,10 @@
}
}
\cs_new:Npn \@@_save_display_widow_penalties:n #1
- { \__int_value:w \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
@@ -2483,7 +2511,7 @@
% 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:
+\cs_new_protected:Npn \galley_interline_penalty:
{ \__int_value:w \etex_interlinepenalties:D \etex_interlinepenalties:D \c_zero }
% \end{macrocode}
% \end{macro}
@@ -2508,7 +2536,7 @@
% structures rather than directly onto the main vertical list. Other
% than that it is the same as the \LaTeXe{} version.
% \begin{macrocode}
-\cs_set_nopar:Npn \clearpage
+\cs_set:Npn \clearpage
{
\mode_if_vertical:T
{
@@ -2530,7 +2558,7 @@
% In package mode, some of \LaTeXe{}'s functions are re-implemented using
% the galley system. Not all of the optional arguments currently work!
% \begin{macrocode}
-\cs_set_nopar:Npn \nobreak
+\cs_set_protected:Npn \nobreak
{ \bool_gset_true:N \g_galley_no_break_next_bool }
% \end{macrocode}
% The \tn{noindent} primitive will causes problems, as it is used by
@@ -2539,7 +2567,7 @@
% need leave vertical mode, at the moment we stick with the primitive as
% well as setting the galley flag.
% \begin{macrocode}
-\cs_set_protected_nopar:Npn \noindent
+\cs_set_protected:Npn \noindent
{
\tex_noindent:D
\bool_gset_false:N \g_galley_omit_next_indent_bool
@@ -2602,15 +2630,15 @@
% \begin{macro}{\addpenalty, \addvspace}
% The mechanism here is entirely different, but at least this works!
% \begin{macrocode}
-\cs_set_nopar:Npn \addpenalty { \galley_penalty_add_single:n }
-\cs_set_nopar:Npn \addvspace { \galley_vspace_max_single:n }
+\cs_set_protected:Npn \addpenalty { \galley_penalty_add_single:n }
+\cs_set_protected:Npn \addvspace { \galley_vspace_max_single:n }
% \end{macrocode}
%\end{macro}
%
% \begin{macro}{\@afterheading}
% Set some flags and hope for the best!
% \begin{macrocode}
-\cs_set_nopar:Npn \@afterheading
+\cs_set_protected:Npn \@afterheading
{
\bool_gset_true:N \g_galley_no_break_next_bool
\if@afterindent
@@ -2626,7 +2654,7 @@
% shape is set in a different way. As a result, the label is part of the
% same paragraph as the main body, hence the need to leave vertical mode.
% \begin{macrocode}
-\cs_set:Npn \@hangfrom #1
+\cs_set_protected:Npn \@hangfrom #1
{
\bool_gset_true:N \g_galley_omit_next_indent_bool
\leavevmode