diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/keyparse/keyparse.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/keyparse/keyparse.sty | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/keyparse/keyparse.sty b/Master/texmf-dist/tex/latex/keyparse/keyparse.sty new file mode 100644 index 00000000000..25d354bb750 --- /dev/null +++ b/Master/texmf-dist/tex/latex/keyparse/keyparse.sty @@ -0,0 +1,100 @@ +%% +%% This is file `keyparse.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% keyparse.dtx (with options: `package') +%% ----------------------------------------------------------------------------- +%% keyparse --- key-based parser +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ---------------------------------------------------------------------------- +%% + \NeedsTeXFormat{LaTeX2e}[2021-06-01] + \RequirePackage{expl3, xparse, l3keys2e}[2021-06-01] + \ProvidesExplPackage + {keyparse} % Package name + {2021-08-18} % Release date + {1.1} % Release version + {keyparse --- key-based parser } % Description +\ExplSyntaxOn +\msg_new:nnn +{__keyparse} +{not-set} +{recursion~for~rule~#1~is~not~set} +\cs_new_protected:Nn +\__keyparse_keyparse_rule_w:n +{\clist_clear_new:c{__keyparse_keys_#1_clist} + \cs_new:cpn + {__keyparse_keyparse_eval_#1:w} ##1 ##2 \q_recursion_stop + {\quark_if_recursion_tail_stop:n{##1} + \use:c{__keyparse_keyparse_eval_#1_##1:w}##2\q_recursion_stop }} +\cs_new_protected:Nn +\__keyparse_keyparse_rule:n{\__keyparse_keyparse_rule_w:n{#1}} +\cs_new:Nn +\__keyparse_keyparse_eval_aux:nn +{\cs_if_exist:cTF + {__keyparse_keyparse_eval_#1:w} + { \use:c{__keyparse_keyparse_eval_#1:w}#2 + \q_recursion_tail + \q_recursion_stop} + {\msg_error:nnn{__keyparse} + {not-set} + {#1}}} +\cs_generate_variant:Nn\__keyparse_keyparse_eval_aux:nn{ne} +\cs_new:Nn +\keyparse_eval:nn +{\__keyparse_keyparse_eval_aux:ne{#1} + {\tl_trim_spaces:n{#2}}} +\cs_new_protected:Nn +\keyparse_set:nnnnn +{\cs_if_exist:cTF + {__keyparse_keyparse_eval_#1:w} + {\clist_put_right:cn + {__keyparse_keys_#1_clist}{\texttt{\tl_to_str:n{#2}}} + \cs_new:cpn + {__keyparse_keyparse_eval_#1_#2:w}#3 \q_recursion_stop + {#4\use:c{__keyparse_keyparse_eval_#1:w}#5 \q_recursion_stop}} + {\__keyparse_keyparse_rule:n{#1} + \keyparse_set:nnnnn + {#1}{#2}{#3}{#4}{#5}}} +\ProvideDocumentCommand +{\KeyparseKeys} +{m} +{\clist_use:cnnn + {__keyparse_keys_#1_clist} + {~and~}{,~}{~and~}} +\NewDocumentCommand{\KeyparseEval} +{mm} +{\keyparse_eval:nn{#1}{#2}} +\cs_new:Nn\keyparse_argspec_e:n{{e{#1}}} +\keyparse_set:nnnnn{argspec}{e}{#1#2} +{ \tl_map_function:nN{#1}\keyparse_argspec_e:n}{#2} +\keyparse_set:nnnnn{argspec}{d}{#1#2#3}{{d#1#2}}{#3} +\keyparse_set:nnnnn{argspec}{m}{#1}{{m}}{#1} +\keyparse_set:nnnnn{argspec}{o}{#1}{{o}}{#1} +\keyparse_set:nnnnn{argspec}{r}{#1#2#3}{{r#1#2}}{#3} +\keyparse_set:nnnnn{argspec}{s}{#1}{{s}}{#1} +\keyparse_set:nnnnn{argspec}{t}{#1#2}{{t#1}}{#2} +\keyparse_set:nnnnn{pair/first}{>}{#1#2#3}{#1}{#3} +\keyparse_set:nnnnn{pair/merge}{>}{#1#2#3}{#1#2}{#3} +\ExplSyntaxOff +%% +%% Copyright (C) 2021 by Erwann Rogard +%% +%% This work 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 work is "maintained" (as per LPPL maintenance status) by +%% Erwann Rogard. +%% +%% This work consists of the file keyparse.dtx and the derived files: +%% keyparse.sty, and keyparse.pdf. +%% +%% +%% End of file `keyparse.sty'. |