diff options
author | Karl Berry <karl@freefriends.org> | 2019-12-03 22:05:20 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-12-03 22:05:20 +0000 |
commit | b35ea48fb406c5aaebc3b92c7ec228e03f75e58f (patch) | |
tree | cb46a95f3d488d3c04f85ed914148c543ea61da7 /Master/texmf-dist/tex | |
parent | c7b7b71e49652c9ff0f4f3b2fa6a344041ddbeb1 (diff) |
knowledge (3dec19)
git-svn-id: svn://tug.org/texlive/trunk@53015 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/knowledge/knowledge.sty | 234 |
1 files changed, 155 insertions, 79 deletions
diff --git a/Master/texmf-dist/tex/latex/knowledge/knowledge.sty b/Master/texmf-dist/tex/latex/knowledge/knowledge.sty index 93019b0dbd0..fab365a87c9 100644 --- a/Master/texmf-dist/tex/latex/knowledge/knowledge.sty +++ b/Master/texmf-dist/tex/latex/knowledge/knowledge.sty @@ -23,7 +23,7 @@ %% LaTeX version 1999/12/01 or later. %% \usepackage{expl3} -\ProvidesExplPackage{knowledge}{2019/11/19}{1.19}{} +\ProvidesExplPackage{knowledge}{2019/12/03}{1.20}{} %%%%%%%%%% \RequirePackage{l3keys2e} \RequirePackage{etoolbox} @@ -159,10 +159,37 @@ \KAuxWrite*{}} \NewDocumentCommand\KAuxClose{} - {\iow_close:N\knowledge_kaux_iow + {\KAuxWrite*{\KAuxEOF {}} + \iow_close:N\knowledge_kaux_iow \bool_gset_true:N\kaux_can_be_used_bool \kaux_posttreatment_tl } +\cs_new:Npn\kaux_if_exist_containline:nnTF#1#2{ + \file_if_exist:nTF{#1}{ + \ior_open:Nn\klg_tmpa_ior{#1} + \bool_gset_false:N\g_tmpa_bool + \bool_gset_false:N\g_tmpb_bool + \str_gset:Nn\g_tmpb_str{#2} + \bool_do_until:Nn\g_tmpa_bool{ + \ior_if_eof:NTF\klg_tmpa_ior + {\bool_set_true:N\g_tmpa_bool} + { + \ior_str_get:NN\klg_tmpa_ior\g_tmpa_str + %\iow_term:x{(\exp_not:V\g_tmpa_str)=?(\exp_not:V\g_tmpb_str)} + \str_if_eq:NNTF\g_tmpa_str\g_tmpb_str + {\bool_gset_true:N\g_tmpa_bool + \bool_gset_true:N\g_tmpb_bool} + {} + }} + \ior_close:N\klg_tmpa_ior + %\bool_show:N\g_tmpb_bool + \bool_if:NTF\g_tmpb_bool + } + {\use_ii:nn} +} + +\NewDocumentCommand\IfKAuxReadyTF{} + {\exp_args:Nx\kaux_if_exist_containline:nnTF{\c_sys_jobname_str.kaux}{\KAuxEOF {}}} \NewDocumentCommand\KAuxBefore{m} {\tl_gput_right:Nn\kaux_pretreatment_tl{#1}} \NewDocumentCommand\KAuxAfter{m} @@ -184,6 +211,9 @@ \tl_gset:cn{kaux_\cs_to_str:N#1-args_tl}{#2} \tl_gput_right:Nn\kaux_command_list_tl{#1} } +\NewKAuxCommand\KAuxEOF{m} + {Does~nothing,~useless~empty~argument + ,~and~is~searched~for~knowing~if~the~kaux~file~was~written~till~the~end.} \NewDocumentCommand\KAuxCommand{mmm} { \cs_if_exist:NTF #1 {} @@ -624,7 +654,6 @@ \ior_close:N\klg_tmpa_ior \iow_close:N\klg_tmpa_iow \group_end:}} - \cs_new_protected_with_variants:Nnn\kl_compare_files:Nnn{NnV,NVn,NVV} {\group_begin: \bool_set_false:N\l_tmpa_bool% set when finished @@ -666,7 +695,6 @@ {\group_end:\bool_set_true:N#1} {\group_end:\bool_set_false:N#1} } - \cs_new_protected:Nn\kl_tl_to_file:nn {\iow_open:Nn\klg_tmpa_iow{#1} \iow_now:Nn\klg_tmpa_iow{#2} @@ -791,6 +819,13 @@ \tl_new:N\char_escape_tl \tl_set:Nx\char_escape_tl {\expandafter\tl_head:n\expandafter{\string\escape}} +\cs_new:Nn\debug_vars:nn{ + \iow_term:n{---~{#1}} + \tl_map_inline:nn{#2} + {\iow_term:x{\space\space\exp_not:N##1=\space\tl_if_exist:NTF##1 + {{\exp_not:V##1}} + {undefined}}} +} \cs_new:Nn\knowledge_info:n {\msg_info:nnn{knowledge}{knowledge~info}{#1}} \cs_new:Nn\knowledge_warning:n @@ -806,14 +841,14 @@ \cs_generate_variant:Nn\knowledge_warning:n{x} \cs_generate_variant:Nn\knowledge_error:n{x} \msg_new:nnn{ knowledge }{ knowledge~recursion } - { The~knowledges~are~probably~cyclic,~starting~from~'#1'~(namespace~'#2'),~ + { The~knowledges~are~probably~cyclic,~starting~from\\<#1>~(namespace~'#2'),~ currently~at~'#3'.} \msg_new:nnn{ knowledge }{ knowledge~unknown } - {The~knowledge~'#1'~could~not~be~found~in~scopes~<~#3~>~(namespace~'#2').} + {The~knowledge~'#1'~could~not~be~found~in~scopes\\<#3>~(namespace~'#2').} \msg_new:nnn{ knowledge }{ knowledge~unknown~in~scope } - {The~knowledge~'#1'~could~not~be~found~in~scope~'#3'~(namespace~'#2').} + {The~knowledge~'#1'~could~not~be~found~in~scope\\<#3>~(namespace~'#2').} \msg_new:nnn{ knowledge }{ knowledge~unknown~label } - {The~label~'#2'~could~not~be~found~while~searching~for~'#1'.~Possibly~rerun~latex.} + {The~label~'#2'~could~not~be~found~while~searching~for:\\<#1>\\Possibly~rerun~latex.} \msg_new:nnn{ knowledge }{ package~required } {In~order~to~use~directive~'#1',~please~load~package~or~use~option~'#2'.} \msg_new:nnn{ knowledge }{ knowledge~exists } @@ -835,12 +870,12 @@ \msg_new:nnn{scope}{area~not~in~context} {\tl_if_empty:nTF{#2}{}{\exp_not:n{#2}}: ~The~area~`#1'~can't~be~found~in~context.~Possibly~rerun~latex.} -\msg_new:nnn{knowledge}{recap~unknown~knowledge} - {Some~knowledge~are~not~defined.~See~the~'.diagnose'~file~for~more~information.} -\msg_new:nnn{knowledge}{recap~autoref~introduced~twice} - {Some~knowledge~is~introduced~twice.~See~the~'.diagnose'~file~for~more~information.} -\msg_new:nnn{knowledge}{recap~autoref~not~introduced} - {Some~knowledge~is~used~but~not~introduced.~See~the~'.diagnose'~file~for~more~information.} +\exp_args:Nnnx\msg_new:nnn{knowledge}{recap~unknown~knowledge} + {Some~knowledge~are~not~defined.~See~the~'\c_sys_jobname_str.diagnose'~file~for~more~information.} +\exp_args:Nnnx\msg_new:nnn{knowledge}{recap~autoref~introduced~twice} + {Some~knowledge~is~introduced~twice.~See~the~'\c_sys_jobname_str.diagnose'~file~for~more~information.} +\exp_args:Nnnx\msg_new:nnn{knowledge}{recap~autoref~not~introduced} + {Some~knowledge~is~used~but~not~introduced.~See~the~'\c_sys_jobname_str.diagnose'~file~for~more~information.} \tl_clear_new:N\knowledge_configuration_pending_tl \newrobustcmd\knowledgeconfigure[1]{ \keys_set:nn{ knowledge~configuration~options }{#1} @@ -928,9 +963,13 @@ \bool_new:N\knowledge_configuration_diagnoseline_bool \bool_set_false:N\knowledge_configuration_diagnoseline_bool \KnowledgeConfigureBooleanOption[\knowledge_configuration_diagnoseline_bool]{diagnose~line} -\bool_new:N\knowledge_configuration_barsuggestion_bool -\bool_gset_false:N\knowledge_configuration_barsuggestion_bool -\KnowledgeConfigureBooleanOption[\knowledge_configuration_barsuggestion_bool]{bar~suggestion} +\bool_new:N\knowledge_configuration_diagnosehelp_bool +\bool_set_true:N\knowledge_configuration_diagnosehelp_bool +\KnowledgeConfigureBooleanOption[\knowledge_configuration_diagnosehelp_bool]{diagnose~help} +\bool_new:N\knowledge_configuration_diagnosebar_bool +\bool_gset_true:N\knowledge_configuration_diagnosebar_bool +\KnowledgeConfigureBooleanOption[\knowledge_configuration_diagnosebar_bool]{bar~suggestion}%backward compatibility +\KnowledgeConfigureBooleanOption[\knowledge_configuration_diagnosebar_bool]{diagnose~bar} \bool_new:N\knowledge_configuration_visibleAP_bool \KnowledgeConfigureBooleanOption[\knowledge_configuration_visibleAP_bool]{visible~anchor~points}\KnowledgeConfigureBooleanOption[\knowledge_configuration_visibleAP_bool]{visible~AP} \bool_new:N\knowledge_hyperlinks_active_bool @@ -1441,20 +1480,20 @@ \bool_gset_true:c{\knowledge_scopetag_tl[#1]_bool}} } \NewDocumentCommand\knowledgescope{ >{\SplitList{,}}m }{ -\kl_hide_begin:\group_begin: + \kl_hide_begin:\group_begin: \ProcessList{#1}\knowledge_knowledgescope_one:n \group_end:\kl_hide_end: } \cs_new:Nn\knowledge_knowledgescope_one:n{ \knowledge_scopetag_declares:n{#1} \scope_get_labelizable_instance:N\l_tmpb_tl - \KAuxWriteX*{\exp_not:n{\KAuxNewLinkScopetagInstance}%{\exp_not:n{#1}}% old version - {#1}{\l_tmpb_tl}} + \KAuxWriteX*{\exp_not:N\KAuxNewLinkScopetagInstance{#1}{\l_tmpb_tl}} } \bool_new:N\knowledge_configuration_label_autoscope_bool \bool_gset_true:N\knowledge_configuration_label_autoscope_bool \KnowledgeConfigureBooleanOption[\knowledge_configuration_label_autoscope_bool]{patch~label} -\NewDocumentCommand\scopeLabel{m}{ +\KnowledgeConfigureBooleanOption[\knowledge_configuration_label_autoscope_bool]{label~scope} +\NewDocumentCommand\knowledgelabel{m}{ \kl_hide_begin: \bool_if:NTF \knowledge_configuration_label_autoscope_bool @@ -1464,7 +1503,8 @@ \kl_hide_end: \cs_if_exist:NTF\LaTeXlabel\LaTeXlabel\use_none:n{#1} } -\let\label\scopeLabel +\let\scopeLabel\knowledgelabel%for backward compatibility +\let\label\knowledgelabel \cs_new:Npn\knowledge_latex_label:n{ \cs_if_exist:NTF\LaTeXlabel\LaTeXlabel\label } @@ -1481,8 +1521,8 @@ \NewKAuxCommand\KAuxNewLinkScopetagInstance{mm} {Package~scope:~Declares~that~a~label~is~declared~in~an~instance~of~a~scope.} \DeclareKAuxPhaseCommand\KAuxNewLinkScopetagInstance{init}{ -\knowledge_scopetag_ensure:n{#1} -\seq_gput_right:cn{\knowledge_scopetag_tl[#1]_seq}{#2} + \knowledge_scopetag_ensure:n{#1} + \seq_gput_right:cn{\knowledge_scopetag_tl[#1]_seq}{#2} } \NewKAuxCommand\KAuxScopeNewInstance{mmm} {Package~scope:~Declares~a~new~instance~of~a~scope.} @@ -1539,7 +1579,7 @@ {\scope_area_pop:n{##1}} {}} \kutils_secure_latex_command:N\label - \let\label\scopeLabel + \let\label\knowledgelabel } \NewDocumentCommand\ScopeActivate{}{ \cs_gset_eq:NN\ScopeActivate\relax @@ -1593,9 +1633,9 @@ {\scope_area_pop:n{knowledge~import~internal}} \NewDocumentEnvironment{knowledge~context}{m} {\ScopeActivate\scope_area_push:n{knowledge~context~internal} - \scopeLabel{#1}} + \knowledgelabel{#1}} {\scope_area_pop:n{knowledge~context~internal}} -\KAuxBefore{\KAuxProcess{init}} +\KAuxBefore{\IfKAuxReadyTF{\KAuxProcess{init}}{}} \KAuxInit{} \KAuxAfter{\KnowledgeDiagnoseOutput} \iow_new:N\knowledge_diagnosefile_iow @@ -1638,6 +1678,21 @@ \knowledge_diagnose:n{} \knowledge_diagnose:n{} % + \bool_if:NTF\knowledge_configuration_diagnosehelp_bool + { + \knowledge_diagnose:n{********} + \knowledge_diagnose:n{*~Help~*} + \knowledge_diagnose:n{********} + \knowledge_diagnose:n{} + \knowledge_diagnose:x{\use:c{@backslashchar}\cs_to_str:N\knowledgeconfigure{diagnose~bar=false}~deactivate~`|'-notation~in~diagnose~file.} + \knowledge_diagnose:x{\use:c{@backslashchar}\cs_to_str:N\knowledgeconfigure{diagnose~help=false}~deactivate~long~help~in~the~diagnose~file.} + \knowledge_diagnose:x{\use:c{@backslashchar}\cs_to_str:N\knowledgeconfigure{diagnose~line=true}~add~line~numbers~to~diagnose~file.} + \knowledge_diagnose:n{} + }{ + \knowledge_diagnose:x{\use:c{@backslashchar}\cs_to_str:N\knowledgeconfigure{diagnose~help=true}~to~activate~help~in~the~diagnose~file.} + \knowledge_diagnose:n{} + } + % \int_compare:nNnT\kl_digest_unknownknowledge_int>0{ \knowledge_diagnose:n{************************} \knowledge_diagnose:n{*~Undefined~knowledges~*} @@ -1645,6 +1700,8 @@ \knowledge_diagnose:n{} % \knowledge_diagnose_reset_line: + \bool_if:NT\knowledge_configuration_diagnosebar_bool + {\knowledge_diagnose:x{\use:c{@backslashchar}knowledge{ignore}}} \KAuxProcess{diagnose-unknown-suggest} % \knowledge_diagnose:n{} @@ -1845,15 +1902,13 @@ export / false .code:n = {\bool_set_false:N\knowledge_knowledge_export_bool}, export / true .code:n = {\bool_set_true:N\knowledge_knowledge_export_bool}, export .default:n = false, - link~instance .code:n = - { \tl_set:Nn\knowledge_knowledge_instance_tl{#1} }, scope .code:n = - { \knowledge_scope_track_scope:n{#1} + { \knowledge_scope_track_scope:n{#1} \tl_gput_right:Nn\knowledge_knowledge_immediate_synonym_directives_tl{,scope = {#1}}}, synonym .code:n = { \bool_set_true:N\knowledge_knowledge_is_synonym_bool \exp_args:Nnx\keys_set:nn { knowledge~directives } - {link={\exp_not:o\knowledge_knowledge_synonymlink_tl}, + {link={\exp_not:V\knowledge_knowledge_synonymlink_tl}, link~instance={\exp_not:V\knowledge_knowledge_synonyminstance_tl}}}, } \NewKAuxCommand\KAuxKnowledge{mmmm} @@ -1910,7 +1965,7 @@ \bool_gset_false:N\knowledge_knowledge_is_synonym_bool % \tl_if_eq:nnTF{#4}{|} - {\__knowledge_knowledge_cont_newsyntax:nw{#3}|} + {\__knowledge_knowledge_cont_barnotation:nw{#3}|} {\tl_if_eq:nnTF{#4}{[} {\__knowledge_knowledge_cont_classical:nw{#3}[} {\__knowledge_knowledge_cont_classical:nw{#3}{#4}}} @@ -1926,6 +1981,7 @@ \kl_hide_end: } \NewDocumentCommand\__knowledge_knowledge_cont_classical:nw{m >{\SplitList{|}}o m }{ + %\iow_term:n{\__knowledge_knowledge_cont_classical~{#1}{#3}} \knowledge_knowledge_setparseat:NNn\l_tmpa_tl\l_tmpb_tl{#1} % \use:x{ @@ -1936,6 +1992,9 @@ \tl_if_empty:NTF\l_tmpb_tl{}{,scope={\exp_not:V\l_tmpb_tl}}}} % \exp_args:NV\__knowledge_knowledge_recallsynonym:n\l_tmpa_tl + %\tl_show:N\l_tmpa_tl + %\tl_show:N\knowledge_knowledge_instance_tl + %\tl_show:N\knowledge_knowledge_immediate_synonym_directives_tl % \IfNoValueTF{#2}{}{ \cs_set:Nn\l_tmpa_cs:n @@ -1946,40 +2005,42 @@ % \__knowledge_knowledge_end: } -\cs_new:Npn\knowledge_knowledge_newsyntax_firstline:n{} -\cs_new:Npn\knowledge_knowledge_newsyntax_nextlines:n{} -\cs_new:Npn\__knowledge_knowledge_cont_newsyntax:nw#1{ -\cs_set:Nn\knowledge_knowledge_newsyntax_firstline:n - {\knowledge{##1}{#1} - \cs_set_eq:NN - \knowledge_knowledge_newsyntax_exec_line:n - \knowledge_knowledge_newsyntax_nextlines:n} -\cs_set:Nn\knowledge_knowledge_newsyntax_nextlines:n - {\exp_args:Nnx\knowledge{##1} - {\exp_not:V\knowledge_knowledge_immediate_synonym_directives_tl}} -\cs_set_eq:NN - \knowledge_knowledge_newsyntax_exec_line:n - \knowledge_knowledge_newsyntax_firstline:n -\kl_newknowledge_parse:w +\cs_new:Npn\knowledge_knowledge_barnotation_firstline:n{} +\cs_new:Npn\knowledge_knowledge_barnotation_nextlines:n{} +\cs_new:Npn\__knowledge_knowledge_cont_barnotation:nw#1{ + \cs_set:Nn\knowledge_knowledge_barnotation_firstline:n{ + %\knowledge_knowledge_setparseat\g_tmpa_tl\g_tmpb_tl{#1} + %\iow_term:n{\knowledge{##1}{#1}~(first)} + \knowledge{##1}{#1} + \cs_set_eq:NN + \knowledge_knowledge_barnotation_exec_line:n + \knowledge_knowledge_barnotation_nextlines:n} + \cs_set:Nn\knowledge_knowledge_barnotation_nextlines:n + {%\iow_term:n{\exp_not:n{\knowledge{##1}}{synonym}} + \knowledge{##1}{synonym}} + \cs_set_eq:NN + \knowledge_knowledge_barnotation_exec_line:n + \knowledge_knowledge_barnotation_firstline:n + \kl_newknowledge_parse:w } \cs_new:Npn\kl_newknowledge_parse:w{ -\peek_charcode_remove_ignore_spaces:NTF| -{\kl_insert_klendline:w\knowledge_knowledge_newsyntax_exec_line:w} -{\__knowledge_knowledge_end:} + \peek_charcode_remove_ignore_spaces:NTF| + {\kl_insert_klendline:w\knowledge_knowledge_barnotation_exec_line:w} + {\__knowledge_knowledge_end:} } -\cs_new:Npn\knowledge_knowledge_newsyntax_exec_line:w#1\kl_end_line:{ - \knowledge_knowledge_newsyntax_exec_line:n{#1} -\kl_newknowledge_parse:w +\cs_new:Npn\knowledge_knowledge_barnotation_exec_line:w#1\kl_end_line:{ + \knowledge_knowledge_barnotation_exec_line:n{#1} + \kl_newknowledge_parse:w } \char_set_catcode_active:N\^^M \cs_gset:Npn\kl_insert_klendline:w{\group_begin:\catcode`\^^M=\active\kl_insert_klendline_:w} \cs_gset:Npn\kl_insert_klendline_:w#1^^M{\group_end:#1\kl_end_line:} \char_set_catcode_end_line:N\^^M \cs_new:Nn\knowledge_knowledge_setparseat:NNn -{\knowledge_knowledge_setparseat_:NNw#1#2#3@@\kl_end:} + {\knowledge_knowledge_setparseat_:NNw#1#2#3@@\kl_end:} \cs_new:Npn\knowledge_knowledge_setparseat_:NNw#1#2#3@#4@#5\kl_end: -{\tl_set:Nx#1{\tl_trim_spaces:n{#3}} -\tl_set:Nx#2{\tl_trim_spaces:n{#4}}} + {\tl_set:Nx#1{\tl_trim_spaces:n{#3}} + \tl_set:Nx#2{\tl_trim_spaces:n{#4}}} \NewDocumentCommand\knowledgestyle{ s m m } { \kl_hide_begin: \group_begin: @@ -2030,9 +2091,9 @@ {} % \bool_if:NT\knowledge_knowledge_clear_bool - {\tl_put_left:Nn\knowledge_knowledge_directives_tl{clear,}} + {\tl_put_left:Nn\knowledge_knowledge_directives_tl{clear,}} \bool_if:NT\knowledge_knowledge_append_bool - {\tl_put_left:Nn\knowledge_knowledge_directives_tl{force,}} + {\tl_put_left:Nn\knowledge_knowledge_directives_tl{force,}} % \bool_if:nTF{\knowledge_knowledge_now_bool} {\use:x{ @@ -2132,14 +2193,18 @@ \tl_gnew:Nn\knowledge_display_code_tl{INTERNAL~ERROR~DISPLAY~CODE} \NewDocumentCommand\klTKS{}{\knowledge_klTKS:nnn} \cs_new:Nn\knowledge_klTKS:nnn{ + %\iow_term:n{\knowledge_klTKS:nnn{#1}{#2}{#3}} \group_begin: % \tl_set:Nx\knowledge_kl_linkscope_tl{\tl_to_str:n{#3}} - \tl_set:Nn\knowledge_kl_instance_tl{} + \tl_set:Nn\knowledge_kl_linkinstance_tl{} \tl_set:Nn\knowledge_kl_text_tl{#1} \tl_set:Nx\knowledge_kl_base_key_tl{\tl_to_str:n{#2}} \tl_set_eq:NN\knowledge_kl_key_tl\knowledge_kl_base_key_tl \int_set_eq:NN\knowledge_kl_recursion_int\knowledge_kl_max_recursion_int + %\debug_vars:nn{klTKS:nnn} + % {\knowledge_kl_linkscope_tl\knowledge_kl_linkinstance_tl + % \knowledge_kl_text_tl\knowledge_kl_base_key_tl} % \tl_if_exist:cTF {knowledge_kl_\tl_to_str:V\knowledge_kl_modifiers_tl _init_tl} @@ -2161,7 +2226,9 @@ \knowledge_kl_find_recursion_exceeded:TF \knowledge_kl_error_recursion: {\tl_if_empty:NTF\knowledge_kl_linkscope_tl - \knowledge_kl_find_withoutscope: + {\tl_if_empty:NTF\knowledge_kl_linkinstance_tl + {\knowledge_kl_find_withoutscope:} + {\knowledge_kl_find_withinstance:}} \knowledge_kl_find_withscopetag:} } \cs_set:Npn\knowledge_kl_find_recursion_exceeded:TF{ @@ -2171,20 +2238,22 @@ \cs_new:Nn\knowledge_kl_find_withinstance:{ \knowledge_knowledge_if_exist:VVVTF \knowledge_kl_namespace_tl - \knowledge_kl_instance_tl + \knowledge_kl_linkinstance_tl \knowledge_kl_key_tl {\knowledge_kl_exec:nnV \knowledge_kl_namespace_tl - \knowledge_kl_instance_tl + \knowledge_kl_linkinstance_tl \knowledge_kl_key_tl} { \knowledge_kl_error_unknown_in_scope_firsttime: } } \cs_new:Nn\knowledge_kl_find_withscopetag:{ + %\debug_vars:nn{\knowledge_kl_find_withscopetag:}{\knowledge_kl_linkscope_tl} \exp_args:NV\knowledge_scopetag_warn_if_unknown:n\knowledge_kl_linkscope_tl \tl_clear:N\l_tmpa_tl \exp_args:Nc\seq_map_function:NN {\knowledge_scopetag_tl[\knowledge_kl_linkscope_tl]_seq} \knowledge_kl_find_scopetag_tmpa:n + % tests whether the search was successful \tl_if_empty:NTF\l_tmpa_tl {\knowledge_kl_error_unknown_in_scope_firsttime:} {\knowledge_kl_exec:VVV @@ -2192,6 +2261,9 @@ \l_tmpa_tl \knowledge_kl_key_tl} } +\cs_new:Npn\knowledge_kl_find_scopetag_tmpa:n{ + \knowledge_kl_find_scopetag:Nn\l_tmpa_tl +} \cs_new:Nn\knowledge_kl_find_scopetag:Nn{ \tl_if_empty:NTF#1 {\knowledge_knowledge_if_exist:VnVTF @@ -2202,16 +2274,18 @@ {}} {} } -\cs_new:Npn\knowledge_kl_find_scopetag_tmpa:n{ - \knowledge_kl_find_scopetag:Nn\l_tmpa_tl -} \cs_new:Nn\knowledge_kl_find_withoutscope:{ + %\debug_vars:nn{\knowledge_kl_find_withoutscope:} + % {\knowledge_kl_key_tl\knowledge_kl_linkinstance_tl} + %\exp_args:NVVV\knowledge_knowledge_if_exist:nnnTF + % \knowledge_kl_namespace_tl\knowledge_kl_linkinstance_tl\knowledge_kl_key_tl + % {\tl_show:n{found}}{\tl_show:n{not~found}} \knowledge_kl_find_in_scope:VNTF \knowledge_kl_key_tl - \knowledge_kl_instance_tl - {\knowledge_kl_exec:nnV + \knowledge_kl_linkinstance_tl + {\knowledge_kl_exec:VVV \knowledge_kl_namespace_tl - \knowledge_kl_instance_tl + \knowledge_kl_linkinstance_tl \knowledge_kl_key_tl} {\knowledge_kl_error_unknown_firsttime:} } @@ -2221,6 +2295,7 @@ } \cs_new:Nn\knowledge_kl_find_in_scope:nnNTF{ \group_begin: + %\tl_show:n{\knowledge_kl_find_in_scope:~#1/#2/#3} \tl_set:Nn\l_tmpa_tl{#1} \tl_set:Nn\l_tmpb_tl{#2} \bool_gset_false:N\g_tmpa_bool @@ -2233,13 +2308,13 @@ {#5} } \cs_new:Nn\knowledge_kl_find_in_scope_test:n{ -\tl_if_eq:nnTF{#1}{|}{}{ -\knowledge_kl_find_in_scope_test_:n{#1} -\seq_if_exist:cTF{\knowledge_scopetag_tl[#1]_seq} - {\exp_args:Nc\seq_map_function:NN - {\knowledge_scopetag_tl[#1]_seq} - \knowledge_kl_find_in_scope_test_:n - }{}} + \tl_if_eq:nnTF{#1}{|}{}{ + \knowledge_kl_find_in_scope_test_:n{#1} + \seq_if_exist:cTF{\knowledge_scopetag_tl[#1]_seq} + {\exp_args:Nc\seq_map_function:NN + {\knowledge_scopetag_tl[#1]_seq} + \knowledge_kl_find_in_scope_test_:n + }{}} } \cs_new:Nn\knowledge_kl_find_in_scope_test_:n{ \exp_args:Nc\ktuple_if_exist:NTF @@ -2253,13 +2328,14 @@ \cs_new:Nn\knowledge_kl_exec:nnn{ \tl_set:Nx\knowledge_kl_resourcearguments_tl {{#1}{#2}{\exp_not:n{#3}}} + %\debug_vars:nn{\knowledge_kl_exec:nnn}{\knowledge_kl_resourcearguments_tl} \exp_args:NNc\tl_set:Nn\knowledge_kl_resourcetoken_tl {\knowledge_id:nnn{#1}{#2}{#3}} \expandafter\ktuple_countuse_gincr:N\knowledge_kl_resourcetoken_tl % \tl_clear:N\knowledge_kl_link_tl \tl_clear:N\knowledge_kl_linkscope_tl - \tl_clear:N\knowledge_kl_instance_tl + \tl_clear:N\knowledge_kl_linkinstance_tl \tl_map_function:NN \knowledge_kl_styledirectives_tl \tl_clear:N @@ -2335,7 +2411,7 @@ {\tl_if_empty:NTF\l_tmpa_tl{}{\tl_put_right:Nn\l_tmpa_tl{,} \tl_put_right:Nn\l_tmpa_tl{namespace={#1}}}} - \bool_if:NTF\knowledge_configuration_barsuggestion_bool{ + \bool_if:NTF\knowledge_configuration_diagnosebar_bool{ %\knowledge_diagnose:x{\char_escape_tl knowledge{\exp_not:V\l_tmpa_tl}} \tl_set:Nn\l_tmpa_tl{~~~|~~#3} \tl_if_empty:nTF{#2}{} @@ -2607,7 +2683,7 @@ \NewKnowledgeParamBool*{uppercase}\kl_uppercase_bool \NewKnowledgeParamTl*{link} \NewKnowledgeParamTl*[\knowledge_kl_linkscope_tl]{link~scope} -\NewKnowledgeParamTl*[\knowledge_kl_instance_tl]{link~instance} +\NewKnowledgeParamTl*[\knowledge_kl_linkinstance_tl]{link~instance} \NewKnowledgeParamTl*[\knowledge_kl_forcedtext_tl]{text} \NewKnowledgeParamTl*{wrap} @@ -3198,7 +3274,7 @@ \expandafter{\tl_to_str:n{#1}}} \newcommand\robustdisplaybracket[1] {[\robustdisplay{#1}]} - +\knowledgedirective{ignore}{} \ExplSyntaxOff \IfKnowledgePaperModeTF{ \knowledgestyle{kl unknown}{} |