texlive[50972] Master/texmf-dist: l3 (3may19)
commits+karl at tug.org
commits+karl at tug.org
Sat May 4 00:30:06 CEST 2019
Revision: 50972
http://tug.org/svn/texlive?view=revision&revision=50972
Author: karl
Date: 2019-05-04 00:30:06 +0200 (Sat, 04 May 2019)
Log Message:
-----------
l3 (3may19)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
trunk/Master/texmf-dist/doc/latex/l3packages/README.md
trunk/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
trunk/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
trunk/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
trunk/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
trunk/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins
trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
Added Paths:
-----------
trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/CHANGELOG.md 2019-05-03 22:30:06 UTC (rev 50972)
@@ -7,12 +7,17 @@
## [Unreleased]
+## [2019-05-03]
+
+## Fixed
+
+- Cliping of paths by `l3draw`
+
## [2019-03-05]
### Added
- Support for drawing layers
-- `\draw_point:nn` to allow 'fast' processing of co-ordinates
### Changed
@@ -70,7 +75,8 @@
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-03-05...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-03...HEAD
+[2019-05-03]: https://github.com/latex3/latex3/compare/2019-03-05...2019-05-03
[2019-03-05]: https://github.com/latex3/latex3/compare/2019-01-28...2019-03-05
[2019-01-28]: https://github.com/latex3/latex3/compare/2018-10-31...2019-01-28
[2018-10-31]: https://github.com/latex3/latex3/compare/2018-10-26...2018-10-31
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3experimental/README.md 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3experimental/README.md 2019-05-03 22:30:06 UTC (rev 50972)
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2019-03-05
+Release 2019-05-03
Overview
--------
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3benchmark/l3benchmark.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3cctab/l3cctab.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3color/l3color.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3draw/l3draw.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-convert.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3str/l3str-format.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/l3sys-shell/l3sys-shell.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xcoffins/xcoffins.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/l3galley.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3experimental/xgalley/xgalley.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/CHANGELOG.md 2019-05-03 22:30:06 UTC (rev 50972)
@@ -7,6 +7,21 @@
## [Unreleased]
+## [2019-05-03]
+
+### Added
+
+- New `l3legacy` module containing
+ - `\legacy_if:n(TF)`
+
+### Changed
+
+- Moved `\file_get_mdfive_hash:nN(TF)`, `\file_get_size:nN(TF)`
+ and `\file_get_timestamp:nN(TF)` to stable
+- Moved `\file_if_exist_input:n` and `\file_if_exist_input:nF` to stable
+- Moved `\file_input_stop:` to stable
+- Moved `\peek_N_type:TF` to stable
+
## [2019-04-21]
### Added
@@ -357,7 +372,8 @@
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-04-21...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-03...HEAD
+[2019-05-03]: https://github.com/latex3/latex3/compare/2019-04-21...2019-05-03
[2019-04-21]: https://github.com/latex3/latex3/compare/2019-04-06...2019-04-21
[2019-04-06]: https://github.com/latex3/latex3/compare/2019-03-26...2019-04-06
[2019-03-26]: https://github.com/latex3/latex3/compare/2019-03-05...2019-03-26
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/README.md 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/README.md 2019-05-03 22:30:06 UTC (rev 50972)
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2019-04-21
+Release 2019-05-03
Overview
--------
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/expl3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/interface3.tex 2019-05-03 22:30:06 UTC (rev 50972)
@@ -54,7 +54,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2019-04-21}
+\date{Released 2019-05-03}
\pagenumbering{roman}
\maketitle
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3docstrip.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3styleguide.tex 2019-05-03 22:30:06 UTC (rev 50972)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2019-04-21}
+\date{Released 2019-05-03}
\begin{document}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3syntax-changes.tex 2019-05-03 22:30:06 UTC (rev 50972)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2019-04-21}
+\date{Released 2019-05-03}
\newcommand{\TF}{\textit{(TF)}}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/l3term-glossary.tex 2019-05-03 22:30:06 UTC (rev 50972)
@@ -32,7 +32,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2019-04-21}
+\date{Released 2019-05-03}
\newcommand{\TF}{\textit{(TF)}}
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3.tex 2019-05-03 22:30:06 UTC (rev 50972)
@@ -53,7 +53,7 @@
{latex-team at latex-project.org}%
}%
}
-\date{Released 2019-04-21}
+\date{Released 2019-05-03}
\pagenumbering{roman}
\maketitle
Modified: trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3kernel/source3body.tex 2019-05-03 22:30:06 UTC (rev 50972)
@@ -481,6 +481,7 @@
\DocInput{l3color-base.dtx}
\DocInput{l3luatex.dtx}
\DocInput{l3unicode.dtx}
+\DocInput{l3legacy.dtx}
\DocInput{l3candidates.dtx}
\DocInput{l3drivers.dtx}
\ExplSyntaxOn
Modified: trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3packages/CHANGELOG.md 2019-05-03 22:30:06 UTC (rev 50972)
@@ -7,6 +7,12 @@
## [Unreleased]
+## [2019-05-03]
+
+### Added
+
+- `xparse`: Support for `trace` package
+
## [2019-03-05]
### Added
@@ -40,7 +46,8 @@
- Switch to ISO date format
- Improve cross-module use of internal functions
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-03-05...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2019-05-03...HEAD
+[2019-05-03]: https://github.com/latex3/latex3/compare/2019-03-05...2019-05-03
[2019-03-05]: https://github.com/latex3/latex3/compare/2019-09-24...2019-03-05
[2018-09-24]: https://github.com/latex3/latex3/compare/2018-08-23...2018-09-24
[2018-08-23]: https://github.com/latex3/latex3/compare/2018-05-12...2018-08-23
Modified: trunk/Master/texmf-dist/doc/latex/l3packages/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/l3packages/README.md 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/doc/latex/l3packages/README.md 2019-05-03 22:30:06 UTC (rev 50972)
@@ -1,7 +1,7 @@
LaTeX3 High-Level Concepts
==========================
-Release 2019-03-05
+Release 2019-05-03
Overview
--------
Modified: trunk/Master/texmf-dist/doc/latex/l3packages/l3keys2e/l3keys2e.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3packages/xfp/xfp.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3packages/xfrac/xfrac.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3packages/xparse/xparse.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/l3packages/xtemplate/xtemplate.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -128,7 +128,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3benchmark}{2019-03-05}{}
+\ProvidesExplPackage{l3benchmark}{2019-05-03}{}
{L3 Experimental benchmarking}
%</package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -150,7 +150,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3cctab}{2019-03-05}{}
+\ProvidesExplPackage{l3cctab}{2019-05-03}{}
{L3 Experimental category code tables}
%</package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -265,7 +265,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3color}{2019-03-05}{}
+\ProvidesExplPackage{l3color}{2019-05-03}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -880,7 +880,7 @@
{ \bool_set_true:c { l_@@_path_use_ ##1 _ bool } }
{
\cs_if_exist_use:cF { @@_path_use_action_ ##1 : }
- { \ERROR }
+ { \msg_error:nnn { draw } { invalid-path-action } {##1} }
}
}
\@@_softpath_round_corners:
@@ -888,11 +888,15 @@
{ \l_draw_bb_update_bool }
{ \l_@@_path_use_stroke_bool }
{ \@@_path_use_stroke_bb: }
- \bool_if:NTF \l_@@_path_use_clear_bool
- { \@@_softpath_use_clear: }
- { \@@_softpath_use: }
+ \@@_softpath_use:
\bool_if:NT \l_@@_path_use_clip_bool
- { \driver_draw_clip: }
+ {
+ \driver_draw_clip:
+ \bool_lazy_or:nnF
+ { \l_@@_path_use_fill_bool }
+ { \l_@@_path_use_stroke_bool }
+ { \driver_draw_discardpath: }
+ }
\bool_lazy_or:nnT
{ \l_@@_path_use_fill_bool }
{ \l_@@_path_use_stroke_bool }
@@ -905,6 +909,8 @@
:
}
}
+ \bool_if:NT \l_@@_path_use_clear_bool
+ { \@@_softpath_clear: }
}
\cs_new_protected:Npn \@@_path_use_action_draw:
{
@@ -1016,6 +1022,12 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macrocode}
+\msg_new:nnnn { draw } { invalid-path-action }
+ { Invalid~action~'#1'~for~path. }
+ { Paths~can~be~used~with~actions~'draw',~'clip',~'fill'~or~'stroke'. }
+% \end{macrocode}
+%
% \begin{macrocode}
%</initex|package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -105,7 +105,7 @@
% \end{macro}
%
% \begin{macro}
-% {\@@_softpath_use:, \@@_softpath_clear:, \@@_softpath_use_clear:}
+% {\@@_softpath_use:, \@@_softpath_clear:}
% Using and clearing is trivial.
% \begin{macrocode}
\cs_new_protected:Npn \@@_softpath_use:
@@ -118,11 +118,6 @@
\tl_build_gclear:N \g_@@_softpath_main_tl
\bool_gset_false:N \g_@@_softpath_corners_bool
}
-\cs_new_protected:Npn \@@_softpath_use_clear:
- {
- \@@_softpath_use:
- \@@_softpath_clear:
- }
% \end{macrocode}
% \end{macro}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -27,7 +27,6 @@
%</driver|package>
%<*driver>
\documentclass[full]{l3doc}
-\usepackage[utf8]{inputenc}
\usepackage{l3draw}
% For creating code demonstrations
% This needs access to some code-level interfaces in listings
@@ -111,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -609,13 +608,16 @@
% Inserts the current path, carrying out one ore more possible \meta{actions}
% (a comma list):
% \begin{itemize}
-% \item \texttt{clear} Resets the path to empty
-% \item \texttt{clip} Clips any content outside of the path
-% \item \texttt{draw}
+% \item \texttt{stroke} Draws a line along the current path
+% \item \texttt{draw} A synonym for \texttt{stroke}
% \item \texttt{fill} Fills the interior of the path with the current
% file color
-% \item \texttt{stroke} Draws a line along the current path
+% \item \texttt{clip} Clips any content outside of the path
% \end{itemize}
+% Actions are applied in the order given irrespective of the input order.
+% Note that whilst it is possible to use a path without clearing it, the
+% normal use case would be to clear the path (this resets data structures
+% at the macro level).
% \end{function}
%
% \subsubsection{Path operations on drawing axes}
@@ -1143,7 +1145,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3draw}{2019-03-05}{}
+\ProvidesExplPackage{l3draw}{2019-05-03}{}
{L3 Experimental core drawing support}
%</package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -234,7 +234,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-convert}{2019-03-05}{}
+\ProvidesExplPackage{l3str-convert}{2019-05-03}{}
{L3 Experimental string encoding conversions}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -164,7 +164,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2019-03-05}{}
+\ProvidesExplPackage{l3str-format}{2019-05-03}{}
{L3 Experimental string formatting}
%</package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -136,7 +136,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3sys-shell}{2019-03-05}{}
+\ProvidesExplPackage{l3sys-shell}{2019-05-03}{}
{L3 Experimental system shell functions}
%</package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -56,7 +56,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -675,7 +675,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2019-03-05}{}
+\ProvidesExplPackage{xcoffins}{2019-05-03}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -687,7 +687,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2019-03-05}{}
+\ProvidesExplPackage{l3galley}{2019-05-03}{}
{L3 Experimental galley code}
%</package>
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -734,7 +734,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2019-03-05}{}
+\ProvidesExplPackage{xgalley}{2019-05-03}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/expl3.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -23,7 +23,7 @@
% for those people who are interested.
%
%<*driver|generic|package>
-\def\ExplFileDate{2019-04-21}%
+\def\ExplFileDate{2019-05-03}%
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -1025,9 +1025,10 @@
% \item Johannes Braams
% \item David Carlisle
% \item Robin Fairbairns
+% \item Ulrike Fischer
+% \item Enrico Gregorio
% \item Morten H{\o}gholm
% \item Bruno Le Floch
-% \item Thomas Lotze
% \item Frank Mittelbach
% \item Will Robertson
% \item Chris Rowley
@@ -1039,6 +1040,7 @@
% \item Michael Downes
% \item Denys Duchier
% \item Alan Jeffrey
+% \item Thomas Lotze
% \item Martin Schr{\"o}der
% \end{itemize}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3.ins 2019-05-03 22:30:06 UTC (rev 50972)
@@ -104,6 +104,7 @@
\from{l3luatex.dtx} {package,tex}
\from{l3unicode.dtx} {package}
\from{l3candidates.dtx} {package}
+ \from{l3legacy.dtx} {package}
\from{l3deprecation.dtx}{package}
}
}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -914,6 +914,9 @@
% abc { def }
% \end{verbatim}
% \emph{i.e.} only the outer braces are removed.
+% \begin{texnote}
+% The \cs{use:n} function is equivalent to \LaTeXe{}'s \tn{@firstofone}.
+% \end{texnote}
% \end{function}
%
% \begin{function}[EXP]{\use_i:nn, \use_ii:nn}
@@ -929,6 +932,10 @@
% of these tokens is also fixed (if it has not already been by
% some other absorption). A single expansion is needed for the
% functions to take effect.
+% \begin{texnote}
+% These are equivalent to \LaTeXe{}'s \tn{@firstoftwo} and
+% \tn{@secondoftwo}.
+% \end{texnote}
% \end{function}
%
% \begin{function}[EXP]{\use_i:nnn, \use_ii:nnn, \use_iii:nnn}
@@ -1003,6 +1010,10 @@
% These functions work after a single expansion. One or more of the
% \texttt{n} arguments may be an unbraced single token
% (\emph{i.e.}~an \texttt{N} argument).
+% \begin{texnote}
+% These are equivalent to \LaTeXe{}'s \tn{@gobble}, \tn{@gobbbletwo},
+% \emph{etc.}
+% \end{texnote}
% \end{function}
%
% \begin{function}[EXP, added = 2018-06-18]{\use:e}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3box.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -299,83 +299,6 @@
%
% \section{Additions to \pkg{l3file}}
%
-% \begin{function}[noTF, added = 2017-07-11, updated = 2019-02-16]
-% {\file_get_mdfive_hash:nN}
-% \begin{syntax}
-% \cs{file_get_mdfive_hash:nN} \Arg{file name} \meta{tl var}
-% \end{syntax}
-% Searches for \meta{file name} using the current \TeX{} search
-% path and the additional paths controlled by \cs{file_path_include:n}.
-% If found, sets the \meta{str var} to the MD5 sum generated from the
-% content of the file. The file is read as bytes, which means that in
-% contrast to most \TeX{} behaviour there will be a difference in result
-% depending on the line endings used in text files. The same file will
-% produce the same result between different engines: the algorithm used
-% is the same in all cases.
-% Where the file is not found, the \meta{str var} will be empty.
-% \end{function}
-%
-% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16]
-% {\file_get_size:nN}
-% \begin{syntax}
-% \cs{file_get_size:nN} \Arg{file name} \meta{tl var}
-% \end{syntax}
-% Searches for \meta{file name} using the current \TeX{} search
-% path and the additional paths controlled by \cs{file_path_include:n}.
-% If found, sets the \meta{str var} to the size of the file in bytes.
-% Where the file is not found, the \meta{str var} will be empty.
-% This is not available in older versions of \XeTeX{}.
-% \end{function}
-%
-% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16]
-% {\file_get_timestamp:nN}
-% \begin{syntax}
-% \cs{file_get_timestamp:nN} \Arg{file name} \meta{tl var}
-% \end{syntax}
-% Searches for \meta{file name} using the current \TeX{} search
-% path and the additional paths controlled by \cs{file_path_include:n}.
-% If found, sets the \meta{str var} to the modification timestamp of
-% the file in the form |D:|\meta{year}\meta{month}\meta{day}\meta{hour}^^A
-% \meta{minute}\meta{second}\meta{offset}, where the latter may be |Z|
-% (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|.
-% Where the file is not found, the \meta{str var} will be empty.
-% This is not available in older versions of \XeTeX{}.
-% \end{function}
-%
-% \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF}
-% \begin{syntax}
-% \cs{file_if_exist_input:n} \Arg{file name}
-% \cs{file_if_exist_input:nF} \Arg{file name} \Arg{false code}
-% \end{syntax}
-% Searches for \meta{file name} using the current \TeX{} search
-% path and the additional paths controlled by
-% \cs{file_path_include:n}. If found then
-% reads in the file as additional \LaTeX{} source as described for
-% \cs{file_input:n}, otherwise inserts the \meta{false code}.
-% Note that these functions do not raise
-% an error if the file is not found, in contrast to \cs{file_input:n}.
-% \end{function}
-%
-% \begin{function}[added = 2017-07-07]{\file_input_stop:}
-% \begin{syntax}
-% \cs{file_input_stop:}
-% \end{syntax}
-% Ends the reading of a file started by \cs{file_input:n} or similar before
-% the end of the file is reached. Where the file reading is being terminated
-% due to an error, \cs{msg_critical:nn(nn)} should be preferred.
-% \begin{texnote}
-% This function must be used on a line on its own: \TeX{} reads files
-% line-by-line and so any additional tokens in the \enquote{current} line
-% will still be read.
-%
-% This is also true if the function is hidden inside another function
-% (which will be the normal case), i.e., all tokens on the same line
-% in the source file are still processed. Putting it on a line by itself
-% in the definition doesn't help as it is the line where it is used that
-% counts!
-% \end{texnote}
-% \end{function}
-%
% \begin{function}[added = 2019-01-13]{\ior_map_variable:NNn}
% \begin{syntax}
% \cs{ior_map_variable:NNn} \meta{stream} \meta{tl~var} \Arg{code}
@@ -1324,26 +1247,6 @@
% and |#3| and |#4| empty.
% \end{function}
%
-% \begin{function}[TF, updated = 2012-12-20]{\peek_N_type:}
-% \begin{syntax}
-% \cs{peek_N_type:TF} \Arg{true code} \Arg{false code}
-% \end{syntax}
-% Tests if the next \meta{token} in the input stream can be safely
-% grabbed as an \texttt{N}-type argument. The test is \meta{false}
-% if the next \meta{token} is either an explicit or implicit
-% begin-group or end-group token (with any character code), or
-% an explicit or implicit space character (with character code $32$
-% and category code $10$), or an outer token (never used in \LaTeX3)
-% and \meta{true} in all other cases.
-% Note that a \meta{true} result ensures that the next \meta{token} is
-% a valid \texttt{N}-type argument. However, if the next \meta{token}
-% is for instance \cs{c_space_token}, the test takes the
-% \meta{false} branch, even though the next \meta{token} is in fact
-% a valid \texttt{N}-type argument. The \meta{token} is left
-% in the input stream after the \meta{true code} or \meta{false code}
-% (as appropriate to the result of the test).
-% \end{function}
-%
% \begin{function}[added = 2018-09-23]
% {
% \peek_catcode_collect_inline:Nn,
@@ -1595,130 +1498,6 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{Additions to \pkg{l3file}}
-%
-% \begin{macrocode}
-%<@@=file>
-% \end{macrocode}
-%
-% \begin{macro}
-% {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN}
-% \begin{macro}{\@@_get_details:nnN}
-% These are all wrappers around the \pdfTeX{} primitives doing the same
-% jobs: as we want consistent file paths to be found, they are all set up
-% using \cs{file_get_full_name:nN} and so are non-expandable \texttt{get}
-% functions. Much of the code is repetitive but we need to branch for
-% \LuaTeX{} (emulation in Lua), for the slightly different syntax
-% needed for \tn{tex_mdfivesum:D} and for the fact that primitive
-% coverage varies in other engines.
-% \begin{macrocode}
-\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
- { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
-\cs_new_protected:Npn \file_get_size:nN #1#2
- { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
-\cs_new_protected:Npn \file_get_timestamp:nN #1#2
- { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
-\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF }
- { \@@_get_details:nnN {#1} { mdfivesum } {#2} }
-\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF }
- { \@@_get_details:nnN {#1} { size } {#2} }
-\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF }
- { \@@_get_details:nnN {#1} { moddate } {#2} }
-\cs_new_protected:Npn \@@_get_details:nnN #1#2#3
- {
- \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
- {
- \tl_set:Nx #3
- {
- \use:c { tex_file #2 :D } \exp_after:wN
- { \l_@@_full_name_tl }
- }
- \prg_return_true:
- }
- { \prg_return_false: }
- }
-\sys_if_engine_luatex:TF
- {
- \cs_set_protected:Npn \@@_get_details:nnN #1#2#3
- {
- \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
- {
- \tl_set:Nx #3
- {
- \lua_now:e
- {
- l3kernel.file#2
- ( " \lua_escape:e { \l_@@_full_name_tl } " )
- }
- }
- \prg_return_true:
- }
- { \prg_return_false: }
- }
- }
- {
- \prg_set_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2
- { T , F , TF }
- {
- \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
- {
- \tl_set:Nx #2
- {
- \tex_mdfivesum:D file \exp_after:wN
- { \l_@@_full_name_tl }
- }
- \prg_return_true:
- }
- { \prg_return_false: }
- }
- \cs_if_exist:NF \tex_filesize:D
- {
- \cs_set_protected:Npn \@@_get_details:nnN #1#2#3
- {
- \tl_clear:N #3
- \__kernel_msg_error:nnx
- { kernel } { primitive-not-available }
- { \exp_not:c { (pdf)file #2 } }
- \prg_return_false:
- }
- }
- }
-\__kernel_msg_new:nnnn { kernel } { primitive-not-available }
- { Primitive~\token_to_str:N #1 not~available }
- {
- The~version~of~XeTeX~in~use~does~not~provide~functionality~equivalent~to~
- the~\token_to_str:N #1 primitive.
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\file_if_exist_input:n, \file_if_exist_input:nF}
-% Input of a file with a test for existence. We do not define the |T|
-% or |TF| variants because the most useful place to place the
-% \meta{true code} would be inconsistent with other conditionals.
-% \begin{macrocode}
-\cs_new_protected:Npn \file_if_exist_input:n #1
- {
- \file_get_full_name:nNT {#1} \l_@@_full_name_tl
- { \@@_input:V \l_@@_full_name_tl }
- }
-\cs_new_protected:Npn \file_if_exist_input:nF #1#2
- {
- \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
- { \@@_input:V \l_@@_full_name_tl }
- {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\file_input_stop:}
-% A simple rename.
-% \begin{macrocode}
-\cs_new_protected:Npn \file_input_stop: { \tex_endinput:D }
-% \end{macrocode}
-% \end{macro}
-%
% \subsection{Additions to \pkg{l3flag}}
%
% \begin{macrocode}
@@ -4331,77 +4110,6 @@
%<@@=peek>
% \end{macrocode}
%
-% \begin{macro}[TF]{\peek_N_type:}
-% \begin{macro}
-% {\@@_execute_branches_N_type:, \@@_N_type:w, \@@_N_type_aux:nnw}
-% All tokens are \texttt{N}-type tokens, except in four cases:
-% begin-group tokens, end-group tokens, space tokens with character
-% code~$32$, and outer tokens. Since \cs{l_peek_token} might be
-% outer, we cannot use the convenient \cs{bool_if:nTF} function, and
-% must resort to the old trick of using \tn{ifodd} to expand a set of
-% tests. The \texttt{false} branch of this test is taken if the token
-% is one of the first three kinds of non-\texttt{N}-type tokens
-% (explicit or implicit), thus we call \cs{@@_false:w}. In the
-% \texttt{true} branch, we must detect outer tokens, without impacting
-% performance too much for non-outer tokens. The first filter is to
-% search for \texttt{outer} in the \tn{meaning} of \cs{l_peek_token}.
-% If that is absent, \cs{use_none_delimit_by_q_stop:w} cleans up, and
-% we call \cs{@@_true:w}. Otherwise, the token can be a non-outer
-% macro or a primitive mark whose parameter or replacement text
-% contains \texttt{outer}, it can be the primitive \tn{outer}, or it
-% can be an outer token. Macros and marks would have \texttt{ma} in
-% the part before the first occurrence of \texttt{outer}; the meaning
-% of \tn{outer} has nothing after \texttt{outer}, contrarily to outer
-% macros; and that covers all cases, calling \cs{@@_true:w} or
-% \cs{@@_false:w} as appropriate. Here, there is no \meta{search
-% token}, so we feed a dummy \cs{scan_stop:} to the
-% \cs{@@_token_generic:NNTF} function.
-% \begin{macrocode}
-\group_begin:
- \cs_set_protected:Npn \@@_tmp:w #1 \q_stop
- {
- \cs_new_protected:Npn \@@_execute_branches_N_type:
- {
- \if_int_odd:w
- \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi:
- \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi:
- \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi:
- 1 \exp_stop_f:
- \exp_after:wN \@@_N_type:w
- \token_to_meaning:N \l_peek_token
- \q_mark \@@_N_type_aux:nnw
- #1 \q_mark \use_none_delimit_by_q_stop:w
- \q_stop
- \exp_after:wN \@@_true:w
- \else:
- \exp_after:wN \@@_false:w
- \fi:
- }
- \cs_new_protected:Npn \@@_N_type:w ##1 #1 ##2 \q_mark ##3
- { ##3 {##1} {##2} }
- }
- \exp_after:wN \@@_tmp:w \tl_to_str:n { outer } \q_stop
-\group_end:
-\cs_new_protected:Npn \@@_N_type_aux:nnw #1 #2 #3 \fi:
- {
- \fi:
- \tl_if_in:noTF {#1} { \tl_to_str:n {ma} }
- { \@@_true:w }
- { \tl_if_empty:nTF {#2} { \@@_true:w } { \@@_false:w } }
- }
-\cs_new_protected:Npn \peek_N_type:TF
- {
- \@@_token_generic:NNTF
- \@@_execute_branches_N_type: \scan_stop:
- }
-\cs_new_protected:Npn \peek_N_type:T
- { \@@_token_generic:NNT \@@_execute_branches_N_type: \scan_stop: }
-\cs_new_protected:Npn \peek_N_type:F
- { \@@_token_generic:NNF \@@_execute_branches_N_type: \scan_stop: }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
% \begin{variable}{\l_@@_collect_tl}
% \begin{macrocode}
\tl_new:N \l_@@_collect_tl
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -78,7 +78,7 @@
% \begin{function}[added = 2011-08-17, updated = 2019-01-21]
% {
% \coffin_set_eq:NN, \coffin_set_eq:Nc,
-% \coffin_set_eq:cN, \coffin_set_eq:cc
+% \coffin_set_eq:cN, \coffin_set_eq:cc,
% \coffin_gset_eq:NN, \coffin_gset_eq:Nc,
% \coffin_gset_eq:cN, \coffin_gset_eq:cc
% }
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -79,7 +79,7 @@
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
% \maketitle
% \tableofcontents
%
@@ -432,7 +432,7 @@
% necessary to highlight it as much and you also don't need to check it
% for, say, having a test function and having a documentation chunk
% earlier in a \env{function} environment. \pkg{l3doc} will pick up these
-% cases form the presence of |__| in the name, or you may force marking
+% cases from the presence of |__| in the name, or you may force marking
% as internal by using |\begin{macro}[int]| to mark it as such. The margin
% call-out is then printed in grey for such cases.
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -148,9 +148,21 @@
%
% \begin{macro}{\@@_postscript_header:n}
% PostScript for the header: a small saving but makes the code clearer.
+% This is held until the start of shipout such that a document with no
+% actual output does not write anything.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_postscript_header:n #1
+\cs_new_protected:Npx \@@_postscript_header:n #1
+%<*initex>
{ \@@_literal:n { ! #1 } }
+%</initex>
+%<*package>
+ {
+ \cs_if_exist:NTF \AtBeginDvi
+ { \exp_not:N \AtBeginDvi }
+ { \use:n }
+ { \@@_literal:n { ! #1 } }
+ }
+%</package>
% \end{macrocode}
% \end{macro}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-image.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -60,6 +60,12 @@
%<@@=driver>
% \end{macrocode}
%
+% Setting up PDF resources is a complex area with only limited documentation
+% in the engine manuals. The following code builds heavily on existing ideas
+% from \pkg{hyperref} work by Sebastian Rahtz and Heiko Oberdiek, and
+% significant contributions by Alexander Grahn, in addition to the specific
+% code referenced a various points.
+%
% \subsection{Shared code}
%
% A very small number of items that belong at the driver level but which
@@ -76,6 +82,13 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\l_@@_pdf_tmp_box}
+% For fitting destinations.
+% \begin{macrocode}
+\box_new:N \l_@@_pdf_tmp_box
+% \end{macrocode}
+% \end{variable}
+%
% \subsection{\texttt{dvips} driver}
%
% \begin{macrocode}
@@ -82,6 +95,26 @@
%<*dvips>
% \end{macrocode}
%
+% \begin{macro}{\@@_pdfmark:n, \@@_pdfmark:x}
+% Used often enough it should be a separate function.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_pdfmark:n #1
+ { \@@_postscript:n { mark #1 ~ pdfmark } }
+\cs_generate_variant:Nn \@@_pdfmark:n { x }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Catalogue entries}
+%
+% \begin{macro}{\driver_pdf_catalog_gput:nn, \driver_pdf_info_gput:nn}
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2
+ { \@@_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } }
+\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2
+ { \@@_pdfmark:n { /#1 ~ #2 /DOCINFO } }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Objects}
%
% \begin{variable}{\g_@@_pdf_object_int, \g_@@_pdf_object_prop}
@@ -100,12 +133,12 @@
{
\int_gincr:N \g_@@_pdf_object_int
\int_const:cn
- { g_@@_pdf_object_ \tl_to_str:n {#1} _int }
+ { c_@@_pdf_object_ \tl_to_str:n {#1} _int }
{ \g_@@_pdf_object_int }
\prop_gput:Nnn \g_@@_pdf_object_prop {#1} {#2}
}
\cs_new:Npn \driver_pdf_object_ref:n #1
- { { driver.obj \int_use:c { g_@@_pdf_object_ \tl_to_str:n {#1} _int } } }
+ { { driver.obj \int_use:c { c_@@_pdf_object_ \tl_to_str:n {#1} _int } } }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -123,9 +156,9 @@
% \begin{macrocode}
\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2
{
- \@@_postscript:x
+ \@@_pdfmark:x
{
- mark /_objdef ~ \driver_pdf_object_ref:n {#1}
+ /_objdef ~ \driver_pdf_object_ref:n {#1}
/type
\str_case_e:nn
{ \prop_item:Nn \g_@@_pdf_object_prop {#1} }
@@ -135,7 +168,7 @@
{ fstream } { /stream }
{ stream } { /stream }
}
- /OBJ ~ pdfmark
+ /OBJ
}
\use:c
{ @@_pdf_object_write_ \prop_item:Nn \g_@@_pdf_object_prop {#1} :nn }
@@ -143,18 +176,18 @@
}
\cs_new_protected:Npn \@@_pdf_object_write_array:nn #1#2
{
- \@@_postscript:x
+ \@@_pdfmark:x
{
- mark ~ \driver_pdf_object_ref:n {#1}
- [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL ~ pdfmark
+ \driver_pdf_object_ref:n {#1}
+ [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL
}
}
\cs_new_protected:Npn \@@_pdf_object_write_dict:nn #1#2
{
- \@@_postscript:x
+ \@@_pdfmark:x
{
- mark ~ \driver_pdf_object_ref:n {#1}
- << \exp_not:n {#2} >> /PUT ~ pdfmark
+ \driver_pdf_object_ref:n {#1}
+ << \exp_not:n {#2} >> /PUT
}
}
\cs_new_protected:Npn \@@_pdf_object_write_stream:nn #1#2
@@ -198,8 +231,9 @@
% \begin{macro}
% {
% driver.cvs ,
-% driver.rect.ht ,
-% driver.pt.dvi
+% driver.dvi.pt ,
+% driver.pt.dvi ,
+% driver.rect.ht
% }
% Small utilities for PostScript manipulations. Conversion to DVI dimensions
% is done here to allow for |Resolution|. The total height of a rectangle
@@ -208,6 +242,7 @@
\@@_postscript_header:n
{
/driver.cvs { 65534 ~ string ~ cvs } def
+ /driver.dvi.pt { 72.27 ~ mul ~ Resolution ~ div } def
/driver.pt.dvi { 72.27 ~ div ~ Resolution ~ mul } def
/driver.rect.ht { dup ~ 1 ~ get ~ neg ~ exch ~ 3 ~ get ~ add } def
}
@@ -228,11 +263,15 @@
%
% \begin{macro}
% {
-% driver.annotation.border ,
-% driver.annotation.ll ,
-% driver.annotation.ur ,
-% driver.link.ll ,
-% driver.link.ur ,
+% driver.rect ,
+% driver.save.ll ,
+% driver.save.ur ,
+% driver.save.linkll ,
+% driver.save.linkur ,
+% driver.llx ,
+% driver.lly ,
+% driver.urx ,
+% driver.ury
% }
% Functions for marking the limits of an annotation/link, plus drawing the
% border. We separate links for generic annotations to support adding a
@@ -240,9 +279,9 @@
% \begin{macrocode}
\@@_postscript_header:n
{
- /driver.annotation.border
+ /driver.rect
{ /Rect [ driver.llx ~ driver.lly ~ driver.urx ~ driver.ury ] } def
- /driver.annotation.ll
+ /driver.save.ll
{
currentpoint
/driver.lly ~ exch ~ def
@@ -249,7 +288,7 @@
/driver.llx ~ exch ~ def
}
def
- /driver.annotation.ur
+ /driver.save.ur
{
currentpoint
/driver.ury ~ exch ~ def
@@ -256,7 +295,7 @@
/driver.urx ~ exch ~ def
}
def
- /driver.link.ll
+ /driver.save.linkll
{
currentpoint ~
driver.linkmargin ~ add ~
@@ -266,7 +305,7 @@
/driver.llx ~ exch ~ def
}
def
- /driver.link.ur
+ /driver.save.linkur
{
currentpoint ~
driver.linkmargin ~ sub ~
@@ -282,6 +321,68 @@
%
% \begin{macro}
% {
+% driver.dest.anchor ,
+% driver.dest.x ,
+% driver.dest.y ,
+% driver.dest.point ,
+% driver.dest2device ,
+% driver.dev.x ,
+% driver.dev.y ,
+% driver.tmpa ,
+% driver.tmpb ,
+% driver.tmpc ,
+% driver.tmpd
+% }
+% For finding the anchor point of a destination link. We make the use case
+% a separate function as it comes up a lot, and as this makes it easier to
+% adjust if we need additional effects. We also need a more complex approach
+% to convert a co-ordinate pair correctly when defining a rectangle: this
+% can otherwise be out when using a landscape page. (Thanks to Alexander
+% Grahn for the approach here.)
+% \begin{macrocode}
+\@@_postscript_header:n
+ {
+ /driver.dest.anchor
+ {
+ currentpoint ~ exch ~
+ driver.dvi.pt ~ 72 ~ add ~
+ /driver.dest.x ~ exch ~ def ~
+ driver.dvi.pt ~
+ vsize ~ 72 ~ sub ~ exch ~ sub ~
+ /driver.dest.y ~ exch ~ def
+ }
+ def
+ /driver.dest.point
+ { driver.dest.x ~ driver.dest.y } def
+ /driver.dest2device
+ {
+ /driver.dest.y ~ exch ~ def
+ /driver.dest.x ~ exch ~ def ~
+ matrix ~ currentmatrix ~
+ matrix ~ defaultmatrix ~
+ matrix ~ invertmatrix ~
+ matrix ~ concatmatrix ~
+ cvx ~ exec
+ /driver.dev.y ~ exch ~ def
+ /driver.dev.x ~ exch ~ def
+ /driver.tmpd ~ exch ~ def
+ /driver.tmpc ~ exch ~ def
+ /driver.tmpb ~ exch ~ def
+ /driver.tmpa ~ exch ~ def ~
+ driver.dest.x ~ driver.tmpa ~ mul ~
+ driver.dest.y ~ driver.tmpc ~ mul ~ add ~
+ driver.dev.x ~ add ~
+ driver.dest.x ~ driver.tmpb ~ mul ~
+ driver.dest.y ~ driver.tmpd ~ mul ~ add ~
+ driver.dev.y ~ add
+ }
+ def
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+% {
% driver.bordertracking ,
% driver.bordertracking.begin ,
% driver.bordertracking.end ,
@@ -407,7 +508,7 @@
currentpoint ~ driver.originy ~ ne ~ exch ~
driver.originx ~ ne ~ or
{
- driver.link.ll
+ driver.save.linkll
/driver.lly ~
driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~
driver.bordertracking.begin
@@ -428,7 +529,7 @@
currentpoint ~
driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or
{
- driver.link.ll
+ driver.save.linkll
/driver.lly ~
driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~
driver.bordertracking.begin
@@ -672,19 +773,19 @@
\@@_pdf_annotation:nnnn {#1} {#2} {#3} {#4}
\int_gincr:N \g_@@_pdf_object_int
\int_gset_eq:NN \g_@@_pdf_annotation_int \g_@@_pdf_object_int
- \@@_postscript:x
+ \@@_pdfmark:x
{
- mark
- /_objdef { driver.obj \int_use:N \g_@@_pdf_object_int }
- driver.annotation.border ~
- #4 ~
- /ANN ~ pdfmark
+
+ /_objdef { driver.obj \int_use:N \g_@@_pdf_object_int }
+ driver.rect ~
+ #4 ~
+ /ANN
}
}
\cs_new_protected:Npn \@@_pdf_annotation:nnnn #1#2#3#4
{
\box_move_down:nn {#3}
- { \hbox:n { \@@_postscript:n { driver.annotation.ll } } }
+ { \hbox:n { \@@_postscript:n { driver.save.ll } } }
\hbox:n {#4}
\box_move_up:nn {#2}
{
@@ -691,18 +792,17 @@
\hbox:n
{
\tex_kern:D \dim_eval:n {#1} \scan_stop:
- \@@_postscript:n { driver.annotation.ur }
+ \@@_postscript:n { driver.save.ur }
}
}
\int_gincr:N \g_@@_pdf_object_int
\int_gset_eq:NN \g_@@_pdf_annotation_int \g_@@_pdf_object_int
- \@@_postscript:x
+ \@@_pdfmark:x
{
- mark
- /_objdef { driver.obj \int_use:N \g_@@_pdf_object_int }
- driver.annotation.border ~
- \c_@@_pdf_AR_fix_tl
- /ANN ~ pdfmark
+ /_objdef { driver.obj \int_use:N \g_@@_pdf_object_int }
+ driver.rect ~
+ \c_@@_pdf_AR_fix_tl
+ /ANN
}
}
% \end{macrocode}
@@ -852,7 +952,7 @@
%</package>
}
\box_move_down:nn { \box_dp:N \l_@@_pdf_content_box }
- { \hbox:n { \@@_postscript:n { driver.link.ll } } }
+ { \hbox:n { \@@_postscript:n { driver.save.linkll } } }
\@@_postscript:n { driver.bordertracking.begin }
\hbox_unpack:N \l_@@_pdf_content_box
\@@_postscript:n { driver.bordertracking.end }
@@ -859,13 +959,13 @@
\box_move_up:nn { \box_ht:N \l_@@_pdf_content_box }
{
\hbox:n
- { \@@_postscript:n { driver.link.ur } }
+ { \@@_postscript:n { driver.save.linkur } }
}
\@@_postscript:x
{
mark
\g_@@_pdf_link_dict_tl /Subtype /Link ~
- driver.annotation.border
+ driver.rect
/ANN ~ driver.pdfmark
}
\@@_pdf_link_sf_restore:
@@ -998,6 +1098,63 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\driver_pdf_destination:nn, \driver_pdf_destination_rectangle:nn}
+% Here, we need to turn the zoom into a scale. We also need to know where
+% the current anchor point actually is: worked out in PostScript. For the
+% rectangle version, we have a bit more PostScript: we need two points.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_pdf_destination:nn #1#2
+ {
+ \@@_postscript:n { driver.dest.anchor }
+ \@@_pdfmark:x
+ {
+ /View
+ [
+ \str_case:nnF {#2}
+ {
+ { xyz } { /XYZ ~ driver.dest.point ~ null }
+ { fit } { /Fit }
+ { fitb } { /FitB }
+ { fitbh } { /FitBH ~ driver.dest.y }
+ { fitbv } { /FitBV ~ driver.dest.x }
+ { fith } { /FitH ~ driver.dest.y }
+ { fitv } { /FitV ~ driver.dest.x }
+ }
+ {
+ /XYZ ~ driver.dest.point ~ \fp_eval:n { (#2) / 100 }
+ }
+ ]
+ /Dest ( \exp_not:n {#1} ) cvn
+ /DEST
+ }
+ }
+\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l_@@_pdf_tmp_box {#2}
+ \box_move_down:nn
+ { \box_dp:N \l_@@_pdf_tmp_box }
+ { \hbox:n { \@@_postscript:n { driver.save.ll } } }
+ \box_use:N \l_@@_pdf_tmp_box
+ \box_move_up:nn
+ { \box_ht:N \l_@@_pdf_tmp_box }
+ { \hbox:n { \@@_postscript:n { driver.save.ur } } }
+ \@@_pdfmark:n
+ {
+ /View
+ [
+ /FitR ~
+ driver.llx ~ driver.lly ~ driver.dest2device ~
+ driver.urx ~ driver.ury ~ driver.dest2device
+ ]
+ /Dest ( #1 ) cvn
+ /DEST
+ }
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Structure}
%
% \begin{macro}{\driver_pdf_compresslevel:n}
@@ -1142,6 +1299,70 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\driver_pdf_destination:nn, \driver_pdf_destination_rectangle:nn}
+% A simple task: pass the data to the primitive. The |\scan_stop:| deals
+% with the danger of an unterminated keyword. The zoom given here is a
+% percentage, but we need to pass it as \emph{per mille}. The rectangle
+% version is also easy as everything is build in.
+% \begin{macrocode}
+\cs_new_protected:Npx \driver_pdf_destination:nn #1#2
+ {
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \exp_not:N \tex_pdfextension:D dest ~ }
+ { \exp_not:N \tex_pdfdest:D }
+ name {#1}
+ \exp_not:N \str_case:nnF {#2}
+ {
+ { xyz } { xyz }
+ { fit } { fit }
+ { fitb } { fitb }
+ { fitbh } { fitbh }
+ { fitbv } { fitbv }
+ { fith } { fith }
+ { fitv } { fitv }
+ }
+ { xyz ~ zoom \exp_not:N \fp_eval:n { #2 * 10 } }
+ \scan_stop:
+ }
+\cs_new_protected:Npx \driver_pdf_destination_rectangle:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l_@@_pdf_tmp_box {#2}
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \exp_not:N \tex_pdfextension:D dest ~ }
+ { \exp_not:N \tex_pdfdest:D }
+ name {#1}
+ fitr ~
+ width \exp_not:N \box_wd:N \l_@@_pdf_tmp_box
+ height \exp_not:N \box_ht:N \l_@@_pdf_tmp_box
+ depth \exp_not:N \box_dp:N \l_@@_pdf_tmp_box
+ \box_use:N \l_@@_pdf_tmp_box
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Catalogue entries}
+%
+% \begin{macro}{\driver_pdf_catalog_gput:nn, \driver_pdf_info_gput:nn}
+% \begin{macrocode}
+\cs_new_protected:Npx \driver_pdf_catalog_gput:nn #1#2
+ {
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \tex_pdfextension:D catalog }
+ { \tex_pdfcatalog:D }
+ { / #1 ~ #2 }
+ }
+\cs_new_protected:Npx \driver_pdf_info_gput:nn #1#2
+ {
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \tex_pdfextension:D info }
+ { \tex_pdfinfo:D }
+ { / #1 ~ #2 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Objects}
%
% \begin{variable}{\g_@@_pdf_object_prop}
@@ -1163,7 +1384,7 @@
{
#1 reserveobjnum ~
\int_const:cn
- { g_@@_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int }
+ { c_@@_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int }
{#2}
\prop_gput:Nnn \exp_not:N \g_@@_pdf_object_prop {##1} {##2}
}
@@ -1172,12 +1393,12 @@
{
\@@_tmp:w
{ \tex_pdfextension:D obj ~ }
- { \tex_pdffeedback:D lastobj \scan_stop: }
+ { \exp_not:N \tex_pdffeedback:D lastobj \scan_stop: }
}
{ \@@_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
\group_end:
\cs_new:Npn \driver_pdf_object_ref:n #1
- { \int_use:c { g_@@_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+ { \int_use:c { c_@@_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1194,7 +1415,7 @@
{
\tex_immediate:D #1 useobjnum ~
\int_use:c
- { g_@@_pdf_object_ \tl_to_str:n {##1} _int }
+ { c_@@_pdf_object_ \tl_to_str:n {##1} _int }
\str_case_e:nn
{ \prop_item:Nn \g_@@_pdf_object_prop {##1} }
{
@@ -1333,6 +1554,17 @@
% \end{macrocode}
% \end{macro}
%
+% \subsubsection{Catalogue entries}
+%
+% \begin{macro}{\driver_pdf_catalog_gput:nn, \driver_pdf_info_gput:nn}
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2
+ { \@@_pdf:n { put ~ @catalog << /#1 ~ #2 >> } }
+\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2
+ { \@@_pdf:n { docinfo << /#1 ~ #2 >> } }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Objects}
%
% \begin{variable}{\g_@@_pdf_object_int, \g_@@_pdf_object_prop}
@@ -1533,12 +1765,73 @@
% \end{macro}
%
% \begin{macro}{\driver_pdf_link_margin:n}
-% Nope.
+% Pass to \texttt{dvipdfmx}.
% \begin{macrocode}
-\cs_new_protected:Npn \driver_pdf_link_margin:n #1 { }
+\cs_new_protected:Npn \driver_pdf_link_margin:n #1
+ { \@@_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\driver_pdf_destination:nn, \driver_pdf_destination_rectangle:nn}
+% Here, we need to turn the zoom into a scale. The method for \texttt{FitR}
+% is from Alexander Grahn: the idea is to avoid needing to do any calculations
+% in \TeX{} by using the driver data for \texttt{@xpos} and \texttt{@ypos}.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_pdf_destination:nn #1#2
+ {
+ \@@_pdf:x
+ {
+ dest ~ ( \exp_not:n {#1} )
+ [
+ @thispage
+ \str_case:nnF {#2}
+ {
+ { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
+ { fit } { /Fit }
+ { fitb } { /FitB }
+ { fitbh } { /FitBH }
+ { fitbv } { /FitBV ~ @xpos }
+ { fith } { /FitH ~ @ypos }
+ { fitv } { /FitV ~ @xpos }
+ }
+ { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
+ ]
+ }
+ }
+\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l_@@_pdf_tmp_box {#2}
+ \box_move_down:nn { \box_dp:N \l_@@_pdf_tmp_box }
+ {
+ \hbox:n
+ {
+ \@@_pdf:n { obj ~ @driver_#1_llx ~ @xpos }
+ \@@_pdf:n { obj ~ @driver_#1_lly ~ @ypos }
+ }
+ }
+ \box_use:N \l_@@_pdf_tmp_box
+ \box_move_up:nn { \box_ht:N \l_@@_pdf_tmp_box }
+ {
+ \hbox:n
+ {
+ \@@_pdf:n
+ {
+ dest ~ (#1)
+ [
+ @thispage
+ /FitR ~
+ @driver_#1_llx ~ @driver_#1_lly ~
+ @xpos ~ @ypos
+ ]
+ }
+ }
+ }
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Structure}
%
% \begin{macro}{\driver_pdf_compresslevel:n}
@@ -1589,6 +1882,16 @@
%<*dvisvgm>
% \end{macrocode}
%
+% \subsubsection{Catalogue entries}
+%
+% \begin{macro}{\driver_pdf_catalog_gput:nn, \driver_pdf_info_gput:nn}
+% No-op.
+% \begin{macrocode}
+\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 { }
+\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 { }
+% \end{macrocode}
+% \end{macro}
+%
% \subsubsection{Objects}
%
% \begin{macro}{\driver_pdf_object_new:nn}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -439,7 +439,7 @@
%
% \begin{function}{\driver_draw_box_use:Nnnnn}
% \begin{syntax}
-% \cs{driver_draw_box:Nnnnnnn} \meta{box}
+% \cs{driver_draw_box_use:Nnnnn} \meta{box}
% \Arg{a} \Arg{b} \Arg{c} \Arg{d} \Arg{x} \Arg{y}
% \end{syntax}
% Inserts the \meta{box} as an hbox with the box reference point placed
@@ -447,8 +447,9 @@
% to the box, allowing it to be in synchronisation with any scaling, rotation
% or skewing applying more generally. Note that \TeX{} material should not
% be inserted directly into a drawing as it would not be in the correct
-% location. Also note that as for other drawing elements the box here
-% has no size from a \TeX{} perspective.
+% location. Also note that this function must be used inside a box of zero
+% size, shifted appropriately for the correct result; a low-level engine
+% error may result if this is not the case.
% \end{function}
%
% \subsection{Coordinate system transformations}
@@ -492,6 +493,9 @@
% \cs{driver_pdf_link_begin_user:nnw} \Arg{attributes} \Arg{action}
% \Arg{content}
% \cs{driver_pdf_link_end:}
+% \cs{driver_pdf_link_begin_goto:nnw} \Arg{attributes} \Arg{target}
+% \Arg{content}
+% \cs{driver_pdf_link_end:}
% \end{syntax}
% Creates a link of the \meta{type} |goto| or |user| with the given
% \meta{attributes}, points toward the \meta{action} and surround the
@@ -514,9 +518,76 @@
% Sets the length of the margin between content and the border of a link.
% Different back-ends treat the scoping of this value in different ways:
% \pdfTeX{} and \LuaTeX{} treat it as scoped by \TeX{}, whilst with
-% \texttt{dvips} the scope is managed at the PostScript level.
+% \texttt{dvips} the scope is managed at the PostScript level. For
+% \texttt{(x)dvipdfmx}, this setting applies to \emph{all} annotations
+% (\emph{i.e.}~it is global), and thus it may be necessary to set to
+% \texttt{0pt} to avoid breaking for example animations.
% \end{function}
%
+% \begin{function}[added = 2019-04-26]{\driver_pdf_destination:nn}
+% \begin{syntax}
+% \cs{driver_pdf_destination:nn} \Arg{name} \Arg{action}
+% \end{syntax}
+% Creates a destination (anchor) called \meta{name}; when a jump is made
+% by a link to the destination, one of the following actions may take
+% place
+% \begin{itemize}
+% \item \texttt{xyz} Move the view such that the target point is at the
+% top-left of the viewer screen
+% \item \texttt{\meta{scale}} As for \texttt{xyz}, but also sets the
+% viewer \meta{scale}
+% \item \texttt{fit} Display the page containing the destination and fit
+% the entire page within the viewer window
+% \item \texttt{fitb} Display the page containing the destination and fit
+% the bounding box of the page within the viewer window
+% \item \texttt{fitbh} Move to the destination page such that the
+% anchor point is at the top of the viewer screen, and scale
+% such that the bounding box fills the viewer width
+% \item \texttt{fitbv} Move to the destination page such that the
+% anchor point is at the left of the viewer screen, and scale
+% such that the bounding box fills the viewer height
+% \item \texttt{fith} Move to the destination page such that the
+% anchor point is at the top of the viewer screen, and scale
+% such that the page fills the viewer width
+% \item \texttt{fitv} Move to the destination page such that the
+% anchor point is at the left of the viewer screen, and scale
+% such that the page fills the viewer height
+% \end{itemize}
+% A \meta{scale} of zero is equivalent to \texttt{xyz}.
+% \end{function}
+%
+% \begin{function}[added = 2019-04-28]{\driver_pdf_destination_rectangle:nn}
+% \begin{syntax}
+% \cs{driver_pdf_destination_rectangle:nn} \Arg{name} \Arg{content}
+% \end{syntax}
+% Creates a destination (anchor) called \meta{name}; when a jump is made
+% by a link to the destination, the viewer will set the zoom such that all
+% of the \meta{content} is visible taking up the full width or height of the
+% viewer area.
+% \end{function}
+%
+% \subsection{PDF Catalogue entries}
+%
+% \begin{function}[added = 2019-04-28]{\driver_pdf_catalog_gput:nn}
+% \begin{syntax}
+% \cs{driver_pdf_catalog_gput:nn} \Arg{key} \Arg{value}
+% \end{syntax}
+% Adds the key--value pair to the PDF catalog. The \meta{key} should
+% be given \emph{without} the leading |/|. The \meta{value} should be
+% a \enquote{raw} PDF dictionary entry, including the |(|/|)| pair for
+% a string, a leading |/| for a boolean, \emph{etc.}
+% \end{function}
+%
+% \begin{function}[added = 2019-04-28]{\driver_pdf_info_gput:nn}
+% \begin{syntax}
+% \cs{driver_pdf_info_gput:nn} \Arg{key} \Arg{value}
+% \end{syntax}
+% Adds the key--value pair to the PDF information. The \meta{key} should
+% be given \emph{without} the leading |/|. The \meta{value} should be
+% a \enquote{raw} PDF dictionary entry, including the |(|/|)| pair for
+% a string or leading |/| for a boolean.
+% \end{function}
+%
% \subsection{PDF Objects}
%
% Objects are used to provide a range of data structures in a PDF. At the
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3file.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -439,7 +439,7 @@
% \subsection{Wrapping lines in output}
%
% \begin{function}[added = 2012-06-28, updated = 2017-12-04]
-% {\iow_wrap:nnnN \iow_wrap:nxnN}
+% {\iow_wrap:nnnN, \iow_wrap:nxnN}
% \begin{syntax}
% \cs{iow_wrap:nnnN} \Arg{text} \Arg{run-on text} \Arg{set up} \meta{function}
% \end{syntax}
@@ -655,6 +655,51 @@
% quote (|"|) characters or is surrounded by a pair of quotes.
% \end{function}
%
+% \begin{function}[noTF, added = 2017-07-11, updated = 2019-02-16]
+% {\file_get_mdfive_hash:nN}
+% \begin{syntax}
+% \cs{file_get_mdfive_hash:nN} \Arg{file name} \meta{tl var}
+% \end{syntax}
+% Searches for \meta{file name} using the current \TeX{} search
+% path and the additional paths controlled by \cs{l_file_search_path_seq}.
+% If found, sets the \meta{tl var} to the MD5 sum generated from the
+% content of the file. The file is read as bytes, which means that in
+% contrast to most \TeX{} behaviour there will be a difference in result
+% depending on the line endings used in text files. The same file will
+% produce the same result between different engines: the algorithm used
+% is the same in all cases.
+% Where the file is not found, the \meta{tl var} will set to
+% \cs{q_no_value}.
+% \end{function}
+%
+% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16]
+% {\file_get_size:nN}
+% \begin{syntax}
+% \cs{file_get_size:nN} \Arg{file name} \meta{tl var}
+% \end{syntax}
+% Searches for \meta{file name} using the current \TeX{} search
+% path and the additional paths controlled by \cs{l_file_search_path_seq}.
+% If found, sets the \meta{tl var} to the size of the file in bytes.
+% Where the file is not found, the \meta{tl var} will set to \cs{q_no_value}.
+% This is not available in older versions of \XeTeX{}.
+% \end{function}
+%
+% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16]
+% {\file_get_timestamp:nN}
+% \begin{syntax}
+% \cs{file_get_timestamp:nN} \Arg{file name} \meta{tl var}
+% \end{syntax}
+% Searches for \meta{file name} using the current \TeX{} search
+% path and the additional paths controlled by \cs{l_file_search_path_seq}.
+% If found, sets the \meta{tl var} to the modification timestamp of
+% the file in the form |D:|\meta{year}\meta{month}\meta{day}\meta{hour}^^A
+% \meta{minute}\meta{second}\meta{offset}, where the latter may be |Z|
+% (UTC) or \meta{plus-minus}\meta{hours}|'|\meta{minutes}|'|.
+% Where the file is not found, the \meta{tl var} will be set to
+% \cs{q_no_value}.
+% This is not available in older versions of \XeTeX{}.
+% \end{function}
+%
% \begin{function}[updated = 2017-06-26]{\file_input:n}
% \begin{syntax}
% \cs{file_input:n} \Arg{file name}
@@ -666,6 +711,41 @@
% function. An error is raised if the file is not found.
% \end{function}
%
+% \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF}
+% \begin{syntax}
+% \cs{file_if_exist_input:n} \Arg{file name}
+% \cs{file_if_exist_input:nF} \Arg{file name} \Arg{false code}
+% \end{syntax}
+% Searches for \meta{file name} using the current \TeX{} search
+% path and the additional paths controlled by
+% \cs{file_path_include:n}. If found then
+% reads in the file as additional \LaTeX{} source as described for
+% \cs{file_input:n}, otherwise inserts the \meta{false code}.
+% Note that these functions do not raise
+% an error if the file is not found, in contrast to \cs{file_input:n}.
+% \end{function}
+%
+% \begin{function}[added = 2017-07-07]{\file_input_stop:}
+% \begin{syntax}
+% \cs{file_input_stop:}
+% \end{syntax}
+% Ends the reading of a file started by \cs{file_input:n} or similar before
+% the end of the file is reached. Where the file reading is being terminated
+% due to an error, \cs[index = msg_critical:nn]{msg_critical:nn(nn)}
+% should be preferred.
+% \begin{texnote}
+% This function must be used on a line on its own: \TeX{} reads files
+% line-by-line and so any additional tokens in the \enquote{current} line
+% will still be read.
+%
+% This is also true if the function is hidden inside another function
+% (which will be the normal case), i.e., all tokens on the same line
+% in the source file are still processed. Putting it on a line by itself
+% in the definition doesn't help as it is the line where it is used that
+% counts!
+% \end{texnote}
+% \end{function}
+%
% \begin{function}{\file_show_list:, \file_log_list:}
% \begin{syntax}
% \cs{file_show_list:}
@@ -2360,6 +2440,98 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}
+% {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN}
+% \begin{macro}{\@@_get_details:nnN}
+% These are all wrappers around the \pdfTeX{} primitives doing the same
+% jobs: as we want consistent file paths to be found, they are all set up
+% using \cs{file_get_full_name:nN} and so are non-expandable \texttt{get}
+% functions. Much of the code is repetitive but we need to branch for
+% \LuaTeX{} (emulation in Lua), for the slightly different syntax
+% needed for \tn{tex_mdfivesum:D} and for the fact that primitive
+% coverage varies in other engines.
+% \begin{macrocode}
+\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
+ { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_new_protected:Npn \file_get_size:nN #1#2
+ { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_new_protected:Npn \file_get_timestamp:nN #1#2
+ { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF }
+ { \@@_get_details:nnN {#1} { mdfivesum } {#2} }
+\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF }
+ { \@@_get_details:nnN {#1} { size } {#2} }
+\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF }
+ { \@@_get_details:nnN {#1} { moddate } {#2} }
+\cs_new_protected:Npn \@@_get_details:nnN #1#2#3
+ {
+ \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
+ {
+ \tl_set:Nx #3
+ {
+ \use:c { tex_file #2 :D } \exp_after:wN
+ { \l_@@_full_name_tl }
+ }
+ \prg_return_true:
+ }
+ { \prg_return_false: }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_set_protected:Npn \@@_get_details:nnN #1#2#3
+ {
+ \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
+ {
+ \tl_set:Nx #3
+ {
+ \lua_now:e
+ {
+ l3kernel.file#2
+ ( " \lua_escape:e { \l_@@_full_name_tl } " )
+ }
+ }
+ \prg_return_true:
+ }
+ { \prg_return_false: }
+ }
+ }
+ {
+ \prg_set_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2
+ { T , F , TF }
+ {
+ \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
+ {
+ \tl_set:Nx #2
+ {
+ \tex_mdfivesum:D file \exp_after:wN
+ { \l_@@_full_name_tl }
+ }
+ \prg_return_true:
+ }
+ { \prg_return_false: }
+ }
+ \cs_if_exist:NF \tex_filesize:D
+ {
+ \cs_set_protected:Npn \@@_get_details:nnN #1#2#3
+ {
+ \tl_clear:N #3
+ \__kernel_msg_error:nnx
+ { kernel } { primitive-not-available }
+ { \exp_not:c { (pdf)file #2 } }
+ \prg_return_false:
+ }
+ }
+ }
+\__kernel_msg_new:nnnn { kernel } { primitive-not-available }
+ { Primitive~\token_to_str:N #1 not~available }
+ {
+ The~version~of~XeTeX~in~use~does~not~provide~functionality~equivalent~to~
+ the~\token_to_str:N #1 primitive.
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}[TF]{\file_if_exist:n}
% The test for the existence of a file is a wrapper around the function to
% add a path to a file. If the file was found, the path contains
@@ -2375,6 +2547,32 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\file_if_exist_input:n, \file_if_exist_input:nF}
+% Input of a file with a test for existence. We do not define the |T|
+% or |TF| variants because the most useful place to place the
+% \meta{true code} would be inconsistent with other conditionals.
+% \begin{macrocode}
+\cs_new_protected:Npn \file_if_exist_input:n #1
+ {
+ \file_get_full_name:nNT {#1} \l_@@_full_name_tl
+ { \@@_input:V \l_@@_full_name_tl }
+ }
+\cs_new_protected:Npn \file_if_exist_input:nF #1#2
+ {
+ \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
+ { \@@_input:V \l_@@_full_name_tl }
+ {#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\file_input_stop:}
+% A simple rename.
+% \begin{macrocode}
+\cs_new_protected:Npn \file_input_stop: { \tex_endinput:D }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\__kernel_file_missing:n}
% An error message for a missing file, also used in \cs{ior_open:Nn}.
% \begin{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3final.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
% \maketitle
%
% \begin{documentation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
% \maketitle
%
% \begin{documentation}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -40,7 +40,7 @@
% {latex-team at latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -888,7 +888,7 @@
% specified, providing a tuple as an argument of any other operation
% yields the \enquote{invalid operation} exception and a \nan{} result.
%
-% \begin{function}[tested = m3fp-logic002, module = ]{?:}
+% \begin{function}[tested = m3fp-logic002]{?:}
% \begin{syntax}
% \cs{fp_eval:n} \{ \meta{operand_1} |?| \meta{operand_2} |:| \meta{operand_3} \}
% \end{syntax}
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3int.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Added: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx (rev 0)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -0,0 +1,100 @@
+% \iffalse meta-comment
+%
+%% File: l3legacy.dtx
+%
+% Copyright (C) 2019 The LaTeX3 Project
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% https://www.latex-project.org/lppl.txt
+%
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full,kernel]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \textsf{l3legacy} package\\ Interfaces to legacy concepts^^A
+% }
+%
+% \author{^^A
+% The \LaTeX3 Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team at latex-project.org}
+% {latex-team at latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2019-05-03}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% There are a small number of \TeX{} or \LaTeXe{} concepts which are not used
+% in \pkg{expl3} code but which need to be manipulated when working as a \LaTeXe{}
+% package. To allow these to be integrated cleanly into \pkg{expl3} code, a set
+% of legacy interfaces are provided here.
+%
+% \begin{function}[EXP,pTF]{\legacy_if:n}
+% \begin{syntax}
+% \cs{legacy_if:nTF} \Arg{name} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests if the \LaTeXe{}/plain \TeX{} conditional (generated by \tn{newif})
+% if \texttt{true} or \texttt{false} and branches accordingly. The
+% \meta{name} of the conditional should \emph{omit} the leading \texttt{if}.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3legacy} Implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=legacy>
+% \end{macrocode}
+%
+% \begin{macro}[EXP,pTF]{\legacy_if:n}
+% A friendly wrapper.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \legacy_if:n #1 { p , T , F , TF }
+ {
+ \exp_args:Nc \if_meaning:w { if#1 } \iftrue
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
Property changes on: trunk/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3names.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -578,6 +578,7 @@
\@@_primitive:NN \pdfoutline \tex_pdfoutline:D
\@@_primitive:NN \pdfoutput \tex_pdfoutput:D
\@@_primitive:NN \pdfpageattr \tex_pdfpageattr:D
+ \@@_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D
\@@_primitive:NN \pdfpagebox \tex_pdfpagebox:D
\@@_primitive:NN \pdfpageref \tex_pdfpageref:D
\@@_primitive:NN \pdfpageresources \tex_pdfpageresources:D
@@ -1107,6 +1108,11 @@
\@@_primitive:NN \Uunderdelimiter \tex_Uunderdelimiter:D
\@@_primitive:NN \Uvextensible \tex_Uvextensible:D
% \end{macrocode}
+% Primitives from Harf\TeX{}.
+% \begin{macrocode}
+ \@@_primitive:NN \harftexrevision \tex_harftexrevision:D
+ \@@_primitive:NN \harftexversion \tex_harftexversion:D
+% \end{macrocode}
% Primitives from \pTeX{}.
% \begin{macrocode}
\@@_primitive:NN \autospacing \tex_autospacing:D
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3str.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3token.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -931,6 +931,26 @@
% (as appropriate to the result of the test).
% \end{function}
%
+% \begin{function}[TF, updated = 2012-12-20]{\peek_N_type:}
+% \begin{syntax}
+% \cs{peek_N_type:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests if the next \meta{token} in the input stream can be safely
+% grabbed as an \texttt{N}-type argument. The test is \meta{false}
+% if the next \meta{token} is either an explicit or implicit
+% begin-group or end-group token (with any character code), or
+% an explicit or implicit space character (with character code $32$
+% and category code $10$), or an outer token (never used in \LaTeX3)
+% and \meta{true} in all other cases.
+% Note that a \meta{true} result ensures that the next \meta{token} is
+% a valid \texttt{N}-type argument. However, if the next \meta{token}
+% is for instance \cs{c_space_token}, the test takes the
+% \meta{false} branch, even though the next \meta{token} is in fact
+% a valid \texttt{N}-type argument. The \meta{token} is left
+% in the input stream after the \meta{true code} or \meta{false code}
+% (as appropriate to the result of the test).
+% \end{function}
+%
% \section{Description of all possible tokens}
% \label{sec:l3token:all-tokens}
%
@@ -2405,7 +2425,78 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[TF]{\peek_N_type:}
+% \begin{macro}
+% {\@@_execute_branches_N_type:, \@@_N_type:w, \@@_N_type_aux:nnw}
+% All tokens are \texttt{N}-type tokens, except in four cases:
+% begin-group tokens, end-group tokens, space tokens with character
+% code~$32$, and outer tokens. Since \cs{l_peek_token} might be
+% outer, we cannot use the convenient \cs{bool_if:nTF} function, and
+% must resort to the old trick of using \tn{ifodd} to expand a set of
+% tests. The \texttt{false} branch of this test is taken if the token
+% is one of the first three kinds of non-\texttt{N}-type tokens
+% (explicit or implicit), thus we call \cs{@@_false:w}. In the
+% \texttt{true} branch, we must detect outer tokens, without impacting
+% performance too much for non-outer tokens. The first filter is to
+% search for \texttt{outer} in the \tn{meaning} of \cs{l_peek_token}.
+% If that is absent, \cs{use_none_delimit_by_q_stop:w} cleans up, and
+% we call \cs{@@_true:w}. Otherwise, the token can be a non-outer
+% macro or a primitive mark whose parameter or replacement text
+% contains \texttt{outer}, it can be the primitive \tn{outer}, or it
+% can be an outer token. Macros and marks would have \texttt{ma} in
+% the part before the first occurrence of \texttt{outer}; the meaning
+% of \tn{outer} has nothing after \texttt{outer}, contrarily to outer
+% macros; and that covers all cases, calling \cs{@@_true:w} or
+% \cs{@@_false:w} as appropriate. Here, there is no \meta{search
+% token}, so we feed a dummy \cs{scan_stop:} to the
+% \cs{@@_token_generic:NNTF} function.
% \begin{macrocode}
+\group_begin:
+ \cs_set_protected:Npn \@@_tmp:w #1 \q_stop
+ {
+ \cs_new_protected:Npn \@@_execute_branches_N_type:
+ {
+ \if_int_odd:w
+ \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi:
+ \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi:
+ \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi:
+ 1 \exp_stop_f:
+ \exp_after:wN \@@_N_type:w
+ \token_to_meaning:N \l_peek_token
+ \q_mark \@@_N_type_aux:nnw
+ #1 \q_mark \use_none_delimit_by_q_stop:w
+ \q_stop
+ \exp_after:wN \@@_true:w
+ \else:
+ \exp_after:wN \@@_false:w
+ \fi:
+ }
+ \cs_new_protected:Npn \@@_N_type:w ##1 #1 ##2 \q_mark ##3
+ { ##3 {##1} {##2} }
+ }
+ \exp_after:wN \@@_tmp:w \tl_to_str:n { outer } \q_stop
+\group_end:
+\cs_new_protected:Npn \@@_N_type_aux:nnw #1 #2 #3 \fi:
+ {
+ \fi:
+ \tl_if_in:noTF {#1} { \tl_to_str:n {ma} }
+ { \@@_true:w }
+ { \tl_if_empty:nTF {#2} { \@@_true:w } { \@@_false:w } }
+ }
+\cs_new_protected:Npn \peek_N_type:TF
+ {
+ \@@_token_generic:NNTF
+ \@@_execute_branches_N_type: \scan_stop:
+ }
+\cs_new_protected:Npn \peek_N_type:T
+ { \@@_token_generic:NNT \@@_execute_branches_N_type: \scan_stop: }
+\cs_new_protected:Npn \peek_N_type:F
+ { \@@_token_generic:NNF \@@_execute_branches_N_type: \scan_stop: }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
%</initex|package>
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-04-21}
+% \date{Released 2019-05-03}
%
% \maketitle
%
Modified: trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -133,7 +133,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2019-03-05}{}
+\ProvidesExplPackage{l3keys2e}{2019-05-03}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -167,7 +167,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2019-03-05}{}
+\ProvidesExplPackage{xfp}{2019-05-03}{}
{L3 Floating point unit}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -65,7 +65,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -535,7 +535,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2019-03-05}{}
+\ProvidesExplPackage{xfrac}{2019-05-03}{}
{L3 Experimental split-level fractions}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -67,7 +67,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -898,7 +898,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2019-03-05}{}
+\ProvidesExplPackage{xparse}{2019-05-03}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
@@ -1415,6 +1415,9 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_start_env:nnnnn #1#2
{
+%<*package>
+ \cs_if_exist_use:N \conditionally at traceoff
+%</package>
\str_set:Nn \l_@@_environment_str {#2}
\bool_set_true:N \l_@@_environment_bool
\@@_start_aux:ccnnnn
@@ -1424,6 +1427,9 @@
}
\cs_new_protected:Npx \@@_start:nNNnnn #1#2#3
{
+%<*package>
+ \exp_not:n { \cs_if_exist_use:N \conditionally at traceoff }
+%</package>
\exp_not:c { xparse~function~is~not~expandable }
\exp_not:n { \bool_set_false:N \l_@@_environment_bool }
\exp_not:N \@@_start_aux:NNnnnn
@@ -1460,6 +1466,9 @@
{
\tl_if_empty:NF \l_@@_defaults_tl { \@@_defaults: }
\tl_if_empty:NF \l_@@_process_all_tl { \@@_args_process: }
+%<*package>
+ \cs_if_exist_use:N \conditionally at traceon
+%</package>
\exp_after:wN \l_@@_fn_code_tl \l_@@_args_tl
}
% \end{macrocode}
Modified: trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx 2019-05-03 22:30:06 UTC (rev 50972)
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-03-05}
+% \date{Released 2019-05-03}
%
% \maketitle
%
@@ -682,7 +682,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2019-03-05}{}
+\ProvidesExplPackage{xtemplate}{2019-05-03}{}
{L3 Experimental prototype document functions}
% \end{macrocode}
%
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -20,7 +20,7 @@
%%
%% File: l3benchmark.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3benchmark}{2019-03-05}{}
+\ProvidesExplPackage{l3benchmark}{2019-05-03}{}
{L3 Experimental benchmarking}
\sys_if_engine_luatex:TF
{
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -20,7 +20,7 @@
%%
%% File: l3cctab.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3cctab}{2019-03-05}{}
+\ProvidesExplPackage{l3cctab}{2019-05-03}{}
{L3 Experimental category code tables}
\int_new:N \g__cctab_allocate_int
\int_gset:Nn \g__cctab_allocate_int { -1 }
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -20,7 +20,7 @@
%%
%% File: l3color.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3color}{2019-03-05}{}
+\ProvidesExplPackage{l3color}{2019-05-03}{}
{L3 Experimental color support}
\tl_new:N \l__color_tmp_tl
\prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF }
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -28,7 +28,7 @@
%%
%% File: l3draw.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3draw}{2019-03-05}{}
+\ProvidesExplPackage{l3draw}{2019-05-03}{}
{L3 Experimental core drawing support}
\RequirePackage { l3color }
%% File: l3draw-boxes.dtx
@@ -685,7 +685,7 @@
{ \bool_set_true:c { l__draw_path_use_ ##1 _ bool } }
{
\cs_if_exist_use:cF { __draw_path_use_action_ ##1 : }
- { \ERROR }
+ { \msg_error:nnn { draw } { invalid-path-action } {##1} }
}
}
\__draw_softpath_round_corners:
@@ -693,11 +693,15 @@
{ \l_draw_bb_update_bool }
{ \l__draw_path_use_stroke_bool }
{ \__draw_path_use_stroke_bb: }
- \bool_if:NTF \l__draw_path_use_clear_bool
- { \__draw_softpath_use_clear: }
- { \__draw_softpath_use: }
+ \__draw_softpath_use:
\bool_if:NT \l__draw_path_use_clip_bool
- { \driver_draw_clip: }
+ {
+ \driver_draw_clip:
+ \bool_lazy_or:nnF
+ { \l__draw_path_use_fill_bool }
+ { \l__draw_path_use_stroke_bool }
+ { \driver_draw_discardpath: }
+ }
\bool_lazy_or:nnT
{ \l__draw_path_use_fill_bool }
{ \l__draw_path_use_stroke_bool }
@@ -710,6 +714,8 @@
:
}
}
+ \bool_if:NT \l__draw_path_use_clear_bool
+ { \__draw_softpath_clear: }
}
\cs_new_protected:Npn \__draw_path_use_action_draw:
{
@@ -786,6 +792,9 @@
\dim_gset_eq:NN \g__draw_path_lasty_dim \l__draw_path_lasty_dim
\group_end:
}
+\msg_new:nnnn { draw } { invalid-path-action }
+ { Invalid~action~'#1'~for~path. }
+ { Paths~can~be~used~with~actions~'draw',~'clip',~'fill'~or~'stroke'. }
%% File: l3draw-points.dtx
\cs_new:Npn \__draw_point_process:nn #1#2
{
@@ -1323,11 +1332,6 @@
\tl_build_gclear:N \g__draw_softpath_main_tl
\bool_gset_false:N \g__draw_softpath_corners_bool
}
-\cs_new_protected:Npn \__draw_softpath_use_clear:
- {
- \__draw_softpath_use:
- \__draw_softpath_clear:
- }
\dim_new:N \g__draw_softpath_lastx_dim
\dim_new:N \g__draw_softpath_lasty_dim
\bool_new:N \g__draw_softpath_move_bool
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -20,7 +20,7 @@
%%
%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-convert}{2019-03-05}{}
+\ProvidesExplPackage{l3str-convert}{2019-05-03}{}
{L3 Experimental string encoding conversions}
\cs_if_exist:NF \use_ii_i:nn
{ \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } }
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -20,7 +20,7 @@
%%
%% File: l3str-format.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2019-03-05}{}
+\ProvidesExplPackage{l3str-format}{2019-05-03}{}
{L3 Experimental string formatting}
\cs_generate_variant:Nn \use:nn { nf }
\cs_generate_variant:Nn \use:nnn { fnf }
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -20,7 +20,7 @@
%%
%% File: l3sys-shell.dtx
\RequirePackage{expl3}
-\ProvidesExplPackage{l3sys-shell}{2019-03-05}{}
+\ProvidesExplPackage{l3sys-shell}{2019-05-03}{}
{L3 Experimental system shell functions}
\cs_new:Npn \__sys_path_to_win:n #1
{
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -20,7 +20,7 @@
%%
%% File: xcoffins.dtx
\RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2019-03-05}{}
+\ProvidesExplPackage{xcoffins}{2019-05-03}{}
{L3 Experimental design level coffins}
\keys_define:nn { coffin }
{
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3galley}{2019-03-05}{}
+\ProvidesExplPackage{l3galley}{2019-05-03}{}
{L3 Experimental galley code}
\int_new:N \l__galley_tmp_int
\seq_new:N \g__galley_tmpa_seq
Modified: trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -20,7 +20,7 @@
%%
%% File: xgalley.dtx
\RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2019-03-05}{}
+\ProvidesExplPackage{xgalley}{2019-05-03}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
\clist_new:N \l__galley_tmpa_clist
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex 2019-05-03 22:30:06 UTC (rev 50972)
@@ -48,6 +48,7 @@
%% l3luatex.dtx (with options: `package,tex')
%% l3unicode.dtx (with options: `package')
%% l3candidates.dtx (with options: `package')
+%% l3legacy.dtx (with options: `package')
%% l3deprecation.dtx (with options: `package')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
@@ -63,7 +64,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-04-21}%
+\def\ExplFileDate{2019-05-03}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -744,6 +745,7 @@
\__kernel_primitive:NN \pdfoutline \tex_pdfoutline:D
\__kernel_primitive:NN \pdfoutput \tex_pdfoutput:D
\__kernel_primitive:NN \pdfpageattr \tex_pdfpageattr:D
+ \__kernel_primitive:NN \pdfpagesattr \tex_pdfpagesattr:D
\__kernel_primitive:NN \pdfpagebox \tex_pdfpagebox:D
\__kernel_primitive:NN \pdfpageref \tex_pdfpageref:D
\__kernel_primitive:NN \pdfpageresources \tex_pdfpageresources:D
@@ -1223,6 +1225,8 @@
\__kernel_primitive:NN \Usuperscript \tex_Usuperscript:D
\__kernel_primitive:NN \Uunderdelimiter \tex_Uunderdelimiter:D
\__kernel_primitive:NN \Uvextensible \tex_Uvextensible:D
+ \__kernel_primitive:NN \harftexrevision \tex_harftexrevision:D
+ \__kernel_primitive:NN \harftexversion \tex_harftexversion:D
\__kernel_primitive:NN \autospacing \tex_autospacing:D
\__kernel_primitive:NN \autoxspacing \tex_autoxspacing:D
\__kernel_primitive:NN \dtou \tex_dtou:D
@@ -8979,6 +8983,47 @@
{ \exp_not:c { peek_#1:NF } ##1 {##2} }
}
}
+\group_begin:
+ \cs_set_protected:Npn \__peek_tmp:w #1 \q_stop
+ {
+ \cs_new_protected:Npn \__peek_execute_branches_N_type:
+ {
+ \if_int_odd:w
+ \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi:
+ \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi:
+ \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi:
+ 1 \exp_stop_f:
+ \exp_after:wN \__peek_N_type:w
+ \token_to_meaning:N \l_peek_token
+ \q_mark \__peek_N_type_aux:nnw
+ #1 \q_mark \use_none_delimit_by_q_stop:w
+ \q_stop
+ \exp_after:wN \__peek_true:w
+ \else:
+ \exp_after:wN \__peek_false:w
+ \fi:
+ }
+ \cs_new_protected:Npn \__peek_N_type:w ##1 #1 ##2 \q_mark ##3
+ { ##3 {##1} {##2} }
+ }
+ \exp_after:wN \__peek_tmp:w \tl_to_str:n { outer } \q_stop
+\group_end:
+\cs_new_protected:Npn \__peek_N_type_aux:nnw #1 #2 #3 \fi:
+ {
+ \fi:
+ \tl_if_in:noTF {#1} { \tl_to_str:n {ma} }
+ { \__peek_true:w }
+ { \tl_if_empty:nTF {#2} { \__peek_true:w } { \__peek_false:w } }
+ }
+\cs_new_protected:Npn \peek_N_type:TF
+ {
+ \__peek_token_generic:NNTF
+ \__peek_execute_branches_N_type: \scan_stop:
+ }
+\cs_new_protected:Npn \peek_N_type:T
+ { \__peek_token_generic:NNT \__peek_execute_branches_N_type: \scan_stop: }
+\cs_new_protected:Npn \peek_N_type:F
+ { \__peek_token_generic:NNF \__peek_execute_branches_N_type: \scan_stop: }
%% File: l3prop.dtx
\scan_new:N \s__prop
\cs_new:Npn \__prop_pair:wn #1 \s__prop #2
@@ -11012,6 +11057,83 @@
\__kernel_ior_open:No \g__file_internal_ior \l__file_full_name_tl
\ior_if_eof:NF \g__file_internal_ior { #2 { \prg_break: } }
}
+\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
+ { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_new_protected:Npn \file_get_size:nN #1#2
+ { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_new_protected:Npn \file_get_timestamp:nN #1#2
+ { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF }
+ { \__file_get_details:nnN {#1} { mdfivesum } {#2} }
+\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF }
+ { \__file_get_details:nnN {#1} { size } {#2} }
+\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF }
+ { \__file_get_details:nnN {#1} { moddate } {#2} }
+\cs_new_protected:Npn \__file_get_details:nnN #1#2#3
+ {
+ \file_get_full_name:nNTF {#1} \l__file_full_name_tl
+ {
+ \tl_set:Nx #3
+ {
+ \use:c { tex_file #2 :D } \exp_after:wN
+ { \l__file_full_name_tl }
+ }
+ \prg_return_true:
+ }
+ { \prg_return_false: }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_set_protected:Npn \__file_get_details:nnN #1#2#3
+ {
+ \file_get_full_name:nNTF {#1} \l__file_full_name_tl
+ {
+ \tl_set:Nx #3
+ {
+ \lua_now:e
+ {
+ l3kernel.file#2
+ ( " \lua_escape:e { \l__file_full_name_tl } " )
+ }
+ }
+ \prg_return_true:
+ }
+ { \prg_return_false: }
+ }
+ }
+ {
+ \prg_set_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2
+ { T , F , TF }
+ {
+ \file_get_full_name:nNTF {#1} \l__file_full_name_tl
+ {
+ \tl_set:Nx #2
+ {
+ \tex_mdfivesum:D file \exp_after:wN
+ { \l__file_full_name_tl }
+ }
+ \prg_return_true:
+ }
+ { \prg_return_false: }
+ }
+ \cs_if_exist:NF \tex_filesize:D
+ {
+ \cs_set_protected:Npn \__file_get_details:nnN #1#2#3
+ {
+ \tl_clear:N #3
+ \__kernel_msg_error:nnx
+ { kernel } { primitive-not-available }
+ { \exp_not:c { (pdf)file #2 } }
+ \prg_return_false:
+ }
+ }
+ }
+\__kernel_msg_new:nnnn { kernel } { primitive-not-available }
+ { Primitive~\token_to_str:N #1 not~available }
+ {
+ The~version~of~XeTeX~in~use~does~not~provide~functionality~equivalent~to~
+ the~\token_to_str:N #1 primitive.
+ }
\prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF }
{
\file_get_full_name:nNTF {#1} \l__file_full_name_tl
@@ -11018,6 +11140,18 @@
{ \prg_return_true: }
{ \prg_return_false: }
}
+\cs_new_protected:Npn \file_if_exist_input:n #1
+ {
+ \file_get_full_name:nNT {#1} \l__file_full_name_tl
+ { \__file_input:V \l__file_full_name_tl }
+ }
+\cs_new_protected:Npn \file_if_exist_input:nF #1#2
+ {
+ \file_get_full_name:nNTF {#1} \l__file_full_name_tl
+ { \__file_input:V \l__file_full_name_tl }
+ {#2}
+ }
+\cs_new_protected:Npn \file_input_stop: { \tex_endinput:D }
\cs_new_protected:Npn \__kernel_file_missing:n #1
{
\__kernel_file_name_sanitize:nN {#1} \l__file_base_name_tl
@@ -25830,95 +25964,6 @@
}
\cs_new:Npn \fp_sign:n #1
{ \fp_to_decimal:n { sign \__fp_parse:n {#1} } }
-\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
- { \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
-\cs_new_protected:Npn \file_get_size:nN #1#2
- { \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
-\cs_new_protected:Npn \file_get_timestamp:nN #1#2
- { \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
-\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF }
- { \__file_get_details:nnN {#1} { mdfivesum } {#2} }
-\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF }
- { \__file_get_details:nnN {#1} { size } {#2} }
-\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF }
- { \__file_get_details:nnN {#1} { moddate } {#2} }
-\cs_new_protected:Npn \__file_get_details:nnN #1#2#3
- {
- \file_get_full_name:nNTF {#1} \l__file_full_name_tl
- {
- \tl_set:Nx #3
- {
- \use:c { tex_file #2 :D } \exp_after:wN
- { \l__file_full_name_tl }
- }
- \prg_return_true:
- }
- { \prg_return_false: }
- }
-\sys_if_engine_luatex:TF
- {
- \cs_set_protected:Npn \__file_get_details:nnN #1#2#3
- {
- \file_get_full_name:nNTF {#1} \l__file_full_name_tl
- {
- \tl_set:Nx #3
- {
- \lua_now:e
- {
- l3kernel.file#2
- ( " \lua_escape:e { \l__file_full_name_tl } " )
- }
- }
- \prg_return_true:
- }
- { \prg_return_false: }
- }
- }
- {
- \prg_set_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2
- { T , F , TF }
- {
- \file_get_full_name:nNTF {#1} \l__file_full_name_tl
- {
- \tl_set:Nx #2
- {
- \tex_mdfivesum:D file \exp_after:wN
- { \l__file_full_name_tl }
- }
- \prg_return_true:
- }
- { \prg_return_false: }
- }
- \cs_if_exist:NF \tex_filesize:D
- {
- \cs_set_protected:Npn \__file_get_details:nnN #1#2#3
- {
- \tl_clear:N #3
- \__kernel_msg_error:nnx
- { kernel } { primitive-not-available }
- { \exp_not:c { (pdf)file #2 } }
- \prg_return_false:
- }
- }
- }
-\__kernel_msg_new:nnnn { kernel } { primitive-not-available }
- { Primitive~\token_to_str:N #1 not~available }
- {
- The~version~of~XeTeX~in~use~does~not~provide~functionality~equivalent~to~
- the~\token_to_str:N #1 primitive.
- }
-\cs_new_protected:Npn \file_if_exist_input:n #1
- {
- \file_get_full_name:nNT {#1} \l__file_full_name_tl
- { \__file_input:V \l__file_full_name_tl }
- }
-\cs_new_protected:Npn \file_if_exist_input:nF #1#2
- {
- \file_get_full_name:nNTF {#1} \l__file_full_name_tl
- { \__file_input:V \l__file_full_name_tl }
- {#2}
- }
-\cs_new_protected:Npn \file_input_stop: { \tex_endinput:D }
\__kernel_patch:nnNNpn { \__flag_chk_exist:n {#1} } { }
\cs_new:Npn \flag_raise_if_clear:n #1
{
@@ -27549,47 +27594,6 @@
\char_set_lccode:nn { `* } { `\ }
\tex_lowercase:D { \tl_const:Nn \c_catcode_active_space_tl { * } }
\group_end:
-\group_begin:
- \cs_set_protected:Npn \__peek_tmp:w #1 \q_stop
- {
- \cs_new_protected:Npn \__peek_execute_branches_N_type:
- {
- \if_int_odd:w
- \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi:
- \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi:
- \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi:
- 1 \exp_stop_f:
- \exp_after:wN \__peek_N_type:w
- \token_to_meaning:N \l_peek_token
- \q_mark \__peek_N_type_aux:nnw
- #1 \q_mark \use_none_delimit_by_q_stop:w
- \q_stop
- \exp_after:wN \__peek_true:w
- \else:
- \exp_after:wN \__peek_false:w
- \fi:
- }
- \cs_new_protected:Npn \__peek_N_type:w ##1 #1 ##2 \q_mark ##3
- { ##3 {##1} {##2} }
- }
- \exp_after:wN \__peek_tmp:w \tl_to_str:n { outer } \q_stop
-\group_end:
-\cs_new_protected:Npn \__peek_N_type_aux:nnw #1 #2 #3 \fi:
- {
- \fi:
- \tl_if_in:noTF {#1} { \tl_to_str:n {ma} }
- { \__peek_true:w }
- { \tl_if_empty:nTF {#2} { \__peek_true:w } { \__peek_false:w } }
- }
-\cs_new_protected:Npn \peek_N_type:TF
- {
- \__peek_token_generic:NNTF
- \__peek_execute_branches_N_type: \scan_stop:
- }
-\cs_new_protected:Npn \peek_N_type:T
- { \__peek_token_generic:NNT \__peek_execute_branches_N_type: \scan_stop: }
-\cs_new_protected:Npn \peek_N_type:F
- { \__peek_token_generic:NNF \__peek_execute_branches_N_type: \scan_stop: }
\tl_new:N \l__peek_collect_tl
\cs_new_protected:Npn \peek_catcode_collect_inline:Nn
{ \__peek_collect:NNn \__peek_execute_branches_catcode: }
@@ -27637,6 +27641,15 @@
\tl_put_right:Nn \l__peek_collect_tl {#1}
\exp_after:wN \__peek_true_remove:w
}
+%% File: l3legacy.dtx
+\prg_new_conditional:Npnn \legacy_if:n #1 { p , T , F , TF }
+ {
+ \exp_args:Nc \if_meaning:w { if#1 } \iftrue
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
%% File: l3deprecation.dtx
\bool_new:N \l__deprecation_grace_period_bool
\cs_new:Npn \__deprecation_date_compare:nNnTF #1#2#3
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex 2019-05-03 22:30:06 UTC (rev 50972)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-04-21}%
+\def\ExplFileDate{2019-05-03}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/expl3.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-04-21}%
+\def\ExplFileDate{2019-05-03}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def 2019-05-03 22:30:06 UTC (rev 50972)
@@ -437,9 +437,14 @@
%% File: l3drivers-pdf.dtx
\tl_const:Nn \c__driver_pdf_AR_fix_tl
{ /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\box_new:N \l__driver_pdf_tmp_box
\cs_new_protected:Npx \__driver_pdf:n #1
{ \__driver_literal:n { pdf: #1 } }
\cs_generate_variant:Nn \__driver_pdf:n { x }
+\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2
+ { \__driver_pdf:n { put ~ @catalog << /#1 ~ #2 >> } }
+\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2
+ { \__driver_pdf:n { docinfo << /#1 ~ #2 >> } }
\int_new:N \g__driver_pdf_object_int
\prop_new:N \g__driver_pdf_object_prop
\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2
@@ -557,7 +562,60 @@
\cs_new_protected:Npn \driver_pdf_link_end:
{ \__driver_pdf:n { eann } }
\cs_new:Npn \driver_pdf_link_last: { }
-\cs_new_protected:Npn \driver_pdf_link_margin:n #1 { }
+\cs_new_protected:Npn \driver_pdf_link_margin:n #1
+ { \__driver_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
+\cs_new_protected:Npn \driver_pdf_destination:nn #1#2
+ {
+ \__driver_pdf:x
+ {
+ dest ~ ( \exp_not:n {#1} )
+ [
+ @thispage
+ \str_case:nnF {#2}
+ {
+ { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
+ { fit } { /Fit }
+ { fitb } { /FitB }
+ { fitbh } { /FitBH }
+ { fitbv } { /FitBV ~ @xpos }
+ { fith } { /FitH ~ @ypos }
+ { fitv } { /FitV ~ @xpos }
+ }
+ { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
+ ]
+ }
+ }
+\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l__driver_pdf_tmp_box {#2}
+ \box_move_down:nn { \box_dp:N \l__driver_pdf_tmp_box }
+ {
+ \hbox:n
+ {
+ \__driver_pdf:n { obj ~ @driver_#1_llx ~ @xpos }
+ \__driver_pdf:n { obj ~ @driver_#1_lly ~ @ypos }
+ }
+ }
+ \box_use:N \l__driver_pdf_tmp_box
+ \box_move_up:nn { \box_ht:N \l__driver_pdf_tmp_box }
+ {
+ \hbox:n
+ {
+ \__driver_pdf:n
+ {
+ dest ~ (#1)
+ [
+ @thispage
+ /FitR ~
+ @driver_#1_llx ~ @driver_#1_lly ~
+ @xpos ~ @ypos
+ ]
+ }
+ }
+ }
+ \group_end:
+ }
\cs_new_protected:Npn \driver_pdf_compresslevel:n #1
{ \__driver_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
\cs_new_protected:Npn \driver_pdf_objects_enable: { }
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def 2019-05-03 22:30:06 UTC (rev 50972)
@@ -39,8 +39,13 @@
\cs_new_protected:Npn \__driver_postscript:n #1
{ \__driver_literal:n { ps: SDict ~ begin ~ #1 ~ end } }
\cs_generate_variant:Nn \__driver_postscript:n { x }
-\cs_new_protected:Npn \__driver_postscript_header:n #1
- { \__driver_literal:n { ! #1 } }
+\cs_new_protected:Npx \__driver_postscript_header:n #1
+ {
+ \cs_if_exist:NTF \AtBeginDvi
+ { \exp_not:N \AtBeginDvi }
+ { \use:n }
+ { \__driver_literal:n { ! #1 } }
+ }
\cs_new_protected:Npn \__driver_align_currentpoint_begin:
{
\__driver_literal:n { ps::[begin] }
@@ -413,6 +418,14 @@
%% File: l3drivers-pdf.dtx
\tl_const:Nn \c__driver_pdf_AR_fix_tl
{ /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\box_new:N \l__driver_pdf_tmp_box
+\cs_new_protected:Npn \__driver_pdfmark:n #1
+ { \__driver_postscript:n { mark #1 ~ pdfmark } }
+\cs_generate_variant:Nn \__driver_pdfmark:n { x }
+\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2
+ { \__driver_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } }
+\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2
+ { \__driver_pdfmark:n { /#1 ~ #2 /DOCINFO } }
\int_new:N \g__driver_pdf_object_int
\prop_new:N \g__driver_pdf_object_prop
\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2
@@ -419,17 +432,17 @@
{
\int_gincr:N \g__driver_pdf_object_int
\int_const:cn
- { g__driver_pdf_object_ \tl_to_str:n {#1} _int }
+ { c__driver_pdf_object_ \tl_to_str:n {#1} _int }
{ \g__driver_pdf_object_int }
\prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2}
}
\cs_new:Npn \driver_pdf_object_ref:n #1
- { { driver.obj \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } } }
+ { { driver.obj \int_use:c { c__driver_pdf_object_ \tl_to_str:n {#1} _int } } }
\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2
{
- \__driver_postscript:x
+ \__driver_pdfmark:x
{
- mark /_objdef ~ \driver_pdf_object_ref:n {#1}
+ /_objdef ~ \driver_pdf_object_ref:n {#1}
/type
\str_case_e:nn
{ \prop_item:Nn \g__driver_pdf_object_prop {#1} }
@@ -439,7 +452,7 @@
{ fstream } { /stream }
{ stream } { /stream }
}
- /OBJ ~ pdfmark
+ /OBJ
}
\use:c
{ __driver_pdf_object_write_ \prop_item:Nn \g__driver_pdf_object_prop {#1} :nn }
@@ -447,18 +460,18 @@
}
\cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2
{
- \__driver_postscript:x
+ \__driver_pdfmark:x
{
- mark ~ \driver_pdf_object_ref:n {#1}
- [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL ~ pdfmark
+ \driver_pdf_object_ref:n {#1}
+ [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL
}
}
\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2
{
- \__driver_postscript:x
+ \__driver_pdfmark:x
{
- mark ~ \driver_pdf_object_ref:n {#1}
- << \exp_not:n {#2} >> /PUT ~ pdfmark
+ \driver_pdf_object_ref:n {#1}
+ << \exp_not:n {#2} >> /PUT
}
}
\cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2
@@ -486,6 +499,7 @@
\__driver_postscript_header:n
{
/driver.cvs { 65534 ~ string ~ cvs } def
+ /driver.dvi.pt { 72.27 ~ mul ~ Resolution ~ div } def
/driver.pt.dvi { 72.27 ~ div ~ Resolution ~ mul } def
/driver.rect.ht { dup ~ 1 ~ get ~ neg ~ exch ~ 3 ~ get ~ add } def
}
@@ -497,9 +511,9 @@
}
\__driver_postscript_header:n
{
- /driver.annotation.border
+ /driver.rect
{ /Rect [ driver.llx ~ driver.lly ~ driver.urx ~ driver.ury ] } def
- /driver.annotation.ll
+ /driver.save.ll
{
currentpoint
/driver.lly ~ exch ~ def
@@ -506,7 +520,7 @@
/driver.llx ~ exch ~ def
}
def
- /driver.annotation.ur
+ /driver.save.ur
{
currentpoint
/driver.ury ~ exch ~ def
@@ -513,7 +527,7 @@
/driver.urx ~ exch ~ def
}
def
- /driver.link.ll
+ /driver.save.linkll
{
currentpoint ~
driver.linkmargin ~ add ~
@@ -523,7 +537,7 @@
/driver.llx ~ exch ~ def
}
def
- /driver.link.ur
+ /driver.save.linkur
{
currentpoint ~
driver.linkmargin ~ sub ~
@@ -536,6 +550,44 @@
}
\__driver_postscript_header:n
{
+ /driver.dest.anchor
+ {
+ currentpoint ~ exch ~
+ driver.dvi.pt ~ 72 ~ add ~
+ /driver.dest.x ~ exch ~ def ~
+ driver.dvi.pt ~
+ vsize ~ 72 ~ sub ~ exch ~ sub ~
+ /driver.dest.y ~ exch ~ def
+ }
+ def
+ /driver.dest.point
+ { driver.dest.x ~ driver.dest.y } def
+ /driver.dest2device
+ {
+ /driver.dest.y ~ exch ~ def
+ /driver.dest.x ~ exch ~ def ~
+ matrix ~ currentmatrix ~
+ matrix ~ defaultmatrix ~
+ matrix ~ invertmatrix ~
+ matrix ~ concatmatrix ~
+ cvx ~ exec
+ /driver.dev.y ~ exch ~ def
+ /driver.dev.x ~ exch ~ def
+ /driver.tmpd ~ exch ~ def
+ /driver.tmpc ~ exch ~ def
+ /driver.tmpb ~ exch ~ def
+ /driver.tmpa ~ exch ~ def ~
+ driver.dest.x ~ driver.tmpa ~ mul ~
+ driver.dest.y ~ driver.tmpc ~ mul ~ add ~
+ driver.dev.x ~ add ~
+ driver.dest.x ~ driver.tmpb ~ mul ~
+ driver.dest.y ~ driver.tmpd ~ mul ~ add ~
+ driver.dev.y ~ add
+ }
+ def
+ }
+\__driver_postscript_header:n
+ {
/driver.bordertracking ~ false ~ def
/driver.bordertracking.begin
{
@@ -640,7 +692,7 @@
currentpoint ~ driver.originy ~ ne ~ exch ~
driver.originx ~ ne ~ or
{
- driver.link.ll
+ driver.save.linkll
/driver.lly ~
driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~
driver.bordertracking.begin
@@ -661,7 +713,7 @@
currentpoint ~
driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or
{
- driver.link.ll
+ driver.save.linkll
/driver.lly ~
driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~
driver.bordertracking.begin
@@ -838,19 +890,19 @@
\__driver_pdf_annotation:nnnn {#1} {#2} {#3} {#4}
\int_gincr:N \g__driver_pdf_object_int
\int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int
- \__driver_postscript:x
+ \__driver_pdfmark:x
{
- mark
- /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int }
- driver.annotation.border ~
- #4 ~
- /ANN ~ pdfmark
+
+ /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int }
+ driver.rect ~
+ #4 ~
+ /ANN
}
}
\cs_new_protected:Npn \__driver_pdf_annotation:nnnn #1#2#3#4
{
\box_move_down:nn {#3}
- { \hbox:n { \__driver_postscript:n { driver.annotation.ll } } }
+ { \hbox:n { \__driver_postscript:n { driver.save.ll } } }
\hbox:n {#4}
\box_move_up:nn {#2}
{
@@ -857,18 +909,17 @@
\hbox:n
{
\tex_kern:D \dim_eval:n {#1} \scan_stop:
- \__driver_postscript:n { driver.annotation.ur }
+ \__driver_postscript:n { driver.save.ur }
}
}
\int_gincr:N \g__driver_pdf_object_int
\int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int
- \__driver_postscript:x
+ \__driver_pdfmark:x
{
- mark
- /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int }
- driver.annotation.border ~
- \c__driver_pdf_AR_fix_tl
- /ANN ~ pdfmark
+ /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int }
+ driver.rect ~
+ \c__driver_pdf_AR_fix_tl
+ /ANN
}
}
\cs_new:Npn \driver_pdf_annotation_last:
@@ -933,7 +984,7 @@
{ \evensidemargin }
}
\box_move_down:nn { \box_dp:N \l__driver_pdf_content_box }
- { \hbox:n { \__driver_postscript:n { driver.link.ll } } }
+ { \hbox:n { \__driver_postscript:n { driver.save.linkll } } }
\__driver_postscript:n { driver.bordertracking.begin }
\hbox_unpack:N \l__driver_pdf_content_box
\__driver_postscript:n { driver.bordertracking.end }
@@ -940,13 +991,13 @@
\box_move_up:nn { \box_ht:N \l__driver_pdf_content_box }
{
\hbox:n
- { \__driver_postscript:n { driver.link.ur } }
+ { \__driver_postscript:n { driver.save.linkur } }
}
\__driver_postscript:x
{
mark
\g__driver_pdf_link_dict_tl /Subtype /Link ~
- driver.annotation.border
+ driver.rect
/ANN ~ driver.pdfmark
}
\__driver_pdf_link_sf_restore:
@@ -1044,6 +1095,55 @@
/driver.linkmargin { \dim_to_decimal:n {#1} ~ driver.pt.dvi } def
}
}
+\cs_new_protected:Npn \driver_pdf_destination:nn #1#2
+ {
+ \__driver_postscript:n { driver.dest.anchor }
+ \__driver_pdfmark:x
+ {
+ /View
+ [
+ \str_case:nnF {#2}
+ {
+ { xyz } { /XYZ ~ driver.dest.point ~ null }
+ { fit } { /Fit }
+ { fitb } { /FitB }
+ { fitbh } { /FitBH ~ driver.dest.y }
+ { fitbv } { /FitBV ~ driver.dest.x }
+ { fith } { /FitH ~ driver.dest.y }
+ { fitv } { /FitV ~ driver.dest.x }
+ }
+ {
+ /XYZ ~ driver.dest.point ~ \fp_eval:n { (#2) / 100 }
+ }
+ ]
+ /Dest ( \exp_not:n {#1} ) cvn
+ /DEST
+ }
+ }
+\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l__driver_pdf_tmp_box {#2}
+ \box_move_down:nn
+ { \box_dp:N \l__driver_pdf_tmp_box }
+ { \hbox:n { \__driver_postscript:n { driver.save.ll } } }
+ \box_use:N \l__driver_pdf_tmp_box
+ \box_move_up:nn
+ { \box_ht:N \l__driver_pdf_tmp_box }
+ { \hbox:n { \__driver_postscript:n { driver.save.ur } } }
+ \__driver_pdfmark:n
+ {
+ /View
+ [
+ /FitR ~
+ driver.llx ~ driver.lly ~ driver.dest2device ~
+ driver.urx ~ driver.ury ~ driver.dest2device
+ ]
+ /Dest ( #1 ) cvn
+ /DEST
+ }
+ \group_end:
+ }
\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { }
\cs_new_protected:Npn \driver_pdf_objects_enable: { }
\cs_new_protected:Npn \driver_pdf_objects_disable: { }
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def 2019-05-03 22:30:06 UTC (rev 50972)
@@ -469,6 +469,9 @@
%% File: l3drivers-pdf.dtx
\tl_const:Nn \c__driver_pdf_AR_fix_tl
{ /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\box_new:N \l__driver_pdf_tmp_box
+\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 { }
+\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 { }
\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 { }
\cs_new:Npn \driver_pdf_object_ref:n #1 { }
\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { }
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def 2019-05-03 22:30:06 UTC (rev 50972)
@@ -424,6 +424,7 @@
%% File: l3drivers-pdf.dtx
\tl_const:Nn \c__driver_pdf_AR_fix_tl
{ /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\box_new:N \l__driver_pdf_tmp_box
\cs_new_protected:Npx \__driver_pdf_AR_fix:
{
\cs_if_exist:NTF \tex_pdfextension:D
@@ -485,6 +486,54 @@
{ \exp_not:N \tex_pdflinkmargin:D }
\exp_not:N \dim_eval:n {#1} \scan_stop:
}
+\cs_new_protected:Npx \driver_pdf_destination:nn #1#2
+ {
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \exp_not:N \tex_pdfextension:D dest ~ }
+ { \exp_not:N \tex_pdfdest:D }
+ name {#1}
+ \exp_not:N \str_case:nnF {#2}
+ {
+ { xyz } { xyz }
+ { fit } { fit }
+ { fitb } { fitb }
+ { fitbh } { fitbh }
+ { fitbv } { fitbv }
+ { fith } { fith }
+ { fitv } { fitv }
+ }
+ { xyz ~ zoom \exp_not:N \fp_eval:n { #2 * 10 } }
+ \scan_stop:
+ }
+\cs_new_protected:Npx \driver_pdf_destination_rectangle:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l__driver_pdf_tmp_box {#2}
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \exp_not:N \tex_pdfextension:D dest ~ }
+ { \exp_not:N \tex_pdfdest:D }
+ name {#1}
+ fitr ~
+ width \exp_not:N \box_wd:N \l__driver_pdf_tmp_box
+ height \exp_not:N \box_ht:N \l__driver_pdf_tmp_box
+ depth \exp_not:N \box_dp:N \l__driver_pdf_tmp_box
+ \box_use:N \l__driver_pdf_tmp_box
+ \group_end:
+ }
+\cs_new_protected:Npx \driver_pdf_catalog_gput:nn #1#2
+ {
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \tex_pdfextension:D catalog }
+ { \tex_pdfcatalog:D }
+ { / #1 ~ #2 }
+ }
+\cs_new_protected:Npx \driver_pdf_info_gput:nn #1#2
+ {
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \tex_pdfextension:D info }
+ { \tex_pdfinfo:D }
+ { / #1 ~ #2 }
+ }
\prop_new:N \g__driver_pdf_object_prop
\group_begin:
\cs_set_protected:Npn \__driver_tmp:w #1#2
@@ -493,7 +542,7 @@
{
#1 reserveobjnum ~
\int_const:cn
- { g__driver_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int }
+ { c__driver_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int }
{#2}
\prop_gput:Nnn \exp_not:N \g__driver_pdf_object_prop {##1} {##2}
}
@@ -502,12 +551,12 @@
{
\__driver_tmp:w
{ \tex_pdfextension:D obj ~ }
- { \tex_pdffeedback:D lastobj \scan_stop: }
+ { \exp_not:N \tex_pdffeedback:D lastobj \scan_stop: }
}
{ \__driver_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
\group_end:
\cs_new:Npn \driver_pdf_object_ref:n #1
- { \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
+ { \int_use:c { c__driver_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
\group_begin:
\cs_set_protected:Npn \__driver_tmp:w #1
{
@@ -515,7 +564,7 @@
{
\tex_immediate:D #1 useobjnum ~
\int_use:c
- { g__driver_pdf_object_ \tl_to_str:n {##1} _int }
+ { c__driver_pdf_object_ \tl_to_str:n {##1} _int }
\str_case_e:nn
{ \prop_item:Nn \g__driver_pdf_object_prop {##1} }
{
Modified: trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def 2019-05-03 22:30:06 UTC (rev 50972)
@@ -480,9 +480,14 @@
%% File: l3drivers-pdf.dtx
\tl_const:Nn \c__driver_pdf_AR_fix_tl
{ /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\box_new:N \l__driver_pdf_tmp_box
\cs_new_protected:Npx \__driver_pdf:n #1
{ \__driver_literal:n { pdf: #1 } }
\cs_generate_variant:Nn \__driver_pdf:n { x }
+\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2
+ { \__driver_pdf:n { put ~ @catalog << /#1 ~ #2 >> } }
+\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2
+ { \__driver_pdf:n { docinfo << /#1 ~ #2 >> } }
\int_new:N \g__driver_pdf_object_int
\prop_new:N \g__driver_pdf_object_prop
\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2
@@ -600,7 +605,60 @@
\cs_new_protected:Npn \driver_pdf_link_end:
{ \__driver_pdf:n { eann } }
\cs_new:Npn \driver_pdf_link_last: { }
-\cs_new_protected:Npn \driver_pdf_link_margin:n #1 { }
+\cs_new_protected:Npn \driver_pdf_link_margin:n #1
+ { \__driver_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
+\cs_new_protected:Npn \driver_pdf_destination:nn #1#2
+ {
+ \__driver_pdf:x
+ {
+ dest ~ ( \exp_not:n {#1} )
+ [
+ @thispage
+ \str_case:nnF {#2}
+ {
+ { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
+ { fit } { /Fit }
+ { fitb } { /FitB }
+ { fitbh } { /FitBH }
+ { fitbv } { /FitBV ~ @xpos }
+ { fith } { /FitH ~ @ypos }
+ { fitv } { /FitV ~ @xpos }
+ }
+ { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
+ ]
+ }
+ }
+\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
+ {
+ \group_begin:
+ \hbox_set:Nn \l__driver_pdf_tmp_box {#2}
+ \box_move_down:nn { \box_dp:N \l__driver_pdf_tmp_box }
+ {
+ \hbox:n
+ {
+ \__driver_pdf:n { obj ~ @driver_#1_llx ~ @xpos }
+ \__driver_pdf:n { obj ~ @driver_#1_lly ~ @ypos }
+ }
+ }
+ \box_use:N \l__driver_pdf_tmp_box
+ \box_move_up:nn { \box_ht:N \l__driver_pdf_tmp_box }
+ {
+ \hbox:n
+ {
+ \__driver_pdf:n
+ {
+ dest ~ (#1)
+ [
+ @thispage
+ /FitR ~
+ @driver_#1_llx ~ @driver_#1_lly ~
+ @xpos ~ @ypos
+ ]
+ }
+ }
+ }
+ \group_end:
+ }
\cs_new_protected:Npn \driver_pdf_compresslevel:n #1
{ \__driver_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
\cs_new_protected:Npn \driver_pdf_objects_enable: { }
Modified: trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3keys2e}{2019-03-05}{}
+\ProvidesExplPackage{l3keys2e}{2019-05-03}{}
{LaTeX2e option processing using LaTeX3 keys}
\cs_generate_variant:Nn \clist_put_right:Nn { Nv }
\cs_generate_variant:Nn \keys_if_exist:nnT { nx }
Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -33,7 +33,7 @@
\endinput
}
\RequirePackage{xparse}
-\ProvidesExplPackage{xfp}{2019-03-05}{}
+\ProvidesExplPackage{xfp}{2019-05-03}{}
{L3 Floating point unit}
\NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
\NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} }
Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -33,7 +33,7 @@
\endinput
}
\RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate}
-\ProvidesExplPackage{xfrac}{2019-03-05}{}
+\ProvidesExplPackage{xfrac}{2019-05-03}{}
{L3 Experimental split-level fractions}
\keys_define:nn { xfrac }
{
Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{xparse}{2019-03-05}{}
+\ProvidesExplPackage{xparse}{2019-05-03}{}
{L3 Experimental document command parser}
\tl_new:N \l__xparse_arg_spec_tl
\tl_new:N \l__xparse_args_tl
@@ -238,6 +238,7 @@
}
\cs_new_protected:Npn \__xparse_start_env:nnnnn #1#2
{
+ \cs_if_exist_use:N \conditionally at traceoff
\str_set:Nn \l__xparse_environment_str {#2}
\bool_set_true:N \l__xparse_environment_bool
\__xparse_start_aux:ccnnnn
@@ -247,6 +248,7 @@
}
\cs_new_protected:Npx \__xparse_start:nNNnnn #1#2#3
{
+ \exp_not:n { \cs_if_exist_use:N \conditionally at traceoff }
\exp_not:c { xparse~function~is~not~expandable }
\exp_not:n { \bool_set_false:N \l__xparse_environment_bool }
\exp_not:N \__xparse_start_aux:NNnnnn
@@ -266,6 +268,7 @@
{
\tl_if_empty:NF \l__xparse_defaults_tl { \__xparse_defaults: }
\tl_if_empty:NF \l__xparse_process_all_tl { \__xparse_args_process: }
+ \cs_if_exist_use:N \conditionally at traceon
\exp_after:wN \l__xparse_fn_code_tl \l__xparse_args_tl
}
\cs_new_protected:Npn \__xparse_defaults:
Modified: trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty 2019-05-03 22:29:09 UTC (rev 50971)
+++ trunk/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty 2019-05-03 22:30:06 UTC (rev 50972)
@@ -32,7 +32,7 @@
}%
\endinput
}
-\ProvidesExplPackage{xtemplate}{2019-03-05}{}
+\ProvidesExplPackage{xtemplate}{2019-05-03}{}
{L3 Experimental prototype document functions}
\tl_const:Nn \c__xtemplate_code_root_tl { template~code~>~ }
\tl_const:Nn \c__xtemplate_defaults_root_tl { template~defaults~>~ }
More information about the tex-live-commits
mailing list