summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3skip.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx147
1 files changed, 84 insertions, 63 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 911fe7571f0..24fd5bf3fe8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -36,7 +36,7 @@
%
%<*driver|package>
\RequirePackage{l3bootstrap}
-\GetIdInfo$Id: l3skip.dtx 4121 2012-08-17 01:36:30Z bruno $
+\GetIdInfo$Id: l3skip.dtx 4235 2012-09-26 09:48:18Z bruno $
{L3 Dimensions and skips}
%</driver|package>
%<*driver>
@@ -156,26 +156,6 @@
% \meta{dimension_2}.
% \end{function}
%
-% \begin{function}[updated = 2012-02-06]
-% {\dim_set_max:Nn, \dim_set_max:cn, \dim_gset_max:Nn, \dim_gset_max:cn}
-% \begin{syntax}
-% \cs{dim_set_max:Nn} \meta{dimension} \Arg{dimension expression}
-% \end{syntax}
-% Compares the current value of the \meta{dimension} with that of the
-% \meta{dimension expression}, and sets the \meta{dimension} to the
-% larger of these two value.
-% \end{function}
-%
-% \begin{function}[updated = 2012-02-06]
-% {\dim_set_min:Nn, \dim_set_min:cn, \dim_gset_min:Nn, \dim_gset_min:cn}
-% \begin{syntax}
-% \cs{dim_set_min:Nn} \meta{dimension} \Arg{dimension expression}
-% \end{syntax}
-% Compares the current value of the \meta{dimension} with that of the
-% \meta{dimension expression}, and sets the \meta{dimension} to the
-% smaller of these two value.
-% \end{function}
-%
% \begin{function}[updated = 2011-10-22]
% {\dim_sub:Nn, \dim_sub:cn, \dim_gsub:Nn, \dim_gsub:cn}
% \begin{syntax}
@@ -187,15 +167,26 @@
%
% \section{Utilities for dimension calculations}
%
-% \begin{function}[updated = 2011-10-22, EXP]{\dim_abs:n}
+% \begin{function}[updated = 2012-09-26, EXP]{\dim_abs:n}
% \begin{syntax}
% \cs{dim_abs:n} \Arg{dimexpr}
% \end{syntax}
% Converts the \meta{dimexpr} to its absolute value, leaving the result
-% in the input stream as an \meta{dimension denotation}.
+% in the input stream as a \meta{dimension denotation}.
+% \end{function}
+%
+% \begin{function}[added = 2012-09-09, updated = 2012-09-26, EXP]
+% {\dim_max:nn, \dim_min:nn}
+% \begin{syntax}
+% \cs{dim_max:nn} \Arg{dimexpr_1} \Arg{dimexpr_2}
+% \cs{dim_min:nn} \Arg{dimexpr_1} \Arg{dimexpr_2}
+% \end{syntax}
+% Evaluates the two \meta{dimension expressions} and leaves either the
+% maximum or minimum value in the input stream as appropriate, as a
+% \meta{dimension denotation}.
% \end{function}
%
-% \begin{function}[updated = 2011-10-22, EXP]{\dim_ratio:nn}
+% \begin{function}[updated = 2011-10-22, rEXP]{\dim_ratio:nn}
% \begin{syntax}
% \cs{dim_ratio:nn} \Arg{dimexpr_1} \Arg{dimexpr_2}
% \end{syntax}
@@ -1039,35 +1030,6 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\dim_set_max:Nn, \dim_set_max:cn}
-% \begin{macro}{\dim_set_min:Nn, \dim_set_min:cn}
-% \begin{macro}{\dim_gset_max:Nn, \dim_gset_max:cn}
-% \begin{macro}{\dim_gset_min:Nn, \dim_gset_min:cn}
-% \begin{macro}[aux]{\@@_set_max:NNNn}
-% Setting maximum and minimum values is simply a case of so build-in
-% comparison. This only applies to dimensions as skips are not ordered.
-% \begin{macrocode}
-\cs_new_protected_nopar:Npn \dim_set_max:Nn
- { \@@_set_max:NNNn < \dim_set:Nn }
-\cs_new_protected_nopar:Npn \dim_gset_max:Nn
- { \@@_set_max:NNNn < \dim_gset:Nn }
-\cs_new_protected_nopar:Npn \dim_set_min:Nn
- { \@@_set_max:NNNn > \dim_set:Nn }
-\cs_new_protected_nopar:Npn \dim_gset_min:Nn
- { \@@_set_max:NNNn > \dim_gset:Nn }
-\cs_new_protected:Npn \@@_set_max:NNNn #1#2#3#4
- { \dim_compare:nNnT {#3} #1 {#4} { #2 #3 {#4} } }
-\cs_generate_variant:Nn \dim_set_max:Nn { c }
-\cs_generate_variant:Nn \dim_gset_max:Nn { c }
-\cs_generate_variant:Nn \dim_set_min:Nn { c }
-\cs_generate_variant:Nn \dim_gset_min:Nn { c }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
% \begin{macro}{\dim_add:Nn, \dim_add:cn}
% \begin{macro}{\dim_gadd:Nn, \dim_gadd:cn}
% \begin{macro}{\dim_sub:Nn, \dim_sub:cn}
@@ -1092,23 +1054,54 @@
%
% \subsection{Utilities for dimension calculations}
%
-% \begin{macro}{\dim_abs:n}
-% Similar to the \cs{int_abs:n} function, but here an additional
-% \meta{dimexpr} is needed as \TeX{} won't simply tidy up an additional
-% |-| for us.
+% \begin{macro}[EXP]{\dim_abs:n}
+% \begin{macro}[aux, EXP]{\@@_abs:N}
+% \UnitTested
+% \begin{macro}[EXP]{\dim_max:nn}
+% \begin{macro}[EXP]{\dim_min:nn}
+% \begin{macro}[aux, EXP]{\@@_maxmin:wwN}
+% \UnitTested
+% \UnitTested
+% Functions for $\min$, $\max$, and absolute value with only one evaluation.
+% The absolute value is evaluated by removing a leading~|-| if present.
% \begin{macrocode}
\cs_new:Npn \dim_abs:n #1
{
- \dim_use:N
- \@@_eval:w
- \if_dim:w \@@_eval:w #1 < \c_zero_dim
- -
- \fi:
- \@@_eval:w #1 \@@_eval_end:
+ \exp_after:wN \@@_abs:N
+ \dim_use:N \@@_eval:w #1 \@@_eval_end:
+ }
+\cs_new:Npn \@@_abs:N #1
+ { \if_meaning:w - #1 \else: \exp_after:wN #1 \fi: }
+\cs_set:Npn \dim_max:nn #1#2
+ {
+ \dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN
+ \dim_use:N \@@_eval:w #1 \exp_after:wN ;
+ \dim_use:N \@@_eval:w #2 ;
+ >
\@@_eval_end:
}
+\cs_set:Npn \dim_min:nn #1#2
+ {
+ \dim_use:N \@@_eval:w \exp_after:wN \@@_maxmin:wwN
+ \dim_use:N \@@_eval:w #1 \exp_after:wN ;
+ \dim_use:N \@@_eval:w #2 ;
+ <
+ \@@_eval_end:
+ }
+\cs_new:Npn \@@_maxmin:wwN #1 ; #2 ; #3
+ {
+ \if_dim:w #1 #3 #2 ~
+ #1
+ \else:
+ #2
+ \fi:
+ }
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\dim_ratio:nn}
% \begin{macro}[aux]{\@@_ratio:n}
@@ -1884,6 +1877,34 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\dim_set_max:Nn, \dim_set_max:cn}
+% \begin{macro}{\dim_set_min:Nn, \dim_set_min:cn}
+% \begin{macro}{\dim_gset_max:Nn, \dim_gset_max:cn}
+% \begin{macro}{\dim_gset_min:Nn, \dim_gset_min:cn}
+% \begin{macro}[aux]{\@@_set_max:NNNn}
+% Deprecated on 2012-09-09 for removal after 2012-12-31.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \dim_set_max:Nn
+ { \@@_set_max:NNNn < \dim_set:Nn }
+\cs_new_protected_nopar:Npn \dim_gset_max:Nn
+ { \@@_set_max:NNNn < \dim_gset:Nn }
+\cs_new_protected_nopar:Npn \dim_set_min:Nn
+ { \@@_set_max:NNNn > \dim_set:Nn }
+\cs_new_protected_nopar:Npn \dim_gset_min:Nn
+ { \@@_set_max:NNNn > \dim_gset:Nn }
+\cs_new_protected:Npn \@@_set_max:NNNn #1#2#3#4
+ { \dim_compare:nNnT {#3} #1 {#4} { #2 #3 {#4} } }
+\cs_generate_variant:Nn \dim_set_max:Nn { c }
+\cs_generate_variant:Nn \dim_gset_max:Nn { c }
+\cs_generate_variant:Nn \dim_set_min:Nn { c }
+\cs_generate_variant:Nn \dim_gset_min:Nn { c }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</initex|package>
% \end{macrocode}