texlive[73715] Master/texmf-dist: customenvs (3feb25)

commits+karl at tug.org commits+karl at tug.org
Mon Feb 3 21:55:19 CET 2025


Revision: 73715
          https://tug.org/svn/texlive?view=revision&revision=73715
Author:   karl
Date:     2025-02-03 21:55:19 +0100 (Mon, 03 Feb 2025)
Log Message:
-----------
customenvs (3feb25)

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/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-02-03 20:54:59 UTC (rev 73714)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-en.tex	2025-02-03 20:55:19 UTC (rev 73715)
@@ -34,8 +34,8 @@
 \usepackage[margin=1.5cm]{geometry}
 \setlength{\parindent}{0pt}
 
-\def\TPversion{0.2.6}
-\def\TPdate{04/11/2024}
+\def\TPversion{0.3.0}
+\def\TPdate{03/02/2025}
 \usepackage{tcolorbox}
 \sethlcolor{lightgray!25}
 \NewDocumentCommand\MontreCode{ m }{%
@@ -77,7 +77,7 @@
 	\begin{tabular}{c}
 	\texttt{Cédric Pierquet}\\
 	{\ttfamily c pierquet -- at -- outlook . fr}\\
-	\texttt{\url{https://github.com/cpierquet/customenvs}}
+	\texttt{\url{https://forge.apps.education.fr/pierquetcedric/packages-latex}}
 \end{tabular}
 \end{center}
 
@@ -111,6 +111,10 @@
 
 \section{History}
 
+\verb|v0.3.0|~:~~~Bugfix with \textsf{beamer}
+
+\verb|v0.2.7|~:~~~Key for mixing answers in MCQ
+
 \verb|v0.2.6|~:~~~Whell of skills, speedometer
 
 \verb|v0.2.5|~:~~~Bugfix with exercices (\textsf{[fr]} macro)
@@ -183,6 +187,7 @@
 Due to limitations, \MontreCode{enumitem}/\MontreCode{multicol}/\MontreCode{tabularray}\MontreCode{fontawesome5} 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}$} ;
@@ -228,6 +233,7 @@
 	\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.
 \end{itemize}
 
@@ -244,6 +250,10 @@
 
 \begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
 \AnswersMCQ[Lines]{Answer A § Answer B § Answer C § Answer D}
+
+\AnswersMCQ[Lines,Shuffle]{Answer A1 § Answer B1 § Answer C1 § Answer D1}
+
+\AnswersMCQ[Lines,Shuffle]{Answer A2 § Answer B2 § Answer C2 § Answer D2}
 \end{demohigh}
 
 \begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
@@ -299,7 +309,7 @@
 \end{codehigh}
 
 \begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
-\ListItemsChoice[keys]{macro}{listname}(numbers)<enumitem options>
+\ListItemsChoice[keys]{macro}{listname}(numbers)<enumitem options>!beamer options!
 \end{codehigh}
 
 The available \MontreCode{keys} are :
@@ -320,8 +330,9 @@
 	\item the numbers of picked itemps, within \MontreCode{num1,num2,...}.
 \end{itemize}
 
+The next argument, optional and between \MontreCode{<...>} gives specific options to \MontreCode{enumitem} environment.
 
-The last argument, optional and between \MontreCode{<...>} gives specific options to \MontreCode{enumitem} environment.
+The last argument, between \MontreCode{!..!} gives specific options to \MontreCode{enumitem} environment with \MontreCode{beamer}.
 
 \medskip
 
@@ -328,7 +339,7 @@
 Controls are done :
 
 \begin{itemize}
-	\item to verify that the liste 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}
 
@@ -448,13 +459,11 @@
 
 \pagebreak
 
-\pagebreak
-
 \section{Score banner}
 
 \subsection{Global use}
 
-The idea is to insert a score banner, with customizations.
+The idea is to insert a score banner, with customization.
 
 \begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
 ScoreBanner[keys]{number}
@@ -583,7 +592,7 @@
 
 The idea is to propose a banner, made with \TikZ, to present for example a title.
 
-The global style is fixed, but few customizations are possible.
+The global style is fixed, but few customization are possible.
 
 \begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25]
 \tkzBannerTri[keys]{number}{title}

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-02-03 20:54:59 UTC (rev 73714)
+++ trunk/Master/texmf-dist/doc/latex/customenvs/customenvs-doc-fr.tex	2025-02-03 20:55:19 UTC (rev 73715)
@@ -39,8 +39,8 @@
 \usepackage[margin=1.5cm]{geometry}
 \setlength{\parindent}{0pt}
 
-\def\TPversion{0.2.6}
-\def\TPdate{4 novembre 2024}
+\def\TPversion{0.3.0}
+\def\TPdate{3 février 2025}
 \usepackage{tcolorbox}
 \tcbuselibrary{listingsutf8}
 %\usepackage{eurosym}
@@ -72,7 +72,7 @@
 		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,Rayon,Police,ListeNiveaux,Marqueur,Pos,Echelle,Couleurs,Taille},%
+		morekeywords={Largeur,Filets,EspacesCL,NbCols,Labels,Melange,PoliceLabels,EspaceLabels,Swap,Type,CoeffEspVert,EpTrait,Alea,LargeurNivs,Niveaux,NoticeNiveaux,Titre,PolTitre,PolNotice,PolComp,LigneSep,CouleurNotice,CouleurNiveaux,CouleurFond,Note,Notice,PoliceCateg,PoliceBloc,Couleurs,LargeurBloc,Echelle,NoirBlanc,Libelle,EpTrait,Police,Type,ComplementTitre,Titre,CodeDebut,Couleur,EchelleImage,Decoration,Trait,Avatar,AffAvatar,NoirBlanc,CouleurE,CouleurR,CouleurFond,Hauteur,Largeur,PoliceTxt,CouleurTitre,AlignH,bg,txt,bthick,bcol,raise,Type,EspH,Fond,Texte,Style,Dense,Avant,AvantS,Apres,ApresS,Global,align,width,Legende,CouleurFond,Hauteur,Ratio,AffLegende,Couleurs,EchelleSymboles,Symboles,vRemplir,vOffset,vCentrer,height,width,blockwidth,collight,colmedium,coldar,coltxt,fonttxt,swap,maincolor,logo,type,num,dispblock,customtype,Couleur,AlignV,Offset,NiveauMax,pasX,pasY,grilleauto,TailleFleche,Direction,Coeff,TypeFleche,Deplacement,LineCap,Epaisseur,CouleurCartouche,Fleches,CouleurFond,CouleurTitre,PoliceCartouche,TypeFleche,EspacementV,OffsetFleches,Dernier,PoliceEntete,PolicePrix,PoliceReduc,OffsetReduc,AgrandirReduc,Rayon,Police,ListeNiveaux,Marqueur,Pos,Echelle,Couleurs,Taille},%
 		keywordstyle={\color{orange}}
 	},%
 	#1
@@ -118,7 +118,7 @@
 	\begin{tabular}{c}
 	\texttt{Cédric Pierquet}\\
 	{\ttfamily c pierquet -- at -- outlook . fr}\\
-	\texttt{\url{https://github.com/cpierquet/customenvs}}
+	\texttt{\url{https://forge.apps.education.fr/pierquetcedric/packages-latex}}
 \end{tabular}
 \end{center}
 
@@ -152,6 +152,10 @@
 
 \section{Historique}
 
+\verb|v0.3.0|~:~~~Compatibilité accrue avec \textsf{beamer}
+
+\verb|v0.2.7|~:~~~Clé \texttt{[Melange]} pour les QCMs
+
 \verb|v0.2.6|~:~~~Roue des compétences / speedometer
 
 \verb|v0.2.5|~:~~~Correction du fonctionnement de \texttt{EnvtExo}
@@ -170,23 +174,23 @@
 
 \verb|v0.1.8|~:~~~Nutriscore
 
-\verb|v0.1.7|~:~~~~Possibilité de créer des vignettes \textsf{perso}
+\verb|v0.1.7|~:~~~Possibilité de créer des vignettes \textsf{perso}
 
-\verb|v0.1.6|~:~~~~Patch \textsf{displayskip} + Patches \textsf{pas-tableur}
+\verb|v0.1.6|~:~~~Patch \textsf{displayskip} + Patches \textsf{pas-tableur}
 
-\verb|v0.1.5|~:~~~~La librairie \texttt{babel} de \TikZ\ n'est plus chargée
+\verb|v0.1.5|~:~~~La librairie \texttt{babel} de \TikZ\ n'est plus chargée
 
-\verb|v0.1.5|~:~~~~Vignettes + Numéros encerclés + Création de boîtes 'simples'
+\verb|v0.1.5|~:~~~Vignettes + Numéros encerclés + Création de boîtes 'simples'
 
-\verb|v0.1.4|~:~~~~Commande pour du texte dans une boîte arrondie, de hauteur 'figée' + 'Chat' SMS
+\verb|v0.1.4|~:~~~Commande pour du texte dans une boîte arrondie, de hauteur 'figée' + 'Chat' SMS
 
-\verb|v0.1.3|~:~~~~Environnement/commande pour des exercices, avec personnalisation(s)
+\verb|v0.1.3|~:~~~Environnement/commande pour des exercices, avec personnalisation(s)
 
-\verb|v0.1.2|~:~~~~Crayon de compétences
+\verb|v0.1.2|~:~~~Crayon de compétences
 
-\verb|v0.1.1|~:~~~~Tableaux de compétences
+\verb|v0.1.1|~:~~~Tableaux de compétences
 
-\verb|v0.1.0|~:~~~~Version initiale
+\verb|v0.1.0|~:~~~Version initiale
 
 \pagebreak
 
@@ -240,6 +244,7 @@
 À noter que, pour des raisons de compatibilité (ou d'incompatibilité), les packages \MontreCode{enumitem}/\MontreCode{multicol}/\MontreCode{tabularray}/\MontreCode{xcolor}/\MontreCode{fontawesome5} peuvent ne pas être chargés par \MontreCode{customenvs} (auxquels cas l'utilisateur devra les avoir chargés pour faire fonctionner certains environnements) via les options :
 
 \begin{itemize}
+	\item \MontreCode{$\mathtt{\langle}$beamer$\mathtt{\rangle}$} (pour assurer une compatibilité avec \textsf{beamer});
 	\item \MontreCode{$\mathtt{\langle}$nonenum$\mathtt{\rangle}$} ;
 	\item \MontreCode{$\mathtt{\langle}$nonmulticol$\mathtt{\rangle}$} ;
 	\item \MontreCode{$\mathtt{\langle}$nontblr$\mathtt{\rangle}$} ;
@@ -286,6 +291,7 @@
 	\end{itemize}
 	\item \MontreCode{PoliceLabels} pour la police des labels, \MontreCode{\textbackslash bfseries} par défaut ;
 	\item \MontreCode{EspaceLabels} pour gérer l'espacement entre le label et la réponse, et valant \MontreCode{\textbackslash kern5pt} par défaut ;
+	\item \MontreCode{Melange} pour mélanger les réponses, et valant \MontreCode{false} par défaut ;
 	\item \MontreCode{Swap} pour afficher les (4) réponses en mode 2 colonnes sous la forme ACBD ou ABCD, et valant \MontreCode{false} par défaut.
 \end{itemize}
 
@@ -302,6 +308,10 @@
 
 \begin{DemoCode}{}
 \ReponsesQCM[Filets]{Réponse A § Réponse B § Réponse C § Réponse D}
+
+\ReponsesQCM[Filets,Melange]{Réponse A1 § Réponse B1 § Réponse C1 § Réponse D1}
+
+\ReponsesQCM[Filets,Melange]{Réponse A2 § Réponse B2 § Réponse C2 § Réponse D2}
 \end{DemoCode}
 
 \begin{DemoCode}{}
@@ -441,7 +451,7 @@
 De plus, si le multi-colonnes est destiné à accueillir une liste, les items seront correctement alignés avec une liste sans multi-colonnes.
 
 \begin{DemoCode}{listing only}
-\begin{MultiCols}[options](nbcols)<options enumitem>
+\begin{MultiCols}[options](nbcols)<options enumitem>!options beamer!
     %corps
 \end{MutiCols}
 \end{DemoCode}
@@ -462,6 +472,8 @@
 
 L'argument optionnel et entre \MontreCode{<...>} est passé à l'environnement \MontreCode{enumitem} ou \MontreCode{itemize} si spécifié.
 
+Le dernier argument, entre \MontreCode{!...!}, permet de spécifier des options pour l'environnement \MontreCode{enumitem} avec \MontreCode{beamer}.
+
 \subsection{Exemples}
 
 \begin{DemoCode}{}
@@ -527,7 +539,7 @@
 \end{DemoCode}
 
 \begin{DemoCode}{listing only}
-\ListeChoixItems[clés]{macro}{nomliste}(numéros)<options enumitem>
+\ListeChoixItems[clés]{macro}{nomliste}(numéros)<options enumitem>!options beamer!
 \end{DemoCode}
 
 Les \MontreCode{clés} disponibles sont :
@@ -550,8 +562,10 @@
 	\item les items à afficher, sous la forme \MontreCode{num1,num2,...}.
 \end{itemize}
 
-Le dernier argument, optionnel et entre \MontreCode{<...>} correspond à des options spécifiques à passer à l'environnement de liste \MontreCode{enumitem} créé.
+L'avant-dernier argument, optionnel et entre \MontreCode{<...>} correspond à des options spécifiques à passer à l'environnement de liste \MontreCode{enumitem} créé.
 
+Le dernier argument, entre \MontreCode{!...!}, permet de spécifier des options pour l'environnement \MontreCode{enumitem} avec \MontreCode{beamer}.
+
 \medskip
 
 À noter que des contrôles sont effectués lors de l'appel aux macros pour :

Modified: trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty	2025-02-03 20:54:59 UTC (rev 73714)
+++ trunk/Master/texmf-dist/tex/latex/customenvs/customenvs.sty	2025-02-03 20:55:19 UTC (rev 73715)
@@ -1,11 +1,14 @@
 % Author..........: C. Pierquet
-% licence.........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licence.........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
 % 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/11/04 0.2.6 Custom classic environments]
+\ProvidesPackage{customenvs}[2025/02/03 0.3.0 Custom classic environments]
 
 %====HISTORIQUE
+% v 0.3.0	Beamer compatibility (?)
+% v 0.2.8	Position absolue d'un objet dans une page
+% v 0.2.7	Mélange des réponses des QCMs
 % 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
@@ -28,6 +31,8 @@
 \newif\if at enum\@enumtrue%
 \DeclareOption{nonenum}{\@enumfalse}%
 \DeclareOption{noenum}{\@enumfalse}%
+\newif\if at beamer\@beamerfalse%
+\DeclareOption{beamer}{\@beamertrue\@enumfalse}%
 \newif\if at tblr\@tblrtrue%
 \DeclareOption{nontblr}{\@tblrfalse}%
 \DeclareOption{notblr}{\@tblrfalse}%
@@ -82,6 +87,8 @@
 }
 
 %====QCMs
+\NewList{TmpListeReponsesQCM}
+
 \defKV[reponsesqcm]{%
 	NbCols=\def\RepQCMNbCol{#1},%
 	PoliceLabels=\def\RepQCMFonte{#1},%
@@ -99,7 +106,8 @@
 	Labels={a.},%
 	EspaceLabels=\kern5pt,%
 	Swap=false,%
-	Largeur=0.99\linewidth
+	Largeur=0.99\linewidth,%
+	Melange=false
 }
 
 \NewDocumentCommand\QCMFormatteLabel{ m m }{%1=typelabel,%3=caractère
@@ -151,45 +159,98 @@
 			\xdef\RepQCMLabelC{\QCMFormatteLabel{\RepQCMTypeLabel}{3}\RepQCMSpace}%
 			\xdef\RepQCMLabelD{\QCMFormatteLabel{\RepQCMTypeLabel}{4}\RepQCMSpace}%
 		}{}%
-	%en fonction du nb de colonnes
-	\IfEq{\QCMNbRep}{2}%2réponses
+	%en fonction du nb de colonnes et du shuffle
+	\ifboolKV[reponsesqcm]{Melange}%
 		{%
-			\ifboolKV[reponsesqcm]{Filets}%
-				{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
-				{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
-				\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] \\
-			\end{tblr}%
-		}%
-		{}%
-	\IfEq{\QCMNbRep}{3}%3réponses
-		{%
-			\ifboolKV[reponsesqcm]{Filets}%
-				{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
-				{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
-				\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] & \RepQCMLabelC\QCMListereponses[3] \\
-			\end{tblr}%
-		}%
-		{}%
-	\IfEq{\QCMNbRep}{4}%4réponses
-		{%
-			\IfEq{\RepQCMNbCol}{4}%4colonnes
+			\ClearList{TmpListeReponsesQCM}%
+			\IfEq{\QCMNbRep}{2}%2réponses
 				{%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[1]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[2]}%
 					\ifboolKV[reponsesqcm]{Filets}%
-						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
-						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
-						\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] & \RepQCMLabelC\QCMListereponses[3] & \RepQCMLabelD\QCMListereponses[4] \\
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+						\RepQCMLabelA\TmpListeReponsesQCM[0] & \RepQCMLabelB\TmpListeReponsesQCM[1] \\
 					\end{tblr}%
 				}%
+				{}%
+			\IfEq{\QCMNbRep}{3}%3réponses
 				{%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[1]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[2]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[3]}%
 					\ifboolKV[reponsesqcm]{Filets}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
+						\RepQCMLabelA\TmpListeReponsesQCM[0] & \RepQCMLabelB\TmpListeReponsesQCM[1] & \RepQCMLabelC\TmpListeReponsesQCM[2] \\
+					\end{tblr}%
+				}%
+				{}%
+			\IfEq{\QCMNbRep}{4}%4réponses
+				{%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[1]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[2]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[3]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[4]}%
+					\IfEq{\RepQCMNbCol}{4}%4colonnes
+						{%
+							\ifboolKV[reponsesqcm]{Filets}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
+								\RepQCMLabelA\TmpListeReponsesQCM[0] & \RepQCMLabelB\TmpListeReponsesQCM[1] & \RepQCMLabelC\TmpListeReponsesQCM[2] & \RepQCMLabelD\TmpListeReponsesQCM[3] \\
+							\end{tblr}%
+						}%
+						{%
+							\ifboolKV[reponsesqcm]{Filets}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+								\RepQCMLabelA\TmpListeReponsesQCM[0] & \ifboolKV[reponsesqcm]{Swap}{\RepQCMLabelB\TmpListeReponsesQCM[1]}{\RepQCMLabelC\TmpListeReponsesQCM[1]} \\
+								\ifboolKV[reponsesqcm]{Swap}{\RepQCMLabelC\TmpListeReponsesQCM[2]}{\RepQCMLabelB\TmpListeReponsesQCM[2]} & \RepQCMLabelD\TmpListeReponsesQCM[3] \\
+							\end{tblr}%
+						}%
+				}%
+				{}%
+		}%
+		{%
+			\IfEq{\QCMNbRep}{2}%2réponses
+				{%
+					\ifboolKV[reponsesqcm]{Filets}%
 						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
 						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
-						\RepQCMLabelA\QCMListereponses[1] & \ifboolKV[reponsesqcm]{Swap}{\RepQCMLabelB\QCMListereponses[2]}{\RepQCMLabelC\QCMListereponses[3]} \\
-						\ifboolKV[reponsesqcm]{Swap}{\RepQCMLabelC\QCMListereponses[3]}{\RepQCMLabelB\QCMListereponses[2]} & \RepQCMLabelD\QCMListereponses[4] \\
+						\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] \\
 					\end{tblr}%
 				}%
+				{}%
+			\IfEq{\QCMNbRep}{3}%3réponses
+				{%
+					\ifboolKV[reponsesqcm]{Filets}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
+						\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] & \RepQCMLabelC\QCMListereponses[3] \\
+					\end{tblr}%
+				}%
+				{}%
+			\IfEq{\QCMNbRep}{4}%4réponses
+				{%
+					\IfEq{\RepQCMNbCol}{4}%4colonnes
+						{%
+							\ifboolKV[reponsesqcm]{Filets}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
+								\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] & \RepQCMLabelC\QCMListereponses[3] & \RepQCMLabelD\QCMListereponses[4] \\
+							\end{tblr}%
+						}%
+						{%
+							\ifboolKV[reponsesqcm]{Filets}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+								\RepQCMLabelA\QCMListereponses[1] & \ifboolKV[reponsesqcm]{Swap}{\RepQCMLabelB\QCMListereponses[2]}{\RepQCMLabelC\QCMListereponses[3]} \\
+								\ifboolKV[reponsesqcm]{Swap}{\RepQCMLabelC\QCMListereponses[3]}{\RepQCMLabelB\QCMListereponses[2]} & \RepQCMLabelD\QCMListereponses[4] \\
+							\end{tblr}%
+						}%
+				}%
+				{}%
 		}%
-		{}%
 }
 
 %====CENTRAGE
@@ -221,7 +282,7 @@
 	EpTrait=0pt
 }
 
-\NewDocumentEnvironment{MultiCols}{ O{} r() D<>{} }%
+\NewDocumentEnvironment{MultiCols}{ O{} r() D<>{} d!! }%
 {%
 	\useKVdefault[multicolsperso]%
 	\setKV[multicolsperso]{#1}%
@@ -228,8 +289,17 @@
 	\CoeffEspaceMulticols[\useKV[multicolsperso]{CoeffEspVert}]%
 	\setlength{\columnseprule}{\useKV[multicolsperso]{EpTrait}}%
 	\begin{multicols}{#2}%
-	\IfStrEq{\useKV[multicolsperso]{Type}}{enum}{\begin{enumerate}[#3]}{}%
-	\IfStrEq{\useKV[multicolsperso]{Type}}{item}{\begin{itemize}[#3]}{}%
+	%enum beamer or not
+	\IfNoValueTF{#4}%
+		{%
+			\IfStrEq{\useKV[multicolsperso]{Type}}{enum}{\begin{enumerate}[#3]}{}%
+			\IfStrEq{\useKV[multicolsperso]{Type}}{item}{\begin{itemize}[#3]}{}%
+		}%
+		{%
+			\IfStrEq{\useKV[multicolsperso]{Type}}{enum}{\begin{enumerate}[#4][#3]}{}%
+			\IfStrEq{\useKV[multicolsperso]{Type}}{item}{\begin{itemize}[#4][#3]}{}%
+		}%
+	%==on teste si on a un argument optionnel pour beamer...
 }%
 {%
 	\IfStrEq{\useKV[multicolsperso]{Type}}{enum}{\end{enumerate}}{}%
@@ -254,7 +324,7 @@
 	Type=enum
 }
 
-\NewDocumentCommand\ListeChoixItems{ O{} m m r() D<>{} }{%1=options,2=série des items,3=nomsérie,4=liste choix,5=options enum
+\NewDocumentCommand\ListeChoixItems{ O{} m m r() D<>{} d!! }{%1=options,2=série des items,3=nomsérie,4=liste choix,5=options enum,%6=beamer ?
 	%on teste si la liste considérée existe...
 	\@ifIsList{#3}%
 		{%
@@ -270,16 +340,33 @@
 					\xintFor* ##1 in {\xintCSVtoList{#2}}\do{\InsertLastItem{#3}{##1}}
 				}%
 			%création de l'environnement
-			\IfStrEq{\ChoixTypeSerie}{enum}%
-				{\begin{enumerate}[#5]}{}%
-			\IfStrEq{\ChoixTypeSerie}{item}%
-				{\begin{itemize}[#5]}{}%
-			\IfSubStr{\ChoixTypeSerie}{MultiCols}%
+			%==on teste si on a un argument optionnel pour beamer...
+			\IfNoValueTF{#6}%
 				{%
-					\StrBetween[1,2]{\ChoixTypeSerie}{/}{/}[\ChoixTypeMulticols]%
-					\StrBehind[2]{\ChoixTypeSerie}{/}[\NbMulticols]%
-					\begin{MultiCols}[Type=\ChoixTypeMulticols](\NbMulticols)<#5>%
-				}{}%
+					\IfStrEq{\ChoixTypeSerie}{enum}%
+						{\begin{enumerate}[#5]}{}%
+					\IfStrEq{\ChoixTypeSerie}{item}%
+						{\begin{itemize}[#5]}{}%
+					\IfSubStr{\ChoixTypeSerie}{MultiCols}%
+						{%
+							\StrBetween[1,2]{\ChoixTypeSerie}{/}{/}[\ChoixTypeMulticols]%
+							\StrBehind[2]{\ChoixTypeSerie}{/}[\NbMulticols]%
+							\begin{MultiCols}[Type=\ChoixTypeMulticols](\NbMulticols)<#5>%
+						}{}%
+				}%
+				{%
+					\IfStrEq{\ChoixTypeSerie}{enum}%
+						{\begin{enumerate}[#6][#5]}{}%
+					\IfStrEq{\ChoixTypeSerie}{item}%
+						{\begin{itemize}[#6][#5]}{}%
+					\IfSubStr{\ChoixTypeSerie}{MultiCols}%
+						{%
+							\StrBetween[1,2]{\ChoixTypeSerie}{/}{/}[\ChoixTypeMulticols]%
+							\StrBehind[2]{\ChoixTypeSerie}{/}[\NbMulticols]%
+							\begin{MultiCols}[Type=\ChoixTypeMulticols](\NbMulticols)<#5>!#6!%
+						}{}%
+				}%
+			%==multicols
 			%items choisis
 			\ifboolKV[itemchoisir]{Alea}%
 				{%
@@ -1529,7 +1616,8 @@
 	Labels={a.},%
 	SpaceLabels=\kern5pt,%
 	Swap=false,%
-	Width=0.99\linewidth
+	Width=0.99\linewidth,%
+	Shuffle=false
 }
 
 \NewDocumentCommand\MCQFormatLabel{ m m }{%1=typelabel,%3=caractère
@@ -1582,44 +1670,97 @@
 			\xdef\RepQCMLabelD{\MCQFormatLabel{\RepQCMTypeLabel}{4}\RepQCMSpace}%
 		}{}%
 	%en fonction du nb de colonnes
-	\IfEq{\QCMNbRep}{2}%2réponses
+	\ifboolKV[answersmcq]{Shuffle}%
 		{%
-			\ifboolKV[answersmcq]{Lines}%
-				{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
-				{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
-				\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] \\
-			\end{tblr}%
-		}%
-		{}%
-	\IfEq{\QCMNbRep}{3}%3réponses
-		{%
-			\ifboolKV[answersmcq]{Lines}%
-				{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
-				{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
-				\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] & \RepQCMLabelC\QCMListereponses[3] \\
-			\end{tblr}%
-		}%
-		{}%
-	\IfEq{\QCMNbRep}{4}%4réponses
-		{%
-			\IfEq{\RepQCMNbCol}{4}%4colonnes
+			\ClearList{TmpListeReponsesQCM}%
+			\IfEq{\QCMNbRep}{2}%2réponses
 				{%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[1]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[2]}%
 					\ifboolKV[answersmcq]{Lines}%
-						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
-						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
-						\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] & \RepQCMLabelC\QCMListereponses[3] & \RepQCMLabelD\QCMListereponses[4] \\
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+						\RepQCMLabelA\TmpListeReponsesQCM[0] & \RepQCMLabelB\TmpListeReponsesQCM[1] \\
 					\end{tblr}%
 				}%
+				{}%
+			\IfEq{\QCMNbRep}{3}%3réponses
 				{%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[1]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[2]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[3]}%
 					\ifboolKV[answersmcq]{Lines}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
+						\RepQCMLabelA\TmpListeReponsesQCM[0] & \RepQCMLabelB\TmpListeReponsesQCM[1] & \RepQCMLabelC\TmpListeReponsesQCM[2] \\
+					\end{tblr}%
+				}%
+				{}%
+			\IfEq{\QCMNbRep}{4}%4réponses
+				{%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[1]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[2]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[3]}%
+					\InsertRandomItem{TmpListeReponsesQCM}{\QCMListereponses[4]}%
+					\IfEq{\RepQCMNbCol}{4}%4colonnes
+						{%
+							\ifboolKV[answersmcq]{Lines}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
+								\RepQCMLabelA\TmpListeReponsesQCM[0] & \RepQCMLabelB\TmpListeReponsesQCM[1] & \RepQCMLabelC\TmpListeReponsesQCM[2] & \RepQCMLabelD\TmpListeReponsesQCM[3] \\
+							\end{tblr}%
+						}%
+						{%
+							\ifboolKV[answersmcq]{Lines}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+								\RepQCMLabelA\TmpListeReponsesQCM[0] & \ifboolKV[answersmcq]{Swap}{\RepQCMLabelB\TmpListeReponsesQCM[1]}{\RepQCMLabelC\TmpListeReponsesQCM[1]} \\
+								\ifboolKV[answersmcq]{Swap}{\RepQCMLabelC\TmpListeReponsesQCM[2]}{\RepQCMLabelB\TmpListeReponsesQCM[2]} & \RepQCMLabelD\TmpListeReponsesQCM[3] \\
+							\end{tblr}%
+						}%
+				}%
+				{}%
+		}%
+		{%
+			\IfEq{\QCMNbRep}{2}%2réponses
+				{%
+					\ifboolKV[answersmcq]{Lines}%
 						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
 						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
-						\RepQCMLabelA\QCMListereponses[1] & \ifboolKV[answersmcq]{Swap}{\RepQCMLabelB\QCMListereponses[2]}{\RepQCMLabelC\QCMListereponses[3]} \\
-						\ifboolKV[answersmcq]{Swap}{\RepQCMLabelC\QCMListereponses[3]}{\RepQCMLabelB\QCMListereponses[2]} & \RepQCMLabelD\QCMListereponses[4] \\
+						\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] \\
 					\end{tblr}%
 				}%
+				{}%
+			\IfEq{\QCMNbRep}{3}%3réponses
+				{%
+					\ifboolKV[answersmcq]{Lines}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
+						{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{3}{X[b,l]}},#3}}%
+						\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] & \RepQCMLabelC\QCMListereponses[3] \\
+					\end{tblr}%
+				}%
+				{}%
+			\IfEq{\QCMNbRep}{4}%4réponses
+				{%
+					\IfEq{\RepQCMNbCol}{4}%4colonnes
+						{%
+							\ifboolKV[answersmcq]{Lines}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{4}{X[b,l]}},#3}}%
+								\RepQCMLabelA\QCMListereponses[1] & \RepQCMLabelB\QCMListereponses[2] & \RepQCMLabelC\QCMListereponses[3] & \RepQCMLabelD\QCMListereponses[4] \\
+							\end{tblr}%
+						}%
+						{%
+							\ifboolKV[answersmcq]{Lines}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,hlines,vlines,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+								{\begin{tblr}{rowsep=\RepQCMOffsetLgn,colsep=\RepQCMOffsetCol,width=\RepQCMLarg,colspec={*{2}{X[b,l]}},#3}}%
+								\RepQCMLabelA\QCMListereponses[1] & \ifboolKV[answersmcq]{Swap}{\RepQCMLabelB\QCMListereponses[2]}{\RepQCMLabelC\QCMListereponses[3]} \\
+								\ifboolKV[answersmcq]{Swap}{\RepQCMLabelC\QCMListereponses[3]}{\RepQCMLabelB\QCMListereponses[2]} & \RepQCMLabelD\QCMListereponses[4] \\
+							\end{tblr}%
+						}%
+				}%
+				{}%
 		}%
-		{}%
 }
 
 %====ITEMCHOICE
@@ -1637,7 +1778,7 @@
 	Type=enum
 }
 
-\NewDocumentCommand\ListItemsChoice{ O{} m m r() D<>{} }{%1=options,2=série des items,3=nomsérie,4=liste choix,5=options enum
+\NewDocumentCommand\ListItemsChoice{ O{} m m r() D<>{} d!! }{%1=options,2=série des items,3=nomsérie,4=liste choix,5=options enum,%6=options beamer ?
 	%on teste si la liste considérée existe...
 	\@ifIsList{#3}%
 		{%
@@ -1653,10 +1794,24 @@
 					\xintFor* ##1 in {\xintCSVtoList{#2}}\do{\InsertLastItem{#3}{##1}}
 				}%
 			%création de l'environnement
-			\IfStrEq{\ChoixTypeSerie}{enum}%
-				{\begin{enumerate}[#5]}{}%
-			\IfStrEq{\ChoixTypeSerie}{item}%
-				{\begin{itemize}[#5]}{}%
+			\IfNoValueTF{#6}%
+				{%
+					\IfStrEq{\ChoixTypeSerie}{enum}%
+						{\begin{enumerate}[#5]}{}%
+					\IfStrEq{\ChoixTypeSerie}{item}%
+						{\begin{itemize}[#5]}{}%
+				}%
+				{%
+					\IfStrEq{\ChoixTypeSerie}{enum}%
+						{\begin{enumerate}[#6][#5]}{}%
+					\IfStrEq{\ChoixTypeSerie}{item}%
+						{\begin{itemize}[#6][#5]}{}%
+				}%
+			% \IfStrEq{\ChoixTypeSerie}{enum}%
+				% {\begin{enumerate}[#5]}{}%
+			% \IfStrEq{\ChoixTypeSerie}{item}%
+				% {\begin{itemize}[#5]}{}%
+			%==multicols
 			\IfSubStr{\ChoixTypeSerie}{MultiCols}%
 				{%
 					\StrBetween[1,2]{\ChoixTypeSerie}{/}{/}[\ChoixTypeMulticols]%
@@ -3538,4 +3693,33 @@
 	\end{tikzpicture}%
 }
 
+%====POSITION ABSOLUE DANS LA PAGE
+\defKV[absposobject]{scale=\def\absposobject at scale{#1},anchor=\def\absposobject at anchor{#1}}
+\setKVdefault[absposobject]{scale={},anchor={north west}}
+\NewDocumentCommand\absposobject{ O{} m m m }{%
+	\restoreKV[absposobject]%
+	\setKV[absposobject]{#1}%
+	\IfStrEq{\absposobject at scale}{}%
+		{%
+			\begin{tikzpicture}[remember picture,overlay] \node[inner sep=0pt,outer sep=0pt] at ($([xshift=#2,yshift=#3]current page.\absposobject at anchor)$) {#4}; \end{tikzpicture}%
+		}%
+		{%
+			\begin{tikzpicture}[remember picture,overlay] \node[inner sep=0pt,outer sep=0pt,scale=\absposobject at scale] at ($([xshift=#2,yshift=#3]current page.\absposobject at anchor)$) {#4}; \end{tikzpicture}%
+		}%
+}
+
+\defKV[absposobjet]{Echelle=\def\absposobject at scale{#1},Ancre=\def\absposobject at anchor{#1}}
+\setKVdefault[absposobjet]{Echelle={},Ancre={north west}}
+\NewDocumentCommand\objetposabs{ O{} m m m }{%
+	\restoreKV[absposobjet]%
+	\setKV[absposobjet]{#1}%
+	\IfStrEq{\absposobject at scale}{}%
+		{%
+			\begin{tikzpicture}[remember picture,overlay] \node[inner sep=0pt,outer sep=0pt] at ($([xshift=#2,yshift=#3]current page.\absposobject at anchor)$) {#4}; \end{tikzpicture}%
+		}%
+		{%
+			\begin{tikzpicture}[remember picture,overlay] \node[inner sep=0pt,outer sep=0pt,scale=\absposobject at scale] at ($([xshift=#2,yshift=#3]current page.\absposobject at anchor)$) {#4}; \end{tikzpicture}%
+		}%
+}
+
 \endinput
\ No newline at end of file



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