texlive[51024] Master/texmf-dist: l3kernel (6may19)

commits+karl at tug.org commits+karl at tug.org
Mon May 6 23:05:39 CEST 2019


Revision: 51024
          http://tug.org/svn/texlive?view=revision&revision=51024
Author:   karl
Date:     2019-05-06 23:05:39 +0200 (Mon, 06 May 2019)
Log Message:
-----------
l3kernel (6may19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
    trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
    trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
    trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
    trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
    trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
    trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md	2019-05-06 21:05:39 UTC (rev 51024)
@@ -7,6 +7,19 @@
 
 ## [Unreleased]
 
+## [2019-05-05]
+
+### Added
+
+- `\char_str_<target>_case:N`
+
+### Fixed
+
+- Infinite loop in some cases in DVI mode due to link-breaking code
+  (see #570)
+- Category code of output from `\char_<target>_case:N`, and
+  same issue in `\str_<target>_case:n`
+
 ## [2019-05-03]
 
 ### Added
@@ -372,7 +385,8 @@
 - Step func­tions have been added for dim vari­ables,
   e.g. `\dim_step_in­line:nnnn`
 
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-03...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-05...HEAD
+[2019-05-05]: https://github.com/latex3/latex3/compare/2019-05-03...2019-05-05
 [2019-05-03]: https://github.com/latex3/latex3/compare/2019-04-21...2019-05-03
 [2019-04-21]: https://github.com/latex3/latex3/compare/2019-04-06...2019-04-21
 [2019-04-06]: https://github.com/latex3/latex3/compare/2019-03-26...2019-04-06

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md	2019-05-06 21:05:39 UTC (rev 51024)
@@ -1,7 +1,7 @@
 LaTeX3 Programming Conventions
 ==============================
 
-Release 2019-05-03
+Release 2019-05-05
 
 Overview
 --------

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex	2019-05-06 21:05:39 UTC (rev 51024)
@@ -54,7 +54,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex	2019-05-06 21:05:39 UTC (rev 51024)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
 
 \begin{document}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex	2019-05-06 21:05:39 UTC (rev 51024)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
 
 \newcommand{\TF}{\textit{(TF)}}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex	2019-05-06 21:05:39 UTC (rev 51024)
@@ -32,7 +32,7 @@
         {latex-team at latex-project.org}%
     }%
 }
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
 
 \newcommand{\TF}{\textit{(TF)}}
 

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex	2019-05-06 21:05:39 UTC (rev 51024)
@@ -53,7 +53,7 @@
          {latex-team at latex-project.org}%
    }%
 }
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
 
 \pagenumbering{roman}
 \maketitle

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -23,7 +23,7 @@
 % for those people who are interested.
 %
 %<*driver|generic|package>
-\def\ExplFileDate{2019-05-03}%
+\def\ExplFileDate{2019-05-05}%
 %</driver|generic|package>
 %<*driver>
 \documentclass[full]{l3doc}
@@ -51,7 +51,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %
@@ -1220,10 +1220,12 @@
 %   (\enquote{active}), and character code $32$ (space).
 % \end{variable}
 %
-% \begin{function}[added = 2018-04-06, EXP]
+% \begin{function}[added = 2018-04-06, updated = 2019-05-03, EXP]
 %   {
 %     \char_lower_case:N, \char_upper_case:N,
-%     \char_mixed_case:N, \char_fold_case:N
+%     \char_mixed_case:N, \char_fold_case:N,
+%     \char_str_lower_case:N, \char_str_upper_case:N,
+%     \char_str_mixed_case:N, \char_str_fold_case:N,
 %   }
 %   \begin{syntax}
 %     \cs{char_lower_case:N} \meta{char}
@@ -1232,7 +1234,10 @@
 %   as detailed by the function name (see \cs{str_fold_case:n}
 %   and \cs{tl_mixed_case:n} for details of these terms). The case mapping
 %   is carried out with no context-dependence (\emph{cf.}~\cs{tl_upper_case:n},
-%   \emph{etc.})
+%   \emph{etc.}) The \texttt{str} versions always generate \enquote{other}
+%   (category code $12$) characters, whilst the standard versions generate
+%   characters with the currently-active category code (\emph{i.e.}~as if
+%   the character had been read directly here).
 % \end{function}
 %
 % \begin{function}[added = 2018-06-01, EXP]{\char_codepoint_to_bytes:n}
@@ -2336,13 +2341,25 @@
 %<@@=char>
 %    \end{macrocode}
 %
-% \begin{macro}
+% \begin{macro}[EXP]
 %   {
 %     \char_lower_case:N, \char_upper_case:N,
 %     \char_mixed_case:N, \char_fold_case:N
 %   }
-% \begin{macro}{\@@_change_case:nNN}
-% \begin{macro}{\@@_change_case:nN}
+% \begin{macro}[EXP]{\@@_change_case:nNN}
+% \begin{macro}[EXP]{\@@_change_case:nN}
+% \begin{macro}[EXP]{\@@_change_case_multi:n, \@@_change_case_multi:v}
+% \begin{macro}[EXP]{\@@_change_case_multi:NNNw}
+% \begin{macro}[EXP]{\@@_change_case:NN}
+% \begin{macro}[EXP]{\@@_change_case:NNN}
+% \begin{macro}[EXP]{\@@_change_case:N}
+% \begin{macro}[EXP]
+%   {
+%     \char_str_lower_case:N, \char_str_upper_case:N,
+%     \char_str_mixed_case:N, \char_str_fold_case:N
+%   }
+% \begin{macro}[EXP]{\@@_str_change_case:nNN}
+% \begin{macro}[EXP]{\@@_str_change_case:nN}
 %   Expandable character generation is done using a two-part approach.
 %   First, see if the current character has a special mapping for the current
 %   transformation. If it does, insert that. Otherwise, use the \TeX{} data
@@ -2351,6 +2368,12 @@
 %   may be special-cased or might be a special upper case outcome. The internal
 %   when using non-Unicode engines has to be set up to only do anything
 %   with ASCII characters.
+%
+%  To ensure that the category codes produced are predictable, every character
+%  is re-generated even if it is otherwise unchanged. This makes life a little
+%  interesting when we might have multiple output characters: we have to
+%  grab each of them and case change them in reverse order to maintain
+%  \texttt{f}-type expandability.
 %    \begin{macrocode}
 \cs_new:Npn \char_lower_case:N #1
   { \@@_change_case:nNN { lower } \char_value_lccode:n #1 }
@@ -2359,7 +2382,10 @@
 \cs_new:Npn \char_mixed_case:N #1
   {
     \tl_if_exist:cTF { c_@@_mixed_case_ \token_to_str:N #1 _tl }
-      { \tl_use:c { c_@@_mixed_case_ \token_to_str:N #1 _tl } }
+      {
+        \@@_change_case_multi:v
+          { c_@@_mixed_case_ \token_to_str:N #1 _tl }
+      }
       { \char_upper_case:N #1 }
   }
 \cs_new:Npn \char_fold_case:N #1
@@ -2367,23 +2393,95 @@
 \cs_new:Npn \@@_change_case:nNN #1#2#3
   {
     \tl_if_exist:cTF { c_@@_ #1 _case_ \token_to_str:N #3 _tl }
-      { \tl_use:c { c_@@_ #1 _case_ \token_to_str:N #3 _tl } }
+      {
+        \@@_change_case_multi:v
+          { c_@@_ #1 _case_ \token_to_str:N #3 _tl }
+      }
       { \exp_args:Nf \@@_change_case:nN { #2 { `#3 } } #3 }
   }
 \cs_new:Npn \@@_change_case:nN #1#2
   {
     \int_compare:nNnTF {#1} = 0
-      {#2}
+      { \@@_change_case:N #2 }
       { \char_generate:nn {#1} { \char_value_catcode:n {#1} } }
   }
+\cs_new:Npn \@@_change_case_multi:n #1
+  { \@@_change_case_multi:NNNw #1 \q_no_value \q_no_value \q_stop }
+\cs_new:Npn \@@_change_case_multi:NNNw #1#2#3#4 \q_stop
+  {
+    \quark_if_no_value:NTF #3
+      {
+        \quark_if_no_value:NTF #2
+          { \@@_change_case:N #1 }
+          { \@@_change_case:NN #1#2 }
+      }
+      { \@@_change_case:NNN #1#2#3 }
+  }
+\cs_generate_variant:Nn \@@_change_case_multi:n { v }
+\cs_new:Npn \@@_change_case:NN #1#2
+  {
+    \exp_args:Nnf \use:nn
+      { \@@_change_case:N #1 }
+      { \@@_change_case:N #2 }
+  }
+\cs_new:Npn \@@_change_case:NNN #1#2#3
+  {
+    \exp_args:Nnff \use:nnn
+      { \@@_change_case:N #1 }
+      { \@@_change_case:N #2 }
+      { \@@_change_case:N #3 }
+  }
+\cs_new:Npn \@@_change_case:N #1
+  { \char_generate:nn { `#1 } { \char_value_catcode:n { `#1 } } }
 \bool_lazy_or:nnF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: }
   {
     \cs_set_eq:NN \@@_change_case:nN \use_ii:nn
   }
 %    \end{macrocode}
+%   Same story for the string version, except category code is easier
+%   to follow. This of course makes this version significantly faster.
+%    \begin{macrocode}
+\cs_new:Npn \char_str_lower_case:N #1
+  { \@@_str_change_case:nNN { lower } \char_value_lccode:n #1 }
+\cs_new:Npn \char_str_upper_case:N #1
+  { \@@_str_change_case:nNN { upper } \char_value_uccode:n #1 }
+\cs_new:Npn \char_str_mixed_case:N #1
+  {
+    \tl_if_exist:cTF { c_@@_mixed_case_ \token_to_str:N #1 _tl }
+      { \tl_to_str:c { c_@@_mixed_case_ \token_to_str:N #1 _tl } }
+      { \char_str_upper_case:N #1 }
+  }
+\cs_new:Npn \char_str_fold_case:N #1
+  { \@@_str_change_case:nNN { fold } \char_value_lccode:n #1 }
+\cs_new:Npn \@@_str_change_case:nNN #1#2#3
+  {
+    \tl_if_exist:cTF { c_@@_ #1 _case_ \token_to_str:N #3 _tl }
+      { \tl_to_str:c { c_@@_ #1 _case_ \token_to_str:N #3 _tl } }
+      { \exp_args:Nf \@@_str_change_case:nN { #2 { `#3 } } #3 }
+  }
+\cs_new:Npn \@@_str_change_case:nN #1#2
+  {
+    \int_compare:nNnTF {#1} = 0
+      { \tl_to_str:n {#2} }
+      { \char_generate:nn {#1} { 12 } }
+  }
+\bool_lazy_or:nnF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: }
+  {
+    \cs_set:Npn \@@_str_change_case:nN #1#2
+      { \tl_to_str:n {#2} }
+  }
+%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
 %
 % \begin{macro}[EXP]{\char_codepoint_to_bytes:n}
 % \begin{macro}[EXP]{\@@_codepoint_to_bytes_auxi:n}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -79,7 +79,7 @@
 %
 % \title{The \cls{l3doc} class}
 % \author{\Team}
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 % \maketitle
 % \tableofcontents
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -63,7 +63,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %
@@ -854,6 +854,33 @@
 %    \end{macrocode}
 % \end{variable}
 %
+% \begin{variable}{\l_@@_breaklink_obj_tl, \l_@@_breaklink_pdfmark_tl}
+%   Swappable content for link breaking.
+%    \begin{macrocode}
+\tl_new:N \l_@@_breaklink_obj_tl
+\tl_set:Nn \l_@@_breaklink_obj_tl
+  { /_objdef ~  { driver.obj \int_use:N \g_@@_pdf_link_int } }
+\tl_new:N \l_@@_breaklink_pdfmark_tl
+\tl_set:Nn \l_@@_breaklink_pdfmark_tl { pdfmark }
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_breaklink_postscript:n, \@@_breaklink_postscript:x}
+%   To allow dropping material unless link breaking is active.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_breaklink_postscript:n #1 { }
+\cs_generate_variant:Nn \@@_breaklink_postscript:n { x }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_breaklink_usebox:N}
+%   Swappable box unpacking or use.
+%    \begin{macrocode}
+\cs_new_eq:NN \@@_breaklink_usebox:N \box_use:N
+%    \end{macrocode}
+% \end{macro}
+%
+%
 % \begin{macro}{\driver_pdf_link_begin_goto:nnw, \driver_pdf_link_begin_user:nnw}
 % \begin{macro}{\@@_pdf_link:nw, \@@_pdf_link_aux:nw}
 % \begin{macro}{\driver_pdf_link_end:, \@@_pdf_link_end:}
@@ -893,7 +920,7 @@
 %   approach and |\tex_savepos:D|. That plus format mode are still to re-examine.
 %    \begin{macrocode}
 \cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
-  { \@@_pdf_link_begin:nw { #1 /A << /S /GoTo /D ( #2 ) >> } }
+  { \@@_pdf_link_begin:nw { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
 \cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
   { \@@_pdf_link_begin:nw {#1#2} }
 \cs_new_protected:Npn \@@_pdf_link_begin:nw #1
@@ -906,17 +933,7 @@
     \bool_gset_true:N \g_@@_pdf_link_bool
     \@@_pdf_annotation:nnnn { 3pt } { 3pt } { 0pt } { }
     \@@_postscript:n
-      { /driver.link.dict ( /Subtype /Link #1 ) def }
-    \int_gincr:N \g_@@_pdf_object_int
-    \int_gset_eq:NN \g_@@_pdf_link_int \g_@@_pdf_object_int
-    \@@_postscript:x
-      {
-        /driver.link.obj
-          {
-            { driver.obj \int_use:N \g_@@_pdf_link_int \c_space_tl driver.cvs }
-          }
-            def
-      }
+      { /driver.link.dict ( #1 ) def }
     \tl_gset:Nn \g_@@_pdf_link_dict_tl {#1}
     \@@_pdf_link_sf_save:
     \mode_if_math:TF
@@ -953,20 +970,31 @@
       }
     \box_move_down:nn { \box_dp:N \l_@@_pdf_content_box }
       { \hbox:n { \@@_postscript:n { driver.save.linkll } } }
-    \@@_postscript:n { driver.bordertracking.begin }
-    \hbox_unpack:N \l_@@_pdf_content_box
-    \@@_postscript:n { driver.bordertracking.end }
+    \@@_breaklink_postscript:n { driver.bordertracking.begin }
+    \@@_breaklink_usebox:N \l_@@_pdf_content_box
+    \@@_breaklink_postscript:n { driver.bordertracking.end }
     \box_move_up:nn { \box_ht:N \l_@@_pdf_content_box }
       {
         \hbox:n
           { \@@_postscript:n { driver.save.linkur } }
       }
+    \int_gincr:N \g_@@_pdf_object_int
+    \int_gset_eq:NN \g_@@_pdf_link_int \g_@@_pdf_object_int
+    \@@_breaklink_postscript:x
+      {
+        /driver.link.obj
+          {
+            { driver.obj \int_use:N \g_@@_pdf_link_int \c_space_tl driver.cvs }
+          }
+            def
+      }
     \@@_postscript:x
       {
         mark
-        \g_@@_pdf_link_dict_tl /Subtype /Link ~
+        \l_@@_breaklink_obj_tl
+        \g_@@_pdf_link_dict_tl \c_space_tl
         driver.rect
-        /ANN ~ driver.pdfmark
+        /ANN ~ \l_@@_breaklink_pdfmark_tl
       }
     \@@_pdf_link_sf_restore:
     \bool_gset_false:N \g_@@_pdf_link_bool
@@ -1050,29 +1078,41 @@
 % \end{macro}
 % \end{macro}
 %
-% \begin{macro}{\@startcolumn, \@makecol}
+% \begin{macro}{\@makecol at hook}
 %   Hooks to allow link breaking: something will be needed in format mode
-%   at some stage.
+%   at some stage. At present this code is disabled as there is an open
+%   question about the name of the hook: to be resolved at the \LaTeXe{}
+%   end.
 %    \begin{macrocode}
 %<*package>
-\tl_gput_left:Nn \@startcolumn
+\use_none:n
   {
-    \@@_postscript:n
+    \cs_if_exist:NT \@makecol at hook
       {
-        driver.globaldict /driver.brokenlink.rect ~ known
-          { driver.bordertracking.continue }
-        if
+        \tl_put_right:Nn \@makecol at hook
+          {
+            \box_if_empty:NF \@cclv
+              {
+                \vbox_set:Nn \@cclv
+                  {
+                    \@@_postscript:n
+                      {
+                        driver.globaldict /driver.brokenlink.rect ~ known
+                          { driver.bordertracking.continue }
+                        if
+                      }
+                    \vbox_unpack_drop:N \@cclv
+                    \@@_postscript:n
+                      { driver.bordertracking.endpage }
+                  }
+              }
+          }
+        \tl_clear:N \l_@@_breaklink_obj_tl
+        \tl_set:Nn \l_@@_breaklink_pdfmark_tl { driver.pdfmark }
+        \cs_set_eq:NN \@@_breaklink_postscript:n \@@_postscript:n
+        \cs_set_eq:NN \@@_breaklink_usebox:N \hbox_unpack:N
       }
   }
-\tl_gput_left:Nn \@makecol
-  {
-    \vbox_set:Nn \@cclv
-      {
-        \vbox_unpack_drop:N \@cclv
-        \@@_postscript:n
-          { driver.bordertracking.endpage }
-      }
-  }
 %</package>
 %    \end{macrocode}
 % \end{macro}
@@ -1251,7 +1291,7 @@
 \cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
   { \@@_pdf_link_begin:nnnw {#1} { goto~name } {#2} }
 \cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
-  { \@@_pdf_link_begin:nnnw {#1} { user } { /Subtype /Link #2 } }
+  { \@@_pdf_link_begin:nnnw {#1} { user } {#2} }
 \cs_new_protected:Npx \@@_pdf_link_begin:nnnw #1#2#3
   {
     \@@_pdf_AR_fix:
@@ -1734,7 +1774,7 @@
 %   All created using the same internals.
 %    \begin{macrocode}
 \cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
-  { \@@_pdf_link_begin:n { #1 /A << /S /GoTo /D ( #2 ) >> } }
+  { \@@_pdf_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
 \cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
   { \@@_pdf_link_begin:n {#1#2} }
 \cs_new_protected:Npn \@@_pdf_link_begin:n #1
@@ -1745,7 +1785,6 @@
          bann
          <<
            /Type /Annot
-           /Subtype /Link
            #1
          >>
       }

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %
@@ -483,7 +483,7 @@
 %   and \meta{depth} and featuring the \meta{dictionary}.
 % \end{function}
 %
-% \begin{function}[added = 2019-04-17]
+% \begin{function}[added = 2019-04-17, updated = 2019-05-03]
 %   {
 %     \driver_pdf_link_begin_goto:nnw,
 %     \driver_pdf_link_begin_user:nnw,
@@ -502,6 +502,9 @@
 %   \TeX{} \meta{content}. The |begin| and |end| functions must be given
 %   at the same box level. Depending upon the back-end in use, the
 %   \meta{content} may be placed in a hbox as part of processing.
+%   The |goto| type will automatically add |/Subtype /Link| to the PDF
+%   dictionary for the annotation produced; other classes do not add
+%   this, so the |/Subtype| must be provided as part of the \meta{action}.
 % \end{function}
 %
 % \begin{function}[EXP, added = 2019-04-09]{\driver_pdf_link_last:}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 % \maketitle
 %
 % \begin{documentation}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -40,7 +40,7 @@
 %          {latex-team at latex-project.org}^^A
 %    }^^A
 % }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -49,7 +49,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %
@@ -1890,7 +1890,7 @@
     \quark_if_recursion_tail_stop_do:Nn #2
       { \@@_change_case_end:wn }
     \@@_change_case_output:fw
-      { \use:c { char_ #1 _case:N } #2 }
+      { \use:c { char_str_ #1 _case:N } #2 }
     \@@_change_case_loop:nw {#1}
   }
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -44,7 +44,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx	2019-05-06 21:05:39 UTC (rev 51024)
@@ -43,7 +43,7 @@
 %    }^^A
 % }
 %
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
 %
 % \maketitle
 %

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex	2019-05-06 21:05:39 UTC (rev 51024)
@@ -64,7 +64,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2019-05-03}%
+\def\ExplFileDate{2019-05-05}%
 \begingroup
   \def\next{\endgroup}%
   \expandafter\ifx\csname PackageError\endcsname\relax
@@ -5731,7 +5731,7 @@
     \quark_if_recursion_tail_stop_do:Nn #2
       { \__str_change_case_end:wn }
     \__str_change_case_output:fw
-      { \use:c { char_ #1 _case:N } #2 }
+      { \use:c { char_str_ #1 _case:N } #2 }
     \__str_change_case_loop:nw {#1}
   }
 \str_const:Nx \c_ampersand_str   { \cs_to_str:N \& }
@@ -26448,7 +26448,10 @@
 \cs_new:Npn \char_mixed_case:N #1
   {
     \tl_if_exist:cTF { c__char_mixed_case_ \token_to_str:N #1 _tl }
-      { \tl_use:c { c__char_mixed_case_ \token_to_str:N #1 _tl } }
+      {
+        \__char_change_case_multi:v
+          { c__char_mixed_case_ \token_to_str:N #1 _tl }
+      }
       { \char_upper_case:N #1 }
   }
 \cs_new:Npn \char_fold_case:N #1
@@ -26456,19 +26459,79 @@
 \cs_new:Npn \__char_change_case:nNN #1#2#3
   {
     \tl_if_exist:cTF { c__char_ #1 _case_ \token_to_str:N #3 _tl }
-      { \tl_use:c { c__char_ #1 _case_ \token_to_str:N #3 _tl } }
+      {
+        \__char_change_case_multi:v
+          { c__char_ #1 _case_ \token_to_str:N #3 _tl }
+      }
       { \exp_args:Nf \__char_change_case:nN { #2 { `#3 } } #3 }
   }
 \cs_new:Npn \__char_change_case:nN #1#2
   {
     \int_compare:nNnTF {#1} = 0
-      {#2}
+      { \__char_change_case:N #2 }
       { \char_generate:nn {#1} { \char_value_catcode:n {#1} } }
   }
+\cs_new:Npn \__char_change_case_multi:n #1
+  { \__char_change_case_multi:NNNw #1 \q_no_value \q_no_value \q_stop }
+\cs_new:Npn \__char_change_case_multi:NNNw #1#2#3#4 \q_stop
+  {
+    \quark_if_no_value:NTF #3
+      {
+        \quark_if_no_value:NTF #2
+          { \__char_change_case:N #1 }
+          { \__char_change_case:NN #1#2 }
+      }
+      { \__char_change_case:NNN #1#2#3 }
+  }
+\cs_generate_variant:Nn \__char_change_case_multi:n { v }
+\cs_new:Npn \__char_change_case:NN #1#2
+  {
+    \exp_args:Nnf \use:nn
+      { \__char_change_case:N #1 }
+      { \__char_change_case:N #2 }
+  }
+\cs_new:Npn \__char_change_case:NNN #1#2#3
+  {
+    \exp_args:Nnff \use:nnn
+      { \__char_change_case:N #1 }
+      { \__char_change_case:N #2 }
+      { \__char_change_case:N #3 }
+  }
+\cs_new:Npn \__char_change_case:N #1
+  { \char_generate:nn { `#1 } { \char_value_catcode:n { `#1 } } }
 \bool_lazy_or:nnF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: }
   {
     \cs_set_eq:NN \__char_change_case:nN \use_ii:nn
   }
+\cs_new:Npn \char_str_lower_case:N #1
+  { \__char_str_change_case:nNN { lower } \char_value_lccode:n #1 }
+\cs_new:Npn \char_str_upper_case:N #1
+  { \__char_str_change_case:nNN { upper } \char_value_uccode:n #1 }
+\cs_new:Npn \char_str_mixed_case:N #1
+  {
+    \tl_if_exist:cTF { c__char_mixed_case_ \token_to_str:N #1 _tl }
+      { \tl_to_str:c { c__char_mixed_case_ \token_to_str:N #1 _tl } }
+      { \char_str_upper_case:N #1 }
+  }
+\cs_new:Npn \char_str_fold_case:N #1
+  { \__char_str_change_case:nNN { fold } \char_value_lccode:n #1 }
+\cs_new:Npn \__char_str_change_case:nNN #1#2#3
+  {
+    \tl_if_exist:cTF { c__char_ #1 _case_ \token_to_str:N #3 _tl }
+      { \tl_to_str:c { c__char_ #1 _case_ \token_to_str:N #3 _tl } }
+      { \exp_args:Nf \__char_str_change_case:nN { #2 { `#3 } } #3 }
+  }
+\cs_new:Npn \__char_str_change_case:nN #1#2
+  {
+    \int_compare:nNnTF {#1} = 0
+      { \tl_to_str:n {#2} }
+      { \char_generate:nn {#1} { 12 } }
+  }
+\bool_lazy_or:nnF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: }
+  {
+    \cs_set:Npn \__char_str_change_case:nN #1#2
+      { \tl_to_str:n {#2} }
+  }
 \cs_new:Npn \char_codepoint_to_bytes:n #1
   {
     \exp_args:Nf \__char_codepoint_to_bytes_auxi:n

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex	2019-05-06 21:05:39 UTC (rev 51024)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2019-05-03}%
+\def\ExplFileDate{2019-05-05}%
 \let\ExplLoaderFileDate\ExplFileDate
 \begingroup
   \def\tempa{LaTeX2e}%

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty	2019-05-06 21:05:39 UTC (rev 51024)
@@ -19,7 +19,7 @@
 %% and all files in that bundle must be distributed together.
 %% 
 %% File: expl3.dtx
-\def\ExplFileDate{2019-05-03}%
+\def\ExplFileDate{2019-05-05}%
 \let\ExplLoaderFileDate\ExplFileDate
 \ProvidesPackage{expl3}
   [%

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def	2019-05-06 21:05:39 UTC (rev 51024)
@@ -543,7 +543,7 @@
       }
   }
 \cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
-  { \__driver_pdf_link_begin:n { #1 /A << /S /GoTo /D ( #2 ) >> } }
+  { \__driver_pdf_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
 \cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
   { \__driver_pdf_link_begin:n {#1#2} }
 \cs_new_protected:Npn \__driver_pdf_link_begin:n #1
@@ -554,7 +554,6 @@
          bann
          <<
            /Type /Annot
-           /Subtype /Link
            #1
          >>
       }

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def	2019-05-06 21:05:39 UTC (rev 51024)
@@ -929,8 +929,16 @@
 \int_new:N \g__driver_pdf_link_sf_int
 \bool_new:N \g__driver_pdf_link_math_bool
 \bool_new:N \g__driver_pdf_link_bool
+\tl_new:N \l__driver_breaklink_obj_tl
+\tl_set:Nn \l__driver_breaklink_obj_tl
+  { /_objdef ~  { driver.obj \int_use:N \g__driver_pdf_link_int } }
+\tl_new:N \l__driver_breaklink_pdfmark_tl
+\tl_set:Nn \l__driver_breaklink_pdfmark_tl { pdfmark }
+\cs_new_protected:Npn \__driver_breaklink_postscript:n #1 { }
+\cs_generate_variant:Nn \__driver_breaklink_postscript:n { x }
+\cs_new_eq:NN \__driver_breaklink_usebox:N \box_use:N
 \cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
-  { \__driver_pdf_link_begin:nw { #1 /A << /S /GoTo /D ( #2 ) >> } }
+  { \__driver_pdf_link_begin:nw { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
 \cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
   { \__driver_pdf_link_begin:nw {#1#2} }
 \cs_new_protected:Npn \__driver_pdf_link_begin:nw #1
@@ -943,17 +951,7 @@
     \bool_gset_true:N \g__driver_pdf_link_bool
     \__driver_pdf_annotation:nnnn { 3pt } { 3pt } { 0pt } { }
     \__driver_postscript:n
-      { /driver.link.dict ( /Subtype /Link #1 ) def }
-    \int_gincr:N \g__driver_pdf_object_int
-    \int_gset_eq:NN \g__driver_pdf_link_int \g__driver_pdf_object_int
-    \__driver_postscript:x
-      {
-        /driver.link.obj
-          {
-            { driver.obj \int_use:N \g__driver_pdf_link_int \c_space_tl driver.cvs }
-          }
-            def
-      }
+      { /driver.link.dict ( #1 ) def }
     \tl_gset:Nn \g__driver_pdf_link_dict_tl {#1}
     \__driver_pdf_link_sf_save:
     \mode_if_math:TF
@@ -985,20 +983,31 @@
       }
     \box_move_down:nn { \box_dp:N \l__driver_pdf_content_box }
       { \hbox:n { \__driver_postscript:n { driver.save.linkll } } }
-    \__driver_postscript:n { driver.bordertracking.begin }
-    \hbox_unpack:N \l__driver_pdf_content_box
-    \__driver_postscript:n { driver.bordertracking.end }
+    \__driver_breaklink_postscript:n { driver.bordertracking.begin }
+    \__driver_breaklink_usebox:N \l__driver_pdf_content_box
+    \__driver_breaklink_postscript:n { driver.bordertracking.end }
     \box_move_up:nn { \box_ht:N \l__driver_pdf_content_box }
       {
         \hbox:n
           { \__driver_postscript:n { driver.save.linkur } }
       }
+    \int_gincr:N \g__driver_pdf_object_int
+    \int_gset_eq:NN \g__driver_pdf_link_int \g__driver_pdf_object_int
+    \__driver_breaklink_postscript:x
+      {
+        /driver.link.obj
+          {
+            { driver.obj \int_use:N \g__driver_pdf_link_int \c_space_tl driver.cvs }
+          }
+            def
+      }
     \__driver_postscript:x
       {
         mark
-        \g__driver_pdf_link_dict_tl /Subtype /Link ~
+        \l__driver_breaklink_obj_tl
+        \g__driver_pdf_link_dict_tl \c_space_tl
         driver.rect
-        /ANN ~ driver.pdfmark
+        /ANN ~ \l__driver_breaklink_pdfmark_tl
       }
     \__driver_pdf_link_sf_restore:
     \bool_gset_false:N \g__driver_pdf_link_bool
@@ -1068,24 +1077,34 @@
           { \int_set_eq:NN \tex_spacefactor:D \g__driver_pdf_link_sf_int }
       }
   }
-\tl_gput_left:Nn \@startcolumn
+\use_none:n
   {
-    \__driver_postscript:n
+    \cs_if_exist:NT \@makecol at hook
       {
-        driver.globaldict /driver.brokenlink.rect ~ known
-          { driver.bordertracking.continue }
-        if
+        \tl_put_right:Nn \@makecol at hook
+          {
+            \box_if_empty:NF \@cclv
+              {
+                \vbox_set:Nn \@cclv
+                  {
+                    \__driver_postscript:n
+                      {
+                        driver.globaldict /driver.brokenlink.rect ~ known
+                          { driver.bordertracking.continue }
+                        if
+                      }
+                    \vbox_unpack_drop:N \@cclv
+                    \__driver_postscript:n
+                      { driver.bordertracking.endpage }
+                  }
+              }
+          }
+        \tl_clear:N \l__driver_breaklink_obj_tl
+        \tl_set:Nn \l__driver_breaklink_pdfmark_tl { driver.pdfmark }
+        \cs_set_eq:NN \__driver_breaklink_postscript:n \__driver_postscript:n
+        \cs_set_eq:NN \__driver_breaklink_usebox:N \hbox_unpack:N
       }
   }
-\tl_gput_left:Nn \@makecol
-  {
-    \vbox_set:Nn \@cclv
-      {
-        \vbox_unpack_drop:N \@cclv
-        \__driver_postscript:n
-          { driver.bordertracking.endpage }
-      }
-  }
 \cs_new:Npn \driver_pdf_link_last:
   { { driver.obj \int_use:N \g__driver_pdf_link_int } }
 \cs_new_protected:Npn \driver_pdf_link_margin:n #1

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def	2019-05-06 21:05:39 UTC (rev 51024)
@@ -455,7 +455,7 @@
 \cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
   { \__driver_pdf_link_begin:nnnw {#1} { goto~name } {#2} }
 \cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
-  { \__driver_pdf_link_begin:nnnw {#1} { user } { /Subtype /Link #2 } }
+  { \__driver_pdf_link_begin:nnnw {#1} { user } {#2} }
 \cs_new_protected:Npx \__driver_pdf_link_begin:nnnw #1#2#3
   {
     \__driver_pdf_AR_fix:

Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def	2019-05-06 21:05:15 UTC (rev 51023)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def	2019-05-06 21:05:39 UTC (rev 51024)
@@ -586,7 +586,7 @@
       }
   }
 \cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
-  { \__driver_pdf_link_begin:n { #1 /A << /S /GoTo /D ( #2 ) >> } }
+  { \__driver_pdf_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
 \cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
   { \__driver_pdf_link_begin:n {#1#2} }
 \cs_new_protected:Npn \__driver_pdf_link_begin:n #1
@@ -597,7 +597,6 @@
          bann
          <<
            /Type /Annot
-           /Subtype /Link
            #1
          >>
       }



More information about the tex-live-commits mailing list