summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/stex/source/stex.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/stex/source/stex.dtx')
-rw-r--r--macros/latex/contrib/stex/source/stex.dtx226
1 files changed, 161 insertions, 65 deletions
diff --git a/macros/latex/contrib/stex/source/stex.dtx b/macros/latex/contrib/stex/source/stex.dtx
index dcbc4dfe7a..b128f38dd1 100644
--- a/macros/latex/contrib/stex/source/stex.dtx
+++ b/macros/latex/contrib/stex/source/stex.dtx
@@ -36,7 +36,10 @@
%%%%%%%%%%%%% stex.dtx %%%%%%%%%%%%%
\RequirePackage{expl3,l3keys2e}
-\ProvidesExplClass{stex}{2023/03/19}{3.3.0}{sTeX document class}
+\ProvidesExplClass{stex}{2023/10/13}{3.4.0}{sTeX document class}
+\IfFileExists{stex-expl-compat.sty}{
+ \usepackage{stex-expl-compat}
+}{}
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{stex}}
\ProcessOptions
@@ -52,11 +55,14 @@
% \begin{macrocode}
%<*package>
\RequirePackage{expl3,l3keys2e,ltxcmds}
-\ProvidesExplPackage{stex}{2023/03/19}{3.3.0}{sTeX package}
+\ProvidesExplPackage{stex}{2023/10/13}{3.4.0}{sTeX package}
+\IfFileExists{stex-expl-compat.sty}{
+ \usepackage{stex-expl-compat}
+}{}
\RequirePackage{stex-logo} % externalized for backwards-compatibility reasons
\RequirePackage{standalone}
-\message{^^J*~This~is~sTeX~version~3.3.0~*^^J}
+\message{^^J*~This~is~sTeX~version~3.4.0~*^^J}
% \end{macrocode}
%
% Package options:
@@ -70,6 +76,7 @@
writesms .bool_set:N = \c_stex_persist_write_mode_bool ,
checkterms .bool_set:N = \c_stex_check_terms_bool ,
image .bool_set:N = \c_tikzinput_image_bool,
+ nofrontmatter .bool_set:N = \c_stex_no_frontmatter_bool,
unknown .code:n = {}
}
\exp_args:NNo \clist_set:Nn \c_stex_debug_clist \c_stex_debug_clist
@@ -185,11 +192,11 @@
}
\exp_args:NNo \clist_if_in:NnTF \c_stex_debug_clist {\tl_to_str:n{all}} {
- \msg_redirect_module:nnn{ stex }{ none }{ term }
+ \msg_redirect_module:nnn{ stex }{ none }{ warning }
\stex_debug:nn{all}{Logging~everything!}
}{
\clist_map_inline:Nn \c_stex_debug_clist {
- \msg_redirect_name:nnn{ stex }{ debug / #1 }{ term }
+ \msg_redirect_name:nnn{ stex }{ debug / #1 }{ warning }
\stex_debug:nn{#1}{Logging~#1}
}
}
@@ -547,8 +554,8 @@
% \begin{macrocode}
\cs_new_protected:Nn \stex_deactivate_macro:Nn {
\tl_set_eq:cN{\tl_to_str:n{#1}~-~orig}#1
- \tl_set:Nn#1{
- \msg_error:nnnn{stex}{error/deactivated-macro}{\detokenize{#1}}{#2}
+ \cs_set_protected:Npn#1{
+ \exp_args:Nnno\msg_error:nnnn{stex}{error/deactivated-macro}{#1}{#2}
}
}
\cs_new_protected:Nn \stex_reactivate_macro:N {
@@ -1915,46 +1922,48 @@
}
\AtBeginDocument{
- \cs_if_exist:NTF\frontmatter{
- \let\_@@_orig_frontmatter\frontmatter
- \let\frontmatter\relax
- }{
- \tl_set:Nn\_@@_orig_frontmatter{
- \clearpage
- %\@mainmatterfalse
- \pagenumbering{roman}
+ \bool_if:NF \c_stex_no_frontmatter_bool {
+ \cs_if_exist:NTF\frontmatter{
+ \let\_@@_orig_frontmatter\frontmatter
+ \let\frontmatter\relax
+ }{
+ \tl_set:Nn\_@@_orig_frontmatter{
+ \clearpage
+ %\@mainmatterfalse
+ \pagenumbering{roman}
+ }
}
- }
- \cs_if_exist:NTF\backmatter{
- \let\_@@_orig_backmatter\backmatter
- \let\backmatter\relax
- }{
- \tl_set:Nn\_@@_orig_backmatter{
- \clearpage
- %\@mainmatterfalse
- \pagenumbering{roman}
+ \cs_if_exist:NTF\backmatter{
+ \let\_@@_orig_backmatter\backmatter
+ \let\backmatter\relax
+ }{
+ \tl_set:Nn\_@@_orig_backmatter{
+ \clearpage
+ %\@mainmatterfalse
+ \pagenumbering{roman}
+ }
}
- }
- \newenvironment{frontmatter}{
- \_@@_orig_frontmatter
- }{
- \cs_if_exist:NTF\mainmatter{
- \mainmatter
+ \newenvironment{frontmatter}{
+ \_@@_orig_frontmatter
}{
- \clearpage
- %\@mainmattertrue
- \pagenumbering{arabic}
+ \cs_if_exist:NTF\mainmatter{
+ \mainmatter
+ }{
+ \clearpage
+ %\@mainmattertrue
+ \pagenumbering{arabic}
+ }
}
- }
- \newenvironment{backmatter}{
- \_@@_orig_backmatter
- }{
- \cs_if_exist:NTF\mainmatter{
- \mainmatter
+ \newenvironment{backmatter}{
+ \_@@_orig_backmatter
}{
- \clearpage
- %\@mainmattertrue
- \pagenumbering{arabic}
+ \cs_if_exist:NTF\mainmatter{
+ \mainmatter
+ }{
+ \clearpage
+ %\@mainmattertrue
+ \pagenumbering{arabic}
+ }
}
}
}
@@ -2320,7 +2329,10 @@
}
\cs_new_protected:Nn \stex_ref_new_sym_target:n {
- \exp_args:Ne \label{\tl_to_str:n{sref@sym@ #1}}
+ \cs_if_exist:NT \hypertarget{
+ \exp_args:Ne \hypertarget{\tl_to_str:n{sref@sym@ #1}}{}
+ \str_gset:cx{\tl_to_str:n{r@sref@sym@ #1}}{\tl_to_str:n{sref@sym@ #1}}
+ }
}
\cs_new_protected:Nn \stex_ref_new_sym_target:nn {
@@ -2342,8 +2354,8 @@
}
\cs_new_protected:Npn \_@@_do_internal_link:nn #1 {
- \cs_if_exist:NTF \hyperref {
- \hyperref[{#1}]
+ \cs_if_exist:NTF \hyperlink {
+ \hyperlink{#1}
}\use:n
}
@@ -2352,7 +2364,7 @@
}
\cs_new_protected:Npn \_@@_sym_aux:nn #1 {
- \cs_if_exist:cTF{r@sref@sym@\tl_to_str:n{#1}}{
+ \cs_if_exist:cTF{\tl_to_str:n{r@sref@sym@#1}}{
\exp_args:Ne \_@@_do_internal_link:nn{\tl_to_str:n{sref@sym@#1}}
}{
\str_if_exist:cTF{g_stex_sref_sym_#1_label}{
@@ -2448,9 +2460,9 @@
}
}{
\IfFileExists{ \stex_file_use:N \c_stex_mathhub_file / #1 / source / #2 }{
- \par\stex_annotate_invisible:nn{shtml:inputref={
+ \ifvmode\noindent\fi\stex_annotate_invisible:nn{shtml:inputref={
\l_tmpa_str / #2
- }}{~}
+ }}{}
}{
\input{ \stex_file_use:N \c_stex_mathhub_file / #1 / source / #2 }
}
@@ -2536,7 +2548,9 @@
\bool_while_do:nn { ! \seq_if_empty_p:N \l_@@_id_seq }{
\str_set:Nx \l_@@_path_str {\stex_file_use:N \l_@@_path_seq / meta-inf / lib / #1.#2}
\IfFileExists{ \l_@@_path_str }{
- \seq_put_right:No \l_@@_libinput_files_seq \l_@@_path_str
+ \exp_args:NNo \seq_if_in:NnF \l_@@_libinput_files_seq \l_@@_path_str {
+ \seq_put_right:No \l_@@_libinput_files_seq \l_@@_path_str
+ }
}{}
\seq_pop_left:NN \l_@@_id_seq \l_@@_path_str
\seq_put_right:No \l_@@_path_seq \l_@@_path_str
@@ -2544,7 +2558,9 @@
\str_set:Nx \l_@@_path_str {\stex_file_use:N \l_@@_path_seq / lib / #1.#2}
\IfFileExists{ \l_@@_path_str }{
- \seq_put_right:No \l_@@_libinput_files_seq \l_@@_path_str
+ \exp_args:NNo \seq_if_in:NnF \l_@@_libinput_files_seq \l_@@_path_str {
+ \seq_put_right:No \l_@@_libinput_files_seq \l_@@_path_str
+ }
}{}
}
@@ -2637,7 +2653,7 @@
%
% \begin{macro}{\libusetikzlibrary}
% \begin{macrocode}
-\cs_new_protected:Nn \_@@_usetikzlibrary:nn {
+\cs_new_protected:Nn \_@@_usetikzlibrary_i:nn {
\pgfkeys@spdef\pgf@temp{#1}
\expandafter\ifx\csname tikz@library@\pgf@temp @loaded\endcsname\relax%
\expandafter\global\expandafter\let\csname tikz@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
@@ -2653,17 +2669,25 @@
\catcode`\$=\csname tikz@library@#1@dollarcode\endcsname
}
-\cs_new_protected:Npn \libusetikzlibrary #1 {
- \cs_if_exist:NF \usetikzlibrary {
- \msg_error:nnx{stex}{error/notikz}{\tl_to_str:n{\libusetikzlibrary}}
- }
+\cs_new_protected:Nn \_@@_usetikzlibrary:n{
\_@@_up_archive:nn{tikzlibrary#1}{code.tex}
\int_compare:nNnTF {\seq_count:N \l_@@_libinput_files_seq} = 1 {
- \exp_args:Nne \_@@_usetikzlibrary:nn{#1}{ \seq_item:Nn \l_@@_libinput_files_seq 1 }
+ \exp_args:Nne \_@@_usetikzlibrary_i:nn{#1}{ \seq_item:Nn \l_@@_libinput_files_seq 1 }
}{
\stex_fatal_error:nnn{error/nofile}{\libusetikzlibrary}{tikzlibrary#1.code.tex}
}
}
+
+\newcommand \libusetikzlibrary [2][] {
+ \cs_if_exist:NF \usetikzlibrary {
+ \msg_error:nnx{stex}{error/notikz}{\tl_to_str:n{\libusetikzlibrary}}
+ }
+ \tl_if_empty:nTF{#1}{
+ \_@@_usetikzlibrary:n{#2}
+ }{
+ \stex_in_archive:nn{#1}{\_@@_usetikzlibrary:n{#2}}
+ }
+}
% \end{macrocode}
% \end{macro}
%
@@ -4370,11 +4394,14 @@
\str_clear:N \l_@@_name_str
\str_clear:N \l_@@_newname_str
\tl_clear:N \l_@@_ass_tl
+ \stex_debug:nn{morphisms}{Parsing~#1}
\exp_args:NNe \seq_set_split:Nnn \l_@@_seq {\tl_to_str:n{@}} {#1}
\int_compare:nNnTF {\seq_count:N \l_@@_seq} = 1 {
+ \stex_debug:nn{morphisms}{No~@}
\seq_pop_left:NN \l_@@_seq \l_@@_next_tl
}{
\seq_pop_left:NN \l_@@_seq \l_@@_name_str
+ \stex_debug:nn{morphisms}{Name:~\l_@@_name_str}
\exp_args:NNo \str_set:Nn \l_@@_name_str \l_@@_name_str
\tl_set:Nx \l_@@_next_tl {\seq_use:Nn \l_@@_seq @}
}
@@ -4449,7 +4476,7 @@
}{}
\stex_deactivate_macro:Nn \interpretmod {module~environments}
\stex_every_module:n {
- \stex_reactivate_macro:N \iterpretmod
+ \stex_reactivate_macro:N \interpretmod
}
\stex_sms_allow_escape:N\interpretmod
@@ -4553,12 +4580,14 @@
\tl_clear:N \l_stex_key_type_tl
\tl_clear:N \l_stex_key_def_tl
\tl_clear:N \l_stex_key_return_tl
+ \str_clear:N \l_stex_key_wikidata_str
\clist_clear:N \l_stex_key_argtypes_clist
}{
name .str_set:N = \l_stex_key_name_str ,
return .tl_set:N = \l_stex_key_return_tl ,
argtypes .clist_set:N = \l_stex_key_argtypes_clist ,
+ wikidata .str_set:N = \l_stex_key_wikidata_str ,
type .tl_set:N = \l_stex_key_type_tl ,
def .tl_set:N = \l_stex_key_def_tl ,
@@ -4640,6 +4669,9 @@
\str_if_empty:NF \l_stex_macroname_str {,
shtml:macroname={\l_stex_macroname_str}
}
+ \str_if_empty:NF \l_stex_key_wikidata_str {,
+ shtml:wikidata={\l_stex_key_wikidata_str}
+ }
\str_if_empty:NF \l_stex_key_assoc_str {,
shtml:assoctype={\l_stex_key_assoc_str}
}
@@ -5036,7 +5068,11 @@
intent .str_set:N = \l_stex_key_intent_str ,
argnames .clist_set:N = \l_stex_key_intent_args_clist ,
unknown .code:n = {
- \str_set_eq:NN \l_stex_key_variant_str \l_keys_key_str
+ \str_if_empty:NTF \l_keys_key_str {
+ \str_set:Nx \l_stex_key_variant_str {\l_keys_key_tl}
+ }{
+ \str_set_eq:NN \l_stex_key_variant_str \l_keys_key_str
+ }
}
}{style}
% \end{macrocode}
@@ -5368,10 +5404,21 @@
}
\cs_new_protected:Nn \_stex_notation_set_default:n{
- \stex_module_add_notation:eoeoo{#1}{}
- {\int_use:N \l_stex_get_symbol_arity_int}
- \l_stex_notation_macrocode_cs
- \l_stex_key_op_tl
+ \stex_if_in_module:TF{
+ \stex_module_add_notation:eoeoo{#1}{}
+ {\int_use:N \l_stex_get_symbol_arity_int}
+ \l_stex_notation_macrocode_cs
+ \l_stex_key_op_tl
+ }{
+ \cs_set_eq:cN {l_stex_notation_
+ \l_stex_get_symbol_mod_str?\l_stex_get_symbol_name_str
+ __cs}\l_stex_notation_macrocode_cs
+ \tl_if_empty:NF \l_stex_key_op_tl {
+ \cs_set_eq:cN{l_stex_notation_
+ \l_stex_get_symbol_mod_str?\l_stex_get_symbol_name_str
+ _op__cs}\l_stex_key_op_tl
+ }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -7278,7 +7325,11 @@
}{
this .tl_set:N = \l_stex_current_this_tl ,
unknown .code:n = {
- \str_set_eq:NN \l_@@_name_str \l_keys_key_str
+ \str_if_empty:NTF \l_keys_key_str {
+ \str_set:Nx \l_@@_name_str {\l_keys_key_tl}
+ }{
+ \str_set_eq:NN \l_@@_name_str \l_keys_key_str
+ }
}
}{}
@@ -8304,7 +8355,7 @@
\NewDocumentCommand \premise {O{} m} {
\tl_if_empty:nF {#1} {
\stex_debug:nn{Here:}{Variable~#1}
- \exp_args:NNx\exp_args:Nnx\vardef{v#1}{#1}
+ \exp_args:Nne\use:nn{\vardef}{{v#1}[name=#1]{#1}}
}
\stex_annotate:nn{shtml:premise={#1}}{#2}
}
@@ -8684,7 +8735,7 @@
\stex_keys_set:nn{spfsteps}{##2}
\str_if_empty:NF \l_stex_key_name_str {
\stex_debug:nn{Here:}{Variable~\l_stex_key_name_str}
- \exp_args:NNx\exp_args:Nnx\vardef{v\l_stex_key_name_str}{\l_stex_key_name_str}
+ \exp_args:Nne\use:nn{\vardef}{{v\l_stex_key_name_str}[name=\l_stex_key_name_str]{\l_stex_key_name_str}}
}
\begin{spfstepenv}
@@ -8983,6 +9034,51 @@
% \end{macrocode}
% \end{macro}
%
+% VoLL-KI Annotations
+% \begin{macrocode}
+\newcommand\precondition[2]{
+ \str_clear:N \l_stex_get_symbol_name_str
+ \stex_get_symbol:n{#2}
+ \str_if_empty:NTF \l_stex_get_symbol_name_str{
+ \errmessage{Unknown~symbol~#2}
+ }{
+ \str_case:nnTF {#1}{
+ {remember}{}
+ {understand}{}
+ {analyze}{}
+ {evaluate}{}
+ {apply}{}
+ {create}{}
+ }{
+ \stex_annotate_invisible:nn{
+ shtml:preconditionsymbol={\l_stex_get_symbol_mod_str ? \l_stex_get_symbol_name_str},
+ shtml:preconditiondimension={#1}
+ }{}
+ }{\errmessage{Unknown~cognitive~dimension~#1}}
+ }
+}
+\newcommand\objective[2]{
+ \str_clear:N \l_stex_get_symbol_name_str
+ \stex_get_symbol:n{#2}
+ \str_if_empty:NTF \l_stex_get_symbol_name_str{
+ \errmessage{Unknown~symbol~#2}
+ }{
+ \str_case:nnTF {#1}{
+ {remember}{}
+ {understand}{}
+ {analyze}{}
+ {evaluate}{}
+ {apply}{}
+ {create}{}
+ }{
+ \stex_annotate_invisible:nn{
+ shtml:objectivesymbol={\l_stex_get_symbol_mod_str ? \l_stex_get_symbol_name_str},
+ shtml:objectivedimension={#1}
+ }{}
+ }{\errmessage{Unknown~cognitive~dimension~#1}}
+ }
+}
+% \end{macrocode}
%
% \begin{macrocode}
\seq_if_empty:NT \g_stex_current_file {