%!TEX pdflatex

\documentclass[french,a4paper,11pt]{article}
\usepackage{babel}
\usepackage[margin=1.5cm]{geometry}
\usepackage[group-minimum-digits=4]{siunitx}
\usepackage[nominted]{ProfLycee}

\newtcblisting{codetex}[1][]{%
	colback=white,colframe=red!75!black,title={\small \faCode} Code \LaTeX,fonttitle=\sffamily\bfseries,left=3pt,right=3pt,top=2pt,bottom=2pt,#1,listing options={style=tcblatex,basicstyle=\footnotesize\ttfamily,tabsize=2}}

\defKV[boiteamoustaches]{%
	parametres=\def\BaMListe{#1},%
	couleur=\def\BaMCouleur{#1},%
	elevation=\def\BaMElevation{#1},%
	hauteur=\def\BaMHauteur{#1},%
	moyenne=\def\BaMMoyenne{#1},%
	epaisseur=\def\BaMEpaisseur{#1},%
	remplir=\def\BaMRemplissage{#1}
}

\setKVdefault[boiteamoustaches]{%
	couleur=black,%
	elevation=1,%
	hauteur=1,%
	affmoyenne=false,%
	epaisseur=thick,%
	pointilles=false,%
	valeurs=false,%
	remplir=white
}

\defKV[boiteamoustachesaxe]{%
	min=\def\BaMAxeMin{#1},%
	max=\def\BaMAxeMax{#1},%
	elargir=\def\BaMAxeElarg{#1},%
	epaisseur=\def\BaMAxeEpaisseur{#1},%
	valeurs=\def\BaMAxeValeurs{#1}
}

\setKVdefault[boiteamoustachesaxe]{%
	elargir=0.05,%
	epaisseur=thick,%
	affvaleurs=false
}

\newcommand\PLboitemoustaxe[1][]{
	\useKVdefault[boiteamoustachesaxe]
	\setKV[boiteamoustachesaxe]{#1}
	\def\BaMaxelargeur{\fpeval{\BaMAxeMax-\BaMAxeMin}}
	\def\BaMaxexmin{\fpeval{\BaMAxeMin-\BaMAxeElarg*\BaMaxelargeur}}
	\def\BaMaxexmax{\fpeval{\BaMAxeMax+\BaMAxeElarg*\BaMaxelargeur}}
	\draw[\BaMAxeEpaisseur,->] (\BaMaxexmin,0) -- (\BaMaxexmax,0) ;
	\ifboolKV[boiteamoustachesaxe]{affvaleurs}
		{\foreach \x in \BaMAxeValeurs \draw[\BaMAxeEpaisseur] (\x,3pt)--(\x,-3pt) node[below=3pt] {\x} ;}
		{}
}

\newcommand\PLboitemoust[1][]{
	\useKVdefault[boiteamoustaches]
	\setKV[boiteamoustaches]{#1}
	\setsepchar[.]{/}%
	\readlist*\BaMListeparams\BaMListe%
	\itemtomacro\BaMListeparams[1]\BaMmin%
	\itemtomacro\BaMListeparams[2]\BaMqu%
	\itemtomacro\BaMListeparams[3]\BaMmed%
	\itemtomacro\BaMListeparams[4]\BaMqt%
	\itemtomacro\BaMListeparams[5]\BaMmax%
	\draw[draw,\BaMEpaisseur,\BaMCouleur,fill=\BaMRemplissage] ({\BaMqu},{\BaMElevation-0.5*\BaMHauteur}) rectangle ({\BaMqt},{\BaMElevation+0.5*\BaMHauteur}) ;
	\draw[\BaMEpaisseur,\BaMCouleur] (\BaMmin,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmin,{\BaMElevation+0.5*\BaMHauteur}) (\BaMmax,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmax,{\BaMElevation+0.5*\BaMHauteur}) (\BaMmed,{\BaMElevation-0.5*\BaMHauteur})--(\BaMmed,{\BaMElevation+0.5*\BaMHauteur});
	\draw[\BaMEpaisseur,\BaMCouleur] ({\BaMmin},{\BaMElevation})--({\BaMqu},{\BaMElevation}) ({\BaMqt},{\BaMElevation})--({\BaMmax},{\BaMElevation}) ;
	\ifboolKV[boiteamoustaches]{affmoyenne}
		{\filldraw[\BaMCouleur] ({\BaMMoyenne},{\BaMElevation}) circle[radius=2.5pt] ;}
		{}
	\ifboolKV[boiteamoustaches]{pointilles}
		{
			\draw[\BaMEpaisseur,densely dashed] (\BaMmin,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmin,0) ;
			\draw[\BaMEpaisseur,densely dashed] (\BaMqu,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMqu,0) ;
			\draw[\BaMEpaisseur,densely dashed] (\BaMmed,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmed,0) ;
			\draw[\BaMEpaisseur,densely dashed] (\BaMqt,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMqt,0) ;
			\draw[\BaMEpaisseur,densely dashed] (\BaMmax,{\BaMElevation-0.5*\BaMHauteur}) -- (\BaMmax,0) ;
			}
		{}
	\ifboolKV[boiteamoustaches]{valeurs}
		{
			\filldraw (\BaMmin,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmin}} ;
			\filldraw (\BaMqu,0) circle[radius=2pt] node[below=4pt] {\num{\BaMqu}} ;
			\filldraw (\BaMmed,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmed}} ;
			\filldraw (\BaMqt,0) circle[radius=2pt] node[below=4pt] {\num{\BaMqt}} ;
			\filldraw (\BaMmax,0) circle[radius=2pt] node[below=4pt] {\num{\BaMmax}} ;
			}
		{}
}

\begin{document}

\part*{Boîte à moustache}

\section{Simple}

\begin{codetex}[]
\begin{tikzpicture}
	\PLboitemoustaxe[min=10,max=20]
	\PLboitemoust[parametres={10/15/17/19/20},moyenne=18.5,couleur=blue,affmoyenne,pointilles,valeurs]
\end{tikzpicture}
\end{codetex}

\section{Multiple}

\begin{codetex}[]
\begin{tikzpicture}
	\PLboitemoustaxe[min=8,max=21,affvaleurs,valeurs={8,9,...,21}]
	\PLboitemoust[parametres={10/15/17/19/20},moyenne=18.5,couleur=blue]
	\PLboitemoust[elevation=2.5,parametres={8/10/11/12/15},couleur=red]
	\PLboitemoust[elevation=4,parametres={10/14/14.5/16/21},couleur=ForestGreen,remplir=ForestGreen!25]
\end{tikzpicture}
\end{codetex}

\end{document}