summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-05-09 21:21:40 +0000
committerKarl Berry <karl@freefriends.org>2019-05-09 21:21:40 +0000
commit6b8660f398522ec8c9225f4743bf35d7ead3fdbb (patch)
tree2d739ca19f398762c708fde206952877d04b1d9f
parent85d267d6035b359acbbc8620e9f215658e2ef473 (diff)
l3kernel (9may19)
git-svn-id: svn://tug.org/texlive/trunk@51060 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md14
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/expl3.pdfbin586786 -> 586609 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.pdfbin1540166 -> 1542860 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/interface3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdfbin263719 -> 263575 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdfbin280475 -> 280319 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdfbin228191 -> 228038 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdfbin186990 -> 186826 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.pdfbin5794759 -> 5806829 bytes
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3.tex2
-rw-r--r--Master/texmf-dist/doc/latex/l3kernel/source3body.tex2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3.ins70
-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.dtx54
-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.dtx9
-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.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx557
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx504
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx35
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx54
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx9
-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/l3format.ins70
-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.dtx2
-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.dtx2
-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.dtx2
-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/tex/latex/l3kernel/expl3-code.tex26
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def120
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvips.def30
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def33
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def98
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def177
84 files changed, 1108 insertions, 884 deletions
diff --git a/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md b/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
index d09efb4b54f..63e8548ca17 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-09]
+
+### Added
+
+- Experimental driver-level interfaces for image inclusion
+- Experimental `\ior_shell_open:Nn`
+
+### Fixed
+
+- Some issues in `dvisvgm` driver
+
## [2019-05-07]
### Added
@@ -396,7 +407,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-07...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-09...HEAD
+[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
[2019-05-03]: https://github.com/latex3/latex3/compare/2019-04-21...2019-05-03
diff --git a/Master/texmf-dist/doc/latex/l3kernel/README.md b/Master/texmf-dist/doc/latex/l3kernel/README.md
index c1758199134..3f7a8067c46 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-07
+Release 2019-05-09
Overview
--------
diff --git a/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf b/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
index cd428ad7b74..382fb2314e7 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 0b99e50a6bc..723b316575b 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 d0cee5124dd..71aff240816 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-07}
+\date{Released 2019-05-09}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf b/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
index 59e4ccdb67d..25a43b0807f 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 1e86c317208..dbea8015d1b 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 5b4843f2264..f834ab02ee4 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-07}
+\date{Released 2019-05-09}
\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 e182c17d145..3b0ae7b0c56 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 ea0330009d3..b625e65cf3c 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-07}
+\date{Released 2019-05-09}
\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 510a5e3438d..18fcf09850a 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 d2cfb6c425c..bb1a5c5caaa 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-07}
+\date{Released 2019-05-09}
\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 eddbd6c1f1e..a0be473fae7 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 cd9c6f4cad4..91e5f72f6fd 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-07}
+\date{Released 2019-05-09}
\pagenumbering{roman}
\maketitle
diff --git a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
index cd0f7aaee18..2c55586d3c9 100644
--- a/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
+++ b/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
@@ -491,7 +491,7 @@ used on top of \LaTeXe{} if \cs{outer} tokens are used in the arguments.
l3drivers-color.dtx ,
l3drivers-box.dtx ,
l3drivers-draw.dtx ,
- l3drivers-image.dtx ,
+ l3drivers-graphics.dtx ,
l3drivers-pdf.dtx
}
\ExplSyntaxOff
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 77aef12afe7..7ddce6aa8ac 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-07}%
+\def\ExplFileDate{2019-05-09}%
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins
index ed2d726b1fb..7977e037451 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3.ins
+++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins
@@ -120,65 +120,65 @@ and all files in that bundle must be distributed together.
{
\file{l3dvipdfmx.def}
{
- \from{l3drivers.dtx} {package,dvipdfmx}
- \from{l3drivers-basics.dtx}{package,dvipdfmx}
- \from{l3drivers-color.dtx} {package,dvipdfmx}
- \from{l3drivers-box.dtx} {package,dvipdfmx}
- \from{l3drivers-draw.dtx} {package,dvipdfmx}
- \from{l3drivers-image.dtx} {package,dvipdfmx}
- \from{l3drivers-pdf.dtx} {package,dvipdfmx}
+ \from{l3drivers.dtx} {package,dvipdfmx}
+ \from{l3drivers-basics.dtx} {package,dvipdfmx}
+ \from{l3drivers-color.dtx} {package,dvipdfmx}
+ \from{l3drivers-box.dtx} {package,dvipdfmx}
+ \from{l3drivers-draw.dtx} {package,dvipdfmx}
+ \from{l3drivers-graphics.dtx}{package,dvipdfmx}
+ \from{l3drivers-pdf.dtx} {package,dvipdfmx}
}
}
\generate
{
\file{l3dvips.def}
{
- \from{l3drivers.dtx} {package,dvips}
- \from{l3drivers-basics.dtx}{package,dvips}
- \from{l3drivers-color.dtx} {package,dvips}
- \from{l3drivers-box.dtx} {package,dvips}
- \from{l3drivers-draw.dtx} {package,dvips}
- \from{l3drivers-image.dtx} {package,dvips}
- \from{l3drivers-pdf.dtx} {package,dvips}
+ \from{l3drivers.dtx} {package,dvips}
+ \from{l3drivers-basics.dtx} {package,dvips}
+ \from{l3drivers-color.dtx} {package,dvips}
+ \from{l3drivers-box.dtx} {package,dvips}
+ \from{l3drivers-draw.dtx} {package,dvips}
+ \from{l3drivers-graphics.dtx}{package,dvips}
+ \from{l3drivers-pdf.dtx} {package,dvips}
}
}
\generate
{
\file{l3dvisvgm.def}
{
- \from{l3drivers.dtx} {package,dvisvgm}
- \from{l3drivers-basics.dtx}{package,dvisvgm}
- \from{l3drivers-color.dtx} {package,dvisvgm}
- \from{l3drivers-box.dtx} {package,dvisvgm}
- \from{l3drivers-draw.dtx} {package,dvisvgm}
- \from{l3drivers-image.dtx} {package,dvisvgm}
- \from{l3drivers-pdf.dtx} {package,dvisvgm}
+ \from{l3drivers.dtx} {package,dvisvgm}
+ \from{l3drivers-basics.dtx} {package,dvisvgm}
+ \from{l3drivers-color.dtx} {package,dvisvgm}
+ \from{l3drivers-box.dtx} {package,dvisvgm}
+ \from{l3drivers-draw.dtx} {package,dvisvgm}
+ \from{l3drivers-graphics.dtx}{package,dvisvgm}
+ \from{l3drivers-pdf.dtx} {package,dvisvgm}
}
}
\generate
{
\file{l3pdfmode.def}
{
- \from{l3drivers.dtx} {package,pdfmode}
- \from{l3drivers-basics.dtx}{package,pdfmode}
- \from{l3drivers-color.dtx} {package,pdfmode}
- \from{l3drivers-box.dtx} {package,pdfmode}
- \from{l3drivers-draw.dtx} {package,pdfmode}
- \from{l3drivers-image.dtx} {package,pdfmode}
- \from{l3drivers-pdf.dtx} {package,pdfmode}
+ \from{l3drivers.dtx} {package,pdfmode}
+ \from{l3drivers-basics.dtx} {package,pdfmode}
+ \from{l3drivers-color.dtx} {package,pdfmode}
+ \from{l3drivers-box.dtx} {package,pdfmode}
+ \from{l3drivers-draw.dtx} {package,pdfmode}
+ \from{l3drivers-graphics.dtx}{package,pdfmode}
+ \from{l3drivers-pdf.dtx} {package,pdfmode}
}
}
\generate
{
\file{l3xdvipdfmx.def}
{
- \from{l3drivers.dtx} {package,xdvipdfmx}
- \from{l3drivers-basics.dtx}{package,xdvipdfmx}
- \from{l3drivers-color.dtx} {package,xdvipdfmx}
- \from{l3drivers-box.dtx} {package,xdvipdfmx}
- \from{l3drivers-draw.dtx} {package,xdvipdfmx}
- \from{l3drivers-image.dtx} {package,xdvipdfmx}
- \from{l3drivers-pdf.dtx} {package,xdvipdfmx}
+ \from{l3drivers.dtx} {package,xdvipdfmx}
+ \from{l3drivers-basics.dtx} {package,xdvipdfmx}
+ \from{l3drivers-color.dtx} {package,xdvipdfmx}
+ \from{l3drivers-box.dtx} {package,xdvipdfmx}
+ \from{l3drivers-draw.dtx} {package,xdvipdfmx}
+ \from{l3drivers-graphics.dtx}{package,xdvipdfmx}
+ \from{l3drivers-pdf.dtx} {package,xdvipdfmx}
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
index 8630aadd0e7..f41ceae0743 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 2d2ca43f60e..659c9f20ef8 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 19c48145a9a..88605016fd7 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index 922daa52a8f..ec3fd41f603 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index 62ace001892..04ed6e0321e 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
@@ -356,6 +356,23 @@
% \end{verbatim}
% \end{function}
%
+% \begin{function}[added = 2019-05-08]{\ior_shell_open:Nn}
+% \begin{syntax}
+% \cs{ior_shell_open:nN} \meta{stream} \Arg{shell~command}
+% \end{syntax}
+% Opens the \emph{pseudo}-file created by the output of the
+% \meta{shell command} for reading using \meta{stream} as the
+% control sequence for access. If the \meta{stream} was already
+% open it is closed before the new operation begins. The
+% \meta{stream} is available for access immediately and will remain
+% allocated to \meta{shell command} until a \cs{ior_close:N} instruction
+% is given or the \TeX{} run ends.
+% If piped system calls are disabled an error is raised.
+%
+% For details of handling of the \meta{shell command}, see
+% \cs{sys_shell_get:nnN(TF)}.
+% \end{function}
+%
% \section{Additions to \pkg{l3flag}}
%
% \begin{function}[EXP, added = 2018-04-02]{\flag_raise_if_clear:n}
@@ -2326,6 +2343,41 @@
% \end{macrocode}
% \end{macro}
%
+% \subsection{Additions to \pkg{l3file}}
+%
+% \begin{macrocode}
+%<@@=ior>
+% \end{macrocode}
+%
+% \begin{macro}{\ior_shell_open:Nn}
+% \begin{macro}{\@@_shell_open:nN}
+% Actually much easier than either the standard open or input versions!
+% \begin{macrocode}
+\cs_new_protected:Npn \ior_shell_open:Nn #1#2
+ {
+ \sys_if_shell:TF
+ { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
+ { \__kernel_msg_error:nn { kernel } { pipe-failed } }
+ }
+\cs_new_protected:Npn \@@_shell_open:nN #1#2
+ {
+ \tl_if_in:nnTF {#1} { " }
+ {
+ \__kernel_msg_error:nnx
+ { kernel } { quote-in-shell } {#1}
+ }
+ { \__kernel_ior_open:Nn #2 { "|#1" } }
+ }
+\__kernel_msg_new:nnnn { kernel } { 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.
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \subsection{Additions to \pkg{l3tl}}
%
% \subsubsection{Unicode case changing}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index bd26eae590f..4b1444782d1 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index ad7ae7d9d61..38f3cd371d8 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
index bdb82b59cb9..393ea0f2fe5 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index 9d97cf80368..ce931f0e165 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index fe5c6443f0f..ebbb552a31d 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-07}
+% \date{Released 2019-05-09}
% \maketitle
% \tableofcontents
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index 3fe44c872b8..b648dd93179 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
index 9b9674406f1..e02738d08f1 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
@@ -117,6 +117,13 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{variable}{\l_@@_internal_box}
+% A scratch box.
+% \begin{macrocode}
+\box_new:N \l_@@_internal_box
+% \end{macrocode}
+% \end{variable}
+%
% \subsection{\texttt{dvips} driver}
%
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
index f8a5f1e3a84..3a7728c5b6e 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
index 6a97beffa33..ae4cde421ce 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
index bc7bac514eb..5bdcb3bddc2 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
@@ -1223,7 +1223,7 @@
% \texttt{dvips}. Here, we are only allowed RGB colors so there is some
% conversion to do.
% \begin{macrocode}
-\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
+\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
{
\use:x
{
@@ -1234,18 +1234,18 @@
}
}
\cs_new_eq:NN \driver_draw_color_stroke_cmyk:nnnn \driver_color_cmyk:nnnn
-\cs_new_protected:Npn \driver_draw_color_gray:n #1
+\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
{
\use:x
{
\@@_draw_color_gray_aux:n
- { \fp_eval:n { 100 * (#3) } }
+ { \fp_eval:n { 100 * (#1) } }
}
}
\cs_new_protected:Npn \@@_draw_color_gray_aux:n #1
{ \@@_draw_color_fill:nnn {#1} {#1} {#1} }
\cs_new_eq:NN \driver_draw_color_stroke_gray:n \driver_color_gray:n
-\cs_new_protected:Npn \driver_draw_color_rgb:nnn #1#2#3
+\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
{
\use:x
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx
new file mode 100644
index 00000000000..555b394ae15
--- /dev/null
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx
@@ -0,0 +1,557 @@
+% \iffalse meta-comment
+%
+%% File: l3drivers-graphics.dtx
+%
+% Copyright (C) 2019 The LaTeX3 Project
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% https://www.latex-project.org/lppl.txt
+%
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full,kernel]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \textsf{l3drivers-graphics} package\\ Driver graphics 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-09}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3drivers-graphics} Implementation}
+%
+% \begin{macrocode}
+%<*initex|package>
+%<@@=driver>
+% \end{macrocode}
+%
+% \subsection{\texttt{dvips} driver}
+%
+% \begin{macrocode}
+%<*dvips>
+% \end{macrocode}
+%
+% \begin{macro}{\driver_graphics_getbb_eps:n}
+% Simply use the generic function.
+% \begin{macrocode}
+%<*initex>
+\use:n
+%</initex>
+%<*package>
+\AtBeginDocument
+%</package>
+ { \cs_new_eq:NN \driver_graphics_getbb_eps:n \graphics_read_bb:n }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\driver_graphics_include_eps:n}
+% The special syntax is relatively clear here: remember we need PostScript
+% sizes here.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_graphics_include_eps:n #1
+ {
+ \@@_literal:x
+ {
+ PSfile = #1 \c_space_tl
+ llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dvips>
+% \end{macrocode}
+%
+% \subsection{\texttt{pdfmode} driver}
+%
+% \begin{macrocode}
+%<*pdfmode>
+% \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
+% 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.
+% \begin{macrocode}
+\tl_new:N \l_@@_graphics_attr_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}
+% {
+% \driver_graphics_getbb_jpg:n,
+% \driver_graphics_getbb_pdf:n,
+% \driver_graphics_getbb_png:n
+% }
+% \begin{macro}
+% {\@@_graphics_getbb_auxi:n, \@@_graphics_getbb_auxii:n}
+% Getting the bounding box here requires us to box up the image 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
+% 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.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
+ {
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \tl_set:Nx \l_@@_graphics_attr_tl
+ {
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { :D \l_graphics_decodearray_tl }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { :I }
+ }
+ \tl_clear:N \l_@@_graphics_attr_tl
+ \@@_graphics_getbb_auxi:n {#1}
+ }
+\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
+\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
+ {
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \tl_set:Nx \l_@@_graphics_attr_tl
+ {
+ : \l_graphics_pagebox_tl
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { :P \int_use:N \l_graphics_page_int }
+ }
+ \@@_graphics_getbb_auxi:n {#1}
+ }
+\cs_new_protected:Npn \@@_graphics_getbb_auxi:n #1
+ {
+ \graphics_bb_restore:xF { #1 \l_@@_graphics_attr_tl }
+ { \@@_graphics_getbb_auxii:n {#1} }
+ }
+% \begin{macrocode}
+% Measuring the image is done by boxing up: for PDF images 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.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_graphics_getbb_auxii:n #1
+ {
+ \tex_immediate:D \tex_pdfximage:D
+ \bool_lazy_or:nnT
+ { \l_graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
+ {
+ attr ~
+ {
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { /Decode~[ \l_graphics_decodearray_tl ] }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { /Interpolate~true }
+ }
+ }
+ \int_compare:nNnT \l_graphics_page_int > 0
+ { page ~ \int_use:N \l_graphics_page_int }
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ { \l_graphics_pagebox_tl }
+ {#1}
+ \hbox_set:Nn \l_@@_internal_box
+ { \tex_pdfrefximage:D \tex_pdflastximage:D }
+ \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l_@@_internal_box }
+ \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l_@@_internal_box }
+ \int_const:cn { c_@@_graphics_ #1 \l_@@_graphics_attr_tl _int }
+ { \tex_the:D \tex_pdflastximage:D }
+ \graphics_bb_save:x { #1 \l_@@_graphics_attr_tl }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+% {
+% \driver_graphics_include_jpg:n,
+% \driver_graphics_include_pdf:n,
+% \driver_graphics_include_png:n
+% }
+% Images are already loaded for the measurement part of the code, so
+% inclusion is straight-forward, with only any attributes to worry about. The
+% latter carry through from determination of the bounding box.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_graphics_include_jpg:n #1
+ {
+ \tex_pdfrefximage:D
+ \int_use:c { c_@@_graphics_ #1 \l_@@_graphics_attr_tl _int }
+ }
+\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
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</pdfmode>
+% \end{macrocode}
+%
+% \subsection{\texttt{dvipdfmx} driver}
+%
+% \begin{macrocode}
+%<*dvipdfmx|xdvipdfmx>
+% \end{macrocode}
+%
+% \begin{macro}
+% {
+% \driver_graphics_getbb_eps:n, \driver_graphics_getbb_jpg:n,
+% \driver_graphics_getbb_pdf:n, \driver_graphics_getbb_png:n
+% }
+% Simply use the generic functions: only for \texttt{dvipdfmx} in the
+% extraction cases.
+% \begin{macrocode}
+%<*initex>
+\use:n
+%</initex>
+%<*package>
+\AtBeginDocument
+%</package>
+ { \cs_new_eq:NN \driver_graphics_getbb_eps:n \graphics_read_bb:n }
+%<*dvipdfmx>
+\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
+ {
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \graphics_extract_bb:n {#1}
+ }
+\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
+\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
+ {
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \graphics_extract_bb:n {#1}
+ }
+%</dvipdfmx>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\g_@@_graphics_int}
+% Used to track the object number associated with each image.
+% \begin{macrocode}
+\int_new:N \g_@@_graphics_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}
+% {
+% \driver_graphics_include_eps:n, \driver_graphics_include_jpg:n,
+% \driver_graphics_include_pdf:n, \driver_graphics_include_png:n
+% }
+% \begin{macro}{\@@_graphics_include_auxi:nn}
+% \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
+% the latter it is better to use the primitive route. The relevant code for
+% that is included later in this file.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_graphics_include_eps:n #1
+ {
+ \@@_literal:x
+ {
+ PSfile = #1 \c_space_tl
+ llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
+ }
+ }
+\cs_new_protected:Npn \driver_graphics_include_jpg:n #1
+ { \@@_graphics_include_auxi:nn {#1} { image } }
+\cs_new_eq:NN \driver_graphics_include_png:n \driver_graphics_include_jpg:n
+%<*dvipdfmx>
+\cs_new_protected:Npn \driver_graphics_include_pdf:n #1
+ { \@@_graphics_include_auxi:nn {#1} { epdf } }
+%</dvipdfmx>
+% \end{macrocode}
+% Image 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.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_graphics_include_auxi:nn #1#2
+ {
+ \@@_graphics_include_auxii:xnn
+ {
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ { : \l_graphics_pagebox_tl }
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { :P \int_use:N \l_graphics_page_int }
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { :D \l_graphics_decodearray_tl }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { :I }
+ }
+ {#1} {#2}
+ }
+\cs_new_protected:Npn \@@_graphics_include_auxii:nnn #1#2#3
+ {
+ \int_if_exist:cTF { c_@@_graphics_ #2#1 _int }
+ {
+ \@@_literal:x
+ { pdf:usexobj~@image \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,
+% it is necessary to provide both that information and the |bbox| argument:
+% odd things happen otherwise!
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_graphics_include_auxiii:nnn #1#2#3
+ {
+ \int_gincr:N \g_@@_graphics_int
+ \int_const:cn { c_@@_graphics_ #1#2 _int } { \g_@@_graphics_int }
+ \@@_literal:x
+ {
+ pdf:#3~
+ @image \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
+ {
+ pagebox ~ \l_graphics_pagebox_tl \c_space_tl
+ bbox ~
+ \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_ury_dim \c_space_tl
+ }
+ (#1)
+ \bool_lazy_or:nnT
+ { \l_graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
+ {
+ <<
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { /Decode~[ \l_graphics_decodearray_tl ] }
+ \bool_if:NT \l_graphics_interpolate_bool
+ { /Interpolate~true> }
+ >>
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dvipdfmx|xdvipdfmx>
+% \end{macrocode}
+%
+% \subsection{\texttt{xdvipdfmx} driver}
+%
+% \begin{macrocode}
+%<*xdvipdfmx>
+% \end{macrocode}
+%
+% \subsubsection{Images}
+%
+% \begin{macro}
+% {
+% \driver_graphics_getbb_jpg:n,
+% \driver_graphics_getbb_pdf:n,
+% \driver_graphics_getbb_png:n
+% }
+% \begin{macro}{\@@_graphics_getbb_auxi:nN}
+% \begin{macro}{\@@_graphics_getbb_auxii:nnN, \@@_graphics_getbb_auxii:VnN}
+% \begin{macro}{\@@_graphics_getbb_auxiii:nNnn}
+% \begin{macro}{\@@_graphics_getbb_auxiv:nnNnn, \@@_graphics_getbb_auxiv:VnNnn}
+% \begin{macro}{\@@_graphics_getbb_auxv:nNnn, \@@_graphics_getbb_auxv:nNnn}
+% \begin{macro}[EXP]{\@@_graphics_getbb_pagebox:w}
+% For \texttt{xdvipdfmx}, there are two primitives that allow us to obtain
+% the bounding box without needing \texttt{extractbb}. The only complexity
+% is passing the various minor variations to a common core process. The
+% \XeTeX{} primitive omits the text |box| from the page box specification,
+% so there is also some \enquote{trimming} to do here.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
+ {
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \@@_graphics_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
+ }
+\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
+\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
+ {
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \@@_graphics_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
+ }
+\cs_new_protected:Npn \@@_graphics_getbb_auxi:nN #1#2
+ {
+ \int_compare:nNnTF \l_graphics_page_int > 1
+ { \@@_graphics_getbb_auxii:VnN \l_graphics_page_int {#1} #2 }
+ { \@@_graphics_getbb_auxiii:nNnn {#1} #2 { :P 1 } { page 1 } }
+ }
+\cs_new_protected:Npn \@@_graphics_getbb_auxii:nnN #1#2#3
+ { \@@_graphics_getbb_auxiii:nNnn {#2} #3 { :P #1 } { page #1 } }
+\cs_generate_variant:Nn \@@_graphics_getbb_auxii:nnN { V }
+\cs_new_protected:Npn \@@_graphics_getbb_auxiii:nNnn #1#2#3#4
+ {
+ \tl_if_empty:NTF \l_graphics_pagebox_tl
+ { \@@_graphics_getbb_auxiv:VnNnn \l_graphics_pagebox_tl }
+ { \@@_graphics_getbb_auxv:nNnn }
+ {#1} #2 {#3} {#4}
+ }
+\cs_new_protected:Npn \@@_graphics_getbb_auxiv:nnNnn #1#2#3#4#5
+ {
+ \use:x
+ {
+ \@@_graphics_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
+ { #5 ~ \@@_graphics_getbb_pagebox:w #1 }
+ }
+ }
+\cs_generate_variant:Nn \@@_graphics_getbb_auxiv:nnNnn { V }
+\cs_new_protected:Npn \@@_graphics_getbb_auxv:nNnn #1#2#3#4
+ {
+ \graphics_bb_restore:nF {#1#3}
+ { \@@_graphics_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
+ }
+\cs_new_protected:Npn \@@_graphics_getbb_auxvi:nNnn #1#2#3#4
+ {
+ \hbox_set:Nn \l_@@_internal_box { #2 #1 ~ #4 }
+ \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l_@@_internal_box }
+ \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l_@@_internal_box }
+ \graphics_bb_save:n {#1#3}
+ }
+\cs_new:Npn \@@_graphics_getbb_pagebox:w #1 box {#1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\driver_graphics_include_pdf:n}
+% \begin{macro}{\@@_graphics_include_bitmap_quote:w}
+% For PDF images, 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
+% 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
+ {
+ \tex_XeTeXpdffile:D
+ \@@_graphics_include_pdf_quote:w #1 "#1" \q_stop \c_space_tl
+ \int_compare:nNnT \l_graphics_page_int > 0
+ { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
+ \exp_after:wN \@@_graphics_getbb_pagebox:w \l_graphics_pagebox_tl
+ }
+\cs_new:Npn \@@_graphics_include_pdf_quote:w #1 " #2 " #3 \q_stop
+ { " #2 " }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</xdvipdfmx>
+% \end{macrocode}
+%
+% \subsection{\texttt{dvisvgm} driver}
+%
+% \begin{macrocode}
+%<*dvisvgm>
+% \end{macrocode}
+%
+% \begin{macro}{\driver_graphics_getbb_png:n, \driver_graphics_getbb_jpg:n}
+% These can be included by extracting the bounding box data.
+% \begin{macrocode}
+%<*initex>
+\use:n
+%</initex>
+%<*package>
+\AtBeginDocument
+%</package>
+ {
+ \cs_new_eq:NN \driver_graphics_getbb_png:n \graphics_extract_bb:n
+ \cs_new_eq:NN \driver_graphics_getbb_jpg:n \graphics_extract_bb:n
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \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
+% \texttt{dvisvgm.def} for a more complex approach, needed if clipping,
+% \emph{etc.}, is covered at the image 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.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_graphics_include_png:n #1
+ {
+ \@@_literal:x
+ {
+ dvisvgm:img~
+ \dim_to_decimal:n { \l_graphics_ury_dim } ~
+ \dim_to_decimal:n { \l_graphics_ury_dim } ~
+ \@@_graphics_include_bitmap_quote:w #1 " #1 " \q_stop
+ }
+ }
+\cs_new_eq:NN \driver_graphics_include_jpg:n \driver_graphics_include_png:n
+\cs_new:Npn \@@_graphics_include_bitmap_quote:w #1 " #2 " #3 \q_stop
+ { " #2 " }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</dvisvgm>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</initex|package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
deleted file mode 100644
index f8f88d28bd6..00000000000
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
+++ /dev/null
@@ -1,504 +0,0 @@
-% \iffalse meta-comment
-%
-%% File: l3drivers-image.dtx
-%
-% Copyright (C) 2011-2019 The LaTeX3 Project
-%
-% It may be distributed and/or modified under the conditions of the
-% LaTeX Project Public License (LPPL), either version 1.3c of this
-% license or (at your option) any later version. The latest version
-% of this license is in the file
-%
-% https://www.latex-project.org/lppl.txt
-%
-% This file is part of the "l3kernel bundle" (The Work in LPPL)
-% and all files in that bundle must be distributed together.
-%
-% -----------------------------------------------------------------------
-%
-% The development version of the bundle can be found at
-%
-% https://github.com/latex3/latex3
-%
-% for those people who are interested.
-%
-%<*driver>
-\documentclass[full,kernel]{l3doc}
-\begin{document}
- \DocInput{\jobname.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \title{^^A
-% The \textsf{l3drivers-image} package\\ Driver image 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-07}
-%
-% \maketitle
-%
-% \begin{documentation}
-%
-% \end{documentation}
-%
-% \begin{implementation}
-%
-% \section{\pkg{l3drivers-image} Implementation}
-%
-% \begin{macrocode}
-%<*initex|package>
-%<@@=driver>
-% \end{macrocode}
-%
-% \subsection{\texttt{dvips} driver}
-%
-% \begin{macrocode}
-%<*dvips>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_image_getbb_eps:n}
-% Simply use the generic function.
-% \begin{macrocode}
-\cs_new_eq:NN \@@_image_getbb_eps:n \image_read_bb:n
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_image_include_eps:n}
-% The special syntax is relatively clear here: remember we need PostScript
-% sizes here.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_include_eps:n #1
- { \@@_literal:n { PSfile = #1 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</dvips>
-% \end{macrocode}
-%
-% \subsection{\texttt{pdfmode} driver}
-%
-% \begin{macrocode}
-%<*pdfmode>
-% \end{macrocode}
-%
-% \begin{variable}{\l_@@_image_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
-% 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.
-% \begin{macrocode}
-\tl_new:N \l_@@_image_attr_tl
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}
-% {\@@_image_getbb_jpg:n, \@@_image_getbb_pdf:n, \@@_image_getbb_png:n}
-% \begin{macro}
-% {\@@_image_getbb_auxi:n, \@@_image_getbb_auxii:n}
-% Getting the bounding box here requires us to box up the image 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
-% 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.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_getbb_jpg:n #1
- {
- \int_zero:N \l_image_page_int
- \tl_clear:N \l_image_pagebox_tl
- \tl_set:Nx \l_@@_image_attr_tl
- {
- \tl_if_empty:NF \l_image_decode_tl
- { :D \l_image_decodearray_tl }
- \bool_if:NT \l_image_interpolate_bool
- { :I }
- }
- \tl_clear:N \l_@@_image_attr_tl
- \@@_image_getbb_auxi:n {#1}
- }
-\cs_new_eq:NN \@@_image_getbb_png:n \@@_image_getbb_jpg:n
-\cs_new_protected:Npn \@@_image_getbb_pdf:n #1
- {
- \tl_clear:N \l_image_decode_tl
- \bool_set_false:N \l_image_interpolate_bool
- \tl_set:Nx \l_@@_image_attr_tl
- {
- : \l_image_pagebox_tl
- \int_compare:nNnT \l_image_page_int > 1
- { :P \int_use:N \l_image_page_int }
- }
- \@@_image_getbb_auxi:n {#1}
- }
-\cs_new_protected:Npn \@@_image_getbb_auxi:n #1
- {
- \image_bb_restore:xF { #1 \l_@@_image_attr_tl }
- { \@@_image_getbb_auxii:n {#1} }
- }
-% \begin{macrocode}
-% Measuring the image is done by boxing up: for PDF images 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.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_getbb_auxii:n #1
- {
- \tex_immediate:D \tex_pdfximage:D
- \bool_lazy_or:nnT
- { \l_image_interpolate_bool }
- { ! \tl_if_empty_p:N \l_image_decodearray_tl }
- {
- attr ~
- {
- \tl_if_empty:NF \l_image_decode_tl
- { /Decode~[ \l_image_decodearray_tl ] }
- \bool_if:NT \l_image_interpolate_bool
- { /Interpolate~true }
- }
- }
- \int_compare:nNnT \l_image_page_int > 0
- { page ~ \int_use:N \l_image_page_int }
- \tl_if_empty:NF \l_image_pagebox_tl
- { \l_image_pagebox_tl }
- {#1}
- \hbox_set:Nn \l_@@_tmp_box
- { \tex_pdfrefximage:D \tex_pdflastximage:D }
- \dim_set:Nn \l_image_urx_dim { \box_wd:N \l_@@_tmp_box }
- \dim_set:Nn \l_image_ury_dim { \box_ht:N \l_@@_tmp_box }
- \int_const:cn { c_@@_image_ #1 \l_@@_image_attr_tl _int }
- { \tex_the:D \tex_pdflastximage:D }
- \image_bb_save:x { #1 \l_@@_image_attr_tl }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}
-% {\@@_image_include_jpg:n, \@@_image_include_pdf:n, \@@_image_include_png:n}
-% Images are already loaded for the measurement part of the code, so
-% inclusion is straight-forward, with only any attributes to worry about. The
-% latter carry through from determination of the bounding box.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_include_jpg:n #1
- {
- \tex_pdfrefximage:D
- \int_use:c { c_@@_image_ #1 \l_@@_image_attr_tl _int }
- }
-\cs_new_eq:NN \@@_image_include_pdf:n \@@_image_include_jpg:n
-\cs_new_eq:NN \@@_image_include_png:n \@@_image_include_jpg:n
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</pdfmode>
-% \end{macrocode}
-%
-% \subsection{\texttt{dvipdfmx} driver}
-%
-% \begin{macrocode}
-%<*dvipdfmx|xdvipdfmx>
-% \end{macrocode}
-%
-% \begin{macro}
-% {
-% \@@_image_getbb_eps:n, \@@_image_getbb_jpg:n,
-% \@@_image_getbb_pdf:n, \@@_image_getbb_png:n
-% }
-% Simply use the generic functions: only for \texttt{dvipdfmx} in the
-% extraction cases.
-% \begin{macrocode}
-\cs_new_eq:NN \@@_image_getbb_eps:n \image_read_bb:n
-%<*dvipdfmx>
-\cs_new_protected:Npn \@@_image_getbb_jpg:n #1
- {
- \int_zero:N \l_image_page_int
- \tl_clear:N \l_image_pagebox_tl
- \image_extract_bb:n {#1}
- }
-\cs_new_eq:NN \@@_image_getbb_png:n \@@_image_getbb_jpg:n
-\cs_new_protected:Npn \@@_image_getbb_pdf:n #1
- {
- \tl_clear:N \l_image_decode_tl
- \bool_set_false:N \l_image_interpolate_bool
- \image_extract_bb:n {#1}
- }
-%</dvipdfmx>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{variable}{\g_@@_image_int}
-% Used to track the object number associated with each image.
-% \begin{macrocode}
-\int_new:N \g_@@_image_int
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}
-% {
-% \@@_image_include_eps:n, \@@_image_include_jpg:n,
-% \@@_image_include_pdf:n, \@@_image_include_png:n
-% }
-% \begin{macro}{\@@_image_include_auxi:nn}
-% \begin{macro}{\@@_image_include_auxii:nnn, \@@_image_include_auxii:xnn}
-% \begin{macro}{\@@_image_include_auxiii:nn}
-% The special syntax depends on the file type. There is a difference in
-% how PDF images 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}
-\cs_new_protected:Npn \@@_image_include_eps:n #1
- {
- \@@_literal:n { PSfile = #1 }
- }
-\cs_new_protected:Npn \@@_image_include_jpg:n #1
- { \@@_image_include_auxi:nn {#1} { image } }
-\cs_new_eq:NN \@@_image_include_png:n \@@_image_include_jpg:n
-%<*dvipdfmx>
-\cs_new_protected:Npn \@@_image_include_pdf:n #1
- { \@@_image_include_auxi:nn {#1} { epdf } }
-%</dvipdfmx>
-% \end{macrocode}
-% Image 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.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_include_auxi:nn #1#2
- {
- \@@_image_include_auxii:xnn
- {
- \tl_if_empty:NF \l_image_pagebox_tl
- { : \l_image_pagebox_tl }
- \int_compare:nNnT \l_image_page_int > 1
- { :P \int_use:N \l_image_page_int }
- \tl_if_empty:NF \l_image_decode_tl
- { :D \l_image_decodearray_tl }
- \bool_if:NT \l_image_interpolate_bool
- { :I }
- }
- {#1} {#2}
- }
-\cs_new_protected:Npn \@@_image_include_auxii:nnn #1#2#3
- {
- \int_if_exist:cTF { c_@@_image_ #2#1 _int }
- {
- \@@_literal:x
- { pdf:usexobj~@image \int_use:c { c_@@_image_ #2#1 _int } }
- }
- { \@@_image_include_auxiii:nn {#2} {#1} {#3} }
- }
-\cs_generate_variant:Nn \@@_image_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,
-% it is necessary to provide both that information and the |bbox| argument:
-% odd things happen otherwise!
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_include_auxiii:nnn #1#2#3
- {
- \int_gincr:N \g_@@_image_int
- \int_const:cn { c_@@_image_ #1#2 _int } { \g_@@_image_int }
- \@@_literal:x
- {
- pdf:#3~
- @image \int_use:c { c_@@_image_ #1#2 _int }
- \int_compare:nNnT \l_image_page_int > 1
- { page ~ \int_use:N \l_image_page_int \c_space_tl }
- \tl_if_empty:NF \l_image_pagebox_tl
- {
- pagebox ~ \l_image_pagebox_tl \c_space_tl
- bbox ~
- \dim_to_decimal_in_bp:n \l_image_llx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_lly_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_urx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_ury_dim \c_space_tl
- }
- (#1)
- \bool_lazy_or:nnT
- { \l_image_interpolate_bool }
- { ! \tl_if_empty_p:N \l_image_decodearray_tl }
- {
- <<
- \tl_if_empty:NF \l_image_decode_tl
- { /Decode~[ \l_image_decodearray_tl ] }
- \bool_if:NT \l_image_interpolate_bool
- { /Interpolate~true> }
- >>
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-%</dvipdfmx|xdvipdfmx>
-% \end{macrocode}
-%
-% \subsection{\texttt{xdvipdfmx} driver}
-%
-% \begin{macrocode}
-%<*xdvipdfmx>
-% \end{macrocode}
-%
-% \subsubsection{Images}
-%
-% \begin{macro}
-% {\@@_image_getbb_jpg:n, \@@_image_getbb_pdf:n, \@@_image_getbb_png:n}
-% \begin{macro}{\@@_image_getbb_auxi:nN}
-% \begin{macro}{\@@_image_getbb_auxii:nnN, \@@_image_getbb_auxii:VnN}
-% \begin{macro}{\@@_image_getbb_auxiii:nNnn}
-% \begin{macro}{\@@_image_getbb_auxiv:nnNnn, \@@_image_getbb_auxiv:VnNnn}
-% \begin{macro}{\@@_image_getbb_auxv:nNnn, \@@_image_getbb_auxv:nNnn}
-% \begin{macro}[EXP]{\@@_image_getbb_pagebox:w}
-% For \texttt{xdvipdfmx}, there are two primitives that allow us to obtain
-% the bounding box without needing \texttt{extractbb}. The only complexity
-% is passing the various minor variations to a common core process. The
-% \XeTeX{} primitive omits the text |box| from the page box specification,
-% so there is also some \enquote{trimming} to do here.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_getbb_jpg:n #1
- {
- \int_zero:N \l_image_page_int
- \tl_clear:N \l_image_pagebox_tl
- \@@_image_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
- }
-\cs_new_eq:NN \@@_image_getbb_png:n \@@_image_getbb_jpg:n
-\cs_new_protected:Npn \@@_image_getbb_pdf:n #1
- {
- \tl_clear:N \l_image_decode_tl
- \bool_set_false:N \l_image_interpolate_bool
- \@@_image_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
- }
-\cs_new_protected:Npn \@@_image_getbb_auxi:nN #1#2
- {
- \int_compare:nNnTF \l_image_page_int > 1
- { \@@_image_getbb_auxii:VnN \l_image_page_int {#1} #2 }
- { \@@_image_getbb_auxiii:nNnn {#1} #2 }
- }
-\cs_new_protected:Npn \@@_image_getbb_auxii:nnN #1#2#3
- { \@@_image_getbb_aux:nNnn {#2} #3 { :P #1 } { page #1 } }
-\cs_generate_variant:Nn \@@_image_getbb_auxii:nnN { V }
-\cs_new_protected:Npn \@@_image_getbb_auxiii:nNnn #1#2#3#4
- {
- \tl_if_empty:NTF \l_image_pagebox_tl
- { \@@_image_getbb_auxiv:VnNnn \l_image_pagebox_tl }
- { \@@_image_getbb_auxv:nNnn }
- {#1} #2 {#3} {#4}
- }
-\cs_new_protected:Npn \@@_image_getbb_auxiv:nnNnn #1#2#3#4#5
- {
- \use:x
- {
- \@@_image_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
- { #5 ~ \@@_image_getbb_pagebox:w #1 }
- }
- }
-\cs_generate_variant:Nn \@@_image_getbb_auxiv:nnNnn { V }
-\cs_new_protected:Npn \@@_image_getbb_auxv:nNnn #1#2#3#4
- {
- \image_bb_restore:nF {#1#3}
- { \@@_image_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
- }
-\cs_new_protected:Npn \@@_image_getbb_auxvi:nNnn #1#2#3#4
- {
- \hbox_set:Nn \l_@@_tmp_box { #2 #1 ~ #4 }
- \dim_set:Nn \l_image_utx_dim { \box_wd:N \l_@@_tmp_box }
- \dim_set:Nn \l_image_ury_dim { \box_ht:N \l_@@_tmp_box }
- \image_bb_save:n {#1#3}
- }
-\cs_new:Npn \@@_image_getbb_pagebox:w #1 box {#1}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_image_include_pdf:n}
-% For PDF images, 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
-% stage that there must be some valid setting for \cs{l_image_pagebox_tl}.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_include_pdf:n #1
- {
- \tex_XeTeXpdffile:D "#1" ~
- \int_compare:nNnT \l_image_page_int > 0
- { page~ \int_use:N \l_image_page_int }
- \@@_image_getbb_auxiv:VnNnn \l_image_pagebox_tl
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-%</xdvipdfmx>
-% \end{macrocode}
-%
-% \subsection{\texttt{dvisvgm} driver}
-%
-% \begin{macrocode}
-%<*dvisvgm>
-% \end{macrocode}
-%
-% \begin{macro}{\@@_image_getbb_png:n, \@@_image_getbb_jpg:n}
-% These can be included by extracting the bounding box data.
-% \begin{macrocode}
-\cs_new_eq:NN \@@_image_getbb_png:n \image_extract_bb:n
-\cs_new_eq:NN \@@_image_getbb_jpg:n \image_extract_bb:n
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@@_image_include_png:n, \@@_image_include_jpg:n}
-% \begin{macro}{\@@_image_include_bitmap_quote:w}
-% The driver here has built-in support for basic image 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
-% 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.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_image_include_png:n #1
- {
- \@@_literal:x
- {
- dvisvgm:img~
- \dim_to_decimal:n { \l_image_ury_dim } ~
- \dim_to_decimal:n { \l_image_ury_dim } ~
- \@@_image_include_bitmap_quote:w #1 " #1 " \q_stop
- }
- }
-\cs_new_eq:NN \@@_image_include_jpg:n \@@_image_include_png:n
-\cs_new:Npn \@@_image_include_bitmap_quote:w #1 " #2 " #3 \q_stop
- { " #2 " }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-%</dvisvgm>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%</initex|package>
-% \end{macrocode}
-%
-% \end{implementation}
-%
-% \PrintIndex
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
index 66fa57597e4..50215d5bf8f 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
@@ -71,13 +71,6 @@
% A very small number of items that belong at the driver level but which
% are common to all drivers.
%
-% \begin{variable}{\l_@@_pdf_tmp_box}
-% For fitting destinations.
-% \begin{macrocode}
-\box_new:N \l_@@_pdf_tmp_box
-% \end{macrocode}
-% \end{variable}
-%
% \subsection{\texttt{dvips} driver}
%
% \begin{macrocode}
@@ -1159,13 +1152,13 @@
\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
{
\group_begin:
- \hbox_set:Nn \l_@@_pdf_tmp_box {#2}
+ \hbox_set:Nn \l_@@_internal_box {#2}
\box_move_down:nn
- { \box_dp:N \l_@@_pdf_tmp_box }
+ { \box_dp:N \l_@@_internal_box }
{ \hbox:n { \@@_postscript:n { driver.save.ll } } }
- \box_use:N \l_@@_pdf_tmp_box
+ \box_use:N \l_@@_internal_box
\box_move_up:nn
- { \box_ht:N \l_@@_pdf_tmp_box }
+ { \box_ht:N \l_@@_internal_box }
{ \hbox:n { \@@_postscript:n { driver.save.ur } } }
\@@_pdfmark:n
{
@@ -1338,16 +1331,16 @@
\cs_new_protected:Npx \driver_pdf_destination_rectangle:nn #1#2
{
\group_begin:
- \hbox_set:Nn \l_@@_pdf_tmp_box {#2}
+ \hbox_set:Nn \l_@@_internal_box {#2}
\cs_if_exist:NTF \tex_pdfextension:D
{ \exp_not:N \tex_pdfextension:D dest ~ }
{ \exp_not:N \tex_pdfdest:D }
name {#1}
fitr ~
- width \exp_not:N \box_wd:N \l_@@_pdf_tmp_box
- height \exp_not:N \box_ht:N \l_@@_pdf_tmp_box
- depth \exp_not:N \box_dp:N \l_@@_pdf_tmp_box
- \box_use:N \l_@@_pdf_tmp_box
+ width \exp_not:N \box_wd:N \l_@@_internal_box
+ height \exp_not:N \box_ht:N \l_@@_internal_box
+ depth \exp_not:N \box_dp:N \l_@@_internal_box
+ \box_use:N \l_@@_internal_box
\group_end:
}
% \end{macrocode}
@@ -1797,8 +1790,8 @@
\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
{
\group_begin:
- \hbox_set:Nn \l_@@_pdf_tmp_box {#2}
- \box_move_down:nn { \box_dp:N \l_@@_pdf_tmp_box }
+ \hbox_set:Nn \l_@@_internal_box {#2}
+ \box_move_down:nn { \box_dp:N \l_@@_internal_box }
{
\hbox:n
{
@@ -1806,8 +1799,8 @@
\@@_pdf:n { obj ~ @driver_#1_lly ~ @ypos }
}
}
- \box_use:N \l_@@_pdf_tmp_box
- \box_move_up:nn { \box_ht:N \l_@@_pdf_tmp_box }
+ \box_use:N \l_@@_internal_box
+ \box_move_up:nn { \box_ht:N \l_@@_internal_box }
{
\hbox:n
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 352eb9a149c..24f7ad3eb9b 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
@@ -463,6 +463,58 @@
% given.
% \end{function}
%
+% \section{Graphics inclusion}
+%
+% Graphics inclusion support is closely tied to the higher-level \pkg{l3graphics}
+% module. This arises as information concerning images (\emph{e.g.}~page
+% numbers in multi-page files) is needed to correct cache image data. As
+% such, the driver code here assumes the following are defined
+% \begin{itemize}
+% \item \cs{l_image_decodearray_tl}
+% \item \cs{l_image_interpolate_tl}
+% \item \cs{l_image_page_tl}
+% \item \cs{l_image_pagebox_tl}
+% \end{itemize}
+%
+% Note also that the functions defined will depend on the file types supported
+% by the driver. As such, a calling function should typically test for the
+% existence of an appropriate function to determine if the image file is
+% supported.
+%
+% \begin{function}[added = 2019-05-07]
+% {
+% \driver_graphics_getbb_eps:n,
+% \driver_graphics_getbb_jpg:n,
+% \driver_graphics_getbb_pdf:n,
+% \driver_graphics_getbb_png:n
+% }
+% \begin{syntax}
+% \cs{driver_graphics_getbb_pdf:n} \Arg{file}
+% \end{syntax}
+% These functions load the requested image \meta{file} and obtain the
+% bounding box information on the file. They may also cache the image for
+% subsequent inclusion: this is driver-dependent. The bounding box data
+% will be stored in \cs{l_image_llx_dim}, \cs{l_image_lly_dim},
+% \cs{l_image_urx_dim}, and \cs{l_image_ury_dim} after use of these
+% functions.
+% \end{function}
+%
+% \begin{function}[added = 2019-05-07]
+% {
+% \driver_graphics_include_eps:n,
+% \driver_graphics_include_jpg:n,
+% \driver_graphics_include_pdf:n,
+% \driver_graphics_include_png:n
+% }
+% \begin{syntax}
+% \cs{driver_graphics_include_pdf:n} \Arg{file}
+% \end{syntax}
+% These functions include the appropriate image type at the current position.
+% They should be preceded by use of the matching \texttt{getbb} function to
+% set the bounding box correctly; in some drivers, the \texttt{getbb}
+% function is also responsible for caching the image for later inclusion.
+% \end{function}
+%
% \section{PDF Features}
%
% A range of PDF features are exposed by \pdfTeX{} and \LuaTeX{} in direct PDF
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index 5632b927799..c4afb3010fc 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index abbdf458c7a..d6b61507d47 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
@@ -631,7 +631,7 @@
% \end{function}
%
% \begin{function}[added = 2017-06-23, updated = 2017-06-26]
-% {\file_parse_full_name:nNNN}
+% {\file_parse_full_name:nNNN, \file_parse_full_name:VNNN}
% \begin{syntax}
% \cs{file_parse_full_name:nNNN} \Arg{full name} \meta{dir} \meta{name} \meta{ext}
% \end{syntax}
@@ -2410,7 +2410,7 @@
\prg_return_false:
}
{
- \exp_args:NV \file_parse_full_name:nNNN \l_@@_full_name_tl
+ \file_parse_full_name:VNNN \l_@@_full_name_tl
\l_@@_dir_str \l_@@_name_str \l_@@_ext_str
\str_if_empty:NT \l_@@_ext_str
{
@@ -2658,7 +2658,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\file_parse_full_name:nNNN}
+% \begin{macro}{\file_parse_full_name:nNNN, \file_parse_full_name:VNNN}
% \begin{macro}
% {\@@_parse_full_name_auxi:w, \@@_parse_full_name_split:nNNNTF}
% Parsing starts by stripping off any surrounding quotes. Then find
@@ -2677,6 +2677,7 @@
\exp_after:wN \@@_parse_full_name_auxi:w
\tl_to_str:n { #1 " #1 " } \q_stop #2#3#4
}
+\cs_generate_variant:Nn \file_parse_full_name:nNNN { V }
\cs_new_protected:Npn \@@_parse_full_name_auxi:w
#1 " #2 " #3 \q_stop #4#5#6
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
index b54aa8b18b2..fe877311103 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index 3e327adb363..d5527a62785 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3format.ins b/Master/texmf-dist/source/latex/l3kernel/l3format.ins
index facad3048b4..a0ba292e390 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3format.ins
+++ b/Master/texmf-dist/source/latex/l3kernel/l3format.ins
@@ -115,65 +115,65 @@ and all files in that bundle must be distributed together.
{
\file{l3dvipdfmx.ltx}
{
- \from{l3drivers.dtx} {initex,dvipdfmx}
- \from{l3drivers-basics.dtx}{initex,dvipdfmx}
- \from{l3drivers-color.dtx} {initex,dvipdfmx}
- \from{l3drivers-box.dtx} {initex,dvipdfmx}
- \from{l3drivers-draw.dtx} {initex,dvipdfmx}
- \from{l3drivers-image.dtx} {initex,dvipdfmx}
- \from{l3drivers-pdf.dtx} {initex,dvipdfmx}
+ \from{l3drivers.dtx} {initex,dvipdfmx}
+ \from{l3drivers-basics.dtx} {initex,dvipdfmx}
+ \from{l3drivers-color.dtx} {initex,dvipdfmx}
+ \from{l3drivers-box.dtx} {initex,dvipdfmx}
+ \from{l3drivers-draw.dtx} {initex,dvipdfmx}
+ \from{l3drivers-graphics.dtx}{initex,dvipdfmx}
+ \from{l3drivers-pdf.dtx} {initex,dvipdfmx}
}
}
\generate
{
\file{l3dvips.ltx}
{
- \from{l3drivers.dtx} {initex,dvips}
- \from{l3drivers-basics.dtx}{initex,dvips}
- \from{l3drivers-color.dtx} {initex,dvips}
- \from{l3drivers-box.dtx} {initex,dvips}
- \from{l3drivers-draw.dtx} {initex,dvips}
- \from{l3drivers-image.dtx} {initex,dvips}
- \from{l3drivers-pdf.dtx} {initex,dvips}
+ \from{l3drivers.dtx} {initex,dvips}
+ \from{l3drivers-basics.dtx} {initex,dvips}
+ \from{l3drivers-color.dtx} {initex,dvips}
+ \from{l3drivers-box.dtx} {initex,dvips}
+ \from{l3drivers-draw.dtx} {initex,dvips}
+ \from{l3drivers-graphics.dtx}{initex,dvips}
+ \from{l3drivers-pdf.dtx} {initex,dvips}
}
}
\generate
{
\file{l3dvisvgm.ltx}
{
- \from{l3drivers.dtx} {initex,dvisvgm}
- \from{l3drivers-basics.dtx}{initex,dvisvgm}
- \from{l3drivers-color.dtx} {initex,dvisvgm}
- \from{l3drivers-box.dtx} {initex,dvisvgm}
- \from{l3drivers-draw.dtx} {initex,dvisvgm}
- \from{l3drivers-image.dtx} {initex,dvisvgm}
- \from{l3drivers-pdf.dtx} {initex,dvisvgm}
+ \from{l3drivers.dtx} {initex,dvisvgm}
+ \from{l3drivers-basics.dtx} {initex,dvisvgm}
+ \from{l3drivers-color.dtx} {initex,dvisvgm}
+ \from{l3drivers-box.dtx} {initex,dvisvgm}
+ \from{l3drivers-draw.dtx} {initex,dvisvgm}
+ \from{l3drivers-graphics.dtx}{initex,dvisvgm}
+ \from{l3drivers-pdf.dtx} {initex,dvisvgm}
}
}
\generate
{
\file{l3pdfmode.ltx}
{
- \from{l3drivers.dtx} {initex,pdfmode}
- \from{l3drivers-basics.dtx}{initex,pdfmode}
- \from{l3drivers-color.dtx} {initex,pdfmode}
- \from{l3drivers-box.dtx} {initex,pdfmode}
- \from{l3drivers-draw.dtx} {initex,pdfmode}
- \from{l3drivers-image.dtx} {initex,pdfmode}
- \from{l3drivers-pdf.dtx} {initex,pdfmode}
+ \from{l3drivers.dtx} {initex,pdfmode}
+ \from{l3drivers-basics.dtx} {initex,pdfmode}
+ \from{l3drivers-color.dtx} {initex,pdfmode}
+ \from{l3drivers-box.dtx} {initex,pdfmode}
+ \from{l3drivers-draw.dtx} {initex,pdfmode}
+ \from{l3drivers-graphics.dtx}{initex,pdfmode}
+ \from{l3drivers-pdf.dtx} {initex,pdfmode}
}
}
\generate
{
\file{l3xdvipdfmx.ltx}
{
- \from{l3drivers.dtx} {initex,xdvipdfmx}
- \from{l3drivers-basics.dtx}{initex,xdvipdfmx}
- \from{l3drivers-color.dtx} {initex,xdvipdfmx}
- \from{l3drivers-box.dtx} {initex,xdvipdfmx}
- \from{l3drivers-draw.dtx} {initex,xdvipdfmx}
- \from{l3drivers-image.dtx} {initex,xdvipdfmx}
- \from{l3drivers-pdf.dtx} {initex,xdvipdfmx}
+ \from{l3drivers.dtx} {initex,xdvipdfmx}
+ \from{l3drivers-basics.dtx} {initex,xdvipdfmx}
+ \from{l3drivers-color.dtx} {initex,xdvipdfmx}
+ \from{l3drivers-box.dtx} {initex,xdvipdfmx}
+ \from{l3drivers-draw.dtx} {initex,xdvipdfmx}
+ \from{l3drivers-graphics.dtx}{initex,xdvipdfmx}
+ \from{l3drivers-pdf.dtx} {initex,xdvipdfmx}
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index 8586b87bae5..1b4e5558e7d 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-07}
+% \date{Released 2019-05-09}
% \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 2220f1ff961..8eda1c12665 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index 959aaa767b3..c87d4fb4bc2 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index 002949473f9..8ff9a3b7c2d 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index da2fb058fa2..a87bf8b1226 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index f61a75d20e3..30113e4b8cd 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index f45dfdd9c8c..37ee7d9a3cb 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 35fbef51a79..15227cc22ae 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index d3806b650d4..5cf80f99ddb 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 5b2b3f7df19..79c83da24de 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index d959159d249..43c579ddde7 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-07}
+% \date{Released 2019-05-09}
% \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 73255fc75ce..2eb21b5137b 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index e1b7c97528a..1893a78c128 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index 5e4990ac3bc..fa6587de3f6 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 68cef09c400..0eaab0032d0 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 2b92dd7cd22..5e07dbf968e 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index 54a67f7190c..b543303a41d 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index 4a5f702e881..ecb249c825d 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
index 4042ac496da..3c32583bff1 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 681ad43e66c..293d940191e 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 34538000c00..7a6855623b8 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 4b4d6b7eb99..8c9660c12b8 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 892be9f7aff..171da06d375 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 63c72312ce4..60e155eb59b 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index 5d8d04ca19b..d5f71ff35c5 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index a71b26efb50..e6e91a4393a 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 4978342acb8..5ff1628798c 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 6dbe67aa99f..9951df03fd2 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index efdd156d27a..ef8921366c2 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index dcf37ff0ca9..c1079afa4c6 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index 1fad7d2b3fe..da6bd0b48b0 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 7986bb083a6..1fda8a3ad23 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 029ade7027e..048580b4e3d 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index 4ef58f52567..84bed54d9c8 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index 37494fd319a..107ba0369ce 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-07}
+% \date{Released 2019-05-09}
%
% \maketitle
%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 0bd3c4c3f10..cd2f1013847 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-07}%
+\def\ExplFileDate{2019-05-09}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -11036,7 +11036,7 @@
\prg_return_false:
}
{
- \exp_args:NV \file_parse_full_name:nNNN \l__file_full_name_tl
+ \file_parse_full_name:VNNN \l__file_full_name_tl
\l__file_dir_str \l__file_name_str \l__file_ext_str
\str_if_empty:NT \l__file_ext_str
{
@@ -11210,6 +11210,7 @@
\exp_after:wN \__file_parse_full_name_auxi:w
\tl_to_str:n { #1 " #1 " } \q_stop #2#3#4
}
+\cs_generate_variant:Nn \file_parse_full_name:nNNN { V }
\cs_new_protected:Npn \__file_parse_full_name_auxi:w
#1 " #2 " #3 \q_stop #4#5#6
{
@@ -26453,6 +26454,27 @@
{ \iow_shipout:Nn \c__sys_shell_stream_int {#1} }
}
\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+\cs_new_protected:Npn \ior_shell_open:Nn #1#2
+ {
+ \sys_if_shell:TF
+ { \exp_args:No \__ior_shell_open:nN { \tl_to_str:n {#2} } #1 }
+ { \__kernel_msg_error:nn { kernel } { pipe-failed } }
+ }
+\cs_new_protected:Npn \__ior_shell_open:nN #1#2
+ {
+ \tl_if_in:nnTF {#1} { " }
+ {
+ \__kernel_msg_error:nnx
+ { kernel } { quote-in-shell } {#1}
+ }
+ { \__kernel_ior_open:Nn #2 { "|#1" } }
+ }
+\__kernel_msg_new:nnnn { kernel } { 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.
+ }
\cs_new:Npn \char_lower_case:N #1
{ \__char_change_case:nNN { lower } \char_value_lccode:n #1 }
\cs_new:Npn \char_upper_case:N #1
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index a9a82d7acf7..6d8a56abcaa 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-07}%
+\def\ExplFileDate{2019-05-09}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 677f47de59d..b8aaca40a4c 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-07}%
+\def\ExplFileDate{2019-05-09}%
\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 bed26918ee0..3bdc8505acb 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
@@ -9,7 +9,7 @@
%% l3drivers-color.dtx (with options: `package,dvipdfmx')
%% l3drivers-box.dtx (with options: `package,dvipdfmx')
%% l3drivers-draw.dtx (with options: `package,dvipdfmx')
-%% l3drivers-image.dtx (with options: `package,dvipdfmx')
+%% l3drivers-graphics.dtx (with options: `package,dvipdfmx')
%% l3drivers-pdf.dtx (with options: `package,dvipdfmx')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
@@ -33,6 +33,7 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\box_new:N \l__driver_internal_box
\cs_new_protected:Npn \__driver_literal_pdf:n #1
{ \__driver_literal:n { pdf:literal~ #1 } }
\cs_generate_variant:Nn \__driver_literal_pdf:n { x }
@@ -351,91 +352,98 @@
\__driver_literal:n { pdf:etrans }
\__driver_scope_end:
}
-%% File: l3drivers-image.dtx
-\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
-\cs_new_protected:Npn \__driver_image_getbb_jpg:n #1
+%% File: l3drivers-graphics.dtx
+\AtBeginDocument
+ { \cs_new_eq:NN \driver_graphics_getbb_eps:n \graphics_read_bb:n }
+\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
{
- \int_zero:N \l_image_page_int
- \tl_clear:N \l_image_pagebox_tl
- \image_extract_bb:n {#1}
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \graphics_extract_bb:n {#1}
}
-\cs_new_eq:NN \__driver_image_getbb_png:n \__driver_image_getbb_jpg:n
-\cs_new_protected:Npn \__driver_image_getbb_pdf:n #1
+\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
+\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
{
- \tl_clear:N \l_image_decode_tl
- \bool_set_false:N \l_image_interpolate_bool
- \image_extract_bb:n {#1}
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \graphics_extract_bb:n {#1}
}
-\int_new:N \g__driver_image_int
-\cs_new_protected:Npn \__driver_image_include_eps:n #1
+\int_new:N \g__driver_graphics_int
+\cs_new_protected:Npn \driver_graphics_include_eps:n #1
{
- \__driver_literal:n { PSfile = #1 }
+ \__driver_literal:x
+ {
+ PSfile = #1 \c_space_tl
+ llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
+ }
}
-\cs_new_protected:Npn \__driver_image_include_jpg:n #1
- { \__driver_image_include_auxi:nn {#1} { image } }
-\cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n
-\cs_new_protected:Npn \__driver_image_include_pdf:n #1
- { \__driver_image_include_auxi:nn {#1} { epdf } }
-\cs_new_protected:Npn \__driver_image_include_auxi:nn #1#2
+\cs_new_protected:Npn \driver_graphics_include_jpg:n #1
+ { \__driver_graphics_include_auxi:nn {#1} { image } }
+\cs_new_eq:NN \driver_graphics_include_png:n \driver_graphics_include_jpg:n
+\cs_new_protected:Npn \driver_graphics_include_pdf:n #1
+ { \__driver_graphics_include_auxi:nn {#1} { epdf } }
+\cs_new_protected:Npn \__driver_graphics_include_auxi:nn #1#2
{
- \__driver_image_include_auxii:xnn
+ \__driver_graphics_include_auxii:xnn
{
- \tl_if_empty:NF \l_image_pagebox_tl
- { : \l_image_pagebox_tl }
- \int_compare:nNnT \l_image_page_int > 1
- { :P \int_use:N \l_image_page_int }
- \tl_if_empty:NF \l_image_decode_tl
- { :D \l_image_decodearray_tl }
- \bool_if:NT \l_image_interpolate_bool
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ { : \l_graphics_pagebox_tl }
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { :P \int_use:N \l_graphics_page_int }
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { :D \l_graphics_decodearray_tl }
+ \bool_if:NT \l_graphics_interpolate_bool
{ :I }
}
{#1} {#2}
}
-\cs_new_protected:Npn \__driver_image_include_auxii:nnn #1#2#3
+\cs_new_protected:Npn \__driver_graphics_include_auxii:nnn #1#2#3
{
- \int_if_exist:cTF { c__driver_image_ #2#1 _int }
+ \int_if_exist:cTF { c__driver_graphics_ #2#1 _int }
{
\__driver_literal:x
- { pdf:usexobj~@image \int_use:c { c__driver_image_ #2#1 _int } }
+ { pdf:usexobj~@image \int_use:c { c__driver_graphics_ #2#1 _int } }
}
- { \__driver_image_include_auxiii:nn {#2} {#1} {#3} }
+ { \__driver_graphics_include_auxiii:nnn {#2} {#1} {#3} }
}
-\cs_generate_variant:Nn \__driver_image_include_auxii:nnn { x }
-\cs_new_protected:Npn \__driver_image_include_auxiii:nnn #1#2#3
+\cs_generate_variant:Nn \__driver_graphics_include_auxii:nnn { x }
+\cs_new_protected:Npn \__driver_graphics_include_auxiii:nnn #1#2#3
{
- \int_gincr:N \g__driver_image_int
- \int_const:cn { c__driver_image_ #1#2 _int } { \g__driver_image_int }
+ \int_gincr:N \g__driver_graphics_int
+ \int_const:cn { c__driver_graphics_ #1#2 _int } { \g__driver_graphics_int }
\__driver_literal:x
{
pdf:#3~
- @image \int_use:c { c__driver_image_ #1#2 _int }
- \int_compare:nNnT \l_image_page_int > 1
- { page ~ \int_use:N \l_image_page_int \c_space_tl }
- \tl_if_empty:NF \l_image_pagebox_tl
+ @image \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
{
- pagebox ~ \l_image_pagebox_tl \c_space_tl
+ pagebox ~ \l_graphics_pagebox_tl \c_space_tl
bbox ~
- \dim_to_decimal_in_bp:n \l_image_llx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_lly_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_urx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_ury_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_ury_dim \c_space_tl
}
(#1)
\bool_lazy_or:nnT
- { \l_image_interpolate_bool }
- { ! \tl_if_empty_p:N \l_image_decodearray_tl }
+ { \l_graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
{
<<
- \tl_if_empty:NF \l_image_decode_tl
- { /Decode~[ \l_image_decodearray_tl ] }
- \bool_if:NT \l_image_interpolate_bool
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { /Decode~[ \l_graphics_decodearray_tl ] }
+ \bool_if:NT \l_graphics_interpolate_bool
{ /Interpolate~true> }
>>
}
}
}
%% File: l3drivers-pdf.dtx
-\box_new:N \l__driver_pdf_tmp_box
\cs_new_protected:Npx \__driver_pdf:n #1
{ \__driver_literal:n { pdf: #1 } }
\cs_generate_variant:Nn \__driver_pdf:n { x }
@@ -575,8 +583,8 @@
\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
{
\group_begin:
- \hbox_set:Nn \l__driver_pdf_tmp_box {#2}
- \box_move_down:nn { \box_dp:N \l__driver_pdf_tmp_box }
+ \hbox_set:Nn \l__driver_internal_box {#2}
+ \box_move_down:nn { \box_dp:N \l__driver_internal_box }
{
\hbox:n
{
@@ -584,8 +592,8 @@
\__driver_pdf:n { obj ~ @driver_#1_lly ~ @ypos }
}
}
- \box_use:N \l__driver_pdf_tmp_box
- \box_move_up:nn { \box_ht:N \l__driver_pdf_tmp_box }
+ \box_use:N \l__driver_internal_box
+ \box_move_up:nn { \box_ht:N \l__driver_internal_box }
{
\hbox:n
{
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
index ad9d6d9adca..23675e1c0a1 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
@@ -9,7 +9,7 @@
%% l3drivers-color.dtx (with options: `package,dvips')
%% l3drivers-box.dtx (with options: `package,dvips')
%% l3drivers-draw.dtx (with options: `package,dvips')
-%% l3drivers-image.dtx (with options: `package,dvips')
+%% l3drivers-graphics.dtx (with options: `package,dvips')
%% l3drivers-pdf.dtx (with options: `package,dvips')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
@@ -33,6 +33,7 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\box_new:N \l__driver_internal_box
\cs_new_protected:Npn \__driver_literal_postscript:n #1
{ \__driver_literal:n { ps:: #1 } }
\cs_generate_variant:Nn \__driver_literal_postscript:n { x }
@@ -411,12 +412,21 @@
\__driver_draw_literal:n { [begin] }
\__driver_draw_literal:n { @beginspecial }
}
-%% File: l3drivers-image.dtx
-\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
-\cs_new_protected:Npn \__driver_image_include_eps:n #1
- { \__driver_literal:n { PSfile = #1 } }
+%% File: l3drivers-graphics.dtx
+\AtBeginDocument
+ { \cs_new_eq:NN \driver_graphics_getbb_eps:n \graphics_read_bb:n }
+\cs_new_protected:Npn \driver_graphics_include_eps:n #1
+ {
+ \__driver_literal:x
+ {
+ PSfile = #1 \c_space_tl
+ llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
+ }
+ }
%% File: l3drivers-pdf.dtx
-\box_new:N \l__driver_pdf_tmp_box
\cs_new_protected:Npn \__driver_pdfmark:n #1
{ \__driver_postscript:n { mark #1 ~ pdfmark } }
\cs_generate_variant:Nn \__driver_pdfmark:n { x }
@@ -1139,13 +1149,13 @@
\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
{
\group_begin:
- \hbox_set:Nn \l__driver_pdf_tmp_box {#2}
+ \hbox_set:Nn \l__driver_internal_box {#2}
\box_move_down:nn
- { \box_dp:N \l__driver_pdf_tmp_box }
+ { \box_dp:N \l__driver_internal_box }
{ \hbox:n { \__driver_postscript:n { driver.save.ll } } }
- \box_use:N \l__driver_pdf_tmp_box
+ \box_use:N \l__driver_internal_box
\box_move_up:nn
- { \box_ht:N \l__driver_pdf_tmp_box }
+ { \box_ht:N \l__driver_internal_box }
{ \hbox:n { \__driver_postscript:n { driver.save.ur } } }
\__driver_pdfmark:n
{
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
index fc22d5d3a8d..fb15c593f01 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
@@ -9,7 +9,7 @@
%% l3drivers-color.dtx (with options: `package,dvisvgm')
%% l3drivers-box.dtx (with options: `package,dvisvgm')
%% l3drivers-draw.dtx (with options: `package,dvisvgm')
-%% l3drivers-image.dtx (with options: `package,dvisvgm')
+%% l3drivers-graphics.dtx (with options: `package,dvisvgm')
%% l3drivers-pdf.dtx (with options: `package,dvisvgm')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
@@ -33,6 +33,7 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\box_new:N \l__driver_internal_box
\cs_new_protected:Npn \__driver_literal_svg:n #1
{ \__driver_literal:n { dvisvgm:raw~ #1 { ?nl } } }
\cs_generate_variant:Nn \__driver_literal_svg:n { x }
@@ -369,7 +370,7 @@
{ \__driver_draw_scope:n { stroke-linejoin="round" } }
\cs_new_protected:Npn \driver_draw_join_bevel:
{ \__driver_draw_scope:n { stroke-linejoin="bevel" } }
-\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
+\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
{
\use:x
{
@@ -380,18 +381,18 @@
}
}
\cs_new_eq:NN \driver_draw_color_stroke_cmyk:nnnn \driver_color_cmyk:nnnn
-\cs_new_protected:Npn \driver_draw_color_gray:n #1
+\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
{
\use:x
{
\__driver_draw_color_gray_aux:n
- { \fp_eval:n { 100 * (#3) } }
+ { \fp_eval:n { 100 * (#1) } }
}
}
\cs_new_protected:Npn \__driver_draw_color_gray_aux:n #1
{ \__driver_draw_color_fill:nnn {#1} {#1} {#1} }
\cs_new_eq:NN \driver_draw_color_stroke_gray:n \driver_color_gray:n
-\cs_new_protected:Npn \driver_draw_color_rgb:nnn #1#2#3
+\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
{
\use:x
{
@@ -450,24 +451,26 @@
\__driver_literal_svg:n { </g> }
\__driver_scope_end:
}
-%% File: l3drivers-image.dtx
-\cs_new_eq:NN \__driver_image_getbb_png:n \image_extract_bb:n
-\cs_new_eq:NN \__driver_image_getbb_jpg:n \image_extract_bb:n
-\cs_new_protected:Npn \__driver_image_include_png:n #1
+%% File: l3drivers-graphics.dtx
+\AtBeginDocument
+ {
+ \cs_new_eq:NN \driver_graphics_getbb_png:n \graphics_extract_bb:n
+ \cs_new_eq:NN \driver_graphics_getbb_jpg:n \graphics_extract_bb:n
+ }
+\cs_new_protected:Npn \driver_graphics_include_png:n #1
{
\__driver_literal:x
{
dvisvgm:img~
- \dim_to_decimal:n { \l_image_ury_dim } ~
- \dim_to_decimal:n { \l_image_ury_dim } ~
- \__driver_image_include_bitmap_quote:w #1 " #1 " \q_stop
+ \dim_to_decimal:n { \l_graphics_ury_dim } ~
+ \dim_to_decimal:n { \l_graphics_ury_dim } ~
+ \__driver_graphics_include_bitmap_quote:w #1 " #1 " \q_stop
}
}
-\cs_new_eq:NN \__driver_image_include_jpg:n \__driver_image_include_png:n
-\cs_new:Npn \__driver_image_include_bitmap_quote:w #1 " #2 " #3 \q_stop
+\cs_new_eq:NN \driver_graphics_include_jpg:n \driver_graphics_include_png:n
+\cs_new:Npn \__driver_graphics_include_bitmap_quote:w #1 " #2 " #3 \q_stop
{ " #2 " }
%% File: l3drivers-pdf.dtx
-\box_new:N \l__driver_pdf_tmp_box
\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 { }
\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 { }
\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 { }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
index 1ebc92eb4bb..25c63471e8f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
@@ -9,7 +9,7 @@
%% l3drivers-color.dtx (with options: `package,pdfmode')
%% l3drivers-box.dtx (with options: `package,pdfmode')
%% l3drivers-draw.dtx (with options: `package,pdfmode')
-%% l3drivers-image.dtx (with options: `package,pdfmode')
+%% l3drivers-graphics.dtx (with options: `package,pdfmode')
%% l3drivers-pdf.dtx (with options: `package,pdfmode')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
@@ -33,6 +33,7 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\box_new:N \l__driver_internal_box
\cs_new_protected:Npx \__driver_literal_pdf:n #1
{
\cs_if_exist:NTF \tex_pdfextension:D
@@ -352,77 +353,76 @@
\hbox_overlap_right:n { \box_use:N #1 }
\__driver_scope_end:
}
-%% File: l3drivers-image.dtx
-\tl_new:N \l__driver_image_attr_tl
-\cs_new_protected:Npn \__driver_image_getbb_jpg:n #1
+%% File: l3drivers-graphics.dtx
+\tl_new:N \l__driver_graphics_attr_tl
+\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
{
- \int_zero:N \l_image_page_int
- \tl_clear:N \l_image_pagebox_tl
- \tl_set:Nx \l__driver_image_attr_tl
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \tl_set:Nx \l__driver_graphics_attr_tl
{
- \tl_if_empty:NF \l_image_decode_tl
- { :D \l_image_decodearray_tl }
- \bool_if:NT \l_image_interpolate_bool
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { :D \l_graphics_decodearray_tl }
+ \bool_if:NT \l_graphics_interpolate_bool
{ :I }
}
- \tl_clear:N \l__driver_image_attr_tl
- \__driver_image_getbb_auxi:n {#1}
+ \tl_clear:N \l__driver_graphics_attr_tl
+ \__driver_graphics_getbb_auxi:n {#1}
}
-\cs_new_eq:NN \__driver_image_getbb_png:n \__driver_image_getbb_jpg:n
-\cs_new_protected:Npn \__driver_image_getbb_pdf:n #1
+\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
+\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
{
- \tl_clear:N \l_image_decode_tl
- \bool_set_false:N \l_image_interpolate_bool
- \tl_set:Nx \l__driver_image_attr_tl
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \tl_set:Nx \l__driver_graphics_attr_tl
{
- : \l_image_pagebox_tl
- \int_compare:nNnT \l_image_page_int > 1
- { :P \int_use:N \l_image_page_int }
+ : \l_graphics_pagebox_tl
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { :P \int_use:N \l_graphics_page_int }
}
- \__driver_image_getbb_auxi:n {#1}
+ \__driver_graphics_getbb_auxi:n {#1}
}
-\cs_new_protected:Npn \__driver_image_getbb_auxi:n #1
+\cs_new_protected:Npn \__driver_graphics_getbb_auxi:n #1
{
- \image_bb_restore:xF { #1 \l__driver_image_attr_tl }
- { \__driver_image_getbb_auxii:n {#1} }
+ \graphics_bb_restore:xF { #1 \l__driver_graphics_attr_tl }
+ { \__driver_graphics_getbb_auxii:n {#1} }
}
-\cs_new_protected:Npn \__driver_image_getbb_auxii:n #1
+\cs_new_protected:Npn \__driver_graphics_getbb_auxii:n #1
{
\tex_immediate:D \tex_pdfximage:D
\bool_lazy_or:nnT
- { \l_image_interpolate_bool }
- { ! \tl_if_empty_p:N \l_image_decodearray_tl }
+ { \l_graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
{
attr ~
{
- \tl_if_empty:NF \l_image_decode_tl
- { /Decode~[ \l_image_decodearray_tl ] }
- \bool_if:NT \l_image_interpolate_bool
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { /Decode~[ \l_graphics_decodearray_tl ] }
+ \bool_if:NT \l_graphics_interpolate_bool
{ /Interpolate~true }
}
}
- \int_compare:nNnT \l_image_page_int > 0
- { page ~ \int_use:N \l_image_page_int }
- \tl_if_empty:NF \l_image_pagebox_tl
- { \l_image_pagebox_tl }
+ \int_compare:nNnT \l_graphics_page_int > 0
+ { page ~ \int_use:N \l_graphics_page_int }
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ { \l_graphics_pagebox_tl }
{#1}
- \hbox_set:Nn \l__driver_tmp_box
+ \hbox_set:Nn \l__driver_internal_box
{ \tex_pdfrefximage:D \tex_pdflastximage:D }
- \dim_set:Nn \l_image_urx_dim { \box_wd:N \l__driver_tmp_box }
- \dim_set:Nn \l_image_ury_dim { \box_ht:N \l__driver_tmp_box }
- \int_const:cn { c__driver_image_ #1 \l__driver_image_attr_tl _int }
+ \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__driver_internal_box }
+ \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__driver_internal_box }
+ \int_const:cn { c__driver_graphics_ #1 \l__driver_graphics_attr_tl _int }
{ \tex_the:D \tex_pdflastximage:D }
- \image_bb_save:x { #1 \l__driver_image_attr_tl }
+ \graphics_bb_save:x { #1 \l__driver_graphics_attr_tl }
}
-\cs_new_protected:Npn \__driver_image_include_jpg:n #1
+\cs_new_protected:Npn \driver_graphics_include_jpg:n #1
{
\tex_pdfrefximage:D
- \int_use:c { c__driver_image_ #1 \l__driver_image_attr_tl _int }
+ \int_use:c { c__driver_graphics_ #1 \l__driver_graphics_attr_tl _int }
}
-\cs_new_eq:NN \__driver_image_include_pdf:n \__driver_image_include_jpg:n
-\cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n
+\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
%% File: l3drivers-pdf.dtx
-\box_new:N \l__driver_pdf_tmp_box
\cs_new_protected:Npx \driver_pdf_annotation:nnnn #1#2#3#4
{
\cs_if_exist:NTF \tex_pdfextension:D
@@ -496,16 +496,16 @@
\cs_new_protected:Npx \driver_pdf_destination_rectangle:nn #1#2
{
\group_begin:
- \hbox_set:Nn \l__driver_pdf_tmp_box {#2}
+ \hbox_set:Nn \l__driver_internal_box {#2}
\cs_if_exist:NTF \tex_pdfextension:D
{ \exp_not:N \tex_pdfextension:D dest ~ }
{ \exp_not:N \tex_pdfdest:D }
name {#1}
fitr ~
- width \exp_not:N \box_wd:N \l__driver_pdf_tmp_box
- height \exp_not:N \box_ht:N \l__driver_pdf_tmp_box
- depth \exp_not:N \box_dp:N \l__driver_pdf_tmp_box
- \box_use:N \l__driver_pdf_tmp_box
+ width \exp_not:N \box_wd:N \l__driver_internal_box
+ height \exp_not:N \box_ht:N \l__driver_internal_box
+ depth \exp_not:N \box_dp:N \l__driver_internal_box
+ \box_use:N \l__driver_internal_box
\group_end:
}
\cs_new_protected:Npx \driver_pdf_catalog_gput:nn #1#2
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
index 7fc986ec327..111087f7509 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
@@ -9,7 +9,7 @@
%% l3drivers-color.dtx (with options: `package,xdvipdfmx')
%% l3drivers-box.dtx (with options: `package,xdvipdfmx')
%% l3drivers-draw.dtx (with options: `package,xdvipdfmx')
-%% l3drivers-image.dtx (with options: `package,xdvipdfmx')
+%% l3drivers-graphics.dtx (with options: `package,xdvipdfmx')
%% l3drivers-pdf.dtx (with options: `package,xdvipdfmx')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
@@ -33,6 +33,7 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\box_new:N \l__driver_internal_box
\cs_new_protected:Npn \__driver_literal_pdf:n #1
{ \__driver_literal:n { pdf:literal~ #1 } }
\cs_generate_variant:Nn \__driver_literal_pdf:n { x }
@@ -351,134 +352,144 @@
\__driver_literal:n { pdf:etrans }
\__driver_scope_end:
}
-%% File: l3drivers-image.dtx
-\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
-\int_new:N \g__driver_image_int
-\cs_new_protected:Npn \__driver_image_include_eps:n #1
+%% File: l3drivers-graphics.dtx
+\AtBeginDocument
+ { \cs_new_eq:NN \driver_graphics_getbb_eps:n \graphics_read_bb:n }
+\int_new:N \g__driver_graphics_int
+\cs_new_protected:Npn \driver_graphics_include_eps:n #1
{
- \__driver_literal:n { PSfile = #1 }
+ \__driver_literal:x
+ {
+ PSfile = #1 \c_space_tl
+ llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
+ }
}
-\cs_new_protected:Npn \__driver_image_include_jpg:n #1
- { \__driver_image_include_auxi:nn {#1} { image } }
-\cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n
-\cs_new_protected:Npn \__driver_image_include_auxi:nn #1#2
+\cs_new_protected:Npn \driver_graphics_include_jpg:n #1
+ { \__driver_graphics_include_auxi:nn {#1} { image } }
+\cs_new_eq:NN \driver_graphics_include_png:n \driver_graphics_include_jpg:n
+\cs_new_protected:Npn \__driver_graphics_include_auxi:nn #1#2
{
- \__driver_image_include_auxii:xnn
+ \__driver_graphics_include_auxii:xnn
{
- \tl_if_empty:NF \l_image_pagebox_tl
- { : \l_image_pagebox_tl }
- \int_compare:nNnT \l_image_page_int > 1
- { :P \int_use:N \l_image_page_int }
- \tl_if_empty:NF \l_image_decode_tl
- { :D \l_image_decodearray_tl }
- \bool_if:NT \l_image_interpolate_bool
+ \tl_if_empty:NF \l_graphics_pagebox_tl
+ { : \l_graphics_pagebox_tl }
+ \int_compare:nNnT \l_graphics_page_int > 1
+ { :P \int_use:N \l_graphics_page_int }
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { :D \l_graphics_decodearray_tl }
+ \bool_if:NT \l_graphics_interpolate_bool
{ :I }
}
{#1} {#2}
}
-\cs_new_protected:Npn \__driver_image_include_auxii:nnn #1#2#3
+\cs_new_protected:Npn \__driver_graphics_include_auxii:nnn #1#2#3
{
- \int_if_exist:cTF { c__driver_image_ #2#1 _int }
+ \int_if_exist:cTF { c__driver_graphics_ #2#1 _int }
{
\__driver_literal:x
- { pdf:usexobj~@image \int_use:c { c__driver_image_ #2#1 _int } }
+ { pdf:usexobj~@image \int_use:c { c__driver_graphics_ #2#1 _int } }
}
- { \__driver_image_include_auxiii:nn {#2} {#1} {#3} }
+ { \__driver_graphics_include_auxiii:nnn {#2} {#1} {#3} }
}
-\cs_generate_variant:Nn \__driver_image_include_auxii:nnn { x }
-\cs_new_protected:Npn \__driver_image_include_auxiii:nnn #1#2#3
+\cs_generate_variant:Nn \__driver_graphics_include_auxii:nnn { x }
+\cs_new_protected:Npn \__driver_graphics_include_auxiii:nnn #1#2#3
{
- \int_gincr:N \g__driver_image_int
- \int_const:cn { c__driver_image_ #1#2 _int } { \g__driver_image_int }
+ \int_gincr:N \g__driver_graphics_int
+ \int_const:cn { c__driver_graphics_ #1#2 _int } { \g__driver_graphics_int }
\__driver_literal:x
{
pdf:#3~
- @image \int_use:c { c__driver_image_ #1#2 _int }
- \int_compare:nNnT \l_image_page_int > 1
- { page ~ \int_use:N \l_image_page_int \c_space_tl }
- \tl_if_empty:NF \l_image_pagebox_tl
+ @image \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
{
- pagebox ~ \l_image_pagebox_tl \c_space_tl
+ pagebox ~ \l_graphics_pagebox_tl \c_space_tl
bbox ~
- \dim_to_decimal_in_bp:n \l_image_llx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_lly_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_urx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_ury_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_graphics_ury_dim \c_space_tl
}
(#1)
\bool_lazy_or:nnT
- { \l_image_interpolate_bool }
- { ! \tl_if_empty_p:N \l_image_decodearray_tl }
+ { \l_graphics_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
{
<<
- \tl_if_empty:NF \l_image_decode_tl
- { /Decode~[ \l_image_decodearray_tl ] }
- \bool_if:NT \l_image_interpolate_bool
+ \tl_if_empty:NF \l_graphics_decodearray_tl
+ { /Decode~[ \l_graphics_decodearray_tl ] }
+ \bool_if:NT \l_graphics_interpolate_bool
{ /Interpolate~true> }
>>
}
}
}
-\cs_new_protected:Npn \__driver_image_getbb_jpg:n #1
+\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
{
- \int_zero:N \l_image_page_int
- \tl_clear:N \l_image_pagebox_tl
- \__driver_image_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
+ \int_zero:N \l_graphics_page_int
+ \tl_clear:N \l_graphics_pagebox_tl
+ \__driver_graphics_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
}
-\cs_new_eq:NN \__driver_image_getbb_png:n \__driver_image_getbb_jpg:n
-\cs_new_protected:Npn \__driver_image_getbb_pdf:n #1
+\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
+\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
{
- \tl_clear:N \l_image_decode_tl
- \bool_set_false:N \l_image_interpolate_bool
- \__driver_image_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
+ \tl_clear:N \l_graphics_decodearray_tl
+ \bool_set_false:N \l_graphics_interpolate_bool
+ \__driver_graphics_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
}
-\cs_new_protected:Npn \__driver_image_getbb_auxi:nN #1#2
+\cs_new_protected:Npn \__driver_graphics_getbb_auxi:nN #1#2
{
- \int_compare:nNnTF \l_image_page_int > 1
- { \__driver_image_getbb_auxii:VnN \l_image_page_int {#1} #2 }
- { \__driver_image_getbb_auxiii:nNnn {#1} #2 }
+ \int_compare:nNnTF \l_graphics_page_int > 1
+ { \__driver_graphics_getbb_auxii:VnN \l_graphics_page_int {#1} #2 }
+ { \__driver_graphics_getbb_auxiii:nNnn {#1} #2 { :P 1 } { page 1 } }
}
-\cs_new_protected:Npn \__driver_image_getbb_auxii:nnN #1#2#3
- { \__driver_image_getbb_aux:nNnn {#2} #3 { :P #1 } { page #1 } }
-\cs_generate_variant:Nn \__driver_image_getbb_auxii:nnN { V }
-\cs_new_protected:Npn \__driver_image_getbb_auxiii:nNnn #1#2#3#4
+\cs_new_protected:Npn \__driver_graphics_getbb_auxii:nnN #1#2#3
+ { \__driver_graphics_getbb_auxiii:nNnn {#2} #3 { :P #1 } { page #1 } }
+\cs_generate_variant:Nn \__driver_graphics_getbb_auxii:nnN { V }
+\cs_new_protected:Npn \__driver_graphics_getbb_auxiii:nNnn #1#2#3#4
{
- \tl_if_empty:NTF \l_image_pagebox_tl
- { \__driver_image_getbb_auxiv:VnNnn \l_image_pagebox_tl }
- { \__driver_image_getbb_auxv:nNnn }
+ \tl_if_empty:NTF \l_graphics_pagebox_tl
+ { \__driver_graphics_getbb_auxiv:VnNnn \l_graphics_pagebox_tl }
+ { \__driver_graphics_getbb_auxv:nNnn }
{#1} #2 {#3} {#4}
}
-\cs_new_protected:Npn \__driver_image_getbb_auxiv:nnNnn #1#2#3#4#5
+\cs_new_protected:Npn \__driver_graphics_getbb_auxiv:nnNnn #1#2#3#4#5
{
\use:x
{
- \__driver_image_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
- { #5 ~ \__driver_image_getbb_pagebox:w #1 }
+ \__driver_graphics_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
+ { #5 ~ \__driver_graphics_getbb_pagebox:w #1 }
}
}
-\cs_generate_variant:Nn \__driver_image_getbb_auxiv:nnNnn { V }
-\cs_new_protected:Npn \__driver_image_getbb_auxv:nNnn #1#2#3#4
+\cs_generate_variant:Nn \__driver_graphics_getbb_auxiv:nnNnn { V }
+\cs_new_protected:Npn \__driver_graphics_getbb_auxv:nNnn #1#2#3#4
{
- \image_bb_restore:nF {#1#3}
- { \__driver_image_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
+ \graphics_bb_restore:nF {#1#3}
+ { \__driver_graphics_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
}
-\cs_new_protected:Npn \__driver_image_getbb_auxvi:nNnn #1#2#3#4
+\cs_new_protected:Npn \__driver_graphics_getbb_auxvi:nNnn #1#2#3#4
{
- \hbox_set:Nn \l__driver_tmp_box { #2 #1 ~ #4 }
- \dim_set:Nn \l_image_utx_dim { \box_wd:N \l__driver_tmp_box }
- \dim_set:Nn \l_image_ury_dim { \box_ht:N \l__driver_tmp_box }
- \image_bb_save:n {#1#3}
+ \hbox_set:Nn \l__driver_internal_box { #2 #1 ~ #4 }
+ \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__driver_internal_box }
+ \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__driver_internal_box }
+ \graphics_bb_save:n {#1#3}
}
-\cs_new:Npn \__driver_image_getbb_pagebox:w #1 box {#1}
-\cs_new_protected:Npn \__driver_image_include_pdf:n #1
+\cs_new:Npn \__driver_graphics_getbb_pagebox:w #1 box {#1}
+\cs_new_protected:Npn \driver_graphics_include_pdf:n #1
{
- \tex_XeTeXpdffile:D "#1" ~
- \int_compare:nNnT \l_image_page_int > 0
- { page~ \int_use:N \l_image_page_int }
- \__driver_image_getbb_auxiv:VnNnn \l_image_pagebox_tl
+ \tex_XeTeXpdffile:D
+ \__driver_graphics_include_pdf_quote:w #1 "#1" \q_stop \c_space_tl
+ \int_compare:nNnT \l_graphics_page_int > 0
+ { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
+ \exp_after:wN \__driver_graphics_getbb_pagebox:w \l_graphics_pagebox_tl
}
+\cs_new:Npn \__driver_graphics_include_pdf_quote:w #1 " #2 " #3 \q_stop
+ { " #2 " }
%% File: l3drivers-pdf.dtx
-\box_new:N \l__driver_pdf_tmp_box
\cs_new_protected:Npx \__driver_pdf:n #1
{ \__driver_literal:n { pdf: #1 } }
\cs_generate_variant:Nn \__driver_pdf:n { x }
@@ -618,8 +629,8 @@
\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
{
\group_begin:
- \hbox_set:Nn \l__driver_pdf_tmp_box {#2}
- \box_move_down:nn { \box_dp:N \l__driver_pdf_tmp_box }
+ \hbox_set:Nn \l__driver_internal_box {#2}
+ \box_move_down:nn { \box_dp:N \l__driver_internal_box }
{
\hbox:n
{
@@ -627,8 +638,8 @@
\__driver_pdf:n { obj ~ @driver_#1_lly ~ @ypos }
}
}
- \box_use:N \l__driver_pdf_tmp_box
- \box_move_up:nn { \box_ht:N \l__driver_pdf_tmp_box }
+ \box_use:N \l__driver_internal_box
+ \box_move_up:nn { \box_ht:N \l__driver_internal_box }
{
\hbox:n
{