From 16d43984665bb8add0aac0a3812c4d3f5834029a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 27 Jun 2021 21:01:56 +0000 Subject: spbmark (27jun21) git-svn-id: svn://tug.org/texlive/trunk@59731 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/spbmark/spbmark.sty | 158 ++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/spbmark/spbmark.sty (limited to 'Master/texmf-dist/tex/latex/spbmark') diff --git a/Master/texmf-dist/tex/latex/spbmark/spbmark.sty b/Master/texmf-dist/tex/latex/spbmark/spbmark.sty new file mode 100644 index 00000000000..addec2be2ef --- /dev/null +++ b/Master/texmf-dist/tex/latex/spbmark/spbmark.sty @@ -0,0 +1,158 @@ +%% +%% This is file `spbmark.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% spbmark.dtx (with options: `package') +%% Copyright (C) 2021 by Qu Yi +%% +%% This work may be distributed and/or modified under the +%% conditions of the CC-BY 4.0 License. +%% The latest version of this license is in +%% https://creativecommons.org/licenses/by/4.0/legalcode +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\RequirePackage{l3keys2e} +\ProvidesExplPackage{spbmark}{2021/06/26}{1.00}{beta} + +\cs_new_protected:Npn \spb_define:n { \keys_define:nn { spbmark } } +\cs_new_protected:Npn \spbset { \keys_set:nn { spbmark } } +\keys_define:nn { spbmark/option } + { + ctex .code:n = + { + \cs_set:Npn \spb_define:n { \keys_define:nn { ctex/style } } + \cs_set:Npn \spbset { \keys_set:nn { ctex/style } } + } + } + +\ProcessKeysOptions{spbmark/option} + +\spb_define:n + { + super-vshift .dim_set:N = \l__spb_super_script_vshift_dim, + super-vshift .initial:n = 0pt, + super-hshift .dim_set:N = \l__spb_super_script_hshift_dim, + super-hshift .initial:n = 0pt, + sub-vshift .dim_set:N = \l__spb_sub_script_vshift_dim, + sub-vshift .initial:n = 0pt, + sub-hshift .dim_set:N = \l__spb_sub_script_hshift_dim, + sub-hshift .initial:n = 0pt, + supersubsep .dim_set:N = \l__spb_supersub_script_sep_dim, + supersubsep .initial:n = 0.3ex, + supersubalign .tl_set:N = \l__spb_supersub_script_align_tl, + supersubalign .initial:n = l + } +\tl_set:Nn \l__spb_boxa_wd_tl { \box_wd:N \l_tmpa_box } +\tl_set:Nn \l__spb_boxb_wd_tl { \box_wd:N \l_tmpb_box } +\cs_new:Npn \spb_tmp_boxa_use: { \box_use:N \l_tmpa_box } +\cs_new:Npn \spb_tmp_boxb_use: { \box_use:N \l_tmpb_box } +\cs_new:Npn \spb_box_max_dim_horizontal: + { + \skip_horizontal:n + { \dim_max:nn { \l__spb_boxa_wd_tl } { \l__spb_boxb_wd_tl } } + } +\cs_new:Npn \spb_boxwd_subtract:nnnn #1#2#3#4 + { + \skip_horizontal:n + { #1\tl_use:c { l__spb_#3_wd_tl } - #2\tl_use:c { l__spb_#4_wd_tl } } + } +\cs_new:Npn \spb_boxwd_script_align:nn #1#2 + { + \spb_boxwd_subtract:nnnn { 0.5 } { 0.5 } {#1} {#2} + \use:c { spb_tmp_#2_use: } + \spb_boxwd_subtract:nnnn { -0.5 } { 0.5 } {#1} {#2} + \use:c { spb_tmp_#1_use: } + } +\cs_set_eq:NN \spb@textsuperscript@save \textsuperscript +\cs_set_eq:NN \spb@textsubscript@save \textsubscript +\cs_new:Npn \spb_math:nn #1 + { + \str_case:nn {#1} + { + { super } { \sp } + { sub } { \sb } + } + } +\clist_map_inline:nn + { super,sub } + { + \exp_args:Nc \NewDocumentCommand {#1} + { + sO{\dim_use:c { l__spb_#1_script_vshift_dim }}D(){}m + O{\dim_use:c { l__spb_#1_script_hshift_dim }} + } + { + \IfBooleanTF{##1} + {\hbox_set:Nn \l_tmpa_box { $##3{\spb_math:nn {#1} {##4}}$ }} + { + \mode_if_math:TF + { \hbox_set:Nn \l_tmpa_box { $##3{\spb_math:nn {#1} {##4}}$ } } + { + \hbox_set:Nn \l_tmpa_box + { ##3{\use:c { spb@text#1script@save }{##4}} } + } + } + \hbox_set_to_wd:Nnn \l_tmpb_box { \l__spb_boxa_wd_tl + ##5 } + { \hss\box_move_up:nn {##2} { \spb_tmp_boxa_use: } } + \spb_tmp_boxb_use: + } + } +\NewDocumentCommand{\supersub} + { + sO{\l__spb_supersub_script_sep_dim} + O{\l__spb_supersub_script_align_tl}D(){}mmO{0pt}D(){} + } + { + \IfBooleanTF{#1} + { + \hbox_set:Nn \l_tmpa_box { $#4{\sp{#5}}$ } + \hbox_set:Nn \l_tmpb_box { $#8{\sb{#6}}$ } + }{ + \mode_if_math:TF + { + \hbox_set:Nn \l_tmpa_box { $#4{\sp{#5}}$ } + \hbox_set:Nn \l_tmpb_box { $#8{\sb{#6}}$ } + } + { + \hbox_set:Nn \l_tmpa_box { #4{\spb@textsuperscript@save{#5}} } + \hbox_set:Nn \l_tmpb_box { #8{\spb@textsubscript@save{#6}} } + } + } + \hbox_set_to_wd:Nnn \l_tmpa_box { \l__spb_boxa_wd_tl + #7 } + { \hss\box_move_up:nn {#2} { \spb_tmp_boxa_use: } } + \hbox_set_to_wd:Nnn \l_tmpb_box { \l__spb_boxb_wd_tl + #7 } + { \hss\box_move_down:nn {#2} { \spb_tmp_boxb_use: } } + \str_case:nnF {#3} + { + { l } { \use_i:nnn } + { c } { \use_ii:nnn } + { r } { \use_iii:nnn } + } + { \use_i:nnn } + { + \hbox_overlap_right:n { \spb_tmp_boxa_use: } + \hbox_overlap_right:n { \spb_tmp_boxb_use: } + \spb_box_max_dim_horizontal: + } + { + \dim_compare:nTF { \l__spb_boxa_wd_tl > \l__spb_boxb_wd_tl } + { \spb_boxwd_script_align:nn { boxa } { boxb } } + { \spb_boxwd_script_align:nn { boxb } { boxa } } + } + { + \spb_box_max_dim_horizontal: + \hbox_overlap_left:n { \spb_tmp_boxa_use: } + \hbox_overlap_left:n { \spb_tmp_boxb_use: } + } + } +\cs_set_eq:NN \textsuperscript \super +\cs_set_eq:NN \textsubscript \sub +\cs_set:Npn \@makefnmark + { \hbox:n { \fnmarkfont\super{\@thefnmark}[0pt] } } +\cs_if_exist:NTF \ftntm@font + { \cs_new:Npn \fnmarkfont { \ftntm@font } } + { \cs_new:Npn \fnmarkfont { \normalfont } } +\endinput +%% +%% End of file `spbmark.sty'. -- cgit v1.2.3