summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-06-10 23:26:56 +0000
committerKarl Berry <karl@freefriends.org>2021-06-10 23:26:56 +0000
commitbdfe812fbef57e095af9b6fcd044153923190ff6 (patch)
treea676e5d8cd60030963fcfa284a3007f3c8df992f
parent6fa2b67240b617ae507f7ece3c19b7114ef4401e (diff)
semantex (11jun21)
git-svn-id: svn://tug.org/texlive/trunk@59543 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/semantex/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/semantex/semantex.pdfbin364816 -> 371132 bytes
-rw-r--r--Master/texmf-dist/doc/latex/semantex/semantex.tex1960
-rw-r--r--Master/texmf-dist/tex/latex/semantex/semantex.sty4714
-rw-r--r--Master/texmf-dist/tex/latex/semantex/stripsemantex.sty4
5 files changed, 4274 insertions, 2406 deletions
diff --git a/Master/texmf-dist/doc/latex/semantex/README.md b/Master/texmf-dist/doc/latex/semantex/README.md
index 8e177e4f7bf..85732053e65 100644
--- a/Master/texmf-dist/doc/latex/semantex/README.md
+++ b/Master/texmf-dist/doc/latex/semantex/README.md
@@ -25,7 +25,7 @@ Released under the LaTeX Project Public License v1.3c or later
See http://www.latex-project.org/lppl.txt
----------------------------------------------------------------
-Copyright (C) 2020 by Sebastian Ørsted <sorsted@gmail.com>
+Copyright (C) 2021 by Sebastian Ørsted <sorsted@gmail.com>
The package is loaded via \usepackage{semantex}
diff --git a/Master/texmf-dist/doc/latex/semantex/semantex.pdf b/Master/texmf-dist/doc/latex/semantex/semantex.pdf
index 9fa36eaa214..7cf9755983e 100644
--- a/Master/texmf-dist/doc/latex/semantex/semantex.pdf
+++ b/Master/texmf-dist/doc/latex/semantex/semantex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/semantex/semantex.tex b/Master/texmf-dist/doc/latex/semantex/semantex.tex
index ab0d352a62d..2bf168eb0f7 100644
--- a/Master/texmf-dist/doc/latex/semantex/semantex.tex
+++ b/Master/texmf-dist/doc/latex/semantex/semantex.tex
@@ -1,4 +1,4 @@
-\documentclass[a4paper,article,oneside,english,10pt]{memoir}
+\documentclass[a4paper,oneside,english,10pt]{memoir}
\makeatletter
@@ -42,7 +42,7 @@
\usepackage[nameinlink]{cleveref}
-\title{Seman\!\TeX: semantic, keyval-based mathematics (v0.463)}
+\title{Seman\!\TeX: semantic, keyval-based mathematics (v0.500)}
\date{\today}
\author{Sebastian Ørsted (\href{mailto:sorsted@gmail.com}{sorsted@gmail.com})}
@@ -210,19 +210,9 @@
\NewObject\MyVar\Hom{\operatorname{Hom}}
-\NewCohomologyClass\MyCohomology[
- parent=\MyVar,
- gradingposition=upper,
-]
-
-\NewCohomologyClass\MyHomology[
- parent=\MyCohomology,
- gradingposition=lower,
-]
+\NewObject\MyVar\co{H}[grading position=upper]
-\NewObject\MyCohomology\co{H}
-
-\NewObject\MyHomology\ho{H}
+\NewObject\MyVar\ho{H}[grading position=lower]
\makeatother
@@ -243,6 +233,9 @@ and more or less stable, so using it at this point should be safe.
Still, suggestions, ideas, and bug reports are more than welcome!
\setlength\cftsectionnumwidth{3em}
+
+\pagebreak
+
\tableofcontents*
\pagebreak
@@ -251,16 +244,16 @@ Still, suggestions, ideas, and bug reports are more than welcome!
\begingroup
\SetupClass\MyVar{
- definekeys={
+ define keys={
{conj}{command=\overline},
{inv}{upper={-1}},
- {inverseimage}{upper={-1},nopar},
+ {inverse image}{upper={-1},no par},
},
- definekeys[1]={
+ define keys[1]={
{der}{upper={ (#1) } },
- {res}{ rightreturn, symbolputright={|}, lower={#1} },
- {stalk}{seplower={#1}},
- % "seplower" means "separator + lower", i.e. lower index
+ {res}{ right return, symbol put right={|}, lower={#1} },
+ {stalk}{sep lower={#1}},
+ % "sep lower" means "separator + lower", i.e. lower index
% separated from any previous lower index by a separator,
% which by default is a comma
},
@@ -297,23 +290,26 @@ $ \vg[inv,res=\vU]{\vx} $
Suppose \( \sheafF \)~is a sheaf and \( \vh \)~a~map,
and that we want to typeset the
equation~\( \smash{
- \vh[inverseimage]{\sheafF}[
- spar,stalk=\vp]
+ \vh[inverse image]{\sheafF}[spar,
+ stalk=\vp]
=
\sheafF[stalk=\vh{\vp}]
} \),
- saying that the stalk of the inverse image~\( \vh[inverseimage]{\sheafF} \)
+ saying that the stalk of the inverse image~\( \vh[inverse image]{\sheafF} \)
at the point~\( \vp \) is~\( \smash{ \sheafF[stalk=\vh{\vp}] } \).
This can be accomplished by typing
\begin{LTXexample}
-$ \vh[inverseimage]{\sheafF}[spar,stalk=\vp]
+$ \vh[inverse image]{\sheafF}[spar,stalk=\vp]
=
\sheafF[stalk=\vh{\vp}] $
\end{LTXexample}
- Here, \lstinline!spar! (an abbreviation for~\enquote{symbol parentheses})
- is the key that adds the parentheses around~\( \vh[inverseimage]{\sheafF} \).
-
- Let us see how you could set up all the above notation:
+Here, \lstinline!spar! (an abbreviation for~\enquote{symbol parentheses})
+is the key that adds the parentheses around~\( \vh[inverse image]{\sheafF} \).
+
+Let us see how you could set up all the above notation:
+
+\newpage
+
\begin{lstlisting}
\documentclass{article}
@@ -337,18 +333,18 @@ $ \vh[inverseimage]{\sheafF}[spar,stalk=\vp]
output=\MyVar, % This means that the output of an object
% of class \MyVar is also of class \MyVar
% We add a few keys for use with the class \MyVar:
- definekeys={ % we define a few keys
+ define keys={ % we define a few keys
{inv}{upper={-1}},
{conj}{command=\overline}, % Applies \overline to the symbol
- {inverseimage}{upper={-1},nopar},
+ {inverse image}{upper={-1},no par},
},
- definekeys[1]={ % we define keys taking 1 value
+ define keys[1]={ % we define keys taking 1 value
{der}{upper={(#1)}},
- {stalk}{seplower={#1}},
- % "seplower" means "separator + lower", i.e. lower index
+ {stalk}{sep lower={#1}},
+ % "sep lower" means "separator + lower", i.e. lower index
% separated from any previous lower index by a separator,
% which by default is a comma
- {res}{ rightreturn, symbolputright={|}, lower={#1} },
+ {res}{ right return, symbol put right={|}, lower={#1} },
},
}
@@ -358,7 +354,7 @@ $ \vf[conj,der=\vn] $
$ \vg[inv,res=\vU]{\vx} $
-$ \vh[inverseimage]{\sheafF}[spar,stalk=\vp]
+$ \vh[inverse image]{\sheafF}[spar,stalk=\vp]
= \sheafF[stalk=\vh{\vp}] $
\end{document}
@@ -443,17 +439,19 @@ $\vf[lower=3]$
In fact, there are quite a few keys for manipulating upper and lower indices.
Right now, apart from \lstinline!upper! and~\lstinline!lower!,
we shall only need a couple more:
-\lstinline!sepupper! and~\lstinline!seplower! mean
+\lstinline!sep upper! and~\lstinline!sep lower! mean
\enquote{separator~+~upper} and \enquote{separator~+~lower}.
These are like \lstinline!upper! and~\lstinline!lower!,
but if there already was an upper or lower index,
the new index will be separated from the old one by a separator.
By default, this separator is a comma.
There are also two more commands,
-\lstinline!commaupper! and~\lstinline!commalower!.
+\lstinline!comma upper! and~\lstinline!comma lower!.
These will use a comma as separator, even if you have changed the
default separator.
+\newpage
+
\section{Next step: Defining more variables}
We are soon going to need more variables
@@ -568,12 +566,12 @@ $\vf[par=\bigg]{\vx}$,
$\vf[par=\Bigg]{\vx}$,
$\vf[par=auto]{\frac{1}{2}}$
\end{LTXexample}
-Using \lstinline!par=auto! corresponds to using \lstinline!\left...\right!. Just as for ordinary math, I advice you to use manual scaling rather than automatic scaling, as \TeX\ has a tendency to scale things wrong. If you do not want parentheses at all, you can pass the key~\lstinline!nopar! (it will still print parentheses if there is more than one argument, though; to exclude this behaviour, run~\lstinline!neverpar! instead):
+Using \lstinline!par=auto! corresponds to using \lstinline!\left ...\right!. Just as for ordinary math, I advice you to use manual scaling rather than automatic scaling, as \TeX\ has a tendency to scale things wrong. If you do not want parentheses at all, you can pass the key~\mbox{\lstinline!no par!} (it will still print parentheses if there is more than one argument, though; to exclude this behaviour, run~\lstinline!never par! instead):
\begin{LTXexample}
-$\vf[nopar]{\vx}$,
-$\vf[nopar]{\vx,\vy}$,
-$\vf[neverpar]{\vx}$,
-$\vf[neverpar]{\vx,\vy}$
+$\vf[no par]{\vx}$,
+$\vf[no par]{\vx,\vy}$,
+$\vf[never par]{\vx}$,
+$\vf[never par]{\vx,\vy}$
\end{LTXexample}
Primes are added via the key~\lstinline!prime!
or the keys~\lstinline!'!,~\lstinline!''! and~\lstinline!'''!:
@@ -592,11 +590,11 @@ For the rest of the manual, we assume that you have already defined a class~\lst
So far, so good, but our variables cannot really do anything yet. For this, we need to assign \emph{keys} to them. The more pieces of math notation you need, the more keys you will have to define.
To define keys, we use the command~\lstinline!\SetupClass!
(or~\lstinline!\SetupObject! if you want to define it for an individual object)
-and the key~\lstinline!definekeys!.
+and the key~\lstinline!define keys!.
The syntax is as follows:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{@\<key name\num{1}\>@}{ @\<keys to run\>@ },
{@\<key name\num{2}\>@}{ @\<keys to run\>@ },
{@\<key name\num{3}\>@}{ @\<keys to run\>@ },
@@ -607,7 +605,7 @@ The syntax is as follows:
For instance, you can do
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{key1}{ upper=3, lower=7 },
{key2}{ lower=6, upper=4 },
},
@@ -616,22 +614,22 @@ For instance, you can do
Quite often, we shall also need to define
keys that can \emph{take a value}.
-A key can take up to~\( 9 \)~values.
+A key can take up to~\( 8 \)~values (for technical reasons, \( 9 \)~values are not allowed).
To define a key taking \( n \)~values,
-use~\mylst!definekeys[$n$]!
-for~\( n = 0 , 1 , 2 , \ldots , 9 \).
-The syntax is similar to~\lstinline!definekeys!,
+use~\mylst!define keys[$n$]!
+for~\( n = 0 , 1 , 2 , \ldots , 8 \).
+The syntax is similar to~\lstinline!define keys!,
except the values can be accessed
-by writing~\lstinline!#1!, \lstinline!#2!, \ldots, \lstinline!#9!.
+by writing~\lstinline!#1!, \lstinline!#2!, \ldots, \lstinline!#8!.
Except for a few special cases, you will probably only
-ever need~\lstinline!definekeys[1]!. So you can do
+ever need~\lstinline!define keys[1]!. So you can do
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
+ define keys[1]={
{key3}{ upper=\{#1\} },
{key4}{ lower=(#1) },
},
- definekeys[2]={
+ define keys[2]={
{key5}{ upper=3+#1, lower=7-#2 },
{key6}{ lower=6\cdot#1, upper=4/#2 },
},
@@ -639,17 +637,17 @@ ever need~\lstinline!definekeys[1]!. So you can do
\end{lstlisting}
\begingroup
\SetupClass\MyVar{
- definekeys={
- {key1}{ upper=3, seplower=7 },
- {key2}{ lower=6, sepupper=4 },
+ define keys={
+ {key1}{ upper=3, sep lower=7 },
+ {key2}{ lower=6, sep upper=4 },
},
- definekeys[1]={
- {key3}{ sepupper=\{#1\} },
- {key4}{ seplower=(#1) },
+ define keys[1]={
+ {key3}{ sep upper=\{#1\} },
+ {key4}{ sep lower=(#1) },
},
- definekeys[2]={
- {key5}{ sepupper=3+#1, seplower=7-#2 },
- {key6}{ seplower=6\cdot#1, sepupper=4/#2 },
+ define keys[2]={
+ {key5}{ sep upper=3+#1, sep lower=7-#2 },
+ {key6}{ sep lower=6\cdot#1, sep upper=4/#2 },
},
}
Let us see these rather ridiculous keys in action:
@@ -667,17 +665,17 @@ $ \vP[key1,key3=0,key5={3}{4}] $
One thing we might want to do to a variable
is \emph{invert} it. We therefore add a key~\lstinline!inv!
that adds an upper index~\lstinline!-1! to the symbol.
-We add this key using the key \lstinline!definekeys!
+We add this key using the key \lstinline!define keys!
since there is no reason for this key to take a value:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{inv}{ upper={-1} },
},
}
\end{lstlisting}
\SetupClass\MyVar{
-definekeys={
+define keys={
{inv}{ upper={-1} },
},
}
@@ -691,21 +689,21 @@ $\vh[\va,\vb,inv]$
\end{LTXexample}
Other keys might need to take one value.
-For defining these, we use a different key, \lstinline!definekeys[1]!.
+For defining these, we use a different key, \lstinline!define keys[1]!.
For instance, suppose we want a command for deriving a function \( n \)~times.
For this, we add the key~\lstinline!der!:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{inv}{ upper={-1} },
},
- definekeys[1]={
+ define keys[1]={
{der}{ upper={(#1)} },
},
}
\end{lstlisting}
\SetupClass\MyVar{
-definekeys[1]={
+define keys[1]={
{der}{ upper={(#1)} },
},
}
@@ -718,17 +716,17 @@ $\vf[der=\vn]{\vx}$
Maybe we also want a more elementary key~\lstinline!power! for raising a variable to a power:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{inv}{ upper={-1} },
},
- definekeys[1]={
+ define keys[1]={
{der}{ upper={(#1)} },
{power}{ upper={#1} },
},
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
+ define keys[1]={
{power}{ upper={#1} },
},
}
@@ -742,26 +740,26 @@ Let us try doing something a bit more complicated: adding a key for restricting
For this, we do the following:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{inv}{ upper={-1} },
},
- definekeys[1]={
+ define keys[1]={
{der}{ upper={(#1)} },
{power}{ upper={#1} },
- {res}{ rightreturn,symbolputright={|}, lower={#1} },
+ {res}{ right return,symbol put right={|}, lower={#1} },
},
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
- {res}{ rightreturn,symbolputright={|}, lower={#1} },
+ define keys[1]={
+ {res}{ right return,symbol put right={|}, lower={#1} },
},
}
This adds a horizonal line~\enquote{$|$}
to the right of the symbol followed by
a lower index containing whatever you passed to the key
(contained in the \mbox{command~\lstinline!#1!)}.
-(There is also an extra key, \lstinline!rightreturn!, which is a bit more advanced and should be taken for granted for now. Roughly speaking, it is there to make sure that the restriction symbol is printed \emph{after} all indices that you might have added before. More details in \cref{ch:return}.)
+(There is also an extra key, \lstinline!right return!, which is a bit more advanced and should be taken for granted for now. Roughly speaking, it is there to make sure that the restriction symbol is printed \emph{after} all indices that you might have added before. More details in \cref{ch:return}.)
Now we may write the following:
\begin{LTXexample}
$\vf[res=\vU]{\vx}$,
@@ -779,18 +777,20 @@ $\vf[der=\vn]{\vx}{\vy}{\vz}
Some people prefer to be able to scale the vertical line in the restriction notation. I rarely do that, but for this purpose, we could do the following:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
- {bigres}{ rightreturn, symbolputright=\big|, lower={#1} },
- {Bigres}{ rightreturn, symbolputright=\Big|, lower={#1} },
- {biggres}{ rightreturn, symbolputright=\bigg|, lower={#1} },
- {Biggres}{ rightreturn, symbolputright=\Bigg|, lower={#1} },
- {autores}{ leftreturn, symbolputleft=\kern-\nulldelimiterspace,
- Otherspar={.}{|}{auto}, symbolputleft=\bgroup,
- symbolputright=\egroup, lower={#1},
+ define keys[1]={
+ {big res}{ right return, symbol put right=\big|, lower={#1} },
+ {Big res}{ right return, symbol put right=\Big|, lower={#1} },
+ {bigg res}{ right return, symbol put right=\bigg|, lower={#1} },
+ {Bigg res}{ right return, symbol put right=\Bigg|, lower={#1} },
+ {auto res}{
+ left return,
+ symbol put left=\kern-\nulldelimiterspace,
+ Other spar={.}{|}{auto}, symbol put left=\bgroup,
+ symbol put right=\egroup, lower={#1},
},
% The last key auto-scales the vertical bar. See @\textit{\cref{sec:spar}}@
- % for information about Otherspar.
- % Note that Otherspar automatically invokes rightreturn,
+ % for information about Other spar.
+ % Note that Other spar automatically invokes right return,
% so no need to run that key twice.
},
}
@@ -802,13 +802,13 @@ via \lstinline!\NewVariableClass! and then used \lstinline!\SetupClass! to add k
\NewVariableClass\MyVar[
output=\MyVar, % This means that the output of an object
% of class \MyVar is also of class \MyVar
- definekeys={
+ define keys={
{inv}{ upper={-1} },
},
- definekeys[1]={
+ define keys[1]={
{der}{ upper={(#1)} },
{power}{ upper={#1} },
- {res}{ rightreturn, symbolputright={|}, lower={#1} },
+ {res}{ right return, symbol put right={|}, lower={#1} },
},
]
\end{lstlisting}
@@ -820,12 +820,12 @@ Let me add that it is possible to create subclasses of existing classes. You jus
\section{Example: Elementary algebra}\label{sec:algebra}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{poly}{
par, % This tells semantex to use parentheses around
% the argument in the first place, in case this
% had been turned off
- leftpar=[,rightpar=],
+ left par=[,right par=],
},
},
}
@@ -835,12 +835,12 @@ for doing algebra.
As an algebraist, one of the first things you might want to do is to create polynomial rings~\( \vk[poly]{\vx,\vy,\vz} \). Since all variables can already be used as functions (this is a design choice we discussed earlier), all we need to do is find a way to change from using parentheses to square brackets. This can be done the following way:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{poly}{
par, % This tells semantex to use parentheses around
% the argument in the first place, in case this
% had been turned off
- leftpar=[,rightpar=],
+ left par=[,right par=],
},
},
}
@@ -852,25 +852,25 @@ $\vk[poly]{\vx,\vy,\vz}$
It is straightforward how to do adjust this to instead write the \emph{field} generated by the variables~\( x, y, z \):
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{poly}{
par, % This tells semantex to use parentheses around
% the argument in the first place, in case this
% had been turned off
- leftpar=[,rightpar=],
+ left par=[,right par=],
},
{field}{
par,
- leftpar=(,rightpar=),
+ left par=(,right par=),
},
},
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{field}{
par,
- leftpar=(,rightpar=),
+ left par=(,right par=),
},
},
}
@@ -880,33 +880,33 @@ key would produce the same result with the current configuration of the class~\l
Adding support for free algebras, power series, and Laurent series is almost as easy, but there is a catch:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{poly}{
par, % This tells semantex to use parentheses around
% the argument in the first place, in case this
% had been turned off
- leftpar=[,rightpar=],
+ left par=[,right par=],
},
{field}{
par,
- leftpar=(,rightpar=),
+ left par=(,right par=),
},
- {freealg}{
+ {free alg}{
par,
- leftpar=\langle,
- rightpar=\rangle,
+ left par=\langle,
+ right par=\rangle,
},
- {powerseries}{
+ {power series}{
par,
- leftpar=\llbracket,
- rightpar=\rrbracket,
+ left par=\llbracket,
+ right par=\rrbracket,
},
{laurent}{
par,
- leftpar=(, rightpar=),
- prearg={\!\mathopen{}\SemantexDelimiterSize(},
- postarg={\SemantexDelimiterSize)\mathclose{}\!},
- % The "prearg" and "postarg" are printed before after
+ left par=(, right par=),
+ pre arg={\!\mathopen{}\SemantexDelimiterSize(},
+ post arg={\SemantexDelimiterSize)\mathclose{}\!},
+ % The "pre arg" and "post arg" are printed before after
% the argument, if the argument is non-empty.
% The command "\SemantexDelimiterSize" is substituted
% by \big, \Big, ..., or whatever size the
@@ -916,22 +916,22 @@ Adding support for free algebras, power series, and Laurent series is almost as
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys={
- {freealg}{
+ define keys={
+ {free alg}{
par,
- leftpar=\langle,
- rightpar=\rangle,
+ left par=\langle,
+ right par=\rangle,
},
- {powerseries}{
+ {power series}{
par,
- leftpar=\llbracket,
- rightpar=\rrbracket,
+ left par=\llbracket,
+ right par=\rrbracket,
},
{laurent}{
par,
- leftpar=(, rightpar=),
- prearg={\!\mathopen{}\SemantexDelimiterSize(},
- postarg={\SemantexDelimiterSize)\mathclose{}\!},
+ left par=(, right par=),
+ pre arg={\!\mathopen{}\SemantexDelimiterSize(},
+ post arg={\SemantexDelimiterSize)\mathclose{}\!},
% These are printed before and after the argument.
% The command "\SemantexDelimiterSize" is substituted
% by \big, \Big, ..., or whatever size the
@@ -941,8 +941,8 @@ Adding support for free algebras, power series, and Laurent series is almost as
}
See for yourself:
\begin{LTXexample}
-$\vk[freealg]{\vx}$,
-$\vk[powerseries]{\vy}$,
+$\vk[free alg]{\vx}$,
+$\vk[power series]{\vy}$,
$\vk[laurent]{\vz}$
\end{LTXexample}
@@ -950,10 +950,10 @@ $\vk[laurent]{\vz}$
Let us look at some other algebraic operations that we can control via \semantex:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{op}{upper={\mathrm{op}}},
% opposite groups, rings, categories, etc.
- {algclosure}{command=\overline},
+ {alg closure}{command=\overline},
% algebraic closure
{conj}{command=\overline},
% complex conjugation
@@ -962,31 +962,31 @@ Let us look at some other algebraic operations that we can control via \semantex
{perp}{upper=\perp},
% orthogonal complement
},
- definekeys[1]={
- {mod}{rightreturn,symbolputright={/#1}},
+ define keys[1]={
+ {mod}{right return,symbol put right={/#1}},
% for modulo notation like R/I
- {dom}{leftreturn,symbolputleft={#1\backslash}},
+ {dom}{left return,symbol put left={#1\backslash}},
% for left modulo notation like I\R
% "dom" is "mod" spelled backwards
{oplus}{upper={\oplus#1}},
% for notation like R^{\oplus n}
{tens}{upper={\otimes#1}},
% for notation like R^{\otimes n}
- {localize}{symbolputright={ \lbrack #1^{-1} \rbrack }},
+ {localize}{symbol put right={ \lbrack #1^{-1} \rbrack }},
% localization at a multiplicative subset;
% we use \lbrack and \rbrack rather than [ and ] since in some
% cases (using constructions like in @{\itshape\cref{ch:the_class_command}}@),
% the [...] might be interpreted as an optional argument.
- {localizeprime}{seplower={#1}},
+ {localize prime}{sep lower={#1}},
% for localization at a prime ideal
},
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{op}{upper={\mathrm{op}}},
% opposite groups, rings, categories, etc.
- {algclosure}{command=\overline},
+ {alg closure}{command=\overline},
% algebraic closure
{conj}{command=\overline},
% complex conjugation
@@ -995,40 +995,40 @@ Let us look at some other algebraic operations that we can control via \semantex
{perp}{upper=\perp},
% orthogonal complement
},
- definekeys[1]={
- {mod}{symbolputright={/#1}},
+ define keys[1]={
+ {mod}{symbol put right={/#1}},
% for modulo notation like R/I
- {dom}{symbolputleft={#1\backslash}},
+ {dom}{symbol put left={#1\backslash}},
% for left modulo notation like I\R
% "dom" is "mod" spelled backwards
{oplus}{upper={\oplus#1}},
% for notatoin like R^{\oplus n}
{tens}{upper={\otimes#1}},
% for notation like R^{\otimes n}
- {localize}{symbolputright={ \lbrack #1^{-1} \rbrack }},
+ {localize}{symbol put right={ \lbrack #1^{-1} \rbrack }},
% localization at a multiplicative subset
- {localizeprime}{seplower={#1}},
+ {localize prime}{sep lower={#1}},
% for localization at a prime ideal
},
}
Let us see it in practice:
\begin{LTXexample}
-$\vR[op]$, $\vk[algclosure]$,
+$\vR[op]$, $\vk[alg closure]$,
$\vz[conj]$, $\vV[dual]$,
$\vR[mod=\vI]$,$\vR[dom=\vJ]$,
$\vR[oplus=\vn]$,
$\vV[tens=\vm]$,
$\vR[localize=\vS]$,
-$\vR[localizeprime=\vI]$,
-$\vk[freealg]{\vS}[op]$,
+$\vR[localize prime=\vI]$,
+$\vk[free alg]{\vS}[op]$,
$\vV[perp]$
\end{LTXexample}
\section{GIT quotients}
\SetupClass\MyVar{
- definekeys[2]={
- {projquotient}{ symbolputright={ /\!\!/ _ { #1 } #2 } },
+ define keys[2]={
+ {proj quotient}{ symbol put right={ /\!\!/ _ { #1 } #2 } },
}
}
@@ -1036,17 +1036,17 @@ We include a slightly more advanced example
to show the use of keys with more than one value.
Sometimes, a key with one value is simply not enough. For instance, if you
work in geometric invariant theory~(GIT), you will eventually have to take the proj
-quotient~\( \vX[projquotient={\vchi}{\vG}] \) of~\( \vX \) with respect to the action of the group~\( \vG \) and the character~\( \vchi \). In other words, the proj quotient depends on two parameters, \( \vchi \) and~\( \vG \). For this purpose, we the the key~\lstinline!definekeys[2]!:
+quotient~\( \vX[proj quotient={\vchi}{\vG}] \) of~\( \vX \) with respect to the action of the group~\( \vG \) and the character~\( \vchi \). In other words, the proj quotient depends on two parameters, \( \vchi \) and~\( \vG \). For this purpose, we the the key~\lstinline!define keys[2]!:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys[2]={
- {projquotient}{ symbolputright={ /\!\!/_{#1} #2 } },
+ define keys[2]={
+ {proj quotient}{ symbol put right={ /\!\!/_{#1} #2 } },
}
}
\end{lstlisting}
\begin{LTXexample}
-$ \vX[projquotient={\vchi}{\vG}] $
+$ \vX[proj quotient={\vchi}{\vG}] $
\end{LTXexample}
@@ -1068,7 +1068,7 @@ $ \vf[1,res=\vV,spar,conj,op,spar,0,inv,spar,mod=\vI,spar,dual]{\vx} $
\end{LTXexample}
If it becomes too messy, you can scale the parentheses, too. Simply use the syntax
\lstinline!spar=\big!, \lstinline!spar=\Big!, etc.
-You can also get auto-scaled parentheses base on \lstinline!\left...\right!,
+You can also get auto-scaled parentheses base on \lstinline!\left ...\right!,
using the key \lstinline!spar=auto!:
\begin{LTXexample}
$\vf[spar]$,
@@ -1082,24 +1082,24 @@ So returning to the above example, we can write
\begin{LTXexample}
$\vf[1,res=\vV,spar,conj,op,spar=\big,0,inv,spar=\Big,mod=\vI,spar=\bigg,dual]{\vx}$
\end{LTXexample}
-To adjust the type of brackets, use the \lstinline!leftspar! and \lstinline!rightspar! keys:
+To adjust the type of brackets, use the \lstinline!left spar! and \lstinline!right spar! keys:
\begin{LTXexample}
-$\vf[leftspar={[},rightspar={\}},spar,spar=\Bigg]$
+$\vf[left spar={[},right spar={\}},spar,spar=\Bigg]$
\end{LTXexample}
Occassionally, it is useful to be able to input a particular kind of brackets just once,
without adjusting any settings. For this purpose, we have the
-\lstinline!otherspar! and~\lstinline!Otherspar! keys. They use the syntax
+\lstinline!other spar! and~\lstinline!Other spar! keys. They use the syntax
\begin{lstlisting}
-otherspar={@\<opening bracket\>@}{@\<closing bracket\>@}
-Otherspar={@\<opening bracket\>@}{@\<closing bracket\>@}{@\values\<normal|auto|*|{\textit{other}}\>@}
+other spar={@\<opening bracket\>@}{@\<closing bracket\>@}
+Other spar={@\<opening bracket\>@}{@\<closing bracket\>@}{@\values\<normal|auto|*|{\textit{other}}\>@}
\end{lstlisting}
-The last argument in \lstinline!Otherspar! sets the size of the
+The last argument in \lstinline!Other spar! sets the size of the
parentheses.
Let us see them in action:
\begin{LTXexample}
-$\vf[otherspar={[}{)},
- otherspar={\{}{\rangle},
- Otherspar={\langle}{\rangle}{\Bigg},spar]$
+$\vf[other spar={[}{)},
+ other spar={\{}{\rangle},
+ Other spar={\langle}{\rangle}{\Bigg},spar]$
\end{LTXexample}
\section{The \texorpdfstring{\texttt{$\backslash$\<Class\>}}{Class} command}\label{ch:the_class_command}
@@ -1140,7 +1140,7 @@ Sometimes, it is useful to put these commands into
keys instead. So you can do stuff like
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{tilde}{command=\tilde},
{widetilde}{command=\widetilde},
{bar}{command=\bar},
@@ -1150,7 +1150,7 @@ keys instead. So you can do stuff like
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{tilde}{command=\tilde},
{widetilde}{command=\widetilde},
{bar}{command=\bar},
@@ -1166,7 +1166,7 @@ $\va[roman]$,
$\va[bar]$
\end{LTXexample}
Note that there is a predefined key,~\lstinline!smash!,
-which is equivalent to~\lstinline!command=\smash!.
+which is equivalent to~\lstinline!return, command=\smash!.
\endgroup
@@ -1201,7 +1201,7 @@ But after the \lstinline!return! routine, the symbol is~\lstinline!f^{-1}!, and
There are some cases when you do not want to add all commands, indices, and arguments to the symbol at the same time.
Therefore, there exist a few extra, partial \lstinline!return! keys that only add some of them to the symbol and save the rest of later.
We list the most important ones here and refer to~\cref{sec:fundamental_keys} for the remaining ones.
-Most users will probably only ever need the keys \lstinline!return! and~\lstinline!rightreturn!.
+Most users will probably only ever need the keys \lstinline!return! and~\lstinline!right return!.
\begin{itemize}
\item
\mylst!return!
@@ -1209,17 +1209,17 @@ Most users will probably only ever need the keys \lstinline!return! and~\lstinli
Invokes the return routine, i.e.\ adds all commands, indices, and arguments to the symbol, if any such exist.
\item
- \mylst!innerreturn!
+ \mylst!inner return!
Invokes the inner return routine, i.e.\ adds all commands to the symbol, if any such exist.
\item
- \mylst!rightreturn!
+ \mylst!right return!
Invokes the right return routine, i.e.\ adds all commands, right indices, and right arguments to the symbol, if any such exist.
\item
- \mylst!leftreturn!
+ \mylst!left return!
Invokes the left return routine, i.e.\ adds all commands, left indices, and left arguments to the symbol, if any such exist.
\end{itemize}
@@ -1276,7 +1276,7 @@ also turn keyval syntax in arguments completely off,
avoiding such issues. This can be done by setting
\begin{lstlisting}
\SetupClass\MyVar{
- argkeyval=false,
+ arg keyval=false,
}
\end{lstlisting}
@@ -1300,11 +1300,11 @@ To switch to the keyval parser of this package, we do
\begin{lstlisting}
\usepackage{expkv}
\SemantexSetup{
- keyvalparser=\ekvparse,
+ keyval parser=\ekvparse,
}
\end{lstlisting}
\SemantexSetup{
- keyvalparser=\ekvparse,
+ keyval parser=\ekvparse,
}
Now you can do
\begin{LTXexample}
@@ -1313,7 +1313,7 @@ $ \va[lower=\vx[lower=3]] $
In general,
using the key
-\mylst!keyvalparser={$\<command\>$}!
+\mylst!keyval parser={$\<command\>$}!
sets the keyval parser function to be the command~\<command\>.
The \<command\> must take three arguments:
\mylst!$\<command\>\<function\num{1}\>\<function\num{2}\>${$\<key-value list\>$}!.
@@ -1365,83 +1365,83 @@ Next, for morphisms of schemes~\( \vf \colon \vX \to \vY \),
we need to be able to typeset comorphisms as well as the one hundred thousand different pullback and pushforward operations. For this, we add some keys to the \lstinline!\MyVar! key:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{comorphism}{upper=\#},
% comorphisms, i.e. f^{\#}
- {inverseimage}{upper={-1},nopar},
+ {inverse image}{upper={-1},no par},
% inverse image of sheaves
- {sheafpull}{upper=*,nopar},
+ {sheaf pull}{upper=*,no par},
% sheaf *-pullback
- {sheafpush}{lower=*,nopar},
+ {sheaf push}{lower=*,no par},
% sheaf *-pushforward
- {sheaf!pull}{upper=!,nopar},
+ {sheaf !pull}{upper=!,no par},
% sheaf !-pullback
- {sheaf!push}{lower=!,nopar},
+ {sheaf !push}{lower=!,no par},
% sheaf !-pushforward
},
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{comorphism}{upper=\#},
% comorphisms, i.e. f^{\#}
- {inverseimage}{upper={-1},nopar},
+ {inverse image}{upper={-1},no par},
% inverse image of sheaves
- {sheafpull}{upper=*,nopar},
+ {sheaf pull}{upper=*,no par},
% sheaf *-pullback
- {sheafpush}{lower=*,nopar},
+ {sheaf push}{lower=*,no par},
% sheaf *-pushforward
- {sheaf!pull}{upper=!,nopar},
+ {sheaf !pull}{upper=!,no par},
% sheaf !-pullback
- {sheaf!push}{lower=!,nopar},
+ {sheaf !push}{lower=!,no par},
% sheaf !-pushforward
},
}
-We have added the command \lstinline!nopar! to all pullback and pushforward commands since it is custom to write, say,~\( \vf[sheafpull]{\sheafF} \) rather than~\( \vf[sheafpull,par]{\sheafF} \). Of course, you can decide that for yourself, and in any case, you can write~\lstinline!\vf[sheafpull,par]{\sheafF}! if you want to force it to use parentheses in a particular case. Of course, since all \semantex variables can be used as functions, so can whatever these pullback and pushforward operations output. So we may write:
+We have added the command \lstinline!no par! to all pullback and pushforward commands since it is custom to write, say,~\( \vf[sheaf pull]{\sheafF} \) rather than~\( \vf[sheaf pull,par]{\sheafF} \). Of course, you can decide that for yourself, and in any case, you can write~\lstinline!\vf[sheaf pull,par]{\sheafF}! if you want to force it to use parentheses in a particular case. Of course, since all \semantex variables can be used as functions, so can whatever these pullback and pushforward operations output. So we may write:
\begin{LTXexample}
For a morphism~$ \vf \colon
\vX \to \vY $ with
comorphism~$ \vf[comorphism]
\colon \sheafreg[\vY] \to
-\vf[sheafpush]{\sheafreg[\vX]} $,
+\vf[sheaf push]{\sheafreg[\vX]} $,
and for a sheaf~$ \sheafF $ on~$ \vY $, we can define the
-pullback~$ \vf[sheafpull]{
+pullback~$ \vf[sheaf pull]{
\sheafF} $ by letting~$
-\vf[sheafpull]{\sheafF}{\vU} = \cdots $ and the $ ! $-pullback by letting~$
-\vf[sheaf!pull]{\sheafF}{\vU} = \cdots $.
+\vf[sheaf pull]{\sheafF}{\vU} = \cdots $ and the $ ! $-pullback by letting~$
+\vf[sheaf !pull]{\sheafF}{\vU} = \cdots $.
\end{LTXexample}
Maybe some people would write \lstinline!pull!, \lstinline!push!, etc.~instead, but there are many different kinds of pullbacks in mathematics, so I prefer to use the \lstinline!sheaf!~prefix to show that this is for sheaves.
Probably, in the long run, an algebraic geometer might also want
-to abbreviate~\lstinline!inverseimage! to~\lstinline!invim!.
+to abbreviate~\lstinline!inverse image! to~\lstinline!invim!.
There are a number of other operations we might want to do for sheaves. We already defined the key~\lstinline!res! for restriction, so there is no need to define this again.
However, we might need to stalk, sheafify, take dual sheaves, and twist sheaves. Let us define keys for this:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
- {stalk}{seplower={#1}},
- % "seplower" means "separator + lower", i.e. lower index
+ define keys[1]={
+ {stalk}{sep lower={#1}},
+ % "sep lower" means "separator + lower", i.e. lower index
% separated from any previous lower index by a separator,
% which by default is a comma
- {sheaftwist}{return,symbolputright={(#1)}},
+ {sheaf twist}{return,symbol put right={(#1)}},
},
- definekeys={
+ define keys={
{sheafify}{upper=+},
- {sheafdual}{upper=\vee},
+ {sheaf dual}{upper=\vee},
},
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
- {stalk}{seplower={#1}},
- % "seplower" means "separator + lower", i.e. lower index
+ define keys[1]={
+ {stalk}{sep lower={#1}},
+ % "sep lower" means "separator + lower", i.e. lower index
% separated from any previous lower index by a separator,
% which by default is a comma
- {sheaftwist}{return,symbolputright={(#1)}},
+ {sheaf twist}{return,symbol put right={(#1)}},
},
- definekeys={
+ define keys={
{sheafify}{upper=+},
- {sheafdual}{upper=\vee},
+ {sheaf dual}{upper=\vee},
},
}
\begin{LTXexample}
@@ -1450,11 +1450,11 @@ $\sheafF[res=\vU,spar,stalk=
\vp]$,
$\sheafreg[\vX,stalk=\vp]$,
$\sheafG[sheafify]$,
-$\vf[inverseimage]{\sheafreg[
+$\vf[inverse image]{\sheafreg[
\vY]}[spar,stalk=\vx]$,
-$\sheafG[sheafdual]$,
-$\sheafreg[\vX][sheaftwist=-1]$,
-$\sheafreg[sheaftwist=1,sheafdual]$
+$\sheafG[sheaf dual]$,
+$\sheafreg[\vX][sheaf twist=-1]$,
+$\sheafreg[sheaf twist=1,sheaf dual]$
\end{LTXexample}
\chapter{Example: Homological algebra}
@@ -1475,8 +1475,8 @@ $\Hom[\vA]{\vM,\vN}$,
$\Ext[\vA]{\vM,\vN}$
\end{LTXexample}
\SetupClass\MyVar{
-definekeys[1]={
- {shift}{ rightreturn,symbolputright={ \relax [ {#1} ] } },
+define keys[1]={
+ {shift}{ right return,symbol put right={ \relax [ {#1} ] } },
% we use \lbrack and \rbrack rather than [ and ] since in some
% cases (using constructions like in @{\itshape\cref{ch:the_class_command}}@),
% the [...] might be interpreted as an optional argument.
@@ -1485,8 +1485,8 @@ definekeys[1]={
You will probably need several keyval interfaces, some of which will be covered below. But right now, we shall implement a shift operation~\( \vX\mapsto\vX[shift=\vn] \):
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
- {shift}{ rightreturn,symbolputright={ \lbrack #1 \rbrack } },
+ define keys[1]={
+ {shift}{ right return,symbol put right={ \lbrack #1 \rbrack } },
% we use \lbrack and \rbrack rather than [ and ] since in some
% cases (using constructions like in @{\itshape\cref{ch:the_class_command}}@),
% the [...] might be interpreted as an optional argument.
@@ -1499,9 +1499,9 @@ $\vX \mapsto \vX[shift=\vn]$
\end{LTXexample}
Finally, let us define a command for the differential (in the homolgoical algebra sense):
\begin{lstlisting}
-\NewObject\MyVar\dif{d}[nopar]
+\NewObject\MyVar\dif{d}[no par]
\end{lstlisting}%
-\NewObject\MyVar\dif{d}[nopar]%
+\NewObject\MyVar\dif{d}[no par]%
\begin{LTXexample}
$\dif{\vx} = 0$
\end{LTXexample}
@@ -1513,20 +1513,20 @@ people have very different opinions about the positions of the gradings.
As an algebraist, I am used to \emph{upper} gradings (\enquote{cohomological} grading), whereas many topologists prefer \emph{lower} gradings (\enquote{homological} grading). The \semantex system
supports both, but the default is upper gradings.
You can adjust this by writing
-\lstinline!gradingposition=upper! or~\lstinline!gradingposition=lower!.
+\lstinline!grading position=upper! or~\lstinline!grading position=lower!.
We already learned about the keys \lstinline!upper! and~\lstinline!lower!,
-as well as their friends \lstinline!sepupper!, \lstinline!seplower!, \lstinline!commaupper!, \lstinline!commalower!, etc.
+as well as their friends \lstinline!sep upper!, \lstinline!sep lower!, \lstinline!comma upper!, \lstinline!comma lower!, etc.
There also exist \enquote{relative} versions of these keys that print the index either as an upper index or as a lower index, depending on your preference for cohomological or homological grading. They are called
\begin{center}
\lstinline!d!,
- \lstinline!sepd!,
- \lstinline!commad!
+ \lstinline!sep d!,
+ \lstinline!comma d!
\qquad\qquad and\qquad\qquad
\lstinline!i!,
- \lstinline!sepi!,
- \lstinline!commai!,
+ \lstinline!sep i!,
+ \lstinline!comma i!,
\end{center}
and consequently, we shall refer to the indices
they correspond to as the \enquote{\lstinline!d!-index} and the \enquote{\lstinline!i!-index}.
@@ -1535,8 +1535,13 @@ the grading. The~\lstinline!i! stands for \enquote{index}
and corresponds to the \enquote{other} index where you may store
additional information.\footnote{These names are not perfect; you might object that the degree is also an index, but feel free to come up with a more satisfactory naming principle, and I shall be happy to consider it.}
-To understand the difference, keep the following two examples
-in mind: the hom complex~\( \Hom[*,i=\vA] \) and the simplicial homology~\( \ho[*,i=\vDelta] \) (we will define the command~\lstinline!\ho! for homology in the next section):
+To understand the difference,
+keep the following two examples
+in mind: the hom complex~\( \Hom[*,i=\vA] \) and the simplicial homology~\( \ho[*,i=\vDelta] \):
+\begin{lstlisting}
+\NewObject\MyVar\Hom{\operatorname{Hom}}
+\NewObject\MyVar\ho{H}[grading position=lower] % homology
+\end{lstlisting}
\begin{LTXexample}
$\Hom[i=\vA,d=0]$,
$\ho[i=\vDelta,d=1]$
@@ -1546,7 +1551,7 @@ Let us see them in action:
$ \vX[d=3,i=\vk] $
\SetupObject\vX{
- gradingposition=lower
+ grading position=lower
}
$ \vX[d=3,i=\vk] $
@@ -1557,7 +1562,7 @@ If you want to print a bullet as the degree, there is the predefined key~\lstinl
$ \vX[*] $
\SetupObject\vX{
- gradingposition=lower
+ grading position=lower
}
$ \vX[*] $
@@ -1568,7 +1573,7 @@ I guess it is also time to reveal that the previously mentioned shorthand notati
$ \vX[1] $
\SetupObject\vX{
- gradingposition=lower
+ grading position=lower
}
$ \vX[1] $
@@ -1591,51 +1596,27 @@ that the actions of these keys are invoked.
In fact, \semantex carefully separates keys taking
a value from keys taking no values.
-\section{The \texorpdfstring{\texttt{Cohomology}}{Cohomology} class type}
-
-Now homological algebra is hard unless we can do \emph{cohomology} and \emph{homology}. In principle, this is not hard
-to do, as we can write e.g.~\lstinline!\vH[d=0]{\vX}! to get~\( \vH[d=0]{\vX} \).
-However, some people might find it cumbersome to have to write~\lstinline!d=! every time you want to print an index.
-This is probably the right time to reveal that \semantex supports multiple class \emph{types}.
-So far, we have been exclusively using the \lstinline!Variable!
-class type, which is what you create when you apply the command~\lstinline!\NewVariableClass!.
-The first other class type we shall need is the \lstinline!Cohomology! class type, which has a different input syntax that fits cohomology.
-Let us try to use it:
-\begin{lstlisting}
-\NewCohomologyClass\MyCohomology[
- parent=\MyVar,gradingposition=upper
-]
-
-\NewObject\MyCohomology\co{H}
-
-\NewCohomologyClass\MyHomology[
- parent=\MyCohomology,gradingposition=lower
-]
-
-\NewObject\MyHomology\ho{H}
-\end{lstlisting}
-The cohomology command~\lstinline!\co! we just created works very much
-like a command of \lstinline!Variable! type. However, the input syntax is a bit different:
+We can similarly define a command for cohomology:
\begin{lstlisting}
-\co[@\<options\>@]{@\<degree\>@}{@\<argument\>@}
+\NewObject\MyVar\co{H}[grading position=upper]
+ % this is actually unnecessary, as
+ % upper grading is the default
\end{lstlisting}
-All three arguments are optional. The~\<degree\> is printed
-in the \lstinline!d!-index.
-Let us see it in practice:
+Let us see \lstinline!\ho! and~\lstinline!\co! in practise:
\begin{LTXexample}
-$\co{0}$, $\co{*}$,
-$\co{\vi}{\vX}$,
-$\co[\vG]{0}$,
-$\co[\vH]{*}$,
-$\co[\vDelta]{\vi}{\vX}$
+$\co[d=0]$, $\co[*]$,
+$\co[d=\vi]{\vX}$,
+$\co[\vG,d=0]$,
+$\co[\vH,*]$,
+$\co[\vDelta,d=\vi]{\vX}$
\end{LTXexample}
\begin{LTXexample}
-$\ho{0}$, $\ho{*}$,
-$\ho{\vi}{\vX}$,
-$\ho[\vG]{0}$,
-$\ho[\vH]{*}$,
-$\ho[\vDelta]{\vi}{\vX}$
+$\ho[d=0]$, $\co[*]$,
+$\ho[d=\vi]{\vX}$,
+$\ho[\vG,d=0]$,
+$\ho[\vH,*]$,
+$\ho[\vDelta,d=\vi]{\vX}$
\end{LTXexample}
Of course, you can define similar commands for cocycles, coboundaries, and all sorts of other entities that show up in homological algebra.
@@ -1643,7 +1624,7 @@ You might also want to implement feature like reduced cohomology, \v{C}ech cohom
and hypercohomology. This is quite easy with the \lstinline!command! key:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{reduced}{command=\widetilde},
{cech}{command=\check},
{hyper}{command=\mathbb},
@@ -1651,7 +1632,7 @@ and hypercohomology. This is quite easy with the \lstinline!command! key:
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys={
+ define keys={
{reduced}{command=\widetilde},
{cech}{command=\check},
{hyper}{command=\mathbb},
@@ -1659,23 +1640,22 @@ and hypercohomology. This is quite easy with the \lstinline!command! key:
}
\begin{LTXexample}
-$\co[reduced]{i}$,
-$\co[cech]{*}$,
-$\co[hyper,cech]{0}{\vX}$
+$\co[reduced,d=\vi]$,
+$\co[cech][*]$,
+$\co[hyper,cech,d=0]{\vX}$
\end{LTXexample}
-The \lstinline!Cohomology! class type also provides a nice way
-to implement derived functors:
+You can use a similar approach to define commands for derived functors:
\begin{lstlisting}
-\NewObject\MyCohomology\Lder{\mathbb{L}}[nopar]
-\NewObject\MyCohomology\Rder{\mathbb{R}}[nopar]
+\NewObject\MyVar\Lder{\mathbb{L}}[no par]
+\NewObject\MyVar\Rder{\mathbb{R}}[no par]
\end{lstlisting}
-\NewObject\MyCohomology\Lder{\mathbb{L}}[nopar]
-\NewObject\MyCohomology\Rder{\mathbb{R}}[nopar]
+\NewObject\MyVar\Lder{\mathbb{L}}[no par]
+\NewObject\MyVar\Rder{\mathbb{R}}[no par]
For instance, we can write
\begin{LTXexample}
-$\Lder{\vi}{\vf}$,
-$\Rder{0}{\vf}$
+$\Lder[d=\vi]{\vf}$,
+$\Rder[d=0]{\vf}$
\end{LTXexample}
Alternatively, the user might prefer to use keyval syntax
@@ -1683,39 +1663,39 @@ on the level of the function itself (\( \vf \)~in this case).
This can be done the following way:
\begin{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
+ define keys[1]={
{Lder} {
- leftreturn, symbolputleft=\mathbb{L}^{#1},
+ left return, symbol put left=\mathbb{L}^{#1},
},
{Rder} {
- leftreturn, symbolputleft=\mathbb{R}^{#1},
+ left return, symbol put left=\mathbb{R}^{#1},
},
},
- definekeys={
+ define keys={
{Lder} {
- leftreturn, symbolputleft=\mathbb{L},
+ left return, symbol put left=\mathbb{L},
},
{Rder} {
- leftreturn, symbolputleft=\mathbb{R},
+ left return, symbol put left=\mathbb{R},
},
},
}
\end{lstlisting}
\SetupClass\MyVar{
- definekeys[1]={
+ define keys[1]={
{Lder} {
- leftreturn, symbolputleft=\mathbb{L}^{#1},
+ left return, symbol put left=\mathbb{L}^{#1},
},
{Rder} {
- leftreturn, symbolputleft=\mathbb{R}^{#1},
+ left return, symbol put left=\mathbb{R}^{#1},
},
},
- definekeys={
+ define keys={
{Lder} {
- leftreturn, symbolputleft=\mathbb{L},
+ left return, symbol put left=\mathbb{L},
},
{Rder} {
- leftreturn, symbolputleft=\mathbb{R},
+ left return, symbol put left=\mathbb{R},
},
},
}
@@ -1741,13 +1721,13 @@ $\RHom{\vX,\vY}$
\chapter{Keyval syntax in arguments (Example: Cohomology with coefficients)}\label{ch:arg_keyval}
\SetupClass\MyVar{
- defineargkeys[1]={
- {coef}{ othersep={;}{#1} },
+ define arg keys[1]={
+ {coef}{ other sep={;}{#1} },
},
}
\SetupObject\co{
- argkeyval=true,
+ arg keyval=true,
}
Imagine we want to do cohomology with coefficients in some ring~\( \vR \).
@@ -1758,23 +1738,23 @@ $\co{*}{\vX,coef=\vR}$
\end{LTXexample}
This shows that arguments of functions also support keyval syntax.
To define argument keys,
-we use the key~\lstinline!defineargkeys!,
-or~\mylst!defineargkeys[$n$]! if you want it to be
+we use the key~\lstinline!define arg keys!,
+or~\mylst!define arg keys[$n$]! if you want it to be
able to take $n$~values for~$n=0,1,2,\ldots,9$. The syntax for these is
-just like the syntax for the keys~\lstinline!definekeys!
-and~\mbox{\mylst!definekeys[$n$]!}.
+just like the syntax for the keys~\lstinline!define keys!
+and~\mbox{\mylst!define keys[$n$]!}.
However, for reasons we shall see in a moment, argument
keys (at least those taking values) are actually turned off
by default, so we shall have to turn them on first:
\begin{lstlisting}
\SetupClass\MyVar{
- argkeyval=true, % this turns keyval syntax in arguments on
- defineargkeys[1]={
- {coef}{ othersep={;}{#1} },
+ arg keyval=true, % this turns keyval syntax in arguments on
+ define arg keys[1]={
+ {coef}{ other sep={;}{#1} },
},
}
\end{lstlisting}
-The key \lstinline!othersep! is a key that controls the separator
+The key \lstinline!other sep! is a key that controls the separator
between the current argument and the previous argument (it will only be printed if there was a previous argument). By default, this separator is a comma. So in the syntax~\lstinline!\co{*}{\vX,coef=\vR}!,
there are two arguments, \lstinline!\vX! and~\lstinline!\vR!, and the separator is a semicolon.
We shall later (see~\cref{ch:parse_coho_coef})
@@ -1792,8 +1772,8 @@ $\Hom[\sheafreg[\vU]]{
}$
\end{LTXexample}
-The key~\lstinline!argkeyval! can take four arguments: \lstinline!true! (which we used above, keyval syntax is completely on),
-\lstinline!false! (no keys allowed), \lstinline!singlekeys! (the default behaviour where only keys taking no values are allowed), and \lstinline!onesinglekey! (only allows one key, taking no value).
+The key~\lstinline!arg keyval! can take four arguments: \lstinline!true! (which we used above, keyval syntax is completely on),
+\lstinline!false! (no keys allowed), \lstinline!single keys! (the default behaviour where only keys taking no values are allowed), and \lstinline!one single key! (only allows one key, taking no value).
It should be noted that there are several predefined
argument keys on the level
@@ -1836,75 +1816,78 @@ Our solution for left indices in \semantex is based directly on the one
from \pack{leftindex}. However, it works much better if you use \semantex
than if you just used \pack{leftindex} alone, due to the ability to centrally control all your notation. This allows you to choose height and slanting phantoms once and for all in the preamble and never have to worry about it in your document body.
-Just like we have the keys \lstinline!upper!, \lstinline!lower!, \lstinline!sepupper!, \lstinline!seplower!, \lstinline!commaupper!, \mbox{\lstinline!commalower!,} we have a similar collection of keys for left
+Just like we have the keys \lstinline!upper!, \lstinline!lower!, \lstinline!sep upper!, \lstinline!sep lower!, \lstinline!comma upper!, \lstinline!comma lower!, we have a similar collection of keys for left
indices:
-\lstinline!upperleft!, \lstinline!lowerleft!, \mbox{\lstinline!sepupperleft!,} \lstinline!seplowerleft!, \lstinline!commaupperleft!, \lstinline!commalowerleft!:
+\lstinline!upper left!, \lstinline!lower left!, \lstinline!sep upper left!, \lstinline!sep lower left!, \lstinline!comma upper left!, \lstinline!comma lower left!:
\begin{LTXexample}
-$ \vf[upperleft=*] $,
-$ \vGamma[upperleft=*] $,
-$ \vA[upperleft=*] $
+$ \vf[upper left=*] $,
+$ \vGamma[upper left=*] $,
+$ \vA[upper left=*] $
\end{LTXexample}
When you create a new object in \semantex, the height and slanting phantoms
will automatically be set to be equal to the symbol. However, as we see
above, we sometimes need to change them.
-This can be done using the keys \lstinline!heightphantom!
-and~\lstinline!slantingphantom!:
+This can be done using the keys \lstinline!height phantom!
+and~\lstinline!slanting phantom!:
\begin{LTXexample}
\SetupObject\vGamma{
- slantingphantom=I}
-\SetupObject\vA{slantingphantom=P}
-$ \vf[upperleft=*] $,
-$ \vGamma[upperleft=*] $,
-$ \vA[upperleft=*] $
+ slanting phantom=I}
+\SetupObject\vA{slanting phantom=P}
+$ \vf[upper left=*] $,
+$ \vGamma[upper left=*] $,
+$ \vA[upper left=*] $
\end{LTXexample}
Sometimes, changing the slanting phantom is not quite enough.
In the previous example, the star is still not quite close enough
to the~\( \vA \), and there is no slanting phantom that is quite slanted enough to correct this. We solve this using
-the key~\lstinline!postupperleft!. What you add using this key
+the key~\lstinline!post upper left!. What you add using this key
will be printed after the upper left index, provided the upper left index
is non-empty and hence will be printed in the first place.
-There is also a \lstinline!preupperleft!, and there are similarly \lstinline!prelowerleft!, \lstinline!postlowerleft!, \lstinline!preupper!, \lstinline!postupper!, \lstinline!prelower!, and~\lstinline!postlower!.
+There is also a \lstinline!pre upper left!, and there are similarly \lstinline!pre lower left!, \lstinline!post lower left!, \lstinline!pre upper!, \lstinline!post upper!, \lstinline!pre lower!, and~\lstinline!post lower!.
Let us see it in action:
\begin{LTXexample}
\SetupObject\vA{
- slantingphantom=P,
- postupperleft=\!,
+ slanting phantom=P,
+ post upper left=\!,
}
-$ \vA[upperleft=*] $
+$ \vA[upper left=*] $
\end{LTXexample}
Note that \semantex at least does its best to try to guess
new height and slanting phantoms when you use operations on objects:
\begin{LTXexample}
-$ \vA[spar=\Bigg,upperleft=*] $,
+$ \vA[spar=\Bigg,upper left=*] $,
$ \vP[command=\overline,return,
- upperleft=*] $
+ upper left=*] $
\end{LTXexample}
\chapter{The \texorpdfstring{\texttt{Symbol}}{Symbol} class type (Example: Derived tensor products and fibre products)}
\NewSymbolClass\MyBinaryOperator[
- definekeys={
+ define keys={
{Lder}{upper=L},
{Rder}{upper=R},
},
]
\NewObject\MyBinaryOperator\tensor{\otimes}[
- definekeys={
+ define keys={
{der}{Lder},
},
]
\NewObject\MyBinaryOperator\fibre{\times}[
% Americans are free to call it \fiber instead
- definekeys={
+ define keys={
{der}{Rder},
},
]
\semantex has facilities for printing tensor products~\( \tensor \) as well as derived tensor products~\( \tensor[der] \).
-For this, we need the \lstinline!Symbol! class type.
+This is probably the right time to reveal that \semantex supports multiple class \emph{types}.
+So far, we have been exclusively using the \lstinline!Variable!
+class type, which is what you create when you apply the command~\lstinline!\NewVariableClass!.
+The first other class type we shall need is the \lstinline!Symbol! class type.
This has exactly the same syntax as the \lstinline!Variable!
class type, except that it cannot take an argument.
In other words, its syntax is
@@ -1915,21 +1898,21 @@ You should normally only use it for special constructions like binary operators
Let us try to use it to define tensor products and fibre products:
\begin{lstlisting}
\NewSymbolClass\MyBinaryOperator[
- definekeys={
+ define keys={
{Lder}{upper=L},
{Rder}{upper=R},
},
]
\NewObject\MyBinaryOperator\tensor{\otimes}[
- definekeys={
+ define keys={
{der}{Lder},
},
]
\NewObject\MyBinaryOperator\fibre{\times}[
% Americans are free to call it \fiber instead
- definekeys={
+ define keys={
{der}{Rder},
},
]
@@ -1945,29 +1928,21 @@ $\vk \tensor[\vA,der] \vk$,
$\vX \fibre[\vY,der] \vX$
\end{LTXexample}
-\chapter{The \texorpdfstring{\texttt{Delimiter}}{Delimiter} class type}
+\chapter{Paired delimiters}
-\NewDelimiterClass\MyDelim[parent=\MyVar]
-\NewObject\MyDelim\norm{\lVert}{\rVert}[
- definekeys[1]={
- {default}{ outputoptions={ default={#1} } },
+\NewObject\MyVar\norm[
+ left par=\lVert, right par=\rVert,
+ define keys[1]={
+ {default}{ output options={ default={#1} } },
},
]
-\NewObject\MyDelim\inner{\langle}{\rangle}
+\NewObject\MyVar\inner[left par=\langle, right par=\rangle]
-Delimiters are what they sound like: functions like \( \norm{slot} \) and~\( \inner{slot,slot} \)
-that are defined using brackets only. Let us define a class of type \lstinline!Delimiter!:
-\begin{lstlisting}
-\NewDelimiterClass\MyDelim[parent=\MyVar]
-\end{lstlisting}
-Now we can create instances of the class~\lstinline!\MyDelim! with the following syntax:
+In this chapter, se show how to define delimiter commands like \( \norm{slot} \) and~\( \inner{slot,slot} \).
+This is easy to do via the keys \lstinline!left par! and~\lstinline!right par!:
\begin{lstlisting}
-\NewObject\MyDelim@\usercommand\<object\>@{@\<left bracket\>@}{@\<right bracket\>@}[@\<options\>@]
-\end{lstlisting}
-Now we can do the following:
-\begin{lstlisting}
-\NewObject\MyDelim\norm{\lVert}{\rVert}
-\NewObject\MyDelim\inner{\langle}{\rangle}
+\NewObject\MyVar\norm[left par=\lVert, right par=\rVert]
+\NewObject\MyVar\inner[left par=\langle, right par=\rangle]
\end{lstlisting}
Indeed:
\begin{LTXexample}
@@ -1977,13 +1952,13 @@ $\inner{slot,slot}$
\end{LTXexample}
In the case where you want to use different kinds of
norms, say \( \norm[2]{slot} \) or~\( \norm[\infty]{slot} \),
-you can use the key~\mylst!outputoptions={$\<options\>$}!.
+you can use the key~\mylst!output options={$\<options\>$}!.
This allows you to pass the~\<options\> to the output class
(in this case,~\lstinline!\MyVar!):
\begin{lstlisting}
\SetupObject\norm{
- definekeys[1]={
- {default}{ outputoptions={ default={#1} } },
+ define keys[1]={
+ {default}{ output options={ default={#1} } },
},
}
\end{lstlisting}
@@ -1993,7 +1968,7 @@ $\norm[2]{\vx}$,
$\norm[\infty]{\vx}$
\end{LTXexample}
-We can also use it for more complicated constructions, like sets.
+We can also create for more complicated constructions, like sets.
The following is inspired from the \pack{mathtools} package where a similar construction is created using the commands from that package. My impression is that Lars Madsen is the main mastermind behind the code I use for the \lstinline!\where!~construction:
\begin{lstlisting}
\newcommand\wherecommand[1]{
@@ -2006,10 +1981,11 @@ The following is inspired from the \pack{mathtools} package where a similar cons
\NewObject\MyVar\where{ \wherecommand{\SemantexDelimiterSize} }
-\NewObject\MyDelim\Set{\lbrace}{\rbrace}[
- prearg={\,},postarg={\,},
+\NewObject\MyVar\Set[
+ left par=\lbrace, right par=\rbrace,
+ pre arg={\,},post arg={\,},
% adds \, inside {...}, as recommended by D. Knuth
- argkeyval=false,
+ arg keyval=false,
% this turns off all keyval syntax in the argument
]
\end{lstlisting}
@@ -2023,10 +1999,11 @@ The following is inspired from the \pack{mathtools} package where a similar cons
\NewObject\MyVar\where{ \wherecommand{\SemantexDelimiterSize} }
-\NewObject\MyDelim\Set{\lbrace}{\rbrace}[
- prearg={\,},postarg={\,},
+\NewObject\MyVar\Set[
+ left par=\lbrace, right par=\rbrace,
+ pre arg={\,},post arg={\,},
% adds \, inside {...}, as recommended by D. Knuth
- argkeyval=false,
+ arg keyval=false,
% this turns off all keyval syntax in the argument
]
@@ -2040,7 +2017,7 @@ Now you can use
$\Set{ \vx\in\vY \where \vx\ge0 }$,
$\Set[par=\big]{ \vx\in\vY \where \vx\ge0 }$
\end{LTXexample}
-Don't forget that, since the class~\lstinline!\MyDelim! inherits from~\lstinline!\MyVar!,
+Don't forget that, because we called~\lstinline!output=\MyVar! in the beginning of this manual,
the output of any of these commands also belongs to class~\lstinline!\MyVar!.
So you can do stuff like
\begin{LTXexample}
@@ -2054,18 +2031,22 @@ $\Set{
Tuple-like commands are also possible:
\begin{lstlisting}
-\NewObject\MyDelim\tup{(}{)} % tuples
-\NewObject\MyDelim\pcoor{[}{]}[ % projective coordinates
- setargsep=\mathpunct{:},
+\NewObject\MyVar\tup[left par=(,right par=)] % tuples
+\NewObject\MyVar\pcoor[ % projective coordinates
+ left par={[}, right par={]},
+ set arg sep=\mathpunct{:},
% changes the argument separator to colon
- setargdots=\cdots,
- % changes what is inserted if you write "..."
+ set arg dots=\dotsb,
+ % changes what is inserted if you write "..."
]
\end{lstlisting}
-\NewObject\MyDelim\tup{(}{)} % tuples
-\NewObject\MyDelim\pcoor{[}{]}[ % projective coordinates
- setargsep=\mathpunct{:}, % changes the argument separator to :
- setargdots=\cdots, % changes what is inserted if you write "..."
+\NewObject\MyVar\tup[left par=(,right par=)] % tuples
+\NewObject\MyVar\pcoor[ % projective coordinates
+ left par={[}, right par={]},
+ set arg sep=\mathpunct{:},
+ % changes the argument separator to colon
+ set arg dots=\dotsb,
+ % changes what is inserted if you write "..."
]
Let us see them in action:
\begin{LTXexample}
@@ -2073,11 +2054,11 @@ $\tup{\va,\vb,...,\vz}$,
$\pcoor{\va,\vb,...,\vz}$
\end{LTXexample}
-One can also use delimiters for other, less obvious purposes, like calculus differentials:
+One can use similar techniques for other, less obvious purposes, like calculus differentials:
\begin{lstlisting}
-\NewDelimiterClass\CalculusDifferential[
+\NewVariableClass\CalculusDifferential[
parent=\MyVar,
- defineargkeys[1]={
+ define arg keys[1]={
{default}{sep={d\!#1}},
% default is the key that is automatically applied by the
% system to anything you write in the argument that is
@@ -2085,26 +2066,26 @@ One can also use delimiters for other, less obvious purposes, like calculus diff
% is a key that prints the value of the key with the
% standard argument separator in front.
},
- setargdots=\cdots,
- neverpar,
- % neverpar is like nopar, except nopar will still print
+ set arg dots=\dotsm,
+ never par,
+ % never par is like no par, except no par will still print
% parentheses when there is more than one argument
- % -- neverpar does not even print parentheses in this case
+ % -- never par does not even print parentheses in this case
]
-\NewObject\CalculusDifferential\intD{(}{)}[
- setargsep={\,},
- nextargwithsep=true,
+\NewObject\CalculusDifferential\intD[
+ set arg sep={\,},
+ next arg with sep=true,
% because of this, even the first argument will
% receive a separator, which in this case
% is a small space
]
-\NewObject\CalculusDifferential\wedgeD{(}{)}[setargsep=\wedge]
+\NewObject\CalculusDifferential\wedgeD[set arg sep=\wedge]
\end{lstlisting}
-\NewDelimiterClass\CalculusDifferential[
+\NewVariableClass\CalculusDifferential[
parent=\MyVar,
- defineargkeys[1]={
+ define arg keys[1]={
{default}{sep={d\!#1}},
% default is the key that is automatically applied by the
% system to anything you write in the argument that is
@@ -2112,16 +2093,22 @@ One can also use delimiters for other, less obvious purposes, like calculus diff
% is a key that prints the value of the key with the
% standard argument separator in front.
},
- setargdots=\cdots,
- neverpar,
- % neverpar is like nopar, except nopar will still print
+ set arg dots=\dotsm,
+ never par,
+ % never par is like no par, except no par will still print
% parentheses when there is more than one argument
- % -- neverpar does not even print parentheses in this case
+ % -- never par does not even print parentheses in this case
]
-\NewObject\CalculusDifferential\intD{(}{)}[setargsep={\,},nextargwithsep=true]
+\NewObject\CalculusDifferential\intD[
+ set arg sep={\,},
+ next arg with sep=true,
+ % because of this, even the first argument will
+ % receive a separator, which in this case
+ % is a small space
+]
-\NewObject\CalculusDifferential\wedgeD{(}{)}[setargsep=\wedge]
+\NewObject\CalculusDifferential\wedgeD[set arg sep=\wedge]
\begin{LTXexample}
$\int \vf \intD{\vx[1],
@@ -2131,7 +2118,7 @@ $\int \vf \wedgeD{\vx[1],
\vx[2],...,\vx[n]}$
\end{LTXexample}
-\chapter{Using \texorpdfstring{Seman\!\TeX{}}{SemanTeX} in other commands using \texorpdfstring{\texttt{\textbackslash UseClassInCommand}}{\UseClassInCommand}}\label{sec:UseClassInCommand}
+\chapter{Using \texorpdfstring{Seman\!\TeX{}}{SemanTeX} in other commands using \texorpdfstring{\texttt{\textbackslash UseClassInCommand}}{\string\UseClassInCommand}}\label{sec:UseClassInCommand}
\SemantexRecordObject{\Frac}
\newcommand\Frac[2]{
@@ -2332,28 +2319,28 @@ of other situations, like
\NewObject\MyVar\Mat{\operatorname{Mat}}[
% We provide data sets "rows" and "columns" to
% be set up by the user later
- dataprovide={rows},
- dataprovide={columns},
- dataprovide={field},
- definekeys[1]={
- {rows}{ dataset={rows}{#1} }, % set the rows data set
- {columns}{ dataset={columns}{#1} }, % set the columns data set
- {field}{ dataset={field}{#1} }, % set the underlying field
+ data provide={rows},
+ data provide={columns},
+ data provide={field},
+ define keys[1]={
+ {rows}{ data set={rows}{#1} }, % set the rows data set
+ {columns}{ data set={columns}{#1} }, % set the columns data set
+ {field}{ data set={field}{#1} }, % set the underlying field
{arg}{ field={#1} },
% this way, setting the argument becomes equivalent
% to specifying the underlying field
},
- parseoptions={ % Here we add code to the parse routine
+ parse options={ % Here we add code to the parse routine
% We check whether columns = rows. If so, we only write
% the number once
- strifeqTF={\SemantexDataGetExpNot{columns}}{\SemantexDataGetExpNot{rows}}
+ str if eq TF={\SemantexDataGetExpNot{columns}}{\SemantexDataGetExpNot{rows}}
{
- setkeysx={
+ set keys x={
lower={\SemantexDataGetExpNot{columns}},
},
}
{
- setkeysx={
+ set keys x={
lower={
\SemantexDataGetExpNot{rows}
\times
@@ -2361,9 +2348,9 @@ of other situations, like
},
},
},
- ifblankF={\SemantexDataGetExpNot{field}}
+ if blank F={\SemantexDataGetExpNot{field}}
{
- setargkeysx={
+ set arg keys x={
sep={\SemantexDataGetExpNot{field}},
},
},
@@ -2373,23 +2360,23 @@ of other situations, like
\NewObject\MyVar\GL{\operatorname{GL}}[
% We provide a few data sets:
- dataprovide=order, % The "order" will be the number n in GL_n(k)
- dataprovide=field, % The "field" is of course the k in GL_n(k)
- definekeys[1]={
- {order}{ dataset={order}{#1} }, % Sets the order
- {field}{ dataset={field}{#1} }, % Sets the field
+ data provide=order, % The "order" will be the number n in GL_n(k)
+ data provide=field, % The "field" is of course the k in GL_n(k)
+ define keys[1]={
+ {order}{ data set={order}{#1} }, % Sets the order
+ {field}{ data set={field}{#1} }, % Sets the field
{arg}{ field={#1} },
% This way, setting the argument becomes equivalent
% to setting the field
},
- parseoptions={
- setkeysx={
+ parse options={
+ set keys x={
% This means set the keys, but fully expand their values first
lower={\SemantexDataGetExpNot{order}},
},
- ifblankF={\SemantexDataGetExpNot{field}}
+ if blank F={\SemantexDataGetExpNot{field}}
{
- setargkeysx={
+ set arg keys x={
% Set the argument keys, but fully expand their values first
sep={\SemantexDataGetExpNot{field}},
},
@@ -2398,24 +2385,24 @@ of other situations, like
]
\SetupObject\co{
- dataprovide=coefficient,
- dataprovide=space,
- definekeys[1]={
- {coef}{ dataset={coefficient}{#1} },
- {space}{ dataset={space}{#1} },
+ data provide=coefficient,
+ data provide=space,
+ define keys[1]={
+ {coef}{ data set={coefficient}{#1} },
+ {space}{ data set={space}{#1} },
{arg}{ space={#1} },
},
- parseoptions={
- ifblankF={\SemantexDataGetExpNot{space}}
+ parse options={
+ if blank F={\SemantexDataGetExpNot{space}}
{
- setargkeysx={
+ set arg keys x={
sep=\SemantexDataGetExpNot{space},
},
},
- ifblankF={\SemantexDataGetExpNot{coefficient}}
+ if blank F={\SemantexDataGetExpNot{coefficient}}
{
- setargkeysx={
- othersep={;}{ \SemantexDataGetExpNot{coefficient} },
+ set arg keys x={
+ other sep={;}{ \SemantexDataGetExpNot{coefficient} },
},
},
},
@@ -2438,7 +2425,7 @@ executed right before
an object (or class) is being rendered (but before it outputs).
By default, the parse routine contains no code.
However, you can add code to it using the
-key~\mylst!parseoptions={$\<keys\>$}!.
+key~\mylst!parse options={$\<keys\>$}!.
Even though the \lstinline!parse!~routine is automatically invoked right before rendering, you can also invoke it at any time by force
using the key~\lstinline!parse!. This will also empty the code from the
@@ -2468,9 +2455,9 @@ as~\(
We can in principle do the following:
\begingroup
\SetupObject\GL{
- dataclear=parseoptions,
- definekeys[1]={
- {arg}{ setargkeys={sep=#1} }
+ data clear=parse options,
+ define keys[1]={
+ {arg}{ set arg keys={sep=#1} }
},
}
\begin{lstlisting}
@@ -2499,23 +2486,23 @@ To set up the notation from above, we do the following:
\begin{lstlisting}
\NewObject\MyVar\GL{\operatorname{GL}}[
% We provide a few data sets:
- dataprovide=order, % The "order" will be the number n in GL_n(k)
- dataprovide=field, % The "field" is of course the k in GL_n(k)
- definekeys[1]={
- {order}{ dataset={order}{#1} }, % Sets the order
- {field}{ dataset={field}{#1} }, % Sets the field
+ data provide=order, % The "order" will be the number n in GL_n(k)
+ data provide=field, % The "field" is of course the k in GL_n(k)
+ define keys[1]={
+ {order}{ data set={order}{#1} }, % Sets the order
+ {field}{ data set={field}{#1} }, % Sets the field
{arg}{ field={#1} },
% This way, setting the argument becomes equivalent
% to setting the field
},
- parseoptions={
- setkeysx={
+ parse options={
+ set keys x={
% This means set the keys, but fully expand their values first
lower={\SemantexDataGetExpNot{order}},
},
- ifblankF={\SemantexDataGetExpNot{field}}
+ if blank F={\SemantexDataGetExpNot{field}}
{
- setargkeysx={
+ set arg keys x={
% Set the argument keys, but fully expand their values first
sep={\SemantexDataGetExpNot{field}},
},
@@ -2548,28 +2535,28 @@ We accomplish this by the following:
\NewObject\MyVar\Mat{\operatorname{Mat}}[
% We provide data sets "rows" and "columns" to
% be set up by the user later
- dataprovide={rows},
- dataprovide={columns},
- dataprovide={field},
- definekeys[1]={
- {rows}{ dataset={rows}{#1} }, % set the rows data set
- {columns}{ dataset={columns}{#1} }, % set the columns data set
- {field}{ dataset={field}{#1} }, % set the underlying field
+ data provide={rows},
+ data provide={columns},
+ data provide={field},
+ define keys[1]={
+ {rows}{ data set={rows}{#1} }, % set the rows data set
+ {columns}{ data set={columns}{#1} }, % set the columns data set
+ {field}{ data set={field}{#1} }, % set the underlying field
{arg}{ field={#1} },
% this way, setting the argument becomes equivalent
% to specifying the underlying field
},
- parseoptions={ % Here we add code to the parse routine
+ parse options={ % Here we add code to the parse routine
% We check whether columns = rows. If so, we only write
% the number once
- strifeqTF={\SemantexDataGetExpNot{columns}}{\SemantexDataGetExpNot{rows}}
+ str if eq TF={\SemantexDataGetExpNot{columns}}{\SemantexDataGetExpNot{rows}}
{
- setkeysx={
+ set keys x={
lower={\SemantexDataGetExpNot{columns}},
},
}
{
- setkeysx={
+ set keys x={
lower={
\SemantexDataGetExpNot{rows}
\times
@@ -2577,9 +2564,9 @@ We accomplish this by the following:
},
},
},
- ifblankF={\SemantexDataGetExpNot{field}}
+ if blank F={\SemantexDataGetExpNot{field}}
{
- setargkeysx={
+ set arg keys x={
sep={\SemantexDataGetExpNot{field}},
},
},
@@ -2601,24 +2588,24 @@ and show how to set up a syntax like the below:
\begin{lstlisting}
\SetupObject\co{
- dataprovide=coefficient,
- dataprovide=space,
- definekeys[1]={
- {coef}{ dataset={coefficient}{#1} },
- {space}{ dataset={space}{#1} },
+ data provide=coefficient,
+ data provide=space,
+ define keys[1]={
+ {coef}{ data set={coefficient}{#1} },
+ {space}{ data set={space}{#1} },
{arg}{ space={#1} },
},
- parseoptions={
- ifblankF={\SemantexDataGetExpNot{space}}
+ parse options={
+ if blank F={\SemantexDataGetExpNot{space}}
{
- setargkeysx={
+ set arg keys x={
sep=\SemantexDataGetExpNot{space},
},
},
- ifblankF={\SemantexDataGetExpNot{coefficient}}
+ if blank F={\SemantexDataGetExpNot{coefficient}}
{
- setargkeysx={
- othersep={;}{ \SemantexDataGetExpNot{coefficient} },
+ set arg keys x={
+ other sep={;}{ \SemantexDataGetExpNot{coefficient} },
},
},
},
@@ -2636,42 +2623,42 @@ $\co[d=0,space=\vX,coef=\vR]$
Let us look at a more complicated example: Let us create a command for partial derivatives:
\NewObject\MyVar\partialdif[
- nopar,
- boolprovide={raisefunction},
- boolsettrue={raisefunction},
- setidots=\cdots,
- setisep=\,,
- definekeys[1]={
+ no par,
+ bool provide={raise function},
+ bool set true={raise function},
+ set i dots=\dotsm,
+ set i sep={\,},
+ define keys[1]={
{default}{
- sepi={\partial #1},
+ sep i={\partial #1},
},
{raise}{
- strifeqTF={#1}{true}
+ str if eq TF={#1}{true}
{
- boolsettrue={raisefunction},
+ bool set true={raise function},
}
{
- strifeqTF={#1}{false}
+ str if eq TF={#1}{false}
{
- boolsetfalse={raisefunction},
+ bool set false={raise function},
}
{
- ERRORkeyvaluenotfound={raise}{#1},
+ ERROR key value not found={raise}{#1},
},
},
},
},
- parseoptions={
- ifblankTF={ \SemantexDataGetExpNot{upper} }
+ parse options={
+ if blank TF={ \SemantexDataGetExpNot{upper} }
{
- intifgreaterTF={ \SemantexIntGet{numberoflowerindices} } { 1 }
+ int if greater TF={ \SemantexIntGet{number of lower indices} } { 1 }
{
- setkeysx={
+ set keys x={
symbol={
\SemantexExpNot\frac
{
- \partial ^ { \SemantexIntGet{numberoflowerindices} }
- \SemantexBoolIfT{raisefunction}
+ \partial ^ { \SemantexIntGet{number of lower indices} }
+ \SemantexBoolIfT{raise function}
{
\SemantexDataGetExpNot{arg}
}
@@ -2683,12 +2670,12 @@ Let us look at a more complicated example: Let us create a command for partial d
},
}
{
- setkeysx={
+ set keys x={
symbol={
\SemantexExpNot\frac
{
\partial
- \SemantexBoolIfT{raisefunction}
+ \SemantexBoolIfT{raise function}
{
\SemantexDataGetExpNot{arg}
}
@@ -2701,12 +2688,12 @@ Let us look at a more complicated example: Let us create a command for partial d
},
}
{
- setkeysx={
+ set keys x={
symbol={
\SemantexExpNot\frac
{
\partial ^ { \SemantexDataGetExpNot{upper} }
- \SemantexBoolIfT{raisefunction}
+ \SemantexBoolIfT{raise function}
{
\SemantexDataGetExpNot{arg}
}
@@ -2717,54 +2704,54 @@ Let us look at a more complicated example: Let us create a command for partial d
},
},
},
- dataclear={lower},
- dataclear={upper},
- boolifT={raisefunction}
+ data clear={lower},
+ data clear={upper},
+ bool if T={raise function}
{
- dataclear={arg},
- intclear={numberofarguments},
+ data clear={arg},
+ int clear={number of arguments},
},
},
]
\begin{lstlisting}
\NewObject\MyVar\partialdif[
- nopar,
- boolprovide={raisefunction},
- boolsettrue={raisefunction},
- setidots=\cdots,
- setisep=\,,
- definekeys[1]={
+ no par,
+ bool provide={raise function},
+ bool set true={raise function},
+ set i dots=\dotsm,
+ set i sep={\,},
+ define keys[1]={
{default}{
- sepi={\partial #1},
+ sep i={\partial #1},
},
{raise}{
- strifeqTF={#1}{true}
+ str if eq TF={#1}{true}
{
- boolsettrue={raisefunction},
+ bool set true={raise function},
}
{
- strifeqTF={#1}{false}
+ str if eq TF={#1}{false}
{
- boolsetfalse={raisefunction},
+ bool set false={raise function},
}
{
- ERRORkeyvaluenotfound={raise}{#1},
+ ERROR key value not found={raise}{#1},
},
},
},
},
- parseoptions={
- ifblankTF={ \SemantexDataGetExpNot{upper} }
+ parse options={
+ if blank TF={ \SemantexDataGetExpNot{upper} }
{
- intifgreaterTF={ \SemantexIntGet{numberoflowerindices} } { 1 }
+ int if greater TF={ \SemantexIntGet{number of lower indices} } { 1 }
{
- setkeysx={
+ set keys x={
symbol={
\SemantexExpNot\frac
{
- \partial ^ { \SemantexIntGet{numberoflowerindices} }
- \SemantexBoolIfT{raisefunction}
+ \partial ^ { \SemantexIntGet{number of lower indices} }
+ \SemantexBoolIfT{raise function}
{
\SemantexDataGetExpNot{arg}
}
@@ -2776,12 +2763,12 @@ Let us look at a more complicated example: Let us create a command for partial d
},
}
{
- setkeysx={
+ set keys x={
symbol={
\SemantexExpNot\frac
{
\partial
- \SemantexBoolIfT{raisefunction}
+ \SemantexBoolIfT{raise function}
{
\SemantexDataGetExpNot{arg}
}
@@ -2794,12 +2781,12 @@ Let us look at a more complicated example: Let us create a command for partial d
},
}
{
- setkeysx={
+ set keys x={
symbol={
\SemantexExpNot\frac
{
\partial ^ { \SemantexDataGetExpNot{upper} }
- \SemantexBoolIfT{raisefunction}
+ \SemantexBoolIfT{raise function}
{
\SemantexDataGetExpNot{arg}
}
@@ -2810,12 +2797,12 @@ Let us look at a more complicated example: Let us create a command for partial d
},
},
},
- dataclear={lower},
- dataclear={upper},
- boolifT={raisefunction}
+ data clear={lower},
+ data clear={upper},
+ bool if T={raise function}
{
- dataclear={arg},
- intclear={numberofarguments},
+ data clear={arg},
+ int clear={number of arguments},
},
},
]
@@ -2897,7 +2884,7 @@ The system has the following limitations:
after~\lstinline!\begin{document}!:
\begin{lstlisting}
\SetupObject\va{
- definekeys[1]={
+ define keys[1]={
{weirdkey}{ upper=\vb[ {#1} ] }
},
}
@@ -3008,11 +2995,11 @@ Let us take a look at the commands defined by \pack{semtex}:
\mylst!\SemantexLeft!,
\mylst!\SemantexRight!
- Like \lstinline!\left...\right!, but fixing some spacing issues
+ Like \lstinline!\left ...\right!, but fixing some spacing issues
around these.
They are completely equivalent to~\lstinline!\mleft! and~\lstinline!\mright!
from the package~\pack{mleftright}, so it is safe to just load that package
- and replace the above commands by \lstinline!\mleft...\mright! instead,
+ and replace the above commands by \lstinline!\mleft ...\mright! instead,
or use the redefinitions mentioned above.
\end{itemize}
@@ -3108,10 +3095,10 @@ in the document body have been removed.
\chapter{Known bugs}
-If you write e.g.~\lstinline!Otherspar={[}{]}{\Bigg}!
+If you write e.g.~\lstinline!Other spar={[}{]}{\Bigg}!
in a heading, your command will fail for some reason.
It can be solved by omitting the braces around~\lstinline!\Bigg!,
-i.e.~by replacing it by~\lstinline!Otherspar={[}{]}\Bigg!.
+i.e.~by replacing it by~\lstinline!Other spar={[}{]}\Bigg!.
\chapter{The predefined keys, commands, and data}
@@ -3120,7 +3107,7 @@ Firstly,
the keys that can be used inside the command~\lstinline!\SemantexSetup! are:
\begin{itemize}
- \item \mylst!keyvalparser={$\<command\>$}!
+ \item \mylst!keyval parser={$\<command\>$}!
Sets the keyval parser function to~\<command\>.
The \<command\> must take three arguments:
@@ -3131,7 +3118,7 @@ the keys that can be used inside the command~\lstinline!\SemantexSetup! are:
Another interesting possibility is the command~\lstinline!\ekvparse! from the package~\lstinline!expkv!. This choice will only affect keys for objects and classes,
\emph{not} keys for use inside~\lstinline!\SemantexSetup!.
- \item \mylst!semtexfile={$\values\<true|\default{false}\>$}!
+ \item \mylst!semtex file={$\values\<true|\default{false}\>$}!
When turned on, a \lstinline!.semtex! file will be created while processing the document.
This is mainly relevant when using \lstinline!stripsemantex!.
@@ -3144,63 +3131,112 @@ In the following sections, we include the full list.
\begin{itemize}
\item
- \mylst!definekeys={$\<key definitions\>$}!
+ \mylst!define keys={$\<key definitions\>$}!
Defines keys taking no values.
The syntax is
\begin{lstlisting}
- definekeys={
+ define keys={
{key1}{ upper=3, lower=7 },
{key2}{ lower=6, upper=4 },
},
\end{lstlisting}
\item
- \mylst!definekeys[$n$]={$\<key definitions\>$}!
+ \mylst!define keys[$n$]={$\<key definitions\>$}!
- Defines keys taking $n$~values, where $n=0,1,2,\ldots,9$.
+ Defines keys taking $n$~values, where $n=0,1,2,\dotsc,8$.
The values are accessed by
writing
- \lstinline!#1!,~\lstinline!#2!, \ldots,~\lstinline!#9!.
+ \lstinline!#1!,~\lstinline!#2!, \ldots,~\lstinline!#8!.
+ For technical reasons, nine arguments are not allowed.
The syntax is
\begin{lstlisting}
- definekeys[2]={
+ define keys[2]={
{key1}{ upper=3+#1, lower=7-#2 },
{key2}{ lower=6\cdot#1, upper=4/#2 },
},
\end{lstlisting}
\item
- \mylst!removekey=$\<key name\>$!
+ \mylst!append keys={$\<key definitions\>$}!
+
+ Appends keys taking no values, i.e.~adds code to the right of that key.
+ The syntax is identical to the one for~\lstinline!define keys!.
+
+ \item
+ \mylst!pre append keys={$\<key definitions\>$}!
+
+ Pre-appends keys taking no values, i.e.~adds code to the left of that key.
+ The syntax is identical to the one for~\lstinline!define keys!.
+
+ \item
+ \mylst!append keys[$n$]={$\<key definitions\>$}!
+
+ Appends keys taking $n$~values, where~$n=0,1,\dotsc,8$, i.e.~adds code to the right of that key.
+ The syntax is identical to the one for~\mylst!define keys[$n$]!.
+
+ \item
+ \mylst!pre append keys[$n$]={$\<key definitions\>$}!
+
+ Pre-appends keys taking $n$~values, where~$n=0,1,\dotsc,8$, i.e.~adds code to the left of that key.
+ The syntax is identical to the one for~\mylst!define keys[$n$]!.
+
+ \item
+ \mylst!remove key=$\<key name\>$!
Removes the key~\<key name\> taking no values.
\item
- \mylst!removekey[$n$]=$\<key name\>$!
+ \mylst!remove key[$n$]=$\<key name\>$!
- Removes the key~\<key name\> taking $n$~values, where $n=0,1,2,\ldots,9$.
+ Removes the key~\<key name\> taking $n$~values, where $n=0,1,2,\dotsc,8$.
\item
- \mylst!defineargkeys={$\<key definitions\>$}!
+ \mylst!define arg keys={$\<key definitions\>$}!
Defines argument keys taking no values.
- The syntax is similar to the one for~\lstinline!definekeys!.
+ The syntax is similar to the one for~\lstinline!define keys!.
+
+ \item
+ \mylst!define arg keys[$n$]={$\<key definitions\>$}!
+
+ Defines argument keys taking $n$~values, where $n=0,1,2,\dotsc,8$.
+ The syntax is similar to the one for~\mylst!define keys[$n$]!.
+
+ \item
+ \mylst!append arg keys={$\<key definitions\>$}!
+ Appending argument keys taking no values, i.e.~adds code to the right of that key.
+ The syntax is identical to the one for~\lstinline!define arg keys!.
+
+ \item
+ \mylst!pre append arg keys={$\<key definitions\>$}!
+
+ Pre-appending argument keys taking no values, i.e.~adds code to the left of that key.
+ The syntax is identical to the one for~\lstinline!define arg keys!.
+
\item
- \mylst!defineargkeys[$n$]={$\<key definitions\>$}!
+ \mylst!append arg keys[$n$]={$\<key definitions\>$}!
- Defines argument keys taking $n$~values, where $n=0,1,2,\ldots,9$.
- The syntax is similar to the one for~\mylst!definekeys[$n$]!.
+ Appending argument keys taking $n$~values, where~$n=0,1,\dotsc,8$, i.e.~adds code to the right of that key.
+ The syntax is identical to the one for~\mylst!define arg keys[$n$]!.
\item
- \mylst!removeargkey=$\<key name\>$!
+ \mylst!pre arg append keys[$n$]={$\<key definitions\>$}!
+
+ Pre-appending argument keys taking $n$~values, where~$n=0,1,\dotsc,8$, i.e.~adds code to the left of that key.
+ The syntax is identical to the one for~\mylst!define arg keys[$n$]!.
+
+ \item
+ \mylst!remove arg key=$\<key name\>$!
Removes the argument key~\<key name\> taking no values.
\item
- \mylst!removeargkey[$n$]=$\<key name\>$!
+ \mylst!remove arg key[$n$]=$\<key name\>$!
- Removes the argument key~\<key name\> taking $n$~values, where $n=0,1,2,\ldots,9$.
+ Removes the argument key~\<key name\> taking $n$~values, where $n=0,1,2,\dotsc,8$.
\end{itemize}
\section{Programming keys}\label{sec:programming_keys}
@@ -3212,135 +3248,135 @@ In the following sections, we include the full list.
Executes the \<\TeX\ code\> on the spot.
\item
- \mylst!setkeys={$\<keys\>$}!,
- \mylst!keysset={$\<keys\>$}!
+ \mylst!set keys={$\<keys\>$}!,
+ \mylst!keys set={$\<keys\>$}!
Sets the keys \<keys\>.
\item
- \mylst!setkeysx={$\<keys\>$}!,
- \mylst!keyssetx={$\<keys\>$}!
+ \mylst!set keys x={$\<keys\>$}!,
+ \mylst!keys set x={$\<keys\>$}!
Sets the keys \<keys\>, but fully expands their values.
\item
- \mylst!dataprovide={$\<data\>$}!
+ \mylst!data provide={$\<data\>$}!
Provides a new piece of data consisting of a token list.
\item
- \mylst!dataset={$\<data\>$}{$\<value\>$}!
+ \mylst!data set={$\<data\>$}{$\<value\>$}!
Sets the \<data\> to \<value\>.
\item
- \mylst!datasetx={$\<data\>$}{$\<value\>$}!
+ \mylst!data set x={$\<data\>$}{$\<value\>$}!
Sets the \<data\> to \<value\>, but fully expands the \<value\> first.
\item
- \mylst!dataputleft={$\<data\>$}{$\<value\>$}!
+ \mylst!data put left={$\<data\>$}{$\<value\>$}!
Adds the \<value\> to the left of \<data\>.
\item
- \mylst!dataputleftx={$\<data\>$}{$\<value\>$}!
+ \mylst!data put left x={$\<data\>$}{$\<value\>$}!
Adds the \<value\> to the left of \<data\>, but fully expands the \<value\> first.
\item
- \mylst!dataputright={$\<data\>$}{$\<value\>$}!
+ \mylst!data put right={$\<data\>$}{$\<value\>$}!
Adds the \<value\> to the right of \<data\>.
\item
- \mylst!dataputrightx={$\<data\>$}{$\<value\>$}!
+ \mylst!data put right x={$\<data\>$}{$\<value\>$}!
Adds the \<value\> to the right of \<data\>, but fully expands the \<value\> first.
\item
- \mylst!dataclear={$\<data\>$}!
+ \mylst!data clear={$\<data\>$}!
Clears the piece of data~\<data\>.
\item
- \mylst!boolprovide={$\<boolean\>$}!
+ \mylst!bool provide={$\<boolean\>$}!
Provides a new piece of data consisting of a boolean.
\item
- \mylst!boolsettrue={$\<boolean\>$}!
+ \mylst!bool set true={$\<boolean\>$}!
Sets the \<boolean\> to true.
\item
- \mylst!boolsettrue={$\<boolean\>$}!
+ \mylst!bool set false={$\<boolean\>$}!
Sets the \<boolean\> to false.
\item
- \mylst!boolifTF={$\<boolean\>$}{$\<if true\>$}{$\<if false\>$}!, \\
- \mylst!boolifT={$\<boolean\>$}{$\<if true\>$}!, \\
- \mylst!boolifTF={$\<boolean\>$}{$\<if false\>$}!
+ \mylst!bool if TF={$\<boolean\>$}{$\<if true\>$}{$\<if false\>$}!, \\
+ \mylst!bool if T={$\<boolean\>$}{$\<if true\>$}!, \\
+ \mylst!bool if TF={$\<boolean\>$}{$\<if false\>$}!
Runs \<if~true\> or \<if~false\>, depending on the value of \<boolean\>.
\item
- \mylst!intprovide={$\<integer\>$}!
+ \mylst!int provide={$\<integer\>$}!
Provides a new piece of data consisting of an integer.
\item
- \mylst!intset={$\<integer\>$}{$\<value\>$}!
+ \mylst!int set={$\<integer\>$}{$\<value\>$}!
Sets the \<integer\> to \<value\>.
\item
- \mylst!intincr={$\<integer\>$}!
+ \mylst!int incr={$\<integer\>$}!
Increases the \<integer\> by~\( 1 \).
\item
- \mylst!intifeqTF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}{$\<if false\>$}!, \\
- \mylst!intifeqT={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}!, \\
- \mylst!intifeqF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if false\>$}!
+ \mylst!int if ieq TF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}{$\<if false\>$}!, \\
+ \mylst!int if ieq T={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}!, \\
+ \mylst!int if ieq F={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if false\>$}!
Checks whether the integers \<integer\num{1}\> and \<integer\num{2}\> are equal,
and runs \<if~true\> or \<if~false\> accordingly.
\item
- \mylst!intifgreaterTF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}{$\<if false\>$}!, \\
- \mylst!intifgreaterT={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}!, \\
- \mylst!intifgreaterF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if false\>$}!
+ \mylst!int if greater TF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}{$\<if false\>$}!, \\
+ \mylst!int if greater T={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}!, \\
+ \mylst!int if greater F={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if false\>$}!
Checks whether the integer \<integer\num{1}\> is greater than~\<integer\num{2}\>,
and runs \<if~true\> or \<if~false\> accordingly.
\item
- \mylst!intiflessTF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}{$\<if false\>$}!, \\
- \mylst!intiflessT={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}!, \\
- \mylst!intiflessF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if false\>$}!
+ \mylst!int if less TF={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}{$\<if false\>$}!, \\
+ \mylst!int if less T={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if true\>$}!, \\
+ \mylst!int if less F={$\<integer\num{1}\>$}{$\<integer\num{2}\>$}{$\<if false\>$}!
Checks whether the integer \<integer\num{1}\> is less than~\<integer\num{2}\>,
and runs \<if~true\> or \<if~false\> accordingly.
\item
- \mylst!intclear={$\<integer\>$}!
+ \mylst!int clear={$\<integer\>$}!
Clears the \<integer\>, i.e.~sets it to~\( 0 \).
\item
- \mylst!ifblankTF={$\<tokens\>$}{$\<if true\>$}{$\<if false\>$}!,\\
- \mylst!ifblankT={$\<tokens\>$}{$\<if true\>$}!,\\
- \mylst!ifblankF={$\<tokens\>$}{$\<if false\>$}!
+ \mylst!if blank TF={$\<tokens\>$}{$\<if true\>$}{$\<if false\>$}!,\\
+ \mylst!if blank T={$\<tokens\>$}{$\<if true\>$}!,\\
+ \mylst!if blank F={$\<tokens\>$}{$\<if false\>$}!
Fully expands the \<tokens\> and checks if it is blank,
and runs \<if true\> or \<if false\> according to this.
\item
- \mylst!strifeqTF={$\<string\num{1}\>$}{$\<string\num{2}\>$}{$\<if true\>$}{$\<if false\>$}!, \\
- \mylst!strifeqT={$\<string\num{1}\>$}{$\<string\num{2}\>$}{$\<if true\>$}!, \\
- \mylst!strifeqF={$\<string\num{1}\>$}{$\<string\num{2}\>$}{$\<if false\>$}!
+ \mylst!str if eq TF={$\<string\num{1}\>$}{$\<string\num{2}\>$}{$\<if true\>$}{$\<if false\>$}!, \\
+ \mylst!str if eq T={$\<string\num{1}\>$}{$\<string\num{2}\>$}{$\<if true\>$}!, \\
+ \mylst!str if eq F={$\<string\num{1}\>$}{$\<string\num{2}\>$}{$\<if false\>$}!
Checks whether the strings \<string\num{1}\> and \<string\num{2}\> are equal,
and runs \<if~true\> or \<if~false\> accordingly.
@@ -3352,12 +3388,12 @@ In the following sections, we include the full list.
or \enquote{class~\usercommand\<Class name\> on line~\<line number\>}.
\item
- \mylst!ERRORkeyvaluenotfound={$\<key\>$}{$\<value\>$}!
+ \mylst!ERROR key value not found={$\<key\>$}{$\<value\>$}!
Issues an error, saying that the key~\<key\> was set to the unknown value~\<value\>.
\item
- \mylst!ERRORargkeyvaluenotfound={$\<key\>$}{$\<value\>$}!
+ \mylst!ERROR arg key value not found={$\<key\>$}{$\<value\>$}!
Issues an error, saying that the argument key~\<key\> was set to the unknown value~\<value\>.
\end{itemize}
@@ -3390,30 +3426,30 @@ In the following sections, we include the full list.
the height phantom and the slanting phantom are set to the same value.
\item
- \mylst!symbolputleft={$\<value\>$}!
+ \mylst!symbol put left={$\<value\>$}!
Adds \<value\> to the left of the symbol. No change is made to the height
phantom or the slanting phantom.
\item
- \mylst!symbolputright={$\<value\>$}!
+ \mylst!symbol put right={$\<value\>$}!
Adds \<value\> to the right of the symbol. No change is made to the height
phantom or the slanting phantom.
\item
- \mylst!heightphantom={$\<value\>$}!
+ \mylst!height phantom={$\<value\>$}!
Sets the height phantom to~\<value\>.
\item
- \mylst!slantingphantom={$\<value\>$}!
+ \mylst!slanting phantom={$\<value\>$}!
Sets the slanting phantom to~\<value\>.
\item
- \mylst!gradingposition={$\values\<\default{upper}|lower\>$}!, \\
- \mylst!gradingpos={$\values\<\default{upper}|lower\>$}!
+ \mylst!grading position={$\values\<\default{upper}|lower\>$}!, \\
+ \mylst!grading pos={$\values\<\default{upper}|lower\>$}!
Sets whether to use upper (\enquote{cohomological})
or lower (\enquote{homological}) grading.
@@ -3425,7 +3461,7 @@ In the following sections, we include the full list.
Applies the \<command\> to the symbol.
\item
- \mylst!clearcommand!
+ \mylst!clear command!
Clears the list of commands to be applied to the symbol.
@@ -3435,47 +3471,47 @@ In the following sections, we include the full list.
Invokes the return routine, i.e.\ adds all commands, indices, and arguments to the symbol, if any such exist.
\item
- \mylst!innerreturn!
+ \mylst!inner return!
Invokes the inner return routine, i.e.\ adds all commands to the symbol, if any such exist.
\item
- \mylst!rightreturn!
+ \mylst!right return!
Invokes the right return routine, i.e.\ adds all commands, right indices, and right arguments to the symbol, if any such exist.
\item
- \mylst!leftreturn!
+ \mylst!left return!
Invokes the left return routine, i.e.\ adds all commands, left indices, and left arguments to the symbol, if any such exist.
\item
- \mylst!leftindexreturn!
+ \mylst!left index return!
Adds the left indices to the symbol, if any such exists.
\item
- \mylst!rightindexreturn!
+ \mylst!right index return!
Adds the right indices to the symbol, if any such exists.
\item
- \mylst!indexreturn!
+ \mylst!index return!
Adds all indices, left and right to the symbol, if any such exists.
\item
- \mylst!leftargreturn!
+ \mylst!left arg return!
Adds the left argument, if any such exists, to the symbol.
\item
- \mylst!rightargreturn!
+ \mylst!right arg return!
Adds the right argument, if any such exists, to the symbol.
\item
- \mylst!argreturn!
+ \mylst!arg return!
Adds the argument, if any such exists, to the symbol.
@@ -3485,7 +3521,7 @@ In the following sections, we include the full list.
Sets the output class to~\<Class\>.
\item
- \mylst!dooutput={$\values\<true|\default{false}\>$}!
+ \mylst!do output={$\values\<true|\default{false}\>$}!
Sets whether the current object/class should output or not.
The default is false, but the system will automatically
@@ -3494,13 +3530,13 @@ In the following sections, we include the full list.
cause an infinite loop.
\item
- \mylst!outputoptions={$\<keys\>$}!
+ \mylst!output options={$\<keys\>$}!
Adds the \<keys\> to the output options,
i.e.\ those options passed to the output class.
\item
- \mylst!parseoptions={$\<keys\>$}!
+ \mylst!parse options={$\<keys\>$}!
Adds the \<keys\> to the parse options.
@@ -3510,7 +3546,7 @@ In the following sections, we include the full list.
Invokes the parse routine.
\item
- \mylst!mathclass={$\<command\>$}!
+ \mylst!math class={$\<command\>$}!
Sets the \TeX\ math class to be~\<command\>.
The intended values are \lstinline!\mathord!, \lstinline!\mathop!, \lstinline!\mathbin!, \lstinline!\mathrel!, \lstinline!\mathopen!, \lstinline!\mathclose!, and~\lstinline!\mathpunct!.
@@ -3521,16 +3557,16 @@ In the following sections, we include the full list.
This is the key that is applied whenever the
user writes something in the options which is not a key,
e.g.~the~\lstinline!1! in~\lstinline!\vf[1]!.
- By default, this keys has been set to be equal to~\lstinline!sepi!,
+ By default, this keys has been set to be equal to~\lstinline!sep i!,
but it is meant to be changeable by the user.
\item
- \mylst!degreedefault={$\<value\>$}!
+ \mylst!degree default={$\<value\>$}!
This is the key where the grading goes.
- It is the one used by \lstinline!Cohomology! class types.
- By default, this key has been set to be equal to~\lstinline!sepd!,
- but it is meant to be changable by the user.
+ It is the one used by the (now deprecated) \lstinline!Cohomology! class type.
+ By default, this key has been set to be equal to~\lstinline!sep d!,
+ but it is meant to be changeable by the user.
\item
\mylst!*!
@@ -3553,14 +3589,14 @@ In the following sections, we include the full list.
Adds three dots to the \lstinline!i!-index.
\item
- \mylst!*withothersep={$\<separator\>$}!
+ \mylst!* with other sep={$\<separator\>$}!
Adds a bullet to the \lstinline!d!-index,
separated by the \<separator\>
from any previous \lstinline!d!-indices.
\item
- \mylst!**withothersep={$\<separator\>$}!
+ \mylst!** with other sep={$\<separator\>$}!
Adds a double bullet to the \lstinline!d!-index,
separated by the \<separator\>
@@ -3571,20 +3607,20 @@ In the following sections, we include the full list.
The key that is applied whenever the user adds
an argument via the standard syntax, e.g.~\lstinline!\vf{\vx}!.
- By default, it is set to be equal to \lstinline!setargsinglekeys!,
+ By default, it is set to be equal to \lstinline!set arg single keys!,
but it is meant to be changable by the user.
\item
\mylst!smash!
Applies the command~\lstinline!\smash! to the symbol.
- Equivalent to~\lstinline!command=\smash!.
+ Equivalent to~\lstinline!return, command=\smash!.
\item
\mylst!prime!, \mylst!'!, \mylst!''!, \mylst!'''!
Adds one or more primes to the symbol in the upper index.
- The first one is equivalent to \lstinline!upper={\prime},nextupperwithsep=false!,
+ The first one is equivalent to \lstinline!upper={\prime},next upper with sep=false!,
and the rest are equivalent to multiple iterations
of~\lstinline!prime!.
\end{itemize}
@@ -3595,24 +3631,24 @@ In the following sections, we include the full list.
\item
\mylst!par!
- Turns parentheses on. Equivalent to \lstinline!usepar=true!.
+ Turns parentheses on. Equivalent to \lstinline!use par=true!.
\item
- \mylst!nopar!
+ \mylst!no par!
Turns parentheses off, but still prints them if more
than one argument is received.
- Equivalent to \lstinline!usepar=false!.
+ Equivalent to \lstinline!use par=false!.
\item
- \mylst!neverpar!
+ \mylst!never par!
Turns parentheses completely off, even if more than one argument
is received. (This is ugly and should only be used for special constructions.)
- Equivalent to \lstinline!usepar=never!.
+ Equivalent to \lstinline!use par=never!.
\item
- \mylst!usepar={$\values\<\default{true}|false|never\>$}!
+ \mylst!use par={$\values\<\default{true}|false|never\>$}!
Sets whether or not to use parentheses.
If~\lstinline!true!, turns parentheses on (this is the default behaviour).
@@ -3623,26 +3659,26 @@ In the following sections, we include the full list.
The default value is~\lstinline!true!.
\item
- \mylst!parsize={$\values\<\default{normal}|auto|*|{\textit{other}}\>$}!
+ \mylst!par size={$\values\<\default{normal}|auto|*|{\textit{other}}\>$}!
Sets the parentheses size.
Here,~\lstinline!normal! means normal size
parentheses,
\lstinline!auto! and~\lstinline!*!
- mean auto-scaled parentheses using~\lstinline!\left...\right!.
+ mean auto-scaled parentheses using~\lstinline!\left ...\right!.
If another value is received, that value
is used for the parenthesis size,
so the intended values are~\lstinline!\big!, \lstinline!\Big!,
\lstinline!\bigg!,~\lstinline!\Bigg!.
\item
- \mylst!leftpar={$\<parenthesis\>$}!
+ \mylst!left par={$\<parenthesis\>$}!
Sets the left parenthesis.
The default value is~\lstinline!(!.
\item
- \mylst!rightpar={$\<parenthesis\>$}!
+ \mylst!right par={$\<parenthesis\>$}!
Sets the right parenthesis.
The default value is~\lstinline!)!.
@@ -3664,50 +3700,50 @@ In the following sections, we include the full list.
Here,~\lstinline!normal! means normal size
parentheses,
\lstinline!auto! and~\lstinline!*!
- mean auto-scaled parentheses using~\lstinline!\left...\right!.
+ mean auto-scaled parentheses using~\lstinline!\left ...\right!.
If another value is received, that value
is used for the parenthesis size,
so the intended values are~\lstinline!\big!, \lstinline!\Big!,
\lstinline!\bigg!,~\lstinline!\Bigg!.
\item
- \mylst!sparsize={$\values\<\default{normal}|auto|*|{\textit{other}}\>$}!
+ \mylst!spar size={$\values\<\default{normal}|auto|*|{\textit{other}}\>$}!
Sets the \lstinline!spar! parenthesis size.
Here,~\lstinline!normal! means normal size
parentheses,
\lstinline!auto! and~\lstinline!*!
- mean auto-scaled parentheses using~\lstinline!\left...\right!.
+ mean auto-scaled parentheses using~\lstinline!\left ...\right!.
If another value is received, that value
is used for the parenthesis size,
so the intended values are~\lstinline!\big!, \lstinline!\Big!,
\lstinline!\bigg!,~\lstinline!\Bigg!.
\item
- \mylst!leftspar={$\<parenthesis\>$}!
+ \mylst!left spar={$\<parenthesis\>$}!
Sets the left parenthesis for the \lstinline!spar! routine.
The default value is~\lstinline!(!.
\item
- \mylst!rightspar={$\<parenthesis\>$}!
+ \mylst!right spar={$\<parenthesis\>$}!
Sets the right parenthesis for the \lstinline!spar! routine.
The default value is~\lstinline!)!.
\item
- \mylst!otherspar={$\<left parenthesis\>$}{$\<right parenthesis\>$}!
+ \mylst!other spar={$\<left parenthesis\>$}{$\<right parenthesis\>$}!
Invokes the \lstinline!spar! routine, but with the assigned parentheses.
\item
- \mylst!Otherspar={$\<left parenthesis\>$}{$\<right parenthesis\>$}{$\values\<normal|auto|*|{\textit{other}}\>$}!
+ \mylst!Other spar={$\<left parenthesis\>$}{$\<right parenthesis\>$}{$\values\<normal|auto|*|{\textit{other}}\>$}!
Invokes the \lstinline!spar! routine, but with the assigned parentheses and size.
Here, \lstinline!normal! means normal size
parentheses,
\lstinline!auto! and~\lstinline!*!
- mean auto-scaled parentheses using~\lstinline!\left...\right!.
+ mean auto-scaled parentheses using~\lstinline!\left ...\right!.
If another value is received, that value
is used for the parenthesis size,
so the intended values are~\lstinline!\big!, \lstinline!\Big!,
@@ -3718,20 +3754,20 @@ In the following sections, we include the full list.
\begin{itemize}
\item
- \mylst!setargkeys={$\<keys\>$}!,
- \mylst!argkeysset={$\<keys\>$}!
+ \mylst!set arg keys={$\<keys\>$}!,
+ \mylst!arg keys set={$\<keys\>$}!
Sets the argument keys \<keys\>.
\item
- \mylst!setargkeysx={$\<keys\>$}!,
- \mylst!argkeyssetx={$\<keys\>$}!
+ \mylst!set arg keys x={$\<keys\>$}!,
+ \mylst!arg keys set x={$\<keys\>$}!
Sets the argynebt keys \<keys\>, but fully expands their values.
\item
- \mylst!setargsinglekeys={$\<keys\>$}!,
- \mylst!argsinglekeysset={$\<keys\>$}!
+ \mylst!set arg single keys={$\<keys\>$}!,
+ \mylst!arg single keys set={$\<keys\>$}!
Sets the argument keys \<keys\>,
but only supports keys taking no values.
@@ -3739,8 +3775,8 @@ In the following sections, we include the full list.
signs without causing issues.
\item
- \mylst!setargsinglekeysx={$\<keys\>$}!,
- \mylst!argsinglekeyssetx={$\<keys\>$}!
+ \mylst!set arg single keys x={$\<keys\>$}!,
+ \mylst!arg single keys set x={$\<keys\>$}!
Sets the argument keys \<keys\>,
but only supports keys taking no values.
@@ -3750,16 +3786,16 @@ In the following sections, we include the full list.
signs without causing issues.
\item
- \mylst!setoneargsinglekey={$\<key\>$}!,
- \mylst!oneargsinglekeyset={$\<key\>$}!
+ \mylst!set one arg single key={$\<key\>$}!,
+ \mylst!one arg single key set={$\<key\>$}!
Sets one single argument key taking no values.
This allows the argument to contain
equality signs and commas without cuasing issues.
\item
- \mylst!setoneargsinglekeyx={$\<key\>$}!,
- \mylst!oneargsinglekeysetx={$\<key\>$}!
+ \mylst!set one arg single key x={$\<key\>$}!,
+ \mylst!one arg single key set x={$\<key\>$}!
Sets one single argument key taking no values,
If the key is not found, the value
@@ -3768,65 +3804,66 @@ In the following sections, we include the full list.
equality signs and commas without cuasing issues.
\item
- \mylst!setargwithoutkeyval={$\<value\>$}!,
- \mylst!argwithoutkeyvalset={$\<value\>$}!
+ \mylst!set arg without keyval={$\<value\>$}!,
+ \mylst!arg without keyval set={$\<value\>$}!
Sets the argument, allowing no keyval syntax.
\item
- \mylst!setargwithoutkeyvalx={$\<value\>$}!,
- \mylst!argwithoutkeyvalsetx={$\<value\>$}!
+ \mylst!set arg without keyval x={$\<value\>$}!,
+ \mylst!arg without keyval set x={$\<value\>$}!
Sets the argument, fully expanding its value,
and allowing no keyval syntax.
\item
- \mylst!prearg={$\<value\>$}!
+ \mylst!pre arg={$\<value\>$}!
Sets the pre-argument.
\item
- \mylst!postarg={$\<value\>$}!
+ \mylst!post arg={$\<value\>$}!
Sets the post-argument.
\item
- \mylst!setargsep={$\<value\>$}!
+ \mylst!set arg sep={$\<value\>$}!
Sets the argument separator.
The default value is a comma.
\item
- \mylst!setargslot={$\<value\>$}!
+ \mylst!set arg slot={$\<value\>$}!
Sets the argument slot.
The default value is~\lstinline!{-}!.
\item
- \mylst!setargdots={$\<value\>$}!
+ \mylst!set arg dots={$\<value\>$}!
Sets the argument dots.
The default value is~\lstinline!\dots!.
\item
- \mylst!argkeyval={$\values\<true|false|\default{singlekeys}|onesinglekey\>$}!
+ \mylst!arg keyval={$\values\<true|false|\default{single keys}|one single key\>$}!
Sets whether to use argument keyval syntax or not.
- If \lstinline!true!, \lstinline!arg! is set equal to~\lstinline!setargkeys!.
- If \lstinline!false!, it is set to~\lstinline!setargwithoutkeyval!.
- If \lstinline!singlekeys!, it is set to~\lstinline!setargsinglekeys!.
- If \lstinline!onesinglekey!, it is set to~\lstinline!setoneargsinglekey!.
- The default value is~\lstinline!singlekeys!.
+ If \lstinline!true!, \lstinline!arg! is set equal to~\lstinline!set arg keys!.
+ If \lstinline!false!, it is set to~\lstinline!set arg without keyval!.
+ If \lstinline!single keys!, it is set to~\lstinline!set arg single keys!.
+ If \lstinline!one single key!, it is set to~\lstinline!set one arg single key!.
+ The default value is~\lstinline!single keys!.
\item
- \mylst!argposition={$\values\<left|\default{right}\>$}!
+ \mylst!arg position={$\values\<left|\default{right}\>$}!,
+ \mylst!arg pos={$\values\<left|\default{right}\>$}!
Sets the position of the argument.
The default is~\lstinline!right!, so the argument
will be printed to the right of the symbol.
\item
- \mylst!nextargwithsep={$\values\<true|\default{false}\>$}!
+ \mylst!next arg with sep={$\values\<true|\default{false}\>$}!
Sets whether the next argument should be
separated from the current one with a
@@ -3835,77 +3872,77 @@ In the following sections, we include the full list.
system will automatically change this when needed.
\item
- \mylst!separg={$\<value\>$}!
+ \mylst!sep arg={$\<value\>$}!
Adds \<value\> to the argument, separated from any previous
argument by the default argument separator.
\item
- \mylst!commarg={$\<value\>$}!
+ \mylst!comma arg={$\<value\>$}!
Adds \<value\> to the argument, separated from any previous
argument by a comma.
\item
- \mylst!argwithothersep={$\<separator\>$}{$\<value\>$}!
+ \mylst!arg with other sep={$\<separator\>$}{$\<value\>$}!
Adds \<value\> to the argument, separated from any previous
argument by \<separator\>.
\item
- \mylst!arg...withothersep={$\<separator\>$}!,
- \mylst!argdotswithothersep={$\<separator\>$}!
+ \mylst!arg ... with other sep={$\<separator\>$}!,
+ \mylst!arg dots with other sep={$\<separator\>$}!
Adds three dots to the argument, separated from any previous
argument by the \<separator\>.
\item
- \mylst!arg-withothersep={$\<separator\>$}!,
- \mylst!argslotwithothersep={$\<separator\>$}!
+ \mylst!arg - with other sep={$\<separator\>$}!,
+ \mylst!arg slot with other sep={$\<separator\>$}!
Adds a slot to the argument, separated from any previous
argument by the \<separator\>.
\item
- \mylst!argdots!, \mylst!arg...!
+ \mylst!arg dots!, \mylst!arg ...!
Adds three dots to the argument,
separated from any previous arguments
by the standard separator.
\item
- \mylst!commargdots!, \mylst!commarg...!
+ \mylst!comma arg dots!, \mylst!comma arg ...!
Adds three dots to the argument,
separated from any previous arguments
by a comma.
\item
- \mylst!argslot!, \mylst!arg-!
+ \mylst!arg slot!, \mylst!arg -!
Adds a slot to the argument,
separated from any previous arguments
by the standard separator.
\item
- \mylst!commargslot!, \mylst!commarg-!
+ \mylst!comma arg slot!, \mylst!comma arg -!
Adds a slot to the argument,
separated from any previous arguments
by a comma.
\item
- \mylst!cleararg!
+ \mylst!clear arg!
Clears the argument.
\item
- \mylst!clearprearg!
+ \mylst!clear pre arg!
Clears the pre-argument.
\item
- \mylst!clearpostarg!
+ \mylst!clear post arg!
Clears the post-argument.
\end{itemize}
@@ -3921,191 +3958,191 @@ In the following sections, we include the full list.
with no separator from any previous upper index.
\item
- \mylst!sepupper={$\<value\>$}!
+ \mylst!sep upper={$\<value\>$}!
Adds to the upper index,
separated from any previous upper
index by the default separator.
\item
- \mylst!commaupper={$\<value\>$}!
+ \mylst!comma upper={$\<value\>$}!
Adds to the upper index,
separated from any previous upper
index by a comma.
\item
- \mylst!preupper={$\<value\>$}!
+ \mylst!pre upper={$\<value\>$}!
Sets the pre-upper index.
\item
- \mylst!postupper={$\<value\>$}!
+ \mylst!post upper={$\<value\>$}!
Sets the post-upper index.
\item
- \mylst!upperputleft={$\<value\>$}!
+ \mylst!upper put left={$\<value\>$}!
Adds something to the left of the upper index.
As with keys like~\lstinline!upper!, this
will also increase the number of registered
upper indices by~\( 1 \), and
it will
- set \lstinline!nextupperwithsep=true!.
+ set \lstinline!next upper with sep=true!.
\item
- \mylst!setuppersep={$\<value\>$}!
+ \mylst!set upper sep={$\<value\>$}!
Sets the upper index separator to~\<value\>.
By default, this is a comma.
\item
- \mylst!nextupperwithsep={$\values\<true|\default{false}\>$}!
+ \mylst!next upper with sep={$\values\<true|\default{false}\>$}!
Sets whether the next upper index should
be separated from the current one by a separator.
\item
- \mylst!upperwithothersep={$\<separator\>$}{$\<value\>$}!
+ \mylst!upper with other sep={$\<separator\>$}{$\<value\>$}!
Adds \<value\> to the upper index, separated from
any prevous upper index by~\<separator\>.
\item
- \mylst!upper-!, \mylst!upperslot!
+ \mylst!upper -!, \mylst!upper slot!
Adds a slot to the upper index,
with no separator from any previous upper index.
\item
- \mylst!sepupper-!, \mylst!sepupperslot!
+ \mylst!sep upper -!, \mylst!sep upper slot!
Adds a slot to the upper index,
separated from any previous upper
index by the default separator.
\item
- \mylst!commaupper-!, \mylst!commaupperslot!
+ \mylst!comma upper -!, \mylst!comma upper slot!
Adds a slot to the upper index,
separated from any previous upper
index by a comma.
\item
- \mylst!setupperslot={$\<value\>$}!
+ \mylst!set upper slot={$\<value\>$}!
Sets the slot for the upper index.
By default, this is~\lstinline!{-}!.
\item
- \mylst!upper-withothersep={$\<separator\>$}!,
- \mylst!upperslotwithothersep={$\<separator\>$}!
+ \mylst!upper - with other sep={$\<separator\>$}!,\\
+ \mylst!upper slot with other sep={$\<separator\>$}!
Adds a slot to the upper index, separated
from any previous upper index by~\<separator\>.
\item
- \mylst!upper...!, \mylst!upperdots!
+ \mylst!upper ...!, \mylst!upper dots!
Adds three dots to the upper index,
with no separator from any previous upper index.
\item
- \mylst!sepupper...!, \mylst!sepupperdots!
+ \mylst!sep upper ...!, \mylst!sep upper dots!
Adds three dots to the upper index,
separated from any previous upper
index by the default separator.
\item
- \mylst!commaupper...!, \mylst!commaupperdots!
+ \mylst!comma upper ...!, \mylst!comma upper dots!
Adds three dots to the upper index,
separated from any previous upper
index by a comma.
\item
- \mylst!setupperdots={$\<value\>$}!
+ \mylst!set upper dots={$\<value\>$}!
Sets the dots for the upper index.
By default, this is~\lstinline!\dots!.
\item
- \mylst!upper...withothersep={$\<separator\>$}!,
- \mylst!upperdotswithothersep={$\<separator\>$}!
+ \mylst!upper ... with other sep={$\<separator\>$}!,\\
+ \mylst!upper dots with other sep={$\<separator\>$}!
Adds three dots to the upper index,
separated from any previous upper index
by~\<separator\>.
\item
- \mylst!upper*!
+ \mylst!upper *!
Adds a bullet to the upper index,
with no separator from any previous upper index.
\item
- \mylst!upper**!
+ \mylst!upper **!
Adds a double bullet to the upper index,
with no separator from any previous upper index.
\item
- \mylst!sepupper*!
+ \mylst!sep upper *!
Adds a bullet to the upper index,
separated from any previous upper
index by the default separator.
\item
- \mylst!sepupper**!
+ \mylst!sep upper **!
Adds a double bullet to the upper index,
separated from any previous upper
index by the default separator.
\item
- \mylst!commaupper*!
+ \mylst!comma upper *!
Adds a bullet to the upper index,
separated from any previous upper
index by a comma.
\item
- \mylst!commaupper**!
+ \mylst!comma upper **!
Adds a double bullet to the upper index,
separated from any previous upper
index by a comma.
\item
- \mylst!upper*withothersep={$\<separator\>$}!
+ \mylst!upper * with other sep={$\<separator\>$}!
Adds a bullet to the upper index,
separated from any previous upper index
by~\<separator\>.
\item
- \mylst!upper**withothersep={$\<separator\>$}!
+ \mylst!upper ** with other sep={$\<separator\>$}!
Adds a double bullet to the upper index,
separated from any previous upper index
by~\<separator\>.
\item
- \mylst!clearupper!
+ \mylst!clear upper!
Clears the upper index.
\item
- \mylst!clearpreupper!
+ \mylst!clear pre upper!
Clears the pre-upper index.
\item
- \mylst!clearpostupper!
+ \mylst!clear post upper!
Clears the post-upper index.
\end{itemize}
@@ -4120,174 +4157,174 @@ In the following sections, we include the full list.
with no separator from any previous lower index.
\item
- \mylst!seplower={$\<value\>$}!
+ \mylst!sep lower={$\<value\>$}!
Adds to the lower index,
separated from any previous lower
index by the default separator.
\item
- \mylst!commalower={$\<value\>$}!
+ \mylst!comma lower={$\<value\>$}!
Adds to the lower index,
separated from any previous lower
index by a comma.
\item
- \mylst!prelower={$\<value\>$}!
+ \mylst!pre lower={$\<value\>$}!
Sets the pre-lower index.
\item
- \mylst!postlower={$\<value\>$}!
+ \mylst!post lower={$\<value\>$}!
Sets the post-lower index.
\item
- \mylst!lowerputleft={$\<value\>$}!
+ \mylst!lower put left={$\<value\>$}!
Adds something to the left of the lower index.
As with keys like~\lstinline!lower!, this
will also increase the number of registered
lower indices by~\( 1 \), and
it will
- set \lstinline!nextlowerwithsep=true!.
+ set \lstinline!next lower with sep=true!.
\item
- \mylst!setlowersep={$\<value\>$}!
+ \mylst!set lower sep={$\<value\>$}!
Sets the lower index separator to~\<value\>.
By default, this is a comma.
\item
- \mylst!nextlowerwithsep={$\values\<true|\default{false}\>$}!
+ \mylst!next lower with sep={$\values\<true|\default{false}\>$}!
Sets whether the next lower index should
be separated from the current one by a separator.
\item
- \mylst!lowerwithothersep={$\<separator\>$}{$\<value\>$}!
+ \mylst!lower with other sep={$\<separator\>$}{$\<value\>$}!
Adds \<value\> to the lower index, separated from
any prevous lower index by~\<separator\>.
\item
- \mylst!lower-!, \mylst!lowerslot!
+ \mylst!lower -!, \mylst!lower slot!
Adds a slot to the lower index,
with no separator from any previous lower index.
\item
- \mylst!seplower-!, \mylst!seplowerslot!
+ \mylst!sep lower -!, \mylst!sep lower slot!
Adds a slot to the lower index,
separated from any previous lower
index by the default separator.
\item
- \mylst!commalower-!, \mylst!commalowerslot!
+ \mylst!comma lower -!, \mylst!comma lower slot!
Adds a slot to the lower index,
separated from any previous lower
index by a comma.
\item
- \mylst!setlowerslot={$\<value\>$}!
+ \mylst!set lower slot={$\<value\>$}!
Sets the slot for the lower index.
By default, this is~\lstinline!{-}!.
\item
- \mylst!lower-withothersep={$\<separator\>$}!,
- \mylst!lowerslotwithothersep={$\<separator\>$}!
+ \mylst!lower - with other sep={$\<separator\>$}!,\\
+ \mylst!lower slot with other sep={$\<separator\>$}!
Adds a slot to the lower index, separated
from any previous lower index by~\<separator\>.
\item
- \mylst!lower...!, \mylst!lowerdots!
+ \mylst!lower ...!, \mylst!lower dots!
Adds three dots to the lower index,
with no separator from any previous lower index.
\item
- \mylst!seplower...!, \mylst!seplowerdots!
+ \mylst!sep lower ...!, \mylst!sep lower dots!
Adds three dots to the lower index,
separated from any previous lower
index by the default separator.
\item
- \mylst!commalower...!, \mylst!commalowerdots!
+ \mylst!comma lower ...!, \mylst!comma lower dots!
Adds three dots to the lower index,
separated from any previous lower
index by a comma.
\item
- \mylst!setlowerdots={$\<value\>$}!
+ \mylst!set lower dots={$\<value\>$}!
Sets the dots for the lower index.
By default, this is~\lstinline!\dots!.
\item
- \mylst!lower...withothersep={$\<separator\>$}!,
- \mylst!lowerdotswithothersep={$\<separator\>$}!
+ \mylst!lower ... with other sep={$\<separator\>$}!,\\
+ \mylst!lower dots with other sep={$\<separator\>$}!
Adds three dots to the lower index,
separated from any previous lower index
by~\<separator\>.
\item
- \mylst!lower*!
+ \mylst!lower *!
Adds a bullet to the lower index,
with no separator from any previous lower index.
\item
- \mylst!lower**!
+ \mylst!lower **!
Adds a double bullet to the lower index,
with no separator from any previous lower index.
\item
- \mylst!seplower*!
+ \mylst!sep lower *!
Adds a bullet to the lower index,
separated from any previous lower
index by the default separator.
\item
- \mylst!seplower**!
+ \mylst!sep lower **!
Adds a double bullet to the lower index,
separated from any previous lower
index by the default separator.
\item
- \mylst!commalower*!
+ \mylst!comma lower *!
Adds a bullet to the lower index,
separated from any previous lower
index by a comma.
\item
- \mylst!commalower**!
+ \mylst!comma lower **!
Adds a double bullet to the lower index,
separated from any previous lower
index by a comma.
\item
- \mylst!lower*withothersep={$\<separator\>$}!
+ \mylst!lower * with other sep={$\<separator\>$}!
Adds a bullet to the lower index,
separated from any previous lower index
by~\<separator\>.
\item
- \mylst!lower**withothersep={$\<separator\>$}!
+ \mylst!lower ** with other sep={$\<separator\>$}!
Adds a double bullet to the lower index,
separated from any previous lower index
@@ -4299,12 +4336,12 @@ In the following sections, we include the full list.
Clears the lower index.
\item
- \mylst!clearprelower!
+ \mylst!clear pre lower!
Clears the pre-lower index.
\item
- \mylst!clearpostlower!
+ \mylst!clear post lower!
Clears the post-lower index.
\end{itemize}
@@ -4313,197 +4350,197 @@ In the following sections, we include the full list.
\begin{itemize}
\item
- \mylst!upperleft={$\<value\>$}!
+ \mylst!upper left={$\<value\>$}!
Adds to the upper left index,
with no separator from any previous upper left index.
\item
- \mylst!sepupperleft={$\<value\>$}!
+ \mylst!sep upper left={$\<value\>$}!
Adds to the upper left index,
separated from any previous upper left
index by the default separator.
\item
- \mylst!commaupperleft={$\<value\>$}!
+ \mylst!comma upper left={$\<value\>$}!
Adds to the upper left index,
separated from any previous upper left
index by a comma.
\item
- \mylst!preupperleft={$\<value\>$}!
+ \mylst!pre upper left={$\<value\>$}!
Sets the pre-upper left index.
\item
- \mylst!postupperleft={$\<value\>$}!
+ \mylst!post upper left={$\<value\>$}!
Sets the post-upper left index.
\item
- \mylst!upperleftputright={$\<value\>$}!
+ \mylst!upper left put right={$\<value\>$}!
Adds something to the right of the upper left index.
- As with keys like~\lstinline!upperleft!, this
+ As with keys like~\lstinline!upper left!, this
will also increase the number of registered
upper left indices by~\( 1 \), and
it will
- set \lstinline!nextupperleftwithsep=true!.
+ set \lstinline!next upper left with sep=true!.
\item
- \mylst!setupperleftsep={$\<value\>$}!
+ \mylst!set upper left sep={$\<value\>$}!
Sets the upper left index separator to~\<value\>.
By default, this is a comma.
\item
- \mylst!nextupperleftwithsep={$\values\<true|\default{false}\>$}!
+ \mylst!next upper left with sep={$\values\<true|\default{false}\>$}!
Sets whether the next upper left index should
be separated from the current one by a separator.
\item
- \mylst!upperleftwithothersep={$\<separator\>$}{$\<value\>$}!
+ \mylst!upper left with other sep={$\<separator\>$}{$\<value\>$}!
Adds \<value\> to the upper left index, separated from
any prevous upper left index by~\<separator\>.
\item
- \mylst!upperleft-!, \mylst!upperleftslot!
+ \mylst!upper left -!, \mylst!upper left slot!
Adds a slot to the upper left index,
with no separator from any previous upper left index.
\item
- \mylst!sepupperleft-!, \mylst!sepupperleftslot!
+ \mylst!sep upper left -!, \mylst!sep upper left slot!
Adds a slot to the upper left index,
separated from any previous upper left
index by the default separator.
\item
- \mylst!commaupperleft-!, \mylst!commaupperleftslot!
+ \mylst!comma upper left -!, \mylst!comma upper left slot!
Adds a slot to the upper left index,
separated from any previous upper left
index by a comma.
\item
- \mylst!setupperleftslot={$\<value\>$}!
+ \mylst!set upper left slot={$\<value\>$}!
Sets the slot for the upper left index.
By default, this is~\lstinline!{-}!.
\item
- \mylst!upperleft-withothersep={$\<separator\>$}!,
- \mylst!upperleftslotwithothersep={$\<separator\>$}!
+ \mylst!upper left - with other sep={$\<separator\>$}!,\\
+ \mylst!upper left slot with other sep={$\<separator\>$}!
Adds a slot to the upper left index, separated
from any previous upper left index by~\<separator\>.
\item
- \mylst!upperleft...!, \mylst!upperleftdots!
+ \mylst!upper left ...!, \mylst!upper left dots!
Adds three dots to the upper left index,
with no separator from any previous upper left index.
\item
- \mylst!sepupperleft...!, \mylst!sepupperleftdots!
+ \mylst!sep upper left ...!, \mylst!sep upper left dots!
Adds three dots to the upper left index,
separated from any previous upper left
index by the default separator.
\item
- \mylst!commaupperleft...!, \mylst!commaupperleftdots!
+ \mylst!comma upper left ...!, \mylst!comma upper left dots!
Adds three dots to the upper left index,
separated from any previous upper left
index by a comma.
\item
- \mylst!setupperleftdots={$\<value\>$}!
+ \mylst!set upper left dots={$\<value\>$}!
Sets the dots for the upper left index.
By default, this is~\lstinline!\dots!.
\item
- \mylst!upperleft...withothersep={$\<separator\>$}!,
- \mylst!upperleftdotswithothersep={$\<separator\>$}!
+ \mylst!upper left ... with other sep={$\<separator\>$}!,\\
+ \mylst!upper left dots with other sep={$\<separator\>$}!
Adds three dots to the upper left index,
separated from any previous upper left index
by~\<separator\>.
\item
- \mylst!upperleft*!
+ \mylst!upper left *!
Adds a bullet to the upper left index,
with no separator from any previous upper left index.
\item
- \mylst!upperleft**!
+ \mylst!upper left **!
Adds a double bullet to the upper left index,
with no separator from any previous upper left index.
\item
- \mylst!sepupperleft*!
+ \mylst!sep upper left *!
Adds a bullet to the upper left index,
separated from any previous upper left
index by the default separator.
\item
- \mylst!sepupperleft**!
+ \mylst!sep upper left **!
Adds a double bullet to the upper left index,
separated from any previous upper left
index by the default separator.
\item
- \mylst!commaupperleft*!
+ \mylst!comma upper left *!
Adds a bullet to the upper left index,
separated from any previous upper left
index by a comma.
\item
- \mylst!commaupperleft**!
+ \mylst!comma upper left **!
Adds a double bullet to the upper left index,
separated from any previous upper left
index by a comma.
\item
- \mylst!upperleft*withothersep={$\<separator\>$}!
+ \mylst!upper left * with other sep={$\<separator\>$}!
Adds a bullet to the upper left index,
separated from any previous upper left index
by~\<separator\>.
\item
- \mylst!upperleft**withothersep={$\<separator\>$}!
+ \mylst!upper left ** with other sep={$\<separator\>$}!
Adds a double bullet to the upper left index,
separated from any previous upper left index
by~\<separator\>.
\item
- \mylst!clearupperleft!
+ \mylst!clearupper left!
Clears the upper left index.
\item
- \mylst!clearpreupperleft!
+ \mylst!clear pre upper left!
Clears the pre-upper left index.
\item
- \mylst!clearpostupperleft!
+ \mylst!clear post upper left!
Clears the post-upper left index.
\end{itemize}
@@ -4512,197 +4549,197 @@ In the following sections, we include the full list.
\begin{itemize}
\item
- \mylst!lowerleft={$\<value\>$}!
+ \mylst!lower left={$\<value\>$}!
Adds to the lower left index,
with no separator from any previous lower left index.
\item
- \mylst!seplowerleft={$\<value\>$}!
+ \mylst!sep lower left={$\<value\>$}!
Adds to the lower left index,
separated from any previous lower left
index by the default separator.
\item
- \mylst!commalowerleft={$\<value\>$}!
+ \mylst!comma lower left={$\<value\>$}!
Adds to the lower left index,
separated from any previous lower left
index by a comma.
\item
- \mylst!prelowerleft={$\<value\>$}!
+ \mylst!pre lower left={$\<value\>$}!
Sets the pre-lower left index.
\item
- \mylst!postlowerleft={$\<value\>$}!
+ \mylst!post lower left={$\<value\>$}!
Sets the post-lower left index.
\item
- \mylst!lowerleftputright={$\<value\>$}!
+ \mylst!lower left put right={$\<value\>$}!
Adds something to the right of the lower left index.
- As with keys like~\lstinline!lowerleft!, this
+ As with keys like~\lstinline!lower left!, this
will also increase the number of registered
lower left indices by~\( 1 \), and
it will
- set \lstinline!nextlowerleftwithsep=true!.
+ set \lstinline!next lower left with sep=true!.
\item
- \mylst!setlowerleftsep={$\<value\>$}!
+ \mylst!set lower left sep={$\<value\>$}!
Sets the lower left index separator to~\<value\>.
By default, this is a comma.
\item
- \mylst!nextlowerleftwithsep={$\values\<true|\default{false}\>$}!
+ \mylst!next lower left with sep={$\values\<true|\default{false}\>$}!
Sets whether the next lower left index should
be separated from the current one by a separator.
\item
- \mylst!lowerleftwithothersep={$\<separator\>$}{$\<value\>$}!
+ \mylst!lower left with other sep={$\<separator\>$}{$\<value\>$}!
Adds \<value\> to the lower left index, separated from
any prevous lower left index by~\<separator\>.
\item
- \mylst!lowerleft-!, \mylst!lowerleftslot!
+ \mylst!lower left -!, \mylst!lower left slot!
Adds a slot to the lower left index,
with no separator from any previous lower left index.
\item
- \mylst!seplowerleft-!, \mylst!seplowerleftslot!
+ \mylst!sep lower left -!, \mylst!sep lower left slot!
Adds a slot to the lower left index,
separated from any previous lower left
index by the default separator.
\item
- \mylst!commalowerleft-!, \mylst!commalowerleftslot!
+ \mylst!comma lower left -!, \mylst!comma lower left slot!
Adds a slot to the lower left index,
separated from any previous lower left
index by a comma.
\item
- \mylst!setlowerleftslot={$\<value\>$}!
+ \mylst!set lower left slot={$\<value\>$}!
Sets the slot for the lower left index.
By default, this is~\lstinline!{-}!.
\item
- \mylst!lowerleft-withothersep={$\<separator\>$}!,
- \mylst!lowerleftslotwithothersep={$\<separator\>$}!
+ \mylst!lower left - with other sep={$\<separator\>$}!,\\
+ \mylst!lower left slot with other sep={$\<separator\>$}!
Adds a slot to the lower left index, separated
from any previous lower left index by~\<separator\>.
\item
- \mylst!lowerleft...!, \mylst!lowerleftdots!
+ \mylst!lower left ...!, \mylst!lower left dots!
Adds three dots to the lower left index,
with no separator from any previous lower left index.
\item
- \mylst!seplowerleft...!, \mylst!seplowerleftdots!
+ \mylst!sep lower left ...!, \mylst!sep lower left dots!
Adds three dots to the lower left index,
separated from any previous lower left
index by the default separator.
\item
- \mylst!commalowerleft...!, \mylst!commalowerleftdots!
+ \mylst!comma lower left ...!, \mylst!comma lower left dots!
Adds three dots to the lower left index,
separated from any previous lower left
index by a comma.
\item
- \mylst!setlowerleftdots={$\<value\>$}!
+ \mylst!set lower left dots={$\<value\>$}!
Sets the dots for the lower left index.
By default, this is~\lstinline!\dots!.
\item
- \mylst!lowerleft...withothersep={$\<separator\>$}!,
- \mylst!lowerleftdotswithothersep={$\<separator\>$}!
+ \mylst!lower left ... with other sep={$\<separator\>$}!,\\
+ \mylst!lower left dots with other sep={$\<separator\>$}!
Adds three dots to the lower left index,
separated from any previous lower left index
by~\<separator\>.
\item
- \mylst!lowerleft*!
+ \mylst!lower left *!
Adds a bullet to the lower left index,
with no separator from any previous lower left index.
\item
- \mylst!lowerleft**!
+ \mylst!lower left **!
Adds a double bullet to the lower left index,
with no separator from any previous lower left index.
\item
- \mylst!seplowerleft*!
+ \mylst!sep lower left *!
Adds a bullet to the lower left index,
separated from any previous lower left
index by the default separator.
\item
- \mylst!seplowerleft**!
+ \mylst!sep lower left **!
Adds a double bullet to the lower left index,
separated from any previous lower left
index by the default separator.
\item
- \mylst!commalowerleft*!
+ \mylst!comma lower left *!
Adds a bullet to the lower left index,
separated from any previous lower left
index by a comma.
\item
- \mylst!commalowerleft**!
+ \mylst!comma lower left **!
Adds a double bullet to the lower left index,
separated from any previous lower left
index by a comma.
\item
- \mylst!lowerleft*withothersep={$\<separator\>$}!
+ \mylst!lower left * with other sep={$\<separator\>$}!
Adds a bullet to the lower left index,
separated from any previous lower left index
by~\<separator\>.
\item
- \mylst!lowerleft**withothersep={$\<separator\>$}!
+ \mylst!lower left ** with other sep={$\<separator\>$}!
Adds a double bullet to the lower left index,
separated from any previous lower left index
by~\<separator\>.
\item
- \mylst!clearlowerleft!
+ \mylst!clearlower left!
Clears the lower left index.
\item
- \mylst!clearprelowerleft!
+ \mylst!clear pre lower left!
Clears the pre-lower left index.
\item
- \mylst!clearpostlowerleft!
+ \mylst!clear post lower left!
Clears the post-lower left index.
\end{itemize}
@@ -4717,190 +4754,190 @@ In the following sections, we include the full list.
with no separator from any previous \lstinline!d!-index.
\item
- \mylst!sepd={$\<value\>$}!
+ \mylst!sep d={$\<value\>$}!
Adds to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by the default separator.
\item
- \mylst!commad={$\<value\>$}!
+ \mylst!comma d={$\<value\>$}!
Adds to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by a comma.
\item
- \mylst!pred={$\<value\>$}!
+ \mylst!pre d={$\<value\>$}!
Sets the pre-\lstinline!d!-index.
\item
- \mylst!postd={$\<value\>$}!
+ \mylst!post d={$\<value\>$}!
Sets the post-\lstinline!d!-index.
\item
- \mylst!dputleft={$\<value\>$}!
+ \mylst!d put left={$\<value\>$}!
Adds something to the left of the \lstinline!d!-index.
As with keys like~\lstinline!d!, this
will also increase the number of registered
\lstinline!d!-indices by~\( 1 \), and
it will
- set \lstinline!nextdwithsep=true!.
+ set \lstinline!next d with sep=true!.
\item
- \mylst!setdsep={$\<value\>$}!
+ \mylst!set d sep={$\<value\>$}!
Sets the \lstinline!d!-index separator to~\<value\>.
By default, this is a comma.
\item
- \mylst!nextdwithsep={$\values\<true|\default{false}\>$}!
+ \mylst!next d with sep={$\values\<true|\default{false}\>$}!
Sets whether the next \lstinline!d!-index should
be separated from the current one by a separator.
\item
- \mylst!dwithothersep={$\<separator\>$}{$\<value\>$}!
+ \mylst!d with other sep={$\<separator\>$}{$\<value\>$}!
Adds \<value\> to the \lstinline!d!-index, separated from
any prevous \lstinline!d!-index by~\<separator\>.
\item
- \mylst!d-!, \mylst!dslot!
+ \mylst!d -!, \mylst!d slot!
Adds a slot to the \lstinline!d!-index,
with no separator from any previous \lstinline!d!-index.
\item
- \mylst!sepd-!, \mylst!sepdslot!
+ \mylst!sep d -!, \mylst!sep d slot!
Adds a slot to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by the default separator.
\item
- \mylst!commad-!, \mylst!commadslot!
+ \mylst!comma d -!, \mylst!comma d slot!
Adds a slot to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by a comma.
\item
- \mylst!setdslot={$\<value\>$}!
+ \mylst!set d slot={$\<value\>$}!
Sets the slot for the \lstinline!d!-index.
By default, this is~\lstinline!{-}!.
\item
- \mylst!d-withothersep={$\<separator\>$}!,
- \mylst!dslotwithothersep={$\<separator\>$}!
+ \mylst!d - with other sep={$\<separator\>$}!,
+ \mylst!d slot with other sep={$\<separator\>$}!
Adds a slot to the \lstinline!d!-index, separated
from any previous \lstinline!d!-index by~\<separator\>.
\item
- \mylst!d...!, \mylst!ddots!
+ \mylst!d ...!, \mylst!d dots!
Adds three dots to the \lstinline!d!-index,
with no separator from any previous \lstinline!d!-index.
\item
- \mylst!sepd...!, \mylst!sepddots!
+ \mylst!sep d ...!, \mylst!sep d dots!
Adds three dots to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by the default separator.
\item
- \mylst!commad...!, \mylst!commaddots!
+ \mylst!comma d ...!, \mylst!comma d dots!
Adds three dots to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by a comma.
\item
- \mylst!setddots={$\<value\>$}!
+ \mylst!set d dots={$\<value\>$}!
Sets the dots for the \lstinline!d!-index.
By default, this is~\lstinline!\dots!.
\item
- \mylst!d...withothersep={$\<separator\>$}!,
- \mylst!ddotswithothersep={$\<separator\>$}!
+ \mylst!d ... with other sep={$\<separator\>$}!,
+ \mylst!d dots with other sep={$\<separator\>$}!
Adds three dots to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by~\<separator\>.
\item
- \mylst!d*!
+ \mylst!d *!
Adds a bullet to the \lstinline!d!-index,
with no separator from any previous \lstinline!d!-index.
\item
- \mylst!d**!
+ \mylst!d **!
Adds a double bullet to the \lstinline!d!-index,
with no separator from any previous \lstinline!d!-index.
\item
- \mylst!sepd*!
+ \mylst!sep d *!
Adds a bullet to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by the default separator.
\item
- \mylst!sepd**!
+ \mylst!sep d **!
Adds a double bullet to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by the default separator.
\item
- \mylst!commad*!
+ \mylst!comma d *!
Adds a bullet to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by a comma.
\item
- \mylst!commad**!
+ \mylst!comma d **!
Adds a double bullet to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by a comma.
\item
- \mylst!d*withothersep={$\<separator\>$}!
+ \mylst!d * with other sep={$\<separator\>$}!
Adds a bullet to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by~\<separator\>.
\item
- \mylst!d**withothersep={$\<separator\>$}!
+ \mylst!d ** with other sep={$\<separator\>$}!
Adds a double bullet to the \lstinline!d!-index,
separated from any previous \lstinline!d!-index
by~\<separator\>.
\item
- \mylst!cleard!
+ \mylst!clear d!
Clears the \lstinline!d!-index.
\item
- \mylst!clearpred!
+ \mylst!clear pre d!
Clears the pre-\lstinline!d!-index.
\item
- \mylst!clearpostd!
+ \mylst!clear post d!
Clears the post-\lstinline!d!-index.
\end{itemize}
@@ -4915,191 +4952,191 @@ In the following sections, we include the full list.
with no separator from any previous \lstinline!i!-index.
\item
- \mylst!sepi={$\<value\>$}!
+ \mylst!sep i={$\<value\>$}!
Adds to the \lstinline!i!-index,
separated from any previous
\lstinline!i!-index by the default separator.
\item
- \mylst!commai={$\<value\>$}!
+ \mylst!comma i={$\<value\>$}!
Adds to the \lstinline!i!-index,
separated from any previous
\lstinline!i!-index by a comma.
\item
- \mylst!prei={$\<value\>$}!
+ \mylst!pre i={$\<value\>$}!
Sets the pre-\lstinline!i!-index.
\item
- \mylst!posti={$\<value\>$}!
+ \mylst!post i={$\<value\>$}!
Sets the post-\lstinline!i!-index.
\item
- \mylst!iputleft={$\<value\>$}!
+ \mylst!i put left={$\<value\>$}!
Adds something to the left of the \lstinline!i!-index.
As with keys like~\lstinline!i!, this
will also increase the number of registered
\lstinline!i!-indices by~\( 1 \), and
it will
- set \lstinline!nextiwithsep=true!.
+ set \lstinline!next i with sep=true!.
\item
- \mylst!setisep={$\<value\>$}!
+ \mylst!set i sep={$\<value\>$}!
Sets the \lstinline!i!-index separator to~\<value\>.
By default, this is a comma.
\item
- \mylst!nextiwithsep={$\values\<true|\default{false}\>$}!
+ \mylst!next i with sep={$\values\<true|\default{false}\>$}!
Sets whether the next \lstinline!i!-index should
be separated from the current one by a separator.
\item
- \mylst!iwithothersep={$\<separator\>$}{$\<value\>$}!
+ \mylst!i with other sep={$\<separator\>$}{$\<value\>$}!
Adds \<value\> to the \lstinline!i!-index, separated from
any prevous \lstinline!i!-index by~\<separator\>.
\item
- \mylst!i-!, \mylst!islot!
+ \mylst!i -!, \mylst!i slot!
Adds a slot to the \lstinline!i!-index,
with no separator from any previous \lstinline!i!-index.
\item
- \mylst!sepi-!, \mylst!sepislot!
+ \mylst!sep i -!, \mylst!sep i slot!
Adds a slot to the \lstinline!i!-index,
separated from any previous \lstinline!i!-index
by the default separator.
\item
- \mylst!commai-!, \mylst!commaislot!
+ \mylst!comma i -!, \mylst!comma i slot!
Adds a slot to the \lstinline!i!-index,
separated from any previous \lstinline!i!-index
by a comma.
\item
- \mylst!setislot={$\<value\>$}!
+ \mylst!set i slot={$\<value\>$}!
Sets the slot for the \lstinline!i!-index.
By default, this is~\lstinline!{-}!.
\item
- \mylst!i-withothersep={$\<separator\>$}!,
- \mylst!islotwithothersep={$\<separator\>$}!
+ \mylst!i - with other sep={$\<separator\>$}!,
+ \mylst!i slot with other sep={$\<separator\>$}!
Adds a slot to the \lstinline!i!-index, separated
from any previous \lstinline!i!-index by~\<separator\>.
\item
- \mylst!i...!, \mylst!idots!
+ \mylst!i ...!, \mylst!i dots!
Adds three dots to the \lstinline!i!-index,
with no separator from any previous \lstinline!i!-index.
\item
- \mylst!sepi...!, \mylst!sepidots!
+ \mylst!sep i ...!, \mylst!sep i dots!
Adds three dots to the \lstinline!i!-index,
separated from any previous \lstinline!i!-index
by the default separator.
\item
- \mylst!commai...!, \mylst!commaidots!
+ \mylst!comma i ...!, \mylst!comma i dots!
Adds three dots to the \lstinline!i!-index,
separated from any previous \lstinline!i!-index
by a comma.
\item
- \mylst!setidots={$\<value\>$}!
+ \mylst!set i dots={$\<value\>$}!
Sets the dots for the \lstinline!i!-index.
By default, this is~\lstinline!\dots!.
\item
- \mylst!i...withothersep={$\<separator\>$}!,
- \mylst!idotswithothersep={$\<separator\>$}!
+ \mylst!i ... with other sep={$\<separator\>$}!,
+ \mylst!i dots with other sep={$\<separator\>$}!
Adds three dots to the \lstinline!i!-index,
separated from any previous \lstinline!i!-index
by~\<separator\>.
\item
- \mylst!i*!
+ \mylst!i *!
Adds a bullet to the \lstinline!i!-index,
with no separator from any previous \lstinline!i!-index.
\item
- \mylst!i**!
+ \mylst!i **!
Adds a double bullet to the \lstinline!i!-index,
with no separator from any previous \lstinline!i!-index.
\item
- \mylst!sepi*!
+ \mylst!sep i *!
Adds a bullet to the \lstinline!i!-index,
separated from any previous
\lstinline!i!-index by the default separator.
\item
- \mylst!sepi**!
+ \mylst!sep i **!
Adds a double bullet to the \lstinline!i!-index,
separated from any previous
\lstinline!i!-index by the default separator.
\item
- \mylst!commai*!
+ \mylst!comma i *!
Adds a bullet to the \lstinline!i!-index,
separated from any previous
\lstinline!i!-index by a comma.
\item
- \mylst!commai**!
+ \mylst!comma i **!
Adds a double bullet to the \lstinline!i!-index,
separated from any previous
\lstinline!i!-index by a comma.
\item
- \mylst!i*withothersep={$\<separator\>$}!
+ \mylst!i * with other sep={$\<separator\>$}!
Adds a bullet to the \lstinline!i!-index,
separated from any previous \lstinline!i!-index
by~\<separator\>.
\item
- \mylst!i**withothersep={$\<separator\>$}!
+ \mylst!i ** with other sep={$\<separator\>$}!
Adds a double bullet to the \lstinline!i!-index,
separated from any previous \lstinline!i!-index
by~\<separator\>.
\item
- \mylst!cleari!
+ \mylst!clear i!
Clears the \lstinline!i!-index.
\item
- \mylst!clearprei!
+ \mylst!clear pre i!
Clears the pre-\lstinline!i!-index.
\item
- \mylst!clearposti!
+ \mylst!clear post i!
Clears the post-\lstinline!i!-index.
\end{itemize}
@@ -5119,32 +5156,32 @@ These are the predefined keys that work inside the argument.
by the other logic keys.
\item
- \mylst!setkeys={$\<keys\>$}!,
- \mylst!keysset={$\<keys\>$}!
+ \mylst!set keys={$\<keys\>$}!,
+ \mylst!keys set={$\<keys\>$}!
Sets the keys \<keys\>.
\item
- \mylst!setkeysx={$\<keys\>$}!,
- \mylst!keyssetx={$\<keys\>$}!
+ \mylst!set keys x={$\<keys\>$}!,
+ \mylst!keys set x={$\<keys\>$}!
Sets the keys \<keys\>, but fully expands their values.
\item
- \mylst!setargkeys={$\<keys\>$}!,
- \mylst!argkeysset={$\<keys\>$}!
+ \mylst!set arg keys={$\<keys\>$}!,
+ \mylst!arg keys set={$\<keys\>$}!
Sets the argument keys \<keys\>.
\item
- \mylst!setargkeysx={$\<keys\>$}!,
- \mylst!argkeyssetx={$\<keys\>$}!
+ \mylst!set arg keys x={$\<keys\>$}!,
+ \mylst!arg keys set x={$\<keys\>$}!
- Sets the argynebt keys \<keys\>, but fully expands their values.
+ Sets the argument keys \<keys\>, but fully expands their values.
\item
- \mylst!setargsinglekeys={$\<keys\>$}!,
- \mylst!argsinglekeysset={$\<keys\>$}!
+ \mylst!set arg single keys={$\<keys\>$}!,
+ \mylst!arg single keys set={$\<keys\>$}!
Sets the argument keys \<keys\>,
but only supports keys taking no values.
@@ -5152,8 +5189,8 @@ These are the predefined keys that work inside the argument.
signs without causing issues.
\item
- \mylst!setargsinglekeysx={$\<keys\>$}!,
- \mylst!argsinglekeyssetx={$\<keys\>$}!
+ \mylst!set arg single keys x={$\<keys\>$}!,
+ \mylst!arg single keys set x={$\<keys\>$}!
Sets the argument keys \<keys\>,
but only supports keys taking no values.
@@ -5163,16 +5200,16 @@ These are the predefined keys that work inside the argument.
signs without causing issues.
\item
- \mylst!setoneargsinglekey={$\<key\>$}!,
- \mylst!oneargsinglekeyset={$\<key\>$}!
+ \mylst!set one arg single key={$\<key\>$}!,
+ \mylst!one arg single key set={$\<key\>$}!
Sets one single argument key taking no values.
This allows the argument to contain
equality signs and commas without cuasing issues.
\item
- \mylst!setoneargsinglekeyx={$\<key\>$}!,
- \mylst!oneargsinglekeysetx={$\<key\>$}!
+ \mylst!set one arg single key x={$\<key\>$}!,
+ \mylst!one arg single key set x={$\<key\>$}!
Sets one single argument key taking no values,
If the key is not found, the value
@@ -5181,14 +5218,14 @@ These are the predefined keys that work inside the argument.
equality signs and commas without cuasing issues.
\item
- \mylst!setargwithoutkeyval={$\<value\>$}!,
- \mylst!argwithoutkeyvalset={$\<value\>$}!
+ \mylst!set arg without keyval={$\<value\>$}!,
+ \mylst!arg without keyval set={$\<value\>$}!
Sets the argument, allowing no keyval syntax.
\item
- \mylst!setargwithoutkeyvalx={$\<value\>$}!,
- \mylst!argwithoutkeyvalsetx={$\<value\>$}!
+ \mylst!set arg without keyval x={$\<value\>$}!,
+ \mylst!arg without keyval set x={$\<value\>$}!
Sets the argument, fully expanding its value,
and allowing no keyval syntax.
@@ -5225,7 +5262,7 @@ These are the predefined keys that work inside the argument.
by the default separator.
\item
- \mylst!comma-!, \mylst!commaslot!
+ \mylst!comma -!, \mylst!comma slot!
Adds a slot to the argument,
separated from any previous argument
@@ -5239,29 +5276,29 @@ These are the predefined keys that work inside the argument.
by the default separator.
\item
- \mylst!comma...!, \mylst!commadots!
+ \mylst!comma ...!, \mylst!comma dots!
Adds three dots to the argument,
separated from any previous argument
by a comma.
\item
- \mylst!othersep={$\<separator\>$}{$\<value\>$}!
+ \mylst!other sep={$\<separator\>$}{$\<value\>$}!
Adds \<value\> to the argument,
separated from any previous argument
by~\<separator\>.
\item
- \mylst!-withothersep={$\<separator\>$}! ,
- \mylst!slotwithothersep={$\<separator\>$}!
+ \mylst!- with other sep={$\<separator\>$}! ,
+ \mylst!slot with other sep={$\<separator\>$}!
Adds a slot to the argument, separated
from any previous argument by \<separator\>.
\item
- \mylst!...withothersep={$\<separator\>$}! ,
- \mylst!dotswithothersep={$\<separator\>$}!
+ \mylst!... with other sep={$\<separator\>$}! ,
+ \mylst!dots with other sep={$\<separator\>$}!
Adds three dots to the argument, separated
from any previous argument by~\<separator\>.
@@ -5543,11 +5580,11 @@ class types:
\begin{lstlisting}
@\usercommand\<object\>@[@\<options\>@]{@\<argument\>@}
\end{lstlisting}
- \item \lstinline!Cohomology!:
+ \item \lstinline!Symbol!:
A new class is declared with the
syntax
\begin{lstlisting}
- \NewCohomologyClass@\usercommand\<Class\>@[@\<options\>@]
+ \NewSimpleClass@\usercommand\<Class\>@[@\<options\>@]
\end{lstlisting}
A new object is declared by
\begin{lstlisting}
@@ -5555,9 +5592,9 @@ class types:
\end{lstlisting}
The syntax for this object is
\begin{lstlisting}
- @\usercommand\<object\>@[@\<options\>@]{@\<degree\>@}{@\<argument\>@}
+ @\usercommand\<object\>@[@\<options\>@]
\end{lstlisting}
- \item \lstinline!Symbol!:
+ \item \lstinline!Simple!:
A new class is declared with the
syntax
\begin{lstlisting}
@@ -5569,42 +5606,48 @@ class types:
\end{lstlisting}
The syntax for this object is
\begin{lstlisting}
- @\usercommand\<object\>@[@\<options\>@]
+ @\usercommand\<object\>@
\end{lstlisting}
- \item \lstinline!Delimiter!:
- A new class is declared with the syntax
+\end{itemize}
+
+Let me add that \semantex uses a very clear separation between the input syntax and the underlying machinery. Because of this, if the user needs a different kind of class type, it is not very hard to create one. You must simply open the source code of \semantex, find the class you want to modify, and then copy the definition of the command~\mylst!\New$\<Class type\>$Class! and modify it in whatever way you want.
+
+The last class type, called \lstinline!Simple!,
+is the class type of the class~\lstinline!\SemantexBaseObject!. This class is pretty useless as all it does is print its symbol, without allowing any keyval syntax. So you simply should not use it.
+
+There are also a few extra class types which are now deprecated, as their syntax will only cause confusion.
+They are still included for backwards compatibility, but I highly discourage their use:
+
+\begin{itemize}
+ \item \lstinline!Cohomology!:
+ A new class is declared with the
+ syntax
\begin{lstlisting}
- \NewDelimiterClass@\usercommand\<Class\>@[@\<options\>@]
+ \NewCohomologyClass@\usercommand\<Class\>@[@\<options\>@]
\end{lstlisting}
A new object is declared by
\begin{lstlisting}
- \NewObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<left bracket\>@}{@\<right bracket\>@}[@\<options\>@]
+ \NewObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<symbol\>@}[@\<options\>@]
\end{lstlisting}
The syntax for this object is
\begin{lstlisting}
- @\usercommand\<object\>@[@\<options\>@]{@\<argument\>@}
+ @\usercommand\<object\>@[@\<options\>@]{@\<degree\>@}{@\<argument\>@}
\end{lstlisting}
- \item \lstinline!Simple!:
- A new class is declared with the
- syntax
+ \item \lstinline!Delimiter!:
+ A new class is declared with the syntax
\begin{lstlisting}
- \NewSimpleClass@\usercommand\<Class\>@[@\<options\>@]
+ \NewDelimiterClass@\usercommand\<Class\>@[@\<options\>@]
\end{lstlisting}
A new object is declared by
\begin{lstlisting}
- \NewObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<symbol\>@}[@\<options\>@]
+ \NewObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<left bracket\>@}{@\<right bracket\>@}[@\<options\>@]
\end{lstlisting}
The syntax for this object is
\begin{lstlisting}
- @\usercommand\<object\>@
+ @\usercommand\<object\>@[@\<options\>@]{@\<argument\>@}
\end{lstlisting}
\end{itemize}
-Let me add that \semantex uses a very clear separation between the input syntax and the underlying machinery. Because of this, if the user needs a different kind of class type, it is not very hard to create one. You must simply open the source code of \semantex, find the class you want to modify, and then copy the definition of the command~\mylst!\New$\<Class type\>$Class! and modify it in whatever way you want.
-
-The last class type, called \lstinline!Simple!,
-is the class type of the class~\lstinline!\SemantexBaseObject!. This class is pretty useless as all it does is print its symbol, without allowing any keyval syntax. So you simply should not use it.
-
\section{The predefined data}
By default, the following data are defined for each class or object and are accessible via
@@ -5620,74 +5663,69 @@ the programming keys and commands:
(token list):
the name of the output class.
\item
- \mylst!outputoptions!
+ \mylst!output options!
(token list):
the output options, i.e.~the options to be passed to the output class.
\item
- \mylst!parseoptions!
- (token list):
- the parse options, i.e.~the options that are invoked
- during the parse routine.
- \item
- \mylst!mathclass!
+ \mylst!math class!
(token list):
the \TeX\ math class command that the final output
is evnetually wrapped around;
the intended use of this is the \TeX\ commands
\lstinline!\mathord!, \lstinline!\mathop!, \lstinline!\mathbin!, \lstinline!\mathrel!, \lstinline!\mathopen!, \lstinline!\mathclose!, and~\lstinline!\mathpunct!.
\item
- \lstinline!heightphantom!
+ \lstinline!height phantom!
(token list):
the height phantom that is used
for calculating the height of left indices.
\item
- \lstinline!slantingphantom!
+ \lstinline!slanting phantom!
(token list):
the slanting phantom that is used for
calculating the slanting of left indices.
\item
- \lstinline!parsize!
+ \lstinline!par size!
(token list):
the size of the argument parentheses.
Here, the value~\lstinline!normal! means normal size
parentheses,
\lstinline!auto! and~\lstinline!*!
- mean auto-scaled parentheses using~\lstinline!\left...\right!.
+ mean auto-scaled parentheses using~\lstinline!\left ...\right!.
If another value is received, that value
is used for the parenthesis size,
so the intended values are~\lstinline!\big!, \lstinline!\Big!,
\lstinline!\bigg!,~\lstinline!\Bigg!.
The default value is \lstinline!normal!.
\item
- \lstinline!leftpar!
+ \lstinline!left par!
(token list):
the left argument parenthesis;
the default value is~\lstinline!(!.
\item
- \lstinline!rightpar!
+ \lstinline!right par!
(token list):
the right argument parenthesis;
the default value is~\lstinline!)!.
\item
- \lstinline!sparsize!
+ \lstinline!spar size!
(token list):
the size of the symbol parentheses (for use with the \lstinline!spar!~routine).
Here, the value~\lstinline!normal! means normal size
parentheses,
\lstinline!auto! and~\lstinline!*!
- mean auto-scaled parentheses using~\lstinline!\left...\right!.
+ mean auto-scaled parentheses using~\lstinline!\left ...\right!.
If another value is received, that value
is used for the parenthesis size,
so the intended values are~\lstinline!\big!, \lstinline!\Big!,
\lstinline!\bigg!,~\lstinline!\Bigg!.
The default value is \lstinline!normal!.
\item
- \lstinline!leftspar!
+ \lstinline!left spar!
(token list):
the left symbol parenthesis (for use with the \lstinline!spar!~routine);
the default value is~\lstinline!(!.
\item
- \lstinline!rightspar!
+ \lstinline!right spar!
(token list):
the right symbol parenthesis (for use with the \lstinline!spar!~routine);
the default value is~\lstinline!)!.
@@ -5696,25 +5734,25 @@ the programming keys and commands:
(token list):
the argument.
\item
- \lstinline!prearg!
+ \lstinline!pre arg!
(token list):
to be printed in front of the argument, if the argument is non-empty.
\item
- \lstinline!postarg!
+ \lstinline!post arg!
(token list):
to be printed after the argument, if the argument is non-empty.
\item
- \lstinline!argsep!
+ \lstinline!arg sep!
(token list):
the argument separator;
comma by default.
\item
- \lstinline!argslot!
+ \lstinline!arg slot!
(token list):
the argument slot;
\lstinline!{-}!~by default.
\item
- \lstinline!argdots!
+ \lstinline!arg dots!
(token list):
the argument dots;
\lstinline!\dots!~by default.
@@ -5724,26 +5762,26 @@ the programming keys and commands:
(token list):
the upper index.
\item
- \lstinline!preupper!
+ \lstinline!pre upper!
(token list):
the pre-upper index, to be printed in front of the upper index,
if the upper index is non-empty.
\item
- \mylst!postupper!
+ \mylst!post upper!
(token list)
the post-upper index, to be printed after the upper index,
if the upper index is non-empty.
\item
- \mylst!uppersep!
+ \mylst!upper sep!
(token list):
the upper index separator;
comma by default.
\item
- \mylst!upperdots!
+ \mylst!upper dots!
(token list):
the upper dots; \lstinline!\dots!~by default.
\item
- \mylst!upperslot!
+ \mylst!upper slot!
(token list):
the upper slot; \lstinline!{-}!~by default.
% Lower index:
@@ -5752,86 +5790,86 @@ the programming keys and commands:
(token list):
the lower index.
\item
- \lstinline!prelower!
+ \lstinline!pre lower!
(token list):
the pre-lower index, to be printed in front of the lower index,
if the lower index is non-empty.
\item
- \mylst!postlower!
+ \mylst!post lower!
(token list)
the post-lower index, to be printed after the lower index,
if the lower index is non-empty.
\item
- \mylst!lowersep!
+ \mylst!lower sep!
(token list):
the lower index separator;
comma by default.
\item
- \mylst!lowerdots!
+ \mylst!lower dots!
(token list):
the lower dots; \lstinline!\dots!~by default.
\item
- \mylst!lowerslot!
+ \mylst!lower slot!
(token list):
the lower slot; \lstinline!{-}!~by default.
% Upper left index:
\item
- \lstinline!upperleft!
+ \lstinline!upper left!
(token list):
the upper left index.
\item
- \lstinline!preupperleft!
+ \lstinline!pre upper left!
(token list):
the pre-upper left index, to be printed in front of the upper left index,
if the upper left index is non-empty.
\item
- \mylst!postupperleft!
+ \mylst!post upper left!
(token list)
the post-upper left index, to be printed after the upper left index,
if the upper left index is non-empty.
\item
- \mylst!upperleftsep!
+ \mylst!upper left sep!
(token list):
the upper left index separator;
comma by default.
\item
- \mylst!upperleftdots!
+ \mylst!upper left dots!
(token list):
the upper left dots; \lstinline!\dots!~by default.
\item
- \mylst!upperleftslot!
+ \mylst!upper left slot!
(token list):
the upper left slot; \lstinline!{-}!~by default.
% Lower left index:
\item
- \lstinline!lowerleft!
+ \lstinline!lower left!
(token list):
the lower left index.
\item
- \lstinline!prelowerleft!
+ \lstinline!pre lower left!
(token list):
the pre-lower left index, to be printed in front of the lower left index,
if the lower left index is non-empty.
\item
- \mylst!postlowerleft!
+ \mylst!post lower left!
(token list)
the post-lower left index, to be printed after the lower left index,
if the lower left index is non-empty.
\item
- \mylst!lowerleftsep!
+ \mylst!lower left sep!
(token list):
the lower left index separator;
comma by default.
\item
- \mylst!lowerleftdots!
+ \mylst!lower left dots!
(token list):
the lower left dots; \lstinline!\dots!~by default.
\item
- \mylst!lowerleftslot!
+ \mylst!lower left slot!
(token list):
the lower left slot; \lstinline!{-}!~by default.
\item
- \mylst!uppergrading!
+ \mylst!upper grading!
(boolean):
whether or not to use
upper (cohomological) grading; true by default.
@@ -5840,55 +5878,55 @@ the programming keys and commands:
(boolean):
whether or not to use parentheses; true by default.
\item
- \mylst!flexpar!
+ \mylst!flex par!
(boolean):
- if \mylst!par! is set to false, setting \mylst!flexpar! to true
+ if \mylst!par! is set to false, setting \mylst!flex par! to true
will still print a pair of parentheses when there is more than one argument;
false by default.
\item
- \mylst!leftargument!
+ \mylst!left argument!
(boolean):
if true, the argument (and parentheses)
will be printed to the \emph{left} of the symbol;
false by default.
\item
- \mylst!nextargwithsep!
+ \mylst!next arg with sep!
(boolean):
if true, the next argument will have a separator printed in front of it.
\item
- \mylst!nextupperwithsep!
+ \mylst!next upper with sep!
(boolean):
If true, the next upper index will have a separator printed in front of it.
\item
- \mylst!nextlowerwithsep!
+ \mylst!next lower with sep!
(boolean):
If true, the next lower index will have a separator printed in front of it.
\item
- \mylst!nextupperleftwithsep!
+ \mylst!next upper left with sep!
(boolean):
If true, the next upper left index will have a separator printed in front of it.
\item
- \mylst!nextlowerleftwithsep!
+ \mylst!next lower left with sep!
(boolean):
If true, the next lower upper index will have a separator printed in front of it.
\item
- \mylst!numberofarguments!
+ \mylst!number of arguments!
(integer):
the number of arguments.
\item
- \mylst!numberofupperindices!
+ \mylst!number of upper indices!
(integer):
the number of upper indices.
\item
- \mylst!numberoflowerindices!
+ \mylst!number of lower indices!
(integer):
the number of lower indices.
\item
- \mylst!numberofupperleftindices!
+ \mylst!number of upper left indices!
(integer):
the number of upper left indices.
\item
- \mylst!numberoflowerindices!
+ \mylst!number of lower left indices!
(integer):
the number of lower left indices.
\end{itemize}
diff --git a/Master/texmf-dist/tex/latex/semantex/semantex.sty b/Master/texmf-dist/tex/latex/semantex/semantex.sty
index 7346d026b07..3e7e1422b25 100644
--- a/Master/texmf-dist/tex/latex/semantex/semantex.sty
+++ b/Master/texmf-dist/tex/latex/semantex/semantex.sty
@@ -1,11 +1,11 @@
\RequirePackage{xparse,l3keys2e,leftindex,semtex}
-\ProvidesExplPackage{semantex}{2020/11/05}{0.463}{}
+\ProvidesExplPackage{semantex}{2021/06/10}{0.500}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% SemanTeX -- semantic, keyval-based mathematics %
% https://ctan.org/pkg/semantex %
-% (C) 2020 Sebastian Ørsted %
+% (C) 2021 Sebastian Ørsted %
% sorsted@gmail.com %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -15,13 +15,13 @@
\keys_define:nn { semantex }
{
- keyvalparser .code:n = \cs_set_eq:NN \semantex_keyval_parse:NNn #1,
- keyvalparser .value_required:n = true,
- semtexfile .choice:,
- semtexfile / true .code:n = \semantex_turn_semtex_file_on:,
- semtexfile / false .code:n = \semantex_turn_semtex_file_off:,
- semtexfile / .code:n = \semantex_turn_semtex_file_on:,
- semtexfile / unknown .code:n = \msg_error:nnnn { semantex } { semantex_setup_key_value_not_found } { semtexfile } { #1 },
+ keyval~parser .code:n = \cs_set_eq:NN \semantex_keyval_parse:NNn #1,
+ keyval~parser .value_required:n = true,
+ semtex~file .choice:,
+ semtex~file / true .code:n = \semantex_turn_semtex_file_on:,
+ semtex~file / false .code:n = \semantex_turn_semtex_file_off:,
+ semtex~file / .code:n = \semantex_turn_semtex_file_on:,
+ semtex~file / unknown .code:n = \msg_error:nnnn { semantex } { semantex_setup_key_value_not_found } { semtexfile } { #1 },
unknown .code:n = \msg_error:nnx { semantex } { semantex_setup_key_not_found } { \l_keys_key_str }
}
@@ -512,7 +512,7 @@
\semantex_class_do_output:N #1
\semantex_class_set_symbol:Nn #1 { ##1 }
\semantex_class_set_keys:Nn #1 { ##2 }
- \semantex_class_set_degreedefault:Nn #1 { ##3 }
+ \semantex_class_set_degree_default:Nn #1 { ##3 }
\semantex_class_set_arg:Nn #1 { ##4 }
}
}
@@ -523,7 +523,7 @@
\semantex_class_do_output:N #1
\semantex_class_set_symbol:Nn #1 { ##1 }
\semantex_class_set_keys:Nn #1 { ##2 }
- \semantex_class_set_degreedefault:Nn #1 { ##3 }
+ \semantex_class_set_degree_default:Nn #1 { ##3 }
}
}
}
@@ -610,7 +610,7 @@
\semantex_render_class:Nn #1 {
\semantex_class_do_output:N #1
\semantex_class_set_symbol:Nn #1 { ##1 }
- \semantex_class_set_degreedefault:Nn #1 { ##3 }
+ \semantex_class_set_degree_default:Nn #1 { ##3 }
\semantex_class_set_arg:Nn #1 { ##4 }
}
}
@@ -620,7 +620,7 @@
\semantex_render_class:Nn #1 {
\semantex_class_do_output:N #1
\semantex_class_set_symbol:Nn #1 { ##1 }
- \semantex_class_set_degreedefault:Nn #1 { ##3 }
+ \semantex_class_set_degree_default:Nn #1 { ##3 }
}
}
}
@@ -718,7 +718,7 @@
\semantex_class_set_symbol:Nn #1 { ##2 }
##1
\semantex_class_set_keys:Nn #1 { ##3 }
- \semantex_class_set_degreedefault:Nn #1 { ##4 }
+ \semantex_class_set_degree_default:Nn #1 { ##4 }
\semantex_class_set_arg:Nn #1 { ##5 }
}
}
@@ -730,7 +730,7 @@
\semantex_class_set_symbol:Nn #1 { ##2 }
##1
\semantex_class_set_keys:Nn #1 { ##3 }
- \semantex_class_set_degreedefault:Nn #1 { ##4 }
+ \semantex_class_set_degree_default:Nn #1 { ##4 }
}
}
}
@@ -824,7 +824,7 @@
\semantex_class_do_output:N #1
\semantex_class_set_symbol:Nn #1 { ##2 }
##1
- \semantex_class_set_degreedefault:Nn #1 { ##4 }
+ \semantex_class_set_degree_default:Nn #1 { ##4 }
\semantex_class_set_arg:Nn #1 { ##5 }
}
}
@@ -835,7 +835,7 @@
\semantex_class_do_output:N #1
\semantex_class_set_symbol:Nn #1 { ##2 }
##1
- \semantex_class_set_degreedefault:Nn #1 { ##4 }
+ \semantex_class_set_degree_default:Nn #1 { ##4 }
}
}
}
@@ -944,7 +944,7 @@
\semantex_render_object:Nn ##1 {
\semantex_object_do_output:N ##1
\semantex_object_set_keys:Nn ##1 { ####1 }
- \semantex_object_set_degreedefault:Nn ##1 { ####2 }
+ \semantex_object_set_degree_default:Nn ##1 { ####2 }
\semantex_object_set_arg:Nn ##1 { ####3 }
}
}
@@ -954,7 +954,7 @@
\semantex_render_object:Nn ##1 {
\semantex_object_do_output:N ##1
\semantex_object_set_keys:Nn ##1 { ####1 }
- \semantex_object_set_degreedefault:Nn ##1 { ####2 }
+ \semantex_object_set_degree_default:Nn ##1 { ####2 }
}
}
}
@@ -1034,7 +1034,7 @@
{ ##1 { ####2 } { ####3 } }
\semantex_render_object:Nn ##1 {
\semantex_object_do_output:N ##1
- \semantex_object_set_degreedefault:Nn ##1 { ####2 }
+ \semantex_object_set_degree_default:Nn ##1 { ####2 }
\semantex_object_set_arg:Nn ##1 { ####3 }
}
}
@@ -1043,7 +1043,7 @@
{ ##1 { ####2 } }
\semantex_render_object:Nn ##1 {
\semantex_object_do_output:N ##1
- \semantex_object_set_degreedefault:Nn ##1 { ####2 }
+ \semantex_object_set_degree_default:Nn ##1 { ####2 }
}
}
}
@@ -1178,8 +1178,8 @@
% ##2 = symbol
% ##3 = options
\semantex_new_object:NNn #1 { ##1 }{
- \semantex_object_set_leftpar:Nn ##1 { ##2 }
- \semantex_object_set_rightpar:Nn ##1 { ##3 }
+ \semantex_object_set_left_par:Nn ##1 { ##2 }
+ \semantex_object_set_right_par:Nn ##1 { ##3 }
\semantex_object_set_keys:Nn ##1 { ##4 }
}
% creates the object with name ##1
@@ -1408,14 +1408,14 @@
\semantex_valuekey:nnn { \semantex_object_to_register:N #1 } { arg } { #2 }
}
-\cs_new_protected:Npn\semantex_class_set_degreedefault:Nn#1#2
+\cs_new_protected:Npn\semantex_class_set_degree_default:Nn#1#2
{
- \semantex_valuekey:nnn { \semantex_class_to_register:N #1 } { degreedefault } { #2 }
+ \semantex_valuekey:nnn { \semantex_class_to_register:N #1 } { degree~default } { #2 }
}
-\cs_new_protected:Npn\semantex_object_set_degreedefault:Nn#1#2
+\cs_new_protected:Npn\semantex_object_set_degree_default:Nn#1#2
{
- \semantex_valuekey:nnn { \semantex_object_to_register:N #1 } { degreedefault } { #2 }
+ \semantex_valuekey:nnn { \semantex_object_to_register:N #1 } { degree~default } { #2 }
}
\cs_new_protected:Npn\semantex_class_use_bullet:N#1
@@ -1438,24 +1438,24 @@
\semantex_singlekey:nn { \semantex_object_to_register:N #1 } { * }
}
-\cs_new_protected:Npn\semantex_class_set_leftpar:Nn#1#2
+\cs_new_protected:Npn\semantex_class_set_left_par:Nn#1#2
{
- \semantex_data_tl_set:nnn { \semantex_class_to_register:N #1 } { leftpar } { #2 }
+ \semantex_data_tl_set:nnn { \semantex_class_to_register:N #1 } { left~par } { #2 }
}
-\cs_new_protected:Npn\semantex_object_set_leftpar:Nn#1#2
+\cs_new_protected:Npn\semantex_object_set_left_par:Nn#1#2
{
- \semantex_data_tl_set:nnn { \semantex_object_to_register:N #1 } { leftpar } { #2 }
+ \semantex_data_tl_set:nnn { \semantex_object_to_register:N #1 } { left~par } { #2 }
}
-\cs_new_protected:Npn\semantex_class_set_rightpar:Nn#1#2
+\cs_new_protected:Npn\semantex_class_set_right_par:Nn#1#2
{
- \semantex_data_tl_set:nnn { \semantex_class_to_register:N #1 } { rightpar } { #2 }
+ \semantex_data_tl_set:nnn { \semantex_class_to_register:N #1 } { right~par } { #2 }
}
-\cs_new_protected:Npn\semantex_object_set_rightpar:Nn#1#2
+\cs_new_protected:Npn\semantex_object_set_right_par:Nn#1#2
{
- \semantex_data_tl_set:nnn { \semantex_object_to_register:N #1 } { rightpar } { #2 }
+ \semantex_data_tl_set:nnn { \semantex_object_to_register:N #1 } { right~par } { #2 }
}
\cs_new_protected:Npn\semantex_object_set_class:Nn#1#2
@@ -1505,29 +1505,29 @@
\group_begin:
\cs_set:Nn\semantex_this: { #1 }
#2 % This is where keys can be set up
- \semantex_parse:n { #1 } % Run the "parse" routine, i.e. run the collection of code that the user has added via the key "parseoptions"
+ \semantex_singlekey:nn { #1 } { parse } % Run the "parse" routine, i.e. run the collection of code that the user has added via the key "parse options"
\semantex_data_bool_get:nnTF { #1 } { output } % Checks if the register is supposed to output
{
\semantex_inner_return:n { #1 }
\tl_set:Nx \l__semantex_render_output_class_temp_tl { \semantex_data_tl_get:nn { #1 } { output } } % The output class
- \exp_args:NNx\cs_set:Nn\l__semantex_render_outputoptions_temp_cs:n
- { \semantex_data_tl_get_exp_not:nn { #1 } { outputoptions } }
+ \exp_args:NNx\cs_set:Nn\l__semantex_render_output_options_temp_cs:n
+ { \semantex_data_tl_get_exp_not:nn { #1 } { output~options } }
% \cs_set:Nx did not work here, as it changes ##1 to #1, which we don't want.
- \tl_set:Nn\l__semantex_render_outputoptions_temp_tl
+ \tl_set:Nn\l__semantex_render_output_options_temp_tl
{
- \l__semantex_render_outputoptions_temp_cs:n
+ \l__semantex_render_output_options_temp_cs:n
}
- \tl_put_right:Nx \l__semantex_render_outputoptions_temp_tl
+ \tl_put_right:Nx \l__semantex_render_output_options_temp_tl
{
{ \l__semantex_render_output_class_temp_tl }
}
- \exp_args:NNo\tl_set:No \l__semantex_render_outputoptions_temp_tl
+ \exp_args:NNo\tl_set:No \l__semantex_render_output_options_temp_tl
{
- \l__semantex_render_outputoptions_temp_tl
+ \l__semantex_render_output_options_temp_tl
} % This was necessary, trust me.
- \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments } % Checks if more than one argument has been received, i.e. whether we want to render any argument
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~arguments } % Checks if more than one argument has been received, i.e. whether we want to render any argument
{
- \semantex_data_bool_get:nnTF { #1 } { leftargument } % Checks if left or right argument
+ \semantex_data_bool_get:nnTF { #1 } { left~argument } % Checks if left or right argument
{
\semantex_left_indices_pre_return:n { #1 }
\semantex_left_arg_pre_return:n { #1 }
@@ -1543,20 +1543,20 @@
% immediately pass options to it
{
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { upperputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } }
+ { upper~put~left } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { lowerputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } }
+ { lower~put~left } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { preupper } { \semantex_data_tl_get_exp_not:nn { #1 } { preupper } }
+ { pre~upper } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postupper } { \semantex_data_tl_get_exp_not:nn { #1 } { postupper } }
+ { post~upper } { \semantex_data_tl_get_exp_not:nn { #1 } { post~upper } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { prelower } { \semantex_data_tl_get_exp_not:nn { #1 } { prelower } }
+ { pre~lower } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postlower } { \semantex_data_tl_get_exp_not:nn { #1 } { postlower } }
+ { post~lower } { \semantex_data_tl_get_exp_not:nn { #1 } { post~lower } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { mathclass } { \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } }
- \exp_not:V \l__semantex_render_outputoptions_temp_tl
+ { math~class } { \semantex_data_tl_get_exp_not:nn { #1 } { math~class } }
+ \exp_not:V \l__semantex_render_output_options_temp_tl
% These are the options we pass to the output class so that it
% can eventually render it
}
@@ -1578,24 +1578,24 @@
% immediately pass options to it
{
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { upperleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { upperleft } }
+ { upper~left~put~right } { \semantex_data_tl_get_exp_not:nn { #1 } { upper~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { lowerleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } }
+ { lower~left~put~right } { \semantex_data_tl_get_exp_not:nn { #1 } { lower~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { preupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft } }
+ { pre~upper~left } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft } }
+ { post~upper~left } { \semantex_data_tl_get_exp_not:nn { #1 } { post~upper~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { prelowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } }
+ { pre~lower~left } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postlowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } }
+ { post~lower~left } { \semantex_data_tl_get_exp_not:nn { #1 } { post~lower~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { heightphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } }
+ { height~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { height~phantom } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { slantingphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom } }
+ { slanting~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slanting~phantom } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { mathclass } { \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } }
- \exp_not:V \l__semantex_render_outputoptions_temp_tl
+ { math~class } { \semantex_data_tl_get_exp_not:nn { #1 } { math~class } }
+ \exp_not:V \l__semantex_render_output_options_temp_tl
% These are the options we pass to the output class so that it
% can eventually render it
}
@@ -1616,36 +1616,36 @@
% immediately pass options to it
{
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { upperputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } }
+ { upper~put~left } { \semantex_data_tl_get_exp_not:nn { #1 } { upper } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { lowerputleft } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } }
+ { lower~put~left } { \semantex_data_tl_get_exp_not:nn { #1 } { lower } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { upperleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { upperleft } }
+ { upper~left~put~right } { \semantex_data_tl_get_exp_not:nn { #1 } { upper~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { lowerleftputright } { \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft } }
+ { lower~left~put~right } { \semantex_data_tl_get_exp_not:nn { #1 } { lower~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { preupper } { \semantex_data_tl_get_exp_not:nn { #1 } { preupper } }
+ { pre~upper } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postupper } { \semantex_data_tl_get_exp_not:nn { #1 } { postupper } }
+ { post~upper } { \semantex_data_tl_get_exp_not:nn { #1 } { post~upper } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { prelower } { \semantex_data_tl_get_exp_not:nn { #1 } { prelower } }
+ { pre~lower } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postlower } { \semantex_data_tl_get_exp_not:nn { #1 } { postlower } }
+ { post~lower } { \semantex_data_tl_get_exp_not:nn { #1 } { post~lower } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { preupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft } }
+ { pre~upper~left } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postupperleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft } }
+ { post~upper~left } { \semantex_data_tl_get_exp_not:nn { #1 } { post~upper~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { prelowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft } }
+ { pre~lower~left } { \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { postlowerleft } { \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft } }
+ { post~lower~left } { \semantex_data_tl_get_exp_not:nn { #1 } { post~lower~left } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { heightphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } }
+ { height~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { height~phantom } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { slantingphantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom } }
+ { slanting~phantom } { \semantex_data_tl_get_exp_not:nn { #1 } { slanting~phantom } }
\exp_not:N\semantex_base_object_valuekey:nnn { \l__semantex_render_output_class_temp_tl }
- { mathclass } { \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } }
- \exp_not:V \l__semantex_render_outputoptions_temp_tl
+ { math~class } { \semantex_data_tl_get_exp_not:nn { #1 } { math~class } }
+ \exp_not:V \l__semantex_render_output_options_temp_tl
% These are the options we pass to the output class so that it
% can eventually render it
}
@@ -1655,8 +1655,8 @@
}
{
\semantex_pre_return:n { #1 } % Performs the pre_return routine, i.e. adds all remaining indices and arguments to the symbol
- \tl_if_blank:xTF { \semantex_data_tl_get_exp_not:nn { #1 } { mathclass } }
- % Checks whether the mathclass register has been declared -- this is
+ \tl_if_blank:xTF { \semantex_data_tl_get_exp_not:nn { #1 } { math~class } }
+ % Checks whether the math~class register has been declared -- this is
% where you store \mathord, \mathbin, \mathrel, etc., if you want
% the object to be eventually wrapped in this.
{
@@ -1668,7 +1668,7 @@
{
\tl_set:Nx\l__semantex_render_temp_tl
{
- \semantex_data_tl_get_exp_not:nn { #1 } { mathclass }
+ \semantex_data_tl_get_exp_not:nn { #1 } { math~class }
{ \semantex_data_tl_get_exp_not:nn { #1 } { symbol } }
}
}
@@ -1760,43 +1760,43 @@
\cs_new_protected:Npn \semantex_parentheses_store:nN#1#2
{
- \semantex_data_tl_get_store:nnN { #1 } { parsize } \l__semantex_parentheses_store_temp_tl
+ \semantex_data_tl_get_store:nnN { #1 } { par~size } \l__semantex_parentheses_store_temp_tl
\str_case:VnF { \l__semantex_parentheses_store_temp_tl } % This is where \big,\Big, etc. go.
{
{ normal } {
\tl_set:Nx #2
{
\exp_not:N \SemantexMathOpen { }
- \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
- \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { left~par }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
- \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~arg }
\exp_not:N \SemantexMathClose { }
- \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
+ \semantex_data_tl_get_exp_not:nn { #1 } { right~par }
}
}
{ auto } {
\tl_set:Nx #2
{
\exp_not:N \SemantexMathOpenAuto
- \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
- \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { left~par }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
- \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~arg }
\exp_not:N \SemantexMathCloseAuto
- \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
+ \semantex_data_tl_get_exp_not:nn { #1 } { right~par }
}
}
{ * } {
\tl_set:Nx #2
{
\exp_not:N \SemantexMathOpenAuto
- \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
- \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { left~par }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
- \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~arg }
\exp_not:N \SemantexMathCloseAuto
- \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
+ \semantex_data_tl_get_exp_not:nn { #1 } { right~par }
}
}
}
@@ -1805,13 +1805,13 @@
{
\exp_not:N \SemantexMathOpen
\exp_not:V \l__semantex_parentheses_store_temp_tl
- \semantex_data_tl_get_exp_not:nn { #1 } { leftpar }
- \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { left~par }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
- \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~arg }
\exp_not:N \SemantexMathClose
\exp_not:V \l__semantex_parentheses_store_temp_tl
- \semantex_data_tl_get_exp_not:nn { #1 } { rightpar }
+ \semantex_data_tl_get_exp_not:nn { #1 } { right~par }
}
}
}
@@ -1826,9 +1826,9 @@
\tl_set:Nx#2
{
\exp_not:N\SemantexMathOpenNoPar
- \semantex_data_tl_get_exp_not:nn { #1 } { prearg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~arg }
\semantex_data_tl_get_exp_not:nn { #1 } { arg }
- \semantex_data_tl_get_exp_not:nn { #1 } { postarg }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~arg }
\exp_not:N\SemantexMathCloseNoPar
}
}
@@ -1921,14 +1921,14 @@
\cs_new_protected:Npn\semantex_inner_return:n#1
{
\semantex_inner_pre_return:n { #1 }
- \semantex_data_seq_clear:nn { #1 } { commands_sequence }
+ \semantex_data_seq_clear:nn { #1 } { commands~sequence }
}
\cs_new_protected:Npn\semantex_inner_pre_return:n#1
{
% This adds all of the commands added via the command key
% to the symbol
- \semantex_data_seq_get_store:nnN { #1 } { commands_sequence }
+ \semantex_data_seq_get_store:nnN { #1 } { commands~sequence }
\l__semantex_data_seq_commands_sequence_temp
\seq_map_inline:Nn \l__semantex_data_seq_commands_sequence_temp
{
@@ -1940,7 +1940,7 @@
}
}
}
- \semantex_data_seq_clear:nn { #1 } { commands_sequence }
+ \semantex_data_seq_clear:nn { #1 } { commands~sequence }
}
\cs_new_protected:Npn\semantex_right_return:n#1
@@ -1954,15 +1954,15 @@
{
\semantex_right_indices_pre_return:n { #1 }
\semantex_data_tl_clear:nn { #1 } { upper }
- \semantex_data_tl_clear:nn { #1 } { preupper }
- \semantex_data_tl_clear:nn { #1 } { postupper }
- \semantex_data_bool_set_false:nn { #1 } { nextupperwithsep }
- \semantex_data_int_clear:nn { #1 } { numberofupperindices }
+ \semantex_data_tl_clear:nn { #1 } { pre~upper }
+ \semantex_data_tl_clear:nn { #1 } { post~upper }
+ \semantex_data_bool_set_false:nn { #1 } { next~upper~with~sep }
+ \semantex_data_int_clear:nn { #1 } { number~of~upper~indices }
\semantex_data_tl_clear:nn { #1 } { lower }
- \semantex_data_tl_clear:nn { #1 } { prelower }
- \semantex_data_tl_clear:nn { #1 } { postlower }
- \semantex_data_bool_set_false:nn { #1 } { nextlowerwithsep }
- \semantex_data_int_clear:nn { #1 } { numberoflowerindices }
+ \semantex_data_tl_clear:nn { #1 } { pre~lower }
+ \semantex_data_tl_clear:nn { #1 } { post~lower }
+ \semantex_data_bool_set_false:nn { #1 } { next~lower~with~sep }
+ \semantex_data_int_clear:nn { #1 } { number~of~lower~indices }
}
\cs_new_protected:Npn\semantex_right_indices_pre_return:n#1
@@ -1978,28 +1978,28 @@
\cs_new_protected:Npn \_semantex_right_index_return_store:nN#1#2
{
\tl_set:Nn#2{}
- \semantex_data_int_if_positive:nnTF { #1 } { numberoflowerindices }
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~lower~indices }
{
\tl_put_right:Nx#2
{
\sb{
- \semantex_data_tl_get_exp_not:nn { #1 } { prelower }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower }
\semantex_data_tl_get_exp_not:nn { #1 } { lower }
- \semantex_data_tl_get_exp_not:nn { #1 } { postlower }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~lower }
}
}
}
{
% do nothing
}
- \semantex_data_int_if_positive:nnTF { #1 } { numberofupperindices }
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~upper~indices }
{
\tl_put_right:Nx#2
{
\sp{
- \semantex_data_tl_get_exp_not:nn { #1 } { preupper }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper }
\semantex_data_tl_get_exp_not:nn { #1 } { upper }
- \semantex_data_tl_get_exp_not:nn { #1 } { postupper }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~upper }
}
}
}
@@ -2018,21 +2018,21 @@
\cs_new_protected:Npn\semantex_left_index_return:n#1
{
\semantex_left_indices_pre_return:n { #1 }
- \semantex_data_tl_clear:nn { #1 } { upperleft }
- \semantex_data_tl_clear:nn { #1 } { preupperleft }
- \semantex_data_tl_clear:nn { #1 } { postupperleft }
- \semantex_data_bool_set_false:nn { #1 } { nextupperleftwithsep }
- \semantex_data_int_clear:nn { #1 } { numberofupperleftindices }
- \semantex_data_tl_clear:nn { #1 } { lowerleft }
- \semantex_data_tl_clear:nn { #1 } { prelowerleft }
- \semantex_data_tl_clear:nn { #1 } { postlowerleft }
- \semantex_data_bool_set_false:nn { #1 } { nextlowerleftwithsep }
- \semantex_data_int_clear:nn { #1 } { numberoflowerleftindices }
- \semantex_data_tl_set:nnx { #1 } { heightphantom }
+ \semantex_data_tl_clear:nn { #1 } { upper~left }
+ \semantex_data_tl_clear:nn { #1 } { pre~upper~left }
+ \semantex_data_tl_clear:nn { #1 } { post~upper~left }
+ \semantex_data_bool_set_false:nn { #1 } { next~upper~left~with~sep }
+ \semantex_data_int_clear:nn { #1 } { number~of~upper~left~indices }
+ \semantex_data_tl_clear:nn { #1 } { lower~left }
+ \semantex_data_tl_clear:nn { #1 } { pre~lower~left }
+ \semantex_data_tl_clear:nn { #1 } { post~lower~left }
+ \semantex_data_bool_set_false:nn { #1 } { next~lower~left~with~sep }
+ \semantex_data_int_clear:nn { #1 } { number~of~lower~left~indices }
+ \semantex_data_tl_set:nnx { #1 } { height~phantom }
{
\semantex_data_tl_get_exp_not:nn { #1 } { symbol }
}
- \semantex_data_tl_clear:nn { #1 } { slantingphantom }
+ \semantex_data_tl_clear:nn { #1 } { slanting~phantom }
}
\cs_new_protected:Npn\semantex_left_indices_pre_return:n#1
@@ -2048,27 +2048,27 @@
\cs_new_protected:Npn \_semantex_left_index_return_store:nN#1#2
{
\tl_set:Nn#2{}
- \semantex_data_int_if_positive:nnTF { #1 } { numberofupperleftindices }
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~upper~left~indices }
{
\tl_put_right:Nn #2 { \manualleftindex }
\tl_put_right:Nx #2
{
- { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } }
- { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom} }
+ { \semantex_data_tl_get_exp_not:nn { #1 } { height~phantom } }
+ { \semantex_data_tl_get_exp_not:nn { #1 } { slanting~phantom} }
{
- \semantex_data_tl_get_exp_not:nn { #1 } { preupperleft }
- \semantex_data_tl_get_exp_not:nn { #1 } { upperleft }
- \semantex_data_tl_get_exp_not:nn { #1 } { postupperleft }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~upper~left }
+ \semantex_data_tl_get_exp_not:nn { #1 } { upper~left }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~upper~left }
}
}
- \semantex_data_int_if_positive:nnTF { #1 } { numberoflowerleftindices }
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~lower~left~indices }
{
\tl_put_right:Nx#2
{
{
- \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft }
- \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft }
- \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower~left }
+ \semantex_data_tl_get_exp_not:nn { #1 } { lower~left }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~lower~left }
}
}
}
@@ -2080,18 +2080,18 @@
}
}
{
- \semantex_data_int_if_positive:nnTF { #1 } { numberoflowerleftindices }
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~lower~left~indices }
{
\tl_put_right:Nn #2 { \manualleftindex }
\tl_put_right:Nx #2
{
- { \semantex_data_tl_get_exp_not:nn { #1 } { heightphantom } }
- { \semantex_data_tl_get_exp_not:nn { #1 } { slantingphantom} }
+ { \semantex_data_tl_get_exp_not:nn { #1 } { height~phantom } }
+ { \semantex_data_tl_get_exp_not:nn { #1 } { slanting~phantom} }
{ }
{
- \semantex_data_tl_get_exp_not:nn { #1 } { prelowerleft }
- \semantex_data_tl_get_exp_not:nn { #1 } { lowerleft }
- \semantex_data_tl_get_exp_not:nn { #1 } { postlowerleft }
+ \semantex_data_tl_get_exp_not:nn { #1 } { pre~lower~left }
+ \semantex_data_tl_get_exp_not:nn { #1 } { lower~left }
+ \semantex_data_tl_get_exp_not:nn { #1 } { post~lower~left }
}
}
}
@@ -2103,7 +2103,7 @@
\cs_new_protected:Npn\semantex_right_arg_return:n#1
{
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ \semantex_data_bool_get:nnTF { #1 } { left~argument }
{
% do nothing
}
@@ -2115,16 +2115,16 @@
\l__semantex_rightreturn_arg_temp
}
\semantex_data_tl_clear:nn { #1 } { arg }
- \semantex_data_tl_clear:nn { #1 } { prearg }
- \semantex_data_tl_clear:nn { #1 } { postarg }
- \semantex_data_int_clear:nn { #1 } { numberofarguments }
- \semantex_data_bool_set_false:nn { #1 } { nextargwithsep }
+ \semantex_data_tl_clear:nn { #1 } { pre~arg }
+ \semantex_data_tl_clear:nn { #1 } { post~arg }
+ \semantex_data_int_clear:nn { #1 } { number~of~arguments }
+ \semantex_data_bool_set_false:nn { #1 } { next~arg~with~sep }
}
}
\cs_new_protected:Npn\semantex_right_arg_pre_return:n#1
{
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ \semantex_data_bool_get:nnTF { #1 } { left~argument }
{
% do nothing
}
@@ -2140,7 +2140,7 @@
\cs_new_protected:Npn\semantex_left_arg_return:n#1
{
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ \semantex_data_bool_get:nnTF { #1 } { left~argument }
{
\_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp
\semantex_data_tl_put_left:nnx { #1 } { symbol }
@@ -2148,10 +2148,10 @@
\exp_not:V \l__semantex_leftreturn_arg_temp
}
\semantex_data_tl_clear:nn { #1 } { arg }
- \semantex_data_tl_clear:nn { #1 } { prearg }
- \semantex_data_tl_clear:nn { #1 } { postarg }
- \semantex_data_int_clear:nn { #1 } { numberofarguments }
- \semantex_data_bool_set_false:nn { #1 } { nextargwithsep }
+ \semantex_data_tl_clear:nn { #1 } { pre~arg }
+ \semantex_data_tl_clear:nn { #1 } { post~arg }
+ \semantex_data_int_clear:nn { #1 } { number~of~arguments }
+ \semantex_data_bool_set_false:nn { #1 } { next~arg~with~sep }
}
{
% do nothing
@@ -2160,7 +2160,7 @@
\cs_new_protected:Npn\semantex_left_arg_pre_return:n#1
{
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ \semantex_data_bool_get:nnTF { #1 } { left~argument }
{
\_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp
\semantex_data_tl_put_left:nnx { #1 } { symbol }
@@ -2177,15 +2177,15 @@
{
\semantex_arg_pre_return:n { #1 }
\semantex_data_tl_clear:nn { #1 } { arg }
- \semantex_data_tl_clear:nn { #1 } { prearg }
- \semantex_data_tl_clear:nn { #1 } { postarg }
- \semantex_data_int_clear:nn { #1 } { numberofarguments }
- \semantex_data_bool_set_false:nn { #1 } { nextargwithsep }
+ \semantex_data_tl_clear:nn { #1 } { pre~arg }
+ \semantex_data_tl_clear:nn { #1 } { post~arg }
+ \semantex_data_int_clear:nn { #1 } { number~of~arguments }
+ \semantex_data_bool_set_false:nn { #1 } { next~arg~with~sep }
}
\cs_new_protected:Npn\semantex_arg_pre_return:n#1
{
- \semantex_data_bool_get:nnTF { #1 } { leftargument }
+ \semantex_data_bool_get:nnTF { #1 } { left~argument }
{
\_semantex_arg_return_store:nN { #1 } \l__semantex_leftreturn_arg_temp
\semantex_data_tl_put_left:nnx { #1 } { symbol }
@@ -2207,7 +2207,7 @@
{
\semantex_data_bool_get:nnTF { #1 } { par }
{
- \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments }
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~arguments }
{
\semantex_parentheses_store:nN { #1 } #2
}
@@ -2216,14 +2216,14 @@
}
}
{
- \semantex_data_bool_get:nnTF { #1 } { flexpar }
+ \semantex_data_bool_get:nnTF { #1 } { flex~par }
{
- \semantex_data_int_if_greater_than_one:nnTF { #1 } { numberofarguments }
+ \semantex_data_int_if_greater_than_one:nnTF { #1 } { number~of~arguments }
{
\semantex_parentheses_store:nN { #1 } #2
}
{
- \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments }
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~arguments }
{
\semantex_no_parentheses_store:nN { #1 } #2
}
@@ -2233,7 +2233,7 @@
}
}
{
- \semantex_data_int_if_positive:nnTF { #1 } { numberofarguments }
+ \semantex_data_int_if_positive:nnTF { #1 } { number~of~arguments }
{
\semantex_no_parentheses_store:nN { #1 } #2
}
@@ -2259,16 +2259,16 @@
\semantex_return:n { #1 }
\tl_if_blank:nTF { #2 }
{
- \semantex_data_tl_get_store:nnN { #1 } { sparsize }
- \l__semantex_spar_sparsize_temp_tl
+ \semantex_data_tl_get_store:nnN { #1 } { spar~size }
+ \l__semantex_spar_spar_size_temp_tl
}
{
- \tl_set:Nn \l__semantex_spar_sparsize_temp_tl { #2 }
+ \tl_set:Nn \l__semantex_spar_spar_size_temp_tl { #2 }
}
\__semantex_symbol_parentheses_store:xxxxN
- { \exp_not:V\l__semantex_spar_sparsize_temp_tl }
- { \semantex_data_tl_get_exp_not:nn { #1 } { leftspar } }
- { \semantex_data_tl_get_exp_not:nn { #1 } { rightspar } }
+ { \exp_not:V\l__semantex_spar_spar_size_temp_tl }
+ { \semantex_data_tl_get_exp_not:nn { #1 } { left~spar } }
+ { \semantex_data_tl_get_exp_not:nn { #1 } { right~spar } }
{ \semantex_data_tl_get_exp_not:nn { #1 } { symbol } }
\l__semantex_spar_temp_tl
\semantex_data_tl_set:nnx { #1 } { symbol }
@@ -2276,16 +2276,16 @@
\exp_not:V \l__semantex_spar_temp_tl
}
\semantex_spar_set_height_phantom_to_parentheses_size:nx { #1 }
- { \exp_not:V \l__semantex_spar_sparsize_temp_tl }
+ { \exp_not:V \l__semantex_spar_spar_size_temp_tl }
}
\cs_new_protected:Npn\semantex_other_spar:nnn#1#2#3
{
\semantex_return:n { #1 }
- \semantex_data_tl_get_store:nnN { #1 } { sparsize }
- \l__semantex_other_spar_sparsize_temp_tl
+ \semantex_data_tl_get_store:nnN { #1 } { spar~size }
+ \l__semantex_other_spar_spar_size_temp_tl
\__semantex_symbol_parentheses_store:xxxxN
- { \exp_not:V \l__semantex_other_spar_sparsize_temp_tl }
+ { \exp_not:V \l__semantex_other_spar_spar_size_temp_tl }
{ \exp_not:n { #2 } }
{ \exp_not:n { #3 } }
{ \semantex_data_tl_get_exp_not:nn { #1 } { symbol } }
@@ -2295,7 +2295,7 @@
\exp_not:V \l__semantex_other_spar_temp_tl
}
\semantex_spar_set_height_phantom_to_parentheses_size:nx { #1 }
- { \exp_not:V \l__semantex_other_spar_sparsize_temp_tl }
+ { \exp_not:V \l__semantex_other_spar_spar_size_temp_tl }
}
\cs_new_protected:Npn\semantex_other_spar_with_size:nnnn#1#2#3#4
@@ -2322,23 +2322,23 @@
\str_case:nnF { #2 }
{
{ normal } {
- \semantex_data_tl_set:nnn { #1 } { heightphantom } { \vert }
+ \semantex_data_tl_set:nnn { #1 } { height~phantom } { \vert }
}
{ auto } {
- \semantex_data_tl_set:nnx { #1 } { heightphantom }
+ \semantex_data_tl_set:nnx { #1 } { height~phantom }
{
\semantex_data_tl_get_exp_not:nn { #1 } { symbol }
}
}
{ * } {
- \semantex_data_tl_set:nnx { #1 } { heightphantom }
+ \semantex_data_tl_set:nnx { #1 } { height~phantom }
{
\semantex_data_tl_get_exp_not:nn { #1 } { symbol }
}
}
}
{
- \semantex_data_tl_set:nnx { #1 } { heightphantom }
+ \semantex_data_tl_set:nnx { #1 } { height~phantom }
{
\exp_not:n { #2 \vert }
}
@@ -3053,6 +3053,246 @@
\cs_generate_variant:Nn \__semantex_singlekey_x:nnn { fnn }
+\cs_new_protected:Npn\semantex_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } { ##1 } { ##2 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_singlekey_store:nnN#1#2#3
+{
+ % Stores the content of the singlekey
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } { ##1 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_singlekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_singlekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_two_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } { ##2 } { ##3 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_two_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_two_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_three_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } { ##2 } { ##3 } { ##4 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_three_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_three_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_four_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_four_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_four_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_five_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_five_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_five_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_six_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_six_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_six_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_seven_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_seven_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_seven_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_eight_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_eight_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_eight_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_nine_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_nine_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_nine_valuekey_store:nnN { fnN }
+
+
\cs_new_protected:Npn\semantex_arg_valuekey:nnn#1#2#3
{
% Takes care of argument valuekeys,
@@ -3146,12 +3386,251 @@
{
% Sets the argument (no keyval interface allowed)
\semantex_data_tl_put_right:nnn { #1 } { arg } { #2 }
- \semantex_data_int_incr:nn { #1 } { numberofarguments }
- \semantex_data_bool_set_true:nn { #1 } { nextargwithsep }
+ \semantex_data_int_incr:nn { #1 } { number~of~arguments }
+ \semantex_data_bool_set_true:nn { #1 } { next~arg~with~sep }
}
\cs_generate_variant:Nn \semantex_arg_without_keyval:nn { nx }
+\cs_new_protected:Npn\semantex_arg_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } { ##1 } { ##2 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_singlekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument singlekey
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n } { ##1 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_singlekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_singlekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_two_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } { ##2 } { ##3 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_two_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_two_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_three_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } { ##2 } { ##3 } { ##4 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_three_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_three_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_four_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_four_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_four_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_five_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_five_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_five_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_six_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_six_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_six_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_seven_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_seven_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_seven_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_eight_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_eight_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_eight_valuekey_store:nnN { fnN }
+
+\cs_new_protected:Npn\semantex_arg_nine_valuekey_store:nnN#1#2#3
+{
+ % Stores the content of the argument valuekey
+ % i.e. keys taking a value
+ % #1 = register
+ % #2 = name of the key
+ % #3 = command to store the content in
+ \cs_if_exist:cTF { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+ {
+ \exp_args:NNNo \exp_args:NNo\tl_set:No#3 { \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 } }
+ }
+ {
+ \str_if_eq:nnTF { #1 } { class_SemantexBaseObject }
+ {
+ \tl_set:Nn #3 {}
+ }
+ {
+ \semantex_arg_nine_valuekey_store:fnN { \semantex_data_parent_get:n { #1 } } { #2 } #3
+ }
+ }
+}
+
+\cs_generate_variant:Nn \semantex_arg_nine_valuekey_store:nnN { fnN }
+
% NOW SOME KEYS FOR DEFINING NEW KEYS:
% First, we define the central commands for preprocessing keys
@@ -3183,6 +3662,7 @@
\semantex_singlekey:nn { #1 } { #2 }
}
}
+
\cs_new_protected:Npn\__semantex_preprocess_valuekey:nnnN#1#2#3#4
{
\str_case:nnF { #2 }
@@ -3190,46 +3670,61 @@
{ execute }{
\tl_put_right:Nn #4 { #3 }
}
- { setkeys }{
+ { set~keys }{
\semantex_preprocess_keys:nN { #3 } #4
}
- { keysset }{
+ { keys~set }{
\semantex_preprocess_keys:nN { #3 } #4
}
- { setkeysx }{
+ { set~keys~x }{
\semantex_preprocess_keys_x:nN { #3 } #4
}
- { keyssetx }{
+ { keys~set~x }{
\semantex_preprocess_keys_x:nN { #3 } #4
}
- { setargkeys }{
+ { set~arg~keys }{
\semantex_preprocess_arg_keys:nN { #3 } #4
}
- { argkeysset }{
+ { arg~keys~set }{
\semantex_preprocess_arg_keys:nN { #3 } #4
}
- { setargkeysx }{
+ { set~arg~keys~x }{
\semantex_preprocess_arg_keys_x:nN { #3 } #4
}
- { argkeyssetx }{
+ { arg~keys~set~x }{
\semantex_preprocess_arg_keys_x:nN { #3 } #4
}
- { setargsinglekeys }{
+ { set~arg~single~keys }{
\semantex_preprocess_arg_singlekeys:nN { #3 } #4
}
- { argsinglekeysset }{
+ { arg~single~keys~set }{
\semantex_preprocess_arg_singlekeys:nN { #3 } #4
}
- { setargsinglekeysx }{
+ { set~arg~single~keys~x }{
\semantex_preprocess_arg_singlekeys_x:nN { #3 } #4
}
- { argsinglekeyssetx }{
+ { arg~single~keys~set~x }{
\semantex_preprocess_arg_singlekeys_x:nN { #3 } #4
}
- { parseoptions }{
+ { parse~options }{
+ \tl_put_right:Nn#4
+ {
+ \semantex_append_singlekey_with_raw_code:nnn { #1 } { parse~code }
+ }
+ \group_begin:
+ \tl_set:Nn\l__semantex_preprocess_valuekey_keys_temp_tl {}
+ \semantex_preprocess_keys:nN { #3 } \l__semantex_preprocess_valuekey_keys_temp_tl
+ \exp_args:NNNx
+ \group_end:
+ \tl_put_right:Nn#4
+ {
+ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
+ }
+ }
+ { pre~parse~options }{
\tl_put_right:Nn#4
{
- \semantex_add_raw_commands_to_parse_options:nn { #1 }
+ \semantex_pre_append_singlekey_with_raw_code:nnn { #1 } { parse~code }
}
\group_begin:
\tl_set:Nn\l__semantex_preprocess_valuekey_keys_temp_tl {}
@@ -3241,21 +3736,21 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- { outputoptions }{
+ { output~options }{
\tl_put_right:Nn#4
{
- \semantex_add_raw_commands_to_output_options:nn { #1 }
+ \semantex_add_raw_code_to_output_options:nn { #1 }
}
\group_begin:
\tl_set:Nn\l__semantex_preprocess_valuekey_keys_pre_temp_tl {}
\semantex_preprocess_keys:nN { #3 } \l__semantex_preprocess_valuekey_keys_pre_temp_tl
- \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nn##1##2
+ \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9
{
\l__semantex_preprocess_valuekey_keys_pre_temp_tl
}
\tl_set:No\l__semantex_preprocess_valuekey_keys_temp_tl
{
- \l__semantex_preprocess_valuekey_keys_temp_cs:nn { ###1 } { ##2 }
+ \l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn { ###1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
}
\exp_args:NNNx
\group_end:
@@ -3264,8 +3759,31 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- { boolifTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_boolifTF_temp_cs:nTF##1##2##3
+ { pre~output~options }{
+ \tl_put_right:Nn#4
+ {
+ \semantex_add_raw_code_to_the_left_of_output_options:nn { #1 }
+ }
+ \group_begin:
+ \tl_set:Nn\l__semantex_preprocess_valuekey_keys_pre_temp_tl {}
+ \semantex_preprocess_keys:nN { #3 } \l__semantex_preprocess_valuekey_keys_pre_temp_tl
+ \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9
+ {
+ \l__semantex_preprocess_valuekey_keys_pre_temp_tl
+ }
+ \tl_set:No\l__semantex_preprocess_valuekey_keys_temp_tl
+ {
+ \l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn { ###1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+ }
+ \exp_args:NNNx
+ \group_end:
+ \tl_put_right:Nn#4
+ {
+ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
+ }
+ }
+ { bool~if~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_TF_temp_cs:nTF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3290,10 +3808,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_boolifTF_temp_cs:nTF #3
+ \l__semantex_preprocess_valuekey_bool_if_TF_temp_cs:nTF #3
}
- { boolifT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_boolifT_temp_cs:nT##1##2
+ { bool~if~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_T_temp_cs:nT##1##2
{
\tl_put_right:Nn#4
{
@@ -3310,10 +3828,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_boolifT_temp_cs:nT #3
+ \l__semantex_preprocess_valuekey_bool_if_T_temp_cs:nT #3
}
- { boolifF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_boolifF_temp_cs:nF##1##2
+ { bool~if~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_F_temp_cs:nF##1##2
{
\tl_put_right:Nn#4
{
@@ -3330,10 +3848,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_boolifF_temp_cs:nF #3
+ \l__semantex_preprocess_valuekey_bool_if_F_temp_cs:nF #3
}
- { ifblankTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankTF_temp_cs:nTF##1##2##3
+ { if~blank~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_TF_temp_cs:nTF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3358,10 +3876,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_ifblankTF_temp_cs:nTF #3
+ \l__semantex_preprocess_valuekey_if_blank_TF_temp_cs:nTF #3
}
- { ifblankT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankT_temp_cs:nT##1##2
+ { if~blank~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_T_temp_cs:nT##1##2
{
\tl_put_right:Nn#4
{
@@ -3378,10 +3896,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_ifblankT_temp_cs:nT #3
+ \l__semantex_preprocess_valuekey_if_blank_T_temp_cs:nT #3
}
- { ifblankF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankF_temp_cs:nF##1##2
+ { if~blank~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_F_temp_cs:nF##1##2
{
\tl_put_right:Nn#4
{
@@ -3398,10 +3916,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_ifblankF_temp_cs:nF #3
+ \l__semantex_preprocess_valuekey_if_blank_F_temp_cs:nF #3
}
- { strifeqTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqTF_temp_cs:nnTF##1##2##3##4
+ { str~if~eq~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_TF_temp_cs:nnTF##1##2##3##4
{
\tl_put_right:Nn#4
{
@@ -3426,10 +3944,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_strifeqTF_temp_cs:nnTF #3
+ \l__semantex_preprocess_valuekey_str_if_eq_TF_temp_cs:nnTF #3
}
- { strifeqT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqT_temp_cs:nnT##1##2##3
+ { str~if~eq~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_T_temp_cs:nnT##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3446,10 +3964,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_strifeqT_temp_cs:nnT #3
+ \l__semantex_preprocess_valuekey_str_if_eq_T_temp_cs:nnT #3
}
- { strifeqF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqF_temp_cs:nnF##1##2##3
+ { str~if~eq~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_F_temp_cs:nnF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3466,10 +3984,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_strifeqF_temp_cs:nnF #3
+ \l__semantex_preprocess_valuekey_str_if_eq_F_temp_cs:nnF #3
}
- { intifgreaterTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterTF_temp_cs:nnTF##1##2##3##4
+ { int~if~greater~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_TF_temp_cs:nnTF##1##2##3##4
{
\tl_put_right:Nn#4
{
@@ -3494,10 +4012,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intifgreaterTF_temp_cs:nnTF #3
+ \l__semantex_preprocess_valuekey_int_if_greater_TF_temp_cs:nnTF #3
}
- { intifgreaterT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterT_temp_cs:nnT##1##2##3
+ { int~if~greater~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_T_temp_cs:nnT##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3514,10 +4032,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_intifgreaterT_temp_cs:nnT #3
+ \l__semantex_preprocess_valuekey_int_if_greater_T_temp_cs:nnT #3
}
- { intifgreaterF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterF_temp_cs:nnF##1##2##3
+ { int~if~greater~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_F_temp_cs:nnF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3534,10 +4052,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intifgreaterF_temp_cs:nnF #3
+ \l__semantex_preprocess_valuekey_int_if_greater_F_temp_cs:nnF #3
}
- { intifeqTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqTF_temp_cs:nnTF##1##2##3##4
+ { int~if~eq~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_TF_temp_cs:nnTF##1##2##3##4
{
\tl_put_right:Nn#4
{
@@ -3562,10 +4080,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intifeqTF_temp_cs:nnTF #3
+ \l__semantex_preprocess_valuekey_int_if_eq_TF_temp_cs:nnTF #3
}
- { intifeqT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqT_temp_cs:nnT##1##2##3
+ { int~if~eq~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_T_temp_cs:nnT##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3582,10 +4100,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_intifeqT_temp_cs:nnT #3
+ \l__semantex_preprocess_valuekey_int_if_eq_T_temp_cs:nnT #3
}
- { intifeqF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqF_temp_cs:nnF##1##2##3
+ { int~if~eq~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_F_temp_cs:nnF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3602,10 +4120,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intifeqF_temp_cs:nnF #3
+ \l__semantex_preprocess_valuekey_int_if_eq_F_temp_cs:nnF #3
}
- { intiflessTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessTF_temp_cs:nnTF##1##2##3##4
+ { int~if~less~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_TF_temp_cs:nnTF##1##2##3##4
{
\tl_put_right:Nn#4
{
@@ -3630,10 +4148,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intiflessTF_temp_cs:nnTF #3
+ \l__semantex_preprocess_valuekey_int_if_less_TF_temp_cs:nnTF #3
}
- { intiflessT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessT_temp_cs:nnT##1##2##3
+ { int~if~less~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_T_temp_cs:nnT##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3650,10 +4168,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_intiflessT_temp_cs:nnT #3
+ \l__semantex_preprocess_valuekey_int_if_less_T_temp_cs:nnT #3
}
- { intiflessF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessF_temp_cs:nnF##1##2##3
+ { int~if~less~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_F_temp_cs:nnF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3670,7 +4188,7 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intiflessF_temp_cs:nnF #3
+ \l__semantex_preprocess_valuekey_int_if_less_F_temp_cs:nnF #3
}
}
{
@@ -3717,46 +4235,61 @@
#3
}
}
- { setkeys }{
+ { set~keys }{
\semantex_preprocess_keys:nN { #3 } #4
}
- { keysset }{
+ { keys~set }{
\semantex_preprocess_keys:nN { #3 } #4
}
- { setkeysx }{
+ { set~keys~x }{
\semantex_preprocess_keys_x:nN { #3 } #4
}
- { keyssetx }{
+ { keys~set~x }{
\semantex_preprocess_keys_x:nN { #3 } #4
}
- { setargkeys }{
+ { set~arg~keys }{
\semantex_preprocess_arg_keys:nN { #3 } #4
}
- { argkeysset }{
+ { arg~keys~set }{
\semantex_preprocess_arg_keys:nN { #3 } #4
}
- { setargkeysx }{
+ { set~arg~keys~x }{
\semantex_preprocess_arg_keys_x:nN { #3 } #4
}
- { argkeyssetx }{
+ { arg~keys~set~x }{
\semantex_preprocess_arg_keys_x:nN { #3 } #4
}
- { setargsinglekeys }{
+ { set~arg~single~keys }{
\semantex_preprocess_arg_singlekeys:nN { #3 } #4
}
- { argsinglekeysset }{
+ { arg~single~keys~set }{
\semantex_preprocess_arg_singlekeys:nN { #3 } #4
}
- { setargsinglekeysx }{
+ { set~arg~single~keys~x }{
\semantex_preprocess_arg_singlekeys_x:nN { #3 } #4
}
- { argsinglekeyssetx }{
+ { arg~single~keys~set~x }{
\semantex_preprocess_arg_singlekeys_x:nN { #3 } #4
}
- { parseoptions }{
+ { parse~options }{
+ \tl_put_right:Nn#4
+ {
+ \semantex_append_singlekey_with_raw_code:nnn { #1 } { parse~code }
+ }
+ \group_begin:
+ \tl_set:Nn\l__semantex_preprocess_valuekey_keys_temp_tl {}
+ \semantex_preprocess_keys_x:nN { #3 } \l__semantex_preprocess_valuekey_keys_temp_tl
+ \exp_args:NNNx
+ \group_end:
+ \tl_put_right:Nn#4
+ {
+ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
+ }
+ }
+ { pre~parse~options }{
\tl_put_right:Nn#4
{
- \semantex_add_raw_commands_to_parse_options:nn { #1 }
+ \semantex_pre_append_singlekey_with_raw_code:nnn { #1 } { parse~code }
}
\group_begin:
\tl_set:Nn\l__semantex_preprocess_valuekey_keys_temp_tl {}
@@ -3768,21 +4301,44 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- { outputoptions }{
+ { output~options }{
+ \tl_put_right:Nn#4
+ {
+ \semantex_add_raw_code_to_output_options:nn { #1 }
+ }
+ \group_begin:
+ \tl_set:Nn\l__semantex_preprocess_valuekey_keys_pre_temp_tl {}
+ \semantex_preprocess_keys_x:nN { #3 } \l__semantex_preprocess_valuekey_keys_pre_temp_tl
+ \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9
+ {
+ \l__semantex_preprocess_valuekey_keys_pre_temp_tl
+ }
+ \tl_set:No\l__semantex_preprocess_valuekey_keys_temp_tl
+ {
+ \l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn { ###1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+ }
+ \exp_args:NNNx
+ \group_end:
+ \tl_put_right:Nn#4
+ {
+ { \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
+ }
+ }
+ { pre~output~options }{
\tl_put_right:Nn#4
{
- \semantex_add_raw_commands_to_output_options:nn { #1 }
+ \semantex_add_raw_code_to_the_left_of_output_options:nn { #1 }
}
\group_begin:
\tl_set:Nn\l__semantex_preprocess_valuekey_keys_pre_temp_tl {}
\semantex_preprocess_keys_x:nN { #3 } \l__semantex_preprocess_valuekey_keys_pre_temp_tl
- \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nn##1##2
+ \cs_set:Npo\l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9
{
\l__semantex_preprocess_valuekey_keys_pre_temp_tl
}
\tl_set:No\l__semantex_preprocess_valuekey_keys_temp_tl
{
- \l__semantex_preprocess_valuekey_keys_temp_cs:nn { ###1 } { ##2 }
+ \l__semantex_preprocess_valuekey_keys_temp_cs:nnnnnnnnn { ###1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
}
\exp_args:NNNx
\group_end:
@@ -3791,8 +4347,8 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- { boolifTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_boolifTF_temp_cs:nTF##1##2##3
+ { bool~if~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_TF_temp_cs:nTF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3817,10 +4373,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_boolifTF_temp_cs:nTF #3
+ \l__semantex_preprocess_valuekey_bool_if_TF_temp_cs:nTF #3
}
- { boolifT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_boolifT_temp_cs:nT##1##2
+ { bool~if~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_T_temp_cs:nT##1##2
{
\tl_put_right:Nn#4
{
@@ -3837,10 +4393,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_boolifT_temp_cs:nT #3
+ \l__semantex_preprocess_valuekey_bool_if_T_temp_cs:nT #3
}
- { boolifF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_boolifF_temp_cs:nF##1##2
+ { bool~if~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_bool_if_F_temp_cs:nF##1##2
{
\tl_put_right:Nn#4
{
@@ -3857,10 +4413,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_boolifF_temp_cs:nF #3
+ \l__semantex_preprocess_valuekey_bool_if_F_temp_cs:nF #3
}
- { ifblankTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankTF_temp_cs:nTF##1##2##3
+ { if~blank~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_TF_temp_cs:nTF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3885,10 +4441,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_ifblankTF_temp_cs:nTF #3
+ \l__semantex_preprocess_valuekey_if_blank_TF_temp_cs:nTF #3
}
- { ifblankT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankT_temp_cs:nT##1##2
+ { if~blank~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_T_temp_cs:nT##1##2
{
\tl_put_right:Nn#4
{
@@ -3905,10 +4461,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_ifblankT_temp_cs:nT #3
+ \l__semantex_preprocess_valuekey_if_blank_T_temp_cs:nT #3
}
- { ifblankF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_ifblankF_temp_cs:nF##1##2
+ { if~blank~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_if_blank_F_temp_cs:nF##1##2
{
\tl_put_right:Nn#4
{
@@ -3925,10 +4481,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_ifblankF_temp_cs:nF #3
+ \l__semantex_preprocess_valuekey_if_blank_F_temp_cs:nF #3
}
- { strifeqTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqTF_temp_cs:nnTF##1##2##3##4
+ { str~if~eq~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_TF_temp_cs:nnTF##1##2##3##4
{
\tl_put_right:Nn#4
{
@@ -3953,10 +4509,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_strifeqTF_temp_cs:nnTF #3
+ \l__semantex_preprocess_valuekey_str_if_eq_TF_temp_cs:nnTF #3
}
- { strifeqT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqT_temp_cs:nnT##1##2##3
+ { str~if~eq~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_T_temp_cs:nnT##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3973,10 +4529,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_strifeqT_temp_cs:nnT #3
+ \l__semantex_preprocess_valuekey_str_if_eq_T_temp_cs:nnT #3
}
- { strifeqF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_strifeqF_temp_cs:nnF##1##2##3
+ { str~if~eq~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_str_if_eq_F_temp_cs:nnF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -3993,10 +4549,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_strifeqF_temp_cs:nnF #3
+ \l__semantex_preprocess_valuekey_str_if_eq_F_temp_cs:nnF #3
}
- { intifgreaterTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterTF_temp_cs:nnTF##1##2##3##4
+ { int~if~greater~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_TF_temp_cs:nnTF##1##2##3##4
{
\tl_put_right:Nn#4
{
@@ -4021,10 +4577,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intifgreaterTF_temp_cs:nnTF #3
+ \l__semantex_preprocess_valuekey_int_if_greater_TF_temp_cs:nnTF #3
}
- { intifgreaterT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterT_temp_cs:nnT##1##2##3
+ { int~if~greater~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_T_temp_cs:nnT##1##2##3
{
\tl_put_right:Nn#4
{
@@ -4041,10 +4597,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_intifgreaterT_temp_cs:nnT #3
+ \l__semantex_preprocess_valuekey_int_if_greater_T_temp_cs:nnT #3
}
- { intifgreaterF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifgreaterF_temp_cs:nnF##1##2##3
+ { int~if~greater~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_greater_F_temp_cs:nnF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -4061,10 +4617,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intifgreaterF_temp_cs:nnF #3
+ \l__semantex_preprocess_valuekey_int_if_greater_F_temp_cs:nnF #3
}
- { intifeqTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqTF_temp_cs:nnTF##1##2##3##4
+ { int~if~eq~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_TF_temp_cs:nnTF##1##2##3##4
{
\tl_put_right:Nn#4
{
@@ -4089,10 +4645,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intifeqTF_temp_cs:nnTF #3
+ \l__semantex_preprocess_valuekey_int_if_eq_TF_temp_cs:nnTF #3
}
- { intifeqT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqT_temp_cs:nnT##1##2##3
+ { int~if~eq~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_T_temp_cs:nnT##1##2##3
{
\tl_put_right:Nn#4
{
@@ -4109,10 +4665,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_intifeqT_temp_cs:nnT #3
+ \l__semantex_preprocess_valuekey_int_if_eq_T_temp_cs:nnT #3
}
- { intifeqF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intifeqF_temp_cs:nnF##1##2##3
+ { int~if~eq~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_eq_F_temp_cs:nnF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -4129,10 +4685,10 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intifeqF_temp_cs:nnF #3
+ \l__semantex_preprocess_valuekey_int_if_eq_F_temp_cs:nnF #3
}
- { intiflessTF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessTF_temp_cs:nnTF##1##2##3##4
+ { int~if~less~TF }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_TF_temp_cs:nnTF##1##2##3##4
{
\tl_put_right:Nn#4
{
@@ -4157,10 +4713,10 @@
{ \exp_not:V \l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intiflessTF_temp_cs:nnTF #3
+ \l__semantex_preprocess_valuekey_int_if_less_TF_temp_cs:nnTF #3
}
- { intiflessT }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessT_temp_cs:nnT##1##2##3
+ { int~if~less~T }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_T_temp_cs:nnT##1##2##3
{
\tl_put_right:Nn#4
{
@@ -4177,10 +4733,10 @@
{ }
}
}
- \l__semantex_preprocess_valuekey_intiflessT_temp_cs:nnT #3
+ \l__semantex_preprocess_valuekey_int_if_less_T_temp_cs:nnT #3
}
- { intiflessF }{
- \cs_set:Npn \l__semantex_preprocess_valuekey_intiflessF_temp_cs:nnF##1##2##3
+ { int~if~less~F }{
+ \cs_set:Npn \l__semantex_preprocess_valuekey_int_if_less_F_temp_cs:nnF##1##2##3
{
\tl_put_right:Nn#4
{
@@ -4197,7 +4753,7 @@
{ \exp_not:V\l__semantex_preprocess_valuekey_keys_temp_tl }
}
}
- \l__semantex_preprocess_valuekey_intiflessF_temp_cs:nnF #3
+ \l__semantex_preprocess_valuekey_int_if_less_F_temp_cs:nnF #3
}
}
{
@@ -4261,6 +4817,14 @@
}
}
+\cs_new_protected:Npn \semantex_clear_singlekey:nn#1#2
+{
+ \cs_set_protected:cpo { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n } ##1
+ {
+ % do nothing
+ }
+}
+
\cs_new_protected:Npn\semantex_remove_singlekey:nn#1#2
{
\cs_undefine:c { __semantex_data_cs_custom_singlekey_#1_#2:n }
@@ -4448,43 +5012,653 @@
}
}
-\cs_new_protected:Npn\semantex_define_nine_valuekeys:nn#1#2
+%\cs_new_protected:Npn\semantex_define_nine_valuekeys:nn#1#2
+%{
+% % Add new valuekeys with 9 values
+% \clist_map_inline:nn { #2 }{
+% \__semantex_nine_valuekey_format_auxiliary:nnn{#1}##1
+% }
+%}
+%
+%\cs_new_protected:Npn\__semantex_nine_valuekey_format_auxiliary:nnn#1#2#3%CHECK2
+%{
+% \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 }
+% \tl_set:Nn\l__semantex_nine_valuekey_auxiliary_temp_tl{}
+% \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_singlekey_temp_cs:n##1
+% {
+% \__semantex_preprocess_singlekey:nnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2
+% {
+% \__semantex_preprocess_valuekey:nnnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_nine_valuekey_auxiliary_temp_tl
+% }
+% \semantex_keyval_parse:NNo
+% \l__semantex_nine_valuekey_auxiliary_singlekey_temp_cs:n
+% \l__semantex_nine_valuekey_auxiliary_valuekey_temp_cs:nn
+% {
+% \l__semantex_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+% }
+% \cs_set_protected:cpo { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9
+% {
+% \l__semantex_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+% {
+% \tl_set:Nn \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 }
+% \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2
+% }
+%}
+
+
+
+\cs_new_protected:Npn\semantex_append_valuekeys:nn#1#2
+{
+ % Appends keys taking one value
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_valuekeys_format_auxiliary:nnn { #1 } ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_valuekeys_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_valuekeys_auxiliary_temp_cs:n##1 { #3 }
+ \tl_set:Nn \l__semantex_append_valuekeys_auxiliary_temp_tl {}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_append_valuekeys_auxiliary_temp_cs:n { ##2 }
+ } \l__semantex_append_valuekeys_auxiliary_temp_tl
+ \semantex_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_valuekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn }
+ {
+ \exp_not:V\l__semantex_append_valuekeys_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_valuekeys_auxiliary_temp_tl
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_valuekeys:nn#1#2
+{
+ % Pre-appends keys taking one value
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_valuekeys_format_auxiliary:nnn { #1 } ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_valuekeys_format_auxiliary:nnn#1#2#3
{
- % Add new valuekeys with 9 values
+ \cs_set:Npn\l__semantex_pre_append_valuekeys_auxiliary_temp_cs:n##1 { #3 }
+ \tl_set:Nn \l__semantex_pre_append_valuekeys_auxiliary_temp_tl {}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_valuekeys_auxiliary_temp_cs:n { ##2 }
+ } \l__semantex_pre_append_valuekeys_auxiliary_temp_tl
+ \semantex_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_valuekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn }
+ {
+ \exp_not:V\l__semantex_pre_append_valuekeys_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_valuekeys_auxiliary_original_temp_tl
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_singlekeys:nn#1#2
+{
+ % Appends keys taking no values
\clist_map_inline:nn { #2 }{
- \__semantex_nine_valuekey_format_auxiliary:nnn{#1}##1
+ \__semantex_append_singlekeys_format_auxiliary:nnn { #1 } ##1
}
}
-\cs_new_protected:Npn\__semantex_nine_valuekey_format_auxiliary:nnn#1#2#3
+\cs_new_protected:Npn \__semantex_append_singlekeys_format_auxiliary:nnn#1#2#3
{
- \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 }
- \tl_set:Nn\l__semantex_nine_valuekey_auxiliary_temp_tl{}
- \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_singlekey_temp_cs:n##1
+ \cs_set:Npn\l__semantex_append_singlekeys_auxiliary_temp_cs: { #3 }
+ \tl_set:Nn \l__semantex_append_singlekeys_auxiliary_temp_tl {}
+ \semantex_preprocess_keys:oN
{
- \__semantex_preprocess_singlekey:nnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_nine_valuekey_auxiliary_temp_tl
+ \l__semantex_append_singlekeys_auxiliary_temp_cs:
+ } \l__semantex_append_singlekeys_auxiliary_temp_tl
+ \semantex_singlekey_store:nnN { #1 } { #2 } \l__semantex_append_singlekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n }
+ {
+ \exp_not:V\l__semantex_append_singlekeys_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_singlekeys_auxiliary_temp_tl
}
- \cs_set:Npn\l__semantex_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2
+}
+
+\cs_new_protected:Npn \semantex_append_singlekey_with_raw_code:nnn#1#2#3
+{
+ % Appends the key #2 with the raw code #3
+ % #1 = register
+ % #2 = key
+ % #3 = raw code
+ \tl_set:Nn \l__semantex_add_raw_code_to_singlekey_auxiliary_temp_tl { #3 }
+ \semantex_singlekey_store:nnN { #1 } { #2 } \l__semantex_append_singlekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n }
{
- \__semantex_preprocess_valuekey:nnnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_nine_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_append_singlekeys_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_singlekeys_auxiliary_temp_tl
}
- \semantex_keyval_parse:NNo
- \l__semantex_nine_valuekey_auxiliary_singlekey_temp_cs:n
- \l__semantex_nine_valuekey_auxiliary_valuekey_temp_cs:nn
- {
- \l__semantex_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
- }
- \cs_set_protected:cpo { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9
+}
+
+\cs_new_protected:Npn \semantex_pre_append_singlekey_with_raw_code:nnn#1#2#3
+{
+ % Appends the key #2 with the raw code #3
+ % #1 = register
+ % #2 = key
+ % #3 = raw code
+ \tl_set:Nn \l__semantex_add_raw_code_to_singlekey_auxiliary_temp_tl { #3 }
+ \semantex_singlekey_store:nnN { #1 } { #2 } \l__semantex_append_singlekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n }
+ {
+ \exp_not:V\l__semantex_append_singlekeys_auxiliary_temp_tl
+ \exp_not:V\l__semantex_append_singlekeys_auxiliary_original_temp_tl
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_singlekeys:nn#1#2
+{
+ % Pre-appends keys taking no values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_singlekeys_format_auxiliary:nnn { #1 } ##1
+ }
+}
+
+\cs_new_protected:Npn \__semantex_pre_append_singlekeys_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_singlekeys_auxiliary_temp_cs: { #3 }
+ \tl_set:Nn \l__semantex_pre_append_singlekeys_auxiliary_temp_tl {}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_singlekeys_auxiliary_temp_cs:
+ } \l__semantex_pre_append_singlekeys_auxiliary_temp_tl
+ \semantex_singlekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_singlekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_singlekey_#1_\tl_trim_spaces:n{#2}:n }
+ {
+ \exp_not:V\l__semantex_pre_append_singlekeys_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_singlekeys_auxiliary_original_temp_tl
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_two_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 2 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_two_valuekey_format_auxiliary:nnn { #1 } ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_two_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 }
+ \tl_set:Nn\l__semantex_append_two_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_append_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 }
+ } \l__semantex_append_two_valuekey_auxiliary_temp_tl
+ \semantex_two_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_two_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn }
+ {
+ \exp_not:V\l__semantex_append_two_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_two_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_two_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 2 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_two_valuekey_format_auxiliary:nnn { #1 } ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_two_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_two_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 }
+ } \l__semantex_pre_append_two_valuekey_auxiliary_temp_tl
+ \semantex_two_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_two_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn }
+ {
+ \exp_not:V\l__semantex_pre_append_two_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_pre_append_two_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_three_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 3 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_three_valuekey_format_auxiliary:nnn {#1} ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_three_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 }
+ \tl_set:Nn\l__semantex_append_three_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_append_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 }
+ } \l__semantex_append_three_valuekey_auxiliary_temp_tl
+ \semantex_three_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_three_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn }
{
- \l__semantex_nine_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_append_three_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_three_valuekey_auxiliary_temp_tl
}
\cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
{
- \tl_set:Nn \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 }
- \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2
+ \use:c { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2
}
}
+\cs_new_protected:Npn\semantex_pre_append_three_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 3 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_three_valuekey_format_auxiliary:nnn {#1} ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_three_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_three_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 }
+ } \l__semantex_pre_append_three_valuekey_auxiliary_temp_tl
+ \semantex_three_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_three_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_three_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_three_valuekey_auxiliary_original_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_four_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 4 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_four_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_four_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 }
+ \tl_set:Nn\l__semantex_append_four_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_append_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 }
+ } \l__semantex_append_four_valuekey_auxiliary_temp_tl
+ \semantex_four_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_four_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn }
+ {
+ \exp_not:V\l__semantex_append_four_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_four_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_four_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 4 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_four_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_four_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_four_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 }
+ } \l__semantex_pre_append_four_valuekey_auxiliary_temp_tl
+ \semantex_four_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_four_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_four_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_four_valuekey_auxiliary_original_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_five_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 5 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_five_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_five_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 }
+ \tl_set:Nn\l__semantex_append_five_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_append_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 }
+ } \l__semantex_append_five_valuekey_auxiliary_temp_tl
+ \semantex_five_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_five_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn }
+ {
+ \exp_not:V\l__semantex_append_five_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_five_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_five_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 5 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_five_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_five_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_five_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 }
+ } \l__semantex_pre_append_five_valuekey_auxiliary_temp_tl
+ \semantex_five_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_five_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_five_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_five_valuekey_auxiliary_original_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_six_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 6 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_six_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_six_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 }
+ \tl_set:Nn\l__semantex_append_six_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_append_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 }
+ } \l__semantex_append_six_valuekey_auxiliary_temp_tl
+ \semantex_six_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_six_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn }
+ {
+ \exp_not:V\l__semantex_append_six_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_six_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_six_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 6 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_six_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_six_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_six_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 }
+ } \l__semantex_pre_append_six_valuekey_auxiliary_temp_tl
+ \semantex_six_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_six_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_six_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_pre_append_six_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_seven_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 7 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_seven_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_seven_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 }
+ \tl_set:Nn\l__semantex_append_seven_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_append_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 }
+ } \l__semantex_append_seven_valuekey_auxiliary_temp_tl
+ \semantex_seven_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_seven_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn }
+ {
+ \exp_not:V\l__semantex_append_seven_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_seven_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_seven_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 7 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_seven_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_seven_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_seven_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 }
+ } \l__semantex_pre_append_seven_valuekey_auxiliary_temp_tl
+ \semantex_seven_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_seven_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_seven_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_pre_append_seven_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_eight_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 8 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_eight_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_eight_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 }
+ \tl_set:Nn\l__semantex_append_eight_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_append_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+ } \l__semantex_append_eight_valuekey_auxiliary_temp_tl
+ \semantex_eight_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_eight_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+ {
+ \exp_not:V\l__semantex_append_eight_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_eight_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_eight_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 8 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_eight_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_eight_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_eight_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:oN
+ {
+ \l__semantex_pre_append_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+ } \l__semantex_pre_append_eight_valuekey_auxiliary_temp_tl
+ \semantex_eight_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_eight_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_eight_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_eight_valuekey_auxiliary_original_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2
+ }
+}
+
+%\cs_new_protected:Npn\semantex_append_nine_valuekeys:nn#1#2
+%{
+% % Appends valuekeys with 9 values
+% \clist_map_inline:nn { #2 }{
+% \__semantex_append_nine_valuekey_format_auxiliary:nnn{#1}##1
+% }
+%}
+%
+%\cs_new_protected:Npn\__semantex_append_nine_valuekey_format_auxiliary:nnn#1#2#3
+%{
+% \cs_set:Npn\l__semantex_append_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 }
+% \tl_set:Nn\l__semantex_append_nine_valuekey_auxiliary_temp_tl{}
+% \cs_set:Npn\l__semantex_append_nine_valuekey_auxiliary_singlekey_temp_cs:n##1
+% {
+% \__semantex_preprocess_singlekey:nnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_append_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set:Npn\l__semantex_append_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2
+% {
+% \__semantex_preprocess_valuekey:nnnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_append_nine_valuekey_auxiliary_temp_tl
+% }
+% \semantex_keyval_parse:NNo
+% \l__semantex_append_nine_valuekey_auxiliary_singlekey_temp_cs:n
+% \l__semantex_append_nine_valuekey_auxiliary_valuekey_temp_cs:nn
+% {
+% \l__semantex_append_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+% }
+% \semantex_nine_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_nine_valuekey_auxiliary_original_temp_tl
+% \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+% {
+% \exp_not:V\l__semantex_append_nine_valuekey_auxiliary_original_temp_tl
+% \exp_not:V\l__semantex_append_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+% {
+% \tl_set:Nn \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 }
+% \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2
+% }
+%}
+%
+%\cs_new_protected:Npn\semantex_pre_append_nine_valuekeys:nn#1#2
+%{
+% % Pre-appends valuekeys with 9 values
+% \clist_map_inline:nn { #2 }{
+% \__semantex_pre_append_nine_valuekey_format_auxiliary:nnn{#1}##1
+% }
+%}
+%
+%\cs_new_protected:Npn\__semantex_pre_append_nine_valuekey_format_auxiliary:nnn#1#2#3
+%{
+% \cs_set:Npn\l__semantex_pre_append_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 }
+% \tl_set:Nn\l__semantex_pre_append_nine_valuekey_auxiliary_temp_tl{}
+% \cs_set:Npn\l__semantex_pre_append_nine_valuekey_auxiliary_singlekey_temp_cs:n##1
+% {
+% \__semantex_preprocess_singlekey:nnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_pre_append_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set:Npn\l__semantex_pre_append_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2
+% {
+% \__semantex_preprocess_valuekey:nnnN { \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_pre_append_nine_valuekey_auxiliary_temp_tl
+% }
+% \semantex_keyval_parse:NNo
+% \l__semantex_pre_append_nine_valuekey_auxiliary_singlekey_temp_cs:n
+% \l__semantex_pre_append_nine_valuekey_auxiliary_valuekey_temp_cs:nn
+% {
+% \l__semantex_pre_append_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+% }
+% \semantex_nine_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_nine_valuekey_auxiliary_original_temp_tl
+% \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+% {
+% \exp_not:V\l__semantex_pre_append_nine_valuekey_auxiliary_temp_tl
+% \exp_not:V\l__semantex_pre_append_nine_valuekey_auxiliary_original_temp_tl
+% }
+% \cs_set_protected:cpn { __semantex_data_cs_custom_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+% {
+% \tl_set:Nn \__semantex_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 }
+% \use:c { __semantex_data_cs_custom_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2
+% }
+%}
+
% SETTING UP THE ARGUMENT KEYVAL INTERFACE
@@ -4525,7 +5699,7 @@
}
-\cs_new_protected:Npn\__semantex_preprocess_arg_valuekey:nnnN#1#2#3#4
+\cs_new_protected:Npn\__semantex_preprocess_arg_valuekey:nnnN#1#2#3#4%CHECK4
{
\str_case:nnF { #2 }
{
@@ -4535,40 +5709,40 @@
#3
}
}
- { setkeys }{
+ { set~keys }{
\semantex_preprocess_keys:nN { #3 } #4
}
- { keysset }{
+ { keys~set }{
\semantex_preprocess_keys:nN { #3 } #4
}
- { setkeysx }{
+ { set~keys~x }{
\semantex_preprocess_keys_x:nN { #3 } #4
}
- { keyssetx }{
+ { keys~set~x }{
\semantex_preprocess_keys_x:nN { #3 } #4
}
- { setargkeys }{
+ { set~arg~keys }{
\semantex_preprocess_arg_keys:nN { #3 } #4
}
- { argkeysset }{
+ { arg~keys~set }{
\semantex_preprocess_arg_keys:nN { #3 } #4
}
- { setargkeysx }{
+ { set~arg~keys~x }{
\semantex_preprocess_arg_keys_x:nN { #3 } #4
}
- { argkeyssetx }{
+ { arg~keys~set~x }{
\semantex_preprocess_arg_keys_x:nN { #3 } #4
}
- { setargsinglekeys }{
+ { set~arg~single~keys }{
\semantex_preprocess_arg_singlekeys:nN { #3 } #4
}
- { argsinglekeysset }{
+ { arg~single~keys~set }{
\semantex_preprocess_arg_singlekeys:nN { #3 } #4
}
- { setargsinglekeysx }{
+ { set~arg~single~keys~x }{
\semantex_preprocess_arg_singlekeys_x:nN { #3 } #4
}
- { argsinglekeyssetx }{
+ { arg~single~keys~set~x }{
\semantex_preprocess_arg_singlekeys_x:nN { #3 } #4
}
}
@@ -4626,40 +5800,40 @@
#3
}
}
- { setkeys }{
+ { set~keys }{
\semantex_preprocess_keys:nN { #3 } #4
}
- { keysset }{
+ { keys~set }{
\semantex_preprocess_keys:nN { #3 } #4
}
- { setkeysx }{
+ { set~keys~x }{
\semantex_preprocess_keys_x:nN { #3 } #4
}
- { keyssetx }{
+ { keys~set~x }{
\semantex_preprocess_keys_x:nN { #3 } #4
}
- { setargkeys }{
+ { set~arg~keys }{
\semantex_preprocess_arg_keys:nN { #3 } #4
}
- { argkeysset }{
+ { arg~keys~set }{
\semantex_preprocess_arg_keys:nN { #3 } #4
}
- { setargkeysx }{
+ { set~arg~keys~x }{
\semantex_preprocess_arg_keys_x:nN { #3 } #4
}
- { argkeyssetx }{
+ { arg~keys~set~x }{
\semantex_preprocess_arg_keys_x:nN { #3 } #4
}
- { setargsinglekeys }{
+ { set~arg~single~keys }{
\semantex_preprocess_arg_singlekeys:nN { #3 } #4
}
- { argsinglekeysset }{
+ { arg~single~keys~set }{
\semantex_preprocess_arg_singlekeys:nN { #3 } #4
}
- { setargsinglekeysx }{
+ { set~arg~single~keys~x }{
\semantex_preprocess_arg_singlekeys_x:nN { #3 } #4
}
- { argsinglekeyssetx }{
+ { arg~single~keys~set~x }{
\semantex_preprocess_arg_singlekeys_x:nN { #3 } #4
}
}
@@ -4757,11 +5931,11 @@
{
% Add new argument valuekeys with 3 values
\clist_map_inline:nn { #2 }{
- \__semantex_three_arg_valuekey_format_auxiliary:nnn{#1}##1
+ \__semantex_arg_three_valuekey_format_auxiliary:nnn{#1}##1
}
}
-\cs_new_protected:Npn\__semantex_three_arg_valuekey_format_auxiliary:nnn#1#2#3
+\cs_new_protected:Npn\__semantex_arg_three_valuekey_format_auxiliary:nnn#1#2#3
{
\cs_set:Npn\l__semantex_arg_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 }
\tl_set:Nn\l__semantex_arg_three_valuekey_auxiliary_temp_tl{}
@@ -4783,11 +5957,11 @@
{
% Add new argument valuekeys with 4 values
\clist_map_inline:nn { #2 }{
- \__semantex_four_arg_valuekey_format_auxiliary:nnn{#1}##1
+ \__semantex_arg_four_valuekey_format_auxiliary:nnn{#1}##1
}
}
-\cs_new_protected:Npn\__semantex_four_arg_valuekey_format_auxiliary:nnn#1#2#3
+\cs_new_protected:Npn\__semantex_arg_four_valuekey_format_auxiliary:nnn#1#2#3
{
\cs_set:Npn\l__semantex_arg_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 }
\tl_set:Nn\l__semantex_arg_four_valuekey_auxiliary_temp_tl{}
@@ -4809,11 +5983,11 @@
{
% Add new argument valuekeys with 5 values
\clist_map_inline:nn { #2 }{
- \__semantex_five_arg_valuekey_format_auxiliary:nnn{#1}##1
+ \__semantex_arg_five_valuekey_format_auxiliary:nnn{#1}##1
}
}
-\cs_new_protected:Npn\__semantex_five_arg_valuekey_format_auxiliary:nnn#1#2#3
+\cs_new_protected:Npn\__semantex_arg_five_valuekey_format_auxiliary:nnn#1#2#3
{
\cs_set:Npn\l__semantex_arg_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 }
\tl_set:Nn\l__semantex_arg_five_valuekey_auxiliary_temp_tl{}
@@ -4835,11 +6009,11 @@
{
% Add new argument valuekeys with 6 values
\clist_map_inline:nn { #2 }{
- \__semantex_six_arg_valuekey_format_auxiliary:nnn{#1}##1
+ \__semantex_arg_six_valuekey_format_auxiliary:nnn{#1}##1
}
}
-\cs_new_protected:Npn\__semantex_six_arg_valuekey_format_auxiliary:nnn#1#2#3
+\cs_new_protected:Npn\__semantex_arg_six_valuekey_format_auxiliary:nnn#1#2#3
{
\cs_set:Npn\l__semantex_arg_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 }
\tl_set:Nn\l__semantex_arg_six_valuekey_auxiliary_temp_tl{}
@@ -4861,11 +6035,11 @@
{
% Add new argument valuekeys with 7 values
\clist_map_inline:nn { #2 }{
- \__semantex_seven_arg_valuekey_format_auxiliary:nnn{#1}##1
+ \__semantex_arg_seven_valuekey_format_auxiliary:nnn{#1}##1
}
}
-\cs_new_protected:Npn\__semantex_seven_arg_valuekey_format_auxiliary:nnn#1#2#3
+\cs_new_protected:Npn\__semantex_arg_seven_valuekey_format_auxiliary:nnn#1#2#3
{
\cs_set:Npn\l__semantex_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 }
\tl_set:Nn\l__semantex_arg_seven_valuekey_auxiliary_temp_tl{}
@@ -4887,11 +6061,11 @@
{
% Add new argument valuekeys with 8 values
\clist_map_inline:nn { #2 }{
- \__semantex_eight_arg_valuekey_format_auxiliary:nnn{#1}##1
+ \__semantex_arg_eight_valuekey_format_auxiliary:nnn{#1}##1
}
}
-\cs_new_protected:Npn\__semantex_eight_arg_valuekey_format_auxiliary:nnn#1#2#3
+\cs_new_protected:Npn\__semantex_arg_eight_valuekey_format_auxiliary:nnn#1#2#3
{
\cs_set:Npn\l__semantex_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 }
\tl_set:Nn\l__semantex_arg_eight_valuekey_auxiliary_temp_tl{}
@@ -4909,75 +6083,617 @@
}
}
-\cs_new_protected:Npn\semantex_define_arg_nine_valuekeys:nn#1#2
+%\cs_new_protected:Npn\semantex_define_arg_nine_valuekeys:nn#1#2
+%{
+% % Add new argument valuekeys with 9 values
+% \clist_map_inline:nn { #2 }{
+% \__semantex_arg_nine_valuekey_format_auxiliary:nnn{#1}##1
+% }
+%}
+%
+%\cs_new_protected:Npn\__semantex_arg_nine_valuekey_format_auxiliary:nnn#1#2#3
+%{
+% \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 }
+% \tl_set:Nn\l__semantex_arg_nine_valuekey_auxiliary_temp_tl{}
+% \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n##1
+% {
+% \__semantex_preprocess_arg_singlekey:nnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_arg_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2
+% {
+% \__semantex_preprocess_arg_valuekey:nnnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_arg_nine_valuekey_auxiliary_temp_tl
+% }
+% \semantex_keyval_parse:NNo
+% \l__semantex_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n
+% \l__semantex_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn
+% {
+% \l__semantex_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+% }
+% \cs_set_protected:cpo { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9
+% {
+% \l__semantex_arg_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+% {
+% \tl_set:Nn \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 }
+% \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2
+% }
+%}
+
+
+\cs_new_protected:Npn\semantex_append_arg_valuekeys:nn#1#2
+{
+ % Appends keys taking one value
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_valuekeys_format_auxiliary:nnn { #1 } ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_arg_valuekeys_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_arg_valuekeys_auxiliary_temp_cs:n##1 { #3 }
+ \tl_set:Nn \l__semantex_append_arg_valuekeys_auxiliary_temp_tl {}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_append_arg_valuekeys_auxiliary_temp_cs:n { ##2 }
+ } \l__semantex_append_arg_valuekeys_auxiliary_temp_tl
+ \semantex_arg_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_valuekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn }
+ {
+ \exp_not:V\l__semantex_append_arg_valuekeys_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_valuekeys_auxiliary_temp_tl
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_arg_valuekeys:nn#1#2
{
- % Add new argument valuekeys with 9 values
+ % Pre-appends keys taking one value
\clist_map_inline:nn { #2 }{
- \__semantex_nine_arg_valuekey_format_auxiliary:nnn{#1}##1
+ \__semantex_pre_append_arg_valuekeys_format_auxiliary:nnn { #1 } ##1
}
}
-\cs_new_protected:Npn\__semantex_nine_arg_valuekey_format_auxiliary:nnn#1#2#3
+\cs_new_protected:Npn\__semantex_pre_append_arg_valuekeys_format_auxiliary:nnn#1#2#3
{
- \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 }
- \tl_set:Nn\l__semantex_arg_nine_valuekey_auxiliary_temp_tl{}
- \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n##1
+ \cs_set:Npn\l__semantex_pre_append_arg_valuekeys_auxiliary_temp_cs:n##1 { #3 }
+ \tl_set:Nn \l__semantex_pre_append_arg_valuekeys_auxiliary_temp_tl {}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_pre_append_arg_valuekeys_auxiliary_temp_cs:n { ##2 }
+ } \l__semantex_pre_append_arg_valuekeys_auxiliary_temp_tl
+ \semantex_arg_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_valuekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn }
{
- \__semantex_preprocess_arg_singlekey:nnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_arg_nine_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_valuekeys_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_valuekeys_auxiliary_original_temp_tl
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_arg_singlekeys:nn#1#2
+{
+ % Appends keys taking no values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_singlekeys_format_auxiliary:nnn { #1 } ##1
}
- \cs_set:Npn\l__semantex_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2
+}
+
+\cs_new_protected:Npn \__semantex_append_arg_singlekeys_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_arg_singlekeys_auxiliary_temp_cs: { #3 }
+ \tl_set:Nn \l__semantex_append_arg_singlekeys_auxiliary_temp_tl {}
+ \semantex_preprocess_arg_keys:oN
{
- \__semantex_preprocess_arg_valuekey:nnnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_arg_nine_valuekey_auxiliary_temp_tl
+ \l__semantex_append_arg_singlekeys_auxiliary_temp_cs:
+ } \l__semantex_append_arg_singlekeys_auxiliary_temp_tl
+ \semantex_arg_singlekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_singlekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n }
+ {
+ \exp_not:V\l__semantex_append_arg_singlekeys_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_singlekeys_auxiliary_temp_tl
}
- \semantex_keyval_parse:NNo
- \l__semantex_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n
- \l__semantex_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn
- {
- \l__semantex_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
- }
- \cs_set_protected:cpo { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##1##2##3##4##5##6##7##8##9
+}
+
+\cs_new_protected:Npn\semantex_pre_append_arg_singlekeys:nn#1#2
+{
+ % Pre-append_args keys taking no values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_arg_singlekeys_format_auxiliary:nnn { #1 } ##1
+ }
+}
+
+\cs_new_protected:Npn \__semantex_pre_append_arg_singlekeys_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_arg_singlekeys_auxiliary_temp_cs: { #3 }
+ \tl_set:Nn \l__semantex_pre_append_arg_singlekeys_auxiliary_temp_tl {}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_pre_append_arg_singlekeys_auxiliary_temp_cs:
+ } \l__semantex_pre_append_arg_singlekeys_auxiliary_temp_tl
+ \semantex_arg_singlekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_singlekeys_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn
+ % \cs_set_protected:cx gave us ##1 where we wanted #1
+ { __semantex_data_cs_custom_arg_singlekey_#1_\tl_trim_spaces:n{#2}:n }
+ {
+ \exp_not:V\l__semantex_pre_append_arg_singlekeys_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_singlekeys_auxiliary_original_temp_tl
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_arg_two_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 2 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_two_valuekey_format_auxiliary:nnn { #1 } ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_arg_two_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_arg_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 }
+ \tl_set:Nn\l__semantex_append_arg_two_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_append_arg_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 }
+ } \l__semantex_append_arg_two_valuekey_auxiliary_temp_tl
+ \semantex_arg_two_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_two_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn }
{
- \l__semantex_arg_nine_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_append_arg_two_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_two_valuekey_auxiliary_temp_tl
}
\cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
{
- \tl_set:Nn \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 }
- \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2
+ \use:c { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2
}
}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% COMMANDS HANDLING THE PARSE ROUTINE
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cs_new_protected:Npn\semantex_pre_append_arg_two_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 2 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_arg_two_valuekey_format_auxiliary:nnn { #1 } ##1
+ }
+}
-\cs_new_protected:Npn\semantex_parse:n#1
+\cs_new_protected:Npn\__semantex_pre_append_arg_two_valuekey_format_auxiliary:nnn#1#2#3
{
- % This command runs all the keys that the user may have
- % stored via the parseoptions key
- \exp_args:NNx\cs_set_protected:Nn\l__semantex_parse_temp_cs:n
- % \cs_set:Nx gave us ##1 where we wanted #1
+ \cs_set:Npn\l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_cs:nn##1##2 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
{
- \semantex_data_tl_get_exp_not:nn { #1 } { parseoptions }
+ \l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_cs:nn { ##2 } { ##3 }
+ } \l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_tl
+ \semantex_arg_two_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_two_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn }
+ {
+ \exp_not:V\l__semantex_pre_append_arg_two_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_two_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_two_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnn } { ##1 } ##2
}
- \l__semantex_parse_temp_cs:n { #1 }
- \semantex_data_tl_clear:nn { #1 } { parseoptions }
}
-\cs_new_protected:Npn\semantex_add_to_parse_options:nn#1#2
+\cs_new_protected:Npn\semantex_append_arg_three_valuekeys:nn#1#2
{
- \tl_set:Nn\l__semantex_parseoptions_auxiliary_temp_tl{}
- \semantex_preprocess_keys:nN { #2 } \l__semantex_parseoptions_auxiliary_temp_tl
- \semantex_add_raw_commands_to_parse_options:no { #1 } { \l__semantex_parseoptions_auxiliary_temp_tl }
+ % Appends valuekeys with 3 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_three_valuekey_format_auxiliary:nnn {#1} ##1
+ }
}
-\cs_new_protected:Npn\semantex_add_raw_commands_to_parse_options:nn#1#2
+\cs_new_protected:Npn\__semantex_append_arg_three_valuekey_format_auxiliary:nnn#1#2#3
{
- \semantex_data_tl_put_right:nnn { #1 } { parseoptions } { #2 }
+ \cs_set:Npn\l__semantex_append_arg_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 }
+ \tl_set:Nn\l__semantex_append_arg_three_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_append_arg_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 }
+ } \l__semantex_append_arg_three_valuekey_auxiliary_temp_tl
+ \semantex_arg_three_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_three_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn }
+ {
+ \exp_not:V\l__semantex_append_arg_three_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_three_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2
+ }
}
-\cs_generate_variant:Nn \semantex_add_raw_commands_to_parse_options:nn { no }
+\cs_new_protected:Npn\semantex_pre_append_arg_three_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 3 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_arg_three_valuekey_format_auxiliary:nnn {#1} ##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_arg_three_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_cs:nnn##1##2##3 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_cs:nnn { ##2 } { ##3 } { ##4 }
+ } \l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_tl
+ \semantex_arg_three_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_three_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_arg_three_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_three_valuekey_auxiliary_original_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_three_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_arg_four_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 4 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_four_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_arg_four_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_arg_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 }
+ \tl_set:Nn\l__semantex_append_arg_four_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_append_arg_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 }
+ } \l__semantex_append_arg_four_valuekey_auxiliary_temp_tl
+ \semantex_arg_four_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_four_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn }
+ {
+ \exp_not:V\l__semantex_append_arg_four_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_four_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_arg_four_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 4 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_arg_four_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_arg_four_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_cs:nnnn##1##2##3##4 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_cs:nnnn { ##2 } { ##3 } { ##4 } { ##5 }
+ } \l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_tl
+ \semantex_arg_four_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_four_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_arg_four_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_four_valuekey_auxiliary_original_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_four_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_arg_five_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 5 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_five_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_arg_five_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_arg_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 }
+ \tl_set:Nn\l__semantex_append_arg_five_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_append_arg_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 }
+ } \l__semantex_append_arg_five_valuekey_auxiliary_temp_tl
+ \semantex_arg_five_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_five_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn }
+ {
+ \exp_not:V\l__semantex_append_arg_five_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_five_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_arg_five_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 5 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_arg_five_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_arg_five_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_cs:nnnnn##1##2##3##4##5 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_cs:nnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 }
+ } \l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_tl
+ \semantex_arg_five_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_five_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_arg_five_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_five_valuekey_auxiliary_original_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_five_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_arg_six_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 6 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_six_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_arg_six_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_arg_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 }
+ \tl_set:Nn\l__semantex_append_arg_six_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_append_arg_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 }
+ } \l__semantex_append_arg_six_valuekey_auxiliary_temp_tl
+ \semantex_arg_six_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_six_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn }
+ {
+ \exp_not:V\l__semantex_append_arg_six_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_six_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_arg_six_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 6 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_arg_six_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_arg_six_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_cs:nnnnnn##1##2##3##4##5##6 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_cs:nnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 }
+ } \l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_tl
+ \semantex_arg_six_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_six_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_arg_six_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_six_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_six_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_arg_seven_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 7 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_seven_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_arg_seven_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 }
+ \tl_set:Nn\l__semantex_append_arg_seven_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_append_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 }
+ } \l__semantex_append_arg_seven_valuekey_auxiliary_temp_tl
+ \semantex_arg_seven_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_seven_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn }
+ {
+ \exp_not:V\l__semantex_append_arg_seven_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_seven_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_arg_seven_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 7 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_arg_seven_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_arg_seven_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn##1##2##3##4##5##6##7 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_cs:nnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 }
+ } \l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_tl
+ \semantex_arg_seven_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_seven_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_arg_seven_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_seven_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_seven_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_append_arg_eight_valuekeys:nn#1#2
+{
+ % Appends valuekeys with 8 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_append_arg_eight_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_append_arg_eight_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_append_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 }
+ \tl_set:Nn\l__semantex_append_arg_eight_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_append_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+ } \l__semantex_append_arg_eight_valuekey_auxiliary_temp_tl
+ \semantex_arg_eight_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_eight_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+ {
+ \exp_not:V\l__semantex_append_arg_eight_valuekey_auxiliary_original_temp_tl
+ \exp_not:V\l__semantex_append_arg_eight_valuekey_auxiliary_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2
+ }
+}
+
+\cs_new_protected:Npn\semantex_pre_append_arg_eight_valuekeys:nn#1#2
+{
+ % Pre-appends valuekeys with 8 values
+ \clist_map_inline:nn { #2 }{
+ \__semantex_pre_append_arg_eight_valuekey_format_auxiliary:nnn{#1}##1
+ }
+}
+
+\cs_new_protected:Npn\__semantex_pre_append_arg_eight_valuekey_format_auxiliary:nnn#1#2#3
+{
+ \cs_set:Npn\l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn##1##2##3##4##5##6##7##8 { #3 }
+ \tl_set:Nn\l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_tl{}
+ \semantex_preprocess_arg_keys:oN
+ {
+ \l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_cs:nnnnnnnn { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+ } \l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_tl
+ \semantex_arg_eight_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_eight_valuekey_auxiliary_original_temp_tl
+ \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+ {
+ \exp_not:V\l__semantex_pre_append_arg_eight_valuekey_auxiliary_temp_tl
+ \exp_not:V\l__semantex_pre_append_arg_eight_valuekey_auxiliary_original_temp_tl
+ }
+ \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+ {
+ \use:c { __semantex_data_cs_custom_arg_eight_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } { ##1 } ##2
+ }
+}
+
+%\cs_new_protected:Npn\semantex_append_arg_nine_valuekeys:nn#1#2
+%{
+% % Appends valuekeys with 9 values
+% \clist_map_inline:nn { #2 }{
+% \__semantex_append_arg_nine_valuekey_format_auxiliary:nnn{#1}##1
+% }
+%}
+%
+%\cs_new_protected:Npn\__semantex_append_arg_nine_valuekey_format_auxiliary:nnn#1#2#3
+%{
+% \cs_set:Npn\l__semantex_append_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 }
+% \tl_set:Nn\l__semantex_append_arg_nine_valuekey_auxiliary_temp_tl{}
+% \cs_set:Npn\l__semantex_append_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n##1
+% {
+% \__semantex_preprocess_arg_singlekey:nnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_append_arg_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set:Npn\l__semantex_append_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2
+% {
+% \__semantex_preprocess_arg_valuekey:nnnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_append_arg_nine_valuekey_auxiliary_temp_tl
+% }
+% \semantex_keyval_parse:NNo
+% \l__semantex_append_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n
+% \l__semantex_append_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn
+% {
+% \l__semantex_append_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+% }
+% \semantex_arg_nine_valuekey_store:nnN { #1 } { #2 } \l__semantex_append_arg_nine_valuekey_auxiliary_original_temp_tl
+% \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+% {
+% \exp_not:V\l__semantex_append_arg_nine_valuekey_auxiliary_original_temp_tl
+% \exp_not:V\l__semantex_append_arg_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+% {
+% \tl_set:Nn \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 }
+% \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2
+% }
+%}
+%
+%\cs_new_protected:Npn\semantex_pre_append_arg_nine_valuekeys:nn#1#2
+%{
+% % Pre-appends valuekeys with 9 values
+% \clist_map_inline:nn { #2 }{
+% \__semantex_pre_append_arg_nine_valuekey_format_auxiliary:nnn{#1}##1
+% }
+%}
+%
+%\cs_new_protected:Npn\__semantex_pre_append_arg_nine_valuekey_format_auxiliary:nnn#1#2#3
+%{
+% \cs_set:Npn\l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn##1##2##3##4##5##6##7##8##9 { #3 }
+% \tl_set:Nn\l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_tl{}
+% \cs_set:Npn\l__semantex_pre_append_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n##1
+% {
+% \__semantex_preprocess_arg_singlekey:nnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } \l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_tl
+% }
+% \cs_set:Npn\l__semantex_pre_append_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn##1##2
+% {
+% \__semantex_preprocess_arg_valuekey:nnnN { \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl } { ##1 } { ##2 } \l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_tl
+% }
+% \semantex_keyval_parse:NNo
+% \l__semantex_pre_append_arg_nine_valuekey_auxiliary_singlekey_temp_cs:n
+% \l__semantex_pre_append_arg_nine_valuekey_auxiliary_valuekey_temp_cs:nn
+% {
+% \l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_cs:nnnnnnnnn { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } { ##6 } { ##7 } { ##8 } { ##9 }
+% }
+% \semantex_arg_nine_valuekey_store:nnN { #1 } { #2 } \l__semantex_pre_append_arg_nine_valuekey_auxiliary_original_temp_tl
+% \exp_args:Nnx\cs_set_protected:cn { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn }
+% {
+% \exp_not:V\l__semantex_pre_append_arg_nine_valuekey_auxiliary_temp_tl
+% \exp_not:V\l__semantex_pre_append_arg_nine_valuekey_auxiliary_original_temp_tl
+% }
+% \cs_set_protected:cpn { __semantex_data_cs_custom_arg_valuekey_#1_\tl_trim_spaces:n{#2}:nn } ##1##2
+% {
+% \tl_set:Nn \__semantex_arg_nine_valuekey_format_auxiliary_name_of_register_temp_tl { ##1 }
+% \use:c { __semantex_data_cs_custom_arg_nine_valuekey_#1_\tl_trim_spaces:n{#2}_auxiliary:nnnnnnnnn } ##2
+% }
+%}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -5001,16 +6717,29 @@
{
\tl_set:Nn\l__semantex_output_options_auxiliary_temp_tl{}
\semantex_preprocess_keys:nN { #2 } \l__semantex_output_options_auxiliary_temp_tl
- \semantex_add_raw_commands_to_output_options:no { #1 } { \l__semantex_output_options_auxiliary_temp_tl }
+ \semantex_add_raw_code_to_output_options:no { #1 } { \l__semantex_output_options_auxiliary_temp_tl }
}
-\cs_new_protected:Npn\semantex_add_raw_commands_to_output_options:nn#1#2
+\cs_new_protected:Npn\semantex_add_raw_code_to_output_options:nn#1#2
{
- \semantex_data_tl_put_right:nnn { #1 } { outputoptions } { #2 }
+ \semantex_data_tl_put_right:nnn { #1 } { output~options } { #2 }
}
-\cs_generate_variant:Nn \semantex_add_raw_commands_to_output_options:nn { no }
+\cs_generate_variant:Nn \semantex_add_raw_code_to_output_options:nn { no }
+\cs_new_protected:Npn\semantex_add_to_the_left_of_output_options:nn#1#2
+{
+ \tl_set:Nn\l__semantex_left_of_output_options_auxiliary_temp_tl{}
+ \semantex_preprocess_keys:nN { #2 } \l__semantex_left_of_output_options_auxiliary_temp_tl
+ \semantex_add_raw_code_to_the_left_of_output_options:no { #1 } { \l__semantex_left_of_output_options_auxiliary_temp_tl }
+}
+
+\cs_new_protected:Npn\semantex_add_raw_code_to_the_left_of_output_options:nn#1#2
+{
+ \semantex_data_tl_put_left:nnn { #1 } { output~options } { #2 }
+}
+
+\cs_generate_variant:Nn \semantex_add_raw_code_to_the_left_of_output_options:nn { no }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -5229,7 +6958,7 @@
\msg_new:nnnn { semantex } { created_a_SemantexBaseObject } { Never~create~objects~of~class~\token_to_str:N\SemantexBaseObject;~create~a~new~class~yourself~instead.~You~created~the~object~#1 on~line~\msg_line_number: } {}
-\msg_new:nnnn { semantex } { SemantexThis_in_input_stream } { The~command~\token_to_str:N\SemantexThis~was~found~outside~a~class~or~object~on~line~\msg_line_number:;~did~you~forget~to~use~setkeysx={...}? } {}
+\msg_new:nnnn { semantex } { SemantexThis_in_input_stream } { The~command~\token_to_str:N\SemantexThis~was~found~outside~a~class~or~object~on~line~\msg_line_number:;~did~you~forget~to~use~set~keys~x={...}? } {}
\msg_new:nnnn { semantex } { generic_error } { #2~#1 on~line~\msg_line_number: } {}
@@ -5307,11 +7036,11 @@
\semantex_define_valuekeys:nn { \semantex_class_to_register:N \SemantexBaseObject }
{
- {definekeys[1]}{execute={ \semantex_define_valuekeys:nn { ##1 } { #1 } }},
+ {define~keys[1]}{execute={ \semantex_define_valuekeys:nn { ##1 } { #1 } }},
}
\semantex_new_simple_class:Nw \SemantexBaseObject [
- definekeys[1]={
+ define~keys[1]={
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% THE MOST BASIC KEYS, INCLUDING PROGRAMMING KEYS
@@ -5321,121 +7050,205 @@
% Yes, this really does make sense
% -- check how \semantex_define_valuekeys:nn was defined
% Keys for setting up the keyval interface
- {definekeys}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } },
- {definekeys[0]}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } },
- {definekeys[{0}]}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } },
- {definekeys[{1}]}{ execute={ \semantex_define_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[2]}{ execute={ \semantex_define_two_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[{2}]}{ execute={ \semantex_define_two_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[3]}{ execute={ \semantex_define_three_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[{3}]}{ execute={ \semantex_define_three_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[4]}{ execute={ \semantex_define_four_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[{4}]}{ execute={ \semantex_define_four_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[5]}{ execute={ \semantex_define_five_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[{5}]}{ execute={ \semantex_define_five_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[6]}{ execute={ \semantex_define_six_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[{6}]}{ execute={ \semantex_define_six_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[7]}{ execute={ \semantex_define_seven_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[{7}]}{ execute={ \semantex_define_seven_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[8]}{ execute={ \semantex_define_eight_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[{8}]}{ execute={ \semantex_define_eight_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[9]}{ execute={ \semantex_define_nine_valuekeys:nn { ##1 } { #1 } } },
- {definekeys[{9}]}{ execute={ \semantex_define_nine_valuekeys:nn { ##1 } { #1 } } },
- {removekey}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } },
- {removekey[0]}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } },
- {removekey[{0}]}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } },
- {removekey[1]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[{1}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[2]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[{2}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[3]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[{3}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[4]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[{5}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[6]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[{6}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[7]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[{7}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[8]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[{8}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[9]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
- {removekey[{9}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {define~keys}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } },
+ {define~keys[0]}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } },
+ {define~keys[{0}]}{ execute={ \semantex_define_singlekeys:nn { ##1 } { #1 } } },
+ {define~keys[{1}]}{ execute={ \semantex_define_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[2]}{ execute={ \semantex_define_two_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[{2}]}{ execute={ \semantex_define_two_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[3]}{ execute={ \semantex_define_three_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[{3}]}{ execute={ \semantex_define_three_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[4]}{ execute={ \semantex_define_four_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[{4}]}{ execute={ \semantex_define_four_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[5]}{ execute={ \semantex_define_five_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[{5}]}{ execute={ \semantex_define_five_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[6]}{ execute={ \semantex_define_six_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[{6}]}{ execute={ \semantex_define_six_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[7]}{ execute={ \semantex_define_seven_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[{7}]}{ execute={ \semantex_define_seven_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[8]}{ execute={ \semantex_define_eight_valuekeys:nn { ##1 } { #1 } } },
+ {define~keys[{8}]}{ execute={ \semantex_define_eight_valuekeys:nn { ##1 } { #1 } } },
+% {define~keys[9]}{ execute={ \semantex_define_nine_valuekeys:nn { ##1 } { #1 } } },
+% {define~keys[{9}]}{ execute={ \semantex_define_nine_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys}{ execute={ \semantex_append_singlekeys:nn { ##1 } { #1 } } },
+ {append~keys[0]}{ execute={ \semantex_append_singlekeys:nn { ##1 } { #1 } } },
+ {append~keys[{0}]}{ execute={ \semantex_append_singlekeys:nn { ##1 } { #1 } } },
+ {append~keys[1]}{ execute={ \semantex_append_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[{1}]}{ execute={ \semantex_append_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[2]}{ execute={ \semantex_append_two_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[{2}]}{ execute={ \semantex_append_two_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[3]}{ execute={ \semantex_append_three_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[{3}]}{ execute={ \semantex_append_three_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[4]}{ execute={ \semantex_append_four_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[{4}]}{ execute={ \semantex_append_four_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[5]}{ execute={ \semantex_append_five_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[{5}]}{ execute={ \semantex_append_five_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[6]}{ execute={ \semantex_append_six_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[{6}]}{ execute={ \semantex_append_six_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[7]}{ execute={ \semantex_append_seven_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[{7}]}{ execute={ \semantex_append_seven_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[8]}{ execute={ \semantex_append_eight_valuekeys:nn { ##1 } { #1 } } },
+ {append~keys[{8}]}{ execute={ \semantex_append_eight_valuekeys:nn { ##1 } { #1 } } },
+% {append~keys[9]}{ execute={ \semantex_append_nine_valuekeys:nn { ##1 } { #1 } } },
+% {append~keys[{9}]}{ execute={ \semantex_append_nine_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys}{ execute={ \semantex_pre_append_singlekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[0]}{ execute={ \semantex_pre_append_singlekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{0}]}{ execute={ \semantex_pre_append_singlekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[1]}{ execute={ \semantex_pre_append_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{1}]}{ execute={ \semantex_pre_append_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[2]}{ execute={ \semantex_pre_append_two_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{2}]}{ execute={ \semantex_pre_append_two_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[3]}{ execute={ \semantex_pre_append_three_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{3}]}{ execute={ \semantex_pre_append_three_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[4]}{ execute={ \semantex_pre_append_four_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{4}]}{ execute={ \semantex_pre_append_four_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[5]}{ execute={ \semantex_pre_append_five_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{5}]}{ execute={ \semantex_pre_append_five_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[6]}{ execute={ \semantex_pre_append_six_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{6}]}{ execute={ \semantex_pre_append_six_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[7]}{ execute={ \semantex_pre_append_seven_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{7}]}{ execute={ \semantex_pre_append_seven_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[8]}{ execute={ \semantex_pre_append_eight_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~keys[{8}]}{ execute={ \semantex_pre_append_eight_valuekeys:nn { ##1 } { #1 } } },
+% {pre~append~keys[9]}{ execute={ \semantex_pre_append_nine_valuekeys:nn { ##1 } { #1 } } },
+% {pre~append~keys[{9}]}{ execute={ \semantex_pre_append_nine_valuekeys:nn { ##1 } { #1 } } },
+ {remove~key}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } },
+ {remove~key[0]}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } },
+ {remove~key[{0}]}{ execute={ \semantex_remove_singlekey:nn { ##1 } { #1 } } },
+ {remove~key[1]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[{1}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[2]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[{2}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[3]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[{3}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[4]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[{5}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[6]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[{6}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[7]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[{7}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[8]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+ {remove~key[{8}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+% {remove~key[9]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
+% {remove~key[{9}]}{ execute={ \semantex_remove_valuekey:nn { ##1 } { #1 } } },
% Keys for setting up the argument keyval interface:
- {defineargkeys}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } },
- {defineargkeys[0]}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{0}]}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } },
- {defineargkeys[1]}{ execute={ \semantex_define_arg_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{1}]}{ execute={ \semantex_define_arg_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[2]}{ execute={ \semantex_define_arg_two_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{2}]}{ execute={ \semantex_define_arg_two_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[3]}{ execute={ \semantex_define_arg_three_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{3}]}{ execute={ \semantex_define_arg_three_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[4]}{ execute={ \semantex_define_arg_four_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{4}]}{ execute={ \semantex_define_arg_four_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[5]}{ execute={ \semantex_define_arg_five_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{5}]}{ execute={ \semantex_define_arg_five_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[6]}{ execute={ \semantex_define_arg_six_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{6}]}{ execute={ \semantex_define_arg_six_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[7]}{ execute={ \semantex_define_arg_seven_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{7}]}{ execute={ \semantex_define_arg_seven_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[8]}{ execute={ \semantex_define_arg_eight_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{8}]}{ execute={ \semantex_define_arg_eight_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[9]}{ execute={ \semantex_define_arg_nine_valuekeys:nn { ##1 } { #1 } } },
- {defineargkeys[{9}]}{ execute={ \semantex_define_arg_nine_valuekeys:nn { ##1 } { #1 } } },
- {removeargkey}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } },
- {removeargkey[0]}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } },
- {removeargkey[{0}]}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } },
- {removeargkey[1]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[{1}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[2]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[{2}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[3]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[{3}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[4]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[{5}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[6]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[{6}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[7]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[{7}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[8]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[{8}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[9]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
- {removeargkey[{9}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {define~arg~keys}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[0]}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{0}]}{ execute={ \semantex_define_arg_singlekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[1]}{ execute={ \semantex_define_arg_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{1}]}{ execute={ \semantex_define_arg_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[2]}{ execute={ \semantex_define_arg_two_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{2}]}{ execute={ \semantex_define_arg_two_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[3]}{ execute={ \semantex_define_arg_three_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{3}]}{ execute={ \semantex_define_arg_three_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[4]}{ execute={ \semantex_define_arg_four_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{4}]}{ execute={ \semantex_define_arg_four_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[5]}{ execute={ \semantex_define_arg_five_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{5}]}{ execute={ \semantex_define_arg_five_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[6]}{ execute={ \semantex_define_arg_six_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{6}]}{ execute={ \semantex_define_arg_six_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[7]}{ execute={ \semantex_define_arg_seven_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{7}]}{ execute={ \semantex_define_arg_seven_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[8]}{ execute={ \semantex_define_arg_eight_valuekeys:nn { ##1 } { #1 } } },
+ {define~arg~keys[{8}]}{ execute={ \semantex_define_arg_eight_valuekeys:nn { ##1 } { #1 } } },
+% {define~arg~keys[9]}{ execute={ \semantex_define_arg_nine_valuekeys:nn { ##1 } { #1 } } },
+% {define~arg~keys[{9}]}{ execute={ \semantex_define_arg_nine_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys}{ execute={ \semantex_append_arg_singlekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[0]}{ execute={ \semantex_append_arg_singlekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{0}]}{ execute={ \semantex_append_arg_singlekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[1]}{ execute={ \semantex_append_arg_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{1}]}{ execute={ \semantex_append_arg_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[2]}{ execute={ \semantex_append_arg_two_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{2}]}{ execute={ \semantex_append_arg_two_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[3]}{ execute={ \semantex_append_arg_three_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{3}]}{ execute={ \semantex_append_arg_three_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[4]}{ execute={ \semantex_append_arg_four_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{4}]}{ execute={ \semantex_append_arg_four_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[5]}{ execute={ \semantex_append_arg_five_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{5}]}{ execute={ \semantex_append_arg_five_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[6]}{ execute={ \semantex_append_arg_six_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{6}]}{ execute={ \semantex_append_arg_six_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[7]}{ execute={ \semantex_append_arg_seven_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{7}]}{ execute={ \semantex_append_arg_seven_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[8]}{ execute={ \semantex_append_arg_eight_valuekeys:nn { ##1 } { #1 } } },
+ {append~arg~keys[{8}]}{ execute={ \semantex_append_arg_eight_valuekeys:nn { ##1 } { #1 } } },
+% {append~arg~keys[9]}{ execute={ \semantex_append_arg_nine_valuekeys:nn { ##1 } { #1 } } },
+% {append~arg~keys[{9}]}{ execute={ \semantex_append_arg_nine_valuekeys:nn { ##1 } { #1 } } },%
+ {pre~append~arg~keys}{ execute={ \semantex_pre_append_arg_singlekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[0]}{ execute={ \semantex_pre_append_arg_singlekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{0}]}{ execute={ \semantex_pre_append_arg_singlekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[1]}{ execute={ \semantex_pre_append_arg_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{1}]}{ execute={ \semantex_pre_append_arg_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[2]}{ execute={ \semantex_pre_append_arg_two_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{2}]}{ execute={ \semantex_pre_append_arg_two_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[3]}{ execute={ \semantex_pre_append_arg_three_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{3}]}{ execute={ \semantex_pre_append_arg_three_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[4]}{ execute={ \semantex_pre_append_arg_four_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{4}]}{ execute={ \semantex_pre_append_arg_four_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[5]}{ execute={ \semantex_pre_append_arg_five_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{5}]}{ execute={ \semantex_pre_append_arg_five_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[6]}{ execute={ \semantex_pre_append_arg_six_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{6}]}{ execute={ \semantex_pre_append_arg_six_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[7]}{ execute={ \semantex_pre_append_arg_seven_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{7}]}{ execute={ \semantex_pre_append_arg_seven_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[8]}{ execute={ \semantex_pre_append_arg_eight_valuekeys:nn { ##1 } { #1 } } },
+ {pre~append~arg~keys[{8}]}{ execute={ \semantex_pre_append_arg_eight_valuekeys:nn { ##1 } { #1 } } },
+% {pre~append~arg~keys[9]}{ execute={ \semantex_pre_append_arg_nine_valuekeys:nn { ##1 } { #1 } } },
+% {pre~append~arg~keys[{9}]}{ execute={ \semantex_pre_append_arg_nine_valuekeys:nn { ##1 } { #1 } } },
+ {remove~arg~key}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[0]}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[{0}]}{ execute={ \semantex_remove_arg_singlekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[1]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[{1}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[2]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[{2}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[3]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[{3}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[4]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[{5}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[6]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[{6}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[7]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[{7}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[8]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+ {remove~arg~key[{8}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+% {remove~arg~key[9]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
+% {remove~arg~key[{9}]}{ execute={ \semantex_remove_arg_valuekey:nn { ##1 } { #1 } } },
% Keys for programming:
- {dataprovide}{ execute={ \semantex_data_tl_provide:nn { ##1 } { \tl_trim_spaces:n { #1 } } } },
- {dataclear}{
+ {data~provide}{ execute={ \semantex_data_tl_provide:nn { ##1 } { \tl_trim_spaces:n { #1 } } } },
+ {data~clear}{
execute={ \semantex_data_tl_clear:nn { ##1 } { \tl_trim_spaces:n { #1 } } },
},
- {keysset}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } },
- {setkeys}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } },
- {keyssetx}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } },
- {setkeysx}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } },
- {boolprovide}{
+ {keys~set}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } },
+ {set~keys}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } },
+ {keys~set~x}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } },
+ {set~keys~x}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } },
+ {bool~provide}{
execute={
\semantex_data_bool_provide:nn { ##1 } { \tl_trim_spaces:n { #1 } }
},
},
- {boolsettrue}{
+ {bool~set~true}{
execute={
\semantex_data_bool_set_true:nn { ##1 } { \tl_trim_spaces:n { #1 } }
},
},
- {boolsetfalse}{
+ {bool~set~false}{
execute={
\semantex_data_bool_set_false:nn { ##1 } { \tl_trim_spaces:n { #1 } }
},
},
- {intprovide}{
+ {int~provide}{
execute={
\semantex_data_int_provide:nn { ##1 } { \tl_trim_spaces:n { #1 } }
},
},
- {intclear}{
+ {int~clear}{
execute={
\semantex_data_int_clear:nn { ##1 } { \tl_trim_spaces:n { #1 } }
},
},
- {intincr}{
+ {int~incr}{
execute={
\semantex_data_int_incr:nn { ##1 } { \tl_trim_spaces:n { #1 } }
},
@@ -5446,52 +7259,52 @@
},
},
},
- definekeys[2]={
- {dataset}{
+ define~keys[2]={
+ {data~set}{
execute={
\semantex_data_tl_set:nnn { ##1 } { \tl_trim_spaces:n { #1 } } { #2 }
},
},
- {datasetx}{
+ {data~set~x}{
execute={
\semantex_data_tl_set:nnx { ##1 } { \tl_trim_spaces:n { #1 } } { #2 }
},
},
- {dataputright}{
+ {data~put~right}{
execute={
\semantex_data_tl_put_right:nnn { ##1 } { \tl_trim_spaces:n { #1 } } { #2 }
},
},
- {dataputrightx}{
+ {data~put~right~x}{
execute={
\semantex_data_tl_put_right:nnx { ##1 } { \tl_trim_spaces:n { #1 } } { #2 }
},
},
- {dataputleft}{
+ {data~put~left}{
execute={
\semantex_data_tl_put_left:nnn { ##1 } { \tl_trim_spaces:n { #1 } } { #2 }
},
},
- {dataputleftx}{
+ {data~put~left~x}{
execute={
\semantex_data_tl_put_left:nnx { ##1 } { \tl_trim_spaces:n { #1 } } { #2 }
},
},
- {ifblankT}{
+ {if~blank~T}{
execute={
\tl_if_blank:xTF { #1 }
{ \semantex_keys_set:nn { ##1 } { #2 } }
{ }
},
},
- {ifblankF}{
+ {if~blank~F}{
execute={
\tl_if_blank:xTF { #1 }
{ }
{ \semantex_keys_set:nn { ##1 } { #2 } }
},
},
- {boolifT}{
+ {bool~if~T}{
execute={
\semantex_data_bool_get:nnTF { ##1 }
{ \tl_trim_spaces:n { #1 } }
@@ -5499,7 +7312,7 @@
{ }
},
},
- {boolifF}{
+ {bool~if~F}{
execute={
\semantex_data_bool_get:nnTF { ##1 }
{ \tl_trim_spaces:n { #1 } }
@@ -5507,45 +7320,45 @@
{ \semantex_keys_set:nn { ##1 } { #2 } }
},
},
- {intset}{
+ {int~set}{
execute={
\semantex_data_int_set:nnn { ##1 } { \tl_trim_spaces:n { #1 } } { #2 }
},
},
- {ERRORkeyvaluenotfound}{
+ {ERROR~key~value~not~found}{
execute={
\semantex_error_key_value_not_found:nnn { ##1 } { #1 } { #2 }
},
},
- {ERRORargkeyvaluenotfound}{
+ {ERROR~arg~key~value~not~found}{
execute={
\semantex_error_arg_key_value_not_found:nnn { ##1 } { #1 } { #2 }
},
},
},
- definekeys[3]={
- {strifeqT}{
+ define~keys[3]={
+ {str~if~eq~T}{
execute={
\str_if_eq:xxTF { #1 } { #2 }
{ \semantex_keys_set:nn { ##1 } { #3 } }
{ }
},
},
- {strifeqF}{
+ {str~if~eq~F}{
execute={
\str_if_eq:xxTF { #1 } { #2 }
{ }
{ \semantex_keys_set:nn { ##1 } { #3 } }
},
},
- {ifblankTF}{
+ {if~blank~TF}{
execute={
\tl_if_blank:xTF { #1 }
{ \semantex_keys_set:nn { ##1 } { #2 } }
{ \semantex_keys_set:nn { ##1 } { #3 } }
},
},
- {boolifTF}{
+ {bool~if~TF}{
execute={
\semantex_data_bool_get:nnTF { ##1 }
{ \tl_trim_spaces:n { #1 } }
@@ -5553,42 +7366,42 @@
{ \semantex_keys_set:nn { ##1 } { #3 } }
},
},
- {intifgreaterT}{
+ {int~if~greater~T}{
execute={
\int_compare:nNnTF { #1 } > { #2 }
{ \semantex_keys_set:nn { ##1 } { #3 } }
{ }
},
},
- {intifgreaterF}{
+ {int~if~greater~F}{
execute={
\int_compare:nNnTF { #1 } > { #2 }
{ }
{ \semantex_keys_set:nn { ##1 } { #3 } }
},
},
- {intifeqT}{
+ {int~if~eq~T}{
execute={
\int_compare:nNnTF { #1 } = { #2 }
{ \semantex_keys_set:nn { ##1 } { #3 } }
{ }
},
},
- {intifeqF}{
+ {int~if~eq~F}{
execute={
\int_compare:nNnTF { #1 } = { #2 }
{ }
{ \semantex_keys_set:nn { ##1 } { #3 } }
},
},
- {intiflessT}{
+ {int~if~less~T}{
execute={
\int_compare:nNnTF { #1 } < { #2 }
{ \semantex_keys_set:nn { ##1 } { #3 } }
{ }
},
},
- {intiflessF}{
+ {int~if~less~F}{
execute={
\int_compare:nNnTF { #1 } < { #2 }
{ }
@@ -5596,29 +7409,29 @@
},
},
},
- definekeys[4]={
- {strifeqTF}{
+ define~keys[4]={
+ {str~if~eq~TF}{
execute={
\str_if_eq:xxTF { #1 } { #2 }
{ \semantex_keys_set:nn { ##1 } { #3 } }
{ \semantex_keys_set:nn { ##1 } { #4 } }
},
},
- {intifgreaterTF}{
+ {int~if~greater~TF}{
execute={
\int_compare:nNnTF { #1 } > { #2 }
{ \semantex_keys_set:nn { ##1 } { #3 } }
{ \semantex_keys_set:nn { ##1 } { #4 } }
},
},
- {intifeqTF}{
+ {int~if~eq~TF}{
execute={
\int_compare:nNnTF { #1 } = { #2 }
{ \semantex_keys_set:nn { ##1 } { #3 } }
{ \semantex_keys_set:nn { ##1 } { #4 } }
},
},
- {intiflessTF}{
+ {int~if~less~TF}{
execute={
\int_compare:nNnTF { #1 } < { #2 }
{ \semantex_keys_set:nn { ##1 } { #3 } }
@@ -5631,1644 +7444,1661 @@
% THE COLLECTION OF SLIGHTLY LESS FUNDAMENTAL KEYS
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- dataprovide=symbol,
- boolprovide=uppergrading,
- boolsettrue=uppergrading,
- boolprovide=output,
- dataprovide=outputoptions,
- boolprovide=par,
- boolsettrue=par,
- boolprovide=flexpar,
- dataprovide=parseoptions,
- dataprovide=mathclass,
- boolprovide=leftargument,
- dataprovide=heightphantom,
- dataprovide=slantingphantom,
- execute={ \semantex_data_seq_provide:nn { \semantex_this: } { commands_sequence } },
- definekeys[1]={
+ data~provide=symbol,
+ bool~provide=upper~grading,
+ bool~set~true=upper~grading,
+ bool~provide=output,
+ data~provide=output~options,
+ bool~provide=par,
+ bool~set~true=par,
+ bool~provide=flex~par,
+ data~provide=math~class,
+ bool~provide=left~argument,
+ data~provide=height~phantom,
+ data~provide=slanting~phantom,
+ execute={ \semantex_data_seq_provide:nn { \semantex_this: } { commands~sequence } },
+ define~keys[1]={
{parent}{ execute={ \semantex_data_parent_set:nn { ##1 } { #1 } } },
{class}{ execute={ \semantex_data_class_set:nn { ##1 } { #1 } } },
{copy}{ execute={ \semantex_data_copy_object:nn { ##1 } { #1 } } },
- {mathclass}{ execute={ \semantex_data_tl_set:nnn { ##1 } { mathclass } { #1 } } },
+ {math~class}{ execute={ \semantex_data_tl_set:nnn { ##1 } { math~class } { #1 } } },
{symbol}{
execute={
\semantex_data_tl_set:nnn { ##1 } { symbol } { #1 }
- \semantex_data_tl_set:nnn { ##1 } { heightphantom } { #1 }
- \semantex_data_tl_set:nnn { ##1 } { slantingphantom } { #1 }
+ \semantex_data_tl_set:nnn { ##1 } { height~phantom } { #1 }
+ \semantex_data_tl_set:nnn { ##1 } { slanting~phantom } { #1 }
}
},
- {symbolputright}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { symbol } { #1 } } },
- {symbolputleft}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { symbol } { #1 } } },
- {heightphantom}{ execute={ \semantex_data_tl_set:nnn { ##1 } { heightphantom } { #1 } } },
- {slantingphantom}{ execute={ \semantex_data_tl_set:nnn { ##1 } { slantingphantom } { #1 } } },
- {parseoptions}{ execute={ \semantex_add_to_parse_options:nn { ##1 } { #1 } } },
- {command}{ execute={ \semantex_data_seq_put_right:nnn { ##1 } { commands_sequence } { #1 } } },
+ {symbol~put~right}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { symbol } { #1 } } },
+ {symbol~put~left}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { symbol } { #1 } } },
+ {height~phantom}{ execute={ \semantex_data_tl_set:nnn { ##1 } { height~phantom } { #1 } } },
+ {slanting~phantom}{ execute={ \semantex_data_tl_set:nnn { ##1 } { slanting~phantom } { #1 } } },
+ {parse~options}{ append~keys={ {parse~code}{#1} } },
+ {pre~parse~options}{ pre~append~keys={ {parse~code}{#1} } },
+ {command}{ execute={ \semantex_data_seq_put_right:nnn { ##1 } { commands~sequence } { #1 } } },
{output}{ execute={ \semantex_set_output:nn { ##1 } { #1 } } },
- {outputoptions}{ execute={ \semantex_add_to_output_options:nn { ##1 } { #1 } } },
- {dooutput}{
- strifeqTF={#1}{true}
+ {output~options}{ execute={ \semantex_add_to_output_options:nn { ##1 } { #1 } } },
+ {pre~output~options}{ execute={ \semantex_add_to_the_left_of_output_options:nn { ##1 } { #1 } } },
+ {do~output}{
+ str~if~eq~TF={#1}{true}
{
- boolsettrue={output},
+ bool~set~true={output},
}
{
- strifeqTF={#1}{false}
+ str~if~eq~TF={#1}{false}
{
- boolsetfalse={output},
+ bool~set~false={output},
}
{
- ERRORkeyvaluenotfound={dooutput}{#1},
+ ERROR~key~value~not~found={do~output}{#1},
}
},
},
- {gradingposition}{
- strifeqTF={#1}{upper}
+ {grading~position}{
+ str~if~eq~TF={#1}{upper}
{
- boolsettrue={uppergrading},
+ bool~set~true={upper~grading},
}
{
- strifeqTF={#1}{lower}
+ str~if~eq~TF={#1}{lower}
{
- boolsetfalse={uppergrading},
+ bool~set~false={upper~grading},
}
{
- ERRORkeyvaluenotfound={gradingposition}{#1},
+ ERROR~key~value~not~found={grading~position}{#1},
},
},
},
- {gradingpos}{
- strifeqTF={#1}{upper}
+ {grading~pos}{
+ str~if~eq~TF={#1}{upper}
{
- boolsettrue={uppergrading},
+ bool~set~true={upper~grading},
}
{
- strifeqTF={#1}{lower}
+ str~if~eq~TF={#1}{lower}
{
- boolsetfalse={uppergrading},
+ bool~set~false={upper~grading},
}
{
- ERRORkeyvaluenotfound={gradingpos}{#1},
+ ERROR~key~value~not~found={grading~pos}{#1},
},
},
},
- {default}{sepi={#1}},
- {degreedefault}{sepd={#1}},
+ {default}{sep~i={#1}},
+ {degree~default}{sep~d={#1}},
{arg}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
- {*withothersep}{
- d*withothersep={#1},
+ {*~with~other~sep}{
+ d~*~with~other~sep={#1},
},
- {**withothersep}{
- d**withothersep={#1},
+ {**~with~other~sep}{
+ d~**~with~other~sep={#1},
},
},
output=\SemantexBaseObject,
- definekeys={
+ define~keys={
{return}{ execute={ \semantex_return:n { ##1 } } },
- {innerreturn}{ execute={ \semantex_inner_return:n { ##1 } } },
- {rightreturn}{ execute={ \semantex_right_return:n { ##1 } } },
- {leftreturn}{ execute={ \semantex_left_return:n { ##1 } } },
- {rightindexreturn}{ execute={ \semantex_right_index_return:n { ##1 } } },
- {leftindexreturn}{ execute={ \semantex_left_index_return:n { ##1 } } },
- {indexreturn}{ leftindexreturn, rightindexreturn },
- {rightargreturn}{ execute={ \semantex_right_arg_return:n { ##1 } } },
- {leftargreturn}{ execute={ \semantex_left_arg_return:n { ##1 } } },
- {argreturn}{ execute={ \semantex_arg_return:n { ##1 } } },
- {parse}{ execute={ \semantex_parse:n { ##1 } } },
- {clearcommand}{ execute={ \semantex_data_seq_clear:nn { ##1 } { commands_sequence } } },
- {dots}{sepidots},
+ {inner~return}{ execute={ \semantex_inner_return:n { ##1 } } },
+ {right~return}{ execute={ \semantex_right_return:n { ##1 } } },
+ {left~return}{ execute={ \semantex_left_return:n { ##1 } } },
+ {right~index~return}{ execute={ \semantex_right_index_return:n { ##1 } } },
+ {left~index~return}{ execute={ \semantex_left_index_return:n { ##1 } } },
+ {index~return}{ left~index~return, right~index~return },
+ {right~arg~return}{ execute={ \semantex_right_arg_return:n { ##1 } } },
+ {left~arg~return}{ execute={ \semantex_left_arg_return:n { ##1 } } },
+ {arg~return}{ execute={ \semantex_arg_return:n { ##1 } } },
+ {parse}{ parse~code, execute={ \semantex_clear_singlekey:nn { ##1 } { parse~code } } },
+ {parse~code}{ },
+ {clear~command}{ execute={ \semantex_data_seq_clear:nn { ##1 } { commands~sequence } } },
+ {dots}{sep~i~dots},
{...}{dots},
- {slot}{sepislot},
+ {slot}{sep~i~slot},
{-}{slot},
- {*}{sepd*},
- {**}{sepd**},
+ {*}{sep~d~*},
+ {**}{sep~d~**},
},
% The "spar" routine:
- definekeys={
+ define~keys={
{spar}{spar=},
},
- definekeys[1]={
+ define~keys[1]={
{spar}{ execute={ \semantex_spar:nn { ##1 } { #1 } } },
- {sparsize}{ execute={ \semantex_data_tl_set:nnn { ##1 } { sparsize } { #1 } } },
- {leftspar}{ execute={ \semantex_data_tl_set:nnn { ##1 } { leftspar } { #1 } } },
- {rightspar}{ execute={ \semantex_data_tl_set:nnn { ##1 } { rightspar } { #1 } } },
+ {spar~size}{ execute={ \semantex_data_tl_set:nnn { ##1 } { spar~size } { #1 } } },
+ {left~spar}{ execute={ \semantex_data_tl_set:nnn { ##1 } { left~spar } { #1 } } },
+ {right~spar}{ execute={ \semantex_data_tl_set:nnn { ##1 } { right~spar } { #1 } } },
},
- definekeys[2]={
- {otherspar}{ execute={ \semantex_other_spar:nnn { ##1 } { #1 } { #2 } } },
+ define~keys[2]={
+ {other~spar}{ execute={ \semantex_other_spar:nnn { ##1 } { #1 } { #2 } } },
},
- definekeys[3]={
- {Otherspar}{ execute={ \semantex_other_spar_with_size:nnnn { ##1 } { #1 } { #2 } { #3 } } },
+ define~keys[3]={
+ {Other~spar}{ execute={ \semantex_other_spar_with_size:nnnn { ##1 } { #1 } { #2 } { #3 } } },
},
- leftspar=(,
- rightspar=),
- sparsize=normal,
+ left~spar=(,
+ right~spar=),
+ spar~size=normal,
% The argument:
- dataprovide=arg,
- boolprovide=nextargwithsep,
- intprovide=numberofarguments,
- dataprovide=prearg,
- dataprovide=postarg,
- definekeys={
- {argdots}{setargkeys={...}},
- {arg...}{setargkeys={dots}},
- {commaargdots}{setargkeys={commadots}},
- {commaarg...}{setargkeys={comma...}},
- {argslot}{setargkeys={slot}},
- {arg-}{setargkeys={-}},
- {commaargslot}{setargkeys={commaslot}},
- {commaarg-}{setargkeys={comma-}},
- {cleararg}{ execute={
+ data~provide=arg,
+ bool~provide=next~arg~with~sep,
+ int~provide=number~of~arguments,
+ data~provide=pre~arg,
+ data~provide=post~arg,
+ define~keys={
+ {arg~dots}{set~arg~keys={...}},
+ {arg~...}{set~arg~keys={dots}},
+ {comma~arg~dots}{set~arg~keys={comma~dots}},
+ {comma~arg~...}{set~arg~keys={comma~...}},
+ {arg~slot}{set~arg~keys={slot}},
+ {arg-}{set~arg~keys={-}},
+ {comma~arg~slot}{set~arg~keys={comma~slot}},
+ {comma~arg~-}{set~arg~keys={comma~-}},
+ {clear~arg}{ execute={
\semantex_data_tl_clear:nn { ##1 } { arg }
- \semantex_data_int_clear:nn { ##1 } { numberofarguments }
- \semantex_data_bool_set_false:nn { ##1 } { nextargwithsep }
+ \semantex_data_int_clear:nn { ##1 } { number~of~arguments }
+ \semantex_data_bool_set_false:nn { ##1 } { next~arg~with~sep }
}
},
- {clearprearg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { prearg } } },
- {clearpostarg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { postarg } } },
+ {clear~pre~arg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { pre~arg } } },
+ {clear~post~arg}{ execute={ \semantex_data_tl_clear:nn { ##1 } { post~arg } } },
},
- definekeys[1]={
- {setargkeys}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } },
- {argkeysset}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } },
- {setargkeysx}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } },
- {argkeyssetx}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } },
- {setargsinglekeys}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
- {argsinglekeysset}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
- {setargsinglekeysx}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } },
- {argsinglekeyssetx}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } },
- {setoneargsinglekey}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } },
- {oneargsinglekeyset}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } },
- {setoneargsinglekeyx}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } },
- {oneargsinglekeysetx}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } },
- {setargwithoutkeyval}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } },
- {argwithoutkeyvalset}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } },
- {setargwithoutkeyvalx}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } },
- {argwithoutkeyvalsetx}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } },
- {prearg}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { prearg } { #1 } } },
- {postarg}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { postarg } { #1 } } },
- {setargsep}{ execute={ \semantex_data_tl_set:nnn { ##1 } { argsep } { #1 } } },
- {setargslot}{ execute={ \semantex_data_tl_set:nnn { ##1 } { argslot } { #1 } } },
- {setargdots}{ execute={ \semantex_data_tl_set:nnn { ##1 } { argdots } { #1 } } },
- {argkeyval}{
- strifeqTF={#1}{true}
- {
- definekeys[1]={
+ define~keys[1]={
+ {set~arg~keys}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } },
+ {arg~keys~set}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } },
+ {set~arg~keys~x}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } },
+ {arg~keys~set~x}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } },
+ {set~arg~single~keys}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
+ {arg~single~keys~set}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
+ {set~arg~single~keys~x}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } },
+ {arg~single~keys~set~x}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } },
+ {set~one~arg~single~key}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } },
+ {one~arg~single~key~set}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } },
+ {set~one~arg~single~key~x}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } },
+ {one~arg~single~key~set~x}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } },
+ {set~arg~without~keyval}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } },
+ {arg~without~keyval~set}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } },
+ {set~arg~without~keyval~x}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } },
+ {arg~without~keyval~set~x}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } },
+ {pre~arg}{ execute={ \semantex_data_tl_put_right:nnn { ##1 } { pre~arg } { #1 } } },
+ {post~arg}{ execute={ \semantex_data_tl_put_left:nnn { ##1 } { post~arg } { #1 } } },
+ {set~arg~sep}{ execute={ \semantex_data_tl_set:nnn { ##1 } { arg~sep } { #1 } } },
+ {set~arg~slot}{ execute={ \semantex_data_tl_set:nnn { ##1 } { arg~slot } { #1 } } },
+ {set~arg~dots}{ execute={ \semantex_data_tl_set:nnn { ##1 } { arg~dots } { #1 } } },
+ {arg~keyval}{
+ str~if~eq~TF={#1}{true}
+ {
+ define~keys[1]={
{arg}{execute={ \semantex_arg_keys_set:nn { ########1 } { ####1 } }},
},
}
{
- strifeqTF={#1}{false}
+ str~if~eq~TF={#1}{false}
{
- definekeys[1]={
+ define~keys[1]={
{arg}{ execute={ \semantex_arg_without_keyval:nn { ########1 } { ####1 } } },
},
}
{
- strifeqTF={#1}{singlekeys}
+ str~if~eq~TF={#1}{single~keys}
{
- definekeys[1]={
+ define~keys[1]={
{arg}{ execute={ \semantex_arg_singlekeys_set:nn { ########1 } { ####1 } } },
},
}
{
- strifeqTF={#1}{onesinglekey}
+ str~if~eq~TF={#1}{one~single~key}
{
- definekeys[1]={
+ define~keys[1]={
{arg}{ execute={ \semantex_arg_singlekey:nn { ########1 } { ####1 } } },
},
}
{
- ERRORkeyvaluenotfound={argkeyval}{#1},
+ ERROR~key~value~not~found={arg~keyval}{#1},
},
},
},
},
},
- {argposition}{
- strifeqTF={#1}{left}
+ {arg~position}{
+ str~if~eq~TF={#1}{left}
+ {
+ bool~set~true=left~argument,
+ }
+ {
+ str~if~eq~TF={#1}{right}
+ {
+ bool~set~false=left~argument,
+ }
+ {
+ ERROR~key~value~not~found={arg~position}{#1},
+ },
+ },
+ },
+ {arg~pos}{
+ str~if~eq~TF={#1}{left}
{
- boolsettrue={leftargument},
+ bool~set~true=left~argument,
}
{
- strifeqTF={#1}{right}
+ str~if~eq~TF={#1}{right}
{
- boolsetfalse={leftargument},
+ bool~set~false=left~argument,
}
{
- ERRORkeyvaluenotfound={argposition}{#1},
+ ERROR~key~value~not~found={arg~pos}{#1},
},
},
},
- {nextargwithsep}{
- strifeqTF={#1}{true}
+ {next~arg~with~sep}{
+ str~if~eq~TF={#1}{true}
{
- boolsettrue={nextargwithsep},
+ bool~set~true=next~arg~with~sep,
}
{
- strifeqTF={#1}{false}
+ str~if~eq~TF={#1}{false}
{
- boolsetfalse={nextargwithsep},
+ bool~set~false=next~arg~with~sep,
}
{
- ERRORkeyvaluenotfound={nextargwithsep}{#1},
+ ERROR~key~value~not~found={next~arg~with~sep}{#1},
},
},
},
- {separg}{setargkeys={sep={#1}}},
- {commaarg}{setargkeys={comma={#1}}},
- {argdotswithothersep}{setargkeys={dotswithothersep={#1}}},
- {arg...withothersep}{setargkeys={dotswithothersep={#1}}},
- {argslotwithothersep}{setargkeys={slotwithothersep={#1}}},
- {arg-withothersep}{setargkeys={slotwithothersep={#1}}},
+ {sep~arg}{set~arg~keys={sep={#1}}},
+ {comma~arg}{set~arg~keys={comma={#1}}},
+ {arg~dots~with~other~sep}{set~arg~keys={dots~with~other~sep={#1}}},
+ {arg~...~with~other~sep}{set~arg~keys={dots~with~other~sep={#1}}},
+ {arg~slot~with~other~sep}{set~arg~keys={slot~with~other~sep={#1}}},
+ {arg~-~with~other~sep}{set~arg~keys={slot~with~other~sep={#1}}},
},
- definekeys[2]={
- {argwithothersep}{setargkeys={othersep={#1}{#2}}},
+ define~keys[2]={
+ {arg~with~other~sep}{set~arg~keys={other~sep={#1}{#2}}},
},
- setargsep={,},
- setargslot={ {-} },
- setargdots={ \dots },
+ set~arg~sep={,},
+ set~arg~slot={ {-} },
+ set~arg~dots={ \dots },
% Parentheses:
- definekeys={
- {par}{usepar=true},
- {neverpar}{usepar=never},
- {nopar}{usepar=false},
+ define~keys={
+ {par}{use~par=true},
+ {never~par}{use~par=never},
+ {no~par}{use~par=false},
},
- definekeys[1]={
+ define~keys[1]={
{par}{
execute={
- \semantex_data_tl_set:nnn { ##1 } { parsize } { #1 }
+ \semantex_data_tl_set:nnn { ##1 } { par~size } { #1 }
\semantex_data_bool_set_true:nn { ##1 } { par }
},
},
- {parsize}{
+ {par~size}{
execute={
- \semantex_data_tl_set:nnn { ##1 } { parsize } { #1 }
+ \semantex_data_tl_set:nnn { ##1 } { par~size } { #1 }
},
},
- {leftpar}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { leftpar } { #1 } },
+ {left~par}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { left~par } { #1 } },
},
- {rightpar}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { rightpar } { #1 } },
+ {right~par}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { right~par } { #1 } },
},
- {usepar}{
- strifeqTF={#1}{true}
+ {use~par}{
+ str~if~eq~TF={#1}{true}
{
- boolsettrue={par},
- boolsetfalse={flexpar},
+ bool~set~true=par,
+ bool~set~false=flex~par,
}
{
- strifeqTF={#1}{false}
+ str~if~eq~TF={#1}{false}
{
- boolsetfalse={par},
- boolsettrue={flexpar},
+ bool~set~false=par,
+ bool~set~true=flex~par,
}
{
- strifeqTF={#1}{never}
+ str~if~eq~TF={#1}{never}
{
- boolsetfalse={par},
- boolsetfalse={flexpar},
+ bool~set~false=par,
+ bool~set~false=flex~par,
}
{
- ERRORkeyvaluenotfound={usepar}{#1},
+ ERROR~key~value~not~found={use~par}{#1},
},
},
},
},
},
- leftpar=(,
- rightpar=),
+ left~par=(,
+ right~par=),
par=normal,
% Accents, primes, bullets, etc.:
- definekeys={
- {smash}{command=\smash},
- {prime}{upper={\prime},nextupperwithsep=false},
+ define~keys={
+ {smash}{return,command=\smash},
+ {prime}{upper={\prime},next~upper~with~sep=false},
{'}{prime},
{''}{prime,prime},
{'''}{prime,prime,prime},
},
% Upper indices:
- dataprovide=upper,
- boolprovide=nextupperwithsep,
- intprovide=numberofupperindices,
- dataprovide=preupper,
- dataprovide=postupper,
- definekeys={
- {upperslot}{ setkeysx={ upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } } },
- {upper-}{upperslot},
- {sepupperslot}{ setkeysx={ sepupper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } } },
- {sepupper-}{sepupperslot},
- {commaupperslot}{ setkeysx={ commaupper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } } },
- {commaupper-}{commaupperslot},
- {upperdots}{ setkeysx={ upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } } },
- {upper...}{upperdots},
- {sepupperdots}{ setkeysx={ sepupper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } } },
- {sepupper...}{sepupperdots},
- {commaupperdots}{ setkeysx={ commaupper=\semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } } },
- {commaupper...}{commaupperdots},
- {clearupper}{
+ data~provide=upper,
+ bool~provide=next~upper~with~sep,
+ int~provide=number~of~upper~indices,
+ data~provide=pre~upper,
+ data~provide=post~upper,
+ define~keys={
+ {upper~slot}{ set~keys~x={ upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } } },
+ {upper~-}{upper~slot},
+ {sep~upper~slot}{ set~keys~x={ sep~upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } } },
+ {sep~upper~-}{sep~upper~slot},
+ {comma~upper~slot}{ set~keys~x={ comma~upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } } },
+ {comma~upper~-}{comma~upper~slot},
+ {upper~dots}{ set~keys~x={ upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } } },
+ {upper~...}{upper~dots},
+ {sep~upper~dots}{ set~keys~x={ sep~upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } } },
+ {sep~upper~...}{sep~upper~dots},
+ {comma~upper~dots}{ set~keys~x={ comma~upper=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } } },
+ {comma~upper~...}{comma~upper~dots},
+ {clear~upper}{
execute={
\semantex_data_tl_clear:nn { ##1 } { upper }
- \semantex_data_bool_set_false:nn { ##1 } { nextupperwithsep }
- \semantex_data_int_clear:nn { ##1 } { numberofupperindices }
+ \semantex_data_bool_set_false:nn { ##1 } { next~upper~with~sep }
+ \semantex_data_int_clear:nn { ##1 } { number~of~upper~indices }
},
},
- {clearpreupper}{
- execute={ \semantex_data_tl_clear:nn { ##1 } { preupper } },
+ {clear~pre~upper}{
+ execute={ \semantex_data_tl_clear:nn { ##1 } { pre~upper } },
},
- {clearpostupper}{
- execute={ \semantex_data_tl_clear:nn { ##1 } { postupper } },
+ {clear~post~upper}{
+ execute={ \semantex_data_tl_clear:nn { ##1 } { post~upper } },
},
- {upper*}{upper=\SemantexBullet},
- {upper**}{upper=\SemantexDoubleBullet},
- {sepupper*}{sepupper=\SemantexBullet},
- {sepupper**}{sepupper=\SemantexDoubleBullet},
- {commaupper*}{commaupper=\SemantexBullet},
- {commaupper**}{commaupper=\SemantexDoubleBullet},
+ {upper~*}{upper=\SemantexBullet},
+ {upper~**}{upper=\SemantexDoubleBullet},
+ {sep~upper~*}{sep~upper=\SemantexBullet},
+ {sep~upper~**}{sep~upper=\SemantexDoubleBullet},
+ {comma~upper~*}{comma~upper=\SemantexBullet},
+ {comma~upper~**}{comma~upper=\SemantexDoubleBullet},
},
- definekeys[1]={
+ define~keys[1]={
{upper}{
execute={
\tl_if_blank:nF { #1 }
{
\semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 }
- \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices }
}
},
},
- {sepupper}{
+ {sep~upper}{
execute={
\tl_if_blank:nF { #1 }
{
- \semantex_data_bool_get:nnTF { ##1 } { nextupperwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~upper~with~sep }
{
\semantex_data_tl_put_right:nnx { ##1 } { upper }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { uppersep } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~sep } }
\semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 }
}
{
\semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 }
}
- \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices }
}
},
},
- {commaupper}{
+ {comma~upper}{
execute={
\tl_if_blank:nF{#1}
{
- \semantex_data_bool_get:nnTF { ##1 } { nextupperwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~upper~with~sep }
{
\semantex_data_tl_put_right:nnn { ##1 } { upper } { , #1 }
}
{
\semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 }
}
- \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices }
}
}
},
- {preupper}{
+ {pre~upper}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_right:nnn { ##1 } { preupper } { #1 }
+ \semantex_data_tl_put_right:nnn { ##1 } { pre~upper } { #1 }
}
},
},
- {postupper}{
+ {post~upper}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_left:nnn { ##1 } { postupper } { #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { post~upper } { #1 }
}
},
},
- {upperputleft}{
+ {upper~put~left}{
execute={
\tl_if_blank:nF { #1 }
{
\semantex_data_tl_put_left:nnn { ##1 } { upper } { #1 }
- \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices }
}
},
},
- {setupperslot}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { upperslot } { #1 } },
+ {set~upper~slot}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { upper~slot } { #1 } },
},
- {upperslotwithothersep}{
+ {upper~slot~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { upperwithothersep }
+ \semantex_valuekey:nnx { ##1 } { upper~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } }
}
},
},
- {upper-withothersep}{
+ {upper~-~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { upperwithothersep }
+ \semantex_valuekey:nnx { ##1 } { upper~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperslot } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~slot } }
}
},
},
- {setupperdots}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { upperdots } { #1 } },
+ {set~upper~dots}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { upper~dots } { #1 } },
},
- {upperdotswithothersep}{
+ {upper~dots~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { upperwithothersep }
+ \semantex_valuekey:nnx { ##1 } { upper~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } }
}
},
},
- {upper...withothersep}{
+ {upper~...~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { upperwithothersep }
+ \semantex_valuekey:nnx { ##1 } { upper~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~dots } }
}
},
},
- {upper*withothersep}{upperwithothersep={#1}{\SemantexBullet}},
- {upper**withothersep}{upperwithothersep={#1}{\SemantexDoubleBullet}},
- {setuppersep}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { uppersep } { #1 } },
+ {upper~*~with~other~sep}{upper~with~other~sep={#1}{\SemantexBullet}},
+ {upper~**~with~other~sep}{upper~with~other~sep={#1}{\SemantexDoubleBullet}},
+ {set~upper~sep}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { upper~sep } { #1 } },
},
- {nextupperwithsep}{
- strifeqTF={#1}{false}
+ {next~upper~with~sep}{
+ str~if~eq~TF={#1}{false}
{
- boolsetfalse={nextupperwithsep},
+ bool~set~false={next~upper~with~sep},
}
{
- strifeqTF={#1}{true}
+ str~if~eq~TF={#1}{true}
{
- boolsettrue={nextupperwithsep},
+ bool~set~true={next~upper~with~sep},
}
{
- ERRORkeyvaluenotfound={nextupperwithsep}{#1},
+ ERROR~key~value~not~found={next~upper~with~sep}{#1},
},
},
},
},
- definekeys[2]={
- {upperwithothersep}{
+ define~keys[2]={
+ {upper~with~other~sep}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { nextupperwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~upper~with~sep }
{ \semantex_data_tl_put_right:nnn { ##1 } { upper } { #1 #2 } }
{ \semantex_data_tl_put_right:nnn { ##1 } { upper } { #2 } }
- \semantex_data_bool_set_true:nn { ##1 } { nextupperwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~indices }
},
},
},
- setuppersep={ , },
- setupperdots={ \dots },
- setupperslot={ {-} },
+ set~upper~sep={ , },
+ set~upper~dots={ \dots },
+ set~upper~slot={ {-} },
% Lower indices:
- dataprovide=lower,
- boolprovide=nextlowerwithsep,
- intprovide=numberoflowerindices,
- dataprovide=prelower,
- dataprovide=postlower,
- definekeys={
- {lowerslot}{ setkeysx={ lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } } },
- {lower-}{lowerslot},
- {seplowerslot}{ setkeysx={ seplower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } } },
- {seplower-}{seplowerslot},
- {commalowerslot}{ setkeysx={ commalower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } } },
- {commalower-}{commalowerslot},
- {lowerdots}{ setkeysx={ lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } } },
- {lower...}{lowerdots},
- {seplowerdots}{ setkeysx={ seplower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } } },
- {seplower...}{seplowerdots},
- {commalowerdots}{ setkeysx={ commalower=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } } },
- {commalower...}{commalowerdots},
- {clearlower}{
+ data~provide=lower,
+ bool~provide=next~lower~with~sep,
+ int~provide=number~of~lower~indices,
+ data~provide=pre~lower,
+ data~provide=post~lower,
+ define~keys={
+ {lower~slot}{ set~keys~x={ lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } } },
+ {lower~-}{lower~slot},
+ {sep~lower~slot}{ set~keys~x={ sep~lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } } },
+ {sep~lower~-}{sep~lower~slot},
+ {comma~lower~slot}{ set~keys~x={ comma~lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } } },
+ {comma~lower~-}{comma~lower~slot},
+ {lower~dots}{ set~keys~x={ lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } } },
+ {lower~...}{lower~dots},
+ {sep~lower~dots}{ set~keys~x={ sep~lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } } },
+ {sep~lower~...}{sep~lower~dots},
+ {comma~lower~dots}{ set~keys~x={ comma~lower=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } } },
+ {comma~lower~...}{comma~lower~dots},
+ {clear~lower}{
execute={
\semantex_data_tl_clear:nn { ##1 } { lower }
- \semantex_data_bool_set_false:nn { ##1 } { nextlowerwithsep }
- \semantex_data_int_clear:nn { ##1 } { numberoflowerindices }
+ \semantex_data_bool_set_false:nn { ##1 } { next~lower~with~sep }
+ \semantex_data_int_clear:nn { ##1 } { number~of~lower~indices }
},
},
- {clearprelower}{
- execute={ \semantex_data_tl_clear:nn { ##1 } { prelower } },
+ {clear~pre~lower}{
+ execute={ \semantex_data_tl_clear:nn { ##1 } { pre~lower } },
},
- {clearpostlower}{
- execute={ \semantex_data_tl_clear:nn { ##1 } { postlower } },
+ {clear~post~lower}{
+ execute={ \semantex_data_tl_clear:nn { ##1 } { post~lower } },
},
- {lower*}{lower=\SemantexBullet},
- {lower**}{lower=\SemantexDoubleBullet},
- {seplower*}{seplower=\SemantexBullet},
- {seplower**}{seplower=\SemantexDoubleBullet},
- {commalower*}{commalower=\SemantexBullet},
- {commalower**}{commalower=\SemantexDoubleBullet},
+ {lower~**}{lower=\SemantexBullet},
+ {lower~***}{lower=\SemantexDoubleBullet},
+ {sep~lower~**}{sep~lower=\SemantexBullet},
+ {sep~lower~***}{sep~lower=\SemantexDoubleBullet},
+ {comma~lower~**}{comma~lower=\SemantexBullet},
+ {comma~lower~***}{comma~lower=\SemantexDoubleBullet},
},
- definekeys[1]={
+ define~keys[1]={
{lower}{
execute={
\tl_if_blank:nF{#1}{
\semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 }
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices }
}
},
},
- {seplower}{
+ {sep~lower}{
execute={
\tl_if_blank:nF { #1 }
{
- \semantex_data_bool_get:nnTF { ##1 } { nextlowerwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~lower~with~sep }
{
\semantex_data_tl_put_right:nnx { ##1 } { lower }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowersep } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~sep } }
\semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 }
}
{
\semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 }
}
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices }
}
},
},
- {commalower}{
+ {comma~lower}{
execute={
\tl_if_blank:nF{#1}
{
- \semantex_data_bool_get:nnTF { ##1 } { nextlowerwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~lower~with~sep }
{
\semantex_data_tl_put_right:nnn { ##1 } { lower } { , #1 }
}
{
\semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 }
}
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices }
}
}
},
- {prelower}{
+ {pre~lower}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_right:nnn { ##1 } { prelower } { #1 }
+ \semantex_data_tl_put_right:nnn { ##1 } { pre~lower } { #1 }
}
},
},
- {postlower}{
+ {post~lower}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_left:nnn { ##1 } { postlower } { #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { post~lower } { #1 }
}
},
},
- {lowerputleft}{
+ {lower~put~left}{
execute={
\tl_if_blank:nF { #1 }
{
\semantex_data_tl_put_left:nnn { ##1 } { lower } { #1 }
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices }
}
},
},
- {setlowerslot}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { lowerslot } { #1 } },
+ {set~lower~slot}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { lower~slot } { #1 } },
},
- {lowerslotwithothersep}{
+ {lower~slot~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { lowerwithothersep }
+ \semantex_valuekey:nnx { ##1 } { lower~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } }
}
},
},
- {lower-withothersep}{
+ {lower~-~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { lowerwithothersep }
+ \semantex_valuekey:nnx { ##1 } { lower~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerslot } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~slot } }
}
},
},
- {setlowerdots}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { lowerdots } { #1 } },
+ {set~lower~dots}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { lower~dots } { #1 } },
},
- {lowerdotswithothersep}{
+ {lower~dots~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { lowerwithothersep }
+ \semantex_valuekey:nnx { ##1 } { lower~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } }
}
},
},
- {lower...withothersep}{
+ {lower~...~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { lowerwithothersep }
+ \semantex_valuekey:nnx { ##1 } { lower~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~dots } }
}
},
},
- {lower*withothersep}{lowerwithothersep={#1}{\SemantexBullet}},
- {lower**withothersep}{lowerwithothersep={#1}{\SemantexDoubleBullet}},
- {setlowersep}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { lowersep } { #1 } },
+ {lower~**~with~other~sep}{lower~with~other~sep={#1}{\SemantexBullet}},
+ {lower~***~with~other~sep}{lower~with~other~sep={#1}{\SemantexDoubleBullet}},
+ {set~lower~sep}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { lower~sep } { #1 } },
},
- {nextlowerwithsep}{
- strifeqTF={#1}{false}
+ {next~lower~with~sep}{
+ str~if~eq~TF={#1}{false}
{
- boolsetfalse={nextlowerwithsep},
+ bool~set~false={next~lower~with~sep},
}
{
- strifeqTF={#1}{true}
+ str~if~eq~TF={#1}{true}
{
- boolsettrue={nextlowerwithsep},
+ bool~set~true={next~lower~with~sep},
}
{
- ERRORkeyvaluenotfound={nextlowerwithsep}{#1},
+ ERROR~key~value~not~found={next~lower~with~sep}{#1},
},
},
},
},
- definekeys[2]={
- {lowerwithothersep}{
+ define~keys[2]={
+ {lower~with~other~sep}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { nextlowerwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~lower~with~sep }
{ \semantex_data_tl_put_right:nnn { ##1 } { lower } { #1 #2 } }
{ \semantex_data_tl_put_right:nnn { ##1 } { lower } { #2 } }
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~indices }
},
},
},
- setlowersep={ , },
- setlowerdots={ \dots },
- setlowerslot={ {-} },
+ set~lower~sep={ , },
+ set~lower~dots={ \dots },
+ set~lower~slot={ {-} },
% Upper left indices:
- dataprovide=upperleft,
- intprovide=nextupperleftwithsep,
- intprovide=numberofupperleftindices,
- dataprovide=preupperleft,
- dataprovide=postupperleft,
- definekeys={
- {upperleftslot}{ setkeysx={ upperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } } },
- {upperleft-}{upperleftslot},
- {sepupperleftslot}{ setkeysx={ sepupperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } } },
- {sepupperleft-}{sepupperleftslot},
- {commaupperleftslot}{ setkeysx={ commaupperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } } },
- {commaupperleft-}{commaupperleftslot},
- {upperleftdots}{ setkeysx={ upperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } } },
- {upperleft...}{upperleftdots},
- {sepupperleftdots}{ setkeysx={ sepupperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } } },
- {sepupperleft...}{sepupperleftdots},
- {commaupperleftdots}{ setkeysx={ commaupperleft=\semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } } },
- {commaupperleft...}{commaupperleftdots},
- {clearupperleft}{
+ data~provide=upper~left,
+ int~provide=next~upper~left~with~sep,
+ int~provide=number~of~upper~left~indices,
+ data~provide=pre~upper~left,
+ data~provide=post~upper~left,
+ define~keys={
+ {upper~left~slot}{ set~keys~x={ upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } },
+ {upper~left~-}{upper~left~slot},
+ {sep~upper~left~slot}{ set~keys~x={ sep~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } },
+ {sep~upper~left~-}{sep~upper~left~slot},
+ {comma~upper~left~slot}{ set~keys~x={ comma~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } },
+ {comma~upper~left~-}{comma~upper~left~slot},
+ {lower~left~dots}{ set~keys~x={ upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
+ {upper~left~...}{lower~left~dots},
+ {sep~lower~left~dots}{ set~keys~x={ sep~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
+ {sep~upper~left~...}{sep~lower~left~dots},
+ {comma~lower~left~dots}{ set~keys~x={ comma~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
+ {comma~upper~left~...}{comma~lower~left~dots},
+ {clear~upper~left}{
execute={
- \semantex_data_tl_clear:nn { ##1 } { upperleft }
- \semantex_data_bool_set_false:nn { ##1 } { nextupperleftwithsep }
- \semantex_data_int_clear:nn { ##1 } { numberofupperleftindices }
+ \semantex_data_tl_clear:nn { ##1 } { upper~left }
+ \semantex_data_bool_set_false:nn { ##1 } { next~upper~left~with~sep }
+ \semantex_data_int_clear:nn { ##1 } { number~of~upper~left~indices }
},
},
- {clearpreupperleft}{
- execute={ \semantex_data_tl_clear:nn { ##1 } { preupperleft } },
+ {clear~pre~upper~left}{
+ execute={ \semantex_data_tl_clear:nn { ##1 } { pre~upper~left } },
},
- {clearpostupperleft}{
- execute={ \semantex_data_tl_clear:nn { ##1 } { postupperleft } },
+ {clear~post~upper~left}{
+ execute={ \semantex_data_tl_clear:nn { ##1 } { post~upper~left } },
},
- {upperleft*}{upperleft=\SemantexBullet},
- {upperleft**}{upperleft=\SemantexDoubleBullet},
- {sepupperleft*}{sepupperleft=\SemantexBullet},
- {sepupperleft**}{sepupperleft=\SemantexDoubleBullet},
- {commaupperleft*}{commaupperleft=\SemantexBullet},
- {commaupperleft**}{commaupperleft=\SemantexDoubleBullet},
+ {upper~left~*}{upper~left=\SemantexBullet},
+ {upper~left~**}{upper~left=\SemantexDoubleBullet},
+ {sep~upper~left~*}{sep~upper~left=\SemantexBullet},
+ {sep~upper~left~**}{sep~upper~left=\SemantexDoubleBullet},
+ {comma~upper~left~*}{comma~upper~left=\SemantexBullet},
+ {comma~upper~left~**}{comma~upper~left=\SemantexDoubleBullet},
},
- definekeys[1]={
- {upperleft}{
+ define~keys[1]={
+ {upper~left}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #1 }
- \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices }
+ \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #1 }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices }
}
},
},
- {sepupperleft}{
+ {sep~upper~left}{
execute={
\tl_if_blank:nF { #1 }
{
- \semantex_data_bool_get:nnTF { ##1 } { nextupperleftwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~upper~left~with~sep }
{
- \semantex_data_tl_put_left:nnx { ##1 } { upperleft }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftsep } }
- \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #1 }
+ \semantex_data_tl_put_left:nnx { ##1 } { upper~left }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~sep } }
+ \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #1 }
}
{
- \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #1 }
}
- \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices }
}
},
},
- {commaupperleft}{
+ {comma~upper~left}{
execute={
\tl_if_blank:nF{#1}
{
- \semantex_data_bool_get:nnTF { ##1 } { nextupperleftwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~upper~left~with~sep }
{
- \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { , #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { , #1 }
}
{
- \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #1 }
}
- \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices }
}
}
},
- {preupperleft}{
+ {pre~upper~left}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_right:nnn { ##1 } { preupperleft } { #1 }
+ \semantex_data_tl_put_right:nnn { ##1 } { pre~upper~left } { #1 }
}
},
},
- {postupperleft}{
+ {post~upper~left}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_left:nnn { ##1 } { postupperleft } { #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { post~upper~left } { #1 }
}
},
},
- {upperleftputright}{
+ {upper~left~put~right}{
execute={
\tl_if_blank:nF { #1 }
{
- \semantex_data_tl_put_right:nnn { ##1 } { upperleft } { #1 }
- \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices }
+ \semantex_data_tl_put_right:nnn { ##1 } { upper~left } { #1 }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices }
}
},
},
- {setupperleftslot}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { upperleftslot } { #1 } },
+ {set~upper~left~slot}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { upper~left~slot } { #1 } },
},
- {upperleftslotwithothersep}{
+ {upper~left~slot~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { upperleftwithothersep }
+ \semantex_valuekey:nnx { ##1 } { upper~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } }
}
},
},
- {upperleft-withothersep}{
+ {upper~left~-~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { upperleftwithothersep }
+ \semantex_valuekey:nnx { ##1 } { upper~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftslot } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } }
}
},
},
- {setupperleftdots}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { upperleftdots } { #1 } },
+ {set~lower~left~dots}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~dots } { #1 } },
},
- {upperleftdotswithothersep}{
+ {lower~left~dots~with~other~sep}{
execute={
- \semantex_valuekey:nnx { upperleftwithothersep }
+ \semantex_valuekey:nnx { upper~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } }
}
},
},
- {upperleft...withothersep}{
+ {upper~left~...~with~other~sep}{
execute={
- \semantex_valuekey:nnx { upperleftwithothersep }
+ \semantex_valuekey:nnx { upper~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { upperleftdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } }
}
},
},
- {upperleft*withothersep}{upperleftwithothersep={#1}{\SemantexBullet}},
- {upperleft**withothersep}{upperleftwithothersep={#1}{\SemantexDoubleBullet}},
- {setupperleftsep}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { upperleftsep } { #1 } },
+ {upper~left~*~with~other~sep}{upper~left~with~other~sep={#1}{\SemantexBullet}},
+ {upper~left~**~with~other~sep}{upper~left~with~other~sep={#1}{\SemantexDoubleBullet}},
+ {set~upper~left~sep}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { upper~left~sep } { #1 } },
},
- {nextupperleftwithsep}{
- strifeqTF={#1}{false}
+ {next~upper~left~with~sep}{
+ str~if~eq~TF={#1}{false}
{
- boolsetfalse={nextupperleftwithsep},
+ bool~set~false=next~upper~left~with~sep,
}
{
- strifeqTF={#1}{true}
+ str~if~eq~TF={#1}{true}
{
- boolsettrue={nextupperleftwithsep},
+ bool~set~true=next~upper~left~with~sep,
}
{
- ERRORkeyvaluenotfound={nextupperleftwithsep}{#1},
+ ERROR~key~value~not~found={next~upper~left~with~sep}{#1},
},
},
},
},
- definekeys[2]={
- {upperleftwithothersep}{
+ define~keys[2]={
+ {upper~left~with~other~sep}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { nextupperleftwithsep }
- { \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #2 #1 } }
- { \semantex_data_tl_put_left:nnn { ##1 } { upperleft } { #2 } }
- \semantex_data_bool_set_true:nn { ##1 } { nextupperleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberofupperleftindices }
+ \semantex_data_bool_get:nnTF { ##1 } { next~upper~left~with~sep }
+ { \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #2 #1 } }
+ { \semantex_data_tl_put_left:nnn { ##1 } { upper~left } { #2 } }
+ \semantex_data_bool_set_true:nn { ##1 } { next~upper~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~upper~left~indices }
},
},
},
- setupperleftsep={ , },
- setupperleftdots={ \dots },
- setupperleftslot={ {-} },
+ set~upper~left~sep={ , },
+ set~lower~left~dots={ \dots },
+ set~upper~left~slot={ {-} },
% Lower left indices:
- dataprovide=lowerleft,
- boolprovide=nextlowerleftwithsep,
- intprovide=numberoflowerleftindices,
- dataprovide=prelowerleft,
- dataprovide=postlowerleft,
- definekeys={
- {lowerleftslot}{ setkeysx={ lowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } } },
- {lowerleft-}{lowerleftslot},
- {seplowerleftslot}{ setkeysx={ seplowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } } },
- {seplowerleft-}{seplowerleftslot},
- {commalowerleftslot}{ setkeysx={ commalowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } } },
- {commalowerleft-}{commalowerleftslot},
- {lowerleftdots}{ setkeysx={ lowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } } },
- {lowerleft...}{lowerleftdots},
- {seplowerleftdots}{ setkeysx={ seplowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } } },
- {seplowerleft...}{seplowerleftdots},
- {commalowerleftdots}{ setkeysx={ commalowerleft=\semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } } },
- {commalowerleft...}{commalowerleftdots},
- {clearlowerleft}{
+ data~provide=lower~left,
+ bool~provide=next~lower~left~with~sep,
+ int~provide=number~of~lower~left~indices,
+ data~provide=pre~lower~left,
+ data~provide=post~lower~left,
+ define~keys={
+ {lower~left~slot}{ set~keys~x={ lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } } },
+ {lower~left~-}{lower~left~slot},
+ {sep~lower~left~slot}{ set~keys~x={ sep~lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } } },
+ {sep~lower~left~-}{sep~lower~left~slot},
+ {comma~lower~left~slot}{ set~keys~x={ comma~lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } } },
+ {comma~lower~left~-}{comma~lower~left~slot},
+ {lower~left~dots}{ set~keys~x={ lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
+ {lower~left~...}{lower~left~dots},
+ {sep~lower~left~dots}{ set~keys~x={ sep~lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
+ {sep~lower~left~...}{sep~lower~left~dots},
+ {comma~lower~left~dots}{ set~keys~x={ comma~lower~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
+ {comma~lower~left~...}{comma~lower~left~dots},
+ {clear~lower~left}{
execute={
- \semantex_data_tl_clear:nn { ##1 } { lowerleft }
- \semantex_data_bool_set_false:nn { ##1 } { nextlowerleftwithsep }
- \semantex_data_int_clear:nn { ##1 } { numberoflowerleftindices }
+ \semantex_data_tl_clear:nn { ##1 } { lower~left }
+ \semantex_data_bool_set_false:nn { ##1 } { next~lower~left~with~sep }
+ \semantex_data_int_clear:nn { ##1 } { number~of~lower~left~indices }
},
},
- {clearprelowerleft}{
- execute={ \semantex_data_tl_clear:nn { ##1 } { prelowerleft } },
+ {clear~pre~lower~left}{
+ execute={ \semantex_data_tl_clear:nn { ##1 } { pre~lower~left } },
},
- {clearpostlowerleft}{
- execute={ \semantex_data_tl_clear:nn { ##1 } { postlowerleft } },
+ {clear~post~lower~left}{
+ execute={ \semantex_data_tl_clear:nn { ##1 } { post~lower~left } },
},
- {lowerleft*}{lowerleft=\SemantexBullet},
- {lowerleft**}{lowerleft=\SemantexDoubleBullet},
- {seplowerleft*}{seplowerleft=\SemantexBullet},
- {seplowerleft**}{seplowerleft=\SemantexDoubleBullet},
- {commalowerleft*}{commalowerleft=\SemantexBullet},
- {commalowerleft**}{commalowerleft=\SemantexDoubleBullet},
+ {lower~left~*}{lower~left=\SemantexBullet},
+ {lower~left~**}{lower~left=\SemantexDoubleBullet},
+ {sep~lower~left~*}{sep~lower~left=\SemantexBullet},
+ {sep~lower~left~**}{sep~lower~left=\SemantexDoubleBullet},
+ {comma~lower~left~*}{comma~lower~left=\SemantexBullet},
+ {comma~lower~left~**}{comma~lower~left=\SemantexDoubleBullet},
},
- definekeys[1]={
- {lowerleft}{
+ define~keys[1]={
+ {lower~left}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #1 }
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices }
+ \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #1 }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices }
}
},
},
- {seplowerleft}{
+ {sep~lower~left}{
execute={
\tl_if_blank:nF { #1 }
{
- \semantex_data_bool_get:nnTF { ##1 } { nextlowerleftwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~lower~left~with~sep }
{
- \semantex_data_tl_put_left:nnx { ##1 } { lowerleft }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftsep } }
- \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #1 }
+ \semantex_data_tl_put_left:nnx { ##1 } { lower~left }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~sep } }
+ \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #1 }
}
{
- \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #1 }
}
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices }
}
},
},
- {commalowerleft}{
+ {comma~lower~left}{
execute={
\tl_if_blank:nF{#1}
{
- \semantex_data_bool_get:nnTF { ##1 } { nextlowerleftwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~lower~left~with~sep }
{
- \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { , #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { , #1 }
}
{
- \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #1 }
}
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices }
}
}
},
- {prelowerleft}{
+ {pre~lower~left}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_right:nnn { ##1 } { prelowerleft } { #1 }
+ \semantex_data_tl_put_right:nnn { ##1 } { pre~lower~left } { #1 }
}
},
},
- {postlowerleft}{
+ {post~lower~left}{
execute={
\tl_if_blank:nF{#1}{
- \semantex_data_tl_put_left:nnn { ##1 } { postlowerleft } { #1 }
+ \semantex_data_tl_put_left:nnn { ##1 } { post~lower~left } { #1 }
}
},
},
- {lowerleftputright}{
+ {lower~left~put~right}{
execute={
\tl_if_blank:nF { #1 }
{
- \semantex_data_tl_put_right:nnn { ##1 } { lowerleft } { #1 }
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices }
+ \semantex_data_tl_put_right:nnn { ##1 } { lower~left } { #1 }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices }
}
},
},
- {setlowerleftslot}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { lowerleftslot } { #1 } },
+ {set~lower~left~slot}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~slot } { #1 } },
},
- {lowerleftslotwithothersep}{
+ {lower~left~slot~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { lowerleftwithothersep }
+ \semantex_valuekey:nnx { ##1 } { lower~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } },
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } },
}
},
},
- {lowerleft-withothersep}{
+ {lower~left~-~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { lowerleftwithothersep }
+ \semantex_valuekey:nnx { ##1 } { lower~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftslot } },
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~slot } },
}
},
},
- {setlowerleftdots}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { lowerleftdots } { #1 } },
+ {set~lower~left~dots}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~dots } { #1 } },
},
- {lowerleftdotswithothersep}{
+ {lower~left~dots~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { lowerleftwithothersep }
+ \semantex_valuekey:nnx { ##1 } { lower~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } }
}
},
},
- {lowerleft...withothersep}{
+ {lower~left~...~with~other~sep}{
execute={
- \semantex_valuekey:nnx { ##1 } { lowerleftwithothersep }
+ \semantex_valuekey:nnx { ##1 } { lower~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lowerleftdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } }
}
},
},
- {lowerleft*withothersep}{lowerleftwithothersep={#1}{\SemantexBullet}},
- {lowerleft**withothersep}{lowerleftwithothersep={#1}{\SemantexDoubleBullet}},
- {setlowerleftsep}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { lowerleftsep } { #1 } },
+ {lower~left~*~with~other~sep}{lower~left~with~other~sep={#1}{\SemantexBullet}},
+ {lower~left~**~with~other~sep}{lower~left~with~other~sep={#1}{\SemantexDoubleBullet}},
+ {set~lower~left~sep}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~sep } { #1 } },
},
- {nextlowerleftwithsep}{
- strifeqTF={#1}{false}
+ {next~lower~left~with~sep}{
+ str~if~eq~TF={#1}{false}
{
- boolsetfalse={nextlowerleftwithsep},
+ bool~set~false=next~lower~left~with~sep,
}
{
- strifeqTF={#1}{true}
+ str~if~eq~TF={#1}{true}
{
- boolsettrue={nextlowerleftwithsep},
+ bool~set~true=next~lower~left~with~sep,
}
{
- ERRORkeyvaluenotfound={nextlowerleftwithsep}{#1},
+ ERROR~key~value~not~found={next~lower~left~with~sep}{#1},
},
},
},
},
- definekeys[2]={
- {lowerleftwithothersep}{
+ define~keys[2]={
+ {lower~left~with~other~sep}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { nextlowerleftwithsep }
- { \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #2 #1 } }
- { \semantex_data_tl_put_left:nnn { ##1 } { lowerleft } { #2 } }
- \semantex_data_bool_set_true:nn { ##1 } { nextlowerleftwithsep }
- \semantex_data_int_incr:nn { ##1 } { numberoflowerleftindices }
+ \semantex_data_bool_get:nnTF { ##1 } { next~lower~left~with~sep }
+ { \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #2 #1 } }
+ { \semantex_data_tl_put_left:nnn { ##1 } { lower~left } { #2 } }
+ \semantex_data_bool_set_true:nn { ##1 } { next~lower~left~with~sep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~lower~left~indices }
},
},
},
- setlowerleftsep={ , },
- setlowerleftdots={ \dots },
- setlowerleftslot={ {-} },
+ set~lower~left~sep={ , },
+ set~lower~left~dots={ \dots },
+ set~lower~left~slot={ {-} },
% The "d" index:
- definekeys={
- {dslot}{
- boolifTF={uppergrading}
- { upperslot }
- { lowerslot },
- },
- {d-}{dslot},
- {sepdslot}{
- boolifTF={uppergrading}
- { sepupperslot }
- { seplowerslot },
- },
- {sepd-}{sepdslot},
- {commadslot}{
- boolifTF={uppergrading}
- { commaupperslot }
- { commalowerslot },
- },
- {commad-}{commadslot},
- {ddots}{
- boolifTF={uppergrading}
- { upperdots }
- { lowerdots },
- },
- {d...}{ddots},
- {sepddots}{
- boolifTF={uppergrading}
- { sepupperdots }
- { seplowerdots },
- },
- {sepd...}{sepddots},
- {commaddots}{
- boolifTF={uppergrading}
- { commaupperdots }
- { commalowerdots },
- },
- {commad...}{commaddots},
- {cleard}{
- boolifTF={uppergrading}
- { clearupper }
- { clearlower },
- },
- {clearpred}{
- boolifTF={uppergrading}
- { clearpreupper }
- { clearprelower },
- },
- {clearpostd}{
- boolifTF={uppergrading}
- { clearpostupper }
- { clearpostlower },
- },
- {d*}{
- boolifTF={uppergrading}
- { upper* }
- { lower* },
- },
- {d**}{
- boolifTF={uppergrading}
- { upper** }
- { lower** },
- },
- {sepd*}{
- boolifTF={uppergrading}
- { sepupper* }
- { seplower* },
- },
- {sepd**}{
- boolifTF={uppergrading}
- { sepupper** }
- { seplower** },
- },
- {commad*}{
- boolifTF={uppergrading}
- { commaupper* }
- { commalower* },
- },
- {commad**}{
- boolifTF={uppergrading}
- { commaupper** }
- { commalower** },
+ define~keys={
+ {d~slot}{
+ bool~if~TF={upper~grading}
+ { upper~slot }
+ { lower~slot },
+ },
+ {d~-}{d~slot},
+ {sep~d~slot}{
+ bool~if~TF={upper~grading}
+ { sep~upper~slot }
+ { sep~lower~slot },
+ },
+ {sep~d~-}{sep~d~slot},
+ {comma~d~slot}{
+ bool~if~TF={upper~grading}
+ { comma~upper~slot }
+ { comma~lower~slot },
+ },
+ {comma~d~-}{comma~d~slot},
+ {d~dots}{
+ bool~if~TF={upper~grading}
+ { upper~dots }
+ { lower~dots },
+ },
+ {d~...}{d~dots},
+ {sep~d~dots}{
+ bool~if~TF={upper~grading}
+ { sep~upper~dots }
+ { sep~lower~dots },
+ },
+ {sep~d~...}{sep~d~dots},
+ {comma~d~dots}{
+ bool~if~TF={upper~grading}
+ { comma~upper~dots }
+ { comma~lower~dots },
+ },
+ {comma~d~...}{comma~d~dots},
+ {clear~d}{
+ bool~if~TF={upper~grading}
+ { clear~upper }
+ { clear~lower },
+ },
+ {clear~pre~d}{
+ bool~if~TF={upper~grading}
+ { clear~pre~upper }
+ { clear~pre~lower },
+ },
+ {clear~post~d}{
+ bool~if~TF={upper~grading}
+ { clear~post~upper }
+ { clear~post~lower },
+ },
+ {d~*}{
+ bool~if~TF={upper~grading}
+ { upper~* }
+ { lower~** },
+ },
+ {d~**}{
+ bool~if~TF={upper~grading}
+ { upper~** }
+ { lower~*** },
+ },
+ {sep~d~*}{
+ bool~if~TF={upper~grading}
+ { sep~upper~* }
+ { sep~lower~** },
+ },
+ {sep~d~**}{
+ bool~if~TF={upper~grading}
+ { sep~upper~** }
+ { sep~lower~*** },
+ },
+ {comma~d~*}{
+ bool~if~TF={upper~grading}
+ { comma~upper~* }
+ { comma~lower~** },
+ },
+ {comma~d~**}{
+ bool~if~TF={upper~grading}
+ { comma~upper~** }
+ { comma~lower~*** },
},
},
- definekeys[1]={
+ define~keys[1]={
{d}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { uppergrading }
+ \semantex_data_bool_get:nnTF { ##1 } { upper~grading }
{ \semantex_valuekey:nnn { ##1 } { upper } { #1 } }
{ \semantex_valuekey:nnn { ##1 } { lower } { #1 } }
},
},
- {sepd}{
+ {sep~d}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { uppergrading }
- { \semantex_valuekey:nnn { ##1 } { sepupper } { #1 } }
- { \semantex_valuekey:nnn { ##1 } { seplower } { #1 } }
+ \semantex_data_bool_get:nnTF { ##1 } { upper~grading }
+ { \semantex_valuekey:nnn { ##1 } { sep~upper } { #1 } }
+ { \semantex_valuekey:nnn { ##1 } { sep~lower } { #1 } }
},
},
- {commad}{
+ {comma~d}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { uppergrading }
- { \semantex_valuekey:nnn { ##1 } { commaupper } { #1 } }
- { \semantex_valuekey:nnn { ##1 } { commalower } { #1 } }
+ \semantex_data_bool_get:nnTF { ##1 } { upper~grading }
+ { \semantex_valuekey:nnn { ##1 } { comma~upper } { #1 } }
+ { \semantex_valuekey:nnn { ##1 } { comma~lower } { #1 } }
},
},
- {pred}{
- boolifTF={uppergrading}
+ {pre~d}{
+ bool~if~TF={upper~grading}
{
- preupper={#1},
+ pre~upper={#1},
}
{
- prelower={#1},
+ pre~lower={#1},
},
},
- {postd}{
- boolifTF={uppergrading}
+ {post~d}{
+ bool~if~TF={upper~grading}
{
- postupper={#1},
+ post~upper={#1},
}
{
- postlower={#1},
+ post~lower={#1},
},
},
- {dputleft}{
- boolifTF={uppergrading}
+ {d~put~left}{
+ bool~if~TF={upper~grading}
{
- upperputleft={#1},
+ upper~put~left={#1},
}
{
- lowerputleft={#1},
+ lower~put~left={#1},
},
},
- {setdslot}{
- boolifTF={uppergrading}
+ {set~d~slot}{
+ bool~if~TF={upper~grading}
{
- setupperslot={#1},
+ set~upper~slot={#1},
}
{
- setlowerslot={#1},
+ set~lower~slot={#1},
}
},
- {dslotwithothersep}{
- boolifTF={uppergrading}
+ {d~slot~with~other~sep}{
+ bool~if~TF={upper~grading}
{
- upperslotwithothersep={#1},
+ upper~slot~with~other~sep={#1},
}
{
- lowerslotwithothersep={#1},
+ lower~slot~with~other~sep={#1},
},
},
- {d-withothersep}{
- dslotwithothersep={#1},
+ {d~-~with~other~sep}{
+ d~slot~with~other~sep={#1},
},
- {setddots}{
- boolifTF={uppergrading}
+ {set~d~dots}{
+ bool~if~TF={upper~grading}
{
- setupperdots={#1},
+ set~upper~dots={#1},
}
{
- setlowerdots={#1},
+ set~lower~dots={#1},
}
},
- {ddotswithothersep}{
- boolifTF={uppergrading}
+ {d~dots~with~other~sep}{
+ bool~if~TF={upper~grading}
{
- upperdotswithothersep={#1},
+ upper~dots~with~other~sep={#1},
}
{
- lowerdotswithothersep={#1},
+ lower~dots~with~other~sep={#1},
},
},
- {d...withothersep}{
- ddotswithothersep={#1},
+ {d~...~with~other~sep}{
+ d~dots~with~other~sep={#1},
},
- {d*withothersep}{
- boolifTF={uppergrading}
- { upper*withothersep={#1} }
- { lower*withothersep={#1} },
+ {d~*~with~other~sep}{
+ bool~if~TF={upper~grading}
+ { upper~*~with~other~sep={#1} }
+ { lower~**~with~other~sep={#1} },
},
- {d**withothersep}{
- boolifTF={uppergrading}
- { upper**withothersep={#1} }
- { lower**withothersep={#1} },
+ {d~**~with~other~sep}{
+ bool~if~TF={upper~grading}
+ { upper~**~with~other~sep={#1} }
+ { lower~***~with~other~sep={#1} },
},
- {setdsep}{
- boolifTF={uppergrading}
+ {set~d~sep}{
+ bool~if~TF={upper~grading}
{
- setuppersep={#1},
+ set~upper~sep={#1},
}
{
- setlowersep={#1},
+ set~lower~sep={#1},
},
},
- {nextdwithsep}{
- strifeqTF={#1}{true}
+ {next~d~with~sep}{
+ str~if~eq~TF={#1}{true}
{
- boolifTF={uppergrading}
+ bool~if~TF={upper~grading}
{
- nextupperwithsep=true,
+ next~upper~with~sep=true,
}
{
- nextlowerwithsep=true,
+ next~lower~with~sep=true,
},
}
{
- strifeqTF={#1}{false}
+ str~if~eq~TF={#1}{false}
{
- boolifTF={uppergrading}
+ bool~if~TF={upper~grading}
{
- nextupperwithsep=false,
+ next~upper~with~sep=false,
}
{
- nextlowerwithsep=false,
+ next~lower~with~sep=false,
},
}
{
- ERRORkeyvaluenotfound={nextdwithothersep}{#1},
+ ERROR~key~value~not~found={next~d~with~other~sep}{#1},
},
},
},
},
- definekeys[2]={
- {dwithothersep}{
- boolifTF={uppergrading}
+ define~keys[2]={
+ {d~with~other~sep}{
+ bool~if~TF={upper~grading}
{
- upperwithothersep={#1}{#2},
+ upper~with~other~sep={#1}{#2},
}
{
- lowerwithothersep={#1}{#2},
+ lower~with~other~sep={#1}{#2},
},
},
},
% The "i" index:
- definekeys={
- {islot}{
- boolifTF={uppergrading}
- { lowerslot }
- { upperslot },
- },
- {i-}{islot},
- {sepislot}{
- boolifTF={uppergrading}
- { seplowerslot }
- { sepupperslot },
- },
- {sepi-}{sepislot},
- {commaislot}{
- boolifTF={uppergrading}
- { commalowerslot }
- { commaupperslot },
- },
- {commai-}{commaislot},
- {idots}{
- boolifTF={uppergrading}
- { lowerdots }
- { upperdots },
- },
- {i...}{idots},
- {sepidots}{
- boolifTF={uppergrading}
- { seplowerdots }
- { sepupperdots },
- },
- {sepi...}{sepidots},
- {commaidots}{
- boolifTF={uppergrading}
- { commalowerdots }
- { commaupperdots },
- },
- {commai...}{commaidots},
- {cleari}{
- boolifTF={uppergrading}
- { clearlower }
- { clearupper },
- },
- {clearprei}{
- boolifTF={uppergrading}
- { clearprelower }
- { clearpreupper },
- },
- {clearposti}{
- boolifTF={uppergrading}
- { clearpostlower }
- { clearpostupper },
- },
- {i*}{
- boolifTF={uppergrading}
- { lower* }
- { upper* },
- },
- {i**}{
- boolifTF={uppergrading}
- { lower** }
- { upper** },
- },
- {sepi*}{
- boolifTF={uppergrading}
- { seplower* }
- { sepupper* },
- },
- {sepi**}{
- boolifTF={uppergrading}
- { seplower** }
- { sepupper** },
- },
- {commai*}{
- boolifTF={uppergrading}
- { commalower* }
- { commaupper* },
- },
- {commai**}{
- boolifTF={uppergrading}
- { commalower** }
- { commaupper** },
+ define~keys={
+ {i~slot}{
+ bool~if~TF={upper~grading}
+ { lower~slot }
+ { upper~slot },
+ },
+ {i~-}{i~slot},
+ {sep~i~slot}{
+ bool~if~TF={upper~grading}
+ { sep~lower~slot }
+ { sep~upper~slot },
+ },
+ {sep~i~-}{sep~i~slot},
+ {comma~i~slot}{
+ bool~if~TF={upper~grading}
+ { comma~lower~slot }
+ { comma~upper~slot },
+ },
+ {comma~i~-}{comma~i~slot},
+ {i~dots}{
+ bool~if~TF={upper~grading}
+ { lower~dots }
+ { upper~dots },
+ },
+ {i~...}{i~dots},
+ {sep~i~dots}{
+ bool~if~TF={upper~grading}
+ { sep~lower~dots }
+ { sep~upper~dots },
+ },
+ {sep~i~...}{sep~i~dots},
+ {comma~i~dots}{
+ bool~if~TF={upper~grading}
+ { comma~lower~dots }
+ { comma~upper~dots },
+ },
+ {comma~i~...}{comma~i~dots},
+ {clear~i}{
+ bool~if~TF={upper~grading}
+ { clear~lower }
+ { clear~upper },
+ },
+ {clear~pre~i}{
+ bool~if~TF={upper~grading}
+ { clear~pre~lower }
+ { clear~pre~upper },
+ },
+ {clear~post~i}{
+ bool~if~TF={upper~grading}
+ { clear~post~lower }
+ { clear~post~upper },
+ },
+ {i~*}{
+ bool~if~TF={upper~grading}
+ { lower~** }
+ { upper~* },
+ },
+ {i~**}{
+ bool~if~TF={upper~grading}
+ { lower~*** }
+ { upper~** },
+ },
+ {sep~i~*}{
+ bool~if~TF={upper~grading}
+ { sep~lower~** }
+ { sep~upper~* },
+ },
+ {sep~i~**}{
+ bool~if~TF={upper~grading}
+ { sep~lower~*** }
+ { sep~upper~** },
+ },
+ {comma~i~*}{
+ bool~if~TF={upper~grading}
+ { comma~lower~** }
+ { comma~upper~* },
+ },
+ {comma~i~**}{
+ bool~if~TF={upper~grading}
+ { comma~lower~*** }
+ { comma~upper~** },
},
},
- definekeys[1]={
+ define~keys[1]={
{i}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { uppergrading }
+ \semantex_data_bool_get:nnTF { ##1 } { upper~grading }
{ \semantex_valuekey:nnn { ##1 } { lower } { #1 } }
{ \semantex_valuekey:nnn { ##1 } { upper } { #1 } }
},
},
- {sepi}{
+ {sep~i}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { uppergrading }
- { \semantex_valuekey:nnn { ##1 } { seplower } { #1 } }
- { \semantex_valuekey:nnn { ##1 } { sepupper } { #1 } }
+ \semantex_data_bool_get:nnTF { ##1 } { upper~grading }
+ { \semantex_valuekey:nnn { ##1 } { sep~lower } { #1 } }
+ { \semantex_valuekey:nnn { ##1 } { sep~upper } { #1 } }
},
},
- {commai}{
+ {comma~i}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { uppergrading }
- { \semantex_valuekey:nnn { ##1 } { commalower } { #1 } }
- { \semantex_valuekey:nnn { ##1 } { commaupper } { #1 } }
+ \semantex_data_bool_get:nnTF { ##1 } { upper~grading }
+ { \semantex_valuekey:nnn { ##1 } { comma~lower } { #1 } }
+ { \semantex_valuekey:nnn { ##1 } { comma~upper } { #1 } }
},
},
- {prei}{
- boolifTF={uppergrading}
+ {pre~i}{
+ bool~if~TF={upper~grading}
{
- prelower={#1},
+ pre~lower={#1},
}
{
- preupper={#1},
+ pre~upper={#1},
},
},
- {posti}{
- boolifTF={uppergrading}
+ {post~i}{
+ bool~if~TF={upper~grading}
{
- postlower={#1},
+ post~lower={#1},
}
{
- postupper={#1},
+ post~upper={#1},
},
},
- {iputleft}{
- boolifTF={uppergrading}
+ {i~put~left}{
+ bool~if~TF={upper~grading}
{
- lowerputleft={#1},
+ lower~put~left={#1},
}{
- upperputleft={#1},
+ upper~put~left={#1},
},
},
- {setislot}{
- boolifTF={uppergrading}
+ {set~i~slot}{
+ bool~if~TF={upper~grading}
{
- setlowerslot={#1},
+ set~lower~slot={#1},
}
{
- setupperslot={#1},
+ set~upper~slot={#1},
}
},
- {islotwithothersep}{
- boolifTF={uppergrading}
+ {i~slot~with~other~sep}{
+ bool~if~TF={upper~grading}
{
- lowerslotwithothersep={#1},
+ lower~slot~with~other~sep={#1},
}
{
- upperslotwithothersep={#1},
+ upper~slot~with~other~sep={#1},
},
},
- {i-withothersep}{
- islotwithothersep={#1},
+ {i~-~with~other~sep}{
+ i~slot~with~other~sep={#1},
},
- {setidots}{
- boolifTF={uppergrading}
+ {set~i~dots}{
+ bool~if~TF={upper~grading}
{
- setlowerdots={#1},
+ set~lower~dots={#1},
}
{
- setupperdots={#1},
+ set~upper~dots={#1},
}
},
- {idotswithothersep}{
- boolifTF={uppergrading}
+ {i~dots~with~other~sep}{
+ bool~if~TF={upper~grading}
{
- lowerdotswithothersep={#1},
+ lower~dots~with~other~sep={#1},
}
{
- upperdotswithothersep={#1},
+ upper~dots~with~other~sep={#1},
},
},
- {i...withothersep}{
- idotswithothersep={#1},
+ {i~...~with~other~sep}{
+ i~dots~with~other~sep={#1},
},
- {i*withothersep}{
- boolifTF={uppergrading}
- { lower*withothersep={#1} }
- { upper*withothersep={#1} },
+ {i~*~with~other~sep}{
+ bool~if~TF={upper~grading}
+ { lower~**~with~other~sep={#1} }
+ { upper~*~with~other~sep={#1} },
},
- {i**withothersep}{
- boolifTF={uppergrading}
- { lower**withothersep={#1} }
- { upper**withothersep={#1} },
+ {i~**~with~other~sep}{
+ bool~if~TF={upper~grading}
+ { lower~***~with~other~sep={#1} }
+ { upper~**~with~other~sep={#1} },
},
- {setisep}{
- boolifTF={uppergrading}
+ {set~i~sep}{
+ bool~if~TF={upper~grading}
{
- setlowersep={#1},
+ set~lower~sep={#1},
}
{
- setuppersep={#1},
+ set~upper~sep={#1},
},
},
- {nextiwithsep}{
- strifeqTF={#1}{true}
+ {next~i~with~sep}{
+ str~if~eq~TF={#1}{true}
{
- boolifTF={uppergrading}
+ bool~if~TF={upper~grading}
{
- nextlowerwithsep={#1},
+ next~lower~with~sep={#1},
}
{
- nextupperwithsep={#1},
+ next~upper~with~sep={#1},
},
}
{
- strifeqTF={#1}{false}
+ str~if~eq~TF={#1}{false}
{
- boolifTF={uppergrading}
+ bool~if~TF={upper~grading}
{
- nextupperwithsep={#1},
+ next~upper~with~sep={#1},
}
{
- nextlowerwithsep={#1},
+ next~lower~with~sep={#1},
},
}
{
- ERRORkeyvaluenotfound={nextiwithothersep}{#1},
+ ERROR~key~value~not~found={next~i~with~other~sep}{#1},
},
},
},
},
- definekeys[2]={
- {iwithothersep}{
+ define~keys[2]={
+ {i~with~other~sep}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { uppergrading }
- { \semantex_valuekey:nnn { ##1 } { lowerwithothersep } { { #1 } { #2 } } }
- { \semantex_valuekey:nnn { ##1 } { upperwithothersep } { { #1 } { #2 } } }
+ \semantex_data_bool_get:nnTF { ##1 } { upper~grading }
+ { \semantex_valuekey:nnn { ##1 } { lower~with~other~sep } { { #1 } { #2 } } }
+ { \semantex_valuekey:nnn { ##1 } { upper~with~other~sep } { { #1 } { #2 } } }
},
},
},
% Argument keyval interface
- defineargkeys[1]={
+ define~arg~keys[1]={
{execute}{execute={#1}},
- {setkeys}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } },
- {keysset}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } },
- {setkeysx}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } },
- {keyssetx}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } },
- {setargkeys}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } },
- {argkeysset}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } },
- {setargkeysx}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } },
- {argkeyssetx}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } },
- {setargsinglekeys}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
- {argsinglekeysset}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
- {setargsinglekeysx}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } },
- {argsinglekeyssetx}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } },
- {setoneargsinglekey}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } },
- {oneargsinglekeyset}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } },
- {setoneargsinglekeyx}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } },
- {oneargsinglekeysetx}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } },
- {setargwithoutkeyval}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } },
- {argwithoutkeyvalset}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } },
- {setargwithoutkeyvalx}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } },
- {argwithoutkeyvalsetx}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } },
+ {set~keys}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } },
+ {keys~set}{ execute={ \semantex_keys_set:nn { ##1 } { #1 } } },
+ {set~keys~x}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } },
+ {keys~set~x}{ execute={ \semantex_keys_set_x:nn { ##1 } { #1 } } },
+ {set~arg~keys}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } },
+ {arg~keys~set}{ execute={ \semantex_arg_keys_set:nn { ##1 } { #1 } } },
+ {set~arg~keys~x}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } },
+ {arg~keys~set~x}{ execute={ \semantex_arg_keys_set_x:nn { ##1 } { #1 } } },
+ {set~arg~single~keys}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
+ {arg~single~keys~set}{ execute={ \semantex_arg_singlekeys_set:nn { ##1 } { #1 } } },
+ {set~arg~single~keys~x}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } },
+ {arg~single~keys~set~x}{ execute={ \semantex_arg_singlekeys_set_x:nn { ##1 } { #1 } } },
+ {set~one~arg~single~key}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } },
+ {one~arg~single~key~set}{ execute={ \semantex_arg_singlekey:nn { ##1 } { #1 } } },
+ {set~one~arg~single~key~x}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } },
+ {one~arg~single~key~set~x}{ execute={ \semantex_arg_singlekey_x:nn { ##1 } { #1 } } },
+ {set~arg~without~keyval}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } },
+ {arg~without~keyval~set}{ execute={ \semantex_arg_without_keyval:nn { ##1 } { #1 } } },
+ {set~arg~without~keyval~x}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } },
+ {arg~without~keyval~set~x}{ execute={ \semantex_arg_without_keyval:nx { ##1 } { #1 } } },
{default}{sep={#1}},
- {-withothersep}{slotwithothersep={#1}},
- {...withothersep}{dotswithothersep={#1}},
+ {-~with~other~sep}{slot~with~other~sep={#1}},
+ {...~with~other~sep}{dots~with~other~sep={#1}},
{sep}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { nextargwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~arg~with~sep }
{
\semantex_data_tl_put_right:nnx { ##1 } { arg }
{
- \semantex_data_tl_get_exp_not:nn { ##1 } { argsep }
+ \semantex_data_tl_get_exp_not:nn { ##1 } { arg~sep }
}
}
{
% do nothing
}
\semantex_data_tl_put_right:nnn { ##1 } { arg } { #1 }
- \semantex_data_int_incr:nn { ##1 } { numberofarguments }
- \semantex_data_bool_set_true:nn { ##1 } { nextargwithsep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~arguments }
+ \semantex_data_bool_set_true:nn { ##1 } { next~arg~with~sep }
}
},
{comma}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { nextargwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~arg~with~sep }
{
\semantex_data_tl_put_right:nnn { ##1 } { arg } { , #1 }
}
{
\semantex_data_tl_put_right:nnn { ##1 } { arg } { #1 }
}
- \semantex_data_int_incr:nn { ##1 } { numberofarguments }
- \semantex_data_bool_set_true:nn { ##1 } { nextargwithsep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~arguments }
+ \semantex_data_bool_set_true:nn { ##1 } { next~arg~with~sep }
}
},
- {dotswithothersep}{
+ {dots~with~other~sep}{
execute={
- \semantex_arg_valuekey:nnx { ##1 } { othersep }
+ \semantex_arg_valuekey:nnx { ##1 } { other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { argdots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { arg~dots } }
}
},
},
- {slotwithothersep}{
+ {slot~with~other~sep}{
execute={
- \semantex_arg_valuekey:nnx { ##1 } { othersep }
+ \semantex_arg_valuekey:nnx { ##1 } { other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { argslot } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { arg~slot } }
}
},
},
},
- defineargkeys={
+ define~arg~keys={
{dots}{
execute={
\semantex_arg_valuekey:nnx { ##1 } { sep }
{
- \semantex_data_tl_get_exp_not:nn { ##1 } { argdots }
+ \semantex_data_tl_get_exp_not:nn { ##1 } { arg~dots }
}
},
},
{...}{dots},
- {commadots}{
+ {comma~dots}{
execute={
\semantex_arg_valuekey:nnx { ##1 } { comma }
{
- \semantex_data_tl_get_exp_not:nn { ##1 } { argdots }
+ \semantex_data_tl_get_exp_not:nn { ##1 } { arg~dots }
}
},
},
- {comma...}{commadots},
+ {comma~...}{comma~dots},
{slot}{
execute={
\semantex_arg_valuekey:nnx { ##1 } { sep }
{
- \semantex_data_tl_get_exp_not:nn { ##1 } { argslot }
+ \semantex_data_tl_get_exp_not:nn { ##1 } { arg~slot }
}
},
},
{-}{slot},
- {commaslot}{
+ {comma~slot}{
execute={
\semantex_arg_valuekey:nnx { ##1 } { comma }
{
- \semantex_data_tl_get_exp_not:nn { ##1 } { argslot }
+ \semantex_data_tl_get_exp_not:nn { ##1 } { arg~slot }
}
},
},
- {comma-}{commaslot},
+ {comma~-}{comma~slot},
},
- defineargkeys[2]={
- {othersep}{
+ define~arg~keys[2]={
+ {other~sep}{
execute={
- \semantex_data_bool_get:nnTF { ##1 } { nextargwithsep }
+ \semantex_data_bool_get:nnTF { ##1 } { next~arg~with~sep }
{
\semantex_data_tl_put_right:nnn { ##1 } { arg } { #1 #2 }
}
{
\semantex_data_tl_put_right:nnn { ##1 } { arg } { #2 }
}
- \semantex_data_int_incr:nn { ##1 } { numberofarguments }
- \semantex_data_bool_set_true:nn { ##1 } { nextargwithsep }
+ \semantex_data_int_incr:nn { ##1 } { number~of~arguments }
+ \semantex_data_bool_set_true:nn { ##1 } { next~arg~with~sep }
},
},
},
diff --git a/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty b/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty
index 1a3d69f78ea..c4fce11d956 100644
--- a/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty
+++ b/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty
@@ -1,11 +1,11 @@
\RequirePackage{xparse}
-\ProvidesExplPackage{stripsemantex}{2020/11/05}{0.463}{}
+\ProvidesExplPackage{stripsemantex}{2021/06/10}{0.500}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% stripSemanTeX -- strip the document of SemanTeX markup %
% https://ctan.org/pkg/semantex %
-% (C) 2020 Sebastian Ørsted %
+% (C) 2021 Sebastian Ørsted %
% sorsted@gmail.com %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%