%%%
%%%
%%% Classe : cours.cls
%%% Version : 1.0
%%% Date : 29/07/10
%%% Auteur : Jeff LANCE
%%%
%%%

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{cours}[2010/07/29 Document de cours, V1.0]



%-- classe de base
\LoadClass[a4paper, 12pt]{scrartcl}
%--%



%-- extensions
% PERSONNELLES
% commun: contient des définitions et extensions de base pour tout.
\RequirePackage{commun}
\RequirePackage{shortcuts}

% sortie
\RequirePackage[pdftex]{graphicx}
\RequirePackage{comment}

% mise en page
\RequirePackage{geometry}
\RequirePackage{scrlayer-scrpage}
\RequirePackage{mdframed}
\RequirePackage{titlesec}
\RequirePackage[amsmath, framed]{ntheorem}
%--%



%-- paramétrages
% metapost
\ifpdf
  \DeclareGraphicsRule{*}{mps}{*}{}
\fi

% tkz
\usetkzobj{all} % on charge tous les objets

% format de la page
\geometry{a4paper, hmargin=.7cm, vmargin=.7cm}

% titre
\pagestyle{scrheadings}
\setkomafont{title}{\Comic}

% (sub)sections
\titleformat{\section}[block]{\sffamily\bfseries\Large}{\thesection.}{.5em}{}[]
\titleformat{\subsection}[block]{\sffamily\bfseries\large\hspace{2em}}{\thesubsection)}{.5em}{}[]
\renewcommand \thesection{\Roman{section}}
\renewcommand \thesubsection{\arabic{subsection}}

% paths
\graphicspath{{images/}}

% mdframed
\mdfsetup{
    frametitlealignment=\raggedright,%
    innerbottommargin=2em,%
}

\mdfdefinestyle{framed}{%
    linecolor=black,linewidth=1pt,%
    leftmargin=0,rightmargin=0,%
    innerleftmargin=5pt,innerrightmargin=5pt,%
    frametitlerule=true,%
    frametitlebackgroundcolor=white!0,innertopmargin=\topskip,%
    xcolor,%
}

% theorem
\theoremstyle{nonumberbreak}
\theorembodyfont{\normalfont}

\newtheorem{definition}{}
\newtheorem{theoreme}{}
\newtheorem{propriete}{}
\newtheorem{preuve}{}
\newtheorem{vocabulaire}{}
\newtheorem{remarque}{}
\newtheorem{exemple}{}
\newtheorem{exercice}{}
%--%



%% MACROS : DEBUT
\makeatletter

%-- Macros personnelles
% debut
\NewDocumentCommand \debut { G{Titre} G{Sous-titre} } {%
  \title{#1}
  \subtitle{#2}
  \date{}
  \maketitle
}

% Vtextvisiblespace[largeur]
\newcommand\Vtextvisiblespace[1][.3em]{%
	\mbox{\kern.06em\vrule height.3ex}%
	\vbox{\hrule width#1}%
	\hbox{\vrule height.3ex}%
}

% \partie | \sspartie
% definie un titre pour une (sous)section
\newcounter{partiecounter}
\newcounter{sspartiecounter}

\NewDocumentCommand \partie { G{Partie} } {%
    \def\cType{\Roman}
    \stepcounter{partiecounter}
    \setcounter{sspartiecounter}{0}
    \section{#1}
}
%
\NewDocumentCommand \sspartie { G{Sous-Partie} } {%
    \def\cType{\arabic}
    \stepcounter{sspartiecounter}
    \subsection{#1}
}

% Fix error from KOMA-Script scrartcl class.
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}

% environnements
% definition de divers environnements personnels : definition, theoreme, exemple,
% exercice (avec numerotation), remarque, methode.
\NewDocumentEnvironment{déf}{ s g }{%begin
	\IfBooleanTF #1
	{
		\IfNoValueTF {#2} {
            \begin{mdframed}[style=framed]
    			\begin{definition}
		}{
            \begin{mdframed}[style=framed,frametitle={#2}]
                \begin{definition}
		}
	}{
		\IfNoValueTF {#2} {
            \begin{mdframed}[style=framed,frametitle={Définition},theoremseparator={-}]
                \begin{definition}
		}{
            \begin{mdframed}[style=framed,frametitle={Définition - #2},theoremseparator={-}]
                \begin{definition}
		}
	}
}{%end
    		\end{definition}
        \end{mdframed}
}




% % entete{dst|dm|int}{numero}{classe}{date}
% \newcommand{\entete}[4] {
%   % le contenu varie en fonction des arguments
%   \ifthenelse{ \equal{#1}{dst} }
%   {
%     \fancypagestyle{dst}{ %
%     \lhead{#3\\NOM :\\Prénom :}
%     \chead{\textbf{MATHÉMATIQUES}\\Devoir Sur Table n\textsuperscript{o}#2\\}
%     \rhead{le : #4\\~~\\}}
%     \thispagestyle{dst}
%   }
%   {
%     \ifthenelse{ \equal{#1}{dm} }
%     {
%       \fancypagestyle{dm}{ %
%       \lhead{#3\\NOM :\\Prénom :}
%       \chead{\textbf{MATHÉMATIQUES}\\Devoir Maison n\textsuperscript{o}#2\\}
%       \rhead{À rendre le : #4\\~~\\}}
%       \thispagestyle{dm}
%     }
%     {
%       \ifthenelse{ \equal{#1}{int} }
%       {
%         \fancypagestyle{int}{ %
%         \lhead{#3\\NOM :\\Prénom :}
%         \chead{\textbf{MATHÉMATIQUES}\\Interrogation n\textsuperscript{o}#2\\}
%         \rhead{le : #4\\~~\\}}
%         \thispagestyle{int}
%       }
%       {
%         \ifthenelse{ \equal{#1}{crs} }
%         {
%           \fancypagestyle{crs}{ %
%           \lhead{#4}
%           \chead{\textbf{#2}}
%           \rhead{Cours}}
%           \thispagestyle{crs}
%         }
%         {
%           \ifthenelse{ \equal{#1}{act} }
%           {
%             \fancypagestyle{act}{ %
%             \lhead{#4}
%             \chead{\textbf{#2}}
%             \@ifmtarg{#3}{ \rhead{Activité} }{ \rhead{Activité - #3} }}
%             \thispagestyle{act}
%           }
%           {
%             \ifthenelse{ \equal{#1}{exo} }
%             {
%               \fancypagestyle{exo}{ %
%               \lhead{#4}
%               \chead{\textbf{#2}}
%               \@ifmtarg{#3}{\rhead{Exercices}}{\rhead{Exercices - #3}}}
%               \thispagestyle{exo}
%             }
%           }
%         }
%       }
%     }
%   }
% }
%
%
% % exercice<[type]>
% %
% % type = 1	-> \arabic
% % type = a	-> \alph
% % type = A	-> \Alph
% % type = i	-> \roman
% % type = I	-> \Roman
% % \arabic par défaut
% \newcounter{exercicecounter}
% \newcommand{\exercice}[1][1] {
% \ifthenelse{ \equal{#1}{i} }
% 	{
% 		\def\cType{\roman}
% 	}
% 	{
% 		\ifthenelse{ \equal{#1}{I} }
% 		{
% 			\def\cType{\Roman}
% 		}
% 		{
% 			\ifthenelse{ \equal{#1}{a} }
% 			{
% 				\def\cType{\alph}
% 			}
% 			{
% 				\ifthenelse{ \equal{#1}{A} }
% 				{
% 					\def\cType{\Alph}
% 				}
% 				{
% 					\def\cType{\arabic}
% 				}
% 			}
% 		}
% 	}
%   \stepcounter{exercicecounter}
%   \textbf{Exercice \cType{exercicecounter}\ }
% }
%
%
% % questions<[type]>
% %
% % type = 1	-> \arabic
% % type = a	-> \alph
% % type = A	-> \Alph
% % type = i	-> \roman
% % type = I	-> \Roman
% % \arabic par défaut
% \newcounter{cours_questionscounter}
% \newcommand{\questionsseparator}{.}
% \newenvironment{questions}[1][1] {
%     \ifthenelse{ \equal{#1}{i} }
%     {
%         \def\cType{\roman}
%         \renewcommand{\questionsseparator}{)}
%     }
%     {
%         \ifthenelse{ \equal{#1}{I} }
%         {
%             \def\cType{\Roman}
%             \renewcommand{\questionsseparator}{.}
%         }
%         {
%             \ifthenelse{ \equal{#1}{a} }
%             {
%                 \def\cType{\alph}
%                 \renewcommand{\questionsseparator}{)}
%             }
%             {
%                 \ifthenelse{ \equal{#1}{A} }
%                 {
%                     \def\cType{\Alph}
%                     \renewcommand{\questionsseparator}{.}
%                 }
%                 {
%                     \def\cType{\arabic}
%                     \renewcommand{\questionsseparator}{.}
%                 }
%             }
%         }
%     }
%     \begin{list}{\textbf{\cType{cours_questionscounter}\questionsseparator}}{
%                  \usecounter{cours_questionscounter}
%                  \itemindent=0em
%                  \itemsep=8pt \leftmargin=0,54cm}
%     } {
%     \end{list}
% }
% \newcommand{\bq}{\begin{questions}}
% \newcommand{\eq}{\end{questions}}
%
%
% % setAngle{nom}{valeur}
% \newcommand{\setAngle}[2] {
%   $\widehat{#1} = #2 \textsuperscript{o}$
% }
%
%
%  % triUn{nom}{long1}{long2}{long3}
% \newcommand{\triUn}[4] {
% 	\StrLen{#1}[\lNom]
% 	\ifthenelse{ \equal{\lNom}{3} }
% 	{
% 		\StrChar{#1}{1}[\sA]
% 		\StrChar{#1}{2}[\sB]
% 		\StrChar{#1}{3}[\sC]
%
% 		\begin{tikzpicture}
% 			\tkzDefPoint(0,0){\sA}
% 			\tkzDefPoint(#2,0){\sB}
% 			\tkzDrawCircle[R,color=white](\sA,#3 cm)
% 			\tkzDrawCircle[R,color=white](\sB,#4 cm)
% 			\tkzInterCC[R](\sA,#3 cm)(\sB,#4 cm)
% 			\tkzGetPoints{\sC}{Z}
% 			\tkzDrawPolygon(\sA,\sB,\sC)
%
% 			\tkzLabelSegment(\sA,\sB){$#2$ cm}
% 			\tkzLabelSegment(\sA,\sC){$#3$ cm}
% 			\tkzLabelSegment(\sB,\sC){$#4$ cm}
%
% 			\tkzLabelPoint[left](\sA){$\sA$}
% 			\tkzLabelPoint[right](\sB){$\sB$}
% 			\tkzLabelPoint[above](\sC){$\sC$}
% 		\end{tikzpicture}
% 	}
% }
%
%
%  % triDeux{nom}{long1}{long2}{angle}
% \newcommand{\triDeux}[4] {
% 	\StrLen{#1}[\lNom]
% 	\ifthenelse{ \equal{\lNom}{3} }
% 	{
% 		\StrChar{#1}{1}[\sA]
% 		\StrChar{#1}{2}[\sB]
% 		\StrChar{#1}{3}[\sC]
%
% 		\def\nAngle{#4}
%
% 		\begin{tikzpicture}
% 			\tkzDefPoint(0,0){\sA}
% 			\tkzDefPoint(#2,0){\sB}
% 			\tkzDrawSegment(\sA,\sB)
%
% 			\tkzDefPointBy[rotation=center {\sA} angle {#4}](\sB)
% 			\tkzGetPoint{Z}
% 			\tkzDefPointBy[homothety=center {\sA} ratio {#3/#2}](Z)
% 			\tkzGetPoint{\sC}
%
% 			\tkzDrawSegment(\sA,\sC)
% 			\tkzDrawSegment(\sB,\sC)
%
% 			\tkzLabelPoint[left](\sA){$\sA$}
% 			\tkzLabelPoint[right](\sB){$\sB$}
% 			\tkzLabelPoint[above](\sC){$\sC$}
% 		\end{tikzpicture}
% 	}
% }
%
%
%  % triTrois{nom}{long}{angle1}{angle2}
% \newcommand{\triTrois}[4] {
% 	\StrLen{#1}[\lNom]
% 	\ifthenelse{ \equal{\lNom}{3} }
% 	{
% 		\StrChar{#1}{1}[\sA]
% 		\StrChar{#1}{2}[\sB]
% 		\StrChar{#1}{3}[\sC]
%
% 		\def\nAngle{#4}
%
% 		\begin{tikzpicture}
% 			\tkzDefPoint(0,0){\sA}
% 			\tkzDefPoint(#2,0){\sB}
% 			\tkzDrawSegment(\sA,\sB)
%
% 			\tkzDefPointBy[rotation=center {\sA} angle {#3}](\sB)
% 			\tkzGetPoint{Y}
% 			\tkzDefPointBy[rotation=center {\sB} angle {-#4}](\sA)
% 			\tkzGetPoint{Z}
%
% 			\tkzInterLL(\sA,Y)(\sB,Z)
% 			\tkzGetPoint{\sC}
%
% 			\tkzDrawSegment(\sA,\sC)
% 			\tkzDrawSegment(\sB,\sC)
%
% 			\tkzLabelPoint[left](\sA){$\sA$}
% 			\tkzLabelPoint[right](\sB){$\sB$}
% 			\tkzLabelPoint[above](\sC){$\sC$}
% 		\end{tikzpicture}
% 	}
% }
% %--%



% %-- Macros modifiées
% % on n'affiche pas le numéro de page
% \renewcommand{\thepage}{}
%
% % numérotation des sections
% \renewcommand{\thesection}{\Roman{section}.}
%
% \renewcommand{\thesubsection}{\arabic{section})}
% %--%

\makeatother
%% MACROS : FIN