%%%
%%%
%%% Extensions : shortcuts.sty
%%% Version : 1.0
%%% Date : 10/05/16
%%% Auteur : Jeff LANCE
%%% Notes : Cette extension peut demander l'ajout de certains packages.
%%%         Il est conseillé de l'appeler dans un(e) classe/(package) appelant
%%%         elle(lui)-même ces packages.
%%%
%%%

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{shortcuts}[2016/05/16 Définitions de raccourcis vers des macros
                                       existantes, v1.0]

\makeatletter

%
%
% ENVIRONMENTS
%
%
% itemize
\newcommand{\bi}{\begin{itemize}}
\newcommand{\ei}{\end{itemize}}

% enumerate
\newcommand{\be}{\begin{enumerate}}
\newcommand{\ee}{\end{enumerate}}

% descriptions
\newcommand{\bd}{\begin{description}}
\newcommand{\ed}{\end{description}}

% questions
\newcommand{\bq}{\begin{questions}}
\newcommand{\eq}{\end{questions}}
%--%



%
%
% TEXT
%
%
% another shortcut to whiting text.
\NewDocumentCommand \ghost { } {%
    \white
}

% c'est-à-dire
\NewDocumentCommand \cad { } {
	{c'est-à-dire}
}
\NewDocumentCommand \Cad { } {
	{C'est-à-dire}
}

% smileys
\NewDocumentCommand \wink { } {
  {\DejaVuSans 😉}
}

%\NewDocumentCommand \smile { } {
%  {\DejaVuSans 😃}
%}

\NewDocumentCommand \lol { } {
  {\DejaVuSans 😂}
}

\NewDocumentCommand \sad { } {
  {\DejaVuSans 😞}
}



%
%
% MATHS
%
%
% i & j vectors
\NewDocumentCommand \veci { } {
	\ensuremath{ \vec{\imath} }
}
\NewDocumentCommand \vecj { } {
	\ensuremath{ \vec{\jmath} }
}

% frame (O;i;j)
\NewDocumentCommand \oij { } {
  \ensuremath{ \left(O\; ;\; \vec{\imath}\; ;\; \vec{\jmath}\right) }
}

% frame (O;I;I)
\NewDocumentCommand \OIJ { } {
  \ensuremath{ \left(O\; ;\; I\; ;\; J\right) }
}

% frame (O;x;y)
\NewDocumentCommand \oxy { } {
  \ensuremath{ \left(O\; ;\; x\; ;\; y\right) }
}

% vector arrow redefinition
\renewcommand{\Vec}[1]{
  \overrightarrow{#1\vphantom(}
}

% positional notation
\newcommand{\base}[2]{
  \ensuremath{ \overline{#1\vphantom(}^{#2} }
}

% sets: N, Z, D, Q, R\Q and R with possibility to minus some numbers
\NewDocumentCommand \R { s g } {
    \IfBooleanTF {#1} {
        \IfNoValueTF {#2} {
            \!\!\!\!\ensuremath{\mathbb{R} \setminus \{0\}}\!\!\!
        }{
            \!\!\!\!\ensuremath{\mathbb{R} \setminus \{0, #2\}}\!\!\!
        }
    }{
        \IfNoValueTF {#2} {
            \!\!\!\!\ensuremath{\mathbb{R}}\!\!\!
        }{
            \!\!\!\!\ensuremath{\mathbb{R} \setminus \{#2\}}\!\!\!
        }
    }
}
\NewDocumentCommand \RQ { } {
	\( \mathbb{R} \setminus \mathbb{Q} \)
}
\NewDocumentCommand \Q { s g } {
    \IfBooleanTF {#1} {
        \IfNoValueTF {#2} {
            \ensuremath{\!\!\! \mathbb{Q} \setminus \{0\} \!\!}
        }{
            \ensuremath{\!\!\! \mathbb{Q} \setminus \{0, #2\} \!\!}
        }
    }{
        \IfNoValueTF {#2} {
            \ensuremath{\!\!\! \mathbb{Q} \!\!}
        }{
            \ensuremath{\!\!\! \mathbb{Q} \setminus \{#2\} \!\!}
        }
    }
}
\NewDocumentCommand \D { s g } {
    \IfBooleanTF {#1} {
        \IfNoValueTF {#2} {
            \ensuremath{\!\!\! \mathbb{D} \setminus \{0\} \!\!}
        }{
            \ensuremath{\!\!\! \mathbb{D} \setminus \{0, #2\} \!\!}
        }
    }{
        \IfNoValueTF {#2} {
            \ensuremath{\!\!\! \mathbb{D} \!\!}
        }{
            \ensuremath{\!\!\! \mathbb{D} \setminus \{#2\} \!\!}
        }
    }
}
\NewDocumentCommand \Z { s g } {
    \IfBooleanTF {#1} {
        \IfNoValueTF {#2} {
            \ensuremath{\!\!\! \mathbb{Z} \setminus \{0\} \!\!}
        }{
            \ensuremath{\!\!\! \mathbb{Z} \setminus \{0, #2\} \!\!}
        }
    }{
        \IfNoValueTF {#2} {
            \ensuremath{\!\!\! \mathbb{Z} \!\!}
        }{
            \ensuremath{\!\!\! \mathbb{Z} \setminus \{#2\} \!\!}
        }
    }
}
\NewDocumentCommand \N { s g } {
    \IfBooleanTF {#1} {
        \IfNoValueTF {#2} {
            \ensuremath{\!\!\! \mathbb{N} \setminus \{0\} \!\!}
        }{
            \ensuremath{\!\!\! \mathbb{N} \setminus \{0, #2\} \!\!}
        }
    }{
        \IfNoValueTF {#2} {
            \ensuremath{\!\!\! \mathbb{N} \!\!}
        }{
            \ensuremath{\!\!\! \mathbb{N} \setminus \{#2\} \!\!}
        }
    }
}




\makeatother
