summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-05-28 21:24:36 +0000
committerKarl Berry <karl@freefriends.org>2019-05-28 21:24:36 +0000
commit0411921af7908fa9daf388b67db154e9fc51caca (patch)
treef5405f2fef2bc7b0ae9eb9c8809377b88d70c760 /Master/texmf-dist/source/latex/l3kernel
parentc55b67ba30f320ddfc93fbdca08cab7512704011 (diff)
l3 (28may19)
git-svn-id: svn://tug.org/texlive/trunk@51248 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx119
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx88
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx52
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx19
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3final.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx81
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx2
58 files changed, 352 insertions, 137 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 7ddce6aa8ac..72c1d220e18 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -23,7 +23,7 @@
% for those people who are interested.
%
%<*driver|generic|package>
-\def\ExplFileDate{2019-05-09}%
+\def\ExplFileDate{2019-05-28}%
%</driver|generic|package>
%<*driver>
\documentclass[full]{l3doc}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
index f41ceae0743..01fcdcf977e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3alloc.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 659c9f20ef8..188fbfd0f8d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index 88605016fd7..ffda0047028 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index ec3fd41f603..91eb4593b05 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index 04ed6e0321e..de5a5011bb8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -299,6 +299,25 @@
%
% \section{Additions to \pkg{l3file}}
%
+% \begin{function}[added = 2019-05-13, TF]{\file_compare_timestamp:nNn}
+% \begin{syntax}
+% \cs{file_compare_timestamp:nNn} \Arg{file-1} \meta{comparator} \Arg{file-2} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Compares the file stamps on the two \meta{files} as indicated by
+% the \meta{comparator}, and inserts either the \meta{true code}
+% or \meta{false case} as required. A file which is not found
+% is treated as older than any file which is found.This allows for
+% example the construct
+% \begin{verbatim}
+% \file_compare_timestamp:nNnT { source-file } > { derived-file }
+% {
+% % Code to regenerate derived file
+% }
+% \end{verbatim}
+% to work when the derived file is entirely absent. The timestamp
+% of two absent files is regarded as different.
+% \end{function}
+%
% \begin{function}[added = 2019-01-13]{\ior_map_variable:NNn}
% \begin{syntax}
% \cs{ior_map_variable:NNn} \meta{stream} \meta{tl~var} \Arg{code}
@@ -2346,6 +2365,104 @@
% \subsection{Additions to \pkg{l3file}}
%
% \begin{macrocode}
+%<@@=file>
+% \end{macrocode}
+%
+% \begin{macro}[EXP]{\@@_str_cmp:nn}
+% \begin{macro}[EXP]{\@@_str_escape:n}
+% As we are doing a fixed-length \enquote{big} integer comparison, it
+% is easiest to use the low-level behavior of string comparisons.
+% \begin{macrocode}
+\cs_new:Npn \@@_str_cmp:nn #1#2 { \tex_strcmp:D {#1} {#2} }
+\sys_if_engine_luatex:T
+ {
+ \cs_set:Npn \@@_str_cmp:nn #1#2
+ {
+ \lua_now:e
+ {
+ l3kernel.strcmp
+ (
+ " \@@_str_escape:n {#1}",
+ " \@@_str_escape:n {#2}"
+ )
+ }
+ }
+ \cs_new:Npn \@@_str_escape:n #1
+ {
+ \lua_escape:e
+ { \__kernel_tl_to_str:w \use:e { {#1} } }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_first_tl, \l_@@_second_tl}
+% \begin{macrocode}
+\tl_new:N \l_@@_first_tl
+\tl_new:N \l_@@_second_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[TF]{\file_compare_timestamp:nNn}
+% \begin{macro}[EXP]{\@@_timestamp:n}
+% Comparison of file date can be done by using the low-level nature of the
+% string comparison functions. This could be expandable but that would
+% skip any file look-up: to stay consistent we retain that at the cost of
+% expansion.
+% \begin{macrocode}
+\prg_new_protected_conditional:Npnn \file_compare_timestamp:nNn #1#2#3
+ { T , F , TF }
+ {
+ \group_begin:
+ \file_get_full_name:nNTF {#1} \l_@@_first_tl
+ {
+ \file_get_full_name:nNTF {#3} \l_@@_second_tl
+ {
+ \if_int_compare:w
+ \@@_str_cmp:nn
+ { \@@_timestamp:n \exp_after:wN { \l_@@_first_tl } }
+ { \@@_timestamp:n \exp_after:wN { \l_@@_second_tl } }
+ #2 0 \exp_stop_f:
+ \group_end:
+ \prg_return_true:
+ \else:
+ \group_end:
+ \prg_return_false:
+ \fi:
+ }
+ {
+ \group_end:
+ \if_charcode:w #2 >
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+ {
+ \group_end:
+ \if_charcode:w #2 <
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+ }
+\sys_if_engine_luatex:TF
+ {
+ \cs_new:Npn \@@_timestamp:n #1
+ {
+ \lua_now:e
+ { l3kernel.filemoddate ( " \lua_escape:e {#1} " ) }
+ }
+ }
+ { \cs_new_eq:NN \@@_timestamp:n \tex_filemoddate:D }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
%<@@=ior>
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 4b1444782d1..fe91c5a5baf 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index 38f3cd371d8..0aaadefe1a0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
index 393ea0f2fe5..0773fc95a4a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color-base.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index ce931f0e165..12b990b8d53 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index ebbb552a31d..1bbc500dc1a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -79,7 +79,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
% \maketitle
% \tableofcontents
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index b648dd93179..9265e066746 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
index e02738d08f1..2ff21a9d65b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
index 3a7728c5b6e..945a93dc6ef 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
index ae4cde421ce..4d5c22462ca 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
index 5bdcb3bddc2..1e213647b46 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx
index 555b394ae15..86bfcfeb1f7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -108,9 +108,9 @@
% \end{macrocode}
%
% \begin{variable}{\l_@@_graphics_attr_tl}
-% In PDF mode, additional attributes of an image (such as page number) are
-% needed both to obtain the bounding box and when inserting the image: this
-% occurs as the image dictionary approach means they are read as part of
+% In PDF mode, additional attributes of an graphic (such as page number) are
+% needed both to obtain the bounding box and when inserting the graphic: this
+% occurs as the graphic dictionary approach means they are read as part of
% the bounding box operation. As such, it is easier to track additional
% attributes using a dedicated |tl| rather than build up the same data
% twice.
@@ -127,9 +127,9 @@
% }
% \begin{macro}
% {\@@_graphics_getbb_auxi:n, \@@_graphics_getbb_auxii:n}
-% Getting the bounding box here requires us to box up the image and
+% Getting the bounding box here requires us to box up the graphic and
% measure it. To deal with the difference in feature support in bitmap
-% and vector images but keeping the common parts, there is a little work
+% and vector graphics but keeping the common parts, there is a little work
% to do in terms of auxiliaries. The key here is to notice that we need
% two forms of the attributes: a \enquote{short} set to allow us to
% track for caching, and the full form to pass to the primitive.
@@ -167,7 +167,7 @@
{ \@@_graphics_getbb_auxii:n {#1} }
}
% \begin{macrocode}
-% Measuring the image is done by boxing up: for PDF images we could
+% Measuring the graphic is done by boxing up: for PDF graphics we could
% use |\tex_pdfximagebbox:D|, but if doesn't work for other types.
% As the box always starts at $(0,0)$ there is no need to worry about
% the lower-left position.
@@ -224,6 +224,60 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\driver_graphics_getbb_eps:n}
+% \begin{macro}{\@@_graphics_getbb_eps:nm}
+% \begin{macro}{\driver_graphics_include_eps:n}
+% \begin{variable}{\l_@@_dir_str, \l_@@_name_str, \l_@@_ext_str}
+% EPS graphics may be included in \texttt{pdfmode} by conversion to
+% PDF: this requires restricted shell escape. Modelled on the \pkg{epstopdf}
+% \LaTeXe{} package, but simplified, conversion takes place here if we have
+% shell access.
+% \begin{macrocode}
+\sys_if_shell:T
+ {
+ \str_new:N \l_@@_dir_str
+ \str_new:N \l_@@_name_str
+ \str_new:N \l_@@_ext_str
+ \cs_new_protected:Npn \driver_graphics_getbb_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l_@@_dir_str
+ \l_@@_name_str
+ \l_@@_ext_str
+ \exp_args:Nx \@@_graphics_getbb_eps:nn
+ {
+ \l_@@_name_str - \str_tail:N \l_@@_ext_str
+ -converted-to.pdf
+ }
+ {#1}
+ }
+ \cs_new_protected:Npn \@@_graphics_getbb_eps:nn #1#2
+ {
+ \file_compare_timestamp:nNnT {#2} > {#1}
+ {
+ \sys_shell_now:n
+ { repstopdf ~ #2 ~ #1 }
+ }
+ \tl_set:Nn \l_graphics_name_tl {#1}
+ \driver_graphics_getbb_pdf:n {#1}
+ }
+ \cs_new_protected:Npn \driver_graphics_include_eps:n #1
+ {
+ \file_parse_full_name:nNNN {#1}
+ \l_@@_dir_str \l_@@_name_str \l_@@_ext_str
+ \exp_args:Nx \driver_graphics_include_pdf:n
+ {
+ \l_@@_name_str - \str_tail:N \l_@@_ext_str
+ -converted-to.pdf
+ }
+ }
+ }
+% \end{macrocode}
+% \end{variable}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</pdfmode>
% \end{macrocode}
@@ -268,7 +322,7 @@
% \end{macro}
%
% \begin{variable}{\g_@@_graphics_int}
-% Used to track the object number associated with each image.
+% Used to track the object number associated with each graphic.
% \begin{macrocode}
\int_new:N \g_@@_graphics_int
% \end{macrocode}
@@ -283,7 +337,7 @@
% \begin{macro}{\@@_graphics_include_auxii:nnn, \@@_graphics_include_auxii:xnn}
% \begin{macro}{\@@_graphics_include_auxiii:nnn}
% The special syntax depends on the file type. There is a difference in
-% how PDF images are best handled between |dvipdfmx| and |xdvipdfmx|: for
+% how PDF graphics are best handled between |dvipdfmx| and |xdvipdfmx|: for
% the latter it is better to use the primitive route. The relevant code for
% that is included later in this file.
% \begin{macrocode}
@@ -306,7 +360,7 @@
{ \@@_graphics_include_auxi:nn {#1} { epdf } }
%</dvipdfmx>
% \end{macrocode}
-% Image inclusion is set up to use the fact that each image is stored in
+% Graphic inclusion is set up to use the fact that each image is stored in
% the PDF as an XObject. This means that we can include repeated images
% only once and refer to them. To allow that, track the nature of each
% image: much the same as for the direct PDF mode case.
@@ -331,14 +385,14 @@
\int_if_exist:cTF { c_@@_graphics_ #2#1 _int }
{
\@@_literal:x
- { pdf:usexobj~@image \int_use:c { c_@@_graphics_ #2#1 _int } }
+ { pdf:usexobj~@graphic \int_use:c { c_@@_graphics_ #2#1 _int } }
}
{ \@@_graphics_include_auxiii:nnn {#2} {#1} {#3} }
}
\cs_generate_variant:Nn \@@_graphics_include_auxii:nnn { x }
% \end{macrocode}
% Inclusion using the specials is relatively straight-forward, but there
-% is one wrinkle. To get the |pagebox| correct for PDF images in all cases,
+% is one wrinkle. To get the |pagebox| correct for PDF graphics in all cases,
% it is necessary to provide both that information and the |bbox| argument:
% odd things happen otherwise!
% \begin{macrocode}
@@ -349,7 +403,7 @@
\@@_literal:x
{
pdf:#3~
- @image \int_use:c { c_@@_graphics_ #1#2 _int } ~
+ @graphic \int_use:c { c_@@_graphics_ #1#2 _int } ~
\int_compare:nNnT \l_graphics_page_int > 1
{ page ~ \int_use:N \l_graphics_page_int \c_space_tl }
\tl_if_empty:NF \l_graphics_pagebox_tl
@@ -473,9 +527,9 @@
%
% \begin{macro}{\driver_graphics_include_pdf:n}
% \begin{macro}{\@@_graphics_include_bitmap_quote:w}
-% For PDF images, properly supporting the |pagebox| concept in \XeTeX{}
+% For PDF graphics, properly supporting the |pagebox| concept in \XeTeX{}
% is best done using the |\tex_XeTeXpdffile:D| primitive. The syntax here
-% is the same as for the image measurement part, although we know at this
+% is the same as for the graphic measurement part, although we know at this
% stage that there must be some valid setting for \cs{l_graphics_pagebox_tl}.
% \begin{macrocode}
\cs_new_protected:Npn \driver_graphics_include_pdf:n #1
@@ -520,9 +574,9 @@
%
% \begin{macro}{\driver_graphics_include_png:n, \driver_graphics_include_jpg:n}
% \begin{macro}{\@@_graphics_include_bitmap_quote:w}
-% The driver here has built-in support for basic image inclusion (see
+% The driver here has built-in support for basic graphic inclusion (see
% \texttt{dvisvgm.def} for a more complex approach, needed if clipping,
-% \emph{etc.}, is covered at the image driver level). The only issue is
+% \emph{etc.}, is covered at the graphic driver level). The only issue is
% that |#1| must be quote-corrected. The \texttt{dvisvgm:img} operation
% quotes the file name, but if it is already quoted (contains spaces)
% then we have an issue: we simply strip off any quotes as a result.
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
index 50215d5bf8f..62a3bea1119 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -630,6 +630,19 @@
def
/driver.breaklink.write
{
+ counttomark ~ 1 ~ sub ~
+ index /_objdef ~ eq
+ {
+ counttomark ~ -2 ~ roll ~
+ dup ~ wcheck ~
+ {
+ readonly ~
+ counttomark ~ 2 ~ roll
+ }
+ { pop ~ pop }
+ ifelse
+ }
+ if ~
counttomark ~ 1 ~ add ~ copy ~
pop ~ driver.currentrect
/ANN ~ pdfmark
@@ -645,8 +658,7 @@
% driver.pdfmark.good ,
% driver.outerbox ,
% driver.baselineskip ,
-% driver.pdfmark.dict ,
-% driver.pdfmark.obj
+% driver.pdfmark.dict
% }
% The business end of breaking links starts by hooking into |pdfmarks|.
% Unlike \pkg{hypdvips}, we avoid altering any links we have not created
@@ -676,11 +688,9 @@
Rect ~ 1 ~ get ~ sub ~
driver.baselineskip ~ div ~ round ~ cvi ~ 0 ~ gt
{ driver.breaklink }
- { driver.pdfmark.obj }
- ifelse
+ if
}
- { driver.pdfmark.obj }
- ifelse ~
+ if ~
end ~
SDict /driver.outerbox ~ undef ~
SDict /driver.baselineskip ~ undef ~
@@ -713,8 +723,6 @@
loop
}
def
- /driver.pdfmark.obj
- { /_objdef ~ exch ~ driver.link.obj ~ exch } def
}
% \end{macrocode}
% \end{macro}
@@ -835,22 +843,18 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_breaklink_obj_tl, \l_@@_breaklink_pdfmark_tl}
+% \begin{variable}{\l_@@_breaklink_pdfmark_tl}
% Swappable content for link breaking.
% \begin{macrocode}
-\tl_new:N \l_@@_breaklink_obj_tl
-\tl_set:Nn \l_@@_breaklink_obj_tl
- { /_objdef ~ { driver.obj \int_use:N \g_@@_pdf_link_int } }
\tl_new:N \l_@@_breaklink_pdfmark_tl
\tl_set:Nn \l_@@_breaklink_pdfmark_tl { pdfmark }
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_breaklink_postscript:n, \@@_breaklink_postscript:x}
+% \begin{macro}{\@@_breaklink_postscript:n}
% To allow dropping material unless link breaking is active.
% \begin{macrocode}
\cs_new_protected:Npn \@@_breaklink_postscript:n #1 { }
-\cs_generate_variant:Nn \@@_breaklink_postscript:n { x }
% \end{macrocode}
% \end{macro}
%
@@ -861,7 +865,6 @@
% \end{macrocode}
% \end{macro}
%
-%
% \begin{macro}{\driver_pdf_link_begin_goto:nnw, \driver_pdf_link_begin_user:nnw}
% \begin{macro}{\@@_pdf_link:nw, \@@_pdf_link_aux:nw}
% \begin{macro}{\driver_pdf_link_end:, \@@_pdf_link_end:}
@@ -875,7 +878,6 @@
% driver.llx, driver.lly ,
% driver.ury, driver.ury ,
% driver.link.dict ,
-% driver.link.obj ,
% driver.outerbox ,
% driver.baselineskip
% }
@@ -912,7 +914,6 @@
\cs_new_protected:Npn \@@_pdf_link_begin_aux:nw #1
{
\bool_gset_true:N \g_@@_pdf_link_bool
- \@@_pdf_annotation:nnnn { 3pt } { 3pt } { 0pt } { }
\@@_postscript:n
{ /driver.link.dict ( #1 ) def }
\tl_gset:Nn \g_@@_pdf_link_dict_tl {#1}
@@ -961,18 +962,10 @@
}
\int_gincr:N \g_@@_pdf_object_int
\int_gset_eq:NN \g_@@_pdf_link_int \g_@@_pdf_object_int
- \@@_breaklink_postscript:x
- {
- /driver.link.obj
- {
- { driver.obj \int_use:N \g_@@_pdf_link_int \c_space_tl driver.cvs }
- }
- def
- }
\@@_postscript:x
{
mark
- \l_@@_breaklink_obj_tl
+ /_objdef { driver.obj \int_use:N \g_@@_pdf_link_int }
\g_@@_pdf_link_dict_tl \c_space_tl
driver.rect
/ANN ~ \l_@@_breaklink_pdfmark_tl
@@ -1088,7 +1081,6 @@
}
}
}
- \tl_clear:N \l_@@_breaklink_obj_tl
\tl_set:Nn \l_@@_breaklink_pdfmark_tl { driver.pdfmark }
\cs_set_eq:NN \@@_breaklink_postscript:n \@@_postscript:n
\cs_set_eq:NN \@@_breaklink_usebox:N \hbox_unpack:N
@@ -1397,7 +1389,7 @@
{
\@@_tmp:w
{ \tex_pdfextension:D obj ~ }
- { \exp_not:N \tex_pdffeedback:D lastobj \scan_stop: }
+ { \exp_not:N \tex_pdffeedback:D lastobj }
}
{ \@@_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
\group_end:
@@ -1457,6 +1449,7 @@
% \begin{macrocode}
\cs_new_protected:Npx \driver_pdf_compresslevel:n #1
{
+ \exp_not:N \tex_global:D
\cs_if_exist:NTF \tex_pdfcompresslevel:D
{ \tex_pdfcompresslevel:D }
{ \tex_pdfvariable:D compresslevel }
@@ -1470,6 +1463,7 @@
}
\cs_new_protected:Npx \@@_pdf_objcompresslevel:n #1
{
+ \exp_not:N \tex_global:D
\cs_if_exist:NTF \tex_pdfobjcompresslevel:D
{ \tex_pdfobjcompresslevel:D }
{ \tex_pdfvariable:D objcompresslevel }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
index 24f7ad3eb9b..8e22549f2ae 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -568,15 +568,18 @@
%
% \begin{function}[EXP, added = 2019-04-11]{\driver_pdf_link_margin:n}
% \begin{syntax}
-% \cs{driver_pdf_link_margin:} \Arg{dimen}
+% \cs{driver_pdf_link_margin:n} \Arg{dimen}
% \end{syntax}
% Sets the length of the margin between content and the border of a link.
% Different back-ends treat the scoping of this value in different ways:
-% \pdfTeX{} and \LuaTeX{} treat it as scoped by \TeX{}, whilst with
+% \pdfTeX{} and \LuaTeX{} apply this at shipout (so it is global, once per
+% page), whilst with
% \texttt{dvips} the scope is managed at the PostScript level. For
% \texttt{(x)dvipdfmx}, this setting applies to \emph{all} annotations
% (\emph{i.e.}~it is global), and thus it may be necessary to set to
-% \texttt{0pt} to avoid breaking for example animations.
+% \texttt{0pt} to avoid breaking for example animations. In general,
+% this setting should be applied once per document, prior to the
+% first page being shipped out.
% \end{function}
%
% \begin{function}[added = 2019-04-26]{\driver_pdf_destination:nn}
@@ -676,10 +679,10 @@
% \item[\texttt{array}] A space-separated list of values
% \item[\texttt{dict}] Key--value pairs in the form
% \texttt{/\meta{key} \meta{value}}
-% \item[\texttt{fstream}] Two brace groups: \meta{content} and
-% \meta{file name}
-% \item[\texttt{stream}] Two brace groups: \meta{content} and
-% \meta{additional attributes}
+% \item[\texttt{fstream}] Two brace groups: \meta{file name} and
+% \meta{content}
+% \item[\texttt{stream}] Two brace groups: \meta{attributes (dictionary)}
+% and \meta{content}
% \end{itemize}
% \end{function}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index c4afb3010fc..4f0d3af3ef1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index d6b61507d47..886e6011167 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
index fe877311103..9695d202e05 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3final.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index d5527a62785..3b487b0bec1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index 1b4e5558e7d..4029c929517 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index 8eda1c12665..79aa81924ec 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index c87d4fb4bc2..2d5dc0d66ae 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index 8ff9a3b7c2d..cab359055de 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index a87bf8b1226..192a7d447c1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index 30113e4b8cd..e5d41df0b39 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index 37ee7d9a3cb..57441d7ebdc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 15227cc22ae..ff05d8a2260 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -96,6 +96,7 @@
% \c_@@_prec_hatii_int,
% \c_@@_prec_hat_int,
% \c_@@_prec_not_int,
+% \c_@@_prec_juxt_int,
% \c_@@_prec_times_int,
% \c_@@_prec_plus_int,
% \c_@@_prec_comp_int,
@@ -118,7 +119,8 @@
% \item[16] Function calls.
% \item[13/14] Binary |**| and~|^| (right to left).
% \item[12] Unary |+|, |-|, |!| (right to left).
-% \item[10] Binary |*|, |/|, and juxtaposition (implicit~|*|).
+% \item[11] Juxtaposition (implicit~|*|) with no parenthesis.
+% \item[10] Binary |*| and~|/|.
% \item[9] Binary |+| and~|-|.
% \item[7] Comparisons.
% \item[6] Logical \texttt{and}, denoted by~|&&|.
@@ -134,6 +136,7 @@
\int_const:Nn \c_@@_prec_hatii_int { 14 }
\int_const:Nn \c_@@_prec_hat_int { 13 }
\int_const:Nn \c_@@_prec_not_int { 12 }
+\int_const:Nn \c_@@_prec_juxt_int { 11 }
\int_const:Nn \c_@@_prec_times_int { 10 }
\int_const:Nn \c_@@_prec_plus_int { 9 }
\int_const:Nn \c_@@_prec_comp_int { 7 }
@@ -1946,7 +1949,7 @@
{
\exp_not:N \@@_exp_after_array_f:w #2 \s_@@_stop
\exp_not:N \exp_after:wN
- \exp_not:N \@@_parse_infix:NN
+ \exp_not:N \@@_parse_infix_after_paren:NN
\exp_not:N \exp_after:wN #1
\exp_not:N \exp:w
\exp_not:N \@@_parse_expand:w
@@ -1981,7 +1984,7 @@
\fi:
\exp_end_continue_f:w
\fi:
- \@@_parse_infix:NN #1 )
+ \@@_parse_infix_after_paren:NN #1 )
}
% \end{macrocode}
% \end{macro}
@@ -2268,7 +2271,7 @@
\exp_after:wN \@@_parse_infix_mark:NNN
\else:
\exp_after:wN \exp_after:wN
- \exp_after:wN \@@_parse_infix_mul:N
+ \exp_after:wN \@@_parse_infix_juxt:N
\fi:
\else:
\if_int_compare:w
@@ -2276,7 +2279,7 @@
( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26
= 3 \exp_stop_f:
\exp_after:wN \exp_after:wN
- \exp_after:wN \@@_parse_infix_mul:N
+ \exp_after:wN \@@_parse_infix_juxt:N
\else:
\exp_after:wN \@@_parse_infix_check:NNN
\cs:w
@@ -2288,22 +2291,57 @@
#1
#2
}
-\cs_new:Npx \@@_parse_infix_check:NNN #1#2#3
+\cs_new:Npn \@@_parse_infix_check:NNN #1#2#3
{
- \exp_not:N \if_meaning:w \scan_stop: #1
- \exp_not:N \__kernel_msg_expandable_error:nnn
+ \if_meaning:w \scan_stop: #1
+ \__kernel_msg_expandable_error:nnn
{ kernel } { fp-missing } { * }
- \exp_not:N \exp_after:wN
- \exp_not:c { @@_parse_infix_*:N }
- \exp_not:N \exp_after:wN #2
- \exp_not:N \exp_after:wN #3
- \exp_not:N \else:
- \exp_not:N \exp_after:wN #1
- \exp_not:N \exp_after:wN #2
- \exp_not:N \exp:w
- \exp_not:N \exp_after:wN
- \exp_not:N \@@_parse_expand:w
- \exp_not:N \fi:
+ \exp_after:wN \@@_parse_infix_mul:N
+ \exp_after:wN #2
+ \exp_after:wN #3
+ \else:
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \exp:w \exp_after:wN \@@_parse_expand:w
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_parse_infix_after_paren:NN}
+% Variant of \cs{@@_parse_infix:NN} for use after a closing
+% parenthesis. The only difference is that \cs{@@_parse_infix_juxt:N}
+% is replaced by \cs{@@_parse_infix_mul:N}.
+% \begin{macrocode}
+\cs_new:Npn \@@_parse_infix_after_paren:NN #1 #2
+ {
+ \if_catcode:w \scan_stop: \exp_not:N #2
+ \if_int_compare:w
+ \@@_str_if_eq:nn { \s_@@_mark } { \exp_not:N #2 }
+ = 0 \exp_stop_f:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \@@_parse_infix_mark:NNN
+ \else:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \@@_parse_infix_mul:N
+ \fi:
+ \else:
+ \if_int_compare:w
+ \@@_int_eval:w
+ ( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26
+ = 3 \exp_stop_f:
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \@@_parse_infix_mul:N
+ \else:
+ \exp_after:wN \@@_parse_infix_check:NNN
+ \cs:w
+ @@_parse_infix_ \token_to_str:N #2 :N
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \cs_end:
+ \fi:
+ \fi:
+ #1
+ #2
}
% \end{macrocode}
% \end{macro}
@@ -2411,6 +2449,7 @@
% \begin{macro}[EXP]
% {
% \@@_parse_infix_+:N, \@@_parse_infix_-:N,
+% \@@_parse_infix_juxt:N,
% \@@_parse_infix_/:N, \@@_parse_infix_mul:N,
% \@@_parse_infix_and:N, \@@_parse_infix_or:N,
% }
@@ -2442,6 +2481,8 @@
}
\exp_args:Nc \@@_tmp:w { @@_parse_infix_^:N } ^
\c_@@_prec_hatii_int \c_@@_prec_hat_int
+\exp_args:Nc \@@_tmp:w { @@_parse_infix_juxt:N } *
+ \c_@@_prec_juxt_int \c_@@_prec_juxt_int
\exp_args:Nc \@@_tmp:w { @@_parse_infix_/:N } /
\c_@@_prec_times_int \c_@@_prec_times_int
\exp_args:Nc \@@_tmp:w { @@_parse_infix_mul:N } *
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index 5cf80f99ddb..b45b27d3ea1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index 79c83da24de..75e0dd7653d 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index 43c579ddde7..b1bf6c6ec13 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
% \maketitle
%
% \begin{documentation}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index 2eb21b5137b..9e68208c9cb 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index 1893a78c128..620944118d7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -858,8 +858,9 @@
% \item Function calls (\texttt{sin}, \texttt{ln}, \emph{etc}).
% \item Binary |**| and |^| (right associative).
% \item Unary |+|, |-|, |!|.
-% \item Binary |*|, |/|, and implicit multiplication by juxtaposition
-% (\texttt{2pi}, \texttt{3(4+5)}, \emph{etc}).
+% \item Implicit multiplication by juxtaposition (\texttt{2pi})
+% when neither factor is in parentheses.
+% \item Binary |*| and |/|, implicit multiplication by juxtaposition with parentheses (for instance \texttt{3(4+5)}).
% \item Binary |+| and |-|.
% \item Comparisons |>=|, |!=|, |<?|, \emph{etc}.
% \item Logical \texttt{and}, denoted by |&&|.
@@ -868,10 +869,13 @@
% \item Comma (to build tuples).
% \end{itemize}
% The precedence of operations can be overridden using parentheses.
-% In particular, those precedences imply that
+% In particular, the precedence of juxtaposition implies that
% \begin{align*}
-% \mathtt{sin 2pi} & = \sin(2)\pi != 0, \\
-% \mathtt{2\char`\^2max(3,5)} & = 2^2 \max(3,5) = 20.
+% \mathtt{1/2pi} & = 1/(2\pi), \\
+% \mathtt{1/2pi(pi+pi)} & = (2\pi)^{-1}(\pi+\pi) \simeq 1, \\
+% \mathtt{sin 2pi} & = \sin(2)\pi \neq 0, \\
+% \mathtt{2\char`\^2max(3,5)} & = 2^2 \max(3,5) = 20, \\
+% \mathtt{1in/1cm} & = (1in)/(1cm) = 2.54 .
% \end{align*}
% Functions are called on the value of their argument, contrarily to
% \TeX{} macros.
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index fa6587de3f6..0aec3f16fb1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 0eaab0032d0..5ea71b0afb6 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index 5e07dbf968e..59bbffa95c2 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index b543303a41d..17255a50305 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index ecb249c825d..511d1fd9b7a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
index 3c32583bff1..a67517b667f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 293d940191e..1b623da7f46 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
@@ -137,8 +137,10 @@
% \begin{syntax}
% |l3kernel.elapsedtime()|
% \end{syntax}
-% Returns the time in \meta{scaled seconds} since the start of the \TeX{} run
-% or since |l3kernel.resettimer| was issued.
+% Returns the CPU time in \meta{scaled seconds} since the start of the
+% \TeX{} run or since |l3kernel.resettimer| was issued. This only
+% measures the time used by the CPU, not the real time, e.g., waiting
+% for user input.
% \end{function}
%
% \begin{function}{l3kernel.filemdfivesum}
@@ -380,7 +382,7 @@ local function elapsedtime()
end
l3kernel.elapsedtime = elapsedtime
local function resettimer()
- base_time = 0
+ base_time = os_clock()
end
l3kernel.resettimer = resettimer
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 7a6855623b8..4f3d8a69327 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index 8c9660c12b8..ed464e73e3a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index 171da06d375..8380415d069 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 60e155eb59b..7658d804780 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index d5f71ff35c5..6a5b3f4cf5a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index e6e91a4393a..7246e30ed7f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index 5ff1628798c..91051b576a4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 9951df03fd2..eded1d719ee 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index ef8921366c2..9b2b0fdc1f8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index c1079afa4c6..213625ab677 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index da6bd0b48b0..b411adb645e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 1fda8a3ad23..1a32c91153a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 048580b4e3d..9c6fb5f7bf7 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index 84bed54d9c8..29581bb5c9b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index 107ba0369ce..77675742962 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-09}
+% \date{Released 2019-05-28}
%
% \maketitle
%