summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3packages
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-12-06 23:56:06 +0000
committerKarl Berry <karl@freefriends.org>2017-12-06 23:56:06 +0000
commitcc862e582aa0dd7c0dee16bb5475394338a07641 (patch)
treeb03dbc5b6657d47f5c61b8fcc26f04a564ad6afd /Master/texmf-dist/source/latex/l3packages
parent7ffad570b11726b0ca150867d23878fc1a949865 (diff)
l3 (7dec17)
git-svn-id: svn://tug.org/texlive/trunk@46003 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3packages')
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx35
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx110
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.ins4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx174
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.ins4
9 files changed, 185 insertions, 170 deletions
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]
-%<package>\@ifpackagelater{expl3}{2017/11/14}
+\RequirePackage{expl3}[2017/12/05]
+%<package>\@ifpackagelater{expl3}{2017/12/05}
%<package> {}
%<package> {%
%<package> \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]
-%<package>\@ifpackagelater{expl3}{2017/11/14}
+\RequirePackage{expl3}[2017/12/05]
+%<package>\@ifpackagelater{expl3}{2017/12/05}
%<package> {}
%<package> {%
%<package> \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]
-%<package>\@ifpackagelater{expl3}{2017/11/14}
+\RequirePackage{expl3}[2017/12/05]
+%<package>\@ifpackagelater{expl3}{2017/12/05}
%<package> {}
%<package> {%
%<package> \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]
-%<package>\@ifpackagelater{expl3}{2017/11/14}
+\RequirePackage{expl3}[2017/12/05]
+%<package>\@ifpackagelater{expl3}{2017/12/05}
%<package> {}
%<package> {%
%<package> \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]
-%<package>\@ifpackagelater{expl3}{2017/11/14}
+\RequirePackage{expl3}[2017/12/05]
+%<package>\@ifpackagelater{expl3}{2017/12/05}
%<package> {}
%<package> {%
%<package> \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