summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/l3skip.sty')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3skip.sty140
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
+ }
}
%%
%%