From 6c87d764952f4d6eb0d273c68f6033a0b5536fdb Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 3 May 2019 22:30:06 +0000 Subject: l3 (3may19) git-svn-id: svn://tug.org/texlive/trunk@50972 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/latex/l3experimental/CHANGELOG.md | 10 +- .../texmf-dist/doc/latex/l3experimental/README.md | 2 +- .../l3experimental/l3benchmark/l3benchmark.pdf | Bin 313921 -> 313932 bytes .../doc/latex/l3experimental/l3cctab/l3cctab.pdf | Bin 330696 -> 330709 bytes .../doc/latex/l3experimental/l3color/l3color.pdf | Bin 349985 -> 349996 bytes .../latex/l3experimental/l3draw/l3draw-code.pdf | Bin 623326 -> 623726 bytes .../doc/latex/l3experimental/l3draw/l3draw.pdf | Bin 488513 -> 488743 bytes .../latex/l3experimental/l3str/l3str-convert.pdf | Bin 399666 -> 399678 bytes .../latex/l3experimental/l3str/l3str-format.pdf | Bin 344704 -> 344714 bytes .../l3experimental/l3sys-shell/l3sys-shell.pdf | Bin 311946 -> 311958 bytes .../doc/latex/l3experimental/xcoffins/xcoffins.pdf | Bin 373169 -> 373179 bytes .../doc/latex/l3experimental/xgalley/l3galley.pdf | Bin 386034 -> 386043 bytes .../doc/latex/l3experimental/xgalley/xgalley.pdf | Bin 285956 -> 285965 bytes Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md | 18 +- Master/texmf-dist/doc/latex/l3kernel/README.md | 2 +- Master/texmf-dist/doc/latex/l3kernel/expl3.pdf | Bin 586513 -> 586608 bytes .../texmf-dist/doc/latex/l3kernel/interface3.pdf | Bin 1532045 -> 1538839 bytes .../texmf-dist/doc/latex/l3kernel/interface3.tex | 2 +- .../texmf-dist/doc/latex/l3kernel/l3docstrip.pdf | Bin 263443 -> 263576 bytes .../texmf-dist/doc/latex/l3kernel/l3styleguide.pdf | Bin 280159 -> 280318 bytes .../texmf-dist/doc/latex/l3kernel/l3styleguide.tex | 2 +- .../doc/latex/l3kernel/l3syntax-changes.pdf | Bin 227880 -> 228036 bytes .../doc/latex/l3kernel/l3syntax-changes.tex | 2 +- .../doc/latex/l3kernel/l3term-glossary.pdf | Bin 186662 -> 186826 bytes .../doc/latex/l3kernel/l3term-glossary.tex | 2 +- Master/texmf-dist/doc/latex/l3kernel/source3.pdf | Bin 5763071 -> 5787070 bytes Master/texmf-dist/doc/latex/l3kernel/source3.tex | 2 +- .../texmf-dist/doc/latex/l3kernel/source3body.tex | 1 + .../texmf-dist/doc/latex/l3packages/CHANGELOG.md | 9 +- Master/texmf-dist/doc/latex/l3packages/README.md | 2 +- .../doc/latex/l3packages/l3keys2e/l3keys2e.pdf | Bin 327390 -> 327402 bytes Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf | Bin 310170 -> 310186 bytes .../doc/latex/l3packages/xfrac/xfrac.pdf | Bin 481586 -> 481597 bytes .../doc/latex/l3packages/xparse/xparse.pdf | Bin 501482 -> 501496 bytes .../doc/latex/l3packages/xtemplate/xtemplate.pdf | Bin 416681 -> 416697 bytes .../l3experimental/l3benchmark/l3benchmark.dtx | 4 +- .../latex/l3experimental/l3cctab/l3cctab.dtx | 4 +- .../latex/l3experimental/l3color/l3color.dtx | 4 +- .../latex/l3experimental/l3draw/l3draw-boxes.dtx | 2 +- .../latex/l3experimental/l3draw/l3draw-layers.dtx | 2 +- .../latex/l3experimental/l3draw/l3draw-paths.dtx | 24 +- .../latex/l3experimental/l3draw/l3draw-points.dtx | 2 +- .../latex/l3experimental/l3draw/l3draw-scopes.dtx | 2 +- .../l3experimental/l3draw/l3draw-softpath.dtx | 9 +- .../latex/l3experimental/l3draw/l3draw-state.dtx | 2 +- .../l3experimental/l3draw/l3draw-transforms.dtx | 2 +- .../source/latex/l3experimental/l3draw/l3draw.dtx | 16 +- .../latex/l3experimental/l3str/l3str-convert.dtx | 4 +- .../latex/l3experimental/l3str/l3str-format.dtx | 4 +- .../l3experimental/l3sys-shell/l3sys-shell.dtx | 4 +- .../latex/l3experimental/xcoffins/xcoffins.dtx | 4 +- .../latex/l3experimental/xgalley/l3galley.dtx | 4 +- .../latex/l3experimental/xgalley/xgalley.dtx | 4 +- Master/texmf-dist/source/latex/l3kernel/expl3.dtx | 8 +- Master/texmf-dist/source/latex/l3kernel/l3.ins | 1 + .../texmf-dist/source/latex/l3kernel/l3alloc.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3basics.dtx | 13 +- .../source/latex/l3kernel/l3bootstrap.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3box.dtx | 2 +- .../source/latex/l3kernel/l3candidates.dtx | 294 +-------------- .../texmf-dist/source/latex/l3kernel/l3clist.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3coffins.dtx | 4 +- .../source/latex/l3kernel/l3color-base.dtx | 2 +- .../source/latex/l3kernel/l3deprecation.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3doc.dtx | 4 +- .../source/latex/l3kernel/l3docstrip.dtx | 2 +- .../source/latex/l3kernel/l3drivers-basics.dtx | 16 +- .../source/latex/l3kernel/l3drivers-box.dtx | 2 +- .../source/latex/l3kernel/l3drivers-color.dtx | 2 +- .../source/latex/l3kernel/l3drivers-draw.dtx | 2 +- .../source/latex/l3kernel/l3drivers-image.dtx | 2 +- .../source/latex/l3kernel/l3drivers-pdf.dtx | 401 ++++++++++++++++++--- .../texmf-dist/source/latex/l3kernel/l3drivers.dtx | 81 ++++- .../texmf-dist/source/latex/l3kernel/l3expan.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3file.dtx | 202 ++++++++++- .../texmf-dist/source/latex/l3kernel/l3final.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3flag.dtx | 2 +- .../source/latex/l3kernel/l3fp-assign.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-aux.dtx | 2 +- .../source/latex/l3kernel/l3fp-basics.dtx | 2 +- .../source/latex/l3kernel/l3fp-convert.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3fp-expo.dtx | 2 +- .../source/latex/l3kernel/l3fp-extended.dtx | 2 +- .../source/latex/l3kernel/l3fp-logic.dtx | 2 +- .../source/latex/l3kernel/l3fp-parse.dtx | 2 +- .../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 | 4 +- .../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 | 2 +- Master/texmf-dist/source/latex/l3kernel/l3keys.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3legacy.dtx | 100 +++++ .../texmf-dist/source/latex/l3kernel/l3luatex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3msg.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3names.dtx | 8 +- Master/texmf-dist/source/latex/l3kernel/l3prg.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3prop.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3quark.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3regex.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3seq.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3skip.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sort.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3str.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3sys.dtx | 2 +- .../source/latex/l3kernel/l3tl-analysis.dtx | 2 +- Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | 2 +- .../texmf-dist/source/latex/l3kernel/l3token.dtx | 93 ++++- .../texmf-dist/source/latex/l3kernel/l3unicode.dtx | 2 +- .../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 | 13 +- .../latex/l3packages/xtemplate/xtemplate.dtx | 4 +- .../l3experimental/l3benchmark/l3benchmark.sty | 2 +- .../tex/latex/l3experimental/l3cctab/l3cctab.sty | 2 +- .../tex/latex/l3experimental/l3color/l3color.sty | 2 +- .../tex/latex/l3experimental/l3draw/l3draw.sty | 26 +- .../latex/l3experimental/l3str/l3str-convert.sty | 2 +- .../latex/l3experimental/l3str/l3str-format.sty | 2 +- .../l3experimental/l3sys-shell/l3sys-shell.sty | 2 +- .../tex/latex/l3experimental/xcoffins/xcoffins.sty | 2 +- .../tex/latex/l3experimental/xgalley/l3galley.sty | 2 +- .../tex/latex/l3experimental/xgalley/xgalley.sty | 2 +- .../texmf-dist/tex/latex/l3kernel/expl3-code.tex | 275 +++++++------- .../tex/latex/l3kernel/expl3-generic.tex | 2 +- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 2 +- .../texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def | 60 ++- Master/texmf-dist/tex/latex/l3kernel/l3dvips.def | 174 +++++++-- Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def | 3 + Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def | 57 ++- .../texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def | 60 ++- .../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 | 5 +- .../tex/latex/l3packages/xtemplate/xtemplate.sty | 2 +- 140 files changed, 1514 insertions(+), 675 deletions(-) create mode 100644 Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx diff --git a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md index 168643eee1a..f961c359d40 100644 --- a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md @@ -7,12 +7,17 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2019-05-03] + +## Fixed + +- Cliping of paths by `l3draw` + ## [2019-03-05] ### Added - Support for drawing layers -- `\draw_point:nn` to allow 'fast' processing of co-ordinates ### Changed @@ -70,7 +75,8 @@ this project uses date-based 'snapshot' version identifiers. - 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/2019-03-05...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-03...HEAD +[2019-05-03]: https://github.com/latex3/latex3/compare/2019-03-05...2019-05-03 [2019-03-05]: https://github.com/latex3/latex3/compare/2019-01-28...2019-03-05 [2019-01-28]: https://github.com/latex3/latex3/compare/2018-10-31...2019-01-28 [2018-10-31]: https://github.com/latex3/latex3/compare/2018-10-26...2018-10-31 diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md index e5b86506c75..0bdc66ae89b 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 2019-03-05 +Release 2019-05-03 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf index 618a69a93b8..5d0b98fe323 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf and b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf index 0866b9db92a..153c3507cd1 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf and b/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf index 2c48b63fdb6..b4c817ad1d1 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 7fa3ee40bff..4cb96ed35cc 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 3aa8e4838b5..34b26ec63b3 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 c7dc15dd8c7..562388df288 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 d06cda22524..9115fb08b05 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 index 73ad6974df1..a0af1966a00 100644 Binary files a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf 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 3735452bdc3..c30c6aa10e5 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 f9e67ae2dc1..8408ef4f24d 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 7d3827449aa..0e590b82b1b 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 5efd87df0dc..06c0eee2042 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md @@ -7,6 +7,21 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2019-05-03] + +### Added + +- New `l3legacy` module containing + - `\legacy_if:n(TF)` + +### Changed + +- Moved `\file_get_mdfive_hash:nN(TF)`, `\file_get_size:nN(TF)` + and `\file_get_timestamp:nN(TF)` to stable +- Moved `\file_if_exist_input:n` and `\file_if_exist_input:nF` to stable +- Moved `\file_input_stop:` to stable +- Moved `\peek_N_type:TF` to stable + ## [2019-04-21] ### Added @@ -357,7 +372,8 @@ this project uses date-based 'snapshot' version identifiers. - Step func­tions have been added for dim vari­ables, e.g. `\dim_step_in­line:nnnn` -[Unreleased]: https://github.com/latex3/latex3/compare/2019-04-21...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-03...HEAD +[2019-05-03]: https://github.com/latex3/latex3/compare/2019-04-21...2019-05-03 [2019-04-21]: https://github.com/latex3/latex3/compare/2019-04-06...2019-04-21 [2019-04-06]: https://github.com/latex3/latex3/compare/2019-03-26...2019-04-06 [2019-03-26]: https://github.com/latex3/latex3/compare/2019-03-05...2019-03-26 diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md index d0ea5bd3ceb..0d3a8930048 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/README.md +++ b/Master/texmf-dist/doc/latex/l3kernel/README.md @@ -1,7 +1,7 @@ LaTeX3 Programming Conventions ============================== -Release 2019-04-21 +Release 2019-05-03 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf index 4b9b2f1c853..d1b08c65de7 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 ac810baa529..a98628e2b75 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 fa126268a06..b3b793ba4b5 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex @@ -54,7 +54,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2019-04-21} +\date{Released 2019-05-03} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf index 131e29d9bb0..c0c093aa509 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/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf index b0392fc1bf6..06f62711316 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 630bcb65881..3f0a7e44766 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2019-04-21} +\date{Released 2019-05-03} \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 c7a285f7c62..89e37f7c931 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 805f81a188a..2bb3cb02cd1 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2019-04-21} +\date{Released 2019-05-03} \newcommand{\TF}{\textit{(TF)}} diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf index 89cfd7eb967..b8f8f0ec35f 100644 Binary files a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf and b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf differ diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex index 5d7a80eb95d..7e7e55bfe38 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex @@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN. {latex-team@latex-project.org}% }% } -\date{Released 2019-04-21} +\date{Released 2019-05-03} \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 9bed9bc6374..1cde67a06df 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 0d1e8db2d90..0c25ccf5fbd 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex @@ -53,7 +53,7 @@ for those people who are interested. {latex-team@latex-project.org}% }% } -\date{Released 2019-04-21} +\date{Released 2019-05-03} \pagenumbering{roman} \maketitle diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex index 1efbed70800..cd0f7aaee18 100644 --- a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex +++ b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex @@ -481,6 +481,7 @@ used on top of \LaTeXe{} if \cs{outer} tokens are used in the arguments. \DocInput{l3color-base.dtx} \DocInput{l3luatex.dtx} \DocInput{l3unicode.dtx} +\DocInput{l3legacy.dtx} \DocInput{l3candidates.dtx} \DocInput{l3drivers.dtx} \ExplSyntaxOn diff --git a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md index 3f080a857b7..994b4dc2b48 100644 --- a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md +++ b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md @@ -7,6 +7,12 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2019-05-03] + +### Added + +- `xparse`: Support for `trace` package + ## [2019-03-05] ### Added @@ -40,7 +46,8 @@ this project uses date-based 'snapshot' version identifiers. - Switch to ISO date format - Improve cross-module use of internal functions -[Unreleased]: https://github.com/latex3/latex3/compare/2019-03-05...HEAD +[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-03...HEAD +[2019-05-03]: https://github.com/latex3/latex3/compare/2019-03-05...2019-05-03 [2019-03-05]: https://github.com/latex3/latex3/compare/2019-09-24...2019-03-05 [2018-09-24]: https://github.com/latex3/latex3/compare/2018-08-23...2018-09-24 [2018-08-23]: https://github.com/latex3/latex3/compare/2018-05-12...2018-08-23 diff --git a/Master/texmf-dist/doc/latex/l3packages/README.md b/Master/texmf-dist/doc/latex/l3packages/README.md index 2b7b8a0209d..690261aedba 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 2019-03-05 +Release 2019-05-03 Overview -------- diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf index d7c6e13c566..93919c63e45 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 a4135973c87..5c08ea6300a 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 f4a263f5351..b770b367a46 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 bf43832ce92..c84f2aeb7d0 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 e116a461c36..d69232e2518 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/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx index 5fa12ee7915..1bb701c02ee 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -128,7 +128,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3benchmark}{2019-03-05}{} +\ProvidesExplPackage{l3benchmark}{2019-05-03}{} {L3 Experimental benchmarking} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx index adff2c4ead3..70952138e5e 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -150,7 +150,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3cctab}{2019-03-05}{} +\ProvidesExplPackage{l3cctab}{2019-05-03}{} {L3 Experimental category code tables} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx index 3f4e1c3f1a7..92ca58363a2 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -265,7 +265,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3color}{2019-03-05}{} +\ProvidesExplPackage{l3color}{2019-05-03}{} {L3 Experimental color support} % % \end{macrocode} 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 7f23d1f4ab4..0859e7a2f9d 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx index c59359fd02e..7d5ae3948d6 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \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 3cded354fe2..874d1910d09 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -880,7 +880,7 @@ { \bool_set_true:c { l_@@_path_use_ ##1 _ bool } } { \cs_if_exist_use:cF { @@_path_use_action_ ##1 : } - { \ERROR } + { \msg_error:nnn { draw } { invalid-path-action } {##1} } } } \@@_softpath_round_corners: @@ -888,11 +888,15 @@ { \l_draw_bb_update_bool } { \l_@@_path_use_stroke_bool } { \@@_path_use_stroke_bb: } - \bool_if:NTF \l_@@_path_use_clear_bool - { \@@_softpath_use_clear: } - { \@@_softpath_use: } + \@@_softpath_use: \bool_if:NT \l_@@_path_use_clip_bool - { \driver_draw_clip: } + { + \driver_draw_clip: + \bool_lazy_or:nnF + { \l_@@_path_use_fill_bool } + { \l_@@_path_use_stroke_bool } + { \driver_draw_discardpath: } + } \bool_lazy_or:nnT { \l_@@_path_use_fill_bool } { \l_@@_path_use_stroke_bool } @@ -905,6 +909,8 @@ : } } + \bool_if:NT \l_@@_path_use_clear_bool + { \@@_softpath_clear: } } \cs_new_protected:Npn \@@_path_use_action_draw: { @@ -1016,6 +1022,12 @@ % \end{macrocode} % \end{macro} % +% \begin{macrocode} +\msg_new:nnnn { draw } { invalid-path-action } + { Invalid~action~'#1'~for~path. } + { Paths~can~be~used~with~actions~'draw',~'clip',~'fill'~or~'stroke'. } +% \end{macrocode} +% % \begin{macrocode} % % \end{macrocode} 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 f8d729ca030..bda4d40370a 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \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 5f28fc920d9..d360a1ccba5 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \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 ef5f38d68c8..13d77d0fdc9 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -105,7 +105,7 @@ % \end{macro} % % \begin{macro} -% {\@@_softpath_use:, \@@_softpath_clear:, \@@_softpath_use_clear:} +% {\@@_softpath_use:, \@@_softpath_clear:} % Using and clearing is trivial. % \begin{macrocode} \cs_new_protected:Npn \@@_softpath_use: @@ -118,11 +118,6 @@ \tl_build_gclear:N \g_@@_softpath_main_tl \bool_gset_false:N \g_@@_softpath_corners_bool } -\cs_new_protected:Npn \@@_softpath_use_clear: - { - \@@_softpath_use: - \@@_softpath_clear: - } % \end{macrocode} % \end{macro} % 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 0e51979e19c..2cf0bf5d500 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \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 226d626030e..e8393ec9ee2 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx index 73ed6390dcd..b4a3ed383bd 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx @@ -27,7 +27,6 @@ % %<*driver> \documentclass[full]{l3doc} -\usepackage[utf8]{inputenc} \usepackage{l3draw} % For creating code demonstrations % This needs access to some code-level interfaces in listings @@ -111,7 +110,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -609,13 +608,16 @@ % Inserts the current path, carrying out one ore more possible \meta{actions} % (a comma list): % \begin{itemize} -% \item \texttt{clear} Resets the path to empty -% \item \texttt{clip} Clips any content outside of the path -% \item \texttt{draw} +% \item \texttt{stroke} Draws a line along the current path +% \item \texttt{draw} A synonym for \texttt{stroke} % \item \texttt{fill} Fills the interior of the path with the current % file color -% \item \texttt{stroke} Draws a line along the current path +% \item \texttt{clip} Clips any content outside of the path % \end{itemize} +% Actions are applied in the order given irrespective of the input order. +% Note that whilst it is possible to use a path without clearing it, the +% normal use case would be to clear the path (this resets data structures +% at the macro level). % \end{function} % % \subsubsection{Path operations on drawing axes} @@ -1143,7 +1145,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3draw}{2019-03-05}{} +\ProvidesExplPackage{l3draw}{2019-05-03}{} {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 240db74607d..33c7b8fa7a5 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 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -234,7 +234,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3str-convert}{2019-03-05}{} +\ProvidesExplPackage{l3str-convert}{2019-05-03}{} {L3 Experimental string encoding conversions} % \end{macrocode} % 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 a6a7646cd4e..afb473ccfb9 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -48,7 +48,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -164,7 +164,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3str-format}{2019-03-05}{} +\ProvidesExplPackage{l3str-format}{2019-05-03}{} {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 index 9cedffc79a9..173abde66b4 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -136,7 +136,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3sys-shell}{2019-03-05}{} +\ProvidesExplPackage{l3sys-shell}{2019-05-03}{} {L3 Experimental system shell functions} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx index f38466a5d51..803b8188769 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx @@ -56,7 +56,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -675,7 +675,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xcoffins}{2019-03-05}{} +\ProvidesExplPackage{xcoffins}{2019-05-03}{} {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 7e5f9c806b6..04ec76c9270 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -687,7 +687,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3galley}{2019-03-05}{} +\ProvidesExplPackage{l3galley}{2019-05-03}{} {L3 Experimental galley code} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx index 21c9700de59..556a51a9511 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -734,7 +734,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xgalley}{2019-03-05}{} +\ProvidesExplPackage{xgalley}{2019-05-03}{} {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 09996096f79..ea95adf4ba1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -23,7 +23,7 @@ % for those people who are interested. % %<*driver|generic|package> -\def\ExplFileDate{2019-04-21}% +\def\ExplFileDate{2019-05-03}% % %<*driver> \documentclass[full]{l3doc} @@ -51,7 +51,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -1025,9 +1025,10 @@ % \item Johannes Braams % \item David Carlisle % \item Robin Fairbairns +% \item Ulrike Fischer +% \item Enrico Gregorio % \item Morten H{\o}gholm % \item Bruno Le Floch -% \item Thomas Lotze % \item Frank Mittelbach % \item Will Robertson % \item Chris Rowley @@ -1039,6 +1040,7 @@ % \item Michael Downes % \item Denys Duchier % \item Alan Jeffrey +% \item Thomas Lotze % \item Martin Schr{\"o}der % \end{itemize} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins index 2451257ac01..ed2d726b1fb 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins @@ -104,6 +104,7 @@ and all files in that bundle must be distributed together. \from{l3luatex.dtx} {package,tex} \from{l3unicode.dtx} {package} \from{l3candidates.dtx} {package} + \from{l3legacy.dtx} {package} \from{l3deprecation.dtx}{package} } } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx index f47082f4cf9..c4f03c70e33 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx index b78dbe8c6fd..61eb639ae27 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -914,6 +914,9 @@ % abc { def } % \end{verbatim} % \emph{i.e.} only the outer braces are removed. +% \begin{texnote} +% The \cs{use:n} function is equivalent to \LaTeXe{}'s \tn{@firstofone}. +% \end{texnote} % \end{function} % % \begin{function}[EXP]{\use_i:nn, \use_ii:nn} @@ -929,6 +932,10 @@ % of these tokens is also fixed (if it has not already been by % some other absorption). A single expansion is needed for the % functions to take effect. +% \begin{texnote} +% These are equivalent to \LaTeXe{}'s \tn{@firstoftwo} and +% \tn{@secondoftwo}. +% \end{texnote} % \end{function} % % \begin{function}[EXP]{\use_i:nnn, \use_ii:nnn, \use_iii:nnn} @@ -1003,6 +1010,10 @@ % These functions work after a single expansion. One or more of the % \texttt{n} arguments may be an unbraced single token % (\emph{i.e.}~an \texttt{N} argument). +% \begin{texnote} +% These are equivalent to \LaTeXe{}'s \tn{@gobble}, \tn{@gobbbletwo}, +% \emph{etc.} +% \end{texnote} % \end{function} % % \begin{function}[EXP, added = 2018-06-18]{\use:e} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx index 09d82e7623a..50a93c97455 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx index e8263234e22..f5537eb1277 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index f39ec112729..39a6dd5623a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -299,83 +299,6 @@ % % \section{Additions to \pkg{l3file}} % -% \begin{function}[noTF, added = 2017-07-11, updated = 2019-02-16] -% {\file_get_mdfive_hash:nN} -% \begin{syntax} -% \cs{file_get_mdfive_hash:nN} \Arg{file name} \meta{tl var} -% \end{syntax} -% Searches for \meta{file name} using the current \TeX{} search -% path and the additional paths controlled by \cs{file_path_include:n}. -% If found, sets the \meta{str var} to the MD5 sum generated from the -% content of the file. The file is read as bytes, which means that in -% contrast to most \TeX{} behaviour there will be a difference in result -% depending on the line endings used in text files. The same file will -% produce the same result between different engines: the algorithm used -% is the same in all cases. -% Where the file is not found, the \meta{str var} will be empty. -% \end{function} -% -% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] -% {\file_get_size:nN} -% \begin{syntax} -% \cs{file_get_size:nN} \Arg{file name} \meta{tl var} -% \end{syntax} -% Searches for \meta{file name} using the current \TeX{} search -% path and the additional paths controlled by \cs{file_path_include:n}. -% 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. -% This is not available in older versions of \XeTeX{}. -% \end{function} -% -% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] -% {\file_get_timestamp:nN} -% \begin{syntax} -% \cs{file_get_timestamp:nN} \Arg{file name} \meta{tl var} -% \end{syntax} -% Searches for \meta{file name} using the current \TeX{} search -% path and the additional paths controlled by \cs{file_path_include:n}. -% If found, sets the \meta{str var} to the modification timestamp of -% the file in the form |D:|\meta{year}\meta{month}\meta{day}\meta{hour}^^A -% \meta{minute}\meta{second}\meta{offset}, where the latter may be |Z| -% (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|. -% Where the file is not found, the \meta{str var} will be empty. -% This is not available in older versions of \XeTeX{}. -% \end{function} -% -% \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF} -% \begin{syntax} -% \cs{file_if_exist_input:n} \Arg{file name} -% \cs{file_if_exist_input:nF} \Arg{file name} \Arg{false code} -% \end{syntax} -% Searches for \meta{file name} using the current \TeX{} search -% path and the additional paths controlled by -% \cs{file_path_include:n}. If found then -% reads in the file as additional \LaTeX{} source as described for -% \cs{file_input:n}, otherwise inserts the \meta{false code}. -% Note that these functions do not raise -% an error if the file is not found, in contrast to \cs{file_input:n}. -% \end{function} -% -% \begin{function}[added = 2017-07-07]{\file_input_stop:} -% \begin{syntax} -% \cs{file_input_stop:} -% \end{syntax} -% Ends the reading of a file started by \cs{file_input:n} or similar before -% the end of the file is reached. Where the file reading is being terminated -% due to an error, \cs{msg_critical:nn(nn)} should be preferred. -% \begin{texnote} -% This function must be used on a line on its own: \TeX{} reads files -% line-by-line and so any additional tokens in the \enquote{current} line -% will still be read. -% -% This is also true if the function is hidden inside another function -% (which will be the normal case), i.e., all tokens on the same line -% in the source file are still processed. Putting it on a line by itself -% in the definition doesn't help as it is the line where it is used that -% counts! -% \end{texnote} -% \end{function} -% % \begin{function}[added = 2019-01-13]{\ior_map_variable:NNn} % \begin{syntax} % \cs{ior_map_variable:NNn} \meta{stream} \meta{tl~var} \Arg{code} @@ -1324,26 +1247,6 @@ % and |#3| and |#4| empty. % \end{function} % -% \begin{function}[TF, updated = 2012-12-20]{\peek_N_type:} -% \begin{syntax} -% \cs{peek_N_type:TF} \Arg{true code} \Arg{false code} -% \end{syntax} -% Tests if the next \meta{token} in the input stream can be safely -% grabbed as an \texttt{N}-type argument. The test is \meta{false} -% if the next \meta{token} is either an explicit or implicit -% begin-group or end-group token (with any character code), or -% an explicit or implicit space character (with character code $32$ -% and category code $10$), or an outer token (never used in \LaTeX3) -% and \meta{true} in all other cases. -% Note that a \meta{true} result ensures that the next \meta{token} is -% a valid \texttt{N}-type argument. However, if the next \meta{token} -% is for instance \cs{c_space_token}, the test takes the -% \meta{false} branch, even though the next \meta{token} is in fact -% a valid \texttt{N}-type argument. The \meta{token} is left -% in the input stream after the \meta{true code} or \meta{false code} -% (as appropriate to the result of the test). -% \end{function} -% % \begin{function}[added = 2018-09-23] % { % \peek_catcode_collect_inline:Nn, @@ -1595,130 +1498,6 @@ % \end{macrocode} % \end{macro} % -% \subsection{Additions to \pkg{l3file}} -% -% \begin{macrocode} -%<@@=file> -% \end{macrocode} -% -% \begin{macro} -% {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN} -% \begin{macro}{\@@_get_details:nnN} -% These are all wrappers around the \pdfTeX{} primitives doing the same -% jobs: as we want consistent file paths to be found, they are all set up -% using \cs{file_get_full_name:nN} and so are non-expandable \texttt{get} -% functions. Much of the code is repetitive but we need to branch for -% \LuaTeX{} (emulation in Lua), for the slightly different syntax -% needed for \tn{tex_mdfivesum:D} and for the fact that primitive -% coverage varies in other engines. -% \begin{macrocode} -\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2 - { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } -\cs_new_protected:Npn \file_get_size:nN #1#2 - { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } -\cs_new_protected:Npn \file_get_timestamp:nN #1#2 - { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } -\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF } - { \@@_get_details:nnN {#1} { mdfivesum } {#2} } -\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF } - { \@@_get_details:nnN {#1} { size } {#2} } -\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF } - { \@@_get_details:nnN {#1} { moddate } {#2} } -\cs_new_protected:Npn \@@_get_details:nnN #1#2#3 - { - \file_get_full_name:nNTF {#1} \l_@@_full_name_tl - { - \tl_set:Nx #3 - { - \use:c { tex_file #2 :D } \exp_after:wN - { \l_@@_full_name_tl } - } - \prg_return_true: - } - { \prg_return_false: } - } -\sys_if_engine_luatex:TF - { - \cs_set_protected:Npn \@@_get_details:nnN #1#2#3 - { - \file_get_full_name:nNTF {#1} \l_@@_full_name_tl - { - \tl_set:Nx #3 - { - \lua_now:e - { - l3kernel.file#2 - ( " \lua_escape:e { \l_@@_full_name_tl } " ) - } - } - \prg_return_true: - } - { \prg_return_false: } - } - } - { - \prg_set_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 - { T , F , TF } - { - \file_get_full_name:nNTF {#1} \l_@@_full_name_tl - { - \tl_set:Nx #2 - { - \tex_mdfivesum:D file \exp_after:wN - { \l_@@_full_name_tl } - } - \prg_return_true: - } - { \prg_return_false: } - } - \cs_if_exist:NF \tex_filesize:D - { - \cs_set_protected:Npn \@@_get_details:nnN #1#2#3 - { - \tl_clear:N #3 - \__kernel_msg_error:nnx - { kernel } { primitive-not-available } - { \exp_not:c { (pdf)file #2 } } - \prg_return_false: - } - } - } -\__kernel_msg_new:nnnn { kernel } { primitive-not-available } - { Primitive~\token_to_str:N #1 not~available } - { - The~version~of~XeTeX~in~use~does~not~provide~functionality~equivalent~to~ - the~\token_to_str:N #1 primitive. - } -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\file_if_exist_input:n, \file_if_exist_input:nF} -% Input of a file with a test for existence. We do not define the |T| -% or |TF| variants because the most useful place to place the -% \meta{true code} would be inconsistent with other conditionals. -% \begin{macrocode} -\cs_new_protected:Npn \file_if_exist_input:n #1 - { - \file_get_full_name:nNT {#1} \l_@@_full_name_tl - { \@@_input:V \l_@@_full_name_tl } - } -\cs_new_protected:Npn \file_if_exist_input:nF #1#2 - { - \file_get_full_name:nNTF {#1} \l_@@_full_name_tl - { \@@_input:V \l_@@_full_name_tl } - {#2} - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\file_input_stop:} -% A simple rename. -% \begin{macrocode} -\cs_new_protected:Npn \file_input_stop: { \tex_endinput:D } -% \end{macrocode} -% \end{macro} -% % \subsection{Additions to \pkg{l3flag}} % % \begin{macrocode} @@ -4331,77 +4110,6 @@ %<@@=peek> % \end{macrocode} % -% \begin{macro}[TF]{\peek_N_type:} -% \begin{macro} -% {\@@_execute_branches_N_type:, \@@_N_type:w, \@@_N_type_aux:nnw} -% All tokens are \texttt{N}-type tokens, except in four cases: -% begin-group tokens, end-group tokens, space tokens with character -% code~$32$, and outer tokens. Since \cs{l_peek_token} might be -% outer, we cannot use the convenient \cs{bool_if:nTF} function, and -% must resort to the old trick of using \tn{ifodd} to expand a set of -% tests. The \texttt{false} branch of this test is taken if the token -% is one of the first three kinds of non-\texttt{N}-type tokens -% (explicit or implicit), thus we call \cs{@@_false:w}. In the -% \texttt{true} branch, we must detect outer tokens, without impacting -% performance too much for non-outer tokens. The first filter is to -% search for \texttt{outer} in the \tn{meaning} of \cs{l_peek_token}. -% If that is absent, \cs{use_none_delimit_by_q_stop:w} cleans up, and -% we call \cs{@@_true:w}. Otherwise, the token can be a non-outer -% macro or a primitive mark whose parameter or replacement text -% contains \texttt{outer}, it can be the primitive \tn{outer}, or it -% can be an outer token. Macros and marks would have \texttt{ma} in -% the part before the first occurrence of \texttt{outer}; the meaning -% of \tn{outer} has nothing after \texttt{outer}, contrarily to outer -% macros; and that covers all cases, calling \cs{@@_true:w} or -% \cs{@@_false:w} as appropriate. Here, there is no \meta{search -% token}, so we feed a dummy \cs{scan_stop:} to the -% \cs{@@_token_generic:NNTF} function. -% \begin{macrocode} -\group_begin: - \cs_set_protected:Npn \@@_tmp:w #1 \q_stop - { - \cs_new_protected:Npn \@@_execute_branches_N_type: - { - \if_int_odd:w - \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi: - \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi: - \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi: - 1 \exp_stop_f: - \exp_after:wN \@@_N_type:w - \token_to_meaning:N \l_peek_token - \q_mark \@@_N_type_aux:nnw - #1 \q_mark \use_none_delimit_by_q_stop:w - \q_stop - \exp_after:wN \@@_true:w - \else: - \exp_after:wN \@@_false:w - \fi: - } - \cs_new_protected:Npn \@@_N_type:w ##1 #1 ##2 \q_mark ##3 - { ##3 {##1} {##2} } - } - \exp_after:wN \@@_tmp:w \tl_to_str:n { outer } \q_stop -\group_end: -\cs_new_protected:Npn \@@_N_type_aux:nnw #1 #2 #3 \fi: - { - \fi: - \tl_if_in:noTF {#1} { \tl_to_str:n {ma} } - { \@@_true:w } - { \tl_if_empty:nTF {#2} { \@@_true:w } { \@@_false:w } } - } -\cs_new_protected:Npn \peek_N_type:TF - { - \@@_token_generic:NNTF - \@@_execute_branches_N_type: \scan_stop: - } -\cs_new_protected:Npn \peek_N_type:T - { \@@_token_generic:NNT \@@_execute_branches_N_type: \scan_stop: } -\cs_new_protected:Npn \peek_N_type:F - { \@@_token_generic:NNF \@@_execute_branches_N_type: \scan_stop: } -% \end{macrocode} -% \end{macro} -% \end{macro} -% % \begin{variable}{\l_@@_collect_tl} % \begin{macrocode} \tl_new:N \l_@@_collect_tl diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index d791282d867..9bee4a03f08 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx index f17be5ff627..c894678366b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -78,7 +78,7 @@ % \begin{function}[added = 2011-08-17, updated = 2019-01-21] % { % \coffin_set_eq:NN, \coffin_set_eq:Nc, -% \coffin_set_eq:cN, \coffin_set_eq:cc +% \coffin_set_eq:cN, \coffin_set_eq:cc, % \coffin_gset_eq:NN, \coffin_gset_eq:Nc, % \coffin_gset_eq:cN, \coffin_gset_eq:cc % } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx index c958a571e2f..07fd56ad92a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx index 08b49ce5eb0..9256691d5d4 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index 65080b66f0a..181d11b2fdf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -79,7 +79,7 @@ and all files in that bundle must be distributed together. % % \title{The \cls{l3doc} class} % \author{\Team} -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % \maketitle % \tableofcontents % @@ -432,7 +432,7 @@ and all files in that bundle must be distributed together. % necessary to highlight it as much and you also don't need to check it % for, say, having a test function and having a documentation chunk % earlier in a \env{function} environment. \pkg{l3doc} will pick up these -% cases form the presence of |__| in the name, or you may force marking +% cases from the presence of |__| in the name, or you may force marking % as internal by using |\begin{macro}[int]| to mark it as such. The margin % call-out is then printed in grey for such cases. % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index a16a7db57c7..0df3d7d43b6 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx index 382e2d735f9..efdcadba25a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -148,9 +148,21 @@ % % \begin{macro}{\@@_postscript_header:n} % PostScript for the header: a small saving but makes the code clearer. +% This is held until the start of shipout such that a document with no +% actual output does not write anything. % \begin{macrocode} -\cs_new_protected:Npn \@@_postscript_header:n #1 +\cs_new_protected:Npx \@@_postscript_header:n #1 +%<*initex> { \@@_literal:n { ! #1 } } +% +%<*package> + { + \cs_if_exist:NTF \AtBeginDvi + { \exp_not:N \AtBeginDvi } + { \use:n } + { \@@_literal:n { ! #1 } } + } +% % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx index f9bd0afad7c..d7b70d120b2 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx index 0f17e011368..f3db989e459 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx index 6e6be61890b..00a8dd95a94 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx index ef2eea9f56d..6041b99fc84 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx index a1275e4f4fc..8a5ed3e49b9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -60,6 +60,12 @@ %<@@=driver> % \end{macrocode} % +% Setting up PDF resources is a complex area with only limited documentation +% in the engine manuals. The following code builds heavily on existing ideas +% from \pkg{hyperref} work by Sebastian Rahtz and Heiko Oberdiek, and +% significant contributions by Alexander Grahn, in addition to the specific +% code referenced a various points. +% % \subsection{Shared code} % % A very small number of items that belong at the driver level but which @@ -76,12 +82,39 @@ % \end{macrocode} % \end{variable} % +% \begin{variable}{\l_@@_pdf_tmp_box} +% For fitting destinations. +% \begin{macrocode} +\box_new:N \l_@@_pdf_tmp_box +% \end{macrocode} +% \end{variable} +% % \subsection{\texttt{dvips} driver} % % \begin{macrocode} %<*dvips> % \end{macrocode} % +% \begin{macro}{\@@_pdfmark:n, \@@_pdfmark:x} +% Used often enough it should be a separate function. +% \begin{macrocode} +\cs_new_protected:Npn \@@_pdfmark:n #1 + { \@@_postscript:n { mark #1 ~ pdfmark } } +\cs_generate_variant:Nn \@@_pdfmark:n { x } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Catalogue entries} +% +% \begin{macro}{\driver_pdf_catalog_gput:nn, \driver_pdf_info_gput:nn} +% \begin{macrocode} +\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 + { \@@_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } } +\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 + { \@@_pdfmark:n { /#1 ~ #2 /DOCINFO } } +% \end{macrocode} +% \end{macro} +% % \subsubsection{Objects} % % \begin{variable}{\g_@@_pdf_object_int, \g_@@_pdf_object_prop} @@ -100,12 +133,12 @@ { \int_gincr:N \g_@@_pdf_object_int \int_const:cn - { g_@@_pdf_object_ \tl_to_str:n {#1} _int } + { c_@@_pdf_object_ \tl_to_str:n {#1} _int } { \g_@@_pdf_object_int } \prop_gput:Nnn \g_@@_pdf_object_prop {#1} {#2} } \cs_new:Npn \driver_pdf_object_ref:n #1 - { { driver.obj \int_use:c { g_@@_pdf_object_ \tl_to_str:n {#1} _int } } } + { { driver.obj \int_use:c { c_@@_pdf_object_ \tl_to_str:n {#1} _int } } } % \end{macrocode} % \end{macro} % \end{macro} @@ -123,9 +156,9 @@ % \begin{macrocode} \cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { - \@@_postscript:x + \@@_pdfmark:x { - mark /_objdef ~ \driver_pdf_object_ref:n {#1} + /_objdef ~ \driver_pdf_object_ref:n {#1} /type \str_case_e:nn { \prop_item:Nn \g_@@_pdf_object_prop {#1} } @@ -135,7 +168,7 @@ { fstream } { /stream } { stream } { /stream } } - /OBJ ~ pdfmark + /OBJ } \use:c { @@_pdf_object_write_ \prop_item:Nn \g_@@_pdf_object_prop {#1} :nn } @@ -143,18 +176,18 @@ } \cs_new_protected:Npn \@@_pdf_object_write_array:nn #1#2 { - \@@_postscript:x + \@@_pdfmark:x { - mark ~ \driver_pdf_object_ref:n {#1} - [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL ~ pdfmark + \driver_pdf_object_ref:n {#1} + [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL } } \cs_new_protected:Npn \@@_pdf_object_write_dict:nn #1#2 { - \@@_postscript:x + \@@_pdfmark:x { - mark ~ \driver_pdf_object_ref:n {#1} - << \exp_not:n {#2} >> /PUT ~ pdfmark + \driver_pdf_object_ref:n {#1} + << \exp_not:n {#2} >> /PUT } } \cs_new_protected:Npn \@@_pdf_object_write_stream:nn #1#2 @@ -198,8 +231,9 @@ % \begin{macro} % { % driver.cvs , -% driver.rect.ht , -% driver.pt.dvi +% driver.dvi.pt , +% driver.pt.dvi , +% driver.rect.ht % } % Small utilities for PostScript manipulations. Conversion to DVI dimensions % is done here to allow for |Resolution|. The total height of a rectangle @@ -208,6 +242,7 @@ \@@_postscript_header:n { /driver.cvs { 65534 ~ string ~ cvs } def + /driver.dvi.pt { 72.27 ~ mul ~ Resolution ~ div } def /driver.pt.dvi { 72.27 ~ div ~ Resolution ~ mul } def /driver.rect.ht { dup ~ 1 ~ get ~ neg ~ exch ~ 3 ~ get ~ add } def } @@ -228,11 +263,15 @@ % % \begin{macro} % { -% driver.annotation.border , -% driver.annotation.ll , -% driver.annotation.ur , -% driver.link.ll , -% driver.link.ur , +% driver.rect , +% driver.save.ll , +% driver.save.ur , +% driver.save.linkll , +% driver.save.linkur , +% driver.llx , +% driver.lly , +% driver.urx , +% driver.ury % } % Functions for marking the limits of an annotation/link, plus drawing the % border. We separate links for generic annotations to support adding a @@ -240,23 +279,23 @@ % \begin{macrocode} \@@_postscript_header:n { - /driver.annotation.border + /driver.rect { /Rect [ driver.llx ~ driver.lly ~ driver.urx ~ driver.ury ] } def - /driver.annotation.ll + /driver.save.ll { currentpoint /driver.lly ~ exch ~ def /driver.llx ~ exch ~ def } def - /driver.annotation.ur + /driver.save.ur { currentpoint /driver.ury ~ exch ~ def /driver.urx ~ exch ~ def } def - /driver.link.ll + /driver.save.linkll { currentpoint ~ driver.linkmargin ~ add ~ @@ -266,7 +305,7 @@ /driver.llx ~ exch ~ def } def - /driver.link.ur + /driver.save.linkur { currentpoint ~ driver.linkmargin ~ sub ~ @@ -282,6 +321,68 @@ % % \begin{macro} % { +% driver.dest.anchor , +% driver.dest.x , +% driver.dest.y , +% driver.dest.point , +% driver.dest2device , +% driver.dev.x , +% driver.dev.y , +% driver.tmpa , +% driver.tmpb , +% driver.tmpc , +% driver.tmpd +% } +% For finding the anchor point of a destination link. We make the use case +% a separate function as it comes up a lot, and as this makes it easier to +% adjust if we need additional effects. We also need a more complex approach +% to convert a co-ordinate pair correctly when defining a rectangle: this +% can otherwise be out when using a landscape page. (Thanks to Alexander +% Grahn for the approach here.) +% \begin{macrocode} +\@@_postscript_header:n + { + /driver.dest.anchor + { + currentpoint ~ exch ~ + driver.dvi.pt ~ 72 ~ add ~ + /driver.dest.x ~ exch ~ def ~ + driver.dvi.pt ~ + vsize ~ 72 ~ sub ~ exch ~ sub ~ + /driver.dest.y ~ exch ~ def + } + def + /driver.dest.point + { driver.dest.x ~ driver.dest.y } def + /driver.dest2device + { + /driver.dest.y ~ exch ~ def + /driver.dest.x ~ exch ~ def ~ + matrix ~ currentmatrix ~ + matrix ~ defaultmatrix ~ + matrix ~ invertmatrix ~ + matrix ~ concatmatrix ~ + cvx ~ exec + /driver.dev.y ~ exch ~ def + /driver.dev.x ~ exch ~ def + /driver.tmpd ~ exch ~ def + /driver.tmpc ~ exch ~ def + /driver.tmpb ~ exch ~ def + /driver.tmpa ~ exch ~ def ~ + driver.dest.x ~ driver.tmpa ~ mul ~ + driver.dest.y ~ driver.tmpc ~ mul ~ add ~ + driver.dev.x ~ add ~ + driver.dest.x ~ driver.tmpb ~ mul ~ + driver.dest.y ~ driver.tmpd ~ mul ~ add ~ + driver.dev.y ~ add + } + def + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro} +% { % driver.bordertracking , % driver.bordertracking.begin , % driver.bordertracking.end , @@ -407,7 +508,7 @@ currentpoint ~ driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or { - driver.link.ll + driver.save.linkll /driver.lly ~ driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~ driver.bordertracking.begin @@ -428,7 +529,7 @@ currentpoint ~ driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or { - driver.link.ll + driver.save.linkll /driver.lly ~ driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~ driver.bordertracking.begin @@ -672,37 +773,36 @@ \@@_pdf_annotation:nnnn {#1} {#2} {#3} {#4} \int_gincr:N \g_@@_pdf_object_int \int_gset_eq:NN \g_@@_pdf_annotation_int \g_@@_pdf_object_int - \@@_postscript:x + \@@_pdfmark:x { - mark - /_objdef { driver.obj \int_use:N \g_@@_pdf_object_int } - driver.annotation.border ~ - #4 ~ - /ANN ~ pdfmark + + /_objdef { driver.obj \int_use:N \g_@@_pdf_object_int } + driver.rect ~ + #4 ~ + /ANN } } \cs_new_protected:Npn \@@_pdf_annotation:nnnn #1#2#3#4 { \box_move_down:nn {#3} - { \hbox:n { \@@_postscript:n { driver.annotation.ll } } } + { \hbox:n { \@@_postscript:n { driver.save.ll } } } \hbox:n {#4} \box_move_up:nn {#2} { \hbox:n { \tex_kern:D \dim_eval:n {#1} \scan_stop: - \@@_postscript:n { driver.annotation.ur } + \@@_postscript:n { driver.save.ur } } } \int_gincr:N \g_@@_pdf_object_int \int_gset_eq:NN \g_@@_pdf_annotation_int \g_@@_pdf_object_int - \@@_postscript:x + \@@_pdfmark:x { - mark - /_objdef { driver.obj \int_use:N \g_@@_pdf_object_int } - driver.annotation.border ~ - \c_@@_pdf_AR_fix_tl - /ANN ~ pdfmark + /_objdef { driver.obj \int_use:N \g_@@_pdf_object_int } + driver.rect ~ + \c_@@_pdf_AR_fix_tl + /ANN } } % \end{macrocode} @@ -852,20 +952,20 @@ % } \box_move_down:nn { \box_dp:N \l_@@_pdf_content_box } - { \hbox:n { \@@_postscript:n { driver.link.ll } } } + { \hbox:n { \@@_postscript:n { driver.save.linkll } } } \@@_postscript:n { driver.bordertracking.begin } \hbox_unpack:N \l_@@_pdf_content_box \@@_postscript:n { driver.bordertracking.end } \box_move_up:nn { \box_ht:N \l_@@_pdf_content_box } { \hbox:n - { \@@_postscript:n { driver.link.ur } } + { \@@_postscript:n { driver.save.linkur } } } \@@_postscript:x { mark \g_@@_pdf_link_dict_tl /Subtype /Link ~ - driver.annotation.border + driver.rect /ANN ~ driver.pdfmark } \@@_pdf_link_sf_restore: @@ -998,6 +1098,63 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\driver_pdf_destination:nn, \driver_pdf_destination_rectangle:nn} +% Here, we need to turn the zoom into a scale. We also need to know where +% the current anchor point actually is: worked out in PostScript. For the +% rectangle version, we have a bit more PostScript: we need two points. +% \begin{macrocode} +\cs_new_protected:Npn \driver_pdf_destination:nn #1#2 + { + \@@_postscript:n { driver.dest.anchor } + \@@_pdfmark:x + { + /View + [ + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ driver.dest.point ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH ~ driver.dest.y } + { fitbv } { /FitBV ~ driver.dest.x } + { fith } { /FitH ~ driver.dest.y } + { fitv } { /FitV ~ driver.dest.x } + } + { + /XYZ ~ driver.dest.point ~ \fp_eval:n { (#2) / 100 } + } + ] + /Dest ( \exp_not:n {#1} ) cvn + /DEST + } + } +\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2 + { + \group_begin: + \hbox_set:Nn \l_@@_pdf_tmp_box {#2} + \box_move_down:nn + { \box_dp:N \l_@@_pdf_tmp_box } + { \hbox:n { \@@_postscript:n { driver.save.ll } } } + \box_use:N \l_@@_pdf_tmp_box + \box_move_up:nn + { \box_ht:N \l_@@_pdf_tmp_box } + { \hbox:n { \@@_postscript:n { driver.save.ur } } } + \@@_pdfmark:n + { + /View + [ + /FitR ~ + driver.llx ~ driver.lly ~ driver.dest2device ~ + driver.urx ~ driver.ury ~ driver.dest2device + ] + /Dest ( #1 ) cvn + /DEST + } + \group_end: + } +% \end{macrocode} +% \end{macro} +% % \subsubsection{Structure} % % \begin{macro}{\driver_pdf_compresslevel:n} @@ -1142,6 +1299,70 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\driver_pdf_destination:nn, \driver_pdf_destination_rectangle:nn} +% A simple task: pass the data to the primitive. The |\scan_stop:| deals +% with the danger of an unterminated keyword. The zoom given here is a +% percentage, but we need to pass it as \emph{per mille}. The rectangle +% version is also easy as everything is build in. +% \begin{macrocode} +\cs_new_protected:Npx \driver_pdf_destination:nn #1#2 + { + \cs_if_exist:NTF \tex_pdfextension:D + { \exp_not:N \tex_pdfextension:D dest ~ } + { \exp_not:N \tex_pdfdest:D } + name {#1} + \exp_not:N \str_case:nnF {#2} + { + { xyz } { xyz } + { fit } { fit } + { fitb } { fitb } + { fitbh } { fitbh } + { fitbv } { fitbv } + { fith } { fith } + { fitv } { fitv } + } + { xyz ~ zoom \exp_not:N \fp_eval:n { #2 * 10 } } + \scan_stop: + } +\cs_new_protected:Npx \driver_pdf_destination_rectangle:nn #1#2 + { + \group_begin: + \hbox_set:Nn \l_@@_pdf_tmp_box {#2} + \cs_if_exist:NTF \tex_pdfextension:D + { \exp_not:N \tex_pdfextension:D dest ~ } + { \exp_not:N \tex_pdfdest:D } + name {#1} + fitr ~ + width \exp_not:N \box_wd:N \l_@@_pdf_tmp_box + height \exp_not:N \box_ht:N \l_@@_pdf_tmp_box + depth \exp_not:N \box_dp:N \l_@@_pdf_tmp_box + \box_use:N \l_@@_pdf_tmp_box + \group_end: + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Catalogue entries} +% +% \begin{macro}{\driver_pdf_catalog_gput:nn, \driver_pdf_info_gput:nn} +% \begin{macrocode} +\cs_new_protected:Npx \driver_pdf_catalog_gput:nn #1#2 + { + \cs_if_exist:NTF \tex_pdfextension:D + { \tex_pdfextension:D catalog } + { \tex_pdfcatalog:D } + { / #1 ~ #2 } + } +\cs_new_protected:Npx \driver_pdf_info_gput:nn #1#2 + { + \cs_if_exist:NTF \tex_pdfextension:D + { \tex_pdfextension:D info } + { \tex_pdfinfo:D } + { / #1 ~ #2 } + } +% \end{macrocode} +% \end{macro} +% % \subsubsection{Objects} % % \begin{variable}{\g_@@_pdf_object_prop} @@ -1163,7 +1384,7 @@ { #1 reserveobjnum ~ \int_const:cn - { g_@@_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int } + { c_@@_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int } {#2} \prop_gput:Nnn \exp_not:N \g_@@_pdf_object_prop {##1} {##2} } @@ -1172,12 +1393,12 @@ { \@@_tmp:w { \tex_pdfextension:D obj ~ } - { \tex_pdffeedback:D lastobj \scan_stop: } + { \exp_not:N \tex_pdffeedback:D lastobj \scan_stop: } } { \@@_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } } \group_end: \cs_new:Npn \driver_pdf_object_ref:n #1 - { \int_use:c { g_@@_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } + { \int_use:c { c_@@_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } % \end{macrocode} % \end{macro} % \end{macro} @@ -1194,7 +1415,7 @@ { \tex_immediate:D #1 useobjnum ~ \int_use:c - { g_@@_pdf_object_ \tl_to_str:n {##1} _int } + { c_@@_pdf_object_ \tl_to_str:n {##1} _int } \str_case_e:nn { \prop_item:Nn \g_@@_pdf_object_prop {##1} } { @@ -1333,6 +1554,17 @@ % \end{macrocode} % \end{macro} % +% \subsubsection{Catalogue entries} +% +% \begin{macro}{\driver_pdf_catalog_gput:nn, \driver_pdf_info_gput:nn} +% \begin{macrocode} +\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 + { \@@_pdf:n { put ~ @catalog << /#1 ~ #2 >> } } +\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 + { \@@_pdf:n { docinfo << /#1 ~ #2 >> } } +% \end{macrocode} +% \end{macro} +% % \subsubsection{Objects} % % \begin{variable}{\g_@@_pdf_object_int, \g_@@_pdf_object_prop} @@ -1533,9 +1765,70 @@ % \end{macro} % % \begin{macro}{\driver_pdf_link_margin:n} -% Nope. +% Pass to \texttt{dvipdfmx}. +% \begin{macrocode} +\cs_new_protected:Npn \driver_pdf_link_margin:n #1 + { \@@_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\driver_pdf_destination:nn, \driver_pdf_destination_rectangle:nn} +% Here, we need to turn the zoom into a scale. The method for \texttt{FitR} +% is from Alexander Grahn: the idea is to avoid needing to do any calculations +% in \TeX{} by using the driver data for \texttt{@xpos} and \texttt{@ypos}. % \begin{macrocode} -\cs_new_protected:Npn \driver_pdf_link_margin:n #1 { } +\cs_new_protected:Npn \driver_pdf_destination:nn #1#2 + { + \@@_pdf:x + { + dest ~ ( \exp_not:n {#1} ) + [ + @thispage + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ @xpos ~ @ypos ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH } + { fitbv } { /FitBV ~ @xpos } + { fith } { /FitH ~ @ypos } + { fitv } { /FitV ~ @xpos } + } + { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } } + ] + } + } +\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2 + { + \group_begin: + \hbox_set:Nn \l_@@_pdf_tmp_box {#2} + \box_move_down:nn { \box_dp:N \l_@@_pdf_tmp_box } + { + \hbox:n + { + \@@_pdf:n { obj ~ @driver_#1_llx ~ @xpos } + \@@_pdf:n { obj ~ @driver_#1_lly ~ @ypos } + } + } + \box_use:N \l_@@_pdf_tmp_box + \box_move_up:nn { \box_ht:N \l_@@_pdf_tmp_box } + { + \hbox:n + { + \@@_pdf:n + { + dest ~ (#1) + [ + @thispage + /FitR ~ + @driver_#1_llx ~ @driver_#1_lly ~ + @xpos ~ @ypos + ] + } + } + } + \group_end: + } % \end{macrocode} % \end{macro} % @@ -1589,6 +1882,16 @@ %<*dvisvgm> % \end{macrocode} % +% \subsubsection{Catalogue entries} +% +% \begin{macro}{\driver_pdf_catalog_gput:nn, \driver_pdf_info_gput:nn} +% No-op. +% \begin{macrocode} +\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 { } +\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 { } +% \end{macrocode} +% \end{macro} +% % \subsubsection{Objects} % % \begin{macro}{\driver_pdf_object_new:nn} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx index 687f8c93dd8..04a731183ae 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -439,7 +439,7 @@ % % \begin{function}{\driver_draw_box_use:Nnnnn} % \begin{syntax} -% \cs{driver_draw_box:Nnnnnnn} \meta{box} +% \cs{driver_draw_box_use:Nnnnn} \meta{box} % \Arg{a} \Arg{b} \Arg{c} \Arg{d} \Arg{x} \Arg{y} % \end{syntax} % Inserts the \meta{box} as an hbox with the box reference point placed @@ -447,8 +447,9 @@ % to the box, allowing it to be in synchronisation with any scaling, rotation % or skewing applying more generally. Note that \TeX{} material should not % be inserted directly into a drawing as it would not be in the correct -% location. Also note that as for other drawing elements the box here -% has no size from a \TeX{} perspective. +% location. Also note that this function must be used inside a box of zero +% size, shifted appropriately for the correct result; a low-level engine +% error may result if this is not the case. % \end{function} % % \subsection{Coordinate system transformations} @@ -492,6 +493,9 @@ % \cs{driver_pdf_link_begin_user:nnw} \Arg{attributes} \Arg{action} % \Arg{content} % \cs{driver_pdf_link_end:} +% \cs{driver_pdf_link_begin_goto:nnw} \Arg{attributes} \Arg{target} +% \Arg{content} +% \cs{driver_pdf_link_end:} % \end{syntax} % Creates a link of the \meta{type} |goto| or |user| with the given % \meta{attributes}, points toward the \meta{action} and surround the @@ -514,7 +518,74 @@ % Sets the length of the margin between content and the border of a link. % Different back-ends treat the scoping of this value in different ways: % \pdfTeX{} and \LuaTeX{} treat it as scoped by \TeX{}, whilst with -% \texttt{dvips} the scope is managed at the PostScript level. +% \texttt{dvips} the scope is managed at the PostScript level. For +% \texttt{(x)dvipdfmx}, this setting applies to \emph{all} annotations +% (\emph{i.e.}~it is global), and thus it may be necessary to set to +% \texttt{0pt} to avoid breaking for example animations. +% \end{function} +% +% \begin{function}[added = 2019-04-26]{\driver_pdf_destination:nn} +% \begin{syntax} +% \cs{driver_pdf_destination:nn} \Arg{name} \Arg{action} +% \end{syntax} +% Creates a destination (anchor) called \meta{name}; when a jump is made +% by a link to the destination, one of the following actions may take +% place +% \begin{itemize} +% \item \texttt{xyz} Move the view such that the target point is at the +% top-left of the viewer screen +% \item \texttt{\meta{scale}} As for \texttt{xyz}, but also sets the +% viewer \meta{scale} +% \item \texttt{fit} Display the page containing the destination and fit +% the entire page within the viewer window +% \item \texttt{fitb} Display the page containing the destination and fit +% the bounding box of the page within the viewer window +% \item \texttt{fitbh} Move to the destination page such that the +% anchor point is at the top of the viewer screen, and scale +% such that the bounding box fills the viewer width +% \item \texttt{fitbv} Move to the destination page such that the +% anchor point is at the left of the viewer screen, and scale +% such that the bounding box fills the viewer height +% \item \texttt{fith} Move to the destination page such that the +% anchor point is at the top of the viewer screen, and scale +% such that the page fills the viewer width +% \item \texttt{fitv} Move to the destination page such that the +% anchor point is at the left of the viewer screen, and scale +% such that the page fills the viewer height +% \end{itemize} +% A \meta{scale} of zero is equivalent to \texttt{xyz}. +% \end{function} +% +% \begin{function}[added = 2019-04-28]{\driver_pdf_destination_rectangle:nn} +% \begin{syntax} +% \cs{driver_pdf_destination_rectangle:nn} \Arg{name} \Arg{content} +% \end{syntax} +% Creates a destination (anchor) called \meta{name}; when a jump is made +% by a link to the destination, the viewer will set the zoom such that all +% of the \meta{content} is visible taking up the full width or height of the +% viewer area. +% \end{function} +% +% \subsection{PDF Catalogue entries} +% +% \begin{function}[added = 2019-04-28]{\driver_pdf_catalog_gput:nn} +% \begin{syntax} +% \cs{driver_pdf_catalog_gput:nn} \Arg{key} \Arg{value} +% \end{syntax} +% Adds the key--value pair to the PDF catalog. The \meta{key} should +% be given \emph{without} the leading |/|. The \meta{value} should be +% a \enquote{raw} PDF dictionary entry, including the |(|/|)| pair for +% a string, a leading |/| for a boolean, \emph{etc.} +% \end{function} +% +% \begin{function}[added = 2019-04-28]{\driver_pdf_info_gput:nn} +% \begin{syntax} +% \cs{driver_pdf_info_gput:nn} \Arg{key} \Arg{value} +% \end{syntax} +% Adds the key--value pair to the PDF information. The \meta{key} should +% be given \emph{without} the leading |/|. The \meta{value} should be +% a \enquote{raw} PDF dictionary entry, including the |(|/|)| pair for +% a string or leading |/| for a boolean. % \end{function} % % \subsection{PDF Objects} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx index 31f2e717cd3..d4e684149b0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx index 1788f805cc0..04144df0f70 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -439,7 +439,7 @@ % \subsection{Wrapping lines in output} % % \begin{function}[added = 2012-06-28, updated = 2017-12-04] -% {\iow_wrap:nnnN \iow_wrap:nxnN} +% {\iow_wrap:nnnN, \iow_wrap:nxnN} % \begin{syntax} % \cs{iow_wrap:nnnN} \Arg{text} \Arg{run-on text} \Arg{set up} \meta{function} % \end{syntax} @@ -655,6 +655,51 @@ % quote (|"|) characters or is surrounded by a pair of quotes. % \end{function} % +% \begin{function}[noTF, added = 2017-07-11, updated = 2019-02-16] +% {\file_get_mdfive_hash:nN} +% \begin{syntax} +% \cs{file_get_mdfive_hash:nN} \Arg{file name} \meta{tl var} +% \end{syntax} +% Searches for \meta{file name} using the current \TeX{} search +% path and the additional paths controlled by \cs{l_file_search_path_seq}. +% If found, sets the \meta{tl var} to the MD5 sum generated from the +% content of the file. The file is read as bytes, which means that in +% contrast to most \TeX{} behaviour there will be a difference in result +% depending on the line endings used in text files. The same file will +% produce the same result between different engines: the algorithm used +% is the same in all cases. +% Where the file is not found, the \meta{tl var} will set to +% \cs{q_no_value}. +% \end{function} +% +% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] +% {\file_get_size:nN} +% \begin{syntax} +% \cs{file_get_size:nN} \Arg{file name} \meta{tl var} +% \end{syntax} +% Searches for \meta{file name} using the current \TeX{} search +% path and the additional paths controlled by \cs{l_file_search_path_seq}. +% If found, sets the \meta{tl var} to the size of the file in bytes. +% Where the file is not found, the \meta{tl var} will set to \cs{q_no_value}. +% This is not available in older versions of \XeTeX{}. +% \end{function} +% +% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16] +% {\file_get_timestamp:nN} +% \begin{syntax} +% \cs{file_get_timestamp:nN} \Arg{file name} \meta{tl var} +% \end{syntax} +% Searches for \meta{file name} using the current \TeX{} search +% path and the additional paths controlled by \cs{l_file_search_path_seq}. +% If found, sets the \meta{tl var} to the modification timestamp of +% the file in the form |D:|\meta{year}\meta{month}\meta{day}\meta{hour}^^A +% \meta{minute}\meta{second}\meta{offset}, where the latter may be |Z| +% (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|. +% Where the file is not found, the \meta{tl var} will be set to +% \cs{q_no_value}. +% This is not available in older versions of \XeTeX{}. +% \end{function} +% % \begin{function}[updated = 2017-06-26]{\file_input:n} % \begin{syntax} % \cs{file_input:n} \Arg{file name} @@ -666,6 +711,41 @@ % function. An error is raised if the file is not found. % \end{function} % +% \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF} +% \begin{syntax} +% \cs{file_if_exist_input:n} \Arg{file name} +% \cs{file_if_exist_input:nF} \Arg{file name} \Arg{false code} +% \end{syntax} +% Searches for \meta{file name} using the current \TeX{} search +% path and the additional paths controlled by +% \cs{file_path_include:n}. If found then +% reads in the file as additional \LaTeX{} source as described for +% \cs{file_input:n}, otherwise inserts the \meta{false code}. +% Note that these functions do not raise +% an error if the file is not found, in contrast to \cs{file_input:n}. +% \end{function} +% +% \begin{function}[added = 2017-07-07]{\file_input_stop:} +% \begin{syntax} +% \cs{file_input_stop:} +% \end{syntax} +% Ends the reading of a file started by \cs{file_input:n} or similar before +% the end of the file is reached. Where the file reading is being terminated +% due to an error, \cs[index = msg_critical:nn]{msg_critical:nn(nn)} +% should be preferred. +% \begin{texnote} +% This function must be used on a line on its own: \TeX{} reads files +% line-by-line and so any additional tokens in the \enquote{current} line +% will still be read. +% +% This is also true if the function is hidden inside another function +% (which will be the normal case), i.e., all tokens on the same line +% in the source file are still processed. Putting it on a line by itself +% in the definition doesn't help as it is the line where it is used that +% counts! +% \end{texnote} +% \end{function} +% % \begin{function}{\file_show_list:, \file_log_list:} % \begin{syntax} % \cs{file_show_list:} @@ -2360,6 +2440,98 @@ % \end{macro} % \end{macro} % +% \begin{macro} +% {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN} +% \begin{macro}{\@@_get_details:nnN} +% These are all wrappers around the \pdfTeX{} primitives doing the same +% jobs: as we want consistent file paths to be found, they are all set up +% using \cs{file_get_full_name:nN} and so are non-expandable \texttt{get} +% functions. Much of the code is repetitive but we need to branch for +% \LuaTeX{} (emulation in Lua), for the slightly different syntax +% needed for \tn{tex_mdfivesum:D} and for the fact that primitive +% coverage varies in other engines. +% \begin{macrocode} +\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2 + { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\cs_new_protected:Npn \file_get_size:nN #1#2 + { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\cs_new_protected:Npn \file_get_timestamp:nN #1#2 + { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF } + { \@@_get_details:nnN {#1} { mdfivesum } {#2} } +\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF } + { \@@_get_details:nnN {#1} { size } {#2} } +\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF } + { \@@_get_details:nnN {#1} { moddate } {#2} } +\cs_new_protected:Npn \@@_get_details:nnN #1#2#3 + { + \file_get_full_name:nNTF {#1} \l_@@_full_name_tl + { + \tl_set:Nx #3 + { + \use:c { tex_file #2 :D } \exp_after:wN + { \l_@@_full_name_tl } + } + \prg_return_true: + } + { \prg_return_false: } + } +\sys_if_engine_luatex:TF + { + \cs_set_protected:Npn \@@_get_details:nnN #1#2#3 + { + \file_get_full_name:nNTF {#1} \l_@@_full_name_tl + { + \tl_set:Nx #3 + { + \lua_now:e + { + l3kernel.file#2 + ( " \lua_escape:e { \l_@@_full_name_tl } " ) + } + } + \prg_return_true: + } + { \prg_return_false: } + } + } + { + \prg_set_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 + { T , F , TF } + { + \file_get_full_name:nNTF {#1} \l_@@_full_name_tl + { + \tl_set:Nx #2 + { + \tex_mdfivesum:D file \exp_after:wN + { \l_@@_full_name_tl } + } + \prg_return_true: + } + { \prg_return_false: } + } + \cs_if_exist:NF \tex_filesize:D + { + \cs_set_protected:Npn \@@_get_details:nnN #1#2#3 + { + \tl_clear:N #3 + \__kernel_msg_error:nnx + { kernel } { primitive-not-available } + { \exp_not:c { (pdf)file #2 } } + \prg_return_false: + } + } + } +\__kernel_msg_new:nnnn { kernel } { primitive-not-available } + { Primitive~\token_to_str:N #1 not~available } + { + The~version~of~XeTeX~in~use~does~not~provide~functionality~equivalent~to~ + the~\token_to_str:N #1 primitive. + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macro}[TF]{\file_if_exist:n} % The test for the existence of a file is a wrapper around the function to % add a path to a file. If the file was found, the path contains @@ -2375,6 +2547,32 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\file_if_exist_input:n, \file_if_exist_input:nF} +% Input of a file with a test for existence. We do not define the |T| +% or |TF| variants because the most useful place to place the +% \meta{true code} would be inconsistent with other conditionals. +% \begin{macrocode} +\cs_new_protected:Npn \file_if_exist_input:n #1 + { + \file_get_full_name:nNT {#1} \l_@@_full_name_tl + { \@@_input:V \l_@@_full_name_tl } + } +\cs_new_protected:Npn \file_if_exist_input:nF #1#2 + { + \file_get_full_name:nNTF {#1} \l_@@_full_name_tl + { \@@_input:V \l_@@_full_name_tl } + {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\file_input_stop:} +% A simple rename. +% \begin{macrocode} +\cs_new_protected:Npn \file_input_stop: { \tex_endinput:D } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\__kernel_file_missing:n} % An error message for a missing file, also used in \cs{ior_open:Nn}. % \begin{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx index 83c0a9e06c9..02262210e2f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx index dc677b17047..52b31eac7b9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx index b125f5ea225..a9c642d99b7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % \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 a91ba3739ef..3d265954d73 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx index acf8a9730e9..a80e731be6e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx index 19579e1178a..e6e4f4b2fcf 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx index 5f4855a1e00..36c5d841fc9 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx index 827ef37a567..a2d4d15ddd5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx index 4ac7c2b31b7..2c4d6a74764 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx index 49b590ecb14..9a9704fa656 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx index c54d211f315..4e1b2d28e96 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx index ce271732d57..6b15cdddf4c 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx index 308ef31eddb..a103146534d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % \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 7364871989c..b877bdbf308 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx @@ -40,7 +40,7 @@ % {latex-team@latex-project.org}^^A % }^^A % } -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx index 57ed60854bb..ac802b718aa 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx @@ -49,7 +49,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -888,7 +888,7 @@ % specified, providing a tuple as an argument of any other operation % yields the \enquote{invalid operation} exception and a \nan{} result. % -% \begin{function}[tested = m3fp-logic002, module = ]{?:} +% \begin{function}[tested = m3fp-logic002]{?:} % \begin{syntax} % \cs{fp_eval:n} \{ \meta{operand_1} |?| \meta{operand_2} |:| \meta{operand_3} \} % \end{syntax} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx index 524a6f3664b..9cc229840d3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx index a7d092c5d3f..8bc1dc8b734 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx index fca4e4d1871..a54746edeff 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx index a97f81dec26..5e564fb7561 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx index 3ed79a5a6f0..519a82ae949 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx new file mode 100644 index 00000000000..c9f8d393387 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx @@ -0,0 +1,100 @@ +% \iffalse meta-comment +% +%% File: l3legacy.dtx +% +% Copyright (C) 2019 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 +% +% https://www.latex-project.org/lppl.txt +% +% This file is part of the "l3kernel 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> +\documentclass[full,kernel]{l3doc} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +% +% \fi +% +% \title{^^A +% The \textsf{l3legacy} package\\ Interfaces to legacy concepts^^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 2019-05-03} +% +% \maketitle +% +% \begin{documentation} +% +% There are a small number of \TeX{} or \LaTeXe{} concepts which are not used +% in \pkg{expl3} code but which need to be manipulated when working as a \LaTeXe{} +% package. To allow these to be integrated cleanly into \pkg{expl3} code, a set +% of legacy interfaces are provided here. +% +% \begin{function}[EXP,pTF]{\legacy_if:n} +% \begin{syntax} +% \cs{legacy_if:nTF} \Arg{name} \Arg{true code} \Arg{false code} +% \end{syntax} +% Tests if the \LaTeXe{}/plain \TeX{} conditional (generated by \tn{newif}) +% if \texttt{true} or \texttt{false} and branches accordingly. The +% \meta{name} of the conditional should \emph{omit} the leading \texttt{if}. +% \end{function} +% +% \end{documentation} +% +% \begin{implementation} +% +% \section{\pkg{l3legacy} Implementation} +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +%<@@=legacy> +% \end{macrocode} +% +% \begin{macro}[EXP,pTF]{\legacy_if:n} +% A friendly wrapper. +% \begin{macrocode} +\prg_new_conditional:Npnn \legacy_if:n #1 { p , T , F , TF } + { + \exp_args:Nc \if_meaning:w { if#1 } \iftrue + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \end{implementation} +% +% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx index 1f65299275c..d87fa9438a0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx index 12b28ac9126..59f58620bb0 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx index 3f28662217f..5d7a52fbd01 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -578,6 +578,7 @@ \@@_primitive:NN \pdfoutline \tex_pdfoutline:D \@@_primitive:NN \pdfoutput \tex_pdfoutput:D \@@_primitive:NN \pdfpageattr \tex_pdfpageattr:D + \@@_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D \@@_primitive:NN \pdfpagebox \tex_pdfpagebox:D \@@_primitive:NN \pdfpageref \tex_pdfpageref:D \@@_primitive:NN \pdfpageresources \tex_pdfpageresources:D @@ -1107,6 +1108,11 @@ \@@_primitive:NN \Uunderdelimiter \tex_Uunderdelimiter:D \@@_primitive:NN \Uvextensible \tex_Uvextensible:D % \end{macrocode} +% Primitives from Harf\TeX{}. +% \begin{macrocode} + \@@_primitive:NN \harftexrevision \tex_harftexrevision:D + \@@_primitive:NN \harftexversion \tex_harftexversion:D +% \end{macrocode} % Primitives from \pTeX{}. % \begin{macrocode} \@@_primitive:NN \autospacing \tex_autospacing:D diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx index a1a56553da0..3bdc75dc10f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx index 52f5eba505f..32fb92ad357 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx index 6e08abab51e..6cdcb536309 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx index ced12c3404f..5c9eff6ef28 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index b22030d34cc..d4a2b9a0b4f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx index 2a929db3037..e499441e1d1 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index 7cab64d19f0..f8e541f8467 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx index 0e45bc3f008..7c3e2c7a2bc 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx index 644a578cca8..649e913a4f7 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx index 19e5e939ccb..6fd11dc328f 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 1f75ca2c18c..f8a097c5e7d 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx index f8d6b75ffac..17961a9129b 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % @@ -931,6 +931,26 @@ % (as appropriate to the result of the test). % \end{function} % +% \begin{function}[TF, updated = 2012-12-20]{\peek_N_type:} +% \begin{syntax} +% \cs{peek_N_type:TF} \Arg{true code} \Arg{false code} +% \end{syntax} +% Tests if the next \meta{token} in the input stream can be safely +% grabbed as an \texttt{N}-type argument. The test is \meta{false} +% if the next \meta{token} is either an explicit or implicit +% begin-group or end-group token (with any character code), or +% an explicit or implicit space character (with character code $32$ +% and category code $10$), or an outer token (never used in \LaTeX3) +% and \meta{true} in all other cases. +% Note that a \meta{true} result ensures that the next \meta{token} is +% a valid \texttt{N}-type argument. However, if the next \meta{token} +% is for instance \cs{c_space_token}, the test takes the +% \meta{false} branch, even though the next \meta{token} is in fact +% a valid \texttt{N}-type argument. The \meta{token} is left +% in the input stream after the \meta{true code} or \meta{false code} +% (as appropriate to the result of the test). +% \end{function} +% % \section{Description of all possible tokens} % \label{sec:l3token:all-tokens} % @@ -2405,6 +2425,77 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}[TF]{\peek_N_type:} +% \begin{macro} +% {\@@_execute_branches_N_type:, \@@_N_type:w, \@@_N_type_aux:nnw} +% All tokens are \texttt{N}-type tokens, except in four cases: +% begin-group tokens, end-group tokens, space tokens with character +% code~$32$, and outer tokens. Since \cs{l_peek_token} might be +% outer, we cannot use the convenient \cs{bool_if:nTF} function, and +% must resort to the old trick of using \tn{ifodd} to expand a set of +% tests. The \texttt{false} branch of this test is taken if the token +% is one of the first three kinds of non-\texttt{N}-type tokens +% (explicit or implicit), thus we call \cs{@@_false:w}. In the +% \texttt{true} branch, we must detect outer tokens, without impacting +% performance too much for non-outer tokens. The first filter is to +% search for \texttt{outer} in the \tn{meaning} of \cs{l_peek_token}. +% If that is absent, \cs{use_none_delimit_by_q_stop:w} cleans up, and +% we call \cs{@@_true:w}. Otherwise, the token can be a non-outer +% macro or a primitive mark whose parameter or replacement text +% contains \texttt{outer}, it can be the primitive \tn{outer}, or it +% can be an outer token. Macros and marks would have \texttt{ma} in +% the part before the first occurrence of \texttt{outer}; the meaning +% of \tn{outer} has nothing after \texttt{outer}, contrarily to outer +% macros; and that covers all cases, calling \cs{@@_true:w} or +% \cs{@@_false:w} as appropriate. Here, there is no \meta{search +% token}, so we feed a dummy \cs{scan_stop:} to the +% \cs{@@_token_generic:NNTF} function. +% \begin{macrocode} +\group_begin: + \cs_set_protected:Npn \@@_tmp:w #1 \q_stop + { + \cs_new_protected:Npn \@@_execute_branches_N_type: + { + \if_int_odd:w + \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi: + \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi: + \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi: + 1 \exp_stop_f: + \exp_after:wN \@@_N_type:w + \token_to_meaning:N \l_peek_token + \q_mark \@@_N_type_aux:nnw + #1 \q_mark \use_none_delimit_by_q_stop:w + \q_stop + \exp_after:wN \@@_true:w + \else: + \exp_after:wN \@@_false:w + \fi: + } + \cs_new_protected:Npn \@@_N_type:w ##1 #1 ##2 \q_mark ##3 + { ##3 {##1} {##2} } + } + \exp_after:wN \@@_tmp:w \tl_to_str:n { outer } \q_stop +\group_end: +\cs_new_protected:Npn \@@_N_type_aux:nnw #1 #2 #3 \fi: + { + \fi: + \tl_if_in:noTF {#1} { \tl_to_str:n {ma} } + { \@@_true:w } + { \tl_if_empty:nTF {#2} { \@@_true:w } { \@@_false:w } } + } +\cs_new_protected:Npn \peek_N_type:TF + { + \@@_token_generic:NNTF + \@@_execute_branches_N_type: \scan_stop: + } +\cs_new_protected:Npn \peek_N_type:T + { \@@_token_generic:NNT \@@_execute_branches_N_type: \scan_stop: } +\cs_new_protected:Npn \peek_N_type:F + { \@@_token_generic:NNF \@@_execute_branches_N_type: \scan_stop: } +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macrocode} % % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx index 5c826977390..c7bb566c066 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx @@ -43,7 +43,7 @@ % }^^A % } % -% \date{Released 2019-04-21} +% \date{Released 2019-05-03} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx index 841e2a54d13..4696ceda345 100644 --- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx +++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx @@ -62,7 +62,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -133,7 +133,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3keys2e}{2019-03-05}{} +\ProvidesExplPackage{l3keys2e}{2019-05-03}{} {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 a923cfd4b83..71a0d646ebe 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx @@ -64,7 +64,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -167,7 +167,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfp}{2019-03-05}{} +\ProvidesExplPackage{xfp}{2019-05-03}{} {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 a3a128ba887..a67213fcb1a 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx @@ -65,7 +65,7 @@ % }^^A % } % -% \date{Released 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -535,7 +535,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfrac}{2019-03-05}{} +\ProvidesExplPackage{xfrac}{2019-05-03}{} {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 91d6a006658..c9061d80572 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 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -898,7 +898,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2019-03-05}{} +\ProvidesExplPackage{xparse}{2019-05-03}{} {L3 Experimental document command parser} % \end{macrocode} % @@ -1415,6 +1415,9 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_start_env:nnnnn #1#2 { +%<*package> + \cs_if_exist_use:N \conditionally@traceoff +% \str_set:Nn \l_@@_environment_str {#2} \bool_set_true:N \l_@@_environment_bool \@@_start_aux:ccnnnn @@ -1424,6 +1427,9 @@ } \cs_new_protected:Npx \@@_start:nNNnnn #1#2#3 { +%<*package> + \exp_not:n { \cs_if_exist_use:N \conditionally@traceoff } +% \exp_not:c { xparse~function~is~not~expandable } \exp_not:n { \bool_set_false:N \l_@@_environment_bool } \exp_not:N \@@_start_aux:NNnnnn @@ -1460,6 +1466,9 @@ { \tl_if_empty:NF \l_@@_defaults_tl { \@@_defaults: } \tl_if_empty:NF \l_@@_process_all_tl { \@@_args_process: } +%<*package> + \cs_if_exist_use:N \conditionally@traceon +% \exp_after:wN \l_@@_fn_code_tl \l_@@_args_tl } % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx index 73ef8cc857d..2dec040e45b 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 2019-03-05} +% \date{Released 2019-05-03} % % \maketitle % @@ -682,7 +682,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xtemplate}{2019-03-05}{} +\ProvidesExplPackage{xtemplate}{2019-05-03}{} {L3 Experimental prototype document functions} % \end{macrocode} % diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty index 307f4075c1d..924d785f8fc 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty @@ -20,7 +20,7 @@ %% %% File: l3benchmark.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3benchmark}{2019-03-05}{} +\ProvidesExplPackage{l3benchmark}{2019-05-03}{} {L3 Experimental benchmarking} \sys_if_engine_luatex:TF { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty index 26424b54ff9..19d18d7ed74 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty @@ -20,7 +20,7 @@ %% %% File: l3cctab.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3cctab}{2019-03-05}{} +\ProvidesExplPackage{l3cctab}{2019-05-03}{} {L3 Experimental category code tables} \int_new:N \g__cctab_allocate_int \int_gset:Nn \g__cctab_allocate_int { -1 } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty index 89e794d9474..c6be03b0ae4 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 \RequirePackage{expl3} -\ProvidesExplPackage{l3color}{2019-03-05}{} +\ProvidesExplPackage{l3color}{2019-05-03}{} {L3 Experimental color support} \tl_new:N \l__color_tmp_tl \prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty index 624f7c7be13..4f63b4e692e 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty @@ -28,7 +28,7 @@ %% %% File: l3draw.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3draw}{2019-03-05}{} +\ProvidesExplPackage{l3draw}{2019-05-03}{} {L3 Experimental core drawing support} \RequirePackage { l3color } %% File: l3draw-boxes.dtx @@ -685,7 +685,7 @@ { \bool_set_true:c { l__draw_path_use_ ##1 _ bool } } { \cs_if_exist_use:cF { __draw_path_use_action_ ##1 : } - { \ERROR } + { \msg_error:nnn { draw } { invalid-path-action } {##1} } } } \__draw_softpath_round_corners: @@ -693,11 +693,15 @@ { \l_draw_bb_update_bool } { \l__draw_path_use_stroke_bool } { \__draw_path_use_stroke_bb: } - \bool_if:NTF \l__draw_path_use_clear_bool - { \__draw_softpath_use_clear: } - { \__draw_softpath_use: } + \__draw_softpath_use: \bool_if:NT \l__draw_path_use_clip_bool - { \driver_draw_clip: } + { + \driver_draw_clip: + \bool_lazy_or:nnF + { \l__draw_path_use_fill_bool } + { \l__draw_path_use_stroke_bool } + { \driver_draw_discardpath: } + } \bool_lazy_or:nnT { \l__draw_path_use_fill_bool } { \l__draw_path_use_stroke_bool } @@ -710,6 +714,8 @@ : } } + \bool_if:NT \l__draw_path_use_clear_bool + { \__draw_softpath_clear: } } \cs_new_protected:Npn \__draw_path_use_action_draw: { @@ -786,6 +792,9 @@ \dim_gset_eq:NN \g__draw_path_lasty_dim \l__draw_path_lasty_dim \group_end: } +\msg_new:nnnn { draw } { invalid-path-action } + { Invalid~action~'#1'~for~path. } + { Paths~can~be~used~with~actions~'draw',~'clip',~'fill'~or~'stroke'. } %% File: l3draw-points.dtx \cs_new:Npn \__draw_point_process:nn #1#2 { @@ -1323,11 +1332,6 @@ \tl_build_gclear:N \g__draw_softpath_main_tl \bool_gset_false:N \g__draw_softpath_corners_bool } -\cs_new_protected:Npn \__draw_softpath_use_clear: - { - \__draw_softpath_use: - \__draw_softpath_clear: - } \dim_new:N \g__draw_softpath_lastx_dim \dim_new:N \g__draw_softpath_lasty_dim \bool_new:N \g__draw_softpath_move_bool 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 6fd0b8bc79d..6af82fd2621 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-2019 The LaTeX3 Project \RequirePackage{expl3} -\ProvidesExplPackage{l3str-convert}{2019-03-05}{} +\ProvidesExplPackage{l3str-convert}{2019-05-03}{} {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-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty index 5e49bbee787..2658fade981 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 \RequirePackage{expl3} -\ProvidesExplPackage{l3str-format}{2019-03-05}{} +\ProvidesExplPackage{l3str-format}{2019-05-03}{} {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 index b7834db7c4f..0fdc99a02a6 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty @@ -20,7 +20,7 @@ %% %% File: l3sys-shell.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3sys-shell}{2019-03-05}{} +\ProvidesExplPackage{l3sys-shell}{2019-05-03}{} {L3 Experimental system shell functions} \cs_new:Npn \__sys_path_to_win:n #1 { diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty index 655ed6f74e5..058ae854cd5 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 \RequirePackage{xparse} -\ProvidesExplPackage{xcoffins}{2019-03-05}{} +\ProvidesExplPackage{xcoffins}{2019-05-03}{} {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 9d19ec1625c..7f4c785a57d 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3galley}{2019-03-05}{} +\ProvidesExplPackage{l3galley}{2019-05-03}{} {L3 Experimental galley code} \int_new:N \l__galley_tmp_int \seq_new:N \g__galley_tmpa_seq diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty index 59821660f7e..de6ec90878d 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty @@ -20,7 +20,7 @@ %% %% File: xgalley.dtx \RequirePackage{xparse} -\ProvidesExplPackage{xgalley}{2019-03-05}{} +\ProvidesExplPackage{xgalley}{2019-05-03}{} {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 0710918dfaf..d4f679dc452 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -48,6 +48,7 @@ %% l3luatex.dtx (with options: `package,tex') %% l3unicode.dtx (with options: `package') %% l3candidates.dtx (with options: `package') +%% l3legacy.dtx (with options: `package') %% l3deprecation.dtx (with options: `package') %% %% Copyright (C) 1990-2019 The LaTeX3 Project @@ -63,7 +64,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-04-21}% +\def\ExplFileDate{2019-05-03}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -744,6 +745,7 @@ \__kernel_primitive:NN \pdfoutline \tex_pdfoutline:D \__kernel_primitive:NN \pdfoutput \tex_pdfoutput:D \__kernel_primitive:NN \pdfpageattr \tex_pdfpageattr:D + \__kernel_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D \__kernel_primitive:NN \pdfpagebox \tex_pdfpagebox:D \__kernel_primitive:NN \pdfpageref \tex_pdfpageref:D \__kernel_primitive:NN \pdfpageresources \tex_pdfpageresources:D @@ -1223,6 +1225,8 @@ \__kernel_primitive:NN \Usuperscript \tex_Usuperscript:D \__kernel_primitive:NN \Uunderdelimiter \tex_Uunderdelimiter:D \__kernel_primitive:NN \Uvextensible \tex_Uvextensible:D + \__kernel_primitive:NN \harftexrevision \tex_harftexrevision:D + \__kernel_primitive:NN \harftexversion \tex_harftexversion:D \__kernel_primitive:NN \autospacing \tex_autospacing:D \__kernel_primitive:NN \autoxspacing \tex_autoxspacing:D \__kernel_primitive:NN \dtou \tex_dtou:D @@ -8979,6 +8983,47 @@ { \exp_not:c { peek_#1:NF } ##1 {##2} } } } +\group_begin: + \cs_set_protected:Npn \__peek_tmp:w #1 \q_stop + { + \cs_new_protected:Npn \__peek_execute_branches_N_type: + { + \if_int_odd:w + \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi: + \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi: + \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi: + 1 \exp_stop_f: + \exp_after:wN \__peek_N_type:w + \token_to_meaning:N \l_peek_token + \q_mark \__peek_N_type_aux:nnw + #1 \q_mark \use_none_delimit_by_q_stop:w + \q_stop + \exp_after:wN \__peek_true:w + \else: + \exp_after:wN \__peek_false:w + \fi: + } + \cs_new_protected:Npn \__peek_N_type:w ##1 #1 ##2 \q_mark ##3 + { ##3 {##1} {##2} } + } + \exp_after:wN \__peek_tmp:w \tl_to_str:n { outer } \q_stop +\group_end: +\cs_new_protected:Npn \__peek_N_type_aux:nnw #1 #2 #3 \fi: + { + \fi: + \tl_if_in:noTF {#1} { \tl_to_str:n {ma} } + { \__peek_true:w } + { \tl_if_empty:nTF {#2} { \__peek_true:w } { \__peek_false:w } } + } +\cs_new_protected:Npn \peek_N_type:TF + { + \__peek_token_generic:NNTF + \__peek_execute_branches_N_type: \scan_stop: + } +\cs_new_protected:Npn \peek_N_type:T + { \__peek_token_generic:NNT \__peek_execute_branches_N_type: \scan_stop: } +\cs_new_protected:Npn \peek_N_type:F + { \__peek_token_generic:NNF \__peek_execute_branches_N_type: \scan_stop: } %% File: l3prop.dtx \scan_new:N \s__prop \cs_new:Npn \__prop_pair:wn #1 \s__prop #2 @@ -11012,12 +11057,101 @@ \__kernel_ior_open:No \g__file_internal_ior \l__file_full_name_tl \ior_if_eof:NF \g__file_internal_ior { #2 { \prg_break: } } } +\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2 + { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\cs_new_protected:Npn \file_get_size:nN #1#2 + { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\cs_new_protected:Npn \file_get_timestamp:nN #1#2 + { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } +\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF } + { \__file_get_details:nnN {#1} { mdfivesum } {#2} } +\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF } + { \__file_get_details:nnN {#1} { size } {#2} } +\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF } + { \__file_get_details:nnN {#1} { moddate } {#2} } +\cs_new_protected:Npn \__file_get_details:nnN #1#2#3 + { + \file_get_full_name:nNTF {#1} \l__file_full_name_tl + { + \tl_set:Nx #3 + { + \use:c { tex_file #2 :D } \exp_after:wN + { \l__file_full_name_tl } + } + \prg_return_true: + } + { \prg_return_false: } + } +\sys_if_engine_luatex:TF + { + \cs_set_protected:Npn \__file_get_details:nnN #1#2#3 + { + \file_get_full_name:nNTF {#1} \l__file_full_name_tl + { + \tl_set:Nx #3 + { + \lua_now:e + { + l3kernel.file#2 + ( " \lua_escape:e { \l__file_full_name_tl } " ) + } + } + \prg_return_true: + } + { \prg_return_false: } + } + } + { + \prg_set_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 + { T , F , TF } + { + \file_get_full_name:nNTF {#1} \l__file_full_name_tl + { + \tl_set:Nx #2 + { + \tex_mdfivesum:D file \exp_after:wN + { \l__file_full_name_tl } + } + \prg_return_true: + } + { \prg_return_false: } + } + \cs_if_exist:NF \tex_filesize:D + { + \cs_set_protected:Npn \__file_get_details:nnN #1#2#3 + { + \tl_clear:N #3 + \__kernel_msg_error:nnx + { kernel } { primitive-not-available } + { \exp_not:c { (pdf)file #2 } } + \prg_return_false: + } + } + } +\__kernel_msg_new:nnnn { kernel } { primitive-not-available } + { Primitive~\token_to_str:N #1 not~available } + { + The~version~of~XeTeX~in~use~does~not~provide~functionality~equivalent~to~ + the~\token_to_str:N #1 primitive. + } \prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF } { \file_get_full_name:nNTF {#1} \l__file_full_name_tl { \prg_return_true: } { \prg_return_false: } } +\cs_new_protected:Npn \file_if_exist_input:n #1 + { + \file_get_full_name:nNT {#1} \l__file_full_name_tl + { \__file_input:V \l__file_full_name_tl } + } +\cs_new_protected:Npn \file_if_exist_input:nF #1#2 + { + \file_get_full_name:nNTF {#1} \l__file_full_name_tl + { \__file_input:V \l__file_full_name_tl } + {#2} + } +\cs_new_protected:Npn \file_input_stop: { \tex_endinput:D } \cs_new_protected:Npn \__kernel_file_missing:n #1 { \__kernel_file_name_sanitize:nN {#1} \l__file_base_name_tl @@ -25830,95 +25964,6 @@ } \cs_new:Npn \fp_sign:n #1 { \fp_to_decimal:n { sign \__fp_parse:n {#1} } } -\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2 - { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } -\cs_new_protected:Npn \file_get_size:nN #1#2 - { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } -\cs_new_protected:Npn \file_get_timestamp:nN #1#2 - { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } } -\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF } - { \__file_get_details:nnN {#1} { mdfivesum } {#2} } -\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF } - { \__file_get_details:nnN {#1} { size } {#2} } -\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF } - { \__file_get_details:nnN {#1} { moddate } {#2} } -\cs_new_protected:Npn \__file_get_details:nnN #1#2#3 - { - \file_get_full_name:nNTF {#1} \l__file_full_name_tl - { - \tl_set:Nx #3 - { - \use:c { tex_file #2 :D } \exp_after:wN - { \l__file_full_name_tl } - } - \prg_return_true: - } - { \prg_return_false: } - } -\sys_if_engine_luatex:TF - { - \cs_set_protected:Npn \__file_get_details:nnN #1#2#3 - { - \file_get_full_name:nNTF {#1} \l__file_full_name_tl - { - \tl_set:Nx #3 - { - \lua_now:e - { - l3kernel.file#2 - ( " \lua_escape:e { \l__file_full_name_tl } " ) - } - } - \prg_return_true: - } - { \prg_return_false: } - } - } - { - \prg_set_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 - { T , F , TF } - { - \file_get_full_name:nNTF {#1} \l__file_full_name_tl - { - \tl_set:Nx #2 - { - \tex_mdfivesum:D file \exp_after:wN - { \l__file_full_name_tl } - } - \prg_return_true: - } - { \prg_return_false: } - } - \cs_if_exist:NF \tex_filesize:D - { - \cs_set_protected:Npn \__file_get_details:nnN #1#2#3 - { - \tl_clear:N #3 - \__kernel_msg_error:nnx - { kernel } { primitive-not-available } - { \exp_not:c { (pdf)file #2 } } - \prg_return_false: - } - } - } -\__kernel_msg_new:nnnn { kernel } { primitive-not-available } - { Primitive~\token_to_str:N #1 not~available } - { - The~version~of~XeTeX~in~use~does~not~provide~functionality~equivalent~to~ - the~\token_to_str:N #1 primitive. - } -\cs_new_protected:Npn \file_if_exist_input:n #1 - { - \file_get_full_name:nNT {#1} \l__file_full_name_tl - { \__file_input:V \l__file_full_name_tl } - } -\cs_new_protected:Npn \file_if_exist_input:nF #1#2 - { - \file_get_full_name:nNTF {#1} \l__file_full_name_tl - { \__file_input:V \l__file_full_name_tl } - {#2} - } -\cs_new_protected:Npn \file_input_stop: { \tex_endinput:D } \__kernel_patch:nnNNpn { \__flag_chk_exist:n {#1} } { } \cs_new:Npn \flag_raise_if_clear:n #1 { @@ -27549,47 +27594,6 @@ \char_set_lccode:nn { `* } { `\ } \tex_lowercase:D { \tl_const:Nn \c_catcode_active_space_tl { * } } \group_end: -\group_begin: - \cs_set_protected:Npn \__peek_tmp:w #1 \q_stop - { - \cs_new_protected:Npn \__peek_execute_branches_N_type: - { - \if_int_odd:w - \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi: - \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi: - \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi: - 1 \exp_stop_f: - \exp_after:wN \__peek_N_type:w - \token_to_meaning:N \l_peek_token - \q_mark \__peek_N_type_aux:nnw - #1 \q_mark \use_none_delimit_by_q_stop:w - \q_stop - \exp_after:wN \__peek_true:w - \else: - \exp_after:wN \__peek_false:w - \fi: - } - \cs_new_protected:Npn \__peek_N_type:w ##1 #1 ##2 \q_mark ##3 - { ##3 {##1} {##2} } - } - \exp_after:wN \__peek_tmp:w \tl_to_str:n { outer } \q_stop -\group_end: -\cs_new_protected:Npn \__peek_N_type_aux:nnw #1 #2 #3 \fi: - { - \fi: - \tl_if_in:noTF {#1} { \tl_to_str:n {ma} } - { \__peek_true:w } - { \tl_if_empty:nTF {#2} { \__peek_true:w } { \__peek_false:w } } - } -\cs_new_protected:Npn \peek_N_type:TF - { - \__peek_token_generic:NNTF - \__peek_execute_branches_N_type: \scan_stop: - } -\cs_new_protected:Npn \peek_N_type:T - { \__peek_token_generic:NNT \__peek_execute_branches_N_type: \scan_stop: } -\cs_new_protected:Npn \peek_N_type:F - { \__peek_token_generic:NNF \__peek_execute_branches_N_type: \scan_stop: } \tl_new:N \l__peek_collect_tl \cs_new_protected:Npn \peek_catcode_collect_inline:Nn { \__peek_collect:NNn \__peek_execute_branches_catcode: } @@ -27637,6 +27641,15 @@ \tl_put_right:Nn \l__peek_collect_tl {#1} \exp_after:wN \__peek_true_remove:w } +%% File: l3legacy.dtx +\prg_new_conditional:Npnn \legacy_if:n #1 { p , T , F , TF } + { + \exp_args:Nc \if_meaning:w { if#1 } \iftrue + \prg_return_true: + \else: + \prg_return_false: + \fi: + } %% File: l3deprecation.dtx \bool_new:N \l__deprecation_grace_period_bool \cs_new:Npn \__deprecation_date_compare:nNnTF #1#2#3 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 81c56d71765..26c183ef620 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-04-21}% +\def\ExplFileDate{2019-05-03}% \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 d084dafa2fe..fd5e7fa0e6c 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-04-21}% +\def\ExplFileDate{2019-05-03}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index 7071cac3a1f..720da5d79c7 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -437,9 +437,14 @@ %% File: l3drivers-pdf.dtx \tl_const:Nn \c__driver_pdf_AR_fix_tl { /Ff ~ 65537 /FT /Btn /Subtype /Widget } +\box_new:N \l__driver_pdf_tmp_box \cs_new_protected:Npx \__driver_pdf:n #1 { \__driver_literal:n { pdf: #1 } } \cs_generate_variant:Nn \__driver_pdf:n { x } +\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 + { \__driver_pdf:n { put ~ @catalog << /#1 ~ #2 >> } } +\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 + { \__driver_pdf:n { docinfo << /#1 ~ #2 >> } } \int_new:N \g__driver_pdf_object_int \prop_new:N \g__driver_pdf_object_prop \cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 @@ -557,7 +562,60 @@ \cs_new_protected:Npn \driver_pdf_link_end: { \__driver_pdf:n { eann } } \cs_new:Npn \driver_pdf_link_last: { } -\cs_new_protected:Npn \driver_pdf_link_margin:n #1 { } +\cs_new_protected:Npn \driver_pdf_link_margin:n #1 + { \__driver_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } } +\cs_new_protected:Npn \driver_pdf_destination:nn #1#2 + { + \__driver_pdf:x + { + dest ~ ( \exp_not:n {#1} ) + [ + @thispage + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ @xpos ~ @ypos ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH } + { fitbv } { /FitBV ~ @xpos } + { fith } { /FitH ~ @ypos } + { fitv } { /FitV ~ @xpos } + } + { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } } + ] + } + } +\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2 + { + \group_begin: + \hbox_set:Nn \l__driver_pdf_tmp_box {#2} + \box_move_down:nn { \box_dp:N \l__driver_pdf_tmp_box } + { + \hbox:n + { + \__driver_pdf:n { obj ~ @driver_#1_llx ~ @xpos } + \__driver_pdf:n { obj ~ @driver_#1_lly ~ @ypos } + } + } + \box_use:N \l__driver_pdf_tmp_box + \box_move_up:nn { \box_ht:N \l__driver_pdf_tmp_box } + { + \hbox:n + { + \__driver_pdf:n + { + dest ~ (#1) + [ + @thispage + /FitR ~ + @driver_#1_llx ~ @driver_#1_lly ~ + @xpos ~ @ypos + ] + } + } + } + \group_end: + } \cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { \__driver_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } } \cs_new_protected:Npn \driver_pdf_objects_enable: { } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index bc9cdcd2874..feb19384f46 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -39,8 +39,13 @@ \cs_new_protected:Npn \__driver_postscript:n #1 { \__driver_literal:n { ps: SDict ~ begin ~ #1 ~ end } } \cs_generate_variant:Nn \__driver_postscript:n { x } -\cs_new_protected:Npn \__driver_postscript_header:n #1 - { \__driver_literal:n { ! #1 } } +\cs_new_protected:Npx \__driver_postscript_header:n #1 + { + \cs_if_exist:NTF \AtBeginDvi + { \exp_not:N \AtBeginDvi } + { \use:n } + { \__driver_literal:n { ! #1 } } + } \cs_new_protected:Npn \__driver_align_currentpoint_begin: { \__driver_literal:n { ps::[begin] } @@ -413,23 +418,31 @@ %% File: l3drivers-pdf.dtx \tl_const:Nn \c__driver_pdf_AR_fix_tl { /Ff ~ 65537 /FT /Btn /Subtype /Widget } +\box_new:N \l__driver_pdf_tmp_box +\cs_new_protected:Npn \__driver_pdfmark:n #1 + { \__driver_postscript:n { mark #1 ~ pdfmark } } +\cs_generate_variant:Nn \__driver_pdfmark:n { x } +\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 + { \__driver_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } } +\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 + { \__driver_pdfmark:n { /#1 ~ #2 /DOCINFO } } \int_new:N \g__driver_pdf_object_int \prop_new:N \g__driver_pdf_object_prop \cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 { \int_gincr:N \g__driver_pdf_object_int \int_const:cn - { g__driver_pdf_object_ \tl_to_str:n {#1} _int } + { c__driver_pdf_object_ \tl_to_str:n {#1} _int } { \g__driver_pdf_object_int } \prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2} } \cs_new:Npn \driver_pdf_object_ref:n #1 - { { driver.obj \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } } } + { { driver.obj \int_use:c { c__driver_pdf_object_ \tl_to_str:n {#1} _int } } } \cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { - \__driver_postscript:x + \__driver_pdfmark:x { - mark /_objdef ~ \driver_pdf_object_ref:n {#1} + /_objdef ~ \driver_pdf_object_ref:n {#1} /type \str_case_e:nn { \prop_item:Nn \g__driver_pdf_object_prop {#1} } @@ -439,7 +452,7 @@ { fstream } { /stream } { stream } { /stream } } - /OBJ ~ pdfmark + /OBJ } \use:c { __driver_pdf_object_write_ \prop_item:Nn \g__driver_pdf_object_prop {#1} :nn } @@ -447,18 +460,18 @@ } \cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2 { - \__driver_postscript:x + \__driver_pdfmark:x { - mark ~ \driver_pdf_object_ref:n {#1} - [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL ~ pdfmark + \driver_pdf_object_ref:n {#1} + [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL } } \cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2 { - \__driver_postscript:x + \__driver_pdfmark:x { - mark ~ \driver_pdf_object_ref:n {#1} - << \exp_not:n {#2} >> /PUT ~ pdfmark + \driver_pdf_object_ref:n {#1} + << \exp_not:n {#2} >> /PUT } } \cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2 @@ -486,6 +499,7 @@ \__driver_postscript_header:n { /driver.cvs { 65534 ~ string ~ cvs } def + /driver.dvi.pt { 72.27 ~ mul ~ Resolution ~ div } def /driver.pt.dvi { 72.27 ~ div ~ Resolution ~ mul } def /driver.rect.ht { dup ~ 1 ~ get ~ neg ~ exch ~ 3 ~ get ~ add } def } @@ -497,23 +511,23 @@ } \__driver_postscript_header:n { - /driver.annotation.border + /driver.rect { /Rect [ driver.llx ~ driver.lly ~ driver.urx ~ driver.ury ] } def - /driver.annotation.ll + /driver.save.ll { currentpoint /driver.lly ~ exch ~ def /driver.llx ~ exch ~ def } def - /driver.annotation.ur + /driver.save.ur { currentpoint /driver.ury ~ exch ~ def /driver.urx ~ exch ~ def } def - /driver.link.ll + /driver.save.linkll { currentpoint ~ driver.linkmargin ~ add ~ @@ -523,7 +537,7 @@ /driver.llx ~ exch ~ def } def - /driver.link.ur + /driver.save.linkur { currentpoint ~ driver.linkmargin ~ sub ~ @@ -534,6 +548,44 @@ } def } +\__driver_postscript_header:n + { + /driver.dest.anchor + { + currentpoint ~ exch ~ + driver.dvi.pt ~ 72 ~ add ~ + /driver.dest.x ~ exch ~ def ~ + driver.dvi.pt ~ + vsize ~ 72 ~ sub ~ exch ~ sub ~ + /driver.dest.y ~ exch ~ def + } + def + /driver.dest.point + { driver.dest.x ~ driver.dest.y } def + /driver.dest2device + { + /driver.dest.y ~ exch ~ def + /driver.dest.x ~ exch ~ def ~ + matrix ~ currentmatrix ~ + matrix ~ defaultmatrix ~ + matrix ~ invertmatrix ~ + matrix ~ concatmatrix ~ + cvx ~ exec + /driver.dev.y ~ exch ~ def + /driver.dev.x ~ exch ~ def + /driver.tmpd ~ exch ~ def + /driver.tmpc ~ exch ~ def + /driver.tmpb ~ exch ~ def + /driver.tmpa ~ exch ~ def ~ + driver.dest.x ~ driver.tmpa ~ mul ~ + driver.dest.y ~ driver.tmpc ~ mul ~ add ~ + driver.dev.x ~ add ~ + driver.dest.x ~ driver.tmpb ~ mul ~ + driver.dest.y ~ driver.tmpd ~ mul ~ add ~ + driver.dev.y ~ add + } + def + } \__driver_postscript_header:n { /driver.bordertracking ~ false ~ def @@ -640,7 +692,7 @@ currentpoint ~ driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or { - driver.link.ll + driver.save.linkll /driver.lly ~ driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~ driver.bordertracking.begin @@ -661,7 +713,7 @@ currentpoint ~ driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or { - driver.link.ll + driver.save.linkll /driver.lly ~ driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~ driver.bordertracking.begin @@ -838,37 +890,36 @@ \__driver_pdf_annotation:nnnn {#1} {#2} {#3} {#4} \int_gincr:N \g__driver_pdf_object_int \int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int - \__driver_postscript:x + \__driver_pdfmark:x { - mark - /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int } - driver.annotation.border ~ - #4 ~ - /ANN ~ pdfmark + + /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int } + driver.rect ~ + #4 ~ + /ANN } } \cs_new_protected:Npn \__driver_pdf_annotation:nnnn #1#2#3#4 { \box_move_down:nn {#3} - { \hbox:n { \__driver_postscript:n { driver.annotation.ll } } } + { \hbox:n { \__driver_postscript:n { driver.save.ll } } } \hbox:n {#4} \box_move_up:nn {#2} { \hbox:n { \tex_kern:D \dim_eval:n {#1} \scan_stop: - \__driver_postscript:n { driver.annotation.ur } + \__driver_postscript:n { driver.save.ur } } } \int_gincr:N \g__driver_pdf_object_int \int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int - \__driver_postscript:x + \__driver_pdfmark:x { - mark - /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int } - driver.annotation.border ~ - \c__driver_pdf_AR_fix_tl - /ANN ~ pdfmark + /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int } + driver.rect ~ + \c__driver_pdf_AR_fix_tl + /ANN } } \cs_new:Npn \driver_pdf_annotation_last: @@ -933,20 +984,20 @@ { \evensidemargin } } \box_move_down:nn { \box_dp:N \l__driver_pdf_content_box } - { \hbox:n { \__driver_postscript:n { driver.link.ll } } } + { \hbox:n { \__driver_postscript:n { driver.save.linkll } } } \__driver_postscript:n { driver.bordertracking.begin } \hbox_unpack:N \l__driver_pdf_content_box \__driver_postscript:n { driver.bordertracking.end } \box_move_up:nn { \box_ht:N \l__driver_pdf_content_box } { \hbox:n - { \__driver_postscript:n { driver.link.ur } } + { \__driver_postscript:n { driver.save.linkur } } } \__driver_postscript:x { mark \g__driver_pdf_link_dict_tl /Subtype /Link ~ - driver.annotation.border + driver.rect /ANN ~ driver.pdfmark } \__driver_pdf_link_sf_restore: @@ -1044,6 +1095,55 @@ /driver.linkmargin { \dim_to_decimal:n {#1} ~ driver.pt.dvi } def } } +\cs_new_protected:Npn \driver_pdf_destination:nn #1#2 + { + \__driver_postscript:n { driver.dest.anchor } + \__driver_pdfmark:x + { + /View + [ + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ driver.dest.point ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH ~ driver.dest.y } + { fitbv } { /FitBV ~ driver.dest.x } + { fith } { /FitH ~ driver.dest.y } + { fitv } { /FitV ~ driver.dest.x } + } + { + /XYZ ~ driver.dest.point ~ \fp_eval:n { (#2) / 100 } + } + ] + /Dest ( \exp_not:n {#1} ) cvn + /DEST + } + } +\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2 + { + \group_begin: + \hbox_set:Nn \l__driver_pdf_tmp_box {#2} + \box_move_down:nn + { \box_dp:N \l__driver_pdf_tmp_box } + { \hbox:n { \__driver_postscript:n { driver.save.ll } } } + \box_use:N \l__driver_pdf_tmp_box + \box_move_up:nn + { \box_ht:N \l__driver_pdf_tmp_box } + { \hbox:n { \__driver_postscript:n { driver.save.ur } } } + \__driver_pdfmark:n + { + /View + [ + /FitR ~ + driver.llx ~ driver.lly ~ driver.dest2device ~ + driver.urx ~ driver.ury ~ driver.dest2device + ] + /Dest ( #1 ) cvn + /DEST + } + \group_end: + } \cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { } \cs_new_protected:Npn \driver_pdf_objects_enable: { } \cs_new_protected:Npn \driver_pdf_objects_disable: { } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def index 8594ca95919..ffb86659911 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def @@ -469,6 +469,9 @@ %% File: l3drivers-pdf.dtx \tl_const:Nn \c__driver_pdf_AR_fix_tl { /Ff ~ 65537 /FT /Btn /Subtype /Widget } +\box_new:N \l__driver_pdf_tmp_box +\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 { } +\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 { } \cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 { } \cs_new:Npn \driver_pdf_object_ref:n #1 { } \cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index 1f1d6f61676..7bfb6d120ad 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -424,6 +424,7 @@ %% File: l3drivers-pdf.dtx \tl_const:Nn \c__driver_pdf_AR_fix_tl { /Ff ~ 65537 /FT /Btn /Subtype /Widget } +\box_new:N \l__driver_pdf_tmp_box \cs_new_protected:Npx \__driver_pdf_AR_fix: { \cs_if_exist:NTF \tex_pdfextension:D @@ -485,6 +486,54 @@ { \exp_not:N \tex_pdflinkmargin:D } \exp_not:N \dim_eval:n {#1} \scan_stop: } +\cs_new_protected:Npx \driver_pdf_destination:nn #1#2 + { + \cs_if_exist:NTF \tex_pdfextension:D + { \exp_not:N \tex_pdfextension:D dest ~ } + { \exp_not:N \tex_pdfdest:D } + name {#1} + \exp_not:N \str_case:nnF {#2} + { + { xyz } { xyz } + { fit } { fit } + { fitb } { fitb } + { fitbh } { fitbh } + { fitbv } { fitbv } + { fith } { fith } + { fitv } { fitv } + } + { xyz ~ zoom \exp_not:N \fp_eval:n { #2 * 10 } } + \scan_stop: + } +\cs_new_protected:Npx \driver_pdf_destination_rectangle:nn #1#2 + { + \group_begin: + \hbox_set:Nn \l__driver_pdf_tmp_box {#2} + \cs_if_exist:NTF \tex_pdfextension:D + { \exp_not:N \tex_pdfextension:D dest ~ } + { \exp_not:N \tex_pdfdest:D } + name {#1} + fitr ~ + width \exp_not:N \box_wd:N \l__driver_pdf_tmp_box + height \exp_not:N \box_ht:N \l__driver_pdf_tmp_box + depth \exp_not:N \box_dp:N \l__driver_pdf_tmp_box + \box_use:N \l__driver_pdf_tmp_box + \group_end: + } +\cs_new_protected:Npx \driver_pdf_catalog_gput:nn #1#2 + { + \cs_if_exist:NTF \tex_pdfextension:D + { \tex_pdfextension:D catalog } + { \tex_pdfcatalog:D } + { / #1 ~ #2 } + } +\cs_new_protected:Npx \driver_pdf_info_gput:nn #1#2 + { + \cs_if_exist:NTF \tex_pdfextension:D + { \tex_pdfextension:D info } + { \tex_pdfinfo:D } + { / #1 ~ #2 } + } \prop_new:N \g__driver_pdf_object_prop \group_begin: \cs_set_protected:Npn \__driver_tmp:w #1#2 @@ -493,7 +542,7 @@ { #1 reserveobjnum ~ \int_const:cn - { g__driver_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int } + { c__driver_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int } {#2} \prop_gput:Nnn \exp_not:N \g__driver_pdf_object_prop {##1} {##2} } @@ -502,12 +551,12 @@ { \__driver_tmp:w { \tex_pdfextension:D obj ~ } - { \tex_pdffeedback:D lastobj \scan_stop: } + { \exp_not:N \tex_pdffeedback:D lastobj \scan_stop: } } { \__driver_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } } \group_end: \cs_new:Npn \driver_pdf_object_ref:n #1 - { \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } + { \int_use:c { c__driver_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } \group_begin: \cs_set_protected:Npn \__driver_tmp:w #1 { @@ -515,7 +564,7 @@ { \tex_immediate:D #1 useobjnum ~ \int_use:c - { g__driver_pdf_object_ \tl_to_str:n {##1} _int } + { c__driver_pdf_object_ \tl_to_str:n {##1} _int } \str_case_e:nn { \prop_item:Nn \g__driver_pdf_object_prop {##1} } { diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index 17fd5e7aff5..b5256daff29 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -480,9 +480,14 @@ %% File: l3drivers-pdf.dtx \tl_const:Nn \c__driver_pdf_AR_fix_tl { /Ff ~ 65537 /FT /Btn /Subtype /Widget } +\box_new:N \l__driver_pdf_tmp_box \cs_new_protected:Npx \__driver_pdf:n #1 { \__driver_literal:n { pdf: #1 } } \cs_generate_variant:Nn \__driver_pdf:n { x } +\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 + { \__driver_pdf:n { put ~ @catalog << /#1 ~ #2 >> } } +\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 + { \__driver_pdf:n { docinfo << /#1 ~ #2 >> } } \int_new:N \g__driver_pdf_object_int \prop_new:N \g__driver_pdf_object_prop \cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 @@ -600,7 +605,60 @@ \cs_new_protected:Npn \driver_pdf_link_end: { \__driver_pdf:n { eann } } \cs_new:Npn \driver_pdf_link_last: { } -\cs_new_protected:Npn \driver_pdf_link_margin:n #1 { } +\cs_new_protected:Npn \driver_pdf_link_margin:n #1 + { \__driver_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } } +\cs_new_protected:Npn \driver_pdf_destination:nn #1#2 + { + \__driver_pdf:x + { + dest ~ ( \exp_not:n {#1} ) + [ + @thispage + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ @xpos ~ @ypos ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH } + { fitbv } { /FitBV ~ @xpos } + { fith } { /FitH ~ @ypos } + { fitv } { /FitV ~ @xpos } + } + { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } } + ] + } + } +\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2 + { + \group_begin: + \hbox_set:Nn \l__driver_pdf_tmp_box {#2} + \box_move_down:nn { \box_dp:N \l__driver_pdf_tmp_box } + { + \hbox:n + { + \__driver_pdf:n { obj ~ @driver_#1_llx ~ @xpos } + \__driver_pdf:n { obj ~ @driver_#1_lly ~ @ypos } + } + } + \box_use:N \l__driver_pdf_tmp_box + \box_move_up:nn { \box_ht:N \l__driver_pdf_tmp_box } + { + \hbox:n + { + \__driver_pdf:n + { + dest ~ (#1) + [ + @thispage + /FitR ~ + @driver_#1_llx ~ @driver_#1_lly ~ + @xpos ~ @ypos + ] + } + } + } + \group_end: + } \cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { \__driver_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } } \cs_new_protected:Npn \driver_pdf_objects_enable: { } diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index f1b0e45e22b..c5a7c0c6a6c 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}{2019-03-05}{} +\ProvidesExplPackage{l3keys2e}{2019-05-03}{} {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 4d6e3a626a4..612f3c0e235 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}{2019-03-05}{} +\ProvidesExplPackage{xfp}{2019-05-03}{} {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 baa729d56af..d102c8ad839 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty @@ -33,7 +33,7 @@ \endinput } \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} -\ProvidesExplPackage{xfrac}{2019-03-05}{} +\ProvidesExplPackage{xfrac}{2019-05-03}{} {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 91b35fd7c7b..ff8f6bca7ca 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{xparse}{2019-03-05}{} +\ProvidesExplPackage{xparse}{2019-05-03}{} {L3 Experimental document command parser} \tl_new:N \l__xparse_arg_spec_tl \tl_new:N \l__xparse_args_tl @@ -238,6 +238,7 @@ } \cs_new_protected:Npn \__xparse_start_env:nnnnn #1#2 { + \cs_if_exist_use:N \conditionally@traceoff \str_set:Nn \l__xparse_environment_str {#2} \bool_set_true:N \l__xparse_environment_bool \__xparse_start_aux:ccnnnn @@ -247,6 +248,7 @@ } \cs_new_protected:Npx \__xparse_start:nNNnnn #1#2#3 { + \exp_not:n { \cs_if_exist_use:N \conditionally@traceoff } \exp_not:c { xparse~function~is~not~expandable } \exp_not:n { \bool_set_false:N \l__xparse_environment_bool } \exp_not:N \__xparse_start_aux:NNnnnn @@ -266,6 +268,7 @@ { \tl_if_empty:NF \l__xparse_defaults_tl { \__xparse_defaults: } \tl_if_empty:NF \l__xparse_process_all_tl { \__xparse_args_process: } + \cs_if_exist_use:N \conditionally@traceon \exp_after:wN \l__xparse_fn_code_tl \l__xparse_args_tl } \cs_new_protected:Npn \__xparse_defaults: diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index 2d812c53b7e..ecbef06db2f 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{xtemplate}{2019-03-05}{} +\ProvidesExplPackage{xtemplate}{2019-05-03}{} {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