summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/expl3/l3intexpr.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/expl3/l3intexpr.sty')
-rw-r--r--Master/texmf-dist/tex/latex/expl3/l3intexpr.sty203
1 files changed, 203 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/expl3/l3intexpr.sty b/Master/texmf-dist/tex/latex/expl3/l3intexpr.sty
new file mode 100644
index 00000000000..91d7d2daeb0
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/expl3/l3intexpr.sty
@@ -0,0 +1,203 @@
+%%
+%% This is file `l3intexpr.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3intexpr.dtx (with options: `package,trace')
+%%
+%%
+%% EXPERIMENTAL CODE
+%%
+%% Do not distribute this file without also distributing the
+%% source files specified above.
+%%
+%% Do not distribute a modified version of this file.
+%%
+%%
+%% File: l3intexpr.dtx Copyright (C) 2009 LaTeX3 project
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version. The latest version
+%% of this license is in the file
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the ``expl3 bundle'' (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% The released version of this bundle is available from CTAN.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% The development version of the bundle can be found at
+%%
+%% http://www.latex-project.org/svnroot/experimental/trunk/
+%%
+%% for those people who are interested.
+%%
+%%%%%%%%%%%
+%% NOTE: %%
+%%%%%%%%%%%
+%%
+%% Snapshots taken from the repository represent work in progress and may
+%% not work or may contain conflicting material! We therefore ask
+%% people _not_ to put them into distributions, archives, etc. without
+%% prior consultation with the LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+\RequirePackage{l3names}
+\GetIdInfo$Id: l3intexpr.dtx 1086 2009-03-20 19:29:35Z morten $
+ {L3 Integer Expressions}
+\ProvidesExplPackage
+ {\filename}{\filedate}{\fileversion}{\filedescription}
+\package_check_loaded_expl:
+\cs_set_eq:NN \intexpr_value:w \tex_number:D
+\cs_set_eq:NN \intexpr_eval:w \etex_numexpr:D
+\cs_set_protected:Npn \intexpr_eval_end: {\tex_relax:D}
+\cs_set_eq:NN \if_intexpr_compare:w \tex_ifnum:D
+\cs_set_eq:NN \if_intexpr_odd:w \tex_ifodd:D
+\cs_set_eq:NN \if_intexpr_case:w \tex_ifcase:D
+\cs_set:Npn \intexpr_eval:n #1{
+ \intexpr_value:w \intexpr_eval:w #1\intexpr_eval_end:
+}
+\prg_set_conditional:Npnn \intexpr_compare:n #1{p,TF,T,F}{
+ \exp_after:wN \intexpr_compare_auxi:w \intexpr_value:w
+ \intexpr_eval:w #1\q_stop
+}
+\cs_set:Npn \intexpr_compare_auxi:w #1#2\q_stop{
+ \exp_after:wN \intexpr_compare_auxii:w \tex_romannumeral:D
+ \if:w #1- \else: -\fi: #1#2 \q_stop #1#2 \q_nil
+}
+\cs_set:Npn \intexpr_compare_auxii:w #1#2#3\q_stop{
+ \use:c{
+ intexpr_compare_
+ #1 \if_meaning:w =#2 = \fi:
+ :w}
+}
+\cs_set:cpn {intexpr_compare_=:w} #1=#2\q_nil{
+ \if_intexpr_compare:w #1=\intexpr_eval:w #2 \intexpr_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_set:cpn {intexpr_compare_==:w} #1==#2\q_nil{
+ \if_intexpr_compare:w #1=\intexpr_eval:w #2 \intexpr_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_set:cpn {intexpr_compare_!=:w} #1!=#2\q_nil{
+ \if_intexpr_compare:w #1=\intexpr_eval:w #2 \intexpr_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
+}
+\cs_set:cpn {intexpr_compare_<:w} #1<#2\q_nil{
+ \if_intexpr_compare:w #1<\intexpr_eval:w #2 \intexpr_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_set:cpn {intexpr_compare_>:w} #1>#2\q_nil{
+ \if_intexpr_compare:w #1>\intexpr_eval:w #2 \intexpr_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_set:cpn {intexpr_compare_<=:w} #1<=#2\q_nil{
+ \if_intexpr_compare:w #1<\intexpr_eval:w #2 +\c_one \intexpr_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_set:cpn {intexpr_compare_>=:w} #1>=#2\q_nil{
+ \if_intexpr_compare:w #1>\intexpr_eval:w #2 - \c_one \intexpr_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\prg_set_conditional:Npnn \intexpr_compare:nNn #1#2#3{p,TF,T,F}{
+ \if_intexpr_compare:w \intexpr_eval:w #1 #2 \intexpr_eval:w #3 \intexpr_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\cs_set:Npn \intexpr_abs:n #1{
+ \intexpr_value:w
+ \if_intexpr_compare:w \intexpr_eval:w #1<\c_zero
+ -
+ \fi:
+ \intexpr_eval:w #1\intexpr_eval_end:
+}
+\cs_set:Npn \intexpr_max:nn #1#2{
+ \intexpr_value:w \intexpr_eval:w
+ \if_intexpr_compare:w
+ \intexpr_eval:w #1>\intexpr_eval:w #2\intexpr_eval_end:
+ #1
+ \else:
+ #2
+ \fi:
+ \intexpr_eval_end:
+}
+\cs_set:Npn \intexpr_min:nn #1#2{
+ \intexpr_value:w \intexpr_eval:w
+ \if_intexpr_compare:w
+ \intexpr_eval:w #1<\intexpr_eval:w #2\intexpr_eval_end:
+ #1
+ \else:
+ #2
+ \fi:
+ \intexpr_eval_end:
+}
+\cs_set:Npn \intexpr_div_truncate:nn #1#2 {
+ \intexpr_value:w \intexpr_eval:w
+ \if_intexpr_compare:w \intexpr_eval:w #1 = \c_zero
+ 0
+ \else:
+ (#1
+ \if_intexpr_compare:w \intexpr_eval:w #1 < \c_zero
+ \if_intexpr_compare:w \intexpr_eval:w #2 < \c_zero
+ -( #2 +
+ \else:
+ +( #2 -
+ \fi:
+ \else:
+ \if_intexpr_compare:w \intexpr_eval:w #2 < \c_zero
+ +( #2 +
+ \else:
+ -( #2 -
+ \fi:
+ \fi:
+ 1)/2)
+ \fi:
+ /(#2)
+ \intexpr_eval_end:
+}
+\cs_set:Npn \intexpr_div_round:nn #1#2 {\intexpr_eval:n{(#1)/(#2)}}
+\cs_set:Npn \intexpr_mod:nn #1#2 {
+ \intexpr_value:w
+ \intexpr_eval:w
+ #1 - \intexpr_div_truncate:nn {#1}{#2} * (#2)
+ \intexpr_eval_end:
+}
+\prg_set_conditional:Npnn \intexpr_if_odd:n #1 {p,TF,T,F} {
+ \if_intexpr_odd:w \intexpr_eval:w #1\intexpr_eval_end:
+ \prg_return_true: \else: \prg_return_false: \fi:
+}
+\prg_set_conditional:Npnn \intexpr_if_even:n #1 {p,TF,T,F} {
+ \if_intexpr_odd:w \intexpr_eval:w #1\intexpr_eval_end:
+ \prg_return_false: \else: \prg_return_true: \fi:
+}
+\cs_set:Npn \intexpr_while_do:nn #1#2{
+ \intexpr_compare:nT {#1}{#2 \intexpr_while_do:nn {#1}{#2}}
+}
+\cs_set:Npn \intexpr_until_do:nn #1#2{
+ \intexpr_compare:nF {#1}{#2 \intexpr_until_do:nn {#1}{#2}}
+}
+\cs_set:Npn \intexpr_do_while:nn #1#2{
+ #2 \intexpr_compare:nT {#1}{\intexpr_do_while:nNnn {#1}{#2}}
+}
+\cs_set:Npn \intexpr_do_until:nn #1#2{
+ #2 \intexpr_compare:nF {#1}{\intexpr_do_until:nn {#1}{#2}}
+}
+\cs_set:Npn \intexpr_while_do:nNnn #1#2#3#4{
+ \intexpr_compare:nNnT {#1}#2{#3}{#4 \intexpr_while_do:nNnn {#1}#2{#3}{#4}}
+}
+\cs_set:Npn \intexpr_until_do:nNnn #1#2#3#4{
+ \intexpr_compare:nNnF {#1}#2{#3}{#4 \intexpr_until_do:nNnn {#1}#2{#3}{#4}}
+}
+\cs_set:Npn \intexpr_do_while:nNnn #1#2#3#4{
+ #4 \intexpr_compare:nNnT {#1}#2{#3}{\intexpr_do_while:nNnn {#1}#2{#3}{#4}}
+}
+\cs_set:Npn \intexpr_do_until:nNnn #1#2#3#4{
+ #4 \intexpr_compare:nNnF {#1}#2{#3}{\intexpr_do_until:nNnn {#1}#2{#3}{#4}}
+}
+%%
+%%
+%% End of file `l3intexpr.sty'.