diff options
Diffstat (limited to 'macros/latex/contrib/stex/source/stex.dtx')
-rw-r--r-- | macros/latex/contrib/stex/source/stex.dtx | 226 |
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 { |