1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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}}
|