texlive[72764] Master/texmf-dist: customenvs (4nov24)
commits+karl at tug.org
commits+karl at tug.org
Mon Nov 4 22:41:21 CET 2024
Revision: 72764
https://tug.org/svn/texlive?view=revision&revision=72764
Author: karl
Date: 2024-11-04 22:41:21 +0100 (Mon, 04 Nov 2024)
Log Message:
-----------
customenvs (4nov24)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf
trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex
trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf
trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex
trunk/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.pdf
trunk/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.tex
trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex 2024-11-04 21:41:11 UTC (rev 72763)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex 2024-11-04 21:41:21 UTC (rev 72764)
@@ -34,8 +34,8 @@
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.2.3}
-\def\TPdate{09/14/2024}
+\def\TPversion{0.2.6}
+\def\TPdate{04/11/2024}
\usepackage{tcolorbox}
\sethlcolor{lightgray!25}
\NewDocumentCommand\MontreCode{ m }{%
@@ -111,6 +111,12 @@
\section{History}
+\verb|v0.2.6|~:~~~Whell of skills, speedometer
+
+\verb|v0.2.5|~:~~~Bugfix with exercices (\textsf{[fr]} macro)
+
+\verb|v0.2.4|~:~~~Small box \textit{marker}
+
\verb|v0.2.3|~:~~~Highway signs + sold banners (see \textsf{[fr]} doc)
\verb|v0.2.2|~:~~~Flared arrow, with \TikZ
@@ -117,27 +123,27 @@
\verb|v0.2.1|~:~~~Enhancements for \textit{stars skills} + AutoGrid for \TikZ\ (see \textsf{[fr]} doc)
-\verb|v0.2.0|~:~~~~Skills with stars (\textsf{fontawesome5} or \TikZ)
+\verb|v0.2.0|~:~~~Skills with stars (\textsf{fontawesome5} or \TikZ)
-\verb|v0.1.9|~:~~~~Title banner
+\verb|v0.1.9|~:~~~Title banner
-\verb|v0.1.8|~:~~~~Score banner
+\verb|v0.1.8|~:~~~Score banner
-\verb|v0.1.7|~:~~~~Small patch for \textsf{Vignette} macro (see \texttt{[fr]} documentation)
+\verb|v0.1.7|~:~~~Small patch for \textsf{Vignette} macro (see \texttt{[fr]} documentation)
-\verb|v0.1.6|~:~~~~Small patchs for \textsf{displayskip} + \textsf{pas-tableur} (see \texttt{[fr]} documentation)
+\verb|v0.1.6|~:~~~Small patchs for \textsf{displayskip} + \textsf{pas-tableur} (see \texttt{[fr]} documentation)
-\verb|v0.1.5|~:~~~~New macros for boxes with \textsf{tcolorbox} (see \texttt{[fr]} documentation)
+\verb|v0.1.5|~:~~~New macros for boxes with \textsf{tcolorbox} (see \texttt{[fr]} documentation)
-\verb|v0.1.4|~:~~~~Create a SMS conversation
+\verb|v0.1.4|~:~~~Create a SMS conversation
-\verb|v0.1.3|~:~~~~Environment for exercise(s) (in french doc)
+\verb|v0.1.3|~:~~~Environment for exercise(s) (in french doc)
-\verb|v0.1.2|~:~~~~Pencil of skills
+\verb|v0.1.2|~:~~~Pencil of skills
-\verb|v0.1.1|~:~~~~Skills table (only french for the moment...)
+\verb|v0.1.1|~:~~~Skills table (only french for the moment...)
-\verb|v0.1.0|~:~~~~Initial version
+\verb|v0.1.0|~:~~~Initial version
\vspace*{5mm}
@@ -714,4 +720,125 @@
\end{tikzpicture}
\end{demohigh}
+\subsection{Small markerbox}
+
+\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tbcmarker[color=...,width=...,font=...]{text}
+\end{codehigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tbcmarker{my text}
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\tbcmarker[color=olive,font=\normalfont\normalsize]{my text}
+\end{demohigh}
+
+%\subsection{Letters wirh pixelart style (experimental)}
+%
+%\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+%%one letter only
+%\PixlLetter%
+% [height=...,thick=...,color=...,gridcolor=...,
+% offseth=...,offsetv=...,gridafter=...,nospaceafter=...]
+% <tikzpicture options>
+% {letter}
+%
+%%several words
+%\PixlLetters%
+% [height=...,thick=...,color=...,gridcolor=...,
+% offseth=...,offsetv=...,gridafter=...,nospaceafter=...]
+% {letters}
+%\end{codehigh}
+%
+%\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+%\PixlLetter{M}\PixlLetter{o}\PixlLetter{n}\PixlLetter{k}\PixlLetter{e}\PixlLetter{y}
+%\end{codehigh}
+%
+%\PixlLetter{M}\PixlLetter{o}\PixlLetter{n}\PixlLetter{k}\PixlLetter{e}\PixlLetter{y}
+%
+%\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+%\PixlLetters[height=2cm,color=red,gridafter,offsetv=1]{(Monkey)}
+%\end{codehigh}
+%
+%\PixlLetters[height=2cm,color=red,gridafter,offsetv=1]{(Monkey)}
+%
+%\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+%\PixlLetters[color=blue]{Monkeys roxxxx !?}
+%\end{codehigh}
+%
+%\PixlLetters[color=blue]{Monkeys roxxxx !?}
+%
+%\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+%\PixlLetters[color=red]{1+1=2}
+%\end{codehigh}
+%
+%\PixlLetters[color=red]{1+1=2}
+
+\subsection{Wheel of skills / speedometer}
+
+\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\WheelOfSkills[%
+ Radius=..., %radius of wheel
+ Mark=..., %absolute position of optional marker
+ Font=..., %font of optional labels
+ SkillsList=..., %list of optional skill labels
+ ]%
+ {number of skills or list of colors}
+\end{codehigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\WheelOfSkills[%
+ Radius=3cm,%
+ Mark=5.85,%
+ Font=\scriptsize\bfseries\ttfamily,%
+ SkillsList={Niv.1,Niv.2,Niv.3,Niv.4,Niv.5,Niv.6,Niv.7,Niv.8,Niv.9,Niv.10}]%
+ {10}%
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\WheelOfSkills[%
+ Mark=1.5,%
+ Font=\scriptsize\bfseries\sffamily,%
+ SkillsList={LOW-MODERATE,NORMAL,HIGH,VERY HIGH,SEVERE,EXTREME,CATASTROPHIC}
+ ]%
+ {yellow!50,orange!50,red!50,blue!50,teal!50,purple!50,violet!50}%
+\end{demohigh}
+
+\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\begin{SkillsWheel}[%
+ Radius=..., %radius of wheel
+ Mark=..., %absolute position of optional marker
+ Font=..., %font of optional labels
+ SkillsList=..., %list of optional skill labels
+ ]{number of skills or list of colors}
+ \PutIconsSkills[Pos=...,Scale=...]{list of icons}
+\end{SkillsWheel}
+\end{codehigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+\begin{SkillsWheel}[Radius=5cm,Mark=5.85]%
+ {yellow!50,orange!50,red!50,blue!50,teal!50,purple!50,violet!50}
+ \PutIconsSkills[Echelle=3]%
+ {\faPython,\faAdjust,\faAngellist,\faAmbulance,\faAdjust,\faBabyCarriage,\faBlender}
+\end{SkillsWheel}
+\end{demohigh}
+
+\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+%inline version, with automatic dimensions
+\miniskillwheel[Colors=...,Mark=...]{nb of levels}
+
+%normal version
+\tkzspeedometer[Size=...,Mark=...,Colors=...]{nb levels}
+\end{codehigh}
+
+\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
+%inline version, with automatic dimensions
+\scalebox{2.25}[2.25]{\sffamily Small inline \textit{skillwheel}
+\miniskillwheel[Colors=red/blue,Mark=4.33]{7} for testing.}
+
+%normal version
+\tkzspeedometer[Size=5cm,Mark=2.25,Colors=teal/magenta]{6}
+\end{demohigh}
+
\end{document}
\ No newline at end of file
Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex 2024-11-04 21:41:11 UTC (rev 72763)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex 2024-11-04 21:41:21 UTC (rev 72764)
@@ -39,8 +39,8 @@
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.2.3}
-\def\TPdate{14 septembre 2024}
+\def\TPversion{0.2.6}
+\def\TPdate{4 novembre 2024}
\usepackage{tcolorbox}
\tcbuselibrary{listingsutf8}
%\usepackage{eurosym}
@@ -65,14 +65,14 @@
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,\VilleDist},%
+ 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,\NiveauDiffExos,\tkzEtoiles,\tkzGrilleAuto,\tkzAutoGridLocal,\tkzAutoGridActivate,\tkzFlecheEvasee,PanneauAutoroute,\AfficheSoldes},%
+ 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,\NiveauDiffExos,\tkzEtoiles,\tkzGrilleAuto,\tkzAutoGridLocal,\tkzAutoGridActivate,\tkzFlecheEvasee,PanneauAutoroute,\AfficheSoldes,\tbcmarker,\VilleDist,\RoueNiveaux,EnvRoueNiveaux,\PlacerIconeNiveau,\PlacerIconesNiveaux,\MiniCompteurNiveaux,\tkzspeedometer},%
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,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},%
+ 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,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},%
keywordstyle={\color{orange}}
},%
#1
@@ -152,6 +152,12 @@
\section{Historique}
+\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\
@@ -817,6 +823,133 @@
\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]<options tikz>{couleurs ou nb de niveaux}%
+\end{DemoCode}
+
+\begin{DemoCode}{listing only}
+\begin{EnvRoueNiveaux}[clés]<options tikz>{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, à 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{<...>}, permet de spécifier des options à 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\&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}
+%à utiliser en mode en ligne
+\MiniCompteurNiveaux[clés]<options tikz>{nb niveaux}
+\end{DemoCode}
+
+\begin{DemoCode}{listing only}
+%mode autonome
+\tkzspeedometer[clés]<options tikz>{nb niveaux}
+\end{DemoCode}
+
+Les \MontreCode{clés} (communes) disponibles, à 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{<...>}, permet de spécifier des options à 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{Bandeau de score}
\subsection{Principe et fonctionnement}
@@ -1021,6 +1154,7 @@
\item une icône, via \texttt{fontawesome5}, dont la hauteur est adaptée à la hauteur de la ligne en cours ;
\item des étoiles, via \texttt{fontawesome5} ou \TikZ, 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 un petit \textit{speedometer}, 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.
@@ -1041,6 +1175,7 @@
\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 ;
+ \item \MontreCode{Speedo/...§...} := afficher un \textit{speedometer} ;
\item \MontreCode{faEtoiles/...} := afficher des étoiles de difficultés à la fin de la ligne ;
\item \MontreCode{tkzEtoiles/...} := afficher des étoiles de difficultés à la fin de la ligne ;
\end{itemize}
@@ -1058,7 +1193,6 @@
\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}
@@ -1126,28 +1260,30 @@
\begin{EnvtExo}[Decoration=tkzEtoiles/3.5§5]\ipsum<Lang=FR,Type=sent>\end{EnvtExo}%exo8
-\begin{EnvtExo}[Decoration=Points/7]\ipsum<Lang=FR,Type=sent>\end{EnvtExo}%exo9
+\begin{EnvtExo}[Decoration=Points/7.5]\ipsum<Lang=FR,Type=sent>\end{EnvtExo}%exo9
-\begin{EnvtExo}[Type=Perso/{Titre perso }]\ipsum<Lang=FR,Type=sent>\end{EnvtExo}%exo10
+\begin{EnvtExo}[Decoration=Speedo/4.25§6]\ipsum<Lang=FR,Type=sent>\end{EnvtExo}%exo10
+\begin{EnvtExo}[Type=Perso/{Titre perso }]\ipsum<Lang=FR,Type=sent>\end{EnvtExo}%exo11
+
\StyleEnvtExo[Couleur=red,CouleurDeco=teal,Police=\bfseries\ttfamily,EpTrait=2pt, Libelle={Exercice n°}]
\begin{EnvtExo}[Decoration=Icone/\faAddressBook]
\ipsum<Lang=FR,Type=sent>
-\end{EnvtExo}%exo11
+\end{EnvtExo}%exo12
-\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Trait=dashilles]%exo12
+\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Trait=dashilles]%exo13
\ipsum<Lang=FR,Type=sent>
\end{EnvtExo}
\StyleEnvtExoDefaut
\begin{EnvtExo}%
- [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo13
+ [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo14
\ipsum<Lang=FR,Type=sent>
\end{EnvtExo}
-\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo14
+\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo15
\ipsum<Lang=FR,Type=sent>
\end{DemoCode}
@@ -1326,7 +1462,7 @@
\end{DemoCode}
-\subsection{Boîte arrondie}
+\subsection{Boîte arrondie, petite boîte type marker}
\begin{DemoCode}{listing only}
\BoiteArrondie[Fond=...,Texte=...,EspH=...,Style=...]{texte}[noeud tikz]
@@ -1336,6 +1472,69 @@
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 à 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 à 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 à préférer !)
+%
+%\begin{DemoCode}{listing only}
+%%une lettre
+%\PixlLetter%
+% [height=...,thick=...,color=...,gridcolor=...,
+% offseth=...,offsetv=...,gridafter=...,nospaceafter=...]
+% <options tikzpicture>
+% {lettre}
+%
+%%l'apostrophe, si besoin...
+%\PixlLetterQuote%
+% [height=...,thick=...,color=...,gridcolor=...,
+% offseth=...,offsetv=...,gridafter=...,nospaceafter=...]
+% <options tikzpicture>
+%
+%%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.
Modified: trunk/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.tex 2024-11-04 21:41:11 UTC (rev 72763)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/envtexo_exemples.tex 2024-11-04 21:41:21 UTC (rev 72764)
@@ -54,21 +54,25 @@
\ipsum<Lang=FR,Type=sent>
\end{EnvtExo}
-\begin{EnvtExo}[Decoration=Points/7]%exo10
+\begin{EnvtExo}[Decoration=Speedo/4.25§6]%exo10
\ipsum<Lang=FR,Type=sent>
\end{EnvtExo}
-\begin{EnvtExo}[Type=Perso/{Titre perso },Etoiles={2.5§5}]%exo11
+\begin{EnvtExo}[Decoration=Points/7.5]%exo11
\ipsum<Lang=FR,Type=sent>
\end{EnvtExo}
+\begin{EnvtExo}[Type=Perso/{Titre perso },Etoiles={2.5§5}]%exo12
+ \ipsum<Lang=FR,Type=sent>
+\end{EnvtExo}
+
\StyleEnvtExo[Couleur=red,CouleurDeco=teal,Police=\bfseries\ttfamily,EpTrait=2pt,Libelle={Exercice n°}]
-\begin{EnvtExo}[Decoration=Icone/\faAddressBook]%exo12
+\begin{EnvtExo}[Decoration=Icone/\faAddressBook]%exo13
\ipsum<Lang=FR,Type=sent>
\end{EnvtExo}
-\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Trait=dashilles,Etoiles=0.5]%exo13
+\begin{EnvtExo}[Type=Perso/{Titre perso },Decoration=Chrono/25,Trait=dashilles,Etoiles=0.5]%exo14
\ipsum<Lang=FR,Type=sent>
\end{EnvtExo}
@@ -75,11 +79,11 @@
\StyleEnvtExoDefaut
\begin{EnvtExo}%
- [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo14
+ [Type=Perso/{Titre perso~},Decoration=Image/goku_ssj4,Trait=non,Compteur=false]%exo15
\ipsum<Lang=FR,Type=sent>
\end{EnvtExo}
-\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo15
+\TitreExo[Type=Perso/{Annexe Exercice 3},Compteur=false,Decoration=Image/sseiya_aiolos]%exo16
\ipsum<Lang=FR,Type=sent>
Modified: trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty 2024-11-04 21:41:11 UTC (rev 72763)
+++ trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty 2024-11-04 21:41:21 UTC (rev 72764)
@@ -3,9 +3,12 @@
% 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/09/14 0.2.3 Custom classic environments]
+\ProvidesPackage{customenvs}[2024/11/04 0.2.6 Custom classic environments]
%====HISTORIQUE
+% v 0.2.6 Roue des compétences / SkillsWheel / speedometer
+% v 0.2.5 Modification mineure des points dans l'environnement EnvtExo
+% v 0.2.4 Petite boîte marker
% v 0.2.3 Panneau autoroutier + Panneau Soldes
% v 0.2.2 Flèche évasée, en TikZ
% v 0.2.1 Modification mineure de la gestion des étoiles tikz (baseline) + grille auto tikzpicture
@@ -947,8 +950,10 @@
\IfSubStr{\EnvtExoDeco}{Points}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
- \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
- \,\textcolor{macouleurexodeco}{(\EnvtExoPts\ \pts)}%
+ \xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
+ %\IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ %\,\textcolor{macouleurexodeco}{(\num{\EnvtExoPts} \pts)}%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -956,6 +961,12 @@
\settototalheight{\tmp at image@hauteur at totale}{\hbox{\tmpstyleexo qB}}%
\,$\vcenter{\hbox{\includegraphics[height=\EnvtExoScaleImg\tmp at image@hauteur at totale]{\EnvtExoImg}}}$%
}{}%
+ \IfSubStr{\EnvtExoDeco}{Speedo}%
+ {%
+ \StrBehind{\EnvtExoDeco}{/}[\EnvtExoLevel]%
+ \StrCut{\EnvtExoLevel}{§}{\EnvtExoLevelSk}{\EnvtExoLevelTo}%
+ \,\MiniCompteurNiveaux[Couleurs=macouleurexodeco,Marqueur=\EnvtExoLevelSk]{\EnvtExoLevelTo}%
+ }{}%
\IfSubStr{\EnvtExoDeco}{faEtoiles}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoStars]%
@@ -1025,8 +1036,10 @@
\IfSubStr{\EnvtExoDeco}{Points}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
- \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
- \,\textcolor{macouleurexodeco}{(\EnvtExoPts\ \pts)}%
+ \xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
+ %\IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
+ %\,\textcolor{macouleurexodeco}{(\num{\EnvtExoPts} \pts)}%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -1116,8 +1129,9 @@
\IfSubStr{\EnvtExoDeco}{Points}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
- \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
- \,(\EnvtExoPts\ \pts)%
+ \xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
+ %\,(\EnvtExoPts\ \pts)%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -1194,8 +1208,9 @@
\IfSubStr{\EnvtExoDeco}{Points}%
{%
\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
- \IfStrEq{\EnvtExoPts}{1}{\def\pts{point}}{\def\pts{points}}%
- \,(\EnvtExoPts\ \pts)%
+ \xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
+ %\,(\EnvtExoPts\ \pts)%
+ \,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
}{}%
\IfSubStr{\EnvtExoDeco}{Image}%
{%
@@ -3068,4 +3083,459 @@
\endtcolorbox%
}
+%====tcbmarker
+\defKV[tcbmarker]{%
+ Couleur=\def\tcbmarkercolor{#1},%
+ color=\def\tcbmarkercolor{#1},%
+ Police=\def\tcbmarkerfonte{#1},%
+ font=\def\tcbmarkerfonte{#1},%
+ Largeur=\def\tcbmarkerlarg{#1},%
+ width=\def\tcbmarkerlarg{#1}
+}
+\setKVdefault[tcbmarker]{%
+ Couleur=yellow,%
+ color=yellow,%
+ Police=\small\sffamily,%
+ font=\small\sffamily,%
+ Largeur=auto,%
+ width=auto
+}
+
+\NewDocumentCommand\tbcmarker{ O{} D<>{} m }{%
+ \restoreKV[tcbmarker]%
+ \setKV[tcbmarker]{#1}%
+ \IfEq{\tcbmarkerlarg}{auto}%
+ {%
+ \tcbset{tcbmarkerbase/.style={enhanced,box align=base}}
+ }%
+ {%
+ \tcbset{tcbmarkerbase/.style={enhanced,capture=minipage,width=\tcbmarkerlarg}}
+ }%
+ \tcbox[tcbmarkerbase,nobeforeafter,fontupper=\tcbmarkerfonte,%
+ boxrule=0.5pt,boxsep=0.5mm,left=2mm,right=5mm,top=0pt,bottom=0pt,colback=\tcbmarkercolor!15,colframe=\tcbmarkercolor!20!black,sharp corners,rounded corners=southeast,arc is angular,arc=3mm,%
+ underlay={\path[line width=0.5pt,fill=tcbcolback!80!black] ([yshift=3mm]interior.south east)--++(-0.4,-0.1)--++(0.1,-0.2);\path[line width=0.5pt,draw=tcbcolframe,shorten <=-0.05mm,shorten >=-0.05mm] ([yshift=3mm]interior.south east)--++(-0.4,-0.1)--++(0.1,-0.2);},drop fuzzy shadow,#2,before upper={\vphantom{(qÉ)}},#2]{#3}%
+}
+
+%====SkillsWheel [en & fr]
+\usetikzlibrary{bbox}
+\newlength{\skilwheelradius}
+\setlength\skilwheelradius{4cm}
+
+\defKV[skillswheel]{%
+ Rayon=\setlength\skilwheelradius{#1},%
+ Radius=\setlength\skilwheelradius{#1},%
+ Police=\def\skilwheelfonte{#1},%
+ Font=\def\skilwheelfonte{#1},%
+ ListeNiveaux=\def\skilwheelskills{#1},%
+ SkillsList=\def\skilwheelskills{#1},%
+ Marqueur=\def\skilwheelmark{#1},%
+ Mark=\def\skilwheelmark{#1}
+}
+\setKVdefault[skillswheel]{%
+ Rayon=3cm,Radius=3cm,
+ Police=\bfseries\sffamily,Font=\bfseries\sffamily,%
+ ListeNiveaux={},SkillsList={},%
+ Marqueur={},Mark={}
+}
+
+\NewDocumentCommand\RoueNiveaux{ O{} D<>{} m }{%
+ %1 := clés
+ %2 := liste couleurs
+ %3 := choix marqueur
+ \restoreKV[skillswheel]%
+ \setKV[skillswheel]{#1}%
+ %\IfEq{#3}{}{\xdef\skilwheelmark{-1}}{\xdef\skilwheelmark{#3}}%
+ \IfSubStr{#3}{,}%
+ {%
+ \readlist*\skilswheelcolors{#3}%
+ }%
+ {%
+ \xdef\skilswheelcolorslen{#3}%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\skilwheelmark >= 0 'and' \skilwheelmark <= \skilswheelcolorslen}%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{180-180*(\skilwheelmark)/\skilswheelcolorslen}}%
+ }%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{0.5*\skilswheelcolorslen}}%
+ }%
+ }%
+ \IfEq{\skilwheelskills}{}{}{\readlist*\skilswheellstskills{\skilwheelskills}}%
+ \begin{tikzpicture}[transform shape,#2]
+ \foreach \i in {1,...,\skilswheelcolorslen}{%
+ \IfSubStr{#3}{,}%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius},fill={\skilswheelcolors[\i]}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ %label
+ \IfEq{\skilwheelskills}{}%
+ {}%
+ {%
+ \xintifboolexpr{ 180*(\i-1)/\skilswheelcolorslen <= 90}%
+ {%
+ \draw[draw=none] ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above right,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ {%
+ \draw[draw=none] ({180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above left,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ }%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \node[rotate={90+\skilswheelposcurs},regular polygon,regular polygon sides=3,fill=black,inner sep=0pt,minimum size={0.125*\skilwheelradius},outer sep=0pt] at (\skilswheelposcurs:{1.0125\skilwheelradius}) {} ;
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\WheelOfSkills{ O{} D<>{} m }{%
+ %1 := clés
+ %2 := liste couleurs
+ %3 := choix marqueur
+ \restoreKV[skillswheel]%
+ \setKV[skillswheel]{#1}%
+ %\IfEq{#3}{}{\xdef\skilwheelmark{-1}}{\xdef\skilwheelmark{#3}}%
+ \IfSubStr{#3}{,}%
+ {%
+ \readlist*\skilswheelcolors{#3}%
+ }%
+ {%
+ \xdef\skilswheelcolorslen{#3}%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\skilwheelmark >= 0 'and' \skilwheelmark <= \skilswheelcolorslen}%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{180-180*(\skilwheelmark)/\skilswheelcolorslen}}%
+ }%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{0.5*\skilswheelcolorslen}}%
+ }%
+ }%
+ \IfEq{\skilwheelskills}{}{}{\readlist*\skilswheellstskills{\skilwheelskills}}%
+ \begin{tikzpicture}[transform shape,#2]
+ \foreach \i in {1,...,\skilswheelcolorslen}{%
+ \IfSubStr{#3}{,}%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius},fill={\skilswheelcolors[\i]}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ %label
+ \IfEq{\skilwheelskills}{}%
+ {}%
+ {%
+ \xintifboolexpr{ 180*(\i-1)/\skilswheelcolorslen <= 90}%
+ {%
+ \draw[draw=none] ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above right,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ {%
+ \draw[draw=none] ({180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above left,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ }%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \node[rotate={90+\skilswheelposcurs},regular polygon,regular polygon sides=3,fill=black,inner sep=0pt,minimum size={0.125*\skilwheelradius},outer sep=0pt] at (\skilswheelposcurs:{1.0125\skilwheelradius}) {} ;
+ }%
+ \end{tikzpicture}%
+}
+
+\defKV[skillswheellevel]{%
+ Pos=\def\skilswheelposlab{#1},%
+ Echelle=\def\skilswheelscalelab{#1},%
+ Scale=\def\skilswheelscalelab{#1},%
+}
+\setKVdefault[skillswheellevel]{%
+ Pos=0.80,%
+ Echelle=2,Scale=2
+}
+
+\NewDocumentCommand\PlacerIconeNiveau{ O{} m m }{%
+ \restoreKV[skillswheellevel]%
+ \setKV[skillswheellevel]{#1}%
+ \node[rotate={90-(180*(#2-0.5)/\skilswheelcolorslen)},inner sep=0pt,outer sep=0pt,scale=\skilswheelscalelab] at ({180-180*(#2-0.5)/\skilswheelcolorslen}:{\skilswheelposlab\skilwheelradius}) {#3} ;
+}
+
+\NewDocumentCommand\PutIconSkill{ O{} m m }{%
+ \restoreKV[skillswheellevel]%
+ \setKV[skillswheellevel]{#1}%
+ \node[rotate={90-(180*(#2-0.5)/\skilswheelcolorslen)},inner sep=0pt,outer sep=0pt,scale=\skilswheelscalelab] at ({180-180*(#2-0.5)/\skilswheelcolorslen}:{\skilswheelposlab\skilwheelradius}) {#3} ;
+}
+
+\NewDocumentCommand\PlacerIconesNiveaux{ O{} m }{%
+ \restoreKV[skillswheellevel]%
+ \setKV[skillswheellevel]{#1}%
+ \readlist*\skllsticon{#2}%
+ \foreach \i in {1,...,\skllsticonlen}{%
+ \node[rotate={90-(180*(\i-0.5)/\skilswheelcolorslen)},inner sep=0pt,outer sep=0pt,scale=\skilswheelscalelab] at ({180-180*(\i-0.5)/\skilswheelcolorslen}:{\skilswheelposlab\skilwheelradius}) {\skllsticon[\i]} ;
+ }
+}
+
+\NewDocumentCommand\PutIconsSkills{ O{} m }{%
+ \restoreKV[skillswheellevel]%
+ \setKV[skillswheellevel]{#1}%
+ \readlist*\skllsticon{#2}%
+ \foreach \i in {1,...,\skllsticonlen}{%
+ \node[rotate={90-(180*(\i-0.5)/\skilswheelcolorslen)},inner sep=0pt,outer sep=0pt,scale=\skilswheelscalelab] at ({180-180*(\i-0.5)/\skilswheelcolorslen}:{\skilswheelposlab\skilwheelradius}) {\skllsticon[\i]} ;
+ }
+}
+
+\NewDocumentEnvironment{EnvRoueNiveaux}{ O{} D<>{} m }%
+{%
+ %1 := clés
+ %2 := liste couleurs
+ %3 := choix marqueur
+ \restoreKV[skillswheel]%
+ \setKV[skillswheel]{#1}%
+ %\IfEq{#3}{}{\xdef\skilwheelmark{-1}}{\xdef\skilwheelmark{#3}}%
+ \IfSubStr{#3}{,}%
+ {%
+ \readlist*\skilswheelcolors{#3}%
+ }%
+ {%
+ \xdef\skilswheelcolorslen{#3}%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\skilwheelmark >= 0 'and' \skilwheelmark <= \skilswheelcolorslen}%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{180-180*(\skilwheelmark)/\skilswheelcolorslen}}%
+ }%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{0.5*\skilswheelcolorslen}}%
+ }%
+ }%
+ \IfEq{\skilwheelskills}{}{}{\readlist*\skilswheellstskills{\skilwheelskills}}%
+ \begin{tikzpicture}[transform shape,#2]
+ \foreach \i in {1,...,\skilswheelcolorslen}{%
+ \IfSubStr{#3}{,}%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius},fill={\skilswheelcolors[\i]}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ %label
+ \IfEq{\skilwheelskills}{}%
+ {}%
+ {%
+ \xintifboolexpr{ 180*(\i-1)/\skilswheelcolorslen <= 90}%
+ {%
+ \draw[draw=none] ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above right,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ {%
+ \draw[draw=none] ({180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above left,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ }%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \node[rotate={90+\skilswheelposcurs},regular polygon,regular polygon sides=3,fill=black,inner sep=0pt,minimum size={0.125*\skilwheelradius},outer sep=0pt] at (\skilswheelposcurs:{1.0125\skilwheelradius}) {} ;
+ }%
+}%
+{%
+ \end{tikzpicture}%
+}
+
+\NewDocumentEnvironment{SkillsWheel}{ O{} D<>{} m }%
+{%
+ %1 := clés
+ %2 := liste couleurs
+ %3 := choix marqueur
+ \restoreKV[skillswheel]%
+ \setKV[skillswheel]{#1}%
+ %\IfEq{#3}{}{\xdef\skilwheelmark{-1}}{\xdef\skilwheelmark{#3}}%
+ \IfSubStr{#3}{,}%
+ {%
+ \readlist*\skilswheelcolors{#3}%
+ }%
+ {%
+ \xdef\skilswheelcolorslen{#3}%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\skilwheelmark >= 0 'and' \skilwheelmark <= \skilswheelcolorslen}%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{180-180*(\skilwheelmark)/\skilswheelcolorslen}}%
+ }%
+ {%
+ \xdef\skilswheelposcurs{\xintfloateval{0.5*\skilswheelcolorslen}}%
+ }%
+ }%
+ \IfEq{\skilwheelskills}{}{}{\readlist*\skilswheellstskills{\skilwheelskills}}%
+ \begin{tikzpicture}[transform shape,#2]
+ \foreach \i in {1,...,\skilswheelcolorslen}{%
+ \IfSubStr{#3}{,}%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius},fill={\skilswheelcolors[\i]}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ {%
+ \draw[line join=mitter,line cap=rect,line width=\fpeval{0.015\skilwheelradius}] ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) -- ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) arc({180-180*(\i-1)/\skilswheelcolorslen}:{180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) arc({180-180*(\i)/\skilswheelcolorslen}:{180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) ;
+ }%
+ %label
+ \IfEq{\skilwheelskills}{}%
+ {}%
+ {%
+ \xintifboolexpr{ 180*(\i-1)/\skilswheelcolorslen <= 90}%
+ {%
+ \draw[draw=none] ({180-180*(\i-1)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i-1)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above right,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ {%
+ \draw[draw=none] ({180-180*(\i)/\skilswheelcolorslen}:\skilwheelradius) -- ({180-180*(\i)/\skilswheelcolorslen}:{0.075\skilwheelradius}) node[inner sep=1.5pt,sloped,pos=0.033,above left,font=\skilwheelfonte] {\vphantom{()}\skilswheellstskills[\i]} ;
+ }%
+ }%
+ }%
+ \IfEq{\skilwheelmark}{}%
+ {}%
+ {%
+ \node[rotate={90+\skilswheelposcurs},regular polygon,regular polygon sides=3,fill=black,inner sep=0pt,minimum size={0.125*\skilwheelradius},outer sep=0pt] at (\skilswheelposcurs:{1.0125\skilwheelradius}) {} ;
+ }%
+}%
+{%
+ \end{tikzpicture}%
+}
+
+\newlength{\tmphauteurgradniv}
+\newlength{\tmphauteurspeedom}
+
+\defKV[miniskillswheel]{%
+ Couleurs=\def\miniskillswheelcol{#1},%
+ Colors=\def\miniskillswheelcol{#1},%
+ Marqueur=\def\miniskillswheelmark{#1},%
+ Mark=\def\miniskillswheelmark{#1},%
+ Taille=\setlength{\tmphauteurspeedom}{#1},%
+ Size=\setlength{\tmphauteurspeedom}{#1}
+}
+\setKVdefault[miniskillswheel]{%
+ Couleurs=black,%
+ Colors=black,
+ Marqueur={},%
+ Mark={},
+ Taille=4cm,%
+ Size=4cm
+}
+
+\NewDocumentCommand\MiniCompteurNiveaux{ O{} D<>{} m }{%
+ \restoreKV[miniskillswheel]%
+ \setKV[miniskillswheel]{#1}%
+ \settototalheight{\tmphauteurgradniv}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \setlength{\tmphauteurgradniv}{0.90\tmphauteurgradniv}%.
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\miniskillswheelmark >= 0 'and' \miniskillswheelmark <= #3}%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{180-180*(\miniskillswheelmark)/(#3)}}%
+ }%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{0.5*(#3)}}%
+ }%
+ }%
+ \IfSubStr{\miniskillswheelcol}{/}%
+ {%
+ \StrCut{\miniskillswheelcol}{/}{\miniskillswheelcolp}{\miniskillswheelcols}%
+ }%
+ {%
+ \xdef\miniskillswheelcolp{\miniskillswheelcol}\xdef\miniskillswheelcols{\miniskillswheelcol}%
+ }%
+ \begin{tikzpicture}[bezier bounding box,baseline={-0.075\tmphauteurgradniv},line width={0.075\tmphauteurgradniv},#2,transform shape]
+ \draw[\miniskillswheelcolp] (-15:{0.7588\tmphauteurgradniv}) arc(-15:195:{0.7588\tmphauteurgradniv}) --cycle ;
+ \foreach \i in {0,...,#3}{%
+ \draw[\miniskillswheelcolp,line cap=round] ({180-180*(\i)/#3}:{0.55\tmphauteurgradniv})--({180-180*(\i)/#3}:{0.65\tmphauteurgradniv}) ;
+ }
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \draw[\miniskillswheelcols] (0,0) circle[radius=0.1\tmphauteurgradniv] ;
+ \draw[\miniskillswheelcols,line cap=round] ({\miniskilswheelposcurs}:{0.1\tmphauteurgradniv}) -- ({\miniskilswheelposcurs}:{0.6125\tmphauteurgradniv}) ;
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\miniskillwheel{ O{} D<>{} m }{%
+ \restoreKV[miniskillswheel]%
+ \setKV[miniskillswheel]{#1}%
+ \settototalheight{\tmphauteurgradniv}{\hbox{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}}%
+ \setlength{\tmphauteurgradniv}{0.90\tmphauteurgradniv}%.
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\miniskillswheelmark >= 0 'and' \miniskillswheelmark <= #3}%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{180-180*(\miniskillswheelmark)/(#3)}}%
+ }%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{0.5*(#3)}}%
+ }%
+ }%
+ \IfSubStr{\miniskillswheelcol}{/}%
+ {%
+ \StrCut{\miniskillswheelcol}{/}{\miniskillswheelcolp}{\miniskillswheelcols}%
+ }%
+ {%
+ \xdef\miniskillswheelcolp{\miniskillswheelcol}\xdef\miniskillswheelcols{\miniskillswheelcol}%
+ }%
+ \begin{tikzpicture}[bezier bounding box,baseline={-0.075\tmphauteurgradniv},line width={0.075\tmphauteurgradniv},#2,transform shape]
+ \draw[\miniskillswheelcolp] (-15:{0.7588\tmphauteurgradniv}) arc(-15:195:{0.7588\tmphauteurgradniv}) --cycle ;
+ \foreach \i in {0,...,#3}{%
+ \draw[\miniskillswheelcolp,line cap=round] ({180-180*(\i)/#3}:{0.55\tmphauteurgradniv})--({180-180*(\i)/#3}:{0.65\tmphauteurgradniv}) ;
+ }
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \draw[\miniskillswheelcols] (0,0) circle[radius=0.1\tmphauteurgradniv] ;
+ \draw[\miniskillswheelcols,line cap=round] ({\miniskilswheelposcurs}:{0.1\tmphauteurgradniv}) -- ({\miniskilswheelposcurs}:{0.6125\tmphauteurgradniv}) ;
+ }%
+ \end{tikzpicture}%
+}
+
+\NewDocumentCommand\tkzspeedometer{ O{} D<>{} m }{%
+ \restoreKV[miniskillswheel]%
+ \setKV[miniskillswheel]{#1}%
+ \setlength{\tmphauteurgradniv}{0.9\tmphauteurspeedom}%
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \xintifboolexpr{\miniskillswheelmark >= 0 'and' \miniskillswheelmark <= #3}%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{180-180*(\miniskillswheelmark)/(#3)}}%
+ }%
+ {%
+ \xdef\miniskilswheelposcurs{\xintfloateval{0.5*(#3)}}%
+ }%
+ }%
+ \IfSubStr{\miniskillswheelcol}{/}%
+ {%
+ \StrCut{\miniskillswheelcol}{/}{\miniskillswheelcolp}{\miniskillswheelcols}%
+ }%
+ {%
+ \xdef\miniskillswheelcolp{\miniskillswheelcol}\xdef\miniskillswheelcols{\miniskillswheelcol}%
+ }%
+ \begin{tikzpicture}[bezier bounding box,line width={0.075\tmphauteurgradniv},#2,transform shape]%
+ \draw[\miniskillswheelcolp] (-15:{0.7588\tmphauteurgradniv}) arc(-15:195:{0.7588\tmphauteurgradniv}) --cycle ;
+ \foreach \i in {0,...,#3}{%
+ \draw[\miniskillswheelcolp,line cap=round] ({180-180*(\i)/#3}:{0.55\tmphauteurgradniv})--({180-180*(\i)/#3}:{0.65\tmphauteurgradniv}) ;
+ }%
+ \IfEq{\miniskillswheelmark}{}%
+ {}%
+ {%
+ \draw[\miniskillswheelcols] (0,0) circle[radius=0.1\tmphauteurgradniv] ;%
+ \draw[\miniskillswheelcols,line cap=round] ({\miniskilswheelposcurs}:{0.1\tmphauteurgradniv}) -- ({\miniskilswheelposcurs}:{0.6125\tmphauteurgradniv}) ;%
+ }%
+ \end{tikzpicture}%
+}
+
\endinput
\ No newline at end of file
More information about the tex-live-commits
mailing list.