summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-05-06 21:05:39 +0000
committerKarl Berry <karl@freefriends.org>2019-05-06 21:05:39 +0000
commit193cab8a30e478915acdb6f30960653d0b54f61a (patch)
tree756f0ff0955ee3e7bc432be2f111acf1037d3e14 /Master
parente72ea92bdfffdb77681710ed4098d42eb1b48126 (diff)
l3kernel (6may19)
git-svn-id: svn://tug.org/texlive/trunk@51024 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md16
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin586608 -> 586609 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1538839 -> 1538928 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin263576 -> 263576 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin280318 -> 280318 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin228036 -> 228038 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdfbin186826 -> 186829 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin5787070 -> 5798651 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx118
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx113
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx7
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex73
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def3
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvips.def81
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def3
79 files changed, 390 insertions, 156 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
index 06c0eee2042..099a1fcd1b3 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
@@ -7,6 +7,19 @@ this project uses date-based 'snapshot' version identifiers.
## [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 @@ this project uses date-based 'snapshot' version identifiers.
- 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
diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md
index 0d3a8930048..eeeb9442b3e 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/README.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2019-05-03
+Release 2019-05-05
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index d1b08c65de7..f7e6067076c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
index a98628e2b75..abf301b6327 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
index b3b793ba4b5..8d868a5d017 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index c0c093aa509..b1c49ba9526 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index 06f62711316..7a7b24c8c1c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
index 3f0a7e44766..40aaeb4d92c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
\begin{document}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
index 89e37f7c931..e98f7c07f3e 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
index 2bb3cb02cd1..c7e3fda8794 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
index b8f8f0ec35f..b13715f2eb2 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
index 7e7e55bfe38..2b2311f460b 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
index 1cde67a06df..50a33fa8e60 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
index 0c25ccf5fbd..49d84f558e4 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-03}
+\date{Released 2019-05-05}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index ea95adf4ba1..7eb34da5cfb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -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
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
index c4f03c70e33..0a370268c40 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 61eb639ae27..8c62b447ab3 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 50a93c97455..cfb2f501f09 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index f5537eb1277..9503589690a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index 39a6dd5623a..6759d6583ec 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -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,20 +2393,92 @@
\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}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 9bee4a03f08..59f7f611fe0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index c894678366b..65027298b7f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
index 07fd56ad92a..79fdf83ad34 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index 9256691d5d4..9b51d1d3c39 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index 181d11b2fdf..0cc194d5099 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -79,7 +79,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
% \maketitle
% \tableofcontents
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index 0df3d7d43b6..9476acbd055 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
index efdcadba25a..5a0b3d385a7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
index d7b70d120b2..aafdc6cb208 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
index f3db989e459..cda1e08c618 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
index 00a8dd95a94..5702bd3716d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
index 6041b99fc84..a4fd3608ce1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
index 8a5ed3e49b9..b3518625b18 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
@@ -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,27 +1078,39 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@startcolumn, \@makecol}
+% \begin{macro}{\@makecol@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
- {
- \@@_postscript:n
- {
- driver.globaldict /driver.brokenlink.rect ~ known
- { driver.bordertracking.continue }
- if
- }
- }
-\tl_gput_left:Nn \@makecol
+\use_none:n
{
- \vbox_set:Nn \@cclv
+ \cs_if_exist:NT \@makecol@hook
{
- \vbox_unpack_drop:N \@cclv
- \@@_postscript:n
- { driver.bordertracking.endpage }
+ \tl_put_right:Nn \@makecol@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
}
}
%</package>
@@ -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
>>
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 04a731183ae..791f9bf0aeb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
@@ -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:}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index d4e684149b0..e8af3b75aa6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index 04144df0f70..b3039622b59 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
index 02262210e2f..260b235d52f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index 52b31eac7b9..8c9752f3d6d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index a9c642d99b7..a472c3c842a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index 3d265954d73..6cecb8b892a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index a80e731be6e..437ea25dc55 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index e6e4f4b2fcf..166acc48098 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index 36c5d841fc9..4531d5e3ca8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index a2d4d15ddd5..62850cb8739 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index 2c4d6a74764..edca477541a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 9a9704fa656..a9208ff80f0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index 4e1b2d28e96..a646a976d20 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 6b15cdddf4c..273b9988a41 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index a103146534d..dc386112098 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index b877bdbf308..9d59d5cfe89 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index ac802b718aa..932f349520f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index 9cc229840d3..ba49d40f565 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 8bc1dc8b734..46b9356c5c1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index a54746edeff..709b8571199 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index 5e564fb7561..1537bac46e4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index 519a82ae949..28718aadf04 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
index c9f8d393387..5f0f4683af7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index d87fa9438a0..d485d307c8e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 59f58620bb0..b42f783c3a2 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 5d7a52fbd01..3443c1e1184 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 3bdc75dc10f..0411927e986 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 32fb92ad357..9f6dac5f6a1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index 6cdcb536309..5d5cf225266 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index 5c9eff6ef28..db911fd96f5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index d4a2b9a0b4f..0dc37af9239 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index e499441e1d1..425991d3599 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index f8e541f8467..e77968e5497 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index 7c3e2c7a2bc..9d5d0826220 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
@@ -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}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index 649e913a4f7..d93bbc0377b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 6fd11dc328f..0147e115a37 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index f8a097c5e7d..8851fb5f5e6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index 17961a9129b..5a85b70d733 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index c7bb566c066..fc81f46e3ec 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index d4f679dc452..82d11da2357 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -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
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 26c183ef620..e4401cb552c 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -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}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index fd5e7fa0e6c..d017eb98e2e 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -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}
[%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
index 720da5d79c7..97bde0a30b9 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
@@ -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
>>
}
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
index feb19384f46..ee2d45c8aa1 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
@@ -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,22 +1077,32 @@
{ \int_set_eq:NN \tex_spacefactor:D \g__driver_pdf_link_sf_int }
}
}
-\tl_gput_left:Nn \@startcolumn
- {
- \__driver_postscript:n
- {
- driver.globaldict /driver.brokenlink.rect ~ known
- { driver.bordertracking.continue }
- if
- }
- }
-\tl_gput_left:Nn \@makecol
+\use_none:n
{
- \vbox_set:Nn \@cclv
+ \cs_if_exist:NT \@makecol@hook
{
- \vbox_unpack_drop:N \@cclv
- \__driver_postscript:n
- { driver.bordertracking.endpage }
+ \tl_put_right:Nn \@makecol@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
}
}
\cs_new:Npn \driver_pdf_link_last:
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
index 7bfb6d120ad..c555f97578d 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
@@ -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:
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
index b5256daff29..a9046507c11 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
@@ -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
>>
}