summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/spbmark
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-06-27 21:01:56 +0000
committerKarl Berry <karl@freefriends.org>2021-06-27 21:01:56 +0000
commit16d43984665bb8add0aac0a3812c4d3f5834029a (patch)
treebf4b44cce6438c06e7af1c6da9fe1c7afee172bf /Master/texmf-dist/tex/latex/spbmark
parente038ef8a58d015e7f9b3011950c7cd36cf1727be (diff)
spbmark (27jun21)
git-svn-id: svn://tug.org/texlive/trunk@59731 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/spbmark')
-rw-r--r--Master/texmf-dist/tex/latex/spbmark/spbmark.sty158
1 files changed, 158 insertions, 0 deletions
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 <quee123@foxmail.com>
+%%
+%% 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'.