diff options
Diffstat (limited to 'Master/texmf-dist/source/latex')
20 files changed, 197 insertions, 256 deletions
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.ins b/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.ins deleted file mode 100644 index b6165791b96..00000000000 --- a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.ins +++ /dev/null @@ -1,56 +0,0 @@ -\iffalse meta-comment - -File l3sort.ins Copyright (C) 2012,2106 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) 2012-2016 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{l3sort.sty}{\from{l3sort.dtx}{package}}} - -\endbatchfile diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx index 4fc1e4ad543..441a5be48d1 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3flag.dtx @@ -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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} +\RequirePackage{expl3}[2017/02/07] +%<package>\@ifpackagelater{expl3}{2017/02/07} %<package> {} %<package> {% %<package> \PackageError{l3flag}{Support package l3kernel too old} @@ -36,7 +36,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3flag.dtx 6829 2017-01-28 08:52:51Z joseph $ +\GetIdInfo$Id: l3flag.dtx 6846 2017-02-07 07:04:19Z joseph $ {L3 Experimental flags} %</driver|package> %<*driver> diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx index 18b0be30f7e..b1711cbd47f 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3regex.dtx @@ -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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} +\RequirePackage{expl3}[2017/02/07] +%<package>\@ifpackagelater{expl3}{2017/02/07} %<package> {} %<package> {% %<package> \PackageError{l3regex}{Support package l3kernel too old} @@ -36,7 +36,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3regex.dtx 6829 2017-01-28 08:52:51Z joseph $ +\GetIdInfo$Id: l3regex.dtx 6846 2017-02-07 07:04:19Z joseph $ {L3 Experimental regular expressions} %</driver|package> %<*driver> diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx index 7b566c75df3..ccf2b6d3705 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3tl-build.dtx @@ -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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} +\RequirePackage{expl3}[2017/02/07] +%<package>\@ifpackagelater{expl3}{2017/02/07} %<package> {} %<package> {% %<package> \PackageError{l3tl-build}{Support package l3kernel too old} @@ -36,7 +36,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3tl-build.dtx 6829 2017-01-28 08:52:51Z joseph $ +\GetIdInfo$Id: l3tl-build.dtx 6846 2017-02-07 07:04:19Z joseph $ {L3 Experimental token list construction} %</driver|package> %<*driver> diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx index ae956e6e333..f277ed814eb 100644 --- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx +++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx @@ -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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} +\RequirePackage{expl3}[2017/02/07] +%<package>\@ifpackagelater{expl3}{2017/02/07} %<package> {} %<package> {% %<package> \PackageError{l3galley}{Support package l3kernel too old} @@ -37,7 +37,7 @@ %<package> }% %<package> \endinput %<package> } -\GetIdInfo$Id: l3galley.dtx 6829 2017-01-28 08:52:51Z joseph $ +\GetIdInfo$Id: l3galley.dtx 6846 2017-02-07 07:04:19Z joseph $ {L3 Experimental galley code} %</driver|package> %<*driver> @@ -2606,7 +2606,7 @@ % \begin{macro}{\@@par} % The primitive is moved as otherwise the clever skipping code will fail. % \begin{macrocode} -\cs_set_eq:cN { @ @ par } \galley_par: +\cs_set_eq:NN \@@@@par \galley_par: % \end{macrocode} % \end{macro} % diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx index 5a2661885c0..433338287d3 100644 --- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: expl3.dtx Copyright (C) 1990-2016 The LaTeX3 Project +%% File: expl3.dtx Copyright (C) 1990-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 @@ -23,8 +23,8 @@ %<*driver|generic|package> \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2017/01/28}% -\def\ExplFileVersion{6834}% +\def\ExplFileDate{2017/02/07}% +\def\ExplFileVersion{6846}% %</driver|generic|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3.ins b/Master/texmf-dist/source/latex/l3kernel/l3.ins index c86f611940c..3f281392b4e 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File l3.ins Copyright (C) 2011,2012,2014-2016 The LaTeX3 Project +File l3.ins Copyright (C) 2011,2012,2014-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 @@ -33,7 +33,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 1990-2016 The LaTeX3 Project +Copyright (C) 1990-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 @@ -89,6 +89,7 @@ and all files in that bundle must be distributed together. \from{l3fp-convert.dtx} {package} \from{l3fp-random.dtx} {package} \from{l3fp-assign.dtx} {package} + \from{l3sort.dtx} {package} \from{l3box.dtx} {package} \from{l3coffins.dtx} {package} \from{l3color.dtx} {package} @@ -137,6 +138,7 @@ and all files in that bundle must be distributed together. \generate{\file{l3quark.sty} {\from{l3oldmodules.dtx} {l3quark,oldmodules}}} \generate{\file{l3seq.sty} {\from{l3oldmodules.dtx} {l3seq,oldmodules}}} \generate{\file{l3skip.sty} {\from{l3oldmodules.dtx} {l3skip,oldmodules}}} +\generate{\file{l3sort.sty} {\from{l3oldmodules.dtx} {l3sort,oldmodules}}} \generate{\file{l3str.sty} {\from{l3oldmodules.dtx} {l3str,oldmodules}}} \generate{\file{l3tl.sty} {\from{l3oldmodules.dtx} {l3tl,oldmodules}}} \generate{\file{l3token.sty} {\from{l3oldmodules.dtx} {l3token,oldmodules}}} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx index 62a21ee09ea..9b68994b370 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx @@ -24,7 +24,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3candidates.dtx 6809 2017-01-01 06:33:13Z bruno $ +\GetIdInfo$Id: l3candidates.dtx 6835 2017-01-30 21:25:17Z bruno $ {L3 Experimental additions to l3kernel} %</driver|package> %<*driver> @@ -686,34 +686,6 @@ % \end{function} % % \begin{function}[EXP, added = 2016-12-06] -% {\prop_rand_key:N, \prop_rand_key:c} -% \begin{syntax} -% \cs{prop_rand_key:N} \meta{prop~var} -% \end{syntax} -% Selects a pseudo-random key--value pair in the \meta{property list} -% and returns the \meta{key}. If the \meta{property list} is empty -% the result is empty. This is only available in \pdfTeX{} and -% \LuaTeX{}. -% \end{function} -% -% \begin{function}[EXP, added = 2016-12-06] -% {\prop_rand_value:N, \prop_rand_value:c} -% \begin{syntax} -% \cs{prop_rand_value:N} \meta{prop~var} -% \end{syntax} -% Selects a pseudo-random key--value pair in the \meta{property list} -% and returns the \meta{value}. If the \meta{property list} is empty -% the result is empty. This is only available in \pdfTeX{} and -% \LuaTeX{}. -% \begin{texnote} -% The result is returned within the \tn{unexpanded} -% primitive (\cs{exp_not:n}), which means that the \meta{value} -% will not expand further when appearing in an \texttt{x}-type -% argument expansion. -% \end{texnote} -% \end{function} -% -% \begin{function}[EXP, added = 2016-12-06] % {\prop_rand_key_value:N, \prop_rand_key_value:c} % \begin{syntax} % \cs{prop_rand_key_value:N} \meta{prop~var} @@ -2842,11 +2814,7 @@ % \end{macro} % % \begin{macro}[EXP] -% { -% \prop_rand_key:N, \prop_rand_key:c, -% \prop_rand_value:N, \prop_rand_value:c, -% \prop_rand_key_value:N, \prop_rand_key_value:c -% } +% {\prop_rand_key_value:N, \prop_rand_key_value:c} % \begin{macro}[aux, EXP]{\@@_rand:NN, \@@_rand_item:Nw} % Contrarily to |clist|, |seq| and |tl|, there is no function to get % an item of a |prop| given an integer between $1$ and the number of @@ -2855,8 +2823,6 @@ % end, leave either the key |#3| or the value |#4| in the input % stream. % \begin{macrocode} -\cs_new:Npn \prop_rand_key:N { \@@_rand:NN \use_i:nnn } -\cs_new:Npn \prop_rand_value:N { \@@_rand:NN \use_none:n } \cs_new:Npn \prop_rand_key_value:N { \@@_rand:NN \@@_rand:nNn } \cs_new:Npn \@@_rand:nNn #1#2#3 { \exp_not:n { {#1} {#3} } } \cs_new:Npn \@@_rand:NN #1#2 @@ -2875,8 +2841,6 @@ \exp_after:wN \@@_rand_item:Nw \exp_after:wN #1 \__int_value:w \int_eval:n { #2 - \c_one } \s_@@ } -\cs_generate_variant:Nn \prop_rand_key:N { c } -\cs_generate_variant:Nn \prop_rand_value:N { c } \cs_generate_variant:Nn \prop_rand_key_value:N { c } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx index b7364894e39..12aea777839 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx @@ -2,7 +2,7 @@ % %% File: l3clist.dtx Copyright (C) 2004-2011 Frank Mittelbach, %% The LaTeX3 project -%% (C) 2012-2016 The LaTeX3 Project +%% (C) 2012-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 @@ -26,7 +26,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3clist.dtx 6805 2016-12-28 22:15:52Z joseph $ +\GetIdInfo$Id: l3clist.dtx 6842 2017-02-06 21:51:22Z joseph $ {L3 Comma separated lists} %</driver|package> %<*driver> @@ -305,6 +305,17 @@ % \end{texnote} % \end{function} % +% \begin{function}[added = 2017-02-06] +% {\clist_sort:Nn, \clist_sort:cn, \clist_gsort:Nn, \clist_gsort:cn} +% \begin{syntax} +% \cs{clist_sort:Nn} \meta{clist var} \Arg{comparison code} +% \end{syntax} +% Sorts the items in the \meta{clist var} according to the +% \meta{comparison code}, and assigns the result to +% \meta{clist var}. The details of sorting comparison are +% described in Section~\ref{sec:l3sort:mech}. +% \end{function} +% % \section{Comma list conditionals} % % \begin{function}[EXP,pTF]{\clist_if_empty:N, \clist_if_empty:c} @@ -1358,6 +1369,11 @@ % \end{macro} % \end{macro} % +% \begin{macro} +% {\clist_sort:Nn, \clist_sort:cn, \clist_gsort:Nn, \clist_gsort:cn} +% Implemented in \pkg{l3sort}. +% \end{macro} +% % \subsection{Comma list conditionals} % % \begin{macro}[pTF]{\clist_if_empty:N, \clist_if_empty:c} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx index fc4319207fb..fc90688aa63 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx @@ -62,7 +62,7 @@ Do not distribute a modified version of this file. % %<*driver|class> \RequirePackage{expl3,xparse,calc} -\GetIdInfo$Id: l3doc.dtx 6809 2017-01-01 06:33:13Z bruno $ +\GetIdInfo$Id: l3doc.dtx 6839 2017-02-06 18:52:08Z bruno $ {L3 Experimental documentation class} %</driver|class> % @@ -975,7 +975,7 @@ Do not distribute a modified version of this file. % \begin{macro}[aux]{\@@_replace_at_at_aux:Nn} % The goal is to replace |@@| by the current module name. If there is % no \meta{module~name}, do nothing. Otherwise, sanitize the catcodes -% of |@| and~|_| and replace both |_@@| and |@@| by +% of |@| and~|_|, temporarily change |@@@@| to |aa| with different catcodes and later to |@@|, and replace |__@@| and |_@@| and |@@| by % |__|\meta{module~name}. The result contains |_| with category % code letter because this is what the |macrocode| environment % expects. Other use cases can apply \cs{tl_to_str:n} if needed. @@ -991,12 +991,15 @@ Do not distribute a modified version of this file. #1 \g_@@_module_name_tl } } -\cs_new_protected:Npn \@@_replace_at_at_aux:Nn #1#2 +\cs_new_protected:Npx \@@_replace_at_at_aux:Nn #1#2 { - \tl_replace_all:Non #1 { \token_to_str:N @ } { @ } - \tl_replace_all:Non #1 { \token_to_str:N _ } { _ } - \tl_replace_all:Nnn #1 { _ @ @ } { _ _ #2 } - \tl_replace_all:Nnn #1 { @ @ } { _ _ #2 } + \tl_replace_all:Nnn #1 { \token_to_str:N @ } { @ } + \tl_replace_all:Nnn #1 { \token_to_str:N _ } { _ } + \tl_replace_all:Nnn #1 { @ @ @ @ } { \token_to_str:N a a } + \tl_replace_all:Nnn #1 { _ _ @ @ } { _ _ #2 } + \tl_replace_all:Nnn #1 { _ @ @ } { _ _ #2 } + \tl_replace_all:Nnn #1 { @ @ } { _ _ #2 } + \tl_replace_all:Nnn #1 { \token_to_str:N a a } { @ @ } } % \end{macrocode} % \end{macro} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx index 14626c67e4f..7b98fe3889a 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx @@ -100,7 +100,7 @@ % % To extract the code using \pkg{l3docstrip}, the \enquote{guard} concept % used by \textsf{DocStrip} is extended by introduction of the syntax -% \texttt{\%<@@=\meta{module}}. The \meta{module} name will be used when the +% \texttt{\%<@@=\meta{module}>}. The \meta{module} name will be used when the % code is extracted to replace the |@@|, so that % \begin{verbatim} % %<*package> @@ -123,6 +123,10 @@ % where the |__| indicates that the functions and variables are internal % to the \texttt{foo} module. % +% Use |@@@@| to obtain |@@| in the output (|@@@@@| to get |@@@|). For +% longer pieces of code the replacement can be completely suppressed by +% giving an empty module name, namely using the syntax \texttt{\%<@@=>}. +% % \end{documentation} % % \begin{implementation} @@ -188,7 +192,10 @@ % The argument (|#1|) is the replacement text to use, or if empty an % indicator that no replacement should be done. The search material is % one of |__@@|, |_@@| or |@@|, done in order such that all three will end -% up the same in the output. The replacement function is initialised as a +% up the same in the output. The string |@@@@| is hidden from these +% replacements by temporarily turning it into a pair of letters with +% different category codes, not produced by \pkg{docstrip}; this allows to +% get |@@| in the output. The replacement function is initialised as a % do-nothing for the case where |%<@@=| is never seen. % \begin{macrocode} \begingroup @@ -197,10 +204,12 @@ \ifx\relax#1\relax \let\replaceModuleInLine\empty \else - \def\replaceModuleInLine{% - \replaceAllIn\inLine{__@@}{__#1}% - \replaceAllIn\inLine{_@@}{__#1}% - \replaceAllIn\inLine{@@}{__#1}% + \edef\replaceModuleInLine{% + \noexpand\replaceAllIn\noexpand\inLine{@@@@}{\string aa}% + \noexpand\replaceAllIn\noexpand\inLine{__@@}{__#1}% + \noexpand\replaceAllIn\noexpand\inLine{_@@}{__#1}% + \noexpand\replaceAllIn\noexpand\inLine{@@}{__#1}% + \noexpand\replaceAllIn\noexpand\inLine{\string aa}{@@}% }% \fi } diff --git a/Master/texmf-dist/source/latex/l3kernel/l3format.ins b/Master/texmf-dist/source/latex/l3kernel/l3format.ins index 0a4822eb012..d49a7794f86 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3format.ins +++ b/Master/texmf-dist/source/latex/l3kernel/l3format.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File l3format.ins Copyright (C) 2011,2012,2014-2016 The LaTeX3 Project +File l3format.ins Copyright (C) 2011,2012,2014-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 @@ -33,7 +33,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 1990-2016 The LaTeX3 Project +Copyright (C) 1990-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 @@ -89,6 +89,7 @@ and all files in that bundle must be distributed together. \from{l3fp-convert.dtx} {initex} \from{l3fp-random.dtx} {initex} \from{l3fp-assign.dtx} {initex} + \from{l3sort.dtx} {initex} \from{l3box.dtx} {initex} \from{l3coffins.dtx} {initex} \from{l3color.dtx} {initex} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx index 5fa4071258b..e081a5b3ce5 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3oldmodules.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3oldmodules.dtx Copyright (C) 2014,2016 The LaTeX3 Project +%% File: l3oldmodules.dtx Copyright (C) 2014,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 @@ -106,6 +106,7 @@ %<l3quark>{l3quark} %<l3seq>{l3seq} %<l3skip>{l3skip} +%<l3sort>{l3sort} %<l3str>{l3str} %<l3tl>{l3tl} %<l3token>{l3token} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx index e9079d80701..dbc4e4dd295 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -%% File: l3seq.dtx Copyright (C) 1990-2016 The LaTeX3 Project +%% File: l3seq.dtx Copyright (C) 1990-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 @@ -24,7 +24,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3seq.dtx 6805 2016-12-28 22:15:52Z joseph $ +\GetIdInfo$Id: l3seq.dtx 6842 2017-02-06 21:51:22Z joseph $ {L3 Sequences and stacks} %</driver|package> %<*driver> @@ -431,7 +431,6 @@ % \cs{tl_if_eq:nnTF}. % \end{function} % -% % \begin{function}[added = 2014-07-18] % { % \seq_reverse:N, \seq_reverse:c, @@ -443,6 +442,17 @@ % Reverses the order of the items stored in the \meta{sequence}. % \end{function} % +% \begin{function}[added = 2017-02-06] +% {\seq_sort:Nn, \seq_sort:cn, \seq_gsort:Nn, \seq_gsort:cn} +% \begin{syntax} +% \cs{seq_sort:Nn} \meta{sequence} \Arg{comparison code} +% \end{syntax} +% Sorts the items in the \meta{sequence} according to the +% \meta{comparison code}, and assigns the result to +% \meta{sequence}. The details of sorting comparison are +% described in Section~\ref{sec:l3sort:mech}. +% \end{function} +% % \section{Sequence conditionals} % % \begin{function}[EXP,pTF]{\seq_if_empty:N, \seq_if_empty:c} @@ -1391,6 +1401,10 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\seq_sort:Nn, \seq_sort:cn, \seq_gsort:Nn, \seq_gsort:cn} +% Implemented in \pkg{l3sort}. +% \end{macro} +% % \subsection{Sequence conditionals} % % \begin{macro}[pTF]{\seq_if_empty:N, \seq_if_empty:c} diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx index f3f31911d5c..a732120976c 100644 --- a/Master/texmf-dist/source/latex/l3experimental/l3sort/l3sort.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx @@ -1,6 +1,6 @@ % \iffalse % -%% File l3sort.dtx (C) Copyright 2012,2014-2016 The LaTeX3 Project +%% File l3sort.dtx (C) Copyright 2012,2014-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 @@ -9,7 +9,7 @@ % % http://www.latex-project.org/lppl.txt % -% This file is part of the "l3experimental bundle" (The Work in LPPL) +% This file is part of the "l3kernel bundle" (The Work in LPPL) % and all files in that bundle must be distributed together. % % ----------------------------------------------------------------------- @@ -20,28 +20,14 @@ % % for those people who are interested. % +%<*driver> +\documentclass[full]{l3doc} +%</driver> %<*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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} -%<package> {} -%<package> {% -%<package> \PackageError{l3sort}{Support package l3kernel too old} -%<package> {% -%<package> Please install an up to date version of l3kernel\MessageBreak -%<package> using your TeX package manager or from CTAN.\MessageBreak -%<package> \MessageBreak -%<package> Loading l3sort will abort!% -%<package> }% -%<package> \endinput -%<package> } -\GetIdInfo$Id: l3sort.dtx 6829 2017-01-28 08:52:51Z joseph $ - {L3 Experimental sorting functions} +\GetIdInfo$Id: l3sort.dtx 6842 2017-02-06 21:51:22Z joseph $ + {L3 Sorting functions} %</driver|package> %<*driver> -\documentclass[full]{l3doc} -\usepackage{amsmath} \begin{document} \DocInput{\jobname.dtx} \end{document} @@ -49,7 +35,7 @@ % \fi % % \title{^^A -% The \pkg{l3sort} package\\ Sorting lists^^A +% The \pkg{l3sort} package\\ Sorting functions^^A % \thanks{This file describes v\ExplFileVersion, % last revised \ExplFileDate.}^^A % } @@ -68,9 +54,10 @@ % \maketitle % % \begin{documentation} -% ^^A todo: ask list about ltplain, mkpattern.tex, GFnotation.tex, texinfo.tex, lollipop-plain, etex-mac.tex, % -% \section{\pkg{l3sort} documentation} +% \section{Controlling sorting} +% +% \label{sec:l3sort:mech} % % \LaTeX3 comes with a facility to sort list variables (sequences, % token lists, or comma-lists) according to some user-defined @@ -80,27 +67,31 @@ % \clist_sort:Nn \l_foo_clist % { % \int_compare:nNnTF { #1 } > { #2 } -% { \sort_reversed: } -% { \sort_ordered: } +% { \sort_return_swapped: } +% { \sort_return_same: } % } % \end{verbatim} % will result in \cs{l_foo_clist} holding the values % |{ -2 , 01 , +1 , 3 , 5 }| sorted in non-decreasing order. % -% The code defining the comparison should perform -% \cs{sort_reversed:} if the two items given as |#1| +% The code defining the comparison should call +% \cs{sort_return_swapped:} if the two items given as |#1| % and |#2| are not in the correct order, and otherwise it -% should call \cs{sort_ordered:} to indicate that +% should call \cs{sort_return_same:} to indicate that % the order of this pair of items should not be changed. % % For instance, a \meta{comparison code} consisting only -% of \cs{sort_ordered:} with no test will yield a trivial +% of \cs{sort_return_same:} with no test will yield a trivial % sort: the final order is identical to the original order. % Conversely, using a \meta{comparison code} consisting only -% of \cs{sort_reversed:} will reverse the list (in a fairly +% of \cs{sort_return_swapped:} will reverse the list (in a fairly % inefficient way). % % \begin{texnote} +% The current implementation is limited to sorting approximately +% $20000$ items ($40000$ in Lua\TeX{}), depending on what other +% packages are loaded. +% % Internally, the code from \pkg{l3sort} stores items in \tn{toks} % registers allocated locally. Thus, the \meta{comparison code} % should not call \tn{newtoks} or other commands that allocate new @@ -108,52 +99,6 @@ % previously allocated \tn{toks} register is not a problem. % \end{texnote} % -% \begin{function}{\seq_sort:Nn, \seq_gsort:Nn} -% \begin{syntax} -% \cs{seq_sort:Nn} \meta{sequence} \Arg{comparison code} -% \end{syntax} -% Sorts the items in the \meta{sequence} according to the -% \meta{comparison code}, and assigns the result to -% \meta{sequence}. -% \end{function} -% -% \begin{function}{\tl_sort:Nn, \tl_gsort:Nn} -% \begin{syntax} -% \cs{tl_sort:Nn} \meta{tl var} \Arg{comparison code} -% \end{syntax} -% Sorts the items in the \meta{tl var} according to the -% \meta{comparison code}, and assigns the result to -% \meta{tl var}. -% \end{function} -% -% \begin{function}{\clist_sort:Nn, \clist_gsort:Nn} -% \begin{syntax} -% \cs{clist_sort:Nn} \meta{clist var} \Arg{comparison code} -% \end{syntax} -% Sorts the items in the \meta{clist var} according to the -% \meta{comparison code}, and assigns the result to -% \meta{clist var}. -% \end{function} -% -% {\renewcommand{\thefootnote}{}\footnotetext{\CodedocExplainEXP}} -% -% \begin{function}[EXP]{\tl_sort:nN} -% \begin{syntax} -% \cs{tl_sort:nN} \Arg{token list} \meta{conditional} -% \end{syntax} -% Sorts the items in the \meta{token list}, using the -% \meta{conditional} to compare items, and leaves the result in the -% input stream. The \meta{conditional} should have signature |:nnTF|, -% and return \texttt{true} if the two items being compared should be -% left in the same order, and \texttt{false} if the items should be -% swapped. -% \begin{texnote} -% The result is returned within \cs{exp_not:n}, which means that the -% token list will not expand further when appearing in an -% \texttt{x}-type argument expansion. -% \end{texnote} -% \end{function} -% % \end{documentation} % % \begin{implementation} @@ -168,13 +113,6 @@ %<@@=sort> % \end{macrocode} % -% \begin{macrocode} -%<*package> -\ProvidesExplPackage - {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} -%</package> -% \end{macrocode} -% % \subsection{Variables} % % \begin{variable} @@ -431,16 +369,18 @@ \seq_map_inline:Nn \seq_map_break:n { \s__seq \@@_toks:NN \exp_not:N \__seq_item:n } } +\cs_generate_variant:Nn \seq_sort:Nn { c } \cs_new_protected:Npn \seq_gsort:Nn { \@@_main:NNNnNn \tl_gset:Nn \seq_map_inline:Nn \seq_map_break:n { \s__seq \@@_toks:NN \exp_not:N \__seq_item:n } } +\cs_generate_variant:Nn \seq_gsort:Nn { c } % \end{macrocode} % \end{macro} % -% \begin{macro}{\tl_sort:Nn, \tl_gsort:Nn} +% \begin{macro}{\tl_sort:Nn, \tl_sort:cn, \tl_gsort:Nn, \tl_gsort:cn} % Again, use \cs{tl_set:Nn} or \cs{tl_gset:Nn} to control % the scope of the assignment. Mapping through the token % list is done with \cs{tl_map_inline:Nn}, and producing @@ -453,16 +393,19 @@ \tl_map_inline:Nn \tl_map_break:n { \@@_toks:NN \prg_do_nothing: \prg_do_nothing: } } +\cs_generate_variant:Nn \tl_sort:Nn { c } \cs_new_protected:Npn \tl_gsort:Nn { \@@_main:NNNnNn \tl_gset:Nn \tl_map_inline:Nn \tl_map_break:n { \@@_toks:NN \prg_do_nothing: \prg_do_nothing: } } +\cs_generate_variant:Nn \tl_gsort:Nn { c } % \end{macrocode} % \end{macro} % -% \begin{macro}{\clist_sort:Nn, \clist_gsort:Nn} +% \begin{macro} +% {\clist_sort:Nn, \clist_sort:cn, \clist_gsort:Nn, \clist_gsort:cn} % \begin{macro}[aux]{\@@_clist:NNn} % The case of empty comma-lists is a little bit special as usual, % and filtered out: there is nothing to sort in that case. @@ -480,6 +423,8 @@ { \@@_clist:NNn \tl_set:Nn } \cs_new_protected:Npn \clist_gsort:Nn { \@@_clist:NNn \tl_gset:Nn } +\cs_generate_variant:Nn \clist_sort:Nn { c } +\cs_generate_variant:Nn \clist_gsort:Nn { c } \cs_new_protected:Npn \@@_clist:NNn #1#2#3 { \clist_if_empty:NF #2 @@ -617,7 +562,7 @@ % In other words, we are building the merger starting with the % largest values. % The comparison function is defined to return either -% \texttt{reversed} or \texttt{ordered}. Of course, this +% \texttt{swapped} or \texttt{same}. Of course, this % means the arguments need to be given in the order they % appear originally in the list. % \begin{macrocode} @@ -634,25 +579,24 @@ % \end{macrocode} % \end{macro} % -% -% \begin{macro}{\sort_ordered:, \sort_reversed:} +% \begin{macro}{\sort_return_same:, \sort_return_swapped:} % \begin{macro}[aux]{\@@_return_mark:N} % \begin{macro}[aux]{\@@_return_none_error:, \@@_return_two_error:w} % The marker removes one token. Each comparison should call -% \cs{sort_ordered:} or \cs{sort_reversed:} exactly +% \cs{sort_return_same:} or \cs{sort_return_swapped:} exactly % once. If neither is called, \cs{@@_return_none_error:} is called. % \begin{macrocode} -\cs_new_protected:Npn \sort_ordered: #1 \@@_return_mark:N - { #1 \@@_return_mark:N \@@_return_two_error:w \@@_ordered: } -\cs_new_protected:Npn \sort_reversed: #1 \@@_return_mark:N - { #1 \@@_return_mark:N \@@_return_two_error:w \@@_return_reversed: } +\cs_new_protected:Npn \sort_return_same: #1 \@@_return_mark:N + { #1 \@@_return_mark:N \@@_return_two_error:w \@@_return_same: } +\cs_new_protected:Npn \sort_return_swapped: #1 \@@_return_mark:N + { #1 \@@_return_mark:N \@@_return_two_error:w \@@_return_swapped: } \cs_new_protected:Npn \@@_return_mark:N #1 { } \cs_new_protected:Npn \@@_return_none_error: { \__msg_kernel_error:nnxx { sort } { return-none } { \tex_the:D \tex_toks:D \l_@@_A_int } { \tex_the:D \tex_toks:D \l_@@_C_int } - \@@_ordered: + \@@_return_same: } \cs_new_protected:Npn \@@_return_two_error:w #1 \@@_return_none_error: @@ -662,8 +606,8 @@ % \end{macro} % \end{macro} % -% \begin{macro}[aux]{\@@_ordered:} -% If the comparison function returns \texttt{ordered}, +% \begin{macro}[aux]{\@@_return_same:} +% If the comparison function returns \texttt{same}, % then the second argument fed to \cs{@@_compare:nn} % should remain to the right of the other one. Since % we build the merger starting from the right, we copy @@ -674,7 +618,7 @@ % is already in the correct registers and we are done % with merging those two blocks. % \begin{macrocode} -\cs_new_protected:Npn \@@_ordered: +\cs_new_protected:Npn \@@_return_same: { \tex_toks:D \l_@@_B_int \tex_toks:D \l_@@_C_int \tex_advance:D \l_@@_B_int - \c_one @@ -686,10 +630,9 @@ } % \end{macrocode} % \end{macro} -% \end{macro} % -% \begin{macro}[aux]{\@@_return_reversed:} -% If the comparison function returns \texttt{reversed}, +% \begin{macro}[aux]{\@@_return_swapped:} +% If the comparison function returns \texttt{swapped}, % then the next item to add to the merger is the first % argument, contents of the \tn{toks} register $A$. % Then shift the pointers $A$ and $B$ to the left, and @@ -699,7 +642,7 @@ % the second block, indexed by $C$, are copied % to the merger by \cs{@@_merge_blocks_end:}. % \begin{macrocode} -\cs_new_protected:Npn \@@_return_reversed: +\cs_new_protected:Npn \@@_return_swapped: { \tex_toks:D \l_@@_B_int \tex_toks:D \l_@@_A_int \tex_advance:D \l_@@_B_int - \c_one @@ -1124,20 +1067,30 @@ { When~sorting~a~list,~the~code~to~compare~items~#1~and~#2~ did~not~call~ - \iow_char:N\\sort_ordered: ~nor~ - \iow_char:N\\sort_reversed: .~ + \iow_char:N\\sort_return_same: ~nor~ + \iow_char:N\\sort_return_swapped: .~ Exactly~one~of~these~should~be~called. } \__msg_kernel_new:nnnn { sort } { return-two } { The~comparison~code~returned~multiple~times. } { When~sorting~a~list,~the~code~to~compare~items~called~ - \iow_char:N\\sort_ordered: ~or~ - \iow_char:N\\sort_reversed: ~multiple~times.~ + \iow_char:N\\sort_return_same: ~or~ + \iow_char:N\\sort_return_swapped: ~multiple~times.~ Exactly~one~of~these~should~be~called. } % \end{macrocode} % +% \subsection{Deprecated functions} +% +% \begin{macro}[deprecated = 2017-02-06]{\sort_ordered:, \sort_reversed:} +% These functions were renamed for consistency. +% \begin{macrocode} +\cs_new_eq:NN \sort_ordered: \sort_return_same: +\cs_new_eq:NN \sort_reversed: \sort_return_swapped: +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} %</initex|package> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 8f1fac513ed..1acb5e14625 100644 --- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx +++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx @@ -24,7 +24,7 @@ \documentclass[full]{l3doc} %</driver> %<*driver|package> -\GetIdInfo$Id: l3tl.dtx 6805 2016-12-28 22:15:52Z joseph $ +\GetIdInfo$Id: l3tl.dtx 6842 2017-02-06 21:51:22Z joseph $ {L3 Token lists} %</driver|package> %<*driver> @@ -783,6 +783,35 @@ % \emph{resets} the content of the variable. % \end{function} % +% \begin{function}[added = 2017-02-06] +% {\tl_sort:Nn, \tl_sort:cn, \tl_gsort:Nn, \tl_gsort:cn} +% \begin{syntax} +% \cs{tl_sort:Nn} \meta{tl var} \Arg{comparison code} +% \end{syntax} +% Sorts the items in the \meta{tl var} according to the +% \meta{comparison code}, and assigns the result to +% \meta{tl var}. The details of sorting comparison are +% described in Section~\ref{sec:l3sort:mech}. +% \end{function} +% +% \begin{function}[added = 2017-02-06, EXP]{\tl_sort:nN} +% \begin{syntax} +% \cs{tl_sort:nN} \Arg{token list} \meta{conditional} +% \end{syntax} +% Sorts the items in the \meta{token list}, using the +% \meta{conditional} to compare items, and leaves the result in the +% input stream. The \meta{conditional} should have signature |:nnTF|, +% and return \texttt{true} if the two items being compared should be +% left in the same order, and \texttt{false} if the items should be +% swapped. The details of sorting comparison are +% described in Section~\ref{sec:l3sort:mech}. +% \begin{texnote} +% The result is returned within \cs{exp_not:n}, which means that the +% token list will not expand further when appearing in an +% \texttt{x}-type argument expansion. +% \end{texnote} +% \end{function} +% % \section{The first token from a token list} % % Functions which deal with either only the very first item (balanced @@ -2404,6 +2433,11 @@ % \end{macro} % \end{macro} % +% \begin{macro} +% {\tl_sort:Nn, \tl_sort:cn, \tl_gsort:Nn, \tl_gsort:cn, \tl_sort:nN} +% Implemented in \pkg{l3sort}. +% \end{macro} +% % \subsection{Token by token changes} % % \begin{variable}{\q_@@_act_mark, \q_@@_act_stop} diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx index da221d72cfd..df48e99599f 100644 --- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx +++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx @@ -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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} +\RequirePackage{expl3}[2017/02/07] +%<package>\@ifpackagelater{expl3}{2017/02/07} %<package> {} %<package> {% %<package> \PackageError{l3keys2e}{Support package l3kernel too old} @@ -38,8 +38,8 @@ %<package> } \def\ExplFileName{l3keys2e} \def\ExplFileDescription{LaTeX2e option processing using LaTeX3 keys} -\def\ExplFileDate{2017/01/28} -\def\ExplFileVersion{6834} +\def\ExplFileDate{2017/02/07} +\def\ExplFileVersion{6846} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx index 37e3eaa7f43..a09cbfae677 100644 --- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx @@ -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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} +\RequirePackage{expl3}[2017/02/07] +%<package>\@ifpackagelater{expl3}{2017/02/07} %<package> {} %<package> {% %<package> \PackageError{xfrac}{Support package l3kernel too old} @@ -40,8 +40,8 @@ \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} \def\ExplFileName{xfrac} \def\ExplFileDescription{L3 Experimental split-level fractions} -\def\ExplFileDate{2017/01/28} -\def\ExplFileVersion{6834} +\def\ExplFileDate{2017/02/07} +\def\ExplFileVersion{6846} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx index 72e95c647ad..f4138d1b0e0 100644 --- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx @@ -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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} +\RequirePackage{expl3}[2017/02/07] +%<package>\@ifpackagelater{expl3}{2017/02/07} %<package> {} %<package> {% %<package> \PackageError{xparse}{Support package l3kernel too old} @@ -42,8 +42,8 @@ %<package> } \def\ExplFileName{xparse} \def\ExplFileDescription{L3 Experimental document command parser} -\def\ExplFileDate{2017/01/28} -\def\ExplFileVersion{6834} +\def\ExplFileDate{2017/02/07} +\def\ExplFileVersion{6846} %</driver|package> %<*driver> \documentclass[full]{l3doc} diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx index 0e0cc211476..31a5c72bffd 100644 --- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx +++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx @@ -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/01/28] -%<package>\@ifpackagelater{expl3}{2017/01/28} +\RequirePackage{expl3}[2017/02/07] +%<package>\@ifpackagelater{expl3}{2017/02/07} %<package> {} %<package> {% %<package> \PackageError{xtemplate}{Support package l3kernel too old} @@ -42,8 +42,8 @@ %<package> } \def\ExplFileName{xtemplate} \def\ExplFileDescription{L3 Experimental prototype document functions} -\def\ExplFileDate{2017/01/28} -\def\ExplFileVersion{6834} +\def\ExplFileDate{2017/02/07} +\def\ExplFileVersion{6846} %</driver|package> %<*driver> \documentclass[full]{l3doc} |