%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Fichier de style pour les olymiades de mathématiques.
%% version 0.3
%%
%% Copyright 2020, Association des Professeurs de Mathematiques de
%% l'enseignement Public
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Creator of this work was Olivier Reboux †. olivier.reboux@laposte.net
%%
%% The Current Maintainer of this work is François Pétiard. petiard.francois@free.fr
%% Office help: François Pétiard
%%
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 0.3 : 26/11/2020 : divers changements cosmétiques
%% 0.2 : 20/02/2020 : fontawesome5
%% 0.1 : 02/20 diverses améliorations
\def\fileversion{0.3}
\def\filedate{2020-11-26}
\def\filename{apmepOlym.sty}
\def\Copyright{Copyright (C) 2019-2020, O. Reboux & F. Pétiard. APMEP. France.}
\NeedsTeXFormat{LaTeX2e}[2018-12-01]
\ProvidesPackage{apmepOlym}[2020-11-26]
\ProvidesFile{apmepOlym.sty}[\filedate\space version\space\fileversion%
\space Fichier de style LaTeX pour la mise en page des annales des
Olympiades de mathématiques]
\typeout{Version \fileversion\space du \filedate. F.P.}
\typeout{\Copyright}
% options du package

% codage d'entrée. Pour les versions « obsolètes » de LaTeX.
\@ifl@t@r\fmtversion{2018/04/01}{}{\RequirePackage[utf8]{inputenc}}
% l'extension fontenc, avec codage T1. Assure la compatibilité avec
% les lecteurs de pdf.
\RequirePackage[T1]{fontenc}
% Une fonte assez grasse. Avoir pour des changements
% et surtout pour avoir une fonte spéciale dys.
\RequirePackage{kpfonts}
\RequirePackage{fontawesome5}
% Définition de la maquette
\RequirePackage{geometry}
\geometry{paper=a5paper,
  outer=1.95cm,inner=0.55cm,top=1cm,bottom=0.5cm}
\RequirePackage{answers}
\RequirePackage{multicol}
\RequirePackage{multirow}
% Gestion des unités.
\RequirePackage[autolanguage]{numprint}
\RequirePackage{siunitx}
\sisetup
{%
  output-decimal-marker={,},%
  load-configurations=abbreviations,%
  input-symbols=\pi,%
  input-complex-roots=i,%
  inter-unit-separator={}\ensuremath{\cdot{}},%
  group-minimum-digits=3,%  %FP
  detect-all%               %FP
  %per-mode=symbol,%
  %per-symbol={\text{/}},%
}
\RequirePackage{calc}
% Gestion des flèches de vecteurs
\RequirePackage[c]{esvect}
\RequirePackage{nicefrac}
% Gestion des théorèmes
\RequirePackage{amsthm}
% Gestion des intervalles
\RequirePackage{interval}
\intervalconfig{separator symbol={;}}
% Permet d'avoir plus d'environnement imbrique
\RequirePackage{xpatch}
% Les chaines de caractères
\RequirePackage{xstring}
\RequirePackage{ifthen}
% La couleur
\RequirePackage[svgnames,table]{xcolor}
% Tikz : dessin, schéma and co.
\RequirePackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{shapes.callouts}
\usetikzlibrary{positioning}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\usetikzlibrary{calc}
\usetikzlibrary{datavisualization}
\usetikzlibrary{datavisualization.formats.functions}
\usetikzlibrary{plotmarks}
\usetikzlibrary{turtle}
\usetikzlibrary{3d}
\usetikzlibrary{angles}
\usetikzlibrary{shadows}
\usetikzlibrary{babel}
\usetikzlibrary{patterns}
\usetikzlibrary{shadings}
% pour les arbres
\usetikzlibrary{trees}
% Un ensemble de symboles dessines en tikz
\RequirePackage{tikzsymbols}
% Tableau de signe et de variation
\RequirePackage{tkz-tab}
\RequirePackage{tkz-euclide}
%\usetkzobj{all}
% Gestion des boites diverses. tcolorbox est utilise dans les boites
% colores, les titres d'articles, les mises en formes de programmes
% python, les preuves, et tout encart.
\RequirePackage[many]{tcolorbox}
\RequirePackage[french,onelanguage,boxed]{algorithm2e}
% Gestion des titres
\RequirePackage{titlesec}
\RequirePackage{fancyhdr}
\RequirePackage[inline]{enumitem}
\RequirePackage{booktabs}
\RequirePackage[column=C]{cellspace} % merci FP
\RequirePackage{microtype}
\RequirePackage{babel}
\RequirePackage{caption}
\RequirePackage{subcaption}
\captionsetup{labelsep=colon}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Code Python
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tcbuselibrary{listingsutf8}
\tcbset{listing engine=listings}
% Code repris de afdm.sty. François Pétiard, à la baguette
\lstset{%
showstringspaces=false,
extendedchars=true,
inputencoding=utf8/latin9,
            literate=%
            {é}{{\'{e}}}1
            {è}{{\`{e}}}1
            {ê}{{\^{e}}}1
            {ë}{{\"{e}}}1
            {û}{{\^{u}}}1
            {ù}{{\`{u}}}1
            {â}{{\^{a}}}1
            {à}{{\`{a}}}1
            {î}{{\^{i}}}1
            {ô}{{\^{o}}}1
            {ç}{{\c{c}}}1
            {œ}{{\oe}}1
            {æ}{{\ae}}1
            {É}{{\'{E}}}1
            {È}{{\`{E}}}1
            {Ê}{{\^{E}}}1
            {Ë}{{\"{E}}}1
            {Û}{{\^{U}}}1
            {Ù}{{\`{U}}}1
            {Â}{{\^{A}}}1
            {À}{{\`{A}}}1
            {Î}{{\^{I}}}1
            {Ô}{{\^{O}}}1
            {Ç}{{\c{C}}}1
            {Œ}{{\OE}}1
            {Æ}{{\AE}}1
}
\definecolor{pourpre2}{cmyk}{0,1,0,0.4} % there's actually no standard purple
\definecolor{vert2}{cmyk}{1,0,1,0.4} % a darker green
\definecolor{rouge2}{cmyk}{0,1,1,0} % a darker green
\lstdefinelanguage{python}%
  {morekeywords={access,and,break,class,continue,def,del,elif,else,%
      except,exec,finally,for,from,global,if,import,in,is,lambda,not,%
      or,pass,print,raise,return,try,while},%
  % Built-ins
   morekeywords=[2]{abs,all,any,basestring,bin,bool,bytearray,callable,chr,
     classmethod,cmp,compile,complex,delattr,dict,dir,divmod,enumerate,eval,
     execfile,False,file,filter,float,format,frozenset,getattr,globals,hasattr,hash,
     help,hex,id,input,int,isinstance,issubclass,iter,len,list,locals,long,map,
     max,memoryview,min,next,object,oct,open,ord,pow,property,range,raw_input,
     reduce,reload,repr,reverse,reversed,round,set,setattr,slice,sorted,staticmethod,str,
     sum,super,True,tuple,type,unichr,unicode,vars,xrange,zip,apply,buffer,coerce,
     intern},
   sensitive=true,%
   morecomment=[l]\#,%
   morestring=[b]',%
   morestring=[b]",%
   morecomment=[s]{'''}{'''},% used for documentation text (mulitiline strings)
   morecomment=[s]{"""}{"""},% added by Philipp Matthias Hahn
   morestring=[s]{r'}{'},% `raw' strings
   morestring=[s]{r"}{"},%
   morestring=[s]{r'''}{'''},%
   morestring=[s]{r"""}{"""},%
   morestring=[s]{u'}{'},% unicode strings
   morestring=[s]{u"}{"},%
   morestring=[s]{u'''}{'''},%
   morestring=[s]{u"""}{"""}%
  }%
\lstdefinestyle{afdmpython}{%
  language=python,                   % the language
  basicstyle=\scriptsize,   % size of the fonts for the code
  keywordstyle=\color{cyan}\bfseries,       % core keywords
  keywordstyle={[2]\color{pourpre2}\bfseries}, % built-ins
  stringstyle=\color{vert2}\bfseries,
  commentstyle=\color{rouge2},
  upquote=true,                      % requires textcomp
}

\setlist{left=0.25pt}

% Francisation

\RequirePackage{caption}
\captionsetup[figure]{font={footnotesize,sl},labelfont=up}
\captionsetup[table]{font={footnotesize,sl},labelfont=up}% FP ajout du 2018/05/02 /FP

\RequirePackage[hypertexnames=false]{hyperref}
\RequirePackage{bookmark}  %% évite des Warnings concernant les signets père et fils dans les sec

% Mise en forme des labels dans les énumérations
\renewcommand{\labelenumi}{\textbf{\theenumi.}}
\renewcommand{\labelenumii}{\textbf{\theenumii.}}
\renewcommand{\theenumi}{\arabic{enumi}}
\renewcommand{\theenumii}{\alph{enumii}}
\frenchsetup{ItemLabels=\textbullet,CustomiseFigTabCaptions=false,og=«,fg=»}
%\renewcommand*{\CaptionSeparator}{~:}


% Définition des couleurs utiles.
%
\definecolor{colLogo}      {RGB}{ 51, 183, 100}
\definecolor{colLogoTeinte}{RGB}{179, 220,  24}
\definecolor{colLogoFort}  {RGB}{  2, 141,  71}

\newcommand{\logoapmep}[1]
% #1 -> Echelle
{%
    \begin{tikzpicture}[scale=#1]
      % disque externe
      \fill [white,shift={(8,8)}] (0,0) circle [radius = 8] ;
      % % disque interne
      \fill
      [
      shift={(8,8)},%
      black,%
      ] (0,0) circle [radius = 7] ;
      % carre de droite
      \fill
      [
      shift={(3.58,8.6)},
      colLogoFort,
      rotate = -37.5,
      ]
      (0,0)--(2.25,0)--(2.25,2.25)--(0,2.25)--cycle ;
      % carre du centre
      \fill
      [
      shift = {(8,9)},%
      colLogo,%
      ]
      (0,2.5)--(2.5,0)--(0,-2.5)--(-2.5,0)--cycle ;
      \fill
      [
      shift={(9.825,8.32)},
      rotate = 21,
      colLogoTeinte,
      ] (0,0)--(2.33,0)--(2.33,2.33)--(0,2.33)--cycle ;
      % NOM
      \node at (8,7) [below,white,scale = 0.8]{\bfseries \sffamily APMEP}  ;
      %\draw [red] (0,0) grid (16,16) ;
    \end{tikzpicture}
}%

% Mise en forme des commandes de sectionnement
% nécessite titlesec
\renewcommand{\chaptertitlename}{Épreuve}
\@ifundefined{chapter}{}{%
\renewcommand{\thechapter}{\Roman{chapter}}
\titleformat{\chapter}[display]
{\bfseries\Huge\sffamily\color{colLogoFort}}
{\filleft\Large\chaptertitlename{}  \Large\thechapter}
{4ex}
{\titlerule
\vspace{2ex}%
\filright}
[\vspace{2ex}]%
}
% Formatage des sections
\titleformat{\section}%
{\normalfont\sffamily\large\color{colLogoFort}}%
{}%
{0ex}%
{\bfseries}
% Formatage des subsections
\titleformat{\subsection}[block]%
{\normalfont\large\sffamily\color{colLogo}}%
{\arabic{subsection}.}%
{1ex}%
{\bfseries}
% Formatages des subsubsections
\titleformat{\subsubsection}[block]%
{\normalfont\sffamily\color{colLogo}}
{\roman{subsubsection}.}%
{1ex}%
{\slshape}

\def\l@Bandeau{1cm}
\def\h@Bandeau{10.61cm}%20.9+0.32 de fond perdu
\def\x@logo{1cm}
\def\y@logo{1.131cm}
\def\scale@logo{0.1}
\def\xpos@Ecriture{0.85cm}
\def\xpos@page{0.5cm}
\def\x@FP{0.282cm}%
\def\y@FP{-0.282cm}%

\newcommand{\apmepOlymp@bandeau}
{%
  \begin{tikzpicture}
      \fill [colLogoFort] (0,0) -- (\l@Bandeau,0)[rounded
      corners=1.08cm] --(\l@Bandeau,\h@Bandeau) [sharp corners]--
      (0,\h@Bandeau)--cycle ;
  \end{tikzpicture}
}%

\newcommand{\bera@Sans}{\fontfamily{fvs}\fontseries{m}\selectfont\large}

\newcommand{\olympBandeauG}[1]
{
  % Position de la cartouche :
  % On la positionne par rapport au coin de la page.
  % Le centre du logo à
  % l'air d'être au centre de l'entête. %
  \begin{tikzpicture}[remember picture,overlay]
    \begin{scope}
      \fill [colLogoFort] (current page.south east) --++(-\l@Bandeau,0)
      [rounded corners=1.08cm] -- ++(0,\h@Bandeau) [sharp corners]
      [sharp corners]--++(\l@Bandeau,0)--cycle ;
    \end{scope}
    \node [xshift=-\x@logo,yshift=\y@logo]
    at (current page.south east) {\logoapmep{\scale@logo}} ;
    \node [white,above,xshift=-0.1cm,yshift=7cm,rotate=90] at
    (current page.south east){\bera@Sans #1} ;
    \node [white, above,xshift=-\xpos@page,yshift=3cm] at
    (current page.south east) {\bera@Sans\large\thepage} ;
  \end{tikzpicture}
}

\newcommand{\olympBandeauD}[1]
{
  \begin{tikzpicture}[remember picture,overlay]
    \begin{scope}
      \fill [colLogoFort] (current page.south west) --++(\l@Bandeau,0)
      [rounded corners=1.08cm] -- ++(0,\h@Bandeau) [sharp corners]
      [sharp corners]--++(-\l@Bandeau,0)--cycle ;
    \end{scope}
    \node [xshift=\x@logo,yshift=\y@logo]
    at (current page.south west) {\logoapmep{\scale@logo}} ;
    \node [white,above,xshift=\xpos@Ecriture,yshift=7cm,rotate=90] at
    (current page.south west){\bera@Sans #1} ;
    \node [white, above,xshift=\xpos@page,yshift=3cm] at
    (current page.south west) {\bera@Sans\large\thepage} ;
  \end{tikzpicture}
}

\newcommand{\@annee}{}
\newcommand{\annee}[1]{\renewcommand{\@annee}{#1}}

\pagestyle{fancy}
\renewcommand{\headrule}{\null}
\let \ps@plain=\ps@empty
\renewcommand{\ps@plain}{\fancyfoot[LE]{\olympBandeauD{Olympiades \@annee}}}
\fancyhead{}
\fancyfoot{}

%\fancyhead[LE]{}%
%\fancyhead[RO]{}%
\fancyfoot[LE]{\olympBandeauD{Olympiades \@annee}}%
\fancyfoot[RO]{\olympBandeauG{Olympiades \@annee}}%


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Environnements personnels
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Enoncés et Corrigé -> answers et mdframed
\Newassociation{Corrige}{CORRIGE}{Cor} %
% Nécessite un Opensolutionfile{Cor}[fichier] quelque part
% et un closesolutionfile{cor}
\newcommand{\carreEntoure}[1]%
{%
  \begin{tikzpicture}%
    \draw[#1](0,0)--(1in,0)--(1in,1in)--(0,1in)--cycle ;%
    \filldraw[#1](0.2in,0.2in)--(0.8in,0.2in)--(0.8in,0.8in)--(0.2in,0.8in)--cycle;%
  \end{tikzpicture}%
}%
\newcommand{\carreEntoureInverse}[1]%
{%
  \begin{tikzpicture}%
    \filldraw[#1](0,0)--(1in,0)--(1in,1in)--(0,1in)--cycle ;%
    \filldraw[white](0.2in,0.2in)--(0.8in,0.2in)--(0.8in,0.8in)--(0.2in,0.8in)--cycle;%
  \end{tikzpicture}%
}%

\newcounter{olymp@Exe}
\setcounter{olymp@Exe}{0}

\newcommand{\enonceTitre}[2][]%
{%
  % Mise en forme du titre des exercices.
  \begin{minipage}{\linewidth-1pt}%
    \pdfbookmark[1]{Exercice \theolymp@Exe}{exo\theolymp@Exe}
    \resizebox{1em}{!}{\carreEntoure{#2}} \textcolor{#2}{\large \bfseries \sffamily Exercice
      \theolymp@Exe. #1}%
  \end{minipage}\par\leavevmode
  \raisebox{2pt}{\textcolor{#2}{\rule{\linewidth}{1.5pt}}}\par%
}%
% Fraction de la page occupé par les flottants;
% Par défaut 0.8
\renewcommand{\textfraction}{0.8}
% Voir latex compagnon p. 145
\newtheoremstyle{styleApmepOlymp}
{0.5\topsep}%Espace avant
{0.5\topsep}%Espace après
{\normalfont}% Style de la fonte
{0pt}% retrait supplémentaire
{\normalfont}% fonte titre, mais il faut mettre ici ce que l'on change
{}%ponctuation après le titre
{1pt}%Comportement après le titre
{}
\theoremstyle{styleApmepOlymp}
\newtheorem*{olymp@Enonce}{}

%\newcounter{bidon}
%\newtcbtheorem{Enonce}{\pdfbookmark[1]{Exercice \thetcb@cnt@Enonce}{exo\thetcb@cnt@Enonce}{}{}Exercice}
%{ fonttitle=\sffamily\bfseries\large,
%  coltitle=colLogo,
%  colbacktitle=white,
%  colframe=white,
%  colback=white,
%  boxsep=0pt,left=0pt,right=0pt,
%  titlerule=1pt,
%  titlerule style=colLogo,
%  fontupper=\refstepcounter{bidon},
%  breakable,
%}{}

\newenvironment{Enonce}[2][]
{%
  \refstepcounter{olymp@Exe}%
  \begin{olymp@Enonce}%
    \enonceTitre[#1]{colLogo}%
  }
  {
  \end{olymp@Enonce}
  \clearpage
}

\renewcommand{\CORRIGElabel}[1]
{%
  \noindent%
  \begin{minipage}{1.0\linewidth}%
    \pdfbookmark[1]{Corrigé de l'exercice #1}{cor#1}%
    \resizebox{1em}{!}{\carreEntoureInverse{colLogo!50}}
    \textcolor{colLogo!50}{\large\bfseries\sffamily
      Corrigé de l'exercice #1}\par
    \raisebox{\baselineskip-2pt}{\textcolor{colLogo!50}{\rule{\linewidth}{1.5pt}}}
  \end{minipage}\par
}%

\renewenvironment{CORRIGE}[1]%
{%
  \CORRIGElabel{#1}%
}%
{%
\par
}%

\def\coord{\@ifstar\@coordwithstar\@coordwithoutstar}
\def\@coordwithoutstar(#1)%
{%
  \newcount\oli@cptCoord%
  % on stocke la liste dans \tempA
  \def\oli@tempA{#1}
  % on mettra une coordonn\'ee
  \def\oli@tempB{}
  % on compte le nombre de virgule
  \StrCount{\oli@tempA}{,}[\oli@nbVirgule]%
  % on le stocke dans un compteur pour pouvoir le d\'ecr\'ementer
  \oli@cptCoord=\oli@nbVirgule
  \left(%
  \loop\ifnum\oli@cptCoord>0 %
  % ce qui il y a entre le d\'ebut et la premiere virgule
  \StrBefore[1]{\oli@tempA}{,}[\oli@tempB]
  % ce qui reste
  \StrBehind[1]{\oli@tempA}{,}[\oli@tempA]
  \IfDecimal{\oli@tempB}{\num{\oli@tempB}\,;\,}%
  {%
    \IfSubStr[1]{\oli@tempB}{i}{\num[output-complex-root=\mathrm{AA}]{oli@tempB}\,;\,}{\oli@tempB\,;\,}%
  }%
  \advance \oli@cptCoord by -1%
  \repeat%
  \IfDecimal{\oli@tempA}{\num{\oli@tempA}}{\oli@tempA}\right)
}%
\def\@coordwithstar(#1,#2)%
{%
  \begin{pmatrix}
    #1 \\
    #2
  \end{pmatrix}
}%

%%%%%%%%%%%%%
%En tête


% redéfinition des inf et sup
\renewcommand*{\leq}{\leqslant}
\renewcommand*{\geq}{\geqslant}
%% Ensemble de nombres
\newcommand*{\R}{\mathbb  R}
\newcommand*{\CC}{\mathbb {C}}
\newcommand*{\Q}{\mathbb Q}
\newcommand*{\N}{\mathbb N }
\newcommand*{\Z}{\mathbb Z}
\newcommand*{\EnsembleD}{\mathbb D}
\newcommand*{\K}{\mathbb{K}}
% repere
\newcommand*\orthoOIJ{\left(O\,;\,I\,;\,J\right)}

\newcommand*{\gras@col}[2]{\textbf{\color{#1} #2}}
\newcommand*{\grascol}[1]{\gras@col{colLogoTeinte}{#1}}
\newcommand*{\grascoll}[1]{\gras@col{colLogo}{#1}}
\newcommand*{\grascolll}[1]{\gras@col{colLogoFort}{#1}}
\newcommand*\abs[1]{\left | #1 \right|}
\setlength{\parindent}{0cm}

\newtcolorbox{olympAlert}[2][]
{%
  title=#2,%
  % espaces interieurs à la boîte
  left=2pt,%
  right=2pt,%
  top=2pt,%
  bottom=2pt,%
  before skip=0ex,%
  after skip=0pt,%
  noparskip,%
  % Pas de cercle aux coins
  arc = 5pt,%
  enhanced jigsaw,%
  breakable,%
  % couleur du trait et du texte
  boxrule = 1pt,
  colframe=colLogoFort,
  colback=colLogoTeinte!10,,
  coltext =colLogoFort,
  fonttitle=\sffamily,
  lefthand width=1.1ex,%
  sidebyside gap=2mm,%
  lower separated=false,%
  sidebyside align=top,%
  fontlower=\bfseries,%
  pad at break = 1mm,%
  break at = -\baselineskip/0pt,%
  halign = justify,%
  fontupper=\small,%
}

\newcommand{\olympEntete}[3]{Les candidats traitent deux
  exercices. Ceux de la série S traitent les exercices numéros 1
  (#1) et 2 (#2),

  les autres traitent les exercices numéros 1 (#1) et 3 (#3).
}

\newcommand\Partie[1]{\vspace*{1em plus 1pt minus 2pt}
  \textcolor{colLogo}{\Large\sffamily #1}\vspace*{0.5em plus 1pt minus 2pt}
}
% Paquet optionel si pas d'utilisation d'asyymptote
\RequirePackage[pdftex,final]{attachfile2}
\RequirePackage{embedfile}
\RequirePackage{asymptote}

\everymath{\displaystyle}
\RequirePackage{anyfontsize} %FP

\endinput
