diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/l3doc.cls')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/l3doc.cls | 169 |
1 files changed, 103 insertions, 66 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index 3b94767ca26..d03dd25b8ea 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -13,14 +13,14 @@ %% this license or (at your option) any later version. The latest %% version of this license is in the file: %% -%% http://www.latex-project.org/lppl.txt +%% https://www.latex-project.org/lppl.txt %% %% This file is part of the "l3kernel bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% %% File: l3doc.dtx Copyright (C) 1990-2017 The LaTeX3 project \RequirePackage{expl3,xparse,calc} -\ProvidesExplClass{l3doc}{2017/11/14}{} +\ProvidesExplClass{l3doc}{2017/12/05}{} {L3 Experimental documentation class} \clist_new:N \g_docinput_clist \seq_new:N \g_doc_functions_seq @@ -42,8 +42,8 @@ \prop_new:N \g__codedoc_missing_tests_prop \seq_new:N \g__codedoc_not_tested_seq \seq_new:N \g__codedoc_testfiles_seq +\bool_new:N \l__codedoc_macro_internal_set_bool \bool_new:N \l__codedoc_macro_internal_bool -\bool_new:N \l__codedoc_macro_aux_bool \bool_new:N \l__codedoc_macro_TF_bool \bool_new:N \l__codedoc_macro_pTF_bool \bool_new:N \l__codedoc_macro_noTF_bool @@ -56,6 +56,7 @@ \bool_new:N \g__codedoc_lmodern_bool \bool_new:N \g__codedoc_checkfunc_bool \bool_new:N \g__codedoc_checktest_bool +\bool_new:N \g__codedoc_kernel_bool \tl_new:N \l__codedoc_tmpa_tl \tl_new:N \l__codedoc_tmpb_tl \int_new:N \l__codedoc_tmpa_int @@ -100,9 +101,11 @@ \cs_new_eq:NN \__codedoc_tmpa:w ? \cs_new_eq:NN \__codedoc_tmpb:w ? \cs_generate_variant:Nn \seq_set_split:Nnn { NoV } +\cs_generate_variant:Nn \seq_gput_right:Nn { Nf } \cs_generate_variant:Nn \str_case:nn { fn } \cs_generate_variant:Nn \tl_count:n { f } \cs_generate_variant:Nn \tl_greplace_all:Nnn { Nx , Nno } +\cs_generate_variant:Nn \tl_if_empty:nTF { f } \cs_generate_variant:Nn \tl_if_head_eq_charcode:nNTF { o } \cs_generate_variant:Nn \tl_if_head_eq_charcode:nNT { o } \cs_generate_variant:Nn \tl_if_head_eq_charcode:nNF { o } @@ -177,10 +180,19 @@ { \str_if_eq:NNF \l__codedoc_detect_internals_tl \g__codedoc_module_name_tl { - \msg_warning:nnxxx { l3doc } { foreign-internal } - { \tl_to_str:N \l__codedoc_detect_internals_cs_tl } - { \tl_to_str:N \l__codedoc_detect_internals_tl } - { \tl_to_str:N \g__codedoc_module_name_tl } + \bool_lazy_and:nnF + { \g__codedoc_kernel_bool } + { + \str_if_eq_x_p:nn + { \tl_to_str:N \l__codedoc_detect_internals_tl } + { kernel } + } + { + \msg_warning:nnxxx { l3doc } { foreign-internal } + { \tl_to_str:N \l__codedoc_detect_internals_cs_tl } + { \tl_to_str:N \l__codedoc_detect_internals_tl } + { \tl_to_str:N \g__codedoc_module_name_tl } + } } } } @@ -355,6 +367,8 @@ The~'syntax'~environment~should~only~be~used~once~in~ a~'function'~environment. } +\msg_new:nnn { l3doc } { deprecated-option } + { The~option~'#1'~has~been~deprecated~for~'#2'. } \msg_new:nnn { l3doc } { foreign-internal } { A~control~sequence~of~the~form~'...__#1'~was~used.~ @@ -380,12 +394,16 @@ { \bool_gset_true:N \g__codedoc_checktest_bool } \DeclareOption { nochecktest } { \bool_gset_false:N \g__codedoc_checktest_bool } +\DeclareOption { kernel } + { \bool_gset_true:N \g__codedoc_kernel_bool } +\DeclareOption { stdmodule } + { \bool_gset_false:N \g__codedoc_kernel_bool } \DeclareOption { cm-default } { \bool_gset_false:N \g__codedoc_lmodern_bool } \DeclareOption { lm-default } { \bool_gset_true:N \g__codedoc_lmodern_bool } \DeclareOption* { \PassOptionsToClass { \CurrentOption } { article } } -\ExecuteOptions { full, nocheck, nochecktest, lm-default } +\ExecuteOptions { full, kernel, nocheck, nochecktest, lm-default } \PassOptionsToClass { a4paper } { article } \msg_new:nnn { l3doc } { input-cfg } { Local~config~file~l3doc.cfg~loaded. } @@ -663,11 +681,16 @@ } \tl_replace_all:Nnn \l__codedoc_cmd_tl { ~ } { \@xobeysp } \l__codedoc_cmd_tl + \@ } \bool_if:NF \l__codedoc_cmd_noindex_bool { \quark_if_no_value:NF \l__codedoc_cmd_index_tl - { \tl_set_eq:NN \l__codedoc_cmd_tl \l__codedoc_cmd_index_tl } + { + \tl_set:Nx \l__codedoc_cmd_tl + { \c_backslash_str \exp_not:o { \l__codedoc_cmd_index_tl } } + } + \exp_args:No \__codedoc_key_get:n { \l__codedoc_cmd_tl } \quark_if_no_value:NF \l__codedoc_cmd_module_tl { @@ -732,7 +755,7 @@ } \cs_new_protected:Npn \__codedoc_typeset_aux:n #1 { - { \color[gray]{0.7} #1 } + { \color[gray]{0.5} #1 } } \cs_new_protected:Npn \__codedoc_get_hyper_target:nN #1#2 { @@ -848,6 +871,43 @@ { \__codedoc_macro_typeset_block:nN } } \cs_generate_variant:Nn \__codedoc_names_typeset_block:nN { x } +\prg_new_conditional:Npnn \__codedoc_if_macro_internal:n #1 { p , T , F , TF } + { + \bool_if:NTF \l__codedoc_macro_internal_set_bool + { + \bool_if:NTF \l__codedoc_macro_internal_bool + { \prg_return_true: } { \prg_return_false: } + } + { + \tl_if_empty:fTF + { + \exp_after:wN \__codedoc_if_macro_internal_aux:w + \tl_to_str:n { #1 ~ __ } + } + { \prg_return_false: } { \prg_return_true: } + } + } +\exp_last_unbraced:NNNNo + \cs_new:Npn \__codedoc_if_macro_internal_aux:w #1 { \tl_to_str:n { __ } } { } +\cs_new_protected:Npn \__codedoc_names_block_base_map:N #1 + { + \tl_map_inline:Nn \l__codedoc_names_block_tl + { + \group_begin: + \seq_set_eq:NN \l__codedoc_tmpa_seq ##1 + \seq_pop:NN \l__codedoc_tmpa_seq \l__codedoc_tmpa_tl + \seq_get:NN \l__codedoc_tmpa_seq \l__codedoc_tmpb_tl + \exp_args:NNx + \group_end: + #1 + { + \l__codedoc_tmpa_tl + \str_if_eq_x:nnF { \l__codedoc_tmpb_tl } { \scan_stop: } + { : \l__codedoc_tmpb_tl } + \bool_if:NT \l__codedoc_macro_TF_bool { TF } + } + } + } \keys_define:nn { l3doc/function } { TF .value_forbidden:n = true , @@ -915,6 +975,7 @@ { \l__codedoc_tmpa_tl } } \bool_set_true:N \l__codedoc_macro_internal_bool + \bool_set_true:N \l__codedoc_macro_internal_set_bool } \cs_new_protected:Npn \__codedoc_function:nnw #1#2 { @@ -1165,13 +1226,22 @@ { aux .value_forbidden:n = true , aux .code:n = - { \bool_set_true:N \l__codedoc_macro_aux_bool } , + { + \msg_warning:nnnn { l3doc } { deprecated-option } + { aux } { function/macro } + } , internal .value_forbidden:n = true , internal .code:n = - { \bool_set_true:N \l__codedoc_macro_internal_bool } , + { + \bool_set_true:N \l__codedoc_macro_internal_bool + \bool_set_true:N \l__codedoc_macro_internal_set_bool + } , int .value_forbidden:n = true , int .code:n = - { \bool_set_true:N \l__codedoc_macro_internal_bool } , + { + \bool_set_true:N \l__codedoc_macro_internal_bool + \bool_set_true:N \l__codedoc_macro_internal_set_bool + } , var .value_forbidden:n = true , var .code:n = { \bool_set_true:N \l__codedoc_macro_var_bool } , @@ -1222,7 +1292,6 @@ \keys_set:nn { l3doc/macro } {#1} \__codedoc_names_get_seq:nN {#2} \l__codedoc_names_seq \__codedoc_names_parse: - \__codedoc_macro_adjust_internal: \__codedoc_macro_save_names: \__codedoc_names_typeset: \__codedoc_macro_dump: @@ -1231,8 +1300,8 @@ \cs_new_protected:Npn \__codedoc_macro_init: { \int_incr:N \l__codedoc_nested_macro_int - \bool_set_false:N \l__codedoc_macro_aux_bool \bool_set_false:N \l__codedoc_macro_internal_bool + \bool_set_false:N \l__codedoc_macro_internal_set_bool \bool_set_false:N \l__codedoc_macro_TF_bool \bool_set_false:N \l__codedoc_macro_pTF_bool \bool_set_false:N \l__codedoc_macro_noTF_bool @@ -1260,37 +1329,17 @@ { \tl_set:Nn \l__codedoc_override_module_tl { \q_no_value } } -\cs_new_protected:Npn \__codedoc_macro_adjust_internal: - { - \bool_if:NF \l__codedoc_macro_internal_bool - { - \bool_if:NF \l__codedoc_macro_aux_bool - { - \bool_set_true:N \l__codedoc_macro_internal_bool - \seq_map_inline:Nn \l__codedoc_names_seq - { - \tl_if_in:noF {##1} { \tl_to_str:n { __ } } - { \bool_set_false:N \l__codedoc_macro_internal_bool } - } - } - } - } \cs_new_protected:Npn \__codedoc_macro_save_names: { - \tl_map_inline:Nn \l__codedoc_names_block_tl + \tl_if_empty:NTF \l__codedoc_macro_documented_tl + { \__codedoc_names_block_base_map:N \__codedoc_macro_save_names_aux:n } { - \seq_set_eq:NN \l__codedoc_tmpa_seq ##1 - \seq_pop:NN \l__codedoc_tmpa_seq \l__codedoc_tmpa_tl - \seq_get:NN \l__codedoc_tmpa_seq \l__codedoc_tmpb_tl - \seq_gput_right:Nx \g__codedoc_nested_names_seq - { - \l__codedoc_tmpa_tl - \str_if_eq_x:nnF { \l__codedoc_tmpb_tl } { \scan_stop: } - { : \l__codedoc_tmpb_tl } - \bool_if:NT \l__codedoc_macro_TF_bool { TF } - } + \seq_gput_right:Nf \g__codedoc_nested_names_seq + { \exp_after:wN \token_to_str:N \l__codedoc_macro_documented_tl } } } +\cs_new_protected:Npn \__codedoc_macro_save_names_aux:n #1 + { \seq_gput_right:Nn \g__codedoc_nested_names_seq {#1} } \cs_new_protected:Npn \__codedoc_macro_dump: { \topsep\MacroTopsep @@ -1339,7 +1388,7 @@ \DoNotIndex {#1} \bool_if:NT #2 { - \bool_if:NF \l__codedoc_macro_aux_bool + \__codedoc_if_macro_internal:nF {#1} { \seq_gput_right:Nn \g_doc_macros_seq {#1} } \hbox_set:Nw \l__codedoc_macro_index_box \hbox_unpack_clear:N \l__codedoc_macro_index_box @@ -1383,7 +1432,7 @@ } \cs_new_protected:Npn \__codedoc_macroname_prefix:n #1 { - \bool_if:NTF \l__codedoc_macro_aux_bool + \__codedoc_if_macro_internal:nTF {#1} { \__codedoc_typeset_aux:n {#1} } {#1} } \cs_generate_variant:Nn \__codedoc_macroname_prefix:n { o } @@ -1450,24 +1499,22 @@ \endtrivlist \__codedoc_macro_end_check_tested: \int_compare:nNnT \l__codedoc_nested_macro_int = 1 - { - \__codedoc_macro_end_style:n { \__codedoc_print_end_definition: } - \seq_gclear:N \g__codedoc_nested_names_seq - } + { \__codedoc_macro_end_style:n { \__codedoc_print_end_definition: } } } \cs_new_protected:Npn \__codedoc_macro_end_check_tested: { \bool_lazy_all:nT { { \g__codedoc_checktest_bool } - { ! \l__codedoc_macro_aux_bool } { ! \l__codedoc_macro_var_bool } { ! \l__codedoc_macro_tested_bool } } { + \seq_set_filter:NNn \l__codedoc_tmpa_seq \l__codedoc_names_seq + { ! \__codedoc_if_macro_internal_p:n {##1} } \seq_gput_right:Nx \g__codedoc_not_tested_seq { - \seq_use:Nn \l__codedoc_names_seq { , } + \seq_use:Nn \l__codedoc_tmpa_seq { , } \bool_if:NTF \l__codedoc_macro_pTF_bool {~(pTF)} { \bool_if:NT \l__codedoc_macro_TF_bool {~(TF)} } } @@ -1502,33 +1549,23 @@ } \cs_new_protected:Npn \__codedoc_print_documented: { - \bool_lazy_or:nnF - { \l__codedoc_macro_aux_bool } - { \l__codedoc_macro_internal_bool } + \seq_gset_filter:NNn \g__codedoc_nested_names_seq + \g__codedoc_nested_names_seq + { ! \__codedoc_if_macro_internal_p:n {##1} } + \seq_if_empty:NF \g__codedoc_nested_names_seq { \int_set:Nn \l__codedoc_tmpa_int { \seq_count:N \g__codedoc_nested_names_seq } - \tl_if_empty:NTF \l__codedoc_macro_documented_tl - { - \tl_set:Nx \l__codedoc_macro_documented_tl - { \seq_item:Nn \g__codedoc_nested_names_seq { 1 } } - } - { - \tl_set:Nf \l__codedoc_macro_documented_tl - { - \exp_after:wN \token_to_str:N - \l__codedoc_macro_documented_tl - } - } \int_compare:nNnTF \l__codedoc_tmpa_int = 1 {~This~} {~These~} \bool_if:NTF \l__codedoc_macro_var_bool {variable} {function} \int_compare:nNnTF \l__codedoc_tmpa_int = 1 {~is~} {s~are~} documented~on~page~ - \__codedoc_get_hyper_target:oN - \l__codedoc_macro_documented_tl + \__codedoc_get_hyper_target:xN + { \seq_item:Nn \g__codedoc_nested_names_seq { 1 } } \l__codedoc_tmpa_tl \exp_args:Nx \pageref { \l__codedoc_tmpa_tl } . } + \seq_gclear:N \g__codedoc_nested_names_seq } \newcommand*{\DescribeOption} { |