summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/expkv
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-09-21 19:46:31 +0000
committerKarl Berry <karl@freefriends.org>2021-09-21 19:46:31 +0000
commitf8978870d707711cf4790fe169054f49679bd3bf (patch)
tree52cafe52a35846124bf2983795ead51200501917 /Master/texmf-dist/tex/generic/expkv
parent2c4e4de2d3e3db565a628ffd6bae9d1e325b3a22 (diff)
expkv (21sep21)
git-svn-id: svn://tug.org/texlive/trunk@60573 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/expkv')
-rw-r--r--Master/texmf-dist/tex/generic/expkv/expkv.tex110
1 files changed, 64 insertions, 46 deletions
diff --git a/Master/texmf-dist/tex/generic/expkv/expkv.tex b/Master/texmf-dist/tex/generic/expkv/expkv.tex
index 16dd65d3e2f..6e342c32ef7 100644
--- a/Master/texmf-dist/tex/generic/expkv/expkv.tex
+++ b/Master/texmf-dist/tex/generic/expkv/expkv.tex
@@ -29,6 +29,7 @@
%% and the derived files expkv.pdf
%% expkv.sty
%% expkv.tex
+%% t-expkv.tex
%%
\expandafter\ifx\csname ekvVersion\endcsname\relax
\else
@@ -40,12 +41,25 @@
\expandafter
\endgroup
\ifx\ekvtmpa\ekvtmpb
+ \expandafter\let\csname ekv@expanded\endcsname\expanded
+ \expandafter\let\csname ekv@unexpanded\endcsname\unexpanded
\else
- \errmessage{expkv Error: e-TeX and \noexpand\expanded required}
- \expandafter\endinput
+ \begingroup
+ \edef\ekvtmpa{\string\expanded}
+ \edef\ekvtmpb{\meaning\normalexpanded}
+ \expandafter
+ \endgroup
+ \ifx\ekvtmpa\ekvtmpb
+ \expandafter\let\csname ekv@expanded\endcsname\normalexpanded
+ \expandafter\let\csname ekv@unexpanded\endcsname\normalunexpanded
+ \else
+ \errmessage
+ {expkv Error: e-TeX and the \noexpand\expanded primitive required}%
+ \expandafter\endinput
+ \fi
\fi
-\def\ekvVersion{1.9}
-\def\ekvDate{2021-07-15}
+\def\ekvVersion{1.9a}
+\def\ekvDate{2021-09-20}
\csname ekv@tmp\endcsname
\expandafter\chardef\csname ekv@tmp\endcsname=\catcode`\@
\catcode`\@=11
@@ -94,7 +108,7 @@
\long\def\ekv@ifblank@\ekv@mark#1{\ekv@ifempty@\ekv@ifempty@A}
\ekv@if@lastnamedcs
{%
- \def\ekv@ifdefined#1{\ifcsname#1\endcsname\ekv@ifdef@\fi\@secondoftwo}
+ \long\def\ekv@ifdefined#1{\ifcsname#1\endcsname\ekv@ifdef@\fi\@secondoftwo}
\def\ekv@ifdef@\fi\@secondoftwo
{%
\fi
@@ -105,7 +119,7 @@
}
}
{%
- \def\ekv@ifdefined#1%
+ \long\def\ekv@ifdefined#1%
{%
\ifcsname#1\endcsname\ekv@ifdef@\fi\ekv@ifdef@false#1\endcsname\relax
\ekv@fi@secondoftwo
@@ -164,7 +178,7 @@
}%
}
\expandafter\ekv@csv@loop\expandafter{\ekv@strip{#2}}
-\long\def\ekv@csv@loop@do#1#2{\unexpanded{#2{#1}}\ekv@csv@loop{#2}\ekv@mark}
+\long\def\ekv@csv@loop@do#1#2{\ekv@unexpanded{#2{#1}}\ekv@csv@loop{#2}\ekv@mark}
\def\ekv@csv@loop@end#1%
{%
\long\def\ekv@csv@loop@end
@@ -180,25 +194,25 @@
\ekv@strip{\ekv@mark#1}\ekv@csv@loop@do#2%
{\ekv@csv@loop{#2}\ekv@mark}
\def\ekv@name@set#1{ekv#1(}
-\def\ekv@name@key#1{#1)}
+\long\def\ekv@name@key#1{#1)}
\edef\ekv@name
{%
- \unexpanded\expandafter{\ekv@name@set{#1}}%
- \unexpanded\expandafter{\ekv@name@key{\detokenize{#2}}}%
+ \ekv@unexpanded\expandafter{\ekv@name@set{#1}}%
+ \ekv@unexpanded\expandafter{\ekv@name@key{\detokenize{#2}}}%
}
-\ekv@exparg{\def\ekv@name#1#2}{\ekv@name}
+\long\ekv@exparg{\def\ekv@name#1#2}{\ekv@name}
\def\ekv@undefined@set#1{! expkv Error: Set `#1' undefined.}
\edef\ekv@checkvalid
{%
- \unexpanded\expandafter{\ekv@ifempty{#1}}%
- \unexpanded
+ \ekv@unexpanded\expandafter{\ekv@ifempty{#1}}%
+ \ekv@unexpanded
{{%
\def\ekv@tmp{}%
\errmessage{expkv Error: empty set name not allowed}%
}}%
{%
- \unexpanded\expandafter{\ekv@ifempty{#2}}%
- \unexpanded
+ \ekv@unexpanded\expandafter{\ekv@ifempty{#2}}%
+ \ekv@unexpanded
{%
{%
\def\ekv@tmp{}%
@@ -207,12 +221,12 @@
\@secondoftwo
}%
}%
- \unexpanded{\@gobble}%
+ \ekv@unexpanded{\@gobble}%
}
\ekv@exparg{\protected\def\ekv@checkvalid#1#2}{\ekv@checkvalid}%
-\ekv@expargtwice{\def\ekvifdefined#1#2}%
+\ekv@expargtwice{\long\def\ekvifdefined#1#2}%
{\expandafter\ekv@ifdefined\expandafter{\ekv@name{#1}{#2}}}
-\ekv@expargtwice{\def\ekvifdefinedNoVal#1#2}%
+\ekv@expargtwice{\long\def\ekvifdefinedNoVal#1#2}%
{\expandafter\ekv@ifdefined\expandafter{\ekv@name{#1}{#2}N}}
\def\ekvdef#1#2#3#4%
{%
@@ -220,9 +234,9 @@
{#1{\expandafter\def\csname#2\endcsname####1{##3}#3}}%
\protected\long\def\ekvdefNoVal##1##2##3%
{#1{\expandafter\def\csname#2N\endcsname{##3}#3}}%
- \protected\def\ekvlet##1##2##3%
+ \protected\long\def\ekvlet##1##2##3%
{#1{\expandafter\let\csname#2\endcsname##3#3}}%
- \protected\def\ekvletNoVal##1##2##3%
+ \protected\long\def\ekvletNoVal##1##2##3%
{#1{\expandafter\let\csname#2N\endcsname##3#3}}%
\ekv@expargtwice{\protected\long\def\ekvdefunknown##1##2}%
{%
@@ -246,7 +260,7 @@
}%
{\ekv@zero\ekv@checkvalid{##1}.}%
}%
- \protected\def\ekvletkv##1##2##3##4%
+ \protected\long\def\ekvletkv##1##2##3##4%
{%
#1%
{%
@@ -255,7 +269,7 @@
#3%
}%
}%
- \protected\def\ekvletkvNoVal##1##2##3##4%
+ \protected\long\def\ekvletkvNoVal##1##2##3##4%
{%
#1%
{%
@@ -267,13 +281,13 @@
}
\edef\ekvdefNoVal
{%
- {\unexpanded\expandafter{\ekv@checkvalid{#1}{#2}}}%
- {\unexpanded\expandafter{\ekv@name{#1}{#2}}}%
+ {\ekv@unexpanded\expandafter{\ekv@checkvalid{#1}{#2}}}%
+ {\ekv@unexpanded\expandafter{\ekv@name{#1}{#2}}}%
{%
- \unexpanded{\expandafter\ekv@defsetmacro\csname}%
- \unexpanded\expandafter{\ekv@undefined@set{#1}\endcsname{#1}}%
+ \ekv@unexpanded{\expandafter\ekv@defsetmacro\csname}%
+ \ekv@unexpanded\expandafter{\ekv@undefined@set{#1}\endcsname{#1}}%
}%
- {\unexpanded\expandafter{\ekv@name{#3}{#4}}}%
+ {\ekv@unexpanded\expandafter{\ekv@name{#3}{#4}}}%
}
\expandafter\ekvdef\ekvdefNoVal
\protected\def\ekvredirectunknown
@@ -298,7 +312,7 @@
\edef\ekv@tmp
{%
\ekvcsvloop#1{#6}%
- \unexpanded{#2}%
+ \ekv@unexpanded{#2}%
{\ekvcsvloop{}{#5,#6}}%
}%
\ekv@expargtwice
@@ -321,7 +335,7 @@
{%
\ifcsname#2\endcsname\ekv@redirect@kv@a\fi\@gobble{##1}%
##4{##1}{##2}%
- }
+ }%
\def\ekv@redirect@kv@a\fi\@gobble
{\fi\expandafter\ekv@redirect@kv@b\lastnamedcs}%
}
@@ -340,13 +354,13 @@
\ifcsname#2\endcsname\ekv@redirect@kv@a\fi\ekv@redirect@kv@a@
#2\endcsname{##1}%
##4{##1}{##2}%
- }
+ }%
\long\def\ekv@redirect@kv@a@#4\endcsname##3{}%
\def\ekv@redirect@kv@a\fi\ekv@redirect@kv@a@
{\fi\expandafter\ekv@redirect@kv@b\csname}%
- }
+ }%
}
-\def\ekv@redirect@kv#1\detokenize#2#3\ekv@stop{\unexpanded{#1#2#3}}
+\def\ekv@redirect@kv#1\detokenize#2#3\ekv@stop{\ekv@unexpanded{#1#2#3}}
\edef\ekv@redirect@kv
{%
{\expandafter\ekv@redirect@kv\ekv@name{#2}{#1}N\ekv@stop}%
@@ -365,12 +379,12 @@
\long\def\ekv@redirect@kv@d#1#2#3\ekv@stop{#1{#2}}
\edef\ekv@defsetmacro
{%
- \unexpanded{\ifx#1\relax\edef#1##1}%
+ \ekv@unexpanded{\ifx#1\relax\edef#1##1}%
{%
- \unexpanded\expandafter{\ekv@name@set{#2}}%
- \unexpanded\expandafter{\ekv@name@key{##1}}%
+ \ekv@unexpanded\expandafter{\ekv@name@set{#2}}%
+ \ekv@unexpanded\expandafter{\ekv@name@key{##1}}%
}%
- \unexpanded{\fi}%
+ \ekv@unexpanded{\fi}%
}
\ekv@exparg{\protected\def\ekv@defsetmacro#1#2}{\ekv@defsetmacro}
\ekv@expargtwice{\def\ekvifdefinedset#1}%
@@ -432,12 +446,12 @@
{\ekv@strip{##1}{\expandafter\ekv@set@pair\detokenize}\ekv@mark##2\ekv@nil}
\edef\ekv@set@noeq
{%
- \unexpanded
+ \ekv@unexpanded
{%
\ekv@ifblank@##1\ekv@nil\ekv@ifempty@B\ekv@set@was@blank
\ekv@ifempty@A\ekv@ifempty@B
}%
- \unexpanded\expandafter
+ \ekv@unexpanded\expandafter
{\ekv@strip{##1}{\expandafter\ekv@set@key\detokenize}\ekv@mark}%
}
\ekv@exparg
@@ -461,7 +475,10 @@
\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%
- {\unexpanded\expanded{{\ekv@parse{##1}{##2}\ekv@mark##3#1\ekv@stop#1}}}
+ {%
+ \ekv@unexpanded\ekv@expanded
+ {{\ekv@parse{##1}{##2}\ekv@mark##3#1\ekv@stop#1}}%
+ }
\long\def\ekv@parse##1##2##3#1%
{%
\ekv@gobble@from@mark@to@stop##3\ekv@endparse\ekv@stop
@@ -508,12 +525,12 @@
{\ekv@strip{##1}\ekv@parse@pair##2}
\edef\ekv@parse@noeq
{%
- \unexpanded
+ \ekv@unexpanded
{%
\ekv@ifblank@##1\ekv@nil\ekv@ifempty@B\ekv@parse@was@blank
\ekv@ifempty@A\ekv@ifempty@B
}%
- \unexpanded\expandafter{\ekv@strip{##1}\ekv@parse@key}%
+ \ekv@unexpanded\expandafter{\ekv@strip{##1}\ekv@parse@key}%
}
\ekv@exparg
{%
@@ -534,12 +551,12 @@
{\ekv@strip{##2}\ekv@parse@pair@{##1}}
\long\def\ekv@parse@pair@##1##2##3##4%
{%
- \unexpanded{##4{##2}{##1}}%
+ \ekv@unexpanded{##4{##2}{##1}}%
\ekv@parse@other{##3}{##4}%
}
\long\def\ekv@parse@key##1##2%
{%
- \unexpanded{##2{##1}}%
+ \ekv@unexpanded{##2{##1}}%
\ekv@parse@other{##2}%
}
}
@@ -548,8 +565,8 @@
\ekvset,=
\edef\ekvsetSneaked
{%
- \unexpanded{\ekvsneak{#2}}%
- \unexpanded\expandafter{\ekvset{#1}{#3}}%
+ \ekv@unexpanded{\ekvsneak{#2}}%
+ \ekv@unexpanded\expandafter{\ekvset{#1}{#3}}%
}
\ekv@expargtwice{\long\def\ekvsetSneaked#1#2#3}{\ekvsetSneaked}
\ekv@exparg{\def\ekvchangeset#1}%
@@ -739,7 +756,8 @@
\ekv@exparg{\long\def\ekv@err@common@#1`#2' #3.#4#5}%
{\ekv@err{#4 `#5' in set `#2'}}
\ekv@exparg{\long\def\ekv@err@unknown#1}{\ekv@err@common{unknown key}{#1}}
-\ekv@exparg{\long\def\ekv@err@noarg #1}{\ekv@err@common{unwanted value for}{#1}}
+\ekv@exparg{\long\def\ekv@err@noarg #1}
+ {\ekv@err@common{unwanted value for}{#1}}
\ekv@exparg{\long\def\ekv@err@reqval #1}{\ekv@err@common{missing value for}{#1}}
\ekv@exparg{\long\def\ekv@err@redirect@kv@notfound#1#2#3\ekv@stop}%
{\ekv@err{no key `#2' in sets #3}}