From 9067afb3f8bce172638d12a6f926ab82547590e6 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 24 Aug 2018 22:18:02 +0000 Subject: l3 (24aug18) git-svn-id: svn://tug.org/texlive/trunk@48476 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/l3experimental/CHANGELOG.md | 49 +++ .../texmf-dist/doc/latex/l3experimental/README.md | 11 +- .../doc/latex/l3experimental/l3color/l3color.pdf | Bin 350165 -> 349985 bytes .../latex/l3experimental/l3draw/l3draw-code.pdf | Bin 606133 -> 606122 bytes .../doc/latex/l3experimental/l3draw/l3draw.pdf | Bin 487422 -> 487165 bytes .../latex/l3experimental/l3str/l3str-convert.pdf | Bin 399844 -> 399665 bytes .../latex/l3experimental/l3str/l3str-format.pdf | Bin 345170 -> 344984 bytes .../l3experimental/l3sys-shell/l3sys-shell.pdf | Bin 0 -> 311864 bytes .../doc/latex/l3experimental/xcoffins/xcoffins.pdf | Bin 372538 -> 372362 bytes .../doc/latex/l3experimental/xgalley/l3galley.pdf | Bin 386255 -> 386072 bytes .../doc/latex/l3experimental/xgalley/xgalley.pdf | Bin 286079 -> 285895 bytes Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md | 17 +- Master/texmf-dist/doc/latex/l3kernel/README.md | 2 +- Master/texmf-dist/doc/latex/l3kernel/expl3.pdf | Bin 585864 -> 585429 bytes .../texmf-dist/doc/latex/l3kernel/interface3.pdf | Bin 1533530 -> 1534586 bytes .../texmf-dist/doc/latex/l3kernel/interface3.tex | 2 +- .../texmf-dist/doc/latex/l3kernel/l3docstrip.pdf | Bin 263786 -> 263347 bytes .../texmf-dist/doc/latex/l3kernel/l3obsolete.txt | 11 + .../texmf-dist/doc/latex/l3kernel/l3styleguide.pdf | Bin 280479 -> 280068 bytes .../texmf-dist/doc/latex/l3kernel/l3styleguide.tex | 2 +- .../doc/latex/l3kernel/l3syntax-changes.pdf | Bin 228223 -> 227794 bytes .../doc/latex/l3kernel/l3syntax-changes.tex | 2 +- Master/texmf-dist/doc/latex/l3kernel/source3.pdf | Bin 5560570 -> 5573063 bytes Master/texmf-dist/doc/latex/l3kernel/source3.tex | 2 +- .../texmf-dist/doc/latex/l3packages/CHANGELOG.md | 31 ++ Master/texmf-dist/doc/latex/l3packages/README.md | 4 +- .../doc/latex/l3packages/l3keys2e/l3keys2e.pdf | Bin 327517 -> 327139 bytes Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf | Bin 307691 -> 307356 bytes .../doc/latex/l3packages/xfrac/xfrac.pdf | Bin 481710 -> 481373 bytes .../doc/latex/l3packages/xparse/xparse.pdf | Bin 475404 -> 475075 bytes .../doc/latex/l3packages/xtemplate/xtemplate.pdf | Bin 416766 -> 416436 bytes .../latex/l3experimental/l3color/l3color.dtx | 8 +- .../latex/l3experimental/l3draw/l3draw-boxes.dtx | 2 +- .../latex/l3experimental/l3draw/l3draw-paths.dtx | 2 +- .../latex/l3experimental/l3draw/l3draw-points.dtx | 2 +- .../latex/l3experimental/l3draw/l3draw-scopes.dtx | 2 +- .../l3experimental/l3draw/l3draw-softpath.dtx | 2 +- .../latex/l3experimental/l3draw/l3draw-state.dtx | 2 +- .../l3experimental/l3draw/l3draw-transforms.dtx | 2 +- .../source/latex/l3experimental/l3draw/l3draw.dtx | 10 +- .../latex/l3experimental/l3str/l3str-convert.dtx | 14 +- .../latex/l3experimental/l3str/l3str-format.dtx | 4 +- .../l3experimental/l3sys-shell/l3sys-shell.dtx | 367 +++++++++++++++++++++ .../l3experimental/l3sys-shell/l3sys-shell.ins | 60 ++++ .../latex/l3experimental/xcoffins/xcoffins.dtx | 4 +- .../latex/l3experimental/xgalley/l3galley.dtx | 6 +- .../latex/l3experimental/xgalley/xgalley.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 4 +- .../texmf-dist/source/latex/l3kernel/l3alloc.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3basics.dtx | 28 +- .../source/latex/l3kernel/l3bootstrap.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/l3box.dtx | 40 +-- .../source/latex/l3kernel/l3candidates.dtx | 167 ++++++++-- .../texmf-dist/source/latex/l3kernel/l3clist.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3coffins.dtx | 2 +- .../source/latex/l3kernel/l3color-base.dtx | 2 +- .../source/latex/l3kernel/l3deprecation.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/l3doc.dtx | 8 +- .../source/latex/l3kernel/l3docstrip.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3drivers.dtx | 20 +- .../texmf-dist/source/latex/l3kernel/l3expan.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3file.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3final.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/l3flag.dtx | 2 +- .../source/latex/l3kernel/l3fp-assign.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-aux.dtx | 8 +- .../source/latex/l3kernel/l3fp-basics.dtx | 2 +- .../source/latex/l3kernel/l3fp-convert.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-expo.dtx | 4 +- .../source/latex/l3kernel/l3fp-extended.dtx | 2 +- .../source/latex/l3kernel/l3fp-logic.dtx | 2 +- .../source/latex/l3kernel/l3fp-parse.dtx | 8 +- .../source/latex/l3kernel/l3fp-random.dtx | 2 +- .../source/latex/l3kernel/l3fp-round.dtx | 2 +- .../source/latex/l3kernel/l3fp-traps.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-trig.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3fp.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fparray.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3int.dtx | 2 +- .../source/latex/l3kernel/l3intarray.dtx | 2 +- .../source/latex/l3kernel/l3kernel-functions.dtx | 18 +- Master/texmf-dist/source/latex/l3kernel/l3keys.dtx | 9 +- .../texmf-dist/source/latex/l3kernel/l3luatex.dtx | 79 +++-- Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | 4 +- .../texmf-dist/source/latex/l3kernel/l3names.dtx | 2 +- .../source/latex/l3kernel/l3oldmodules.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prg.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prop.dtx | 10 +- .../texmf-dist/source/latex/l3kernel/l3quark.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3regex.dtx | 14 +- Master/texmf-dist/source/latex/l3kernel/l3seq.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3skip.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/l3sort.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3str.dtx | 189 ++++++----- Master/texmf-dist/source/latex/l3kernel/l3sys.dtx | 8 +- .../source/latex/l3kernel/l3tl-analysis.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3token.dtx | 10 +- .../texmf-dist/source/latex/l3kernel/l3unicode.dtx | 8 +- .../source/latex/l3packages/l3keys2e/l3keys2e.dtx | 4 +- .../texmf-dist/source/latex/l3packages/xfp/xfp.dtx | 4 +- .../source/latex/l3packages/xfrac/xfrac.dtx | 4 +- .../source/latex/l3packages/xparse/xparse.dtx | 14 +- .../latex/l3packages/xtemplate/xtemplate.dtx | 4 +- .../tex/latex/l3experimental/l3color/l3color.sty | 6 +- .../tex/latex/l3experimental/l3draw/l3draw.sty | 2 +- .../latex/l3experimental/l3str/l3str-convert.sty | 2 +- .../latex/l3experimental/l3str/l3str-enc-utf16.def | 4 +- .../latex/l3experimental/l3str/l3str-enc-utf32.def | 4 +- .../l3experimental/l3str/l3str-esc-string.def | 2 +- .../latex/l3experimental/l3str/l3str-format.sty | 2 +- .../l3experimental/l3sys-shell/l3sys-shell.sty | 177 ++++++++++ .../tex/latex/l3experimental/xcoffins/xcoffins.sty | 2 +- .../tex/latex/l3experimental/xgalley/l3galley.sty | 4 +- .../tex/latex/l3experimental/xgalley/xgalley.sty | 2 +- .../texmf-dist/tex/latex/l3kernel/expl3-code.tex | 297 ++++++++++------- .../tex/latex/l3kernel/expl3-generic.tex | 2 +- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3doc.cls | 6 +- .../texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def | 6 +- Master/texmf-dist/tex/latex/l3kernel/l3dvips.def | 6 +- Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def | 6 +- Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def | 6 +- .../texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def | 6 +- .../tex/latex/l3packages/l3keys2e/l3keys2e.sty | 2 +- Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty | 2 +- .../tex/latex/l3packages/xfrac/xfrac.sty | 2 +- .../tex/latex/l3packages/xparse/xparse.sty | 12 +- .../tex/latex/l3packages/xtemplate/xtemplate.sty | 2 +- 129 files changed, 1436 insertions(+), 492 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md create mode 100644 Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf create mode 100644 Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md create mode 100644 Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx create mode 100644 Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins create mode 100644 Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md new file mode 100644 index 00000000000..0872d5d5987 --- /dev/null +++ b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md @@ -0,0 +1,49 @@ +# Changelog +All notable changes to the `l3experimental` bundle since the start of 2018 +will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +this project uses date-based 'snapshot' version identifiers. + +## [Unreleased] + +## [2018-08-24] + +### Fixed +- Actually distribute `l3sys-shell` + +## [2018-08-23] + +### Added +- `CHANGELOG.md` (fixes #460) +- `l3sys-shell` for experimental shell functions + +## [2018-05-12] + +### Changed +- Track changes in primitive naming in `l3kernel` + +## [2018-04-30] + +### Changed +- Switch to ISO date format +- Improve cross-module use of internal functions + +## [2018-03-05] + +### Added +- Several new functions added to `l3draw` + +## [2018-02-21] + +### Added +- New `l3color` module using `xcolor`-like expression syntax +- New `l3draw` module, based on `pgf` layer of the TikZ system + +[Unreleased]: https://github.com/latex3/latex3/compare/2018-08-24...HEAD +[2018-08-24]: https://github.com/latex3/latex3/compare/2018-08-23...2018-08-24 +[2018-08-23]: https://github.com/latex3/latex3/compare/2018-05-12...2018-08-23 +[2018-05-12]: https://github.com/latex3/latex3/compare/2018-04-30...2018-05-12 +[2018-04-30]: https://github.com/latex3/latex3/compare/2018-03-05...2018-04-30 +[2018-03-05]: https://github.com/latex3/latex3/compare/2018-02-21...2018-03-05 +[2018-02-21]: https://github.com/latex3/latex3/compare/2017-12-16...2018-02-21 diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md index 22cf1e85332..860d51d815f 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/README.md +++ b/Master/texmf-dist/doc/latex/l3experimental/README.md @@ -1,7 +1,7 @@ Experimental LaTeX3 Concepts ============================ -Release 2018-05-12 +Release 2018-08-24 Overview -------- @@ -24,6 +24,7 @@ bundles: * `l3color` * `l3draw` * `l3str` +* `l3sys-shell` * `xcoffins` * `xgalley` @@ -51,6 +52,12 @@ category code 10 ('space'). The `l3str` bundle consists of two parts. The first is `l3str` itself. This is a collection of functions to act on strings, including for manipulations such as UTF8 mappings in pdfTeX. +`l3sys-shell` +------------- + +This module provides abstractions for common shell functions, e.g. file +deletion and copying. + `xcoffins` ---------- @@ -77,7 +84,7 @@ Discussion Discussion concerning the approach, suggestions for improvements, changes, additions, _etc._ should be addressed to the list -[LaTeX-L](http://news.gmane.org/group/gmane.comp.tex.latex.latex3). +[LaTeX-L](https://listserv.uni-heidelberg.de/cgi-bin/wa?A0=LATEX-L). You can subscribe to this list by sending mail to diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf index de0af500332..6ba4eee99ad 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf and b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf index 9d8c50507da..b3ace373421 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf and b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf index 9ebe81d2a57..79f1061d3fb 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf and b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf index b8a12ce16be..5bdeea477a6 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf and b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf index 7d406f7655b..c0d3fb50e43 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf and b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf new file mode 100644 index 00000000000..dfd6f65424e Binary files /dev/null and b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf index 5d369b97688..74451ab9b75 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf and b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf index 644ad7cbb80..196ef3faaf4 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf and b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf index d9c70bf3260..2b4ba6bcb0e 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf and b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md index 002fbfee61b..d3441e2afd8 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md @@ -7,6 +7,18 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2018-08-23] + +### Added +- `\lua_escape:e`, `\lua_now:e` and `\lua_shipout_e:n` +- `\str_case_e:nn(TF)` and `\str_if_eq:ee(TF)` +- `\sys_if_platform_unix:(TF)` and `\sys_if_platform_windows:(TF)` +- `\tl_(g)set_from_shell:Nnn` + +### Deprecated +- `\lua_escape_x:n`, `\lua_now_x:n` and `\lua_shipout_x:n` +- `\str_case_x:nn(TF)` and `\str_if_eq_x:nn(TF)` + ## [2018-06-14] ### Added @@ -110,8 +122,9 @@ this project uses date-based 'snapshot' version identifiers. - Step func­tions have been added for dim vari­ables, e.g. `\dim_step_in­line:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2018-06-14...HEAD -[2018-06-01]: https://github.com/latex3/latex3/compare/2018-06-01...2018-06-14 +[Unreleased]: https://github.com/latex3/latex3/compare/2018-08-23...HEAD +[2018-08-23]: https://github.com/latex3/latex3/compare/2018-06-14...2018-08-23 +[2018-06-14]: https://github.com/latex3/latex3/compare/2018-06-01...2018-06-14 [2018-06-01]: https://github.com/latex3/latex3/compare/2018-05-13...2018-06-01 [2018-05-13]: https://github.com/latex3/latex3/compare/2018-05-12...2018-05-13 [2018-05-12]: https://github.com/latex3/latex3/compare/2018-04-30...2018-05-12 diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index 91f8125d4cd..a12b92d0dd2 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 2018-06-14 +Release 2018-08-23 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf index 17c5518c8be..6e4a52b0341 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf index 3fc0de93a37..6cfb021f727 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex index 448805aabe7..3fef7a4217c 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex @@ -52,7 +52,7 @@ {latex-team@latex-project.org}% }% } -\date{Released 2018-06-14} +\date{Released 2018-08-23} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf index 7758775d500..8f30b7a38a1 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt index 5c1989b9657..3c588bc2c7d 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt +++ b/Master/texmf-dist/doc/latex/l3kernel/l3obsolete.txt @@ -53,11 +53,22 @@ Function Expires end \ior_log_streams: 2018 \iow_list_streams: 2018 \iow_log_streams: 2018 +\lua_escape_x:n 2019 +\lua_now_x:n 2019 +\lua_shipout_x:n 2019 \luatex_...:D 2019 \pdftex_...:D 2019 \ptex_...:D 2019 \sort_ordered: 2018 \sort_reversed: 2018 +\str_case_x:nn 2019 +\str_case_x:nnF 2019 +\str_case_x:nnT 2019 +\str_case_x:nnTF 2019 +\str_if_eq_x:nnF 2019 +\str_if_eq_x:nnT 2019 +\str_if_eq_x:nnTF 2019 +\str_if_eq_x_p:nn 2019 \tl_show_analysis:N 2019 \tl_show_analysis:n 2019 \token_new:Nn 2018 diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf index bdf47e1f3af..ba19c87acc0 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex index 0e0d8ff54fa..82003bc95c1 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex @@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2018-06-14} +\date{Released 2018-08-23} \begin{document} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf index 819c02fe482..add9b78ecf0 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex index 281575ff7b0..d21a6a11e27 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex @@ -30,7 +30,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2018-06-14} +\date{Released 2018-08-23} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf index 21661ecef0b..679c2147284 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf and b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex index 308681f810d..e3e1bc280f6 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex @@ -51,7 +51,7 @@ {latex-team@latex-project.org}% }% } -\date{Released 2018-06-14} +\date{Released 2018-08-23} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md new file mode 100644 index 00000000000..bb08e570834 --- /dev/null +++ b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md @@ -0,0 +1,31 @@ +# Changelog +All notable changes to the `l3packages` bundle since the start of 2018 +will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +this project uses date-based 'snapshot' version identifiers. + +## [Unreleased] + +## [2018-08-23] + +### Added +- `CHANGELOG.md` (fixes #460) + +## [2018-05-12] + +### Changed +- Track changes in primitive naming in `l3kernel` + +## [2018-04-30] + +### Changed +- `xparse`: allow spaces before trailing optional arguments, + with new "!" modifier to control behavior +- Switch to ISO date format +- Improve cross-module use of internal functions + +[Unreleased]: https://github.com/latex3/latex3/compare/2018-08-23...HEAD +[2018-08-23]: https://github.com/latex3/latex3/compare/2018-05-12...2018-08-23 +[2018-05-12]: https://github.com/latex3/latex3/compare/2018-04-30...2018-05-12 +[2018-04-30]: https://github.com/latex3/latex3/compare/2017-12-16...2018-04-30 diff --git a/Master/texmf-dist/doc/latex/l3packages/README.md b/Master/texmf-dist/doc/latex/l3packages/README.md index f25647911ea..5438f53d160 100644 --- a/Master/texmf-dist/doc/latex/l3packages/README.md +++ b/Master/texmf-dist/doc/latex/l3packages/README.md @@ -1,7 +1,7 @@ LaTeX3 High-Level Concepts ========================== -Release 2018-05-12 +Release 2018-08-23 Overview -------- @@ -71,7 +71,7 @@ Discussion Discussion concerning the approach, suggestions for improvements, changes, additions, _etc._ should be addressed to the list -[LaTeX-L](http://news.gmane.org/group/gmane.comp.tex.latex.latex3). +[LaTeX-L](https://listserv.uni-heidelberg.de/cgi-bin/wa?A0=LATEX-L). You can subscribe to this list by sending mail to diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf index 6d026a570b4..2331453c43d 100644 Binary files a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf and b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf index 0edc93d272c..4dfe95883c2 100644 Binary files a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf and b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf index aeadcad7c40..eba375d6ec8 100644 Binary files a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf and b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf index d42394e5988..e58a84dacde 100644 Binary files a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf and b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf index cd4fa30ec22..2787c0fee69 100644 Binary files a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf and b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf differ diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx index 83f70fbf56d..6e1938bcfd8 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % @@ -263,7 +263,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3color}{2018-05-12}{} +\ProvidesExplPackage{l3color}{2018-08-24}{} {L3 Experimental color support} % % \end{macrocode} @@ -359,7 +359,7 @@ \cs_generate_variant:Nn \@@_convert:nnN { VV } \cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4 { - \str_if_eq_x:nnT {#1} { spot } % TO DO!!! + \str_if_eq:nnT {#1} { spot } % TO DO!!! { } \tl_set:Nx #4 { \use:c { @@_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop } @@ -551,7 +551,7 @@ \@@_extract:nNN {#2} \l_@@_next_model_tl \l_@@_next_value_tl \tl_if_eq:NNF \l_@@_model_tl \l_@@_next_model_tl { - \str_if_eq_x:nnT { \l_@@_model_tl } { gray } + \str_if_eq:VnT \l_@@_model_tl { gray } { \use:x { diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx index 57117b09282..8a2e9c76021 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx index 2e77000cff1..93b7f1ea6c4 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx index 0c0444a19a2..d5b6659f377 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx index aa2d19e1ae2..a5f8b3857b6 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx index 69ad970d71e..820f5d62140 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx index 844e488406d..949d50d2e93 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx index 17ac6474804..90f1e7b5b99 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx index aa43879c0d7..6b710ac893e 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx @@ -109,7 +109,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % @@ -320,7 +320,7 @@ % Scoping drawing elements is necessary to allowing nesting of subparts. % These features have specific use requirements: the preconditions must be % met. In particular, each type of drawing scope also constitutes a -% group (\cs{groupd_being:}/\cs{group_end:} pair): as such, they must be +% group (\cs{group_begin:}/\cs{group_end:} pair): as such, they must be % nested correctly. % % \begin{function}{\draw_scope_begin:, \draw_scope_end:} @@ -486,7 +486,7 @@ % error will occur. % \end{function} % -% \begin{function}[EXP]{\draw_point_intersect_circles:nnnn} +% \begin{function}[EXP]{\draw_point_intersect_circles:nnnnn} % \begin{syntax} % \cs{draw_point_intersect_circles:nnnnn} % \Arg{center1} \Arg{radius1} \Arg{center2} \Arg{radius2} \Arg{root} @@ -568,7 +568,7 @@ % \draw_path_lineto:n { 0cm , 2cm } % \draw_path_lineto:n { 3cm , 2cm } % \draw_path_curveto:nnn -% { 3cm , 0cm } { 2cm , 0cm } { 1cm , 0 cm } +% { 3cm , 0cm } { 2cm , 0cm } { 1cm , 0cm } % \draw_path_use_clear:n { stroke } % \draw_end: % \end{demo} @@ -1106,7 +1106,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3draw}{2018-05-12}{} +\ProvidesExplPackage{l3draw}{2018-08-24}{} {L3 Experimental core drawing support} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx index 7c8baf1855e..98879fbad52 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % @@ -234,7 +234,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3str-convert}{2018-05-12}{} +\ProvidesExplPackage{l3str-convert}{2018-08-24}{} {L3 Experimental string encoding conversions} % \end{macrocode} % @@ -1547,7 +1547,7 @@ { \@@_unescape_string_repeat:NNNNNN ?? } } { - \str_case_x:nnF {#2} + \str_case_e:nnF {#2} { { \c_backslash_str } { 134 } { ( } { 50 } @@ -2257,10 +2257,10 @@ } \cs_new_protected:Npn \@@_decode_utf_xvi_bom:NN #1#2 { - \str_if_eq_x:nnTF { #1#2 } { ^^ff ^^fe } + \str_if_eq:nnTF { #1#2 } { ^^ff ^^fe } { \@@_decode_utf_xvi:Nw 2 } { - \str_if_eq_x:nnTF { #1#2 } { ^^fe ^^ff } + \str_if_eq:nnTF { #1#2 } { ^^fe ^^ff } { \@@_decode_utf_xvi:Nw 1 } { \@@_decode_utf_xvi:Nw 1 #1#2 } } @@ -2548,10 +2548,10 @@ } \cs_new_protected:Npn \@@_decode_utf_xxxii_bom:NNNN #1#2#3#4 { - \str_if_eq_x:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 } + \str_if_eq:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 } { \@@_decode_utf_xxxii:Nw 2 } { - \str_if_eq_x:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff } + \str_if_eq:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff } { \@@_decode_utf_xxxii:Nw 1 } { \@@_decode_utf_xxxii:Nw 1 #1#2#3#4 } } diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx index 469af8f1eab..449179e0efc 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % @@ -162,7 +162,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3str-format}{2018-05-12}{} +\ProvidesExplPackage{l3str-format}{2018-08-24}{} {L3 Experimental string formatting} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx new file mode 100644 index 00000000000..bd65524c0f3 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx @@ -0,0 +1,367 @@ +% \iffalse meta-comment +% +%% File: l3sys-shell.dtx Copyright(C) 2018 The LaTeX3 Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% http://www.latex-project.org/lppl.txt +% +% This file is part of the "l3experimental bundle" (The Work in LPPL) +% and all files in that bundle must be distributed together. +% +% ----------------------------------------------------------------------- +% +% The development version of the bundle can be found at +% +% https://github.com/latex3/latex3 +% +% for those people who are interested. +% +%<*driver|package> +\RequirePackage{expl3} +% +%<*driver> +\documentclass[full]{l3doc} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +% +% \fi +% +% \title{^^A +% The \pkg{l3sys-shell} package\\ System shell functions^^A +% } +% +% \author{^^A +% The \LaTeX3 Project\thanks +% {^^A +% E-mail: +% \href{mailto:latex-team@latex-project.org} +% {latex-team@latex-project.org}^^A +% }^^A +% } +% +% \date{Released 2018-08-24} +% +% \maketitle +% +% \begin{documentation} +% +% \begin{function}[added = 2018-07-28]{\sys_shell_cp:nn} +% \begin{syntax} +% \cs{sys_shell_cp:nn} \Arg{source} \Arg{dest} +% \end{syntax} +% Copies the files specified in the \meta{source} (which may include +% wildcards) to the \meta{dest}. The file paths should be specified using +% |/| as a path separator. Copying is \emph{not} recursive: only files at +% the path level given are copied. If unrestricted shell escape is not +% enabled, no action is attempted. +% \end{function} +% +% \begin{function}[added = 2018-07-27]{\sys_shell_mkdir:n} +% \begin{syntax} +% \cs{sys_shell_mkdir:n} \Arg{directory} +% \end{syntax} +% Creates the \meta{directory}, which should should be specified using |/| as +% a path separator. If unrestricted shell escape is not enabled, no action is +% attempted. +% \end{function} +% +% \begin{function}[added = 2018-07-28]{\sys_shell_mv:nn} +% \begin{syntax} +% \cs{sys_shell_mv:nn} \Arg{old} \Arg{new} +% \end{syntax} +% Moves the files from the \meta{old} to \meta{new} names/locations: the +% \meta{old} names may include wildcards. In both arguments, |/| should be +% used as the path separator. If unrestricted shell escape is not enabled, no +% action is attempted. +% \end{function} +% +% \begin{function}[added = 2018-07-27]{\sys_shell_rm:n} +% \begin{syntax} +% \cs{sys_shell_rm:n} \Arg{files} +% \end{syntax} +% Removes the \meta{files} (which may include wildcards). The file path should +% be specified using |/| as a path separator. If unrestricted shell escape is +% not enabled, no action is attempted. +% \end{function} +% +% \begin{function}[added = 2018-07-27]{\sys_shell_rmdir:n} +% \begin{syntax} +% \cs{sys_shell_rmdir:n} \Arg{directory} +% \end{syntax} +% Removes the \meta{directory}, which should should be specified using |/| as +% a path separator. If unrestricted shell escape is not enabled, no action is +% attempted. +% \end{function} +% +% \begin{function}[added = 2018-07-28]{\sys_shell_get_pwd:N} +% \begin{syntax} +% \cs{sys_shell_get_pwd:N} \meta{str var} +% \end{syntax} +% Sets the \meta{str var} to the present working directory (the output of +% |pwd| on Unix or |cd| on Windows). Note that on Windows this will contain +% string backslash chars (|\|). If unrestricted shell escape is not +% enabled, no action is taken. +% \end{function} +% +% \begin{function}[added = 2018-07-28]{\sys_shell_split_ls:nN} +% \begin{syntax} +% \cs{sys_shell_split_ls:N} \Arg{glob} \meta{seq} +% \end{syntax} +% Sets the \meta{seq var} to contain one entry per directory listing +% (equivalent to |ls -1| or |dir /b|) as specified by the \meta{glob}: the +% entries are strings. If unrestricted shell is not enabled, no action is +% taken. +% \end{function} +% +% \end{documentation} +% +% \begin{implementation} +% +% \section{\pkg{l3sys-shell} implementation} +% +% \begin{macrocode} +%<*initex|package> +% \end{macrocode} +% +% \begin{macrocode} +%<@@=sys> +% \end{macrocode} +% +% \begin{macrocode} +%<*package> +\ProvidesExplPackage{l3sys-shell}{2018-08-24}{} + {L3 Experimental system shell functions} +% +% \end{macrocode} +% +% \begin{macro}[EXP]{\@@_path_to_win:n} +% \begin{macro}[EXP]{\@@_path_to_win:w} +% \begin{macro}[EXP]{\@@_path_to_win:N} +% A simple expandable search-and-replace for providing Windows-style paths. +% \begin{macrocode} +\cs_new:Npn \@@_path_to_win:n #1 + { + \exp_after:wN \@@_path_to_win:w \tl_to_str:n {#1} ~ \q_stop + } +\cs_new:Npn \@@_path_to_win:w #1 ~ #2 \q_stop + { + \@@_path_to_win:N #1 \q_nil + \tl_if_empty:nF {#2} + { + \c_space_tl + \@@_path_to_win:w #2 \q_stop + } + } +\cs_new:Npn \@@_path_to_win:N #1 + { + \quark_if_nil:NF #1 + { + \token_if_eq_meaning:NNTF #1 / + { \c_backslash_str } + {#1} + \@@_path_to_win:N + } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\sys_shell_cp:nn} +% Simple Unix-like file copying: at some stage we may need a directory-only +% version as Windows and Unix have different requirements here. +% \begin{macrocode} +\cs_new_protected:Npx \sys_shell_cp:nn #1#2 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { + cp~-f~ \exp_not:N \tl_to_str:n {#1} ~ + \exp_not:N \tl_to_str:n {#2} + } + \sys_if_platform_windows:T + { + copy~/y~ \exp_not:N \@@_path_to_win:n {#1} ~ + \exp_not:N \@@_path_to_win:n {#2} + } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sys_shell_mkdir:n} +% Windows (with the extensions) will automatically make directory trees but +% issues a warning if the directory already exists: avoid by including a +% test. +% \begin{macrocode} +\cs_new_protected:Npx \sys_shell_mkdir:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { + if~not~exist~ + \exp_not:N \@@_path_to_win:n { #1 / nul } ~ + mkdir~ \exp_not:N \@@_path_to_win:n {#1} + } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sys_shell_mv:nn} +% On Windows we do not have a single |mv| operation, so copy-and-delete +% instead. +% \begin{macrocode} +\cs_new_protected:Npx \sys_shell_mv:nn #1#2 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { + mv~ \exp_not:N \tl_to_str:n {#1} ~ + \exp_not:N \tl_to_str:n {#2} + } + \sys_if_platform_windows:T + { + copy~/y~ \exp_not:N \@@_path_to_win:n {#1} ~ + \exp_not:N \@@_path_to_win:n {#2} + \token_to_str:N & \token_to_str:N & + del~/f~/q~\exp_not:N \@@_path_to_win:n {#1} + } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sys_shell_rm:n} +% Deletion: obviously a big health warning here! +% \begin{macrocode} +\cs_new_protected:Npx \sys_shell_rm:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { rm~-f~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { del~/f~/q~ \exp_not:N \@@_path_to_win:n {#1} } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sys_shell_rmdir:n} +% When removing a directory, we create it first as that avoids errors in +% the Windows case. +% \begin{macrocode} +\cs_new_protected:Npx \sys_shell_rmdir:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_mkdir:n {#1} + \sys_shell_now:x + { + \sys_if_platform_unix:T + { rm~-rf~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { rmdir~/s~/q~ \exp_not:N \@@_path_to_win:n {#1} } + } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{\l_@@_tmp_tl} +% Scratch space. +% \begin{macrocode} +\tl_new:N \l_@@_tmp_tl +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\sys_shell_get_pwd:N} +% Getting the path is easy: the main work is avoiding loosing any +% information. (This information can be obtained using the recorder file: +% that does not require shell escape. However, it's hard to see how it might +% be useful without the other file functions.) +% \begin{macrocode} +\cs_new_protected:Npx \sys_shell_get_pwd:N #1 + { + \sys_if_shell_unrestricted:T + { + \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l_@@_tmp_tl + { + \char_set_catcode_other:N \exp_not:N \\ + \char_set_catcode_other:N \exp_not:N \# + \char_set_catcode_other:N \exp_not:N \~ + \char_set_catcode_other:N \exp_not:N \% + \char_set_catcode_space:N \exp_not:N \ % + } + { + \sys_if_platform_unix:T { pwd } + \sys_if_platform_windows:T { cd } + } + \str_set:NV #1 \exp_not:N \l_@@_tmp_tl + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\sys_shell_split_ls:nN} +% Getting a one-per-line listing is easy enough. We need to set +% \cs{ExplSyntaxOff} as that deals with the end-of-line character. After that, +% just a case of tidying up. The listing always ends in |^^M| so there is an +% extra entry to trim. +% \begin{macrocode} +\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2 + { + \sys_if_shell_unrestricted:T + { + \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l_@@_tmp_tl + { + \ExplSyntaxOff + \char_set_catcode_other:N \exp_not:N \\ + \char_set_catcode_other:N \exp_not:N \# + \char_set_catcode_other:N \exp_not:N \~ + \char_set_catcode_other:N \exp_not:N \% + \char_set_catcode_other:n { 13 } + } + { + \sys_if_platform_unix:T { ls~-1~ #1 } + \sys_if_platform_windows:T { dir~/b~ #1 } + } + \str_set:NV \exp_not:N \l_@@_tmp_tl \exp_not:N \l_@@_tmp_tl + \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } } + \exp_not:N \l_@@_tmp_tl + \seq_pop_right:NN #2 \exp_not:N \l_@@_tmp_tl + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \end{implementation} +% +% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins new file mode 100644 index 00000000000..33dbe46ea21 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.ins @@ -0,0 +1,60 @@ +\iffalse meta-comment + +File l3sys-shell.ins Copyright (C) 2018 The LaTeX3 Project + +It may be distributed and/or modified under the conditions of the +LaTeX Project Public License (LPPL), either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in the file + + http://www.latex-project.org/lppl.txt + +This file is part of the "l3experimental bundle" (The Work in LPPL) +and all files in that bundle must be distributed together. + +----------------------------------------------------------------------- + +The development version of the bundle can be found at + + https://github.com/latex3/latex3 + +for those people who are interested. + +----------------------------------------------------------------------- + +Any modification of this file should ensure that the copyright and +license information is placed in the derived files. + +\fi + +\input l3docstrip.tex +\askforoverwritefalse + +\preamble + +Copyright (C) 2018 The LaTeX3 Project + +It may be distributed and/or modified under the conditions of +the LaTeX Project Public License (LPPL), either version 1.3c of +this license or (at your option) any later version. The latest +version of this license is in the file: + + http://www.latex-project.org/lppl.txt + +This file is part of the "l3experimental bundle" (The Work in LPPL) +and all files in that bundle must be distributed together. + +\endpreamble +% stop docstrip adding \endinput +\postamble +\endpostamble + +\keepsilent + +\generate{\file{l3sys-shell.sty} + { + \from{l3sys-shell.dtx}{package} + } +} + +\endbatchfile diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx index 07091341102..7bd2ba64fdc 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx @@ -54,7 +54,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % @@ -673,7 +673,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xcoffins}{2018-05-12}{} +\ProvidesExplPackage{xcoffins}{2018-08-24}{} {L3 Experimental design level coffins} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index 12bde666f03..b3d17c383f7 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -59,7 +59,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % @@ -685,7 +685,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3galley}{2018-05-12}{} +\ProvidesExplPackage{l3galley}{2018-08-24}{} {L3 Experimental galley code} % % \end{macrocode} @@ -1173,7 +1173,7 @@ } \cs_new_protected:Npn \@@_par_aux:N #1 { - \str_if_eq_x:nnF {#1} { \s_@@_par_omit } + \str_if_eq:nnF {#1} { \s_@@_par_omit } { \@@_par_auxii: #1 diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx index 86d7b88b73f..6c1be8c964b 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx @@ -45,7 +45,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-24} % % \maketitle % @@ -732,7 +732,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xgalley}{2018-05-12}{} +\ProvidesExplPackage{xgalley}{2018-08-24}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 72f276c7c6c..9d19e45ee11 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -21,7 +21,7 @@ % for those people who are interested. % %<*driver|generic|package> -\def\ExplFileDate{2018-06-14}% +\def\ExplFileDate{2018-08-23}% % %<*driver> \documentclass[full]{l3doc} @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index a92680e7e71..f8926277432 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index c5581d46850..90f6d3c80ec 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -939,6 +939,20 @@ % (\emph{i.e.}~an \texttt{N} argument). % \end{function} % +% \begin{function}[EXP, added = 2018-06-18]{\use:e} +% \begin{syntax} +% \cs{use:e} \Arg{expandable tokens} +% \end{syntax} +% Fully expands the \meta{token list} in an \texttt{x}-type manner, +% \emph{but} the function remains fully expandable, and parameter +% character (usually~|#|) need not be doubled. +% \begin{texnote} +% \cs{use:e} the a wrapper around the primitive \tn{expanded} +% where it is available: +% it requires two expansions to complete its action. +% \end{texnote} +% \end{function} +% % \begin{function}[updated = 2011-12-31]{\use:x} % \begin{syntax} % \cs{use:x} \Arg{expandable tokens} @@ -1454,11 +1468,13 @@ %<@@=use> % \end{macrocode} % -% \begin{macro}[EXP]{\use_x:n} -% A candidate, but needed early as it links to string comparisons. -% Currently \LuaTeX-only. +% \begin{macro}[EXP]{\use:e} +% Currently \LuaTeX-only: emulated for older engines. % \begin{macrocode} -\cs_set:Npn \use_x:n #1 { \tex_expanded:D {#1} } +\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} } +\tex_ifdefined:D \tex_expanded:D \tex_else:D + \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} } +\tex_fi:D % \end{macrocode} % \end{macro} % @@ -3240,7 +3256,7 @@ { \bool_if:NTF #3 { - \str_if_eq_x:nnF { } + \str_if_eq:eeF { } { \tl_map_function:nN {#2} \@@_generate_from_signature:n } { \__kernel_msg_error:nnx { kernel } { non-base-function } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 0d69acb9600..de180429e47 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -138,7 +138,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -340,7 +340,7 @@ }>0 % \everyjob\expandafter{% \the\expandafter\everyjob - \csname\detokenize{lua_now_x:n}\endcsname{require("expl3")}% + \csname\detokenize{lua_now:n}\endcsname{require("expl3")}% }% \fi \fi diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index d9e6e44abe6..552a2e93ed9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -1606,7 +1606,7 @@ % % \begin{macro}{\box_rotate:Nn} % \begin{macro}{\@@_rotate:N} -% \begin{macro}{\@@_rotate_x:nnN, \@@_rotate_y:nnN} +% \begin{macro}{\@@_rotate_xdir:nnN, \@@_rotate_ydir:nnN} % \begin{macro} % { % \@@_rotate_quadrant_one:, \@@_rotate_quadrant_two:, @@ -1729,7 +1729,7 @@ % the equivalent function in the \pkg{l3coffins} module, where both parts % are needed. % \begin{macrocode} -\cs_new_protected:Npn \@@_rotate_x:nnN #1#2#3 +\cs_new_protected:Npn \@@_rotate_xdir:nnN #1#2#3 { \dim_set:Nn #3 { @@ -1740,7 +1740,7 @@ } } } -\cs_new_protected:Npn \@@_rotate_y:nnN #1#2#3 +\cs_new_protected:Npn \@@_rotate_ydir:nnN #1#2#3 { \dim_set:Nn #3 { @@ -1762,46 +1762,46 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_rotate_quadrant_one: { - \@@_rotate_y:nnN \l_@@_right_dim \l_@@_top_dim + \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_top_dim \l_@@_top_new_dim - \@@_rotate_y:nnN \l_@@_left_dim \l_@@_bottom_dim + \@@_rotate_ydir:nnN \l_@@_left_dim \l_@@_bottom_dim \l_@@_bottom_new_dim - \@@_rotate_x:nnN \l_@@_left_dim \l_@@_top_dim + \@@_rotate_xdir:nnN \l_@@_left_dim \l_@@_top_dim \l_@@_left_new_dim - \@@_rotate_x:nnN \l_@@_right_dim \l_@@_bottom_dim + \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_bottom_dim \l_@@_right_new_dim } \cs_new_protected:Npn \@@_rotate_quadrant_two: { - \@@_rotate_y:nnN \l_@@_right_dim \l_@@_bottom_dim + \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_bottom_dim \l_@@_top_new_dim - \@@_rotate_y:nnN \l_@@_left_dim \l_@@_top_dim + \@@_rotate_ydir:nnN \l_@@_left_dim \l_@@_top_dim \l_@@_bottom_new_dim - \@@_rotate_x:nnN \l_@@_right_dim \l_@@_top_dim + \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_top_dim \l_@@_left_new_dim - \@@_rotate_x:nnN \l_@@_left_dim \l_@@_bottom_dim + \@@_rotate_xdir:nnN \l_@@_left_dim \l_@@_bottom_dim \l_@@_right_new_dim } \cs_new_protected:Npn \@@_rotate_quadrant_three: { - \@@_rotate_y:nnN \l_@@_left_dim \l_@@_bottom_dim + \@@_rotate_ydir:nnN \l_@@_left_dim \l_@@_bottom_dim \l_@@_top_new_dim - \@@_rotate_y:nnN \l_@@_right_dim \l_@@_top_dim + \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_top_dim \l_@@_bottom_new_dim - \@@_rotate_x:nnN \l_@@_right_dim \l_@@_bottom_dim + \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_bottom_dim \l_@@_left_new_dim - \@@_rotate_x:nnN \l_@@_left_dim \l_@@_top_dim + \@@_rotate_xdir:nnN \l_@@_left_dim \l_@@_top_dim \l_@@_right_new_dim } \cs_new_protected:Npn \@@_rotate_quadrant_four: { - \@@_rotate_y:nnN \l_@@_left_dim \l_@@_top_dim + \@@_rotate_ydir:nnN \l_@@_left_dim \l_@@_top_dim \l_@@_top_new_dim - \@@_rotate_y:nnN \l_@@_right_dim \l_@@_bottom_dim + \@@_rotate_ydir:nnN \l_@@_right_dim \l_@@_bottom_dim \l_@@_bottom_new_dim - \@@_rotate_x:nnN \l_@@_left_dim \l_@@_bottom_dim + \@@_rotate_xdir:nnN \l_@@_left_dim \l_@@_bottom_dim \l_@@_left_new_dim - \@@_rotate_x:nnN \l_@@_right_dim \l_@@_top_dim + \@@_rotate_xdir:nnN \l_@@_right_dim \l_@@_top_dim \l_@@_right_new_dim } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 58c53afecc0..43c19185279 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -137,19 +137,6 @@ % \end{texnote} % \end{function} % -% \begin{function}[EXP, added = 2018-04-17]{\use_x:n} -% \begin{syntax} -% \cs{use_x:n} \Arg{token list} -% \end{syntax} -% Fully expands the \meta{token list} in an \texttt{x}-type manner, -% \emph{but} the function remains fully expandable, and parameter -% character (usually~|#|) need not be doubled. -% \begin{texnote} -% \cs{use_x:n} the a wrapper around the primitive \tn{expanded}: -% it requires two expansions to complete its action. -% \end{texnote} -% \end{function} -% % \section{Additions to \pkg{l3box}} % % \subsection{Viewing part of a box} @@ -359,7 +346,7 @@ % If found, sets the \meta{str var} to the size of the file in bytes. % Where the file is not found, the \meta{str var} will be empty. % \begin{texnote} -% The \XeTeX{} engine provides no way to implement this function. +% Currently this is not available with \XeTeX{}. % \end{texnote} % \end{function} % @@ -375,7 +362,7 @@ % (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|. % Where the file is not found, the \meta{str var} will be empty. % \begin{texnote} -% The \XeTeX{} engine provides no way to implement this function. +% Currently this is not available with \XeTeX{}. % \end{texnote} % \end{function} % @@ -905,6 +892,24 @@ % \end{texnote} % \end{function} % +% \begin{function}[added = 2018-07-27, EXP, pTF] +% { +% \sys_if_platform_unix:, +% \sys_if_platform_windows: +% } +% \begin{syntax} +% \cs{sys_if_platform_unix:TF} \Arg{true code} \Arg{false code} +% \end{syntax} +% Conditionals which allow platform-specific code to be used. The names +% follow the \Lua{} |os.type()| function, \emph{i.e.}~all Unix-like systems +% are |unix| (including Linux and MacOS). +% \end{function} +% +% \begin{variable}[added = 2018-07-27]{\c_sys_platform_str} +% The current platform given as a lower case string: one of +% |unix|, |windows| or |unknown|. +% \end{variable} +% % \begin{variable}[added = 2017-05-27]{\c_sys_shell_escape_int} % This variable exposes the internal triple of the shell escape % status. The possible values are @@ -1225,6 +1230,21 @@ % argument. % \end{function} % +% \begin{function}[added = 2018-07-23] +% { +% \tl_set_from_shell:Nnn, \tl_set_from_shell:cnn, +% \tl_gset_from_shell:Nnn, \tl_gset_from_shell:cnn +% } +% \begin{syntax} +% \cs{tl_set_from_shell:Nnn} \meta{tl~var} \Arg{setup} \Arg{shell~command} +% \end{syntax} +% Defines \meta{tl} to the text returned by the \meta{shell command}. +% Category codes may need to be set appropriately via the \meta{setup} +% argument. If shell escape is disabled, the \meta{tl~var} will be empty. +% Note that quote characters (|"|) \emph{cannot} be used inside the +% \meta{shell command}. +% \end{function} +% % \begin{function}[EXP, added = 2016-12-06] % {\tl_rand_item:N, \tl_rand_item:c, \tl_rand_item:n} % \begin{syntax} @@ -2164,10 +2184,10 @@ \file_get_full_name:nN {#1} \l_@@_full_name_str \str_set:Nx #3 { - \lua_now_x:n + \lua_now:e { l3kernel.file#2 - ( " \lua_escape_x:n { \l_@@_full_name_str } " ) + ( " \lua_escape:e { \l_@@_full_name_str } " ) } } } @@ -2878,6 +2898,45 @@ % \end{macrocode} % \end{variable} % +% \begin{variable}{\c_sys_platform_str} +% Detecting the platform on \LuaTeX{} is easy: for other engines, we use +% the fact that the two common cases have special null files. It is possible +% to probe further (see package \pkg{platform}), but that requires shell +% escape and seems unlikely to be useful. +% \begin{macrocode} +\sys_if_engine_luatex:TF + { + \str_const:Nx \c_sys_platform_str + { \lua_now:n { tex.print(os.type) } } + } + { + \file_if_exist:nTF { nul: } + { + \file_if_exist:nF { /dev/null } + { \str_const:Nn \c_sys_platform_str { windows } } + } + { + \file_if_exist:nT { /dev/null } + { \str_const:Nn \c_sys_platform_str { unix } } + } + } +\cs_if_exist:NF \c_sys_platform_str + { \str_const:Nn \c_sys_platform_str { unknown } } +% \end{macrocode} +% \end{variable} +% \begin{macro}[pTF]{\sys_if_platform_unix:} +% \begin{macro}[pTF]{\sys_if_platform_windows:} +% We can now set up the tests. +% \begin{macrocode} +\clist_map_inline:nn { unix , windows } + { + \@@_const:nn { sys_if_platform_ #1 } + { \str_if_eq_p:Vn \c_sys_platform_str { #1 } } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macro}[EXP, pTF]{\sys_if_shell:, \sys_if_shell_unrestricted:, \sys_if_shell_restricted:} % Performs a check for whether shell escape is enabled. The first set % of functions returns true if either of restricted or unrestricted @@ -2895,7 +2954,7 @@ % % \begin{variable}{\c_@@_shell_stream_int} % This is not needed for \LuaTeX{}: shell escape there isn't done using -% a \TeX{} interface +% a \TeX{} interface. % \begin{macrocode} \sys_if_engine_luatex:F { \int_const:Nn \c_@@_shell_stream_int { 18 } } @@ -2909,8 +2968,8 @@ { \cs_new_protected:Npn \sys_shell_now:n #1 { - \lua_now_x:n - { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") } + \lua_now:e + { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") } } } { @@ -2928,8 +2987,8 @@ { \cs_new_protected:Npn \sys_shell_shipout:n #1 { - \lua_shipout_x:n - { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") } + \lua_shipout_e:n + { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") } } } { @@ -3048,6 +3107,7 @@ % } % \begin{macro}{\@@_set_from_file:NNnn} % \begin{macro}{\@@_from_file_do:w} +% \begin{macro}{\@@_set_from:nNNn} % The approach here is similar to that for doing a rescan, and so the same % internals can be reused. Thus the plan is to insert a pair of tokens of % the same charcode but different catcodes after the file has been read. @@ -3066,25 +3126,32 @@ \str_if_empty:NTF \l_@@_file_name_str { \__kernel_file_missing:n {#4} } { - \group_begin: - \exp_args:No \tex_everyeof:D - { \c_@@_rescan_marker_tl \exp_not:N } - #3 \scan_stop: - \exp_after:wN \@@_from_file_do:w - \exp_after:wN \prg_do_nothing: - \tex_input:D \l_@@_file_name_str \scan_stop: - \exp_args:NNNo \group_end: - #1 #2 \l_@@_internal_a_tl + \exp_args:NV \@@_set_from:nNNn + \l_@@_file_name_str + #1 #2 {#3} } } \exp_args:Nno \use:nn { \cs_new_protected:Npn \@@_from_file_do:w #1 } { \c_@@_rescan_marker_tl } { \tl_set:No \l_@@_internal_a_tl {#1} } +\cs_new_protected:Npn \@@_set_from:nNNn #1#2#3#4 + { + \group_begin: + \exp_args:No \tex_everyeof:D + { \c_@@_rescan_marker_tl \exp_not:N } + #4 \scan_stop: + \exp_after:wN \@@_from_file_do:w + \exp_after:wN \prg_do_nothing: + \tex_input:D #1 \scan_stop: + \exp_args:NNNo \group_end: + #2 #3 \l_@@_internal_a_tl + } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro} % { @@ -3128,6 +3195,42 @@ % \end{macrocode} % \end{variable} % +% \begin{macro} +% { +% \tl_set_from_shell:Nnn, \tl_set_from_shell:cnn, +% \tl_gset_from_shell:Nnn, \tl_gset_from_shell:cnn +% } +% \begin{macro}{\@@_set_from_shell:NNnn} +% Setting using a shell is at this level just a slightly specialised file +% operation. +% \begin{macrocode} +\cs_new_protected:Npn \tl_set_from_shell:Nnn + { \@@_set_from_shell:NNnn \tl_set:Nn } +\cs_generate_variant:Nn \tl_set_from_shell:Nnn { c } +\cs_new_protected:Npn \tl_gset_from_shell:Nnn + { \@@_set_from_shell:NNnn \tl_gset:Nn } +\cs_generate_variant:Nn \tl_gset_from_shell:Nnn { c } +\cs_new_protected:Npn \@@_set_from_shell:NNnn #1#2#3#4 + { + \sys_if_shell:TF + { + \tl_set:Nn \l_@@_internal_a_tl {#4} + \tl_if_in:NnTF \l_@@_internal_a_tl { " } + { + \__kernel_msg_error:nnx + { kernel } { quote-in-shell } {#4} + } + { \@@_set_from:nNNn { | " #4 " } #1 #2 {#3} } + } + { #1 #2 { } } + } +\__kernel_msg_new:nnnn { kernel } { quote-in-shell } + { Quotes~in~shell~command~'#1'. } + { Shell~commands~cannot~contain~quotes~("). } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \subsubsection{Unicode case changing} % % The mechanisms needed for case changing are somewhat involved, particularly diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index 85f9dcc0f5a..97ff75f1a17 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index b43b944ae69..fb396cf66e6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index 0dea8a8f8ee..9ac01cb070d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index bdfc64fb87d..c8f6a5e5da7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -138,7 +138,7 @@ \__kernel_deprecation_error:Nnn \str_case:onn { \str_case:onF } { 2015-07-14 } \__kernel_deprecation_error:Nnn \str_case_x:nnn - { \str_case_x:nnF } { 2015-07-14 } + { \str_case_e:nnF } { 2015-07-14 } \__kernel_deprecation_error:Nnn \tl_case:cnn { \tl_case:cnF } { 2015-07-14 } \__kernel_deprecation_error:Nnn \tl_case:Nnn diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index d8346b81541..b1f0a63c060 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -77,7 +77,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % \maketitle % \tableofcontents % @@ -2191,7 +2191,7 @@ and all files in that bundle must be distributed together. \tl_greplace_all:Nno \g_@@_base_name_tl { ~ } { \c_catcode_other_space_tl } \seq_get:NN #1 \l_@@_tmpa_tl - \str_if_eq_x:nnTF { \l_@@_tmpa_tl } { \scan_stop: } + \str_if_eq:VnTF \l_@@_tmpa_tl { \scan_stop: } { \seq_gclear:N \g_@@_variants_seq \@@_names_typeset_auxii:x { \g_@@_base_name_tl } @@ -2296,7 +2296,7 @@ and all files in that bundle must be distributed together. #1 { \l_@@_tmpa_tl - \str_if_eq_x:nnF { \l_@@_tmpb_tl } { \scan_stop: } + \str_if_eq:VnF \l_@@_tmpb_tl { \scan_stop: } { : \l_@@_tmpb_tl } \bool_if:NT \l_@@_macro_TF_bool { TF } } @@ -3983,7 +3983,7 @@ and all files in that bundle must be distributed together. \tl_if_empty:nTF {#3} { { } { } { } } { - \str_if_eq_x:nnTF {#3} { TeX } + \str_if_eq:nnTF {#3} { TeX } { { TeX~and~LaTeX2e } { \string\TeX{}~and~\string\LaTeXe{} } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 632d72902ea..14eb116ba35 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx index 52987355f9f..d46578027d6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -481,23 +481,23 @@ %<*package> \ProvidesExplFile %<*dvipdfmx> - {l3dvidpfmx.def}{2018-06-14}{} + {l3dvidpfmx.def}{2018-08-23}{} {L3 Experimental driver: dvipdfmx} % %<*dvips> - {l3dvips.def}{2018-06-14}{} + {l3dvips.def}{2018-08-23}{} {L3 Experimental driver: dvips} % %<*dvisvgm> - {l3dvisvgm.def}{2018-06-14}{} + {l3dvisvgm.def}{2018-08-23}{} {L3 Experimental driver: dvisvgm} % %<*pdfmode> - {l3pdfmode.def}{2018-06-14}{} + {l3pdfmode.def}{2018-08-23}{} {L3 Experimental driver: PDF mode} % %<*xdvipdfmx> - {l3xdvidpfmx.def}{2018-06-14}{} + {l3xdvidpfmx.def}{2018-08-23}{} {L3 Experimental driver: xdvipdfmx} % % @@ -514,14 +514,14 @@ % takes most of the same code. % \end{itemize} % -% \begin{macro}{\@@_literal_x:n, \@@_literal:n, \@@_literal:x} +% \begin{macro}{\@@_literal:e, \@@_literal:n, \@@_literal:x} % The one shared function for all drivers is access to the basic % \tn{special} primitive: it has slightly odd expansion behaviour % so a wrapper is provided. % \begin{macrocode} -\cs_new_eq:NN \@@_literal_x:n \tex_special:D +\cs_new_eq:NN \@@_literal:e \tex_special:D \cs_new_protected:Npn \@@_literal:n #1 - { \@@_literal_x:n { \exp_not:n {#1} } } + { \@@_literal:e { \exp_not:n {#1} } } \cs_generate_variant:Nn \@@_literal:n { x } % \end{macrocode} % \end{macro} @@ -695,7 +695,7 @@ % \end{variable} % % \begin{macro}{\driver_color_cmyk:nnnn, \@@_color_cmyk:nnnn} -% \begin{macro}{\driver_color_gray:n, @@_color_gray:n} +% \begin{macro}{\driver_color_gray:n, \@@_color_gray:n} % \begin{macro}{\driver_color_rgb:nnn, \@@_color_rgb:nnn} % \begin{macro}{\driver_color_spot:nn} % \begin{macro}{\@@_color_select:n, \@@_color_select:x} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 0352ce35604..4a4224b5936 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 724bdfeb3d0..ecacb84a841 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index b8dd58c15cc..bf5c5d7e3b5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -255,7 +255,7 @@ \tex_everyjob:D \exp_after:wN { \tex_the:D \tex_everyjob:D - \lua_now_x:n { require("l3format.lua") } + \lua_now:n { require("l3format.lua") } } } \use:x diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index 0f41b396bba..5caf1ad0be1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index 84debbf16d5..9e98ff8f43e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % \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 639e1261738..0e17a7ddb4d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -1238,17 +1238,17 @@ % % \subsection{Fast string comparison} % -% \begin{macro}{\@@_str_if_eq_x:nn} +% \begin{macro}{\@@_str_if_eq:nn} % A private version of the low-level string comparison function. As % the nature of the arguments is restricted and as speed is of the essence, % this version does not seek to deal with |#| tokens. % No \pkg{l3sys} or \pkg{l3luatex} just yet so we have to define in terms of % primitives. % \begin{macrocode} -\cs_new:Npn \@@_str_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} } +\cs_new:Npn \@@_str_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} } \sys_if_engine_luatex:T { - \cs_set:Npn \@@_str_if_eq_x:nn #1#2 + \cs_set:Npn \@@_str_if_eq:nn #1#2 { \tex_directlua:D { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index c57242901d4..fed862dc2f2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 2e4af3817a8..c473ab1b110 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index b07da9d6fd5..dddaebe50e9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -995,7 +995,7 @@ \cs_new:Npn \@@_pow_normal_o:ww \s_@@ \@@_chk:w 1 #1#2#3; \s_@@ \@@_chk:w #4#5 { - \if_int_compare:w \@@_str_if_eq_x:nn { #2 #3 } + \if_int_compare:w \@@_str_if_eq:nn { #2 #3 } { 1 {1000} {0000} {0000} {0000} } = 0 \exp_stop_f: \if_int_compare:w #4 #1 = 32 \exp_stop_f: \exp_after:wN \@@_case_return_ii_o:ww diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index c6bb0534d92..99bfe1d1ae7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index bd7bbf096c6..ffc7edf283b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index aca31d7b51b..c56d92ea761 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -1752,7 +1752,7 @@ \if_catcode:w \scan_stop: \exp_not:N #1 \if_meaning:w \scan_stop: #1 \if_int_compare:w - \@@_str_if_eq_x:nn { \s_@@ } { \exp_not:N #1 } + \@@_str_if_eq:nn { \s_@@ } { \exp_not:N #1 } = 0 \exp_stop_f: 0 \__kernel_msg_expandable_error:nnn @@ -1766,7 +1766,7 @@ \fi: \else: \if_int_compare:w - \@@_str_if_eq_x:nn { \int_value:w #1 } { \tex_the:D #1 } + \@@_str_if_eq:nn { \int_value:w #1 } { \tex_the:D #1 } = 0 \exp_stop_f: \int_value:w #1 \else: @@ -2260,7 +2260,7 @@ { \if_catcode:w \scan_stop: \exp_not:N #2 \if_int_compare:w - \@@_str_if_eq_x:nn { \s_@@_mark } { \exp_not:N #2 } + \@@_str_if_eq:nn { \s_@@_mark } { \exp_not:N #2 } = 0 \exp_stop_f: \exp_after:wN \exp_after:wN \exp_after:wN \@@_parse_infix_mark:NNN diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index 76472fd51bf..3526519ddc4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index 7b49f5b1f88..9eed28891c5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index ecf482fd402..c01862ddec1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % \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 df678477317..373d0b111e7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -38,7 +38,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index b4e2bfa1c00..33ac720b455 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 345cdbe8df0..76b4668c239 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index 80bf9afd7f7..29b930a6340 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index 75f4bb46740..7739ddd76d3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index f1e28968315..ef418edc446 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -136,6 +136,14 @@ % the \meta{follow-on}. % \end{function} % +% \begin{function}{\__kernel_deprecation_code:nn} +% \begin{syntax} +% \cs{__kernel_deprecation_code:nn} \Arg{error code} \Arg{working code} +% \end{syntax} +% Stores both an \meta{error} and \meta{working} definition for given material +% such that they can be exchanged by \cs{debug_on:} and \cs{debug_off:}. +% \end{function} +% % \begin{function}{\__kernel_if_debug:TF} % \begin{syntax} % \cs{__kernel_if_debug:TF} \Arg{true code} \Arg{false code} @@ -394,6 +402,14 @@ % because that would interfere with the action of the conditional. % \end{function} % +% \begin{function}{\__kernel_patch_deprecation:nnNNpn} +% \begin{syntax} +% \cs{__kernel_patch_deprecation:nnNNpn} \Arg{before} \Arg{after} +% \meta{definition} \meta{function}\meta{parameters} \Arg{type} \Arg{code} +% \end{syntax} +% Similar to \cs{__kernel_patch:nnNNpn} for deprecated functions. +% \end{function} +% % \begin{function} % {\__kernel_patch_args:nNNpn, \__kernel_patch_conditional_args:nNNpnn} % \begin{syntax} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index f711bf5cbdb..da03797c65d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -1459,11 +1459,8 @@ \cs_if_exist:cTF { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl } { - \str_if_eq_x:nnTF - { - \exp_not:v - { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl } - } + \str_if_eq:vnTF + { \c_@@_type_root_tl \@@_parent:o \l_keys_path_tl } { choice } { \__kernel_msg_error:nnxx { kernel } { nested-choice-key } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 87a535ce163..ca9935e58cc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -56,7 +56,7 @@ % % \section{Breaking out to \Lua{}} % -% \begin{function}[EXP, added = 2015-06-29]{\lua_now_x:n, \lua_now:n} +% \begin{function}[EXP, added = 2018-06-18]{\lua_now:n, \lua_now:e} % \begin{syntax} % \cs{lua_now:n} \Arg{token list} % \end{syntax} @@ -67,18 +67,14 @@ % Each \cs{lua_now:n} block is treated by \Lua{} as a separate chunk. % The \Lua{} interpreter executes the \meta{\Lua{} input} immediately, % and in an expandable manner. -% -% In the case of the \cs{lua_now_x:n} version the input is fully expanded -% by \TeX{} in an \texttt{x}-type manner \emph{but} the function remains -% fully expandable. % \begin{texnote} -% \cs{lua_now_x:n} is a macro wrapper around \tn{directlua}: when +% \cs{lua_now:e} is a macro wrapper around \tn{directlua}: when % \LuaTeX{} is in use two expansions are required to yield the % result of the \Lua{} code. % \end{texnote} % \end{function} % -% \begin{function}[added = 2015-06-30]{\lua_shipout_x:n, \lua_shipout:n} +% \begin{function}[added = 2018-06-18]{\lua_shipout_e:n, \lua_shipout:n} % \begin{syntax} % \cs{lua_shipout:n} \Arg{token list} % \end{syntax} @@ -92,8 +88,8 @@ % page-building routine: no \TeX{} expansion of the \meta{\Lua{} input} % will occur at this stage. % -% In the case of the \cs{lua_shipout_x:n} version the input is fully -% expanded by \TeX{} in an \texttt{x}-type manner during the shipout +% In the case of the \cs{lua_shipout_e:n} version the input is fully +% expanded by \TeX{} in an \texttt{e}-type manner during the shipout % operation. % \begin{texnote} % At a \TeX{} level, the \meta{\Lua{} input} is stored as a @@ -101,7 +97,7 @@ % \end{texnote} % \end{function} % -% \begin{function}[EXP, added = 2015-06-29]{\lua_escape_x:n, \lua_escape:n} +% \begin{function}[EXP, added = 2015-06-29]{\lua_escape:n, \lua_escape:e} % \begin{syntax} % \cs{lua_escape:n} \Arg{token list} % \end{syntax} @@ -110,12 +106,8 @@ % and carriage returns are escaped. This is done by prepending an extra % token consisting of a backslash with category code~$12$, and for the line % endings, converting them to |\n| and |\r|, respectively. -% -% In the case of the \cs{lua_escape_x:n} version the input is fully expanded -% by \TeX{} in an \texttt{x}-type manner \emph{but} the function remains -% fully expandable. % \begin{texnote} -% \cs{lua_escape_x:n} is a macro wrapper around \tn{luaescapestring}: +% \cs{lua_escape:e} is a macro wrapper around \tn{luaescapestring}: % when \LuaTeX{} is in use two expansions are required to yield the % result of the \Lua{} code. % \end{texnote} @@ -197,46 +189,45 @@ % \end{macrocode} % % \begin{macrocode} -%<@@=luatex> +%<@@=lua> % \end{macrocode} % -% \begin{macro}[EXP]{\@@_escape_x:n, \@@_now_x:n, \@@_shipout_x:n} +% \begin{macro}[EXP]{\@@_escape:n, \@@_now:n, \@@_shipout:n} % Copies of primitives. % \begin{macrocode} -\cs_new_eq:NN \@@_escape_x:n \tex_luaescapestring:D -\cs_new_eq:NN \@@_now_x:n \tex_directlua:D -\cs_new_eq:NN \@@_shipout_x:n \tex_latelua:D +\cs_new_eq:NN \@@_escape:n \tex_luaescapestring:D +\cs_new_eq:NN \@@_now:n \tex_directlua:D +\cs_new_eq:NN \@@_shipout:n \tex_latelua:D % \end{macrocode} % \end{macro} % % These functions are set up in \pkg{l3str} for bootstrapping: we want to % replace them with a \enquote{proper} version at this stage, so clean up. % \begin{macrocode} -\cs_undefine:N \lua_escape_x:n -\cs_undefine:N \lua_now_x:n +\cs_undefine:N \lua_escape:e +\cs_undefine:N \lua_now:e % \end{macrocode} % -% \begin{macro}[EXP]{\lua_now_x:n, \lua_now:n} -% \begin{macro}{\lua_shipout_x:n, \lua_shipout:n} -% \begin{macro}[EXP]{\lua_escape_x:n, \lua_escape:n} +% \begin{macro}[EXP]{\lua_now:n, \lua_now:e} +% \begin{macro}{\lua_shipout_e:n, \lua_shipout:n} +% \begin{macro}[EXP]{\lua_escape:n, \lua_escape:e} % Wrappers around the primitives. As with engines other than \LuaTeX{} % these have to be macros, we give them the same status in all cases. % When \LuaTeX{} is not in use, simply give an error message/ % \begin{macrocode} -\cs_new:Npn \lua_now_x:n #1 { \@@_now_x:n {#1} } -\cs_new:Npn \lua_now:n #1 { \lua_now_x:n { \exp_not:n {#1} } } -\cs_new_protected:Npn \lua_shipout_x:n #1 { \@@_shiphout_x:n {#1} } +\cs_new:Npn \lua_now:e #1 { \@@_now:n {#1} } +\cs_new:Npn \lua_now:n #1 { \lua_now:e { \exp_not:n {#1} } } +\cs_new_protected:Npn \lua_shipout_e:n #1 { \@@_shiphout:n {#1} } \cs_new_protected:Npn \lua_shipout:n #1 - { \lua_shipout_x:n { \exp_not:n {#1} } } -\cs_new:Npn \lua_escape_x:n #1 { \@@_escape_x:n {#1} } -\cs_new:Npn \lua_escape:n #1 { \lua_escape_x:n { \exp_not:n {#1} } } + { \lua_shipout_e:n { \exp_not:n {#1} } } +\cs_new:Npn \lua_escape:e #1 { \@@_escape:n {#1} } +\cs_new:Npn \lua_escape:n #1 { \lua_escape:e { \exp_not:n {#1} } } \sys_if_engine_luatex:F { \clist_map_inline:nn { - \use_x:n , - \lua_escape_x:n , \lua_escape:n , - \lua_now_x:n , \lua_now:n + \lua_escape:n , \lua_escape:e , + \lua_now:n , \lua_now:e } { \cs_set:Npn #1 ##1 @@ -246,7 +237,7 @@ } } \clist_map_inline:nn - { \lua_shipout_x:n , \lua_shipout:n } + { \lua_shipout_e:n , \lua_shipout:n } { \cs_set_protected:Npn #1 ##1 { @@ -271,6 +262,22 @@ } % \end{macrocode} % +% \subsection{Deprecated functions} +% +% \begin{macro}[EXP, deprecated = 2019-12-31]{\lua_now_x:n, \lua_escape_x:n} +% \begin{macro}[deprecated = 2019-12-31]{\lua_shipout_x:n} +% For removal after 2019-12-31. +% \begin{macrocode} +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_now:e } +\cs_new:Npn \lua_now_x:n #1 { \@@_now:n {#1} } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_escape:e } +\cs_new:Npn \lua_escape_x:n #1 { \@@_escape:n {#1} } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_shipout_e:n } +\cs_new_protected:Npn \lua_shipout_x:n #1 { \@@_shipout:n {#1} } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macrocode} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 1bfa2be1700..bd180cd0af9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -1429,7 +1429,7 @@ \seq_put_right:Nn \l_@@_class_loop_seq {#1} \prop_get:cnNT { l_@@_redirect_ #1 _prop } {#3} \l_@@_class_tl { - \str_if_eq_x:nnF { \l_@@_class_tl } {#1} + \str_if_eq:VnF \l_@@_class_tl {#1} { \tl_if_eq:NNTF \l_@@_class_tl \l_@@_current_class_tl { diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index 39ecba1694f..52374a5935e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx index 43815ad5e19..eb1be68f173 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx @@ -42,7 +42,7 @@ % } % % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index ed55b5052be..e936df28377 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index f31874d7fe4..191c9e70157 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -861,7 +861,7 @@ } \cs_new:Npn \@@_item_Nn:nwwn #1#2 \@@_pair:wn #3 \s_@@ #4 { - \str_if_eq_x:nnTF {#1} {#3} + \str_if_eq:eeTF {#1} {#3} { \prg_break:n { \exp_not:n {#4} } } { \@@_item_Nn:nwwn {#1} } } @@ -1034,10 +1034,10 @@ % but \cs{@@_split:NnTF} is non-expandable. % % Instead, the key is compared to each key in turn using -% \cs{str_if_eq_x:nn}, which is expandable. To terminate the mapping, +% \cs{str_if_eq:ee}, which is expandable. To terminate the mapping, % we append to the property list the key that is searched for. This % second \cs{tl_to_str:n} is not expanded at the start, but only when -% included in the \cs{str_if_eq_x:nn}. It cannot make the breaking +% included in the \cs{str_if_eq:ee}. It cannot make the breaking % mechanism choke, because the arbitrary token list material is % enclosed in braces. The second argument of \cs{@@_if_in:nwwn} is % most often empty. When the \meta{key} is found in the list, @@ -1058,7 +1058,7 @@ } \cs_new:Npn \@@_if_in:nwwn #1#2 \@@_pair:wn #3 \s_@@ #4 { - \str_if_eq_x:nnTF {#1} {#3} + \str_if_eq:eeTF {#1} {#3} { \@@_if_in:N } { \@@_if_in:nwwn {#1} } } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index 727c0e9974c..e649702601a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index 02ffddf2116..d4eb2c4066c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -1612,7 +1612,7 @@ % \begin{macrocode} \cs_new:Npn \@@_escape_x_test:N #1 { - \str_if_eq_x:nnTF {#1} { break } { ; } + \str_if_eq:nnTF {#1} { break } { ; } { \if_charcode:w \c_space_token #1 \exp_after:wN \@@_escape_x_test:N @@ -1640,7 +1640,7 @@ % \begin{macrocode} \cs_new:Npn \@@_escape_x:N #1 { - \str_if_eq_x:nnTF {#1} { break } { ; } + \str_if_eq:nnTF {#1} { break } { ; } { \@@_hexadecimal_use:NTF #1 { ; \@@_escape_loop:N } @@ -1657,7 +1657,7 @@ % \begin{macrocode} \cs_new:Npn \@@_escape_x_loop:N #1 { - \str_if_eq_x:nnTF {#1} { break } + \str_if_eq:nnTF {#1} { break } { ; \@@_escape_x_loop_error:n { } {#1} } { \@@_hexadecimal_use:NTF #1 @@ -2421,7 +2421,7 @@ } \cs_new_protected:Npn \@@_compile_quantifier_braced_auxi:w #1#2 { - \str_case_x:nnF { #1 #2 } + \str_case_e:nnF { #1 #2 } { { \@@_compile_special:N \c_right_brace_str } { @@ -6468,7 +6468,7 @@ { Missing~right~brace~inserted~for~'\iow_char:N\\u'~escape. } { LaTeX~ - \str_if_eq_x:nnTF { } {#2} + \str_if_eq:eeTF { } {#2} { reached~the~end~of~the~string~ } { encountered~an~escaped~alphanumeric~character '\iow_char:N\\#2'~ } when~parsing~the~argument~of~an~ @@ -6628,7 +6628,7 @@ % \begin{macrocode} \cs_new:Npn \@@_msg_repeated:nnN #1#2#3 { - \str_if_eq_x:nnF { #1 #2 } { 1 0 } + \str_if_eq:eeF { #1 #2 } { 1 0 } { , ~ repeated ~ \int_case:nnF {#2} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index 1c9eac77cba..5e590bd0c2d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 8069b0dc57b..182427cb48a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -1942,7 +1942,7 @@ % \begin{macrocode} \prg_new_conditional:Npnn \skip_if_eq:nn #1#2 { p , T , F , TF } { - \str_if_eq_x:nnTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } } + \str_if_eq:eeTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } } { \prg_return_true: } { \prg_return_false: } } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 5cce081b462..b1f2b7eabe5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 56e01c67d4e..af918d1d164 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -104,8 +104,11 @@ % initially empty. % \end{function} % -% \begin{function}[added = 2015-09-18] -% {\str_const:Nn, \str_const:Nx, \str_const:cn, \str_const:cx} +% \begin{function}[added = 2015-09-18, updated = 2018-07-28] +% { +% \str_const:Nn, \str_const:NV, \str_const:Nx, +% \str_const:cn, \str_const:cV, \str_const:cx +% } % \begin{syntax} % \cs{str_const:Nn} \meta{str~var} \Arg{token list} % \end{syntax} @@ -161,10 +164,12 @@ % % \section{Adding data to string variables} % -% \begin{function}[added = 2015-09-18] +% \begin{function}[added = 2015-09-18, updated = 2018-07-28] % { -% \str_set:Nn, \str_set:Nx, \str_set:cn, \str_set:cx, -% \str_gset:Nn, \str_gset:Nx, \str_gset:cn, \str_gset:cx +% \str_set:Nn, \str_set:NV, \str_set:Nx, +% \str_set:cn, \str_set:cV, \str_set:cx, +% \str_gset:Nn, \str_gset:NV, \str_gset:Nx, +% \str_gset:cn, \str_gset:cV, \str_gset:cx % } % \begin{syntax} % \cs{str_set:Nn} \meta{str var} \Arg{token list} @@ -173,12 +178,12 @@ % result in \meta{str var}. % \end{function} % -% \begin{function}[added = 2015-09-18] +% \begin{function}[added = 2015-09-18, updated = 2018-07-28] % { -% \str_put_left:Nn, \str_put_left:Nx, -% \str_put_left:cn, \str_put_left:cx, -% \str_gput_left:Nn, \str_gput_left:Nx, -% \str_gput_left:cn, \str_gput_left:cx +% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx, +% \str_put_left:cn, \str_put_left:cV, \str_put_left:cx, +% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx, +% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx % } % \begin{syntax} % \cs{str_put_left:Nn} \meta{str var} \Arg{token list} @@ -188,12 +193,12 @@ % var} are not automatically converted to a string. % \end{function} % -% \begin{function}[added = 2015-09-18] +% \begin{function}[added = 2015-09-18, updated = 2018-07-28] % { -% \str_put_right:Nn, \str_put_right:Nx, -% \str_put_right:cn, \str_put_right:cx, -% \str_gput_right:Nn, \str_gput_right:Nx, -% \str_gput_right:cn, \str_gput_right:cx +% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx, +% \str_put_right:cn, \str_put_right:cV, \str_put_right:cx, +% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx, +% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx % } % \begin{syntax} % \cs{str_put_right:Nn} \meta{str var} \Arg{token list} @@ -302,10 +307,11 @@ % in the same order. % \end{function} % -% \begin{function}[EXP,pTF] +% \begin{function}[EXP,pTF, updated = 2018-06-18] % { % \str_if_eq:nn, \str_if_eq:Vn, \str_if_eq:on, \str_if_eq:no, -% \str_if_eq:nV, \str_if_eq:VV +% \str_if_eq:nV, \str_if_eq:VV, \str_if_eq:vn, \str_if_eq:nv, +% \str_if_eq:ee % } % \begin{syntax} % \cs{str_if_eq_p:nn} \Arg{tl_1} \Arg{tl_2} @@ -321,21 +327,6 @@ % is logically \texttt{true}. % \end{function} % -% \begin{function}[EXP,pTF, added = 2012-06-05]{\str_if_eq_x:nn} -% \begin{syntax} -% \cs{str_if_eq_x_p:nn} \Arg{tl_1} \Arg{tl_2} -% \cs{str_if_eq_x:nnTF} \Arg{tl_1} \Arg{tl_2} \Arg{true code} \Arg{false code} -% \end{syntax} -% Fully expands the two \meta{token lists} and converts them to \meta{strings}, then -% compares these on a character by character basis: -% it is \texttt{true} if the two \meta{strings} contain the same -% characters in the same order. Thus for example -% \begin{verbatim} -% \str_if_eq_x_p:nn { abc } { \tl_to_str:n { abc } } -% \end{verbatim} -% is logically \texttt{true}. -% \end{function} -% % \begin{function}[TF, added = 2017-10-08]{\str_if_in:Nn, \str_if_in:cn} % \begin{syntax} % \cs{str_if_in:NnTF} \meta{str~var} \Arg{token list} \Arg{true code} \Arg{false code} @@ -378,9 +369,9 @@ % available. % \end{function} % -% \begin{function}[added = 2013-07-24, EXP, noTF]{\str_case_x:nn} +% \begin{function}[added = 2018-06-19, EXP, noTF]{\str_case_e:nn} % \begin{syntax} -% \cs{str_case_x:nnTF} \Arg{test string} \\ +% \cs{str_case_e:nnTF} \Arg{test string} \\ % ~~|{| \\ % ~~~~\Arg{string case_1} \Arg{code case_1} \\ % ~~~~\Arg{string case_2} \Arg{code case_2} \\ @@ -399,7 +390,7 @@ % cases are matched, the \meta{true code} is also inserted into the % input stream (after the code for the appropriate case), while if none % match then the \meta{false code} is inserted. The function -% \cs{str_case_x:nn}, which does nothing if there is no match, is also +% \cs{str_case_e:nn}, which does nothing if there is no match, is also % available. % The \meta{test string} is expanded in each comparison, and must % always yield the same result: for example, random numbers must @@ -868,20 +859,20 @@ % % \begin{macro} % { -% \str_set:Nn, \str_set:Nx, -% \str_set:cn, \str_set:cx, -% \str_gset:Nn, \str_gset:Nx, -% \str_gset:cn, \str_gset:cx, -% \str_const:Nn, \str_const:Nx, -% \str_const:cn, \str_const:cx, -% \str_put_left:Nn, \str_put_left:Nx, -% \str_put_left:cn, \str_put_left:cx, -% \str_gput_left:Nn, \str_gput_left:Nx, -% \str_gput_left:cn, \str_gput_left:cx, -% \str_put_right:Nn, \str_put_right:Nx, -% \str_put_right:cn, \str_put_right:cx, -% \str_gput_right:Nn, \str_gput_right:Nx, -% \str_gput_right:cn, \str_gput_right:cx, +% \str_set:Nn, \str_set:NV, \str_set:Nx, +% \str_set:cn, \str_set:cV, \str_set:cx, +% \str_gset:Nn, \str_gset:NV, \str_gset:Nx, +% \str_gset:cn, \str_gset:cV, \str_gset:cx, +% \str_const:Nn, \str_const:NV, \str_const:Nx, +% \str_const:cn, \str_const:cV, \str_const:cx, +% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx, +% \str_put_left:cn, \str_put_left:cV, \str_put_left:cx, +% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx, +% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx, +% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx, +% \str_put_right:cn, \str_put_right:cV, \str_put_right:cx, +% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx, +% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx % } % Simply convert the token list inputs to \meta{strings}. % \begin{macrocode} @@ -895,7 +886,7 @@ \exp_not:c { tl_ #1 :Nx } ##1 { \exp_not:N \tl_to_str:n {##2} } } - \cs_generate_variant:cn { str_ #1 :Nn } { Nx , cn , cx } + \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx } \@@_tmp:n } } @@ -1029,8 +1020,8 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}[EXP]{\@@_if_eq_x:nn} -% \begin{macro}[EXP]{\@@_escape_x:n} +% \begin{macro}[EXP]{\@@_if_eq:nn} +% \begin{macro}[EXP]{\@@_escape:n} % String comparisons rely on the primitive \cs[index=pdfstrcmp]{(pdf)strcmp} if available: % \LuaTeX{} does not have it, so emulation is required. As the net result % is that we do not \emph{always} use the primitive, the correct approach @@ -1039,30 +1030,30 @@ % the necessary Lua code is loaded in \pkg{l3boostrap}. % The need to detokenize and force % expansion of input arises from the case where a |#| token is used in the -% input, \emph{e.g.}~|\__str_if_eq_x:nn {#} { \tl_to_str:n {#} }|, which +% input, \emph{e.g.}~|\__str_if_eq:nn {#} { \tl_to_str:n {#} }|, which % otherwise would fail as \cs{tex_luaescapestring:D} does not double % such tokens. % \begin{macrocode} -\cs_new:Npn \@@_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} } +\cs_new:Npn \@@_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} } \cs_if_exist:NT \tex_luatexversion:D { - \cs_set_eq:NN \lua_escape_x:n \tex_luaescapestring:D - \cs_set_eq:NN \lua_now_x:n \tex_directlua:D - \cs_set:Npn \@@_if_eq_x:nn #1#2 + \cs_set_eq:NN \lua_escape:e \tex_luaescapestring:D + \cs_set_eq:NN \lua_now:e \tex_directlua:D + \cs_set:Npn \@@_if_eq:nn #1#2 { - \lua_now_x:n + \lua_now:e { l3kernel.strcmp ( - " \@@_escape_x:n {#1} " , - " \@@_escape_x:n {#2} " + " \@@_escape:n {#1} " , + " \@@_escape:n {#2} " ) } } - \cs_new:Npn \@@_escape_x:n #1 + \cs_new:Npn \@@_escape:n #1 { - \lua_escape_x:n - { \__kernel_tl_to_str:w \use_x:n { {#1} } } + \lua_escape:e + { \__kernel_tl_to_str:w \use:e { {#1} } } } } % \end{macrocode} @@ -1073,7 +1064,7 @@ % { % \str_if_eq:nn, \str_if_eq:Vn, \str_if_eq:on, \str_if_eq:nV, % \str_if_eq:no, \str_if_eq:VV, -% \str_if_eq_x:nn +% \str_if_eq:ee % } % Modern engines provide a direct way of comparing two token lists, % but returning a number. This set of conditionals therefore make life @@ -1083,15 +1074,15 @@ \prg_new_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF } { \if_int_compare:w - \@@_if_eq_x:nn { \exp_not:n {#1} } { \exp_not:n {#2} } + \@@_if_eq:nn { \exp_not:n {#1} } { \exp_not:n {#2} } = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } \prg_generate_conditional_variant:Nnn \str_if_eq:nn - { V , o , nV , no , VV } { p , T , F , TF } -\prg_new_conditional:Npnn \str_if_eq_x:nn #1#2 { p , T , F , TF } + { V , v , o , nV , no , VV , nv } { p , T , F , TF } +\prg_new_conditional:Npnn \str_if_eq:ee #1#2 { p , T , F , TF } { - \if_int_compare:w \@@_if_eq_x:nn {#1} {#2} = 0 \exp_stop_f: + \if_int_compare:w \@@_if_eq:nn {#1} {#2} = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } % \end{macrocode} @@ -1105,7 +1096,7 @@ \prg_new_conditional:Npnn \str_if_eq:NN #1#2 { p , TF , T , F } { \if_int_compare:w - \@@_if_eq_x:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 } + \@@_if_eq:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 } = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } \prg_generate_conditional_variant:Nnn \str_if_eq:NN @@ -1137,10 +1128,10 @@ % \end{macro} % % \begin{macro}[EXP, noTF] -% {\str_case:nn, \str_case:on, \str_case:nV, \str_case:nv, \str_case_x:nn} -% \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_x:nnTF} +% {\str_case:nn, \str_case:on, \str_case:nV, \str_case:nv, \str_case_e:nn} +% \begin{macro}[EXP]{\@@_case:nnTF, \@@_case_e:nnTF} % \begin{macro}[EXP] -% {\@@_case:nw, \@@_case_x:nw, \@@_case_end:nw} +% {\@@_case:nw, \@@_case_e:nw, \@@_case_end:nw} % Much the same as \cs[index=tl_case:nn]{tl_case:nn(TF)} here: % just a change in the internal comparison. % \begin{macrocode} @@ -1175,33 +1166,33 @@ { \@@_case_end:nw {#3} } { \@@_case:nw {#1} } } -\cs_new:Npn \str_case_x:nn #1#2 +\cs_new:Npn \str_case_e:nn #1#2 { \exp:w - \@@_case_x:nnTF {#1} {#2} { } { } + \@@_case_e:nnTF {#1} {#2} { } { } } -\cs_new:Npn \str_case_x:nnT #1#2#3 +\cs_new:Npn \str_case_e:nnT #1#2#3 { \exp:w - \@@_case_x:nnTF {#1} {#2} {#3} { } + \@@_case_e:nnTF {#1} {#2} {#3} { } } -\cs_new:Npn \str_case_x:nnF #1#2 +\cs_new:Npn \str_case_e:nnF #1#2 { \exp:w - \@@_case_x:nnTF {#1} {#2} { } + \@@_case_e:nnTF {#1} {#2} { } } -\cs_new:Npn \str_case_x:nnTF #1#2 +\cs_new:Npn \str_case_e:nnTF #1#2 { \exp:w - \@@_case_x:nnTF {#1} {#2} + \@@_case_e:nnTF {#1} {#2} } -\cs_new:Npn \@@_case_x:nnTF #1#2#3#4 - { \@@_case_x:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop } -\cs_new:Npn \@@_case_x:nw #1#2#3 +\cs_new:Npn \@@_case_e:nnTF #1#2#3#4 + { \@@_case_e:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop } +\cs_new:Npn \@@_case_e:nw #1#2#3 { - \str_if_eq_x:nnTF {#1} {#2} + \str_if_eq:eeTF {#1} {#2} { \@@_case_end:nw {#3} } - { \@@_case_x:nw {#1} } + { \@@_case_e:nw {#1} } } \cs_new:Npn \@@_case_end:nw #1#2#3 \q_mark #4#5 \q_stop { \exp_end: #1 #4 } @@ -1921,6 +1912,32 @@ % \end{macrocode} % \end{macro} % +% \subsection{Deprecated functions} +% +% \begin{macro}[EXP, deprecated = 2019-12-31, noTF]{\str_case_x:nn} +% \begin{macro}[EXP, deprecated = 2019-12-31, pTF]{\str_if_eq_x:nn} +% For removal after 2019-12-31. +% \begin{macrocode} +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nn } +\cs_new:Npn \str_case_x:nn { \str_case_e:nn } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnT } +\cs_new:Npn \str_case_x:nnT { \str_case_e:nnT } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnF } +\cs_new:Npn \str_case_x:nnF { \str_case_e:nnF } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnTF } +\cs_new:Npn \str_case_x:nnTF { \str_case_e:nnTF } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq_p:ee } +\cs_new:Npn \str_if_eq_x_p:nn { \str_if_eq_p:ee } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeT } +\cs_new:Npn \str_if_eq_x:nnT { \str_if_eq:eeT } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeF } +\cs_new:Npn \str_if_eq_x:nnF { \str_if_eq:eeF } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeTF } +\cs_new:Npn \str_if_eq_x:nnTF { \str_if_eq:eeTF } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macrocode} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 35e352edb99..a1d10f187c2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -237,7 +237,7 @@ \tl_map_inline:nn { { luatex } { pdftex } { ptex } { uptex } { xetex } } { \@@_const:nn { sys_if_engine_ #1 } - { \str_if_eq_x_p:nn \c_sys_engine_str {#1} } + { \str_if_eq_p:Vn \c_sys_engine_str {#1} } } % \end{macrocode} % \end{variable} @@ -261,9 +261,9 @@ { dvi } } \@@_const:nn { sys_if_output_dvi } - { \str_if_eq_x_p:nn \c_sys_output_str { dvi } } + { \str_if_eq_p:Vn \c_sys_output_str { dvi } } \@@_const:nn { sys_if_output_pdf } - { \str_if_eq_x_p:nn \c_sys_output_str { pdf } } + { \str_if_eq_p:Vn \c_sys_output_str { pdf } } % \end{macrocode} % \end{variable} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index c365620f54b..2b8048e6dc2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -42,7 +42,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 863cc92a668..fcd5084c318 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index 7fe05c7f502..3188f7709d9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -1436,7 +1436,7 @@ { #3 \exp_after:wN \exp_after:wN \exp_after:wN \exp_end: - \lua_now_x:n { l3kernel.charcat(#1, #2) } + \lua_now:e { l3kernel.charcat(#1, #2) } } } { @@ -1855,7 +1855,7 @@ ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \exp_not:N \q_stop } { - \str_if_eq_x:nnTF { #2 } { cro } + \str_if_eq:nnTF { #2 } { cro } { \prg_return_true: } { \prg_return_false: } } @@ -1957,7 +1957,7 @@ % function cannot be defined on the fly because tests must remain % expandable): instead the first argument of the auxiliary (plus the % delimiter to avoid complications with trailing spaces) is compared -% using \cs{str_if_eq_x:nnTF} to the result of applying +% using \cs{str_if_eq:eeTF} to the result of applying % \cs{token_to_str:N} to a control sequence. Second, the % \tn{meaning} of primitives such as \tn{dimen} or \tn{dimendef} % starts in the same way as registers such as @@ -2005,7 +2005,7 @@ \exp_not:N \prg_return_false: \exp_not:N \else: } - \exp_not:N \str_if_eq_x:nnTF + \exp_not:N \str_if_eq:eeTF { \exp_not:N \exp_after:wN \exp_not:c { @@_delimit_by_ #2 :w } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index e45aaec2a1f..e154f1850ee 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -41,7 +41,7 @@ % }^^A % } % -% \date{Released 2018-06-14} +% \date{Released 2018-08-23} % % \maketitle % @@ -163,7 +163,7 @@ { \tl_if_blank:nF {#1} { - \str_if_eq_x:nnF { \tl_head:n {#1} } { \c_hash_str } + \str_if_eq:eeF { \tl_head:n {#1} } { \c_hash_str } { \@@_data_auxi:w #1 \q_stop } } } @@ -205,9 +205,9 @@ { \tl_if_blank:nF {#1} { - \str_if_eq_x:nnTF { \tl_head:n {#1} } { \c_hash_str } + \str_if_eq:eeTF { \tl_head:n {#1} } { \c_hash_str } { - \str_if_eq_x:nnT + \str_if_eq:eeT {#1} { \c_hash_str \c_space_tl Conditional~Mappings } { \ior_map_break: } diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx index 44922adcf8b..16702af9e43 100644 --- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx +++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx @@ -60,7 +60,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-23} % % \maketitle % @@ -131,7 +131,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3keys2e}{2018-05-12}{} +\ProvidesExplPackage{l3keys2e}{2018-08-23}{} {LaTeX2e option processing using LaTeX3 keys} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx index 40c7b12e1e8..9491f672954 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx @@ -62,7 +62,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-23} % % \maketitle % @@ -161,7 +161,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfp}{2018-05-12}{} +\ProvidesExplPackage{xfp}{2018-08-23}{} {L3 Floating point unit} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx index a9b279ce9ff..2a1c9de876f 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-23} % % \maketitle % @@ -533,7 +533,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfrac}{2018-05-12}{} +\ProvidesExplPackage{xfrac}{2018-08-23}{} {L3 Experimental split-level fractions} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx index c96ba68e0a6..c9685d264d5 100644 --- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx @@ -67,7 +67,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-23} % % \maketitle % @@ -818,7 +818,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2018-05-12}{} +\ProvidesExplPackage{xparse}{2018-08-23}{} {L3 Experimental document command parser} % \end{macrocode} % @@ -2630,7 +2630,7 @@ \tl_if_blank:oTF { \use_none:n ##1 } { \@@_add_arg:o { \use_none:n ##1 } } { - \str_if_eq_x:nnTF + \str_if_eq:eeTF { \exp_not:o { \use_none:n ##1 } } { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } } { \@@_add_arg:o { \use_ii:nn ##1 } } @@ -3326,7 +3326,7 @@ % hence are not considered as characters. % \begin{macrocode} \cs_new_protected:Npn \@@_grab_v_token_if_char:NTF #1 - { \str_if_eq_x:nnTF { } { \str_tail:n {#1} } } + { \str_if_eq:eeTF { } { \str_tail:n {#1} } } % \end{macrocode} % \end{macro} % @@ -3456,7 +3456,7 @@ \tl_if_blank:oTF { \use_none:nn #1#2 } { \@@_put_arg_expandable:ow { \use_none:nn #1#2 } } { - \str_if_eq_x:nnTF + \str_if_eq:eeTF { \exp_not:o { \use_none:nn #1#2 } } { { \exp_not:o { \use_iii:nnnn #1#2 \q_nil } } } { \@@_put_arg_expandable:ow { \use_iii:nnn #1#2 } } @@ -3511,7 +3511,7 @@ \tl_if_blank:oTF { \use_none:n #4 } { \@@_put_arg_expandable:ow { \use_none:n #4 } } { - \str_if_eq_x:nnTF + \str_if_eq:eeTF { \exp_not:o { \use_none:n #4 } } { { \exp_not:o { \use_ii:nnn #4 \q_nil } } } { \@@_put_arg_expandable:ow { \use_ii:nn #4 } } @@ -4048,7 +4048,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_cmd_if_xparse:NTF #1 { - \exp_args:Nf \str_case_x:nnTF + \exp_args:Nf \str_case_e:nnTF { \exp_args:Nf \tl_if_empty:nT { \token_get_arg_spec:N #1 } { diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx index 0f617e59c4d..182e8be40f8 100644 --- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2018-05-12} +% \date{Released 2018-08-23} % % \maketitle % @@ -682,7 +682,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xtemplate}{2018-05-12}{} +\ProvidesExplPackage{xtemplate}{2018-08-23}{} {L3 Experimental prototype document functions} % \end{macrocode} % diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty index 2c6a256c808..e7c603173c5 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty @@ -20,7 +20,7 @@ %% %% File: l3color.dtx Copyright(C) 2017-2018 The LaTeX3 Project \RequirePackage{expl3} -\ProvidesExplPackage{l3color}{2018-05-12}{} +\ProvidesExplPackage{l3color}{2018-08-24}{} {L3 Experimental color support} \tl_new:N \l__color_tmp_tl \prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF } @@ -48,7 +48,7 @@ \cs_generate_variant:Nn \__color_convert:nnN { VV } \cs_new_protected:Npn \__color_convert:nnnN #1#2#3#4 { - \str_if_eq_x:nnT {#1} { spot } % TO DO!!! + \str_if_eq:nnT {#1} { spot } % TO DO!!! { } \tl_set:Nx #4 { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop } @@ -160,7 +160,7 @@ \__color_extract:nNN {#2} \l__color_next_model_tl \l__color_next_value_tl \tl_if_eq:NNF \l__color_model_tl \l__color_next_model_tl { - \str_if_eq_x:nnT { \l__color_model_tl } { gray } + \str_if_eq:VnT \l__color_model_tl { gray } { \use:x { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty index a10b21221ac..677b39d1f7a 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty @@ -27,7 +27,7 @@ %% %% File: l3draw.dtx Copyright(C) 2018 The LaTeX3 Project \RequirePackage{expl3} -\ProvidesExplPackage{l3draw}{2018-05-12}{} +\ProvidesExplPackage{l3draw}{2018-08-24}{} {L3 Experimental core drawing support} \RequirePackage { l3color } %% File: l3draw-boxes.dtx Copyright(C) 2018 The LaTeX3 Project diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty index e56a46d4da1..2ef2e02ede2 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty @@ -20,7 +20,7 @@ %% %% File: l3str-convert.dtx Copyright (C) 2013-2018 The LaTeX3 Project \RequirePackage{expl3} -\ProvidesExplPackage{l3str-convert}{2018-05-12}{} +\ProvidesExplPackage{l3str-convert}{2018-08-24}{} {L3 Experimental string encoding conversions} \cs_if_exist:NF \use_ii_i:nn { \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def index 83f53a20f49..a6d0b4297cd 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def @@ -118,10 +118,10 @@ } \cs_new_protected:Npn \__str_decode_utf_xvi_bom:NN #1#2 { - \str_if_eq_x:nnTF { #1#2 } { ^^ff ^^fe } + \str_if_eq:nnTF { #1#2 } { ^^ff ^^fe } { \__str_decode_utf_xvi:Nw 2 } { - \str_if_eq_x:nnTF { #1#2 } { ^^fe ^^ff } + \str_if_eq:nnTF { #1#2 } { ^^fe ^^ff } { \__str_decode_utf_xvi:Nw 1 } { \__str_decode_utf_xvi:Nw 1 #1#2 } } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def index 992ee7ce19a..ee3840d6686 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def @@ -94,10 +94,10 @@ } \cs_new_protected:Npn \__str_decode_utf_xxxii_bom:NNNN #1#2#3#4 { - \str_if_eq_x:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 } + \str_if_eq:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 } { \__str_decode_utf_xxxii:Nw 2 } { - \str_if_eq_x:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff } + \str_if_eq:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff } { \__str_decode_utf_xxxii:Nw 1 } { \__str_decode_utf_xxxii:Nw 1 #1#2#3#4 } } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def index d290b2f0f91..d5397540d78 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def @@ -70,7 +70,7 @@ { \__str_unescape_string_repeat:NNNNNN ?? } } { - \str_case_x:nnF {#2} + \str_case_e:nnF {#2} { { \c_backslash_str } { 134 } { ( } { 50 } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty index ddb42af9343..e19591cfe6b 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty @@ -20,7 +20,7 @@ %% %% File: l3str-format.dtx Copyright (C) 2012-2018 The LaTeX3 Project \RequirePackage{expl3} -\ProvidesExplPackage{l3str-format}{2018-05-12}{} +\ProvidesExplPackage{l3str-format}{2018-08-24}{} {L3 Experimental string formatting} \cs_generate_variant:Nn \use:nn { nf } \cs_generate_variant:Nn \use:nnn { fnf } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty new file mode 100644 index 00000000000..b3c0cb8095a --- /dev/null +++ b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty @@ -0,0 +1,177 @@ +%% +%% This is file `l3sys-shell.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3sys-shell.dtx (with options: `package') +%% +%% Copyright (C) 2018 The LaTeX3 Project +%% +%% It may be distributed and/or modified under the conditions of +%% the LaTeX Project Public License (LPPL), either version 1.3c of +%% this license or (at your option) any later version. The latest +%% version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This file is part of the "l3experimental bundle" (The Work in LPPL) +%% and all files in that bundle must be distributed together. +%% +%% File: l3sys-shell.dtx Copyright(C) 2018 The LaTeX3 Project +\RequirePackage{expl3} +\ProvidesExplPackage{l3sys-shell}{2018-08-24}{} + {L3 Experimental system shell functions} +\cs_new:Npn \__sys_path_to_win:n #1 + { + \exp_after:wN \__sys_path_to_win:w \tl_to_str:n {#1} ~ \q_stop + } +\cs_new:Npn \__sys_path_to_win:w #1 ~ #2 \q_stop + { + \__sys_path_to_win:N #1 \q_nil + \tl_if_empty:nF {#2} + { + \c_space_tl + \__sys_path_to_win:w #2 \q_stop + } + } +\cs_new:Npn \__sys_path_to_win:N #1 + { + \quark_if_nil:NF #1 + { + \token_if_eq_meaning:NNTF #1 / + { \c_backslash_str } + {#1} + \__sys_path_to_win:N + } + } +\cs_new_protected:Npx \sys_shell_cp:nn #1#2 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { + cp~-f~ \exp_not:N \tl_to_str:n {#1} ~ + \exp_not:N \tl_to_str:n {#2} + } + \sys_if_platform_windows:T + { + copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~ + \exp_not:N \__sys_path_to_win:n {#2} + } + } + } + } +\cs_new_protected:Npx \sys_shell_mkdir:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { mkdir~-p~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { + if~not~exist~ + \exp_not:N \__sys_path_to_win:n { #1 / nul } ~ + mkdir~ \exp_not:N \__sys_path_to_win:n {#1} + } + } + } + } +\cs_new_protected:Npx \sys_shell_mv:nn #1#2 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { + mv~ \exp_not:N \tl_to_str:n {#1} ~ + \exp_not:N \tl_to_str:n {#2} + } + \sys_if_platform_windows:T + { + copy~/y~ \exp_not:N \__sys_path_to_win:n {#1} ~ + \exp_not:N \__sys_path_to_win:n {#2} + \token_to_str:N & \token_to_str:N & + del~/f~/q~\exp_not:N \__sys_path_to_win:n {#1} + } + } + } + } +\cs_new_protected:Npx \sys_shell_rm:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_now:x + { + \sys_if_platform_unix:T + { rm~-f~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { del~/f~/q~ \exp_not:N \__sys_path_to_win:n {#1} } + } + } + } +\cs_new_protected:Npx \sys_shell_rmdir:n #1 + { + \sys_if_shell_unrestricted:T + { + \sys_shell_mkdir:n {#1} + \sys_shell_now:x + { + \sys_if_platform_unix:T + { rm~-rf~ \exp_not:N \tl_to_str:n {#1} } + \sys_if_platform_windows:T + { rmdir~/s~/q~ \exp_not:N \__sys_path_to_win:n {#1} } + } + } + } +\tl_new:N \l__sys_tmp_tl +\cs_new_protected:Npx \sys_shell_get_pwd:N #1 + { + \sys_if_shell_unrestricted:T + { + \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l__sys_tmp_tl + { + \char_set_catcode_other:N \exp_not:N \\ + \char_set_catcode_other:N \exp_not:N \# + \char_set_catcode_other:N \exp_not:N \~ + \char_set_catcode_other:N \exp_not:N \% + \char_set_catcode_space:N \exp_not:N \ % + } + { + \sys_if_platform_unix:T { pwd } + \sys_if_platform_windows:T { cd } + } + \str_set:NV #1 \exp_not:N \l__sys_tmp_tl + } + } +\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2 + { + \sys_if_shell_unrestricted:T + { + \exp_not:N \tl_set_from_shell:Nnn \exp_not:N \l__sys_tmp_tl + { + \ExplSyntaxOff + \char_set_catcode_other:N \exp_not:N \\ + \char_set_catcode_other:N \exp_not:N \# + \char_set_catcode_other:N \exp_not:N \~ + \char_set_catcode_other:N \exp_not:N \% + \char_set_catcode_other:n { 13 } + } + { + \sys_if_platform_unix:T { ls~-1~ #1 } + \sys_if_platform_windows:T { dir~/b~ #1 } + } + \str_set:NV \exp_not:N \l__sys_tmp_tl \exp_not:N \l__sys_tmp_tl + \seq_set_split:NnV #2 { \char_generate:nn { `\^^M } { 12 } } + \exp_not:N \l__sys_tmp_tl + \seq_pop_right:NN #2 \exp_not:N \l__sys_tmp_tl + } + } +%% +%% +%% End of file `l3sys-shell.sty'. diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty index 7dc752d1b07..54b8bf8e409 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty @@ -20,7 +20,7 @@ %% %% File: xcoffins.dtx Copyright(C) 2010-2012,2014,2016-2018 The LaTeX3 Project \RequirePackage{xparse} -\ProvidesExplPackage{xcoffins}{2018-05-12}{} +\ProvidesExplPackage{xcoffins}{2018-08-24}{} {L3 Experimental design level coffins} \keys_define:nn { coffin } { diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty index 8842c475e02..e5faec167c8 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -33,7 +33,7 @@ }% \endinput } -\ProvidesExplPackage{l3galley}{2018-05-12}{} +\ProvidesExplPackage{l3galley}{2018-08-24}{} {L3 Experimental galley code} \int_new:N \l__galley_tmp_int \seq_new:N \g__galley_tmpa_seq @@ -213,7 +213,7 @@ } \cs_new_protected:Npn \__galley_par_aux:N #1 { - \str_if_eq_x:nnF {#1} { \s__galley_par_omit } + \str_if_eq:nnF {#1} { \s__galley_par_omit } { \__galley_par_auxii: #1 diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty index aa605b1bfc0..67b147bcc75 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty @@ -21,7 +21,7 @@ %% File: xgalley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach %% (C) 2010-2012,2014,2016-2018 The LaTeX3 Project \RequirePackage{xparse} -\ProvidesExplPackage{xgalley}{2018-05-12}{} +\ProvidesExplPackage{xgalley}{2018-08-24}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} \clist_new:N \l__galley_tmpa_clist diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index b07a1cf252b..ee3ce0a28f8 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -63,7 +63,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-06-14}% +\def\ExplFileDate{2018-08-23}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -225,7 +225,7 @@ }>0 % \everyjob\expandafter{% \the\expandafter\everyjob - \csname\detokenize{lua_now_x:n}\endcsname{require("expl3")}% + \csname\detokenize{lua_now:n}\endcsname{require("expl3")}% }% \fi \fi @@ -2172,7 +2172,10 @@ \cs_set_nopar:Npx \l__exp_internal_tl {#1} \l__exp_internal_tl } -\cs_set:Npn \use_x:n #1 { \tex_expanded:D {#1} } +\cs_set:Npn \use:e #1 { \tex_expanded:D {#1} } +\tex_ifdefined:D \tex_expanded:D \tex_else:D + \cs_set:Npn \use:e #1 { \exp_args:Ne \use:n {#1} } +\tex_fi:D \cs_set:Npn \use:n #1 {#1} \cs_set:Npn \use:nn #1#2 {#1#2} \cs_set:Npn \use:nnn #1#2#3 {#1#2#3} @@ -3018,7 +3021,7 @@ { \bool_if:NTF #3 { - \str_if_eq_x:nnF { } + \str_if_eq:eeF { } { \tl_map_function:nN {#2} \__cs_generate_from_signature:n } { \__kernel_msg_error:nnx { kernel } { non-base-function } @@ -5018,7 +5021,7 @@ \exp_not:c { tl_ #1 :Nx } ##1 { \exp_not:N \tl_to_str:n {##2} } } - \cs_generate_variant:cn { str_ #1 :Nn } { Nx , cn , cx } + \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx } \__str_tmp:n } } @@ -5092,46 +5095,46 @@ { p , T , F , TF } \prg_new_eq_conditional:NNn \str_if_empty:c \tl_if_empty:c { p , T , F , TF } -\cs_new:Npn \__str_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} } +\cs_new:Npn \__str_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} } \cs_if_exist:NT \tex_luatexversion:D { - \cs_set_eq:NN \lua_escape_x:n \tex_luaescapestring:D - \cs_set_eq:NN \lua_now_x:n \tex_directlua:D - \cs_set:Npn \__str_if_eq_x:nn #1#2 + \cs_set_eq:NN \lua_escape:e \tex_luaescapestring:D + \cs_set_eq:NN \lua_now:e \tex_directlua:D + \cs_set:Npn \__str_if_eq:nn #1#2 { - \lua_now_x:n + \lua_now:e { l3kernel.strcmp ( - " \__str_escape_x:n {#1} " , - " \__str_escape_x:n {#2} " + " \__str_escape:n {#1} " , + " \__str_escape:n {#2} " ) } } - \cs_new:Npn \__str_escape_x:n #1 + \cs_new:Npn \__str_escape:n #1 { - \lua_escape_x:n - { \__kernel_tl_to_str:w \use_x:n { {#1} } } + \lua_escape:e + { \__kernel_tl_to_str:w \use:e { {#1} } } } } \prg_new_conditional:Npnn \str_if_eq:nn #1#2 { p , T , F , TF } { \if_int_compare:w - \__str_if_eq_x:nn { \exp_not:n {#1} } { \exp_not:n {#2} } + \__str_if_eq:nn { \exp_not:n {#1} } { \exp_not:n {#2} } = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } \prg_generate_conditional_variant:Nnn \str_if_eq:nn - { V , o , nV , no , VV } { p , T , F , TF } -\prg_new_conditional:Npnn \str_if_eq_x:nn #1#2 { p , T , F , TF } + { V , v , o , nV , no , VV , nv } { p , T , F , TF } +\prg_new_conditional:Npnn \str_if_eq:ee #1#2 { p , T , F , TF } { - \if_int_compare:w \__str_if_eq_x:nn {#1} {#2} = 0 \exp_stop_f: + \if_int_compare:w \__str_if_eq:nn {#1} {#2} = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Npnn \str_if_eq:NN #1#2 { p , TF , T , F } { \if_int_compare:w - \__str_if_eq_x:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 } + \__str_if_eq:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 } = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } \prg_generate_conditional_variant:Nnn \str_if_eq:NN @@ -5181,33 +5184,33 @@ { \__str_case_end:nw {#3} } { \__str_case:nw {#1} } } -\cs_new:Npn \str_case_x:nn #1#2 +\cs_new:Npn \str_case_e:nn #1#2 { \exp:w - \__str_case_x:nnTF {#1} {#2} { } { } + \__str_case_e:nnTF {#1} {#2} { } { } } -\cs_new:Npn \str_case_x:nnT #1#2#3 +\cs_new:Npn \str_case_e:nnT #1#2#3 { \exp:w - \__str_case_x:nnTF {#1} {#2} {#3} { } + \__str_case_e:nnTF {#1} {#2} {#3} { } } -\cs_new:Npn \str_case_x:nnF #1#2 +\cs_new:Npn \str_case_e:nnF #1#2 { \exp:w - \__str_case_x:nnTF {#1} {#2} { } + \__str_case_e:nnTF {#1} {#2} { } } -\cs_new:Npn \str_case_x:nnTF #1#2 +\cs_new:Npn \str_case_e:nnTF #1#2 { \exp:w - \__str_case_x:nnTF {#1} {#2} + \__str_case_e:nnTF {#1} {#2} } -\cs_new:Npn \__str_case_x:nnTF #1#2#3#4 - { \__str_case_x:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop } -\cs_new:Npn \__str_case_x:nw #1#2#3 +\cs_new:Npn \__str_case_e:nnTF #1#2#3#4 + { \__str_case_e:nw {#1} #2 {#1} { } \q_mark {#3} \q_mark {#4} \q_stop } +\cs_new:Npn \__str_case_e:nw #1#2#3 { - \str_if_eq_x:nnTF {#1} {#2} + \str_if_eq:eeTF {#1} {#2} { \__str_case_end:nw {#3} } - { \__str_case_x:nw {#1} } + { \__str_case_e:nw {#1} } } \cs_new:Npn \__str_case_end:nw #1#2#3 \q_mark #4#5 \q_stop { \exp_end: #1 #4 } @@ -5611,6 +5614,22 @@ \cs_new_eq:NN \str_show:n \tl_show:n \cs_new_eq:NN \str_show:N \tl_show:N \cs_generate_variant:Nn \str_show:N { c } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nn } +\cs_new:Npn \str_case_x:nn { \str_case_e:nn } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnT } +\cs_new:Npn \str_case_x:nnT { \str_case_e:nnT } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnF } +\cs_new:Npn \str_case_x:nnF { \str_case_e:nnF } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_case_e:nnTF } +\cs_new:Npn \str_case_x:nnTF { \str_case_e:nnTF } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq_p:ee } +\cs_new:Npn \str_if_eq_x_p:nn { \str_if_eq_p:ee } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeT } +\cs_new:Npn \str_if_eq_x:nnT { \str_if_eq:eeT } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeF } +\cs_new:Npn \str_if_eq_x:nnF { \str_if_eq:eeF } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \str_if_eq:eeTF } +\cs_new:Npn \str_if_eq_x:nnTF { \str_if_eq:eeTF } %% File: l3quark.dtx Copyright (C) 1990-2018 The LaTeX3 Project \__kernel_patch:nnNNpn { \__kernel_chk_var_scope:NN q #1 } { } \cs_new_protected:Npn \quark_new:N #1 @@ -7610,7 +7629,7 @@ \tl_map_inline:nn { { luatex } { pdftex } { ptex } { uptex } { xetex } } { \__sys_const:nn { sys_if_engine_ #1 } - { \str_if_eq_x_p:nn \c_sys_engine_str {#1} } + { \str_if_eq_p:Vn \c_sys_engine_str {#1} } } \str_const:Nx \c_sys_output_str { @@ -7620,9 +7639,9 @@ { dvi } } \__sys_const:nn { sys_if_output_dvi } - { \str_if_eq_x_p:nn \c_sys_output_str { dvi } } + { \str_if_eq_p:Vn \c_sys_output_str { dvi } } \__sys_const:nn { sys_if_output_pdf } - { \str_if_eq_x_p:nn \c_sys_output_str { pdf } } + { \str_if_eq_p:Vn \c_sys_output_str { pdf } } \__sys_const:nn { sys_if_rand_exist } { \cs_if_exist_p:N \tex_uniformdeviate:D } %% File: l3clist.dtx Copyright (C) 2004-2011 Frank Mittelbach, @@ -8373,7 +8392,7 @@ { #3 \exp_after:wN \exp_after:wN \exp_after:wN \exp_end: - \lua_now_x:n { l3kernel.charcat(#1, #2) } + \lua_now:e { l3kernel.charcat(#1, #2) } } } { @@ -8567,7 +8586,7 @@ ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \exp_not:N \q_stop } { - \str_if_eq_x:nnTF { #2 } { cro } + \str_if_eq:nnTF { #2 } { cro } { \prg_return_true: } { \prg_return_false: } } @@ -8623,7 +8642,7 @@ \exp_not:N \prg_return_false: \exp_not:N \else: } - \exp_not:N \str_if_eq_x:nnTF + \exp_not:N \str_if_eq:eeTF { \exp_not:N \exp_after:wN \exp_not:c { __token_delimit_by_ #2 :w } @@ -9065,7 +9084,7 @@ } \cs_new:Npn \__prop_item_Nn:nwwn #1#2 \__prop_pair:wn #3 \s__prop #4 { - \str_if_eq_x:nnTF {#1} {#3} + \str_if_eq:eeTF {#1} {#3} { \prg_break:n { \exp_not:n {#4} } } { \__prop_item_Nn:nwwn {#1} } } @@ -9150,7 +9169,7 @@ } \cs_new:Npn \__prop_if_in:nwwn #1#2 \__prop_pair:wn #3 \s__prop #4 { - \str_if_eq_x:nnTF {#1} {#3} + \str_if_eq:eeTF {#1} {#3} { \__prop_if_in:N } { \__prop_if_in:nwwn {#1} } } @@ -9671,7 +9690,7 @@ \seq_put_right:Nn \l__msg_class_loop_seq {#1} \prop_get:cnNT { l__msg_redirect_ #1 _prop } {#3} \l__msg_class_tl { - \str_if_eq_x:nnF { \l__msg_class_tl } {#1} + \str_if_eq:VnF \l__msg_class_tl {#1} { \tl_if_eq:NNTF \l__msg_class_tl \l__msg_current_class_tl { @@ -11407,7 +11426,7 @@ \cs_generate_variant:Nn \skip_gsub:Nn { c } \prg_new_conditional:Npnn \skip_if_eq:nn #1#2 { p , T , F , TF } { - \str_if_eq_x:nnTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } } + \str_if_eq:eeTF { \skip_eval:n { #1 } } { \skip_eval:n { #2 } } { \prg_return_true: } { \prg_return_false: } } @@ -11868,11 +11887,8 @@ \cs_if_exist:cTF { \c__keys_type_root_tl \__keys_parent:o \l_keys_path_tl } { - \str_if_eq_x:nnTF - { - \exp_not:v - { \c__keys_type_root_tl \__keys_parent:o \l_keys_path_tl } - } + \str_if_eq:vnTF + { \c__keys_type_root_tl \__keys_parent:o \l_keys_path_tl } { choice } { \__kernel_msg_error:nnxx { kernel } { nested-choice-key } @@ -13117,10 +13133,10 @@ #2 \s__fp_mark { #3 #1 } #4 } -\cs_new:Npn \__fp_str_if_eq_x:nn #1#2 { \tex_strcmp:D {#1} {#2} } +\cs_new:Npn \__fp_str_if_eq:nn #1#2 { \tex_strcmp:D {#1} {#2} } \sys_if_engine_luatex:T { - \cs_set:Npn \__fp_str_if_eq_x:nn #1#2 + \cs_set:Npn \__fp_str_if_eq:nn #1#2 { \tex_directlua:D { @@ -14210,7 +14226,7 @@ \if_catcode:w \scan_stop: \exp_not:N #1 \if_meaning:w \scan_stop: #1 \if_int_compare:w - \__fp_str_if_eq_x:nn { \s__fp } { \exp_not:N #1 } + \__fp_str_if_eq:nn { \s__fp } { \exp_not:N #1 } = 0 \exp_stop_f: 0 \__kernel_msg_expandable_error:nnn @@ -14224,7 +14240,7 @@ \fi: \else: \if_int_compare:w - \__fp_str_if_eq_x:nn { \int_value:w #1 } { \tex_the:D #1 } + \__fp_str_if_eq:nn { \int_value:w #1 } { \tex_the:D #1 } = 0 \exp_stop_f: \int_value:w #1 \else: @@ -14512,7 +14528,7 @@ { \if_catcode:w \scan_stop: \exp_not:N #2 \if_int_compare:w - \__fp_str_if_eq_x:nn { \s__fp_mark } { \exp_not:N #2 } + \__fp_str_if_eq:nn { \s__fp_mark } { \exp_not:N #2 } = 0 \exp_stop_f: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_parse_infix_mark:NNN @@ -17125,7 +17141,7 @@ \cs_new:Npn \__fp_pow_normal_o:ww \s__fp \__fp_chk:w 1 #1#2#3; \s__fp \__fp_chk:w #4#5 { - \if_int_compare:w \__fp_str_if_eq_x:nn { #2 #3 } + \if_int_compare:w \__fp_str_if_eq:nn { #2 #3 } { 1 {1000} {0000} {0000} {0000} } = 0 \exp_stop_f: \if_int_compare:w #4 #1 = 32 \exp_stop_f: \exp_after:wN \__fp_case_return_ii_o:ww @@ -20145,7 +20161,7 @@ } \cs_new:Npn \__regex_escape_x_test:N #1 { - \str_if_eq_x:nnTF {#1} { break } { ; } + \str_if_eq:nnTF {#1} { break } { ; } { \if_charcode:w \c_space_token #1 \exp_after:wN \__regex_escape_x_test:N @@ -20167,7 +20183,7 @@ } \cs_new:Npn \__regex_escape_x:N #1 { - \str_if_eq_x:nnTF {#1} { break } { ; } + \str_if_eq:nnTF {#1} { break } { ; } { \__regex_hexadecimal_use:NTF #1 { ; \__regex_escape_loop:N } @@ -20176,7 +20192,7 @@ } \cs_new:Npn \__regex_escape_x_loop:N #1 { - \str_if_eq_x:nnTF {#1} { break } + \str_if_eq:nnTF {#1} { break } { ; \__regex_escape_x_loop_error:n { } {#1} } { \__regex_hexadecimal_use:NTF #1 @@ -20550,7 +20566,7 @@ } \cs_new_protected:Npn \__regex_compile_quantifier_braced_auxi:w #1#2 { - \str_case_x:nnF { #1 #2 } + \str_case_e:nnF { #1 #2 } { { \__regex_compile_special:N \c_right_brace_str } { @@ -22865,7 +22881,7 @@ { Missing~right~brace~inserted~for~'\iow_char:N\\u'~escape. } { LaTeX~ - \str_if_eq_x:nnTF { } {#2} + \str_if_eq:eeTF { } {#2} { reached~the~end~of~the~string~ } { encountered~an~escaped~alphanumeric~character '\iow_char:N\\#2'~ } when~parsing~the~argument~of~an~ @@ -22995,7 +23011,7 @@ } \cs_new:Npn \__regex_msg_repeated:nnN #1#2#3 { - \str_if_eq_x:nnF { #1 #2 } { 1 0 } + \str_if_eq:eeF { #1 #2 } { 1 0 } { , ~ repeated ~ \int_case:nnF {#2} @@ -23421,7 +23437,7 @@ { \l__box_right_new_dim - \l__box_left_new_dim } \box_use_drop:N \l__box_internal_box } -\cs_new_protected:Npn \__box_rotate_x:nnN #1#2#3 +\cs_new_protected:Npn \__box_rotate_xdir:nnN #1#2#3 { \dim_set:Nn #3 { @@ -23432,7 +23448,7 @@ } } } -\cs_new_protected:Npn \__box_rotate_y:nnN #1#2#3 +\cs_new_protected:Npn \__box_rotate_ydir:nnN #1#2#3 { \dim_set:Nn #3 { @@ -23445,46 +23461,46 @@ } \cs_new_protected:Npn \__box_rotate_quadrant_one: { - \__box_rotate_y:nnN \l__box_right_dim \l__box_top_dim + \__box_rotate_ydir:nnN \l__box_right_dim \l__box_top_dim \l__box_top_new_dim - \__box_rotate_y:nnN \l__box_left_dim \l__box_bottom_dim + \__box_rotate_ydir:nnN \l__box_left_dim \l__box_bottom_dim \l__box_bottom_new_dim - \__box_rotate_x:nnN \l__box_left_dim \l__box_top_dim + \__box_rotate_xdir:nnN \l__box_left_dim \l__box_top_dim \l__box_left_new_dim - \__box_rotate_x:nnN \l__box_right_dim \l__box_bottom_dim + \__box_rotate_xdir:nnN \l__box_right_dim \l__box_bottom_dim \l__box_right_new_dim } \cs_new_protected:Npn \__box_rotate_quadrant_two: { - \__box_rotate_y:nnN \l__box_right_dim \l__box_bottom_dim + \__box_rotate_ydir:nnN \l__box_right_dim \l__box_bottom_dim \l__box_top_new_dim - \__box_rotate_y:nnN \l__box_left_dim \l__box_top_dim + \__box_rotate_ydir:nnN \l__box_left_dim \l__box_top_dim \l__box_bottom_new_dim - \__box_rotate_x:nnN \l__box_right_dim \l__box_top_dim + \__box_rotate_xdir:nnN \l__box_right_dim \l__box_top_dim \l__box_left_new_dim - \__box_rotate_x:nnN \l__box_left_dim \l__box_bottom_dim + \__box_rotate_xdir:nnN \l__box_left_dim \l__box_bottom_dim \l__box_right_new_dim } \cs_new_protected:Npn \__box_rotate_quadrant_three: { - \__box_rotate_y:nnN \l__box_left_dim \l__box_bottom_dim + \__box_rotate_ydir:nnN \l__box_left_dim \l__box_bottom_dim \l__box_top_new_dim - \__box_rotate_y:nnN \l__box_right_dim \l__box_top_dim + \__box_rotate_ydir:nnN \l__box_right_dim \l__box_top_dim \l__box_bottom_new_dim - \__box_rotate_x:nnN \l__box_right_dim \l__box_bottom_dim + \__box_rotate_xdir:nnN \l__box_right_dim \l__box_bottom_dim \l__box_left_new_dim - \__box_rotate_x:nnN \l__box_left_dim \l__box_top_dim + \__box_rotate_xdir:nnN \l__box_left_dim \l__box_top_dim \l__box_right_new_dim } \cs_new_protected:Npn \__box_rotate_quadrant_four: { - \__box_rotate_y:nnN \l__box_left_dim \l__box_top_dim + \__box_rotate_ydir:nnN \l__box_left_dim \l__box_top_dim \l__box_top_new_dim - \__box_rotate_y:nnN \l__box_right_dim \l__box_bottom_dim + \__box_rotate_ydir:nnN \l__box_right_dim \l__box_bottom_dim \l__box_bottom_new_dim - \__box_rotate_x:nnN \l__box_left_dim \l__box_bottom_dim + \__box_rotate_xdir:nnN \l__box_left_dim \l__box_bottom_dim \l__box_left_new_dim - \__box_rotate_x:nnN \l__box_right_dim \l__box_top_dim + \__box_rotate_xdir:nnN \l__box_right_dim \l__box_top_dim \l__box_right_new_dim } \fp_new:N \l__box_scale_x_fp @@ -24533,25 +24549,24 @@ Poles~of~coffin~#1 : #3 . } %% File: l3luatex.dtx Copyright (C) 2010-2018 The LaTeX3 Project -\cs_new_eq:NN \__luatex_escape_x:n \tex_luaescapestring:D -\cs_new_eq:NN \__luatex_now_x:n \tex_directlua:D -\cs_new_eq:NN \__luatex_shipout_x:n \tex_latelua:D -\cs_undefine:N \lua_escape_x:n -\cs_undefine:N \lua_now_x:n -\cs_new:Npn \lua_now_x:n #1 { \__luatex_now_x:n {#1} } -\cs_new:Npn \lua_now:n #1 { \lua_now_x:n { \exp_not:n {#1} } } -\cs_new_protected:Npn \lua_shipout_x:n #1 { \__luatex_shiphout_x:n {#1} } +\cs_new_eq:NN \__lua_escape:n \tex_luaescapestring:D +\cs_new_eq:NN \__lua_now:n \tex_directlua:D +\cs_new_eq:NN \__lua_shipout:n \tex_latelua:D +\cs_undefine:N \lua_escape:e +\cs_undefine:N \lua_now:e +\cs_new:Npn \lua_now:e #1 { \__lua_now:n {#1} } +\cs_new:Npn \lua_now:n #1 { \lua_now:e { \exp_not:n {#1} } } +\cs_new_protected:Npn \lua_shipout_e:n #1 { \__lua_shiphout:n {#1} } \cs_new_protected:Npn \lua_shipout:n #1 - { \lua_shipout_x:n { \exp_not:n {#1} } } -\cs_new:Npn \lua_escape_x:n #1 { \__luatex_escape_x:n {#1} } -\cs_new:Npn \lua_escape:n #1 { \lua_escape_x:n { \exp_not:n {#1} } } + { \lua_shipout_e:n { \exp_not:n {#1} } } +\cs_new:Npn \lua_escape:e #1 { \__lua_escape:n {#1} } +\cs_new:Npn \lua_escape:n #1 { \lua_escape:e { \exp_not:n {#1} } } \sys_if_engine_luatex:F { \clist_map_inline:nn { - \use_x:n , - \lua_escape_x:n , \lua_escape:n , - \lua_now_x:n , \lua_now:n + \lua_escape:n , \lua_escape:e , + \lua_now:n , \lua_now:e } { \cs_set:Npn #1 ##1 @@ -24561,7 +24576,7 @@ } } \clist_map_inline:nn - { \lua_shipout_x:n , \lua_shipout:n } + { \lua_shipout_e:n , \lua_shipout:n } { \cs_set_protected:Npn #1 ##1 { @@ -24576,6 +24591,12 @@ The~feature~you~are~using~is~only~available~ with~the~LuaTeX~engine.~LaTeX3~ignored~'#1'. } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_now:e } +\cs_new:Npn \lua_now_x:n #1 { \__lua_now:n {#1} } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_escape:e } +\cs_new:Npn \lua_escape_x:n #1 { \__lua_escape:n {#1} } +\__kernel_patch_deprecation:nnNNpn { 2019-12-31 } { \lua_shipout_e:n } +\cs_new_protected:Npn \lua_shipout_x:n #1 { \__lua_shipout:n {#1} } %% File: l3unicode.dtx Copyright (C) 2018 The LaTeX3 Project \ior_new:N \g__char_data_ior \bool_lazy_or:nnTF { \sys_if_engine_luatex_p: } { \sys_if_engine_xetex_p: } @@ -24648,7 +24669,7 @@ { \tl_if_blank:nF {#1} { - \str_if_eq_x:nnF { \tl_head:n {#1} } { \c_hash_str } + \str_if_eq:eeF { \tl_head:n {#1} } { \c_hash_str } { \__char_data_auxi:w #1 \q_stop } } } @@ -24685,9 +24706,9 @@ { \tl_if_blank:nF {#1} { - \str_if_eq_x:nnTF { \tl_head:n {#1} } { \c_hash_str } + \str_if_eq:eeTF { \tl_head:n {#1} } { \c_hash_str } { - \str_if_eq_x:nnT + \str_if_eq:eeT {#1} { \c_hash_str \c_space_tl Conditional~Mappings } { \ior_map_break: } @@ -25097,10 +25118,10 @@ \file_get_full_name:nN {#1} \l__file_full_name_str \str_set:Nx #3 { - \lua_now_x:n + \lua_now:e { l3kernel.file#2 - ( " \lua_escape_x:n { \l__file_full_name_str } " ) + ( " \lua_escape:e { \l__file_full_name_str } " ) } } } @@ -25510,6 +25531,29 @@ \tex_shellescape:D } } +\sys_if_engine_luatex:TF + { + \str_const:Nx \c_sys_platform_str + { \lua_now:n { tex.print(os.type) } } + } + { + \file_if_exist:nTF { nul: } + { + \file_if_exist:nF { /dev/null } + { \str_const:Nn \c_sys_platform_str { windows } } + } + { + \file_if_exist:nT { /dev/null } + { \str_const:Nn \c_sys_platform_str { unix } } + } + } +\cs_if_exist:NF \c_sys_platform_str + { \str_const:Nn \c_sys_platform_str { unknown } } +\clist_map_inline:nn { unix , windows } + { + \__sys_const:nn { sys_if_platform_ #1 } + { \str_if_eq_p:Vn \c_sys_platform_str { #1 } } + } \__sys_const:nn { sys_if_shell } { \int_compare_p:nNn \c_sys_shell_escape_int > 0 } \__sys_const:nn { sys_if_shell_unrestricted } @@ -25522,8 +25566,8 @@ { \cs_new_protected:Npn \sys_shell_now:n #1 { - \lua_now_x:n - { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") } + \lua_now:e + { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") } } } { @@ -25535,8 +25579,8 @@ { \cs_new_protected:Npn \sys_shell_shipout:n #1 { - \lua_shipout_x:n - { os.execute(" \lua_escape_x:n { \tl_to_str:n {#1} } ") } + \lua_shipout_e:n + { os.execute(" \lua_escape:e { \tl_to_str:n {#1} } ") } } } { @@ -25610,21 +25654,27 @@ \str_if_empty:NTF \l__tl_file_name_str { \__kernel_file_missing:n {#4} } { - \group_begin: - \exp_args:No \tex_everyeof:D - { \c__tl_rescan_marker_tl \exp_not:N } - #3 \scan_stop: - \exp_after:wN \__tl_from_file_do:w - \exp_after:wN \prg_do_nothing: - \tex_input:D \l__tl_file_name_str \scan_stop: - \exp_args:NNNo \group_end: - #1 #2 \l__tl_internal_a_tl + \exp_args:NV \__tl_set_from:nNNn + \l__tl_file_name_str + #1 #2 {#3} } } \exp_args:Nno \use:nn { \cs_new_protected:Npn \__tl_from_file_do:w #1 } { \c__tl_rescan_marker_tl } { \tl_set:No \l__tl_internal_a_tl {#1} } +\cs_new_protected:Npn \__tl_set_from:nNNn #1#2#3#4 + { + \group_begin: + \exp_args:No \tex_everyeof:D + { \c__tl_rescan_marker_tl \exp_not:N } + #4 \scan_stop: + \exp_after:wN \__tl_from_file_do:w + \exp_after:wN \prg_do_nothing: + \tex_input:D #1 \scan_stop: + \exp_args:NNNo \group_end: + #2 #3 \l__tl_internal_a_tl + } \cs_new_protected:Npn \tl_set_from_file_x:Nnn { \__tl_set_from_file_x:NNnn \tl_set:Nn } \cs_new_protected:Npn \tl_gset_from_file_x:Nnn @@ -25647,6 +25697,29 @@ } } \str_new:N \l__tl_file_name_str +\cs_new_protected:Npn \tl_set_from_shell:Nnn + { \__tl_set_from_shell:NNnn \tl_set:Nn } +\cs_generate_variant:Nn \tl_set_from_shell:Nnn { c } +\cs_new_protected:Npn \tl_gset_from_shell:Nnn + { \__tl_set_from_shell:NNnn \tl_gset:Nn } +\cs_generate_variant:Nn \tl_gset_from_shell:Nnn { c } +\cs_new_protected:Npn \__tl_set_from_shell:NNnn #1#2#3#4 + { + \sys_if_shell:TF + { + \tl_set:Nn \l__tl_internal_a_tl {#4} + \tl_if_in:NnTF \l__tl_internal_a_tl { " } + { + \__kernel_msg_error:nnx + { kernel } { quote-in-shell } {#4} + } + { \__tl_set_from:nNNn { | " #4 " } #1 #2 {#3} } + } + { #1 #2 { } } + } +\__kernel_msg_new:nnnn { kernel } { quote-in-shell } + { Quotes~in~shell~command~'#1'. } + { Shell~commands~cannot~contain~quotes~("). } \cs_new:Npn \char_lower_case:N #1 { \__char_change_case:nNN { lower } \char_value_lccode:n #1 } \cs_new:Npn \char_upper_case:N #1 @@ -27009,7 +27082,7 @@ \__kernel_deprecation_error:Nnn \str_case:onn { \str_case:onF } { 2015-07-14 } \__kernel_deprecation_error:Nnn \str_case_x:nnn - { \str_case_x:nnF } { 2015-07-14 } + { \str_case_e:nnF } { 2015-07-14 } \__kernel_deprecation_error:Nnn \tl_case:cnn { \tl_case:cnF } { 2015-07-14 } \__kernel_deprecation_error:Nnn \tl_case:Nnn diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 0a797cade44..373507a4c79 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 Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-06-14}% +\def\ExplFileDate{2018-08-23}% \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 8c35b008653..6c3b94acfda 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 Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-06-14}% +\def\ExplFileDate{2018-08-23}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index dce81b3df6e..3247d6f568c 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -855,7 +855,7 @@ \tl_greplace_all:Nno \g__codedoc_base_name_tl { ~ } { \c_catcode_other_space_tl } \seq_get:NN #1 \l__codedoc_tmpa_tl - \str_if_eq_x:nnTF { \l__codedoc_tmpa_tl } { \scan_stop: } + \str_if_eq:VnTF \l__codedoc_tmpa_tl { \scan_stop: } { \seq_gclear:N \g__codedoc_variants_seq \__codedoc_names_typeset_auxii:x { \g__codedoc_base_name_tl } @@ -918,7 +918,7 @@ #1 { \l__codedoc_tmpa_tl - \str_if_eq_x:nnF { \l__codedoc_tmpb_tl } { \scan_stop: } + \str_if_eq:VnF \l__codedoc_tmpb_tl { \scan_stop: } { : \l__codedoc_tmpb_tl } \bool_if:NT \l__codedoc_macro_TF_bool { TF } } @@ -2065,7 +2065,7 @@ \tl_if_empty:nTF {#3} { { } { } { } } { - \str_if_eq_x:nnTF {#3} { TeX } + \str_if_eq:nnTF {#3} { TeX } { { TeX~and~LaTeX2e } { \string\TeX{}~and~\string\LaTeXe{} } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index dfb4dec6f0d..e4dc5a16b41 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -20,11 +20,11 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvidpfmx.def}{2018-06-14}{} + {l3dvidpfmx.def}{2018-08-23}{} {L3 Experimental driver: dvipdfmx} -\cs_new_eq:NN \__driver_literal_x:n \tex_special:D +\cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 - { \__driver_literal_x:n { \exp_not:n {#1} } } + { \__driver_literal:e { \exp_not:n {#1} } } \cs_generate_variant:Nn \__driver_literal:n { x } \cs_new_protected:Npn \driver_color_pickup:N #1 { } \AtBeginDocument diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index 7a13c44ddee..920c8628651 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -20,11 +20,11 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvips.def}{2018-06-14}{} + {l3dvips.def}{2018-08-23}{} {L3 Experimental driver: dvips} -\cs_new_eq:NN \__driver_literal_x:n \tex_special:D +\cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 - { \__driver_literal_x:n { \exp_not:n {#1} } } + { \__driver_literal:e { \exp_not:n {#1} } } \cs_generate_variant:Nn \__driver_literal:n { x } \cs_new_protected:Npn \driver_color_pickup:N #1 { } \AtBeginDocument diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def index d11ba6a2554..32d4f658f60 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def @@ -20,11 +20,11 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvisvgm.def}{2018-06-14}{} + {l3dvisvgm.def}{2018-08-23}{} {L3 Experimental driver: dvisvgm} -\cs_new_eq:NN \__driver_literal_x:n \tex_special:D +\cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 - { \__driver_literal_x:n { \exp_not:n {#1} } } + { \__driver_literal:e { \exp_not:n {#1} } } \cs_generate_variant:Nn \__driver_literal:n { x } \cs_new_protected:Npn \driver_color_pickup:N #1 { } \AtBeginDocument diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index f1ed2af34f8..be271f63788 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -20,11 +20,11 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3pdfmode.def}{2018-06-14}{} + {l3pdfmode.def}{2018-08-23}{} {L3 Experimental driver: PDF mode} -\cs_new_eq:NN \__driver_literal_x:n \tex_special:D +\cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 - { \__driver_literal_x:n { \exp_not:n {#1} } } + { \__driver_literal:e { \exp_not:n {#1} } } \cs_generate_variant:Nn \__driver_literal:n { x } \cs_new_protected:Npn \driver_color_pickup:N #1 { } \AtBeginDocument diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index f73a321a40f..afaabad8519 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -20,11 +20,11 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3xdvidpfmx.def}{2018-06-14}{} + {l3xdvidpfmx.def}{2018-08-23}{} {L3 Experimental driver: xdvipdfmx} -\cs_new_eq:NN \__driver_literal_x:n \tex_special:D +\cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 - { \__driver_literal_x:n { \exp_not:n {#1} } } + { \__driver_literal:e { \exp_not:n {#1} } } \cs_generate_variant:Nn \__driver_literal:n { x } \cs_new_protected:Npn \driver_color_pickup:N #1 { } \AtBeginDocument diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index f802661268a..aea02783a52 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3keys2e}{2018-05-12}{} +\ProvidesExplPackage{l3keys2e}{2018-08-23}{} {LaTeX2e option processing using LaTeX3 keys} \cs_generate_variant:Nn \clist_put_right:Nn { Nv } \cs_generate_variant:Nn \keys_if_exist:nnT { nx } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty index 694620c5ffd..cc364a280c1 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty @@ -33,7 +33,7 @@ \endinput } \RequirePackage{xparse} -\ProvidesExplPackage{xfp}{2018-05-12}{} +\ProvidesExplPackage{xfp}{2018-08-23}{} {L3 Floating point unit} \NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} } \NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty index c572992f6d8..3a5e7940987 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty @@ -34,7 +34,7 @@ \endinput } \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} -\ProvidesExplPackage{xfrac}{2018-05-12}{} +\ProvidesExplPackage{xfrac}{2018-08-23}{} {L3 Experimental split-level fractions} \keys_define:nn { xfrac } { diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index 6eda5ffc2e8..82ae71afa2c 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xparse}{2018-05-12}{} +\ProvidesExplPackage{xparse}{2018-08-23}{} {L3 Experimental document command parser} \tl_new:N \l__xparse_arg_spec_tl \tl_new:N \l__xparse_args_tl @@ -983,7 +983,7 @@ \tl_if_blank:oTF { \use_none:n ##1 } { \__xparse_add_arg:o { \use_none:n ##1 } } { - \str_if_eq_x:nnTF + \str_if_eq:eeTF { \exp_not:o { \use_none:n ##1 } } { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } } { \__xparse_add_arg:o { \use_ii:nn ##1 } } @@ -1393,7 +1393,7 @@ } } \cs_new_protected:Npn \__xparse_grab_v_token_if_char:NTF #1 - { \str_if_eq_x:nnTF { } { \str_tail:n {#1} } } + { \str_if_eq:eeTF { } { \str_tail:n {#1} } } \cs_new_protected:Npn \__xparse_add_arg:n #1 { \tl_put_right:Nn \l__xparse_args_tl { {#1} } @@ -1438,7 +1438,7 @@ \tl_if_blank:oTF { \use_none:nn #1#2 } { \__xparse_put_arg_expandable:ow { \use_none:nn #1#2 } } { - \str_if_eq_x:nnTF + \str_if_eq:eeTF { \exp_not:o { \use_none:nn #1#2 } } { { \exp_not:o { \use_iii:nnnn #1#2 \q_nil } } } { \__xparse_put_arg_expandable:ow { \use_iii:nnn #1#2 } } @@ -1479,7 +1479,7 @@ \tl_if_blank:oTF { \use_none:n #4 } { \__xparse_put_arg_expandable:ow { \use_none:n #4 } } { - \str_if_eq_x:nnTF + \str_if_eq:eeTF { \exp_not:o { \use_none:n #4 } } { { \exp_not:o { \use_ii:nnn #4 \q_nil } } } { \__xparse_put_arg_expandable:ow { \use_ii:nn #4 } } @@ -1796,7 +1796,7 @@ } \cs_new_protected:Npn \__xparse_cmd_if_xparse:NTF #1 { - \exp_args:Nf \str_case_x:nnTF + \exp_args:Nf \str_case_e:nnTF { \exp_args:Nf \tl_if_empty:nT { \token_get_arg_spec:N #1 } { diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index ee38ffd7f69..912ddd9a897 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xtemplate}{2018-05-12}{} +\ProvidesExplPackage{xtemplate}{2018-08-23}{} {L3 Experimental prototype document functions} \tl_const:Nn \c__xtemplate_code_root_tl { template~code~>~ } \tl_const:Nn \c__xtemplate_defaults_root_tl { template~defaults~>~ } -- cgit v1.2.3