diff options
72 files changed, 284 insertions, 290 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md index 6b70a9cd601..d92192c90b1 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md @@ -7,6 +7,17 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2019-10-24] + +### Changed + +- File names are now returned without quotes by `\file_full_name:n` + +### Fixed + +- `\file_if_exist:n(TF)`, etc., when dealing with file names containing + spaces (see #642) + ## [2019-10-21] ### Added @@ -578,7 +589,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-10-21...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-24...HEAD +[2019-10-24]: https://github.com/latex3/latex3/compare/2019-10-21...2019-10-24 [2019-10-21]: https://github.com/latex3/latex3/compare/2019-10-14...2019-10-21 [2019-10-14]: https://github.com/latex3/latex3/compare/2019-10-11...2019-10-14 [2019-10-11]: https://github.com/latex3/latex3/compare/2019-10-02...2019-10-11 diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index ffbbb816063..0663e1d40c6 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-10-21 +Release 2019-10-24 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf Binary files differindex 973fa0880c8..f2774a17db8 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 5295e1c0e2b..0a57e5db235 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 7248ad387c2..96303297d7d 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-10-21} +\date{Released 2019-10-24} \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 1e80cda2fcd..d40df373111 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/l3prefixes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf Binary files differindex 44b47156ee2..50bf5edf092 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf +++ b/Master/texmf-dist/doc/latex/l3kernel/l3prefixes.pdf diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf Binary files differindex 6c53631dcda..d0d55018b19 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 c2c12020e67..a0da8ccdaa4 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-10-21} +\date{Released 2019-10-24} \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 a3735172645..14c94f795dc 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 41230dd97cd..827004a90d5 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-10-21} +\date{Released 2019-10-24} \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 fe3e68b4bc5..7ecb562305c 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 4bd29c2daa4..86b9e43a0e1 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-10-21} +\date{Released 2019-10-24} \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 d4e15440195..5dd662b3c34 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 d13109340fe..f0f02634431 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-10-21} +\date{Released 2019-10-24} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index e9d6fd84ad8..b7f5ee329d3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -24,7 +24,7 @@ % %<*driver|generic|package|2ekernel> %</driver|generic|package|2ekernel> -\def\ExplFileDate{2019-10-21}% +\def\ExplFileDate{2019-10-24}% %<*driver> \documentclass[full]{l3doc} \usepackage{graphicx} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2019-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index 4e8d1c4f596..9a33252331f 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index 412dabcdc28..d891de3c15a 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 015aa0d455c..d5566552dfb 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index c72c9fa5879..bc3396e8707 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index bfbe86059bb..03d378033a4 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index fb63bdac210..3642e7f30a6 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index c0d393bbaa2..1e2656c9f67 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index 9b80753bdac..5d7b133889a 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx index 898152fd13c..d00dde81e60 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index e3dd8581ee7..386635eb712 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 5ad6932e9e0..50788f226f3 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-10-21} +% \date{Released 2019-10-24} % \maketitle % \tableofcontents % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 1ecd193852f..7248ff24d82 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index c06f0c2981a..67fb29ff758 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 19807253e38..2170ccb1f44 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % @@ -65,9 +65,9 @@ % may contain both literal items and expandable content, which should on % full expansion be the desired file name. Active characters (as % declared in \cs{l_char_active_seq}) are \emph{not} expanded, -% allowing the direct use of these in file names. File names are quoted -% using |"| tokens if they contain spaces: as a result, |"| tokens are -% \emph{not} permitted in file names. +% allowing the direct use of these in file names. Quote tokens (|"|) are +% not permitted in file names as they are reserved for internal use by some +% \TeX{} primitives. % % Spaces are trimmed at the beginning and end of the file name: % this reflects the fact that some file systems do not allow or interact @@ -1059,7 +1059,7 @@ \tex_openin:D #1 \sys_if_engine_luatex:TF { {#2} } - { #2 \scan_stop: } + { \exp_not:N \__kernel_file_name_quote:n {#2} \scan_stop: } } % \end{macrocode} % \end{macro} @@ -1436,10 +1436,7 @@ \cs_new_protected:Npn \iow_open:Nn #1#2 { \tl_set:Nx \l_@@_file_name_tl - { - \__kernel_file_name_quote:e - { \__kernel_file_name_sanitize:n {#2} } - } + { \__kernel_file_name_sanitize:n {#2} } \iow_close:N #1 \seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl { \@@_open_stream:NV #1 \l_@@_file_name_tl } @@ -1459,7 +1456,8 @@ { \tex_global:D \tex_chardef:D #1 = \l_@@_stream_tl \scan_stop: \prop_gput:NVn \g_@@_streams_prop #1 {#2} - \tex_immediate:D \tex_openout:D #1 #2 \scan_stop: + \tex_immediate:D \tex_openout:D + #1 \__kernel_file_name_quote:n {#2} \scan_stop: } \cs_generate_variant:Nn \@@_open_stream:Nn { NV } % \end{macrocode} @@ -2362,15 +2360,18 @@ % \end{macrocode} % \end{variable} % -% \begin{macro}[rEXP]{\__kernel_file_name_sanitize:n} -% \begin{macro}[rEXP]{\__kernel_file_name_expand_loop:w} -% \begin{macro}[rEXP]{\__kernel_file_name_expand_N_type:Nw} -% \begin{macro}[rEXP]{\__kernel_file_name_expand_group:nw} -% \begin{macro}[rEXP]{\__kernel_file_name_expand_space:w} -% \begin{macro}[rEXP]{\__kernel_file_name_trim_spaces:n} -% \begin{macro}[rEXP]{\__kernel_file_name_trim_spaces:nw} -% \begin{macro}[rEXP]{\__kernel_file_name_trim_spaces_aux:n} -% \begin{macro}[rEXP]{\__kernel_file_name_trim_spaces_aux:w} +% \begin{macro}[EXP]{\__kernel_file_name_sanitize:n} +% \begin{macro}[EXP]{\__kernel_file_name_expand_loop:w} +% \begin{macro}[EXP]{\__kernel_file_name_expand_N_type:Nw} +% \begin{macro}[EXP]{\__kernel_file_name_expand_group:nw} +% \begin{macro}[EXP]{\__kernel_file_name_expand_space:w} +% \begin{macro}[EXP]{\__kernel_file_name_strip_quotes:n} +% \begin{macro}[EXP]{\__kernel_file_name_strip_quotes:nnnw} +% \begin{macro}[EXP]{\__kernel_file_name_strip_quotes:nnn} +% \begin{macro}[EXP]{\__kernel_file_name_trim_spaces:n} +% \begin{macro}[EXP]{\__kernel_file_name_trim_spaces:nw} +% \begin{macro}[EXP]{\__kernel_file_name_trim_spaces_aux:n} +% \begin{macro}[EXP]{\__kernel_file_name_trim_spaces_aux:w} % Expanding the file name without expanding active characters is done % using the same token-by-token approach as for example case changing. % The finale outcome only need be \texttt{e}-type expandable, so there @@ -2380,8 +2381,11 @@ { \exp_args:Ne \__kernel_file_name_trim_spaces:n { - \__kernel_file_name_expand_loop:w #1 - \q_recursion_tail \q_recursion_stop + \exp_args:Ne \__kernel_file_name_strip_quotes:n + { + \__kernel_file_name_expand_loop:w #1 + \q_recursion_tail \q_recursion_stop + } } } \cs_new:Npn \__kernel_file_name_expand_loop:w #1 \q_recursion_stop @@ -2431,6 +2435,30 @@ \exp_not:N \__kernel_file_name_expand_loop:w } % \end{macrocode} +% Quoting file name uses basically the same approach as for +% \texttt{luaquotejobname}: count the |"| tokens and remove them. +% \begin{macrocode} +\cs_new:Npn \__kernel_file_name_strip_quotes:n #1 + { + \__kernel_file_name_strip_quotes:nnnw {#1} { 0 } { } + #1 " \q_recursion_tail " \q_recursion_stop + } +\cs_new:Npn \__kernel_file_name_strip_quotes:nnnw #1#2#3#4 " + { + \quark_if_recursion_tail_stop_do:nn {#4} + { \__kernel_file_name_strip_quotes:nnn {#1} {#2} {#3} } + \__kernel_file_name_strip_quotes:nnnw {#1} { #2 + 1 } { #3#4 } + } +\cs_new:Npn \__kernel_file_name_strip_quotes:nnn #1#2#3 + { + \int_if_even:nT {#2} + { + \__kernel_msg_expandable_error:nnn + { kernel } { unbalanced-quote-in-filename } {#1} + } + #3 + } +% \end{macrocode} % Spaces need to be trimmed from the start of the name and from the end of % any extension. However, the name we are passed might not have an extension: % that means we have to look for one. If there is no extension, we still use @@ -2461,37 +2489,16 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % -% \begin{macro}[rEXP]{\__kernel_file_name_quote:n, \__kernel_file_name_quote:e} -% \begin{macro}[rEXP]{\__kernel_file_name_quote_auxi:nnnw} -% \begin{macro}[rEXP]{\__kernel_file_name_quote_auxii:nnn} -% \begin{macro}[rEXP]{\__kernel_file_name_quote_auxiii:nw} -% Quoting file name uses basically the same approach as for -% \texttt{luaquotejobname}: count the |"| tokens, remove them then -% re-add at the extremities. +% \begin{macro}[EXP]{\__kernel_file_name_quote:n} +% \begin{macro}[EXP]{\__kernel_file_name_quote:nw} % \begin{macrocode} \cs_new:Npn \__kernel_file_name_quote:n #1 - { - \__kernel_file_name_quote_auxi:nnnw {#1} { 0 } { } - #1 " \q_recursion_tail " \q_recursion_stop - } -\cs_generate_variant:Nn \__kernel_file_name_quote:n { e } -\cs_new:Npn \__kernel_file_name_quote_auxi:nnnw #1#2#3#4 " - { - \quark_if_recursion_tail_stop_do:nn {#4} - { \__kernel_file_name_quote_auxii:nnn {#1} {#2} {#3} } - \__kernel_file_name_quote_auxi:nnnw {#1} { #2 + 1 } { #3#4 } - } -\cs_new:Npn \__kernel_file_name_quote_auxii:nnn #1#2#3 - { - \int_if_even:nT {#2} - { - \__kernel_msg_expandable_error:nnn - { kernel } { unbalanced-quote-in-filename } {#1} - } - \__kernel_file_name_quote_auxiii:nw {#3} #3 ~ \q_nil \q_stop - } -\cs_new:Npn \__kernel_file_name_quote_auxiii:nw #1 #2 ~ #3 \q_stop + { \__kernel_file_name_quote:nw {#1} #1 ~ \q_nil \q_stop } +\cs_new:Npn \__kernel_file_name_quote:nw #1 #2 ~ #3 \q_stop { \quark_if_nil:nTF {#3} { #1 } @@ -2500,8 +2507,6 @@ % \end{macrocode} % \end{macro} % \end{macro} -% \end{macro} -% \end{macro} % % \begin{variable}{\c_@@_marker_tl} % The same idea as the marker for rescanning token lists: this pair of @@ -2537,18 +2542,22 @@ } { \prg_return_false: } } -\cs_new_protected:Npn \@@_get_aux:nnN #1#2#3 +\cs_new_protected:Npx \@@_get_aux:nnN #1#2#3 { - \if_false: { \fi: + \exp_not:N \if_false: { \exp_not:N \fi: \group_begin: \int_set_eq:NN \tex_tracingnesting:D \c_zero_int - \exp_args:No \tex_everyeof:D { \c_@@_marker_tl } + \exp_not:N \exp_args:No \tex_everyeof:D + { \exp_not:N \c_@@_marker_tl } #2 \scan_stop: - \exp_after:wN \@@_get_do:Nw - \exp_after:wN #3 - \exp_after:wN \prg_do_nothing: - \tex_input:D #1 \scan_stop: - \if_false: } \fi: + \exp_not:N \exp_after:wN \exp_not:N \@@_get_do:Nw + \exp_not:N \exp_after:wN #3 + \exp_not:N \exp_after:wN \exp_not:N \prg_do_nothing: + \exp_not:N \tex_input:D + \sys_if_engine_luatex:TF + { {#1} } + { \exp_not:N \__kernel_file_name_quote:n {#1} \scan_stop: } + \exp_not:N \if_false: } \exp_not:N \fi: } \exp_args:Nno \use:nn { \cs_new_protected:Npn \@@_get_do:Nw #1#2 } @@ -2561,38 +2570,31 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\@@_file_size:n} +% \begin{macro}{\@@_size:n} % A copy of the primitive where it's available, or the \LuaTeX{} % equivalent if relevant. % \begin{macrocode} -\cs_new_eq:NN \@@_file_size:n \tex_filesize:D +\cs_new_eq:NN \@@_size:n \tex_filesize:D \sys_if_engine_luatex:T { - \cs_gset:Npn \@@_file_size:n #1 + \cs_gset:Npn \@@_size:n #1 { \lua_now:e - { - l3kernel.filesize - ( " \lua_escape:e {#1} " ) - } + { l3kernel.filesize ( " \lua_escape:e {#1} " ) } } } % \end{macrocode} % \end{macro} % -% \begin{macro}[rEXP]{\file_full_name:n, \@@_full_name:n} -% \begin{macro}[rEXP]{\@@_full_name:nn} -% \begin{macro}[rEXP]{\@@_full_name_aux:nn} -% \begin{macro}[rEXP]{\@@_full_name_aux:n} -% \begin{macro}[rEXP]{\@@_file_name_cleanup:w} -% \begin{macro}[rEXP]{\@@_file_name_end:} -% \begin{macro}[rEXP]{\@@_file_name_ext_check:n} -% \begin{macro}[rEXP] -% { -% \@@_file_name_ext_check_auxi:nw , -% \@@_file_name_ext_check_auxii:nw , -% \@@_file_name_ext_check_auxiii:nw -% } +% \begin{macro}[EXP]{\file_full_name:n, \@@_full_name:n} +% \begin{macro}[EXP]{\@@_full_name_aux:nn} +% \begin{macro}[EXP]{\@@_full_name_aux:n} +% \begin{macro}[EXP]{\@@_name_cleanup:w} +% \begin{macro}[EXP]{\@@_name_end:} +% \begin{macro}[EXP]{\@@_name_ext_check:n} +% \begin{macro}[EXP]{\@@_name_ext_check:nw} +% \begin{macro}[EXP]{\@@_name_ext_check:nnw} +% \begin{macro}[EXP]{\@@_name_ext_check:nn} % File searching can be carried out if the \tn{pdffilesize} primitive % or an equivalent is available. That of course means we need to % arrange for everything else to here to be done by expansion too. @@ -2604,35 +2606,30 @@ \exp_args:Ne \@@_full_name:n { \__kernel_file_name_sanitize:n {#1} } } -\cs_new:Npn \@@_full_name:n #1 - { - \exp_args:Ne \@@_full_name:nn - { \__kernel_file_name_quote:n {#1} } {#1} - } % \end{macrocode} % First, we check of the file is just here: no mapping so we do not % need the break part of the broader auxiliary. We are using the fact % that the primitive here returns nothing if the file is entirely absent. % For package mode, \tn{input@path} is a token list not a sequence. % \begin{macrocode} -\cs_new:Npn \@@_full_name:nn #1#2 +\cs_new:Npn \@@_full_name:n #1 { \tl_if_blank:nF {#1} { - \tl_if_blank:eTF { \@@_file_size:n {#1} } + \tl_if_blank:eTF { \@@_size:n {#1} } { \seq_map_tokens:Nn \l_file_search_path_seq - { \@@_full_name_aux:nn {#2} } + { \@@_full_name_aux:nn {#1} } %<*package> \cs_if_exist:NT \input@path { \tl_map_tokens:Nn \input@path - { \@@_full_name_aux:nn {#2} } + { \@@_full_name_aux:nn {#1} } } %</package> - \@@_file_name_end: + \@@_name_end: } - { \@@_file_ext_check:n {#1} } + { \@@_ext_check:n {#1} } } } % \end{macrocode} @@ -2640,60 +2637,52 @@ % twice in the event we find the right file. % \begin{macrocode} \cs_new:Npn \@@_full_name_aux:nn #1#2 - { - \exp_args:Ne \@@_full_name_aux:n - { \__kernel_file_name_quote:e { \tl_to_str:n {#2} / #1 } } - } + { \exp_args:Ne \@@_full_name_aux:n { \tl_to_str:n {#2} / #1 } } \cs_new:Npn \@@_full_name_aux:n #1 { - \tl_if_blank:eF { \@@_file_size:n {#1} } + \tl_if_blank:eF { \@@_size:n {#1} } { \seq_map_break:n { - \@@_file_ext_check:n {#1} - \@@_file_name_cleanup:w + \@@_ext_check:n {#1} + \@@_name_cleanup:w } } } -\cs_new:Npn \@@_file_name_cleanup:w #1 \@@_file_name_end: { } -\cs_new:Npn \@@_file_name_end: { } +\cs_new:Npn \@@_name_cleanup:w #1 \@@_name_end: { } +\cs_new:Npn \@@_name_end: { } % \end{macrocode} % As \TeX{} automatically adds |.tex| if there is no extension, -% there is a little clean up to do here. First, find the file -% extension if present, ignoring any quotes and avoiding dots in -% the path.(The quoted name is retained for the common case that -% there is no additional work to do.) +% there is a little clean up to do here. First, make sure we are not in the +% directory part, saving that. Then check for an extension. % \begin{macrocode} -\cs_new:Npn \@@_file_ext_check:n #1 - { \@@_file_ext_check_auxi:nw {#1} #1 " #1 " \q_stop } -\cs_new:Npn \@@_file_ext_check_auxi:nw #1#2 " #3 " #4 \q_stop - { \@@_file_ext_check_auxii:nw {#1} #3 / \q_nil / \q_stop } -\cs_new:Npn \@@_file_ext_check_auxii:nw #1#2 / #3 / #4 \q_stop +\cs_new:Npn \@@_ext_check:n #1 + { \@@_ext_check:nw { / } #1 / \q_nil / \q_stop } +\cs_new:Npn \@@_ext_check:nw #1 #2 / #3 / #4 \q_stop { \quark_if_nil:nTF {#3} - { \@@_file_ext_check_auxiii:nw {#1} #2 . \q_nil . \q_stop } - { \@@_file_ext_check_auxii:nw {#1} #3 / #4 \q_stop } + { + \exp_args:No \@@_ext_check:nnw + { \use_none:n #1 } {#2} #2 . \q_nil . \q_stop + } + { \@@_ext_check:nw { #1 #2 / } #3 / #4 \q_stop } } -\cs_new:Npx \@@_file_ext_check_auxiii:nw #1#2 . #3 . #4 \q_stop +\cs_new:Npx \@@_ext_check:nnw #1#2#3 . #4 . #5 \q_stop { - \exp_not:N \quark_if_nil:nTF {#3} + \exp_not:N \quark_if_nil:nTF {#4} { - \exp_not:N \exp_args:Nee \exp_not:N \@@_file_ext_check_auxiv:nn - { \exp_not:N \__kernel_file_name_quote:n {#1} } - { - \exp_not:N \__kernel_file_name_quote:n - { #1 \tl_to_str:n { .tex } } - } + \exp_not:N \@@_ext_check:nn + { #1 #2 } { #1 #2 \tl_to_str:n { .tex } } } - {#1} + { #1 #2 } } -\cs_new:Npn \@@_file_ext_check_auxiv:nn #1#2 +\cs_new:Npn \@@_ext_check:nn #1#2 { - \tl_if_blank:eTF { \@@_file_size:n {#2} } + \tl_if_blank:eTF { \@@_size:n {#2} } {#1} { \int_compare:nNnTF - { \@@_file_size:n {#1} } = { \@@_file_size:n {#2} } + { \@@_size:n {#1} } = { \@@_size:n {#2} } {#2} {#1} } @@ -2727,6 +2716,7 @@ % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\file_get_full_name:nN, \file_get_full_name:VN} % \begin{macro}[TF]{\file_get_full_name:nN, \file_get_full_name:VN} @@ -2806,10 +2796,7 @@ \cs_new_protected:Npn \@@_get_full_name_search:nN #1#2 { \tl_set:Nx \l_@@_full_name_tl - { - \__kernel_file_name_quote:e - { \tl_to_str:n {#1} \l_@@_base_name_tl } - } + { \tl_to_str:n {#1} \l_@@_base_name_tl } \__kernel_ior_open:No \g_@@_internal_ior \l_@@_full_name_tl \ior_if_eof:NF \g_@@_internal_ior { #2 { \prg_break: } } } @@ -3092,19 +3079,22 @@ { \@@_input:V \l_@@_full_name_tl } { \__kernel_file_missing:n {#1} } } -\cs_new_protected:Npn \@@_input:n #1 +\cs_new_protected:Npx \@@_input:n #1 { %<*initex> - \seq_gput_right:Nn \g_@@_record_seq {#1} + \seq_gput_right:Nn \exp_not:N \g_@@_record_seq {#1} %</initex> %<*package> - \clist_if_exist:NTF \@filelist - { \@addtofilelist {#1} } - { \seq_gput_right:Nn \g_@@_record_seq {#1} } + \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist + { \exp_not:N \@addtofilelist {#1} } + { \seq_gput_right:Nn \exp_not:N \g_@@_record_seq {#1} } %</package> - \@@_input_push:n {#1} - \tex_input:D #1 \c_space_tl - \@@_input_pop: + \exp_not:N \@@_input_push:n {#1} + \exp_not:N \tex_input:D + \sys_if_engine_luatex:TF + { {#1} } + { \exp_not:N \__kernel_file_name_quote:n {#1} \scan_stop: } + \exp_not:N \@@_input_pop: } \cs_generate_variant:Nn \@@_input:n { V } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index 1854521b7d5..031f473316b 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 809e4f57ae6..4b4448bcb74 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 0fc8aab6b68..0fa01c2d7ba 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-10-21} +% \date{Released 2019-10-24} % \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 437f05d0e3e..74515d97aa0 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index 81d6720ef69..0063bdd7263 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index f0279aeb49d..9c776d5431d 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index 9fa0d3c9fe5..36c4fbe7d5d 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index a244448ff57..b41794cf283 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index d1a58ad4339..cbd988aadf0 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 89347e5ef0e..347d2d94ec2 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 37434dd256b..2965738f3a1 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 1cdf625a2db..c2511e1e3fa 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index ab486d81dcb..4bd9cc1f24a 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-10-21} +% \date{Released 2019-10-24} % \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 a1d63f396b4..e40b41e72f9 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index ad4011b6d52..41f4da38c75 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 4476f0377e7..5952ba4cd7b 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 52d769c49ad..c388ef5578d 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index dad25796c3a..37c0f9a6302 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index ed13c7b9932..2d1f9b98b16 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index b1533c8f200..45ccdc067f1 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx index c5528a78899..7112522870b 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 199db4a628d..843a534d079 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 64608fb5415..bbf6307afe3 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index 72a8af0373f..e91ed8458ff 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index 835d0058603..b44ecce01ce 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 570b7a7ade1..44a53408cd9 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index dbe2e6e8171..f19cb58b6d5 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index deda64aa3a9..b1fe8674204 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index b376d5644e6..69a76c2cd52 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 86cc965c919..8d61a423813 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index bea3f770303..eb549030e5a 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx index e6b49a4d393..5d25f301462 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 09ed5b723e7..54bbb62b41f 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index c2a6e791425..709a68b5e3d 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index fe34f9698e5..4bcb52fa168 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 5e8551a7b1f..c090740a26e 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 3ac24900eeb..2db4d6eea8d 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index 45bedf0cbf1..a3fcdba29e4 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-10-21} +% \date{Released 2019-10-24} % % \maketitle % diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index beba4ee3583..2ed1eb291df 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -65,7 +65,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-10-21}% +\def\ExplFileDate{2019-10-24}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -10392,7 +10392,7 @@ \tex_openin:D #1 \sys_if_engine_luatex:TF { {#2} } - { #2 \scan_stop: } + { \exp_not:N \__kernel_file_name_quote:n {#2} \scan_stop: } } \cs_new_protected:Npn \ior_close:N #1 { @@ -10567,10 +10567,7 @@ \cs_new_protected:Npn \iow_open:Nn #1#2 { \tl_set:Nx \l__iow_file_name_tl - { - \__kernel_file_name_quote:e - { \__kernel_file_name_sanitize:n {#2} } - } + { \__kernel_file_name_sanitize:n {#2} } \iow_close:N #1 \seq_gpop:NNTF \g__iow_streams_seq \l__iow_stream_tl { \__iow_open_stream:NV #1 \l__iow_file_name_tl } @@ -10585,7 +10582,8 @@ { \tex_global:D \tex_chardef:D #1 = \l__iow_stream_tl \scan_stop: \prop_gput:NVn \g__iow_streams_prop #1 {#2} - \tex_immediate:D \tex_openout:D #1 #2 \scan_stop: + \tex_immediate:D \tex_openout:D + #1 \__kernel_file_name_quote:n {#2} \scan_stop: } \cs_generate_variant:Nn \__iow_open_stream:Nn { NV } \cs_new_protected:Npn \iow_close:N #1 @@ -11008,8 +11006,11 @@ { \exp_args:Ne \__kernel_file_name_trim_spaces:n { - \__kernel_file_name_expand_loop:w #1 - \q_recursion_tail \q_recursion_stop + \exp_args:Ne \__kernel_file_name_strip_quotes:n + { + \__kernel_file_name_expand_loop:w #1 + \q_recursion_tail \q_recursion_stop + } } } \cs_new:Npn \__kernel_file_name_expand_loop:w #1 \q_recursion_stop @@ -11058,6 +11059,26 @@ \c_space_tl \exp_not:N \__kernel_file_name_expand_loop:w } +\cs_new:Npn \__kernel_file_name_strip_quotes:n #1 + { + \__kernel_file_name_strip_quotes:nnnw {#1} { 0 } { } + #1 " \q_recursion_tail " \q_recursion_stop + } +\cs_new:Npn \__kernel_file_name_strip_quotes:nnnw #1#2#3#4 " + { + \quark_if_recursion_tail_stop_do:nn {#4} + { \__kernel_file_name_strip_quotes:nnn {#1} {#2} {#3} } + \__kernel_file_name_strip_quotes:nnnw {#1} { #2 + 1 } { #3#4 } + } +\cs_new:Npn \__kernel_file_name_strip_quotes:nnn #1#2#3 + { + \int_if_even:nT {#2} + { + \__kernel_msg_expandable_error:nnn + { kernel } { unbalanced-quote-in-filename } {#1} + } + #3 + } \cs_new:Npn \__kernel_file_name_trim_spaces:n #1 { \__kernel_file_name_trim_spaces:nw {#1} #1 . \q_nil . \q_stop } \cs_new:Npn \__kernel_file_name_trim_spaces:nw #1#2 . #3 . #4 \q_stop @@ -11073,27 +11094,8 @@ { \__kernel_file_name_trim_spaces_aux:w #1 } \cs_new:Npn \__kernel_file_name_trim_spaces_aux:w #1 \s_stop {#1} \cs_new:Npn \__kernel_file_name_quote:n #1 - { - \__kernel_file_name_quote_auxi:nnnw {#1} { 0 } { } - #1 " \q_recursion_tail " \q_recursion_stop - } -\cs_generate_variant:Nn \__kernel_file_name_quote:n { e } -\cs_new:Npn \__kernel_file_name_quote_auxi:nnnw #1#2#3#4 " - { - \quark_if_recursion_tail_stop_do:nn {#4} - { \__kernel_file_name_quote_auxii:nnn {#1} {#2} {#3} } - \__kernel_file_name_quote_auxi:nnnw {#1} { #2 + 1 } { #3#4 } - } -\cs_new:Npn \__kernel_file_name_quote_auxii:nnn #1#2#3 - { - \int_if_even:nT {#2} - { - \__kernel_msg_expandable_error:nnn - { kernel } { unbalanced-quote-in-filename } {#1} - } - \__kernel_file_name_quote_auxiii:nw {#3} #3 ~ \q_nil \q_stop - } -\cs_new:Npn \__kernel_file_name_quote_auxiii:nw #1 #2 ~ #3 \q_stop + { \__kernel_file_name_quote:nw {#1} #1 ~ \q_nil \q_stop } +\cs_new:Npn \__kernel_file_name_quote:nw #1 #2 ~ #3 \q_stop { \quark_if_nil:nTF {#3} { #1 } @@ -11116,18 +11118,22 @@ } { \prg_return_false: } } -\cs_new_protected:Npn \__file_get_aux:nnN #1#2#3 +\cs_new_protected:Npx \__file_get_aux:nnN #1#2#3 { - \if_false: { \fi: + \exp_not:N \if_false: { \exp_not:N \fi: \group_begin: \int_set_eq:NN \tex_tracingnesting:D \c_zero_int - \exp_args:No \tex_everyeof:D { \c__file_marker_tl } + \exp_not:N \exp_args:No \tex_everyeof:D + { \exp_not:N \c__file_marker_tl } #2 \scan_stop: - \exp_after:wN \__file_get_do:Nw - \exp_after:wN #3 - \exp_after:wN \prg_do_nothing: - \tex_input:D #1 \scan_stop: - \if_false: } \fi: + \exp_not:N \exp_after:wN \exp_not:N \__file_get_do:Nw + \exp_not:N \exp_after:wN #3 + \exp_not:N \exp_after:wN \exp_not:N \prg_do_nothing: + \exp_not:N \tex_input:D + \sys_if_engine_luatex:TF + { {#1} } + { \exp_not:N \__kernel_file_name_quote:n {#1} \scan_stop: } + \exp_not:N \if_false: } \exp_not:N \fi: } \exp_args:Nno \use:nn { \cs_new_protected:Npn \__file_get_do:Nw #1#2 } @@ -11136,16 +11142,13 @@ \group_end: \tl_set:No #1 {#2} } -\cs_new_eq:NN \__file_file_size:n \tex_filesize:D +\cs_new_eq:NN \__file_size:n \tex_filesize:D \sys_if_engine_luatex:T { - \cs_gset:Npn \__file_file_size:n #1 + \cs_gset:Npn \__file_size:n #1 { \lua_now:e - { - l3kernel.filesize - ( " \lua_escape:e {#1} " ) - } + { l3kernel.filesize ( " \lua_escape:e {#1} " ) } } } \cs_new:Npn \file_full_name:n #1 @@ -11155,75 +11158,64 @@ } \cs_new:Npn \__file_full_name:n #1 { - \exp_args:Ne \__file_full_name:nn - { \__kernel_file_name_quote:n {#1} } {#1} - } -\cs_new:Npn \__file_full_name:nn #1#2 - { \tl_if_blank:nF {#1} { - \tl_if_blank:eTF { \__file_file_size:n {#1} } + \tl_if_blank:eTF { \__file_size:n {#1} } { \seq_map_tokens:Nn \l_file_search_path_seq - { \__file_full_name_aux:nn {#2} } + { \__file_full_name_aux:nn {#1} } \cs_if_exist:NT \input@path { \tl_map_tokens:Nn \input@path - { \__file_full_name_aux:nn {#2} } + { \__file_full_name_aux:nn {#1} } } - \__file_file_name_end: + \__file_name_end: } - { \__file_file_ext_check:n {#1} } + { \__file_ext_check:n {#1} } } } \cs_new:Npn \__file_full_name_aux:nn #1#2 - { - \exp_args:Ne \__file_full_name_aux:n - { \__kernel_file_name_quote:e { \tl_to_str:n {#2} / #1 } } - } + { \exp_args:Ne \__file_full_name_aux:n { \tl_to_str:n {#2} / #1 } } \cs_new:Npn \__file_full_name_aux:n #1 { - \tl_if_blank:eF { \__file_file_size:n {#1} } + \tl_if_blank:eF { \__file_size:n {#1} } { \seq_map_break:n { - \__file_file_ext_check:n {#1} - \__file_file_name_cleanup:w + \__file_ext_check:n {#1} + \__file_name_cleanup:w } } } -\cs_new:Npn \__file_file_name_cleanup:w #1 \__file_file_name_end: { } -\cs_new:Npn \__file_file_name_end: { } -\cs_new:Npn \__file_file_ext_check:n #1 - { \__file_file_ext_check_auxi:nw {#1} #1 " #1 " \q_stop } -\cs_new:Npn \__file_file_ext_check_auxi:nw #1#2 " #3 " #4 \q_stop - { \__file_file_ext_check_auxii:nw {#1} #3 / \q_nil / \q_stop } -\cs_new:Npn \__file_file_ext_check_auxii:nw #1#2 / #3 / #4 \q_stop +\cs_new:Npn \__file_name_cleanup:w #1 \__file_name_end: { } +\cs_new:Npn \__file_name_end: { } +\cs_new:Npn \__file_ext_check:n #1 + { \__file_ext_check:nw { / } #1 / \q_nil / \q_stop } +\cs_new:Npn \__file_ext_check:nw #1 #2 / #3 / #4 \q_stop { \quark_if_nil:nTF {#3} - { \__file_file_ext_check_auxiii:nw {#1} #2 . \q_nil . \q_stop } - { \__file_file_ext_check_auxii:nw {#1} #3 / #4 \q_stop } + { + \exp_args:No \__file_ext_check:nnw + { \use_none:n #1 } {#2} #2 . \q_nil . \q_stop + } + { \__file_ext_check:nw { #1 #2 / } #3 / #4 \q_stop } } -\cs_new:Npx \__file_file_ext_check_auxiii:nw #1#2 . #3 . #4 \q_stop +\cs_new:Npx \__file_ext_check:nnw #1#2#3 . #4 . #5 \q_stop { - \exp_not:N \quark_if_nil:nTF {#3} + \exp_not:N \quark_if_nil:nTF {#4} { - \exp_not:N \exp_args:Nee \exp_not:N \__file_file_ext_check_auxiv:nn - { \exp_not:N \__kernel_file_name_quote:n {#1} } - { - \exp_not:N \__kernel_file_name_quote:n - { #1 \tl_to_str:n { .tex } } - } + \exp_not:N \__file_ext_check:nn + { #1 #2 } { #1 #2 \tl_to_str:n { .tex } } } - {#1} + { #1 #2 } } -\cs_new:Npn \__file_file_ext_check_auxiv:nn #1#2 +\cs_new:Npn \__file_ext_check:nn #1#2 { - \tl_if_blank:eTF { \__file_file_size:n {#2} } + \tl_if_blank:eTF { \__file_size:n {#2} } {#1} { \int_compare:nNnTF - { \__file_file_size:n {#1} } = { \__file_file_size:n {#2} } + { \__file_size:n {#1} } = { \__file_size:n {#2} } {#2} {#1} } @@ -11302,10 +11294,7 @@ \cs_new_protected:Npn \__file_get_full_name_search:nN #1#2 { \tl_set:Nx \l__file_full_name_tl - { - \__kernel_file_name_quote:e - { \tl_to_str:n {#1} \l__file_base_name_tl } - } + { \tl_to_str:n {#1} \l__file_base_name_tl } \__kernel_ior_open:No \g__file_internal_ior \l__file_full_name_tl \ior_if_eof:NF \g__file_internal_ior { #2 { \prg_break: } } } @@ -11493,14 +11482,17 @@ { \__file_input:V \l__file_full_name_tl } { \__kernel_file_missing:n {#1} } } -\cs_new_protected:Npn \__file_input:n #1 +\cs_new_protected:Npx \__file_input:n #1 { - \clist_if_exist:NTF \@filelist - { \@addtofilelist {#1} } - { \seq_gput_right:Nn \g__file_record_seq {#1} } - \__file_input_push:n {#1} - \tex_input:D #1 \c_space_tl - \__file_input_pop: + \exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist + { \exp_not:N \@addtofilelist {#1} } + { \seq_gput_right:Nn \exp_not:N \g__file_record_seq {#1} } + \exp_not:N \__file_input_push:n {#1} + \exp_not:N \tex_input:D + \sys_if_engine_luatex:TF + { {#1} } + { \exp_not:N \__kernel_file_name_quote:n {#1} \scan_stop: } + \exp_not:N \__file_input_pop: } \cs_generate_variant:Nn \__file_input:n { V } \cs_new_protected:Npn \__file_input_push:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 258765ae5fb..a836f70aec9 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-10-21}% +\def\ExplFileDate{2019-10-24}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx index 50a4d8b52b8..dbeefa3cf48 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.ltx @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-10-21}% +\def\ExplFileDate{2019-10-24}% \let\ExplLoaderFileDate\ExplFileDate \everyjob\expandafter{\the\everyjob \message{expl3 <\ExplFileDate> L3 programming layer}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index bf0dac992fd..9c6286928e6 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-10-21}% +\def\ExplFileDate{2019-10-24}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% |