%%% %%% %%% Classe : cours_prof.cls %%% Version : 1.0 %%% Date : 09/11/16 %%% Auteur : Jeff LANCE %%% %%% \NeedsTeXFormat{LaTeX2e} \ProvidesClass{cours_prof}[2016/11/09 Document de cours imprimable A4 pour prof ou élève, V1.0] %-- classe de base \LoadClass[a4paper, 12pt, DIV=24]{scrartcl} %--% %-- PACKAGES % 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{pageslts} %--% \makeatletter %-- SETTINGS % metapost \ifpdf \DeclareGraphicsRule{*}{mps}{*}{} \fi % tkz \usetkzobj{all} % on charge tous les objets % format de la page \geometry{a4paper, hmargin=.7cm, vmargin=2cm} % titre, en-tête, pied de page \cofoot*{\thepage\ /\ \pageref{LastPage}} \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 % Fix for 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}}% }% }% } % 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=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 }; % },% } % 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] { \faFileTextO }; },% secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faFileTextO }; },% middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faFileTextO }; },% singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,-.4)+1.0*(0,\y1)$) node[symbol] { \faFileTextO }; },% } % 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] { \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 }; },% } % 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=dotted, theoremseparator={ -}, theoremspace={}]{exe}{Exemple} \mdtheorem[style=todo, theoremseparator={ -}, theoremspace={}]{exo}{Exercice} \mdtheorem[style=todo, theoremseparator={ -}, theoremspace={}]{app}{Application} \mdtheorem[style=method, theoremseparator={ -}, theoremspace={}]{met}{Méthode} % 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{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{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{met}{ o } {%begin \IfNoValueTF {#1} { \begin{met*} }{ \begin{met*}[#1] } }{%end \end{met*} } %--% % Fix error from KOMA-Script scrartcl class. \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} %-- Macros personnelles % titre \NewDocumentCommand \titre { G{Titre} G{Sous-titre} } {% \title{#1} \subtitle{#2} \date{} \maketitle } % commandes % \partie | \sspartie % definie un titre pour une (sous)section \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} } %-- % \makeatother