diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/interval/interval.sty |
Initial commit
Diffstat (limited to 'macros/latex/contrib/interval/interval.sty')
-rw-r--r-- | macros/latex/contrib/interval/interval.sty | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/macros/latex/contrib/interval/interval.sty b/macros/latex/contrib/interval/interval.sty new file mode 100644 index 0000000000..1aa4ae5234 --- /dev/null +++ b/macros/latex/contrib/interval/interval.sty @@ -0,0 +1,88 @@ +\ProvidesPackage{interval}[2019/03/06 v0.4] + +\newcommand\INTVversion{v0.4} + +%% +%% This package can be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is Lars Madsen (daleif@math.au.dk). +%% + + +\RequirePackage{pgfkeys} + +\newcommand\INTV@scaler[1]{ + \def\INTV@auto{auto} + \def\INTV@arg{#1} + \ifx\INTV@auto\INTV@arg + \def\INTV@openfence{\mathopen{}\mathclose\bgroup\left\INTV@leftfence} + \def\INTV@closefence{\aftergroup\egroup\right\INTV@rightfence} + \else + \def\INTV@openfence{\mathopen{#1\INTV@leftfence}} + \def\INTV@closefence{\mathclose{#1\INTV@rightfence}} + \fi +} + + +% setup +\pgfkeys{% + /interval/.is family,% + /interval,% + left open fence/.initial={]},% + left closed fence/.initial={[},% + right open fence/.initial={[},% + right closed fence/.initial={]},% + left fence/.link=/interval/left closed fence,% + right fence/.link=/interval/right closed fence,% + separator symbol/.initial={,},% + open left/.style={ left fence/.link=/interval/left open fence },% + open right/.style={ right fence/.link=/interval/right open fence },% + open/.style={open left,open right},% + scaled/.code={\INTV@scaler{#1}},% + scaled/.default=auto,% + soft open fences/.style={% + left open fence={(},% + right open fence={)},% + },% + colorize/.initial=,% +} + +% user configuation +\newcommand\intervalconfig[1]{\pgfkeys{/interval,#1}} + +\newcommand\intervalsetup{ + \PackageError{interval}{The \string\intervalsetup\space macro has + been removed. Please use \string\intervalconfig\space instead}{} +} + + +\newcommand\interval[3][]{% + \begingroup% + \def\INTV@openfence{\mathopen{\INTV@leftfence}}% + \def\INTV@closefence{\mathclose{\INTV@rightfence}}% +% \let\INTV@extra\relax% + \pgfkeys{interval,#1}% + \pgfkeysgetvalue{/interval/left fence}{\INTV@leftfence}% + \pgfkeysgetvalue{/interval/right fence}{\INTV@rightfence}% + \pgfkeysgetvalue{/interval/colorize}{\INTV@colorize}% + \INTV@colorize% + \INTV@openfence% + #2% + \pgfkeysvalueof{/interval/separator symbol} + #3% + \INTV@closefence% + \endgroup% +} + +\newcommand\ointerval[3][]{\interval[open,#1]{#2}{#3}} +\newcommand\linterval[3][]{\interval[open left,#1]{#2}{#3}} +\newcommand\rinterval[3][]{\interval[open right,#1]{#2}{#3}} + |