diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3skip.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3skip.dtx | 147 |
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} |