texlive[57246] Master/texmf-dist: expkv-def (28dec20)
commits+karl at tug.org
commits+karl at tug.org
Mon Dec 28 23:32:26 CET 2020
Revision: 57246
http://tug.org/svn/texlive?view=revision&revision=57246
Author: karl
Date: 2020-12-28 23:32:26 +0100 (Mon, 28 Dec 2020)
Log Message:
-----------
expkv-def (28dec20)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/expkv-def/README.md
trunk/Master/texmf-dist/doc/latex/expkv-def/expkv-def.pdf
trunk/Master/texmf-dist/source/latex/expkv-def/expkv-def.dtx
trunk/Master/texmf-dist/tex/generic/expkv-def/expkv-def.tex
Modified: trunk/Master/texmf-dist/doc/latex/expkv-def/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/expkv-def/README.md 2020-12-28 22:32:07 UTC (rev 57245)
+++ trunk/Master/texmf-dist/doc/latex/expkv-def/README.md 2020-12-28 22:32:26 UTC (rev 57246)
@@ -1,7 +1,7 @@
-------------------------------------------------------------------------------
# expkv-def -- a key-defining frontend for expkv
-Version 2020-10-12 v0.6
+Version 2020-12-28 v0.7
Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
Modified: trunk/Master/texmf-dist/doc/latex/expkv-def/expkv-def.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/expkv-def/expkv-def.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/expkv-def/expkv-def.dtx 2020-12-28 22:32:07 UTC (rev 57245)
+++ trunk/Master/texmf-dist/source/latex/expkv-def/expkv-def.dtx 2020-12-28 22:32:26 UTC (rev 57246)
@@ -171,6 +171,7 @@
\DoNotIndex{\@,\unexpanded,\string,\expanded,\dimexpr,\global,\glueexpr,\hbox}
\DoNotIndex{\numexpr,\RequirePackage,\setbox,\the,\unless,\xdef,\@firstofone}
\DoNotIndex{\@firstoftwo,\@gobble,\@secondoftwo,\meaning,\detokenize}
+\DoNotIndex{\romannumeral,\^}
\DoNotIndex{\ifcsname}
\DoNotIndex{\ifx}
\DoNotIndex{\ifdefined}
@@ -362,7 +363,7 @@
% |\edef|.
% \end{function}
%
-% \begin{function}{default,qdefault,edefault}
+% \begin{function}{default,qdefault,odefault,fdefault,edefault}
% \begin{syntax}
% default \key\ = \marg{definition} \prefixes3223
% \end{syntax}
@@ -370,11 +371,18 @@
% \key\ can be of any argument-grabbing kind, and when used without a \val\
% it will be passed \meta{definition} instead. The |qdefault| variant will
% expand the \key's code once, so will be slightly quicker, but not change if
-% you redefine \key. The |edefault| on the other hand fully expands the
-% \key-code with \meta{definition} as its argument inside of an |\edef|.
+% you redefine \key. |odefault| is just another name for |qdefault|. The
+% |fdefault| version will expand the key code until a non-expandable token or
+% a space is found, a space would be gobbled.\footnotemark{} The |edefault| on the other hand fully expands
+% the \key-code with \meta{definition} as its argument inside of an |\edef|.
% \end{function}
+% \footnotetext
+% {^^A
+% For those familiar with \TeX-coding: This uses a
+% \cs[no-index]{romannumeral}-expansion.
+% }
%
-% \begin{function}{initial,oinitial,einitial}
+% \begin{function}{initial,oinitial,finitial,einitial}
% \begin{syntax}
% initial \key\ = \{\val\} \prefixes3333
% \end{syntax}
@@ -382,8 +390,11 @@
% taking \key. It'll just call the key-macro of \key\ and pass it \val. The
% |einitial| variant will expand \val\ using an |\edef| expansion prior to
% passing it to the key-macro and the |oinitial| variant will expand the first
-% token in \val\ once.
+% token in \val\ once. |finitial| will expand \val\ until a non-expandable
+% token or a space is found, a space would be
+% gobbled.\footnotemark
% \end{function}
+% \footnotetext{Again using \cs[no-index]{romannumeral}.}
%
% \begin{function}{bool,gbool,boolTF,gboolTF}
% \begin{syntax}
@@ -755,8 +766,8 @@
% \begin{macro}{\ekvdVersion,\ekvdDate}
% We're on our first input, so lets store the version and date in a macro.
% \begin{macrocode}
-\def\ekvdVersion{0.6}
-\def\ekvdDate{2020-10-12}
+\def\ekvdVersion{0.7}
+\def\ekvdDate{2020-12-28}
% \end{macrocode}
% \end{macro}
%
@@ -904,15 +915,11 @@
{%
\ekvd at ifalso
{%
- \ekv at expB@unbraceA{\ekv at expB@unbraceA{\ekvd at add@noval{#1}}}%
+ \ekv at expargtwice{\ekvd at add@noval{#1}}%
{\ekvchangeset{#2}}%
\ekvd at assert@not at protected@also
}%
- {%
- \ekv at expB@unbraceA
- {\ekv at expB@unbraceA{\ekvdefNoVal\ekvd at set{#1}}}%
- {\ekvchangeset{#2}}%
- }%
+ {\ekv at expargtwice{\ekvdefNoVal\ekvd at set{#1}}{\ekvchangeset{#2}}}%
}%
}%
}
@@ -942,7 +949,7 @@
\ekvd at assert@not at long
\ekvd at prot#1\ekvd at tmp{#3}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
+ {\ekv at exparg{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
{\ekvletNoVal\ekvd at set{#2}\ekvd at tmp}%
}%
}%
@@ -964,7 +971,7 @@
{%
\ekvd at prot\ekvd at long#1\ekvd at tmp##1{#3}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{\ekvd at add@val{#2}}{\ekvd at tmp{##1}}{}}%
+ {\ekv at exparg{\ekvd at add@val{#2}}{\ekvd at tmp{##1}}{}}%
{\ekvlet\ekvd at set{#2}\ekvd at tmp}%
}%
}%
@@ -974,7 +981,11 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ekvd at type@default,\ekvd at t@default,\ekvd at t@qdefault}
+% \begin{macro}[internal]
+% {
+% \ekvd at type@default,\ekvd at t@default,\ekvd at t@qdefault,\ekvd at t@odefault,
+% \ekvd at t@fdefault
+% }
% |\ekvd at type@default| asserts there was an argument, also the key for which one
% wants to set a default has to be already defined (this is not so important for
% |default|, but |qdefault| requires is). If everything is good, |\edef| a
@@ -981,11 +992,11 @@
% temporary macro that expands |\ekvd at set| and the |\csname| for the key, and in
% the case of |qdefault| does the first expansion step of the key-macro.
% \begin{macrocode}
-\protected\long\def\ekvd at type@default#1#2#3%
+\protected\long\def\ekvd at type@default#1#2#3#4%
{%
\ekvd at assert@arg
{%
- \ekvifdefined\ekvd at set{#2}%
+ \ekvifdefined\ekvd at set{#3}%
{%
\ekvd at assert@not at new
\ekvd at assert@not at long
@@ -992,17 +1003,19 @@
\ekvd at prot\edef\ekvd at tmp
{%
\unexpanded\expandafter#1%
- {\csname\ekv at name\ekvd at set{#2}\endcsname{#3}}%
+ {#2\csname\ekv at name\ekvd at set{#3}\endcsname{#4}}%
}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
- {\ekvletNoVal\ekvd at set{#2}\ekvd at tmp}%
+ {\ekv at exparg{\ekvd at add@noval{#3}}\ekvd at tmp{}}%
+ {\ekvletNoVal\ekvd at set{#3}\ekvd at tmp}%
}%
- {\ekvd at err@undefined at key{#2}}%
+ {\ekvd at err@undefined at key{#3}}%
}%
}
-\protected\def\ekvd at t@default{\ekvd at type@default{}}
-\protected\def\ekvd at t@qdefault{\ekvd at type@default{\expandafter\expandafter}}
+\protected\def\ekvd at t@default{\ekvd at type@default{}{}}
+\protected\def\ekvd at t@qdefault{\ekvd at type@default{\expandafter\expandafter}{}}
+\let\ekvd at t@odefault\ekvd at t@qdefault
+\protected\def\ekvd at t@fdefault{\ekvd at type@default{}{\romannumeral`\^^@}}
% \end{macrocode}
% \end{macro}
%
@@ -1021,7 +1034,7 @@
\ekvd at prot\edef\ekvd at tmp
{\csname\ekv at name\ekvd at set{#1}\endcsname{#2}}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{\ekvd at add@noval{#1}}\ekvd at tmp{}}%
+ {\ekv at exparg{\ekvd at add@noval{#1}}\ekvd at tmp{}}%
{\ekvletNoVal\ekvd at set{#1}\ekvd at tmp}%
}%
{\ekvd at err@undefined at key{#1}}%
@@ -1030,28 +1043,31 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[internal]{\ekvd at t@initial,\ekvd at t@oinitial,\ekvd at t@einitial}
+% \begin{macro}[internal]
+% {\ekvd at t@initial,\ekvd at t@oinitial,\ekvd at t@finitial,\ekvd at t@einitial}
% \begin{macrocode}
-\long\def\ekvd at type@initial#1#2#3%
+\long\def\ekvd at type@initial#1#2#3#4%
{%
\ekvd at assert@arg
{%
- \ekvifdefined\ekvd at set{#2}%
+ \ekvifdefined\ekvd at set{#3}%
{%
\ekvd at assert@not at new
\ekvd at assert@not at also
\ekvd at assert@not at long
\ekvd at assert@not at protected
- #1{#3}%
- \csname\ekv at name\ekvd at set{#2}\expandafter\endcsname\expandafter
+ #1{#2#4}%
+ \csname\ekv at name\ekvd at set{#3}\expandafter\endcsname\expandafter
{\ekvd at tmp}%
}%
- {\ekvd at err@undefined at key{#2}}%
+ {\ekvd at err@undefined at key{#3}}%
}%
}
-\def\ekvd at t@initial{\ekvd at type@initial{\def\ekvd at tmp}}
-\def\ekvd at t@oinitial{\ekvd at type@initial{\ekv at expB@unbraceA{\def\ekvd at tmp}}}
-\def\ekvd at t@einitial{\ekvd at type@initial{\edef\ekvd at tmp}}
+\def\ekvd at t@initial{\ekvd at type@initial{\def\ekvd at tmp}{}}
+\def\ekvd at t@oinitial{\ekvd at type@initial{\ekv at exparg{\def\ekvd at tmp}}{}}
+\def\ekvd at t@einitial{\ekvd at type@initial{\edef\ekvd at tmp}{}}
+\def\ekvd at t@finitial
+ {\ekvd at type@initial{\ekv at exparg{\def\ekvd at tmp}}{\romannumeral`\^^@}}
% \end{macrocode}
% \end{macro}
%
@@ -1346,7 +1362,7 @@
\edef\ekvd at tmp{\ekvd at set}%
\expandafter\ekvd at type@meta at a\expandafter{\ekvd at tmp}{#7}{#2}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{#3{#6}}{\ekvd at tmp#4}{#5}}%
+ {\ekv at exparg{#3{#6}}{\ekvd at tmp#4}{#5}}%
{\csname ekvlet#1\endcsname\ekvd at set{#6}\ekvd at tmp}%
}%
}%
@@ -1386,7 +1402,7 @@
{%
\ekvd at type@meta at a#7{#2}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{#3{#6}}{\ekvd at tmp#4}{#5}}%
+ {\ekv at exparg{#3{#6}}{\ekvd at tmp#4}{#5}}%
{\csname ekvlet#1\endcsname\ekvd at set{#6}\ekvd at tmp}%
}%
}%
@@ -1424,7 +1440,7 @@
{%
\ekvd at if@not at already@choice{#1}%
{%
- \ekv at expB@unbraceA
+ \ekv at exparg
{%
\expandafter\ekvd at add@aux
\csname\ekv at name\ekvd at set{#1}\endcsname{{##1}}{#1}%
Modified: trunk/Master/texmf-dist/tex/generic/expkv-def/expkv-def.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/expkv-def/expkv-def.tex 2020-12-28 22:32:07 UTC (rev 57245)
+++ trunk/Master/texmf-dist/tex/generic/expkv-def/expkv-def.tex 2020-12-28 22:32:26 UTC (rev 57246)
@@ -35,8 +35,8 @@
\else
\expandafter\endinput
\fi
-\def\ekvdVersion{0.6}
-\def\ekvdDate{2020-10-12}
+\def\ekvdVersion{0.7}
+\def\ekvdDate{2020-12-28}
\csname ekvd at tmp\endcsname
\expandafter\chardef\csname ekvd at tmp\endcsname=\catcode`\@
\catcode`\@=11
@@ -105,15 +105,11 @@
{%
\ekvd at ifalso
{%
- \ekv at expB@unbraceA{\ekv at expB@unbraceA{\ekvd at add@noval{#1}}}%
+ \ekv at expargtwice{\ekvd at add@noval{#1}}%
{\ekvchangeset{#2}}%
\ekvd at assert@not at protected@also
}%
- {%
- \ekv at expB@unbraceA
- {\ekv at expB@unbraceA{\ekvdefNoVal\ekvd at set{#1}}}%
- {\ekvchangeset{#2}}%
- }%
+ {\ekv at expargtwice{\ekvdefNoVal\ekvd at set{#1}}{\ekvchangeset{#2}}}%
}%
}%
}
@@ -132,7 +128,7 @@
\ekvd at assert@not at long
\ekvd at prot#1\ekvd at tmp{#3}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
+ {\ekv at exparg{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
{\ekvletNoVal\ekvd at set{#2}\ekvd at tmp}%
}%
}%
@@ -147,7 +143,7 @@
{%
\ekvd at prot\ekvd at long#1\ekvd at tmp##1{#3}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{\ekvd at add@val{#2}}{\ekvd at tmp{##1}}{}}%
+ {\ekv at exparg{\ekvd at add@val{#2}}{\ekvd at tmp{##1}}{}}%
{\ekvlet\ekvd at set{#2}\ekvd at tmp}%
}%
}%
@@ -154,11 +150,11 @@
}
\protected\def\ekvd at t@code{\ekvd at type@code\def}
\protected\def\ekvd at t@ecode{\ekvd at type@code\edef}
-\protected\long\def\ekvd at type@default#1#2#3%
+\protected\long\def\ekvd at type@default#1#2#3#4%
{%
\ekvd at assert@arg
{%
- \ekvifdefined\ekvd at set{#2}%
+ \ekvifdefined\ekvd at set{#3}%
{%
\ekvd at assert@not at new
\ekvd at assert@not at long
@@ -165,17 +161,19 @@
\ekvd at prot\edef\ekvd at tmp
{%
\unexpanded\expandafter#1%
- {\csname\ekv at name\ekvd at set{#2}\endcsname{#3}}%
+ {#2\csname\ekv at name\ekvd at set{#3}\endcsname{#4}}%
}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{\ekvd at add@noval{#2}}\ekvd at tmp{}}%
- {\ekvletNoVal\ekvd at set{#2}\ekvd at tmp}%
+ {\ekv at exparg{\ekvd at add@noval{#3}}\ekvd at tmp{}}%
+ {\ekvletNoVal\ekvd at set{#3}\ekvd at tmp}%
}%
- {\ekvd at err@undefined at key{#2}}%
+ {\ekvd at err@undefined at key{#3}}%
}%
}
-\protected\def\ekvd at t@default{\ekvd at type@default{}}
-\protected\def\ekvd at t@qdefault{\ekvd at type@default{\expandafter\expandafter}}
+\protected\def\ekvd at t@default{\ekvd at type@default{}{}}
+\protected\def\ekvd at t@qdefault{\ekvd at type@default{\expandafter\expandafter}{}}
+\let\ekvd at t@odefault\ekvd at t@qdefault
+\protected\def\ekvd at t@fdefault{\ekvd at type@default{}{\romannumeral`\^^@}}
\protected\long\def\ekvd at t@edefault#1#2%
{%
\ekvd at assert@arg
@@ -187,32 +185,34 @@
\ekvd at prot\edef\ekvd at tmp
{\csname\ekv at name\ekvd at set{#1}\endcsname{#2}}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{\ekvd at add@noval{#1}}\ekvd at tmp{}}%
+ {\ekv at exparg{\ekvd at add@noval{#1}}\ekvd at tmp{}}%
{\ekvletNoVal\ekvd at set{#1}\ekvd at tmp}%
}%
{\ekvd at err@undefined at key{#1}}%
}%
}
-\long\def\ekvd at type@initial#1#2#3%
+\long\def\ekvd at type@initial#1#2#3#4%
{%
\ekvd at assert@arg
{%
- \ekvifdefined\ekvd at set{#2}%
+ \ekvifdefined\ekvd at set{#3}%
{%
\ekvd at assert@not at new
\ekvd at assert@not at also
\ekvd at assert@not at long
\ekvd at assert@not at protected
- #1{#3}%
- \csname\ekv at name\ekvd at set{#2}\expandafter\endcsname\expandafter
+ #1{#2#4}%
+ \csname\ekv at name\ekvd at set{#3}\expandafter\endcsname\expandafter
{\ekvd at tmp}%
}%
- {\ekvd at err@undefined at key{#2}}%
+ {\ekvd at err@undefined at key{#3}}%
}%
}
-\def\ekvd at t@initial{\ekvd at type@initial{\def\ekvd at tmp}}
-\def\ekvd at t@oinitial{\ekvd at type@initial{\ekv at expB@unbraceA{\def\ekvd at tmp}}}
-\def\ekvd at t@einitial{\ekvd at type@initial{\edef\ekvd at tmp}}
+\def\ekvd at t@initial{\ekvd at type@initial{\def\ekvd at tmp}{}}
+\def\ekvd at t@oinitial{\ekvd at type@initial{\ekv at exparg{\def\ekvd at tmp}}{}}
+\def\ekvd at t@einitial{\ekvd at type@initial{\edef\ekvd at tmp}{}}
+\def\ekvd at t@finitial
+ {\ekvd at type@initial{\ekv at exparg{\def\ekvd at tmp}}{\romannumeral`\^^@}}
\protected\def\ekvd at type@bool#1#2#3#4#5%
{%
\ekvd at ifnew{}{#4}%
@@ -422,7 +422,7 @@
\edef\ekvd at tmp{\ekvd at set}%
\expandafter\ekvd at type@meta at a\expandafter{\ekvd at tmp}{#7}{#2}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{#3{#6}}{\ekvd at tmp#4}{#5}}%
+ {\ekv at exparg{#3{#6}}{\ekvd at tmp#4}{#5}}%
{\csname ekvlet#1\endcsname\ekvd at set{#6}\ekvd at tmp}%
}%
}%
@@ -453,7 +453,7 @@
{%
\ekvd at type@meta at a#7{#2}%
\ekvd at ifalso
- {\ekv at expB@unbraceA{#3{#6}}{\ekvd at tmp#4}{#5}}%
+ {\ekv at exparg{#3{#6}}{\ekvd at tmp#4}{#5}}%
{\csname ekvlet#1\endcsname\ekvd at set{#6}\ekvd at tmp}%
}%
}%
@@ -475,7 +475,7 @@
{%
\ekvd at if@not at already@choice{#1}%
{%
- \ekv at expB@unbraceA
+ \ekv at exparg
{%
\expandafter\ekvd at add@aux
\csname\ekv at name\ekvd at set{#1}\endcsname{{##1}}{#1}%
More information about the tex-live-commits
mailing list.