summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-05-28 21:24:36 +0000
committerKarl Berry <karl@freefriends.org>2019-05-28 21:24:36 +0000
commit0411921af7908fa9daf388b67db154e9fc51caca (patch)
treef5405f2fef2bc7b0ae9eb9c8809377b88d70c760 /Master/texmf-dist
parentc55b67ba30f320ddfc93fbdca08cab7512704011 (diff)
l3 (28may19)
git-svn-id: svn://tug.org/texlive/trunk@51248 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md15
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/README.md10
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdfbin313932 -> 314831 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdfbin330709 -> 330992 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdfbin349996 -> 350273 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdfbin623726 -> 623975 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdfbin488743 -> 489014 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdfbin0 -> 363678 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdfbin399678 -> 399965 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdfbin344714 -> 344992 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdfbin311958 -> 312236 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdfbin373179 -> 373457 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdfbin386043 -> 386318 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdfbin285965 -> 286250 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md16
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin586609 -> 586893 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1542860 -> 1545384 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin263575 -> 263861 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin280319 -> 280597 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin228038 -> 228301 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdfbin186826 -> 187099 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin5806829 -> 5817874 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3body.tex7
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md7
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdfbin327402 -> 327677 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdfbin310186 -> 310471 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdfbin481597 -> 481873 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdfbin501496 -> 501765 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdfbin416697 -> 416969 bytes
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx61
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx716
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins56
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx119
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx88
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx52
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx19
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx81
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx4
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty6
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty46
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty307
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex137
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.lua2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvips.def37
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def43
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def4
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty4
-rw-r--r--Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty2
165 files changed, 1815 insertions, 328 deletions
diff --git a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
index f961c359d40..9f293b18966 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
@@ -7,11 +7,21 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2019-05-28]
+
+### Added
+
+- New `l3graphics` module
+
+### Fixed
+
+- Missing `\scan_stop:` in benchmark code (fixes #577)
+
## [2019-05-03]
## Fixed
-- Cliping of paths by `l3draw`
+- Clipping of paths by `l3draw`
## [2019-03-05]
@@ -75,7 +85,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-05-03...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-28...HEAD
+[2019-05-28]: https://github.com/latex3/latex3/compare/2019-05-03...2019-05-28
[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
diff --git a/Master/texmf-dist/doc/latex/l3experimental/README.md b/Master/texmf-dist/doc/latex/l3experimental/README.md
index 0bdc66ae89b..cf1141be526 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-05-03
+Release 2019-05-28
Overview
--------
@@ -25,11 +25,11 @@ bundles:
* `l3cctab`
* `l3color`
* `l3draw`
+* `l3graphics`
* `l3str`
* `l3sys-shell`
* `xcoffins`
* `xgalley`
-* `xmarks`
`l3benchmark`
-------------
@@ -58,6 +58,12 @@ This module provides a code-level interface for constructing drawings. The
interfaces are heavily inspired by the `pgf` layer of the widely-used
TikZ system.
+`l3graphics`
+-------------
+
+This module provides interfaces for the inclusion of graphics files
+in documents, similar to the `graphics` package.
+
`l3str`
-------
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
index 5d0b98fe323..4f89389c8ef 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
index 153c3507cd1..b8f090325e2 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
index b4c817ad1d1..6fe80500240 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
Binary files 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 4cb96ed35cc..ba355b2f459 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
index 34b26ec63b3..977632190ff 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf b/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
new file mode 100644
index 00000000000..a86638228fe
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3graphics/l3graphics.pdf
Binary files 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 562388df288..a6de90f27e0 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
Binary files 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 9115fb08b05..29b8f8ecb52 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
Binary files 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 a0af1966a00..1bf076ed62f 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
index c30c6aa10e5..99ec75598d4 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
index 8408ef4f24d..ad1722b75ab 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
index 0e590b82b1b..96353edc24a 100644
--- a/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
+++ b/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
index 63e8548ca17..b9988bdaef2 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
@@ -7,6 +7,17 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2019-05-28]
+
+### Added
+
+- Experimental `\file_compare_timestamp:nNn(TF)`
+
+### Changed
+
+- Precedence of juxtaposition (implicit multiplication) in l3fp
+ now different for keywords/variables and factors in parentheses
+
## [2019-05-09]
### Added
@@ -22,7 +33,7 @@ this project uses date-based 'snapshot' version identifiers.
### Added
-- `.muskip:N` property
+- `.muskip_set:N` property
### Changed
@@ -407,7 +418,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-05-09...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-28...HEAD
+[2019-05-28]: https://github.com/latex3/latex3/compare/2019-05-09...2019-05-28
[2019-05-09]: https://github.com/latex3/latex3/compare/2019-05-07...2019-05-09
[2019-05-07]: https://github.com/latex3/latex3/compare/2019-05-05...2019-05-07
[2019-05-05]: https://github.com/latex3/latex3/compare/2019-05-03...2019-05-05
diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md
index 3f7a8067c46..1a0d088e6e4 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/README.md
+++ b/Master/texmf-dist/doc/latex/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2019-05-09
+Release 2019-05-28
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index 382fb2314e7..7ae7a5c282c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
index 723b316575b..2630e677388 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
index 71aff240816..74a5d4a382f 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-09}
+\date{Released 2019-05-28}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index 25a43b0807f..421941c18de 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
index dbea8015d1b..143c0636a2e 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
index f834ab02ee4..75a3ac45ef6 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-09}
+\date{Released 2019-05-28}
\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 3b0ae7b0c56..d8de4454b82 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
index b625e65cf3c..444f4ea3255 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-09}
+\date{Released 2019-05-28}
\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 18fcf09850a..29b6ebee14d 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
index bb1a5c5caaa..e2d694bbd7a 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-09}
+\date{Released 2019-05-28}
\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 a0be473fae7..97d91022f56 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3.tex b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
index 91e5f72f6fd..0690e2883dd 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3.tex
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-05-09}
+\date{Released 2019-05-28}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
index 2c55586d3c9..94f74261d8c 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
@@ -168,9 +168,10 @@ following argument specifiers:
precisely in non-\LuaTeX{} engines older than 2019.
\item[\texttt{f}] The \texttt{f} specifier stands for \emph{full
expansion}, and in contrast to \texttt{x} stops at the first
- non-expandable item (reading the argument from left to right) without
- trying to expand it. For example, when setting a token list
- variable (a macro used for storage), the sequence
+ non-expandable token (reading the argument from left to right) without
+ trying to expand it. If this token is a \meta{space token}, it is gobbled,
+ and thus won't be part of the resulting argument. For example, when
+ setting a token list variable (a macro used for storage), the sequence
\begin{verbatim}
\tl_set:Nn \l_mya_tl { A }
\tl_set:Nn \l_myb_tl { B }
diff --git a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
index 994b4dc2b48..9f4f5373015 100644
--- a/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
+++ b/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
@@ -7,6 +7,10 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2019-05-28]
+
+- Remove stray spaces in processor information
+
## [2019-05-03]
### Added
@@ -46,7 +50,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-05-03...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-28...HEAD
+[2019-05-28]: https://github.com/latex3/latex3/compare/2019-05-03...2019-05-28
[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
diff --git a/Master/texmf-dist/doc/latex/l3packages/README.md b/Master/texmf-dist/doc/latex/l3packages/README.md
index 690261aedba..413bc2a8a67 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-05-03
+Release 2019-05-28
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
index 93919c63e45..aee2995d1f1 100644
--- a/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
index 5c08ea6300a..3f595b37c9a 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
index b770b367a46..9a4da3d7b33 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
index c84f2aeb7d0..4fb161e35e2 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
index d69232e2518..0b716f7d707 100644
--- a/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
+++ b/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
index 1bb701c02ee..218988c8050 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -66,8 +66,10 @@
% \cs{sys_timer:}
% \end{syntax}
% Expands to the current value of the engine's timer clock, a
-% non-negative integer. In engines without clock support this
-% expands to $0$.
+% non-negative integer. In engines without clock support this expands
+% to $0$ after an error. In \LuaTeX{} only the CPU time is measured,
+% while in other engines real time is measured (including time waiting
+% for user input).
% \end{function}
%
% \section{Benchmark}
@@ -128,7 +130,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3benchmark}{2019-05-03}{}
+\ProvidesExplPackage{l3benchmark}{2019-05-28}{}
{L3 Experimental benchmarking}
%</package>
% \end{macrocode}
@@ -148,13 +150,13 @@
\sys_if_engine_luatex:TF
{
\cs_new:Npn \sys_timer:
- { \int_eval:w \lua_now:n { l3kernel.elapsedtime() } \scan_stop: }
+ { \lua_now:n { l3kernel.elapsedtime() } }
}
{
\cs_if_exist:NT \tex_elapsedtime:D
{
\cs_new:Npn \sys_timer:
- { \int_eval:w \tex_elapsedtime:D }
+ { \int_value:w \tex_elapsedtime:D }
}
}
\@@_const:nn { sys_if_timer_exist }
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
index 70952138e5e..e058c450900 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -150,7 +150,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3cctab}{2019-05-03}{}
+\ProvidesExplPackage{l3cctab}{2019-05-28}{}
{L3 Experimental category code tables}
%</package>
% \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 92ca58363a2..52e60d2b7a2 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -265,7 +265,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3color}{2019-05-03}{}
+\ProvidesExplPackage{l3color}{2019-05-28}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
@@ -292,9 +292,9 @@
%
% \subsection{Setup}
%
-% \begin{variable}{\l_@@_tmp_tl}
+% \begin{variable}{\l_@@_internal_tl}
% \begin{macrocode}
-\tl_new:N \l_@@_tmp_tl
+\tl_new:N \l_@@_internal_tl
% \end{macrocode}
% \end{variable}
%
@@ -451,15 +451,7 @@
\driver_color_pickup:N \l_@@_current_tl
\tl_set_eq:cN { l_@@_named_ . _tl } \l_@@_current_tl
%</package>
- \group_begin:
- \seq_map_inline:Nn \l_char_active_seq
- {
- \tl_set:Nx \l_@@_tmp_tl { \cs_to_str:N ##1 }
- \char_set_active_eq:NN ##1 \l_@@_tmp_tl
- }
- \tl_set:Nx \l_@@_tmp_tl {#1}
- \exp_args:NNV \group_end:
- \@@_parse:nN \l_@@_tmp_tl #2
+ \exp_args:Ne \@@_parse:nN { \tl_to_str:n {#1} } #2
}
% \end{macrocode}
% Before going to all of the effort of parsing an expression, these two
@@ -496,10 +488,10 @@
\group_begin:
\@@_extract:nNN {#2} \l_@@_model_tl \l_@@_value_tl
\@@_parse_loop:w #3 ! ! ! ! \q_stop
- \tl_set:Nx \l_@@_tmp_tl
+ \tl_set:Nx \l_@@_internal_tl
{ \l_@@_model_tl \c_space_tl \l_@@_value_tl }
\exp_args:NNNV \group_end:
- \tl_set:Nn #1 \l_@@_tmp_tl
+ \tl_set:Nn #1 \l_@@_internal_tl
}
% \end{macrocode}
% This is the loop proper: there can be an open-ended set of colors to parse,
@@ -633,21 +625,42 @@
% \end{macro}
%
% \begin{macro}[EXP]
-% {\@@_parse_gray:w, \@@_parse_rgb:w, \@@_parse_cmyk:w, \@@_parse_spot:w}
+% {
+% \@@_parse_model_gray:w, \@@_parse_model_rgb:w,
+% \@@_parse_model_cmyk:w, \@@_parse_model_spot:w
+% }
+% \begin{macro}[EXP]{\@@_parse_number:n}
+% \begin{macro}[EXP]{\@@_parse_number:w}
% \begin{macro}[EXP]{\@@_parse_spot_aux:w}
-% Turn the input into internal form.
+% Turn the input into internal form, also tidying up the number quickly.
% \begin{macrocode}
-\cs_new:Npn \@@_parse_gray:w #1 , #2 \q_stop {#1}
-\cs_new:Npn \@@_parse_rgb:w #1 , #2 , #3 , #4 \q_stop { #1 ~ #2 ~ #3 }
-\cs_new:Npn \@@_parse_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
- { #1 ~ #2 ~ #3 ~ #4 }
-\cs_new:Npn \@@_parse_spot:w #1 , #2 \q_stop
+\cs_new:Npn \@@_parse_model_gray:w #1 , #2 \q_stop { \@@_parse_number:n {#1} }
+\cs_new:Npn \@@_parse_model_rgb:w #1 , #2 , #3 , #4 \q_stop
+ {
+ \@@_parse_number:n {#1} ~
+ \@@_parse_number:n {#2} ~
+ \@@_parse_number:n {#3}
+ }
+\cs_new:Npn \@@_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
+ {
+ \@@_parse_number:n {#1} ~
+ \@@_parse_number:n {#2} ~
+ \@@_parse_number:n {#3} ~
+ \@@_parse_number:n {#4}
+ }
+\cs_new:Npn \@@_parse_model_spot:w #1 , #2 \q_stop
{ \@@_parse_spot_aux:w #1 ! 100 ! \q_stop }
\cs_new:Npn \@@_parse_spot_aux:w #1 ! #2 ! #3 \q_stop
{ #1 ~ \fp_eval:n { #2 / 100 } }
+\cs_new:Npn \@@_parse_number:n #1
+ { \@@_parse_number:w #1 . 0 . \q_stop }
+\cs_new:Npn \@@_parse_number:w #1 . #2 . #3 \q_stop
+ { \tl_if_blank:nTF {#1} { 0 } {#1} . #2 }
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \subsection{Selecting colors (and color models)}
%
@@ -725,10 +738,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_direct:nnN #1#2#3
{
- \cs_if_exist:cTF { @@_parse_ #1 :w }
+ \cs_if_exist:cTF { @@_parse_model_ #1 :w }
{
\tl_set:Nx #3
- { #1 ~ \use:c { @@_parse_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
+ { #1 ~ \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
\@@_check_model:N #3
}
{
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 0859e7a2f9d..e3994c49e3c 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-05-03}
+% \date{Released 2019-05-28}
%
% \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 7d5ae3948d6..a24b87bb6bd 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-05-03}
+% \date{Released 2019-05-28}
%
% \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 874d1910d09..f3c76c0f24e 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
index bda4d40370a..460e8b122d6 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-05-03}
+% \date{Released 2019-05-28}
%
% \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 d360a1ccba5..3797642b8fe 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-05-03}
+% \date{Released 2019-05-28}
%
% \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 13d77d0fdc9..b1cbf83e5e4 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
index 2cf0bf5d500..cbf1eca6768 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-05-03}
+% \date{Released 2019-05-28}
%
% \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 e8393ec9ee2..77850944890 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
index b4a3ed383bd..d01788b0c80 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -1145,7 +1145,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3draw}{2019-05-03}{}
+\ProvidesExplPackage{l3draw}{2019-05-28}{}
{L3 Experimental core drawing support}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
new file mode 100644
index 00000000000..b8378682a59
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
@@ -0,0 +1,716 @@
+% \iffalse meta-comment
+%
+%% File: l3graphics.dtx
+%
+% Copyright (C) 2017-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
+%
+% http://www.latex-project.org/lppl.txt
+%
+% This file is part of the "l3experimental bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver|package>
+\RequirePackage{expl3}
+%</driver|package>
+%<*driver>
+\documentclass[full]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \pkg{l3graphics} package\\ Graphics inclusion support^^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-28}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{\pkg{l3graphics} documentation}
+%
+% \subsection{Driver functions}
+%
+% Inclusion of graphic files requires a range of low-level data be passed to
+% the driver layer. These functions are primarily aimed at supporting this
+% work.
+%
+% \begin{variable}{\l_graphics_decodearray_tl}
+% Array to decode color in bitmap graphic: when non-empty, this should
+% be in the form of one, two or three pairs of real numbers in the range
+% $[0,1]$, separated by spaces.
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_interpolate_bool}
+% Indicates whether interpolation should be applied to bitmap graphic files.
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_page_int}
+% The page to extract from a multi-page graphic file: used for |.pdf| files
+% which may contain multiple pages.
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_pagebox_tl}
+% The nature of the page box setting used to determine the bounding box of
+% material: used for |.pdf| files which feature multiple page box
+% specifications.
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_draft_bool}
+% Switch to enable draft mode: graphics are read but not included when this is
+% true.
+% \end{variable}
+%
+% \begin{variable}
+% {\l_graphics_llx_dim, \l_graphics_lly_dim, \l_graphics_urx_dim, \l_graphics_ury_dim}
+% Dimensions which return the points $(\meta{llx},\meta{lly})$ and
+% $(\meta{urx},\meta{ury})$ for the graphic. For many graphics only the resulting
+% height and width are significant, but this is driver-dependent.
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_name_bool}
+% The name of a graphics file being loaded: usually the same as the
+% input file name, but may be altered by some drivers.
+% \end{variable}
+%
+% \begin{function}
+% {
+% \graphics_bb_save:n, \graphics_bb_save:x,
+% \graphics_bb_restore:nF, \graphics_bb_restore:xF
+% }
+% \begin{syntax}
+% \cs{graphics_bb_save:n} \Arg{graphic}
+% \cs{graphics_bb_restore:nF} \Arg{graphic} \Arg{false code}
+% \end{syntax}
+% This pair of functions are used to cache the bounding box of an \meta{graphic}
+% so that extraction/reading is only required once. The \texttt{save}
+% function stores the values from \cs{l_graphics_llx_dim},
+% \cs{l_graphics_lly_dim}, \cs{l_graphics_urx_dim} and
+% \cs{l_graphics_ury_dim} as constants. The \texttt{restore} function will then
+% look up values for the bounding box of an \meta{graphic} and set the four
+% dimensions appropriately. For any one \meta{graphic} the bounding box will
+% be constant, so the \texttt{save} function should only be called once. Thus
+% a typical use case is
+% \begin{verbatim}
+% \graphics_bb_restore:nF { <name> }
+% {
+% % Code to read the bb
+% \graphics_bb_save:n { <name> }
+% }
+% \end{verbatim}
+% \emph{i.e.}~every use of a bounding box will attempt to restore saved data,
+% and saving will only take place where that is not possible.
+%
+% Note that the \meta{graphic} may not be a simple file name: a multi-page PDF,
+% for example, will need to have the bounding box cached for each page used.
+% \end{function}
+%
+% \begin{function}{\graphics_extract_bb:n}
+% \begin{syntax}
+% \cs{graphics_extract_bb:n} \Arg{file}
+% \end{syntax}
+% Extracts bounding box data for the graphic \meta{file} using the |extractbb|
+% utility, and stores the bounding box of the graphic file in
+% \cs{l_graphics_llx_dim}, \cs{l_graphics_lly_dim}, \cs{l_graphics_urx_dim} and
+% \cs{l_graphics_ury_dim}.
+%
+% The \meta{file} name should be fully-qualified and sanitized: no search
+% or other manipulation is carried out at this level. No check is made on
+% the file \emph{type} at this stage: it is assumed that the driver code
+% using this function has made such a check. File types such as |.pdf| and
+% |.jpg| are appropriate for parsing using this function.
+%
+% When \cs{l_graphics_page_int} is positive the appropriate page will be
+% queried from the graphic file.
+%
+% Note that this function requires pipe shell calls to be enabled: this is
+% generally true but may require the option |--enable-pipes| to be enabled
+% when running the \TeX{} job.
+% \end{function}
+%
+% \begin{function}{\graphics_read_bb:n}
+% \begin{syntax}
+% \cs{graphics_read_bb:n} \Arg{file}
+% \end{syntax}
+% Parses the graphic \meta{file} to find a PostScript-style bounding box
+% line of the form
+% \begin{verbatim}
+% %%BoundingBox: llx lly urx urx
+% \end{verbatim}
+% where \meta{llx}, \meta{lly}, \meta{urx} and \meta{ury} are the corners
+% of the bounding box expressed in PostScript (\enquote{big}) points. The
+% values are stored in \cs{l_graphics_llx_dim}, \cs{l_graphics_lly_dim},
+% \cs{l_graphics_urx_dim} and \cs{l_graphics_ury_dim}.
+%
+% The \meta{file} name should be fully-qualified and sanitized: no search
+% or other manipulation is carried out at this level. No check is made on
+% the file \emph{type} at this stage: it is assumed that the driver code
+% using this function has made such a check. File types such as |.eps| and
+% |.bb|/|.xbb| are appropriate for parsing using this function.
+% \end{function}
+%
+% \begin{function}{\graphics_include:n, \graphics_include:nn}
+% \begin{syntax}
+% \cs{graphics_include:n} \Arg{file}
+% \cs{graphics_include:nn} \Arg{file} \Arg{type}
+% \end{syntax}
+% Horizontal-mode commands which include the \meta{file} as an graphic
+% at the current location. The file \meta{type} is given explicitly in
+% the two-argument version, or is inferred from the file extension extracted
+% in the single-argument form. The exact graphic types supported depend upon
+% the driver in use.
+%
+% Where the \meta{file} is not found and the \meta{type} is \emph{not}
+% given, a search for possible graphic files is undertaken using the extensions
+% stored in \cs{l_graphics_search_ext_seq}.
+% \end{function}
+%
+% \begin{variable}{\l_graphics_ext_type_prop}
+% Defines mapping between file extensions and file types; where there is
+% no entry for an extension, the type is assumed to be the extension
+% with the leading |.| removed. Entries should be made in lower case, and
+% the key should be an extension including the leading |.|, for example
+% \begin{verbatim}
+% \prop_put:Nnn \l_graphics_ext_type_prop { .ps } { eps }
+% \end{verbatim}
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_search_ext_seq}
+% Extensions to use for graphic searching when the given \meta{file} name is not
+% found by \cs{graphics_include:n}.
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_search_path_seq}
+% Each entry is the path to a directory which should be searched when
+% seeking an graphic file. Each path can be relative or absolute, and should
+% not include the trailing slash. The entries are not expanded when
+% used so may contain active characters but should not feature any
+% variable content. Spaces need not be quoted.
+% \end{variable}
+%
+% \begin{function}{\graphics_show_list:, \graphics_log_list:}
+% \begin{syntax}
+% \cs{graphics_show_list:}
+% \cs{graphics_log_list:}
+% \end{syntax}
+% These functions list all graphic files loaded by in a similar manner to
+% \cs{file_show_list:} and \cs{file_log_list:}. While
+% \cs{graphics_show_list:} displays the list in the terminal,
+% \cs{graphics_log_list:} outputs it to the log file only. In both cases, only
+% graphics loaded by \pkg{l3graphics} are listed.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3graphics} implementation}
+%
+% \begin{macrocode}
+%<*initex|package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=graphics>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*package>
+\ProvidesExplPackage{l3graphics}{2019-05-28}{}
+ {L3 Experimental graphics inclusion support}
+%</package>
+% \end{macrocode}
+%
+% \begin{variable}{\l_@@_tmp_ior, \l_@@_tmp_tl}
+% Scratch space.
+% \begin{macrocode}
+\ior_new:N \l_@@_tmp_ior
+\tl_new:N \l_@@_tmp_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \subsection{Image feature support}
+%
+% \begin{macro}
+% {
+% \l_graphics_decodearray_tl ,
+% \l_graphics_interpolate_bool,
+% \l_graphics_page_int ,
+% \l_graphics_pagebox_tl
+% }
+% Keys which control features of graphics. The standard value of |pagebox|
+% set up here should match the default for the drivers themselves: in
+% the absence of any other setting the |cropbox| should be used.
+% \begin{macrocode}
+\tl_new:N \l_graphics_decodearray_tl
+\tl_new:N \l_graphics_pagebox_tl
+\bool_new:N \l_graphics_interpolate_bool
+\tl_set:Nn \l_graphics_pagebox_tl { cropbox }
+\int_new:N \l_graphics_page_int
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Obtaining bounding box data}
+%
+% \begin{variable}
+% {
+% \l_graphics_llx_dim , \l_graphics_lly_dim,
+% \l_graphics_urx_dim , \l_graphics_ury_dim
+% }
+% Storage for the return of bounding box.
+% \begin{macrocode}
+\dim_new:N \l_graphics_llx_dim
+\dim_new:N \l_graphics_lly_dim
+\dim_new:N \l_graphics_urx_dim
+\dim_new:N \l_graphics_ury_dim
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\graphics_bb_save:n, \graphics_bb_save:x}
+% \begin{macro}{\graphics_bb_restore:nF, \graphics_bb_restore:xF}
+% Caching graphic bounding boxes is sensible, and these functions are needed both
+% here and for drive-specific work. So they are made available as documented
+% functions. To save on registers, the \enquote{origin} is only saved if it is
+% not at zero.
+% \begin{macrocode}
+\cs_new_protected:Npn \graphics_bb_save:n #1
+ {
+ \dim_if_exist:cTF { c_@@_ #1 _urx_dim }
+ { \__kernel_msg_error:nnn { graphic } { bb-already-cached } {#1} }
+ {
+ \dim_compare:nNnF \l_graphics_llx_dim = { 0pt }
+ { \dim_const:cn { c_@@_ #1 _llx_dim } { \l_graphics_llx_dim } }
+ \dim_compare:nNnF \l_graphics_lly_dim = { 0pt }
+ { \dim_const:cn { c_@@_ #1 _lly_dim } { \l_graphics_lly_dim } }
+ \dim_const:cn { c_@@_ #1 _urx_dim } { \l_graphics_urx_dim }
+ \dim_const:cn { c_@@_ #1 _ury_dim } { \l_graphics_ury_dim }
+ }
+ }
+\cs_generate_variant:Nn \graphics_bb_save:n { x }
+\cs_new_protected:Npn \graphics_bb_restore:nF #1#2
+ {
+ \dim_if_exist:cTF { c_@@_ #1 _urx_dim }
+ {
+ \dim_set_eq:Nc \l_graphics_urx_dim { c_@@_ #1 _urx_dim }
+ \dim_set_eq:Nc \l_graphics_ury_dim { c_@@_ #1 _ury_dim }
+ \dim_if_exist:cTF { c_@@_ #1 _llx_dim }
+ { \dim_set_eq:Nc \l_graphics_llx_dim { c_@@_ #1 _llx_dim } }
+ { \dim_zero:N \l_graphics_llx_dim }
+ \dim_if_exist:cTF { c_@@_ #1 _lly_dim }
+ { \dim_set_eq:Nc \l_graphics_lly_dim { c_@@_ #1 _lly_dim } }
+ { \dim_zero:N \l_graphics_lly_dim }
+ }
+ {#2}
+ }
+\cs_generate_variant:Nn \graphics_bb_restore:nF { x }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\graphics_extract_bb:n, \graphics_read_bb:n}
+% \begin{macro}{\@@_extract_bb_auix:nn, \@@_extract_bb_auix:Vn}
+% \begin{macro}{\@@_extract_bb_auxii:nnn}
+% \begin{macro}{\@@_extract_bb_auxiii:nnnn, \@@_extract_bb_auxiii:Vnnn}
+% \begin{macro}{\@@_extract_bb_auxiv:nnn}
+% \begin{macro}{\@@_read_bb_auxi:nnnn, \@@_read_bb_auxii:Vnnn}
+% \begin{macro}
+% {
+% \@@_read_bb_auxii:w ,
+% \@@_read_bb_auxiv:w ,
+% \@@_read_bb_auxv:w
+% }
+% Extracting the bounding box from an |.eps| or |.bb| file is done by
+% reading each line and searching for the marker text |%%BoundingBox:|.
+% The data is read as a string with a mapping over
+% the lines: as there is a colon involved, a little bit of work is needed to
+% get the matching correct. The same approach covers cases where the bounding
+% box has to be calculated by |extractbb|, with just the initial phase
+% different.
+% \begin{macrocode}
+\cs_new_protected:Npn \graphics_extract_bb:n #1
+ {
+ \int_compare:nNnTF \l_graphics_page_int > 0
+ { \@@_extract_bb_auxi:Vn \l_graphics_page_int {#1} }
+ { \@@_extract_bb_auxii:nnn {#1} { } { } }
+ }
+\cs_new_protected:Npn \@@_extract_bb_auxi:nn #1#2
+ { \@@_extract_bb_auxii:nnn {#2} { :P #1 } { -p~#1~ } }
+\cs_generate_variant:Nn \@@_extract_bb_auxi:nn { Vn }
+\cs_new_protected:Npn \@@_extract_bb_auxii:nnn #1#2#3
+ {
+ \tl_if_empty:NTF \l_graphics_pagebox_tl
+ { \@@_extract_bb_auxiv:nnn }
+ { \@@_extract_bb_auxiii:Vnnn \l_graphics_pagebox_tl }
+ {#1} {#2} {#3}
+ }
+\cs_new_protected:Npn \@@_extract_bb_auxiii:nnnn #1#2#3#4
+ { \@@_extract_bb_auxiv:nnn {#2} { : #1 #3 } { #4 -B~#1~ } }
+\cs_generate_variant:Nn \@@_extract_bb_auxiii:nnnn { V }
+\cs_new_protected:Npn \@@_extract_bb_auxiv:nnn #1#2#3
+ {
+ \@@_read_bb_auxi:nnnn {#1} {#2}
+ { \ior_shell_open:Nn \l_@@_tmp_ior { extractbb~#3-O~#1 } }
+ { pipe-failed }
+ }
+\cs_new_protected:Npn \graphics_read_bb:n #1
+ {
+ \@@_read_bb_auxi:nnnn {#1} { }
+ { \ior_open:Nn \l_@@_tmp_ior {#1} }
+ { graphic-not-found }
+ }
+% \end{macrocode}
+% Before any real searching, a check to see if there are cached values
+% available. The name of each graphic will be unique and so it's sensible to
+% store the bounding box data in \TeX{}: this avoids multiple file operations.
+% As bounding boxes here start away from the lower-left origin, we need to
+% store all four values (contrast with for example the \texttt{pdfmode}
+% driver). Here |#2| is a potential page identifier: used to allow caching of
+% individual pages in a multi-page document. Caching is applied to the
+% upper-right position in all cases, but as the lower-left will often be
+% $(0,0)$ it is only cached if required.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_read_bb_auxi:nnnn #1#2#3#4
+ {
+ \graphics_bb_restore:nF {#1#2}
+ { \@@_read_bb_auxii:nnnn {#3} {#4} {#1} {#2} }
+ }
+\cs_new_protected:Npx \@@_read_bb_auxii:nnnn #1#2#3#4
+ {
+ #1
+ \exp_not:N \ior_if_eof:NTF \exp_not:N \l_@@_tmp_ior
+ { \__kernel_msg_error:nnn { graphics } {#2} {#3} }
+ {
+ \ior_str_map_inline:Nn \exp_not:N \l_@@_tmp_ior
+ {
+ \exp_not:N \@@_read_bb_auxiii:w
+ ##1 ~ \c_colon_str \exp_not:N \q_stop
+ }
+ }
+ \exp_not:n
+ {
+ \ior_close:N \l_@@_tmp_ior
+ \dim_compare:nNnF \l_graphics_llx_dim = { 0pt }
+ { \dim_const:cn { c_@@_ #3#4 _llx_dim } { \l_graphics_llx_dim } }
+ \dim_compare:nNnF \l_graphics_lly_dim = { 0pt }
+ { \dim_const:cn { c_@@_ #3#4 _lly_dim } { \l_graphics_lly_dim } }
+ \dim_const:cn { c_@@_ #3#4 _urx_dim } { \l_graphics_urx_dim }
+ \dim_const:cn { c_@@_ #3#4 _ury_dim } { \l_graphics_ury_dim }
+ }
+ }
+\use:x
+ {
+ \cs_new_protected:Npn \exp_not:N \@@_read_bb_auxiii:w
+ ##1 \c_colon_str ##2 \exp_not:N \q_stop
+ {
+ \exp_not:N \str_if_eq:nnT
+ { \c_percent_str \c_percent_str BoundingBox }
+ {##1}
+ { \exp_not:N \@@_read_bb_auxiv:w ##2 ( ) \exp_not:N \q_stop }
+ }
+ }
+% \end{macrocode}
+% If the bounding box is |atend|, just ignore the current one and keep going.
+% Otherwise, we need to allow for tabs and multiple spaces (as the line has
+% been read as a string). The easiest way to deal with that is to scan the
+% tokens: at this stage the line fragment should be just numbers and
+% whitespace. \TeX{} will then tidy up for us, with just a leading space to
+% worry about: that is taken out by the |\use:n| here.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_read_bb_auxiv:w #1 ( #2 ) #3 \q_stop
+ {
+ \str_if_eq:nnF {#2} { atend }
+ {
+ \tl_set_rescan:Nnx \l_@@_tmp_tl
+ {
+ \char_set_catcode_space:n { 9 }
+ \char_set_catcode_space:n { 32 }
+ }
+ { \use:n #1 }
+ \exp_after:wN \@@_read_bb_auxv:w \l_@@_tmp_tl \q_stop
+ }
+ }
+% \end{macrocode}
+% A trailing space was deliberately added earlier so we know that the final
+% data point is terminated by a space.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_read_bb_auxv:w #1~#2~#3~#4~#5 \q_stop
+ {
+ \dim_set:Nn \l_graphics_llx_dim { #1 bp }
+ \dim_set:Nn \l_graphics_lly_dim { #2 bp }
+ \dim_set:Nn \l_graphics_urx_dim { #3 bp }
+ \dim_set:Nn \l_graphics_ury_dim { #4 bp }
+ \ior_map_break:
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{variable}{\l_graphics_draft_bool}
+% Relevant to including graphics but not to reading them.
+% \begin{macrocode}
+\bool_new:N \l_graphics_draft_bool
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_name_tl, \l_@@_name_tl}
+% \begin{macrocode}
+\tl_new:N \l_graphics_name_tl
+\tl_new:N \l_@@_name_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_internal_box}
+% \begin{macrocode}
+\box_new:N \l_@@_internal_box
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_dir_str \l_@@_name_str \l_@@_ext_str}
+% \begin{macrocode}
+\str_new:N \l_@@_dir_str
+\str_new:N \l_@@_name_str
+\str_new:N \l_@@_ext_str
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_search_path_seq}
+% \begin{macrocode}
+\seq_new:N \l_graphics_search_path_seq
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_search_ext_seq}
+% Used to specify fall-back extensions: actually set on a per-driver basis.
+% \begin{macrocode}
+\seq_new:N \l_graphics_search_ext_seq
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_graphics_ext_type_prop}
+% Mapping between extensions and types for non-standard mappings
+% \begin{macrocode}
+\prop_new:N \l_graphics_ext_type_prop
+\prop_put:Nnn \l_graphics_ext_type_prop { .ps } { eps }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_record_seq}
+% A list of graphic files used.
+% \begin{macrocode}
+\seq_new:N \g_@@_record_seq
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\graphics_include:n}
+% \begin{macro}{\@@_include_search:n}
+% \begin{macro}{\@@_include:}
+% \begin{macro}{\graphics_include:nn}
+% \begin{macro}
+% {
+% \@@_include_auxi:n, \@@_include_auxii:n,
+% \@@_include_auxiii:n, \@@_include_auxiv:n
+% }
+% Actually including an graphic is relatively straight-forward: most of the
+% work is done by the driver. We only have to deal with making sure the
+% box has no apparent depth. Where the first given name is not found, we
+% search based on extension only if the \meta{type} was not given. The one
+% wrinkle is that we may have found a \texttt{.tex} file matching the file
+% name stem: that's not what we want, so we have to filter out.
+% \begin{macrocode}
+\cs_new_protected:Npn \graphics_include:n #1
+ {
+ \group_begin:
+ \seq_set_eq:NN \l_file_search_path_seq \l_graphics_search_path_seq
+ \file_get_full_name:nNTF {#1} \l_@@_name_tl
+ {
+ \str_if_eq:eeTF { \l_@@_name_tl } { #1 .tex }
+ { \@@_include_search:n {#1} }
+ { \@@_include: }
+ }
+ { \@@_include_search:n {#1} }
+ \group_end:
+ }
+\cs_new_protected:Npn \@@_include_search:n #1
+ {
+ \seq_map_inline:Nn \l_graphics_search_ext_seq
+ {
+ \file_get_full_name:nNT { #1 . ##1 } \l_@@_name_tl
+ { \seq_map_break:n { \use_i:nnn \@@_include: } }
+ }
+ \use:n
+ { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
+ }
+\cs_new_protected:Npn \@@_include:
+ {
+ \file_parse_full_name:VNNN \l_@@_name_tl
+ \l_@@_dir_str \l_@@_name_str \l_@@_ext_str
+ \exp_args:Ne \@@_include_auxi:n
+ {
+ \exp_args:Ne \str_tail:n
+ { \str_fold_case:V \l_@@_ext_str }
+ }
+ }
+\cs_new_protected:Npn \graphics_include:nn #1#2
+ {
+ \group_begin:
+ \seq_set_eq:NN \l_file_search_path_seq \l_graphics_search_path_seq
+ \file_get_full_name:nNTF {#1} \l_@@_name_tl
+ {
+ \exp_args:Ne \@@_include_auxi:n
+ { \str_fold_case:n {#1} }
+ }
+ { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
+ \group_end:
+ }
+\cs_new_protected:Npn \@@_include_auxi:n #1
+ {
+ \prop_get:NnNF \l_graphics_ext_type_prop { .#1 } \l_@@_internal_tl
+ { \tl_set:Nn \l_@@_internal_tl {#1} }
+ \exp_args:NV \@@_include_auxii:n \l_@@_internal_tl
+ }
+\cs_new_protected:Npn \@@_include_auxii:n #1
+ {
+ \mode_leave_vertical:
+ \cs_if_exist:cTF { driver_graphics_include_ #1 :n }
+ {
+ \tl_set_eq:NN \l_graphics_name_tl \l_@@_name_tl
+ \exp_args:NnV \use:c { driver_graphics_getbb_ #1 :n }
+ \l_@@_name_tl
+ \seq_gput_right:NV \g_@@_record_seq \l_graphics_name_tl
+%<*package>
+ \clist_if_exist:NT \@filelist
+ { \exp_args:NV \@addtofilelist \l_graphics_name_tl }
+%</package>
+ \bool_if:NTF \l_graphics_draft_bool
+ { \@@_include_auxiii:n }
+ { \@@_include_auxiv:n }
+ {#1}
+ }
+ { \__kernel_msg_error:nnn { graphics } { unsupported-graphic-type } {#1} }
+ }
+\cs_new_protected:Npn \@@_include_auxiii:n #1
+ {
+ \hbox_to_wd:nn { \l_graphics_urx_dim - \l_graphics_llx_dim }
+ {
+ \tex_vrule:D
+ \tex_hss:D
+ \vbox_to_ht:nn
+ { \l_graphics_ury_dim - \l_graphics_lly_dim }
+ {
+ \tex_hrule:D width
+ \dim_eval:n { \l_graphics_urx_dim - \l_graphics_llx_dim }
+ \tex_vss:D
+ \hbox_to_wd:nn
+ { \l_graphics_urx_dim - \l_graphics_llx_dim }
+ {
+%<*package>
+ \ttfamily
+%</package>
+ \tex_hss:D \l_@@_name_tl \tex_hss:D
+ }
+ \tex_vss:D
+ \tex_hrule:D
+ }
+ \tex_hss:D
+ \tex_vrule:D
+ }
+ }
+\cs_new_protected:Npn \@@_include_auxiv:n #1
+ {
+ \hbox_set:Nn \l_@@_internal_box
+ {
+ \exp_args:NnV \use:c { driver_graphics_include_ #1 :n }
+ \l_@@_name_tl
+ }
+ \box_set_dp:Nn \l_@@_internal_box { 0pt }
+ \box_set_ht:Nn \l_@@_internal_box
+ { \l_graphics_ury_dim - \l_graphics_lly_dim }
+ \box_set_wd:Nn \l_@@_internal_box
+ { \l_graphics_urx_dim - \l_graphics_llx_dim }
+ \box_use_drop:N \l_@@_internal_box
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\graphics_show_list:, \graphics_log_list:, \@@_list:N}
+% \begin{macro}[EXP]{\@@_list_aux:n}
+% A function to list all graphic files used.
+% \begin{macrocode}
+\cs_new_protected:Npn \graphics_show_list: { \@@_list:N \msg_show:nnxxxx }
+\cs_new_protected:Npn \graphics_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \@@_list:N #1
+ {
+ \seq_remove_duplicates:N \g_@@_record_seq
+ #1 { LaTeX/kernel } { file-list }
+ { \seq_map_function:NN \g_@@_record_seq \@@_list_aux:n }
+ { } { } { }
+ }
+\cs_new:Npn \@@_list_aux:n #1 { \iow_newline: #1 }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Messages}
+%
+% \begin{macrocode}
+\__kernel_msg_new:nnnn { graphics } { graphic-not-found }
+ { Image~file~'#1'~not~found. }
+ {
+ LaTeX~tried~to~open~graphic~file~'#1',
+ ~but~the~file~could~not~be~read.
+ }
+\__kernel_msg_new:nnnn { graphics } { pipe-failed }
+ { Cannot~run~piped~system~commands. }
+ {
+ LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
+ Try~the~"--shell-escape"~(or~"--enable-pipes")~option.
+ }
+\__kernel_msg_new:nnnn { graphics } { unsupported-graphic-type }
+ { Image~type~'#1'~not~supported~by~current~driver. }
+ {
+ LaTeX~was~asked~to~include~an~graphic~of~type~'#1',~
+ but~this~is~not~supported~by~the~current~driver~(production~route).
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</initex|package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins
new file mode 100644
index 00000000000..815535a352c
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins
@@ -0,0 +1,56 @@
+\iffalse meta-comment
+
+File l3graphics.ins Copyright (C) 2017,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
+
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+-----------------------------------------------------------------------
+
+The development version of the bundle can be found at
+
+ https://github.com/latex3/latex3
+
+for those people who are interested.
+
+-----------------------------------------------------------------------
+
+Any modification of this file should ensure that the copyright and
+license information is placed in the derived files.
+
+\fi
+
+\input l3docstrip.tex
+\askforoverwritefalse
+
+\preamble
+
+Copyright (C) 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:
+
+ http://www.latex-project.org/lppl.txt
+
+This file is part of the "l3experimental bundle" (The Work in LPPL)
+and all files in that bundle must be distributed together.
+
+\endpreamble
+% stop docstrip adding \endinput
+\postamble
+\endpostamble
+
+\keepsilent
+
+\generate{\file{l3graphics.sty}{\from{l3graphics.dtx}{package}}}
+
+\endbatchfile
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 33c7b8fa7a5..fb218771a5a 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
@@ -1,6 +1,8 @@
% \iffalse meta-comment
%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
+%
+% Copyright (C) 2013-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
@@ -46,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -234,7 +236,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-convert}{2019-05-03}{}
+\ProvidesExplPackage{l3str-convert}{2019-05-28}{}
{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 afb473ccfb9..70448816fb3 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -164,7 +164,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2019-05-03}{}
+\ProvidesExplPackage{l3str-format}{2019-05-28}{}
{L3 Experimental string formatting}
%</package>
% \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 173abde66b4..64ab863d807 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -136,7 +136,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3sys-shell}{2019-05-03}{}
+\ProvidesExplPackage{l3sys-shell}{2019-05-28}{}
{L3 Experimental system shell functions}
%</package>
% \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 803b8188769..59860d70d1d 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -675,7 +675,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2019-05-03}{}
+\ProvidesExplPackage{xcoffins}{2019-05-28}{}
{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 04ec76c9270..716bea363ab 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -687,7 +687,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2019-05-03}{}
+\ProvidesExplPackage{l3galley}{2019-05-28}{}
{L3 Experimental galley code}
%</package>
% \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 556a51a9511..deefd7a4416 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -734,7 +734,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2019-05-03}{}
+\ProvidesExplPackage{xgalley}{2019-05-28}{}
{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 7ddce6aa8ac..72c1d220e18 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -23,7 +23,7 @@
% for those people who are interested.
%
%<*driver|generic|package>
-\def\ExplFileDate{2019-05-09}%
+\def\ExplFileDate{2019-05-28}%
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
index f41ceae0743..01fcdcf977e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 659c9f20ef8..188fbfd0f8d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 88605016fd7..ffda0047028 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index ec3fd41f603..91eb4593b05 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index 04ed6e0321e..de5a5011bb8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -299,6 +299,25 @@
%
% \section{Additions to \pkg{l3file}}
%
+% \begin{function}[added = 2019-05-13, TF]{\file_compare_timestamp:nNn}
+% \begin{syntax}
+% \cs{file_compare_timestamp:nNn} \Arg{file-1} \meta{comparator} \Arg{file-2} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Compares the file stamps on the two \meta{files} as indicated by
+% the \meta{comparator}, and inserts either the \meta{true code}
+% or \meta{false case} as required. A file which is not found
+% is treated as older than any file which is found.This allows for
+% example the construct
+% \begin{verbatim}
+% \file_compare_timestamp:nNnT { source-file } > { derived-file }
+% {
+% % Code to regenerate derived file
+% }
+% \end{verbatim}
+% to work when the derived file is entirely absent. The timestamp
+% of two absent files is regarded as different.
+% \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}
@@ -2346,6 +2365,104 @@
% \subsection{Additions to \pkg{l3file}}
%
% \begin{macrocode}
+%<@@=file>
+% \end{macrocode}
+%
+% \begin{macro}[EXP]{\@@_str_cmp:nn}
+% \begin{macro}[EXP]{\@@_str_escape:n}
+% As we are doing a fixed-length \enquote{big} integer comparison, it
+% is easiest to use the low-level behavior of string comparisons.
+% \begin{macrocode}
+\cs_new:Npn \@@_str_cmp:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\sys_if_engine_luatex:T
+ {
+ \cs_set:Npn \@@_str_cmp:nn #1#2
+ {
+ \lua_now:e
+ {
+ l3kernel.strcmp
+ (
+ " \@@_str_escape:n {#1}",
+ " \@@_str_escape:n {#2}"
+ )
+ }
+ }
+ \cs_new:Npn \@@_str_escape:n #1
+ {
+ \lua_escape:e
+ { \__kernel_tl_to_str:w \use:e { {#1} } }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_first_tl, \l_@@_second_tl}
+% \begin{macrocode}
+\tl_new:N \l_@@_first_tl
+\tl_new:N \l_@@_second_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[TF]{\file_compare_timestamp:nNn}
+% \begin{macro}[EXP]{\@@_timestamp:n}
+% Comparison of file date can be done by using the low-level nature of the
+% string comparison functions. This could be expandable but that would
+% skip any file look-up: to stay consistent we retain that at the cost of
+% expansion.
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
+ { T , F , TF }
+ {
+ \group_begin:
+ \file_get_full_name:nNTF {#1} \l_@@_first_tl
+ {
+ \file_get_full_name:nNTF {#3} \l_@@_second_tl
+ {
+ \if_int_compare:w
+ \@@_str_cmp:nn
+ { \@@_timestamp:n \exp_after:wN { \l_@@_first_tl } }
+ { \@@_timestamp:n \exp_after:wN { \l_@@_second_tl } }
+ #2 0 \exp_stop_f:
+ \group_end:
+ \prg_return_true:
+ \else:
+ \group_end:
+ \prg_return_false:
+ \fi:
+ }
+ {
+ \group_end:
+ \if_charcode:w #2 >
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+ {
+ \group_end:
+ \if_charcode:w #2 <
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_new:Npn \@@_timestamp:n #1
+ {
+ \lua_now:e
+ { l3kernel.filemoddate ( " \lua_escape:e {#1} " ) }
+ }
+ }
+ { \cs_new_eq:NN \@@_timestamp:n \tex_filemoddate:D }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
%<@@=ior>
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 4b1444782d1..fe91c5a5baf 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index 38f3cd371d8..0aaadefe1a0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
index 393ea0f2fe5..0773fc95a4a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index ce931f0e165..12b990b8d53 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index ebbb552a31d..1bbc500dc1a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -79,7 +79,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
% \maketitle
% \tableofcontents
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index b648dd93179..9265e066746 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
index e02738d08f1..2ff21a9d65b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
index 3a7728c5b6e..945a93dc6ef 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
index ae4cde421ce..4d5c22462ca 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
index 5bdcb3bddc2..1e213647b46 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx
index 555b394ae15..86bfcfeb1f7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -108,9 +108,9 @@
% \end{macrocode}
%
% \begin{variable}{\l_@@_graphics_attr_tl}
-% In PDF mode, additional attributes of an image (such as page number) are
-% needed both to obtain the bounding box and when inserting the image: this
-% occurs as the image dictionary approach means they are read as part of
+% In PDF mode, additional attributes of an graphic (such as page number) are
+% needed both to obtain the bounding box and when inserting the graphic: this
+% occurs as the graphic dictionary approach means they are read as part of
% the bounding box operation. As such, it is easier to track additional
% attributes using a dedicated |tl| rather than build up the same data
% twice.
@@ -127,9 +127,9 @@
% }
% \begin{macro}
% {\@@_graphics_getbb_auxi:n, \@@_graphics_getbb_auxii:n}
-% Getting the bounding box here requires us to box up the image and
+% Getting the bounding box here requires us to box up the graphic and
% measure it. To deal with the difference in feature support in bitmap
-% and vector images but keeping the common parts, there is a little work
+% and vector graphics but keeping the common parts, there is a little work
% to do in terms of auxiliaries. The key here is to notice that we need
% two forms of the attributes: a \enquote{short} set to allow us to
% track for caching, and the full form to pass to the primitive.
@@ -167,7 +167,7 @@
{ \@@_graphics_getbb_auxii:n {#1} }
}
% \begin{macrocode}
-% Measuring the image is done by boxing up: for PDF images we could
+% Measuring the graphic is done by boxing up: for PDF graphics we could
% use |\tex_pdfximagebbox:D|, but if doesn't work for other types.
% As the box always starts at $(0,0)$ there is no need to worry about
% the lower-left position.
@@ -224,6 +224,60 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\driver_graphics_getbb_eps:n}
+% \begin{macro}{\@@_graphics_getbb_eps:nm}
+% \begin{macro}{\driver_graphics_include_eps:n}
+% \begin{variable}{\l_@@_dir_str, \l_@@_name_str, \l_@@_ext_str}
+% EPS graphics may be included in \texttt{pdfmode} by conversion to
+% PDF: this requires restricted shell escape. Modelled on the \pkg{epstopdf}
+% \LaTeXe{} package, but simplified, conversion takes place here if we have
+% shell access.
+% \begin{macrocode}
+\sys_if_shell:T
+ {
+ \str_new:N \l_@@_dir_str
+ \str_new:N \l_@@_name_str
+ \str_new:N \l_@@_ext_str
+ \cs_new_protected:Npn \driver_graphics_getbb_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l_@@_dir_str
+ \l_@@_name_str
+ \l_@@_ext_str
+ \exp_args:Nx \@@_graphics_getbb_eps:nn
+ {
+ \l_@@_name_str - \str_tail:N \l_@@_ext_str
+ -converted-to.pdf
+ }
+ {#1}
+ }
+ \cs_new_protected:Npn \@@_graphics_getbb_eps:nn #1#2
+ {
+ \file_compare_timestamp:nNnT {#2} > {#1}
+ {
+ \sys_shell_now:n
+ { repstopdf ~ #2 ~ #1 }
+ }
+ \tl_set:Nn \l_graphics_name_tl {#1}
+ \driver_graphics_getbb_pdf:n {#1}
+ }
+ \cs_new_protected:Npn \driver_graphics_include_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l_@@_dir_str \l_@@_name_str \l_@@_ext_str
+ \exp_args:Nx \driver_graphics_include_pdf:n
+ {
+ \l_@@_name_str - \str_tail:N \l_@@_ext_str
+ -converted-to.pdf
+ }
+ }
+ }
+% \end{macrocode}
+% \end{variable}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</pdfmode>
% \end{macrocode}
@@ -268,7 +322,7 @@
% \end{macro}
%
% \begin{variable}{\g_@@_graphics_int}
-% Used to track the object number associated with each image.
+% Used to track the object number associated with each graphic.
% \begin{macrocode}
\int_new:N \g_@@_graphics_int
% \end{macrocode}
@@ -283,7 +337,7 @@
% \begin{macro}{\@@_graphics_include_auxii:nnn, \@@_graphics_include_auxii:xnn}
% \begin{macro}{\@@_graphics_include_auxiii:nnn}
% The special syntax depends on the file type. There is a difference in
-% how PDF images are best handled between |dvipdfmx| and |xdvipdfmx|: for
+% how PDF graphics are best handled between |dvipdfmx| and |xdvipdfmx|: for
% the latter it is better to use the primitive route. The relevant code for
% that is included later in this file.
% \begin{macrocode}
@@ -306,7 +360,7 @@
{ \@@_graphics_include_auxi:nn {#1} { epdf } }
%</dvipdfmx>
% \end{macrocode}
-% Image inclusion is set up to use the fact that each image is stored in
+% Graphic inclusion is set up to use the fact that each image is stored in
% the PDF as an XObject. This means that we can include repeated images
% only once and refer to them. To allow that, track the nature of each
% image: much the same as for the direct PDF mode case.
@@ -331,14 +385,14 @@
\int_if_exist:cTF { c_@@_graphics_ #2#1 _int }
{
\@@_literal:x
- { pdf:usexobj~@image \int_use:c { c_@@_graphics_ #2#1 _int } }
+ { pdf:usexobj~@graphic \int_use:c { c_@@_graphics_ #2#1 _int } }
}
{ \@@_graphics_include_auxiii:nnn {#2} {#1} {#3} }
}
\cs_generate_variant:Nn \@@_graphics_include_auxii:nnn { x }
% \end{macrocode}
% Inclusion using the specials is relatively straight-forward, but there
-% is one wrinkle. To get the |pagebox| correct for PDF images in all cases,
+% is one wrinkle. To get the |pagebox| correct for PDF graphics in all cases,
% it is necessary to provide both that information and the |bbox| argument:
% odd things happen otherwise!
% \begin{macrocode}
@@ -349,7 +403,7 @@
\@@_literal:x
{
pdf:#3~
- @image \int_use:c { c_@@_graphics_ #1#2 _int } ~
+ @graphic \int_use:c { c_@@_graphics_ #1#2 _int } ~
\int_compare:nNnT \l_graphics_page_int > 1
{ page ~ \int_use:N \l_graphics_page_int \c_space_tl }
\tl_if_empty:NF \l_graphics_pagebox_tl
@@ -473,9 +527,9 @@
%
% \begin{macro}{\driver_graphics_include_pdf:n}
% \begin{macro}{\@@_graphics_include_bitmap_quote:w}
-% For PDF images, properly supporting the |pagebox| concept in \XeTeX{}
+% For PDF graphics, properly supporting the |pagebox| concept in \XeTeX{}
% is best done using the |\tex_XeTeXpdffile:D| primitive. The syntax here
-% is the same as for the image measurement part, although we know at this
+% is the same as for the graphic measurement part, although we know at this
% stage that there must be some valid setting for \cs{l_graphics_pagebox_tl}.
% \begin{macrocode}
\cs_new_protected:Npn \driver_graphics_include_pdf:n #1
@@ -520,9 +574,9 @@
%
% \begin{macro}{\driver_graphics_include_png:n, \driver_graphics_include_jpg:n}
% \begin{macro}{\@@_graphics_include_bitmap_quote:w}
-% The driver here has built-in support for basic image inclusion (see
+% The driver here has built-in support for basic graphic inclusion (see
% \texttt{dvisvgm.def} for a more complex approach, needed if clipping,
-% \emph{etc.}, is covered at the image driver level). The only issue is
+% \emph{etc.}, is covered at the graphic driver level). The only issue is
% that |#1| must be quote-corrected. The \texttt{dvisvgm:img} operation
% quotes the file name, but if it is already quoted (contains spaces)
% then we have an issue: we simply strip off any quotes as a result.
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
index 50215d5bf8f..62a3bea1119 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -630,6 +630,19 @@
def
/driver.breaklink.write
{
+ counttomark ~ 1 ~ sub ~
+ index /_objdef ~ eq
+ {
+ counttomark ~ -2 ~ roll ~
+ dup ~ wcheck ~
+ {
+ readonly ~
+ counttomark ~ 2 ~ roll
+ }
+ { pop ~ pop }
+ ifelse
+ }
+ if ~
counttomark ~ 1 ~ add ~ copy ~
pop ~ driver.currentrect
/ANN ~ pdfmark
@@ -645,8 +658,7 @@
% driver.pdfmark.good ,
% driver.outerbox ,
% driver.baselineskip ,
-% driver.pdfmark.dict ,
-% driver.pdfmark.obj
+% driver.pdfmark.dict
% }
% The business end of breaking links starts by hooking into |pdfmarks|.
% Unlike \pkg{hypdvips}, we avoid altering any links we have not created
@@ -676,11 +688,9 @@
Rect ~ 1 ~ get ~ sub ~
driver.baselineskip ~ div ~ round ~ cvi ~ 0 ~ gt
{ driver.breaklink }
- { driver.pdfmark.obj }
- ifelse
+ if
}
- { driver.pdfmark.obj }
- ifelse ~
+ if ~
end ~
SDict /driver.outerbox ~ undef ~
SDict /driver.baselineskip ~ undef ~
@@ -713,8 +723,6 @@
loop
}
def
- /driver.pdfmark.obj
- { /_objdef ~ exch ~ driver.link.obj ~ exch } def
}
% \end{macrocode}
% \end{macro}
@@ -835,22 +843,18 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_breaklink_obj_tl, \l_@@_breaklink_pdfmark_tl}
+% \begin{variable}{\l_@@_breaklink_pdfmark_tl}
% Swappable content for link breaking.
% \begin{macrocode}
-\tl_new:N \l_@@_breaklink_obj_tl
-\tl_set:Nn \l_@@_breaklink_obj_tl
- { /_objdef ~ { driver.obj \int_use:N \g_@@_pdf_link_int } }
\tl_new:N \l_@@_breaklink_pdfmark_tl
\tl_set:Nn \l_@@_breaklink_pdfmark_tl { pdfmark }
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_breaklink_postscript:n, \@@_breaklink_postscript:x}
+% \begin{macro}{\@@_breaklink_postscript:n}
% To allow dropping material unless link breaking is active.
% \begin{macrocode}
\cs_new_protected:Npn \@@_breaklink_postscript:n #1 { }
-\cs_generate_variant:Nn \@@_breaklink_postscript:n { x }
% \end{macrocode}
% \end{macro}
%
@@ -861,7 +865,6 @@
% \end{macrocode}
% \end{macro}
%
-%
% \begin{macro}{\driver_pdf_link_begin_goto:nnw, \driver_pdf_link_begin_user:nnw}
% \begin{macro}{\@@_pdf_link:nw, \@@_pdf_link_aux:nw}
% \begin{macro}{\driver_pdf_link_end:, \@@_pdf_link_end:}
@@ -875,7 +878,6 @@
% driver.llx, driver.lly ,
% driver.ury, driver.ury ,
% driver.link.dict ,
-% driver.link.obj ,
% driver.outerbox ,
% driver.baselineskip
% }
@@ -912,7 +914,6 @@
\cs_new_protected:Npn \@@_pdf_link_begin_aux:nw #1
{
\bool_gset_true:N \g_@@_pdf_link_bool
- \@@_pdf_annotation:nnnn { 3pt } { 3pt } { 0pt } { }
\@@_postscript:n
{ /driver.link.dict ( #1 ) def }
\tl_gset:Nn \g_@@_pdf_link_dict_tl {#1}
@@ -961,18 +962,10 @@
}
\int_gincr:N \g_@@_pdf_object_int
\int_gset_eq:NN \g_@@_pdf_link_int \g_@@_pdf_object_int
- \@@_breaklink_postscript:x
- {
- /driver.link.obj
- {
- { driver.obj \int_use:N \g_@@_pdf_link_int \c_space_tl driver.cvs }
- }
- def
- }
\@@_postscript:x
{
mark
- \l_@@_breaklink_obj_tl
+ /_objdef { driver.obj \int_use:N \g_@@_pdf_link_int }
\g_@@_pdf_link_dict_tl \c_space_tl
driver.rect
/ANN ~ \l_@@_breaklink_pdfmark_tl
@@ -1088,7 +1081,6 @@
}
}
}
- \tl_clear:N \l_@@_breaklink_obj_tl
\tl_set:Nn \l_@@_breaklink_pdfmark_tl { driver.pdfmark }
\cs_set_eq:NN \@@_breaklink_postscript:n \@@_postscript:n
\cs_set_eq:NN \@@_breaklink_usebox:N \hbox_unpack:N
@@ -1397,7 +1389,7 @@
{
\@@_tmp:w
{ \tex_pdfextension:D obj ~ }
- { \exp_not:N \tex_pdffeedback:D lastobj \scan_stop: }
+ { \exp_not:N \tex_pdffeedback:D lastobj }
}
{ \@@_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
\group_end:
@@ -1457,6 +1449,7 @@
% \begin{macrocode}
\cs_new_protected:Npx \driver_pdf_compresslevel:n #1
{
+ \exp_not:N \tex_global:D
\cs_if_exist:NTF \tex_pdfcompresslevel:D
{ \tex_pdfcompresslevel:D }
{ \tex_pdfvariable:D compresslevel }
@@ -1470,6 +1463,7 @@
}
\cs_new_protected:Npx \@@_pdf_objcompresslevel:n #1
{
+ \exp_not:N \tex_global:D
\cs_if_exist:NTF \tex_pdfobjcompresslevel:D
{ \tex_pdfobjcompresslevel:D }
{ \tex_pdfvariable:D objcompresslevel }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 24f7ad3eb9b..8e22549f2ae 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -568,15 +568,18 @@
%
% \begin{function}[EXP, added = 2019-04-11]{\driver_pdf_link_margin:n}
% \begin{syntax}
-% \cs{driver_pdf_link_margin:} \Arg{dimen}
+% \cs{driver_pdf_link_margin:n} \Arg{dimen}
% \end{syntax}
% 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
+% \pdfTeX{} and \LuaTeX{} apply this at shipout (so it is global, once per
+% page), whilst with
% \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.
+% \texttt{0pt} to avoid breaking for example animations. In general,
+% this setting should be applied once per document, prior to the
+% first page being shipped out.
% \end{function}
%
% \begin{function}[added = 2019-04-26]{\driver_pdf_destination:nn}
@@ -676,10 +679,10 @@
% \item[\texttt{array}] A space-separated list of values
% \item[\texttt{dict}] Key--value pairs in the form
% \texttt{/\meta{key} \meta{value}}
-% \item[\texttt{fstream}] Two brace groups: \meta{content} and
-% \meta{file name}
-% \item[\texttt{stream}] Two brace groups: \meta{content} and
-% \meta{additional attributes}
+% \item[\texttt{fstream}] Two brace groups: \meta{file name} and
+% \meta{content}
+% \item[\texttt{stream}] Two brace groups: \meta{attributes (dictionary)}
+% and \meta{content}
% \end{itemize}
% \end{function}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index c4afb3010fc..4f0d3af3ef1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index d6b61507d47..886e6011167 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
index fe877311103..9695d202e05 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index d5527a62785..3b487b0bec1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index 1b4e5558e7d..4029c929517 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
% \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 8eda1c12665..79aa81924ec 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index c87d4fb4bc2..2d5dc0d66ae 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index 8ff9a3b7c2d..cab359055de 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index a87bf8b1226..192a7d447c1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index 30113e4b8cd..e5d41df0b39 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index 37ee7d9a3cb..57441d7ebdc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 15227cc22ae..ff05d8a2260 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -96,6 +96,7 @@
% \c_@@_prec_hatii_int,
% \c_@@_prec_hat_int,
% \c_@@_prec_not_int,
+% \c_@@_prec_juxt_int,
% \c_@@_prec_times_int,
% \c_@@_prec_plus_int,
% \c_@@_prec_comp_int,
@@ -118,7 +119,8 @@
% \item[16] Function calls.
% \item[13/14] Binary |**| and~|^| (right to left).
% \item[12] Unary |+|, |-|, |!| (right to left).
-% \item[10] Binary |*|, |/|, and juxtaposition (implicit~|*|).
+% \item[11] Juxtaposition (implicit~|*|) with no parenthesis.
+% \item[10] Binary |*| and~|/|.
% \item[9] Binary |+| and~|-|.
% \item[7] Comparisons.
% \item[6] Logical \texttt{and}, denoted by~|&&|.
@@ -134,6 +136,7 @@
\int_const:Nn \c_@@_prec_hatii_int { 14 }
\int_const:Nn \c_@@_prec_hat_int { 13 }
\int_const:Nn \c_@@_prec_not_int { 12 }
+\int_const:Nn \c_@@_prec_juxt_int { 11 }
\int_const:Nn \c_@@_prec_times_int { 10 }
\int_const:Nn \c_@@_prec_plus_int { 9 }
\int_const:Nn \c_@@_prec_comp_int { 7 }
@@ -1946,7 +1949,7 @@
{
\exp_not:N \@@_exp_after_array_f:w #2 \s_@@_stop
\exp_not:N \exp_after:wN
- \exp_not:N \@@_parse_infix:NN
+ \exp_not:N \@@_parse_infix_after_paren:NN
\exp_not:N \exp_after:wN #1
\exp_not:N \exp:w
\exp_not:N \@@_parse_expand:w
@@ -1981,7 +1984,7 @@
\fi:
\exp_end_continue_f:w
\fi:
- \@@_parse_infix:NN #1 )
+ \@@_parse_infix_after_paren:NN #1 )
}
% \end{macrocode}
% \end{macro}
@@ -2268,7 +2271,7 @@
\exp_after:wN \@@_parse_infix_mark:NNN
\else:
\exp_after:wN \exp_after:wN
- \exp_after:wN \@@_parse_infix_mul:N
+ \exp_after:wN \@@_parse_infix_juxt:N
\fi:
\else:
\if_int_compare:w
@@ -2276,7 +2279,7 @@
( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26
= 3 \exp_stop_f:
\exp_after:wN \exp_after:wN
- \exp_after:wN \@@_parse_infix_mul:N
+ \exp_after:wN \@@_parse_infix_juxt:N
\else:
\exp_after:wN \@@_parse_infix_check:NNN
\cs:w
@@ -2288,22 +2291,57 @@
#1
#2
}
-\cs_new:Npx \@@_parse_infix_check:NNN #1#2#3
+\cs_new:Npn \@@_parse_infix_check:NNN #1#2#3
{
- \exp_not:N \if_meaning:w \scan_stop: #1
- \exp_not:N \__kernel_msg_expandable_error:nnn
+ \if_meaning:w \scan_stop: #1
+ \__kernel_msg_expandable_error:nnn
{ kernel } { fp-missing } { * }
- \exp_not:N \exp_after:wN
- \exp_not:c { @@_parse_infix_*:N }
- \exp_not:N \exp_after:wN #2
- \exp_not:N \exp_after:wN #3
- \exp_not:N \else:
- \exp_not:N \exp_after:wN #1
- \exp_not:N \exp_after:wN #2
- \exp_not:N \exp:w
- \exp_not:N \exp_after:wN
- \exp_not:N \@@_parse_expand:w
- \exp_not:N \fi:
+ \exp_after:wN \@@_parse_infix_mul:N
+ \exp_after:wN #2
+ \exp_after:wN #3
+ \else:
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \exp:w \exp_after:wN \@@_parse_expand:w
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_parse_infix_after_paren:NN}
+% Variant of \cs{@@_parse_infix:NN} for use after a closing
+% parenthesis. The only difference is that \cs{@@_parse_infix_juxt:N}
+% is replaced by \cs{@@_parse_infix_mul:N}.
+% \begin{macrocode}
+\cs_new:Npn \@@_parse_infix_after_paren:NN #1 #2
+ {
+ \if_catcode:w \scan_stop: \exp_not:N #2
+ \if_int_compare:w
+ \@@_str_if_eq:nn { \s_@@_mark } { \exp_not:N #2 }
+ = 0 \exp_stop_f:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \@@_parse_infix_mark:NNN
+ \else:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \@@_parse_infix_mul:N
+ \fi:
+ \else:
+ \if_int_compare:w
+ \@@_int_eval:w
+ ( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26
+ = 3 \exp_stop_f:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \@@_parse_infix_mul:N
+ \else:
+ \exp_after:wN \@@_parse_infix_check:NNN
+ \cs:w
+ @@_parse_infix_ \token_to_str:N #2 :N
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \cs_end:
+ \fi:
+ \fi:
+ #1
+ #2
}
% \end{macrocode}
% \end{macro}
@@ -2411,6 +2449,7 @@
% \begin{macro}[EXP]
% {
% \@@_parse_infix_+:N, \@@_parse_infix_-:N,
+% \@@_parse_infix_juxt:N,
% \@@_parse_infix_/:N, \@@_parse_infix_mul:N,
% \@@_parse_infix_and:N, \@@_parse_infix_or:N,
% }
@@ -2442,6 +2481,8 @@
}
\exp_args:Nc \@@_tmp:w { @@_parse_infix_^:N } ^
\c_@@_prec_hatii_int \c_@@_prec_hat_int
+\exp_args:Nc \@@_tmp:w { @@_parse_infix_juxt:N } *
+ \c_@@_prec_juxt_int \c_@@_prec_juxt_int
\exp_args:Nc \@@_tmp:w { @@_parse_infix_/:N } /
\c_@@_prec_times_int \c_@@_prec_times_int
\exp_args:Nc \@@_tmp:w { @@_parse_infix_mul:N } *
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index 5cf80f99ddb..b45b27d3ea1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 79c83da24de..75e0dd7653d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index 43c579ddde7..b1bf6c6ec13 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
% \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 2eb21b5137b..9e68208c9cb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index 1893a78c128..620944118d7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -858,8 +858,9 @@
% \item Function calls (\texttt{sin}, \texttt{ln}, \emph{etc}).
% \item Binary |**| and |^| (right associative).
% \item Unary |+|, |-|, |!|.
-% \item Binary |*|, |/|, and implicit multiplication by juxtaposition
-% (\texttt{2pi}, \texttt{3(4+5)}, \emph{etc}).
+% \item Implicit multiplication by juxtaposition (\texttt{2pi})
+% when neither factor is in parentheses.
+% \item Binary |*| and |/|, implicit multiplication by juxtaposition with parentheses (for instance \texttt{3(4+5)}).
% \item Binary |+| and |-|.
% \item Comparisons |>=|, |!=|, |<?|, \emph{etc}.
% \item Logical \texttt{and}, denoted by |&&|.
@@ -868,10 +869,13 @@
% \item Comma (to build tuples).
% \end{itemize}
% The precedence of operations can be overridden using parentheses.
-% In particular, those precedences imply that
+% In particular, the precedence of juxtaposition implies that
% \begin{align*}
-% \mathtt{sin 2pi} & = \sin(2)\pi != 0, \\
-% \mathtt{2\char`\^2max(3,5)} & = 2^2 \max(3,5) = 20.
+% \mathtt{1/2pi} & = 1/(2\pi), \\
+% \mathtt{1/2pi(pi+pi)} & = (2\pi)^{-1}(\pi+\pi) \simeq 1, \\
+% \mathtt{sin 2pi} & = \sin(2)\pi \neq 0, \\
+% \mathtt{2\char`\^2max(3,5)} & = 2^2 \max(3,5) = 20, \\
+% \mathtt{1in/1cm} & = (1in)/(1cm) = 2.54 .
% \end{align*}
% Functions are called on the value of their argument, contrarily to
% \TeX{} macros.
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index fa6587de3f6..0aec3f16fb1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 0eaab0032d0..5ea71b0afb6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 5e07dbf968e..59bbffa95c2 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index b543303a41d..17255a50305 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index ecb249c825d..511d1fd9b7a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
index 3c32583bff1..a67517b667f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 293d940191e..1b623da7f46 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -137,8 +137,10 @@
% \begin{syntax}
% |l3kernel.elapsedtime()|
% \end{syntax}
-% Returns the time in \meta{scaled seconds} since the start of the \TeX{} run
-% or since |l3kernel.resettimer| was issued.
+% Returns the CPU time in \meta{scaled seconds} since the start of the
+% \TeX{} run or since |l3kernel.resettimer| was issued. This only
+% measures the time used by the CPU, not the real time, e.g., waiting
+% for user input.
% \end{function}
%
% \begin{function}{l3kernel.filemdfivesum}
@@ -380,7 +382,7 @@ local function elapsedtime()
end
l3kernel.elapsedtime = elapsedtime
local function resettimer()
- base_time = 0
+ base_time = os_clock()
end
l3kernel.resettimer = resettimer
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 7a6855623b8..4f3d8a69327 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 8c9660c12b8..ed464e73e3a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 171da06d375..8380415d069 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 60e155eb59b..7658d804780 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index d5f71ff35c5..6a5b3f4cf5a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index e6e91a4393a..7246e30ed7f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 5ff1628798c..91051b576a4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 9951df03fd2..eded1d719ee 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index ef8921366c2..9b2b0fdc1f8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index c1079afa4c6..213625ab677 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index da6bd0b48b0..b411adb645e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 1fda8a3ad23..1a32c91153a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 048580b4e3d..9c6fb5f7bf7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index 84bed54d9c8..29581bb5c9b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index 107ba0369ce..77675742962 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
index 4696ceda345..92f3e82a371 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -133,7 +133,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2019-05-03}{}
+\ProvidesExplPackage{l3keys2e}{2019-05-28}{}
{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 71a0d646ebe..1b6cbd36808 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -167,7 +167,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2019-05-03}{}
+\ProvidesExplPackage{xfp}{2019-05-28}{}
{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 a67213fcb1a..fa1739eee5b 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -535,7 +535,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2019-05-03}{}
+\ProvidesExplPackage{xfrac}{2019-05-28}{}
{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 c9061d80572..6aee5f22f6f 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -898,7 +898,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2019-05-03}{}
+\ProvidesExplPackage{xparse}{2019-05-28}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
@@ -1824,7 +1824,7 @@
{ \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
\@@_bad_def:wn
}
- \tl_put_right:Nn \l_@@_arg_spec_tl { > {#1} }
+ \tl_put_right:Nx \l_@@_arg_spec_tl { > { \tl_trim_spaces:n {#1} } }
\int_decr:N \l_@@_current_arg_int
\bool_set_false:N \l_@@_grab_expandably_bool
\@@_normalize_arg_spec_loop:n {#2}
diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
index 2dec040e45b..04aa51be36d 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-05-03}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -682,7 +682,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2019-05-03}{}
+\ProvidesExplPackage{xtemplate}{2019-05-28}{}
{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 924d785f8fc..6c8cdc9cfde 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
@@ -20,18 +20,18 @@
%%
%% File: l3benchmark.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2019-05-03}{}
+\ProvidesExplPackage{l3benchmark}{2019-05-28}{}
{L3 Experimental benchmarking}
\sys_if_engine_luatex:TF
{
\cs_new:Npn \sys_timer:
- { \int_eval:w \lua_now:n { l3kernel.elapsedtime() } \scan_stop: }
+ { \lua_now:n { l3kernel.elapsedtime() } }
}
{
\cs_if_exist:NT \tex_elapsedtime:D
{
\cs_new:Npn \sys_timer:
- { \int_eval:w \tex_elapsedtime:D }
+ { \int_value:w \tex_elapsedtime:D }
}
}
\__sys_const:nn { sys_if_timer_exist }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
index 19d18d7ed74..d25f70e3f34 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-05-03}{}
+\ProvidesExplPackage{l3cctab}{2019-05-28}{}
{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 c6be03b0ae4..1285abf7ae1 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
@@ -20,9 +20,9 @@
%%
%% File: l3color.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2019-05-03}{}
+\ProvidesExplPackage{l3color}{2019-05-28}{}
{L3 Experimental color support}
-\tl_new:N \l__color_tmp_tl
+\tl_new:N \l__color_internal_tl
\prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF }
{
\tl_if_exist:cTF { l__color_named_ #1 _tl }
@@ -88,15 +88,7 @@
{
\driver_color_pickup:N \l__color_current_tl
\tl_set_eq:cN { l__color_named_ . _tl } \l__color_current_tl
- \group_begin:
- \seq_map_inline:Nn \l_char_active_seq
- {
- \tl_set:Nx \l__color_tmp_tl { \cs_to_str:N ##1 }
- \char_set_active_eq:NN ##1 \l__color_tmp_tl
- }
- \tl_set:Nx \l__color_tmp_tl {#1}
- \exp_args:NNV \group_end:
- \__color_parse:nN \l__color_tmp_tl #2
+ \exp_args:Ne \__color_parse:nN { \tl_to_str:n {#1} } #2
}
\cs_new_protected:Npn \__color_parse:nN #1#2
{
@@ -123,10 +115,10 @@
\group_begin:
\__color_extract:nNN {#2} \l__color_model_tl \l__color_value_tl
\__color_parse_loop:w #3 ! ! ! ! \q_stop
- \tl_set:Nx \l__color_tmp_tl
+ \tl_set:Nx \l__color_internal_tl
{ \l__color_model_tl \c_space_tl \l__color_value_tl }
\exp_args:NNNV \group_end:
- \tl_set:Nn #1 \l__color_tmp_tl
+ \tl_set:Nn #1 \l__color_internal_tl
}
\cs_new_protected:Npn \__color_parse_loop:w #1 ! #2 ! #3 ! #4 ! #5 \q_stop
{
@@ -222,14 +214,28 @@
\fp_eval:n { #4 * #1 + #8 * ( 1 - #1 ) } \c_space_tl
\fp_eval:n { #5 * #1 + #9 * ( 1 - #1 ) }
}
-\cs_new:Npn \__color_parse_gray:w #1 , #2 \q_stop {#1}
-\cs_new:Npn \__color_parse_rgb:w #1 , #2 , #3 , #4 \q_stop { #1 ~ #2 ~ #3 }
-\cs_new:Npn \__color_parse_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
- { #1 ~ #2 ~ #3 ~ #4 }
-\cs_new:Npn \__color_parse_spot:w #1 , #2 \q_stop
+\cs_new:Npn \__color_parse_model_gray:w #1 , #2 \q_stop { \__color_parse_number:n {#1} }
+\cs_new:Npn \__color_parse_model_rgb:w #1 , #2 , #3 , #4 \q_stop
+ {
+ \__color_parse_number:n {#1} ~
+ \__color_parse_number:n {#2} ~
+ \__color_parse_number:n {#3}
+ }
+\cs_new:Npn \__color_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
+ {
+ \__color_parse_number:n {#1} ~
+ \__color_parse_number:n {#2} ~
+ \__color_parse_number:n {#3} ~
+ \__color_parse_number:n {#4}
+ }
+\cs_new:Npn \__color_parse_model_spot:w #1 , #2 \q_stop
{ \__color_parse_spot_aux:w #1 ! 100 ! \q_stop }
\cs_new:Npn \__color_parse_spot_aux:w #1 ! #2 ! #3 \q_stop
{ #1 ~ \fp_eval:n { #2 / 100 } }
+\cs_new:Npn \__color_parse_number:n #1
+ { \__color_parse_number:w #1 . 0 . \q_stop }
+\cs_new:Npn \__color_parse_number:w #1 . #2 . #3 \q_stop
+ { \tl_if_blank:nTF {#1} { 0 } {#1} . #2 }
\tl_new:N \l_color_fixed_model_tl
\cs_new_protected:Npn \__color_check_model:N #1
{
@@ -267,10 +273,10 @@
}
\cs_new_protected:Npn \__color_direct:nnN #1#2#3
{
- \cs_if_exist:cTF { __color_parse_ #1 :w }
+ \cs_if_exist:cTF { __color_parse_model_ #1 :w }
{
\tl_set:Nx #3
- { #1 ~ \use:c { __color_parse_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
+ { #1 ~ \use:c { __color_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
\__color_check_model:N #3
}
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
index 4f63b4e692e..e6a07862985 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-05-03}{}
+\ProvidesExplPackage{l3draw}{2019-05-28}{}
{L3 Experimental core drawing support}
\RequirePackage { l3color }
%% File: l3draw-boxes.dtx
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
new file mode 100644
index 00000000000..361523ef595
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty
@@ -0,0 +1,307 @@
+%%
+%% This is file `l3graphics.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3graphics.dtx (with options: `package')
+%%
+%% 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:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3experimental bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3graphics.dtx
+\RequirePackage{expl3}
+\ProvidesExplPackage{l3graphics}{2019-05-28}{}
+ {L3 Experimental graphics inclusion support}
+\ior_new:N \l__graphics_tmp_ior
+\tl_new:N \l__graphics_tmp_tl
+\tl_new:N \l_graphics_decodearray_tl
+\tl_new:N \l_graphics_pagebox_tl
+\bool_new:N \l_graphics_interpolate_bool
+\tl_set:Nn \l_graphics_pagebox_tl { cropbox }
+\int_new:N \l_graphics_page_int
+\dim_new:N \l_graphics_llx_dim
+\dim_new:N \l_graphics_lly_dim
+\dim_new:N \l_graphics_urx_dim
+\dim_new:N \l_graphics_ury_dim
+\cs_new_protected:Npn \graphics_bb_save:n #1
+ {
+ \dim_if_exist:cTF { c__graphics_ #1 _urx_dim }
+ { \__kernel_msg_error:nnn { graphic } { bb-already-cached } {#1} }
+ {
+ \dim_compare:nNnF \l_graphics_llx_dim = { 0pt }
+ { \dim_const:cn { c__graphics_ #1 _llx_dim } { \l_graphics_llx_dim } }
+ \dim_compare:nNnF \l_graphics_lly_dim = { 0pt }
+ { \dim_const:cn { c__graphics_ #1 _lly_dim } { \l_graphics_lly_dim } }
+ \dim_const:cn { c__graphics_ #1 _urx_dim } { \l_graphics_urx_dim }
+ \dim_const:cn { c__graphics_ #1 _ury_dim } { \l_graphics_ury_dim }
+ }
+ }
+\cs_generate_variant:Nn \graphics_bb_save:n { x }
+\cs_new_protected:Npn \graphics_bb_restore:nF #1#2
+ {
+ \dim_if_exist:cTF { c__graphics_ #1 _urx_dim }
+ {
+ \dim_set_eq:Nc \l_graphics_urx_dim { c__graphics_ #1 _urx_dim }
+ \dim_set_eq:Nc \l_graphics_ury_dim { c__graphics_ #1 _ury_dim }
+ \dim_if_exist:cTF { c__graphics_ #1 _llx_dim }
+ { \dim_set_eq:Nc \l_graphics_llx_dim { c__graphics_ #1 _llx_dim } }
+ { \dim_zero:N \l_graphics_llx_dim }
+ \dim_if_exist:cTF { c__graphics_ #1 _lly_dim }
+ { \dim_set_eq:Nc \l_graphics_lly_dim { c__graphics_ #1 _lly_dim } }
+ { \dim_zero:N \l_graphics_lly_dim }
+ }
+ {#2}
+ }
+\cs_generate_variant:Nn \graphics_bb_restore:nF { x }
+\cs_new_protected:Npn \graphics_extract_bb:n #1
+ {
+ \int_compare:nNnTF \l_graphics_page_int > 0
+ { \__graphics_extract_bb_auxi:Vn \l_graphics_page_int {#1} }
+ { \__graphics_extract_bb_auxii:nnn {#1} { } { } }
+ }
+\cs_new_protected:Npn \__graphics_extract_bb_auxi:nn #1#2
+ { \__graphics_extract_bb_auxii:nnn {#2} { :P #1 } { -p~#1~ } }
+\cs_generate_variant:Nn \__graphics_extract_bb_auxi:nn { Vn }
+\cs_new_protected:Npn \__graphics_extract_bb_auxii:nnn #1#2#3
+ {
+ \tl_if_empty:NTF \l_graphics_pagebox_tl
+ { \__graphics_extract_bb_auxiv:nnn }
+ { \__graphics_extract_bb_auxiii:Vnnn \l_graphics_pagebox_tl }
+ {#1} {#2} {#3}
+ }
+\cs_new_protected:Npn \__graphics_extract_bb_auxiii:nnnn #1#2#3#4
+ { \__graphics_extract_bb_auxiv:nnn {#2} { : #1 #3 } { #4 -B~#1~ } }
+\cs_generate_variant:Nn \__graphics_extract_bb_auxiii:nnnn { V }
+\cs_new_protected:Npn \__graphics_extract_bb_auxiv:nnn #1#2#3
+ {
+ \__graphics_read_bb_auxi:nnnn {#1} {#2}
+ { \ior_shell_open:Nn \l__graphics_tmp_ior { extractbb~#3-O~#1 } }
+ { pipe-failed }
+ }
+\cs_new_protected:Npn \graphics_read_bb:n #1
+ {
+ \__graphics_read_bb_auxi:nnnn {#1} { }
+ { \ior_open:Nn \l__graphics_tmp_ior {#1} }
+ { graphic-not-found }
+ }
+\cs_new_protected:Npn \__graphics_read_bb_auxi:nnnn #1#2#3#4
+ {
+ \graphics_bb_restore:nF {#1#2}
+ { \__graphics_read_bb_auxii:nnnn {#3} {#4} {#1} {#2} }
+ }
+\cs_new_protected:Npx \__graphics_read_bb_auxii:nnnn #1#2#3#4
+ {
+ #1
+ \exp_not:N \ior_if_eof:NTF \exp_not:N \l__graphics_tmp_ior
+ { \__kernel_msg_error:nnn { graphics } {#2} {#3} }
+ {
+ \ior_str_map_inline:Nn \exp_not:N \l__graphics_tmp_ior
+ {
+ \exp_not:N \__graphics_read_bb_auxiii:w
+ ##1 ~ \c_colon_str \exp_not:N \q_stop
+ }
+ }
+ \exp_not:n
+ {
+ \ior_close:N \l__graphics_tmp_ior
+ \dim_compare:nNnF \l_graphics_llx_dim = { 0pt }
+ { \dim_const:cn { c__graphics_ #3#4 _llx_dim } { \l_graphics_llx_dim } }
+ \dim_compare:nNnF \l_graphics_lly_dim = { 0pt }
+ { \dim_const:cn { c__graphics_ #3#4 _lly_dim } { \l_graphics_lly_dim } }
+ \dim_const:cn { c__graphics_ #3#4 _urx_dim } { \l_graphics_urx_dim }
+ \dim_const:cn { c__graphics_ #3#4 _ury_dim } { \l_graphics_ury_dim }
+ }
+ }
+\use:x
+ {
+ \cs_new_protected:Npn \exp_not:N \__graphics_read_bb_auxiii:w
+ ##1 \c_colon_str ##2 \exp_not:N \q_stop
+ {
+ \exp_not:N \str_if_eq:nnT
+ { \c_percent_str \c_percent_str BoundingBox }
+ {##1}
+ { \exp_not:N \__graphics_read_bb_auxiv:w ##2 ( ) \exp_not:N \q_stop }
+ }
+ }
+\cs_new_protected:Npn \__graphics_read_bb_auxiv:w #1 ( #2 ) #3 \q_stop
+ {
+ \str_if_eq:nnF {#2} { atend }
+ {
+ \tl_set_rescan:Nnx \l__graphics_tmp_tl
+ {
+ \char_set_catcode_space:n { 9 }
+ \char_set_catcode_space:n { 32 }
+ }
+ { \use:n #1 }
+ \exp_after:wN \__graphics_read_bb_auxv:w \l__graphics_tmp_tl \q_stop
+ }
+ }
+\cs_new_protected:Npn \__graphics_read_bb_auxv:w #1~#2~#3~#4~#5 \q_stop
+ {
+ \dim_set:Nn \l_graphics_llx_dim { #1 bp }
+ \dim_set:Nn \l_graphics_lly_dim { #2 bp }
+ \dim_set:Nn \l_graphics_urx_dim { #3 bp }
+ \dim_set:Nn \l_graphics_ury_dim { #4 bp }
+ \ior_map_break:
+ }
+\bool_new:N \l_graphics_draft_bool
+\tl_new:N \l_graphics_name_tl
+\tl_new:N \l__graphics_name_tl
+\box_new:N \l__graphics_internal_box
+\str_new:N \l__graphics_dir_str
+\str_new:N \l__graphics_name_str
+\str_new:N \l__graphics_ext_str
+\seq_new:N \l_graphics_search_path_seq
+\seq_new:N \l_graphics_search_ext_seq
+\prop_new:N \l_graphics_ext_type_prop
+\prop_put:Nnn \l_graphics_ext_type_prop { .ps } { eps }
+\seq_new:N \g__graphics_record_seq
+\cs_new_protected:Npn \graphics_include:n #1
+ {
+ \group_begin:
+ \seq_set_eq:NN \l_file_search_path_seq \l_graphics_search_path_seq
+ \file_get_full_name:nNTF {#1} \l__graphics_name_tl
+ {
+ \str_if_eq:eeTF { \l__graphics_name_tl } { #1 .tex }
+ { \__graphics_include_search:n {#1} }
+ { \__graphics_include: }
+ }
+ { \__graphics_include_search:n {#1} }
+ \group_end:
+ }
+\cs_new_protected:Npn \__graphics_include_search:n #1
+ {
+ \seq_map_inline:Nn \l_graphics_search_ext_seq
+ {
+ \file_get_full_name:nNT { #1 . ##1 } \l__graphics_name_tl
+ { \seq_map_break:n { \use_i:nnn \__graphics_include: } }
+ }
+ \use:n
+ { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
+ }
+\cs_new_protected:Npn \__graphics_include:
+ {
+ \file_parse_full_name:VNNN \l__graphics_name_tl
+ \l__graphics_dir_str \l__graphics_name_str \l__graphics_ext_str
+ \exp_args:Ne \__graphics_include_auxi:n
+ {
+ \exp_args:Ne \str_tail:n
+ { \str_fold_case:V \l__graphics_ext_str }
+ }
+ }
+\cs_new_protected:Npn \graphics_include:nn #1#2
+ {
+ \group_begin:
+ \seq_set_eq:NN \l_file_search_path_seq \l_graphics_search_path_seq
+ \file_get_full_name:nNTF {#1} \l__graphics_name_tl
+ {
+ \exp_args:Ne \__graphics_include_auxi:n
+ { \str_fold_case:n {#1} }
+ }
+ { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
+ \group_end:
+ }
+\cs_new_protected:Npn \__graphics_include_auxi:n #1
+ {
+ \prop_get:NnNF \l_graphics_ext_type_prop { .#1 } \l__graphics_internal_tl
+ { \tl_set:Nn \l__graphics_internal_tl {#1} }
+ \exp_args:NV \__graphics_include_auxii:n \l__graphics_internal_tl
+ }
+\cs_new_protected:Npn \__graphics_include_auxii:n #1
+ {
+ \mode_leave_vertical:
+ \cs_if_exist:cTF { driver_graphics_include_ #1 :n }
+ {
+ \tl_set_eq:NN \l_graphics_name_tl \l__graphics_name_tl
+ \exp_args:NnV \use:c { driver_graphics_getbb_ #1 :n }
+ \l__graphics_name_tl
+ \seq_gput_right:NV \g__graphics_record_seq \l_graphics_name_tl
+ \clist_if_exist:NT \@filelist
+ { \exp_args:NV \@addtofilelist \l_graphics_name_tl }
+ \bool_if:NTF \l_graphics_draft_bool
+ { \__graphics_include_auxiii:n }
+ { \__graphics_include_auxiv:n }
+ {#1}
+ }
+ { \__kernel_msg_error:nnn { graphics } { unsupported-graphic-type } {#1} }
+ }
+\cs_new_protected:Npn \__graphics_include_auxiii:n #1
+ {
+ \hbox_to_wd:nn { \l_graphics_urx_dim - \l_graphics_llx_dim }
+ {
+ \tex_vrule:D
+ \tex_hss:D
+ \vbox_to_ht:nn
+ { \l_graphics_ury_dim - \l_graphics_lly_dim }
+ {
+ \tex_hrule:D width
+ \dim_eval:n { \l_graphics_urx_dim - \l_graphics_llx_dim }
+ \tex_vss:D
+ \hbox_to_wd:nn
+ { \l_graphics_urx_dim - \l_graphics_llx_dim }
+ {
+ \ttfamily
+ \tex_hss:D \l__graphics_name_tl \tex_hss:D
+ }
+ \tex_vss:D
+ \tex_hrule:D
+ }
+ \tex_hss:D
+ \tex_vrule:D
+ }
+ }
+\cs_new_protected:Npn \__graphics_include_auxiv:n #1
+ {
+ \hbox_set:Nn \l__graphics_internal_box
+ {
+ \exp_args:NnV \use:c { driver_graphics_include_ #1 :n }
+ \l__graphics_name_tl
+ }
+ \box_set_dp:Nn \l__graphics_internal_box { 0pt }
+ \box_set_ht:Nn \l__graphics_internal_box
+ { \l_graphics_ury_dim - \l_graphics_lly_dim }
+ \box_set_wd:Nn \l__graphics_internal_box
+ { \l_graphics_urx_dim - \l_graphics_llx_dim }
+ \box_use_drop:N \l__graphics_internal_box
+ }
+\cs_new_protected:Npn \graphics_show_list: { \__graphics_list:N \msg_show:nnxxxx }
+\cs_new_protected:Npn \graphics_log_list: { \__graphics_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \__graphics_list:N #1
+ {
+ \seq_remove_duplicates:N \g__graphics_record_seq
+ #1 { LaTeX/kernel } { file-list }
+ { \seq_map_function:NN \g__graphics_record_seq \__graphics_list_aux:n }
+ { } { } { }
+ }
+\cs_new:Npn \__graphics_list_aux:n #1 { \iow_newline: #1 }
+\__kernel_msg_new:nnnn { graphics } { graphic-not-found }
+ { Image~file~'#1'~not~found. }
+ {
+ LaTeX~tried~to~open~graphic~file~'#1',
+ ~but~the~file~could~not~be~read.
+ }
+\__kernel_msg_new:nnnn { graphics } { pipe-failed }
+ { Cannot~run~piped~system~commands. }
+ {
+ LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\
+ Try~the~"--shell-escape"~(or~"--enable-pipes")~option.
+ }
+\__kernel_msg_new:nnnn { graphics } { unsupported-graphic-type }
+ { Image~type~'#1'~not~supported~by~current~driver. }
+ {
+ LaTeX~was~asked~to~include~an~graphic~of~type~'#1',~
+ but~this~is~not~supported~by~the~current~driver~(production~route).
+ }
+%%
+%%
+%% End of file `l3graphics.sty'.
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 6af82fd2621..f9b7c2b0e02 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
@@ -18,9 +18,9 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-convert}{2019-05-03}{}
+\ProvidesExplPackage{l3str-convert}{2019-05-28}{}
{L3 Experimental string encoding conversions}
\cs_if_exist:NF \use_ii_i:nn
{ \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def
index 7d880561227..129e435d16d 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88591.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88591 }
{
}
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def
index 7f838672207..8c4e9ce957b 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885910.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso885910 }
{
{ A1 } { 0104 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def
index 6b271131cc1..c9fd87cd3bf 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885911.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso885911 }
{
{ A1 } { 0E01 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def
index 4f95aec07a7..aac3d64ef2e 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885913.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso885913 }
{
{ A1 } { 201D }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def
index 7925d571336..22cd3c76f56 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885914.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso885914 }
{
{ A1 } { 1E02 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def
index da46de43466..a79469e4425 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885915.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso885915 }
{
{ A4 } { 20AC }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def
index b0083c8050c..bfd656f6e7a 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso885916.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso885916 }
{
{ A1 } { 0104 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def
index 42519770cce..3c7f9893795 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88592.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88592 }
{
{ A1 } { 0104 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def
index 7d5d80d61cc..4fa0c24373f 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88593.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88593 }
{
{ A1 } { 0126 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def
index 10491b14483..b90cb49d143 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88594.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88594 }
{
{ A1 } { 0104 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def
index 1166a482191..0862a7a49b0 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88595.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88595 }
{
{ A1 } { 0401 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def
index 92438f3aea6..d89bc0330c6 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88596.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88596 }
{
{ AC } { 060C }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def
index 2c0c5e7760e..3bbb24b8165 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88597.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88597 }
{
{ A1 } { 2018 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def
index 50615dfc038..61e8c3fe6dc 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88598.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88598 }
{
{ AA } { 00D7 }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def
index 3d421b2a6c9..9339941d6ea 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-iso88599.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\__str_declare_eight_bit_encoding:nnn { iso88599 }
{
{ D0 } { 011E }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
index 2ae9485ab91..3b54e12b16d 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\group_begin:
\char_set_catcode_other:N \^^fe
\char_set_catcode_other:N \^^ff
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
index 76ded8b28d6..307e629071a 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\group_begin:
\char_set_catcode_other:N \^^00
\char_set_catcode_other:N \^^fe
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def
index 10b3902661a..fe9fd31ee87 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\cs_new_protected:cpn { __str_convert_encode_utf8: }
{ \__str_convert_gmap_internal:N \__str_encode_utf_viii_char:n }
\cs_new:Npn \__str_encode_utf_viii_char:n #1
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def
index e4cb1e9a2c6..28ff90d79ea 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\cs_new_protected:Npn \__str_convert_unescape_hex:
{
\group_begin:
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def
index 926b3ef9e75..58ddb088092 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\cs_set_protected:Npn \__str_tmp:w #1#2#3
{
\cs_new_protected:cpn { __str_convert_unescape_#2: }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
index 68c16ea5db7..8f294e4220a 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\group_begin:
\char_set_catcode_other:N \^^J
\char_set_catcode_other:N \^^M
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def
index ebc2dc2548a..21fa69980a9 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def
@@ -18,7 +18,7 @@
%% This file is part of the "l3experimental bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
-%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
+%% File: l3str-convert.dtx
\cs_set_protected:Npn \__str_tmp:w #1#2#3
{
\cs_new_protected:cpn { __str_convert_unescape_#2: }
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 2658fade981..fa84e0e970d 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-05-03}{}
+\ProvidesExplPackage{l3str-format}{2019-05-28}{}
{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 0fdc99a02a6..20fd2db2f33 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-05-03}{}
+\ProvidesExplPackage{l3sys-shell}{2019-05-28}{}
{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 058ae854cd5..9c53fe7d4a6 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-05-03}{}
+\ProvidesExplPackage{xcoffins}{2019-05-28}{}
{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 7f4c785a57d..263c06691eb 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-05-03}{}
+\ProvidesExplPackage{l3galley}{2019-05-28}{}
{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 de6ec90878d..d492282db69 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-05-03}{}
+\ProvidesExplPackage{xgalley}{2019-05-28}{}
{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 cd2f1013847..dbdc37c17f5 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -64,7 +64,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-05-09}%
+\def\ExplFileDate{2019-05-28}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -14156,6 +14156,7 @@
\int_const:Nn \c__fp_prec_hatii_int { 14 }
\int_const:Nn \c__fp_prec_hat_int { 13 }
\int_const:Nn \c__fp_prec_not_int { 12 }
+\int_const:Nn \c__fp_prec_juxt_int { 11 }
\int_const:Nn \c__fp_prec_times_int { 10 }
\int_const:Nn \c__fp_prec_plus_int { 9 }
\int_const:Nn \c__fp_prec_comp_int { 7 }
@@ -14874,7 +14875,7 @@
{
\exp_not:N \__fp_exp_after_array_f:w #2 \s__fp_stop
\exp_not:N \exp_after:wN
- \exp_not:N \__fp_parse_infix:NN
+ \exp_not:N \__fp_parse_infix_after_paren:NN
\exp_not:N \exp_after:wN #1
\exp_not:N \exp:w
\exp_not:N \__fp_parse_expand:w
@@ -14900,7 +14901,7 @@
\fi:
\exp_end_continue_f:w
\fi:
- \__fp_parse_infix:NN #1 )
+ \__fp_parse_infix_after_paren:NN #1 )
}
\cs_set_protected:Npn \__fp_tmp:w #1 #2
{
@@ -15071,7 +15072,7 @@
\exp_after:wN \__fp_parse_infix_mark:NNN
\else:
\exp_after:wN \exp_after:wN
- \exp_after:wN \__fp_parse_infix_mul:N
+ \exp_after:wN \__fp_parse_infix_juxt:N
\fi:
\else:
\if_int_compare:w
@@ -15079,7 +15080,7 @@
( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26
= 3 \exp_stop_f:
\exp_after:wN \exp_after:wN
- \exp_after:wN \__fp_parse_infix_mul:N
+ \exp_after:wN \__fp_parse_infix_juxt:N
\else:
\exp_after:wN \__fp_parse_infix_check:NNN
\cs:w
@@ -15091,22 +15092,49 @@
#1
#2
}
-\cs_new:Npx \__fp_parse_infix_check:NNN #1#2#3
+\cs_new:Npn \__fp_parse_infix_check:NNN #1#2#3
{
- \exp_not:N \if_meaning:w \scan_stop: #1
- \exp_not:N \__kernel_msg_expandable_error:nnn
+ \if_meaning:w \scan_stop: #1
+ \__kernel_msg_expandable_error:nnn
{ kernel } { fp-missing } { * }
- \exp_not:N \exp_after:wN
- \exp_not:c { __fp_parse_infix_*:N }
- \exp_not:N \exp_after:wN #2
- \exp_not:N \exp_after:wN #3
- \exp_not:N \else:
- \exp_not:N \exp_after:wN #1
- \exp_not:N \exp_after:wN #2
- \exp_not:N \exp:w
- \exp_not:N \exp_after:wN
- \exp_not:N \__fp_parse_expand:w
- \exp_not:N \fi:
+ \exp_after:wN \__fp_parse_infix_mul:N
+ \exp_after:wN #2
+ \exp_after:wN #3
+ \else:
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \exp:w \exp_after:wN \__fp_parse_expand:w
+ \fi:
+ }
+\cs_new:Npn \__fp_parse_infix_after_paren:NN #1 #2
+ {
+ \if_catcode:w \scan_stop: \exp_not:N #2
+ \if_int_compare:w
+ \__fp_str_if_eq:nn { \s__fp_mark } { \exp_not:N #2 }
+ = 0 \exp_stop_f:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \__fp_parse_infix_mark:NNN
+ \else:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \__fp_parse_infix_mul:N
+ \fi:
+ \else:
+ \if_int_compare:w
+ \__fp_int_eval:w
+ ( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26
+ = 3 \exp_stop_f:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \__fp_parse_infix_mul:N
+ \else:
+ \exp_after:wN \__fp_parse_infix_check:NNN
+ \cs:w
+ __fp_parse_infix_ \token_to_str:N #2 :N
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \cs_end:
+ \fi:
+ \fi:
+ #1
+ #2
}
\cs_new:Npn \__fp_parse_infix_mark:NNN #1#2#3 { #3 #1 }
\cs_new:Npn \__fp_parse_infix_end:N #1
@@ -15183,6 +15211,8 @@
}
\exp_args:Nc \__fp_tmp:w { __fp_parse_infix_^:N } ^
\c__fp_prec_hatii_int \c__fp_prec_hat_int
+\exp_args:Nc \__fp_tmp:w { __fp_parse_infix_juxt:N } *
+ \c__fp_prec_juxt_int \c__fp_prec_juxt_int
\exp_args:Nc \__fp_tmp:w { __fp_parse_infix_/:N } /
\c__fp_prec_times_int \c__fp_prec_times_int
\exp_args:Nc \__fp_tmp:w { __fp_parse_infix_mul:N } *
@@ -26454,6 +26484,75 @@
{ \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
}
\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+\cs_new:Npn \__file_str_cmp:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\sys_if_engine_luatex:T
+ {
+ \cs_set:Npn \__file_str_cmp:nn #1#2
+ {
+ \lua_now:e
+ {
+ l3kernel.strcmp
+ (
+ " \__file_str_escape:n {#1}",
+ " \__file_str_escape:n {#2}"
+ )
+ }
+ }
+ \cs_new:Npn \__file_str_escape:n #1
+ {
+ \lua_escape:e
+ { \__kernel_tl_to_str:w \use:e { {#1} } }
+ }
+ }
+\tl_new:N \l__file_first_tl
+\tl_new:N \l__file_second_tl
+\prg_new_protected_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
+ { T , F , TF }
+ {
+ \group_begin:
+ \file_get_full_name:nNTF {#1} \l__file_first_tl
+ {
+ \file_get_full_name:nNTF {#3} \l__file_second_tl
+ {
+ \if_int_compare:w
+ \__file_str_cmp:nn
+ { \__file_timestamp:n \exp_after:wN { \l__file_first_tl } }
+ { \__file_timestamp:n \exp_after:wN { \l__file_second_tl } }
+ #2 0 \exp_stop_f:
+ \group_end:
+ \prg_return_true:
+ \else:
+ \group_end:
+ \prg_return_false:
+ \fi:
+ }
+ {
+ \group_end:
+ \if_charcode:w #2 >
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+ {
+ \group_end:
+ \if_charcode:w #2 <
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_new:Npn \__file_timestamp:n #1
+ {
+ \lua_now:e
+ { l3kernel.filemoddate ( " \lua_escape:e {#1} " ) }
+ }
+ }
+ { \cs_new_eq:NN \__file_timestamp:n \tex_filemoddate:D }
\cs_new_protected:Npn \ior_shell_open:Nn #1#2
{
\sys_if_shell:TF
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 6d8a56abcaa..8014aa50960 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-05-09}%
+\def\ExplFileDate{2019-05-28}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
index 48b4a266506..e81e52a591a 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
@@ -64,7 +64,7 @@ local function elapsedtime()
end
l3kernel.elapsedtime = elapsedtime
local function resettimer()
- base_time = 0
+ base_time = os_clock()
end
l3kernel.resettimer = resettimer
local function filemdfivesum(name)
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index b8aaca40a4c..41b84801c47 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-05-09}%
+\def\ExplFileDate{2019-05-28}%
\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 3bdc8505acb..20789461412 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
@@ -405,7 +405,7 @@
\int_if_exist:cTF { c__driver_graphics_ #2#1 _int }
{
\__driver_literal:x
- { pdf:usexobj~@image \int_use:c { c__driver_graphics_ #2#1 _int } }
+ { pdf:usexobj~@graphic \int_use:c { c__driver_graphics_ #2#1 _int } }
}
{ \__driver_graphics_include_auxiii:nnn {#2} {#1} {#3} }
}
@@ -417,7 +417,7 @@
\__driver_literal:x
{
pdf:#3~
- @image \int_use:c { c__driver_graphics_ #1#2 _int } ~
+ @graphic \int_use:c { c__driver_graphics_ #1#2 _int } ~
\int_compare:nNnT \l_graphics_page_int > 1
{ page ~ \int_use:N \l_graphics_page_int \c_space_tl }
\tl_if_empty:NF \l_graphics_pagebox_tl
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
index 23675e1c0a1..f51166f9231 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
@@ -823,6 +823,19 @@
def
/driver.breaklink.write
{
+ counttomark ~ 1 ~ sub ~
+ index /_objdef ~ eq
+ {
+ counttomark ~ -2 ~ roll ~
+ dup ~ wcheck ~
+ {
+ readonly ~
+ counttomark ~ 2 ~ roll
+ }
+ { pop ~ pop }
+ ifelse
+ }
+ if ~
counttomark ~ 1 ~ add ~ copy ~
pop ~ driver.currentrect
/ANN ~ pdfmark
@@ -850,11 +863,9 @@
Rect ~ 1 ~ get ~ sub ~
driver.baselineskip ~ div ~ round ~ cvi ~ 0 ~ gt
{ driver.breaklink }
- { driver.pdfmark.obj }
- ifelse
+ if
}
- { driver.pdfmark.obj }
- ifelse ~
+ if ~
end ~
SDict /driver.outerbox ~ undef ~
SDict /driver.baselineskip ~ undef ~
@@ -887,8 +898,6 @@
loop
}
def
- /driver.pdfmark.obj
- { /_objdef ~ exch ~ driver.link.obj ~ exch } def
}
\box_new:N \l__driver_pdf_content_box
\box_new:N \l__driver_pdf_model_box
@@ -936,13 +945,9 @@
\int_new:N \g__driver_pdf_link_sf_int
\bool_new:N \g__driver_pdf_link_math_bool
\bool_new:N \g__driver_pdf_link_bool
-\tl_new:N \l__driver_breaklink_obj_tl
-\tl_set:Nn \l__driver_breaklink_obj_tl
- { /_objdef ~ { driver.obj \int_use:N \g__driver_pdf_link_int } }
\tl_new:N \l__driver_breaklink_pdfmark_tl
\tl_set:Nn \l__driver_breaklink_pdfmark_tl { pdfmark }
\cs_new_protected:Npn \__driver_breaklink_postscript:n #1 { }
-\cs_generate_variant:Nn \__driver_breaklink_postscript:n { x }
\cs_new_eq:NN \__driver_breaklink_usebox:N \box_use:N
\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
{ \__driver_pdf_link_begin:nw { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
@@ -956,7 +961,6 @@
\cs_new_protected:Npn \__driver_pdf_link_begin_aux:nw #1
{
\bool_gset_true:N \g__driver_pdf_link_bool
- \__driver_pdf_annotation:nnnn { 3pt } { 3pt } { 0pt } { }
\__driver_postscript:n
{ /driver.link.dict ( #1 ) def }
\tl_gset:Nn \g__driver_pdf_link_dict_tl {#1}
@@ -1000,18 +1004,10 @@
}
\int_gincr:N \g__driver_pdf_object_int
\int_gset_eq:NN \g__driver_pdf_link_int \g__driver_pdf_object_int
- \__driver_breaklink_postscript:x
- {
- /driver.link.obj
- {
- { driver.obj \int_use:N \g__driver_pdf_link_int \c_space_tl driver.cvs }
- }
- def
- }
\__driver_postscript:x
{
mark
- \l__driver_breaklink_obj_tl
+ /_objdef { driver.obj \int_use:N \g__driver_pdf_link_int }
\g__driver_pdf_link_dict_tl \c_space_tl
driver.rect
/ANN ~ \l__driver_breaklink_pdfmark_tl
@@ -1106,7 +1102,6 @@
}
}
}
- \tl_clear:N \l__driver_breaklink_obj_tl
\tl_set:Nn \l__driver_breaklink_pdfmark_tl { driver.pdfmark }
\cs_set_eq:NN \__driver_breaklink_postscript:n \__driver_postscript:n
\cs_set_eq:NN \__driver_breaklink_usebox:N \hbox_unpack:N
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
index 25c63471e8f..3afb54a6b05 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
@@ -422,6 +422,45 @@
}
\cs_new_eq:NN \driver_graphics_include_pdf:n \driver_graphics_include_jpg:n
\cs_new_eq:NN \driver_graphics_include_png:n \driver_graphics_include_jpg:n
+\sys_if_shell:T
+ {
+ \str_new:N \l__driver_dir_str
+ \str_new:N \l__driver_name_str
+ \str_new:N \l__driver_ext_str
+ \cs_new_protected:Npn \driver_graphics_getbb_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l__driver_dir_str
+ \l__driver_name_str
+ \l__driver_ext_str
+ \exp_args:Nx \__driver_graphics_getbb_eps:nn
+ {
+ \l__driver_name_str - \str_tail:N \l__driver_ext_str
+ -converted-to.pdf
+ }
+ {#1}
+ }
+ \cs_new_protected:Npn \__driver_graphics_getbb_eps:nn #1#2
+ {
+ \file_compare_timestamp:nNnT {#2} > {#1}
+ {
+ \sys_shell_now:n
+ { repstopdf ~ #2 ~ #1 }
+ }
+ \tl_set:Nn \l_graphics_name_tl {#1}
+ \driver_graphics_getbb_pdf:n {#1}
+ }
+ \cs_new_protected:Npn \driver_graphics_include_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l__driver_dir_str \l__driver_name_str \l__driver_ext_str
+ \exp_args:Nx \driver_graphics_include_pdf:n
+ {
+ \l__driver_name_str - \str_tail:N \l__driver_ext_str
+ -converted-to.pdf
+ }
+ }
+ }
%% File: l3drivers-pdf.dtx
\cs_new_protected:Npx \driver_pdf_annotation:nnnn #1#2#3#4
{
@@ -539,7 +578,7 @@
{
\__driver_tmp:w
{ \tex_pdfextension:D obj ~ }
- { \exp_not:N \tex_pdffeedback:D lastobj \scan_stop: }
+ { \exp_not:N \tex_pdffeedback:D lastobj }
}
{ \__driver_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
\group_end:
@@ -579,6 +618,7 @@
\cs_new:Npn \__driver_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
\cs_new_protected:Npx \driver_pdf_compresslevel:n #1
{
+ \exp_not:N \tex_global:D
\cs_if_exist:NTF \tex_pdfcompresslevel:D
{ \tex_pdfcompresslevel:D }
{ \tex_pdfvariable:D compresslevel }
@@ -592,6 +632,7 @@
}
\cs_new_protected:Npx \__driver_pdf_objcompresslevel:n #1
{
+ \exp_not:N \tex_global:D
\cs_if_exist:NTF \tex_pdfobjcompresslevel:D
{ \tex_pdfobjcompresslevel:D }
{ \tex_pdfvariable:D objcompresslevel }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
index 111087f7509..49ee9115e3a 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
@@ -390,7 +390,7 @@
\int_if_exist:cTF { c__driver_graphics_ #2#1 _int }
{
\__driver_literal:x
- { pdf:usexobj~@image \int_use:c { c__driver_graphics_ #2#1 _int } }
+ { pdf:usexobj~@graphic \int_use:c { c__driver_graphics_ #2#1 _int } }
}
{ \__driver_graphics_include_auxiii:nnn {#2} {#1} {#3} }
}
@@ -402,7 +402,7 @@
\__driver_literal:x
{
pdf:#3~
- @image \int_use:c { c__driver_graphics_ #1#2 _int } ~
+ @graphic \int_use:c { c__driver_graphics_ #1#2 _int } ~
\int_compare:nNnT \l_graphics_page_int > 1
{ page ~ \int_use:N \l_graphics_page_int \c_space_tl }
\tl_if_empty:NF \l_graphics_pagebox_tl
diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
index c5a7c0c6a6c..4f76f142838 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-05-03}{}
+\ProvidesExplPackage{l3keys2e}{2019-05-28}{}
{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 612f3c0e235..65be7159a88 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-05-03}{}
+\ProvidesExplPackage{xfp}{2019-05-28}{}
{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 d102c8ad839..33bfe8e6696 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-05-03}{}
+\ProvidesExplPackage{xfrac}{2019-05-28}{}
{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 ff8f6bca7ca..96a9229784e 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-05-03}{}
+\ProvidesExplPackage{xparse}{2019-05-28}{}
{L3 Experimental document command parser}
\tl_new:N \l__xparse_arg_spec_tl
\tl_new:N \l__xparse_args_tl
@@ -464,7 +464,7 @@
{ \iow_char:N \\ \l__xparse_function_tl } { \tl_to_str:n {#1} }
\__xparse_bad_def:wn
}
- \tl_put_right:Nn \l__xparse_arg_spec_tl { > {#1} }
+ \tl_put_right:Nx \l__xparse_arg_spec_tl { > { \tl_trim_spaces:n {#1} } }
\int_decr:N \l__xparse_current_arg_int
\bool_set_false:N \l__xparse_grab_expandably_bool
\__xparse_normalize_arg_spec_loop:n {#2}
diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
index ecbef06db2f..08e2163a82d 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-05-03}{}
+\ProvidesExplPackage{xtemplate}{2019-05-28}{}
{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~>~ }