diff options
Diffstat (limited to 'macros')
-rw-r--r-- | macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf | bin | 183663 -> 191562 bytes | |||
-rw-r--r-- | macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex | 59 | ||||
-rw-r--r-- | macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf | bin | 1466206 -> 1472616 bytes | |||
-rw-r--r-- | macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex | 66 | ||||
-rw-r--r-- | macros/latex/contrib/customenvs/tex/customenvs.sty | 177 | ||||
-rw-r--r-- | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf | bin | 1788630 -> 1793092 bytes | |||
-rw-r--r-- | macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf | bin | 74004 -> 80800 bytes | |||
-rw-r--r-- | macros/latex/contrib/proflycee/tex/ProfLycee.sty | 3 | ||||
-rw-r--r-- | macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex | 144 | ||||
-rw-r--r-- | macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex | 63 |
10 files changed, 504 insertions, 8 deletions
diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf Binary files differindex d0d64760c9..fe5aeba297 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.pdf diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex index 3e4ce0aa72..321723f025 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-en.tex @@ -34,8 +34,8 @@ \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.7} -\def\TPdate{03/06/2024} +\def\TPversion{0.1.8} +\def\TPdate{13/07/2024} \usepackage{tcolorbox} \sethlcolor{lightgray!25} \NewDocumentCommand\MontreCode{ m }{% @@ -111,6 +111,7 @@ \section{History} +\verb|v0.1.8|~:~~~~Score banner \verb|v0.1.7|~:~~~~Small patch for \textsf{Vignette} macro (see \texttt{[fr]} documentation) \verb|v0.1.6|~:~~~~Small patchs for \textsf{displayskip} + \textsf{pas-tableur} (see \texttt{[fr]} documentation) @@ -430,6 +431,60 @@ The last argument, mandatory and between \MontreCode{(...)} give the list of cat \pagebreak +\pagebreak + +\section{Score banner} + +\subsection{Global use} + +The idea is to insert a score banner, with customizations. + +\begin{codehigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25] +ScoreBanner[keys]{number} +\end{codehigh} + +\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25] +%default output +\ScoreBanner{} +\end{demohigh} + +\subsection{The macro} + +Available \MontreCode{keys} are : + +\begin{itemize} + \item \MontreCode{Height} : height of the banner (without the legend) ; \MontreCode{1} by default + \item \MontreCode{Ratio} : ratio of boxes ; \MontreCode{0.6} by default + \item \MontreCode{Symbols} : labels ; \MontreCode{A,B,C,D,E} by default + \item \MontreCode{Legend} : legend (uppercase) ; \MontreCode{score} by default ; + \item \MontreCode{Font} : global font ; \MontreCode{\textbackslash bfseries\textbackslash sffamily} by default + \item \MontreCode{ShowLegend} : boolean for the legend ; \MontreCode{false} by default ; + \item \MontreCode{Colors} : colors for boxes ; + + \hfill\MontreCode{colorNS1,colorNS2,colorNS3,colorNS4,colorNS5} by default ; + \item \MontreCode{ScaleSymbols} : scale H/V of labels ; \MontreCode{1.25,1.65} by default ; + \item \MontreCode{Colbg} : background color for select box ; \MontreCode{white} by default. +\end{itemize} + +\smallskip + +If the list of colors doesn't fill all the boxes, \MontreCode{lightgray} color is used. + +\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25] +\ScoreBanner[Legend=Geometry,Height=2]{4} +\end{demohigh} + +\begin{demohigh}[language=latex/latex3,style/main=teal!25,style/code=teal!25,style/demo=yellow!25] +%bg of lower part is yellow!25 +\def\lstcouleurs{colorNS1,colorNS2,colorNS3,colorNS4,colorNS5,purple} +\ScoreBanner% + [ScaleSymbols={1.33,2},Height=3.25,ShowLegend=false,Ratio=0.75, + Symbols={1,2,3,4,5,6},Colors=\lstcouleurs, + Colbg=yellow!25]{1} +\end{demohigh} + +\pagebreak + \section{SMS conversation} \subsection{Global use} diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf Binary files differindex b128076999..47dce47918 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.pdf diff --git a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex index 2f74296c5d..7a7293ec6e 100644 --- a/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex +++ b/macros/latex/contrib/customenvs/doc/customenvs-doc-fr.tex @@ -39,8 +39,8 @@ \usepackage[margin=1.5cm]{geometry} \setlength{\parindent}{0pt} -\def\TPversion{0.1.7} -\def\TPdate{03 juin 2024} +\def\TPversion{0.1.8} +\def\TPdate{13 juillet 2024} \usepackage{tcolorbox} \tcbuselibrary{listingsutf8} \newtcblisting{DemoCode}[1]{% @@ -66,10 +66,10 @@ keywordstyle={\color{violet}},% classoffset=2,% alsoletter={-},% - morekeywords={\ReponsesQCM,MultiCols,\CreerListeItems,\ListeChoixItems,\TableauCompetences,\CrayonDeCompetences,\StyleEnvtExo,\StyleEnvtExoDefaut,\TitreExo,\ipsum,EnvSMS,\SMSrec,\SMSenv,BoiteSimple,\SujetTitreExo,\CircledNumber,\AffVignette,\BoiteArrondie,\ChangerDisplaySkip,\celcouleur,\celfusion,\lignetxt,\colonnetxt,\celnumbreak,\celtxt},% + 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},% 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},% + 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},% keywordstyle={\color{orange}} },% #1 @@ -799,6 +799,64 @@ L'argument, obligatoire et entre \MontreCode{\{...\}} est la liste des catégori \pagebreak +\section{Bandeau de score} + +\subsection{Principe et fonctionnement} + +L'idée est de proposer une commande pour insérer un bandeau de score, type \textit{nutriscore}. + +\smallskip + +La majorité des éléments sont personnalisables. + +\begin{DemoCode}{listing only} +\BandeauScore[clés]{numéro} +\end{DemoCode} + +\begin{DemoCode}{} +%sortie par défaut +\BandeauScore{} +\end{DemoCode} + +\subsection{La commande} + +Les \MontreCode{clés} disponibles, à donner entre \MontreCode{[...]}, sont : + +\begin{itemize} + \item \MontreCode{Hauteur} : hauteur du bandeau (sans la légende) ; \MontreCode{1} par défaut + \item \MontreCode{Ratio} : rapport V/H des cases ; \MontreCode{0.6} par défaut + \item \MontreCode{Symboles} : contenu des cases ; \MontreCode{A,B,C,D,E} par défaut + \item \MontreCode{Legende} : texte de la légende (qui sera en majuscule) ; \MontreCode{score} par défaut ; + \item \MontreCode{Police} : Police globale ; \MontreCode{\textbackslash bfseries\textbackslash sffamily} par défaut + \item \MontreCode{AffLegende} : booléen pour afficher la légende ; \MontreCode{false} par défaut ; + \item \MontreCode{Couleurs} : couleurs des cases ; + + \hfill\MontreCode{couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5} par défaut ; + \item \MontreCode{EchelleSymboles} : échelle(s) H/V des symboles ; \MontreCode{1.25,1.65} par défaut ; + \item \MontreCode{CouleurFond} : couleur du fond (pour la case choisie) ; \MontreCode{white} par défaut. +\end{itemize} + +L'argument obligatoire correspond quant à lui au numéro de la case à mettre en valeur (\MontreCode{vide} par défaut). + +\smallskip + +Si la liste des couleurs ne permet pas de remplir toutes les cases, la couleur \MontreCode{lightgray} est utilisée. + +\begin{DemoCode}{} +\BandeauScore[Legende=Géométrie,Hauteur=2]{4} +\end{DemoCode} + +\begin{DemoCode}{colbacklower=yellow!25} +%le fond de la boîte a été défini sur yellow!25 +\def\lstcouleurs{couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5,purple} +\BandeauScore% + [EchelleSymboles={1.33,2},Hauteur=2,AffLegende=false, + Symboles={1,2,3,4,5,6},Couleurs=\lstcouleurs, + CouleurFond=yellow!25]{1} +\end{DemoCode} + +\pagebreak + \section{Fenêtre type conversation instantanée} \subsection{Principe et fonctionnement} diff --git a/macros/latex/contrib/customenvs/tex/customenvs.sty b/macros/latex/contrib/customenvs/tex/customenvs.sty index e63ea57f84..af81d0b88d 100644 --- a/macros/latex/contrib/customenvs/tex/customenvs.sty +++ b/macros/latex/contrib/customenvs/tex/customenvs.sty @@ -3,9 +3,10 @@ % source pencil...: CC-BY-SA 4.0 https://tex.stackexchange.com/questions/504092/replicating-a-fancy-bordered-text-style-in-latex/504145#504145 \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{customenvs}[2024/06/03 0.1.7 Custom classic environments] +\ProvidesPackage{customenvs}[2024/07/13 0.1.8 Custom classic environments] %====HISTORIQUE +% v 0.1.8 Nutriscore % v 0.1.7 Style perso pour les vignettes % v 0.1.6 DisplaySkip patch + Patchs pas-tableur % v 0.1.5 Boxes for exam title + circled numbers + Vignettes + Small simple boxes creation @@ -1095,6 +1096,93 @@ title={\@ifpackageloaded{babel}{\NoAutoSpacing#2}{#2}\IfBooleanTF{#1}{}{$\cdot$\scalebox{0.6}[0.6]{\faCheckCircle[regular]\!\faCheckCircle[regular]}~}},left=1mm,right=1mm,boxsep=0mm]{#3}% } +%====Nutriscore +\definecolor{couleurNS1}{RGB}{45,126,67} +\definecolor{couleurNS2}{RGB}{151,186,56} +\definecolor{couleurNS3}{RGB}{240,202,13} +\definecolor{couleurNS4}{RGB}{213,123,26} +\definecolor{couleurNS5}{RGB}{197,52,25} +\tikzset{noeudNS/.style={pos=0.5,xscale=\echellexNS*\hauteurNS,yscale=\echelleyNS*\hauteurNS}} + +\defKV[NUTRISCORE]{% + Hauteur=\pgfmathsetmacro{\hauteurNS}{#1},% + Ratio=\pgfmathsetmacro{\ratiolargeurbandeNS}{#1},% + Symboles=\def\lettresNS{#1},% + Legende=\def\legendeNS{#1},% + Police=\def\fonteNS{#1},% + Couleurs=\def\couleursNS{#1},% + EchelleSymboles=\def\echellesymbNS{#1},% + CouleurFond=\def\coulbgNS{#1} +} +\setKVdefault[NUTRISCORE]{% + Hauteur=1,% + Ratio={0.6},% + Symboles={A,B,C,D,E},% + Legende={score},% + Police=\sffamily\bfseries,% + AffLegende=true,% + Couleurs={couleurNS1,couleurNS2,couleurNS3,couleurNS4,couleurNS5},% + EchelleSymboles={1.25,1.65},% + CouleurFond=white +} + +\NewDocumentCommand\BandeauScore{ O{} D<>{} m }{% + \restoreKV[NUTRISCORE]% + \setKV[NUTRISCORE]{#1}% + \IfEq{#3}{}% + {% + \xdef\numcasNS{0}% + }% + {% + \xdef\numcasNS{#3}% + }% + \readlist\letterListNS{\lettresNS}% + \xdef\nbcasesNS{\letterListNSlen}% + \readlist\colorListNS{\couleursNS}% + \xdef\nbcouleursNS{\colorListNSlen}% + \pgfmathsetmacro{\largeurcaseNS}{\hauteurNS*\ratiolargeurbandeNS}% + \pgfmathsetmacro{\largeurbandeNS}{\largeurcaseNS*\nbcasesNS}% + \pgfmathsetmacro{\margeNS}{0.225*\largeurcaseNS/2.4}% + \IfSubStr{\echellesymbNS}{,}% + {% + \StrCut{\echellesymbNS}{,}{\echellexNS}{\echelleyNS}% + }% + {% + \xdef\echellexNS{\echellesymbNS}\xdef\echelleyNS{\echellesymbNS}% + }% + \begin{tikzpicture}[font=\fonteNS,#2] + %---test + \filldraw[white,rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,opacity=0] ({-\margeNS},{-\margeNS}) rectangle++ (\nbcasesNS*\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) ; + %---testfin + \begin{scope} + \clip[rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm] (0,0) rectangle (\largeurbandeNS,\hauteurNS); + \foreach \tmpiii in {1,...,\letterListNSlen}{% + \ifnum\tmpiii=\numcasNS + \else + \ifnum\tmpiii>\nbcouleursNS + \fill[draw=none,lightgray] ({(\tmpiii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\tmpiii]}; + \else + \fill[draw=none,{\colorListNS[\tmpiii]}] ({(\tmpiii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\tmpiii]}; + \fi + \fi + }% + \end{scope} + \xintifboolexpr{\numcasNS >=1 'and' \numcasNS <= \nbcasesNS }% + {% + \begin{scope} + %\clip (-\margeNS,-\margeNS) rectangle++ (\largeurbandeNS+2*\margeNS,\hauteurNS+2*\margeNS); + \draw[draw=\coulbgNS,rounded corners=\fpeval{7.25*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,fill={\colorListNS[#3]}] ({(\numcasNS-1)*\largeurcaseNS-\margeNS},{-\margeNS}) rectangle++ (\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) node[noeudNS,white]{\letterListNS[\numcasNS]}; + \end{scope} + }% + {% + }% + %légende + \ifboolKV[NUTRISCORE]{AffLegende}% + {% + \node[above right=1pt,gray,scale=\fpeval{0.5*\hauteurNS},inner sep=1pt] at ({0.125*\margeNS},1.02*\hauteurNS) {\vphantom{QÉ}\MakeUppercase{\legendeNS}}; + }{}% + \end{tikzpicture}% +} %%----COMMANDES EN @@ -1932,4 +2020,91 @@ \fi +%====BannerScore +\definecolor{colorNS1}{RGB}{45,126,67} +\definecolor{colorNS2}{RGB}{151,186,56} +\definecolor{colorNS3}{RGB}{240,202,13} +\definecolor{colorNS4}{RGB}{213,123,26} +\definecolor{colorNS5}{RGB}{197,52,25} +\tikzset{nodeNS/.style={pos=0.5,xscale=\echellexNS*\hauteurNS,yscale=\echelleyNS*\hauteurNS}} + +\defKV[NUTRISCOREEN]{% + Height=\pgfmathsetmacro{\hauteurNS}{#1},% + Ratio=\pgfmathsetmacro{\ratiolargeurbandeNS}{#1},% + Symbols=\def\lettresNS{#1},% + Legend=\def\legendeNS{#1},% + Font=\def\fonteNS{#1},% + Colors=\def\couleursNS{#1},% + ScaleSymbols=\def\echellesymbNS{#1},% + Colbg=\def\coulbgNS{#1} +} +\setKVdefault[NUTRISCOREEN]{% + Height=1,% + Ratio={0.6},% + Symbols={A,B,C,D,E},% + Legend={score},% + Font=\sffamily\bfseries,% + ShowLegend=true,% + Colors={colorNS1,colorNS2,colorNS3,colorNS4,colorNS5},% + ScaleSymbols={1.25,1.65},% + Colbg=white +} + +\NewDocumentCommand\ScoreBanner{ O{} D<>{} m }{% + \restoreKV[NUTRISCOREEN]% + \setKV[NUTRISCOREEN]{#1}% + \IfEq{#3}{}% + {% + \xdef\numcasNS{0}% + }% + {% + \xdef\numcasNS{#3}% + }% + \readlist\letterListNS{\lettresNS}% + \xdef\nbcasesNS{\letterListNSlen}% + \readlist\colorListNS{\couleursNS}% + \xdef\nbcouleursNS{\colorListNSlen}% + \pgfmathsetmacro{\largeurcaseNS}{\hauteurNS*\ratiolargeurbandeNS}% + \pgfmathsetmacro{\largeurbandeNS}{\largeurcaseNS*\nbcasesNS}% + \pgfmathsetmacro{\margeNS}{0.225*\largeurcaseNS/2.4}% + \IfSubStr{\echellesymbNS}{,}% + {% + \StrCut{\echellesymbNS}{,}{\echellexNS}{\echelleyNS}% + }% + {% + \xdef\echellexNS{\echellesymbNS}\xdef\echelleyNS{\echellesymbNS}% + }% + \begin{tikzpicture}[font=\fonteNS,#2] + %---test + \filldraw[white,rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,opacity=0] ({-\margeNS},{-\margeNS}) rectangle++ (\nbcasesNS*\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) ; + %---testfin + \begin{scope} + \clip[rounded corners=\fpeval{5*\largeurcaseNS*\ratiolargeurbandeNS}mm] (0,0) rectangle (\largeurbandeNS,\hauteurNS); + \foreach \iii in {1,...,\letterListNSlen}{% + \ifnum\iii=\numcasNS + \else + \ifnum\iii>\nbcouleursNS + \fill[draw=none,lightgray] ({(\iii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\iii]}; + \else + \fill[draw=none,{\colorListNS[\iii]}] ({(\iii-1)*\largeurcaseNS},0) rectangle ++(\largeurcaseNS,\hauteurNS) node[noeudNS,white,opacity=0.66]{\letterListNS[\iii]}; + \fi + \fi + }% + \end{scope} + \xintifboolexpr{\numcasNS >=1 'and' \numcasNS <= \nbcasesNS }% + {% + \begin{scope} + %\clip (-\margeNS,-\margeNS) rectangle++ (\largeurbandeNS+2*\margeNS,\hauteurNS+2*\margeNS); + \draw[draw=\coulbgNS,rounded corners=\fpeval{7.25*\largeurcaseNS*\ratiolargeurbandeNS}mm,line width=\fpeval{1.5*\largeurcaseNS*\ratiolargeurbandeNS}mm,fill={\colorListNS[#3]}] ({(\numcasNS-1)*\largeurcaseNS-\margeNS},{-\margeNS}) rectangle++ (\largeurcaseNS+2*\margeNS,\hauteurNS+2*\margeNS) node[noeudNS,white]{\letterListNS[#3]}; + \end{scope} + }% + {}% + %légende + \ifboolKV[NUTRISCOREEN]{ShowLegend}% + {% + \node[above right=1pt,gray,scale=\fpeval{0.5*\hauteurNS},inner sep=1pt] at ({0.125*\margeNS},1.02*\hauteurNS) {\MakeUppercase{\legendeNS}}; + }{}% + \end{tikzpicture}% +} + \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf Binary files differindex 40cb330c40..b4802be53e 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf Binary files differindex 5e6698109f..c3e58a2813 100644 --- a/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf +++ b/macros/latex/contrib/proflycee/doc/ProfLycee-exemples-pyluatex.pdf diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty index c13d91729a..e37ce44eeb 100644 --- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty +++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty @@ -3,7 +3,8 @@ % or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{ProfLycee}[2024/05/31 3.04c Aide pour l'utilisation de LaTeX en lycee] +\ProvidesPackage{ProfLycee}[2024/07/13 3.04d Aide pour l'utilisation de LaTeX en lycee] +% 3.04d PitonInputFile et styles % 3.04c Max et min pour des fonctions % 3.04b Travail sur la loi binomiale + Ajout de clés pour les environnements graphiques % 3.04a Améliorations de la partie graphiques tikz (intégrales, axes) + Factorielle diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex index 418c5aa8cc..0cb6600617 100644 --- a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex +++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex @@ -2,6 +2,7 @@ % Copyright 2023-2024 Cédric Pierquet % Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt +%3.04d PitonInputFile et styles, pour compatibilité pfm %3.03c Thonny via piton + modification clé gobble ? %3.01f PseudoCode via piton (?) %3.01e Correction du comportement de la console repl piton/pyluatex @@ -220,6 +221,57 @@ \endtcolorbox% } +%inputfile +\NewDocumentCommand\CodePitonFichier{ O{} m D<>{} }{% + {\tcbset{reset} + \useKVdefault[envpiton]% + \setKV[envpiton]{#1}% on paramètres les nouvelles clés et on les simplifie + %------les styles piton + \SetPitonStyle{ Number = \color{\CODPITcolnb} } + \ifboolKV[envpiton]{Lignes}%si lignes=true + {\PitonOptions{left-margin=0.75em,line-numbers,line-numbers={skip-empty-lines=false,label-empty-lines=true,#3}}}%left-margin=auto, + {}% + \PitonOptions{break-lines,indent-broken-lines,continuation-symbol={\;}}%,numbers-sep=0.65em}%language=Python} + %------les styles tcbox + \IfEq{\CODPITstyle}{Moderne}%style Moderne (défaut) + {% + \tcbset{cadre/.style={}} + \tcbset{titre/.style={}} + \tcbset{stylebase/.style={stylepiton,colframe=CouleurVertForet,colback=CouleurVertForet!5,width=\CODPITlargeur,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign,leftupper=0.75em}} + \ifboolKV[envpiton]{Filigrane}%si filigrane + {\tcbset{filigrane/.style={watermark text={\faPython},watermark opacity=0.175,watermark zoom=0.50}}}% + {\tcbset{filigrane/.style={}}}% + } + {}% + \IfEq{\CODPITstyle}{Classique}%style Classique + {% + \ifboolKV[envpiton]{Lignes}%si lignes=true + {\tcbset{stylebase/.style={thonnystylelineos,leftupper=0.75em,width=\CODPITlargeur,colframe=darkgray!50!black,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}}}% + {\tcbset{stylebase/.style={thonnystyle,leftupper=0.4em,width=\CODPITlargeur,colframe=darkgray!50!black,fontupper=\CODPITfonte,fontlower=\CODPITfonte,\CODPITalign}}}% + \ifboolKV[envpiton]{Filigrane}%si filigrane + {\tcbset{filigrane/.style={watermark text={\faPython},watermark opacity=0.25,watermark zoom=0.50}}}% + {\tcbset{filigrane/.style={}}}% + \ifboolKV[envpiton]{BarreTitre}% + {% + \ifboolKV[envpiton]{Cadre} + {\tcbset{cadre/.style={}}}% + {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}% + \tcbset{titre/.style={lefttitle=0.4em,title={\CODPITtitre},fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!black}} + }% + {% + \tcbset{titre/.style={notitle}} + \ifboolKV[envpiton]{Cadre} + {\tcbset{cadre/.style={}}} + {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}} + } + } + {}% + %on crée la boîte + \tcolorbox[stylebase,filigrane,cadre,titre] + \PitonInputFile{#2} + \endtcolorbox}% +} + %piton >= 2.4 \NewPitonEnvironment{PseudoCodePiton}{ O{} m D<>{} }% {% @@ -317,6 +369,86 @@ \endtcolorbox% } +%--inputfile +\NewDocumentCommand\PseudoCodePitonFichier{ O{} m D<>{} }{% + {\tcbset{reset} + \useKVdefault[envpcpiton]% + \setKV[envpcpiton]{#1}% on paramètres les nouvelles clés et on les simplifie + %------les styles piton + \ifboolKV[envpcpiton]{Lignes}%si lignes=true + {\PitonOptions{left-margin=0.75em,all-line-numbers}}%left-margin=auto, + {}% + \PitonOptions{break-lines,indent-broken-lines,language=minimal,continuation-symbol={\;}}%,numbers-sep=0.65em}% + \SetPitonStyle{ Number = } + \ifboolKV[envpcpiton]{Couleurs}% + {% + \SetPitonIdentifier[minimal]{Algorithme,Fonction,Début,Paramètre,Paramètres,Faire,Fin,Si,Pour,Tant,Que,que,alors,Alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue,Variable,Variables,Procédure}{\color{MotsClesPseudoCodeA}} + \SetPitonIdentifier[minimal]{Afficher,Renvoyer,Saisir}{\color{MotsClesPseudoCodeB}} + % \PitonOptions{ + % identifiers = + % { + % names = {Algorithme,Fonction,Début,Paramètre,Paramètres,allant,Faire,Fin,Si,Pour,Tant,Que,que,alors,Alors,Sinon,SinonSi,FinSi,FinPour,FinTantQue,TantQue,Variable,Variables,Procédure}, + % style = \color{MotsClesPseudoCodeA} + % } , + % identifiers = + % { + % names = {Afficher,Retourner,Saisir}, + % style = \color{MotsClesPseudoCodeB} + % } + % }% + \SetPitonStyle + { + String = \color{MotsClesPseudoCodeChaine}, + Comment = \itshape\color{gray}, + } + }% + {% + \SetPitonStyle + { + String = , + Comment = \itshape + } + }% + %------les styles tcbox + \IfEq{\CODPITPCstyle}{Moderne}%style Moderne (défaut) + {% + \tcbset{cadre/.style={}} + \tcbset{titre/.style={}} + \tcbset{stylebase/.style={stylepcpiton,colframe=CouleurVertForet,colback=CouleurVertForet!5,width=\CODPITPClargeur,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign,leftupper=0.75em}} + \ifboolKV[envpcpiton]{Filigrane}%si filigrane + {\tcbset{filigrane/.style={watermark text={\faCode},watermark opacity=0.175,watermark zoom=0.50}}}% + {\tcbset{filigrane/.style={}}}% + } + {}% + \IfEq{\CODPITPCstyle}{Classique}%style Classique + {% + \ifboolKV[envpcpiton]{Lignes}%si lignes=true + {\tcbset{stylebase/.style={thonnypcstylelineos,leftupper=0.75em,width=\CODPITPClargeur,colframe=darkgray!50!black,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign}}}% + {\tcbset{stylebase/.style={thonnypcstyle,leftupper=0.4em,width=\CODPITPClargeur,colframe=darkgray!50!black,fontupper=\CODPITPCfonte,fontlower=\CODPITPCfonte,\CODPITPCalign}}}% + \ifboolKV[envpcpiton]{Filigrane}%si filigrane + {\tcbset{filigrane/.style={watermark text={\faCode},watermark opacity=0.25,watermark zoom=0.50}}}% + {\tcbset{filigrane/.style={}}}% + \ifboolKV[envpcpiton]{BarreTitre}% + {% + \ifboolKV[envpcpiton]{Cadre} + {\tcbset{cadre/.style={}}}% + {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}}% + \tcbset{titre/.style={lefttitle=0.4em,title={\CODPITPCtitre},fonttitle=\bfseries\footnotesize\sffamily,colbacktitle=darkgray!50!black}} + }% + {% + \tcbset{titre/.style={notitle}} + \ifboolKV[envpcpiton]{Cadre} + {\tcbset{cadre/.style={}}} + {\tcbset{cadre/.style={boxrule=0pt,frame hidden}}} + } + } + {}% + %on crée la boîte + \tcolorbox[stylebase,filigrane,cadre,titre] + \PitonInputFile{#2}% + \endtcolorbox}% +} + %======CONSOLE PYLUATEX (package à charger manuellement !!) \tcbset{consolepylua/.style={%base de la boîte enhanced,colback=white,colframe=CouleurVertForet,sharp corners,boxrule=1pt,% @@ -428,6 +560,18 @@ \endtcolorbox% }% +\NewDocumentCommand\PitonThonnyEditorFichier{ D<>{} O{\linewidth} m }{% + {\restoreKV[pitonthonny]% + \setKV[pitonthonny]{#1}% + \settowidth{\LargeurNumbersThonny}{\footnotesize\texttt{00}}% + \PitonOptions{left-margin=\LargeurNumbersThonny+1mm,line-numbers,line-numbers={skip-empty-lines=false,label-empty-lines=true},break-lines,indent-broken-lines,continuation-symbol={}}% + \tcbset{tcbthonnypiton/.style={title=\vphantom{pf}\thonnypitonfilename\:\textcolor{gray}{×}},before skip=0.33\baselineskip,after skip=0.33\baselineskip}% + \tcolorbox[sharp corners=all,enhanced,size=small,width=#2,colframe=gray,colback=lightgray!5,tcbthonnypiton,fonttitle=\scriptsize\sffamily,coltitle=black, + attach boxed title to top left={yshift*=-0.4pt},fontupper=\footnotesize,bottom=-0.25mm,boxed title style={size=tight,colback=lightgray!15,sharp corners=all,boxrule=0.4pt,boxsep=2pt},boxrule=0.4pt,overlay={\begin{tcbclipinterior}\fill[draw=none,gray!25] ([shift={(0.4pt,0.4pt)}]frame.south west) rectangle ([shift={(\LargeurNumbersThonny+1mm+0.8pt,-0.4pt)}]frame.north west) ;\end{tcbclipinterior}}]% + \PitonInputFile{#3} + \endtcolorbox}% +}% + \NewDocumentEnvironment{PitonThonnyConsole}{ D<>{} O{} m }% { \restoreKV[pitonthonny]% diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex index cd01f4393b..89fe894503 100644 --- a/macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex +++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-stats.tex @@ -75,6 +75,69 @@ \expandafter\def\csname\RegLinCoeffrd\endcsname{\fpeval{\csname\RegLinCoeffr\endcsname*\csname\RegLinCoeffr\endcsname}} } +\defKV[coeffregquad]{% + NomCoeffa=\def\RegQuadCoeffa{#1},% + NomCoeffb=\def\RegQuadCoeffb{#1},% + NomCoeffc=\def\RegQuadCoeffc{#1},% + NomXmin=\def\RegQuadCoeffXmin{#1},% + NomXmax=\def\RegQuadCoeffXmax{#1} +} + +\setKVdefault[coeffregquad]{% + NomCoeffa=COEFFa,% + NomCoeffb=COEFFb,% + NomCoeffc=COEFFc,% + NomXmin=LXmin,% + NomXmax=LXmax +} + +\newcommand\CalculsRegQuad[3][]{% + \useKVdefault[coeffregquad]% + \setKV[coeffregquad]{#1}% on paramètres les nouvelles clés et on les simplifie + %xmin et xmax + \expandafter\def\csname\RegQuadCoeffXmin\endcsname{\xintfloateval{min(#2)}}% + \expandafter\def\csname\RegQuadCoeffXmax\endcsname{\xintfloateval{max(#2)}}% + %listes des données + \def\xliste{#2}% + \def\yliste{#3}% + \readlist*\LX{\xliste}% + \readlist*\LY{\yliste}% + %taille des listes + \def\LNB{\inteval{\LXlen}} + %somme importantes + \xdef\LXSomme{0}% + \xdef\LXCSomme{0}% + \xdef\LYSomme{0}% + \xdef\LXXSomme{0}% + \xdef\LXYSomme{0}% + \xdef\LXXCSomme{0}% + \xdef\LXCXCSomme{0}% + \xdef\LXCYSomme{0}% + %calculs + \foreach \i in {1,2,...,\LNB}{% + \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}% + \xdef\LXCSomme{\xintfloateval{\LXCSomme+(\LX[\i])^2}}% + }% + \foreach \i in {1,2,...,\LNB}{% + \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}% + }% + \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}% + \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}% + \xdef\LXCmoy{\xintfloateval{\LXCSomme/\LNB}}% + %calculs suites + \foreach \i in {1,2,...,\LNB}{% + \xdef\LXXSomme{\xintfloateval{\LXXSomme+(\LX[\i]-\LXmoy)^2}}% + \xdef\LXYSomme{\xintfloateval{\LXYSomme+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}% + \xdef\LXXCSomme{\xintfloateval{\LXXCSomme+(\LX[\i]-\LXmoy)*((\LX[\i])*(\LX[\i])-\LXCmoy)}}% + \xdef\LXCXCSomme{\xintfloateval{\LXCXCSomme+((\LX[\i])^2-\LXCmoy)^2}}% + \xdef\LXCYSomme{\xintfloateval{\LXCYSomme+((\LX[\i])^2-\LXCmoy)*(\LY[\i]-\LYmoy)}}% + }% + %COEFFS OK + \expandafter\def\csname\RegQuadCoeffb\endcsname{\xintfloateval{(\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}% + \expandafter\def\csname\RegQuadCoeffa\endcsname{\xintfloateval{(\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}% + \expandafter\def\csname\RegQuadCoeffc\endcsname{\xintfloateval{\LYmoy-\csname\RegQuadCoeffb\endcsname*\LXmoy-\csname\RegQuadCoeffa\endcsname*\LXCmoy}}% +} + %pour un nuage en TiKz \defKV[nuagereglin]{% Couleur=\def\RegLinNuageCouleur{#1},% |