summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/interval/interval.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.sty88
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}}
+