summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-03-30 19:54:20 +0000
committerKarl Berry <karl@freefriends.org>2024-03-30 19:54:20 +0000
commitceb60a889a9349b5f17a956471d750f5a7653619 (patch)
treeaa73640f2a02857e37f307f69ea02a4291500910
parent2f4e2f4e61e34ab99691754741300f42368a16c5 (diff)
customenvs (30mar24)
git-svn-id: svn://tug.org/texlive/trunk@70815 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdfbin116310 -> 116272 bytes
-rw-r--r--Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex8
-rw-r--r--Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdfbin339316 -> 519283 bytes
-rw-r--r--Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex200
-rw-r--r--Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.pdfbin0 -> 177853 bytes
-rw-r--r--Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.tex80
-rw-r--r--Master/texmf-dist/tex/latex/customenvs/customenvs.sty252
7 files changed, 532 insertions, 8 deletions
diff --git a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf
index f8c88d906ed..c4a06de15b3 100644
--- a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf
+++ b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex
index c4727a7422f..4bc63e0c5f9 100644
--- a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex
+++ b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex
@@ -34,8 +34,8 @@
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.2}
-\def\TPdate{17/03/2024}
+\def\TPversion{0.1.3}
+\def\TPdate{30/03/2024}
\usepackage{tcolorbox}
\sethlcolor{lightgray!25}
\NewDocumentCommand\MontreCode{ m }{%
@@ -111,7 +111,9 @@
\section{History}
-\verb|v0.1.1|~:~~~~Pencil of skills
+\verb|v0.1.3|~:~~~~Environment for exercise(s) (in french doc)
+
+\verb|v0.1.2|~:~~~~Pencil of skills
\verb|v0.1.1|~:~~~~Skills table (only french for the moment...)
diff --git a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf
index 2d894043ad5..c81bd43b7f7 100644
--- a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf
+++ b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex
index 5f05be24858..650bb37932e 100644
--- a/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex
+++ b/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex
@@ -39,8 +39,8 @@
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.2}
-\def\TPdate{17 mars 2024}
+\def\TPversion{0.1.3}
+\def\TPdate{30 mars 2024}
\usepackage[most]{tcolorbox}
\tcbuselibrary{listingsutf8}
\newtcblisting{DemoCode}[1]{%
@@ -66,10 +66,10 @@
keywordstyle={\color{violet}},%
classoffset=2,%
alsoletter={-},%
- morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences},%
+ morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences,\StyleEnvtExo,\StyleEnvtExoDefaut,\TitreExo,\ipsum},%
keywordstyle={\color{green!50!black}},%
classoffset=3,%
- morekeywords={Largeur,Filets,EspacesCL,NbCols,Labels,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},%
+ morekeywords={Largeur,Filets,EspacesCL,NbCols,Labels,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},%
keywordstyle={\color{orange}}
},%
#1
@@ -149,6 +149,8 @@
\section{Historique}
+\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
@@ -784,4 +786,194 @@ L'argument, obligatoire et entre \MontreCode{\{...\}} est la liste des catégori
{Chercher/Compétence 1\\Compétence 2,Modéliser/{Compétence 1\\Compétence 2}}
\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 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 à tous les environnements ou à 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 à la hauteur de la ligne en cours ;
+ \item une icône, via \texttt{fontawesome5}, dont la hauteur est adaptée à la hauteur de la ligne en cours ;
+ \item un petit chronomètre, via \texttt{pictochrono}, dont la hauteur est adaptée à la hauteur de la ligne en cours ;
+ \item une ceinture colorée, via \texttt{coloredbelts}, dont la hauteur est adaptée à 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}
+
+\pagebreak
+
+Les \MontreCode{clés} disponibles, à 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{...} à la fin de la ligne ;
+ \item \MontreCode{Image/...} := afficher l'image \MontreCode{...} à la fin de la ligne ;
+ \item \MontreCode{Ceinture/...} := afficher la ceinture couleur \MontreCode{...} à la fin de la ligne ;
+ \item \MontreCode{Chrono/...} := afficher le chrono de durée \MontreCode{...} à la fin de la ligne ;
+ \item \MontreCode{Points/...} := afficher les points \MontreCode{(... points)} à la fin de la ligne ;
+ \end{itemize}
+ \item \MontreCode{Trait} : choix du trait parmi :
+ \begin{itemize}
+ \item \MontreCode{plein} := un trait plain (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}
+
+\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à 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}%exo1
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Trait=pointilles]%exo2
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Trait=dashilles]%exo3
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Icone/\faPython]%exo4
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Ceinture/rouge]%exo5
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Chrono/20]%exo6
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Image/goku_ssj4]%exo7
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Image/sseiya_shura]%exo8
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Points/7]%exo9
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Type=Perso/{Titre perso }]%exo10
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\StyleEnvtExo[Couleur=red,Police=\bfseries\ttfamily,EpTrait=2pt,Libelle={Exercice n°}]
+
+\begin{EnvtExo}[Decoration=Icone/\faAddressBook]%exo11
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Couleur=red,Trait=dashilles]%exo12
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\StyleEnvtExoDefaut
+
+\begin{EnvtExo}%
+ [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo13
+\ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo14
+
+\ipsum<Lang=FR,Type=sent>
+\end{DemoCode}
+
+\pagebreak
+
+\begin{DemoCode}{}
+\includegraphics{envtexo_exemples.pdf}
+\end{DemoCode}
+
\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.pdf b/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.pdf
new file mode 100644
index 00000000000..717f3a12c95
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.tex b/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.tex
new file mode 100644
index 00000000000..bc9bf990f75
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.tex
@@ -0,0 +1,80 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: no, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\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}
+
+\begin{document}
+
+\begin{EnvtExo}%exo1
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Trait=pointilles]%exo2
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Trait=dashilles]%exo3
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Icone/\faPython]%exo4
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Ceinture/rouge]%exo5
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Chrono/20]%exo6
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Image/goku_ssj4]%exo7
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Image/sseiya_shura]%exo8
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Decoration=Points/7]%exo9
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Type=Perso/{Titre perso }]%exo10
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\StyleEnvtExo[Couleur=red,Police=\bfseries\ttfamily,EpTrait=2pt,Libelle={Exercice n°}]
+
+\begin{EnvtExo}[Decoration=Icone/\faAddressBook]%exo11
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Couleur=red,Trait=dashilles]%exo12
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\StyleEnvtExoDefaut
+
+\begin{EnvtExo}%
+ [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo13
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
+\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo14
+
+\ipsum<Lang=FR,Type=sent>
+
+\end{document}
diff --git a/Master/texmf-dist/tex/latex/customenvs/customenvs.sty b/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
index 34b3c30803b..08083eb1034 100644
--- a/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
+++ b/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
@@ -3,9 +3,10 @@
% source pencil...: CC-BY-SA 4.0 https://tex.stackexchange.com/questions/504092/replicating-a-fancy-bordered-text-style-in-latex/504145#504145
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{customenvs}[2024/03/17 0.1.2 Custom classic environments]
+\ProvidesPackage{customenvs}[2024/03/30 0.1.3 Custom classic environments]
%====HISTORIQUE
+% v 0.1.3 Environnement/Commande pour présentation d'un exercice
% v 0.1.2 Crayon de compétences
% v 0.1.1 Ajout de tableaux de compétences
% v 0.1.0 Version initiale
@@ -50,6 +51,7 @@
\RequirePackage{simplekv}
\RequirePackage{xstring}
\RequirePackage{listofitems}
+\RequirePackage{calc}
\RequirePackage{tikz}
\usetikzlibrary{decorations.pathmorphing,positioning,shapes.misc,calc}
@@ -663,6 +665,254 @@
\end{tikzpicture}%
}
+%====EXERCICE PERSO
+
+\newcounter{numeroexo}
+\setcounter{numeroexo}{0}
+\newlength{\eptraitexo}
+\setlength{\eptraitexo}{1.1pt}
+\newlength{\eptraitexospace}
+\setlength{\eptraitexospace}{1.5\eptraitexo}
+\newlength{\tmp@image@hauteur@totale}
+\newlength{\tmp@image@profondeur}
+
+\colorlet{macouleurexo}{blue!50!black}
+
+\newcommand\tmpstyleexo{\bfseries\LARGE\sffamily}%
+\newcommand\tmplabelexo{Exercice~}%
+
+\defKV[globalstyleexo]{%
+ Libelle=\renewcommand\tmplabelexo{#1},%
+ Couleur=\colorlet{macouleurexo}{#1},%
+ Police=\renewcommand\tmpstyleexo{#1},%
+ EpTrait=\setlength{\eptraitexo}{#1}
+}
+
+\setKVdefault[globalstyleexo]{%
+ Libelle={Exercice~},%
+ Couleur={blue!50!black},%
+ Police={\bfseries\LARGE\sffamily},%
+ EpTrait={1.1pt}
+}
+
+\NewDocumentCommand\StyleEnvtExo{ O{} }{%
+ \restoreKV[globalstyleexo]%
+ \setKV[globalstyleexo]{#1}%
+}
+\NewDocumentCommand\StyleEnvtExoDefaut{ }{%
+ \restoreKV[globalstyleexo]%
+}
+
+\defKV[EnvtExercice]{%
+ Type=\def\EnvtExoType{#1},%
+ ComplementTitre=\def\EnvtExoCpltTitre{#1},%
+ CodeDebut=\def\EnvtExoCodeAvant{#1},%
+ %Couleur=\def\EnvtExoCouleur{#1},%
+ EchelleImage=\def\EnvtExoScaleImg{#1},%
+ Decoration=\def\EnvtExoDeco{#1},%
+ Trait=\def\EnvtExoTrait{#1}
+}
+\setKVdefault[EnvtExercice]{
+ Type=Classique,%
+ ComplementTitre={},%
+ CodeDebut={},%
+ %Couleur=macouleurexo,%
+ EchelleImage=1.15,%
+ Compteur=true,%
+ Decoration={},%
+ Trait=plein
+}
+
+\NewDocumentEnvironment{EnvtExo}{ !O{} }%
+{%
+ \useKVdefault[EnvtExercice]%
+ \setKV[EnvtExercice]{#1}%
+ \addtocounter{numeroexo}{1}%
+ \ifboolKV[EnvtExercice]{Compteur}{}{\addtocounter{numeroexo}{-1}}%
+ \def\hrulefill{\leavevmode\leaders\hrule height \eptraitexo\hfill\kern\z@}%épaisseur
+ \noindent\begingroup\color{macouleurexo}%
+ \IfStrEq{\EnvtExoType}{Classique}%OK exo°____vide
+ {%
+ %label avec numéro et complément
+ \tmpstyleexo\tmplabelexo\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre%
+ %trait éventuel
+ \IfStrEqCase{\EnvtExoTrait}{%
+ {plein}{\,\hrulefill}%
+ {pointilles}{\,\dotfill}%
+ {dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}%
+ {non}{\hfill}%
+ }%
+ %décoration éventuelle
+ \IfSubStr{\EnvtExoDeco}{Icone}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]%
+ \,\scalebox{0.85}[0.85]{\EnvtExoIcon}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Ceinture}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoCouleur]%
+ \,\CeintureCouleur{\EnvtExoCouleur}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Chrono}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]%
+ \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Points}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
+ \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ \,(\EnvtExoPts\ \pts)%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Image}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoImg]%
+ \settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}%
+ \,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$%
+ }{}%
+ }{}%
+ \IfSubStr{\EnvtExoType}{Perso}%OK perso____déco
+ {%
+ \StrBehind{\EnvtExoType}{/}[\EnvtExoLabel]%
+ %label avec numéro et complément
+ \tmpstyleexo\EnvtExoLabel\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre%
+ %trait éventuel
+ \IfStrEqCase{\EnvtExoTrait}{%
+ {plein}{\,\hrulefill}%
+ {pointilles}{\,\dotfill}%
+ {dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}%
+ {non}{\hfill}%
+ }%
+ %décoration éventuelle
+ \IfSubStr{\EnvtExoDeco}{Icone}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]%
+ \,\scalebox{0.85}[0.85]{\EnvtExoIcon}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Ceinture}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoCouleur]%
+ \,\CeintureCouleur{\EnvtExoCouleur}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Chrono}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]%
+ \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Points}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
+ \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ \,(\EnvtExoPts\ \pts)%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Image}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoImg]%
+ \settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}%
+ \,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$%
+ }{}%
+ }{}%
+ \endgroup%
+ \def\hrulefill{\leavevmode\leaders\hrule height 0.4pt\hfill\kern\z@}%
+ \par%
+ \EnvtExoCodeAvant%
+}%
+{}%
+
+\NewDocumentCommand\TitreExo{ !O{} }{%
+ \useKVdefault[EnvtExercice]%
+ \setKV[EnvtExercice]{#1}%
+ \addtocounter{numeroexo}{1}%
+ \ifboolKV[EnvtExercice]{Compteur}{}{\addtocounter{numeroexo}{-1}}%
+ \def\hrulefill{\leavevmode\leaders\hrule height \eptraitexo\hfill\kern\z@}%épaisseur
+ \noindent\begingroup\color{macouleurexo}%
+ \IfStrEq{\EnvtExoType}{Classique}%OK exo°____vide
+ {%
+ %label avec numéro et complément
+ \tmpstyleexo\tmplabelexo\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre%
+ %trait éventuel
+ \IfStrEqCase{\EnvtExoTrait}{%
+ {plein}{\,\hrulefill}%
+ {pointilles}{\,\dotfill}%
+ {dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}%
+ {non}{\hfill}%
+ }%
+ %décoration éventuelle
+ \IfSubStr{\EnvtExoDeco}{Icone}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]%
+ \,\scalebox{0.85}[0.85]{\EnvtExoIcon}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Ceinture}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoCouleur]%
+ \,\CeintureCouleur{\EnvtExoCouleur}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Chrono}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]%
+ \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Points}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
+ \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ \,(\EnvtExoPts\ \pts)%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Image}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoImg]%
+ \settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}%
+ \,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$%
+ }{}%
+ }{}%
+ \IfSubStr{\EnvtExoType}{Perso}%OK perso____déco
+ {%
+ \StrBehind{\EnvtExoType}{/}[\EnvtExoLabel]%
+ %label avec numéro et complément
+ \tmpstyleexo\EnvtExoLabel\ifboolKV[EnvtExercice]{Compteur}{\thenumeroexo}{}\EnvtExoCpltTitre%
+ %trait éventuel
+ \IfStrEqCase{\EnvtExoTrait}{%
+ {plein}{\,\hrulefill}%
+ {pointilles}{\,\dotfill}%
+ {dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}%
+ {non}{\hfill}%
+ }%
+ %décoration éventuelle
+ \IfSubStr{\EnvtExoDeco}{Icone}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]%
+ \,\scalebox{0.85}[0.85]{\EnvtExoIcon}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Ceinture}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoCouleur]%
+ \,\CeintureCouleur{\EnvtExoCouleur}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Chrono}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoChrono]%
+ \,\pictochrono[ColTime=macouleurexo!50]{\EnvtExoChrono}%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Points}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
+ \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ \,(\EnvtExoPts\ \pts)%
+ }{}%
+ \IfSubStr{\EnvtExoDeco}{Image}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoImg]%
+ \settototalheight{\tmp@image@hauteur@totale}{\hbox{\tmpstyleexo qB}}%
+ \,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp@image@hauteur@totale]{\EnvtExoImg}}}$%
+ }{}%
+ }{}%
+ \endgroup%
+ \def\hrulefill{\leavevmode\leaders\hrule height 0.4pt\hfill\kern\z@}%
+ \par%
+ \EnvtExoCodeAvant%
+}
+
%%----COMMANDES EN
%====QCMs