summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdfbin243076 -> 268144 bytes
-rw-r--r--macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.tex128
-rw-r--r--macros/latex/contrib/profmaquette/latex/ProfMaquette.sty466
-rw-r--r--macros/latex/contrib/vectorlogos/README.md10
-rw-r--r--macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.pdfbin0 -> 452149 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.tex321
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-emacs-alt.pdfbin0 -> 4280 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-emacs.pdfbin0 -> 11202 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-geogebra-icon.pdfbin0 -> 1528 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-geogebra.pdfbin0 -> 4837 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-python-icon.pdfbin0 -> 2388 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-python-notm.pdfbin0 -> 3661 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-python-powh.pdfbin0 -> 5705 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-python-powv.pdfbin0 -> 5592 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-python-vertical.pdfbin0 -> 3673 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-python.pdfbin0 -> 5770 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch-alt.pdfbin0 -> 7337 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch-cat.pdfbin0 -> 2958 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch.pdfbin0 -> 6285 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-texmaker-alt.pdfbin0 -> 29815 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-texmaker.pdfbin0 -> 15269 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogo-texstudio.pdfbin0 -> 23580 bytes
-rw-r--r--macros/latex/contrib/vectorlogos/tex/vectorlogos.sty73
23 files changed, 864 insertions, 134 deletions
diff --git a/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf
index d32a7eedee..ed8e4c5c09 100644
--- a/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf
+++ b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.tex b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.tex
index 3b007e28f3..2304a9cd99 100644
--- a/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.tex
+++ b/macros/latex/contrib/profmaquette/doc/ProfMaquette-doc.tex
@@ -2,14 +2,18 @@
\documentclass[12pt,french]{article}
\usepackage[nonamssymb]{ProfCollege}
\usepackage{ProfMaquette}
-\input{Christ7}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
\usepackage{fourier-otf}
+\newfontfamily\myfontDys{FiraMath-Regular.otf}
+
\usepackage[a4paper,margin=1.5cm,nohead,includefoot]{geometry}
\setlength{\parindent}{0pt}
\pagestyle{empty}
\usepackage{mflogo}
+
+\usepackage{graphicx}
+
\usepackage{babel}
\def\MPclipOne#1#2#3{
@@ -122,9 +126,9 @@
classoffset=5,
texcsstyle=*\color{blue},%pour colorer la contre-oblique
moretexcs={brm,TikzDM,TikzDMCor,TikzDS,TikzDSCor,TikzIE,TikzIECor,TikzFiche,TikzFicheCor,TikzCours,Competences,TikzParcours,TikzParcoursCor,TikzPdT,TikzPdTCor,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours,CheminVrai,CheminFaux,TikzContrat,TikzContratCor,TikzFdR,TikzFdRCor,AfficheContrat,AfficheFdR,TikzCAN,TikzCANCor,Complement},
- emph={Maquette,exercice,exercice,Solution,Reponse,Indice},%
+ emph={Maquette,exercice,Solution,Reponse,Indice},%
classoffset=1,
- keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso,Cours,FdR,Contrat,CAN},
+ keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso,Cours,FdR,Contrat,CAN,Dys},
keywordstyle=\color{OliveDrab},
classoffset=2,
keywords={Theme,Niveau,Classe,Date,Calculatrice,Code,Numero,Sujet,Nom,NumSujet,Fichier,Type,CoefQ,CoefR,CoefJ},
@@ -132,6 +136,9 @@
classoffset=3,
keywords={Pouce,Direct,PasCorrige,BaremeDetaille,BaremeTotal,Source,Titre,Oral,Calculatrice,Competence,Trajet,Confiance,Route,Stop},
keywordstyle=\color{DarkGreen},
+ classoffset=4,
+ keywords={userfiche,userfichecor,userdm,userdmcor,userie,useriecor,userds,userdscor,userparcours,userparcourscor,userpdt,userpdtcor,usercours,usercontrat,usercontratcor,userfdr,userfdrcor},
+ keywordstyle=\color{Purple},
% delim = **[s][\color{purple}]{$}{$},
% moredelim = **[s][\color{purple}]{\\[}{\\]},
% moredelim = **[is][\color{black}]{\\Z}{\\Z},
@@ -286,6 +293,26 @@
\par{\tiny\useKV[Contrat]{Code}}\hfill{\scriptsize\useKV[Contrat]{Date}}%
\end{tcolorbox}%
}
+
+\tcbset{%
+ tikzRemarque/.style={%
+ before skip=1em,
+ enhanced,
+ breakable,
+ colback=Crimson!15,
+ colframe=Crimson!50,
+ underlay unbroken and first={%
+ \node[%
+ name=A,
+ ] at (frame.west){\reflectbox{\includegraphics[scale=0.25]{Attention-1}}};
+ %%
+ \node[%
+ name=B,
+ ] at (frame.east){\includegraphics[scale=0.25]{Attention-1}};
+ %%
+ }
+ }
+}
\begin{document}
\maketitle
\thispagestyle{empty}
@@ -295,17 +322,22 @@ Après la création du package \lstinline!ProfCollege!, l'idée de poursuivre la
\item l'environnement \lstinline!exercice! adapte la présentation et les fonctions des exercices en accord avec l'environnement \lstinline!Maquette! choisi.
\end{itemize}
Le c\oe ur de l'utilisation du package \lstinline!ProfMaquette! est donc une gestion des briques élémentaires du travail d'enseignant, à savoir les exercices.
+\bigskip
+\begin{tcolorbox}[tikzRemarque]
+ Conformément aux usages, il est {\em impératif}, pour le bon fonctionnement de ce package, de nommer les fichiers sources sans espaces, sans caractères spéciaux.
+\end{tcolorbox}
\clearpage
\section*{L'environnement \lstinline!Maquette!}
\begin{Codes}[listing only,listing options={frame=,escapechar=!}]{0.4}{}
-\begin{Maquette}[!\metamk{TypeDocument}!,!\metamk{TypeCorrection}!]{!\metamk{Caracteristiques}!}
+\begin{Maquette}[!\metamk{TypeDocument}!,!\metamk{TypeCorrection}!,!\metamk{Adaptation}!]{!\metamk{Caracteristiques}!}
\end{Maquette}
\end{Codes}
C'est lui qui indique :
\begin{itemize}
\item le type de document souhaité \metamk{TypeDocument} (Devoir Maison / Devoir Surveillé / Interrogation écrite / Fiche d'exercices / Parcours d'exercices / Parcours personnalisé / Plan de travail / Cours / Contrat de confiance / Feuille de route / CAN (Course aux nombres));
-\item et si ce travail est corrigé \metamk{TypeCorrection} (à la suite d'un exercice ou à la fin du document) ou pas;
+\item si ce travail est corrigé \metamk{TypeCorrection} (à la suite d'un exercice ou à la fin du document) ou pas;
+\item et si on doit l'adapter aux élèves à profils particuliers \metamk{Adaptation};
\end{itemize}
puis il indiquera les caractéristiques \metamk{Caracteristiques} du document souhaité.
\clearpage
@@ -545,9 +577,64 @@ puis il indiquera les caractéristiques \metamk{Caracteristiques} du document so
\clearpage
\includepdf[nup=1x2,pages=-,landscape]{TestCAN.pdf}
\clearpage
-Comme on peut le voir, chaque type de travail est associé à une présentation. Ces présentations sont créées par les commandes associées à des styles prédéfinies.\footnote{Qu'on peut donc redéfinir. Par exemple, c'est ce que j'ai fait dans ce document pour la commande \lstinline!\\TikzFiche! : elle ne commence plus une nouvelle page.} \lstinline!tcolorbox! :
+\subsection*{Focus sur la clé \Cle{Dys}}
+Lorsque cette clé est activée, le package \lstinline!ProfMaquette! modifie plusieurs paramètres :
+\begin{itemize}
+\item il modifie l'interligne en passant sa valeur à \num{1.5};
+\item il force la non-justification des lignes;
+\item il impose la taille de la fonte en la passant à {\ttfamily 14pt}, que la taille demandée par défaut soit {\ttfamily 10pt}, {\ttfamily 11pt} ou {\ttfamily 12pt}.
+\end{itemize}
+\begin{tcolorbox}
+ Le choix d'une police étant personnel et les études contradictoires, le package \lstinline!ProfMaquette! ne propose aucune fonte particulière. Dans une distribution \TeX{}Live, la police {\ttfamily Fira Sans}\footnotemark{} peut convenir, tant pour le texte que pour les mathématiques.
+\end{tcolorbox}
+Le code suivant montre, à la page suivante, les effets de cette clé \Cle{Dys}.
+\begin{Codes}[listing only]{0.4}{}
+\begin{Maquette}[Fiche,Dys]{Theme=Théorème de Pythagore}
+ \myfontDys%Définie dans le préambule sous la forme
+ %\newfontfamily\myfontDys{FiraMath-Regular.otf}
+ \begin{exercice}
+ On considère un triangle $ABC$ tel que $AB=7$; $BC=5$ et $CA=6$.
+ \begin{enumerate}
+ \item Tracer le triangle $ABC$ en vraie grandeur.\\On fera preuve de la plus grande précision possible et du plus grand soin possible. Pour cela, un crayon gris bien taillé, une règle et une gomme propres sont nécessaires et conseillées.
+ \item Ce triangle est-il rectangle ? Justifier.
+ \end{enumerate}
+ \end{exercice}
+\end{Maquette}
+\begin{Maquette}[Fiche]{Theme=Théorème de Pythagore}
+ \begin{exercice}
+ On considère un triangle $ABC$ tel que $AB=7$; $BC=5$ et $CA=6$.
+ \begin{enumerate}
+ \item Tracer le triangle $ABC$ en vraie grandeur.\\On fera preuve de la plus grande précision possible et du plus grand soin possible. Pour cela, un crayon gris bien taillé, une règle et une gomme propres sont nécessaires et conseillées.
+ \item Ce triangle est-il rectangle ? Justifier.
+ \end{enumerate}
+ \end{exercice}
+\end{Maquette}
+\end{Codes}
+\footnotetext{{\ttfamily{FiraSans-Regular.otf} pour le texte et {\ttfamily FiraMath-Regular.otf} pour les mathématiques.}}
+\clearpage
+\begin{Maquette}[Fiche,Dys]{Theme=Théorème de Pythagore}
+ \myfontDys%Définie dans le préambule.
+ \begin{exercice}
+ On considère un triangle $ABC$ tel que $AB=7$; $BC=5$ et $CA=6$.
+ \begin{enumerate}
+ \item Tracer le triangle $ABC$ en vraie grandeur.\\On fera preuve de la plus grande précision possible et du plus grand soin possible. Pour cela, un crayon gris bien taillé, une règle et une gomme propres sont nécessaires et conseillées.
+ \item Ce triangle est-il rectangle ? Justifier.
+ \end{enumerate}
+ \end{exercice}
+\end{Maquette}
+\begin{Maquette}[Fiche]{Theme=Théorème de Pythagore}
+ \begin{exercice}
+ On considère un triangle $ABC$ tel que $AB=7$; $BC=5$ et $CA=6$.
+ \begin{enumerate}
+ \item Tracer le triangle $ABC$ en vraie grandeur.\\On fera preuve de la plus grande précision possible et du plus grand soin possible. Pour cela, un crayon gris bien taillé, une règle et une gomme propres sont nécessaires et conseillées.
+ \item Ce triangle est-il rectangle ? Justifier.
+ \end{enumerate}
+ \end{exercice}
+\end{Maquette}
+\clearpage
+Comme on peut le voir, chaque type de travail est associé à une présentation. Ces présentations sont créées par les commandes associées à des styles prédéfinis.\footnote{Qu'on peut donc redéfinir. Par exemple, c'est ce que j'ai fait dans ce document pour la commande \lstinline!\\TikzFiche! : elle ne commence plus une nouvelle page.} \lstinline!tcolorbox! :
\begin{itemize}[label=\textbullet]
-\item \lstinline!userdm/userdmcor! pour la clé \Cle{DM};
+\item \lstinline!userdm / userdmcor! pour la clé \Cle{DM};
\item \lstinline!userds/userdscor! pour la clé \Cle{DS};%
\item \lstinline!userie/useriecor! pour la clé \Cle{IE};%
\item \lstinline!userfiche/userfichecor! pour la clé \Cle{Fiche};%*
@@ -555,7 +642,8 @@ Comme on peut le voir, chaque type de travail est associé à une présentation.
\item \lstinline!userpdt/userpdtcor! pour la clé \Cle{PdT};%*
\item \lstinline!usercours! pour la clé \Cle{Cours};
\item \lstinline!usercontrat/usercontratcor! pour la clé \Cle{Contrat};%*
-\item et \lstinline!userfdr/userfdr! pour la clé \Cle{FdR};%*
+\item \lstinline!userfdr/userfdrcor! pour la clé \Cle{FdR};%*
+\item et \lstinline!usercan/usercancor! pour la clé \Cle{CAN}.
\end{itemize}
Par exemple, pour une fiche, le style {\em par défaut} permet d'obtenir :
@@ -608,7 +696,9 @@ Pour modifier {\em plus finement} les entêtes des différentes maquettes, on di
\item et \lstinline!\TikzCAN/\TikzCANCor! pour la clé \Cle{CAN}.%*
\end{itemize}
Leurs modifications seront facilitées en copiant le code fourni par le fichier \lstinline!ProfMaquette.sty!.
-\clearpage
+
+\bigskip
+
On dispose également de la commande \lstinline!\Competences! permettant de construire un tableau de\dots{} compétences données par l'utilisateur; les compétences étant séparées par le symbole \lstinline!/!.
\begin{Codes}[]{0.4}{}
\Competences{Utiliser le compas/Utiliser l'équerre}
@@ -677,6 +767,23 @@ On peut, dans un premier temps, utiliser les clés suivantes :
\end{exercice}
\end{Maquette}
\end{Codes}
+On peut également, pour les maquettes \lstinline!Fiche!, \lstinline!DM!, \lstinline!DS! et \lstinline!IE!, ne pas numéroté un exercice (particulièrement dans le cas où un seul exercice serait présent).
+\begin{Codes}[]{0.4}{}
+\begin{Maquette}[Fiche]{}
+ \begin{exercice}*
+ La fonction $f:x\mapsto3x+2$ est-elle une fonction affine ? Justifier.
+ \end{exercice}
+ \begin{exercice}
+ La fonction $f:x\mapsto3x+2$ est-elle une fonction affine ? Justifier.
+ \end{exercice}
+ \begin{exercice}*
+ La fonction $f:x\mapsto3x+2$ est-elle une fonction affine ? Justifier.
+ \end{exercice}
+\end{Maquette}
+\end{Codes}
+\begin{tcolorbox}
+ Pour la maquette \lstinline!ParcoursPerso!, si un seul exercice se trouve dans la liste, alors il est automatiquement non-numéroté.
+\end{tcolorbox}
\subsection*{Le barème des exercices}
On remarque que certains exercices sont associés à un total de point. C'est une des clés disponibles pour l'environnement \lstinline!exercice!. Voici celles pour les barèmes :
\begin{Description}
@@ -1321,7 +1428,8 @@ Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour le
\clearpage
\section*{Historique}
\begin{description}
-\item[\PfMfiledate{}--v \PfMfileversion] Exercices {\em éventuellement} non numérotés. Correction de bugs (Feuille de route).
+\item[\PfMfiledate{}--v \PfMfileversion] Ajout d'une clé \Cle{Dys} pour les élèves à profil particulier.
+ %0.75 Exercices {\em éventuellement} non numérotés. Correction de bugs (Feuille de route).
%0.65 Création du format CAN (Course aux nombres).
\end{description}
\end{document}
diff --git a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
index e69c5c8b3e..9f30f0948a 100644
--- a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
+++ b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
@@ -2,9 +2,9 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2023/11/09}%
+\def\filedate{2023/11/25}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.75}%
+\def\fileversion{0.8}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
@@ -28,9 +28,21 @@
\RequirePackage{modulus}%
+% mettre un option Dys
+\RequirePackage{ragged2e}%
+%\RequirePackage{scalefnt}%
+% Define our simple macro \getfontsize
+%\bgroup%
+%\catcode`@=11%
+%\gdef\getfontsize{\f@size}%
+%\egroup%
+\makeatletter
+%\def\GetPointSize{\@ptsize}
+\gdef\PfMFontSize{\@ptsize}
+\makeatother
%définition des clés
-\RequirePackage{simplekv}
-\setKVdefault[Boulot]{Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,AllDirect=false,AllPouce=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé
+\RequirePackage{simplekv}%
+\setKVdefault[Boulot]{Dys=false,Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,AllDirect=false,AllPouce=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé
\defKV[Boulot]{Colonnes=\setKV[Boulot]{CorrectionColonnes}}%
\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace écrite,NomExercice=Exercice}%
\setKVdefault[DM]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname}%
@@ -112,6 +124,28 @@
\newcommand\PfMCompNA{NA}%
\newcommand\PfMCompECA{ECA}%
\newcommand\PfMCompA{A}%
+
+\tcbset{%
+ consignes/.style={
+ empty,
+ right=0pt,
+ left=0mm,
+ top=0pt,
+ bottom=0pt,
+ frame engine=path,
+ colframe=Crimson!10,
+ notitle,
+ sharp corners=west,
+ borderline west={3pt}{0pt}{Crimson!50}
+ }
+}
+
+\NewDocumentEnvironment{Consignes}{+b}{%
+ \begin{tcolorbox}[consignes]
+ \small\sffamily #1
+ \end{tcolorbox}
+}{}%
+
% Pour la gestion de l'aléatoire
% afin de permettre d'utiliser le même exercice.
% Extraire des sommets
@@ -280,8 +314,9 @@
%
\NewDocumentEnvironment{Enumelange}{o+b}{%
\setcounter{Melquestions}{0}%
- \setsepchar{\item}%
+ \setsepchar{\item}\ignoreemptyitems%
\readlist*\ListeTest{#2}%
+% La liste des éléments retenus est \showitems*\ListeTest[]
\IfNoValueTF{#1}{%
\ChoixAleaMultiMix{\ListeTestlen}{1}{\ListeTestlen}{0}{\ListeShuffleA}%
\xdef\MelangeValeurTotale{\ListeTestlen}%
@@ -627,14 +662,14 @@
\makeatletter
%%% Base des exercices DM
\tcbset{%
- BaseDM/.style={%
+ tikzdm/.style={%
lowerbox=ignored,
enhanced,
breakable,
colback=white,
colframe=PfMCadreDM,
fonttitle=\bfseries\sffamily,
- title=Exercice \thePfMExo,
+ title=Exercice\ifboolKV[ClesExercices]{Numerote}{ \thePfMExo}{}\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{},
attach boxed title to top left={xshift=0.2mm},
boxed title size=standard,
boxed title style={%
@@ -673,13 +708,16 @@
}%
}%
-\newenvironment{exerciceDM}[1][]{%
+\NewDocumentEnvironment{exerciceDM}{so+b}{%
\setcounter{PfMAlea}{0}%
- \useKVdefault[ClesExercices]
- \setKV[ClesExercices]{#1}
- \refstepcounter{PfMSection}
+ \useKVdefault[ClesExercices]%
+ \setKV[ClesExercices]{#2}%
+ \IfBooleanTF{#1}{%
+ \setKV[ClesExercices]{Numerote=false}%
+ }{}%
+ \refstepcounter{PfMSection}%
\PfMChoixCorrection%
- \refstepcounter{PfMExo}
+ \refstepcounter{PfMExo}%
\immediate\write\@auxout{%
\string\opcopy{\thePfMExo}{TotalExo}%
}
@@ -688,13 +726,14 @@
\string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
}}{}
\tcolorbox[%
- BaseDM,
+ tikzdm,
label is label,
- label=page-\thePfMMaquette-\thePfMExo%
+ label=page-\thePfMMaquette-\thePfMExo
]
-}{%
- \endtcolorbox%
-}
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ #3
+\endtcolorbox%
+}{}%
%%Contrat
@@ -840,6 +879,7 @@
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
}{\endtcolorbox%
}
@@ -929,7 +969,7 @@
{%
\opexport{\Alph{PfMMaquette}-FdRTotalExo}{\FdRTotalExo}%
\xdef\PfMListeExerciceFdR{\csname \Alph{PfMMaquette}FdRtrue\endcsname}%
- \ifcsname \Alph{PfMMaquette}FdRstop\endcsname
+ \ifcsname \Alph{PfMMaquette}FdRstop\endcsname%
\xdef\PfMListeExerciceFdRStop{\csname \Alph{PfMMaquette}FdRstop\endcsname}%
\else%
\xdef\PfMListeExerciceFdRStop{}%
@@ -982,12 +1022,12 @@
\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##1]}%
}%
}%
- \ifnum\LongueurC=0\relax
- \else
+ \ifnum\LongueurC=0\relax%
+ \else%
\xintFor* ##1 in{\xintSeq{1}{\LongueurC}}\do{%
\xintifboolexpr{\ListeRetiensExclus[##1]>\ListeRetiensStop[1]}{}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##1]}}%
}%
- \fi
+ \fi%
\xintifboolexpr{\NBExoSup==\NBExo}{}{%
\xintifboolexpr{\NBExoSup>\NBExo}{%
\xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{%
@@ -1012,13 +1052,13 @@
\xintifboolexpr{\ListeRetiensExo[##2]<\fpeval{\ListeRetiensStop[##1]+1} || \ListeRetiensExo[##2]>\ListeRetiensStop[\fpeval{##1+1}]}{}{\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##2]}%
}%
}%
- \ifnum\LongueurC=0\relax
- \else
+ \ifnum\LongueurC=0\relax%
+ \else%
\xintFor* ##2 in{\xintSeq{1}{\LongueurC}}\do{%
\xintifboolexpr{\ListeRetiensExclus[##2]<\fpeval{\ListeRetiensStop[##1]+1} || \ListeRetiensExclus[##2]>\ListeRetiensStop[\fpeval{##1+1}]}{}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##2]}%
}%%
}%
- \fi
+ \fi%
\xintifboolexpr{\NBExoSup==\NBExo}{}{%
\xintifboolexpr{\NBExoSup>\NBExo}{%
\xintFor* ##3 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{%
@@ -1042,12 +1082,12 @@
\xintFor* ##1 in{\xintSeq{1}{\LongueurA}}\do{%
\xintifboolexpr{\fpeval{\ListeRetiensExo[##1]}>\fpeval{\ListeRetiensStop[\ListeRetiensStoplen-1]}}{\xdef\NBExo{\fpeval{\NBExo+1}}\xdef\ListeRoute{\ListeRoute,\ListeRetiensExo[##1]}}{}%
}%
- \ifnum\LongueurC=0\relax
- \else
+ \ifnum\LongueurC=0\relax%
+ \else%
\xintFor* ##1 in{\xintSeq{1}{\LongueurC}}\do{%
\xintifboolexpr{\ListeRetiensExclus[##1]>\fpeval{\ListeRetiensStop[\ListeRetiensStoplen-1]}}{\xdef\NBExoSup{\fpeval{\NBExoSup+1}}\xdef\ListeRouteExclus{\ListeRouteExclus,\ListeRetiensExclus[##1]}}{}%
}%
- \fi
+ \fi%
\xintifboolexpr{\NBExoSup==\NBExo}{}{%
\xintifboolexpr{\NBExoSup>\NBExo}{%
\xintFor* ##1 in{\xintSeq{1}{\fpeval{\NBExoSup-\NBExo}}}\do{%
@@ -1104,9 +1144,9 @@
\xdef\RetiensLesReponses{\fpeval{\RetiensLesReponses+1}}%
\xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}}\do{%
\xintifboolexpr{\ListeRouteHaute[##2]<0}{%
- \xdef\RetiensNonAffichees{\fpeval{\RetiensNonAffichees+1}}
+ \xdef\RetiensNonAffichees{\fpeval{\RetiensNonAffichees+1}}%
}{}%
- }
+ }%
%\node at (0,\RetiensEtage) {Il y a \RetiensNonAffichees fois le nombre -1.};
% On affiche
\xintifboolexpr{\fpeval{\RetiensLesReponses-1}==\RetiensNonAffichees}{%
@@ -1128,36 +1168,13 @@
}%
}%
%
- \xdef\RetiensLeDepart{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}
+ \xdef\RetiensLeDepart{\fpeval{\RetiensLeDepart+\RetiensLesReponses}}%
\xdef\RetiensLesReponses{0}%
\xdef\RetiensNonAffichees{0}%
}{\xdef\RetiensLesReponses{\fpeval{\RetiensLesReponses+1}}%
}%
}%
- %Il y a \RetiensLesReponses fois le nombre -1.\par
- %\xintifboolexpr{\RetiensLesReponses==\fpeval{\RetiensLeDepart+1+\RetiensLesZeros}}{%
- % \xdef\RetiensLeDepart{\RetiensLeDepart+\RetiensLesZeros}%
- % \xdef\RetiensLesZeros{0}%
- %}{
- % \xintFor* ##2 in{\xintSeq{\fpeval{\RetiensLeDepart+1}}{\fpeval{\RetiensLeDepart+\RetiensLesZeros}}}\do{
- % \xintifboolexpr{\ListeRouteHaute[##2]<0}{%
- % \draw[red] (B-##2) to (B-\fpeval{##2+1});
- % }{%
- % \xintifboolexpr{\ListeRouteHaute[##2]==0}{%
- % \draw (B-##2) to (A-##2);%
- % }{%
- % \draw[blue] (B-##2) to (B-\fpeval{##2+1});
- % \draw[fill=white](B-##2) circle (\PfMRayonSchemaFdR) node{\ref{page-\thePfMMaquette-\ListeRouteHaute[##2]}};
- % }%
- % }%
- % }%
- % \xdef\RetiensLeDepart{\RetiensLeDepart+\RetiensLesZeros}%
- % \xdef\RetiensLesZeros{0}%
- %}{%
- % \xdef\RetiensLesZeros{\fpeval{\RetiensLesZeros+1}}%
- %}
- %}%
- % Route basse
+ % Route basse
\foreach\i in{1,...,\fpeval{\ListeRouteBasselen}}{%
\draw[line width=1pt] (A-\fpeval{\i-1}) -- (A-\i);%
}%
@@ -1184,7 +1201,6 @@
\fi
\immediate\write\@auxout{\noexpand\expandafter\gdef\noexpand\csname \Alph{PfMMaquette}FdR#1\endcsname{\csname \Alph{PfMMaquette}route#1\endcsname}}%
}%
-
\newenvironment{exerciceFdR}[1][]{%
\setcounter{PfMAlea}{0}%
@@ -1224,6 +1240,7 @@
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
}{\endtcolorbox%
}
@@ -1502,13 +1519,14 @@
\PfMChoixCorrection%
\@bsphack%
\immediate\openout \verbatim@out "\jobname-PPEx\thePfMExo.tex" %
+ \immediate\write\verbatim@out{\string\begin{exercice}}
\let\do\@makeother\dospecials%
\catcode`\^^M\active%
\def\verbatim@processline{%
\immediate\write\verbatim@out{\the\verbatim@line}}%
\verbatim@start}%
-\def\endexerciceParcoursPerso{\immediate\closeout\verbatim@out\@esphack}%
+\def\endexerciceParcoursPerso{\immediate\write\verbatim@out{\string\end{exercice}}\immediate\closeout\verbatim@out\@esphack}%
\newenvironment{exerciceParcours}[1][]{%
\setcounter{PfMAlea}{0}%
@@ -1536,6 +1554,7 @@
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
}{\endtcolorbox%
}
@@ -1558,6 +1577,7 @@
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
#3
\endtcolorbox%
}{}
@@ -1584,6 +1604,7 @@
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
#3
\endtcolorbox%
}{}%
@@ -1610,26 +1631,8 @@
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
-}{\endtcolorbox%
-}
-
-\newenvironment{ExerciceRecapBrevetold}[1][]{%
- \setcounter{PfMAlea}{0}%
- \useKVdefault[ClesExercices]%
- \setKV[ClesExercices]{#1}%
- \refstepcounter{PfMSection}%
- \PfMChoixCorrection%
- \refstepcounter{PfMExo}%
- \ifboolKV[ClesExercices]{BaremeTotal}{%
- \immediate\write\@auxout{%
- \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
- }%
- }{}%
- \tcolorbox[%
- tikzrecapbrevet,
- label is label,
- label=page-\thePfMMaquette-\thePfMExo
- ]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
+ #3
}{\endtcolorbox%
}
@@ -1681,7 +1684,7 @@
xshift=10pt,%
] at (frame.north west){\bfseries\sffamily \useKV[Fiche]{NomExercice} \thePfMExo\ifboolKV[ClesExercices]{AffichageTitre}{ : \useKV[ClesExercices]{Titre}}{}};%
%%
- \node[%
+ \ifboolKV[ClesExercices]{BaremeTotal}{\node[%
fill=white,%
anchor=east,%
xshift=-10pt,%
@@ -1690,6 +1693,7 @@
]
at (frame.north east)%
{\footnotesize\sffamily \total{\the\c@PfMSection-\the\c@PfMExo}};%
+ }{}%
}%
}%
}%
@@ -1792,6 +1796,7 @@
\tcolorbox[%
tikzpdt
]%
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
}{\endtcolorbox%
}
@@ -1931,6 +1936,7 @@
label is label,
label=page-\thePfMMaquette-\thePfMExo
]
+ \ifboolKV[Boulot]{Dys}{\raggedright}{}%
}{\endtcolorbox%
}
@@ -2129,7 +2135,7 @@
\Large\sffamily \useKV[Fiche]{Theme}\hfill\useKV[Fiche]{Niveau} \useKV[Fiche]{Classe}%
\par{\tiny\useKV[Fiche]{Code}}\hfill{\scriptsize\useKV[Fiche]{Date}}%
\end{tcolorbox}%
-}
+}%
\NewDocumentCommand\TikzFicheCor{m}{%
\clearpage
@@ -2413,20 +2419,32 @@
\DTLforeach*{dataperso}{\Prenom=PrenomEleve,\Nom=NomEleve,\RecapListeExo=ListeExo}{%
\begin{Maquette}[Fiche]{#1,Code=\normalsize\Prenom~\Nom}%
\readlist*\ListeExercices{\RecapListeExo}%
- \foreach\i in{1,...,\ListeExerciceslen}{%
- \begin{exercice}%
- \input{\jobname-PPEx\ListeExercices[\i].tex}%
- \end{exercice}%
- }
- \ifnum\thePfMCorrigeParcoursPerso=1\relax%
- % \RecapitulatifCorrection{#2}%
- \clearpage
- \TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}%
- \readlist*\ListeExercices{\RecapListeExo}%
- \foreach\i in{1,...,\ListeExerciceslen}{%
- \textbf{Corrigé de l'exercice \i} : \input{\jobname-PPEx\ListeExercices[\i].sol}\par\goodbreak%
- }%
+ \ifnum\fpeval{\ListeExerciceslen}=1\relax{}
+ \setKVdefault[ClesExercices]{Numerote=false}
+% \begin{exercice}*
+ \input{\jobname-PPEx\ListeExercices[1].tex}%
+ % \end{exercice}%
+ \setKVdefault[ClesExercices]{Numerote}
+ \else
+ \foreach\i in{1,...,\ListeExerciceslen}{%
+ % \begin{exercice}
+ \input{\jobname-PPEx\ListeExercices[\i].tex}%
+ % \end{exercice}%
+ }
\fi
+ \ifnum\thePfMCorrigeParcoursPerso=1\relax%
+ % \RecapitulatifCorrection{#2}%
+ \clearpage
+ \TikzFicheCor{#1,Code=\normalsize\Prenom~\Nom}%
+ \readlist*\ListeExercices{\RecapListeExo}%
+ \ifnum\fpeval{\ListeExerciceslen}=1\relax{}
+ \textbf{Corrigé de l'exercice} : \input{\jobname-PPEx\ListeExercices[1].sol}\par\goodbreak%
+ \else
+ \foreach\i in{1,...,\ListeExerciceslen}{%
+ \textbf{Corrigé de l'exercice \i} : \input{\jobname-PPEx\ListeExercices[\i].sol}\par\goodbreak%
+ }%
+ \fi%
+ \fi%
\end{Maquette}%
}%
}%
@@ -2442,10 +2460,34 @@
}%
}%
+\NewDocumentCommand\PfMBasculeDys{}{%
+ \ifboolKV[Boulot]{Dys}{%
+ % d'après \url{https://culturedys.com/quelle-est-la-meilleure-police-pour-les-dyslexiques/}
+ \fontsize{14}{\fpeval{16.8*1.5}}\selectfont%
+ \raggedright%
+ }{%
+ \ifnum\thePfMMaquette=1\relax%
+ \else%
+ \ifnum\PfMFontSize=0\relax%
+ \fontsize{\fpeval{10}}{\fpeval{1.2*10}}%
+ \else\ifnum\PfMFontSize=1\relax%
+ \fontsize{\fpeval{11}}{\fpeval{1.2*11}}%
+ \else%
+ \fontsize{\fpeval{12}}{\fpeval{1.2*12}}%
+ \fi%
+ \fi%
+ \selectfont%
+ \renewcommand{\JustifyingParindent}{\parindent}
+ \justifying%
+ \fi%
+ }%
+}%
+
%%%%%%%%%%%%%%% Debut Maquette %%%%%%%
% Environnement englobant le tout.
%\makeatletter
\NewDocumentEnvironment{Maquette}{om}{%
+ % PfMFontSize vaut \PfMFontSize
% on remet à zéro les compteurs de solutions : inutile ?
\setcounter{RetiensSol}{0}%
\setcounter{RetiensRep}{0}%
@@ -2458,9 +2500,10 @@
% options de boulot
\IfHookExistsTF{env/Maquette/after}{\RemoveFromHook{env/Maquette/after}[*]}{}%
\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]}{}%
- %\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}%
+ % \AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}%
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}%
% Test
\IfHookExistsTF{env/exercice/begin}{\RemoveFromHook{env/exercice/begin}[*]}{}%
@@ -2488,8 +2531,10 @@
\renewcommand{\arraystretch}{1}%
}%
\ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzCANCor{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -2502,8 +2547,10 @@
\setKV[FdR]{#2}\TikzFdR%
\let\exercice\exerciceFdR\let\endexercice\endexerciceFdR%
\ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzFdRCor{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -2516,8 +2563,10 @@
\setKV[Contrat]{#2}\TikzContrat%
\let\exercice\exerciceContrat\let\endexercice\endexerciceContrat%
\ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzContratCor{#2}
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -2532,8 +2581,10 @@
\let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
% \let\Exercice\exerciceFiche\let\endExercice\endexerciceFiche%
\ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzFicheCor{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -2549,12 +2600,14 @@
%\let\Exercice\ExerciceRecapBrevet\let\endExercice\endExerciceRecapBrevet%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzRecapBrevetCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMBasculeDys%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \TikzRecapBrevetCor{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \PfMAffichageCorrige%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
}{}%
}{%
@@ -2575,12 +2628,14 @@
%\let\Exercice\exerciceParcours\let\endExercice\endexerciceParcours%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzParcoursCor{#2}
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMAffichageCorrige%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
}{}%
}{%
@@ -2590,62 +2645,70 @@
%\let\Exercice\exercicePdT\let\endExercice\endexercicePdT%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzPdTCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMBasculeDys%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \TikzPdTCor{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \PfMAffichageCorrige%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
}{}%
- }{
+ }{%
\ifboolKV[Boulot]{DM}{%
- \setKV[DM]{#2}\TikzDM%
+ \setKV[DM]{#2}\TikzDM{}%
\let\exercice\exerciceDM\let\endexercice\endexerciceDM%
%\let\Exercice\exerciceDM\let\endExercice\endexerciceDM%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzDMCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ \PfMBasculeDys%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \TikzDMCor{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \PfMAffichageCorrige%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
}{}%
}{%
\ifboolKV[Boulot]{Fiche}{%
\setKV[Fiche]{#2}%
- \TikzFiche
+ \TikzFiche%
\let\exercice\exerciceFiche\let\endexercice\endexerciceFiche%
%\let\Exercice\exerciceFiche\let\endExercice\endexerciceFiche%
\ifboolKV[Boulot]{CorrigeFin}{%
\ifboolKV[Boulot]{CorrigeAll}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \setKV[Boulot]{#1}%
+ \useKVdefault[Boulot]%
+ \setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzFicheCor{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
- \IfFileExists{\jobname-Ex##1.sol}{\textbf{Corrigé de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{}
+ \IfFileExists{\jobname-Ex##1.sol}{\textbf{Corrigé de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.sol}\par\goodbreak}{}%
}%
\ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
\TikzFicheCorRep{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
- \IfFileExists{\jobname-Ex##1.rep}{\textbf{Réponse(s) de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{}
+ \IfFileExists{\jobname-Ex##1.rep}{\textbf{Réponse(s) de l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.rep}\par\goodbreak}{}%
}%
\ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
\TikzFicheCorInd{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
- \IfFileExists{\jobname-Ex##1.cdp}{\textbf{Indice(s) pour l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{}
+ \IfFileExists{\jobname-Ex##1.cdp}{\textbf{Indice(s) pour l'exercice ##1}\par\nopagebreak\input{\jobname-Ex##1.cdp}\par\goodbreak}{}%
}%
\ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
}%
}{%
- \AddToHook{env/Maquette/after}[Correction]{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \PfMBasculeDys
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzFicheCor{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -2656,7 +2719,7 @@
}{}%
}{%
\ifboolKV[Boulot]{DS}{%
- \setKV[DS]{#2}\TikzDS
+ \setKV[DS]{#2}\TikzDS%
\let\exercice\exerciceDS\let\endexercice\endexerciceDS%
\ifboolKV[Boulot]{BaremeComplet}{%
\begin{center}
@@ -2665,7 +2728,9 @@
}{}%
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
+ \useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzDSCor{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -2680,7 +2745,9 @@
% \let\Exercice\exerciceDS\let\endExercice\endexerciceDS%On garde exerciceDS
\ifboolKV[Boulot]{CorrigeFin}{%
\AddToHook{env/Maquette/after}[Correction]{%
- \setKV[Boulot]{#1}%
+ \useKVdefault[Boulot]%
+ \setKV[Boulot]{#1}%
+ \PfMBasculeDys%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
\TikzIECor{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
@@ -2715,7 +2782,7 @@
}%
}%
}%
-}
+}%
}{}%
%\makeatother
@@ -3195,3 +3262,154 @@
\extract{\NbVehiculesINSEE}{1}{\KmEssenceVehiculesINSEE}%
\extract{\NbVehiculesINSEE}{1}{\KmDieselVehiculesINSEE}%
}
+
+ % On met Christ7 à la fin :)
+ \newlength{\ltxt}
+
+ \newcommand\compo[4]{%
+ \setlength{\ltxt}{\linewidth}
+ \setbox#1=\hbox{\includegraphics[scale=#3]{#2.#1}}
+ \addtolength{\ltxt}{-\wd#1}
+ \addtolength{\ltxt}{-10pt}
+ \begin{minipage}{\wd#1}
+ \includegraphics[scale=#3]{#2.#1}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{\ltxt}
+ #4
+ \end{minipage}
+ }%
+
+\newlength{\lntxt}
+\newcommand{\Compo}[4]{
+\setlength{\lntxt}{\linewidth}
+\setbox#1=\hbox{\includegraphics[scale=#3]{#2}}
+\addtolength{\lntxt}{-\wd#1}
+\addtolength{\lntxt}{-10pt}
+\begin{minipage}{\wd#1}
+\includegraphics[scale=#3]{#2}
+\end{minipage}
+\hfill
+\begin{minipage}{\lntxt}
+#4
+\end{minipage}
+}
+
+\newcommand{\Compog}[4]{
+\setlength{\lntxt}{\linewidth}
+\setbox#1=\hbox{\includegraphics[scale=#3]{#2}}
+\addtolength{\lntxt}{-\wd#1}
+\addtolength{\lntxt}{-10pt}
+\begin{minipage}{\lntxt}
+#4
+\end{minipage}
+\hfill
+\begin{minipage}{\wd#1}
+\includegraphics[scale=#3]{#2}
+\end{minipage}
+}
+
+\newlength{\ecart}
+\setlength{\ecart}{-20pt}
+
+\newcommand{\compog}[4]{%
+\setlength{\ltxt}{\linewidth}
+\setbox#1=\hbox{\includegraphics[scale=#3]{#2.#1}}
+\addtolength{\ltxt}{-\wd#1}
+\addtolength{\ltxt}{\ecart}
+\begin{minipage}{\ltxt}
+#4
+\end{minipage}
+\hfill
+\begin{minipage}{\wd#1}
+\includegraphics[scale=#3]{#2.#1}
+\end{minipage}
+}
+
+\newlength{\appui}
+\setlength{\appui}{20pt}
+
+\newlength{\lnttxt}
+\newcommand\dispo[3]{%
+\setlength{\lnttxt}{\linewidth}
+\setbox#1=\hbox{#2}
+\addtolength{\lnttxt}{-\wd#1}
+\addtolength{\lnttxt}{-\appui}
+\begin{minipage}{\wd#1}
+#2
+\end{minipage}
+\hfill
+\begin{minipage}{\lnttxt}
+#3
+\end{minipage}
+}
+
+\newcommand\dispog[3]{%
+\setlength{\lnttxt}{\linewidth}%
+\setbox#1=\hbox{#2}%
+\addtolength{\lnttxt}{-\wd#1}%
+\addtolength{\lnttxt}{-\appui}%
+\begin{minipage}{\lnttxt}%
+#3
+\end{minipage}%
+\hfill%
+\begin{minipage}{\wd#1}%
+#2
+\end{minipage}%
+}%
+
+\newcommand\compoxe[4][1]{%
+ \setbox#1=\hbox{\includegraphics[scale=#3]{#2.pdf}}%
+ \setlength{\lnttxt}{\linewidth-\wd#1-\appui}%
+ \begin{minipage}{\wd#1}%
+ \usebox#1%
+ \end{minipage}%
+ \hfill%
+ \begin{minipage}{\lnttxt}%
+ #4%
+ \end{minipage}%
+}%
+
+\newcommand\compogxe[4][1]{%
+ \setbox#1=\hbox{\includegraphics[scale=#3]{#2.pdf}}%
+ \setlength{\lnttxt}{\linewidth-\wd#1-\appui}%
+ \begin{minipage}{\lnttxt}%
+ #4
+ \end{minipage}%
+ \hfill%
+ \begin{minipage}{\wd#1}%
+ \usebox#1
+ \end{minipage}%
+}%
+
+\newcommand{\compogb}[4]{%
+\setlength{\ltxt}{\linewidth}
+\BaremeEspaceMarge{-20pt-82pt-\wd#1}
+\setbox#1=\hbox{\includegraphics[scale=#3]{#2.#1}}
+\addtolength{\ltxt}{-\wd#1}
+\addtolength{\ltxt}{-20pt}
+\begin{minipage}{\ltxt}
+#4
+\end{minipage}
+\hfill
+\begin{minipage}{\wd#1}
+\includegraphics[scale=#3]{#2.#1}
+\end{minipage}
+\BaremeEspaceMarge{-82pt}
+}
+
+\newcommand{\dispogb}[3]{
+\setlength{\ltxt}{\linewidth}
+\BaremeEspaceMarge{-20pt-82pt-\wd#1}
+\setbox#1=\hbox{#2}
+\addtolength{\ltxt}{-\wd#1}
+\addtolength{\ltxt}{-\appui}
+\begin{minipage}{\ltxt}
+#3
+\end{minipage}
+\hfill
+\begin{minipage}{\wd#1}
+#2
+\end{minipage}
+\BaremeEspaceMarge{-82pt}
+} \ No newline at end of file
diff --git a/macros/latex/contrib/vectorlogos/README.md b/macros/latex/contrib/vectorlogos/README.md
new file mode 100644
index 0000000000..f3b4de93e8
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/README.md
@@ -0,0 +1,10 @@
+vectorlogos is a package with vectorial logos of some 'classic' softwares.
+--------------------------------------------------------------------------
+vectorlogos est un package des logos vectoriels de logiciels 'classiques'.
+--------------------------------------------------------------------------
+Author...........: Cédric Pierquet
+email............: cpierquet@outlook.fr
+Licence..........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+License Python...: PSF license v2 (https://www.python.org/community/logos/)
+License Scratch..: Public Domain (https://commons.wikimedia.org/wiki/File:Scratchlogo.svg) or CC BY-SA 4.0 (https://en.scratch-wiki.info/wiki/File:ScratchCat3.0.svg)
+Others...........: GNU GPL or CC BY-SA 3.0 \ No newline at end of file
diff --git a/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.pdf b/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.pdf
new file mode 100644
index 0000000000..5d01fab017
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.tex b/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.tex
new file mode 100644
index 0000000000..7b0260f2cc
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/doc/vectorlogos-doc.tex
@@ -0,0 +1,321 @@
+% !TeX TXS-program:compile = txs:///pdflatex
+
+\documentclass[11pt,a4paper]{ltxdoc}
+\usepackage{crimson}
+\renewcommand*\ttdefault{cmvtt}
+\usepackage[T1]{fontenc}
+\usepackage{cabin}
+\usepackage{vectorlogos}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{tabularray}
+\usepackage{fontawesome5}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [vectorlogos]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=2cm]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.0}
+\def\TPdate{25/11/2023}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,hooks,listingsutf8}
+\usepackage{soul}
+\sethlcolor{lightgray!25}
+\NewDocumentCommand\MontreCode{ m }{%
+ \hl{\vphantom{\texttt{pf}}\texttt{#1}}%
+}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\begin{center}
+ \begin{minipage}{0.88\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{vectorlogos}}\\
+ \\
+ {\LARGE Insert, 'inline', vectorial,} \\
+ {\LARGE logos of 'classic' softwares.} \\
+ \\
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{tabular}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/vectorlogos}} \\
+\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+\begin{center}
+\scalebox{4}[4]{\logopython}\hspace{1cm}\scalebox{4}[4]{\logopython[notm]}\hspace{1cm}\scalebox{4}[4]{\logopython[vertical]}
+
+\medskip
+
+\scalebox{4}[4]{\logopython[icon]}\hspace{1cm}\scalebox{4}[4]{\logopython[powh]}\hspace{1cm}\scalebox{4}[4]{\logopython[powv]}
+
+\medskip
+
+\scalebox{4}[4]{\logogeogebra}\hspace{1cm}\scalebox{4}[4]{\logogeogebra[icon]}
+
+\medskip
+
+\scalebox{4}[4]{\logoscratch}\hspace{1cm}\scalebox{4}[4]{\logoscratch[alt]}\hspace{1cm}\scalebox{4}[4]{\logoscratch[cat]}
+
+\medskip
+
+\scalebox{4}[4]{\logotexstudio}
+
+\medskip
+
+\scalebox{4}[4]{\logoemacs}\scalebox{4}[4]{\logoemacs[alt]}
+
+\medskip
+
+\scalebox{4}[4]{\logotexmaker}\scalebox{4}[4]{\logotexmaker[alt]}
+\end{center}
+\end{tcolorbox}
+
+\vfill~
+
+\hrule
+
+\medskip
+
+\emph{%
+Logos came with GNU GPL or CC BY-SA (3.0 or 4.0) license.\\
+Some brand icons/logos are trademarks of their respective owners. Please do not use brand icons/logos for any purpose except to represent the company, product, or service to which they refer.\\
+"Python" and the Python Logo are trademarks of the Python Software Foundation (\url{https://www.python.org/psf/trademarks/}).}
+
+\medskip
+
+\hrule
+
+\vspace*{5mm}
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\hrule
+
+\vspace*{5mm}
+
+\section{Introduction}
+
+\subsection{Description, loading}
+
+With this package you can insert inline (vectorial) logos of 'classic' softwares.
+
+The format of the logos is \textsf{pdf}, from \textsf{svg} files (given by \textsf{GNU GPL} or \textsf{CC-BY-3.0} licenses).
+
+\medskip
+
+Each logo can be integrated within a classic \MontreCode{\textbackslash includegraphics} command.
+
+The package provides macros to insert them \textit{inline}, with automatic height and alignment.
+
+\medskip
+
+To load the package, simply use :
+
+\begin{quote}
+\begin{verbatim}
+\usepackage{vectorlogos}
+\end{verbatim}
+\end{quote}
+
+\subsection{Available logos, by name, for manual insertion}
+
+Available logos are :
+
+\medskip
+
+\begin{tblr}{width=\linewidth,colspec={Q[m,l]Q[l,m]X[m,l]},cells={font=\LARGE\ttfamily,bg=teal!5},column{1}={font=\LARGE\bfseries\sffamily}}
+ python & vectorlogo-python.pdf & \logopython\ \\
+ & vectorlogo-python-icon.pdf & \logopython[icon] \\
+ & vectorlogo-python-notm.pdf & \logopython[notm] \\
+ & vectorlogo-python-powh.pdf & \logopython[powh] \\
+ & vectorlogo-python-powv.pdf & \logopython[powv] \\
+ & vectorlogo-python-vertical.pdf & \logopython[vertical] \\
+ \hline
+ emacs & vectorlogo-emacs.pdf & \logoemacs\ \\
+ & vectorlogo-emacs-alt.pdf & \logoemacs[alt] \\
+ \hline
+ geogebra & vectorlogo-geogebra.pdf & \logogeogebra\ \\
+ & vectorlogo-geogebra-icon.pdf & \logogeogebra[icon] \\
+ \hline
+ scratch & vectorlogo-scratch.pdf & \logoscratch\ \\
+ & vectorlogo-scratch-alt.pdf & \logoscratch[alt] \\
+ & vectorlogo-scratch-cat.pdf & \logoscratch[cat] \\
+ \hline
+ texmaker & vectorlogo-texmaker.pdf & \logotexmaker\ \\
+ & vectorlogo-texmaker-alt.pdf & \logotexmaker[alt] \\
+ \hline
+ texstudio & vectorlogo-texstudio.pdf & \logotexstudio\ \\
+\end{tblr}
+
+\pagebreak
+
+\section{The macros}
+
+\subsection{A simple generic macro}
+
+In order to insert a vectorial logo, simpy use :
+
+\begin{quote}
+\begin{verbatim}
+\simplevectorlogo[options includegraphics]{name}
+\end{verbatim}
+\end{quote}
+
+There's no automatic height or raising, it's just an \textit{alias} of a classic \MontreCode{\textbackslash includegraphics} with the given names of the precedent tabular.
+
+\begin{tcblisting}{}
+\simplevectorlogo[height=1.5cm]{scratch}\par
+\simplevectorlogo[height=4cm]{scratch-cat}\par
+\simplevectorlogo{python-vertical}\par
+\simplevectorlogo[scale=0.33]{texstudio}\par
+\simplevectorlogo{emacs}\par
+\simplevectorlogo[width=3cm]{geogebra-icon}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{A generic inline macro}
+
+In order to insert a vectorial logo inline, simpy use :
+
+\begin{quote}
+\begin{verbatim}
+\vectorlogo[option]{name}
+\end{verbatim}
+\end{quote}
+
+The height (automatically calculated) of the logo is given by :
+
+\begin{itemize}
+ \item 90\,\% of the box \fbox{qB} in the current font ;
+ \item raised 5\,\% bottom of the depth of \fbox{q} in the current font.
+\end{itemize}
+
+Available \textsf{names} are :
+
+\begin{multicols}{3}
+ \begin{itemize}
+ \item \texttt{python}
+ \item \texttt{emacs}
+ \item \texttt{geogebra}
+ \item \texttt{scratch}
+ \item \texttt{texmaker} : Spanish
+ \item \texttt{texstudio}
+ \end{itemize}
+\end{multicols}
+
+Available \textsf{options} are given by the suffix of alt logos.
+
+\begin{tcblisting}{}
+%classic size and fonte :
+For example, it's a vectorial logo \vectorlogo{python} with inline insertion.
+\end{tcblisting}
+
+\begin{tcblisting}{}
+%other font and other size
+{\Large\sffamily For example, it's a vectorial logo \vectorlogo[icon]{geogebra} with inline insertion.}
+\end{tcblisting}
+
+\begin{tcblisting}{}
+%other font and other size
+\scalebox{3.25}[3.25]{\ttfamily The cat \vectorlogo[cat]{scratch} logo, inline !}
+\end{tcblisting}
+
+\subsection{Special commands}
+
+There's an other (shortcut) way to insert logos, with a shortcut-name, like in \textsf{fontawesome5} :
+
+\begin{quote}
+\begin{verbatim}
+\logopython[option]
+\logoscratch[option]
+\logogeogebra[option]
+\logotexstudio[option]
+\logoemacs[option]
+\logotexmaker[option]
+\end{verbatim}
+\end{quote}
+
+Available options are given by the suffix of alt logos.
+
+\pagebreak
+
+\section{Samples}
+
+\begin{tcblisting}{listing only}
+%useful macro
+\newcommand\samplevectorlogo[1]{{\LARGE Inline {#1} logo}\par}
+\end{tcblisting}
+
+\newcommand\samplevectorlogo[1]{{\LARGE Inline {#1} logo}\par}
+
+\begin{tcblisting}{listing side text}
+\samplevectorlogo{\logopython}
+\samplevectorlogo{\logopython[notm]}
+\samplevectorlogo{\logopython[vertical]}
+\samplevectorlogo{\logopython[icon]}
+\samplevectorlogo{\logopython[powh]}
+\samplevectorlogo{\logopython[powv]}
+\samplevectorlogo{\logogeogebra}
+\samplevectorlogo{\logogeogebra[icon]}
+\samplevectorlogo{\logoscratch}
+\samplevectorlogo{\logoscratch[alt]}
+\samplevectorlogo{\logoscratch[cat]}
+\samplevectorlogo{\logotexstudio}
+\samplevectorlogo{\logoemacs}
+\samplevectorlogo{\logoemacs[alt]}
+\samplevectorlogo{\logotexmaker}
+\samplevectorlogo{\logotexmaker[old]}
+\end{tcblisting}
+
+\vfill~
+
+\section{History}
+
+\begin{quote}
+\begin{verbatim}
+0.1.0 : Initial version
+\end{verbatim}
+\end{quote}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-emacs-alt.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-emacs-alt.pdf
new file mode 100644
index 0000000000..3b7c7e61f1
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-emacs-alt.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-emacs.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-emacs.pdf
new file mode 100644
index 0000000000..2c8367b3aa
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-emacs.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-geogebra-icon.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-geogebra-icon.pdf
new file mode 100644
index 0000000000..0ae91952b4
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-geogebra-icon.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-geogebra.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-geogebra.pdf
new file mode 100644
index 0000000000..ce4de7706c
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-geogebra.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-icon.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-icon.pdf
new file mode 100644
index 0000000000..9cada11482
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-icon.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-notm.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-notm.pdf
new file mode 100644
index 0000000000..e597d7c7f1
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-notm.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-powh.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-powh.pdf
new file mode 100644
index 0000000000..0aed1b551c
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-powh.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-powv.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-powv.pdf
new file mode 100644
index 0000000000..f8cfc5494e
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-powv.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-vertical.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-vertical.pdf
new file mode 100644
index 0000000000..458ee50488
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python-vertical.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-python.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python.pdf
new file mode 100644
index 0000000000..f2268f7e2b
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-python.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch-alt.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch-alt.pdf
new file mode 100644
index 0000000000..b49d809e18
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch-alt.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch-cat.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch-cat.pdf
new file mode 100644
index 0000000000..072dad81d0
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch-cat.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch.pdf
new file mode 100644
index 0000000000..320050e213
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-scratch.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-texmaker-alt.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texmaker-alt.pdf
new file mode 100644
index 0000000000..bc8d701f82
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texmaker-alt.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-texmaker.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texmaker.pdf
new file mode 100644
index 0000000000..da8848bb13
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texmaker.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogo-texstudio.pdf b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texstudio.pdf
new file mode 100644
index 0000000000..b5732ff6a5
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogo-texstudio.pdf
Binary files differ
diff --git a/macros/latex/contrib/vectorlogos/tex/vectorlogos.sty b/macros/latex/contrib/vectorlogos/tex/vectorlogos.sty
new file mode 100644
index 0000000000..e78247fee2
--- /dev/null
+++ b/macros/latex/contrib/vectorlogos/tex/vectorlogos.sty
@@ -0,0 +1,73 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% licenses svg :
+% python : PSF license v2 https://www.python.org/community/logos/
+% scratch : Public https://commons.wikimedia.org/wiki/File:Scratchlogo.svg
+% scratch alt : Public https://commons.wikimedia.org/wiki/File:Scratchlogo.svg
+% scratch cat : CC40 https://fr.scratch-wiki.info/wiki/Fichier:Scratch_Cat_(cat-a).svg
+% texstudio : FREE https://en.m.wikipedia.org/wiki/File:TeXstudio_Logo.svg
+% emacs logo : FREE https://commons.wikimedia.org/wiki/File:EmacsIcon.svg
+% emacs logo alt : FREE https://fr.m.wikipedia.org/wiki/Fichier:Emacs-logo.svg
+% geogebra icon : CC30 https://fr.m.wikipedia.org/wiki/Fichier:Geogebra.svg
+% geogebra logo : CC30 https://fr.m.wikipedia.org/wiki/Fichier:Geogebra.svg
+% texmaker : FREE https://en.wikipedia.org/wiki/File:TeXmaker_Logo.svg
+% texmaker old : FREE https://en.wikipedia.org/wiki/File:TeXmaker_New_Logo.svg
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{vectorlogos}[2023/11/25 0.1.0 Vectorial logos of 'classic' softwares, for inline use.]
+
+%====HISTORY
+% v 0.1.0 Initial Version
+
+%====BASE
+\RequirePackage{calc}
+\RequirePackage{graphicx}
+\RequirePackage{xstring}
+
+%====LENGTHS
+\newlength{\tmp@logosvg@total@height}
+\newlength{\tmp@logosvg@depth}
+
+%====MACRO CREATOR
+\NewDocumentCommand\GenMacroLogoVect{ m m }{%1=macro,2=base,3=default
+ \NewDocumentCommand#1{ O{} }{%
+ \settototalheight{\tmp@logosvg@total@height}{\hbox{qB}}%
+ \settodepth{\tmp@logosvg@depth}{\hbox{q}}%
+ \IfFileExists{vectorlogo-#2-##1.pdf}%
+ {%
+ \raisebox{-\tmp@logosvg@depth+0.05\tmp@logosvg@total@height}{\includegraphics[height=0.9\tmp@logosvg@total@height]{vectorlogo-#2-##1.pdf}}%
+ }%
+ {%
+ \raisebox{-\tmp@logosvg@depth+0.05\tmp@logosvg@total@height}{\includegraphics[height=0.9\tmp@logosvg@total@height]{vectorlogo-#2.pdf}}%
+ }%
+ }%
+}
+
+%====SIMPLE MACRO
+\NewDocumentCommand\simplevectorlogo{ O{} m }{%
+ \IfFileExists{vectorlogo-#2.pdf}%
+ {%
+ \includegraphics[#1]{vectorlogo-#2.pdf}%
+ }%
+ {}%
+}
+
+%====GENERIC MACROS
+\NewDocumentCommand\vectorlogo{ O{logo} m }{%
+ \IfEq{#2}{python}{\logopython[#1]}{}%
+ \IfEq{#2}{scratch}{\logoscratch[#1]}{}%
+ \IfEq{#2}{geogebra}{\logogeogebra[#1]}{}%
+ \IfEq{#2}{texstudio}{\logotexstudio[#1]}{}%
+ \IfEq{#2}{emacs}{\logoemacs[#1]}{}%
+ \IfEq{#2}{texmaker}{\logotexmaker[#1]}{}%
+}
+
+%====SPECIFIC MACROS
+\GenMacroLogoVect{\logopython}{python}
+\GenMacroLogoVect{\logoscratch}{scratch}
+\GenMacroLogoVect{\logogeogebra}{geogebra}
+\GenMacroLogoVect{\logotexstudio}{texstudio}
+\GenMacroLogoVect{\logoemacs}{emacs}
+\GenMacroLogoVect{\logotexmaker}{texmaker}
+
+\endinput \ No newline at end of file