From cc862e582aa0dd7c0dee16bb5475394338a07641 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 6 Dec 2017 23:56:06 +0000 Subject: l3 (7dec17) git-svn-id: svn://tug.org/texlive/trunk@46003 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/l3packages/l3keys2e/l3keys2e.dtx | 10 +- .../source/latex/l3packages/l3keys2e/l3keys2e.ins | 4 +- .../texmf-dist/source/latex/l3packages/xfp/xfp.dtx | 10 +- .../source/latex/l3packages/xfrac/xfrac.dtx | 35 +++-- .../source/latex/l3packages/xfrac/xfrac.ins | 4 +- .../source/latex/l3packages/xparse/xparse.dtx | 110 ++++++------- .../source/latex/l3packages/xparse/xparse.ins | 4 +- .../latex/l3packages/xtemplate/xtemplate.dtx | 174 +++++++++++---------- .../latex/l3packages/xtemplate/xtemplate.ins | 4 +- 9 files changed, 185 insertions(+), 170 deletions(-) (limited to 'Master/texmf-dist/source/latex/l3packages') diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx index 98796da20e7..b904af63032 100644 --- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx +++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx @@ -7,7 +7,7 @@ % 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 +% https://www.latex-project.org/lppl.txt % % This file is part of the "l3packages bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -23,8 +23,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/11/14] -%\@ifpackagelater{expl3}{2017/11/14} +\RequirePackage{expl3}[2017/12/05] +%\@ifpackagelater{expl3}{2017/12/05} % {} % {% % \PackageError{l3keys2e}{Support package l3kernel too old} @@ -60,7 +60,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -131,7 +131,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{l3keys2e}{2017/11/14}{} +\ProvidesExplPackage{l3keys2e}{2017/12/05}{} {LaTeX2e option processing using LaTeX3 keys} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.ins b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.ins index f3fd165f4dd..50d667ffc22 100644 --- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.ins +++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File xparse.ins Copyright (C) 2009,2011,2012 The LaTeX3 Project +File l3keys2e.ins Copyright (C) 2009,2011,2012,2016,2017 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 @@ -21,7 +21,7 @@ The released version of this bundle is available from CTAN. \preamble -Copyright (C) 2009-2016 The LaTeX3 Project +Copyright (C) 2009-2017 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 diff --git a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx index 3da5aa06b24..56b1613bab5 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx @@ -7,7 +7,7 @@ % 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 +% https://www.latex-project.org/lppl.txt % % This file is part of the "l3packages bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -23,8 +23,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/11/14] -%\@ifpackagelater{expl3}{2017/11/14} +\RequirePackage{expl3}[2017/12/05] +%\@ifpackagelater{expl3}{2017/12/05} % {} % {% % \PackageError{xfp}{Support package l3kernel too old} @@ -62,7 +62,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -159,7 +159,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfp}{2017/11/14}{} +\ProvidesExplPackage{xfp}{2017/12/05}{} {L3 Floating point unit} % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx index f93ccd152a8..57c52c61b36 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx @@ -8,7 +8,7 @@ % 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 +% https://www.latex-project.org/lppl.txt % % This file is part of the "l3packages bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -24,8 +24,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/11/14] -%\@ifpackagelater{expl3}{2017/11/14} +\RequirePackage{expl3}[2017/12/05] +%\@ifpackagelater{expl3}{2017/12/05} % {} % {% % \PackageError{xfrac}{Support package l3kernel too old} @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -533,7 +533,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xfrac}{2017/11/14}{} +\ProvidesExplPackage{xfrac}{2017/12/05}{} {L3 Experimental split-level fractions} % \end{macrocode} % @@ -568,7 +568,7 @@ % \end{variable} % \end{variable} % -% \begin{macro}[aux]{\@@_tmp:w} +% \begin{macro}{\@@_tmp:w} % Used for the raised boxes: weird as it does not take an argument % but the \cs{raisebox} does. % \begin{macrocode} @@ -745,9 +745,8 @@ false = \cs_set:Npn \@@_relscale: { - \__dim_eval:w - \box_ht:N \l_@@_tmp_box + \box_dp:N \l_@@_tmp_box - \__dim_eval_end: + \__dim_eval:n + { \box_ht:N \l_@@_tmp_box + \box_dp:N \l_@@_tmp_box } }, true = \cs_set:Npn \@@_relscale: @@ -843,11 +842,12 @@ { \raisebox { - \__dim_eval:w + \__dim_eval:n + { \box_ht:N \l_@@_slash_box - - \box_dp:N \l_@@_slash_box - - \height - \__dim_eval_end: + - \box_dp:N \l_@@_slash_box + - \height + } } } \dim_compare:nNnTF @@ -871,11 +871,12 @@ { \raisebox { - \__dim_eval:w + \__dim_eval:n + { \box_ht:N \l_@@_slash_box - - \dim_use:N \l_@@_numerator_top_sep_dim - - \height - \__dim_eval_end: + - \dim_use:N \l_@@_numerator_top_sep_dim + - \height + } } } } diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.ins b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.ins index 12e0cca6158..90f4d8ccee5 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.ins +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.ins @@ -1,7 +1,7 @@ \iffalse meta-comment File xfrac.ins Copyright (C) 2004, 2008-2010 Morten Hoegholm - (C) 2011,2012 The LaTeX3 Project + (C) 2011,2012,2016,2017 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 @@ -22,7 +22,7 @@ The released version of this bundle is available from CTAN. \preamble -Copyright (C) 2011-2016 The LaTeX3 Project +Copyright (C) 2011-2017 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 diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx index 3727f843911..7dfc3d4d0eb 100644 --- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx @@ -11,7 +11,7 @@ % 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 +% https://www.latex-project.org/lppl.txt % % This file is part of the "l3packages bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -27,8 +27,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/11/14] -%\@ifpackagelater{expl3}{2017/11/14} +\RequirePackage{expl3}[2017/12/05] +%\@ifpackagelater{expl3}{2017/12/05} % {} % {% % \PackageError{xparse}{Support package l3kernel too old} @@ -67,7 +67,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -776,7 +776,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xparse}{2017/11/14}{} +\ProvidesExplPackage{xparse}{2017/12/05}{} {L3 Experimental document command parser} % \end{macrocode} % @@ -1008,8 +1008,8 @@ % \subsection{Declaring commands and environments} % % \begin{macro}{\@@_declare_cmd:Nnn, \@@_declare_expandable_cmd:Nnn} -% \begin{macro}[aux]{\@@_declare_cmd_aux:Nnn} -% \begin{macro}[int] +% \begin{macro}{\@@_declare_cmd_aux:Nnn} +% \begin{macro} % {\@@_declare_cmd_internal:Nnn, \@@_declare_cmd_internal:cnx} % The main functions for creating commands set the appropriate flag then % use the same internal code to do the definition. @@ -1076,7 +1076,7 @@ % \end{macro} % % \begin{macro}{\@@_declare_cmd_code:Nnn} -% \begin{macro}[aux] +% \begin{macro} % {\@@_declare_cmd_code_aux:Nnn, \@@_declare_cmd_code_expandable:Nnn} % The appropriate auxiliary is called. % \begin{macrocode} @@ -1180,7 +1180,7 @@ % \end{macro} % % \begin{macro}{\@@_declare_env:nnnn} -% \begin{macro}[int]{\@@_declare_env_internal:nnnn} +% \begin{macro}{\@@_declare_env_internal:nnnn} % The lead-off to creating an environment is much the same as that for % creating a command: issue the appropriate message, store the argument % specification then hand off to an internal function. @@ -1242,7 +1242,7 @@ % \subsection{Structure of \pkg{xparse} commands} % % \begin{macro}{\@@_start:nNNnnn} -% \begin{macro}[aux]{\@@_start_aux:nNNnnn} +% \begin{macro}{\@@_start_aux:nNNnnn} % This sets up a few variables to minimize the boilerplate code % included in all \pkg{xparse}-defined commands. It then runs the % grabbers~|#4|. Again, the argument specification |#1| is only for @@ -1283,8 +1283,8 @@ % \end{macro} % % \begin{macro}{\@@_defaults:} -% \begin{macro}[aux]{\@@_defaults_def:, \@@_defaults_def:nn, \@@_defaults_def:nnn} -% \begin{macro}[aux]{\@@_defaults_aux:, \@@_defaults_error:w} +% \begin{macro}{\@@_defaults_def:, \@@_defaults_def:nn, \@@_defaults_def:nnn} +% \begin{macro}{\@@_defaults_aux:, \@@_defaults_error:w} % First construct \cs{@@_tmp:w} (see below) that will receive % the arguments found so far and determine default values for any % missing argument. Then call it repeatedly until the set of @@ -1360,7 +1360,7 @@ % \end{macro} % % \begin{macro}{\@@_args_process:} -% \begin{macro}[aux]{\@@_args_process_loop:nn, \@@_args_process_aux:n, \@@_args_process_aux:nn} +% \begin{macro}{\@@_args_process_loop:nn, \@@_args_process_aux:n, \@@_args_process_aux:nn} % Loop through arguments (stored in \cs{l_@@_args_tl}) and the % corresponding processors (in \cs{l_@@_process_all_tl}) % simultaneously, apply all processors for each argument and store the @@ -1404,11 +1404,11 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_end_expandable:NNw} -% \begin{macro}[EXP,aux]{\@@_end_expandable_aux:w} -% \begin{macro}[EXP,aux]{\@@_end_expandable_aux:nNNNN} -% \begin{macro}[EXP,aux]{\@@_end_expandable_defaults:nnnNNn} -% \begin{macro}[EXP,aux]{\@@_end_expandable_defaults:nnw} -% \begin{macro}[EXP,aux]{\@@_end_expandable_defaults:nw} +% \begin{macro}[EXP]{\@@_end_expandable_aux:w} +% \begin{macro}[EXP]{\@@_end_expandable_aux:nNNNN} +% \begin{macro}[EXP]{\@@_end_expandable_defaults:nnnNNn} +% \begin{macro}[EXP]{\@@_end_expandable_defaults:nnw} +% \begin{macro}[EXP]{\@@_end_expandable_defaults:nw} % Followed by a function |#1| to determine default values (or |?| if % there are no defaults), the code % |#2|, arguments that have been grabbed, then \cs{q_@@} and two generic @@ -1655,7 +1655,7 @@ % \@@_normalize_type_G:w, % \@@_normalize_type_t:w, % } -% \begin{macro}[aux]{\@@_normalize_E_unique_check:w} +% \begin{macro}{\@@_normalize_E_unique_check:w} % Optional argument types. Check that all required data is present % (and consists of single characters if applicable) and check for % forbidden types for expandable commands. For \texttt{E}-type @@ -2321,7 +2321,7 @@ % \end{macro} % % \begin{macro}{\@@_add_expandable_type_E:w} -% \begin{macro}[aux]{\@@_add_expandable_type_E_aux:n} +% \begin{macro}{\@@_add_expandable_type_E_aux:n} % For each embellishment, use \cs{@@_get_grabber:NN} to obtain an % auxiliary delimited by that token and store a pair constituted of % the auxiliary and the token in \cs{l_@@_tmpb_tl}, before appending @@ -2438,8 +2438,8 @@ % \end{macro} % % \begin{macro}{\@@_get_grabber:NN} -% \begin{macro}[aux]{\@@_get_grabber_auxi:NN} -% \begin{macro}[aux]{\@@_get_grabber_auxii:NN} +% \begin{macro}{\@@_get_grabber_auxi:NN} +% \begin{macro}{\@@_get_grabber_auxii:NN} % Given a token |#1|, defines an expandable function delimited by that % token and stores it in the token list~|#2|. The function is named % after the token, unless that function name is already taken by some @@ -2519,8 +2519,8 @@ \cs_new_protected:Npn \@@_grab_D_long_trailing:w #1#2#3 \@@_run_code: { \@@_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected:Npn { } } % \end{macrocode} -% \begin{macro}[aux]{\@@_grab_D_aux:NNnNn} -% \begin{macro}[aux]{\@@_grab_D_aux:NNnN} +% \begin{macro}{\@@_grab_D_aux:NNnNn} +% \begin{macro}{\@@_grab_D_aux:NNnN} % This is a bit complicated. The idea is that, in order to check for % nested optional argument tokens (\texttt{[[...]]} and so on) the % argument needs to be grabbed without removing any braces at all. If @@ -2571,8 +2571,8 @@ % \end{macro} % \end{macro} % \end{macro} -% \begin{macro}[aux]{\@@_grab_D_nested:NNnN} -% \begin{macro}[aux]{\@@_grab_D_nested:w} +% \begin{macro}{\@@_grab_D_nested:NNnN} +% \begin{macro}{\@@_grab_D_nested:w} % \begin{macro}{\l_@@_nesting_a_tl} % \begin{macro}{\l_@@_nesting_b_tl} % \begin{macro}{\q_@@} @@ -2670,9 +2670,9 @@ % \@@_grab_E:w, \@@_grab_E_long:w, % \@@_grab_E_trailing:w, \@@_grab_E_long_trailing:w % } -% \begin{macro}[aux]{\@@_grab_E:nnNn} -% \begin{macro}[aux]{\@@_grab_E_loop:nnN} -% \begin{macro}[aux]{\@@_grab_E_finalise:} +% \begin{macro}{\@@_grab_E:nnNn} +% \begin{macro}{\@@_grab_E_loop:nnN} +% \begin{macro}{\@@_grab_E_finalise:} % Everything here needs to point to a loop. % \begin{macrocode} \cs_new_protected:Npn \@@_grab_E:w #1#2 \@@_run_code: @@ -2748,7 +2748,7 @@ % \begin{macro}{\@@_grab_G_long:w} % \begin{macro}{\@@_grab_G_trailing:w} % \begin{macro}{\@@_grab_G_long_trailing:w} -% \begin{macro}[aux]{\@@_grab_G_aux:nNn} +% \begin{macro}{\@@_grab_G_aux:nNn} % Optional groups are checked by meaning, so that the same code will % work with, for example, Con\TeX{}t-like input. % \begin{macrocode} @@ -2783,7 +2783,7 @@ % % \begin{macro}{\@@_grab_l:w} % \begin{macro}{\@@_grab_l_long:w} -% \begin{macro}[aux]{\@@_grab_l_aux:nN} +% \begin{macro}{\@@_grab_l_aux:nN} % Argument grabbers for mandatory \TeX{} arguments are pretty simple. % \begin{macrocode} \cs_new_protected:Npn \@@_grab_l:w #1 \@@_run_code: @@ -2833,7 +2833,7 @@ % \begin{macro}{\@@_grab_m_7:w} % \begin{macro}{\@@_grab_m_8:w} % \begin{macro}{\@@_grab_m_9:w} -% \begin{macro}[aux]{\@@_grab_m_aux:Nnnnnnnnn} +% \begin{macro}{\@@_grab_m_aux:Nnnnnnnnn} % Grabbing 1--8 mandatory arguments is done by giving 8--1 known % arguments to a 9-argument function that stores them in % \cs{l_@@_args_tl}. For simplicity, grabbing 9 mandatory arguments @@ -2911,7 +2911,7 @@ % \end{macro} % % \begin{macro}{\@@_grab_R:w, \@@_grab_R_long:w} -% \begin{macro}[aux]{\@@_grab_R_aux:NNnN} +% \begin{macro}{\@@_grab_R_aux:NNnN} % The grabber for \texttt{R}-type arguments is basically the same as % that for \texttt{D}-type ones, but always skips spaces (as it is mandatory) % and has a hard-coded error message. @@ -2940,7 +2940,7 @@ % \begin{macro}{\@@_grab_t_long:w} % \begin{macro}{\@@_grab_t_trailing:w} % \begin{macro}{\@@_grab_t_long_trailing:w} -% \begin{macro}[aux]{\@@_grab_t_aux:NNw} +% \begin{macro}{\@@_grab_t_aux:NNw} % Dealing with a token is quite easy. Check the match, remove the % token if needed and add a flag to the output. % \begin{macrocode} @@ -2970,7 +2970,7 @@ % % \begin{macro}{\@@_grab_u:w} % \begin{macro}{\@@_grab_u_long:w} -% \begin{macro}[aux]{\@@_grab_u_aux:nnN} +% \begin{macro}{\@@_grab_u_aux:nnN} % Grabbing up to a list of tokens is quite easy: define the grabber, % and then collect. % \begin{macrocode} @@ -3271,10 +3271,10 @@ % \subsection{Grabbing arguments expandably} % % \begin{macro}[EXP]{\@@_expandable_grab_D:w} -% \begin{macro}[EXP, aux]{\@@_expandable_grab_D:NNNwNNn} -% \begin{macro}[EXP, aux]{\@@_expandable_grab_D:NNNwNNnnn} -% \begin{macro}[EXP, aux]{\@@_expandable_grab_D:Nw} -% \begin{macro}[EXP, aux]{\@@_expandable_grab_D:nnNNNwNN} +% \begin{macro}[EXP]{\@@_expandable_grab_D:NNNwNNn} +% \begin{macro}[EXP]{\@@_expandable_grab_D:NNNwNNnnn} +% \begin{macro}[EXP]{\@@_expandable_grab_D:Nw} +% \begin{macro}[EXP]{\@@_expandable_grab_D:nnNNNwNN} % The first step is to grab the first token or group. The generic grabbers % \cs{\meta{function}}\verb*| | and \cs{\meta{function}}\verb*| | are just after \cs{q_@@}, we go and find % them (and use the long one). @@ -3450,12 +3450,12 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_expandable_grab_E:w, \@@_expandable_grab_E_long:w} -% \begin{macro}[EXP,aux]{\@@_expandable_grab_E_aux:w} -% \begin{macro}[EXP,aux]{\@@_expandable_grab_E_test:nnw} -% \begin{macro}[EXP,aux]{\@@_expandable_grab_E_loop:nnnNNw} -% \begin{macro}[EXP,aux]{\@@_expandable_grab_E_find:w} -% \begin{macro}[EXP,aux]{\@@_expandable_grab_E_find:nnw} -% \begin{macro}[EXP,aux]{\@@_expandable_grab_E_end:nnw} +% \begin{macro}[EXP]{\@@_expandable_grab_E_aux:w} +% \begin{macro}[EXP]{\@@_expandable_grab_E_test:nnw} +% \begin{macro}[EXP]{\@@_expandable_grab_E_loop:nnnNNw} +% \begin{macro}[EXP]{\@@_expandable_grab_E_find:w} +% \begin{macro}[EXP]{\@@_expandable_grab_E_find:nnw} +% \begin{macro}[EXP]{\@@_expandable_grab_E_end:nnw} % We keep track of long/short by placing the appropriate grabber as % the third token after \cs{q_@@}; it is eventually removed by the % \texttt{end:nnw} auxiliary. The \texttt{aux:w} auxiliary will be @@ -3527,7 +3527,7 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_expandable_grab_m:w, \@@_expandable_grab_m_long:w} -% \begin{macro}[EXP, aux]{\@@_expandable_grab_m_aux:wNn} +% \begin{macro}[EXP]{\@@_expandable_grab_m_aux:wNn} % The mandatory case is easy: find the auxiliary after the \cs{q_@@}, % and use it directly to grab the argument, then correctly position % the argument before \cs{q_@@}. @@ -3543,7 +3543,7 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_expandable_grab_R:w} -% \begin{macro}[EXP, aux]{\@@_expandable_grab_R_aux:NNNwNNn} +% \begin{macro}[EXP]{\@@_expandable_grab_R_aux:NNNwNNn} % Much the same as for the \texttt{D}-type argument, with only the lead-off % function varying. % \begin{macrocode} @@ -3614,7 +3614,7 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_expandable_grab_t:w} -% \begin{macro}[EXP, aux]{\@@_expandable_grab_t_aux:NNwn} +% \begin{macro}[EXP]{\@@_expandable_grab_t_aux:NNwn} % As for a \texttt{D}-type argument, here we compare the grabbed tokens using % the only parser we have in order to work out if |#2| is exactly equal to % the output of the grabber. @@ -3664,8 +3664,8 @@ % % \begin{variable}{\l_@@_split_list_seq, \l_@@_split_list_tl} % \begin{macro}{\@@_split_list:nn} -% \begin{macro}[aux]{\@@_split_list_multi:nn, \@@_split_list_multi:nV} -% \begin{macro}[aux]{\@@_split_list_single:Nn} +% \begin{macro}{\@@_split_list_multi:nn, \@@_split_list_multi:nV} +% \begin{macro}{\@@_split_list_single:Nn} % Splitting can take place either at a single token or at a longer % identifier. To deal with single active tokens, a two-part procedure is % needed. @@ -3712,9 +3712,9 @@ % \end{variable} % % \begin{macro}{\@@_split_argument:nnn} -% \begin{macro}[aux]{\@@_split_argument_aux:nnnn} -% \begin{macro}[aux, EXP]{\@@_split_argument_aux:n} -% \begin{macro}[aux, rEXP]{\@@_split_argument_aux:wn} +% \begin{macro}{\@@_split_argument_aux:nnnn} +% \begin{macro}[EXP]{\@@_split_argument_aux:n} +% \begin{macro}[rEXP]{\@@_split_argument_aux:wn} % Splitting to a known number of items is a special version of splitting % a list, in which the limit is hard-coded and where there will always be % exactly the correct number of output items. An auxiliary function is @@ -3930,7 +3930,7 @@ % \end{macro} % % \begin{macro}{\@@_tl_mapthread_function:NNN, \@@_tl_mapthread_function:nnN} -% \begin{macro}[aux]{\@@_tl_mapthread_loop:w} +% \begin{macro}{\@@_tl_mapthread_loop:w} % Analogue of \cs{seq_mapthread_function:NNN} for token lists. % \begin{macrocode} \cs_new:Npn \@@_tl_mapthread_function:NNN #1#2#3 @@ -3964,7 +3964,7 @@ % \end{macro} % % \begin{macro}{\@@_cmd_if_xparse:NTF} -% \begin{macro}[aux]{\@@_cmd_if_xparse_aux:N} +% \begin{macro}{\@@_cmd_if_xparse_aux:N} % To determine whether the command is an \pkg{xparse} command check % that its |arg_spec| is empty (this also excludes non-macros) and % that its |replacement_spec| starts with either \cs{@@_start:nNNnnn} diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins index 817023b80f8..b4e4979577f 100644 --- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins +++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File xparse.ins Copyright (C) 2000-2012 The LaTeX3 Project +File xparse.ins Copyright (C) 2000-2012,2016,2017 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 @@ -21,7 +21,7 @@ The released version of this bundle is available from CTAN. \preamble -Copyright (C) 2009-2016 The LaTeX3 Project +Copyright (C) 2009-2017 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 diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx index 3119370847e..feffe2b561c 100644 --- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx @@ -4,14 +4,14 @@ %% David Carlisle %% (C) Copyright 2004-2010 Frank Mittelbach, %% The LaTeX3 Project -%% (C) Copyright 2011-2016 The LaTeX3 Project +%% (C) Copyright 2011-2017 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 +% https://www.latex-project.org/lppl.txt % % This file is part of the "l3packages bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. @@ -27,8 +27,8 @@ %<*driver|package> % The version of expl3 required is tested as early as possible, as % some really old versions do not define \ProvidesExplPackage. -\RequirePackage{expl3}[2017/11/14] -%\@ifpackagelater{expl3}{2017/11/14} +\RequirePackage{expl3}[2017/12/05] +%\@ifpackagelater{expl3}{2017/12/05} % {} % {% % \PackageError{xtemplate}{Support package l3kernel too old} @@ -63,7 +63,7 @@ % }^^A % } % -% \date{Released 2017/11/14} +% \date{Released 2017/12/05} % % \maketitle % @@ -682,7 +682,7 @@ % \end{macrocode} % % \begin{macrocode} -\ProvidesExplPackage{xtemplate}{2017/11/14}{} +\ProvidesExplPackage{xtemplate}{2017/12/05}{} {L3 Experimental prototype document functions} % \end{macrocode} % @@ -717,13 +717,12 @@ % \end{variable} % % \begin{variable}{\c_@@_keytypes_arg_seq} -% A list of keytypes which also need additional data (an argument), used -% to parse the keytype correctly. +% A list of keytypes which also need additional data (an argument), +% used to parse the keytype correctly. We suspend debugging to allow +% an assignment to a constant. % \begin{macrocode} -\seq_new:N \c_@@_keytypes_arg_seq -\seq_put_right:Nn \c_@@_keytypes_arg_seq { choice } -\seq_put_right:Nn \c_@@_keytypes_arg_seq { function } -\seq_put_right:Nn \c_@@_keytypes_arg_seq { instance } +\seq_const_from_clist:Nn \c_@@_keytypes_arg_seq + { choice , function , instance } % \end{macrocode} % \end{variable} % @@ -1070,34 +1069,64 @@ % \begin{macro}{\@@_recover_vars:n} % Recovering the stored data for a template is rather less complex % than storing it. All that happens is the data is transferred from -% the permanent to the scratch storage. +% the permanent to the scratch storage. However, we need to check the +% scratch storage does exist. % \begin{macrocode} \cs_new_protected:Npn \@@_recover_defaults:n #1 { - \prop_set_eq:Nc \l_@@_values_prop + \prop_if_exist:cTF { \c_@@_defaults_root_tl #1 } + { + \prop_set_eq:Nc \l_@@_values_prop + { \c_@@_defaults_root_tl #1 } + } + { \prop_clear:N \l_@@_values_prop } } \cs_new_protected:Npn \@@_recover_keytypes:n #1 { - \prop_set_eq:Nc \l_@@_keytypes_prop + \prop_if_exist:cTF { \c_@@_keytypes_root_tl #1 } - \seq_set_eq:Nc \l_@@_key_order_seq - { \c_@@_key_order_root_tl #1 } + { + \prop_set_eq:Nc \l_@@_keytypes_prop + { \c_@@_keytypes_root_tl #1 } + } + { \prop_clear:N \l_@@_keytypes_prop } + \seq_if_exist:cTF { \c_@@_key_order_root_tl #1 } + { + \seq_set_eq:Nc \l_@@_key_order_seq + { \c_@@_key_order_root_tl #1 } + } + { \seq_clear:N \l_@@_key_order_seq } } \cs_new_protected:Npn \@@_recover_restrictions:n #1 { - \clist_set_eq:Nc \l_@@_restrict_clist + \clist_if_exist:cTF { \c_@@_restrict_root_tl #1 } + { + \clist_set_eq:Nc \l_@@_restrict_clist + { \c_@@_restrict_root_tl #1 } + } + { \clist_clear:N \l_@@_restrict_clist } } \cs_new_protected:Npn \@@_recover_values:n #1 { - \prop_set_eq:Nc \l_@@_values_prop + \prop_if_exist:cTF { \c_@@_values_root_tl #1 } + { + \prop_set_eq:Nc \l_@@_values_prop + { \c_@@_values_root_tl #1 } + } + { \prop_clear:N \l_@@_values_prop } } \cs_new_protected:Npn \@@_recover_vars:n #1 { - \prop_set_eq:Nc \l_@@_vars_prop + \prop_if_exist:cTF { \c_@@_vars_root_tl #1 } + { + \prop_set_eq:Nc \l_@@_vars_prop + { \c_@@_vars_root_tl #1 } + } + { \prop_clear:N \l_@@_vars_prop } } % \end{macrocode} % \end{macro} @@ -1169,8 +1198,8 @@ % \end{macro} % % \begin{macro}{\@@_parse_keys_elt:n} -% \begin{macro}[aux]{\@@_parse_keys_elt_aux:n} -% \begin{macro}[aux]{\@@_parse_keys_elt_aux:} +% \begin{macro}{\@@_parse_keys_elt_aux:n} +% \begin{macro}{\@@_parse_keys_elt_aux:} % Processing the key part of the key--value pair is always carried out % using this function, even if a value was found. First, the key name % is separated from the keytype, and if necessary the keytype is @@ -1252,7 +1281,7 @@ % \end{macro} % % \begin{macro}{\@@_split_keytype:n} -% \begin{macro}[aux]{\@@_split_keytype_aux:w} +% \begin{macro}{\@@_split_keytype_aux:w} % The keytype and key name should be separated by |:|. As the % definition might be given inside or outside of a code block, spaces % are removed and the category code of colons is standardised. After @@ -1307,8 +1336,8 @@ % \end{macro} % % \begin{macro}{\@@_split_keytype_arg:n, \@@_split_keytype_arg:o} -% \begin{macro}[aux]{\@@_split_keytype_arg_aux:n} -% \begin{macro}[aux]{\@@_split_keytype_arg_aux:w} +% \begin{macro}{\@@_split_keytype_arg_aux:n} +% \begin{macro}{\@@_split_keytype_arg_aux:w} % The second stage of sorting out the keytype is to check for an % argument. As there is no convenient delimiting token to look for, % a check is made instead for each possible text value for the keytype. @@ -1571,8 +1600,8 @@ } % \end{macrocode} % \end{macro} -% \begin{macro}[aux]{\@@_parse_vars_elt_aux:n} -% \begin{macro}[aux]{\@@_parse_vars_elt_aux:w} +% \begin{macro}{\@@_parse_vars_elt_aux:n} +% \begin{macro}{\@@_parse_vars_elt_aux:w} % There now needs to be some sanity checking on the variable name % given. This does not apply for \texttt{choice} or % \texttt{code} \enquote{variables}, but in all other cases the variable @@ -1656,7 +1685,7 @@ % \end{macro} % % \begin{macro}{\@@_implement_choices:n} -% \begin{macro}[aux]{\@@_implement_choices_default:} +% \begin{macro}{\@@_implement_choices_default:} % Implementing choices requires a second key--value loop. So after a % little set-up, the standard parser is called. % \begin{macrocode} @@ -1778,7 +1807,7 @@ % \end{macro} % % \begin{macro}{\@@_edit_defaults:nnn} -% \begin{macro}[aux]{\@@_edit_defaults_aux:nnn} +% \begin{macro}{\@@_edit_defaults_aux:nnn} % Editing the template defaults means getting the values back out % of the store, then parsing the list of new values before putting % the updated list back into storage. The auxiliary function is used @@ -1831,7 +1860,7 @@ % \end{macro} % % \begin{macro}{\@@_parse_values_elt:nn} -% \begin{macro}[aux]{\@@_parse_values_elt_aux:n} +% \begin{macro}{\@@_parse_values_elt_aux:n} % To store the value, find the keytype then call the saving function. % These need the current key name saved as \cs{l_@@_key_name_tl}. % When a template is being restricted, the setting code will be @@ -1889,7 +1918,7 @@ %\subsection{Creating instances of templates} % % \begin{macro}{\@@_declare_instance:nnnnn} -% \begin{macro}[aux]{\@@_declare_instance_aux:nnnnn} +% \begin{macro}{\@@_declare_instance_aux:nnnnn} % Making an instance has two distinct parts. First, the keys given are % parsed to transfer the values into the structured data format used % internally. This allows the default and given values to be combined @@ -1935,8 +1964,8 @@ % \end{macro} % % \begin{macro}{\@@_edit_instance:nnnn} -% \begin{macro}[aux]{\@@_edit_instance_aux:nnnnn} -% \begin{macro}[aux]{\@@_edit_instance_aux:nonnn} +% \begin{macro}{\@@_edit_instance_aux:nnnnn} +% \begin{macro}{\@@_edit_instance_aux:nonnn} % Editing an instance is almost identical to declaring one. The only % variation is the source of the values to use. When editing, they are % recovered from the previous instance run. @@ -1968,9 +1997,9 @@ % \end{macro} % % \begin{macro}{\@@_convert_to_assignments:} -% \begin{macro}[aux]{\@@_convert_to_assignments_aux:n} -% \begin{macro}[aux]{\@@_convert_to_assignments_aux:nn} -% \begin{macro}[aux]{\@@_convert_to_assignments_aux:no} +% \begin{macro}{\@@_convert_to_assignments_aux:n} +% \begin{macro}{\@@_convert_to_assignments_aux:nn} +% \begin{macro}{\@@_convert_to_assignments_aux:no} % The idea on converting to a set of assignments is to loop over each % key, so that the loop order follows the declaration order of the keys. % This is done using a sequence as property lists are not @@ -2022,7 +2051,7 @@ % \end{macro} % % \begin{macro}{\@@_find_global:} -% \begin{macro}[aux]{\@@_find_global_aux:w} +% \begin{macro}{\@@_find_global_aux:w} % Global assignments should have the phrase |global| at the front. % This is pretty easy to find: no other error checking, though. % \begin{macrocode} @@ -2068,7 +2097,7 @@ % \subsection{Assigning values to variables} % % \begin{macro}{\@@_assign_boolean:} -% \begin{macro}[aux]{\@@_assign_boolean_aux:n} +% \begin{macro}{\@@_assign_boolean_aux:n} % Setting a Boolean value is slightly different to everything else % as the value can be used to work out which \texttt{set} function to % call. As long as there is no need to recover things from another @@ -2107,7 +2136,7 @@ % \end{macro} % % \begin{macro}{\@@_assign_choice:} -% \begin{macro}[aux] +% \begin{macro} % {\@@_assign_choice_aux:n, \@@_assign_choice_aux:o} % The idea here is to find either the choice as-given or else the % special |unknown| choice, and to copy the appropriate code across. @@ -2163,7 +2192,7 @@ % \end{macro} % % \begin{macro}{\@@_assign_function:} -% \begin{macro}[aux]{\@@_assign_function_aux:N} +% \begin{macro}{\@@_assign_function_aux:N} % This looks a bit messy but is only actually one function. % \begin{macrocode} \cs_new_protected:Npn \@@_assign_function: @@ -2188,7 +2217,7 @@ % \end{macro} % % \begin{macro}{\@@_assign_instance:} -% \begin{macro}[aux]{\@@_assign_instance_aux:N} +% \begin{macro}{\@@_assign_instance_aux:N} % Using an instance means adding the appropriate function creation to % the tl. No checks are made at this stage, so if the instance is % not valid then errors will arise later. @@ -2261,7 +2290,7 @@ % \end{macro} % % \begin{macro}{\@@_assign_tokenlist:} -% \begin{macro}[aux]{\@@_assign_tokenlist_aux:NN} +% \begin{macro}{\@@_assign_tokenlist_aux:NN} % Life would be easy here if it were not for \cs{KeyValue}. To deal % correctly with that, we need to allow for the recovery a a stored value % at point of use. @@ -2326,8 +2355,8 @@ % \end{macro} % % \begin{macro}{\@@_key_to_value:} -% \begin{macro}[aux]{\@@_key_to_value_auxi:w} -% \begin{macro}[aux]{\@@_key_to_value_auxii:w} +% \begin{macro}{\@@_key_to_value_auxi:w} +% \begin{macro}{\@@_key_to_value_auxii:w} % The idea here is to recover the attribute value of another key. To % do that, the marker is removed and a look up takes place. If this % is successful, then the name of the variable of the attribute is @@ -2368,8 +2397,8 @@ % \subsection{Using instances} % % \begin{macro}{\@@_use_instance:nn} -% \begin{macro}[aux]{\@@_use_instance_aux:nNnnn} -% \begin{macro}[aux]{\@@_use_instance_aux:nn} +% \begin{macro}{\@@_use_instance_aux:nNnnn} +% \begin{macro}{\@@_use_instance_aux:nn} % Using an instance is just a question of finding the appropriate % function. There is the possibility that a collection instance exists, % so this is checked before trying the general instance. If nothing is @@ -2474,7 +2503,7 @@ % \@@_show_defaults:nn, \@@_show_keytypes:nn, % \@@_show_vars:nn % } -% \begin{macro}[int]{\@@_show:Nnnn} +% \begin{macro}{\@@_show:Nnnn} % A modified version of the property-list printing code, such that % the output refers to templates and instances rather than to the % underlying structures. @@ -2508,11 +2537,11 @@ } \cs_new_protected:Npn \@@_show:Nnnn #1#2#3#4 { - \__msg_show_pre:nnnnnn { xtemplate } - { \prop_if_empty:NTF #1 { show-no-attribute } { show-attribute } } - {#2} {#3} {#4} { } - \__msg_show_wrap:n - { \prop_map_function:NN #1 \__msg_show_item_unbraced:nn } + \msg_show:nnxxxx { xtemplate } { show-attribute } + { \tl_to_str:n {#2} } + { \tl_to_str:n {#3} } + { \tl_to_str:n {#4} } + { \prop_map_function:NN #1 \msg_show_item_unbraced:nn } } % \end{macrocode} % \end{macro} @@ -2527,23 +2556,13 @@ \@@_if_instance_exist:nnnT {#1} {#2} {#3} { \@@_recover_values:n { #1 / #2 / #3 } - \prop_if_empty:NTF \l_@@_values_prop + \msg_show:nnxxxx { xtemplate } { show-values } + { \tl_to_str:n {#1} } + { \tl_to_str:n {#2} } + { \tl_to_str:n {#3} } { - \__msg_show_pre:nnnnnn { xtemplate } { show-no-values } - {#1} {#2} {#3} { } - \__msg_show_wrap:n { } - } - { - \prop_pop:NnNF \l_@@_values_prop { from~template } - \l_@@_tmp_tl - { \tl_clear:N \l_@@_tmp_tl } - \__msg_show_pre:nnnnnV { xtemplate } { show-values } - {#1} {#2} {#3} \l_@@_tmp_tl - \__msg_show_wrap:n - { - \prop_map_function:NN \l_@@_values_prop - \__msg_show_item_unbraced:nn - } + \prop_map_function:NN \l_@@_values_prop + \msg_show_item_unbraced:nn } } } @@ -2740,23 +2759,18 @@ Declaring~interface~for~template~'#2'~of~object~type~'#1'~ \msg_line_context:. } -\msg_new:nnn { xtemplate } { show-no-attribute } - { The~template~'#2'~of~object~type~'#1'~has~no~#3 . } \msg_new:nnn { xtemplate } { show-attribute } - { The~template~'#2'~of~object~type~'#1'~has~#3 : } -\msg_new:nnn { xtemplate } { show-no-values } { - The~ \tl_if_empty:nF {#2} {collection~} instance~'#3'~ - \tl_if_empty:nF {#2} { (from~collection~'#2')~ } - of~object~type~'#1'~has~no~values. + The~template~'#2'~of~object~type~'#1'~has~ + \tl_if_empty:nTF {#4} { no~#3. } { #3 : #4 } } \msg_new:nnn { xtemplate } { show-values } { - The~ \tl_if_empty:nF {#2} {collection~} instance~'#3'~ - \tl_if_empty:nF {#2} { (from~collection~'#2')~ } - of~object~type~'#1'~ - \tl_if_empty:nF {#4} { (from~template~'#4')~ } - has~values: + \tl_if_empty:nTF {#2} + { The~instance~'#3'~ } + { The~collection~ instance~'#3'~ (from~collection~'#2')~ } + of~object~type~'#1'~has~ + \tl_if_empty:nTF {#4} { no~values. } { values: #4 } } % \end{macrocode} % diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.ins b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.ins index 086a41a4cc5..4734317cc20 100644 --- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.ins +++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File xtemplate.ins Copyright (C) 2000-2012,2016 The LaTeX3 Project +File xtemplate.ins Copyright (C) 2000-2012,2016,2017 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 @@ -32,7 +32,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2011-2016 The LaTeX3 Project +Copyright (C) 2011-2017 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 -- cgit v1.2.3