From 607ddea4532c7768b2e2b44bd602fae2c98b9456 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 27 May 2013 01:22:20 +0000 Subject: skmath 5/27 git-svn-id: svn://tug.org/texlive/trunk@30698 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/skmath/skmath.sty | 237 ++++++++++++++++++++------ 1 file changed, 186 insertions(+), 51 deletions(-) (limited to 'Master/texmf-dist/tex') 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 +%% Copyright (C) 2012-2013 by Simon Sigurdhsson %% %% 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 -- cgit v1.2.3