diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/spbmark/spbmark.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/spbmark/spbmark.sty | 109 |
1 files changed, 63 insertions, 46 deletions
diff --git a/Master/texmf-dist/tex/latex/spbmark/spbmark.sty b/Master/texmf-dist/tex/latex/spbmark/spbmark.sty index e78f1db6593..86ebb2a100d 100644 --- a/Master/texmf-dist/tex/latex/spbmark/spbmark.sty +++ b/Master/texmf-dist/tex/latex/spbmark/spbmark.sty @@ -9,14 +9,15 @@ % https://creativecommons.org/licenses/by/4.0/legalcode \NeedsTeXFormat{LaTeX2e}[2018/12/31] \RequirePackage{xparse,l3keys2e} -\ProvidesExplPackage{spbmark}{2022/03/04}{1.39} +\ProvidesExplPackage{spbmark}{2022/03/05}{1.4} {Customize superscripts and subscripts} \cs_generate_variant:Nn \box_set_ht:Nn { cv } \cs_generate_variant:Nn \box_set_dp:Nn { cv } \cs_generate_variant:Nn \dim_max:nn { VV } \cs_generate_variant:Nn \dim_gset:Nn { Nv } -\cs_generate_variant:Nn \dim_compare:nNnTF { V } +\cs_generate_variant:Nn \dim_abs:n { V,v } +\cs_generate_variant:Nn \dim_compare:nNnTF { V,v } \cs_generate_variant:Nn \msg_warning:nnn { nnV } \cs_generate_variant:Nn \str_case:nn { x } \cs_generate_variant:Nn \tl_if_novalue:nF { V } @@ -120,9 +121,9 @@ novmove .meta:n = { spvmove = 0pt,sbvmove = 0pt } } \cs_new:Npn \spb_box_super_move_up_i:n #1 - { \box_move_up:nn {#1} { \box_use:N \l__super_i_box } } + { \box_move_up:nn {#1} { \box_use:N \l__super_i_inner_box } } \cs_new:Npn \spb_box_sub_move_down_i:n #1 - { \box_move_down:nn {#1} { \box_use:N \l__sub_i_box } } + { \box_move_down:nn {#1} { \box_use:N \l__sub_i_inner_box } } \cs_new:Npn \spb_box_super_move_up_ii:n #1 { \box_move_up:nn {#1} { \box_use:N \l__super_ii_box } } \cs_new:Npn \spb_box_sub_move_down_ii:n #1 @@ -216,30 +217,31 @@ { \tl_set:Nn \l__sub_depth_ii_tl {#1} } } } -\cs_new_protected:Npn \spb_ht_dp_assign:nnn #1#2#3 +\cs_new_protected:Npn \spb_ht_dp_assign:nnnn #1#2#3#4 { \tl_if_blank:vF { l__#1_height_#3_tl } - { \box_set_ht:cv { l__#1_#3_box } { l__#1_height_#3_tl } } + { \box_set_ht:cv { l__#1_#3#4_box } { l__#1_height_#3_tl } } \tl_if_blank:vF { l__#1_depth_i_tl } - { \box_set_dp:cv { l__#2_#3_box } { l__#2_depth_#3_tl } } + { \box_set_dp:cv { l__#2_#3#4_box } { l__#2_depth_#3_tl } } } -\box_new:N \l__super_i_box -\box_new:N \l__sub_i_box +\box_new:N \l__super_i_outer_box +\box_new:N \l__super_i_inner_box +\box_new:N \l__sub_i_outer_box +\box_new:N \l__sub_i_inner_box \box_new:N \l__super_ii_box \box_new:N \l__sub_ii_box \dim_new:N \llastwd \dim_new:N \clastwd \dim_new:N \rlastwd -\tl_set:Nn \l__spb_box_super_wd_i_tl { \box_wd:N \l__super_i_box } -\tl_set:Nn \l__spb_box_sub_wd_i_tl { \box_wd:N \l__sub_i_box } -\tl_set:Nn \l__spb_box_super_wd_ii_tl { \box_wd:N \l__super_ii_box } -\tl_set:Nn \l__spb_box_sub_wd_ii_tl { \box_wd:N \l__sub_ii_box } -\tl_set:Nn \l__spb_box_max_wd_tl - { \dim_max:VV \l__spb_box_super_wd_ii_tl \l__spb_box_sub_wd_ii_tl } +\tl_set:Nn \superwd { \box_wd:N \l__super_ii_box } +\tl_set:Nn \subwd { \box_wd:N \l__sub_ii_box } +\tl_set:Nn \maxwd { \dim_max:VV \superwd \subwd } +\tl_set:Nn \l__spb_box_super_wd_i_tl { \box_wd:N \l__super_i_inner_box } +\tl_set:Nn \l__spb_box_sub_wd_i_tl { \box_wd:N \l__sub_i_inner_box } \cs_new:Npn \spb_math_print_store_i:nn #1#2 { - \hbox_set:cn { l__#1_i_box } + \hbox_gset:cn { l__#1_i_inner_box } { \ensuremath { @@ -251,7 +253,7 @@ } \cs_new:Npn \spb_text_print_store_i:nn #1#2 { - \hbox_set:cn { l__#1_i_box } + \hbox_gset:cn { l__#1_i_inner_box } { \use:c { spb@text#1script@save } { \tl_use:c { l__spb_#1_cmd_i_tl }{#2} } @@ -260,16 +262,16 @@ } \cs_new:Npn \spb_math_print_store_ii:nn #1#2 { - \hbox_set:Nn \l__super_ii_box + \hbox_gset:Nn \l__super_ii_box { \ensuremath{\spb@math@super@save{\l__spb_super_cmd_ii_tl{#1}}} } - \hbox_set:Nn \l__sub_ii_box + \hbox_gset:Nn \l__sub_ii_box { \ensuremath{\spb@math@sub@save{\l__spb_sub_cmd_ii_tl{#2}}} } } \cs_new:Npn \spb_text_print_store_ii:nn #1#2 { - \hbox_set:Nn \l__super_ii_box + \hbox_gset:Nn \l__super_ii_box { \spb@textsuperscript@save{\l__spb_super_cmd_ii_tl{#1}} } - \hbox_set:Nn \l__sub_ii_box + \hbox_gset:Nn \l__sub_ii_box { \spb@textsubscript@save{\l__spb_sub_cmd_ii_tl{#2}} } } \cs_set_eq:NN \spbifmath \use_ii:nn @@ -306,32 +308,38 @@ \cs_new_protected:Npn \spb_both_newcmd_map:n #1 { - \exp_args:Nc \NewDocumentCommand {#1}{O{}mO{}} + \exp_args:Nc \NewDocumentCommand {#1}{sO{}mO{}} { \group_begin: \mode_leave_vertical: \tl_gset:Nn \g__spb_mark_case_init_tl {#1} \spb_define:n { unknown .undefine: } - \spb_set:n { ##1,##3 } - \spb_mode_switch:nnn {#1} {##2} { i } - \spb_content_hbox_set:n {#1} - \spb_ht_dp_assign:nnn {#1} {#1} { i } - \box_use:c { l__#1_i_box } + \spb_set:n { ##2,##4 } + \spb_mode_switch:nnn {#1} {##3} { i } + \spb_content_hbox_set:nn {#1} {##1} + \spb_ht_dp_assign:nnnn {#1} {#1} { i } { _outer } + \box_use:c { l__#1_i_outer_box } \group_end: } } -\cs_new_protected:Npn \spb_content_hbox_set:n #1 +\cs_new_protected:Npn \spb_content_hbox_set:nn #1#2 { \dim_gset:Nn \clastwd { (\llastwd + \rlastwd)/2 } - \hbox_set:cn { l__#1_i_box } + \tl_set:Nn \abs@hmove@i { \dim_abs:v { l__spb_#1_hmove_tl } } + \hbox_set:cn { l__#1_i_outer_box } { - \dim_compare:nNnTF { \tl_use:c { l__spb_#1_hmove_tl } } < { 0pt } + \dim_compare:vNnTF { l__spb_#1_hmove_tl } < { 0pt } { \hbox_overlap_left:n { \hbox_overlap_right:n { \spb_box_vmove_i:nn {#1} { \tl_use:c { l__spb_#1_vmove_tl } } } - \skip_horizontal:n { \dim_abs:n { \tl_use:c { l__spb_#1_hmove_tl } } } + \skip_horizontal:n { \abs@hmove@i } + } + \IfBooleanT{#2} + { + \dim_compare:nNnT { \abs@hmove@i } < { \rlastwd } + { \skip_horizontal:n { \rlastwd - \abs@hmove@i } } } } { @@ -340,22 +348,30 @@ { \hss\spb_box_vmove_i:nn {#1} { \tl_use:c { l__spb_#1_vmove_tl } } } } } - \dim_gset:Nn \llastwd - { \tl_use:c { l__spb_box_#1_wd_i_tl } - \tl_use:c { l__spb_#1_hmove_tl } } + \dim_gset:Nv \llastwd { l__spb_box_#1_wd_i_tl } } \clist_map_inline:nn { super,sub } { \spb_both_newcmd_map:n {#1} } \cs_new:Npn \spb_supersub_hmove_if_negative:TF #1#2 { \dim_compare:VNnTF \l__spb_supersub_hmove_tl < { 0pt } {#1} {#2} } -\NewDocumentCommand{\supersub}{O{}mmO{}} +\tl_set:Nn \abs@hmove@ii { \dim_abs:V \l__spb_supersub_hmove_tl } +\cs_new:Npn \spb_supersub_avoid_overlap:n #1 + { + \IfBooleanT{#1} + { + \dim_compare:nNnT { \abs@hmove@ii } < { \maxwd } + { \skip_horizontal:n { \maxwd - \abs@hmove@ii } } + } + } +\NewDocumentCommand{\supersub}{sO{}mmO{}} { \group_begin: \mode_leave_vertical: \tl_gset:Nn \g__spb_mark_case_init_tl { supersub } \spb_define:n { unknown .undefine: } - \spb_set:n {#1,#4} - \spb_mode_switch:nnn {#2} {#3} { ii } - \spb_ht_dp_assign:nnn { super } { sub } { ii } + \spb_set:n {#2,#5} + \spb_mode_switch:nnn {#3} {#4} { ii } + \spb_ht_dp_assign:nnnn { super } { sub } { ii } { } \str_case:VnF \l__spb_supersub_halign_tl { { l } { \use_i:nnn } @@ -372,15 +388,16 @@ \hbox_overlap_left:n { \spb_hbox_overlap_vmove_ii:n { right } - \skip_horizontal:n { \dim_abs:n { \l__spb_supersub_hmove_tl } } + \skip_horizontal:n { \abs@hmove@ii } } + \spb_supersub_avoid_overlap:n {#1} } { \hbox:n { \skip_horizontal:n { \l__spb_supersub_hmove_tl } \spb_hbox_overlap_vmove_ii:n { right } - \skip_horizontal:n { \l__spb_box_max_wd_tl } + \skip_horizontal:n { \maxwd } } } } @@ -390,16 +407,16 @@ \hbox_overlap_left:n { \spb_hbox_overlap_vmove_ii:n { center } - \skip_horizontal:n - { \dim_abs:n { \l__spb_supersub_hmove_tl + \l__spb_box_max_wd_tl/2 } } + \skip_horizontal:n { \abs@hmove@ii - \maxwd/2 } } + \spb_supersub_avoid_overlap:n {#1} } { \hbox:n { - \skip_horizontal:n { \l__spb_box_max_wd_tl/2 + \l__spb_supersub_hmove_tl } + \skip_horizontal:n { \maxwd/2 + \l__spb_supersub_hmove_tl } \spb_hbox_overlap_vmove_ii:n { center } - \skip_horizontal:n { \l__spb_box_max_wd_tl/2 } + \skip_horizontal:n { \maxwd/2 } } } } @@ -409,14 +426,14 @@ \hbox_overlap_left:n { \spb_hbox_overlap_vmove_ii:n { left } - \skip_horizontal:n - { \dim_abs:n { \l__spb_supersub_hmove_tl + \l__spb_box_max_wd_tl } } + \skip_horizontal:n { \abs@hmove@ii - \maxwd } } + \spb_supersub_avoid_overlap:n {#1} } { \hbox:n { - \skip_horizontal:n { \l__spb_box_max_wd_tl + \l__spb_supersub_hmove_tl } + \skip_horizontal:n { \maxwd + \l__spb_supersub_hmove_tl } \spb_hbox_overlap_vmove_ii:n { left } } } |