rewrite the class

This commit is contained in:
Jeff Lance 2016-09-29 22:48:18 +02:00
parent 349bb1e7c9
commit 85e0b6288e

View File

@ -13,7 +13,7 @@
%-- classe de base %-- classe de base
\LoadClass[a4paper, 10pt]{article} \LoadClass[a4paper, 12pt]{scrartcl}
%--% %--%
@ -22,47 +22,22 @@
% PERSONNELLES % PERSONNELLES
% commun: contient des définitions et extensions de base pour tout. % commun: contient des définitions et extensions de base pour tout.
\RequirePackage{commun} \RequirePackage{commun}
\RequirePackage{shortcuts}
% sortie % sortie
% \RequirePackage[pdftex]{graphicx} \RequirePackage[pdftex]{graphicx}
\RequirePackage{comment} \RequirePackage{comment}
% mise en page % mise en page
\RequirePackage{fancyhdr} \RequirePackage{geometry}
\RequirePackage{scrlayer-scrpage}
\RequirePackage{mdframed}
\RequirePackage{titlesec}
%--% %--%
%-- structure de la page %-- paramétrages
% marges de la page : haute et basse
\setlength{\hoffset}{-1in+0.5cm}
\setlength{\voffset}{-1in+0.5cm}
% marge du texte
\setlength{\oddsidemargin}{0cm}
\setlength{\topmargin}{0cm}
% marge notes
\setlength{\marginparwidth}{0cm}
\setlength{\marginparsep}{0cm}
% largeur et hauteur du texte
\setlength{\textwidth}{20cm}
\setlength{\textheight}{28.7cm}
% distance du cadre texte avec en-tete
\setlength{\headsep}{0.5cm}
% en-tete
\setlength{\headheight}{1cm}
\renewcommand{\headrulewidth}{0.4pt}% defaut \headrulewidth vaut 0.4pt
% pied de page
\setlength{\footskip}{0.5cm}
\renewcommand{\footrulewidth}{0pt}% defaut \footrulewidth vaut 0pt
% style de page
\pagestyle{empty}
% paragraphes : pas d'alinea
\setlength{\parindent}{0pt}
%--%
%-- paramétrage de certains packages
% metapost % metapost
\ifpdf \ifpdf
\DeclareGraphicsRule{*}{mps}{*}{} \DeclareGraphicsRule{*}{mps}{*}{}
@ -70,6 +45,37 @@
% tkz % tkz
\usetkzobj{all} % on charge tous les objets \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,%
}
%--% %--%
@ -78,6 +84,14 @@
\makeatletter \makeatletter
%-- Macros personnelles %-- Macros personnelles
% debut
\NewDocumentCommand \debut { G{Titre} G{Sous-titre} } {%
\title{#1}
\subtitle{#2}
\date{}
\maketitle
}
% Vtextvisiblespace[largeur] % Vtextvisiblespace[largeur]
\newcommand\Vtextvisiblespace[1][.3em]{% \newcommand\Vtextvisiblespace[1][.3em]{%
\mbox{\kern.06em\vrule height.3ex}% \mbox{\kern.06em\vrule height.3ex}%
@ -85,276 +99,322 @@
\hbox{\vrule height.3ex}% \hbox{\vrule height.3ex}%
} }
% entete{dst|dm|int}{numero}{classe}{date} % \partie | \sspartie
\newcommand{\entete}[4] { % definie un titre pour une (sous)section
% le contenu varie en fonction des arguments \newcounter{partiecounter}
\ifthenelse{ \equal{#1}{dst} } \newcounter{sspartiecounter}
{
\fancypagestyle{dst}{ %
\lhead{#3\\NOM :\\Pr\'enom :}
\chead{\textbf{MATHEMATIQUES}\\Devoir Sur Table n\textsuperscript{o}#2\\}
\rhead{le : #4\\~~\\}}
\thispagestyle{dst}
}
{
\ifthenelse{ \equal{#1}{dm} }
{
\fancypagestyle{dm}{ %
\lhead{#3\\NOM :\\Pr\'enom :}
\chead{\textbf{MATHEMATIQUES}\\Devoir Maison n\textsuperscript{o}#2\\}
\rhead{\`A rendre le : #4\\~~\\}}
\thispagestyle{dm}
}
{
\ifthenelse{ \equal{#1}{int} }
{
\fancypagestyle{int}{ %
\lhead{#3\\NOM :\\Pr\'enom :}
\chead{\textbf{MATHEMATIQUES}\\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\'e} }{ \rhead{Activit\'e - #3} }}
\thispagestyle{act}
}
{
\ifthenelse{ \equal{#1}{exo} }
{
\fancypagestyle{exo}{ %
\lhead{#4}
\chead{\textbf{#2}}
\@ifmtarg{#3}{\rhead{Exercices}}{\rhead{Exercices - #3}}}
\thispagestyle{exo}
}
}
}
}
}
}
}
\NewDocumentCommand \partie { G{Partie} } {%
% 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} \def\cType{\Roman}
} \stepcounter{partiecounter}
{ \setcounter{sspartiecounter}{0}
\ifthenelse{ \equal{#1}{a} } \section{#1}
{
\def\cType{\alph}
}
{
\ifthenelse{ \equal{#1}{A} }
{
\def\cType{\Alph}
}
{
\def\cType{\arabic}
}
}
}
}
\stepcounter{exercicecounter}
\textbf{Exercice \cType{exercicecounter}\ }
} }
% questions<[type]>
% %
% type = 1 -> \arabic \NewDocumentCommand \sspartie { G{Sous-Partie} } {%
% 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} \def\cType{\arabic}
\renewcommand{\questionsseparator}{.} \stepcounter{sspartiecounter}
} \subsection{#1}
}
}
}
\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}$
} }
% Fix error from KOMA-Script scrartcl class.
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
% triUn{nom}{long1}{long2}{long3} % environnements
\newcommand{\triUn}[4] { % definition de divers environnements personnels : definition, theoreme, exemple,
\StrLen{#1}[\lNom] % exercice (avec numerotation), remarque, methode.
\ifthenelse{ \equal{\lNom}{3} } \NewDocumentEnvironment{déf}{ s g }{%begin
\IfBooleanTF #1
{ {
\StrChar{#1}{1}[\sA] \IfNoValueTF {#2} {
\StrChar{#1}{2}[\sB] \begin{block} {}
\StrChar{#1}{3}[\sC] }{
\begin{block} {#2}
\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}
} }
}{
\IfNoValueTF {#2} {
\begin{block} {Définition}
}{
\begin{block} {Définition - #2}
}
}
}{%end
\end{block}
} }
% 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} % % entete{dst|dm|int}{numero}{classe}{date}
\newcommand{\triTrois}[4] { % \newcommand{\entete}[4] {
\StrLen{#1}[\lNom] % % le contenu varie en fonction des arguments
\ifthenelse{ \equal{\lNom}{3} } % \ifthenelse{ \equal{#1}{dst} }
{ % {
\StrChar{#1}{1}[\sA] % \fancypagestyle{dst}{ %
\StrChar{#1}{2}[\sB] % \lhead{#3\\NOM :\\Prénom :}
\StrChar{#1}{3}[\sC] % \chead{\textbf{MATHÉMATIQUES}\\Devoir Sur Table n\textsuperscript{o}#2\\}
% \rhead{le : #4\\~~\\}}
\def\nAngle{#4} % \thispagestyle{dst}
% }
\begin{tikzpicture} % {
\tkzDefPoint(0,0){\sA} % \ifthenelse{ \equal{#1}{dm} }
\tkzDefPoint(#2,0){\sB} % {
\tkzDrawSegment(\sA,\sB) % \fancypagestyle{dm}{ %
% \lhead{#3\\NOM :\\Prénom :}
\tkzDefPointBy[rotation=center {\sA} angle {#3}](\sB) % \chead{\textbf{MATHÉMATIQUES}\\Devoir Maison n\textsuperscript{o}#2\\}
\tkzGetPoint{Y} % \rhead{À rendre le : #4\\~~\\}}
\tkzDefPointBy[rotation=center {\sB} angle {-#4}](\sA) % \thispagestyle{dm}
\tkzGetPoint{Z} % }
% {
\tkzInterLL(\sA,Y)(\sB,Z) % \ifthenelse{ \equal{#1}{int} }
\tkzGetPoint{\sC} % {
% \fancypagestyle{int}{ %
\tkzDrawSegment(\sA,\sC) % \lhead{#3\\NOM :\\Prénom :}
\tkzDrawSegment(\sB,\sC) % \chead{\textbf{MATHÉMATIQUES}\\Interrogation n\textsuperscript{o}#2\\}
% \rhead{le : #4\\~~\\}}
\tkzLabelPoint[left](\sA){$\sA$} % \thispagestyle{int}
\tkzLabelPoint[right](\sB){$\sB$} % }
\tkzLabelPoint[above](\sC){$\sC$} % {
\end{tikzpicture} % \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 % %-- Macros modifiées
% on n'affiche pas le numéro de page % % on n'affiche pas le numéro de page
\renewcommand{\thepage}{} % \renewcommand{\thepage}{}
%
% numérotation des sections % % numérotation des sections
\renewcommand{\thesection}{\Roman{section}.} % \renewcommand{\thesection}{\Roman{section}.}
%
\renewcommand{\thesubsection}{\arabic{section})} % \renewcommand{\thesubsection}{\arabic{section})}
%--% % %--%
\makeatother \makeatother
%% MACROS : FIN %% MACROS : FIN