summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex')
-rw-r--r--Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex82
1 files changed, 79 insertions, 3 deletions
diff --git a/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex b/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex
index 931c0c25ba3..f3fdd928829 100644
--- a/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex
+++ b/Master/texmf-dist/tex/generic/expkv-cs/expkv-cs.tex
@@ -13,7 +13,7 @@
%% See http://www.latex-project.org/lppl.txt
%% --------------------------------------------------------------
%%
-%% Copyright (C) 2020-2021 Jonathan P. Spratte
+%% Copyright (C) 2020-2022 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
@@ -36,8 +36,8 @@
\else
\expandafter\endinput
\fi
-\def\ekvcVersion{1.1b}
-\def\ekvcDate{2021-11-21}
+\def\ekvcVersion{1.2}
+\def\ekvcDate{2022-02-13}
\csname ekvc@tmp\endcsname
\expandafter\chardef\csname ekvc@tmp\endcsname=\catcode`\@
\catcode`\@=11
@@ -686,6 +686,80 @@
}%
{\ekvc@err@unknown@key{#1}}%
}
+\def\ekvc@enum@name#1#2#3{ekvc#1(#2)#3}
+\protected\long\def\ekvc@t@enum#1#2%
+ {\ekvc@assert@twoargs{#2}{enum #1}{\ekvc@type@enum{#1}#2}}
+\protected\long\def\ekvc@type@enum#1#2%
+ {%
+ \ekvifdefined\ekvc@set{#2}%
+ {%
+ \ekvc@long\edef\ekvc@tmp##1%
+ {%
+ \ekv@unexpanded{\expandafter\ekvc@h@enum\detokenize}{##1}%
+ \ekv@unexpanded{\ekvc@stop}%
+ {\ekvc@set}{#1}%
+ }%
+ \ekvlet\ekvc@set{#1}\ekvc@tmp
+ \def\ekvc@tmp{0}%
+ \expandafter\ekvcsvloop\expandafter
+ {%
+ \expandafter\ekvc@type@enum@
+ \csname\ekv@name\ekvc@set{#2}\endcsname
+ {#1}%
+ }%
+ }%
+ {%
+ \ekvc@err@unknown@key{#2}%
+ \@gobble
+ }%
+ }
+\ekv@exparg{\protected\long\def\ekvc@type@enum@#1#2#3}%
+ {%
+ \expandafter\expandafter\expandafter\edef\expandafter
+ \csname\ekvc@enum@name\ekvc@set{#2}{\detokenize{#3}}\endcsname
+ {\ekv@unexpanded{#1}{\ekvc@tmp}}%
+ \edef\ekvc@tmp{\the\numexpr\ekvc@tmp+1\relax}%
+ }
+\ekv@if@lastnamedcs
+ {%
+ \ekv@exparg{\def\ekvc@h@enum#1\ekvc@stop#2#3}%
+ {%
+ \expandafter\ifcsname\ekvc@enum@name{#2}{#3}{#1}\endcsname
+ \expandafter\ekvc@h@enum@\lastnamedcs
+ \fi
+ \ekvc@err@unknown@enum{#2}{#3}{#1}%
+ }
+ \def\ekvc@h@enum@#1\fi\ekvc@err@unknown@enum#2#3#4%
+ {%
+ \fi
+ \ifx#1\relax
+ \ekvc@err@unknown@enum{#2}{#3}{#4}%
+ \expandafter\@gobble
+ \fi
+ #1%
+ }
+ }
+ {%
+ \def\ekvc@h@enum#1%
+ {%
+ \def\ekvc@h@enum##1\ekvc@stop##2##3%
+ {%
+ \expandafter\ekvc@h@enum@
+ \csname\ifcsname#1\endcsname#1\else relax\fi\endcsname
+ {##2}{##3}{##1}%
+ }%
+ }
+ \expandafter\ekvc@h@enum\expandafter{\ekvc@enum@name{#2}{#3}{#1}}
+ \def\ekvc@h@enum@#1#2#3#4%
+ {%
+ \ifx#1\relax
+ \ekvc@err@unknown@enum{#2}{#3}{#4}%
+ \expandafter\@gobble
+ \fi
+ #1%
+ }
+ }
+\let\ekvc@enum@name\ekvc@undefined
\protected\def\ekvc@t@aggregate#1%
{%
\ekvc@assert@not@long{aggregate #1}%
@@ -1000,6 +1074,8 @@
\def\ekvc@err@invalid@bool#1{\ekvc@err{invalid boolean value `#1'}}
\long\def\ekvc@err@unknown@key@or@macro#1#2%
{\ekvc@err{unknown key `#2' for macro #1}}
+\def\ekvc@err@unknown@enum#1#2#3%
+ {\ekvc@err{unknown value `#3' for enum `#2' in macro #1}}
\catcode`\@=\ekvc@tmp
%%
%%