<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% !TeX TXS-program:compile = txs:///arara
% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')

\documentclass[french,11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\RequirePackage[upright]{fourier}
\RequirePackage{mathtools}
\RequirePackage{amsmath,amssymb,amstext}
\RequirePackage[scaled=0.875]{helvet}
\renewcommand\ttdefault{lmtt}
\RequirePackage[scaled=0.925]{cabin} % sf
%\usepackage{DejaVuSerif}
%\usepackage[scale=1.1]{inconsolata}
\usepackage[pastableur]{customenvs}
\usepackage{tabularx}
\usepackage{soul}
%\usepackage{codehigh}
%\usepackage{fontawesome5}
\usepackage{lipsum}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\lfoot{\sffamily\small [customenvs]}
\cfoot{\sffamily\small - \thepage{} -}
\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
\usepackage{hologo}
\providecommand\tikzlogo{Ti\textit{k}Z}
\providecommand\TeXLive{\TeX{}Live\xspace}
\providecommand\PSTricks{\textsf{PSTricks}\xspace}
\let\pstricks\PSTricks
\let\TikZ\tikzlogo

\usepackage{hyperref}
\urlstyle{same}
\hypersetup{pdfborder=0 0 0}
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}

\def\TPversion{0.40b}
\def\TPdate{30 mai 2025}
\usepackage{tcolorbox}
\tcbuselibrary{listingsutf8}
%\usepackage{eurosym}
\newtcblisting{DemoCode}[1]{%
	enhanced,width=0.95\linewidth,center,%
	bicolor,size=title,%
	colback=cyan!5!white,%
	colbacklower=cyan!1!white,%
	colframe=cyan!75!black,%
	listing options={%
		inputencoding=utf8,
		%literate={`E}{{â‚¬}}{1},
		breaklines=true,%
		breakatwhitespace=true,%
		style=tcblatex,basicstyle=\small\ttfamily,%
		tabsize=4,%
		commentstyle={\itshape\color{gray}},
		keywordstyle={\color{blue}},%
		classoffset=0,%
		keywords={usepackage,displaystyle,frac,infty,begin,end,lipsum,centering,par,baselineskip,item,bullet,int,color,NewDocumentCommand},%
		alsoletter={-},%
		keywordstyle={\color{blue}},%
		classoffset=1,%
		alsoletter={-},%
		morekeywords={center,justify,\LstDeuxNiv,\LstTroisNiv,\LstQuatreNiv,\NoticeDeuxNiv,\NoticeTroisNiv,\NoticeQuatreNiv,\DeuxNivBatterie,\TroisNivBatterie,\QuatreNivBatterie,\DeuxNivSmiley,\TroisNivSmiley,\QuatreNivSmiley,\vcenterfa,\faIcon,part,RenewDocumentCommand,IfBooleanTF},%
		keywordstyle={\color{violet}},%
		classoffset=2,%
		alsoletter={-},%
		morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences,\StyleEnvtExo,\StyleEnvtExoDefaut,\TitreExo,\ipsum,EnvSMS,\SMSrec,\SMSenv,BoiteSimple,\SujetTitreExo,\CircledNumber,\AffVignette,\BoiteArrondie,\ChangerDisplaySkip,\celcouleur,\celfusion,\lignetxt,\colonnetxt,\celnumbreak,\celtxt,\BandeauScore,\InsererImage,\tkzBannerTri,\tkzBannerTriAlt,\NiveauDiffExos,\tkzEtoiles,\tkzGrilleAuto,\tkzAutoGridLocal,\tkzAutoGridActivate,\tkzFlecheEvasee,PanneauAutoroute,\AfficheSoldes,\tbcmarker,\VilleDist,\RoueNiveaux,EnvRoueNiveaux,\PlacerIconeNiveau,\PlacerIconesNiveaux,\MiniCompteurNiveaux,\tkzspeedometer,AnnoterImage,\PlacerTxtSurImg,\pictoskills,\pictoskillsgreen,\pictoskillsorange,\pictoskillsred,\pictobullseye,\tkzpicto,\pictotraffic,\pictocalendar},%
		keywordstyle={\color{green!50!black}},%
		classoffset=3,%
		morekeywords={Largeur,Filets,EspacesCL,NbCols,Labels,Melange,PoliceLabels,EspaceLabels,Swap,Type,CoeffEspVert,EpTrait,Alea,LargeurNivs,Niveaux,NoticeNiveaux,Titre,PolTitre,PolNotice,PolComp,LigneSep,CouleurNotice,CouleurNiveaux,CouleurFond,Note,Notice,PoliceCateg,PoliceBloc,Couleurs,LargeurBloc,Echelle,NoirBlanc,Libelle,EpTrait,Police,Type,ComplementTitre,Titre,CodeDebut,Couleur,EchelleImage,Decoration,Trait,Avatar,AffAvatar,NoirBlanc,CouleurE,CouleurR,CouleurFond,Hauteur,Largeur,PoliceTxt,CouleurTitre,AlignH,bg,txt,bthick,bcol,raise,Type,EspH,Fond,Texte,Style,Dense,Avant,AvantS,Apres,ApresS,Global,align,width,Legende,CouleurFond,Hauteur,Ratio,AffLegende,Couleurs,EchelleSymboles,Symboles,vRemplir,vOffset,vCentrer,height,width,blockwidth,collight,colmedium,coldar,coltxt,fonttxt,swap,maincolor,logo,type,num,dispblock,customtype,Couleur,AlignV,Offset,NiveauMax,pasX,pasY,grilleauto,TailleFleche,Direction,Coeff,TypeFleche,Deplacement,LineCap,Epaisseur,CouleurCartouche,Fleches,CouleurFond,CouleurTitre,PoliceCartouche,TypeFleche,EspacementV,OffsetFleches,Dernier,PoliceEntete,PolicePrix,PoliceReduc,OffsetReduc,AgrandirReduc,Rayon,Police,ListeNiveaux,Marqueur,Pos,Echelle,Couleurs,Taille,custommulti,Noeud,Grille,SousGrille,CouleurGrille,Clip,col,hoffset,maincolor,height,colors,listcolors},%
		keywordstyle={\color{orange}}
	},%
	#1
}
\sethlcolor{lightgray!25}
\NewDocumentCommand\MontreCode{ m }{%
	\hl{\vphantom{\texttt{pf}}\texttt{#1}}%
}
\usepackage[auto,outline]{contour}

\usepackage{babel}

\begin{document}

\pagestyle{fancy}

\thispagestyle{empty}

\begin{center}
	\begin{minipage}{0.75\linewidth}
	\begin{tcolorbox}[colframe=yellow,colback=yellow!15]
		\begin{center}
			\renewcommand\arraystretch{1.25}
			\begin{tabular}{c}
				{\Huge \texttt{customenvs [fr]}}\\
				\\
				{\Large Quelques environnements classiques,} \\
				{\Large lÃ©gÃ¨rement modifiÃ©s, et basÃ©s} \\
				{\Large sur des environnements existants.} \\
			\end{tabular}
			\renewcommand\arraystretch{1}
			
			\medskip
			
			{\small \texttt{Version \TPversion{} -- \TPdate}}
		\end{center}
	\end{tcolorbox}
\end{minipage}
\end{center}

\vspace*{1mm}

\begin{center}
	\begin{tabular}{c}
	\texttt{CÃ©dric Pierquet}\\
	{\ttfamily c pierquet -- at -- outlook . fr}\\
	\texttt{\url{https://forge.apps.education.fr/pierquetcedric/packages-latex}}
\end{tabular}
\end{center}

\vspace*{5mm}

%\hrule
%
%\vspace*{2mm}
%
%{\centering Le nom du package vient de \textsf{ENVironnemenTS ALTernatifs}, avec le suffixe \textsf{FRanÃ§ais}.\par}
%
%\vspace*{2mm}
%
%\hrule
%
%\vspace*{1cm}

\hrule

\phantomsection

\hypertarget{matoc}{}

\tableofcontents

\vspace*{5mm}

\hrule

\pagebreak

\section{Historique}

\verb|v0.40a|~:~~~PictoCalendar (\textsf{customenvs-tikzpictos} \texttt{v0.1.2}) + AmÃ©liorations

\verb|v0.40a|~:~~~PictoTraffic (\textsf{customenvs-tikzpictos} \texttt{v0.1.1}) + AmÃ©liorations

\verb|v0.3.7|~:~~~Externalisation des pictogrammes dans un package auxiliaire, \textsf{customenvs-tikzpictos}

\verb|v0.3.6|~:~~~Ajout d'un pictogramme \textsf{cible/flÃ¨che}

\verb|v0.3.5|~:~~~Bugfix + pre-compatibilitÃ© \textsf{fa5/6}

\verb|v0.3.4|~:~~~Pictoskill + option pour le package \textsf{adjustbox}

\verb|v0.3.3|~:~~~Annoter une image

\verb|v0.3.2|~:~~~Version alternative de la banniÃ¨re \textsf{Tri}

\verb|v0.3.1|~:~~~Ajout des cases Ã&nbsp; cocher pour les \textsf{QCM}

\verb|v0.3.0|~:~~~CompatibilitÃ© accrue avec \textsf{beamer}

\verb|v0.2.7|~:~~~ClÃ© \texttt{[Melange]} pour les QCMs

\verb|v0.2.6|~:~~~Roue des compÃ©tences / speedometer

\verb|v0.2.5|~:~~~Correction du fonctionnement de \texttt{EnvtExo}

\verb|v0.2.4|~:~~~Petite boÃ®te type \textit{marker}

\verb|v0.2.3|~:~~~Panneaux autoroutiers + Affichettes de soldes

\verb|v0.2.2|~:~~~Ajout d'une commande pour des flÃ¨ches Ã©vasÃ©es, en \TikZ\

\verb|v0.2.1|~:~~~AmÃ©lioration de la gestion des Ã©toiles pour des niveaux de difficultÃ©s + Grille auto pour \TikZ\

\verb|v0.2.0|~:~~~Ã‰toiles pour des niveaux de difficultÃ©s (compatible avec \texttt{EnvtExo})

\verb|v0.1.9|~:~~~BanniÃ¨re de titre + Insertion d'images en remplissage vertical

\verb|v0.1.8|~:~~~Nutriscore

\verb|v0.1.7|~:~~~PossibilitÃ© de crÃ©er des vignettes \textsf{perso}

\verb|v0.1.6|~:~~~Patch \textsf{displayskip} + Patches \textsf{pas-tableur}

\verb|v0.1.5|~:~~~La librairie \texttt{babel} de \TikZ\ n'est plus chargÃ©e

\verb|v0.1.5|~:~~~Vignettes + NumÃ©ros encerclÃ©s + CrÃ©ation de boÃ®tes 'simples'

\verb|v0.1.4|~:~~~Commande pour du texte dans une boÃ®te arrondie, de hauteur 'figÃ©e' + 'Chat' SMS

\verb|v0.1.3|~:~~~Environnement/commande pour des exercices, avec personnalisation(s)

\verb|v0.1.2|~:~~~Crayon de compÃ©tences

\verb|v0.1.1|~:~~~Tableaux de compÃ©tences

\verb|v0.1.0|~:~~~Version initiale

\pagebreak

\section{Le package customenvs}

\subsection{IdÃ©e}

L'idÃ©e est de proposer des commandes ou environnements classiques avec quelques Ã©lÃ©ments de personnalisation (via des \textsf{clÃ©s} francisÃ©es), comme :

\begin{itemize}
	%\item modifier localement l'\textit{alignement vertical} d'Ã©lÃ©ments sans jambage ;
	\item \textit{centrer} avec gestion des espacements autour ;
	\item Ã©crire en \textit{multi-colonnes} avec gestion des espacements autour ;
	\item mettre en forme des rÃ©ponses Ã&nbsp; des \textit{QCM} ;
	\item crÃ©er une liste avec \textit{choix des items} (de maniÃ¨re alÃ©atoire ou par saisie directe) ;
	\item crÃ©er un tableau de \textit{compÃ©tences}.
\end{itemize}

\smallskip

L'idÃ©e globale est de proposer des environnements clÃ© en main, avec personnalisations \textit{explicites}, sans forcÃ©ment avoir besoin de \textit{se pencher sur le code}, mais il est Ã©vident qu'il existe d'autres solutions pour l'utilisateur qui souhaite rÃ©ellement contrÃ´ler son rendu.

\smallskip

Il est ici essentiellement question de gÃ©rer les espacements, donc on peut citer comme autres solutions possibles :

\begin{itemize}
	\item l'utilisation de \MontreCode{\textbackslash vspace} ou de \MontreCode{\textbackslash  setlength} ;
	\item le package \MontreCode{spacingtricks}.
\end{itemize}

\subsection{Chargement}

Le package se charge dans le prÃ©ambule, via \MontreCode{\textbackslash usepackage\{customenvs\}}.

Les packages chargÃ©s sont :

\begin{itemize}
	\item \MontreCode{xstring}, \MontreCode{simplekv}, \MontreCode{listofitems}, \MontreCode{randomlist} et \MontreCode{xintexpr} ;
	\item \MontreCode{enumitem} ;
	\item \MontreCode{multicol} ;
	\item \MontreCode{tabularray} ;
	\item \MontreCode{xcolor} ;
	\item \MontreCode{fontawesome} (en attendant une compatibilitÃ© avec la version \MontreCode{6}, via les options \MontreCode{[fa6] / [fa5fa6]} !);
	\item \MontreCode{tikz} avec les librairies :
	\begin{itemize}
		\item \MontreCode{decorations.pathmorphing,positioning,shapes.misc,calc,arrows,arrows.meta}.
	\end{itemize}
\end{itemize}

Ã€ noter que, pour des raisons de compatibilitÃ© (ou d'incompatibilitÃ©), les packages \MontreCode{enumitem}/\MontreCode{multicol}/\MontreCode{tabularray}/\MontreCode{xcolor}/\MontreCode{adjustbox}/\MontreCode{fontawesome5/6} peuvent ne pas Ãªtre chargÃ©s par \MontreCode{customenvs} (auxquels cas l'utilisateur devra les avoir chargÃ©s pour faire fonctionner certains environnements) via les options :

\begin{itemize}
	\item \MontreCode{$\mathtt{\langle}$beamer$\mathtt{\rangle}$} (pour assurer une compatibilitÃ© avec \textsf{beamer});
	\item \MontreCode{$\mathtt{\langle}$nonenum$\mathtt{\rangle}$} ;
	\item \MontreCode{$\mathtt{\langle}$nonmulticol$\mathtt{\rangle}$} ;
	\item \MontreCode{$\mathtt{\langle}$nontblr$\mathtt{\rangle}$} ;
	\item \MontreCode{$\mathtt{\langle}$nonxcolor$\mathtt{\rangle}$} ;
	\item \MontreCode{$\mathtt{\langle}$nonadjustbox$\mathtt{\rangle}$} ;
	\item \MontreCode{$\mathtt{\langle}$nonfa$\mathtt{\rangle}$}.
\end{itemize}

\begin{DemoCode}{listing only}
%chargement avec tous les packages
\usepackage{customenvs}

%chargement avec options(s) pour ne pas charger certains packages
\usepackage[option(s)]{customenvs}
\end{DemoCode}

\subsection{Sous-package customenvs-tikzpictos (v0.1.2)}

\MontreCode{customenvs} charge, pour \textit{ses} petits pictogrammes, le package \MontreCode{customenvs-tikzpictos}, qui est fourni avec.

L'idÃ©e est de pouvoir charger les petits pictogrammes de maniÃ¨re indÃ©pendante Ã&nbsp; \MontreCode{customenvs}.

\begin{DemoCode}{listing only}
\tkzpicto%
	[keys]
	&lt;tikz options&gt;
	{type=params}

%type := wifi/network/stars/speedo/bullseye/skills/pill/calendar
%params := nb/nblevels (sauf bullseye) or dzay/month (calendar)
%key height=len / auto (without depth) / dauto (with depth)
\end{DemoCode}

\begin{DemoCode}{text only}
\hfill\begin{tblr}{hlines,vlines,cells={font=\sffamily\Large}}
	Wifi &amp; \pictowifi[colors=purple/yellow]{0}|\pictowifi[colors=purple/yellow]{1}|\pictowifi[colors=purple/yellow]{2}|\pictowifi[colors=purple/yellow]{3}|\pictowifi[colors=purple/yellow]{4}\\
	Wifi (bars) &amp; \pictowifi[colors=purple/yellow,style=bar]{0}|\pictowifi[colors=purple/yellow,style=bar]{1}|\pictowifi[colors=purple/yellow,style=bar]{2}|\pictowifi[colors=purple/yellow,style=bar]{3}|\pictowifi[colors=purple/yellow,style=bar]{4}\\
	Network &amp; \pictonetwork[colors=teal/orange]{0}|\pictonetwork[colors=teal/orange]{1}|\pictonetwork[colors=teal/orange]{2}|\pictonetwork[colors=teal/orange]{3}|\pictonetwork[colors=teal/orange]{4}\\
	Stars &amp; \pictostars[colors=brown/cyan]{0}|\pictostars[colors=brown/cyan]{0.5}|\pictostars[colors=brown/cyan]{3}\\
	Speedometer &amp; \pictospeedometer[colors=violet/olive]{}|\pictospeedometer[colors=violet/olive]{0}|\pictospeedometer[colors=violet/olive]{0.5}|\pictospeedometer[colors=violet/olive]{5.5}|\pictospeedometer[colors=violet/olive]{6} \\
	BullsEye &amp; \pictobullseye[colors]|\pictobullseye[colors]&lt;rotate=90&gt;|\pictobullseye[colors]&lt;rotate=180&gt;|\pictobullseye[colors]&lt;rotate=-90&gt;\\
	Battery &amp; \pictobattery[barcolor=auto]{}|\pictobattery[barcolor=auto]{1}|\pictobattery[barcolor=auto]{2}|\pictobattery[barcolor=auto]{3}\\
	Battery (flip) &amp; \pictobattery[flip,barcolor=auto]{}|\pictobattery[flip,barcolor=auto]{1}|\pictobattery[flip,barcolor=auto]{2}|\pictobattery[flip,barcolor=auto]{3}\\
	Skills &amp; \pictoskills[colors={red}]{}|\pictoskills[colors={red}]{1}|\pictoskills[colors={red}]{2}|\pictoskills[colors={red}]{3}\\
	Pill &amp; \pictopill[colors=blue/red]{}|\pictopill[colors=blue/red]{1}|\pictopill[colors=blue/red]{3}\\
	TrafficLight &amp; \pictotraffic{}|\pictotraffic{1}|\pictotraffic{2}|\pictotraffic{3}|\pictotraffic{123}|\pictotraffic{13}\\
	MiniCalendar &amp; \pictocalendar{15/aug.}|\pictocalendar[color=red]{30/dec.}|\pictocalendar[color=blue]{14/feb.}\\
\end{tblr}\hfill\null
\end{DemoCode}

\newpage

\section{PrÃ©sentation de rÃ©ponses Ã&nbsp; un QCM}

\subsection{Principe}

L'idÃ©e est de proposer une environnement prÃªt Ã&nbsp; l'emploi pour prÃ©senter, grÃ¢ce Ã&nbsp; \MontreCode{tabularray} (et non pas Ã&nbsp; \MontreCode{multicols}) qui est donc Ã&nbsp; charger, les rÃ©ponses Ã&nbsp; une question type QCM, donnÃ©es en colonnes.

\smallskip

Il est possible de spÃ©cifier 2, 3 ou 4 rÃ©ponses, et dans le cas de 4 rÃ©ponses il est possible de spÃ©cifier 1 ou 2 colonnes.

\begin{DemoCode}{listing only}
\ReponsesQCM[options]{liste reponses}&lt;options tblr&gt;
\end{DemoCode}

Les \MontreCode{options} disponibles sont :

\begin{itemize}
	\item \MontreCode{Largeur} pour spÃ©cifier la largeur du tableau, \MontreCode{0.99\textbackslash linewidth} par dÃ©faut ;
	\item \MontreCode{Filets} pour afficher les filets, \MontreCode{false} par dÃ©faut ;
	\item \MontreCode{EspacesCL} pour les espacements Colonnes/Lignes, sous la forme \MontreCode{col/lign} ou \MontreCode{globale}, et valant \MontreCode{6pt/2pt} par dÃ©faut ;
	\item \MontreCode{NbCols} pour forcer le passage Ã&nbsp; 2 colonnes dans le cas de 4 rÃ©ponses, \MontreCode{4} par dÃ©faut ;
	\item \MontreCode{Labels} pour spÃ©cifier le formatage des labels, avec \MontreCode{a.} par dÃ©faut ;
	\begin{itemize}
		\item pouvoir valoir \MontreCode{box} pour mettre des cases Ã&nbsp; cocher ;
		\item pouvant faire intervenir \MontreCode{a} pour \textit{numÃ©roter} \MontreCode{a b c d} ;
		\item pouvant faire intervenir \MontreCode{A} pour \textit{numÃ©roter} \MontreCode{A B C D} ;
		\item pouvant faire intervenir \MontreCode{1} pour \textit{numÃ©roter} \MontreCode{1 2 3 4} ;
	\end{itemize}
	\item \MontreCode{PoliceLabels} pour la police des labels, \MontreCode{\textbackslash bfseries} par dÃ©faut ;
	\item \MontreCode{EspaceLabels} pour gÃ©rer l'espacement entre le label et la rÃ©ponse, et valant \MontreCode{\textbackslash kern5pt} par dÃ©faut ;
	\item \MontreCode{Melange} pour mÃ©langer les rÃ©ponses, et valant \MontreCode{false} par dÃ©faut ;
	\item \MontreCode{Swap} pour afficher les (4) rÃ©ponses en mode 2 colonnes sous la forme ACBD ou ABCD, et valant \MontreCode{false} par dÃ©faut.
\end{itemize}

La liste des rÃ©ponses est Ã&nbsp; donner sous la forme \MontreCode{answA Â§ answB Â§ ...}

Les options spÃ©cifiques, optionnelles et entre \MontreCode{&lt;...&gt;}, sont pour le dernier argument.

\subsection{Exemples}

\begin{DemoCode}{}
%sortie par defaut
\ReponsesQCM{RÃ©ponse A Â§ RÃ©ponse B Â§ RÃ©ponse C Â§ RÃ©ponse D}
\end{DemoCode}

\begin{DemoCode}{}
\ReponsesQCM[Filets]{RÃ©ponse A Â§ RÃ©ponse B Â§ RÃ©ponse C Â§ RÃ©ponse D}

\ReponsesQCM[Filets,Melange]{RÃ©ponse A1 Â§ RÃ©ponse B1 Â§ RÃ©ponse C1 Â§ RÃ©ponse D1}

\ReponsesQCM[Filets,Melange]{RÃ©ponse A2 Â§ RÃ©ponse B2 Â§ RÃ©ponse C2 Â§ RÃ©ponse D2}
\end{DemoCode}

\begin{DemoCode}{}
\ReponsesQCM[Filets,Labels=(1.),EspaceLabels={~~~}]{RÃ©ponse A Â§ RÃ©ponse B Â§ RÃ©ponse C}
\end{DemoCode}

\begin{DemoCode}{}
\ReponsesQCM[Labels={A.},PoliceLabels={\color{red}\bfseries}]%
    {RÃ©ponse A Â§ RÃ©ponse B Â§ RÃ©ponse C Â§ RÃ©ponse D}
\end{DemoCode}

\begin{DemoCode}{}
\ReponsesQCM[NbCols=4,Labels={A.},PoliceLabels={\color{red}\bfseries}]%
    {RÃ©ponse A Â§ RÃ©ponse B Â§ RÃ©ponse C Â§ RÃ©ponse D}
\end{DemoCode}

\begin{DemoCode}{}
\ReponsesQCM[NbCols=2,Labels={A.},PoliceLabels={\color{red}\bfseries}]%
    {RÃ©ponse A Â§ RÃ©ponse B Â§ RÃ©ponse C Â§ RÃ©ponse D}
\end{DemoCode}

\begin{DemoCode}{}
\ReponsesQCM[NbCols=2,Swap,Labels={A.},PoliceLabels={\color{red}\bfseries}]%
    {RÃ©ponse A Â§ RÃ©ponse B Â§ RÃ©ponse C Â§ RÃ©ponse D}
\end{DemoCode}

\begin{DemoCode}{}
% la case Ã&nbsp; cochoer est \def\ReponsesQCMbox{\raisebox{-0.2ex}{\faSquare[regular]}}
\ReponsesQCM[Filets,NbCols=2,EspacesCL=6pt/10pt,Labels=box]%
    {RÃ©ponse A Â§ RÃ©ponse B Â§ RÃ©ponse C Â§ RÃ©ponse D}
\end{DemoCode}

\begin{DemoCode}{}
\ReponsesQCM[Largeur=10cm,NbCols=2,Filets]%
    {$\displaystyle\frac1x$ Â§ $1+\displaystyle\frac1x$ Â§ $-2x^2+5$ Â§ $-\infty$}
    &lt;rows={2cm}&gt;
\end{DemoCode}

\pagebreak

\section{Environnement Centrage}

\subsection{Principe}

L'idÃ©e est de proposer un environnement, basÃ© sur \MontreCode{center}, avec une gestion plus fine des espacements avant et aprÃ¨s.

Le fait est qu'un environnement \MontreCode{center} gÃ©nÃ¨re des espacements (parfois) un peu trop grands autour (on peut Ã©galement utiliser \MontreCode{\textbackslash centering} ou \MontreCode{\textbackslash centered} du package \MontreCode{spacingtricks}), et donc il s'agit ici de garder l'architecture \textit{environnement} et proposant des solutions pour modifier les espacements.

\begin{DemoCode}{listing only}
\begin{Centrage}[options]
    %corps
\end{Centrage}
\end{DemoCode}

Les \MontreCode{options} disponibles sont :

\begin{itemize}
	\item \MontreCode{Avant} pour spÃ©cifier l'espacement avant l'environnement, \MontreCode{0.33\textbackslash baselineskip} par dÃ©faut ;
	\item \MontreCode{Apres} pour spÃ©cifier l'espacement aprÃ¨s l'environnement, \MontreCode{0.33\textbackslash baselineskip} par dÃ©faut.
\end{itemize}

Ã€ noter que les espacements peuvent Ãªtre donnÃ©s de maniÃ¨re absolue, ou via des dimensions existantes.

\subsection{Exemples}

\begin{DemoCode}{}
%environnement center, par dÃ©faut
\lipsum[1][1-3]

\begin{center}
    \lipsum[1][1]
\end{center}

\lipsum[1][1-2]
\end{DemoCode}

\begin{DemoCode}{}
%centering
\lipsum[1][1-3]\par

{\centering\lipsum[1][1]\par}

\lipsum[1][1-2]
\end{DemoCode}

\begin{DemoCode}{}
%environnement Centrage, par dÃ©faut
\lipsum[1][1-3]

\begin{Centrage}
    \lipsum[1][1]
\end{Centrage}

\lipsum[1][1-2]
\end{DemoCode}

\begin{DemoCode}{}
%environnement Centrage, personnalisÃ©
\lipsum[1][1-3]

\begin{Centrage}[Avant=0pt,Apres=0pt]
    \lipsum[1][1]
\end{Centrage}

\lipsum[1][1-2]
\end{DemoCode}

\begin{DemoCode}{}
%environnement Centrage, avec des listes
\lipsum[2][3]

\begin{itemize}
    \item \lipsum[1][1]
    \item \lipsum[1][2]
\end{itemize}

\begin{Centrage}[Avant=-0.25\baselineskip]
    \lipsum[1][1]
\end{Centrage}

\lipsum[1][1-2]
\end{DemoCode}

\pagebreak

\section{Environnement multi-colonnes}

\subsection{Principe}

L'idÃ©e est de proposer un environnement basÃ© sur \MontreCode{multicols} (donc le package \MontreCode{multicol} est Ã&nbsp; charger), pour lequel les espacements avant et aprÃ¨s peuvent Ãªtre personnalisÃ©s.

C'est la longueur \MontreCode{\textbackslash multicolsep}, qui vaut \MontreCode{12pt plus 4pt minus 3pt} par dÃ©faut, qui gÃ¨re ces espacements.

\smallskip

L'idÃ©e est donc de proposer une environnement \textit{simplifiÃ©} intÃ©grant une modification de cette longueur. Il sera Ã©galement possible de crÃ©er automatiquement un environnement multi-colonnes combinÃ© avec une liste d'Ã©numÃ©ration (avec \MontreCode{enumitem} chargÃ©, par exemple) !

De plus, si le multi-colonnes est destinÃ© Ã&nbsp; accueillir une liste, les items seront correctement alignÃ©s avec une liste sans multi-colonnes.

\begin{DemoCode}{listing only}
\begin{MultiCols}[options](nbcols)&lt;options enumitem&gt;!options beamer!
    %corps
\end{MutiCols}
\end{DemoCode}

Les \MontreCode{options} disponibles sont :

\begin{itemize}
	\item \MontreCode{Type} pour spÃ©cifier le type d'environnement qui sera inclus en multi-colonnes, et valant \MontreCode{texte} par dÃ©faut ;
	
	\hfill{}Ã&nbsp; choisir parmi \MontreCode{texte / enum / item}
	\item \MontreCode{CoeffEspVert} pour spÃ©cifier le coefficient Ã&nbsp; appliquer Ã&nbsp; la longueur par dÃ©faut, et valant \MontreCode{0.5} par dÃ©faut ;
	
	\hfill{}Ã&nbsp; choisir parmi \MontreCode{0 / 0.25 / 0.33 / 0.5 / 0.66 / 0.75 / 1 / 1.25}
	\item \MontreCode{EpTrait} pour l'Ã©paisseur Ã©ventuelle du trait de sÃ©paration, et valant \MontreCode{0pt} par dÃ©faut.
\end{itemize}

Le nombre de colonnes, obligatoire, est Ã&nbsp; donner entre \MontreCode{(...)}.

L'argument optionnel et entre \MontreCode{&lt;...&gt;} est passÃ© Ã&nbsp; l'environnement \MontreCode{enumitem} ou \MontreCode{itemize} si spÃ©cifiÃ©.

Le dernier argument, entre \MontreCode{!...!}, permet de spÃ©cifier des options pour l'environnement \MontreCode{enumitem} avec \MontreCode{beamer}.

\subsection{Exemples}

\begin{DemoCode}{}
%par dÃ©faut
\lipsum[1][1-2]

\begin{MultiCols}(2)
    \lipsum[2]
\end{MultiCols}

\lipsum[1][3-4]
\end{DemoCode}

\begin{DemoCode}{}
%espacement rÃ©duit + filet
\lipsum[1][1-2]

\begin{MultiCols}[CoeffEspVert=0.25,EpTrait=1pt](3)
    \lipsum[2]
\end{MultiCols}

\lipsum[1][3-4]
\end{DemoCode}

\begin{DemoCode}{}
%type enumitem
\begin{enumerate}
    \item \lipsum[1][1-2]
    \begin{MultiCols}[Type=enum](4)
        \item bla
        \item bla
        \item bla
        \item bla
    \end{MultiCols}
    \item \lipsum[1][3-4]
    \begin{MultiCols}[Type=item](3)&lt;label=$\bullet$&gt;
        \item bla
        \item bla
        \item bla
    \end{MultiCols}
\end{enumerate}

\lipsum[3][1]
\end{DemoCode}

\pagebreak

\section{Ã‰numÃ©ration avec choix des items, parmi une liste}

\subsection{Principe et fonctionnement}

L'idÃ©e est ici de :

\begin{itemize}
	\item crÃ©er une liste d'items qui servira de base pour le(s) choix ;
	\item afficher la liste avec choix des items, de maniÃ¨re alÃ©atoire ou par items choisis
\end{itemize}

Ã€ noter que l'environnement \MontreCode{MultiCols} du package peut Ãªtre utilisÃ© comme environnement de listes !

\begin{DemoCode}{listing only}
\CreerListeItems{liste}{macro}{nomliste}
\end{DemoCode}

\begin{DemoCode}{listing only}
\ListeChoixItems[clÃ©s]{macro}{nomliste}(numÃ©ros)&lt;options enumitem&gt;!options beamer!
\end{DemoCode}

Les \MontreCode{clÃ©s} disponibles sont :

\begin{itemize}
	\item \MontreCode{Type} pour spÃ©cifier le type d'environnement, et valant \MontreCode{enum} par dÃ©faut ;
	
	\hfill{}Ã&nbsp; choisir parmi \MontreCode{enum} \MontreCode{item} ou \MontreCode{MultiCols/Type/NbCols}
	\item \MontreCode{Alea} pour forcer un affichage alÃ©atoire, \MontreCode{false} par dÃ©faut.
\end{itemize}

Le deuxiÃ¨me argument, obligatoire et entre \MontreCode{\{...\}} est la macro crÃ©Ã©e prÃ©cÃ©demment.

Le troisiÃ¨me argument, obligatoire et entre \MontreCode{\{...\}} est le nom de la liste crÃ©Ã©e prÃ©cÃ©demment.

Le quatriÃ¨me argument, obligatoire et entre \MontreCode{(...)} permet de spÃ©cifier :

\begin{itemize}
	\item le nombre d'items Ã&nbsp; afficher en mode \MontreCode{Alea=true} ;
	\item les items Ã&nbsp; afficher, sous la forme \MontreCode{num1,num2,...}.
\end{itemize}

L'avant-dernier argument, optionnel et entre \MontreCode{&lt;...&gt;} correspond Ã&nbsp; des options spÃ©cifiques Ã&nbsp; passer Ã&nbsp; l'environnement de liste \MontreCode{enumitem} crÃ©Ã©.

Le dernier argument, entre \MontreCode{!...!}, permet de spÃ©cifier des options pour l'environnement \MontreCode{enumitem} avec \MontreCode{beamer}.

\medskip

Ã€ noter que des contrÃ´les sont effectuÃ©s lors de l'appel aux macros pour :

\begin{itemize}
	\item vÃ©rifier que la liste n'existe pas dÃ©jÃ&nbsp; (pour la macro de crÃ©ation) ;
	\item vÃ©rifier que la liste existe dÃ©jÃ&nbsp; (pour la macro d'affichage des items).
\end{itemize}
\subsection{Exemples}

\begin{DemoCode}{listing only}
%crÃ©ation de la liste ListeItems, avec la macro \malisteditems
\CreerListeItems%
    {RÃ©ponse A,RÃ©ponse B,RÃ©ponse C,RÃ©ponse D,RÃ©ponse E,RÃ©ponse F,RÃ©ponse G,RÃ©ponse H}%
    {\malisteditems}{ListeItems}
\end{DemoCode}

\CreerListeItems{RÃ©ponse A,RÃ©ponse B,RÃ©ponse C,RÃ©ponse D,RÃ©ponse E,RÃ©ponse F,RÃ©ponse G,RÃ©ponse H}{\malisteditems}{ListeItems}

\begin{DemoCode}{}
%affichage d'items alÃ©atoires
\ListeChoixItems[Alea]{\malisteditems}{ListeItems}(5)
\end{DemoCode}

\begin{DemoCode}{}
%affichage de certains items
\ListeChoixItems{\malisteditems}{ListeItems}(1,4,3,8,2)
\end{DemoCode}

\begin{DemoCode}{listing only}
%crÃ©ation de la liste ListeItemsB, avec la macro \malisteditemsb
\CreerListeItems%
    {{$\int_0^1 x^2 dx$},{$\int_0^1 x^3 dx$},{$\int_0^1 x^4 dx$},...}%
    {\malisteditemsb}{ListeItemsB}
\end{DemoCode}

\CreerListeItems{{$\int_0^1 x^2 dx$},{$\int_0^1 x^3 dx$},{$\int_0^1 x^4 dx$},{$\int_0^1 x^5 dx$},{$\int_0^1 x^6 dx$},{$\int_0^1 x^7 dx$},{$\int_0^1 x^8 dx$}}{\malisteditemsb}{ListeItemsB}

\begin{DemoCode}{}
%affichage d'items alÃ©atoires, via MultiCols
\ListeChoixItems[Alea,Type={MultiCols/enum/2}]{\malisteditemsb}{ListeItemsB}(4)
\end{DemoCode}

\begin{DemoCode}{}
%affichage de certains items
\ListeChoixItems[Type=item]{\malisteditemsb}{ListeItemsB}(7,2,1,5,3)&lt;label=$\bullet$&gt;
\end{DemoCode}

\pagebreak

\section{Tableau de compÃ©tences}

\subsection{Principe et fonctionnement}

L'idÃ©e est de proposer un environnement pour crÃ©er un tableau de compÃ©tences, via 2/3/4 niveaux :

\begin{itemize}
	\item basÃ© sur \MontreCode{tblr}, qui doit donc Ãªtre chargÃ© (par dÃ©faut il l'est) ;
	\item basÃ© sur \MontreCode{xcolor}, qui doit donc Ãªtre chargÃ© (par dÃ©faut il l'est) ;
	\item avec personnalisations possibles.
\end{itemize}

Si \MontreCode{xcolor} est dÃ©jÃ&nbsp; chargÃ©, avec des options particuliÃ¨res, le package peut ne pas le charger, grÃ¢ce Ã&nbsp; l'option \MontreCode{nonxcolor}.

\begin{DemoCode}{listing only}
\TableauCompetences[clÃ©s]{listecompÃ©tences}
\end{DemoCode}

\begin{DemoCode}{}
\TableauCompetences{CompÃ©tence A Â§ CompÃ©tence B}
\end{DemoCode}

\subsection{Ã‰lÃ©ments prÃ©dÃ©finis}

Pour simplifier la saisie de certains paramÃ¨tres, certaines macros ont Ã©tÃ© dÃ©finies en interne, et pourront Ãªtre utilisÃ©es, ou redÃ©finies si besoin.

\begin{DemoCode}{listing only}
%patch fa vcenter
\NewDocumentCommand{\vcenterfa}{ O{} m }{$\vcenter{\hbox{\faIcon[#1]{#2}}}$}
%labelnote
\def\LabelNoteComp{Note}
%listeniveaux
\def\LstDeuxNiv{NA Â§ A}
\def\LstTroisNiv{NA Â§ ECA Â§ A}
\def\LstQuatreNiv{NA Â§ PA Â§ ECA Â§ A}
%noticeniveaux
\def\NoticeDeuxNiv{Non acquis Â§ Acquis}
\def\NoticeTroisNiv{Non acquis Â§ En cours d'acquis. Â§ Acquis}
\def\NoticeQuatreNiv{Non acquis Â§ Part. acquis Â§ En cours d'acquis. Â§ Acquis}
\end{DemoCode}

\begin{DemoCode}{text only}
Niveaux par \og batterie \fg :

\MontreCode{\textbackslash DeuxNivBatterie}   : \DeuxNivBatterie\\
\MontreCode{\textbackslash TroisNivBatterie}  : \TroisNivBatterie \\
\MontreCode{\textbackslash QuatreNivBatterie} : \QuatreNivBatterie\\

Niveaux par \og smiley \fg :

\MontreCode{\textbackslash DeuxNivSmiley}     : \DeuxNivSmiley\\
\MontreCode{\textbackslash TroisNivSmiley}    : \TroisNivSmiley\\
\MontreCode{\textbackslash QuatreNivSmiley}   : \QuatreNivSmiley
\end{DemoCode}

\pagebreak

Les \MontreCode{clÃ©s} disponibles sont :

\begin{itemize}
	\item \MontreCode{Largeur} : largeur globale du tableau ; \MontreCode{0.95\textbackslash linewidth} par dÃ©faut
	\item \MontreCode{LargeurNivs} : largeur des colonnes Niv + Note (sÃ©parÃ©es par \MontreCode{Â§}) ; \MontreCode{0.75cm Â§ 1.25cm} par dÃ©faut
	\item \MontreCode{Niveaux} : liste des niveaux (sÃ©parÃ©s par \MontreCode{Â§}) ; \MontreCode{NA Â§ ECA Â§ A} par dÃ©faut
	\item \MontreCode{NoticeNiveaux} : notice des niveaux (sÃ©parÃ©s par \MontreCode{Â§}) ; \MontreCode{Non acquis Â§ En cours d'acquisition Â§ Acquis} par dÃ©faut ;
	\item \MontreCode{Titre} : titre du tableau ; \MontreCode{DS01} par dÃ©faut
	\item \MontreCode{PolTitre} : police de la 1\up{ere} ligne ; \MontreCode{\textbackslash small\textbackslash sffamily\textbackslash bfseries} par dÃ©faut
	\item \MontreCode{PolNotice} : police de la notice (derniÃ¨re ligne) ; \MontreCode{\textbackslash small\textbackslash sffamily\textbackslash bfseries} par dÃ©faut
	\item \MontreCode{PolComp} : police des lignes des compÃ©tences ; \MontreCode{\textbackslash small\textbackslash sffamily} par dÃ©faut
	\item \MontreCode{LigneSep} : sÃ©paration entre les lignes ; \MontreCode{2pt} par dÃ©faut
	\item \MontreCode{CouleurNotice} : couleur de la notice ; \MontreCode{black} par dÃ©faut
	\item \MontreCode{CouleurNiveaux} : couleur de la premiÃ¨re ligne ; \MontreCode{black} par dÃ©faut
	\item \MontreCode{CouleurFond} : fond de la premiÃ¨re ligne; \MontreCode{lightgray!25} par dÃ©faut
	\item \MontreCode{Note} : boolÃ©en pour afficher la colonne note ; \MontreCode{true} par dÃ©faut
	\item \MontreCode{Notice} : boolÃ©en pour afficher la ligne notice; \MontreCode{true} par dÃ©faut.
\end{itemize}

L'argument, obligatoire et entre \MontreCode{\{...\}} est la liste des compÃ©tences, sous la forme \MontreCode{Comp A Â§ Comp B Â§ ...}.

Ã€ noter que les clÃ©s \MontreCode{Niveaux} et \MontreCode{NoticeNiveaux} doivent avoir le mÃªme nombre d'Ã©lÃ©ments.

\subsection{Exemples}

\begin{DemoCode}{}
%Note + Notice
\TableauCompetences{Utiliser le compas Â§ Utiliser l'Ã©querre}
\end{DemoCode}

\begin{DemoCode}{}
%- Note + Notice
\TableauCompetences[Note=false]{Utiliser le compas Â§ Utiliser l'Ã©querre}
\end{DemoCode}

\begin{DemoCode}{}
%Note - Notice
\TableauCompetences[Notice=false]{Utiliser le compas Â§ Utiliser l'Ã©querre}
\end{DemoCode}

\begin{DemoCode}{}
%- Note - Notice
\TableauCompetences[Note=false,Notice=false]{Utiliser le compas Â§ Utiliser l'Ã©querre}
\end{DemoCode}

\begin{DemoCode}{}
%Personnalisations
\TableauCompetences[Titre=Eval nÂ°01,Niveaux=\TroisNivBatterie]{Utiliser le compas Â§ Utiliser l'Ã©querre}\par
\TableauCompetences[Titre={},Niveaux=\TroisNivSmiley]{Utiliser le compas Â§ Utiliser l'Ã©querre}\par
\TableauCompetences[Largeur=10cm,Notice=false,Titre={},Niveaux=\TroisNivSmiley]{Utiliser le compas Â§ Utiliser l'Ã©querre}\par
\end{DemoCode}

\begin{DemoCode}{}
%deux niveaux
\TableauCompetences[Niveaux=\LstDeuxNiv,NoticeNiveaux=\NoticeDeuxNiv]{Utiliser le compas Â§ Utiliser l'Ã©querre}\par
\TableauCompetences[Largeur=10cm,Titre={},Niveaux=\DeuxNivBatterie, NoticeNiveaux=\NoticeDeuxNiv]{Utiliser le compas Â§ Utiliser l'Ã©querre}
\end{DemoCode}

\pagebreak

\begin{DemoCode}{}
%quatre niveaux, personnalisation 'complÃ¨te'
\def\LabelNoteComp{ApprÃ©c.}
\TableauCompetences[%
	Largeur=14cm,%
	LargeurNivs={1cmÂ§3.5cm},%
	Niveaux={N0Â§N1Â§N2Â§N3},
	NoticeNiveaux={TrÃ¨s bofÂ§BofÂ§MoyenÂ§Bien},
	CouleurNotice=orange,%
	CouleurNiveaux=blue,%
	PolTitre=\large\ttfamily\itshape\bfseries
	]%
	{Utiliser la rÃ¨gle Â§ Utiliser le compas Â§ Utiliser l'Ã©querre}
\end{DemoCode}

\pagebreak

\section{Crayon de compÃ©tences}

\subsection{Principe et fonctionnement}

L'idÃ©e est de proposer un environnement pour crÃ©er un \textit{crayon} de compÃ©tences, basÃ© sur \MontreCode{TikZ}.

Le code (en licence CC-BY-SA 4.0) est largement inspirÃ© du fil :

\hfill{\footnotesize \url{https://tex.stackexchange.com/questions/504092/replicating-a-fancy-bordered-text-style-in-latex/504145#504145}}\hfill~

\begin{DemoCode}{listing only}
\CrayonDeCompetences[clÃ©s]&lt;options tikz&gt;{listecompÃ©tences}
\end{DemoCode}

\begin{DemoCode}{}
\CrayonDeCompetences{Chercher/CompÃ©tence 1\\CompÃ©tence 2,ModÃ©liser/CompÃ©tence 1\\CompÃ©tence 2}
\end{DemoCode}

La forme gÃ©nÃ©rale est fixÃ©e, et seuls quelques Ã©lÃ©ments de personnalisation(s) sont modifiables.

\subsection{La commande}

Les \MontreCode{clÃ©s} disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{PoliceCateg} : police des catÃ©gories ; \MontreCode{\textbackslash bfseries\textbackslash sffamily} par dÃ©faut
	\item \MontreCode{PoliceBloc} : police des compÃ©tences ; \MontreCode{\textbackslash small\textbackslash ttfamily} par dÃ©faut
	\item \MontreCode{Couleurs} : liste des couleurs de catÃ©gories, sous la forme
	
	\MontreCode{FondCatÃ©g1/PoliceCatÃ©g1,FondCatÃ©g2/PoliceCatÃ©g2,...}
	
	(Si \MontreCode{PolicCatÃ©g} est absent, \MontreCode{black} est utilisÃ© par dÃ©faut)
	\item \MontreCode{LargeurBloc} : largeur des blocs \textit{texte} ; \MontreCode{5cm} par dÃ©faut ;
	\item \MontreCode{Echelle} : Ã©chelle globale du schÃ©ma ; \MontreCode{1} par dÃ©faut
	\item \MontreCode{NoirBlanc} : boolÃ©en pour un affichage N\&amp;B. \MontreCode{false} par dÃ©faut.
\end{itemize}

L'argument optionnel, et entre \MontreCode{&lt;...&gt;}, permet de spÃ©cifier des options Ã&nbsp; la figure \MontreCode{TikZ} (comme une rotation, un alignement, etc)

\smallskip

L'argument, obligatoire et entre \MontreCode{\{...\}} est la liste des catÃ©gories/compÃ©tences, sous la forme

\MontreCode{CatÃ©g1/ListeCompÃ©tences1,CatÃ©g2/ListeCompÃ©tences2,...}.

\begin{DemoCode}{}
\CrayonDeCompetences[Largeur=3cm,Couleurs=teal/white]{%
	DS01/CompÃ©tence 1\\CompÃ©tence 2
}
\end{DemoCode}

\subsection{Exemples}

\begin{DemoCode}{}
%Sortie par dÃ©faut
\CrayonDeCompetences{%
	Chercher/CompÃ©tence 1\\CompÃ©tence 2,
	ModÃ©liser/CompÃ©tence 1\\CompÃ©tence 2,
	ReprÃ©senter/CompÃ©tence 1,
	Calculer/CompÃ©tence 1\\CompÃ©tence 2\\CompÃ©tence 3
}
\end{DemoCode}

\begin{DemoCode}{}
\CrayonDeCompetences[Echelle=0.75,LargeurBloc=3cm]%
	{Chercher/CompÃ©tence 1\\CompÃ©tence 2,
	ModÃ©liser/{CompÃ©tence 1\\CompÃ©tence 2},Raisonner/{CompÃ©tence 1\\CompÃ©tence 2}}
\end{DemoCode}

\begin{DemoCode}{}
\CrayonDeCompetences[Echelle=0.5]%
	{Chercher/CompÃ©tence 1\\CompÃ©tence 2,ModÃ©liser/{CompÃ©tence 1\\CompÃ©tence 2}}
\end{DemoCode}

\begin{DemoCode}{}
\CrayonDeCompetences[Echelle=0.75,NoirBlanc]&lt;rotate=90&gt;%
	{Chercher/CompÃ©tence 1\\CompÃ©tence 2,ModÃ©liser/{CompÃ©tence 1\\CompÃ©tence 2}}%
\hspace{1cm}
\CrayonDeCompetences[Echelle=0.75,NoirBlanc]&lt;rotate=-90&gt;%
	{Chercher/CompÃ©tence 1\\CompÃ©tence 2,ModÃ©liser/{CompÃ©tence 1\\CompÃ©tence 2}}
\hspace{1cm}
\CrayonDeCompetences[Echelle=0.75,NoirBlanc,Largeur,LargeurBloc=3cm]&lt;rotate=45&gt;%
	{Chercher/CompÃ©tence 1\\CompÃ©tence 2,ModÃ©liser/{CompÃ©tence 1\\CompÃ©tence 2}}
\end{DemoCode}

\pagebreak

\section{Roue de compÃ©tences}

\subsection{Principe et fonctionnement}

L'idÃ©e est de proposer une commande et un environnement pour crÃ©er une \textit{demie-roue} de compÃ©tences, basÃ© sur \MontreCode{TikZ}.

\begin{DemoCode}{listing only}
\RoueNiveaux[clÃ©s]&lt;options tikz&gt;{couleurs ou nb de niveaux}%
\end{DemoCode}

\begin{DemoCode}{listing only}
\begin{EnvRoueNiveaux}[clÃ©s]&lt;options tikz&gt;{couleurs ou nb de niveaux}%
	\PlacerIconesNiveaux[clÃ©s]{liste d'icÃ´nes}
\end{EnvRoueNiveaux}
\end{DemoCode}

\begin{DemoCode}{}
\RoueNiveaux{5}\hspace{5mm}
\RoueNiveaux{green!50,yellow!50,orange!50,red!50,brown!50}
\end{DemoCode}

\begin{DemoCode}{}
\begin{EnvRoueNiveaux}{4}
	\PlacerIconesNiveaux{\faPython,\faAdjust,\faAngellist,\faAmbulance}
\end{EnvRoueNiveaux}
\end{DemoCode}

\subsection{La commande et l'environnement}

Les \MontreCode{clÃ©s} (communes) disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{Rayon} : rayon de la roue ; \MontreCode{4cm} par dÃ©faut
	\item \MontreCode{Police} : police des Ã©ventuels labels ; \MontreCode{\textbackslash bfseries\textbackslash sffamily} par dÃ©faut
	\item \MontreCode{ListeNiveaux} : liste Ã©ventuelle des niveaux, sous la forme \MontreCode{Label1,Label2,...}
	\item \MontreCode{Marqueur} : position relative d'un Ã©ventuel marqueur.
\end{itemize}

L'argument optionnel, et entre \MontreCode{&lt;...&gt;}, permet de spÃ©cifier des options Ã&nbsp; la figure \MontreCode{TikZ} (comme une rotation, un alignement, etc)

\smallskip

L'argument, obligatoire et entre \MontreCode{\{...\}} est la liste des couleurs, ou le nombre de catÃ©gories pour une sortie en N\&amp;B.

\medskip

Pour l'environnement, la commande \MontreCode{\textbackslash PlacerIconesNiveaux} permet de placer des icÃ´nes en lieu et place des libellÃ©s. les clÃ©s disponibles sont :

\begin{itemize}
	\item \MontreCode{Pos} :  position (excentricitÃ©) des icÃ´nes ; \MontreCode{0.8} par dÃ©faut
	\item \MontreCode{Echelle} : Ã©chelle des icÃ´nes ; \MontreCode{2}.
\end{itemize}

\subsection{Exemples}

\begin{DemoCode}{}
\RoueNiveaux[%
	Marqueur=1.5,%
	Police=\scriptsize\bfseries\sffamily,%
	ListeNiveaux={LOW-MODERATE,NORMAL,HIGH,VERY HIGH,SEVERE,EXTREME,CATASTROPHIC}
	]%
	{yellow!50,orange!50,red!50,blue!50,teal!50,purple!50,violet!50}%
\end{DemoCode}

\begin{DemoCode}{}
\RoueNiveaux[%
	Rayon=3cm,%
	Marqueur=5.85,%
	Police=\scriptsize\bfseries\ttfamily,%
	ListeNiveaux={%
		Niv.1,Niv.2,Niv.3,Niv.4,Niv.5,Niv.6,Niv.7,Niv.8,Niv.9,Niv.10,Niv.11,Niv.12}%
	]%
	{12}
\end{DemoCode}

\begin{DemoCode}{}
\begin{EnvRoueNiveaux}[Rayon=5cm,Marqueur=5.85]%
		{yellow!50,orange!50,red!50,blue!50,teal!50,purple!50,violet!50}
	\PlacerIconesNiveaux[Echelle=3]%
		{\faPython,\faAdjust,\faAngellist,\faAmbulance,\faAdjust,\faBabyCarriage,\faBlender}
\end{EnvRoueNiveaux}
\end{DemoCode}

\pagebreak

\subsection{\og Speed-o-meter \fg}

En marge de la roue \textit{dÃ©taillÃ©e}, il est possible d'utiliser une version simplifiÃ©e, soit en mode en ligne, soit en mode autonome.

\smallskip

Ã€ noter qu'en mode en ligne, les dimensions sont calculÃ©es automatiquement en fonction de la police courante.

\begin{DemoCode}{listing only}
%Ã&nbsp; utiliser en mode en ligne
\MiniCompteurNiveaux[clÃ©s]&lt;options tikz&gt;{nb niveaux}
\end{DemoCode}

\begin{DemoCode}{listing only}
%mode autonome
\tkzspeedometer[clÃ©s]&lt;options tikz&gt;{nb niveaux}
\end{DemoCode}

Les \MontreCode{clÃ©s} (communes) disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{Couleurs} : couleur(s) (sous la forme \MontreCode{couleur} ou \MontreCode{couleurp/couleurs}) ; \MontreCode{black} par dÃ©faut
	\item \MontreCode{Marqueur} : position relative d'un Ã©ventuel marqueur ;
	\item \MontreCode{Taille} : taille du cadran (en mode autonome uniquement !)
\end{itemize}

L'argument optionnel, et entre \MontreCode{&lt;...&gt;}, permet de spÃ©cifier des options Ã&nbsp; la figure \MontreCode{TikZ} (comme une rotation, un alignement, etc)

\smallskip

L'argument, obligatoire et entre \MontreCode{\{...\}} est le nombre de niveaux.

\begin{DemoCode}{}
\scalebox{3}[3]{Petit compteur \MiniCompteurNiveaux[Couleurs=blue/red,Marqueur=4.33]{6} en ligne.}
\end{DemoCode}

\begin{DemoCode}{}
\tkzspeedometer[Marqueur=3.66]{5}
\end{DemoCode}

\pagebreak

\section{Barres de niveau}

\subsection{Principe et fonctionnement}

L'idÃ©e est de proposer une commande pour insÃ©rer un petit pictogramme prÃ©sentant des \textit{barres de niveau}, Ã&nbsp; la maniÃ¨re de certains livres scolaires.

\begin{DemoCode}{listing only}
\pictoskills[clÃ©s]{nb}
\end{DemoCode}

\begin{DemoCode}{}
\pictoskills{0}~\pictoskills{1}~\pictoskills{2}~\pictoskills{3}
\end{DemoCode}

\begin{DemoCode}{}
%raccourcis pour les pictos 'de base'
\pictoskillsgreen~\pictoskillsorange~\pictoskillsred
\end{DemoCode}

\subsection{La commande}

La commande permet d'insÃ©rer, \textit{en ligne}, le petit pictogramme Ã&nbsp; trois barres, avec une hauteur adaptÃ©e Ã&nbsp; la police courante (et de forme fixÃ©e).

Trois couleurs prÃ©dÃ©finies ont Ã©tÃ© dÃ©clarÃ©es, Ã&nbsp; savoir \MontreCode{skillgreen}, \MontreCode{skillorange} et \MontreCode{skillred}.

\smallskip

Les \MontreCode{clÃ©s} disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{colors} : couleur(s) principale(s) ; \MontreCode{gray/lightgray} par dÃ©faut
	\item \MontreCode{height} : hauteur, donnÃ©e en unitÃ© ou bien parmi \MontreCode{auto/dauto} du pictogramme ; \MontreCode{dauto} par dÃ©faut
	\item \MontreCode{hoffset} : \textit{vide} (en dÃ©cimal) entre les barres ; \MontreCode{0.05} par dÃ©faut
	\item \MontreCode{opacity} : opacitÃ© de la partie \textit{claire} ;  \MontreCode{0.5} par dÃ©faut.
\end{itemize}

L'argument obligatoire permet de prÃ©ciser le \textit{niveau}, c'est-Ã&nbsp;-dire le nombre barres pleines dans le pictogramme.

Ã€ noter que la version Ã©toilÃ©e permet d'insÃ©rer le pictogramme dans un environnement \TikZ\ existant.

\begin{DemoCode}{}
%hauteur personnalisÃ©e
\pictoskills[height=1cm]{1}

%hauteur automatique, basÃ©e sur la hauteur des majuscules sans jamabage
\begin{LARGE}
En ligne sans profondeur, on a \pictoskills[height=auto,colors=skillorange]{2} et \pictoskills[colors=skillred,hoffset=0.1,height=auto]{1}
\end{LARGE}

%hauteur automatique, avec intÃ©gration du jambage
\begin{Huge}
En ligne avec profondeur, on a \pictoskills[colors=skillorange]{2} et \pictoskills[colors=skillred,hoffset=0.025]{1}
\end{Huge}
\end{DemoCode}

\pagebreak

\section{PictoCible}

\subsection{Principe et fonctionnement}

L'idÃ©e est de proposer une commande pour insÃ©rer un petit pictogramme du type cible/flÃ¨che.

\begin{DemoCode}{listing only}
\pictobullseye[clÃ©s]&lt;options tikz&gt;
\end{DemoCode}

\begin{DemoCode}{}
\pictobullseye~\pictobullseye[height=auto]&lt;rotate=90&gt;
\end{DemoCode}

En mode \MontreCode{auto/dauto}, la hauteur du pictogramme est basÃ©e sur la hauteur de la lettre {\setlength\fboxsep{0.5pt}\fbox{H}} ou bien la hauteur totale des lettres {\setlength\fboxsep{0.5pt}\fbox{qH}} dans la police courante ! On peut modifier cette base via les macros suivantes.

\begin{DemoCode}{listing only}
\def\calcheightofchars{H}
\def\calctotheightofchars{qH}
\def\calcdepthofchars{qH}
\end{DemoCode}

\subsection{La commande}

La commande permet d'insÃ©rer, \textit{en ligne}, le petit pictogramme, avec une hauteur adaptÃ©e Ã&nbsp; la police courante (et de forme fixÃ©e). 

\smallskip

Les \MontreCode{clÃ©s} disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{color} : boolÃ©en pour colorier ; \MontreCode{false} par dÃ©faut
	\item \MontreCode{height} : hauteur, donnÃ©e en unitÃ© ou \MontreCode{auto/dauto} du pictogramme ; \MontreCode{dauto} par dÃ©faut
	\item \MontreCode{maincolor} : couleur principale, si diffÃ©rente du texte courant ; \MontreCode{vide} par dÃ©faut
	\item \MontreCode{listcolors} : liste Ã©ventuelle des couleurs des zones ; \MontreCode{yellow,red,blue!50!cyan} par dÃ©faut.
\end{itemize}

L'argument obligatoire permet de prÃ©ciser des options spÃ©cifiques Ã&nbsp; la figure \TikZ.

\begin{DemoCode}{}
Hauteurs fixÃ©es := {\tikz\draw (0,0) grid (1,2);}%
\pictobullseye[height=2cm,maincolor=red]%
\pictobullseye[height=1cm,maincolor=blue]&lt;rotate=90&gt;%
\pictobullseye[height=0.75cm,maincolor=gray]&lt;rotate=-90&gt;%
{\tikz\draw (0,0) grid (1,2);}
\end{DemoCode}

\begin{DemoCode}{}
Un essai q\pictobullseye\pictobullseye[height=auto,maincolor=red]H en ligne.
\end{DemoCode}

\begin{DemoCode}{}
{\Huge\sffamily\textcolor{orange}{Un essai q\pictobullseye\pictobullseye[height=auto]H en ligne.}}
\end{DemoCode}

\begin{DemoCode}{}
\scalebox{4}[4]{Tests en ligne\,\pictobullseye[height=auto,colors,listcolors={green!50,orange!50,red!50}] et \,\pictobullseye[colors,listcolors={red!50,yellow!50,teal!50}]!}
\end{DemoCode}

\begin{DemoCode}{}
\def\calcheightofchars{Ã‰}
\def\calctotheightofchars{()}
\def\calcdepthofchars{()}
\scalebox{3}[3]{En ligne\,\pictobullseye[height=auto,colors,listcolors={green!50,orange!50,red!50}]. Ã‰videmment !}

{\huge Et (\pictobullseye[colors,listcolors={red!50,yellow!50,teal!50}]&lt;rotate=90&gt;)!}
\end{DemoCode}

\pagebreak

\section{Bandeau de score}

\subsection{Principe et fonctionnement}

L'idÃ©e est de proposer une commande pour insÃ©rer un bandeau de score, type \textit{nutriscore}.

\smallskip

La majoritÃ© des Ã©lÃ©ments sont personnalisables.

\begin{DemoCode}{listing only}
\BandeauScore[clÃ©s]{numÃ©ro}
\end{DemoCode}

\begin{DemoCode}{}
%sortie par dÃ©faut
\BandeauScore{}
\end{DemoCode}

\subsection{La commande}

Les \MontreCode{clÃ©s} disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{Hauteur} : hauteur du bandeau (sans la lÃ©gende) ; \MontreCode{1} par dÃ©faut
	\item \MontreCode{Ratio} : rapport V/H des cases ; \MontreCode{0.6} par dÃ©faut
	\item \MontreCode{Symboles} : contenu des cases ; \MontreCode{A,B,C,D,E} par dÃ©faut
	\item \MontreCode{Legende} : texte de la lÃ©gende (qui sera en majuscule) ; \MontreCode{score} par dÃ©faut ;
	\item \MontreCode{Police} : Police globale ; \MontreCode{\textbackslash bfseries\textbackslash sffamily} par dÃ©faut
	\item \MontreCode{AffLegende} : boolÃ©en pour afficher la lÃ©gende ;  \MontreCode{false} par dÃ©faut ;
	\item \MontreCode{Couleurs} : couleurs des cases ;
	
	\hfill\MontreCode{couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5} par dÃ©faut ;
	\item \MontreCode{EchelleSymboles} : Ã©chelle(s) H/V des symboles ;  \MontreCode{1.25,1.65} par dÃ©faut ;
	\item \MontreCode{CouleurFond} : couleur du fond (pour la case choisie)  ;  \MontreCode{white} par dÃ©faut.
\end{itemize}

L'argument obligatoire correspond quant Ã&nbsp; lui au numÃ©ro de la case Ã&nbsp; mettre en valeur (\MontreCode{vide} par dÃ©faut).

\smallskip

Si la liste des couleurs ne permet pas de remplir toutes les cases, la couleur \MontreCode{lightgray} est utilisÃ©e.

\begin{DemoCode}{}
\BandeauScore[Legende=GÃ©omÃ©trie,Hauteur=2]{4}
\end{DemoCode}

\begin{DemoCode}{colbacklower=yellow!25}
%le fond de la boÃ®te a Ã©tÃ© dÃ©fini sur yellow!25
\def\lstcouleurs{couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5,purple}
\BandeauScore%
	[EchelleSymboles={1.33,2},Hauteur=2,AffLegende=false,
	Symboles={1,2,3,4,5,6},Couleurs=\lstcouleurs,
	CouleurFond=yellow!25]{1}
\end{DemoCode}

\pagebreak

\section{FenÃªtre type conversation instantanÃ©e}

\subsection{Principe et fonctionnement}

L'idÃ©e est de proposer un environnement pour crÃ©er une fenÃªtre type \textit{conversation instantanÃ©e}, basÃ©e sur \MontreCode{tcolorbox}.

\begin{DemoCode}{listing only}
\begin{EnvSMS}[ClÃ©s]{nom}
  \SMSrec(*){heure}{msg}
  \SMSenv(*){heure}{msg}
\end{EnvSMS}
\end{DemoCode}

\begin{DemoCode}{}
\begin{EnvSMS}{\LaTeX}
  \SMSrec{19:23}{Salut !}
  \SMSenv{19:23}{Salut!\\ Comment Ã§a va~?}
\end{EnvSMS}
\end{DemoCode}

La forme gÃ©nÃ©rale est fixÃ©e, et seuls quelques Ã©lÃ©ments de personnalisation(s) sont modifiables.

\subsection{L'environnement}

Les \MontreCode{clÃ©s} disponibles pour l'environnement, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{Hauteur} : hauteur de la fenÃªtre (automatique ou spÃ©cifique) ; \MontreCode{auto} par dÃ©faut
	\item \MontreCode{Largeur} : largeur de la fenÃªtre (un minimum de 5 cm est conseillÃ©) ; \MontreCode{7cm} par dÃ©faut
	\item \MontreCode{Marge} : marge (G ou D) pour les bulles \MontreCode{1.5cm} par dÃ©faut
	\item \MontreCode{Couleur} : couleur \textit{principale} (bandeau) ; \MontreCode{teal!75!cyan!75!white} par dÃ©faut ;
	\item \MontreCode{CouleurFond} : couleur du fond ; \MontreCode{lightgray!5} par dÃ©faut
	\item \MontreCode{CouleurR} : couleur des bulles de rÃ©ception ; \MontreCode{lime!25} par dÃ©faut
	\item \MontreCode{CouleurE} : couleur des bulles d'envoi ; \MontreCode{teal!5} par dÃ©faut
	\item \MontreCode{TxtEcrire} : texte dans la zone d'envoi ; \MontreCode{Ã‰crire} par dÃ©faut
	\item \MontreCode{PoliceTxt} : police des textes ; \MontreCode{\textbackslash normalfont} par dÃ©faut
	\item \MontreCode{Avatar} : avatar du contact ; \MontreCode{\textbackslash faAddressCard} par dÃ©faut
	\item \MontreCode{AffAvatar} : boolÃ©en pour ajouter l'avatar aux bulles de rÃ©ception ; \MontreCode{false} par dÃ©faut
	\item \MontreCode{NoirBlanc} : boolÃ©en pour forcer un affichage N\&amp;B. \MontreCode{false} par dÃ©faut
\end{itemize}

L'argument, obligatoire et entre \MontreCode{\{...\}}, est le nom du contact Ã&nbsp; afficher.

\subsection{Les commandes de crÃ©ation des bulles}

En ce qui concerne les commandes de crÃ©ation des bulles, \MontreCode{\textbackslash SMSrec} et \MontreCode{\textbackslash SMSenv} :

\begin{itemize}
	\item la version \textit{Ã©toilÃ©e} n'affiche pas les \textit{coches} de \textit{bonne rÃ©ception} ;
	\item le premier argument obligatoire est l'heure Ã&nbsp; afficher ;
	\item le deuxiÃ¨me argument obligatoire est le message Ã&nbsp; afficher (y compris multi-lignes).
\end{itemize}

\subsection{Exemples}

\begin{DemoCode}{}
%avec une image personnelle
\begin{EnvSMS}%
	[Largeur=5cm,Hauteur=13cm,AffAvatar,Avatar=Image/avatar]{CP}
	\SMSrec{19:23}{Salut !}
	\SMSenv{19:23}{Salut!\\ Comment Ã§a va~?}
	\SMSrec{19:25}{Je n'arrive pas Ã&nbsp; un truc en maths\ldots}
	\SMSenv{19:26}{Tu veux un coup de main ??}
	\SMSrec{19:28}{Oui, faut qu'je calcule $\int_{0}^{1} x^2e^{-x}\,dx$\ldots}
	\SMSenv*{19:30}{Je m'en occupe !!}
\end{EnvSMS}
\end{DemoCode}

\begin{DemoCode}{}
\begin{EnvSMS}%
	[Largeur=8cm,PoliceTxt=\sffamily,NoirBlanc]{CP}
	\SMSrec{19:23}{Salut !}
	\SMSenv{19:23}{Salut!\\ Comment Ã§a va~?}
	\SMSrec{19:25}{Je n'arrive pas Ã&nbsp; un truc en maths\ldots}
	\SMSenv{19:26}{Tu veux un coup de main ??}
	\SMSrec{19:28}{Oui, faut que je calcule $\mathsf{\int_{0}^{1} x^2e^{-x}\,dx}$\ldots}
	\SMSenv*{19:30}{Je m'en occupe !!}
\end{EnvSMS}
\end{DemoCode}

\pagebreak

\section{Titre d'exercices}

\subsection{Principe et dÃ©finition du style global}

L'idÃ©e est de proposer une commande ou un environnement pour afficher, \textit{facilement}, un \textit{titre} pour les exercices d'une Ã©valuation ou d'une fiche d'exercices.

\smallskip

Les Ã©lÃ©ments personnalisables sont :

\begin{itemize}
	\item le libellÃ© via la clÃ© \MontreCode{[Libelle]}, qui vaut \MontreCode{Exercice~} par dÃ©faut ;
	\item la couleur via la clÃ© \MontreCode{[Couleur]}, qui vaut \MontreCode{blue!50!black} par dÃ©faut ;
	\item la couleur de la dÃ©coration (si textuelle) via la clÃ© \MontreCode{[CouleurDeco]}, qui vaut \MontreCode{blue!50!black} par dÃ©faut ;
	\item la couleur de fond la dÃ©coration (si il existe) via la clÃ© \MontreCode{[CouleurFondDeco]}, qui vaut 50\,\% de \MontreCode{blue!50!black} par dÃ©faut ;
	\item la police via la clÃ© \MontreCode{[Police]}, qui vaut \MontreCode{\textbackslash bfseries\textbackslash LARGE\textbackslash sffamily} par dÃ©faut ;
	\item l'Ã©paisseur du trait (Ã©ventuel) via la clÃ© \MontreCode{[EpTrait]}, qui vaut \MontreCode{1.1pt} par dÃ©faut.
\end{itemize}

L'utilisateur peut personnaliser \textit{globalement} les Ã©lÃ©ments prÃ©cÃ©dents, les styles seront dans ce cas propagÃ©s Ã&nbsp; tous les environnements ou Ã&nbsp; toutes les commandes crÃ©ant les titres.

\begin{DemoCode}{listing only}
%personnalisation(s)
\StyleEnvtExo[clÃ©s]

%paramÃ¨tres par dÃ©faut
\StyleEnvtExoDefaut
\end{DemoCode}

Une fois les styles \textit{choisis}, il suffit d'utiliser la commande d'environnement ou la commande \textit{directe} :

\begin{DemoCode}{}
%exo1, environnement par dÃ©faut
\begin{EnvtExo}
Ceci est un exercice\ldots
\end{EnvtExo}
\end{DemoCode}

\begin{DemoCode}{}
%exo2, macro par dÃ©faut
\TitreExo

Ceci est un exercice\ldots
\end{DemoCode}

\subsection{Options de personnalisations}

Hormis le style global, il est possible de modifier/ajouter certains Ã©lÃ©ments :

\begin{itemize}
	\item le trait peut Ãªtre dÃ©fini :
	\begin{itemize}
		\item plein (par dÃ©faut) ;
		\item en pointillÃ©s, via \texttt{dotfill} ;
		\item en \textit{dashillÃ©s}, via le package \texttt{dashrulex} ;
	\end{itemize}
	\item un complÃ©ment de titre peut Ãªtre rajoutÃ© ;
	\item une dÃ©coration peut Ãªtre rajoutÃ©e en fin de ligne :
	\begin{itemize}
		\item des points, sous la forme \texttt{(xx points)} ;
		\item une image, via \texttt{graphicx}, dont la hauteur est adaptÃ©e Ã&nbsp; la hauteur de la ligne en cours ;
		\item une icÃ´ne, via \texttt{fontawesome5}, dont la hauteur est adaptÃ©e Ã&nbsp; la hauteur de la ligne en cours ;
		\item des Ã©toiles, via \texttt{fontawesome5} ou \TikZ, dont la hauteur est adaptÃ©e Ã&nbsp; la hauteur de la ligne en cours ;
		\item un petit chronomÃ¨tre, via \texttt{pictochrono}, dont la hauteur est adaptÃ©e Ã&nbsp; la hauteur de la ligne en cours ;
		\item un petit \textit{speedometer}, dont la hauteur est adaptÃ©e Ã&nbsp; la hauteur de la ligne en cours ;
		\item une ceinture colorÃ©e, via \texttt{coloredbelts}, dont la hauteur est adaptÃ©e Ã&nbsp; la hauteur de la ligne en cours ;
		\item une barre de niveaux colorÃ©e dont la hauteur est adaptÃ©e Ã&nbsp; la hauteur de la ligne en cours ;
	\end{itemize}
	\item le compteur (nommÃ© \MontreCode{numeroexo}) peut Ãªtre dÃ©sactivÃ© et \textit{adpatÃ©} via les commandes classiques de compteurs.
\end{itemize}

Les \MontreCode{clÃ©s} disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{Type} : type de libellÃ©s, parmi \MontreCode{Classique} (dÃ©faut) ou \MontreCode{Perso/titrepersonnalisÃ©}
	\item \MontreCode{ComplementTitre} : complÃ©ment pour la titre, aprÃ¨s le numÃ©ro (attention aux espaces) ;
	\item \MontreCode{CodeDebut} : code \LaTeX\ qui sera \textit{rajoutÃ©} entre le titre et l'Ã©noncÃ© ;
	\item \MontreCode{EchelleImage} : pour modifier ponctuellement l'image de dÃ©coration ;
	\item \MontreCode{Compteur} : boolÃ©en pour activer/dÃ©sactiver (\MontreCode{true} par dÃ©faut) le compteur (non affichÃ© et non incrÃ©mentÃ©) ;
	\item \MontreCode{Decoration} : choix de la dÃ©coration parmi :
	\begin{itemize}
		\item \MontreCode{Icone/...} := afficher l'icÃ´ne \MontreCode{...} Ã&nbsp; la fin de la ligne ;
		\item \MontreCode{Perso/...} := afficher une commande personnelle ;
		\item \MontreCode{Image/...} := afficher l'image \MontreCode{...} Ã&nbsp; la fin de la ligne ;
		\item \MontreCode{Ceinture/...} := afficher la ceinture couleur \MontreCode{...} Ã&nbsp; la fin de la ligne ;
		\item \MontreCode{Chrono/...} := afficher le chrono de durÃ©e \MontreCode{...} Ã&nbsp; la fin de la ligne ;
		\item \MontreCode{Points/...} := afficher les points \MontreCode{(... points)} Ã&nbsp; la fin de la ligne ;
		\item \MontreCode{Speedo/...Â§...} := afficher un \textit{speedometer} ;
		\item \MontreCode{faEtoiles/...} := afficher des Ã©toiles de difficultÃ©s Ã&nbsp; la fin de la ligne ;
		\item \MontreCode{tkzEtoiles/...} := afficher des Ã©toiles de difficultÃ©s Ã&nbsp; la fin de la ligne ;
		\item \MontreCode{Barres(*)/...} := un niveau de difficultÃ© (\MontreCode{V0/V1/V2/V3/O0/...})  ;
	\end{itemize}
	\item \MontreCode{Trait} : choix du trait parmi :
	\begin{itemize}
		\item \MontreCode{plein} := un trait plein (par dÃ©faut) ;
		\item \MontreCode{non} := aucun trait ;
		\item \MontreCode{pointilles} := pointilles (\texttt{\textbackslash dotfill}) ;
		\item \MontreCode{dashilles} := pointilles \textit{dash} (\texttt{\textbackslash hdashrule}).
	\end{itemize}
\end{itemize}

La commande d'affichage des Ã©toiles de difficultÃ©s est indÃ©pendante de l'environnement \MontreCode{EnvtExo}, la clÃ© \MontreCode{Decoration=xxxEtoiles/niv} ou \MontreCode{Decoration=xxxEtoiles/nivÂ§max} permet de l'y intÃ©grer.

\begin{DemoCode}{listing only}
%commande d'Ã©toiles (max=3 par dÃ©faut) avec fontawesome5
\NiveauDiffExos[max]{nb}
%commande d'Ã©toiles (max=3 par dÃ©faut) avec tikz
\tkzEtoiles[Couleur=...,CouleurFond=...,Offset=...,NiveauMax=...,AlignV=...]{nb}
\end{DemoCode}

\begin{DemoCode}{}
%des demies Ã©toiles sont possibles
\NiveauDiffExos{0}\par
\NiveauDiffExos{2.5}\par
\textcolor{teal}{\LARGE\NiveauDiffExos[5]{4}}\par
\NiveauDiffExos[5]{1.5}\par
\end{DemoCode}

\begin{DemoCode}{}
%des portions d'Ã©toiles sont possibles
%Offset=... permet de gÃ©rer l'espacement horizontal
%AlignV est un boolÃ©en pour dÃ©caler verticalement les Ã©toiles (inline)
\tkzEtoiles{2.5}\par
{\LARGE On essaye en ligne \tkzEtoiles{2.5} avec une note de 2.5}\par
{\LARGE On essaye en ligne \tkzEtoiles[AlignV=false]{2.5} avec une note de 2.5}\par
\tkzEtoiles[Couleur=red,CouleurFond=yellow,NiveauMax=5]{3.5}
\end{DemoCode}

\subsection{Exemples}

Les exemples suivants ont Ã©tÃ© obtenus via un document externe (fourni avec le package), du fait du chargement de packages spÃ©cifiques.

Le code proposÃ© utilise l'environnement, mais la commande simple est complÃ¨tement compatible Ã©galement !

\smallskip

{\footnotesize\faExclamationTriangle} Les petites \textit{images} ne sont pas incluses dans le package, elles sont lÃ&nbsp; pour illustrer l'utilisation d'images personnelles.

\begin{DemoCode}{listing only}
\documentclass[a5paper,11pt]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{customenvs}
%facultatif, pour les dÃ©corations
\usepackage{graphicx}
\usepackage{dashrulex}
\usepackage{coloredbelts}
\usepackage{pictochrono}
%mise en page
\usepackage{ipsum}
\setlength{\parindent}{0pt}
\end{DemoCode}

\pagebreak

\begin{DemoCode}{listing only}
\begin{EnvtExo}\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Trait=pointilles]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Trait=dashilles]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=Icone/\faPython]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=Ceinture/rouge]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=Chrono/20]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=Image/goku_ssj4]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=faEtoiles/1.5Â§4]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=tkzEtoiles/3.5Â§5]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=Barres/V2]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=Points/7.5]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Decoration=Speedo/4.25Â§6]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\begin{EnvtExo}[Type=Perso/{Titre perso }]\ipsum&lt;Lang=FR,Type=sent&gt;\end{EnvtExo}%

\StyleEnvtExo[Couleur=red,CouleurDeco=teal,Police=\bfseries\ttfamily,EpTrait=2pt, Libelle={Exercice nÂ°}]

\begin{EnvtExo}[Decoration=Icone/\faAddressBook]
\ipsum&lt;Lang=FR,Type=sent&gt;
\end{EnvtExo}%


\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Trait=dashilles]%
\ipsum&lt;Lang=FR,Type=sent&gt;
\end{EnvtExo}

\StyleEnvtExoDefaut
\begin{EnvtExo}%
	[Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%
\ipsum&lt;Lang=FR,Type=sent&gt;
\end{EnvtExo}

\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%
\ipsum&lt;Lang=FR,Type=sent&gt;
\end{DemoCode}

\pagebreak

\begin{DemoCode}{}
\includegraphics{envtexo_exemples.pdf}
\end{DemoCode}

\pagebreak

\section{BoÃ®tes divers}

\subsection{Introduction}

L'idÃ©e est de proposer (modestement) des commandes, basÃ©es sur \MontreCode{tcolorbox}, pour, avec un style prÃ©dÃ©fini :

\begin{itemize}
	\item crÃ©er des boÃ®tes de prÃ©sentation ;
	\item crÃ©er des titres de sujets d'examens, par exemple ;
	\item crÃ©er des titres d'exercices, pour des sujets d'examens par exemple ;
	\item crÃ©er des numÃ©ros encadrÃ©s ;
	\item crÃ©er de vignettes.
\end{itemize}

\subsection{BoÃ®tes de prÃ©sentation}

\begin{DemoCode}{listing only}
\begin{BoiteSimple}[couleur]&lt;options tcbox&gt;{titre}
	...
\end{BoiteSimple}
\end{DemoCode}

\begin{DemoCode}{}
\begin{BoiteSimple}[red]{PropriÃ©tÃ©}
Si M est la matrice d'adjacence d'un graphe simple orientÃ© de sommets $A_1$, $A_2$, \dots, $A_n$, le nombre de chemins de longueur $p$ d'un sommet $A_i$  Ã&nbsp; un sommet $A_j$ est le nombre situÃ© ligne $i$ et colonne $j$ dans la matrice $M^p$.
\end{BoiteSimple}
\end{DemoCode}

\begin{DemoCode}{}
\begin{BoiteSimple}[blue]&lt;width=0.75\linewidth,flush right&gt;{PropriÃ©tÃ©}
Si M est la matrice d'adjacence d'un graphe simple orientÃ© de sommets $A_1$, $A_2$, \dots, $A_n$, le nombre de chemins de longueur $p$ d'un sommet $A_i$  Ã&nbsp; un sommet $A_j$ est le nombre situÃ© ligne $i$ et colonne $j$ dans la matrice $M^p$.
\end{BoiteSimple}
\end{DemoCode}

\subsection{Titres de sujets d'examens, titres d'exercices}

\begin{DemoCode}{listing only}
\begin{TitreSujet}[Couleur=...,AlignH=...]&lt;options tcbox&gt;{titre onglet}
...
\end{TitreSujet}
\end{DemoCode}

\begin{DemoCode}{}
\begin{TitreSujet}[Couleur=red!50!black]{SUJET}
MÃ©tropole, SIO, 16 Mai 2024
\end{TitreSujet}
\end{DemoCode}

\begin{DemoCode}{}
\begin{TitreSujet}[Couleur=teal,AlignH=center]{CORRIGÃ‰}
BaccalaurÃ©at Centres Ã©trangers Groupe 1\\
14 mars 2023
\end{TitreSujet}
\end{DemoCode}

\begin{DemoCode}{listing only}
\SujetTitreExo[couleur]{titre}
\end{DemoCode}

\begin{DemoCode}{}
\SujetTitreExo{Exercice 4 (5 points)}

\SujetTitreExo[olive]{Exercice 1 [Matrices]\dotfill(5 points)}
\end{DemoCode}

\subsection{NumÃ©ros encerclÃ©s}

\begin{DemoCode}{listing only}
\CircledNumber[bg=...,txt=...,bthick=...,bcol=...,raise=true/false]%
    {nombre}{noeud tikz}
\end{DemoCode}

\begin{DemoCode}{}
En ligne \CircledNumber{1} avec texte aprÃ¨s.
\end{DemoCode}

\begin{DemoCode}{}
{\bfseries\sffamily\Huge En ligne (\CircledNumber[bthick=0.25mm,bcol=red,bg=cyan!25,txt=darkgray]{7}) avec texte aprÃ¨s}
\end{DemoCode}

\begin{DemoCode}{}
{\Large En ligne \CircledNumber[raise=false,bthick=0.5mm,bcol=cyan,bg=cyan!25,txt=orange]{4} avec texte aprÃ¨s}
\end{DemoCode}

\begin{DemoCode}{}
\begin{enumerate}[label={\CircledNumber[raise=false]{\arabic*}}]
	\item A
	\item B
	\item C
\end{enumerate}
\end{DemoCode}

\subsection{Vignettes}

\begin{DemoCode}{listing only}
\AffVignette(*)[Type=...,Couleur=...,Police=...]{texte}
% la version Ã©toilÃ©e active le \NoAutoSpacing
\end{DemoCode}

\begin{DemoCode}{}
%vignette de base
\AffVignette{test} ou \AffVignette[Couleur=magenta]{test}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type algo
\AffVignette[Type=algo]{test} ou \AffVignette[Type=algo,Couleur=teal]{Renvoyer}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type python, classique
\AffVignette[Type=py]{test} ou \AffVignette[Type=py,Couleur=lime]{return}

%vignette type python, avec piton (et lualatex)
%\AffVignette[Type=pypit]{from math import sqrt}

%vignette type python, avec piton et pyluatex (et lualatex + shell-escape)
%\AffVignette[Type=pyl,Couleur=blue]{1+4/5}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type graphique
\AffVignette[Type=grph]{fonction} ou \AffVignette[Couleur=olive,Type=grph]{intersection}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type MPM
\AffVignette[Type=mpm]{marge} ou \AffVignette[Type=mpm,Couleur=orange]{chemin}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type xcas
\AffVignette[Type=xcas]{calcul formel} ou \AffVignette[Type=xcas,Couleur=brown]{calcul formel}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type shell
\AffVignette[Type=shell,Couleur=red!50!orange]{fenÃªtre cmd}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type LaTeX
\AffVignette[Type=tex]{code LaTeX}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type tableur
\AffVignette[Type=sheet,Couleur=green!50!black,Police=\footnotesize\sffamily]
    {cellule A3}
\end{DemoCode}

\begin{DemoCode}{}
%vignette type tableur
\AffVignette[Type=perso/CRYPT,Couleur=blue!50!teal,Echelle=0.5]
    {vignette personnalisÃ©e}
\end{DemoCode}

\begin{DemoCode}{}
%crÃ©ation d'une macro personnelle
\NewDocumentCommand\VignetteTableur{ m }{%
	\AffVignette*[Type=sheet,Couleur=green!50!black,Police=\footnotesize\sffamily]
	{#1}
}
On se place dans la plage \VignetteTableur{A3:B5} pour...

\end{DemoCode}

\subsection{BoÃ®te arrondie, petite boÃ®te type marker}

\begin{DemoCode}{listing only}
\BoiteArrondie[Fond=...,Texte=...,EspH=...,Style=...]{texte}[noeud tikz]
\end{DemoCode}

\begin{DemoCode}{}
On lance le logiciel \BoiteArrondie[Fond=cyan!33,Texte=violet,EspH=2mm,Style=rect]{situÃ© sur le bureau} en cliquant \BoiteArrondie[Fond=lightgray!25,Texte=darkgray]{droit}.
\end{DemoCode}

\begin{DemoCode}{listing only}
\tbcmarker[Couleur=...,Largeur=...,Police=...]{contenu}
\end{DemoCode}

\begin{DemoCode}{}
\tbcmarker{contenu}
\end{DemoCode}

\begin{DemoCode}{}
\tbcmarker[Couleur=olive,Police=\normalfont\normalsize]{contenu}
\end{DemoCode}

%\subsection{Lettres Ã&nbsp; la maniÃ¨re d'un pixelart (expÃ©rimental)}
%
%L'idÃ©e est de proposer une prÃ©sentation de (quelques) lettres (faite en \TikZ) sous la forme d'un \textit{pixelart}.
%
%\smallskip
%
%Par dÃ©faut les lettres ont une \textit{hauteur} de 5 carreaux (la taille est dÃ©terminÃ©e par rapport Ã&nbsp; la hauteur globale souhaitÃ©e, qui vaut par dÃ©faut 11~mm), et 2 carreaux ont Ã©tÃ© rajoutÃ©s en haut et en bas, et 1 carreau de chaque cÃ´tÃ©.
%
%\smallskip
%
%Attention cependant aux caractÃ¨res spÃ©ciaux et/ ou aux lettres accentuÃ©es, qui pourraient poser problÃ¨me (au quel cas la macro d'insertion individuelle est Ã&nbsp; prÃ©fÃ©rer !)
%
%\begin{DemoCode}{listing only}
%%une lettre
%\PixlLetter%
%    [height=...,thick=...,color=...,gridcolor=...,
%    offseth=...,offsetv=...,gridafter=...,nospaceafter=...]
%    &lt;options tikzpicture&gt;
%    {lettre}
%
%%l'apostrophe, si besoin...
%\PixlLetterQuote%
%    [height=...,thick=...,color=...,gridcolor=...,
%    offseth=...,offsetv=...,gridafter=...,nospaceafter=...]
%    &lt;options tikzpicture&gt;
%
%%plusieurs lettres
%\PixlLetters%
%    [height=...,thick=...,color=...,gridcolor=...,
%    offseth=...,offsetv=...,gridafter=...,nospaceafter=...]
%    {lettres}
%\end{DemoCode}
%
%\begin{DemoCode}{listing only}
%\PixlLetter{S}\PixlLetter{i}\PixlLetter{n}\PixlLetter{g}\PixlLetter{e}
%
%\PixlLetters[height=2cm,color=red,gridafter,offsetv=1]{(Singe)}
%
%\PixlLetters[color=blue]{Les singes, c'est super !?}
%
%\PixlLetters[color=red]{1+1=2}
%\end{DemoCode}
%
%\PixlLetter{S}\PixlLetter{i}\PixlLetter{n}\PixlLetter{g}\PixlLetter{e}
%
%\PixlLetters[height=2cm,color=red,gridafter,offsetv=1]{(Singe)}
%
%\PixlLetters[color=blue]{Les singes, c'est super !?}
%
%\PixlLetters[color=red]{1+1=2}

\subsection{BanniÃ¨re de titre}

L'idÃ©e est de proposer une banniÃ¨re, rÃ©alisÃ©e en \TikZ, pour prÃ©senter par exemple un titre.

Il sera ensuite possible de redÃ©finir un sectionnement du document (\MontreCode{part/section/subsection/...}).

Le style global est fixÃ©, mais des Ã©lÃ©ments de personnalisations sont possibles (des calculs en interne sont effectuÃ©s pour adapter la taille des textes).

\begin{DemoCode}{listing only}
\tkzBannerTri[clÃ©s]{numÃ©ro}{titre}
\end{DemoCode}

\begin{DemoCode}{}
\tkzBannerTri{01}{Titre du document}
\end{DemoCode}

Les principales \MontreCode{clÃ©s} (anglicisÃ©es) sont :

\begin{itemize}
	\item \MontreCode{height} : hauteur de la banniÃ¨re (\MontreCode{2.5em} par dÃ©faut)
	\item \MontreCode{width} : largeur de la banniÃ¨re (\MontreCode{\textbackslash linewidth} par dÃ©faut)
	\item \MontreCode{blockwidth} : largeur du bloc gauche (\MontreCode{2.75em} par dÃ©faut, mais si \MontreCode{auto}, la largeur s'adaptera Ã&nbsp; son contenu)
	\item \MontreCode{coltxt} : couleur des textes (\MontreCode{white} par dÃ©faut)
	\item \MontreCode{fonttxt} : police globale des textes (\MontreCode{white} par dÃ©faut)
	\item \MontreCode{swap} : boolÃ©en pour changer le style de la partie droite (\MontreCode{false} par dÃ©faut)
	\item \MontreCode{maincolor} : couleur principale, les dÃ©gradÃ©s Ã©tant calculÃ©s automatiquement (\MontreCode{darkgray} par dÃ©faut)
	\item \MontreCode{collight} : couleur la plus claire (\MontreCode{darkgray!25} par dÃ©faut)
	\item \MontreCode{colmedium} : couleur du milieu (\MontreCode{darkgray!50} par dÃ©faut)
	\item \MontreCode{coldark} : couleur la plus foncÃ©e (\MontreCode{darkgray} par dÃ©faut)
	\item \MontreCode{logo} : logo Ã©ventuel, placÃ© tout Ã&nbsp; droite
	\item \MontreCode{type} : type Ã©ventuel du document, qui est dans le bloc gauche
	\item \MontreCode{dispblock} : boolÃ©en pour afficher le bloc de gauche (actif par dÃ©faut)
	\item \MontreCode{num} : boolÃ©en pour afficher le numÃ©ro (actif par dÃ©faut)
	\item \MontreCode{customtype} : texte personnalisÃ© Ã©ventuel du bloc gauche
	\item \MontreCode{custommulti} : boolÃ©en pour un texte personnalisÃ© Ã©ventuel du bloc gauche sur deux lignes
\end{itemize}

\begin{DemoCode}{}
\tkzBannerTri
	[maincolor=red,type=EXERCICES,blockwidth=auto,logo=\faAddressBook]
	{7}{Mon document}
\end{DemoCode}

\begin{DemoCode}{}
\tkzBannerTri
	[maincolor=red,type=EXERCICES,blockwidth=5em,logo=\faAddressBook]
	{7}{Mon document}
\end{DemoCode}

\begin{DemoCode}{}
\tkzBannerTri[%
	maincolor=red,type=EXERCICES,blockwidth=auto,logo=\faAddressBook,swap]
	{07}{Mon document}
\end{DemoCode}

\begin{DemoCode}{}
\tkzBannerTri
	[dispblock=false,maincolor=teal,logo=\faSchool]
	{}{Mon document}
\end{DemoCode}

\begin{DemoCode}{}
\tkzBannerTri
	[maincolor=olive,customtype=TP,blockwidth=4em,logo=\faAddressBook,height=4em]
	{7}{Mon document}
\end{DemoCode}

Il est de ce fait \textit{normalement} possible (Ã&nbsp; vÃ©rifier quand mÃªme avec une insertion dans une \textsf{toc}\ldots) de modifier le comportement de la commande \MontreCode{\textbackslash part}, dans l'optique de l'utilisation avec une table des matiÃ¨res notamment.

%\begin{DemoCode}{}
%%redÃ©finition de \part avec gestion de la version Ã©toilÃ©e
%\RenewDocumentCommand\part{ s m D&lt;&gt;{} }{%
%	\addtocounter{part}{1}%
%	\IfBooleanTF{#1}%
%		{%
%			\tkzBannerTri[#3,num=false]{\thepart}{#2}%
%		}%
%		{%
%			\tkzBannerTri[#3]{\thepart}{#2}%
%			%\addcontentsline{toc}{part}{#2}%Ã©ventuellement
%		}%
%}
%%modification de la numÃ©rotation, avec forÃ§age du 0
%\renewcommand\thepart{\ifnum\value{part}&lt;10\relax0\fi\arabic{part}}
%
%\part{Ã‰lÃ©ments de logique}&lt;type=TP,logo=\faAirbnb&gt;
%\end{DemoCode}

\pagebreak

Ã€ noter qu'il existe une commande \textit{alternative}, avec un fonctionnement lÃ©gÃ¨rement diffÃ©rent, puisque la hauteur de la banniÃ¨re et la largeur du bloc sont fixÃ©s, de sorte que les labels s'adaptent automatiquement.

Les \MontreCode{clÃ©s} sont les mÃªmes, le fonctionnement global Ã©galement, Ã&nbsp; l'exception de la clÃ© \MontreCode{[customtype]} en mode \MontreCode{custommulti} qui doit Ãªtre donnÃ© sous la forme \MontreCode{[customtype=L1+L2]}.

\begin{DemoCode}{}
\tkzBannerTriAlt
	[maincolor=magenta,logo=\faSchool,type=INTERRO]
	{05}{Mon document}

\tkzBannerTriAlt
	[maincolor=violet,swap,logo=\faSchool,customtype={INTERRO+DE COURS},custommulti,blockwidth=1.25cm]
	{}{ProbabilitÃ©s (v1)}
\end{DemoCode}

\pagebreak

\subsection{Panneaux autoroutiers}

L'idÃ©e est de proposer des panneaux type \textit{autoroutes}, rÃ©alisÃ©s via \MontreCode{tcolorbox}.

Le style global est fixÃ©, mais des Ã©lÃ©ments de personnalisations sont possibles..

\begin{DemoCode}{listing only}
\begin{PanneauAutoroute}[clÃ©s]{titre}
%contenu
\end{PanneauAutoroute}
\end{DemoCode}

\begin{DemoCode}{}
\begin{PanneauAutoroute}{A4}
REIMS\hfill~145\\
PARIS\hfill~250
\end{PanneauAutoroute}
\end{DemoCode}

Les clÃ©s, optionnelles et entre \MontreCode{[...]} sont :

\begin{itemize}
	\item \MontreCode{Fleches} : nombre de flÃ¨ches Ã&nbsp; afficher (\MontreCode{0} par dÃ©faut)
	\item \MontreCode{CouleurFond} : couleur de fond (\MontreCode{blue} par dÃ©faut)
	\item \MontreCode{CouleurTitre} : couleur de la boÃ®te \textit{titre} (\MontreCode{red} par dÃ©faut)
	\item \MontreCode{Largeur} : largeur du panneau (\MontreCode{10cm} par dÃ©faut)
	\item \MontreCode{Police} : police du panneau
	\item \MontreCode{PoliceCartouche} : police du titre
	\item \MontreCode{TypeFleche} : flÃ¨che(s) Ã&nbsp; afficher
	\item \MontreCode{EspacementV} : interligne (\MontreCode{2.5mm} par dÃ©faut)
	\item \MontreCode{Dernier} : boolÃ©en pour prÃ©ciser que la boÃ®te sera la derniÃ¨re de la sÃ©rie (pour l'espace aprÃ¨s).
\end{itemize}

\begin{DemoCode}{}
\begin{PanneauAutoroute}[Largeur=\linewidth,Dernier=false]{TD01}
	\VilleDist{COMPETENCE 1}{\faCheck}  %macro interne pour afficher une ligne
	\VilleDist*{COMPETENCE 2}{\faCheck} %macro pour afficher la derniÃ¨re ligne
\end{PanneauAutoroute}

\begin{PanneauAutoroute}%
	[CouleurFond=olive,Fleches=2,Police=\bfseries\huge\fontfamily{phv}\selectfont]{}
	LILLE\hfill~301\\
	AMIENS\hfill~213
\end{PanneauAutoroute}
\end{DemoCode}

\pagebreak

\subsection{Affichettes de soldes}

L'idÃ©e est de proposer des petites affichettes pour des rÃ©ductions, rÃ©alisÃ©es via \MontreCode{tcolorbox} (sur une idÃ©e de \textit{SÃ©bastien Lozano}).

Le style global est fixÃ©, mais des Ã©lÃ©ments de personnalisations sont possibles..

\begin{DemoCode}{listing only}
\AfficheSoldes[clÃ©s]{prix avant}{prix aprÃ¨s}{rÃ©duction}
\end{DemoCode}

\begin{DemoCode}{}
\AfficheSoldes{99\texteuro}{79\texteuro}{-20\%}
\end{DemoCode}

Les clÃ©s, optionnelles et entre \MontreCode{[...]} sont :

\begin{itemize}
	\item \MontreCode{Couleur} : couleur principale (\MontreCode{gray} par dÃ©faut)
	\item \MontreCode{Largeur} : largeur (\MontreCode{auto} ou par dÃ©faut) Ã&nbsp; dÃ©finir
	\item \MontreCode{PoliceEntete} : police du titre
	\item \MontreCode{PolicePrix} : police des prix
	\item \MontreCode{PoliceReduc} : police de la rÃ©duction
	\item \MontreCode{Titre} : titre de l'affiche (\MontreCode{GRANDE DÃ‰MARQUE} par dÃ©faut)
	\item \MontreCode{OffsetReduc} : \textit{pente} pour le bandeau de rÃ©duction (\MontreCode{1.25cm} par dÃ©faut)
	\item \MontreCode{AgrandirReduc} : augmenter la hauteur de la partie rÃ©duction
\end{itemize}

Donc la hauteur est fixÃ©e par \textit{calculs}, et Ã©galement la largeur si \MontreCode{Largeur=auto}.

La largeur \MontreCode{auto} permet de faire \textit{marcher} des prix jusque \MontreCode{99\,999\,â‚¬}.

\begin{DemoCode}{}
\AfficheSoldes{99\texteuro}{79\texteuro}{-20\,\%}~%
\AfficheSoldes[Couleur=red]{99\texteuro}{79\texteuro}{-20\,\%}~%
\AfficheSoldes[Couleur=blue]{\ldots\texteuro}{79\texteuro}{-20\,\%}~%
\AfficheSoldes[Couleur=teal]{\ldots}{\ldots}{\ldots}
\end{DemoCode}

\begin{DemoCode}{}
\AfficheSoldes[%
		Couleur=magenta,%
		Largeur=6cm,%
		PoliceEntete=\huge\sffamily\bfseries,%
		PolicePrix=\ttfamily,%
		PoliceReduc=\bfseries\Huge\sffamily,%
		AgrandirReduc=8mm
		]%
	{1\,500\texteuro}{1\,299\texteuro}{-\ldots\,\%}
\end{DemoCode}

\begin{DemoCode}{}
\AfficheSoldes[%
		Couleur=cyan,%
		PoliceEntete=\bfseries\huge\fontfamily{qhv}\selectfont,%
		PolicePrix=\fontfamily{qhv}\selectfont,%
		PoliceReduc=\bfseries\Huge\fontfamily{qhv}\selectfont,%
		AgrandirReduc=1cm
		]%
	{\makebox[1cm]{\dotfill}\texteuro}{1\,299\texteuro}{-30\,\%}
\end{DemoCode}

\pagebreak

\section{Patchs divers}

\subsection{GÃ©rer l'espacement vertical du mode hors-ligne}

L'idÃ©e est de proposer une commande, Ã&nbsp; insÃ©rer dans le prÃ©ambule, pour \textit{patcher} l'espacement vertical proposÃ© par les environnements mathÃ©matiques hors-ligne.

\begin{DemoCode}{listing only}
...
\ChangerDisplaySkip[clÃ©s]
...
\begin{document}
\end{DemoCode}

Les \MontreCode{clÃ©s} disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{Avant=...} : modification de l'espacement avant ;
	\item \MontreCode{AvantS=...} : modification de l'espacement avant (version \textit{short}) ;
	\item \MontreCode{Apres=...} : modification de l'espacement aprÃ¨s ;
	\item \MontreCode{ApresS=...} : modification de l'espacement aprÃ¨s (version \textit{short}) ;
	\item \MontreCode{Global=...} : modification globale de \textbf{tous} les espacements ;
	\item \MontreCode{Dense} : boolÃ©en pour modification globale en \MontreCode{0.33\textbackslash baselineskip}.
\end{itemize}

\subsection{Quelques ajouts au package pas-tableur}

L'idÃ©e est de proposer quelques commandes complÃ©mentaires pour le package \textsf{pas-tableur}, de StÃ©phane Pasquet (\url{https://ctan.org/pkg/pas-tableur}), en respectant autant que faire se peut la syntaxe du package (voir la documentation pour de plus amples informations).

\smallskip

Le package \textsf{pas-tableur} n'est pas chargÃ© par dÃ©faut, mais il peut l'Ãªtre grÃ¢ce Ã&nbsp; l'option \MontreCode{[pastableur]}.

\smallskip

Les \textit{ajouts} disponibles sont :

\begin{itemize}
	\item colorer/griser une case, via \MontreCode{\textbackslash celcouleur} ;
	\item fusionner des celules, via \MontreCode{\textbackslash celfusion} ;
	\item \textit{casser la numÃ©rotation} avec des pointillÃ©s, via \MontreCode{\textbackslash celnumbreak} ;
	\item remplir (partiellement ou non) une ligne,  via \MontreCode{\textbackslash lignetxt} ;
	\item remplir (partiellement ou non) une colonne,  via \MontreCode{\textbackslash colonnetxt}.
\end{itemize}

\begin{DemoCode}{listing only}
%chargement du package
\usepackage[pastableur]{customenvs}

%griser une cellule
\celcouleur[couleur]{col-lig}

%fusionner des cellules
\celfusion[options pas-tableur]{col-lig}{col-lig}{label}

%pointillÃ©s dans la numÃ©rotation
\celnumbreak{num ligne pointillÃ©s}{dÃ©but numÃ©ro suite}{fin numÃ©ro suite}

%remplir ligne
\lignetxt(*)[options pas-tableur]{num ligne}&lt;col dÃ©but&gt;{liste des cellules}

%remplir colonne
\colonnetxt(*)[options pas-tableur]{num colonne}&lt;lgn dÃ©but&gt;{liste des cellules}
\end{DemoCode}

\pagebreak

L'exemple suivant illustre les diffÃ©rentes commandes proposÃ©es dans ce package.

\begin{DemoCode}{}
\begin{tikzpicture}{}
	\tableur*[10]{A/2.5cm,B/2.5cm,C/2.5cm,D/2.5cm,E/2.5cm,F/2.5cm}
	%ligne nÂ°1
	\celtxt*[align=center]{A}{1}{$n$}
	\celfusion[align=center]{B-1}{C-1}{$M_n$}
	\celfusion[align=center]{D-1}{E-1}{$S_n$}
	\celtxt*[align=center]{F}{1}{$d_n$}
	%		%Ligne2/3/4
	\celcouleur{A-2}
	\lignetxt*[align=center]{2}&lt;2&gt;{$x_n$,$y_n$,5,$n$,$n$} %Ã&nbsp; partir de la colonne nÂ°2
	\lignetxt*[align=center]{3}{0,0,0,5,0,5}
	\lignetxt*[align=center]{4}{1,1,0,5,1,4.12310563}%
	\celnumbreak{8}{27}{28}
	%colonneA
	\colonnetxt*[align=center]{A}&lt;5&gt;{2,3,4,\dots,24,25}   %Ã&nbsp; partir de la ligne nÂ°5
\end{tikzpicture}
\end{DemoCode}

\subsection{Insertion d'images avec remplissage de l'espace vertical}

L'idÃ©e est de proposer une commande pour adapter la hauteur d'une image Ã&nbsp; la hauteur restante en base de page.

Cela repose en fait simplement sur l'utilisation de \MontreCode{[height=\textbackslash dimexpr\textbackslash pagegoal-\textbackslash pagetotal\textbackslash relax]}.

\begin{DemoCode}{listing only}
\InsererImage&lt;vRemplir=true/false,vOffset=...,vCentrer=...&gt;[clÃ©s includegraphics]&lt;image&gt;
\end{DemoCode}

La clÃ© \MontreCode{vOffset} permet de spÃ©cifier une longueur Ã&nbsp; retirer au calcul automatique (par dÃ©faut elle est fixÃ©e Ã&nbsp; \MontreCode{0pt})..

La clÃ© \MontreCode{vCentrer} (parmi \MontreCode{m/h/b/n} permet de spÃ©cifier un type de centrage vertical, si besoin, parmi \MontreCode{milieu/haut/bas/non} (\MontreCode{n} par dÃ©faut).

\begin{DemoCode}{listing only}
\InsererImage&lt;vRemplir,vOffset=5mm,vCentrer=m&gt;{example-image}
\end{DemoCode}

\InsererImage&lt;vRemplir,vOffset=5mm,vCentrer=m&gt;{example-image}

\subsection{Grille automatique pour les environnements tikzpicture}

L'idÃ©e est de proposer de quoi afficher, en \textit{surimpression}, une grille automatique sur une figure \MontreCode{tikzpicture}.

Cela peut-Ãªtre utile dans la construction de graphes ou de figures gÃ©omÃ©triques pour placer plus facilement des objets.

\smallskip

Il est possible de :

\begin{itemize}
	\item demander ponctuellement l'affichage avec une macro Ã&nbsp; placer en fin d'environnement ;
	\item automatiser l'affichage pour une figure avec une \MontreCode{clÃ©} et une macro locale ;
	\item automatiser l'affichage pour toutes les figures avec une macro globale et une \MontreCode{clÃ©}.
\end{itemize}

\textbf{\large Version manuelle}

\begin{DemoCode}{listing only}
%macro locale, utilisation ponctuelle
\begin{tikzpicture}
	%codes
	\tkzGrilleAuto(*){pasXÂ§pasY}
\end{tikzpicture}
\end{DemoCode}

La version Ã©toilÃ©e marque Ã©galement l'origine $(0;0)$.

L'argument obligatoire permet de spÃ©cifier les pas (\texttt{HÂ§V}) pour la grille.

\begin{DemoCode}{}
\begin{tikzpicture}
	%population
	\draw[very thick,purple] (0,0) circle[x radius=3cm,y radius=2cm] ;
	\draw[purple] (0.5,1.25) node[font=\small] {Population E} ;
	%ss population
	\draw[very thick,teal] (-0.75,-0.25) circle[x radius=1.75cm,y radius=1cm] ;
	\draw[teal] (-0.75,-0.25) node[font=\small] {Sous-population A} ;
	%grille auto manuelle, avec origine
	\tkzGrilleAuto*{0.5Â§0.5}
\end{tikzpicture}
\end{DemoCode}

\textbf{\large Version automatique locale, avec clÃ©}

\begin{DemoCode}{listing only}
%clÃ© locale, utilisation ponctuelle
\begin{tikzpicture}[grilleauto=pasXÂ§pasY]
	\tkzAutoGridLocal(*)
	%codes
\end{tikzpicture}
\end{DemoCode}

La version Ã©toilÃ©e marque Ã©galement l'origine $(0;0)$.

\begin{DemoCode}{}
\begin{tikzpicture}[x=0.5cm,y=0.5cm,grilleauto=0.25Â§0.25]
	%grille (qui sera affichÃ©e en dernier)
	\tkzAutoGridLocal*
	%triangle
	\draw[very thick,red] (-4,-2)--(0,7)--(6,1)--cycle ;
	%cercle
	\draw[very thick,blue] (0,0) circle[radius=5] ;
	%segment
	\draw[very thick,orange] (-1.75,1.25)--(1,-7);
\end{tikzpicture}
\end{DemoCode}

\textbf{\large Version automatique globale, avec clÃ©}

\begin{DemoCode}{listing only}
%prÃ©ambule, la commande sera active pour tous les environnements tikz
\tkzAutoGridActivate(*)

%document
\begin{tikzpicture}[grilleauto=pasXÂ§pasY]
	%codes
\end{tikzpicture}
\end{DemoCode}

La version Ã©toilÃ©e marquera Ã©galement l'origine $(0;0)$.

\pagebreak

\subsection{FlÃ¨che Ã©vasÃ©e, en \TikZ}

L'idÃ©e est de proposer une commande, en  \TikZ, pour reprÃ©senter une flÃ¨che Ã©vasÃ©e, avec des paramÃ¨tres optionnels.

\begin{DemoCode}{listing only}
\tkzFlecheEvasee[clÃ©s]{dÃ©part}{arrivÃ©e ou dÃ©placement}
\end{DemoCode}

\begin{DemoCode}{}
\begin{tikzpicture}
	\tkzFlecheEvasee{0,0}{5,1.5}
\end{tikzpicture}
\end{DemoCode}

Les \MontreCode{clÃ©s} disponibles, Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{Couleur=...} : couleur de la flÃ¨che ;
	\item \MontreCode{Epaisseur=...} : taille initiale du trait (\MontreCode{0.5mm} par dÃ©faut) ;
	\item \MontreCode{Direction=...} : direction de la flÃ¨che, avec angle Ã©ventuel ;
	\item \MontreCode{Coeff=...} : coefficient pour la taille finale du trait (\MontreCode{4} par dÃ©faut) ;
	\item \MontreCode{TypeFleche=...} : type de la flÃ¨che, issue de \MontreCode{arrows.meta} ;
	\item \MontreCode{TailleFleche=...} : boolÃ©en pour la taille de la partie flÃ¨che (\MontreCode{auto} par dÃ©faut), en langage \MontreCode{arrows.meta} ;
	\item \MontreCode{Deplacement} : boolÃ©en pour spÃ©cifier qu'on travaille avec un dÃ©placement pour l'arrivÃ©e.
\end{itemize}

Le premier argument obligatoire, permet de spÃ©cifier le nÅ“ud de dÃ©part ou les coordonnÃ©es du point de dÃ©part.

Le second argument obligatoire, permet de spÃ©cifier le nÅ“ud d'arrivÃ©e ou les coordonnÃ©es du point d'arrivÃ©e, mais Ã©galement le dÃ©placement dans le cas ou \MontreCode{Deplacement=true}.

\medskip

Par dÃ©faut, et en mode \MontreCode{auto} :

\begin{itemize}
	\item le dÃ©but du trait mesure \MontreCode{Epaisseur=0.5mm} ;
	\item la fin du trait mesure \MontreCode{4*Epaisseur=2mm} ;
	\item les dimensions de la flÃ¨che sont \MontreCode{H=2*4*Epaisseur=4mm} et \MontreCode{L=2.1*4*Epaisseur=4.2mm}.
\end{itemize}

Ã€ noter que pour les flÃ¨ches type \MontreCode{Stealth}, un ajustement est sans doute Ã&nbsp; prÃ©voir pour compenser le \textit{creux}.

\begin{DemoCode}{}
%flÃ¨che 0.5mm -&gt; 1.25mm
\begin{tikzpicture}
	\tkzFlecheEvasee%
		[Epaisseur=0.5mm,Coeff=2.5,Direction=left/30,Couleur=red,TypeFleche=Triangle]%
		{0,0}{5,1.5}
\end{tikzpicture}
\end{DemoCode}

\begin{DemoCode}{}
\begin{tikzpicture}
	\draw[thin,lightgray] (-3,-1) grid (5,5) ;
	\coordinate (A) at (0,0) ; \coordinate (B) at (4,1) ;
	\coordinate (C) at (1,1) ; \coordinate (D) at (5,4) ;
	\coordinate (E) at (0,1) ; \coordinate (F) at (0,5) ;
	\coordinate (G) at (-2,0) ;
	\tkzFlecheEvasee[Couleur=green,TypeFleche=Triangle]{A}{B}
	\tkzFlecheEvasee[Couleur=blue,Direction=right/10]{D}{C}
	\tkzFlecheEvasee%
		[Couleur=red,Direction=left/45,TypeFleche=Stealth,Epaisseur=0.1mm,Coeff=10]%
		{-2,1}{0,4}
	\tkzFlecheEvasee%
		[Couleur=red,Direction=right/45,Epaisseur=0.1mm,Coeff=10,TypeFleche=Stealth]%
		{-2,1}{0,4}
	\tkzFlecheEvasee[Couleur=teal,Deplacement,Direction=left/10]{-3,-1}{5,1}
\end{tikzpicture}
\end{DemoCode}

\pagebreak

\subsection{Annoter une image}

L'idÃ©e est de proposer de quoi annoter une image, en utilisant un environnement et une commande qui sont liÃ©s Ã&nbsp; \TikZ.

\begin{DemoCode}{listing only}
\begin{AnnoterImage}[clÃ©s][options includegraphics]{image}
	\PlacerTxtSurImg[options node tikz]{coordonnÃ©es}{texte}
	\PlacerTxtSurImg*[options node tikz]{coordonnÃ©es en pourcentage}{texte}
	%code tikz
\end{AnnoterImage}
\end{DemoCode}

\begin{DemoCode}{}
%\usepackage[auto,outline]{contour}
\begin{AnnoterImage}[Grille=0.5][height=4cm]{example-image.png}
	\PlacerTxtSurImg[scale=5,rotate=30]
		{1,1}{\contourlength{0.05em}\color{white}\contour{black}{$\pi$}}
	\PlacerTxtSurImg*[scale=1.5,rotate=-15]
		{0.66,0.75}{\contourlength{0.025em}\color{violet}\contour{yellow}{Pythagore}}
\end{AnnoterImage}
\end{DemoCode}

Concernant l'environnement, les \MontreCode{clÃ©s} disponibles (premier argument), Ã&nbsp; donner entre \MontreCode{[...]}, sont :

\begin{itemize}
	\item \MontreCode{Noeud=...} : nom du nÅ“ud crÃ©Ã© (si rÃ©utilisation avec un \texttt{remember picture}) ;
	\item \MontreCode{Grille=...} : Grille Ã©ventuelle d'aide (en unitÃ©) (\MontreCode{vide} par dÃ©faut) ;
	\item \MontreCode{SousGrille=...} : sous-grille Ã©ventuelle (\MontreCode{4} par dÃ©faut) ;
	\item \MontreCode{CouleurGrille=...} : couleur de la grille d'aide (\MontreCode{teal} par dÃ©faut) ;
	\item \MontreCode{Clip=...} : boolÃ©en pour fixer les annotations Ã&nbsp; l'intÃ©rieur de l'image (\MontreCode{true}).
\end{itemize}

Le deuxiÃ¨me argument, optionnel et entre \MontreCode{[...]}, correspond aux options spÃ©cifiques liÃ©es Ã&nbsp; \MontreCode{includegraphics}.

Le fichier est Ã&nbsp; prÃ©ciser avec sont extension, car le code se charge de vÃ©rifier que le fichier existe.

\begin{DemoCode}{}
\begin{AnnoterImage}[Noeud=TESTIMG][height=3.75cm]&lt;rotate=15&gt;{example-image-golden.pdf}
	%commandes manuelles
	\draw (TESTIMG.center) node[above=5mm,font=\Huge\ttfamily\bfseries,text=blue] {TEST1} ;
	\draw (TESTIMG.north west) node[draw,thick,red,inner sep=0.5mm,below right=2.5mm,font=\LARGE\sffamily\bfseries,text=red] {TEST2} ;
\end{AnnoterImage}
\end{DemoCode}

\end{document}</pre></body></html>