diff options
author | Karl Berry <karl@freefriends.org> | 2012-04-23 23:35:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2012-04-23 23:35:34 +0000 |
commit | 06f92e7988867477e0e8ba1b2dea3752d90f7fbe (patch) | |
tree | 6cc2f8ec5dbfc078c9c5f37bfb15814c704b1793 /Master/texmf-dist/tex/latex/l3kernel/l3skip.sty | |
parent | 84c410717bd484db4ccea240224d83fbb42b464a (diff) |
l3kernel 3570 (23apr12)
git-svn-id: svn://tug.org/texlive/trunk@26111 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/l3skip.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/l3skip.sty | 140 |
1 files changed, 96 insertions, 44 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty index 5ba6dec68d7..671ce242540 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty @@ -47,7 +47,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3skip.dtx 3460 2012-02-26 12:16:41Z will $ +\GetIdInfo$Id: l3skip.dtx 3499 2012-03-05 16:08:55Z bruno $ {L3 Experimental dimensions and skips} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -61,16 +61,30 @@ \newdimen #1 } \cs_generate_variant:Nn \dim_new:N { c } +\cs_new_protected:Npn \dim_const:Nn #1 + { + \dim_new:N #1 + \dim_gset:Nn #1 + } +\cs_generate_variant:Nn \dim_const:Nn { c } \cs_new_protected:Npn \dim_zero:N #1 { #1 \c_zero_dim } \cs_new_protected:Npn \dim_gzero:N { \tex_global:D \dim_zero:N } \cs_generate_variant:Nn \dim_zero:N { c } \cs_generate_variant:Nn \dim_gzero:N { c } \cs_new_protected:Npn \dim_zero_new:N #1 - { \cs_if_exist:NTF #1 { \dim_zero:N #1 } { \dim_new:N #1 } } + { \dim_if_exist:NTF #1 { \dim_zero:N #1 } { \dim_new:N #1 } } \cs_new_protected:Npn \dim_gzero_new:N #1 - { \cs_if_exist:NTF #1 { \dim_gzero:N #1 } { \dim_new:N #1 } } + { \dim_if_exist:NTF #1 { \dim_gzero:N #1 } { \dim_new:N #1 } } \cs_generate_variant:Nn \dim_zero_new:N { c } \cs_generate_variant:Nn \dim_gzero_new:N { c } +\cs_new_eq:NN \dim_if_exist:NTF \cs_if_exist:NTF +\cs_new_eq:NN \dim_if_exist:NT \cs_if_exist:NT +\cs_new_eq:NN \dim_if_exist:NF \cs_if_exist:NF +\cs_new_eq:NN \dim_if_exist_p:N \cs_if_exist_p:N +\cs_new_eq:NN \dim_if_exist:cTF \cs_if_exist:cTF +\cs_new_eq:NN \dim_if_exist:cT \cs_if_exist:cT +\cs_new_eq:NN \dim_if_exist:cF \cs_if_exist:cF +\cs_new_eq:NN \dim_if_exist_p:c \cs_if_exist_p:c \cs_new_protected:Npn \dim_set:Nn #1#2 { #1 ~ \dim_eval:w #2 \dim_eval_end: } \cs_new_protected:Npn \dim_gset:Nn { \tex_global:D \dim_set:Nn } @@ -127,33 +141,40 @@ } \prg_new_conditional:Npnn \dim_compare:n #1 { p , T , F , TF } { - \exp_after:wN \dim_compare_aux:wNN \dim_use:N \dim_eval:w #1 - \dim_eval_end: + \exp_after:wN \dim_compare_aux:w \dim_use:N \dim_eval:w #1 + \kernel_compare_error: \dim_eval_end: \prg_return_true: \else: \prg_return_false: \fi: } \exp_args:Nno \use:nn - { \cs_new:Npn \dim_compare_aux:wNN #1 } + { \cs_new:Npn \dim_compare_aux:w #1 } { \tl_to_str:n { pt } } - #2 #3 - { - \use:c - { - dim_compare_ #2 - \if_meaning:w = #3 = \fi: - :nw - } - { #1 pt } #3 - } -\cs_new:cpn { dim_compare_<:nw } #1 { \if_dim:w #1 < \dim_eval:w } -\cs_new:cpn { dim_compare_=:nw } #1 { \if_dim:w #1 = \dim_eval:w } -\cs_new:cpn { dim_compare_>:nw } #1 { \if_dim:w #1 > \dim_eval:w } -\cs_new:cpn {dim_compare_==:nw} #1#2 { \if_dim:w #1 = \dim_eval:w } -\cs_new:cpn {dim_compare_<=:nw} #1#2 {\reverse_if:N \if_dim:w #1 > \dim_eval:w} -\cs_new:cpn {dim_compare_!=:nw} #1#2 {\reverse_if:N \if_dim:w #1 = \dim_eval:w} -\cs_new:cpn {dim_compare_>=:nw} #1#2 {\reverse_if:N \if_dim:w #1 < \dim_eval:w} + #2 \kernel_compare_error: + { + \exp_after:wN \dim_compare_aux:NNw #2 ?? \q_mark + #1 pt #2 + } +\cs_new:Npn \dim_compare_aux:NNw #1#2#3 \q_mark + { + \use:c { dim_compare_ #1 \if_meaning:w = #2 = \fi: :NNw } + \kernel_compare_error:Nw #1 + } +\cs_new:cpn { dim_compare_=:NNw } #1#2#3 = + { \if_dim:w #3 = \dim_eval:w } +\cs_new:cpn { dim_compare_<:NNw } #1#2#3 < + { \if_dim:w #3 < \dim_eval:w } +\cs_new:cpn { dim_compare_>:NNw } #1#2#3 > + { \if_dim:w #3 > \dim_eval:w } +\cs_new:cpn { dim_compare_==:NNw } #1#2#3 == + { \if_dim:w #3 = \dim_eval:w } +\cs_new:cpn { dim_compare_!=:NNw } #1#2#3 != + { \reverse_if:N \if_dim:w #3 = \dim_eval:w } +\cs_new:cpn { dim_compare_<=:NNw } #1#2#3 <= + { \reverse_if:N \if_dim:w #3 > \dim_eval:w } +\cs_new:cpn { dim_compare_>=:NNw } #1#2#3 >= + { \reverse_if:N \if_dim:w #3 < \dim_eval:w } \cs_set:Npn \dim_while_do:nn #1#2 { \dim_compare:nT {#1} @@ -248,16 +269,30 @@ \newskip #1 } \cs_generate_variant:Nn \skip_new:N { c } +\cs_new_protected:Npn \skip_const:Nn #1 + { + \skip_new:N #1 + \skip_gset:Nn #1 + } +\cs_generate_variant:Nn \skip_const:Nn { c } \cs_new_protected:Npn \skip_zero:N #1 { #1 \c_zero_skip } \cs_new_protected:Npn \skip_gzero:N { \tex_global:D \skip_zero:N } \cs_generate_variant:Nn \skip_zero:N { c } \cs_generate_variant:Nn \skip_gzero:N { c } \cs_new_protected:Npn \skip_zero_new:N #1 - { \cs_if_exist:NTF #1 { \skip_zero:N #1 } { \skip_new:N #1 } } + { \skip_if_exist:NTF #1 { \skip_zero:N #1 } { \skip_new:N #1 } } \cs_new_protected:Npn \skip_gzero_new:N #1 - { \cs_if_exist:NTF #1 { \skip_gzero:N #1 } { \skip_new:N #1 } } + { \skip_if_exist:NTF #1 { \skip_gzero:N #1 } { \skip_new:N #1 } } \cs_generate_variant:Nn \skip_zero_new:N { c } \cs_generate_variant:Nn \skip_gzero_new:N { c } +\cs_new_eq:NN \skip_if_exist:NTF \cs_if_exist:NTF +\cs_new_eq:NN \skip_if_exist:NT \cs_if_exist:NT +\cs_new_eq:NN \skip_if_exist:NF \cs_if_exist:NF +\cs_new_eq:NN \skip_if_exist_p:N \cs_if_exist_p:N +\cs_new_eq:NN \skip_if_exist:cTF \cs_if_exist:cTF +\cs_new_eq:NN \skip_if_exist:cT \cs_if_exist:cT +\cs_new_eq:NN \skip_if_exist:cF \cs_if_exist:cF +\cs_new_eq:NN \skip_if_exist_p:c \cs_if_exist_p:c \cs_new_protected:Npn \skip_set:Nn #1#2 { #1 ~ \etex_glueexpr:D #2 \scan_stop: } \cs_new_protected:Npn \skip_gset:Nn { \tex_global:D \skip_set:Nn } @@ -289,16 +324,19 @@ \prg_return_false: \fi: } -\prg_new_conditional:Npnn \skip_if_infinite_glue:n #1 { p , T , F , TF } +\cs_set_protected:Npn \cs_tmp:w #1 { - \bool_if:nTF + \prg_new_conditional:Npnn \skip_if_finite:n ##1 { p , T , F , TF } { - \int_compare_p:nNn { \etex_gluestretchorder:D #1 } > \c_zero || - \int_compare_p:nNn { \etex_glueshrinkorder:D #1 } > \c_zero + \exp_after:wN \skip_if_finite_aux:wwNw + \skip_use:N \etex_glueexpr:D ##1 ; \prg_return_false: + #1 ; \prg_return_true: \q_stop } - { \prg_return_true: } - { \prg_return_false: } - } + \cs_new:Npn \skip_if_finite_aux:wwNw ##1 #1 ##2 ; ##3 ##4 \q_stop {##3} + } +\exp_args:No \cs_tmp:w { \tl_to_str:n { fil } } +\prg_new_conditional:Npnn \skip_if_infinite_glue:n #1 { p , T , F , TF } + { \skip_if_finite:nTF {#1} \prg_return_false: \prg_return_true: } \cs_new:Npn \skip_eval:n #1 { \skip_use:N \etex_glueexpr:D #1 \scan_stop: } \cs_new_eq:NN \skip_use:N \tex_the:D @@ -328,17 +366,31 @@ \newmuskip #1 } \cs_generate_variant:Nn \muskip_new:N { c } +\cs_new_protected:Npn \muskip_const:Nn #1 + { + \muskip_new:N #1 + \muskip_gset:Nn #1 + } +\cs_generate_variant:Nn \muskip_const:Nn { c } \cs_new_protected:Npn \muskip_zero:N #1 { #1 \c_zero_muskip } \cs_new_protected:Npn \muskip_gzero:N { \tex_global:D \muskip_zero:N } \cs_generate_variant:Nn \muskip_zero:N { c } \cs_generate_variant:Nn \muskip_gzero:N { c } \cs_new_protected:Npn \muskip_zero_new:N #1 - { \cs_if_exist:NTF #1 { \muskip_zero:N #1 } { \muskip_new:N #1 } } + { \muskip_if_exist:NTF #1 { \muskip_zero:N #1 } { \muskip_new:N #1 } } \cs_new_protected:Npn \muskip_gzero_new:N #1 - { \cs_if_exist:NTF #1 { \muskip_gzero:N #1 } { \muskip_new:N #1 } } + { \muskip_if_exist:NTF #1 { \muskip_gzero:N #1 } { \muskip_new:N #1 } } \cs_generate_variant:Nn \muskip_zero_new:N { c } \cs_generate_variant:Nn \muskip_gzero_new:N { c } +\cs_new_eq:NN \muskip_if_exist:NTF \cs_if_exist:NTF +\cs_new_eq:NN \muskip_if_exist:NT \cs_if_exist:NT +\cs_new_eq:NN \muskip_if_exist:NF \cs_if_exist:NF +\cs_new_eq:NN \muskip_if_exist_p:N \cs_if_exist_p:N +\cs_new_eq:NN \muskip_if_exist:cTF \cs_if_exist:cTF +\cs_new_eq:NN \muskip_if_exist:cT \cs_if_exist:cT +\cs_new_eq:NN \muskip_if_exist:cF \cs_if_exist:cF +\cs_new_eq:NN \muskip_if_exist_p:c \cs_if_exist_p:c \cs_new_protected:Npn \muskip_set:Nn #1#2 { #1 ~ \etex_muexpr:D #2 \scan_stop: } \cs_new_protected:Npn \muskip_gset:Nn { \tex_global:D \muskip_set:Nn } @@ -370,16 +422,16 @@ { \tex_showthe:D \etex_muexpr:D #1 \scan_stop: } \cs_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4 { - \skip_if_infinite_glue:nTF {#1} - { - #3 = \c_zero_skip - #4 = \c_zero_skip - #2 - } - { - #3 = \etex_gluestretch:D #1 \scan_stop: - #4 = \etex_glueshrink:D #1 \scan_stop: - } + \skip_if_finite:nTF {#1} + { + #3 = \etex_gluestretch:D #1 \scan_stop: + #4 = \etex_glueshrink:D #1 \scan_stop: + } + { + #3 = \c_zero_skip + #4 = \c_zero_skip + #2 + } } %% %% |