From 70dd8a5346665a84bb1302c1395ef46fc449b7e9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 30 Oct 2019 21:19:15 +0000 Subject: pseudo (30oct19) git-svn-id: svn://tug.org/texlive/trunk@52582 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/pseudo/pseudo.sty | 113 ++++++++++++++------------ 1 file changed, 61 insertions(+), 52 deletions(-) (limited to 'Master/texmf-dist/tex/latex/pseudo') diff --git a/Master/texmf-dist/tex/latex/pseudo/pseudo.sty b/Master/texmf-dist/tex/latex/pseudo/pseudo.sty index 20859c819de..938fb4e887d 100644 --- a/Master/texmf-dist/tex/latex/pseudo/pseudo.sty +++ b/Master/texmf-dist/tex/latex/pseudo/pseudo.sty @@ -20,8 +20,8 @@ % OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE % SOFTWARE. % -\def \pseudoversion {1.1.2} -\def \pseudodate {2019-07-14} +\def \pseudoversion {1.1.3} +\def \pseudodate {2019/10/30} \RequirePackage{expl3} \ProvidesExplPackage {pseudo} @@ -42,10 +42,8 @@ \dim_new:N \pseudoindentlength \int_new:N \g__pseudo_indent_level_int \int_new:N \l__pseudo_initial_indent_level_int -\cs_generate_variant:Nn \tl_if_novalue:nTF { VTF } +\cs_generate_variant:Nn \quark_if_no_value:nTF { VTF } \cs_generate_variant:Nn \tl_set:Nn { Ne } -\cs_generate_variant:Nn \regex_extract_once:nnNTF { nVNTF } -\cs_generate_variant:Nn \regex_match:nnF { neF } \cs_new:Nn \__pseudo_undef_col:n { \tl_set_eq:cN { NC@find@ \token_to_str:N #1 } \scan_stop: } @@ -56,18 +54,18 @@ \cs_new:Nn \__pseudo_meta_new_cmd:NNnn { \tl_set:Nn \l_tmpa_tl {pseudo \cs_to_str:N #2} \exp_args:Nc - #1 \l_tmpa_tl {#3} {#4} + #1 \l_tmpa_tl #3 {#4} \cs_if_free:NT #2 {\cs_gset_eq:Nc #2 \l_tmpa_tl} } \cs_new:Nn \__pseudo_new_cmd:Nnn { \__pseudo_meta_new_cmd:NNnn - \NewDocumentCommand #1 {#2} { + \NewDocumentCommand #1 {{#2}} { #3 } } \cs_new:Nn \__pseudo_new_ecmd:Nnn { \__pseudo_meta_new_cmd:NNnn - \NewExpandableDocumentCommand #1 {#2} { + \def #1 {#2} { #3 } } @@ -89,7 +87,7 @@ } } \cs_new:Nn \__pseudo_set_indent_length: { - \tl_if_novalue:VTF \l__pseudo_indent_length_tl { + \quark_if_no_value:VTF \l__pseudo_indent_length_tl { \hbox_set:Nn \l_tmpa_box { \l__pseudo_indent_text_tl } \dim_set:Nn \pseudoindentlength { \box_wd:N \l_tmpa_box } } { @@ -152,53 +150,44 @@ \__pseudo_b_or_bx: \cs_if_exist:NT \@defaultsubs { \cs_gset_eq:NN \__pseudo_b_or_bx: \bfseries - \group_insert_after:N \__pseudo_b_or_bx: } \group_end: + \__pseudo_b_or_bx: } \cs_new:Nn \__pseudo_fmt_pr:n { \textnormal{\prfont{ #1 }} } -\cs_new:Nn \__pseudo_fmt_pr:nn { - \__pseudo_fmt_pr:n { #1 } - \ensuremath{ ( #2 ) } +\NewDocumentCommand \__pseudo_parse_paren_args { +d() } { + \IfNoValueF { #1 } { + \ensuremath{ ( #1 ) } + } } -\__pseudo_new_cmd:Nnn \pr { m !+d() } { - \IfNoValueTF { #2 } { - \__pseudo_fmt_pr:n { #1 } +\NewDocumentCommand \__pseudo_parse_bracket_or_paren_args { +o } { + \IfNoValueTF { #1 } { + \__pseudo_parse_paren_args } { - \__pseudo_fmt_pr:nn { #1 } { #2 } + \ensuremath{ [ #1 ] } + } +} +\__pseudo_new_cmd:Nnn \pr { m } { + \__pseudo_fmt_pr:n { #1 } + \peek_catcode:NTF { ~ } { } { + \__pseudo_parse_paren_args } } \cs_new:Nn \__pseudo_fmt_fn:n { \textnormal{\fnfont{ #1 }} } -\cs_new:Nn \__pseudo_fmt_fn:nn { - \__pseudo_fmt_fn:n { #1 } - \ensuremath{ ( #2 ) } -} -\cs_new:Nn \__pseudo_fmt_ar:nn { +\__pseudo_new_cmd:Nnn \fn { m } { \__pseudo_fmt_fn:n { #1 } - \ensuremath{ [ #2 ] } -} -\__pseudo_new_cmd:Nnn \fn { m !+o !+d() } { - \IfNoValueTF { #2 } { - \IfNoValueTF { #3 } { - \__pseudo_fmt_fn:n { #1 } - } { - \__pseudo_fmt_fn:nn { #1 } { #3 } - } - } { - \__pseudo_fmt_ar:nn { #1 } { #2 } - \IfNoValueF { #3 } { - ( #3 ) - } + \peek_catcode:NTF { ~ } { } { + \__pseudo_parse_bracket_or_paren_args } } -\__pseudo_new_ecmd:Nnn \hd { m +r() } { +\__pseudo_new_ecmd:Nnn \hd { #1 ( #2 ) } { \multicolumn{2} {\__pseudo_hd_preamble} - {\__pseudo_fmt_pr:nn{#1}{#2}} + {\__pseudo_fmt_pr:n{#1}\ensuremath{(#2)}} } \__pseudo_new_cmd:Nnn \st { +m } { \textnormal { @@ -208,7 +197,7 @@ \textnormal { \l__pseudo_ct_left_tl {\ctfont{#1}} \l__pseudo_ct_right_tl } } -\NewExpandableDocumentCommand \pseudohl { } { +\def \pseudohl { \rowcolor{\pseudohlcolor} } \__pseudo_new_dec:nn { Comment } { ct } @@ -229,7 +218,7 @@ \tex_mskip:D \l_tmpa_muskip \box_use:N \l_tmpa_box \tex_mskip:D \l_tmpb_muskip - \box_use_drop:N \l_tmpa_box + \box \l_tmpa_box \tex_mskip:D \l_tmpa_muskip } \group_end: @@ -281,7 +270,7 @@ ref .tl_set:N = \thepseudoline, ref .default:n = \l__pseudo_label_tl, indent-length .tl_set:N = \l__pseudo_indent_length_tl, - indent-length .initial:V = \c_novalue_tl, + indent-length .initial:V = \q_no_value, indent-text .tl_set:N = \l__pseudo_indent_text_tl, indent-text .initial:n = { \pseudofont\kw{else}\ }, indent-level .int_set:N = \l__pseudo_initial_indent_level_int, @@ -408,22 +397,42 @@ \msg_new:nnn { pseudo } { unknown-key } { Unknown~key~'#1'~ignored. } +\tl_new:N \l__pseudo_overlay_tl \keys_define:nn { pseudo } { unknown .code:n = { - \tl_set_eq:NN \l_tmpa_tl \l_keys_key_tl - \regex_extract_once:nVNTF {\A (.*) < (.*) > \Z} - \l_tmpa_tl \l_tmpa_seq { - \seq_pop_right:NN \l_tmpa_seq \l_tmpb_tl - \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl + \group_begin: + \tl_map_inline:Nn \l_keys_key_tl { + \tl_if_eq:nnTF { ##1 } { < } { + \int_incr:N \l_tmpa_int + \int_compare:nF { \l_tmpb_int == 0 } { + \int_incr:N \l_tmpa_int + } + \tl_set_eq:NN \l_tmpb_tl \l_tmpa_tl + \tl_clear:N \l_tmpa_tl + } { + \tl_if_eq:nnTF { ##1 } { > } { + \int_incr:N \l_tmpb_int + \tl_set_eq:NN \l__pseudo_overlay_tl \l_tmpa_tl + \tl_clear:N \l_tmpa_tl + } { + \tl_put_right:Nn \l_tmpa_tl { ##1 } + } } + } + \bool_if:nTF { + \int_compare_p:n { \l_tmpa_int == \l_tmpb_int == 1 } + && + \tl_if_empty_p:N \l_tmpa_tl + }{ \tl_if_blank:nF{#1} { - \tl_put_right:Nn \l_tmpa_tl {= #1} + \tl_put_right:Nn \l_tmpb_tl {= #1} } \__pseudo_keys_set_overlay:VnV - \l_tmpb_tl { pseudo } \l_tmpa_tl - }{ + \l__pseudo_overlay_tl { pseudo } \l_tmpb_tl + } { \msg_error:nnx { pseudo } { unknown-key } { \l_keys_path_tl } } + \group_end: } } \cs_new:Nn \__pseudo_set:n { \keys_set:nn { pseudo } { #1 } } @@ -431,7 +440,7 @@ \int_gincr:N \g__pseudo_indent_level_int } \cs_new:Nn \__pseudo_dec_indent: { - \int_compare:nNnT \g__pseudo_indent_level_int > \c_zero_int { + \int_compare:nNnT \g__pseudo_indent_level_int > 0 { \int_gdecr:N \g__pseudo_indent_level_int } } @@ -448,7 +457,7 @@ \tl_gset_eq:NN \g__pseudo_cur_prefix_tl \pseudoprefix } } -\NewDocumentCommand \__pseudo_eol_tail { !s d<> +O{ } } { +\NewDocumentCommand \__pseudo_eol_tail { s d<> +O{ } } { \__pseudo_eol_handle_args:nnn{#1}{#2}{#3} \peek_meaning_ignore_spaces:NF \end { \pseudoeol @@ -490,7 +499,7 @@ } } } -\NewDocumentEnvironment { pseudo } { !+o !s d<> +O{ } } { +\NewDocumentEnvironment { pseudo } { +o s d<> +O{ } } { \group_begin: \__pseudo_gsave_as:NN \\ \c__pseudo_saved_cr_cs \__pseudo_gsave_as:NN \= \c__pseudo_saved_eq_cs -- cgit v1.2.3