texlive[75981] Master/texmf-dist: customenvs (5aug25)

commits+karl at tug.org commits+karl at tug.org
Tue Aug 5 22:36:19 CEST 2025


Revision: 75981
          https://tug.org/svn/texlive?view=revision&revision=75981
Author:   karl
Date:     2025-08-05 22:36:19 +0200 (Tue, 05 Aug 2025)
Log Message:
-----------
customenvs (5aug25)

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/customenvs-exams-doc.pdf
    trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-exams-doc.tex
    trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-tikzpictos-doc.pdf
    trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-tikzpictos-doc.tex
    trunk/Master/texmf-dist/tex/latex/customenvs/customenvs-exams.sty
    trunk/Master/texmf-dist/tex/latex/customenvs/customenvs-tikzpictos.sty
    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	2025-08-05 20:36:09 UTC (rev 75980)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex	2025-08-05 20:36:19 UTC (rev 75981)
@@ -34,8 +34,8 @@
 \usepackage[margin=1.5cm]{geometry}
 \setlength{\parindent}{0pt}
 
-\def\TPversion{0.41a}
-\def\TPdate{29/07/2025}
+\def\TPversion{0.41b}
+\def\TPdate{04/08/2025}
 \usepackage{tcolorbox}
 \sethlcolor{lightgray!25}
 \NewDocumentCommand\MontreCode{ m }{%
@@ -114,8 +114,10 @@
 
 \section{History}
 
-\verb|v0.41a|~:~~~Option \textsf{noninlinegraphicx} for compatibility with \textsf{MikTeX} + Bugfix
+\verb|v0.41b|~:~~~Bugfix + pre-compatibility with \textsf{fa5/fa6/fa7} + new pictograms
 
+\verb|v0.41a|~:~~~Option \textsf{noinlinegraphicx} for compatibility with \textsf{MikTeX} + Bugfix
+
 \verb|v0.40f|~:~~~\textsf{WhatsApp} style for 'Chat'
 
 \verb|v0.40e|~:~~~\textsf{customenvs-icons} \texttt{v0.1.0}
@@ -188,42 +190,44 @@
 
 \subsection{Idea}
 
-The idea is to propose some classics environments with customizations (some are, for the moment, only in french) :
+The idea is to propose some classics environments with customizations (some are, for the moment, only in french):
 
 \begin{itemize}
-	\item write in \textit{multicols}, with spacings enhancements ;
-	\item present answers for a \textit{MCQ} ;
-	\item create a list with \textit{choosen items} (randomly or by numbers) ;
+	\item write in \textit{multicols}, with spacings enhancements;
+	\item present answers for a \textit{MCQ};
+	\item create a list with \textit{choosen items} (randomly or by numbers);
 	\item present a skill table.
 \end{itemize}
 
 \smallskip
 
-The globa idea is ti propose \textit{user-friendly} environments, with explicit customizations, without using verbose syntax ; but there's other solutions, using for example \MontreCode{\textbackslash vspace} ou \MontreCode{\textbackslash  setlength} or \MontreCode{spacingtricks} package.
+The globa idea is ti propose \textit{user-friendly} environments, with explicit customizations, without using verbose syntax; but there's other solutions, using for example \MontreCode{\textbackslash vspace} ou \MontreCode{\textbackslash  setlength} or \MontreCode{spacingtricks} package.
 
 \subsection{Loading}
 
 The package loads within the preamble with \MontreCode{\textbackslash usepackage\{customenvs\}}.
 
-Loaded packages are 
+Loaded packages are:
 
 \begin{itemize}
-	\item \MontreCode{xstring}, \MontreCode{simplekv}, \MontreCode{listofitems}, \MontreCode{randomlist} and \MontreCode{xintexpr} ;
-	\item \MontreCode{enumitem} ;
-	\item \MontreCode{multicol} ;
-	\item \MontreCode{tabularray} ;
-	\item \MontreCode{fontawesome} ;
+	\item \MontreCode{xstring}, \MontreCode{simplekv}, \MontreCode{listofitems}, \MontreCode{randomlist} and \MontreCode{xintexpr};
+	\item \MontreCode{enumitem};
+	\item \MontreCode{multicol};
+	\item \MontreCode{tabularray};
+	\item \MontreCode{fontawesome};
 \end{itemize}
 
-Due to limitations, \MontreCode{enumitem}/\MontreCode{multicol}/\MontreCode{tabularray}/\MontreCode{fontawesome5/6}/\MontreCode{inlinegraphicx} can be \textit{un}loaded by \MontreCode{customenvs} (user must load them manually) via options :
+Due to limitations, \MontreCode{enumitem}/\MontreCode{multicol}/\MontreCode{tabularray}/\MontreCode{fontawesome5/6}/\MontreCode{inlinegraphicx} can be \textit{un}loaded by \MontreCode{customenvs} (user must load them manually) via options:
 
 \begin{itemize}
-	\item \MontreCode{$\mathtt{\langle}$beamer$\mathtt{\rangle}$} for using with \textsf{beamer} ;
-	\item \MontreCode{$\mathtt{\langle}$noenum$\mathtt{\rangle}$} ;
-	\item \MontreCode{$\mathtt{\langle}$nomulticol$\mathtt{\rangle}$} ;
-	\item \MontreCode{$\mathtt{\langle}$notblr$\mathtt{\rangle}$} ;
-	\item \MontreCode{$\mathtt{\langle}$noinlinegraphicx$\mathtt{\rangle}$} ;
-	\item \MontreCode{$\mathtt{\langle}$nofa$\mathtt{\rangle}$}.
+	\item \MontreCode{$\mathtt{\langle}$beamer$\mathtt{\rangle}$} for using with \textsf{beamer};
+	\item \MontreCode{$\mathtt{\langle}$noenum$\mathtt{\rangle}$};
+	\item \MontreCode{$\mathtt{\langle}$nomulticol$\mathtt{\rangle}$};
+	\item \MontreCode{$\mathtt{\langle}$notblr$\mathtt{\rangle}$};
+	\item \MontreCode{$\mathtt{\langle}$noinlinegraphicx$\mathtt{\rangle}$};
+	\item \MontreCode{$\mathtt{\langle}$nofa$\mathtt{\rangle}$};
+	\item \MontreCode{$\mathtt{\langle}$fa6$\mathtt{\rangle}$};
+	\item \MontreCode{$\mathtt{\langle}$fa7$\mathtt{\rangle}$}.
 \end{itemize}
 
 \begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
@@ -236,7 +240,7 @@
 
 \pagebreak
 
-\subsection{Subpackage customenvs-tikzpictos (v0.1.4)}
+\subsection{Subpackage customenvs-tikzpictos (v0.1.5)}
 
 The package \MontreCode{customenvs-tikzpictos}, loaded within \MontreCode{customenvs} (but can be loaded independently), proposes small pictograms.
 
@@ -316,24 +320,24 @@
 \AnswersMCQ[options]{list of answers}<tblr options>
 \end{codehigh}
 
-The avalailable \MontreCode{options} are :
+The avalailable \MontreCode{options} are:
 
 \begin{itemize}
-	\item \MontreCode{Width} : \MontreCode{0.99\textbackslash linewidth} by default ;
-	\item \MontreCode{Lines}  : \MontreCode{false} by default ;
-	\item \MontreCode{SpaceCR} for Columns/Rows spacing, within \MontreCode{col/row} or \MontreCode{global} : \MontreCode{6pt/2pt} by default ;
-	\item \MontreCode{NumCols}, 2 or 4 : \MontreCode{4} by default ;
-	\item \MontreCode{Labels} for the labels : \MontreCode{a.} by default ;
+	\item \MontreCode{Width}: \MontreCode{0.99\textbackslash linewidth} by default;
+	\item \MontreCode{Lines}: \MontreCode{false} by default;
+	\item \MontreCode{SpaceCR} for Columns/Rows spacing, within \MontreCode{col/row} or \MontreCode{global}: \MontreCode{6pt/2pt} by default;
+	\item \MontreCode{NumCols}, 2 or 4: \MontreCode{4} by default;
+	\item \MontreCode{Labels} for the labels: \MontreCode{a.} by default;
 	\begin{itemize}
-		\item with \MontreCode{box} to use a \textit{Box} ;
-		\item with \MontreCode{a} to \textit{enumerate} \MontreCode{a b c d} ;
-		\item with \MontreCode{A} to \textit{enumerate} \MontreCode{A B C D} ;
-		\item with \MontreCode{1} to \textit{enumerate} \MontreCode{1 2 3 4} ;
+		\item with \MontreCode{box} to use a \textit{Box};
+		\item with \MontreCode{a} to \textit{enumerate} \MontreCode{a b c d};
+		\item with \MontreCode{A} to \textit{enumerate} \MontreCode{A B C D};
+		\item with \MontreCode{1} to \textit{enumerate} \MontreCode{1 2 3 4};
 	\end{itemize}
-	\item \MontreCode{FontLabels} : \MontreCode{\textbackslash bfseries} by default ;
-	\item \MontreCode{SpaceLabels} : \MontreCode{\textbackslash kern5pt} by default ;
-	\item \MontreCode{Shuffle}, for mixing answers : \MontreCode{false} by default ;
-	\item \MontreCode{Swap}, for ACBD instead of ABCD : \MontreCode{false} by default.
+	\item \MontreCode{FontLabels}: \MontreCode{\textbackslash bfseries} by default;
+	\item \MontreCode{SpaceLabels}: \MontreCode{\textbackslash kern5pt} by default;
+	\item \MontreCode{Shuffle}, for mixing answers: \MontreCode{false} by default;
+	\item \MontreCode{Swap}, for ACBD instead of ABCD: \MontreCode{false} by default.
 \end{itemize}
 
 The list of answers must be given within \MontreCode{answA § answB § ...}.
@@ -397,10 +401,10 @@
 
 \subsection{Global use}
 
-The idea is to :
+The idea is to:
 
 \begin{itemize}
-	\item create a list of items, the base for choices ;
+	\item create a list of items, the base for choices;
 	\item print the list with picked items.
 \end{itemize}
 
@@ -412,11 +416,11 @@
 \ListItemsChoice[keys]{macro}{listname}(numbers)<enumitem options>!beamer options!
 \end{codehigh}
 
-The available \MontreCode{keys} are :
+The available \MontreCode{keys} are:
 
 \begin{itemize}
-	\item \MontreCode{Type} : \MontreCode{enum} or \MontreCode{item} ;
-	\item \MontreCode{Random}  : \MontreCode{false} by default.
+	\item \MontreCode{Type}: \MontreCode{enum} or \MontreCode{item};
+	\item \MontreCode{Random}: \MontreCode{false} by default.
 \end{itemize}
 
 The second argument, mandatory and between \MontreCode{\{...\}} is the macro for the list.
@@ -423,10 +427,10 @@
 
 The third argument, mandatory and between \MontreCode{\{...\}} is the name of the list.
 
-The fourth argument, mandatory and between \MontreCode{(...)} give :
+The fourth argument, mandatory and between \MontreCode{(...)} give:
 
 \begin{itemize}
-	\item the number of random items to display, with \MontreCode{Random=true} ;
+	\item the number of random items to display, with \MontreCode{Random=true};
 	\item the numbers of picked itemps, within \MontreCode{num1,num2,...}.
 \end{itemize}
 
@@ -436,10 +440,10 @@
 
 \medskip
 
-Controls are done :
+Controls are done:
 
 \begin{itemize}
-	\item to verify that the list doesn't exist (for the creation) ;
+	\item to verify that the list doesn't exist (for the creation);
 	\item to verify that that the list still exist (for the display).
 \end{itemize}
 
@@ -490,14 +494,14 @@
 
 \subsection{Global use}
 
-The idea is to :
+The idea is to:
 
 \begin{itemize}
-	\item present of list of categories and skills ;
+	\item present of list of categories and skills;
 	\item presented like a pencil.
 \end{itemize}
 
-The code (within CC-BY-SA 4.0 license) is adapted from :
+The code (within CC-BY-SA 4.0 license) is adapted from:
 
 \hfill{\footnotesize \url{https://tex.stackexchange.com/questions/504092/replicating-a-fancy-bordered-text-style-in-latex/504145#504145}}\hfill~
 
@@ -509,19 +513,19 @@
 
 \subsection{The macro}
 
-Available \MontreCode{keys} are :
+Available \MontreCode{keys} are:
 
 \begin{itemize}
-	\item \MontreCode{FontCateg} : font for the categories ;
-	\item \MontreCode{FontBlock} : font for the skills ;
-	\item \MontreCode{Colors} : list of category's colors
+	\item \MontreCode{FontCateg}: font for the categories;
+	\item \MontreCode{FontBlock}: font for the skills;
+	\item \MontreCode{Colors}: list of category's colors
 	
 	\MontreCode{BgCateg1/FgCateg1,BgCateg1/FgCateg1,...}
 	
 	(if \MontreCode{FgCateg1} est missing, \MontreCode{black} is used)
-	\item \MontreCode{BlockWidth} : width of skill's block ;
-	\item \MontreCode{Scale} : global scale
-	\item \MontreCode{BlackWhite} : boolean for B\&W.
+	\item \MontreCode{BlockWidth}: width of skill's block;
+	\item \MontreCode{Scale}: global scale
+	\item \MontreCode{BlackWhite}: boolean for B\&W.
 \end{itemize}
 
 The second argument, optional and between \MontreCode{<...>} gives specific options to \MontreCode{enumitem} environment.
@@ -576,20 +580,20 @@
 
 \subsection{The macro}
 
-Available \MontreCode{keys} are :
+Available \MontreCode{keys} are:
 
 \begin{itemize}
-	\item \MontreCode{Height} : height of the banner (without the legend) ; \MontreCode{1} by default
-	\item \MontreCode{Ratio} : ratio of boxes ; \MontreCode{0.6} by default
-	\item \MontreCode{Symbols} : labels ; \MontreCode{A,B,C,D,E} by default
-	\item \MontreCode{Legend} : legend (uppercase) ; \MontreCode{score} by default ;
-	\item \MontreCode{Font} : global font ; \MontreCode{\textbackslash bfseries\textbackslash sffamily} by default
-	\item \MontreCode{ShowLegend} : boolean for the legend ;  \MontreCode{false} by default ;
-	\item \MontreCode{Colors} : colors for boxes ;
+	\item \MontreCode{Height}: height of the banner (without the legend); \MontreCode{1} by default
+	\item \MontreCode{Ratio}: ratio of boxes; \MontreCode{0.6} by default
+	\item \MontreCode{Symbols}: labels; \MontreCode{A,B,C,D,E} by default
+	\item \MontreCode{Legend}: legend (uppercase); \MontreCode{score} by default;
+	\item \MontreCode{Font}: global font; \MontreCode{\textbackslash bfseries\textbackslash sffamily} by default
+	\item \MontreCode{ShowLegend}: boolean for the legend;  \MontreCode{false} by default;
+	\item \MontreCode{Colors}: colors for boxes;
 	
-	\hfill\MontreCode{colorNS1,colorNS2,colorNS3,colorNS4,colorNS5} by default ;
-	\item \MontreCode{ScaleSymbols} : scale H/V of labels ;  \MontreCode{1.25,1.65} by default ;
-	\item \MontreCode{Colbg} : background color for select box  ;  \MontreCode{white} by default.
+	\hfill\MontreCode{colorNS1,colorNS2,colorNS3,colorNS4,colorNS5} by default;
+	\item \MontreCode{ScaleSymbols}: scale H/V of labels;  \MontreCode{1.25,1.65} by default;
+	\item \MontreCode{Colbg}: background color for select box;  \MontreCode{white} by default.
 \end{itemize}
 
 \smallskip
@@ -628,21 +632,21 @@
 
 \subsection{The environment}
 
-Available \MontreCode{keys} are :
+Available \MontreCode{keys} are:
 
 \begin{itemize}
-	\item \MontreCode{height} : height of the window (auto or specific) ; \MontreCode{auto} by default
-	\item \MontreCode{width} : width of the window ; \MontreCode{7cm} by default
-	\item \MontreCode{margin} : margin (L or R) for the bubble \MontreCode{1.5cm} by default
-	\item \MontreCode{color} : \textit{main} color (banner) ; \MontreCode{teal!75!cyan!75!white} by default ;
-	\item \MontreCode{colback} : color for background ; \MontreCode{lightgray!5} by default
-	\item \MontreCode{colorin} : color for incoming SMS ; \MontreCode{lime!25} by default
-	\item \MontreCode{colorout} : color for outcoming SMS ; \MontreCode{teal!25} by default
-	\item \MontreCode{writetxt} : text of sending zone ; \MontreCode{Write} by default
-	\item \MontreCode{fonttxt} : bubble's font ; \MontreCode{\textbackslash normalfont} by default
-	\item \MontreCode{avatar} : avatar of contact ; \MontreCode{\textbackslash faAddressCard} by default
-	\item \MontreCode{dispavatar} : boolean for displaying avatar near the bubbles ; \MontreCode{false} by default
-	\item \MontreCode{blackwhite} : boolean pour black\&white. \MontreCode{false} by default
+	\item \MontreCode{height}: height of the window (auto or specific); \MontreCode{auto} by default
+	\item \MontreCode{width}: width of the window; \MontreCode{7cm} by default
+	\item \MontreCode{margin}: margin (L or R) for the bubble \MontreCode{1.5cm} by default
+	\item \MontreCode{color}: \textit{main} color (banner); \MontreCode{teal!75!cyan!75!white} by default;
+	\item \MontreCode{colback}: color for background; \MontreCode{lightgray!5} by default
+	\item \MontreCode{colorin}: color for incoming SMS; \MontreCode{lime!25} by default
+	\item \MontreCode{colorout}: color for outcoming SMS; \MontreCode{teal!25} by default
+	\item \MontreCode{writetxt}: text of sending zone; \MontreCode{Write} by default
+	\item \MontreCode{fonttxt}: bubble's font; \MontreCode{\textbackslash normalfont} by default
+	\item \MontreCode{avatar}: avatar of contact; \MontreCode{\textbackslash faAddressCard} by default
+	\item \MontreCode{dispavatar}: boolean for displaying avatar near the bubbles; \MontreCode{false} by default
+	\item \MontreCode{blackwhite}: boolean pour black\&white. \MontreCode{false} by default
 \end{itemize}
 
 The argument, mandatory and between \MontreCode{(...)} give the name of the contact.
@@ -653,7 +657,7 @@
 
 \begin{itemize}
 	\item the \textit{starred} version does not display the \textit{checkmarks} of \textit{good reception};
-	\item the first mandatory argument is the time to display ;
+	\item the first mandatory argument is the time to display;
 	\item the second mandatory argument is the message to display (including multi-lines).
 \end{itemize}
 
@@ -688,7 +692,7 @@
 
 Un style type \textit{WhatsApp} est également disponible, avec un fonctionnement similaire à celui présenté précédemment.
 
-Les clés disponibles sont :
+Les clés disponibles sont:
 
 \begin{itemize}
 	\item \MontreCode{height}: \MontreCode{auto} by default
@@ -710,7 +714,7 @@
 	\WaRec{19:23}{Hi!}
 	\WaDate{today}
 	\WaSend*{08:33}{Hi!!}
-	\WaSend*{08:35}{You're using WhApp so :-)}
+	\WaSend*{08:35}{You're using WhApp so:-)}
 	\WaRec{10:15}{Yep!!}
 	\WaRec{10:18}{Could you help me?}
 	\WaRec{10:18}{I've got pb with tables in \LaTeX\ldots}
@@ -723,7 +727,7 @@
 	\WaRec{19:23}{Hi!}
 	\WaDate{today}
 	\WaSend*{08:33}{Hi!!}
-	\WaSend*{08:35}{You're using WhApp so :-)}
+	\WaSend*{08:35}{You're using WhApp so:-)}
 	\WaRec{10:15}{Yep!!}
 	\WaRec{10:18}{Could you help me?}
 	\WaRec{10:18}{I've got pb with tables in \LaTeX\ldots}
@@ -748,7 +752,7 @@
 \tkzBannerTri{01}{Title of document}
 \end{demohigh}
 
-Available \MontreCode{keys} are :
+Available \MontreCode{keys} are:
 
 \begin{itemize}
 	\item \MontreCode{height} (\MontreCode{2.5em} by default)
@@ -863,11 +867,11 @@
 
 \begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
 \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) ;
+  \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);
   \tkzFlaredArrow[color=green,arrowstyle=Triangle]{A}{B}
   \tkzFlaredArrow[color=blue,bend=right/10]{D}{C}
   \tkzFlaredArrow%
@@ -1031,8 +1035,8 @@
 \begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
 \begin{imgannotate}[node=IMGTEST][height=5cm]<rotate=10>{example-image-golden.pdf}
   %tikz usual commands
-  \draw (IMGTEST.center) node[above=5mm,font=\Huge\ttfamily\bfseries,text=blue] {TEST1} ;
-  \draw (IMGTEST.north west) node[draw,thick,red,inner sep=0.5mm,below right=2.5mm,font=\LARGE\sffamily\bfseries,text=red] {TEST2} ;
+  \draw (IMGTEST.center) node[above=5mm,font=\Huge\ttfamily\bfseries,text=blue] {TEST1};
+  \draw (IMGTEST.north west) node[draw,thick,red,inner sep=0.5mm,below right=2.5mm,font=\LARGE\sffamily\bfseries,text=red] {TEST2};
 \end{imgannotate}
 \end{demohigh}
 
@@ -1102,16 +1106,16 @@
 \storetotalheighttolength{\tmpbox}{\mytmpboxtotheight}%
 \storedepthtolength{\tmpbox}{\mytmpboxdepth}%
 \begin{tikzpicture}[scale=5,transform shape]
-	\node[draw=lightgray,inner sep=0pt,text=black] (BOX) {\large $1+\frac{1}{x}$} ;
+	\node[draw=lightgray,inner sep=0pt,text=black] (BOX) {\large $1+\frac{1}{x}$};
 	\begin{scope}
-		\clip (BOX) ;
-		\draw[lightgray] ([yshift=\mytmpboxdepth]BOX.south west) --++ ({\mytmpboxwidth+2\pgflinewidth},0) ;
+		\clip (BOX);
+		\draw[lightgray] ([yshift=\mytmpboxdepth]BOX.south west) --++ ({\mytmpboxwidth+2\pgflinewidth},0);
 	\end{scope}
-	\draw[lightgray] ([yshift=\mytmpboxdepth]BOX.south west) --++ ({\mytmpboxwidth},0) ;
-	\draw[<->,>=latex] ([yshift=-2pt]BOX.south west) --++ ({\mytmpboxwidth},0) node[midway,below,scale=0.2] {\the\mytmpboxwidth} ;
-	\draw[<->,>=latex] ([xshift=-2pt]BOX.south west) --++ (0,\mytmpboxdepth) node[midway,left,scale=0.2] {\the\mytmpboxdepth} ;
-	\draw[<->,>=latex] ([xshift=-2pt]BOX.north west) --++ (0,-\mytmpboxheight) node[midway,left,scale=0.2] {\the\mytmpboxheight} ;
-	\draw[<->,>=latex] ([xshift=2pt]BOX.south east) --++ (0,\mytmpboxtotheight) node[midway,right,scale=0.2] {\the\mytmpboxtotheight} ;
+	\draw[lightgray] ([yshift=\mytmpboxdepth]BOX.south west) --++ ({\mytmpboxwidth},0);
+	\draw[<->,>=latex] ([yshift=-2pt]BOX.south west) --++ ({\mytmpboxwidth},0) node[midway,below,scale=0.2] {\the\mytmpboxwidth};
+	\draw[<->,>=latex] ([xshift=-2pt]BOX.south west) --++ (0,\mytmpboxdepth) node[midway,left,scale=0.2] {\the\mytmpboxdepth};
+	\draw[<->,>=latex] ([xshift=-2pt]BOX.north west) --++ (0,-\mytmpboxheight) node[midway,left,scale=0.2] {\the\mytmpboxheight};
+	\draw[<->,>=latex] ([xshift=2pt]BOX.south east) --++ (0,\mytmpboxtotheight) node[midway,right,scale=0.2] {\the\mytmpboxtotheight};
 \end{tikzpicture}
 \end{center}
 

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	2025-08-05 20:36:09 UTC (rev 75980)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex	2025-08-05 20:36:19 UTC (rev 75981)
@@ -39,8 +39,8 @@
 \usepackage[margin=1.5cm]{geometry}
 \setlength{\parindent}{0pt}
 
-\def\TPversion{0.41a}
-\def\TPdate{29 juillet 2025}
+\def\TPversion{0.41b}
+\def\TPdate{4 août 2025}
 \usepackage{tcolorbox}
 \tcbuselibrary{listingsutf8}
 %\usepackage{eurosym}
@@ -148,6 +148,8 @@
 
 \section{Historique}
 
+\verb|v0.41b|~:~~~Bugfix + pre-compatibilité \textsf{fa5/6/7} + nouveaux pictogrammes
+
 \verb|v0.41a|~:~~~Option \textsf{noninlinegraphicx} pour garder la compatibilité avec \textsf{MikTeX} + Bugfix
 
 \verb|v0.40f|~:~~~Style \textsf{WhatsApp} pour les fenêtre \textit{conversation}
@@ -262,7 +264,7 @@
 	\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{fontawesome5} (en attendant une compatibilité avec la version \MontreCode{6/7}, via les options \MontreCode{[fa6] / [fa7]} !);
 	\item \MontreCode{tikz} avec les librairies :
 	\begin{itemize}
 		\item \MontreCode{decorations.pathmorphing,positioning,shapes.misc,calc,arrows,arrows.meta}.
@@ -269,7 +271,7 @@
 	\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}/\MontreCode{inlinegraphicx} 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 :
+À 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/7}/\MontreCode{inlinegraphicx} 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});
@@ -279,7 +281,9 @@
 	\item \MontreCode{$\mathtt{\langle}$nonxcolor$\mathtt{\rangle}$} ;
 	\item \MontreCode{$\mathtt{\langle}$nonadjustbox$\mathtt{\rangle}$} ;
 	\item \MontreCode{$\mathtt{\langle}$noninlinegraphicx$\mathtt{\rangle}$} ;
-	\item \MontreCode{$\mathtt{\langle}$nonfa$\mathtt{\rangle}$}.
+	\item \MontreCode{$\mathtt{\langle}$nonfa$\mathtt{\rangle}$} ;
+	\item \MontreCode{$\mathtt{\langle}$fa6$\mathtt{\rangle}$} ;
+	\item \MontreCode{$\mathtt{\langle}$fa7$\mathtt{\rangle}$}.
 \end{itemize}
 
 \begin{DemoCode}{listing only}
@@ -290,7 +294,7 @@
 \usepackage[option(s)]{customenvs}
 \end{DemoCode}
 
-\subsection{Sous-package customenvs-tikzpictos (v0.1.4)}
+\subsection{Sous-package customenvs-tikzpictos (v0.1.5)}
 
 \MontreCode{customenvs} charge, pour \textit{ses} petits pictogrammes, le package \MontreCode{customenvs-tikzpictos}, qui est fourni avec.
 
@@ -326,7 +330,7 @@
 \end{tblr}\hfill\null
 \end{DemoCode}
 
-\subsection{Sous-package customenvs-exams (v0.1.0)}
+\subsection{Sous-package customenvs-exams (v0.1.1)}
 
 \MontreCode{customenvs} charge, pour quelques environnements ou commandes type \textit{examens}, le package \MontreCode{customenvs-exams}, qui est fourni avec.
 

Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-exams-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-exams-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-exams-doc.tex	2025-08-05 20:36:09 UTC (rev 75980)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-exams-doc.tex	2025-08-05 20:36:19 UTC (rev 75981)
@@ -37,8 +37,8 @@
 \usepackage[margin=2cm]{geometry}
 \setlength{\parindent}{0pt}
 
-\def\TPversion{0.1.0}
-\def\TPdate{06/07/2025}
+\def\TPversion{0.1.1}
+\def\TPdate{01/08/2025}
 \usepackage{tcolorbox}
 
 \sethlcolor{lightgray!25}
@@ -385,6 +385,8 @@
 
 \section{Historique}
 
+\verb|v0.1.1|~:~Correction dans les espacements
+
 \verb|v0.1.0|~:~Version initiale
 
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-tikzpictos-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-tikzpictos-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-tikzpictos-doc.tex	2025-08-05 20:36:09 UTC (rev 75980)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-tikzpictos-doc.tex	2025-08-05 20:36:19 UTC (rev 75981)
@@ -18,6 +18,7 @@
 \usepackage{lipsum}
 \usepackage{codehigh}
 \usepackage{fontawesome5}
+\usepackage{openmoji}
 \usepackage{twemojis}
 \usepackage{fancyvrb}
 \usepackage{fancyhdr}
@@ -41,8 +42,8 @@
 \usepackage[margin=2cm]{geometry}
 \setlength{\parindent}{0pt}
 
-\def\TPversion{0.1.4}
-\def\TPdate{06/07/2025}
+\def\TPversion{0.1.5}
+\def\TPdate{04/08/2025}
 \usepackage{tcolorbox}
 
 \sethlcolor{lightgray!25}
@@ -558,9 +559,9 @@
 \twdifficultylevels[hoffset=1mm,size=\Huge,opacity=0.25]{snake}{2/6}
 \end{demohigh}
 
-\section{Stamp}
+\section{Stamps}
 
-\subsection{Macros}
+\subsection{Macro (1)}
 
 \begin{codehigh}[language=latex/latex2]
 %normal positionning
@@ -576,12 +577,49 @@
 %absolute positionning
 \pictostamp*%
   [radius=...,color=...,rotate=...,font=...,starsfilled=TF,strut=...,alt=TF]%
-  <tikz options>
+  <shift position>
   {text}
 
 %[strut=...] is for vphantom of text ^_^
 \end{codehigh}
 
+\subsection{Macro (2)}
+
+\begin{codehigh}[language=latex/latex2]
+%normal positionning
+\pictosmallstamp%
+  [keys]%
+  <tikz options>
+  {text}
+\end{codehigh}
+
+\begin{codehigh}[language=latex/latex2]
+%absolute positionning
+\pictosmallstamp*%
+  [keys]%
+  <shift position>
+  {top text}
+  {bottom text}
+  {logo}
+\end{codehigh}
+
+\begin{codehigh}[language=latex/latex2]
+height          = <global height>
+maincolor       = <main color>
+toptxtcolor     = <color for top text>
+bottomtxtcolor  = <color for bottom text>
+logocolor       = <color for logo text>,
+inner circle    = <boolean>
+rotate          = <rotation>
+toptxtfont      = <font for top text>
+bottomtxtfont   = <font for bottom text>
+reverse bottom  = <boolean for bottom orientation>
+image           = <boolean for using image as loo>
+logoscale       = <scale for text logo>
+fill inner      = <boolean for inner filling>
+color           = <global color, override others>
+\end{codehigh}
+
 \subsection{Examples}
 
 \begin{demohigh}[language=latex/latex2]
@@ -621,16 +659,75 @@
 
 \pagebreak
 
+\begin{demohigh}[language=latex/latex2]
+\colorlet{mygreenpython}{green!50!black}
+\pictosmallstamp%
+  [color=mygreenpython]%keys
+  {{\textbullet} Python {\textbullet}}%top
+  {inside}%bottom
+  {\faPython}%inside
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex2]
+\pictosmallstamp%
+  [image,rotate=-30]%
+  {{\textbullet}~Cédric~{\textbullet}}%
+  {Pierquet}%
+  {avatar}%
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex2]
+\pictosmallstamp%
+  [image,rotate=-30,reverse bottom=false]%
+  {{\textbullet}~Cédric~{\textbullet}}%
+  {P\,i\,e\,r\,q\,u\,e\,t}%for better spacing
+  {pfl-ok.pdf}%
+\end{demohigh}
+
+\begin{demohigh}[language=latex/latex2]
+\pictosmallstamp%
+  [rotate=0,logoscale=1.1,color=teal,fill inner]%
+  {LaTeX}%
+  {inside}%
+  {\faStar}%
+\end{demohigh}
+
+\begin{codehigh}[language=latex/latex2]
+\pictosmallstamp*%
+  [%
+    height=6cm,maincolor=brown,toptxtcolor=teal,bottomtxtcolor=gray,%
+    toptxtfont=\bfseries\sffamily,bottomtxtfont=\ttfamily
+  ]%
+  < ([xshift=-4cm,yshift=6cm]current page.south east) >%
+  {{\openmoji[height=auto]{cactus}}TOP{\openmoji[height=auto]{cactus}}}%
+  {{\openmoji[height=auto]{butterfly}}BOTTOM{\openmoji[height=auto]{butterfly}}}%
+  {\openmoji{bullseye}}%
+\end{codehigh}
+
+\pictosmallstamp*%
+[%
+height=6cm,maincolor=brown,toptxtcolor=teal,bottomtxtcolor=gray,%
+toptxtfont=\bfseries\sffamily,bottomtxtfont=\ttfamily
+]%
+< ([xshift=-4cm,yshift=6cm]current page.south east) >%
+{{\openmoji[height=auto]{cactus}}TOP{\openmoji[height=auto]{cactus}}}%
+{{\openmoji[height=auto]{butterfly}}BOTTOM{\openmoji[height=auto]{butterfly}}}%
+{\openmoji{bullseye}}%
+
+\pagebreak
+
 \section{History}
 
-\verb|v0.1.4|~:~(d)strut option for height/depth + bdall + difficulty levels + stamp
+\verb|v0.1.5| :~Inline badge (inspired by \textsf{tikz-shields}) + simple stamp
 
-\verb|v0.1.3|~:~Clippy
+\verb|v0.1.4| :~(d)strut option for height/depth + bdall + difficulty levels + stamp
 
-\verb|v0.1.2|~:~Mini calendar
+\verb|v0.1.3| :~Clippy
 
-\verb|v0.1.1|~:~Traffic Light
+\verb|v0.1.2| :~Mini calendar
 
-\verb|v0.1.0|~:~Initial version
+\verb|v0.1.1| :~Traffic Light
 
+\verb|v0.1.0| :~Initial version
+
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/customenvs/customenvs-exams.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/customenvs/customenvs-exams.sty	2025-08-05 20:36:09 UTC (rev 75980)
+++ trunk/Master/texmf-dist/tex/latex/customenvs/customenvs-exams.sty	2025-08-05 20:36:19 UTC (rev 75981)
@@ -2,11 +2,18 @@
 % licence.........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{customenvs-exams}[2025/07/06 0.1.0 customenvs for exam documents]
+\ProvidesPackage{customenvs-exams}[2025/08/04 0.1.1 customenvs for exam documents]
 
 %====HISTORY
+% v 0.1.1	Bugfix + BlocExo
 % v 0.1.0	Initial version subpackage (exam) of customenvs
 
+%====OPTION
+\newif\if at pictos\@pictosfalse%
+\DeclareOption{pictos}{\@pictostrue}%
+\DeclareOption*{}
+\ProcessOptions\relax
+
 %====PACKAGES
 \RequirePackage{tcolorbox}
 \RequirePackage{varwidth}
@@ -18,6 +25,9 @@
 \RequirePackage{xstring}
 \RequirePackage{listofitems}
 \RequirePackage{randomlist}
+\if at pictos
+	\RequirePackage{customenvs-tikzpictos}
+\fi
 \tcbuselibrary{skins,breakable}
 
 %====INT MACRO
@@ -47,7 +57,7 @@
 
 %====EXAM QCM
 \NewList{TmpListereponsesexamqcm}
-\def\ReponsesExamQCMbox{\raisebox{-0.2ex}{\faSquare[regular]}}
+\def\ReponsesExamQCMbox{\raisebox{-0.2ex}{\faSquare[regular]}} %avec fontawesome567, à charger...
 
 \defKV[reponsesexamqcm]{%
 	NbCols=\def\RepExamQCMNbCol{#1},%
@@ -312,15 +322,15 @@
 %====EXAM CONFIG
 \@ifpackageloaded{amssymb}%
 	{%
-		\newcommand\examdecoexo{\scalebox{0.66}[1]{$\blacktriangleright$}~}%
-		\newcommand\examdecoquest{\scalebox{0.66}[1]{$\blacktriangleright$}~}%
+		\newcommand\examdecoexo{\scalebox{0.66}[1]{$\blacktriangleright$}\space}%
+		\newcommand\examdecoquest{\scalebox{0.66}[1]{$\blacktriangleright$}\space}%
 	}%
 	{%
-		\newcommand\examdecoexo{\textbullet~}%
-		\newcommand\examdecoquest{\textbullet~}%
+		\newcommand\examdecoexo{\textbullet\space}%
+		\newcommand\examdecoquest{\textbullet\space}%
 	}%
 \newcommand\ExamTitreExo[2]{%
-	\textbf{\large\examdecoexo\underline{Exercice #1}~(#2 points)}%
+	\textbf{\large\examdecoexo\underline{Exercice #1}\space(#2 points)}%
 }
 \newcommand\ExamLabelAutomat[1]{%
 	\textbf{\examdecoquest\underline{Question #1}}%
@@ -444,12 +454,12 @@
 \NewDocumentCommand\SousTitreSujetEpreuve{ O{black} m }{%
 	\tcbset{StyleTitreSujetSousEpreuveCouleur/.style={colframe=#1,colupper=#1}}
 	\IfStrEqCase{#2}{%
-		{U21}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faArrDownNb\:\:,after upper=\:\:\faProjDiag]{Épreuve E2 - Mathématiques pour l'Informatique}}%
-		{U2}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faArrDownNb\:\:,after upper=\:\:\faProjDiag]{Épreuve E2 - Mathématiques pour l'Informatique}}%
-		{U2CG}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faArrDownNb\:\:,after upper=\:\:\faProjDiag]{Épreuve E2 - Mathématiques appliquées}}%
-		{U3}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faArrDownNb\:\:,after upper=\:\:\faProjDiag]{Épreuve E3 - Mathématiques pour l'Informatique}}%
-		{UF2}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faDice\:\:,after upper=\:\:\faChartLine]{Épreuve EF2 - Mathématiques Approfondies}}%
-		{U41OL}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faDice\:\:,after upper=\:\:\faBezierCurve]{Épreuve U41 - Mathématiques}}}%
+		{U21}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faArrDownNb\space\space,after upper=\space\space\faProjDiag]{Épreuve E2 - Mathématiques pour l'Informatique}}%
+		{U2}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faArrDownNb\space\space,after upper=\space\space\faProjDiag]{Épreuve E2 - Mathématiques pour l'Informatique}}%
+		{U2CG}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faArrDownNb\space\space,after upper=\space\space\faProjDiag]{Épreuve E2 - Mathématiques appliquées}}%
+		{U3}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faArrDownNb\space\space,after upper=\space\space\faProjDiag]{Épreuve E3 - Mathématiques pour l'Informatique}}%
+		{UF2}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faDice\space\space,after upper=\space\space\faChartLine]{Épreuve EF2 - Mathématiques Approfondies}}%
+		{U41OL}{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur,before upper=\faDice\space\space,after upper=\space\space\faBezierCurve]{Épreuve U41 - Mathématiques}}}%
 		[{\tcbox[StyleTitreSujetSousEpreuve,StyleTitreSujetSousEpreuveCouleur]{#2}}]%
 }
 
@@ -461,4 +471,155 @@
 	\endgroup%
 }
 
+%====BLOC EXO NEW V3
+\newcounter{numeroblocexo}
+\setcounter{numeroblocexo}{0}
+\newlength{\eptraitblocexo}
+\setlength{\eptraitblocexo}{1.1pt}
+\newlength{\eptraitblocexospace}
+\setlength{\eptraitblocexospace}{1.5\eptraitblocexo}
+
+\colorlet{macouleurblocexo}{black}
+\colorlet{macouleurblocexodeco}{black}
+\colorlet{macouleurblocexodecofond}{black!50}
+
+\newcommand\tmpstyleblocexo{\bfseries\sffamily\large}%
+\newcommand\tmplabelblocexo{Exercice\space}%
+
+\tcbset{monstyleblocexo/.style={%
+		enhanced,%
+		opacityfill=0,%
+		size=small,%
+		boxrule=0.25mm,%
+		titlerule=0.25mm,%
+		arc=2mm,%
+		sharp corners=uphill,%
+		nobeforeafter,%
+		before skip=0.5\baselineskip,%
+		after skip=0.5\baselineskip,%
+		colback=white,%
+		colbacktitle=white,%
+		coltitle=macouleurblocexo,%
+		colframe=macouleurblocexo,%
+		left=1.5mm,%
+		right=1.5mm,%
+		top=1mm,%
+		bottom=1mm,%
+		fonttitle=\tmpstyleblocexo
+	}%
+}
+
+\tikzset{ligne bloc exo/.style={line width=0.3mm,macouleurblocexo}}
+
+\defKV[StyleBlocExo]{%
+	Libelle=\renewcommand\tmplabelblocexo{#1},%
+	Couleur=\colorlet{macouleurblocexo}{#1},%
+	CouleurDeco=\colorlet{macouleurblocexodeco}{#1},%
+	CouleurFondDeco=\colorlet{macouleurblocexodecofond}{#1},%
+	Police=\renewcommand\tmpstyleblocexo{#1},%
+	EpTrait=\setlength{\eptraitblocexo}{#1}
+}
+
+\setKVdefault[StyleBlocExo]{%
+	Libelle={Exercice\space},%
+	Couleur={black},%
+	CouleurDeco=black,
+	CouleurFondDeco={black!33},%
+	Police={\bfseries\sffamily\large},%
+	EpTrait={1.1pt}
+}
+
+\defKV[BlocExo]{%
+	Type=\def\EnvtExoAltType{#1},%
+	ComplementTitre=\def\EnvtExoAltCpltTitre{#1},%
+	CodeDebut=\def\EnvtExoAltCodeAvant{#1},%
+	Etoiles=\def\EnvtExoAltEtoiles{#1},%
+	Trait=\def\EnvtExoAltTrait{#1},%
+	Bordures=\def\EnvtExoAltBordures{#1},%
+	Strut=\def\blocexostrut{#1}
+}
+\setKVdefault[BlocExo]{
+	Type=Classique,%
+	ComplementTitre={},%
+	CodeDebut={},%
+	Compteur=true,%
+	Etoiles={},%
+	Breakable=false,%
+	Trait=non,%
+	Bordures=alt,%
+	Strut=()
+}
+
+\tcbuselibrary{breakable}%à voir...
+
+\NewDocumentEnvironment{BlocExo}{ O{} m }%
+{%
+	\useKVdefault[BlocExo]%
+	\setKV[BlocExo]{#1}%
+	\addtocounter{numeroblocexo}{1}%
+	\ifboolKV[BlocExo]{Compteur}{}{\addtocounter{numeroblocexo}{-1}}%
+	%styles
+	\tcbset{reset}%
+	\ifboolKV[BlocExo]{Breakable}%
+	{%
+		\tcbset{monstyleblocexobreakable/.style={breakable}}%
+	}%
+	{%
+		\tcbset{monstyleblocexobreakable/.style={}}%
+	}%
+	\IfStrEqCase{\EnvtExoAltBordures}{%
+		{normal}{\tcbset{monstylebloexobordures/.style={}}}%
+		{aucune}{\tcbset{monstylebloexobordures/.style={frame empty,left=0mm,right=0mm,boxsep=0mm,boxrule=0mm,top=2mm,before upper={\EnvtExoAltCodeAvant}}}}%
+		{alt}{\tcbset{monstylebloexobordures/.style={frame empty,top=0mm,finish={\draw[ligne bloc exo,|-|] ([xshift=0.5em-0.1mm]title.west) --++ (-0.5em-0.1mm,0) {[rounded corners=2mm]|- (frame.south east)} |- ([xshift=-0.5em+0.1mm]title.east) ;}}}}%
+		{fleche}{\tcbset{monstylebloexobordures/.style={frame empty,top=0mm,righttitle=0mm,finish={\draw[ligne bloc exo,->,>=latex] ([xshift=0.5em-0.1mm]title.west) --++ (-0.5em-0.1mm,0) {[rounded corners=2mm]|- (frame.south east)}  -- ($(frame.south east)!0.5!(frame.north east)$) ;}}}}%
+	}%
+	\tcbset{monstyleblocexotitre/.style={
+			title={%
+				\vphantom{\blocexostrut}%
+				\IfStrEq{\EnvtExoAltType}{Classique}%
+				{%
+					\tmplabelblocexo%
+				}%
+				{%
+					\StrBehind{\EnvtExoAltType}{/}[\EnvtExoLabel]%
+					\EnvtExoLabel%
+				}%
+				\ifboolKV[BlocExo]{Compteur}{\thenumeroblocexo}{}\EnvtExoAltCpltTitre%
+				\IfStrEq{\EnvtExoAltEtoiles}{}{}%les étoiles au début...
+				{%
+					\space(%
+					\IfSubStr{\EnvtExoAltEtoiles}{§}%
+					{%
+						\StrCut{\EnvtExoAltEtoiles}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
+						\pictostars[colors=macouleurblocexodeco/macouleurblocexodecofond,dstrut=()]{\EnvtExoStarNb/\EnvtExoStarTot}%
+					}%
+					{%
+						\pictostars[colors=macouleurblocexodeco/macouleurblocexodecofond,dstrut=()]{\EnvtExoStarNb}%
+					}%
+					)%
+				}%
+				%trait éventuel
+				\IfStrEqCase{\EnvtExoAltTrait}{%
+					{plein}%
+						{%
+							\def\hrulefill{\leavevmode\leaders\hrule height \eptraitblocexo\hfill\kern\z@}%épaisseur
+							\,\hrulefill\null%
+							\def\hrulefill{\leavevmode\leaders\hrule height 0.4pt\hfill\kern\z@}%
+						}%
+					{pointilles}{\,\dotfill\null}%
+					{dashilles}{\,\hdashrule{\fill}{\eptraitblocexo}{\eptraitblocexospace}\null}%
+					{non}{\hfill\null}%
+					{aucun}{}%
+				}%
+				%la décoration, manuelle
+				{#2}
+			}
+		}
+	}%
+	\noindent\tcolorbox[monstyleblocexo,monstyleblocexotitre,monstyleblocexobreakable,monstylebloexobordures]
+}%
+{%
+	\endtcolorbox%
+}
+
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/customenvs/customenvs-tikzpictos.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/customenvs/customenvs-tikzpictos.sty	2025-08-05 20:36:09 UTC (rev 75980)
+++ trunk/Master/texmf-dist/tex/latex/customenvs/customenvs-tikzpictos.sty	2025-08-05 20:36:19 UTC (rev 75981)
@@ -2,9 +2,10 @@
 % licence.........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{customenvs-tikzpictos}[2025/07/06 0.1.4 Small pictograms, made with tikz]
+\ProvidesPackage{customenvs-tikzpictos}[2025/08/04 0.1.5 Small pictograms, made with tikz]
 
 %====HISTORY
+% v 0.1.5	Inline badge (inspired by tikz-shields) + small stamp
 % v 0.1.4	Strut option for sample characters + difficultylevels + dballs + stamp
 % v 0.1.3	Clippy
 % v 0.1.2	Mini-calendar
@@ -20,9 +21,12 @@
 \RequirePackage{calc}
 \RequirePackage{tikz}
 \usetikzlibrary{shapes.geometric,bbox}
+\RequirePackage{tcolorbox}
+\tcbuselibrary{skins}
 
 %====strutletters
 \def\samplestrutletters{AZERTYUIOPSDFGHKLMWXCVBN}
+\def\samplestrutletters{AZERTYUIOPSDFGHKLMWXCVBN}
 \def\sampledstrutletters{azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN}
 
 %====pictostars
@@ -1626,4 +1630,195 @@
 		}%
 }
 
+%====TIKZSHIELD (inspired by tikz-shields
+\definecolor{inlinebadge-right}{HTML}{1283c4}
+\definecolor{inlinebadge-right-text}{HTML}{ffffff}
+\definecolor{inlinebadge-left}{HTML}{5e5e5e}
+\definecolor{inlinebadge-left-text}{HTML}{ffffff}
+
+\colorlet{inlinebadgeright}{inlinebadge-right}
+\colorlet{inlinebadgerighttext}{inlinebadge-right-text}
+\colorlet{inlinebadgeleft}{inlinebadge-left}
+\colorlet{inlinebadgelefttext}{inlinebadge-left-text}
+
+\def\inlinebadgefont{\small\sffamily}
+
+\tcbset{tcbinlinebadgeleft/.style={nobeforeafter,enhanced,box align=base,sharp corners=east,arc=2pt,bicolor,boxrule=0pt,boxsep=1.75pt,top=0pt,left=0pt,right=0pt, bottom=-0.05ex,fontupper=\inlinebadgefont,interior style={top color=inlinebadgeleft,bottom color=inlinebadgeleft!60!black}}}
+
+\tcbset{tcbinlinebadgeright/.style={nobeforeafter,enhanced,box align=base,sharp corners=west,arc=2pt,bicolor,boxrule=0pt,boxsep=1.75pt,top=0pt,left=0pt,right=0pt, bottom=-0.05ex,fontupper=\inlinebadgefont,interior style={top color=inlinebadgeright,bottom color=inlinebadgeright!60!black}}}
+
+\NewDocumentCommand\iconscaled{O{0.85}m}{\scalebox{#1}[#1]{#2}}
+
+\NewDocumentCommand\intdropshadowtextleft{m}{%
+	\begin{tikzpicture}[baseline=(TESTL.base),outer sep=0pt, inner sep=0pt]
+		\node[inlinebadge-left-text!40!black] at (0,-0.05ex) {#1};
+		\node[inlinebadge-left-text] (TESTL) at (0,0) {#1};
+	\end{tikzpicture}%
+}
+
+\NewDocumentCommand\intdropshadowtextright{m}{%
+	\begin{tikzpicture}[baseline=(TESTR.base),outer sep=0pt, inner sep=0pt]
+		\node[inlinebadge-right-text!40!black] at (0,-0.05ex) {#1};
+		\node[inlinebadge-right-text] (TESTR) at (0,0) {#1};
+	\end{tikzpicture}%
+}
+
+\newtcbox\intleftpart{tcbinlinebadgeleft}
+\newtcbox\intrightpart{tcbinlinebadgeright}
+
+\defKV[inlinetikzbadge]{%
+	leftcolor=\colorlet{inlinebadgeleft}{#1},%
+	rightcolor=\colorlet{inlinebadgeright}{#1},%
+	lefttextcolor=\colorlet{inlinebadgelefttext}{#1},%
+	righttextcolor=\colorlet{inlinebadgerighttext}{#1},%
+	font=\def\inlinebadgefont{#1},%
+	link=\def\inlinebadgelink{#1},%
+}
+
+\setKVdefault[inlinetikzbadge]{%
+	leftcolor=inlinebadge-left,
+	rightcolor=inlinebadge-right,
+	lefttextcolor=inlinebadge-left-text,
+	righttextcolor=inlinebadge-left-text,
+	font=\small\sffamily,%
+	link={}
+}
+
+\NewDocumentCommand\tikzinlinebadge{O{}mm}{%
+	\restoreKV[inlinetikzbadge]%
+	\setKV[inlinetikzbadge]{#1}%
+	\IfEq{\inlinebadgelink}{}%
+		{%
+			\mbox{\intleftpart{\intdropshadowtextleft{\vphantom{#3}#2}}\intrightpart{\intdropshadowtextright{\vphantom{#2}#3}}}%
+		}%
+		{%
+			{\mbox{\intleftpart{\href{\inlinebadgelink}{\intdropshadowtextleft{\vphantom{#3}#2}}}\intrightpart{\href{\inlinebadgelink}{\intdropshadowtextright{\vphantom{#2}#3}}}}}%
+		}%
+}
+
+%====SMALLSTAMP
+\usetikzlibrary{decorations,decorations.text}
+\newlength\mylensmallstamp
+\setlength\mylensmallstamp{2cm}
+\newlength\mylensmallstampxinnerseptop
+\newlength\mylensmallstampxinnersepbottom
+\newlength\mylensmallstamptxtheight
+\newlength\mylensmallstamplogoheight
+\newlength\mylensmallstampbottomtxtheight
+\newlength\mylensmallstamptoptxtheight
+\newlength\mylensmallstamptxtlogoheight
+
+\defKV[tkzsmallstamp]{%
+	height=\setlength\mylensmallstamp{#1},%
+	maincolor=\def\mycolorsmallstamp{#1},%
+	toptxtcolor=\def\mytoptxtcolorsmallstamp{#1},%
+	bottomtxtcolor=\def\mybottomtxtcolorsmallstamp{#1},%
+	logocolor=\def\mylogotcolorsmallstamp{#1},%
+	rotate=\def\myrotatesmallstamp{#1},%
+	toptxtfont=\def\myfontsmallstamptop{#1},%
+	bottomtxtfont=\def\myfontsmallstampbottom{#1},%
+	logoscale=\def\mylogoscalesmallstamp{#1},%
+	color=\def\myglobalcolorsmallstamp{#1}
+}
+
+\setKVdefault[tkzsmallstamp]{%
+	height=2cm,%
+	maincolor={black},%
+	toptxtcolor={black},%
+	bottomtxtcolor={black},%
+	logocolor={black},
+	inner circle=false,%
+	rotate=35,%
+	toptxtfont={\bfseries},%
+	bottomtxtfont={\bfseries},
+	reverse bottom=true,%
+	image=false,%
+	logoscale=1,%
+	fill inner=false,%
+	color={}
+}
+
+\tikzset{smallstamp/.style={line width=0.0125\mylensmallstamp}}
+\tikzset{smallstampinner/.style={line width=0.005\mylensmallstamp}}
+
+\NewDocumentCommand\pictosmallstamp{sO{}D<>{}mmm}{%
+	\restoreKV[tkzsmallstamp]%
+	\setKV[tkzsmallstamp]{#2}%
+	\setlength\mylensmallstamptxtheight{0.125\mylensmallstamp}%
+	\setlength\mylensmallstamplogoheight{\fpeval{\mylogoscalesmallstamp*0.4}\mylensmallstamp}%
+	\settoheight\mylensmallstamptoptxtheight{\hbox{\myfontsmallstamptop#4}}%TOP
+	\settoheight\mylensmallstampbottomtxtheight{\hbox{\myfontsmallstampbottom#5}}%BOTTOM
+	%----logo
+	\ifboolKV[tkzsmallstamp]{image}%
+		{}%
+		{%
+			\settototalheight\mylensmallstamptxtlogoheight{\hbox{#6}}%LOGO
+			\xdef\mytmpscalesmallstamplogo{\fpeval{\mylensmallstamplogoheight/\mylensmallstamptxtlogoheight}}%LOGO
+		}%
+	%----end logo
+	\xdef\mytmpscalesmallstamptoptext{\fpeval{\mylensmallstamptxtheight/\mylensmallstamptoptxtheight}}%TOP
+	\xdef\mytmpinvscalesmallstamptoptext{\fpeval{1/\mytmpscalesmallstamptoptext}}%
+	\xdef\mytmpscalesmallstampbottomtext{\fpeval{\mylensmallstamptxtheight/\mylensmallstampbottomtxtheight}}%BOTTOM
+	%----global color
+	\ifthenelse{\equal{\myglobalcolorsmallstamp}{}}%
+		{}%
+		{%
+			\def\mycolorsmallstamp{\myglobalcolorsmallstamp}%
+			\def\mytoptxtcolorsmallstamp{\myglobalcolorsmallstamp}%
+			\def\mybottomtxtcolorsmallstamp{\myglobalcolorsmallstamp}%
+			\def\mylogotcolorsmallstamp{\myglobalcolorsmallstamp}%
+		}%
+	%----global color end
+	\IfBooleanTF{#1}%
+		{%
+			\begin{tikzpicture}[overlay,remember picture,shift={#3},transform shape]
+		}%
+		{%
+			\begin{tikzpicture}[transform shape,#3]
+		}%
+		\draw[\mycolorsmallstamp,smallstamp] (0,0) circle[radius=0.5\mylensmallstamp] ;
+		\useasboundingbox (0,0) circle[radius=0.5\mylensmallstamp] ;
+		\begin{scope}[rotate=\myrotatesmallstamp]
+			\clip (0,0) circle[radius=0.5\mylensmallstamp] ;
+			\ifboolKV[tkzsmallstamp]{inner circle}%
+				{%
+					\ifboolKV[tkzsmallstamp]{fill inner}%
+						{%
+							\fill[\mycolorsmallstamp!10,smallstampinner] (0,0) circle[radius=0.3\mylensmallstamp] ;%
+						}%
+						{%
+							\draw[\mycolorsmallstamp!50,fill=\mycolorsmallstamp!10,smallstampinner] (0,0) circle[radius=0.3\mylensmallstamp] ;%
+						}%
+				}%
+				{%
+					\ifboolKV[tkzsmallstamp]{fill inner}%
+						{%
+							\fill[draw=none,\mycolorsmallstamp!10,smallstampinner] (0,0) circle[radius=0.3\mylensmallstamp] ;%
+						}%
+						{}%
+				}%
+			%top text
+			\draw [draw=none,postaction={decorate},decoration={raise=0.0375\mylensmallstamp,text effects along path,text align=center,reverse path,text={#4},text effects/.cd,characters={scale=\mytmpscalesmallstamptoptext,font=\myfontsmallstamptop,color=\mytoptxtcolorsmallstamp}},text effects={text along path},rotate=-90] (0,0) circle[radius=0.3\mylensmallstamp] ;
+			%bottom text
+			\ifboolKV[tkzsmallstamp]{reverse bottom}%
+				{%
+					\draw [draw=none,postaction={decorate},decoration={reverse path,raise=0.0375\mylensmallstamp,text effects along path,text align=center,text={#5},text effects/.cd,characters={scale=\mytmpscalesmallstamptoptext,font=\myfontsmallstampbottom,color=\mybottomtxtcolorsmallstamp}},text effects={text along path},rotate=90] (0,0) circle[radius=0.3\mylensmallstamp] ;
+				}%
+				{%
+					\draw [draw=none,postaction={decorate},decoration={raise=0.05\mylensmallstamp,text effects along path,text align=center,text={#5},text effects/.cd,characters={scale=\mytmpscalesmallstamptoptext,font=\myfontsmallstampbottom,color=\mybottomtxtcolorsmallstamp}},text effects={text along path},rotate=90] (0,0) circle[radius=0.5\mylensmallstamp] ;
+				}%
+			%middle logo
+			\ifboolKV[tkzsmallstamp]{image}%
+				{%
+					\draw (0,0) node[anchor=center] {\includegraphics[height=\mylensmallstamplogoheight]{#6}} ;
+				}%
+				{%
+					\clip (0,0) circle[radius=0.3\mylensmallstamp] ;
+					\draw[\mylogotcolorsmallstamp] (0,0) node[scale=\mytmpscalesmallstamplogo] {#6} ;
+				}%
+		\end{scope}
+	\end{tikzpicture}%
+}
+
+
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty	2025-08-05 20:36:09 UTC (rev 75980)
+++ trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty	2025-08-05 20:36:19 UTC (rev 75981)
@@ -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}[2025/07/29 0.41a Custom classic environments]
+\ProvidesPackage{customenvs}[2025/08/04 0.41b Custom classic environments]
 
 %====HISTORIQUE
+% v 0.41b	New BlocExo (workinprogress) + precompat fa(567) + new pictos
 % v 0.41a	Bugfix with inlinegraphicx and MiKTeX...
 % v 0.40f	WhatsApp like Chat
 % v 0.40e	Sous-package customenvs-icons
@@ -65,11 +66,11 @@
 \DeclareOption{noxcolor}{\@xcolorfalse}%
 \newif\if at fafive \@fafivetrue
 \newif\if at fasix \@fasixfalse
-\newif\if at fafivesix \@fafivesixfalse
-\DeclareOption{nonfa}{\@fafivefalse\@fasixfalse\@fafivesixfalse}
-\DeclareOption{nofa}{\@fafivefalse\@fasixfalse\@fafivesixfalse}
-\DeclareOption{fa6}{\@fafivefalse\@fafivesixfalse\@fasixtrue}
-\DeclareOption{fa5fa6}{\@fafivefalse\@fasixfalse\@fafivesixtrue}
+\newif\if at faseven \@fasevenfalse
+\DeclareOption{nonfa}{\@fafivefalse\@fasixfalse\@fasevenfalse}
+\DeclareOption{nofa}{\@fafivefalse\@fasixfalse\@fasevenfalse}
+\DeclareOption{fa6}{\@fafivefalse\@fasixtrue\@fasevenfalse}
+\DeclareOption{fa7}{\@fafivefalse\@fasixfalse\@faseventrue}
 \newif\if at adjustbox\@adjustboxtrue%
 \DeclareOption{nonadjustbox}{\@adjustboxfalse}%
 \DeclareOption{noadjustbox}{\@adjustboxfalse}%
@@ -86,39 +87,6 @@
 \if at xcolor
 	\RequirePackage{xcolor}
 \fi
-\if at fafive
-	\RequirePackage{fontawesome5}
-	%aliases fa5/fa6
-	\def\faStarHalf{\faIcon{star-half-alt}}        %semble ko avec fa5alias (à surveiller)
-	\def\faThreeDotsV{\faEllipsisV}                %semble ok avec fa5alias
-	\def\faCPlus{\faPlusCircle}                    %semble ok avec fa5alias
-	\def\faCheckCircleReg{\faCheckCircle[regular]} %semble ok avec fa5alias
-	\def\faArrDownNb{\faSortNumericDown}           %semble ok avec fa5alias
-	\def\faProjDiag{\faProjectDiagram}             %semble ok avec fa5alias
-	\def\faFlipPhone{\faPhone*}                    %semble ko avec fa5alias (à surveiller)
-\fi
-\if at fasix
-	\RequirePackage{fontawesome6}
-	%aliases fa5/fa6
-	\def\faStarhalf{\faIcon{star-half-stroke}}
-	\def\faThreeDotsV{\faEllipsisVertical}
-	\def\faCPlus{\faCirclePlus}
-	\def\faCheckCircleReg{\faCircleCheck[regular]}
-	\def\faArrDownNb{\faIcon{arrow-down-1-9}}
-	\def\faProjDiag{\faDiagramProject}
-	\def\faFlipPhone{\faPhoneFlip}
-\fi
-\if at fafivesix
-	\RequirePackage[fa5alias]{fontawesome6}
-	%aliases fa5/fa6
-	\def\faStarhalf{\faIcon{star-half-stroke}}
-	\def\faThreeDotsV{\faEllipsisVertical}
-	\def\faCPlus{\faCirclePlus}
-	\def\faCheckCircleReg{\faCircleCheck[regular]}
-	\def\faArrDownNb{\faIcon{arrow-down-1-9}}
-	\def\faProjDiag{\faDiagramProject}
-	\def\faFlipPhone{\faPhoneFlip}
-\fi
 \if at enum
 	\RequirePackage{enumitem}
 \fi
@@ -152,6 +120,61 @@
 \RequirePackage{varwidth}
 \tcbuselibrary{skins}
 
+%====FONTAWESOME (5/6/7)
+
+\if at fafive
+	\RequirePackage{fontawesome5}
+\fi
+\if at fasix
+	\RequirePackage{fontawesome6}
+\fi
+\if at faseven
+	\RequirePackage{fontawesome7}
+\fi
+
+\def\faHalfStar{}
+\def\faThreeDotsV{}
+\def\faCPlus{}
+\def\faCheckCircleReg{}
+\def\faArrDownNb{}
+\def\faProjDiag{}
+\def\faFlipPhone{}
+
+\@ifpackageloaded{fontawesome5}%
+	{%
+		\def\faHalfStar{\faIcon{star-half-alt}}
+		\def\faThreeDotsV{\faEllipsisV}
+		\def\faCPlus{\faPlusCircle}
+		\def\faCheckCircleReg{\faCheckCircle[regular]}
+		\def\faArrDownNb{\faSortNumericDown}
+		\def\faProjDiag{\faProjectDiagram}
+		\def\faFlipPhone{\faPhone*}
+	}%
+	{}
+
+\@ifpackageloaded{fontawesome6}%
+	{%
+		\def\faHalfStar{\faIcon{star-half-stroke}}
+		\def\faThreeDotsV{\faEllipsisVertical}
+		\def\faCPlus{\faCirclePlus}
+		\def\faCheckCircleReg{\faCircleCheck[regular]}
+		\def\faArrDownNb{\faIcon{arrow-down-1-9}}
+		\def\faProjDiag{\faDiagramProject}
+		\def\faFlipPhone{\faPhoneFlip}
+	}%
+	{}%
+\@ifpackageloaded{fontawesome7}%
+	{%
+		\def\faHalfStar{\faIcon{star-half-stroke}}
+		\def\faThreeDotsV{\faEllipsisVertical}
+		\def\faCPlus{\faCirclePlus}
+		\def\faCheckCircleReg{\faCircleCheck[regular]}
+		\def\faArrDownNb{\faIcon{arrow-down-1-9}}
+		\def\faProjDiag{\faDiagramProject}
+		\def\faFlipPhone{\faPhoneFlip}
+	}%
+	{}%
+
 %====MACRO TESTEMPTY expl3
 \ExplSyntaxOn
 \DeclareExpandableDocumentCommand\CustEnvsIfNoValueOrEmptyTF{mmm}{\IfNoValueTF{#1}{#2}{\tl_if_empty:nTF {#1} {#2} {#3}}}
@@ -505,7 +528,7 @@
 	\def\TroisNivSmiley{\vcenterfa[regular]{face-angry} § \vcenterfa[regular]{face-frown} § \vcenterfa[regular]{face-smile}}
 	\def\QuatreNivSmiley{\vcenterfa[regular]{face-angry} § \vcenterfa[regular]{face-frown} § \vcenterfa[regular]{face-smile} § \vcenterfa[regular]{face-grin}}
 \fi
-\if at fafivesix
+\if at faseven
 	\def\DeuxNivSmiley{\vcenterfa[regular]{face-angry} § \vcenterfa[regular]{face-smile}}
 	\def\TroisNivSmiley{\vcenterfa[regular]{face-angry} § \vcenterfa[regular]{face-frown} § \vcenterfa[regular]{face-smile}}
 	\def\QuatreNivSmiley{\vcenterfa[regular]{face-angry} § \vcenterfa[regular]{face-frown} § \vcenterfa[regular]{face-smile} § \vcenterfa[regular]{face-grin}}
@@ -961,7 +984,7 @@
 \NewDocumentCommand\NiveauDiffExos{ O{3} m }{%avec des demis ??
 	%les tailles de boîtes
 	\settowidth{\largstarsempty}{{\faStar[regular]}}%
-	\settowidth{\largstarsmid}{{\faStarHalf}}%
+	\settowidth{\largstarsmid}{{\faHalfStar}}%
 	\settowidth{\largstarfull}{{\faStar}}%
 	\pgfmathsetlength{\largmaxstars}{max(\largstarsempty,\largstarsmid,\largstarfull)}%
 	%les calculs intermédiaires
@@ -982,7 +1005,7 @@
 	%affichage des full
 	\xintifboolexpr{\tmpstarsexosfull > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosfull}}\do{\makebox[\largmaxstars][c]{\faStar}}}{}%
 	%affichage des mid
-	\xintifboolexpr{\tmpstarsexosmid > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosmid}}\do{\makebox[\largmaxstars][c]{\faStarHalf}}}{}%
+	\xintifboolexpr{\tmpstarsexosmid > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosmid}}\do{\makebox[\largmaxstars][c]{\faHalfStar}}}{}%
 	%affichage des vides
 	\xintifboolexpr{\tmpstarsexosempty > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosempty}}\do{\makebox[\largmaxstars][c]{\faStar[regular]}}}{}%
 }
@@ -991,7 +1014,7 @@
 \NewDocumentCommand\DiffLevelStars{ O{3} m }{%avec des demis ??
 	%les tailles de boîtes
 	\settowidth{\largstarsempty}{{\faStar[regular]}}%
-	\settowidth{\largstarsmid}{{\faStarHalf}}%
+	\settowidth{\largstarsmid}{{\faHalfStar}}%
 	\settowidth{\largstarfull}{{\faStar}}%
 	\pgfmathsetlength{\largmaxstars}{max(\largstarsempty,\largstarsmid,\largstarfull)}%
 	%les calculs intermédiaires
@@ -1012,7 +1035,7 @@
 	%affichage des full
 	\xintifboolexpr{\tmpstarsexosfull > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosfull}}\do{\makebox[\largmaxstars][c]{\faStar}}}{}%
 	%affichage des mid
-	\xintifboolexpr{\tmpstarsexosmid > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosmid}}\do{\makebox[\largmaxstars][c]{\faStarHalf}}}{}%
+	\xintifboolexpr{\tmpstarsexosmid > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosmid}}\do{\makebox[\largmaxstars][c]{\faHalfStar}}}{}%
 	%affichage des vides
 	\xintifboolexpr{\tmpstarsexosempty > 0}{\xintFor* ##1 in {\xintSeq{1}{\tmpstarsexosempty}}\do{\makebox[\largmaxstars][c]{\faStar[regular]}}}{}%
 }
@@ -1032,7 +1055,7 @@
 \colorlet{macouleurexodecofond}{blue!50!black}
 
 \newcommand\tmpstyleexo{\bfseries\LARGE\sffamily}%
-\newcommand\tmplabelexo{Exercice~}%
+\newcommand\tmplabelexo{Exercice\space}%
 
 \defKV[globalstyleexo]{%
 	Libelle=\renewcommand\tmplabelexo{#1},%
@@ -1046,7 +1069,7 @@
 }
 
 \setKVdefault[globalstyleexo]{%
-	Libelle={Exercice~},%
+	Libelle={Exercice\space},%
 	Couleur={blue!50!black},%
 	CouleurDeco={blue!50!black},%
 	CouleurFondDeco={macouleurexodeco!50},%
@@ -1175,7 +1198,7 @@
 				\ifboolKV[EnvtExerciceAlt]{Compteur}{\thenumeroexoalt}{}\EnvtExoAltCpltTitre%
 				\IfStrEq{\EnvtExoAltEtoiles}{}{}%les étoiles au début...
 					{%
-						~(%
+						\space(%
 						\IfSubStr{\EnvtExoAltEtoiles}{§}%
 							{%
 								\StrCut{\EnvtExoAltEtoiles}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
@@ -1188,10 +1211,10 @@
 					}%
 				%trait éventuel
 				\IfStrEqCase{\EnvtExoAltTrait}{%
-					{plein}{\,\hrulefill\,}%
-					{pointilles}{\,\dotfill\,}%
-					{dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}\,}%
-					{non}{\hfill\,}%
+					{plein}{\,\hrulefill\null}%
+					{pointilles}{\,\dotfill\null}%
+					{dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}\null}%
+					{non}{\hfill\null}%
 					{aucun}{}%
 				}%
 				\IfSubStr{\EnvtExoAltDeco}{Icone}%icone fa
@@ -1204,6 +1227,16 @@
 						\StrBehind{\EnvtExoAltDeco}{/}[\EnvtExoEmoji]%
 						\raisebox{-\tmptitreexoprofondeur}{\twemoji[height=\tmptitreexohauteurtotale]{\EnvtExoEmoji}}%
 					}{}%
+				\IfSubStr{\EnvtExoAltDeco}{Openmoji}%emojo openoji
+					{%
+						\StrBehind{\EnvtExoAltDeco}{/}[\EnvtExoEmoji]%
+						\openmoji[height=dauto]{\EnvtExoEmoji}%
+					}{}%
+				\IfSubStr{\EnvtExoAltDeco}{Tablericon}%emojo openoji
+					{%
+						\StrBehind{\EnvtExoAltDeco}{/}[\EnvtExoEmoji]%
+						\tablericon[height=dauto]{\EnvtExoEmoji}%
+					}{}%
 				\IfSubStr{\EnvtExoAltDeco}{Ceinture}%
 					{%
 						\StrBehind{\EnvtExoAltDeco}{/}[\EnvtExoCouleur]%
@@ -1213,7 +1246,7 @@
 					{%
 						\StrBehind{\EnvtExoAltDeco}{/}[\EnvtExoPts]%
 						\xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
-						(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)%
+						(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\space\pts)%
 					}{}%
 				\IfSubStr{\EnvtExoAltDeco}{Image}%
 					{%
@@ -1340,7 +1373,7 @@
 	%étoiles au début
 	\IfStrEq{\EnvtExoEtoiles}{}{}%
 		{%
-			\,(\IfSubStr{\EnvtExoEtoiles}{§}%
+			\space(\IfSubStr{\EnvtExoEtoiles}{§}%
 				{%
 					\StrCut{\EnvtExoEtoiles}{§}{\EnvtExoStarNb}{\EnvtExoStarTot}%
 					\tkzEtoiles[Couleur=macouleurexodeco,CouleurFond=macouleurexodecofond,NiveauMax=\EnvtExoStarTot]{\EnvtExoStarNb}%
@@ -1356,7 +1389,7 @@
 		{pointilles}{\,\dotfill}%
 		{dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}%
 		{non}{\hfill}%
-		{aucun}{~}%
+		{aucun}{\space}%
 		}%
 	%décorations éventuelles
 	\IfSubStr{\EnvtExoDeco}{Icone}%
@@ -1369,6 +1402,16 @@
 			\StrBehind{\EnvtExoDeco}{/}[\EnvtExoEmoji]%
 			\,\texttwemoji{\EnvtExoEmoji}%
 		}{}%
+	\IfSubStr{\EnvtExoAltDeco}{Openmoji}%emojo openoji
+		{%
+			\StrBehind{\EnvtExoAltDeco}{/}[\EnvtExoEmoji]%
+			\openmoji[height=dauto]{\EnvtExoEmoji}%
+		}{}%
+	\IfSubStr{\EnvtExoAltDeco}{Tablericon}%emojo openoji
+		{%
+			\StrBehind{\EnvtExoAltDeco}{/}[\EnvtExoEmoji]%
+			\tablericon[height=dauto]{\EnvtExoEmoji}%
+		}{}%
 	\IfSubStr{\EnvtExoDeco}{Barres}%
 		{%
 			\StrBehind{\EnvtExoDeco}{/}[\EnvtExoIcon]%
@@ -1436,7 +1479,7 @@
 		{%
 			\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
 			\xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
-			\,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
+			\,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\space\pts)}%
 		}{}%
 	\IfSubStr{\EnvtExoDeco}{Image}%
 		{%
@@ -1519,7 +1562,7 @@
 		{pointilles}{\,\dotfill}%
 		{dashilles}{\,\hdashrule{\fill}{\eptraitexo}{\eptraitexospace}}%
 		{non}{\hfill}%
-		{aucun}{~}%
+		{aucun}{\space}%
 		}%
 	%décorations éventuelles
 	\IfSubStr{\EnvtExoDeco}{Icone}%
@@ -1599,7 +1642,7 @@
 		{%
 			\StrBehind{\EnvtExoDeco}{/}[\EnvtExoPts]%
 			\xintifboolexpr{ \EnvtExoPts <= 1 }{\def\pts{point}}{\def\pts{points}}%
-			\,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\ \pts)}%
+			\,\textcolor{macouleurexodeco}{(\StrSubstitute{\EnvtExoPts}{.}{{{,}}}\space\pts)}%
 		}{}%
 	\IfSubStr{\EnvtExoDeco}{Image}%
 		{%
@@ -1678,7 +1721,7 @@
 	enhanced,arc=0pt,outer arc=0pt,colback=\ProjectSmsColback,toptitle=0.3cm,bottomtitle=0.3cm,title={\null},
 	overlay={
 		%la barre de titre
-		\node[anchor=east,smscoltitle,font=\large] at ([xshift=-1mm]title.east) {\faVideo\:\:\faFlipPhone\:\:\faThreeDotsV};
+		\node[anchor=east,smscoltitle,font=\large] at ([xshift=-1mm]title.east) {\faVideo\space\space\faFlipPhone\space\space\faThreeDotsV};
 		\node[draw=none,anchor=west,inner sep=1pt,text=smscoltitle,font=\large] at ([xshift=1mm]title.west) (picture) {\ProjectSmsAvat};
 		\node[draw=none,anchor=west,text=smscoltitle,font=\large,text depth=0pt,inner sep=1pt] at (picture.east) {\sffamily\bfseries\vphantom{pB}\NameofSMS} ;
 		%le bas
@@ -1799,7 +1842,7 @@
 	attach boxed title to top left,
 	coltitle=black,fonttitle=\scriptsize\sffamily,
 	boxed title style={size=fbox,bottom=0pt,boxsep=2pt,frame empty,interior empty},
-	title={\@ifpackageloaded{babel}{\NoAutoSpacing#2}{#2}\IfBooleanTF{#1}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircleReg\!\faCheckCircleReg}\:}{}},left=1mm,right=1mm,boxsep=0mm,SMSAffLogo]{#3}%
+	title={\@ifpackageloaded{babel}{\NoAutoSpacing#2}{#2}\IfBooleanTF{#1}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircleReg\!\faCheckCircleReg}\space}{}},left=1mm,right=1mm,boxsep=0mm,SMSAffLogo]{#3}%
 }
 \NewDocumentCommand\SMSenv{ s m m }{%
 	\tcbox[enhanced,interior code={},before skip=0.5mm,after skip=0.5mm,halign=left,left=1.5mm,right=1.5mm,
@@ -1812,7 +1855,7 @@
 	attach boxed title to top right,
 	coltitle=black,fonttitle=\scriptsize\sffamily,
 	boxed title style={size=fbox,bottom=0pt,boxsep=2pt,frame empty,interior empty},
-	title={\@ifpackageloaded{babel}{\NoAutoSpacing#2}{#2}\IfBooleanTF{#1}{}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircleReg\!\faCheckCircleReg}\:}},left=1mm,right=1mm,boxsep=0mm]{#3}%
+	title={\@ifpackageloaded{babel}{\NoAutoSpacing#2}{#2}\IfBooleanTF{#1}{}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircleReg\!\faCheckCircleReg}\space}},left=1mm,right=1mm,boxsep=0mm]{#3}%
 }
 
 %====Nutriscore
@@ -2340,7 +2383,7 @@
 	attach boxed title to top left,
 	coltitle=black,fonttitle=\scriptsize\sffamily,
 	boxed title style={size=fbox,bottom=0pt,boxsep=2pt,frame empty,interior empty},
-	title={#2\IfBooleanTF{#1}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircleReg\!\faCheckCircleReg}\:}{}},left=1mm,right=1mm,boxsep=0mm,SMSAffLogo]{#3}%
+	title={#2\IfBooleanTF{#1}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircleReg\!\faCheckCircleReg}\space}{}},left=1mm,right=1mm,boxsep=0mm,SMSAffLogo]{#3}%
 }
 \NewDocumentCommand\OutSMS{ s m m }{%
 	\tcbox[enhanced,interior code={},before skip=0.5mm,after skip=0.5mm,halign=left,left=1.5mm,right=1.5mm,
@@ -2353,7 +2396,7 @@
 	attach boxed title to top right,
 	coltitle=black,fonttitle=\scriptsize\sffamily,
 	boxed title style={size=fbox,bottom=0pt,boxsep=2pt,frame empty,interior empty},
-	title={#2\IfBooleanTF{#1}{}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircleReg\!\faCheckCircleReg}\:}},left=1mm,right=1mm,boxsep=0mm]{#3}%
+	title={#2\IfBooleanTF{#1}{}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircleReg\!\faCheckCircleReg}\space}},left=1mm,right=1mm,boxsep=0mm]{#3}%
 }
 
 %====SMALL BOXES CREATION
@@ -3441,10 +3484,10 @@
 \NewDocumentCommand\VilleDist{ s m m }{%
 	\IfBooleanTF{#1}%
 		{%
-			#2\hfill~#3
+			#2\hfill\space#3
 		}%
 		{%
-			#2\hfill~#3\\
+			#2\hfill\space#3\\
 		}%
 }
 
@@ -3459,9 +3502,9 @@
 \newlength{\tmphautlignesol}
 \newlength{\tmphautsoles}
 
-\def\labelancienprix{Ancien Prix~:~}
-\def\labelnouveauprix{Nouveau Prix~:~}
-\def\labelreduction{SOLDES~:~}
+\def\labelancienprix{Ancien Prix\space:\space}
+\def\labelnouveauprix{Nouveau Prix\space:\space}
+\def\labelreduction{SOLDES\space:\space}
 
 \defKV[PanoSoldes]{%
 	Couleur=\def\panosoldescolor{#1},%
@@ -4180,7 +4223,7 @@
 					\IfEq{\tkzBannermaintrilogotwemoji}{}%OK
 						{}%
 						{%
-							\node[inner sep=1.25pt,left=2pt,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartAltKeys]{fonttxt}},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartAltKeys]{width}},{0.55*(\useKV[tkzBannerpartAltKeys]{height})}) {\vphantom{qÉ}\twemoji[height={0.5\tmp at tkzbanneralt@height}]{\tkzBannermaintrilogotwemoji}\:};
+							\node[inner sep=1.25pt,left=2pt,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartAltKeys]{fonttxt}},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartAltKeys]{width}},{0.55*(\useKV[tkzBannerpartAltKeys]{height})}) {\vphantom{qÉ}\twemoji[height={0.5\tmp at tkzbanneralt@height}]{\tkzBannermaintrilogotwemoji}\space};
 						}%
 				}%
 				{%
@@ -4195,7 +4238,7 @@
 					\IfEq{\tkzBannermaintrilogotwemoji}{}%OK
 						{}%
 						{%
-							\node[inner sep=1.25pt,left=2pt,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartAltKeys]{fonttxt}},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartAltKeys]{width}},{0.55*(\useKV[tkzBannerpartAltKeys]{height})}) {\vphantom{qÉ}\twemoji[height={0.5\tmp at tkzbanneralt@height}]{\tkzBannermaintrilogotwemoji}\:};
+							\node[inner sep=1.25pt,left=2pt,text=\tkzBannermaintricol,font={\useKV[tkzBannerpartAltKeys]{fonttxt}},rotate={atan(\tkzBannertriangle)}] at ({\useKV[tkzBannerpartAltKeys]{width}},{0.55*(\useKV[tkzBannerpartAltKeys]{height})}) {\vphantom{qÉ}\twemoji[height={0.5\tmp at tkzbanneralt@height}]{\tkzBannermaintrilogotwemoji}\space};
 						}%
 				}%
 		\end{scope}
@@ -4534,12 +4577,12 @@
 		enhanced,arc=1.25pt,colback=\ProjectWaColback,toptitle=0.3cm,bottomtitle=0.3cm,title={\null},
 		overlay={
 			%la barre de titre
-			\node[anchor=east,wacoltitle,text=wacoltitle] at ([xshift=-1mm]title.east) {\faVideo\:\faFlipPhone\:\faThreeDotsV};
+			\node[anchor=east,wacoltitle,text=wacoltitle] at ([xshift=-1mm]title.east) {\faVideo\space\space\faFlipPhone\space\space\faThreeDotsV};
 			\node[draw=none,anchor=west,inner sep=1pt,text=wacoltitle] at ([xshift=1mm]title.west) (arrowleft) {\faArrowLeft};
-			\node[draw=none,anchor=west,inner sep=1pt,text=wacoltitle] at ([xshift=1mm]title.west) (picture) {\phantom{\faArrowLeft}\:\ProjectWaAvat};
-			\node[draw=none,anchor=west,text=wacoltitle,text depth=0pt,inner sep=1pt] at (picture.east) {\:\sffamily\vphantom{pB}\NameofWa} ;
+			\node[draw=none,anchor=west,inner sep=1pt,text=wacoltitle] at ([xshift=1mm]title.west) (picture) {\phantom{\faArrowLeft}\space\ProjectWaAvat};
+			\node[draw=none,anchor=west,text=wacoltitle,text depth=0pt,inner sep=1pt] at (picture.east) {\space\sffamily\vphantom{pB}\NameofWa} ;
 			%le bas
-			\node[draw=white,fill=white,line width=1pt,rounded corners=8pt,text width={\WidthofWa-2.5mm-1cm},minimum height=0.75cm,font=\ProjectWaFonte,text=darkgray,inner xsep=3pt,anchor=west] at ([shift={(1.25mm,0.5cm)}]frame.south west) {\faIcon{smile}\:\rule[-0.1cm]{1pt}{0.5cm}\,\ProjectWaWrite\hfill\faPaperclip\:\:\faVideo\:};
+			\node[draw=white,fill=white,line width=1pt,rounded corners=8pt,text width={\WidthofWa-2.5mm-1cm},minimum height=0.75cm,font=\ProjectWaFonte,text=darkgray,inner xsep=3pt,anchor=west] at ([shift={(1.25mm,0.5cm)}]frame.south west) {\faIcon{smile}\space\rule[-0.1cm]{1pt}{0.5cm}\,\ProjectWaWrite\hfill\faPaperclip\space\space\faVideo\space};
 			\node[draw=wacolmicro,fill=wacolmicro,line width=1pt,rounded corners=8pt,text width={0.35cm},minimum height=0.75cm,font=\ProjectWaFonte,text=white,anchor=east,align=center] at ([shift={(-1.25mm,0.5cm)}]frame.south east) {\faMicrophone};
 		},
 		boxrule=0.8pt,colframe=wacolmicro!50!gray,title style={color=white},



More information about the tex-live-commits mailing list.