summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md9
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/README.md10
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdfbin316866 -> 316552 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdfbin0 -> 330475 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdfbin350118 -> 349820 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdfbin606058 -> 605919 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdfbin487310 -> 487003 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdfbin399806 -> 399497 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdfbin345120 -> 344819 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdfbin312007 -> 311695 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdfbin372487 -> 372183 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdfbin386209 -> 385903 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdfbin286031 -> 285723 bytes
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx420
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.ins60
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx4
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty167
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty2
41 files changed, 700 insertions, 38 deletions
diff --git a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
index 3e1132e2323..6025015b641 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
@@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2018-10-31]
+
+### Added
+
+- New module `l3cctab`
+
## [2018-10-26]
### Added
@@ -46,7 +52,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2018-10-26...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2018-10-31...HEAD
+[2018-10-31]: https://github.com/latex3/latex3/compare/2018-10-26...2018-10-31
[2018-10-26]: https://github.com/latex3/latex3/compare/2018-10-17...2018-10-26
[2018-10-17]: https://github.com/latex3/latex3/compare/2018-08-24...2018-10-17
[2018-08-24]: https://github.com/latex3/latex3/compare/2018-08-23...2018-08-24
diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md
index a4b64f4c480..62089f2e566 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/README.md
+++ b/Master/texmf-dist/doc/latex/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2018-10-26
+Release 2018-10-31
Overview
--------
@@ -22,6 +22,7 @@ updated at the same time.
Currently included in the CTAN release of l3experimental are the following
bundles:
* `l3benchmark`
+* `l3cctab`
* `l3color`
* `l3draw`
* `l3str`
@@ -35,6 +36,13 @@ bundles:
This module provides support for benchmarking the performance of code.
+`l3cctab`
+---------
+
+This module provides support for saving and restoring category codes
+_en masse_ in a table. This is supported for the 8-bit range for all engines,
+and for the entire Unicode range with LuaTeX.
+
`l3color`
---------
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
index fdba8a7f326..9991f06c98e 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
new file mode 100644
index 00000000000..9b42aff6c0b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
index f97380f7c0b..b94d4e17131 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
index a690900ff0b..64fea55e1d5 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
index ac1f48b6561..48d0abfe09d 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
index 399813253ea..7f0f0bdf6cc 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
index 9642528d56e..1105c746e82 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
index 40938a9c4de..c1220db3152 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
index a11157ff5ba..3ae6bc0ba22 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
index da434b2672b..d14902c9f7d 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
index 2762d0537c7..1db708d287c 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
index b8e976677da..8f3fc919b17 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -148,7 +148,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3benchmark}{2018-10-26}{}
+\ProvidesExplPackage{l3benchmark}{2018-10-31}{}
{L3 Experimental benchmarking}
%</package>
% \end{macrocode}
@@ -525,7 +525,7 @@
\int_compare:nTF { \g_@@_tictoc_int == 0 }
{
\sys_gzero_timer:
- \@@_tic:n { 0 }
+ \@@_tic:
}
{ \@@_tic: }
}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
new file mode 100644
index 00000000000..5c1db2f6aaa
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
@@ -0,0 +1,420 @@
+% \iffalse meta-comment
+%
+%% File: l3cctab.dtx Copyright (C) 2018 The LaTeX3 Project
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% http://www.latex-project.org/lppl.txt
+%
+% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver|package>
+\RequirePackage{expl3}
+%</driver|package>
+%<*driver>
+\documentclass[full]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3cctab} package\\ Experimental category code tables^^A
+% }
+%
+% \author{^^A
+% The \LaTeX3 Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2018-10-31}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{\pkg{l3cctab} documentation}
+%
+% A category code table enables rapid switching of all category codes in
+% one operation. For \LuaTeX{}, this is possible over the entire Unicode
+% range. For other engines, only the $8$-bit range ($0$-$255$) is covered by
+% such tables.
+%
+% \begin{function}{\cctab_new:N}
+% \begin{syntax}
+% \cs{cctab_new:N} \meta{category code table}
+% \end{syntax}
+% Creates a new category code table, initially with the codes as
+% used by \IniTeX{}.
+% \end{function}
+%
+% \begin{function}{\cctab_const:Nn}
+% \begin{syntax}
+% \cs{cctab_const:Nn} \meta{category code table} \Arg{category code set up}
+% \end{syntax}
+% Creates a new category code table and applies the
+% \meta{category code set up} on top of prevailing settings, then saves
+% as a constant table.
+% \end{function}
+%
+% \begin{function}{\cctab_gset:Nn}
+% \begin{syntax}
+% \cs{cctab_gset:Nn} \meta{category code table} \Arg{category code set up}
+% \end{syntax}
+% Sets the \meta{category code table} to apply the category codes
+% which apply when the prevailing régime is modified by the
+% \meta{category code set up}. Thus within a standard code block
+% the starting point will be the code applied by \cs{c_code_cctab}.
+% The assignment of the table is global: the underlying primitive does
+% not respect grouping.
+% \end{function}
+%
+% \begin{function}{\cctab_begin:N}
+% \begin{syntax}
+% \cs{cctab_begin:N} \meta{category code table}
+% \end{syntax}
+% Switches the category codes in force to those stored in the
+% \meta{category code table}. The prevailing codes before the
+% function is called are added to a stack, for use with
+% \cs{cctab_end:}.
+% \end{function}
+%
+% \begin{function}{\cctab_end:}
+% \begin{syntax}
+% \cs{cctab_end:}
+% \end{syntax}
+% Ends the scope of a \meta{category code table} started using
+% \cs{cctab_begin:N}, retuning the codes to those in force before the
+% matching \cs{cctab_begin:N} was used.
+% \end{function}
+%
+% \begin{variable}{\c_code_cctab}
+% Category code table for the code environment. This does not include
+% setting the behaviour of the line-end character, which is only
+% altered by \cs{ExplSyntaxOn}.
+% \end{variable}
+%
+% \begin{variable}{\c_document_cctab}
+% Category code table for a standard \LaTeX{} document. This does not
+% include setting the behaviour of the line-end character, which is
+% only altered by \cs{ExplSyntaxOff}.
+% \end{variable}
+%
+% \begin{variable}{\c_initex_cctab}
+% Category code table as set up by \IniTeX{}.
+% \end{variable}
+%
+% \begin{variable}{\c_other_cctab}
+% Category code table where all characters have category code $12$
+% (other).
+% \end{variable}
+%
+% \begin{variable}{\c_str_cctab}
+% Category code table where all characters have category code $12$
+% (other) with the exception of spaces, which have category code
+% $10$ (space).
+% \end{variable}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3cctab} implementation}
+%
+% \begin{macrocode}
+%<*initex|package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=cctab>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+\ProvidesExplPackage{l3cctab}{2018-10-31}{}
+ {L3 Experimental category code tables}
+%</package>
+% \end{macrocode}
+%
+% \begin{variable}{\g_@@_allocate_int}
+% \begin{variable}{\g_@@_stack_int}
+% \begin{variable}{\g_@@_stack_seq}
+% To allocate category code tables, both the read-only and stack
+% tables need to be followed. There is also a sequence stack for the
+% dynamic tables themselves.
+% \begin{macrocode}
+%<*initex>
+\int_new:N \g_@@_allocate_int
+\int_gset:Nn \g_@@_allocate_int { -1 }
+%</initex>
+\int_new:N \g_@@_stack_int
+\seq_new:N \g_@@_stack_seq
+% \end{macrocode}
+% \end{variable}
+% \end{variable}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_tmp_tl}
+% Scratch space.
+% \begin{macrocode}
+\tl_new:N \l_@@_tmp_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\cctab_new:N}
+% \begin{macro}{\cctab_begin:N}
+% \begin{macro}{\cctab_end:}
+% \begin{macro}{\cctab_gset:Nn}
+% As \LuaTeX{} offers engine support for category code tables, and this is
+% entirely lacking from the other engines, we need two complementary
+% approaches here. Rather than intermix them, we split the set up based on
+% engine. (Some future \XeTeX{} may add support, at which point the
+% conditional here would be subtly different.)
+%
+% First, the \LuaTeX{} case.
+% \begin{macrocode}
+\sys_if_engine_luatex:TF
+ {
+% \end{macrocode}
+% Creating a new category code table is done slightly differently
+% from other registers. Low-numbered tables are more efficiently-stored
+% than high-numbered ones. There is also a need to have a stack of
+% flexible tables as well as the set of read-only ones. To satisfy both
+% of these requirements, odd numbered tables are used for read-only
+% tables, and even ones for the stack. Here, therefore, the odd numbers
+% are allocated.
+% \begin{macrocode}
+ \cs_new_protected:Npn \cctab_new:N #1
+ {
+ \__kernel_chk_if_free_cs:N #1
+%<*initex>
+ \int_gadd:Nn \g_@@_allocate_int { 2 }
+ \int_compare:nNnTF
+ \g_@@_allocate_int < { \c_max_register_int + 1 }
+ {
+ \tex_global:D \tex_chardef:D #1 \g_@@_allocate_int
+ \tex_initcatcodetable:D #1
+ }
+ {
+ \__kernel_msg_fatal:nnx
+ { kernel } { out-of-registers } { cctab }
+ }
+%</initex>
+%<*package>
+ \newcatcodetable #1
+ \tex_initcatcodetable:D #1
+%</package>
+ }
+% \end{macrocode}
+% The aim here is to ensure that the saved tables are read-only. This is
+% done by using a stack of tables which are not read only, and actually
+% having them as \enquote{in use} copies.
+% \begin{macrocode}
+ \cs_new_protected:Npn \cctab_begin:N #1
+ {
+ \seq_gpush:Nx \g_@@_stack_seq { \tex_the:D \tex_catcodetable:D }
+ \tex_catcodetable:D #1
+ \int_gadd:Nn \g_@@_stack_int { 2 }
+ \int_compare:nNnT \g_@@_stack_int > \c_max_register_int
+ { \__kernel_msg_fatal:nn { kernel } { cctab-stack-full } }
+ \tex_savecatcodetable:D \g_@@_stack_int
+ \tex_catcodetable:D \g_@@_stack_int
+ }
+ \cs_new_protected:Npn \cctab_end:
+ {
+ \int_gsub:Nn \g_@@_stack_int { 2 }
+ \seq_if_empty:NTF \g_@@_stack_seq
+ { \tl_set:Nn \l_@@_tmp_tl { 0 } }
+ { \seq_gpop:NN \g_@@_stack_seq \l_@@_tmp_tl }
+ \tex_catcodetable:D \l_@@_tmp_tl \scan_stop:
+ }
+% \end{macrocode}
+% Category code tables are always global, so only one version is needed.
+% The set up here is simple, and means that at the point of use there is
+% no need to worry about escaping category codes.
+% \begin{macrocode}
+ \cs_new_protected:Npn \cctab_gset:Nn #1#2
+ {
+ \group_begin:
+ #2
+ \tex_savecatcodetable:D #1
+ \group_end:
+ }
+ }
+% \end{macrocode}
+% Now the case for other engines. Here, we use an integer array for each
+% table. The index base is out-by-one, so we have an internal function to
+% handle that. The rest of the approach here is pretty simple: use a stack
+% of tables, and save to them at each |begin|. Unlike the \LuaTeX{} case,
+% we can't accidentally alter a saved table, which makes life a little
+% easier.
+% \begin{macrocode}
+ {
+ \cs_new_protected:Npn \@@_gstore:Nnn #1#2#3
+ { \intarray_gset:Nnn #1 { #2 + 1 } {#3} }
+% \end{macrocode}
+% Following the \LuaTeX{} pattern, a new table starts with \IniTeX{} codes.
+% \begin{macrocode}
+ \cs_new_protected:Npn \cctab_new:N #1
+ {
+ \intarray_new:Nn #1 { 256 }
+ \int_step_inline:nn { 256 }
+ { \intarray_gset:Nnn #1 {##1} { 12 } }
+ \@@_gstore:Nnn #1 { 0 } { 9 }
+ \@@_gstore:Nnn #1 { 13 } { 5 }
+ \@@_gstore:Nnn #1 { 32 } { 10 }
+ \@@_gstore:Nnn #1 { 37 } { 14 }
+ \int_step_inline:nnn { 65 } { 90 }
+ { \intarray_gset:Nnn #1 {##1} { 11 } }
+ \@@_gstore:Nnn #1 { 92 } { 0 }
+ \int_step_inline:nnn { 97 } { 122 }
+ { \@@_gstore:Nnn #1 {##1} { 11 } }
+ \@@_gstore:Nnn #1 { 127 } { 15 }
+ }
+ \cs_new_protected:Npn \cctab_begin:N #1
+ {
+ \int_gadd:Nn \g_@@_stack_int { 1 }
+ \int_compare:nNnT \g_@@_stack_int > \c_max_register_int
+ { \__kernel_msg_fatal:nn { kernel } { cctab-stack-full } }
+ \cs_if_exist:cF { g_@@_ \int_use:N \g_@@_stack_int _cctab }
+ {
+ \intarray_new:cn
+ { g_@@_ \int_use:N \g_@@_stack_int _cctab }
+ { 256 }
+ }
+ \int_step_inline:nn { 256 }
+ {
+ \intarray_gset:cnn
+ { g_@@_ \int_use:N \g_@@_stack_int _cctab }
+ {##1}
+ { \char_value_catcode:n { ##1 - 1 } }
+ }
+ \int_step_inline:nn { 256 }
+ {
+ \char_set_catcode:nn { ##1 - 1 }
+ { \intarray_item:Nn #1 {##1} }
+ }
+ }
+ \cs_generate_variant:Nn \intarray_new:Nn { c }
+ \cs_generate_variant:Nn \intarray_gset:Nnn { c }
+ \cs_new_protected:Npn \cctab_end:
+ {
+ \int_step_inline:nn { 256 }
+ {
+ \char_set_catcode:nn { ##1 - 1 }
+ {
+ \intarray_item:cn
+ { g_@@_ \int_use:N \g_@@_stack_int _cctab }
+ {##1}
+ }
+ }
+ \int_gsub:Nn \g_@@_stack_int { 1 }
+ }
+ \cs_generate_variant:Nn \intarray_item:Nn { c }
+ \cs_new_protected:Npn \cctab_gset:Nn #1#2
+ {
+ \group_begin:
+ #2
+ \int_step_inline:nn { 256 }
+ {
+ \intarray_gset:Nnn #1 {##1}
+ { \char_value_catcode:n { ##1 - 1 } }
+ }
+ \group_end:
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{variable}{\g_@@_tmp_cctab}
+% Scratch space.
+% \begin{macrocode}
+\cctab_new:N \g_@@_tmp_cctab
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\cctab_const:Nn}
+% Creating constant tables is a bit tricky: we do it in a two part
+% fashion via a temporary one.
+% \begin{macrocode}
+\cs_new_protected:Npn \cctab_const:Nn #1#2
+ {
+ \cctab_gset:Nn \g_@@_tmp_cctab {#2}
+ \cs_new_eq:NN #1 \g_@@_tmp_cctab
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}
+% {
+% \c_code_cctab ,
+% \c_document_cctab ,
+% \c_initex_cctab ,
+% \c_other_cctab ,
+% \c_str_cctab
+% }
+% Creating category code tables is easy using the function above.
+% The \texttt{other} and \texttt{string} ones are done by completely
+% ignoring the existing codes as this makes life a lot less complex.
+% \begin{macrocode}
+\cctab_const:Nn \c_code_cctab { }
+\cctab_const:Nn \c_document_cctab
+ {
+ \char_set_catcode_space:n { 9 }
+ \char_set_catcode_space:n { 32 }
+ \char_set_catcode_other:n { 58 }
+ \char_set_catcode_math_subscript:n { 95 }
+ \char_set_catcode_active:n { 126 }
+ }
+\cctab_const:Nn \c_other_cctab
+ {
+ \int_step_inline:nnn { 0 } { 127 }
+ { \char_set_catcode_other:n {#1} }
+ }
+\cctab_const:Nn \c_str_cctab
+ {
+ \int_step_inline:nnn { 0 } { 127 }
+ { \char_set_catcode_other:n {#1} }
+ \char_set_catcode_space:n { 32 }
+ }
+% \end{macrocode}
+% \end{variable}
+%
+% \subsection{Messages}
+%
+% \begin{macrocode}
+\__kernel_msg_new:nnnn { kernel } { cctab-stack-full }
+ { The~category~code~table~stack~is~exhausted. }
+ {
+ LaTeX~has~been~asked~to~switch~to~a~new~category~code~table,~
+ but~there~is~no~more~space~to~do~this!
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</initex|package>
+% \end{macrocode}
+%
+%\end{implementation}
+%
+%\PrintIndex
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.ins b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.ins
new file mode 100644
index 00000000000..f3c0ad0a7ed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.ins
@@ -0,0 +1,60 @@
+\iffalse meta-comment
+
+File l3cctab.ins Copyright (C) 2018 The LaTeX3 Project
+
+It may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (LPPL), either version 1.3c of this
+license or (at your option) any later version. The latest version
+of this license is in the file
+
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+-----------------------------------------------------------------------
+
+The development version of the bundle can be found at
+
+ https://github.com/latex3/latex3
+
+for those people who are interested.
+
+-----------------------------------------------------------------------
+
+Any modification of this file should ensure that the copyright and
+license information is placed in the derived files.
+
+\fi
+
+\input l3docstrip.tex
+\askforoverwritefalse
+
+\preamble
+
+Copyright (C) 2018 The LaTeX3 Project
+
+It may be distributed and/or modified under the conditions of
+the LaTeX Project Public License (LPPL), either version 1.3c of
+this license or (at your option) any later version. The latest
+version of this license is in the file:
+
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+\endpreamble
+% stop docstrip adding \endinput
+\postamble
+\endpostamble
+
+\keepsilent
+
+\generate{\file{l3cctab.sty}
+ {
+ \from{l3cctab.dtx}{package}
+ }
+}
+
+\endbatchfile
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
index 0229f22627a..1e7f5813f19 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -263,7 +263,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3color}{2018-10-26}{}
+\ProvidesExplPackage{l3color}{2018-10-31}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
index 784c6c7c899..0326066f004 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
index 3412baa5dae..4d1c56c9fd9 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
index d83c101000e..2d51e741836 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
index c296720aef1..ceda4c7632d 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
index 573d49dde6f..4b0041524c2 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
index 89cb592f58b..ca7a83fbc78 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
index d7c8b753af0..f61d6a70572 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
index 6df64b2ab61..53c6e8c42e6 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
@@ -109,7 +109,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -1106,7 +1106,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3draw}{2018-10-26}{}
+\ProvidesExplPackage{l3draw}{2018-10-31}{}
{L3 Experimental core drawing support}
%</package>
% \end{macrocode}
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 fe08d395200..6d33d93bf0d 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -234,7 +234,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-convert}{2018-10-26}{}
+\ProvidesExplPackage{l3str-convert}{2018-10-31}{}
{L3 Experimental string encoding conversions}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index de7a66e9acb..45dd7c24f8d 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -162,7 +162,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2018-10-26}{}
+\ProvidesExplPackage{l3str-format}{2018-10-31}{}
{L3 Experimental string formatting}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
index 1955bfa7ecc..606b372e71e 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -134,7 +134,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3sys-shell}{2018-10-26}{}
+\ProvidesExplPackage{l3sys-shell}{2018-10-31}{}
{L3 Experimental system shell functions}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
index bc16947e21e..e2c14dbe332 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
@@ -54,7 +54,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -673,7 +673,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2018-10-26}{}
+\ProvidesExplPackage{xcoffins}{2018-10-31}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
index 0ea16096b1b..9369c668d02 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
@@ -59,7 +59,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -685,7 +685,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2018-10-26}{}
+\ProvidesExplPackage{l3galley}{2018-10-31}{}
{L3 Experimental galley code}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
index 47c72f83a5e..a92b0be9698 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Released 2018-10-26}
+% \date{Released 2018-10-31}
%
% \maketitle
%
@@ -732,7 +732,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2018-10-26}{}
+\ProvidesExplPackage{xgalley}{2018-10-31}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
index b761f3c948d..f9ed7d0c25c 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
@@ -20,7 +20,7 @@
%%
%% File: l3benchmark.dtx Copyright (C) 2011,2012,2014-2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2018-10-26}{}
+\ProvidesExplPackage{l3benchmark}{2018-10-31}{}
{L3 Experimental benchmarking}
\sys_if_engine_luatex:TF
{
@@ -258,7 +258,7 @@
\int_compare:nTF { \g__benchmark_tictoc_int == 0 }
{
\sys_gzero_timer:
- \__benchmark_tic:n { 0 }
+ \__benchmark_tic:
}
{ \__benchmark_tic: }
}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
new file mode 100644
index 00000000000..a673ae3beeb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
@@ -0,0 +1,167 @@
+%%
+%% This is file `l3cctab.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3cctab.dtx (with options: `package')
+%%
+%% Copyright (C) 2018 The LaTeX3 Project
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3experimental bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3cctab.dtx Copyright (C) 2018 The LaTeX3 Project
+\RequirePackage{expl3}
+\ProvidesExplPackage{l3cctab}{2018-10-31}{}
+ {L3 Experimental category code tables}
+\int_new:N \g__cctab_stack_int
+\seq_new:N \g__cctab_stack_seq
+\tl_new:N \l__cctab_tmp_tl
+\sys_if_engine_luatex:TF
+ {
+ \cs_new_protected:Npn \cctab_new:N #1
+ {
+ \__kernel_chk_if_free_cs:N #1
+ \newcatcodetable #1
+ \tex_initcatcodetable:D #1
+ }
+ \cs_new_protected:Npn \cctab_begin:N #1
+ {
+ \seq_gpush:Nx \g__cctab_stack_seq { \tex_the:D \tex_catcodetable:D }
+ \tex_catcodetable:D #1
+ \int_gadd:Nn \g__cctab_stack_int { 2 }
+ \int_compare:nNnT \g__cctab_stack_int > \c_max_register_int
+ { \__kernel_msg_fatal:nn { kernel } { cctab-stack-full } }
+ \tex_savecatcodetable:D \g__cctab_stack_int
+ \tex_catcodetable:D \g__cctab_stack_int
+ }
+ \cs_new_protected:Npn \cctab_end:
+ {
+ \int_gsub:Nn \g__cctab_stack_int { 2 }
+ \seq_if_empty:NTF \g__cctab_stack_seq
+ { \tl_set:Nn \l__cctab_tmp_tl { 0 } }
+ { \seq_gpop:NN \g__cctab_stack_seq \l__cctab_tmp_tl }
+ \tex_catcodetable:D \l__cctab_tmp_tl \scan_stop:
+ }
+ \cs_new_protected:Npn \cctab_gset:Nn #1#2
+ {
+ \group_begin:
+ #2
+ \tex_savecatcodetable:D #1
+ \group_end:
+ }
+ }
+ {
+ \cs_new_protected:Npn \__cctab_gstore:Nnn #1#2#3
+ { \intarray_gset:Nnn #1 { #2 + 1 } {#3} }
+ \cs_new_protected:Npn \cctab_new:N #1
+ {
+ \intarray_new:Nn #1 { 256 }
+ \int_step_inline:nn { 256 }
+ { \intarray_gset:Nnn #1 {##1} { 12 } }
+ \__cctab_gstore:Nnn #1 { 0 } { 9 }
+ \__cctab_gstore:Nnn #1 { 13 } { 5 }
+ \__cctab_gstore:Nnn #1 { 32 } { 10 }
+ \__cctab_gstore:Nnn #1 { 37 } { 14 }
+ \int_step_inline:nnn { 65 } { 90 }
+ { \intarray_gset:Nnn #1 {##1} { 11 } }
+ \__cctab_gstore:Nnn #1 { 92 } { 0 }
+ \int_step_inline:nnn { 97 } { 122 }
+ { \__cctab_gstore:Nnn #1 {##1} { 11 } }
+ \__cctab_gstore:Nnn #1 { 127 } { 15 }
+ }
+ \cs_new_protected:Npn \cctab_begin:N #1
+ {
+ \int_gadd:Nn \g__cctab_stack_int { 1 }
+ \int_compare:nNnT \g__cctab_stack_int > \c_max_register_int
+ { \__kernel_msg_fatal:nn { kernel } { cctab-stack-full } }
+ \cs_if_exist:cF { g__cctab_ \int_use:N \g__cctab_stack_int _cctab }
+ {
+ \intarray_new:cn
+ { g__cctab_ \int_use:N \g__cctab_stack_int _cctab }
+ { 256 }
+ }
+ \int_step_inline:nn { 256 }
+ {
+ \intarray_gset:cnn
+ { g__cctab_ \int_use:N \g__cctab_stack_int _cctab }
+ {##1}
+ { \char_value_catcode:n { ##1 - 1 } }
+ }
+ \int_step_inline:nn { 256 }
+ {
+ \char_set_catcode:nn { ##1 - 1 }
+ { \intarray_item:Nn #1 {##1} }
+ }
+ }
+ \cs_generate_variant:Nn \intarray_new:Nn { c }
+ \cs_generate_variant:Nn \intarray_gset:Nnn { c }
+ \cs_new_protected:Npn \cctab_end:
+ {
+ \int_step_inline:nn { 256 }
+ {
+ \char_set_catcode:nn { ##1 - 1 }
+ {
+ \intarray_item:cn
+ { g__cctab_ \int_use:N \g__cctab_stack_int _cctab }
+ {##1}
+ }
+ }
+ \int_gsub:Nn \g__cctab_stack_int { 1 }
+ }
+ \cs_generate_variant:Nn \intarray_item:Nn { c }
+ \cs_new_protected:Npn \cctab_gset:Nn #1#2
+ {
+ \group_begin:
+ #2
+ \int_step_inline:nn { 256 }
+ {
+ \intarray_gset:Nnn #1 {##1}
+ { \char_value_catcode:n { ##1 - 1 } }
+ }
+ \group_end:
+ }
+ }
+\cctab_new:N \g__cctab_tmp_cctab
+\cs_new_protected:Npn \cctab_const:Nn #1#2
+ {
+ \cctab_gset:Nn \g__cctab_tmp_cctab {#2}
+ \cs_new_eq:NN #1 \g__cctab_tmp_cctab
+ }
+\cctab_const:Nn \c_code_cctab { }
+\cctab_const:Nn \c_document_cctab
+ {
+ \char_set_catcode_space:n { 9 }
+ \char_set_catcode_space:n { 32 }
+ \char_set_catcode_other:n { 58 }
+ \char_set_catcode_math_subscript:n { 95 }
+ \char_set_catcode_active:n { 126 }
+ }
+\cctab_const:Nn \c_other_cctab
+ {
+ \int_step_inline:nnn { 0 } { 127 }
+ { \char_set_catcode_other:n {#1} }
+ }
+\cctab_const:Nn \c_str_cctab
+ {
+ \int_step_inline:nnn { 0 } { 127 }
+ { \char_set_catcode_other:n {#1} }
+ \char_set_catcode_space:n { 32 }
+ }
+\__kernel_msg_new:nnnn { kernel } { cctab-stack-full }
+ { The~category~code~table~stack~is~exhausted. }
+ {
+ LaTeX~has~been~asked~to~switch~to~a~new~category~code~table,~
+ but~there~is~no~more~space~to~do~this!
+ }
+%%
+%%
+%% End of file `l3cctab.sty'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
index 55ef24e9eaf..16e910101db 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
@@ -20,7 +20,7 @@
%%
%% File: l3color.dtx Copyright(C) 2017-2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2018-10-26}{}
+\ProvidesExplPackage{l3color}{2018-10-31}{}
{L3 Experimental color support}
\tl_new:N \l__color_tmp_tl
\prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
index 82cab92359a..ff825b3402e 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
@@ -27,7 +27,7 @@
%%
%% File: l3draw.dtx Copyright(C) 2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2018-10-26}{}
+\ProvidesExplPackage{l3draw}{2018-10-31}{}
{L3 Experimental core drawing support}
\RequirePackage { l3color }
%% File: l3draw-boxes.dtx Copyright(C) 2018 The LaTeX3 Project
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
index a100d834ab6..aa696ec5941 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
@@ -20,7 +20,7 @@
%%
%% File: l3str-convert.dtx Copyright (C) 2013-2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-convert}{2018-10-26}{}
+\ProvidesExplPackage{l3str-convert}{2018-10-31}{}
{L3 Experimental string encoding conversions}
\cs_if_exist:NF \use_ii_i:nn
{ \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
index a88088e155e..b224455020d 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
@@ -20,7 +20,7 @@
%%
%% File: l3str-format.dtx Copyright (C) 2012-2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2018-10-26}{}
+\ProvidesExplPackage{l3str-format}{2018-10-31}{}
{L3 Experimental string formatting}
\cs_generate_variant:Nn \use:nn { nf }
\cs_generate_variant:Nn \use:nnn { fnf }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
index 73b6bae02cd..f572fb006c7 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
@@ -20,7 +20,7 @@
%%
%% File: l3sys-shell.dtx Copyright(C) 2018 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2018-10-26}{}
+\ProvidesExplPackage{l3sys-shell}{2018-10-31}{}
{L3 Experimental system shell functions}
\cs_new:Npn \__sys_path_to_win:n #1
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
index bdce6ad2aea..49be85fa7e4 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
@@ -20,7 +20,7 @@
%%
%% File: xcoffins.dtx Copyright(C) 2010-2012,2014,2016-2018 The LaTeX3 Project
\RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2018-10-26}{}
+\ProvidesExplPackage{xcoffins}{2018-10-31}{}
{L3 Experimental design level coffins}
\keys_define:nn { coffin }
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
index 6cbcab46f2b..abe51eda60e 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
@@ -33,7 +33,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3galley}{2018-10-26}{}
+\ProvidesExplPackage{l3galley}{2018-10-31}{}
{L3 Experimental galley code}
\int_new:N \l__galley_tmp_int
\seq_new:N \g__galley_tmpa_seq
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
index 6c15f5a8548..43ced539cf6 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
@@ -21,7 +21,7 @@
%% File: xgalley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach
%% (C) 2010-2012,2014,2016-2018 The LaTeX3 Project
\RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2018-10-26}{}
+\ProvidesExplPackage{xgalley}{2018-10-31}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
\clist_new:N \l__galley_tmpa_clist