From 193cab8a30e478915acdb6f30960653d0b54f61a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 6 May 2019 21:05:39 +0000 Subject: l3kernel (6may19) git-svn-id: svn://tug.org/texlive/trunk@51024 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/l3kernel/expl3-code.tex | 73 +++++++++++++++++-- .../tex/latex/l3kernel/expl3-generic.tex | 2 +- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 2 +- .../texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def | 3 +- Master/texmf-dist/tex/latex/l3kernel/l3dvips.def | 81 +++++++++++++--------- Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def | 2 +- .../texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def | 3 +- 7 files changed, 123 insertions(+), 43 deletions(-) (limited to 'Master/texmf-dist/tex') 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 >> } -- cgit v1.2.3