%%% %%% %%% Classe : cours_paper.cls %%% Version : 1.0 %%% Date : 09/11/16 %%% Auteur : Jeff LANCE %%% %%% \NeedsTeXFormat{LaTeX2e} \ProvidesClass{cours_paper}[2016/11/09 Document de cours en A4 pour prof ou élève, V1.0] % % % INIT % % \LoadClassWithOptions{scrartcl} %\LoadClass[a4paper, 12pt, DIV=24]{scrartcl} % % % PACKAGES % % % Others \RequirePackage{xkeyval} % Own packages. Those contains some global settings and definitions. \RequirePackage{commun} \RequirePackage{couleurs} \RequirePackage{shortcuts} % Output \RequirePackage{comment} % Layout \RequirePackage{geometry} \RequirePackage[footsepline, plainfootsepline]{scrlayer-scrpage} \RequirePackage{titling} \RequirePackage{titlesec} \RequirePackage{pageslts} \RequirePackage{enumitem} \RequirePackage[]{hyperref} \makeatletter % % % OPTIONS % % \DeclareOptionX{type}[cours]{% \def\type{#1}% } \ExecuteOptions{a4paper, DIV=24} \ExecuteOptionsX{type} \ProcessOptionsX % % % FIXES % % % Fix error from KOMA-Script scrartcl class. \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} % Fix for mdframed package see : % http://tex.stackexchange.com/questions/179790/mdframed-how-to-change-the-separator-between-the-label-and-the-title-of-a-non-n#179794 \DeclareDocumentCommand{\mdtheorem}{ O{} m o m o }% {\ifcsdef{#2}% {\mdf@PackageWarning{Environment #2 already exits\MessageBreak}}% {% \IfNoValueTF {#3}% {%#3 not given -- number relationship \IfNoValueTF {#5}% {%#3+#5 not given \@definecounter{#2}% \expandafter\xdef\csname the#2\endcsname{\@thmcounter{#2}}% \newenvironment{#2}[1][]{% \refstepcounter{#2}% \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% \mdf@thm@caption{#2}{{#4}{\csname the#2\endcsname}{##1}}% }% \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname% \@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}{\let\@temptitle\relax}{\def\@temptitle{\mdf@theoremseparator\ ##1}}% <- the problem was here \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% {%#5 given -- reset counter \@definecounter{#2}\@newctr{#2}[#5]% \expandafter\xdef\csname the#2\endcsname{\@thmcounter{#2}}% \expandafter\xdef\csname the#2\endcsname{% \expandafter\noexpand\csname the#5\endcsname \@thmcountersep% \@thmcounter{#2}}% \newenvironment{#2}[1][]{% \refstepcounter{#2}% \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% \mdf@thm@caption{#2}{{#4}{\csname the#2\endcsname}{##1}}% } \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname% \@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% \mdf@thm@caption{#2}{{#4}{\csname the#2\endcsname}{##1}}% }% \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% }% {%#3 given -- number relationship \global\@namedef{the#2}{\@nameuse{the#3}}% \newenvironment{#2}[1][]{% \refstepcounter{#3}% \ifstrempty{##1}% {\let\@temptitle\relax}% {% \def\@temptitle{\mdf@theoremseparator% \mdf@theoremspace% \mdf@theoremtitlefont% ##1}% \mdf@thm@caption{#2}{{#4}{\csname the#2\endcsname}{##1}}% } \begin{mdframed}[#1,frametitle={\strut#4\ \csname the#2\endcsname% \@temptitle}]}% {\end{mdframed}}% \newenvironment{#2*}[1][]{% \ifstrempty{##1}{\let\@temptitle\relax}{\def\@temptitle{:\ ##1}}% \begin{mdframed}[#1,frametitle={\strut#4\@temptitle}]}% {\end{mdframed}}% }% }% } % % % SETTINGS % % % metapost \ifpdf \DeclareGraphicsRule{*}{mps}{*}{} \fi % tkz \usetkzobj{all} % on charge tous les objets % sizing of the page \geometry{a4paper, includeheadfoot, hmargin=.7cm, vmargin=.5cm, head=14.5pt} % title, header and footer % KOMA-Script version (preferred) \ohead{} \ifthenelse{ \equal{\type}{activity} }{ \IfNoValueTF{ \subtitle }{ \cohead[\@title]{\@title} \rohead[Activité]{Activité} }{ \cohead[\@title]{\@title} \rohead[Activité]{Activité - \@subtitle} } }{ \ifthenelse{ \equal{\type}{exercise} }{ \cohead[\@title]{\@title} \rohead[Exercices]{Exercices} }{ \rohead[Cours]{Cours - \@title} } } \cofoot*{\thepage\ /\ \pageref{LastPage}} \pagestyle{scrheadings} \setkomafont{pagehead}{\normalfont\bfseries} \setkomafont{pagefoot}{\normalfont} %------------------------------------- % fancyhdr version (need \RequirePackage{fancyhdr} and class article) %\pagestyle{fancy} %\fancyhf{} %\rhead{Cours - \@title} %\cfoot{\thepage\ /\ \pageref{LastPage}} %\renewcommand{\headrulewidth}{0pt} %\renewcommand{\footrulewidth}{.4pt} %------------------------------------- %--------------------------------------------------------------------- % (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 % % % global options \mdfsetup{ frametitlealignment=\raggedright,% innerbottommargin=2em,% } % styles \tikzset{ symbol/.style={ rectangle, draw=white, fill=white, scale=1, overlay } } % default: a standard square frame with thick border \mdfdefinestyle{default}{% linecolor=black,linewidth=1pt,% leftmargin=0,rightmargin=0,% innertopmargin=1em,innerbottommargin=1em,% innerleftmargin=.5em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% nobreak=true,% xcolor,% } % clear: a no-border frame \mdfdefinestyle{clear}{% linecolor=white,linewidth=0pt,% leftmargin=0,rightmargin=0,% innertopmargin=.5em,innerbottommargin=.5em,% innerleftmargin=.5em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% xcolor,% } % complete: a square frame with a pencil icon in upper left corner \mdfdefinestyle{complete}{% linecolor=black,linewidth=1pt,% leftmargin=0,rightmargin=0,% innertopmargin=1em,innerbottommargin=1em,% innerleftmargin=1em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% nobreak=true,% xcolor,% firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faPencil }; },% secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faPencil }; },% middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faPencil }; },% singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faPencil }; },% } % dashed: dashed square frame \mdfdefinestyle{dotted}{% linecolor=white,linewidth=1pt,% tikzsetting={draw=black,dotted,line width=1pt},% leftmargin=0,rightmargin=0,% innertopmargin=1em,innerbottommargin=1em,% innerleftmargin=.5em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% nobreak=false,% xcolor,% firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faEye }; },% secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faEye }; },% middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faEye }; },% singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faEye }; },% } % quote: frame with no borders but with a beginning quote at upper left and % an ending quote at lower right \mdfdefinestyle{quote}{% linecolor=white,linewidth=1pt,% leftmargin=0,rightmargin=0,% innertopmargin=1em,innerbottommargin=1em,% innerleftmargin=1em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% nobreak=true,% xcolor,% firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faQuoteLeft }; \path let \p1=(P), \p2=(O) in ($(\x1,.4)+(0,\y2)$) node[symbol] { \faQuoteRight }; },% secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faQuoteLeft }; \path let \p1=(P), \p2=(O) in ($(\x1,.4)+(0,\y2)$) node[symbol] { \faQuoteRight }; },% middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faQuoteLeft }; \path let \p1=(P), \p2=(O) in ($(\x1,.4)+(0,\y2)$) node[symbol] { \faQuoteRight }; },% singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faQuoteLeft }; \path let \p1=(P), \p2=(O) in ($(\x1,.4)+(0,\y2)$) node[symbol] { \faQuoteRight }; },% } % todo: a shadowed square frame with a file text icon at upper left \mdfdefinestyle{todo}{% linecolor=white,linewidth=1pt,% tikzsetting={draw=black,line width=1pt},% leftmargin=0,rightmargin=0,% innertopmargin=1em,innerbottommargin=1em,% innerleftmargin=1em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% nobreak=true,% xcolor,% % hidealllines=true, topline=true, bottomline=true,% shadow=true,% % backgroundcolor=gray!40,% FOR TEST ONLY firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faCogs }; },% secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faCogs }; },% middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faCogs }; },% singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faCogs }; },% } % tips: a shadowed square frame with a light bulb icon at upper left \mdfdefinestyle{tips}{% linecolor=white,linewidth=1pt,% tikzsetting={draw=black,line width=1pt},% leftmargin=0,rightmargin=0,% innertopmargin=1em,innerbottommargin=1em,% innerleftmargin=1em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% nobreak=true,% xcolor,% hidealllines=true, leftline=true, % topline=true, bottomline=true,% % shadow=true,% % backgroundcolor=gray!40,% FOR TEST ONLY firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faLightbulbO }; },% secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faLightbulbO }; },% middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faLightbulbO }; },% singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faLightbulbO }; },% } % method: a shadowed square frame with cogs icon at upper left \mdfdefinestyle{method}{% linecolor=white,linewidth=1pt,% tikzsetting={draw=black,line width=1pt},% leftmargin=0,rightmargin=0,% innertopmargin=1em,innerbottommargin=1em,% innerleftmargin=1em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% nobreak=true,% xcolor,% hidealllines=true, leftline=true, % topline=true, bottomline=true,% % shadow=true,% % backgroundcolor=gray!40,% FOR TEST ONLY firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faBookmarkO }; },% secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faBookmarkO }; },% middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faBookmarkO }; },% singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faBookmarkO }; },% } % warn: frame with only left border and warning icon at upper left \mdfdefinestyle{warning}{% linecolor=black,linewidth=1pt,% leftmargin=0,rightmargin=0,% innertopmargin=1em,innerbottommargin=1em,% innerleftmargin=1em,innerrightmargin=.5em,% skipabove=0,skipbelow=0,% frametitlerule=false,% frametitlebackgroundcolor=white!0,%innertopmargin=\topskip,% nobreak=true,% xcolor,% hidealllines=true, leftline=true,% firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faExclamationTriangle }; },% secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faExclamationTriangle }; },% middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faExclamationTriangle }; },% singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faExclamationTriangle }; },% } \mdtheorem[style=complete, theoremseparator={ -}, theoremspace={}, roundcorner=8pt]{déf}{Définition} \mdtheorem[style=default, theoremseparator={ -}, theoremspace={}, roundcorner=8pt]{défn}{Définition} \mdtheorem[style=complete, theoremseparator={ -}, theoremspace={}, outerlinewidth=1pt, outerlinecolor=black]{thm}{Théorème} \mdtheorem[style=default, theoremseparator={ -}, theoremspace={}, outerlinewidth=1pt, outerlinecolor=black]{thmn}{Théorème} \mdtheorem[style=complete, theoremseparator={ -}, theoremspace={}, outerlinewidth=1pt, outerlinecolor=black]{ppt}{Propriété} \mdtheorem[style=default, theoremseparator={ -}, theoremspace={}, outerlinewidth=1pt, outerlinecolor=black]{pptn}{Propriété} \mdtheorem[style=complete, theoremseparator={ -}, theoremspace={}]{pre}{Preuve} \mdtheorem[style=default, theoremseparator={ -}, theoremspace={}]{pren}{Preuve} \mdtheorem[style=complete, theoremseparator={ -}, theoremspace={}]{voc}{Vocabulaire} \mdtheorem[style=default, theoremseparator={ -}, theoremspace={}]{vocn}{Vocabulaire} \mdtheorem[style=quote, frametitle=none, frametitleaboveskip=0em, frametitlebelowskip=0em]{qte}{} \mdtheorem[style=warning, theoremseparator={ -}, theoremspace={}]{rmq}{Remarque} \mdtheorem[style=warning, theoremseparator={}, theoremspace={}]{rmqn}{} \mdtheorem[style=dotted, theoremseparator={ -}, theoremspace={}]{exe}{Exemple} \mdtheorem[style=dotted, theoremseparator={}, theoremspace={}]{exen}{} \mdtheorem[style=todo, theoremseparator={ -}, theoremspace={}]{exo}{Exercice} \mdtheorem[style=todo, theoremseparator={ -}, theoremspace={}]{app}{Application} \mdtheorem[style=todo, theoremseparator={}, theoremspace={}]{appn}{} \mdtheorem[style=method, theoremseparator={ -}, theoremspace={}]{met}{Méthode} \mdtheorem[style=clear, theoremseparator={}, theoremspace={}]{metn}{} % % % MACROS % % % Redirect all standard previously defined environments to their starred version % as they don't display numbering. \RenewDocumentEnvironment{déf}{ o } {%begin \IfNoValueTF {#1} { \begin{déf*} }{ \begin{déf*}[#1] } }{%end \end{déf*} } \RenewDocumentEnvironment{défn}{ o } {%begin \IfNoValueTF {#1} { \begin{défn*} }{ \begin{défn*}[#1] } }{%end \end{défn*} } \RenewDocumentEnvironment{thm}{ o } {%begin \IfNoValueTF {#1} { \begin{thm*} }{ \begin{thm*}[#1] } }{%end \end{thm*} } \RenewDocumentEnvironment{thmn}{ o } {%begin \IfNoValueTF {#1} { \begin{thmn*} }{ \begin{thmn*}[#1] } }{%end \end{thmn*} } \RenewDocumentEnvironment{ppt}{ o } {%begin \IfNoValueTF {#1} { \begin{ppt*} }{ \begin{ppt*}[#1] } }{%end \end{ppt*} } \RenewDocumentEnvironment{pptn}{ o } {%begin \IfNoValueTF {#1} { \begin{pptn*} }{ \begin{pptn*}[#1] } }{%end \end{pptn*} } \RenewDocumentEnvironment{pre}{ o } {%begin \IfNoValueTF {#1} { \begin{pre*} }{ \begin{pre*}[#1] } }{%end \end{pre*} } \RenewDocumentEnvironment{pren}{ o } {%begin \IfNoValueTF {#1} { \begin{pren*} }{ \begin{pren*}[#1] } }{%end \end{pren*} } \RenewDocumentEnvironment{exe}{ o } {%begin \IfNoValueTF {#1} { \begin{exe*} }{ \begin{exe*}[#1] } }{%end \end{exe*} } \RenewDocumentEnvironment{exen}{ o } {%begin \IfNoValueTF {#1} { \begin{exen*} }{ \begin{exen*}[#1] } }{%end \end{exen*} } \RenewDocumentEnvironment{qte}{ o } {%begin \IfNoValueTF {#1} { \begin{qte*} }{ \begin{qte*}[#1] } }{%end \end{qte*} } \RenewDocumentEnvironment{rmq}{ o } {%begin \IfNoValueTF {#1} { \begin{rmq*} }{ \begin{rmq*}[#1] } }{%end \end{rmq*} } \RenewDocumentEnvironment{rmqn}{ o } {%begin \IfNoValueTF {#1} { \begin{rmqn*} }{ \begin{rmqn*}[#1] } }{%end \end{rmqn*} } \RenewDocumentEnvironment{voc}{ o } {%begin \IfNoValueTF {#1} { \begin{voc*} }{ \begin{voc*}[#1] } }{%end \end{voc*} } \RenewDocumentEnvironment{vocn}{ o } {%begin \IfNoValueTF {#1} { \begin{vocn*} }{ \begin{vocn*}[#1] } }{%end \end{vocn*} } \RenewDocumentEnvironment{app}{ o } {%begin \IfNoValueTF {#1} { \begin{app*} }{ \begin{app*}[#1] } }{%end \end{app*} } \RenewDocumentEnvironment{appn}{ o } {%begin \IfNoValueTF {#1} { \begin{appn*} }{ \begin{appn*}[#1] } }{%end \end{appn*} } \RenewDocumentEnvironment{met}{ o } {%begin \IfNoValueTF {#1} { \begin{met*} }{ \begin{met*}[#1] } }{%end \end{met*} } \RenewDocumentEnvironment{metn}{ o } {%begin \IfNoValueTF {#1} { \begin{metn*} }{ \begin{metn*}[#1] } }{%end \end{metn*} } % titre \NewDocumentCommand \titre { G{Titre} G{Sous-titre} }{% \setlength{\droptitle}{-2cm} \title{#1} \subtitle{#2} \date{} \maketitle } % \partie | \sspartie % Define a (sub)section title. \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}} \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} } % new lists definitions \newlist{questions}{enumerate}{2} \setlist[questions]{labelindent=0em, leftmargin=*, labelsep=0.5em} \setlist[questions, 1]{label=\textbf{\arabic*.}} \setlist[questions, 2]{label=\textbf{\alph*)}} \newlist{questionsl}{enumerate*}{1} \setlist*[questionsl]{label=\textbf{\alph*)}} \setlist[enumerate, 1]{label=\textbf{\arabic*.}, leftmargin=*, labelsep=.5em} \setlist[enumerate, 2]{label=\textbf{\alph*)}} \setlist[description]{font=\sffamily\bfseries} % ams theorem style for exercises \newtheoremstyle{exostyle} {\topsep}% espace avant {\topsep}% espace apres {}% Police utilisee par le style de thm {}% Indentation (vide = aucune, \parindent = indentation paragraphe) {\bfseries}% Police du titre de thm {}% Signe de ponctuation apres le titre du thm {\newline}% Espace apres le titre du thm (\newline = linebreak) {\thmname{#1}\thmnumber{ #2}\thmnote{ - \normalfont{\textit{#3}}}} % composants du titre du thm : \thmname = nom, \thmnumber = numéro, \thmnote = sous-titre \theoremstyle{exostyle} \newtheorem{exercice}{Exercice} \makeatother