diff options
author | Karl Berry <karl@freefriends.org> | 2019-05-06 21:05:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-05-06 21:05:39 +0000 |
commit | 193cab8a30e478915acdb6f30960653d0b54f61a (patch) | |
tree | 756f0ff0955ee3e7bc432be2f111acf1037d3e14 | |
parent | e72ea92bdfffdb77681710ed4098d42eb1b48126 (diff) |
l3kernel (6may19)
git-svn-id: svn://tug.org/texlive/trunk@51024 c570f23f-e606-0410-a88d-b1316a301751
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 functions have been added for dim variables, e.g. `\dim_step_inline: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 Binary files differindex d1b08c65de7..f7e6067076c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf Binary files differindex a98628e2b75..abf301b6327 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf 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 Binary files differindex c0c093aa509..b1c49ba9526 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex 06f62711316..7a7b24c8c1c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf 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 Binary files differindex 89e37f7c931..e98f7c07f3e 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf 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 Binary files differindex b8f8f0ec35f..b13715f2eb2 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf 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 Binary files differindex 1cde67a06df..50a33fa8e60 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf 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 >> } |