summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/skmath
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2013-05-27 01:22:20 +0000
committerNorbert Preining <preining@logic.at>2013-05-27 01:22:20 +0000
commit607ddea4532c7768b2e2b44bd602fae2c98b9456 (patch)
tree6660587ab0926889411ecca7655bdcf0acda42c8 /Master/texmf-dist/tex/latex/skmath
parentbddefbf234bbe8889456b2e1b09cce68cf590891 (diff)
skmath 5/27
git-svn-id: svn://tug.org/texlive/trunk@30698 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/skmath')
-rw-r--r--Master/texmf-dist/tex/latex/skmath/skmath.sty237
1 files changed, 186 insertions, 51 deletions
diff --git a/Master/texmf-dist/tex/latex/skmath/skmath.sty b/Master/texmf-dist/tex/latex/skmath/skmath.sty
index c378474654a..382ee9c2365 100644
--- a/Master/texmf-dist/tex/latex/skmath/skmath.sty
+++ b/Master/texmf-dist/tex/latex/skmath/skmath.sty
@@ -1,7 +1,7 @@
%% This is file `skmath.sty', generated from `skmath.tex' (key `package').
%% skmath improved math commands
%%
-%% Copyright (C) 2012 by Simon Sigurdhsson <sigurdhsson@gmail.com>
+%% Copyright (C) 2012-2013 by Simon Sigurdhsson <sigurdhsson@gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -18,106 +18,241 @@
%% This work consists of the file skmath.tex
%% and the derived file skmath.sty.
-\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{skmath}%
- [2013/02/18 v0.1e skmath improved math commands]
-\RequirePackage{xparse}
-\PassOptionsToPackage{intlimits}{amsmath}
-\RequirePackage{kvoptions,amssymb,mathtools,xfrac,isomath}
-\SetupKeyvalOptions{family=skmath,prefix=skmath@}
-\DeclareBoolOption[false]{commonsets}
-\ProcessKeyvalOptions*
-\ifskmath@commonsets
+\RequirePackage{expl3,l3keys2e,xparse}
+\ProvidesExplPackage{skmath}
+ {2013/05/24}{0.3}{improved math commands}
+\PassOptionsToPackage{intlimits,sumlimits,namelimits}{amsmath}
+\RequirePackage{amssymb,mathtools,xfrac,isomath}
+\cs_new:Nn\__skmath_define_common_sets:{
\NewDocumentCommand\N{}{\ensuremath{\mathbb{N}}}
\NewDocumentCommand\Z{}{\ensuremath{\mathbb{Z}}}
\NewDocumentCommand\Q{}{\ensuremath{\mathbb{Q}}}
\NewDocumentCommand\R{}{\ensuremath{\mathbb{R}}}
\NewDocumentCommand\C{}{\ensuremath{\mathbb{C}}}
-\fi
+}
\DeclarePairedDelimiter\abs{\lvert}{\rvert}
\DeclarePairedDelimiter\norm{\lVert}{\rVert}
\AtBeginDocument{
\DeclareDocumentCommand\E{m}{%
- \ensuremath{\mathop{\mathrm{E}}\left[#1\right]}%
+ \ensuremath{\operatorname{E}\left[#1\right]}%
}
}
\DeclareDocumentCommand\P{m}{%
- \ensuremath{\mathop{\mathrm{P}}%
- \left(%
- \let\skmath@given\given%
+ \ensuremath{\operatorname{P}%
+ \mkern-1.5mu\left(%
+ \cs_set_eq:NN\__skmath_saved_given:\given%
\DeclareDocumentCommand\given{}{\mid}%
#1%
- \let\given\skmath@given%
+ \cs_set_eq:NN\given\__skmath_saved_given:%
\right)%
}%
}
\DeclareDocumentCommand\var{m}{%
- \ensuremath{\mathop{\mathrm{Var}}\left(#1\right)}%
+ \ensuremath{\operatorname{Var}\left(#1\right)}%
}
\DeclareDocumentCommand\cov{mm}{%
- \ensuremath{\mathop{\mathrm{Cov}}\left(#1,#2\right)}%
+ \ensuremath{\operatorname{Cov}\left(#1,#2\right)}%
}
-\let\skmath@sin\sin
-\let\skmath@cos\cos
-\let\skmath@tan\tan
-\let\skmath@cot\cot
-\let\skmath@arcsin\arcsin
-\let\skmath@arccos\arccos
-\let\skmath@arccos\arctan
-\let\skmath@ln\log
-\let\skmath@log\log
-\let\skmath@exp\exp
+\cs_new_eq:NN\__skmath_sin:\sin
+\cs_new_eq:NN\__skmath_cos:\cos
+\cs_new_eq:NN\__skmath_tan:\tan
+\cs_new_eq:NN\__skmath_cot:\cot
+\cs_new_eq:NN\__skmath_arcsin:\arcsin
+\cs_new_eq:NN\__skmath_arccos:\arccos
+\cs_new_eq:NN\__skmath_arctan:\arctan
+\cs_new_eq:NN\__skmath_ln:\log
+\cs_new_eq:NN\__skmath_log:\log
+\cs_new_eq:NN\__skmath_exp:\exp
+\cs_new_eq:NN\__skmath_min:\min
+\cs_new_eq:NN\__skmath_max:\max
+\cs_new_eq:NN\__skmath_sup:\sup
+\cs_new_eq:NN\__skmath_inf:\inf
\RenewDocumentCommand\sin{om}{%
\IfNoValueTF{#1}
- {\ensuremath{\skmath@sin\left(#2\right)}}
- {\ensuremath{\skmath@sin^{#1}\left(#2\right)}}%
+ {\ensuremath{\__skmath_sin:\left(#2\right)}}
+ {\ensuremath{\__skmath_sin:\c_math_superscript_token{#1}\left(#2\right)}}%
}
\RenewDocumentCommand\cos{om}{%
\IfNoValueTF{#1}
- {\ensuremath{\skmath@cos\left(#2\right)}}
- {\ensuremath{\skmath@cos^{#1}\left(#2\right)}}%
+ {\ensuremath{\__skmath_cos:\left(#2\right)}}
+ {\ensuremath{\__skmath_cos:\c_math_superscript_token{#1}\left(#2\right)}}%
}
\RenewDocumentCommand\tan{om}{%
\IfNoValueTF{#1}
- {\ensuremath{\skmath@tan\left(#2\right)}}
- {\ensuremath{\skmath@tan^{#1}\left(#2\right)}}%
+ {\ensuremath{\__skmath_tan:\left(#2\right)}}
+ {\ensuremath{\__skmath_tan:\c_math_superscript_token{#1}\left(#2\right)}}%
}
\RenewDocumentCommand\cot{om}{%
\IfNoValueTF{#1}
- {\ensuremath{\skmath@cot\left(#2\right)}}
- {\ensuremath{\skmath@cot^{#1}\left(#2\right)}}%
+ {\ensuremath{\__skmath_cot:\left(#2\right)}}
+ {\ensuremath{\__skmath_cot:\c_math_superscript_token{#1}\left(#2\right)}}%
}
\RenewDocumentCommand\arcsin{m}{%
- \ensuremath{\skmath@arcsin\left(#1\right)}%
+ \ensuremath{\__skmath_arcsin:\left(#1\right)}%
}
\RenewDocumentCommand\arccos{m}{%
- \ensuremath{\skmath@arccos\left(#1\right)}%
+ \ensuremath{\__skmath_arccos:\left(#1\right)}%
}
\RenewDocumentCommand\arctan{m}{%
- \ensuremath{\skmath@arctan\left(#1\right)}%
+ \ensuremath{\__skmath_arctan:\left(#1\right)}%
}
\RenewDocumentCommand\ln{m}{%
- \ensuremath{\skmath@ln\left(#1\right)}%
+ \ensuremath{\__skmath_ln:\left(#1\right)}%
}
\RenewDocumentCommand\log{om}{%
\IfNoValueTF{#1}
- {\ensuremath{\skmath@log\left(#2\right)}}
- {\ensuremath{\skmath@log_{#1}\left(#2\right)}}%
+ {\ensuremath{\__skmath_log:\left(#2\right)}}
+ {\ensuremath{\__skmath_log:\c_math_subscript_token{#1}\left(#2\right)}}%
}
\RenewDocumentCommand\exp{m}{\ensuremath{\mathchoice%
- {e^{#1}}%
- {\skmath@exp\left(#1\right)}%
- {\skmath@exp\left(#1\right)}%
- {\skmath@exp\left(#1\right)}%
+ {e\c_math_superscript_token{#1}}%
+ {\__skmath_exp:\left(#1\right)}%
+ {\__skmath_exp:\left(#1\right)}%
+ {\__skmath_exp:\left(#1\right)}%
}}
+\cs_new_nopar:Npn\__skmath_minmax_backend:nnnn#1#2#3#4{%
+ \use:c{__skmath_#1:}
+ \IfNoValueF{#3}{
+ \c_math_subscript_token{
+ \mathchoice{\mathclap{#3}}{#3}{#3}{#3}
+ }
+ }
+ \IfBooleanTF{#2}{#4}{\left\{#4\right\}}
+}
+\RenewDocumentCommand\min{som}{%
+ \ensuremath{\__skmath_minmax_backend:nnnn{min}{#1}{#2}{#3}}
+}
+\NewDocumentCommand\argmin{som}{%
+ \ensuremath{\arg\__skmath_minmax_backend:nnnn{min}{#1}{#2}{#3}}
+}
+\RenewDocumentCommand\max{som}{%
+ \ensuremath{\__skmath_max_minbackend:nnnn{max}{#1}{#2}{#3}}
+}
+\NewDocumentCommand\argmax{som}{%
+ \ensuremath{\arg\__skmath_minmax_backend:nnnn{max}{#1}{#2}{#3}}
+}
+\RenewDocumentCommand\sup{som}{%
+ \ensuremath{\__skmath_minmax_backend:nnnn{sup}{#1}{#2}{#3}}
+}
+\RenewDocumentCommand\inf{som}{%
+ \ensuremath{\__skmath_minmax_backend:nnnn{inf}{#1}{#2}{#3}}
+}
\RenewDocumentCommand\frac{mm}{\genfrac{}{}{}{}%
{\displaystyle #1}{\displaystyle #2}}
-\RenewDocumentCommand\bar{m}{%
- \ensuremath{\mkern 1.5mu\overline{\mkern-1.5mu{#1}\mkern-1.5mu}\mkern 1.5mu}}
+\prg_new_conditional:Npnn\__skmath_if_numerical:n#1{p,T,F,TF}{
+ \str_case_x:nnn{#1}{
+ {0}{\prg_return_true:}
+ {1}{\prg_return_true:}
+ {2}{\prg_return_true:}
+ {3}{\prg_return_true:}
+ {4}{\prg_return_true:}
+ {5}{\prg_return_true:}
+ {6}{\prg_return_true:}
+ {7}{\prg_return_true:}
+ {8}{\prg_return_true:}
+ {9}{\prg_return_true:}
+ }{\prg_return_false:}
+}
+\cs_new_nopar:Npn\__skmath_pd_vars_sum:n#1{
+ \tl_clear:N\l_tmpa_tl
+ \int_zero:N\l_tmpa_int
+ \bool_set_true:N\l_tmpa_bool
+ \clist_set:Nn\l_tmpa_clist{#1}
+ \clist_map_inline:Nn\l_tmpa_clist{
+ \seq_set_split:Nnn\l_tmpa_seq{^}{##1}
+ \int_compare:nT{\seq_count:N\l_tmpa_seq<\c_two}{
+ \seq_put_right:Nn\l_tmpa_seq{1}
+ }
+ \seq_get_right:NN\l_tmpa_seq\l_tmpb_tl
+ \__skmath_if_numerical:nTF{\tl_use:N\l_tmpb_tl}{
+ \int_add:Nn\l_tmpa_int{\tl_use:N\l_tmpb_tl}
+ }{
+ \bool_set_false:N\l_tmpa_bool
+ \tl_if_empty:NF\l_tmpa_tl{\tl_put_right:Nn\l_tmpa_tl{+}}
+ \tl_put_right:Nx\l_tmpa_tl{\tl_use:N\l_tmpb_tl}
+ }
+ }
+ \int_compare:nT{\l_tmpa_int>\c_zero}{\int_use:N\l_tmpa_int}
+ \bool_if:NF\l_tmpa_bool{
+ \int_compare:nT{\l_tmpa_int>\c_zero}{+}
+ \tl_use:N\l_tmpa_tl
+ }
+}
+\prg_new_conditional:Npnn\__skmath_pd_if_vars_sum_above_one:n#1{p,T,F,TF}{
+ \clist_set:Nn\l_tmpa_clist{#1}
+ \int_compare:nTF{\clist_count:N\l_tmpa_clist>\c_one}{
+ \prg_return_true:
+ }{
+ \clist_pop:NN\l_tmpa_clist\l_tmpa_tl
+ \seq_set_split:NnV\l_tmpa_seq{^}{\l_tmpa_tl}
+ \int_compare:nTF{\seq_count:N\l_tmpa_seq<\c_two}{
+ \prg_return_false:
+ }{
+ \prg_return_true:
+ }
+ }
+}
+\cs_new_nopar:Npn\__skmath_pd_superscript_vars:n#1{
+ \clist_set:Nn\l_tmpa_clist{#1}
+ \clist_map_inline:Nn\l_tmpa_clist{
+ \partial
+ \seq_set_split:Nnn\l_tmpa_seq{^}{##1}
+ \seq_pop:NN\l_tmpa_seq\l_tmpb_tl
+ \tl_use:N\l_tmpb_tl
+ \int_compare:nT{\seq_count:N\l_tmpa_seq>0}{
+ \seq_pop:NN\l_tmpa_seq\l_tmpb_tl
+ \c_math_superscript_token
+ \tl_use:N\l_tmpb_tl
+ }
+ }
+}
+\cs_new_nopar:Npn\__skmath_pd_subscript_vars:n#1{
+ \clist_set:Nn\l_tmpa_clist{#1}
+ \clist_map_inline:Nn\l_tmpa_clist{
+ \seq_set_split:Nnn\l_tmpa_seq{^}{##1}
+ \seq_pop:NN\l_tmpa_seq\l_tmpa_tl
+ \int_set:Nn\l_tmpa_int{\c_one}
+ \int_compare:nT{\seq_count:N\l_tmpa_seq>\c_zero}{
+ \seq_pop:NN\l_tmpa_seq\l_tmpb_tl
+ \int_set:Nn\l_tmpa_int{\tl_use:N\l_tmpb_tl}
+ }
+ \prg_replicate:nn{\l_tmpa_int}{\tl_use:N\l_tmpa_tl}
+ }
+}
+\cs_new_nopar:Npn\__skmath_pd_fraction:nn#1#2{
+ \frac{
+ \partial
+ \__skmath_pd_if_vars_sum_above_one:nT{#2}{
+ \c_math_superscript_token{\__skmath_pd_vars_sum:n{#2}}
+ }
+ {#1}
+ }{
+ \__skmath_pd_superscript_vars:n{#2}
+ }
+}
+\cs_new_nopar:Npn\__skmath_pd_subscript:nn#1#2{
+ {#1}\c_math_subscript_token{
+ \__skmath_pd_subscript_vars:n{#2}
+ }
+}
\AtBeginDocument{%
+\DeclareDocumentCommand\bar{m}{%
+ \ensuremath{\mkern 1.5mu\overline{\mkern-1.5mu{#1}\mkern-1.5mu}\mkern 1.5mu}}
+\DeclareDocumentCommand\pd{smm}{
+ \ensuremath{
+ \IfBooleanTF{#1}
+ {\__skmath_pd_subscript:nn{#2}{#3}}
+ {\__skmath_pd_fraction:nn{#2}{#3}}
+ }
+}
\DeclareDocumentCommand\d{m}{\ensuremath{\,\mathrm{d}#1%
- \@ifnextchar\d{\!}{}}}
+ \peek_meaning_ignore_spaces:NT\d{\!}}}
+}
+\cs_set_eq:NN\vec\vectorsym
+\keys_define:nn{skmath}{
+ commonsets .code:n =
+ {\__skmath_define_common_sets:}
}
-\let\vec\vectorsym
+\ProcessKeysOptions{skmath}
\endinput