summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r--Master/texmf-dist/tex/generic/expkv/expkv.tex380
-rw-r--r--Master/texmf-dist/tex/latex/expkv/expkv.sty43
2 files changed, 423 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/expkv/expkv.tex b/Master/texmf-dist/tex/generic/expkv/expkv.tex
new file mode 100644
index 00000000000..ca05bd10ae3
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/expkv/expkv.tex
@@ -0,0 +1,380 @@
+%%
+%% This is file `expkv.tex',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% expkv.dtx (with options: `tex')
+%%
+%% --------------------------------------------------------------
+%% expkv -- an expandable key=val implementation
+%% E-mail: jspratte@yahoo.de
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% --------------------------------------------------------------
+%%
+%% Copyright (C) 2020 Jonathan P. Spratte
+%%
+%% 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
+%% Jonathan P. Spratte.
+%%
+%% This work consists of the file expkv.dtx
+%% and the derived files expkv.pdf
+%% expkv.sty
+%% expkv.tex
+%%
+\begingroup\expandafter\expandafter\expandafter\endgroup
+\expandafter\ifx\csname numexpr\endcsname\relax
+ \errmessage{expkv requires e-TeX}
+ \expandafter\endinput
+\fi
+\expandafter\ifx\csname ekvVersion\endcsname\relax
+\else
+ \expandafter\endinput
+\fi
+\def\ekvVersion{0.3}
+\def\ekvDate{2020-01-22}
+\csname ekv@tmp\endcsname
+\expandafter\chardef\csname ekv@tmp\endcsname=\catcode`\@
+\catcode`\@=11
+\long\def\@gobble#1{}
+\long\def\@firstofone#1{#1}
+\long\def\@firstoftwo#1#2{#1}
+\long\def\@secondoftwo#1#2{#2}
+\long\def\ekv@gobbletostop#1\ekv@stop{}
+\long\def\ekv@fi@gobble\fi\@firstofone#1{\fi}
+\long\def\ekv@fi@secondoftwo\fi\@firstoftwo#1#2{\fi#2}
+\long\def\ekv@ifempty#1%
+ {%
+ \ekv@ifempty@\ekv@ifempty@A#1\ekv@ifempty@B\ekv@ifempty@true
+ \ekv@ifempty@A\ekv@ifempty@B\@secondoftwo
+ }
+\long\def\ekv@ifempty@#1\ekv@ifempty@A\ekv@ifempty@B{}
+\long\def\ekv@ifempty@true\ekv@ifempty@A\ekv@ifempty@B\@secondoftwo#1#2{#1}
+\long\def\ekv@ifempty@false\ekv@ifempty@A\ekv@ifempty@B\@firstoftwo#1#2{#2}
+\long\def\ekv@ifempty@true@F\ekv@ifempty@A\ekv@ifempty@B\@firstofone#1{}
+\long\def\ekv@ifblank@\ekv@mark#1{\ekv@ifempty@\ekv@ifempty@A}
+\def\ekv@ifdefined#1%
+ {%
+ \expandafter
+ \ifx\csname\ifcsname #1\endcsname #1\else relax\fi\endcsname\relax
+ \ekv@fi@secondoftwo
+ \fi
+ \@firstoftwo
+ }
+\def\ekv@ifdefined@pair#1#2%
+ {%
+ \expandafter\ekv@ifdefined@pair@
+ \csname
+ \ifcsname #1{#2}\endcsname
+ #1{#2}%
+ \else
+ relax%
+ \fi
+ \endcsname
+ }
+\def\ekv@ifdefined@pair@#1%
+ {%
+ \ifx#1\relax
+ \ekv@fi@secondoftwo
+ \fi
+ \@firstoftwo
+ {\ekv@set@pair@#1\ekv@mark}%
+ }
+\def\ekv@ifdefined@key#1#2%
+ {%
+ \expandafter\ekv@ifdefined@key@
+ \csname
+ \ifcsname #1{#2}N\endcsname
+ #1{#2}N%
+ \else
+ relax%
+ \fi
+ \endcsname
+ }
+\def\ekv@ifdefined@key@#1%
+ {%
+ \ifx#1\relax
+ \ekv@fi@secondoftwo
+ \fi
+ \@firstoftwo#1%
+ }
+\def\ekv@name#1#2{\ekv@name@set{#1}\ekv@name@key{#2}}
+\def\ekv@name@set#1{ekv#1(}
+\def\ekv@name@key#1{#1)}
+\protected\def\ekv@checkvalid#1#2%
+ {%
+ \ekv@ifempty{#1}%
+ {%
+ \def\ekv@tmp{}%
+ \errmessage{expkv Error: empty set name not allowed}%
+ }%
+ {%
+ \ekv@ifempty{#2}%
+ {%
+ \def\ekv@tmp{}%
+ \errmessage{expkv Error: empty key name not allowed}%
+ }%
+ \@secondoftwo
+ }%
+ \@gobble
+ }
+\def\ekvifdefined#1#2{\ekv@ifdefined{\ekv@name{#1}{#2}}}
+\def\ekvifdefinedNoVal#1#2{\ekv@ifdefined{\ekv@name{#1}{#2}N}}
+\protected\long\def\ekvdef#1#2#3%
+ {%
+ \ekv@checkvalid{#1}{#2}%
+ {%
+ \expandafter\def\csname\ekv@name{#1}{#2}\endcsname##1{#3}%
+ \ekv@defset{#1}%
+ }%
+ }
+\protected\long\def\ekvdefNoVal#1#2#3%
+ {%
+ \ekv@checkvalid{#1}{#2}%
+ {%
+ \expandafter\def\csname\ekv@name{#1}{#2}N\endcsname{#3}%
+ \ekv@defset{#1}%
+ }%
+ }
+\protected\def\ekvlet#1#2#3%
+ {%
+ \ekv@checkvalid{#1}{#2}%
+ {%
+ \expandafter\let\csname\ekv@name{#1}{#2}\endcsname#3%
+ \ekv@defset{#1}%
+ }%
+ }
+\protected\def\ekvletNoVal#1#2#3%
+ {%
+ \ekv@checkvalid{#1}{#2}%
+ {%
+ \expandafter\let\csname\ekv@name{#1}{#2}N\endcsname#3%
+ \ekv@defset{#1}%
+ }%
+ }
+\protected\def\ekvletkv#1#2#3#4%
+ {%
+ \ekv@checkvalid{#1}{#2}%
+ {%
+ \expandafter\let\csname\ekv@name{#1}{#2}\expandafter\endcsname
+ \csname\ekv@name{#3}{#4}\endcsname
+ \ekv@defset{#1}%
+ }%
+ }
+\protected\def\ekvletkvNoVal#1#2#3#4%
+ {%
+ \ekv@checkvalid{#1}{#2}%
+ {%
+ \expandafter\let\csname\ekv@name{#1}{#2}N\expandafter\endcsname
+ \csname\ekv@name{#3}{#4}N\endcsname
+ \ekv@defset{#1}%
+ }%
+ }
+\protected\def\ekv@defset#1%
+ {%
+ \expandafter\edef\csname\ekv@name@set{#1}\endcsname##1%
+ {\ekv@name@set{#1}\ekv@name@key{##1}}%
+ }
+\def\ekvset#1#2{%
+\endgroup
+\long\def\ekvset##1##2%
+ {%
+ \expandafter\ekv@set\csname\ekv@name@set{##1}\endcsname
+ \ekv@mark##2#1\ekv@stop#1{}%
+ }
+\long\def\ekv@set##1##2#1%
+ {%
+ \ekv@ifstop##2\ekv@endset\ekv@mark\ekv@stop
+ \ekv@set@other##1##2,\ekv@stop,%
+ \ekv@set##1\ekv@mark
+ }
+\long\def\ekv@endset
+ \ekv@mark\ekv@stop\ekv@set@other##1,\ekv@stop,\ekv@set##2\ekv@mark
+ ##3%
+ {##3}
+\long\def\ekv@set@other##1##2,%
+ {%
+ \ekv@ifblank@##2\ekv@nil\ekv@ifempty@B\ekv@ifempty@true@F
+ \ekv@ifempty@A\ekv@ifempty@B\@firstofone
+ {%
+ \ekv@ifhas@eq@other##2=\ekv@ifempty@B\ekv@ifempty@false
+ \ekv@ifempty@A\ekv@ifempty@B\@firstoftwo
+ {\ekv@set@eq@other##1##2\ekv@stop}%
+ {%
+ \ekv@ifhas@eq@active##2#2\ekv@ifempty@B\ekv@ifempty@false
+ \ekv@ifempty@A\ekv@ifempty@B\@firstoftwo
+ {\ekv@set@eq@active##1##2\ekv@stop}%
+ {%
+ \ekv@ifstop##2\ekv@endset@other\ekv@mark\ekv@stop
+ \ekv@strip{##2}\ekv@set@key##1%
+ }%
+ }%
+ }%
+ \ekv@set@other##1\ekv@mark%
+ }
+\long\def\ekv@set@eq@other##1##2=%
+ {%
+ \ekv@ifhas@eq@active##2#2\ekv@ifempty@B\ekv@ifempty@false
+ \ekv@ifempty@A\ekv@ifempty@B\@firstoftwo
+ {\ekv@set@eq@active##1##2=}%
+ {\ekv@strip{##2}\ekv@set@pair##1}%
+ }
+\long\def\ekv@set@eq@active##1##2#2%
+ {%
+ \ekv@strip{##2}\ekv@set@pair##1%
+ }
+\long\def\ekv@ifhas@eq@other\ekv@mark##1={\ekv@ifempty@\ekv@ifempty@A}
+\long\def\ekv@ifhas@eq@active\ekv@mark##1#2{\ekv@ifempty@\ekv@ifempty@A}
+\long\def\ekv@endset@other
+ \ekv@mark\ekv@stop\ekv@strip##1\ekv@set@key##2%
+ \ekv@set@other##3\ekv@mark
+ {}
+\long\def\ekvbreak##1##2\ekv@stop#1##3{##1}
+\long\def\ekvbreakPreSneak ##1##2\ekv@stop#1##3{##1##3}
+\long\def\ekvbreakPostSneak##1##2\ekv@stop#1##3{##3##1}
+\long\def\ekvsneak##1##2\ekv@stop#1##3%
+ {%
+ ##2\ekv@stop#1{##3##1}%
+ }
+\long\def\ekvsneakPre##1##2\ekv@stop#1##3%
+ {%
+ ##2\ekv@stop#1{##1##3}%
+ }
+\long\def\ekvparse##1##2##3%
+ {%
+ \expanded{\ekv@parse##1##2\ekv@mark##3#1\ekv@stop#1}%
+ }
+\long\def\ekv@parse##1##2##3#1%
+ {%
+ \ekv@ifstop##3\ekv@endparse\ekv@mark\ekv@stop
+ \ekv@parse@other##1##2##3,\ekv@stop,%
+ \ekv@parse##1##2\ekv@mark
+ }
+\long\def\ekv@endparse
+ \ekv@mark\ekv@stop\ekv@parse@other##1,\ekv@stop,\ekv@parse##2\ekv@mark
+ {}
+\long\def\ekv@parse@other##1##2##3,%
+ {%
+ \ekv@ifblank@##3\ekv@nil\ekv@ifempty@B\ekv@ifempty@true@F
+ \ekv@ifempty@A\ekv@ifempty@B\@firstofone
+ {%
+ \ekv@ifhas@eq@other##3=\ekv@ifempty@B\ekv@ifempty@false
+ \ekv@ifempty@A\ekv@ifempty@B\@firstoftwo
+ {\unexpanded{##2}\ekv@parse@eq@other##3\ekv@stop}%
+ {%
+ \ekv@ifhas@eq@active##3#2\ekv@ifempty@B\ekv@ifempty@false
+ \ekv@ifempty@A\ekv@ifempty@B\@firstoftwo
+ {\unexpanded{##2}\ekv@parse@eq@active##3\ekv@stop}%
+ {%
+ \ekv@ifstop##3\ekv@endparse@other\ekv@mark\ekv@stop
+ \unexpanded{##1}{\ekv@strip{##3}\unexpanded}%
+ }%
+ }%
+ }%
+ \ekv@parse@other##1##2\ekv@mark
+ }
+\long\def\ekv@parse@eq@other##1=%
+ {%
+ \ekv@ifhas@eq@active##1#2\ekv@ifempty@B\ekv@ifempty@false
+ \ekv@ifempty@A\ekv@ifempty@B\@firstoftwo
+ {\ekv@parse@eq@active##1=}%
+ {{\ekv@strip{##1}\unexpanded}\ekv@parse@pair\ekv@mark}%
+ }
+\long\def\ekv@parse@eq@active##1#2%
+ {%
+ {\ekv@strip{##1}\unexpanded}\ekv@parse@pair\ekv@mark
+ }
+\long\def\ekv@endparse@other
+ \ekv@mark\ekv@stop\unexpanded##1%
+ \ekv@parse@other##2\ekv@mark
+ {}
+\long\def\ekv@parse@pair##1\ekv@stop
+ {%
+ {\ekv@strip{##1}\unexpanded}%
+ }
+}
+\begingroup
+\catcode`\,=13
+\catcode`\==13
+\ekvset,=
+\long\def\ekv@ifstop#1\ekv@mark\ekv@stop{}
+\long\def\ekv@set@pair#1#2%
+ {%
+ \ekv@ifdefined@pair#2{#1}%
+ {%
+ \ekv@ifdefined{#2{#1}N}%
+ \ekv@err@noarg
+ \ekv@err@unknown
+ #2{#1}%
+ \ekv@gobbletostop
+ }%
+ }
+\long\def\ekv@set@pair@#1#2\ekv@stop
+ {%
+ \ekv@strip{#2}#1%
+ }
+\long\def\ekv@set@key#1#2%
+ {%
+ \ekv@ifdefined@key#2{#1}%
+ {%
+ \ekv@ifdefined{#2{#1}}%
+ \ekv@err@reqval
+ \ekv@err@unknown
+ #2{#1}%
+ }%
+ }
+\begingroup
+\edef\ekv@err
+ {%
+ \endgroup
+ \unexpanded{\long\def\ekv@err}##1%
+ {%
+ \unexpanded{\expandafter\ekv@err@\@firstofone}%
+ {\expandafter\noexpand\csname ! expkv Error:\endcsname ##1.}%
+ \unexpanded{\ekv@stop}%
+ }%
+ }
+\ekv@err
+\def\ekv@err@{\expandafter\ekv@gobbletostop}
+\long\def\ekv@err@common #1#2{\expandafter\ekv@err@common@\string#2{#1}}
+\long\def\ekv@err@common@#1#2#3#4#5(#6#7{\ekv@err{#6 (`#7', set `#5')}}
+\long\def\ekv@err@unknown#1#2{\ekv@err@common{unknown key}#1{#2}}
+\long\def\ekv@err@noarg #1#2{\ekv@err@common{value forbidden}#1{#2}}
+\long\def\ekv@err@reqval #1#2{\ekv@err@common{value required}#1{#2}}
+\def\ekv@strip#1%
+ {%
+ \long\def\ekv@strip##1%
+ {%
+ \ekv@strip@a
+ ##1%
+ \ekv@nil
+ \ekv@mark#1%
+ #1\ekv@nil{}%
+ \ekv@stop
+ }%
+ \long\def\ekv@strip@a##1\ekv@mark#1##2\ekv@nil##3%
+ {%
+ \ekv@strip@b##3##1##2\ekv@nil
+ }%
+ \long\def\ekv@strip@b##1#1\ekv@nil
+ {%
+ \ekv@strip@c##1\ekv@nil
+ }%
+ \long\def\ekv@strip@c\ekv@mark##1\ekv@nil##2\ekv@stop##3%
+ {%
+ ##3{##1}%
+ }%
+ }
+\ekv@strip{ }
+\catcode`\@=\ekv@tmp
+%%
+%%
+%% End of file `expkv.tex'.
diff --git a/Master/texmf-dist/tex/latex/expkv/expkv.sty b/Master/texmf-dist/tex/latex/expkv/expkv.sty
new file mode 100644
index 00000000000..88d7963187e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expkv/expkv.sty
@@ -0,0 +1,43 @@
+%%
+%% This is file `expkv.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% expkv.dtx (with options: `pkg')
+%%
+%% --------------------------------------------------------------
+%% expkv -- an expandable key=val implementation
+%% E-mail: jspratte@yahoo.de
+%% Released under the LaTeX Project Public License v1.3c or later
+%% See http://www.latex-project.org/lppl.txt
+%% --------------------------------------------------------------
+%%
+%% Copyright (C) 2020 Jonathan P. Spratte
+%%
+%% 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
+%% Jonathan P. Spratte.
+%%
+%% This work consists of the file expkv.dtx
+%% and the derived files expkv.pdf
+%% expkv.sty
+%% expkv.tex
+%%
+\def\ekv@tmp
+ {%
+ \ProvidesFile{expkv.tex}%
+ [\ekvDate\space v\ekvVersion\space an expandable key=val implementation]%
+ }
+\input{expkv.tex}
+\ProvidesPackage{expkv}%
+ [\ekvDate\space v\ekvVersion\space an expandable key=val implementation]
+%%
+%%
+%% End of file `expkv.sty'.