texlive[64510] Master/texmf-dist: semantex (25sep22)

commits+karl at tug.org commits+karl at tug.org
Sun Sep 25 22:18:10 CEST 2022


Revision: 64510
          http://tug.org/svn/texlive?view=revision&revision=64510
Author:   karl
Date:     2022-09-25 22:18:10 +0200 (Sun, 25 Sep 2022)
Log Message:
-----------
semantex (25sep22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/semantex/README.md
    trunk/Master/texmf-dist/doc/latex/semantex/semantex.pdf
    trunk/Master/texmf-dist/doc/latex/semantex/semantex.tex
    trunk/Master/texmf-dist/tex/latex/semantex/semantex.sty
    trunk/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty

Modified: trunk/Master/texmf-dist/doc/latex/semantex/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/semantex/README.md	2022-09-25 20:17:12 UTC (rev 64509)
+++ trunk/Master/texmf-dist/doc/latex/semantex/README.md	2022-09-25 20:18:10 UTC (rev 64510)
@@ -25,7 +25,7 @@
 See http://www.latex-project.org/lppl.txt
 ----------------------------------------------------------------
 
-Copyright (C) 2021 by Sebastian Ørsted <sorsted at gmail.com>
+Copyright (C) 2022 by Sebastian Ørsted <sorsted at gmail.com>
 
 The package is loaded via \usepackage{semantex}
 

Modified: trunk/Master/texmf-dist/doc/latex/semantex/semantex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/semantex/semantex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/semantex/semantex.tex	2022-09-25 20:17:12 UTC (rev 64509)
+++ trunk/Master/texmf-dist/doc/latex/semantex/semantex.tex	2022-09-25 20:18:10 UTC (rev 64510)
@@ -5749,19 +5749,35 @@
 can take. The syntax for creating new objects
 also varies.
 
+Each class has a \lstinline!\New...! as well as a \lstinline!\Declare...! variant, the difference being
+that the \lstinline!\New...! variant raises an error if the command name is already taken.
+Both variants will raise an error if a \semantex{} class with the same name already exists.
+Allowing you to override existing \semantex{} definitions would require fundamental changes
+to the system which would slow it down significantly.
+
+Similarly, you can use both of the commands \lstinline!\NewObject! and \lstinline!\DeclareObject!
+to define objects, the difference being that \lstinline!\NewObject! raises an error
+if the command name is already taken.
+Both commands will raise an error if a \semantex{} object with the same name already exists.
+Allowing you to override existing \semantex{} definitions would require fundamental changes
+to the system which would slow it down significantly.
+
+
 The current implementation has the following
 class types:
 
 \begin{itemize}
 	\item \lstinline!Variable!:
-	A new class is declared with the
+	A new class is defined with the
 	syntax
 	\begin{lstlisting}
 		\NewVariableClass{@\usercommand\<Class\>@}[@\<options\>@]
+		\DeclareVariableClass{@\usercommand\<Class\>@}[@\<options\>@]
 	\end{lstlisting}
 	A new object is declared by
 	\begin{lstlisting}
 		\NewObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<symbol\>@}[@\<options\>@]
+		\DeclareObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<symbol\>@}[@\<options\>@]
 	\end{lstlisting}
 	The syntax for this object is
 	\begin{lstlisting}
@@ -5771,11 +5787,13 @@
 	A new class is declared with the
 	syntax
 	\begin{lstlisting}
-		\NewSimpleClass@\usercommand\<Class\>@[@\<options\>@]
+		\NewSymbolClass@\usercommand\<Class\>@[@\<options\>@]
+		\DeclareSymbolClass@\usercommand\<Class\>@[@\<options\>@]
 	\end{lstlisting}
 	A new object is declared by
 	\begin{lstlisting}
 		\NewObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<symbol\>@}[@\<options\>@]
+		\DeclareObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<symbol\>@}[@\<options\>@]
 	\end{lstlisting}
 	The syntax for this object is
 	\begin{lstlisting}
@@ -5786,10 +5804,12 @@
 	syntax
 	\begin{lstlisting}
 		\NewSimpleClass@\usercommand\<Class\>@[@\<options\>@]
+		\DeclareSimpleClass@\usercommand\<Class\>@[@\<options\>@]
 	\end{lstlisting}
 	A new object is declared by
 	\begin{lstlisting}
 		\NewObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<symbol\>@}[@\<options\>@]
+		\DeclareObject@\usercommand\<Class\>@@\usercommand\<object\>@{@\<symbol\>@}[@\<options\>@]
 	\end{lstlisting}
 	The syntax for this object is
 	\begin{lstlisting}

Modified: trunk/Master/texmf-dist/tex/latex/semantex/semantex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/semantex/semantex.sty	2022-09-25 20:17:12 UTC (rev 64509)
+++ trunk/Master/texmf-dist/tex/latex/semantex/semantex.sty	2022-09-25 20:18:10 UTC (rev 64510)
@@ -1,5 +1,5 @@
 \RequirePackage{xparse,l3keys2e,leftindex,semtex}
-\ProvidesExplPackage{semantex}{2022/06/22}{0.520}{}
+\ProvidesExplPackage{semantex}{2022/09/24}{0.521}{}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %															%
@@ -10,7 +10,7 @@
 %															%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\tl_set:Nn\SemantexVersion{0.520}
+\tl_set:Nn\SemantexVersion{0.521}
 
 \cs_set_eq:NN \semantex_keyval_parse:NNn \keyval_parse:NNn
 \cs_set:Npn \semantex_singlekey_parse:Nn#1#2 { \clist_map_function:nN { #2 } #1 }
@@ -148,7 +148,7 @@
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\cs_new_protected:Npn\semantex_declare_simple_class:N#1 % new simple-type class
+\cs_new_protected:Npn\semantex_define_simple_class:N#1 % new simple-type class
 {
 	% #1 = class name
 	\DeclareDocumentCommand{#1}{m}
@@ -167,49 +167,84 @@
 			##1
 		}
 	}
-	\exp_args:Nc\DeclareDocumentCommand{__semantex_declare_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	\cs_set_protected:cpn { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
 	{
-		% the command for creating a new object of class #1
-		% ##1 = command name, with backslash
+		% create the object with name ##1
+		\DeclareDocumentCommand{##1}{}
+		{
+			\semantex_write_original_source_to_semtex_file:n { ##1 }
+			\semantex_render_object:Nn ##1 { }
+		}
+	}
+	\exp_args:Nc\DeclareDocumentCommand{__semantex_new_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	{
+		% declare object of class #1
+		% ##1 = object name
 		% ##2 = symbol
 		% ##3 = options
 		\IfValueTF{##2}
 		{
-			\semantex_declare_object:NNn #1 ##1 {
+			\semantex_new_object_and_do:NNnn #1 ##1 {
 				\semantex_object_set_symbol:Nn ##1 { ##2 }
 				\semantex_object_set_keys:Nn ##1 { ##3 }
 			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
 		}
 		{
-			\semantex_declare_object:NNn #1 ##1 {
+			\semantex_new_object_and_do:NNnn #1 ##1 {
 				\semantex_object_set_keys:Nn ##1 { ##3 }
 			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
 		}
-		% create the object with name ##1
-		\DeclareDocumentCommand{##1}{}
+	}
+	\exp_args:Nc\DeclareDocumentCommand{__semantex_declare_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	{
+		% new object of class #1
+		% ##1 = object name
+		% ##2 = symbol
+		% ##3 = options
+		\IfValueTF{##2}
 		{
-		% the actual \##1 command
-			\semantex_write_original_source_to_semtex_file:n { ##1 }
-			\semantex_render_object:Nn ##1 { }
+			\semantex_declare_object_and_do:NNnn #1 ##1 {
+				\semantex_object_set_symbol:Nn ##1 { ##2 }
+				\semantex_object_set_keys:Nn ##1 { ##3 }
+			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
 		}
+		{
+			\semantex_declare_object_and_do:NNnn #1 ##1 {
+				\semantex_object_set_keys:Nn ##1 { ##3 }
+			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
+		}
 	}
 }
 
-\NewDocumentCommand\DeclareSimpleClass{ m O{} }
+\NewDocumentCommand\NewSimpleClass { m O{} }
 {
-	\semantex_declare_class:Nn { #1 } { \semantex_class_set_keys:Nn #1 { #2 } }
-	\semantex_declare_simple_class:N #1
+	\semantex_new_class_and_do:NNnn #1 \DeclareSimpleClass { \semantex_class_set_keys:Nn #1 { #2 } }
+	{
+		\semantex_define_simple_class:N #1
+	}
 }
 
-\NewDocumentCommand\NewSimpleClass { m O{} }
+\NewDocumentCommand\DeclareSimpleClass{ m O{} }
 {
-	\semantex_new_class_and_do:NNnn #1 \DeclareSimpleClass { \semantex_class_set_keys:Nn #1 { #2 } }
+	\semantex_declare_class_and_do:Nnn { #1 } { \semantex_class_set_keys:Nn #1 { #2 } }
 	{
-		\semantex_declare_simple_class:N #1
+		\semantex_define_simple_class:N #1
 	}
 }
 
-\cs_new_protected:Npn\semantex_declare_symbol_class:N #1 % new symbol-type class
+\cs_new_protected:Npn\semantex_define_symbol_class:N #1 % new symbol-type class
 {
 	% #1 = class name
 	\DeclareDocumentCommand{#1}{mo}
@@ -251,59 +286,94 @@
 			}
 		}
 	}
-	\exp_args:Nc\DeclareDocumentCommand{__semantex_declare_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	\cs_set_protected:cpn { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
 	{
-		% the command for creating a new object of class #1
-		% ##1 = command name, with backslash
+		% create the object with name ##1
+		\DeclareDocumentCommand{##1}{o}
+		{
+			\IfValueTF { ####1 }
+			{
+				\semantex_write_original_source_to_semtex_file:n { ##1 [ ####1 ] }
+				\semantex_render_object:Nn ##1 {
+					\semantex_object_do_output:N ##1
+					\semantex_object_set_keys:Nn ##1 { ####1 }
+				}
+			}
+			{
+				\semantex_write_original_source_to_semtex_file:n { ##1 }
+				\semantex_render_object:Nn ##1 { }
+			}
+		}
+	}
+	\exp_args:Nc\DeclareDocumentCommand{__semantex_new_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	{
+		% new object of class #1
+		% ##1 = object name
 		% ##2 = symbol
 		% ##3 = options
 		\IfValueTF{##2}
 		{
-			\semantex_declare_object:NNn #1 ##1 {
+			\semantex_new_object_and_do:NNnn #1 ##1 {
 				\semantex_object_set_symbol:Nn ##1 { ##2 }
 				\semantex_object_set_keys:Nn ##1 { ##3 }
 			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
 		}
 		{
-			\semantex_declare_object:NNn #1 ##1 {
+			\semantex_new_object:NNnn #1 ##1 {
 				\semantex_object_set_keys:Nn ##1 { ##3 }
 			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
 		}
-		% create the object with name ##1
-		\DeclareDocumentCommand{##1}{o}
+	}
+	\exp_args:Nc\DeclareDocumentCommand{__semantex_declare_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	{
+		% declare object of class #1
+		% ##1 = object name
+		% ##2 = symbol
+		% ##3 = options
+		\IfValueTF{##2}
 		{
-		% the actual \##1 command
-			\IfValueTF { ####1 }
+			\semantex_declare_object_and_do:NNnn #1 ##1 {
+				\semantex_object_set_symbol:Nn ##1 { ##2 }
+				\semantex_object_set_keys:Nn ##1 { ##3 }
+			}
 			{
-				\semantex_write_original_source_to_semtex_file:n { ##1 [ ####1 ] }
-				\semantex_render_object:Nn ##1 {
-					\semantex_object_do_output:N ##1
-					\semantex_object_set_keys:Nn ##1 { ####1 }
-				}
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
 			}
+		}
+		{
+			\semantex_declare_object:NNnn #1 ##1 {
+				\semantex_object_set_keys:Nn ##1 { ##3 }
+			}
 			{
-				\semantex_write_original_source_to_semtex_file:n { ##1 }
-				\semantex_render_object:Nn ##1 { }
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
 			}
 		}
 	}
 }
 
-\NewDocumentCommand\DeclareSymbolClass{ m O{} }
+\NewDocumentCommand\NewSymbolClass { m O{} }
 {
-	\semantex_declare_class:Nn { #1 } { \semantex_class_set_keys:Nn #1 { #2 } }
-	\semantex_declare_symbol_class:N #1
+	\semantex_new_class_and_do:NNnn #1 \DeclareSymbolClass { \semantex_class_set_keys:Nn #1 { #2 } }
+	{
+		\semantex_define_symbol_class:N #1
+	}
 }
 
-\NewDocumentCommand\NewSymbolClass { m O{} }
+\NewDocumentCommand\DeclareSymbolClass{ m O{} }
 {
-	\semantex_new_class_and_do:NNnn #1 \DeclareSymbolClass { \semantex_class_set_keys:Nn #1 { #2 } }
+	\semantex_declare_class_and_do:Nnn { #1 } { \semantex_class_set_keys:Nn #1 { #2 } }
 	{
-		\semantex_declare_symbol_class:N #1
+		\semantex_define_symbol_class:N #1
 	}
 }
 
-\cs_new_protected:Npn\semantex_declare_variable_class:N#1 % new variable-type class
+\cs_new_protected:Npn\semantex_define_variable_class:N#1 % new variable-type class
 {
 	% #1 = class name
 	\DeclareDocumentCommand{#1}{mog}
@@ -392,27 +462,11 @@
 			}
 		}
 	}
-	\exp_args:Nc\DeclareDocumentCommand{__semantex_declare_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	\cs_set_protected:cpn { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
 	{
-		% the command for creating a new object of class #1
-		% ##1 = command name, with backslash
-		% ##2 = symbol
-		% ##3 = options
-		\IfValueTF{##2}
+		% creates the object with name ##1
+		\DeclareDocumentCommand{##1}{og}
 		{
-			\semantex_declare_object:NNn #1 ##1 {
-				\semantex_object_set_symbol:Nn ##1 { ##2 }
-				\semantex_object_set_keys:Nn ##1 { ##3 }
-			}
-		}
-		{
-			\semantex_declare_object:NNn #1 ##1 {
-				\semantex_object_set_keys:Nn ##1 { ##3 }
-			}
-		}
-		% creates the object with name ##1
-		\DeclareDocumentCommand{##1}{og}{
-		% the actual \##1 command
 			\IfValueTF{####1}{
 				\IfValueTF{####2}
 				{
@@ -459,19 +513,71 @@
 			}
 		}
 	}
+	\exp_args:Nc\DeclareDocumentCommand{__semantex_new_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	{
+		% new object of class #1
+		% ##1 = object name
+		% ##2 = symbol
+		% ##3 = options
+		\IfValueTF{##2}
+		{
+			\semantex_new_object_and_do:NNnn #1 ##1 {
+				\semantex_object_set_symbol:Nn ##1 { ##2 }
+				\semantex_object_set_keys:Nn ##1 { ##3 }
+			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
+		}
+		{
+			\semantex_new_object_and_do:NNnn #1 ##1 {
+				\semantex_object_set_keys:Nn ##1 { ##3 }
+			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
+		}
+	}
+	\exp_args:Nc\DeclareDocumentCommand{__semantex_declare_object_of_\semantex_class_to_register:N #1:Nw}{mgO{}}
+	{
+		% declare object of class #1
+		% ##1 = object name
+		% ##2 = symbol
+		% ##3 = options
+		\IfValueTF{##2}
+		{
+			\semantex_declare_object_and_do:NNnn #1 ##1 {
+				\semantex_object_set_symbol:Nn ##1 { ##2 }
+				\semantex_object_set_keys:Nn ##1 { ##3 }
+			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
+		}
+		{
+			\semantex_declare_object_and_do:NNnn #1 ##1 {
+				\semantex_object_set_keys:Nn ##1 { ##3 }
+			}
+			{
+				\use:c { __semantex_define_object_of_\semantex_class_to_register:N #1:N } ##1
+			}
+		}
+	}
 }
 
-\NewDocumentCommand\DeclareVariableClass{ m O{} }
+\NewDocumentCommand\NewVariableClass { m O{} }
 {
-	\semantex_declare_class:Nn { #1 } { \semantex_class_set_keys:Nn #1 { #2 } }
-	\semantex_declare_variable_class:N #1
+	\semantex_new_class_and_do:NNnn #1 \DeclareVariableClass { \semantex_class_set_keys:Nn #1 { #2 } }
+	{
+		\semantex_define_variable_class:N #1
+	}
 }
 
-\NewDocumentCommand\NewVariableClass { m O{} }
+\NewDocumentCommand\DeclareVariableClass{ m O{} }
 {
-	\semantex_new_class_and_do:NNnn #1 \DeclareVariableClass { \semantex_class_set_keys:Nn #1 { #2 } }
+	\semantex_declare_class_and_do:Nnn { #1 } { \semantex_class_set_keys:Nn #1 { #2 } }
 	{
-		\semantex_declare_variable_class:N #1
+		\semantex_define_variable_class:N #1
 	}
 }
 
@@ -511,31 +617,36 @@
 
 \tl_set:Nx \g_semantex_class_SemantexBaseObject_register_tl { \semantex_class_to_register:N \SemantexBaseObject }
 
-\DeclareDocumentCommand\DeclareObject { m m }
+\DeclareDocumentCommand\NewObject { m m }
 {
-	% #1 = name of object
+	% #1 = name of class
+	% #2 = name of object
 	\semantex_class_if_exist:NTF #1
 	{
-		\use:c { __semantex_declare_object_of_\semantex_class_to_register:N #1:Nw } #2
+		\use:c { __semantex_new_object_of_\semantex_class_to_register:N #1:Nw } #2
 	}
 	{
-		\msg_error:nnn { semantex } { created_object_of_unknown_class } { #1 }
+		\msg_error:nnxx { semantex } { created_object_of_unknown_class } { \token_to_str:N #1 } { \token_to_str:N #2 }
 	}
 }
 
-\DeclareDocumentCommand\NewObject { m m }
+\DeclareDocumentCommand\DeclareObject { m m }
 {
-	\cs_if_exist:NTF #2
+	% #1 = name of class
+	% #2 = name of object
+	\semantex_class_if_exist:NTF #1
 	{
-		\msg_error:nnn { semantex } { created_object_with_already_defined_name } { #2 }
+		\use:c { __semantex_declare_object_of_\semantex_class_to_register:N #1:Nw } #2
 	}
 	{
-		\DeclareObject #1 #2
+		\msg_error:nnxx { semantex } { created_object_of_unknown_class } { \token_to_str:N #1 } { \token_to_str:N #2 }
 	}
 }
 
 \DeclareDocumentCommand\UseClassInCommand { mo }
 {
+	% #1 = name of class
+	% #2 = options to pass to class
 	\semantex_class_if_exist:NTF #1
 	{
 		\IfValueTF { #2 }
@@ -550,7 +661,7 @@
 		}
 	}
 	{
-		\msg_error:nnn { semantex } { used_unknown_class } { #1 }
+		\msg_error:nnx { semantex } { used_unknown_class } { \token_to_str:N #1 }
 	}
 }
 
@@ -595,14 +706,31 @@
 
 \cs_generate_variant:Nn \semantex_new_register:nn { xn }
 
-\cs_new_protected:Npn \semantex_declare_class:Nn#1#2
+\cs_new_protected:Npn \semantex_new_class_and_do:NNnn#1#2#3#4
 {
 	% create a new class
 	% #1 = name of class
+	% #2 = name of \Declare...Class variant of command, for error messages
+	% #3 = standard keyval setup
+	% #4 = code to execute if successful
+	\cs_if_exist:NTF #1
+	{
+		\msg_error:nnxx { semantex } { created_class_with_already_defined_name } { \token_to_str:N #1 } { \token_to_str:N #2 }
+	}
+	{
+		\semantex_declare_class_and_do:Nnn #1 { #3 } { #4 }
+	}
+}
+
+\cs_new_protected:Npn \semantex_declare_class_and_do:Nnn#1#2#3
+{
+	% create a new class
+	% #1 = name of class
 	% #2 = standard keyval setup
+	% #3 = code to execute if succesful
 	\semantex_class_if_exist:NTF #1
 	{
-		\msg_error:nnn { semantex } { class_already_defined } { #1 }
+		\msg_error:nnx { semantex } { class_already_defined } { \token_to_str:N #1 }
 	}
 	{
 		\semantex_add_to_list_of_classes:N #1
@@ -610,35 +738,36 @@
 		\semantex_new_register:xn { \semantex_class_to_associated_object_register:N #1 } {
 			\semantex_object_associated_to_class_set_class:Nn #1 { #1 }
 		}
+		#3
 	}
 }
 
-\cs_new_protected:Npn \semantex_new_class_and_do:NNnn#1#2#3#4
+\cs_set_protected:Npn \semantex_new_object_and_do:NNnn#1#2#3#4
 {
-	% create a new class
+	% create a new object
 	% #1 = name of class
-	% #2 = name of \Declare...Class variant of command, for error messages
+	% #2 = name of object
 	% #3 = standard keyval setup
 	% #4 = code to execute if successful
-	\cs_if_exist:NTF #1
+	\cs_if_exist:NTF #2
 	{
-		\msg_error:nnnn { semantex } { created_class_with_already_defined_name } { #1 } { #2 }
+		\msg_error:nnx { semantex } { created_object_with_already_defined_name } { \token_to_str:N #2 }
 	}
 	{
-		\semantex_declare_class:Nn #1 { #3 }
-		#4
+		\semantex_declare_object_and_do:NNnn #1 #2 { #3 } { #4 }
 	}
 }
 
-\cs_set_protected:Npn \semantex_declare_object:NNn#1#2#3
+\cs_set_protected:Npn \semantex_declare_object_and_do:NNnn#1#2#3#4
 {
 	% create a new object
 	% #1 = name of class
 	% #2 = name of object
 	% #3 = standard keyval setup
+	% #4 = code to execute if successful
 	\semantex_object_if_exist:NTF #2
 	{
-		\msg_error:nnn { semantex } { object_already_defined } { #2 }
+		\msg_error:nnx { semantex } { object_already_defined } { \token_to_str:N #2 }
 	}
 	{
 		\semantex_add_to_list_of_objects:N #2
@@ -647,6 +776,7 @@
 			\semantex_object_set_class:Nn #2 { #1 }
 			#3
 		}
+		#4
 	}
 }
 
@@ -1623,7 +1753,7 @@
 		\tl_set:cx { g__semantex_data_tl_#1_parent } { \semantex_class_to_register:N #2 }
 	}
 	{
-		\semantex_msg_error:nnnn { #1 } { class_not_found } { parent } { #2 }
+		\semantex_msg_error:nnnx { #1 } { class_not_found } { parent } { \token_to_str:N #2 }
 	}
 }
 
@@ -1636,7 +1766,7 @@
 		\tl_set:cx { g__semantex_data_tl_#1_parent } { \semantex_class_to_register:N #2 }
 	}
 	{
-		\semantex_msg_error:nnnn { #1 } { class_not_found } { class } { #2 }
+		\semantex_msg_error:nnnx { #1 } { class_not_found } { class } { \token_to_str:N #2 }
 	}
 }
 
@@ -1649,7 +1779,7 @@
 		\tl_set:cx { g__semantex_data_tl_#1_parent } { \semantex_object_to_register:N #2 }
 	}
 	{
-		\semantex_msg_error:nnnn { #1 } { object_not_found } { copy } { #2 }
+		\semantex_msg_error:nnnx { #1 } { object_not_found } { copy } { \token_to_str:N #2 }
 	}
 }
 
@@ -6004,7 +6134,7 @@
 		\semantex_data_tl_set:nnx { #1 } { output } { \semantex_class_to_register:N #2 }
 	}
 	{
-		\semantex_msg_error:nnnn { #1 } { class_not_found } { output } { #2 }
+		\semantex_msg_error:nnnx { #1 } { class_not_found } { output } { \token_to_str:N #2 }
 	}
 }
 
@@ -6273,11 +6403,11 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
-\msg_new:nnnn { semantex } { semantex_setup_key_not_found } { Unknown~key~#1~passed~to~\token_to_str:N\SemantexSetup~on~line~\msg_line_number: } {}
+\msg_new:nnnn { semantex } { semantex_setup_key_not_found } { Unknown~key~#1~passed~to~\token_to_str:N\SemantexSetup\ on~line~\msg_line_number: } {}
 
-\msg_new:nnnn { semantex } { semantex_setup_key_value_not_found } {  Unknown~value~#2~passed~to~key~#1~in~\token_to_str:N\SemantexSetup~on~line~\msg_line_number: } {}
+\msg_new:nnnn { semantex } { semantex_setup_key_value_not_found } { Unknown~value~#2~passed~to~key~#1~in~\token_to_str:N\SemantexSetup\ on~line~\msg_line_number: } {}
 
-\msg_new:nnnn { semantex } { valuekey_not_found } {  Unknown~key~#2~passed~to~#1~on~line~\msg_line_number: } {}
+\msg_new:nnnn { semantex } { valuekey_not_found } { Unknown~key~#2~passed~to~#1~on~line~\msg_line_number: } {}
 
 \msg_new:nnnn { semantex } { arg_valuekey_not_found } { Unknown~argument~key~#2~passed~to~#1~on~line~\msg_line_number: } {}
 
@@ -6303,21 +6433,21 @@
 
 \msg_new:nnnn { semantex } { object_not_found } { You~set~#1~as~#2~of~unknown~object~#3~on~line~\msg_line_number: } {}
 
-\msg_new:nnnn { semantex } { created_object_of_unknown_class } { Unknown~class~#1~declared~as~class~of~#2~on~line~\msg_line_number: } {}
+\msg_new:nnnn { semantex } { created_object_of_unknown_class } { Unknown~class~#1~declared~as~class~of~object~#2~on~line~\msg_line_number: } {}
 
-\msg_new:nnnn { semantex } { created_object_with_already_defined_name } { Command~#1~already~defined;~you~can~use~\token_to_str:N\DeclareObject~to~override~existing~commands. } {}
+\msg_new:nnnn { semantex } { created_object_with_already_defined_name } { Command~#1~already~defined;~you~can~use~\token_to_str:N\DeclareObject\ to~override~existing~commands. } {}
 
-\msg_new:nnnn { semantex } { created_class_with_already_defined_name } { Command~#1~already~defined;~you~can~use~\token_to_str:N #2~to~override~existing~commands. } {}
+\msg_new:nnnn { semantex } { created_class_with_already_defined_name } { Command~#1~already~defined;~you~can~use~#2~to~override~existing~commands. } {}
 
-\msg_new:nnnn { semantex } { used_unknown_class } { Unknown~class~#1~received~by~\token_to_str:N\UseClassInCommand~on~line~\msg_line_number: } {}
+\msg_new:nnnn { semantex } { used_unknown_class } { Unknown~class~#1~received~by~\token_to_str:N\UseClassInCommand\ on~line~\msg_line_number: } {}
 
 \msg_new:nnnn { semantex } { setup_unknown_class } { You~tried~setting~up~an~unknown~#1~on~line~\msg_line_number: } {}
 
 \msg_new:nnnn { semantex } { setup_unknown_object } { You~tried~setting~up~an~unknown~#1~on~line~\msg_line_number: } {}
 
-\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 } { 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~set~keys~x={...}? } {}
+\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: } {}
 
@@ -6352,6 +6482,8 @@
 	}
 }
 
+\cs_generate_variant:Nn \semantex_msg_error:nn { xn }
+
 \cs_new_protected:Npn \semantex_msg_error:nnn#1#2#3
 {
 	\semantex_error_output_format:xN { #1 } \l__semantex_msg_error_nnnn_temp_tl
@@ -6361,7 +6493,7 @@
 	} { #3 }
 }
 
-\cs_generate_variant:Nn \semantex_msg_error:nnn { nnx }
+\cs_generate_variant:Nn \semantex_msg_error:nnn { nnx, xnx }
 
 \cs_new_protected:Npn \semantex_msg_error:nnnn#1#2#3#4
 {
@@ -6372,6 +6504,8 @@
 	} { #3 } { #4 }
 }
 
+\cs_generate_variant:Nn \semantex_msg_error:nnnn { xnxx, xnnx, nnnx , nnxx }
+
 \cs_new_protected:Npn\semantex_error_key_value_not_found:nnn#1#2#3
 {
 	\semantex_msg_error:nnnn { #1 } { key_value_not_found } { #2 } { #3 }
@@ -8683,13 +8817,20 @@
 
 \cs_set_eq:cc { __semantex_old_version_of_semantex_declare_object_of_\g_semantex_class_SemantexBaseObject_register_tl :Nw } { __semantex_declare_object_of_\g_semantex_class_SemantexBaseObject_register_tl :Nw }
 
-\cs_set_protected:Npn \__semantex_declare_object_of_class_SemantexBaseObject:Nw#1
+\cs_set_protected:cpn { __semantex_declare_object_of_\g_semantex_class_SemantexBaseObject_register_tl :Nw } #1
 {
-	\msg_error:nnn { semantex } { created_a_SemantexBaseObject } { #1 }
+	\msg_error:nnx { semantex } { created_a_SemantexBaseObject } { \token_to_str:N #1 }
 	\use:c { __semantex_old_version_of_semantex_declare_object_of_\g_semantex_class_SemantexBaseObject_register_tl :Nw } #1
 }
 
+\cs_set_eq:cc { __semantex_old_version_of_semantex_new_object_of_\g_semantex_class_SemantexBaseObject_register_tl :Nw } { __semantex_new_object_of_\g_semantex_class_SemantexBaseObject_register_tl :Nw }
 
+\cs_set_protected:cpn { __semantex_new_object_of_\g_semantex_class_SemantexBaseObject_register_tl :Nw } #1
+{
+	\msg_error:nnx { semantex } { created_a_SemantexBaseObject } { \token_to_str:N #1 }
+	\use:c { __semantex_old_version_of_semantex_new_object_of_\g_semantex_class_SemantexBaseObject_register_tl :Nw } #1
+}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 %    PROCESSING PACKAGE KEYVAL SETUP

Modified: trunk/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty	2022-09-25 20:17:12 UTC (rev 64509)
+++ trunk/Master/texmf-dist/tex/latex/semantex/stripsemantex.sty	2022-09-25 20:18:10 UTC (rev 64510)
@@ -1,5 +1,5 @@
 \RequirePackage{xparse}
-\ProvidesExplPackage{stripsemantex}{2022/09/22}{0.530}{}
+\ProvidesExplPackage{stripsemantex}{2022/09/24}{0.521}{}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %																		%



More information about the tex-live-commits mailing list.