diff options
author | Karl Berry <karl@freefriends.org> | 2019-05-28 21:24:36 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-05-28 21:24:36 +0000 |
commit | 0411921af7908fa9daf388b67db154e9fc51caca (patch) | |
tree | f5405f2fef2bc7b0ae9eb9c8809377b88d70c760 /Master/texmf-dist/source/latex/l3experimental | |
parent | c55b67ba30f320ddfc93fbdca08cab7512704011 (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/l3experimental')
20 files changed, 844 insertions, 55 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx index 1bb701c02ee..218988c8050 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -66,8 +66,10 @@ % \cs{sys_timer:} % \end{syntax} % Expands to the current value of the engine's timer clock, a -% non-negative integer. In engines without clock support this -% expands to $0$. +% non-negative integer. In engines without clock support this expands +% to $0$ after an error. In \LuaTeX{} only the CPU time is measured, +% while in other engines real time is measured (including time waiting +% for user input). % \end{function} % % \section{Benchmark} @@ -128,7 +130,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3benchmark}{2019-05-03}{} +\ProvidesExplPackage{l3benchmark}{2019-05-28}{} {L3 Experimental benchmarking} %</package> % \end{macrocode} @@ -148,13 +150,13 @@ \sys_if_engine_luatex:TF { \cs_new:Npn \sys_timer: - { \int_eval:w \lua_now:n { l3kernel.elapsedtime() } \scan_stop: } + { \lua_now:n { l3kernel.elapsedtime() } } } { \cs_if_exist:NT \tex_elapsedtime:D { \cs_new:Npn \sys_timer: - { \int_eval:w \tex_elapsedtime:D } + { \int_value:w \tex_elapsedtime:D } } } \@@_const:nn { sys_if_timer_exist } diff --git a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx index 70952138e5e..e058c450900 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3cctab/l3cctab.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -150,7 +150,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3cctab}{2019-05-03}{} +\ProvidesExplPackage{l3cctab}{2019-05-28}{} {L3 Experimental category code tables} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx index 92ca58363a2..52e60d2b7a2 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3color/l3color.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -265,7 +265,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3color}{2019-05-03}{} +\ProvidesExplPackage{l3color}{2019-05-28}{} {L3 Experimental color support} %</package> % \end{macrocode} @@ -292,9 +292,9 @@ % % \subsection{Setup} % -% \begin{variable}{\l_@@_tmp_tl} +% \begin{variable}{\l_@@_internal_tl} % \begin{macrocode} -\tl_new:N \l_@@_tmp_tl +\tl_new:N \l_@@_internal_tl % \end{macrocode} % \end{variable} % @@ -451,15 +451,7 @@ \driver_color_pickup:N \l_@@_current_tl \tl_set_eq:cN { l_@@_named_ . _tl } \l_@@_current_tl %</package> - \group_begin: - \seq_map_inline:Nn \l_char_active_seq - { - \tl_set:Nx \l_@@_tmp_tl { \cs_to_str:N ##1 } - \char_set_active_eq:NN ##1 \l_@@_tmp_tl - } - \tl_set:Nx \l_@@_tmp_tl {#1} - \exp_args:NNV \group_end: - \@@_parse:nN \l_@@_tmp_tl #2 + \exp_args:Ne \@@_parse:nN { \tl_to_str:n {#1} } #2 } % \end{macrocode} % Before going to all of the effort of parsing an expression, these two @@ -496,10 +488,10 @@ \group_begin: \@@_extract:nNN {#2} \l_@@_model_tl \l_@@_value_tl \@@_parse_loop:w #3 ! ! ! ! \q_stop - \tl_set:Nx \l_@@_tmp_tl + \tl_set:Nx \l_@@_internal_tl { \l_@@_model_tl \c_space_tl \l_@@_value_tl } \exp_args:NNNV \group_end: - \tl_set:Nn #1 \l_@@_tmp_tl + \tl_set:Nn #1 \l_@@_internal_tl } % \end{macrocode} % This is the loop proper: there can be an open-ended set of colors to parse, @@ -633,21 +625,42 @@ % \end{macro} % % \begin{macro}[EXP] -% {\@@_parse_gray:w, \@@_parse_rgb:w, \@@_parse_cmyk:w, \@@_parse_spot:w} +% { +% \@@_parse_model_gray:w, \@@_parse_model_rgb:w, +% \@@_parse_model_cmyk:w, \@@_parse_model_spot:w +% } +% \begin{macro}[EXP]{\@@_parse_number:n} +% \begin{macro}[EXP]{\@@_parse_number:w} % \begin{macro}[EXP]{\@@_parse_spot_aux:w} -% Turn the input into internal form. +% Turn the input into internal form, also tidying up the number quickly. % \begin{macrocode} -\cs_new:Npn \@@_parse_gray:w #1 , #2 \q_stop {#1} -\cs_new:Npn \@@_parse_rgb:w #1 , #2 , #3 , #4 \q_stop { #1 ~ #2 ~ #3 } -\cs_new:Npn \@@_parse_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop - { #1 ~ #2 ~ #3 ~ #4 } -\cs_new:Npn \@@_parse_spot:w #1 , #2 \q_stop +\cs_new:Npn \@@_parse_model_gray:w #1 , #2 \q_stop { \@@_parse_number:n {#1} } +\cs_new:Npn \@@_parse_model_rgb:w #1 , #2 , #3 , #4 \q_stop + { + \@@_parse_number:n {#1} ~ + \@@_parse_number:n {#2} ~ + \@@_parse_number:n {#3} + } +\cs_new:Npn \@@_parse_model_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop + { + \@@_parse_number:n {#1} ~ + \@@_parse_number:n {#2} ~ + \@@_parse_number:n {#3} ~ + \@@_parse_number:n {#4} + } +\cs_new:Npn \@@_parse_model_spot:w #1 , #2 \q_stop { \@@_parse_spot_aux:w #1 ! 100 ! \q_stop } \cs_new:Npn \@@_parse_spot_aux:w #1 ! #2 ! #3 \q_stop { #1 ~ \fp_eval:n { #2 / 100 } } +\cs_new:Npn \@@_parse_number:n #1 + { \@@_parse_number:w #1 . 0 . \q_stop } +\cs_new:Npn \@@_parse_number:w #1 . #2 . #3 \q_stop + { \tl_if_blank:nTF {#1} { 0 } {#1} . #2 } % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} +% \end{macro} % % \subsection{Selecting colors (and color models)} % @@ -725,10 +738,10 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_direct:nnN #1#2#3 { - \cs_if_exist:cTF { @@_parse_ #1 :w } + \cs_if_exist:cTF { @@_parse_model_ #1 :w } { \tl_set:Nx #3 - { #1 ~ \use:c { @@_parse_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop } + { #1 ~ \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop } \@@_check_model:N #3 } { diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx index 0859e7a2f9d..e3994c49e3c 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx index 7d5ae3948d6..a24b87bb6bd 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx index 874d1910d09..f3c76c0f24e 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx index bda4d40370a..460e8b122d6 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx index d360a1ccba5..3797642b8fe 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx index 13d77d0fdc9..b1cbf83e5e4 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx index 2cf0bf5d500..cbf1eca6768 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx index e8393ec9ee2..77850944890 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx @@ -44,7 +44,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx index b4a3ed383bd..d01788b0c80 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx @@ -110,7 +110,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -1145,7 +1145,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3draw}{2019-05-03}{} +\ProvidesExplPackage{l3draw}{2019-05-28}{} {L3 Experimental core drawing support} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx new file mode 100644 index 00000000000..b8378682a59 --- /dev/null +++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx @@ -0,0 +1,716 @@ +% \iffalse meta-comment +% +%% File: l3graphics.dtx +% +% Copyright (C) 2017-2019 The LaTeX3 Project +% +% It may be distributed and/or modified under the conditions of the +% LaTeX Project Public License (LPPL), either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in the file +% +% http://www.latex-project.org/lppl.txt +% +% This file is part of the "l3experimental bundle" (The Work in LPPL) +% and all files in that bundle must be distributed together. +% +% ----------------------------------------------------------------------- +% +% The development version of the bundle can be found at +% +% https://github.com/latex3/latex3 +% +% for those people who are interested. +% +%<*driver|package> +\RequirePackage{expl3} +%</driver|package> +%<*driver> +\documentclass[full]{l3doc} +\begin{document} + \DocInput{\jobname.dtx} +\end{document} +%</driver> +% \fi +% +% \title{^^A +% The \pkg{l3graphics} package\\ Graphics inclusion support^^A +% } +% +% \author{^^A +% The \LaTeX3 Project\thanks +% {^^A +% E-mail: +% \href{mailto:latex-team@latex-project.org} +% {latex-team@latex-project.org}^^A +% }^^A +% } +% +% \date{Released 2019-05-28} +% +% \maketitle +% +% \begin{documentation} +% +% \section{\pkg{l3graphics} documentation} +% +% \subsection{Driver functions} +% +% Inclusion of graphic files requires a range of low-level data be passed to +% the driver layer. These functions are primarily aimed at supporting this +% work. +% +% \begin{variable}{\l_graphics_decodearray_tl} +% Array to decode color in bitmap graphic: when non-empty, this should +% be in the form of one, two or three pairs of real numbers in the range +% $[0,1]$, separated by spaces. +% \end{variable} +% +% \begin{variable}{\l_graphics_interpolate_bool} +% Indicates whether interpolation should be applied to bitmap graphic files. +% \end{variable} +% +% \begin{variable}{\l_graphics_page_int} +% The page to extract from a multi-page graphic file: used for |.pdf| files +% which may contain multiple pages. +% \end{variable} +% +% \begin{variable}{\l_graphics_pagebox_tl} +% The nature of the page box setting used to determine the bounding box of +% material: used for |.pdf| files which feature multiple page box +% specifications. +% \end{variable} +% +% \begin{variable}{\l_graphics_draft_bool} +% Switch to enable draft mode: graphics are read but not included when this is +% true. +% \end{variable} +% +% \begin{variable} +% {\l_graphics_llx_dim, \l_graphics_lly_dim, \l_graphics_urx_dim, \l_graphics_ury_dim} +% Dimensions which return the points $(\meta{llx},\meta{lly})$ and +% $(\meta{urx},\meta{ury})$ for the graphic. For many graphics only the resulting +% height and width are significant, but this is driver-dependent. +% \end{variable} +% +% \begin{variable}{\l_graphics_name_bool} +% The name of a graphics file being loaded: usually the same as the +% input file name, but may be altered by some drivers. +% \end{variable} +% +% \begin{function} +% { +% \graphics_bb_save:n, \graphics_bb_save:x, +% \graphics_bb_restore:nF, \graphics_bb_restore:xF +% } +% \begin{syntax} +% \cs{graphics_bb_save:n} \Arg{graphic} +% \cs{graphics_bb_restore:nF} \Arg{graphic} \Arg{false code} +% \end{syntax} +% This pair of functions are used to cache the bounding box of an \meta{graphic} +% so that extraction/reading is only required once. The \texttt{save} +% function stores the values from \cs{l_graphics_llx_dim}, +% \cs{l_graphics_lly_dim}, \cs{l_graphics_urx_dim} and +% \cs{l_graphics_ury_dim} as constants. The \texttt{restore} function will then +% look up values for the bounding box of an \meta{graphic} and set the four +% dimensions appropriately. For any one \meta{graphic} the bounding box will +% be constant, so the \texttt{save} function should only be called once. Thus +% a typical use case is +% \begin{verbatim} +% \graphics_bb_restore:nF { <name> } +% { +% % Code to read the bb +% \graphics_bb_save:n { <name> } +% } +% \end{verbatim} +% \emph{i.e.}~every use of a bounding box will attempt to restore saved data, +% and saving will only take place where that is not possible. +% +% Note that the \meta{graphic} may not be a simple file name: a multi-page PDF, +% for example, will need to have the bounding box cached for each page used. +% \end{function} +% +% \begin{function}{\graphics_extract_bb:n} +% \begin{syntax} +% \cs{graphics_extract_bb:n} \Arg{file} +% \end{syntax} +% Extracts bounding box data for the graphic \meta{file} using the |extractbb| +% utility, and stores the bounding box of the graphic file in +% \cs{l_graphics_llx_dim}, \cs{l_graphics_lly_dim}, \cs{l_graphics_urx_dim} and +% \cs{l_graphics_ury_dim}. +% +% The \meta{file} name should be fully-qualified and sanitized: no search +% or other manipulation is carried out at this level. No check is made on +% the file \emph{type} at this stage: it is assumed that the driver code +% using this function has made such a check. File types such as |.pdf| and +% |.jpg| are appropriate for parsing using this function. +% +% When \cs{l_graphics_page_int} is positive the appropriate page will be +% queried from the graphic file. +% +% Note that this function requires pipe shell calls to be enabled: this is +% generally true but may require the option |--enable-pipes| to be enabled +% when running the \TeX{} job. +% \end{function} +% +% \begin{function}{\graphics_read_bb:n} +% \begin{syntax} +% \cs{graphics_read_bb:n} \Arg{file} +% \end{syntax} +% Parses the graphic \meta{file} to find a PostScript-style bounding box +% line of the form +% \begin{verbatim} +% %%BoundingBox: llx lly urx urx +% \end{verbatim} +% where \meta{llx}, \meta{lly}, \meta{urx} and \meta{ury} are the corners +% of the bounding box expressed in PostScript (\enquote{big}) points. The +% values are stored in \cs{l_graphics_llx_dim}, \cs{l_graphics_lly_dim}, +% \cs{l_graphics_urx_dim} and \cs{l_graphics_ury_dim}. +% +% The \meta{file} name should be fully-qualified and sanitized: no search +% or other manipulation is carried out at this level. No check is made on +% the file \emph{type} at this stage: it is assumed that the driver code +% using this function has made such a check. File types such as |.eps| and +% |.bb|/|.xbb| are appropriate for parsing using this function. +% \end{function} +% +% \begin{function}{\graphics_include:n, \graphics_include:nn} +% \begin{syntax} +% \cs{graphics_include:n} \Arg{file} +% \cs{graphics_include:nn} \Arg{file} \Arg{type} +% \end{syntax} +% Horizontal-mode commands which include the \meta{file} as an graphic +% at the current location. The file \meta{type} is given explicitly in +% the two-argument version, or is inferred from the file extension extracted +% in the single-argument form. The exact graphic types supported depend upon +% the driver in use. +% +% Where the \meta{file} is not found and the \meta{type} is \emph{not} +% given, a search for possible graphic files is undertaken using the extensions +% stored in \cs{l_graphics_search_ext_seq}. +% \end{function} +% +% \begin{variable}{\l_graphics_ext_type_prop} +% Defines mapping between file extensions and file types; where there is +% no entry for an extension, the type is assumed to be the extension +% with the leading |.| removed. Entries should be made in lower case, and +% the key should be an extension including the leading |.|, for example +% \begin{verbatim} +% \prop_put:Nnn \l_graphics_ext_type_prop { .ps } { eps } +% \end{verbatim} +% \end{variable} +% +% \begin{variable}{\l_graphics_search_ext_seq} +% Extensions to use for graphic searching when the given \meta{file} name is not +% found by \cs{graphics_include:n}. +% \end{variable} +% +% \begin{variable}{\l_graphics_search_path_seq} +% Each entry is the path to a directory which should be searched when +% seeking an graphic file. Each path can be relative or absolute, and should +% not include the trailing slash. The entries are not expanded when +% used so may contain active characters but should not feature any +% variable content. Spaces need not be quoted. +% \end{variable} +% +% \begin{function}{\graphics_show_list:, \graphics_log_list:} +% \begin{syntax} +% \cs{graphics_show_list:} +% \cs{graphics_log_list:} +% \end{syntax} +% These functions list all graphic files loaded by in a similar manner to +% \cs{file_show_list:} and \cs{file_log_list:}. While +% \cs{graphics_show_list:} displays the list in the terminal, +% \cs{graphics_log_list:} outputs it to the log file only. In both cases, only +% graphics loaded by \pkg{l3graphics} are listed. +% \end{function} +% +% \end{documentation} +% +% \begin{implementation} +% +% \section{\pkg{l3graphics} implementation} +% +% \begin{macrocode} +%<*initex|package> +% \end{macrocode} +% +% \begin{macrocode} +%<@@=graphics> +% \end{macrocode} +% +% \begin{macrocode} +%<*package> +\ProvidesExplPackage{l3graphics}{2019-05-28}{} + {L3 Experimental graphics inclusion support} +%</package> +% \end{macrocode} +% +% \begin{variable}{\l_@@_tmp_ior, \l_@@_tmp_tl} +% Scratch space. +% \begin{macrocode} +\ior_new:N \l_@@_tmp_ior +\tl_new:N \l_@@_tmp_tl +% \end{macrocode} +% \end{variable} +% +% \subsection{Image feature support} +% +% \begin{macro} +% { +% \l_graphics_decodearray_tl , +% \l_graphics_interpolate_bool, +% \l_graphics_page_int , +% \l_graphics_pagebox_tl +% } +% Keys which control features of graphics. The standard value of |pagebox| +% set up here should match the default for the drivers themselves: in +% the absence of any other setting the |cropbox| should be used. +% \begin{macrocode} +\tl_new:N \l_graphics_decodearray_tl +\tl_new:N \l_graphics_pagebox_tl +\bool_new:N \l_graphics_interpolate_bool +\tl_set:Nn \l_graphics_pagebox_tl { cropbox } +\int_new:N \l_graphics_page_int +% \end{macrocode} +% \end{macro} +% +% \subsection{Obtaining bounding box data} +% +% \begin{variable} +% { +% \l_graphics_llx_dim , \l_graphics_lly_dim, +% \l_graphics_urx_dim , \l_graphics_ury_dim +% } +% Storage for the return of bounding box. +% \begin{macrocode} +\dim_new:N \l_graphics_llx_dim +\dim_new:N \l_graphics_lly_dim +\dim_new:N \l_graphics_urx_dim +\dim_new:N \l_graphics_ury_dim +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\graphics_bb_save:n, \graphics_bb_save:x} +% \begin{macro}{\graphics_bb_restore:nF, \graphics_bb_restore:xF} +% Caching graphic bounding boxes is sensible, and these functions are needed both +% here and for drive-specific work. So they are made available as documented +% functions. To save on registers, the \enquote{origin} is only saved if it is +% not at zero. +% \begin{macrocode} +\cs_new_protected:Npn \graphics_bb_save:n #1 + { + \dim_if_exist:cTF { c_@@_ #1 _urx_dim } + { \__kernel_msg_error:nnn { graphic } { bb-already-cached } {#1} } + { + \dim_compare:nNnF \l_graphics_llx_dim = { 0pt } + { \dim_const:cn { c_@@_ #1 _llx_dim } { \l_graphics_llx_dim } } + \dim_compare:nNnF \l_graphics_lly_dim = { 0pt } + { \dim_const:cn { c_@@_ #1 _lly_dim } { \l_graphics_lly_dim } } + \dim_const:cn { c_@@_ #1 _urx_dim } { \l_graphics_urx_dim } + \dim_const:cn { c_@@_ #1 _ury_dim } { \l_graphics_ury_dim } + } + } +\cs_generate_variant:Nn \graphics_bb_save:n { x } +\cs_new_protected:Npn \graphics_bb_restore:nF #1#2 + { + \dim_if_exist:cTF { c_@@_ #1 _urx_dim } + { + \dim_set_eq:Nc \l_graphics_urx_dim { c_@@_ #1 _urx_dim } + \dim_set_eq:Nc \l_graphics_ury_dim { c_@@_ #1 _ury_dim } + \dim_if_exist:cTF { c_@@_ #1 _llx_dim } + { \dim_set_eq:Nc \l_graphics_llx_dim { c_@@_ #1 _llx_dim } } + { \dim_zero:N \l_graphics_llx_dim } + \dim_if_exist:cTF { c_@@_ #1 _lly_dim } + { \dim_set_eq:Nc \l_graphics_lly_dim { c_@@_ #1 _lly_dim } } + { \dim_zero:N \l_graphics_lly_dim } + } + {#2} + } +\cs_generate_variant:Nn \graphics_bb_restore:nF { x } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\graphics_extract_bb:n, \graphics_read_bb:n} +% \begin{macro}{\@@_extract_bb_auix:nn, \@@_extract_bb_auix:Vn} +% \begin{macro}{\@@_extract_bb_auxii:nnn} +% \begin{macro}{\@@_extract_bb_auxiii:nnnn, \@@_extract_bb_auxiii:Vnnn} +% \begin{macro}{\@@_extract_bb_auxiv:nnn} +% \begin{macro}{\@@_read_bb_auxi:nnnn, \@@_read_bb_auxii:Vnnn} +% \begin{macro} +% { +% \@@_read_bb_auxii:w , +% \@@_read_bb_auxiv:w , +% \@@_read_bb_auxv:w +% } +% Extracting the bounding box from an |.eps| or |.bb| file is done by +% reading each line and searching for the marker text |%%BoundingBox:|. +% The data is read as a string with a mapping over +% the lines: as there is a colon involved, a little bit of work is needed to +% get the matching correct. The same approach covers cases where the bounding +% box has to be calculated by |extractbb|, with just the initial phase +% different. +% \begin{macrocode} +\cs_new_protected:Npn \graphics_extract_bb:n #1 + { + \int_compare:nNnTF \l_graphics_page_int > 0 + { \@@_extract_bb_auxi:Vn \l_graphics_page_int {#1} } + { \@@_extract_bb_auxii:nnn {#1} { } { } } + } +\cs_new_protected:Npn \@@_extract_bb_auxi:nn #1#2 + { \@@_extract_bb_auxii:nnn {#2} { :P #1 } { -p~#1~ } } +\cs_generate_variant:Nn \@@_extract_bb_auxi:nn { Vn } +\cs_new_protected:Npn \@@_extract_bb_auxii:nnn #1#2#3 + { + \tl_if_empty:NTF \l_graphics_pagebox_tl + { \@@_extract_bb_auxiv:nnn } + { \@@_extract_bb_auxiii:Vnnn \l_graphics_pagebox_tl } + {#1} {#2} {#3} + } +\cs_new_protected:Npn \@@_extract_bb_auxiii:nnnn #1#2#3#4 + { \@@_extract_bb_auxiv:nnn {#2} { : #1 #3 } { #4 -B~#1~ } } +\cs_generate_variant:Nn \@@_extract_bb_auxiii:nnnn { V } +\cs_new_protected:Npn \@@_extract_bb_auxiv:nnn #1#2#3 + { + \@@_read_bb_auxi:nnnn {#1} {#2} + { \ior_shell_open:Nn \l_@@_tmp_ior { extractbb~#3-O~#1 } } + { pipe-failed } + } +\cs_new_protected:Npn \graphics_read_bb:n #1 + { + \@@_read_bb_auxi:nnnn {#1} { } + { \ior_open:Nn \l_@@_tmp_ior {#1} } + { graphic-not-found } + } +% \end{macrocode} +% Before any real searching, a check to see if there are cached values +% available. The name of each graphic will be unique and so it's sensible to +% store the bounding box data in \TeX{}: this avoids multiple file operations. +% As bounding boxes here start away from the lower-left origin, we need to +% store all four values (contrast with for example the \texttt{pdfmode} +% driver). Here |#2| is a potential page identifier: used to allow caching of +% individual pages in a multi-page document. Caching is applied to the +% upper-right position in all cases, but as the lower-left will often be +% $(0,0)$ it is only cached if required. +% \begin{macrocode} +\cs_new_protected:Npn \@@_read_bb_auxi:nnnn #1#2#3#4 + { + \graphics_bb_restore:nF {#1#2} + { \@@_read_bb_auxii:nnnn {#3} {#4} {#1} {#2} } + } +\cs_new_protected:Npx \@@_read_bb_auxii:nnnn #1#2#3#4 + { + #1 + \exp_not:N \ior_if_eof:NTF \exp_not:N \l_@@_tmp_ior + { \__kernel_msg_error:nnn { graphics } {#2} {#3} } + { + \ior_str_map_inline:Nn \exp_not:N \l_@@_tmp_ior + { + \exp_not:N \@@_read_bb_auxiii:w + ##1 ~ \c_colon_str \exp_not:N \q_stop + } + } + \exp_not:n + { + \ior_close:N \l_@@_tmp_ior + \dim_compare:nNnF \l_graphics_llx_dim = { 0pt } + { \dim_const:cn { c_@@_ #3#4 _llx_dim } { \l_graphics_llx_dim } } + \dim_compare:nNnF \l_graphics_lly_dim = { 0pt } + { \dim_const:cn { c_@@_ #3#4 _lly_dim } { \l_graphics_lly_dim } } + \dim_const:cn { c_@@_ #3#4 _urx_dim } { \l_graphics_urx_dim } + \dim_const:cn { c_@@_ #3#4 _ury_dim } { \l_graphics_ury_dim } + } + } +\use:x + { + \cs_new_protected:Npn \exp_not:N \@@_read_bb_auxiii:w + ##1 \c_colon_str ##2 \exp_not:N \q_stop + { + \exp_not:N \str_if_eq:nnT + { \c_percent_str \c_percent_str BoundingBox } + {##1} + { \exp_not:N \@@_read_bb_auxiv:w ##2 ( ) \exp_not:N \q_stop } + } + } +% \end{macrocode} +% If the bounding box is |atend|, just ignore the current one and keep going. +% Otherwise, we need to allow for tabs and multiple spaces (as the line has +% been read as a string). The easiest way to deal with that is to scan the +% tokens: at this stage the line fragment should be just numbers and +% whitespace. \TeX{} will then tidy up for us, with just a leading space to +% worry about: that is taken out by the |\use:n| here. +% \begin{macrocode} +\cs_new_protected:Npn \@@_read_bb_auxiv:w #1 ( #2 ) #3 \q_stop + { + \str_if_eq:nnF {#2} { atend } + { + \tl_set_rescan:Nnx \l_@@_tmp_tl + { + \char_set_catcode_space:n { 9 } + \char_set_catcode_space:n { 32 } + } + { \use:n #1 } + \exp_after:wN \@@_read_bb_auxv:w \l_@@_tmp_tl \q_stop + } + } +% \end{macrocode} +% A trailing space was deliberately added earlier so we know that the final +% data point is terminated by a space. +% \begin{macrocode} +\cs_new_protected:Npn \@@_read_bb_auxv:w #1~#2~#3~#4~#5 \q_stop + { + \dim_set:Nn \l_graphics_llx_dim { #1 bp } + \dim_set:Nn \l_graphics_lly_dim { #2 bp } + \dim_set:Nn \l_graphics_urx_dim { #3 bp } + \dim_set:Nn \l_graphics_ury_dim { #4 bp } + \ior_map_break: + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{variable}{\l_graphics_draft_bool} +% Relevant to including graphics but not to reading them. +% \begin{macrocode} +\bool_new:N \l_graphics_draft_bool +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_graphics_name_tl, \l_@@_name_tl} +% \begin{macrocode} +\tl_new:N \l_graphics_name_tl +\tl_new:N \l_@@_name_tl +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_@@_internal_box} +% \begin{macrocode} +\box_new:N \l_@@_internal_box +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_@@_dir_str \l_@@_name_str \l_@@_ext_str} +% \begin{macrocode} +\str_new:N \l_@@_dir_str +\str_new:N \l_@@_name_str +\str_new:N \l_@@_ext_str +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_graphics_search_path_seq} +% \begin{macrocode} +\seq_new:N \l_graphics_search_path_seq +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_graphics_search_ext_seq} +% Used to specify fall-back extensions: actually set on a per-driver basis. +% \begin{macrocode} +\seq_new:N \l_graphics_search_ext_seq +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_graphics_ext_type_prop} +% Mapping between extensions and types for non-standard mappings +% \begin{macrocode} +\prop_new:N \l_graphics_ext_type_prop +\prop_put:Nnn \l_graphics_ext_type_prop { .ps } { eps } +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\g_@@_record_seq} +% A list of graphic files used. +% \begin{macrocode} +\seq_new:N \g_@@_record_seq +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\graphics_include:n} +% \begin{macro}{\@@_include_search:n} +% \begin{macro}{\@@_include:} +% \begin{macro}{\graphics_include:nn} +% \begin{macro} +% { +% \@@_include_auxi:n, \@@_include_auxii:n, +% \@@_include_auxiii:n, \@@_include_auxiv:n +% } +% Actually including an graphic is relatively straight-forward: most of the +% work is done by the driver. We only have to deal with making sure the +% box has no apparent depth. Where the first given name is not found, we +% search based on extension only if the \meta{type} was not given. The one +% wrinkle is that we may have found a \texttt{.tex} file matching the file +% name stem: that's not what we want, so we have to filter out. +% \begin{macrocode} +\cs_new_protected:Npn \graphics_include:n #1 + { + \group_begin: + \seq_set_eq:NN \l_file_search_path_seq \l_graphics_search_path_seq + \file_get_full_name:nNTF {#1} \l_@@_name_tl + { + \str_if_eq:eeTF { \l_@@_name_tl } { #1 .tex } + { \@@_include_search:n {#1} } + { \@@_include: } + } + { \@@_include_search:n {#1} } + \group_end: + } +\cs_new_protected:Npn \@@_include_search:n #1 + { + \seq_map_inline:Nn \l_graphics_search_ext_seq + { + \file_get_full_name:nNT { #1 . ##1 } \l_@@_name_tl + { \seq_map_break:n { \use_i:nnn \@@_include: } } + } + \use:n + { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} } + } +\cs_new_protected:Npn \@@_include: + { + \file_parse_full_name:VNNN \l_@@_name_tl + \l_@@_dir_str \l_@@_name_str \l_@@_ext_str + \exp_args:Ne \@@_include_auxi:n + { + \exp_args:Ne \str_tail:n + { \str_fold_case:V \l_@@_ext_str } + } + } +\cs_new_protected:Npn \graphics_include:nn #1#2 + { + \group_begin: + \seq_set_eq:NN \l_file_search_path_seq \l_graphics_search_path_seq + \file_get_full_name:nNTF {#1} \l_@@_name_tl + { + \exp_args:Ne \@@_include_auxi:n + { \str_fold_case:n {#1} } + } + { \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} } + \group_end: + } +\cs_new_protected:Npn \@@_include_auxi:n #1 + { + \prop_get:NnNF \l_graphics_ext_type_prop { .#1 } \l_@@_internal_tl + { \tl_set:Nn \l_@@_internal_tl {#1} } + \exp_args:NV \@@_include_auxii:n \l_@@_internal_tl + } +\cs_new_protected:Npn \@@_include_auxii:n #1 + { + \mode_leave_vertical: + \cs_if_exist:cTF { driver_graphics_include_ #1 :n } + { + \tl_set_eq:NN \l_graphics_name_tl \l_@@_name_tl + \exp_args:NnV \use:c { driver_graphics_getbb_ #1 :n } + \l_@@_name_tl + \seq_gput_right:NV \g_@@_record_seq \l_graphics_name_tl +%<*package> + \clist_if_exist:NT \@filelist + { \exp_args:NV \@addtofilelist \l_graphics_name_tl } +%</package> + \bool_if:NTF \l_graphics_draft_bool + { \@@_include_auxiii:n } + { \@@_include_auxiv:n } + {#1} + } + { \__kernel_msg_error:nnn { graphics } { unsupported-graphic-type } {#1} } + } +\cs_new_protected:Npn \@@_include_auxiii:n #1 + { + \hbox_to_wd:nn { \l_graphics_urx_dim - \l_graphics_llx_dim } + { + \tex_vrule:D + \tex_hss:D + \vbox_to_ht:nn + { \l_graphics_ury_dim - \l_graphics_lly_dim } + { + \tex_hrule:D width + \dim_eval:n { \l_graphics_urx_dim - \l_graphics_llx_dim } + \tex_vss:D + \hbox_to_wd:nn + { \l_graphics_urx_dim - \l_graphics_llx_dim } + { +%<*package> + \ttfamily +%</package> + \tex_hss:D \l_@@_name_tl \tex_hss:D + } + \tex_vss:D + \tex_hrule:D + } + \tex_hss:D + \tex_vrule:D + } + } +\cs_new_protected:Npn \@@_include_auxiv:n #1 + { + \hbox_set:Nn \l_@@_internal_box + { + \exp_args:NnV \use:c { driver_graphics_include_ #1 :n } + \l_@@_name_tl + } + \box_set_dp:Nn \l_@@_internal_box { 0pt } + \box_set_ht:Nn \l_@@_internal_box + { \l_graphics_ury_dim - \l_graphics_lly_dim } + \box_set_wd:Nn \l_@@_internal_box + { \l_graphics_urx_dim - \l_graphics_llx_dim } + \box_use_drop:N \l_@@_internal_box + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\graphics_show_list:, \graphics_log_list:, \@@_list:N} +% \begin{macro}[EXP]{\@@_list_aux:n} +% A function to list all graphic files used. +% \begin{macrocode} +\cs_new_protected:Npn \graphics_show_list: { \@@_list:N \msg_show:nnxxxx } +\cs_new_protected:Npn \graphics_log_list: { \@@_list:N \msg_log:nnxxxx } +\cs_new_protected:Npn \@@_list:N #1 + { + \seq_remove_duplicates:N \g_@@_record_seq + #1 { LaTeX/kernel } { file-list } + { \seq_map_function:NN \g_@@_record_seq \@@_list_aux:n } + { } { } { } + } +\cs_new:Npn \@@_list_aux:n #1 { \iow_newline: #1 } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Messages} +% +% \begin{macrocode} +\__kernel_msg_new:nnnn { graphics } { graphic-not-found } + { Image~file~'#1'~not~found. } + { + LaTeX~tried~to~open~graphic~file~'#1', + ~but~the~file~could~not~be~read. + } +\__kernel_msg_new:nnnn { graphics } { pipe-failed } + { Cannot~run~piped~system~commands. } + { + LaTeX~tried~to~call~a~system~process~but~this~was~not~possible.\\ + Try~the~"--shell-escape"~(or~"--enable-pipes")~option. + } +\__kernel_msg_new:nnnn { graphics } { unsupported-graphic-type } + { Image~type~'#1'~not~supported~by~current~driver. } + { + LaTeX~was~asked~to~include~an~graphic~of~type~'#1',~ + but~this~is~not~supported~by~the~current~driver~(production~route). + } +% \end{macrocode} +% +% \begin{macrocode} +%</initex|package> +% \end{macrocode} +% +% \end{implementation} +% +% \PrintIndex diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins new file mode 100644 index 00000000000..815535a352c --- /dev/null +++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.ins @@ -0,0 +1,56 @@ +\iffalse meta-comment + +File l3graphics.ins Copyright (C) 2017,2019 The LaTeX3 Project + +It may be distributed and/or modified under the conditions of the +LaTeX Project Public License (LPPL), either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in the file + + http://www.latex-project.org/lppl.txt + +This file is part of the "l3experimental bundle" (The Work in LPPL) +and all files in that bundle must be distributed together. + +----------------------------------------------------------------------- + +The development version of the bundle can be found at + + https://github.com/latex3/latex3 + +for those people who are interested. + +----------------------------------------------------------------------- + +Any modification of this file should ensure that the copyright and +license information is placed in the derived files. + +\fi + +\input l3docstrip.tex +\askforoverwritefalse + +\preamble + +Copyright (C) 2019 The LaTeX3 Project + +It may be distributed and/or modified under the conditions of +the LaTeX Project Public License (LPPL), either version 1.3c of +this license or (at your option) any later version. The latest +version of this license is in the file: + + http://www.latex-project.org/lppl.txt + +This file is part of the "l3experimental bundle" (The Work in LPPL) +and all files in that bundle must be distributed together. + +\endpreamble +% stop docstrip adding \endinput +\postamble +\endpostamble + +\keepsilent + +\generate{\file{l3graphics.sty}{\from{l3graphics.dtx}{package}}} + +\endbatchfile diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx index 33c7b8fa7a5..fb218771a5a 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-convert.dtx @@ -1,6 +1,8 @@ % \iffalse meta-comment % -%% File: l3str-convert.dtx Copyright (C) 2013-2019 The LaTeX3 Project +%% File: l3str-convert.dtx +% +% Copyright (C) 2013-2019 The LaTeX3 Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -46,7 +48,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -234,7 +236,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3str-convert}{2019-05-03}{} +\ProvidesExplPackage{l3str-convert}{2019-05-28}{} {L3 Experimental string encoding conversions} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx index afb473ccfb9..70448816fb3 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx @@ -48,7 +48,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -164,7 +164,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3str-format}{2019-05-03}{} +\ProvidesExplPackage{l3str-format}{2019-05-28}{} {L3 Experimental string formatting} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx index 173abde66b4..64ab863d807 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -136,7 +136,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3sys-shell}{2019-05-03}{} +\ProvidesExplPackage{l3sys-shell}{2019-05-28}{} {L3 Experimental system shell functions} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx index 803b8188769..59860d70d1d 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx @@ -56,7 +56,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -675,7 +675,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xcoffins}{2019-05-03}{} +\ProvidesExplPackage{xcoffins}{2019-05-28}{} {L3 Experimental design level coffins} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index 04ec76c9270..716bea363ab 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -61,7 +61,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -687,7 +687,7 @@ % % \begin{macrocode} %<*package> -\ProvidesExplPackage{l3galley}{2019-05-03}{} +\ProvidesExplPackage{l3galley}{2019-05-28}{} {L3 Experimental galley code} %</package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx index 556a51a9511..deefd7a4416 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Released 2019-05-03} +% \date{Released 2019-05-28} % % \maketitle % @@ -734,7 +734,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xgalley}{2019-05-03}{} +\ProvidesExplPackage{xgalley}{2019-05-28}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} % \end{macrocode} |