From b24dd6990f2db63d1fa0e4f0ba4ab31201de1d7c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 5 Mar 2023 20:48:52 +0000 Subject: profcollege (5mar23) git-svn-id: svn://tug.org/texlive/trunk@66364 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/profcollege/ProfCollege.sty | 1257 ++++++++++++++++++-- 1 file changed, 1157 insertions(+), 100 deletions(-) (limited to 'Master/texmf-dist/tex/latex/profcollege') diff --git a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty b/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty index 15a4cd6b732..e6f559aa713 100644 --- a/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty +++ b/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty @@ -2,16 +2,27 @@ % 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/01/23}% +\def\filedate{2023/03/06}% \let\PfCfiledate\filedate% -\def\fileversion{0.99-z-e}% +\def\fileversion{0.99-z-f}% \let\PfCfileversion\fileversion% \ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college] \RequirePackage{verbatim} \RequirePackage{mathtools} + +\newif\if@shellescape \@shellescapetrue +\newif\if@amssymb \@amssymbtrue +\DeclareOption{nonshellescape}{\@shellescapefalse} +\DeclareOption{nonamssymb}{\@amssymbfalse} +\ProcessOptions\relax + +%\ProcessOptions\relax + +\if@amssymb \RequirePackage{amssymb} +\fi % mathématiques \RequirePackage{siunitx} @@ -44,10 +55,6 @@ \RequirePackage{modulus}%Pour certains calculs arithmétiques. \RequirePackage{xinttools}%Pour la création dynamique d'un tableau -\newif\if@shellescape \@shellescapetrue -\DeclareOption{nonshellescape}{\@shellescapefalse} -\ProcessOptions\relax - \RequirePackage{iftex} \ifluatex @@ -60,7 +67,8 @@ \RequirePackage[shellescape,latex]{gmp}%inclusion de figures metapost "à la volée"% \gmpoptions{everymp={prologues:=3; input PfCLaTeX; input PfCSvgnames; input PfCConstantes; input PfCGeometrie; input PfCAfficheur;}} \usempxclass{article} -\usempxpackage[locale=FR,mode = match, propagate-math-font = true,reset-math-version = false, reset-text-family = false,reset-text-series = false, reset-text-shape = false,text-family-to-math = true, text-series-to-math = true, output-decimal-marker={,},group-minimum-digits=4]{siunitx} +\usempxpackage{ProfCollege} +%\usempxpackage[locale=FR,mode = match, propagate-math-font = true,reset-math-version = false, reset-text-family = false,reset-text-series = false, reset-text-shape = false,text-family-to-math = true, text-series-to-math = true, output-decimal-marker={,},group-minimum-digits=4]{siunitx} \usempxpackage[utf8]{inputenc} \usempxpackage[T1]{fontenc} \usempxpackage{fourier} @@ -70,7 +78,8 @@ \RequirePackage[latex]{gmp}%inclusion de figures metapost "à la volée"% \gmpoptions{everymp={prologues:=3; input PfCLaTeX; input PfCSvgnames; input PfCConstantes; input PfCGeometrie; input PfCAfficheur;}} \usempxclass{article} -\usempxpackage[locale=FR,mode = match, propagate-math-font = true,reset-math-version = false, reset-text-family = false,reset-text-series = false, reset-text-shape = false,text-family-to-math = true, text-series-to-math = true, output-decimal-marker={,},group-minimum-digits=4]{siunitx} +\usempxpackage{ProfCollege} +%\usempxpackage[locale=FR,mode = match, propagate-math-font = true,reset-math-version = false, reset-text-family = false,reset-text-series = false, reset-text-shape = false,text-family-to-math = true, text-series-to-math = true, output-decimal-marker={,},group-minimum-digits=4]{siunitx} \usempxpackage[utf8]{inputenc} \usempxpackage[T1]{fontenc} \usempxpackage{fourier} @@ -93,6 +102,7 @@ % https://tex.stackexchange.com/questions/349259/curved-arrow-describing-a-step-in-a-equation-derivation %https://tex.stackexchange.com/questions/58656/best-way-to-draw-a-chevron-diagram-using-tikz \usetikzlibrary{calc,shapes,arrows,tikzmark,chains,positioning,shapes.symbols,babel,fit} +\usetikzlibrary{backgrounds} \RequirePackage{suffix}%pour la commande étoilée @@ -347,6 +357,742 @@ \day=\the\PfCrappeljour\relax% } +%%% +% Kakurasu +%%% +\setKVdefault[Kakurasu]{Solution=false,Longueur=6,Largeur=6,Echelle=8mm,Graines=false,Trace=false} +\defKV[Kakurasu]{Graine=\setKV[Kakurasu]{Graines}} +\defKV[Kakurasu]{Traces=\setKV[Kakurasu]{Trace}} + +\NewDocumentCommand\Kakurasu{o}{% + \useKVdefault[Kakurasu]% + \setKVdefault[Kakurasu]{#1}% + \BuildKakurasu% +} + +\NewDocumentCommand\BuildKakurasu{}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + boolean Graines,Solution,Trace; + Graines=\useKV[Kakurasu]{Graines}; + Solution=\useKV[Kakurasu]{Solution}; + Trace=\useKV[Kakurasu]{Trace}; + + if Graines: + randomseed:=\useKV[Kakurasu]{Graine}; + fi; + + numeric Longueur,Largeur; + Longueur=\useKV[Kakurasu]{Longueur}; + Largeur=\useKV[Kakurasu]{Largeur}; + + u:=\useKV[Kakurasu]{Echelle}; + + pair A[][];%centre des carrés. + boolean Allume[][]; + numeric NombreLigne[][],NombreColonne[][]; + + for k=-1 upto Largeur+1: + for l=-1 upto Longueur+1: + Allume[k][l]=false; + endfor; + endfor; + + for k=0 upto Largeur-1: + for l=0 upto Longueur-1: + A[k][l]=u*(l,-k); + trace (unitsquare scaled u) shifted A[k][l]; + endfor; + endfor; + + for k=0 upto Largeur-1: + for l=0 upto Longueur-1: + if Allume[k][l]: + else: + Allume[k][l]:=true; + m:=uniformdeviate(1); + if m<0.5: + % on ne met pas de case noire + else: + % on met une case noire + NombreLigne[k][l]=l+1; + NombreColonne[k][l]=k+1; + if Solution: + fill (unitsquare scaled 0.9u) shifted (A[k][l]+0.05*u*(1,1)); + fi; + fi; + fi; + endfor; + endfor; + + % on compte le nombre de chiffres dans les lignes et on les ajoute + for k=0 upto Largeur-1: + Somme:=0; + for l=0 upto Longueur-1: + if unknown NombreLigne[k][l]: + else: + Somme:=Somme+NombreLigne[k][l]; + fi; + endfor; + label(TEX(decimal(Somme)),u*(-0.5,-k+0.5)); + endfor; + + % on compte le nombre de chiffres dans les colonnes et on les ajoute + for k=0 upto Longueur-1: + Somme:=0; + for l=0 upto Largeur-1: + if unknown NombreColonne[l][k]: + else: + Somme:=Somme+NombreColonne[l][k]; + fi; + endfor; + label(TEX(decimal(Somme)),u*(k+0.5,1.5)); + endfor; + + % On affiche les valeurs des cases noires. + drawoptions(withcolor 0.5white); + for k=0 upto Longueur-1: + label(TEX("\footnotesize"&decimal(k+1)),u*(k+0.5,-Largeur+0.5)); + endfor; + for k=0 upto Largeur-1: + label(TEX("\footnotesize"&decimal(k+1)),u*(Longueur+0.5,-k+0.5)); + endfor; + drawoptions(); + if Trace: + \useKV[Kakurasu]{Traces}; + fi; + \end{mplibcode} + \fi +}% + +%%% +% Midpoint +%%% +\setKVdefault[MidPoint]{Solution=false,Graines=false,Hard=false} +\defKV[MidPoint]{Graine=\setKV[MidPoint]{Graines}} + +\NewDocumentCommand\MidPoint{o}{% + \useKVdefault[MidPoint]% + \setKV[MidPoint]{#1}% + \BuildMidPoint +} + +\NewDocumentCommand\BuildMidPoint{}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + numeric Longueur,Largeur; + Longueur=8; + Largeur=4; + boolean Horizontal,Vertical,RetiensSens; + Horizontal=false; + Vertical=false; + + boolean Solution,Hard,Graines; + Solution:=\useKV[MidPoint]{Solution}; + Hard:=\useKV[MidPoint]{Hard}; + Graines:=\useKV[MidPoint]{Graines}; + if Graines: + randomseed:=\useKV[MidPoint]{Graine} + fi; + + u:=8mm; + + pair A[][];%centre des carrés. + + vardef CherchePoint(expr basek,basel)= + % Si le déplacement précédent est horizontal, il faut passer en vertical + % Si le déplacement précédent est vertical, il faut passer en horizontal + p:=p+1; + if basel=ColonneArrivee: + RP[p]:=Arrivee; + else: + if Vertical: + %deplacement horizontal + ecart:=ColonneArrivee-basel; + if ecart=1: + Basel:=ColonneArrivee; + RP[p]:=A[basek][ColonneArrivee]; + else: + Basel:=ceiling(basel+uniformdeviate(ecart)); + RP[p]:=A[basek][Basel]; + fi; + Basek:=basek; + Horizontal:=true; + Vertical:=false; + else: + %on vérifie qu'on peut se déplacer dans les deux sens. + % on choisit vertical positif ou vertical négatif + if basek=1: + choix:=0.75; + elseif basek=Largeur: + choix:=0.25; + else: + choix:=uniformdeviate(1); + fi; + if choix<0.5: + ecart:=basek-1; + if ecart=1: + Basek:=1; + RP[p]:=A[1][basel]; + else: + Basek:=ceiling(uniformdeviate(ecart)); + RP[p]:=A[Basek][basel]; + fi; + Basel:=basel; + else: + ecart:=Largeur-basek; + if ecart=1: + Basek:=Largeur; + RP[p]:=A[Largeur][basel]; + else: + Basek:=basek+ceiling(uniformdeviate(ecart)); + RP[p]:=A[Basek][basel]; + fi; + Basel:=basel; + fi; + Horizontal:=false; + Vertical:=true; + fi; + fi; +enddef; + +vardef MidPoint(expr Aa,Bb)= + save $; + picture $; + $=image( + if Solution: + trace Aa--Bb withpen pencircle scaled 1.5; + fi; + if Hard: + NbMid:=NbMid+1; + if NbMid mod 2=0: + remplis cercles(1/2[Aa,Bb],1mm); + fi; + else: + remplis cercles(1/2[Aa,Bb],1mm); + fi; + ); + $ +enddef; + + % tracé de la grille + for k=1 upto 2*Largeur: + for l=-3 upto Largeur+Longueur-4: + trace (unitsquare scaled u) shifted (u*(l,-k)-center (unitsquare scaled u)) withcolor 0.5*white; + endfor; + endfor; + + for k=1 upto Largeur: + for l=1 upto Longueur: + A[k][l]=u*(l,-k); + %trace (unitsquare scaled u) shifted (A[k][l]-center (unitsquare scaled u)) withcolor 0.5*white; + endfor; + endfor; + +%On choisit le premier déplacement + choix:=uniformdeviate(1); + if choix<0.5: + Horizontal:=true; + else: + Vertical:=true; + fi; + + p:=0; + NbMid=ceiling(uniformdeviate(2));%Pour le niveau Hard + + %1er rectangle +LigneDepart:=2;%2; +ColonneDepart:=1; +LigneArrivee:=4;%4; +ColonneArrivee:=8; +pair Depart,Arrivee; +Depart=A[LigneDepart][ColonneDepart]; +Arrivee=A[LigneArrivee][ColonneArrivee]; + +pair RP[];%RetiensPoints +RP[0]=Depart; + +Basek:=LigneDepart; +Basel:=ColonneDepart; +forever: + CherchePoint(Basek,Basel); + exitif RP[p]=Arrivee; +endfor; + +if ypart(RP[p])=ypart(RP[p-1]): + RetiensSens:=true; +else: + RetiensSens:=false; + p:=p-1; +fi; + +%2eme rectangle +for k=1 upto Largeur: + for l=1 upto Longueur: + A[k][l]:=u*(Longueur+l,-k); + endfor; +endfor; + +LigneDepart:=4; +ColonneDepart:=1; +LigneArrivee:=2; +ColonneArrivee:=8; +Depart:=A[LigneDepart][ColonneDepart]; +Arrivee:=A[LigneArrivee][ColonneArrivee]; + +Basek:=LigneDepart; +Basel:=ColonneDepart; +Retiens:=p; +RP[p+1]:=Depart; + +forever: + CherchePoint(Basek,Basel); + exitif RP[p]=Arrivee; +endfor; + +if ypart(RP[p])=ypart(RP[p-1]): + RetiensSens:=true; + p:=p-1; +else: + RetiensSens:=false; +fi; + +for h=(Retiens+1) upto p: + RP[h]:=symetrie(RP[h],u*(Longueur+0.5,-Largeur-0.5)); +endfor; +%3eme Rectangle +for k=1 upto Largeur: + for l=1 upto Longueur: + A[k][l]:=u*(2*Longueur+l,-k); + endfor; +endfor; + +LigneDepart:=4; +ColonneDepart:=2; +LigneArrivee:=1; +ColonneArrivee:=4; +Depart:=A[LigneDepart][ColonneDepart]; +Arrivee:=A[LigneArrivee][ColonneArrivee]; + + +Basek:=LigneDepart; +Basel:=ColonneDepart; +Retiens:=p; +RP[p+1]:=Depart; +forever: + CherchePoint(Basek,Basel); + exitif RP[p]=Arrivee; +endfor; +for h=(Retiens+1) upto p: + RP[h]:=rotation(RP[h],u*(2*Longueur+0.5,-Largeur-0.5),90) shifted(u*(-2*Longueur,-Largeur)); +endfor; +%4eme rectangle. On termine la boucle ? +for k=1 upto Largeur: + for l=1 upto Longueur: + A[k][l]:=u*(3*Longueur+l,-k); + endfor; +endfor; + +LigneDepart:=4; +ColonneDepart:=1; +LigneArrivee:=2; +ColonneArrivee:=4; +Depart:=A[LigneDepart][ColonneDepart]; +Arrivee:=A[LigneArrivee][ColonneArrivee]; + +Basek:=LigneDepart; +Basel:=ColonneDepart; +Retiens:=p; +RP[p+1]:=Depart; +forever: + CherchePoint(Basek,Basel); + exitif RP[p]=Arrivee; +endfor; + +if ypart(RP[p])=ypart(RP[p-1]): + p:=p-1; +fi; + +if ypart(RP[0])=ypart(RP[1]): + RetiensSens:=true; +else: + RetiensSens:=false; +fi; + +for h=(Retiens+1) upto p: + RP[h]:=RP[h] shifted(u*(-3.5*Longueur,0)); +endfor; + +if RetiensSens: + RP[p+1]:=RP[1]; + go:=1; +else: + RP[p+1]:=RP[0]; + go:=0; +fi; + +for h=go upto p: + draw MidPoint(RP[h],RP[h+1]); +endfor; +\end{mplibcode} +\fi +} + +%%% +% Grades +%%% +\setKVdefault[Grades]{Solution=false,Longueur=9,Largeur=9,Echelle=8mm,Graines=false} +\defKV[Grades]{Graine=\setKV[Grades]{Graines}} + +\NewDocumentCommand\Grades{o}{% + \useKVdefault[Grades]% + \setKVdefault[Grades]{#1}% + \BuildGrades% +} + +\NewDocumentCommand\BuildGrades{}{% + \ifluatex + \mplibforcehmode + \begin{mplibcode} + boolean Graines,Solution; + Graines=\useKV[Grades]{Graines}; + Solution=\useKV[Grades]{Solution}; + + if Graines: + randomseed:=\useKV[Grades]{Graine}; + fi; + + numeric Longueur,Largeur; + Longueur=\useKV[Grades]{Longueur}; + Largeur=\useKV[Grades]{Largeur}; + + u:=\useKV[Grades]{Echelle}; + + p:=0; + pair A[];%centre des carrés. + boolean Allume[][]; + numeric Nombre[][]; + + for k=-1 upto Largeur+1: + for l=-1 upto Longueur+1: + Allume[k][l]=false; + endfor; + endfor; + + for k=0 upto Longueur-1: + for l=0 upto Largeur-1: + p:=p+1; + A[p]=u*(k,-l); + trace (unitsquare scaled u) shifted A[p]; + endfor; + endfor; + + for k=0 upto Largeur-1: + for l=0 upto Longueur-1: + if Allume[k][l]: + else: + Allume[k][l]:=true; + m:=uniformdeviate(1); + if m<0.5: + % on ne met pas de nombre + else: + % on met un nombre + Nombre[k][l]=floor(1+uniformdeviate(9)); + Allume[k][l+1]:=true; + Allume[k+1][l-1]:=true; + Allume[k+1][l]:=true; + Allume[k+1][l+1]:=true; + if Solution: + label(TEX(decimal(Nombre[k][l])),u*(l+0.5,-k+0.5)); + fi; + fi; + fi; + endfor; + endfor; + + % on compte le nombre de chiffres dans les lignes et on les ajoute + for k=0 upto Largeur-1: + p:=0; + Somme:=0; + for l=0 upto Longueur-1: + if unknown Nombre[k][l]: + else: + p:=p+1; + Somme:=Somme+Nombre[k][l]; + fi; + endfor; + label(TEX(decimal(p)),u*(-0.5,-k+0.5)); + label(TEX(decimal(Somme)),u*(Longueur+0.5,-k+0.5)); + endfor; + + % on compte le nombre de chiffres dans les colonnes et on les ajoute + for k=0 upto Longueur-1: + p:=0; + Somme:=0; + for l=0 upto Largeur-1: + if unknown Nombre[l][k]: + else: + p:=p+1; + Somme:=Somme+Nombre[l][k]; + fi; + endfor; + label(TEX(decimal(p)),u*(k+0.5,1.5)); + label(TEX(decimal(Somme)),u*(k+0.5,-Largeur+0.5)); + endfor; + \end{mplibcode} + \fi +}% + +%%% +% Squaro +%%% +\setKVdefault[Squaro]{Solution=false,Longueur=8,Largeur=8,Echelle=8mm,Nom=Jeu1,Graines=false} +\defKV[Squaro]{Graine=\setKV[Squaro]{Graines}}% + +\NewDocumentCommand\SquarO{o}{% + \useKVdefault[Squaro]% + \setKVdefault[Squaro]{#1}% + \ifboolKV[Squaro]{Solution}{\BuildSquaroSolution}{\BuildSquaro}% +} + +\NewDocumentCommand\BuildSquaro{}{% + \ifluatex + \mplibforcehmode + \xdef\PfCSquaroNom{\useKV[Squaro]{Nom}}% + \begin{mplibcode}[\PfCSquaroNom] + numeric Longueur,Largeur; + Longueur=\useKV[Squaro]{Longueur}; + Largeur=\useKV[Squaro]{Largeur}; + boolean Solution,Graines; + Solution=\useKV[Squaro]{Solution}; + Graines:=\useKV[Squaro]{Graines}; + if Graines: + randomseed:=\useKV[Squaro]{Graine}; + fi; + + u:=\useKV[Squaro]{Echelle}; + + p:=0; + pair A[];%centre des carrés. + boolean Allume[][]; + + for k=0 upto Longueur-1: + for l=0 upto Largeur-1: + p:=p+1; + A[p]=u*(k,-l); + trace (unitsquare scaled u) shifted A[p]; + endfor; + endfor; + + for k=0 upto Largeur: + for l=0 upto Longueur: + m:=uniformdeviate(1); + if m<0.5: + Allume[k][l]=true; + fill cercles(u*(l,-k+1),1mm) if Solution=false:withcolor white fi; + else: + Allume[k][l]=false; + fill cercles(u*(l,-k+1),1mm) withcolor white; + fi; + trace cercles(u*(l,-k+1),1mm); + endfor; + endfor; + + for k=0 upto Largeur-1: + for l=0 upto Longueur-1: + Retiens:=0; + if Allume[k][l]:Retiens:=Retiens+1 fi; + if Allume[k][l+1]:Retiens:=Retiens+1 fi; + if Allume[k+1][l]:Retiens:=Retiens+1 fi; + if Allume[k+1][l+1]:Retiens:=Retiens+1 fi; + label(TEX(decimal(Retiens)),u*(l+0.5,-k+0.5)); + endfor; + endfor; + \end{mplibcode} + \fi +} + +\NewDocumentCommand\BuildSquaroSolution{}{% + \ifluatex + \mplibforcehmode + \xdef\PfCSquaroNom{\useKV[Squaro]{Nom}}% + \begin{mplibcode}[\PfCSquaroNom] + u:=\useKV[Squaro]{Echelle}; + p:=0; + for k=0 upto Longueur-1: + for l=0 upto Largeur-1: + p:=p+1; + trace (unitsquare scaled u) shifted A[p]; + endfor; + endfor; + + for k=0 upto Largeur: + for l=0 upto Longueur: + if Allume[k][l]=true: + fill cercles(u*(l,-k+1),1mm); + else: + fill cercles(u*(l,-k+1),1mm) withcolor white; + fi; + trace cercles(u*(l,-k+1),1mm); + endfor; + endfor; + + for k=0 upto Largeur-1: + for l=0 upto Longueur-1: + Retiens:=0; + if Allume[k][l]:Retiens:=Retiens+1 fi; + if Allume[k][l+1]:Retiens:=Retiens+1 fi; + if Allume[k+1][l]:Retiens:=Retiens+1 fi; + if Allume[k+1][l+1]:Retiens:=Retiens+1 fi; + label(TEX(decimal(Retiens)),u*(l+0.5,-k+0.5)); + endfor; + endfor; + \end{mplibcode} + \fi +} + +%%% +% Garam +%%% +\setKVdefault[Garam]{Taille=7,Largeur=15pt,Solution=false,CouleurSolution=Black} +\newlength\PfCGaramHeight + +\NewDocumentCommand\Garam{o m}{% + \useKVdefault[Garam] + \setKV[Garam]{#1}% + \setlength{\PfCGaramHeight}{\useKV[Garam]{Largeur}+\tabcolsep}% + \reademptyitems% + \setsepchar[*]{§*,*/}% + \readlist*\PfCListeGaram{#2}% + \colorlet{PfCGaramCoulSol}{\useKV[Garam]{CouleurSolution}}% + \begin{NiceTabular}{*{\useKV[Garam]{Taille}}{m{\useKV[Garam]{Largeur}}}} + \CodeBefore + \xintFor* ##1 in{\xintSeq{2}{\fpeval{\useKV[Garam]{Taille}}}}\do{% + \tikz{\draw[dashed,LightGray] (1-|##1)--(last-|##1);}% + }% + \xintFor* ##1 in{\xintSeq{2}{\fpeval{\PfCListeGaramlen-1}}}\do{% + \tikz{\draw[dashed,LightGray] (##1-|1)--(##1-|last);}% + }% + \tikz{\draw (1-|1) rectangle (last-|last);}% + \Body + \xintFor* ##1 in{\xintSeq{1}{\PfCListeGaramlen}}\do{% + \rule{0pt}{\PfCGaramHeight}\xintFor* ##2 in {\xintSeq{1}{\useKV[Garam]{Taille}}}\do{% + \xintifForFirst{}{&}\StrChar{\PfCListeGaram[##1,##2,1]}{1}[\PfCCaracGaram]% + \IfStrEq{\PfCCaracGaram}{*}{\Block[draw,fill=black]{1-1}{}}{% + \IfStrEq{\PfCCaracGaram}{!}{\Block{}{\ifboolKV[Garam]{Solution}{\StrGobbleLeft{\PfCListeGaram[##1,##2,1]}{1}}{}}}{\Block{}{\color{PfCGaramCoulSol}\PfCListeGaram[##1,##2,1]}}% + }% + }\\ + }% + \CodeAfter + % On place les symboles + \xintFor* ##1 in{\xintSeq{1}{\PfCListeGaramlen}}\do{% + \xintFor* ##2 in {\xintSeq{1}{\useKV[Garam]{Taille}}}\do{% + \StrChar{\PfCListeGaram[##1,##2,1]}{1}[\PfCCaracGaram]% + \IfStrEq{\PfCCaracGaram}{*}{}{% + \tikz{% + \StrSubstitute{\PfCListeGaram[##1,##2,2]}{x}{\times}[\PfCGaramUn]% + \StrSubstitute{\PfCGaramUn}{:}{\div}[\PfCGaramUn]% + \StrSubstitute{\PfCListeGaram[##1,##2,3]}{x}{\times}[\PfCGaramDeux]% + \StrSubstitute{\PfCGaramDeux}{:}{\div}[\PfCGaramDeux]% + \xintifForLast{}{\node at (\fpeval{##1+0.5}-|\fpeval{##2+1}) {$\PfCGaramUn$};} + \node at (\fpeval{##1+1}-|\fpeval{##2+0.5}) {$\PfCGaramDeux$}; + }% + }% + }% + }% + \end{NiceTabular} +}% + +%%% +% Futoshiki +%%% +\setKVdefault[Futo]{Largeur=15pt,Solution=false,CouleurSolution=Black,CouleurCase=Cornsilk,StyleTexte={}} + +\newlength\PfCFutoHeight + +\NewDocumentCommand\Futoshiki{o m}{% + \useKVdefault[Futo] + \setKV[Futo]{#1}% + \setlength{\PfCFutoHeight}{\useKV[Futo]{Largeur}+\tabcolsep}% + \setsepchar{\\/,}% + \readlist\ListeFuto{#2}% + \xdef\PfCTailleFuto{\ListeFutolen}% + \def\PfCFutoStyleTexte{\useKV[Futo]{StyleTexte}}% + \colorlet{PfCFutoCase}{\useKV[Futo]{CouleurCase}}% + \begin{NiceTabular}{*{\fpeval{\PfCTailleFuto-1}}{m{\useKV[Futo]{Largeur}}m{5pt}}m{\useKV[Futo]{Largeur}}}%[hvlines] + \xintFor* ##1 in{\xintSeq{1}{\PfCTailleFuto}}\do{% + \xintFor* ##2 in{\xintSeq{1}{\PfCTailleFuto}}\do{% + \rule{0pt}{\PfCFutoHeight}% + \StrChar{\ListeFuto[##1,\fpeval{2*##2-1}]}{1}[\PfCCaracFuto]% + \IfStrEq{\PfCCaracFuto}{*}{% + \StrGobbleLeft{\ListeFuto[##1,\fpeval{2*##2-1}]}{1}[\PfCResteFuto]% + \Block[draw]{}{\PfCFutoStyleTexte\PfCResteFuto}% + }{% + \IfStrEq{\PfCCaracFuto}{!}{% + \StrGobbleLeft{\ListeFuto[##1,\fpeval{2*##2-1}]}{1}[\PfCResteFuto]% + \Block[draw,fill=PfCFutoCase]{}{\PfCFutoStyleTexte\PfCResteFuto}% + }{% + \ifboolKV[Futo]{Solution}{\Block[draw]{}{\PfCFutoStyleTexte\color{\useKV[Futo]{CouleurSolution}}\ListeFuto[##1,\fpeval{2*##2-1}]}}{\Block[draw]{}{}}% + }% + }% + \xintifForLast{}{&&}% + }\\ + \rule{0pt}{\fpeval{5pt+\tabcolsep}pt}\Block[]{}{}\\ + }% + \CodeAfter%Pour écrire les symboles + \xintFor* ##1 in{\xintSeq{1}{\PfCTailleFuto}}\do{% + \xintFor* ##2 in{\xintSeq{1}{\PfCTailleFuto}}\do{% + \IfStrEq{\ListeFuto[##1,2*##2]}{>}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{<}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2})--(\fpeval{2*##1}-|\fpeval{2*##2+0.5}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{v}{% + \tikz{% + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1.5}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{A}{% + \tikz{% + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{>A}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1}-|\fpeval{2*##2}); + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{>v}{% + \tikz{% + \draw[transform canvas={xshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1}-|\fpeval{2*##2})--(\fpeval{2*##1-0.5}-|\fpeval{2*##2+0.5})--(\fpeval{2*##1}-|\fpeval{2*##2}); + \draw[transform canvas={yshift=\fpeval{2pt+0.5\tabcolsep}pt}] (\fpeval{2*##1-1.5}-|\fpeval{2*##2-1})--(\fpeval{2*##1-1}-|\fpeval{2*##2-0.5})--(\fpeval{2*##1-1.5}-|\fpeval{2*##2}); + }% + }{}% + \IfStrEq{\ListeFuto[##1,2*##2]}{\FractionDeciDeno}{% \ensuremath{% % on affiche la partie entière. - \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\dots}{\num{\PartieEntiereFractionDeci}}+}% + \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}+}% \StrGobbleLeft{\FractionDeciNum}{\fpeval{\LongueurPartieEntiere}}[\DecompositionFracDeciComplete]% % on affiche la partie décimale. \xintFor* ##1 in {\xintSeq{1}{\fpeval{\LongueurFracDeciNum-\LongueurPartieEntiere}}}\do{% - \xintifForFirst{}{+}\StrMid{\DecompositionFracDeciComplete}{##1}{##1}[\ChiffrePartieDecimale]\frac{\ifboolKV[ClesFracDeci]{Remediation}{\dots}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**##1}}}% + \xintifForFirst{}{+}\StrMid{\DecompositionFracDeciComplete}{##1}{##1}[\ChiffrePartieDecimale]\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**##1}}}% }% }% }{% \ensuremath{% \xintFor* ##1 in {\xintSeq{1}{\LongueurPartieDecimale}}\do{% \StrMid{\PartieDecimaleFractionDeci}{##1}{##1}[\ChiffrePartieDecimale]% - \xintifForFirst{}{+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\dots}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**(\LongueurFracDeciDeno-1-\LongueurPartieDecimale+##1)}}}% + \xintifForFirst{}{+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**(\LongueurFracDeciDeno-1-\LongueurPartieDecimale+##1)}}}% }% }% }% }{% \ensuremath{% - \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\dots}{\num{\PartieEntiereFractionDeci}}+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\dots}{\num{\PartieDecimaleFractionDeci}}}{\num{\FractionDeciDeno}}% + \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieDecimaleFractionDeci}}}{\num{\FractionDeciDeno}}% }% }% }% @@ -8777,6 +9601,8 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick, \tikzset{FIndirect/.style={stealth-}} \tikzset{FBidirect/.style={stealth-stealth}} +\newlength{\LabyLongCM} + \newcommand\Labyrinthe[3][]{% \useKVdefault[Labyrinthe]% \setKV[Labyrinthe]{#1}% @@ -8787,6 +9613,7 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick, \readlist*\ListeLabySol{#3}% }{}% \xdef\LabyLong{\useKV[Labyrinthe]{Longueur}}% +% \setlength{\LabyLongCM}{\fpeval{\LabyLong*28.3465}pt}% \xdef\LabyHaut{\useKV[Labyrinthe]{Hauteur}}% \ifboolKV[Labyrinthe]{SensImpose}{% \xdef\TotalLaby{\fpeval{4*(\useKV[Labyrinthe]{Colonnes}-1)+1}}% @@ -8802,7 +9629,11 @@ transform canvas={xshift=0em,yshift=0em}},rectangle,rounded corners,ultra thick, \foreach \compteurh in {1,...,\useKV[Labyrinthe]{Colonnes}}{% \xdef\ColorFill{\ListeLaby[\fpeval{\useKV[Labyrinthe]{Colonnes}*(\compteurv-1)+\compteurh},2]}% \node[fill=\ColorFill,draw,minimum height=\LabyHaut*1cm,minimum width=\LabyLong*1cm,name=A-\compteurh-\compteurv] at - (\fpeval{\LabyLong+\useKV[Labyrinthe]{EcartH}}*\compteurh,-\fpeval{\LabyHaut+\useKV[Labyrinthe]{EcartV}}*\compteurv) {\ListeLaby[\fpeval{\useKV[Labyrinthe]{Colonnes}*(\compteurv-1)+\compteurh},1]};% + (\fpeval{\LabyLong+\useKV[Labyrinthe]{EcartH}}*\compteurh,-\fpeval{\LabyHaut+\useKV[Labyrinthe]{EcartV}}*\compteurv) {% +% \begin{minipage}{\LabyLongCM} + \ListeLaby[\fpeval{\useKV[Labyrinthe]{Colonnes}*(\compteurv-1)+\compteurh},1]% +% \end{minipage} + };% }% }% % fin des cadres @@ -13791,14 +14622,15 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. % y a dans un "seul calcul". \setcounter{NbCalculDistri}{0} -\setKVdefault[ClesDistributivite]{Cours=false,Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0,Tuile=false,Vide=false,Impression=false,Tableau=false}%,AideAdd=false:inutile ? +\setKVdefault[ClesDistributivite]{Cours=false,Etape=1,Lettre=x,Fleches=false,AideMul=false,Reduction=false,AideAdda=false,AideAddb=false,CouleurAide=red,CouleurReduction=black,CouleurFH=blue,CouleurFB=red,Somme=false,Difference=false,RAZ=false,Oppose=false,All=false,NomExpression=A,Fin=4,Numerique=false,Remarquable=false,Echange=0,Tuile=false,Vide=false,Reperes=false,Impression=false,Tableau=false}%,AideAdd=false:inutile ? \newcommand\Tuile[4]{% \ifluatex \mplibforcehmode \begin{mplibcode} - boolean Vide,Print; + boolean Vide,Reperes,Print; Vide=\useKV[ClesDistributivite]{Vide}; + Reperes=\useKV[ClesDistributivite]{Reperes}; Print=\useKV[ClesDistributivite]{Impression}; pair _CoinTuilev; _CoinTuilev=(0,0); @@ -13891,7 +14723,52 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. labeloffset:=labeloffset*2; label.ulft(TEX("$\times$"),iso(u*(largeur/2,ecart/2),u*(largeur+ecart/2,largeur/2+ecart))); labeloffset:=labeloffset/2; - if Vide=false: + if Vide: + if Reperes: + %%%% + %% tuile a*c + if #1*#3<>0: + for k=0 upto (abs(#3)-1): + for l=0 upto (abs(#1)-1): + path titi; + titi=polygone((0,0),u*(longueur,0),u*(longueur,-longueur),u*(0,-longueur)) shifted (u*(largeur+ecart,0)+(u*(k*longueur,-l*longueur))); + trace titi withcolor 0.6white; + endfor; + endfor; + fi; + %tuile a*d + if #1*#4<>0: + for k=0 upto (abs(#4)-1): + for l=0 upto (abs(#1)-1): + path titi; + titi=polygone((0,0),u*(largeur,0),u*(largeur,-longueur),u*(0,-longueur)) shifted (u*(largeur+ecart+abs(#3)*longueur,0)+(u*(k*largeur,-l*longueur))); + trace titi withcolor 0.6white; + endfor; + endfor; + fi; + %tuile b*c + if #2*#3<>0: + for k=0 upto (abs(#3)-1): + for l=0 upto (abs(#2)-1): + path titi; + titi=polygone((0,0),u*(longueur,0),u*(longueur,-largeur),u*(0,-largeur)) shifted (u*(largeur+ecart,-abs(#1)*longueur)+(u*(k*longueur,-l*largeur))); + trace titi withcolor 0.6white; + endfor; + endfor; + fi; + %tuile b*d + if #2*#4<>0: + for k=0 upto (abs(#4)-1): + for l=0 upto (abs(#2)-1): + path titi; + titi=polygone((0,0),u*(largeur,0),u*(largeur,-largeur),u*(0,-largeur)) shifted (u*(largeur+ecart+abs(#3)*longueur,-abs(#1)*longueur)+(u*(k*largeur,-l*largeur))); + trace titi withcolor 0.6white; + endfor; + endfor; + fi; + fi; + %%% + else: %% tuile a*c if #1*#3<>0: for k=0 upto (abs(#3)-1): @@ -14233,6 +15110,17 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \DistriEchange[#1]{#2}{#3}{#4}{#5}% }{% \ifboolKV[ClesDistributivite]{Remarquable}{% + \ifboolKV[ClesDistributivite]{Numerique}{% + \ifx\bla#4\bla% + \xintifboolexpr{#3>0}{% + \num{\fpeval{#2+#3}}^2=(\num{#2}+\num{#3})^2=\num{#2}^2+2\times\num{#2}\times\num{#3}+\num{#3}^2=\num{\fpeval{#2*#2}}+\num{\fpeval{2*#2*#3}}+\num{\fpeval{#3*#3}}=\num{\fpeval{(#2+#3)**2}} + }{% + \num{\fpeval{#2+#3}}^2=(\num{#2}\num{#3})^2=\num{#2}^2-2\times\num{#2}\times\num{\fpeval{-#3}}+\num{\fpeval{-#3}}^2=\num{\fpeval{#2*#2}}-\num{\fpeval{2*#2*abs(#3)}}+\num{\fpeval{#3*#3}}=\num{\fpeval{(#2-abs(#3))**2}} + } + \else + \num{\fpeval{#2+#3}}\times\num{\fpeval{#4+#5}}=(\num{#2}+\num{#3})\times(\num{#4}\num{#5})=\num{#2}^2-\num{#3}^2=\num{\fpeval{#2*#2}}-\num{\fpeval{#3*#3}}=\num{\fpeval{(#2+#3)*(#2-#3)}} + \fi% + }{% \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==1}{% \ifx\bla#4\bla(\Affichage{0}{#2}{#3})^2\else(\Affichage{0}{#2}{#3})(\Affichage{0}{#4}{#5})\fi% }{} @@ -14282,6 +15170,8 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \ifboolKV[ClesDistributivite]{Difference}{\xdef\SommeA{\fpeval{\SommeA-#2*#4}}\xdef\SommeB{\fpeval{\SommeB-#2*#5-#3*#4}}\xdef\SommeC{\fpeval{\SommeC-#3*#5}}}{}% \fi% }{}% + % fin Remarquable + }% }{% \ifboolKV[ClesDistributivite]{Numerique}{% \xintifboolexpr{\useKV[ClesDistributivite]{Etape}==0}{% @@ -14449,8 +15339,25 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \xintifboolexpr{#2==0}{\xintifboolexpr{#3==-1}{-}{\num{#3}}}{\xintifboolexpr{#3==-1}{-}{-\num{\fpeval{abs(#3)}}}} }\LETTRE}% % partie du x^2 - \xintifboolexpr{#4==0}{}{\xintifboolexpr{#4>0}{\xintifboolexpr{#2==0}{\xintifboolexpr{#3==0}{}{+}}{+}\xintifboolexpr{#4==1}{}{\num{#4}}}{% - \xintifboolexpr{#2==0}{\xintifboolexpr{#3==0}{\num{#4}}{-\num{\fpeval{abs(#4)}}}}{-\num{\fpeval{abs(#4)}}}}\LETTRE^2}% + \xintifboolexpr{#4==0}{}{% + \xintifboolexpr{#4>0}{% + \xintifboolexpr{#2==0}{% + \xintifboolexpr{#3==0}{% + }{+}% + }{+}% + \xintifboolexpr{#4==1}{}{\num{#4}% + }% + }{% + \xintifboolexpr{#2==0}{% + \xintifboolexpr{#3==0}{% + \num{#4}% + }{-\num{\fpeval{abs(#4)% + }% + }% + }% + }{% + \xintifboolexpr{#4==-1}{-}{-\num{\fpeval{abs(#4)}}}}}% + \LETTRE^2}% }% }% @@ -17004,10 +17911,10 @@ couleur indiquée, le nombre de cases donné par le résultat du calcul. \end{multicols} }{\ifboolKV[ClesThales]{Figurecroisee}{% % \StrMid{#2}{1}{1}[\NomA]\StrMid{#2}{2}{2}[\NomB]\StrMid{#2}{3}{3}[\NomC]\StrMid{#2}{4}{4}[\NomM]\StrMid{#2}{5}{5}[\NomN] - \fbox{\begin{minipage}{0.4\linewidth}% + \begin{minipage}{0.4\linewidth}% {\em La figure est donn\'ee \`a titre indicatif.}% \[\MPFigReciThalesCroisee{\NomA}{\NomB}{\NomC}{\NomM}{\NomN}{\useKV[ClesThales]{Angle}}\]% - \end{minipage}} + \end{minipage} \hfill \begin{minipage}{0.55\linewidth}% \ReciThales[#1]{\StrMid{#2}{1}{1}}{\StrMid{#2}{2}{2}}{\StrMid{#2}{3}{3}}{\StrMid{#2}{4}{4}}{\StrMid{#2}{5}{5}}\par @@ -21943,7 +22850,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis %%% % Diff\'erentes représentations graphiques %%% -\setKVdefault[TraceG]{Grille=false,Graduations=false,PasGradX=1,PasGradY=1,PasGrilleX=1,PasGrilleY=1,Xmin=-5.5,Xmax=5.5,Xstep=1,Ymin=-5.5,Ymax=5.5,Ystep=1,Bornea=-5.5,Borneb=5.5,LabelX={},LabelY={},LabelC=0.5,NomCourbe={},Origine={(5.5,5.5)},Fonction=false,Points=false,Invisible=false,CouleurPoint=red,CouleurTrace=black,Epaisseur=1,Relie=false,RelieSegment=false,Marque=dot,Code=false,Vide=false}% +\setKVdefault[TraceG]{Grille=false,Graduations=false,PasGradX=1,PasGradY=1,PasGrilleX=1,PasGrilleY=1,Xmin=-5.5,Xmax=5.5,Xstep=1,Ymin=-5.5,Ymax=5.5,Ystep=1,Bornea=-5.5,Borneb=5.5,LabelX={},LabelY={},LabelC=0.5,NomCourbe={},Origine={(5.5,5.5)},Fonction=false,Points=false,Invisible=false,CouleurPoint=red,CouleurTrace=black,Epaisseur=1,Relie=false,RelieSegment=false,Marque=dot,Code=false,Vide=false,NbPointsCourbe=100}% \defKV[TraceG]{Traces=\setKV[TraceG]{Code}}% \newcommand\TraceGraphique[2][]{% @@ -22149,6 +23056,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis \begin{mplibcode} borneinf=\useKV[TraceG]{Bornea}; bornesup=\useKV[TraceG]{Borneb}; + nbpointsCourbe:=\useKV[TraceG]{NbPointsCourbe}; xmin=\useKV[TraceG]{Xmin}; xmax=\useKV[TraceG]{Xmax}; ymin=\useKV[TraceG]{Ymin}; @@ -22263,7 +23171,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis drawoptions(); if Vide: else: - draw courbe1(borneinf,bornesup,100)(#2) withpen (pencircle scaled Epaisseur) withcolor colortrace; + draw courbe1(borneinf,bornesup,nbpointsCourbe)(#2) withpen (pencircle scaled Epaisseur) withcolor colortrace; % labelisation numeric t; t=pos*length Cb1; @@ -22285,7 +23193,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis \usepackage{ProfCollege} \setKV[TraceG]{#1} } - \begin{mpost}[mpsettings={borneinf=\useKV[TraceG]{Bornea};bornesup=\useKV[TraceG]{Borneb};xmin=\useKV[TraceG]{Xmin};xmax=\useKV[TraceG]{Xmax};ymin=\useKV[TraceG]{Ymin};ymax=\useKV[TraceG]{Ymax};pasx=\useKV[TraceG]{Xstep};pasy=\useKV[TraceG]{Ystep};xu=1cm/\useKV[TraceG]{Xstep};yu=1cm/\useKV[TraceG]{Ystep};grillex=\useKV[TraceG]{PasGrilleX};grilley=\useKV[TraceG]{PasGrilleY};pos=\useKV[TraceG]{LabelC};Epaisseur=\useKV[TraceG]{Epaisseur}; color colortrace;colortrace=\useKV[TraceG]{CouleurTrace};boolean Grille,Vide;Grille=\useKV[TraceG]{Grille};Vide=\useKV[TraceG]{Vide};boolean Graduations;Graduations=\useKV[TraceG]{Graduations}; + \begin{mpost}[mpsettings={borneinf=\useKV[TraceG]{Bornea};bornesup=\useKV[TraceG]{Borneb};nbpointsCourbe:=\useKV[TraceG]{NbPointsCourbe};xmin=\useKV[TraceG]{Xmin};xmax=\useKV[TraceG]{Xmax};ymin=\useKV[TraceG]{Ymin};ymax=\useKV[TraceG]{Ymax};pasx=\useKV[TraceG]{Xstep};pasy=\useKV[TraceG]{Ystep};xu=1cm/\useKV[TraceG]{Xstep};yu=1cm/\useKV[TraceG]{Ystep};grillex=\useKV[TraceG]{PasGrilleX};grilley=\useKV[TraceG]{PasGrilleY};pos=\useKV[TraceG]{LabelC};Epaisseur=\useKV[TraceG]{Epaisseur}; color colortrace;colortrace=\useKV[TraceG]{CouleurTrace};boolean Grille,Vide;Grille=\useKV[TraceG]{Grille};Vide=\useKV[TraceG]{Vide};boolean Graduations;Graduations=\useKV[TraceG]{Graduations}; pair Origine; Origine=(xmin,ymin)+\useKV[TraceG]{Origine};}] @@ -22365,7 +23273,7 @@ Barre=false,Longueur=10cm,Hauteur=5mm,Bicolore=false,EcartBarre=0%Grille est dis drawoptions(); if Vide: else: - draw courbe1(borneinf,bornesup,100)(#2) withpen (pencircle scaled Epaisseur) withcolor colortrace; + draw courbe1(borneinf,bornesup,nbpointsCourbe)(#2) withpen (pencircle scaled Epaisseur) withcolor colortrace; % % labelisation numeric t; t=pos*length Cb1; @@ -23371,7 +24279,7 @@ u:=\useKV[ClesFormule]{Echelle}; {cube}{% \begin{center} \MPFigureCube\par - Volume d'une cube : $a^3\quad(a\times a\times a)$ + Volume d'un cube : $a^3\quad(a\times a\times a)$ \end{center} }% {pave}{% @@ -24990,46 +25898,67 @@ u:=\useKV[ClesFormule]{Echelle}; n:=0; for p_=t: n:=n+1; + if substring(1,2) of p_="*": + label.top(TEX(substring(2,length p_) of p_),unitp*(valeur[n],0)); + else: label.top(TEX(p_),unitp*(valeur[n],0)); + fi; + if p_<>"": pointe(unitp*(valeur[n],0)); + fi; endfor; fi; - if AffichageCoord=3: + % On ajoute une paramétrisation possible à chaque point. + if AffichageCoord>0: n:=0; for p_=t: n:=n+1; + if substring(1,2) of p_="*": + ACoord:=scantokens(substring(0,1) of p_); + if ACoord=3: + drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3)); + label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(valeur[n],-1))); + pointe(unitp*(valeur[n]-ValeurOrigine,0)); + elseif ACoord=2: + if ((ValeurUnitex*valeur[n]) mod pasx)<>0: + label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0)); + else: + label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0)); + fi; + pointe(unitp*(valeur[n],0)); + elseif ACoord=1: + label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0)); + pointe(unitp*(valeur[n],0)); + fi; + else: + if AffichageCoord=3: if p_<>"": drawarrow (unitp*(valeur[n],-1))--(unitp*(valeur[n],-0.3)); - label.bot(btex \pointilles[2em] etex,(unitp*(valeur[n],-1))); + label.bot(btex \hbox to2em{\dotfill} etex,(unitp*(valeur[n],-1))); + pointe(unitp*(valeur[n],0)); fi; - endfor; elseif AffichageCoord=2: - n:=0; - for p_=t: - n:=n+1; if p_<>"": if ((ValeurUnitex*valeur[n]) mod pasx)<>0: - label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurOrigine*pasx)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(valeur[n])&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0)); + label.bot(TEX("\footnotesize$\frac{\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"}}}{\num{"&decimal(pasx)&"}}$"),unitp*(valeur[n],0)); else: label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurUnitex)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0)); fi; pointe(unitp*(valeur[n],0)); fi; - endfor; elseif AffichageCoord=1: - n:=0; - for p_=t: - n:=n+1; if p_<>"": - label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-ValeurOrigine)&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0)); + label.bot(TEX("\footnotesize\num{\fpeval{"&decimal(ValeurOrigine)&"+"&decimal(ValeurUnitex-(ValeurOrigine))&"*"&decimal(valeur[n])&"/"&decimal(pasx)&"}}"),unitp*(valeur[n],0)); pointe(unitp*(valeur[n],0)); fi; + fi; + fi; endfor; fi; enddef; %---- tata(#2); - clip currentpicture to polygone(u*(-1,-1),((maxx+0.75)*unitp,-u),((maxx+0.75)*unitp,u),u*(-1,1)); +% clip currentpicture to polygone(u*(-1,-2),((maxx+0.75)*unitp,-2u),((maxx+0.75)*unitp,2u),u*(-1,2)); \end{mplibcode} \else \begin{mpost}[mpsettings={unitex:=\useKV[ClesReperage]{Unitex}*cm; pasx:=\useKV[ClesReperage]{Pasx}; unitp:=unitex/pasx; ValeurUnitex:=\useKV[ClesReperage]{ValeurUnitex}; ValeurOrigine:=\useKV[ClesReperage]{ValeurOrigine}; AffichageGrad:=\AffichageGrad; AffichageCoord:=\useKV[ClesReperage]{AffichageAbs}; AffichageNom:=\AffichageNom;}] @@ -26293,7 +27222,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V %%% % Tableaux d'unit\'es %%% -\setKVdefault[ClesTableaux]{Virgule=true,Incline=false,Entiers=false,Decimaux=false,Milliards=false,Millions=false,Micro=false,Nano=false,Partie=false,CouleurG=gray!15,CouleurM=gray!15,Couleurm=gray!15,Couleuru=gray!15,Couleurd=gray!15,Classes=false,Nombres=false,Puissances=false,NbLignes=2,Metre=false,Are=false,Capacite=false,Carre=false,Cube=false,Litre=false,Gramme=false,Fleches=false,FlechesB=false,FlechesH=false,Colonnes=false,Prefixes=false,Escalier=false,Taille=5,Largeur=4.75em,Nom=PfCTableau,CodeAfter={},PuissancesSeules=false,Colonne=-1} +\setKVdefault[ClesTableaux]{Virgule=true,Incline=false,Entiers=false,Decimaux=false,Milliards=false,Millions=false,Micro=false,Nano=false,Partie=false,CouleurG=gray!15,CouleurM=gray!15,Couleurm=gray!15,Couleuru=gray!15,Couleurd=gray!15,Classes=false,Nombres=false,Puissances=false,NbLignes=2,Metre=false,Are=false,Capacite=false,Carre=false,Cube=false,Litre=false,Gramme=false,Fleches=false,FlechesB=false,FlechesH=false,Colonnes=false,Prefixes=false,Escalier=false,Taille=5,Largeur=4.75em,Nom=PfCTableau,CodeAfter={},PuissancesSeules=false,Colonne=-1,Octet=false} \newcommand\PfCTBstrut{\rule[-1.2ex]{0pt}{3.8ex}}% Top and Bottom strut \newcommand\PfCTstrut{\rule{0pt}{3.8ex}}% Top strut @@ -26323,6 +27252,74 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V }{}% \PfCTableauIncline% }{% + % + %%% Clé Octet + % + \ifboolKV[ClesTableaux]{Octet}{% + \[\renewcommand{\arraystretch}{1.15}% + \setlength{\tabcolsep}{0.275\tabcolsep}% + \xdef\DecalageLigne{0} + \begin{NiceTabular}{*{5}{wc{15pt}wc{15pt}wc{15pt}}} + \Block[]{1-3}{}% + &&&\Block[]{1-3}{}% + &&&\Block[]{1-3}{}% + &&&\Block[]{1-3}{}% + &&&\Block[]{1-3}{}\\ + \hline + \ifboolKV[ClesTableaux]{Classes}{% + \xdef\DecalageLigne{\fpeval{\DecalageLigne+1}}\Block[borders={left,top,right}]{1-3}{téraoctet\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{gigaoctet\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{mégaoctet\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{kilooctet\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{octet\PfCTBstrut}&&\\ + \hline + }{}% + \Block[borders={left,top,right}]{1-3}{To\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{Go\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{Mo\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{ko\PfCTBstrut}&&&\Block[borders={top,right}]{1-3}{o\PfCTBstrut}&&\\ + \hline + \xintFor* ##1 in {\xintSeq{1}{\useKV[ClesTableaux]{NbLignes}}}\do{% + &&&&&&&&&&&&&&\\ + }% + \Block[]{1-3}{}% + &&&\Block[]{1-3}{}% + &&&\Block[]{1-3}{}% + &&&\Block[]{1-3}{}% + &&&\Block[]{1-3}{}\\ + \CodeAfter + % on trace les lignes verticales + \xintFor* ##1 in {\xintSeq{1}{6}}\do{% + \tikz\draw (3-|\fpeval{3*(##1-1)+1})--(\fpeval{3+\useKV[ClesTableaux]{NbLignes}}-|\fpeval{3*(##1-1)+1}); + }% + \xintifboolexpr{\useKV[ClesTableaux]{Colonnes}}{% + \xintFor* ##1 in {\xintSeq{1}{5}}\do{% + \tikz\draw[gray!50] (3-|\fpeval{3*(##1-1)+2})--(\fpeval{3+\useKV[ClesTableaux]{NbLignes}}-|\fpeval{3*(##1-1)+2}); + \tikz\draw[gray!50] (3-|\fpeval{3*##1})--(\fpeval{3+\useKV[ClesTableaux]{NbLignes}}-|\fpeval{3*##1}); + }% + }{}% + % On place le nombre éventuel + \ifx\bla#2\bla% + \else% + \setsepchar[*]{,*/} + \readlist*\ListeNombreAPlacer{#2}% + \xintFor* ##2 in{\xintSeq {1}{\ListeNombreAPlacerlen}}\do{% + \StrLen{\ListeNombreAPlacer[##2,1]}[\TabLongueurNombre]% + \xintFor* ##1 in{\xintSeq {1}{\TabLongueurNombre}}\do{% + \tikz\node at (\fpeval{\DecalageLigne+##2+2.5}-|\fpeval{\ListeNombreAPlacer[##2,2]-0.5+##1}) {\PfCTBstrut\StrMid{\ListeNombreAPlacer[##2,1]}{##1}{##1}};% + }% + }% + \fi% + % on trace les flèches + \ifboolKV[ClesTableaux]{Fleches}{\setKV[ClesTableaux]{FlechesH,FlechesB}}{}% + \ifboolKV[ClesTableaux]{FlechesH}{% + \xintFor* ##1 in {\xintSeq{1}{4}}\do{% + \tikz\draw[gray,->,>=latex,out=30,in=150] (1.5-|\fpeval{2.5+3*(##1-1)}) to node[above, midway]{\small$\times\num{1000}$}(1.5-|\fpeval{2.5+3*##1});% + }% + }{}% + \ifboolKV[ClesTableaux]{Classes}{\xdef\PfCTableauDepart{4}}{\xdef\PfCTableauDepart{3}}% + \ifboolKV[ClesTableaux]{FlechesB}{% + \xintFor* ##1 in {\xintSeq{1}{4}}\do{% + \tikz\draw[gray,->,>=latex,out=-150,in=-30] (\fpeval{\PfCTableauDepart+\useKV[ClesTableaux]{NbLignes}+0.5}-|\fpeval{2.5+3*##1}) to node[below,midway]{\small$\div\num{1000}$}(\fpeval{\PfCTableauDepart+\useKV[ClesTableaux]{NbLignes}+0.5}-|\fpeval{2.5+3*(##1-1)});% + }% + }{}% + \useKV[ClesTableaux]{CodeAfter}% + \end{NiceTabular} + \]% + }{}% % %%% Cl\'e Prefixes % @@ -27308,7 +28305,6 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V \]% }% {}% - % %%% Prise en compte de la cl\'e Carre % @@ -27653,14 +28649,27 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V colbacktitle=TrameCouleur,% } +\makeatletter \newtcolorbox{MyboxJQ}[2]{% - enhanced, - nobeforeafter, - left=0pt,right=0pt,top=0pt, - text fill, - width=\largeurcarte, - height=\hauteurcarte, - arc=5pt, + enhanced,% + nobeforeafter,% + left=0pt,right=0pt,top=0pt,% + text fill,% + width=\largeurcarte,% + height=\hauteurcarte,% + arc=5pt,% + underlay={% + \ifboolKV[Cards]{BackgroundAv}{% + \begin{tcbclipinterior} + \node[anchor=center,opacity=1] + at (interior.center) {% + \includegraphics[% + height=\tcb@height, + width=\tcb@width, + ]{\useKV[Cards]{ImageAv}}};% + \end{tcbclipinterior}% + }{}% + },% overlay unbroken and first={% \coordinate[yshift=-0.5\hauteurtitre] (A1) at (frame.north west); \coordinate[yshift=0\hauteurtitre] (S3) at (frame.center); @@ -27681,10 +28690,32 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V \end{center}% \end{minipage}}; }, - colback=white, + colback=white } - -\usetikzlibrary{backgrounds} +% +\newtcolorbox{MyboxJQAr}{% + enhanced,% + nobeforeafter,% + left=0pt,right=0pt,top=0pt,% + text fill,% + width=\largeurcarte,% + height=\hauteurcarte,% + arc=5pt,% + underlay={% + \ifboolKV[Cards]{BackgroundAv}{% + \begin{tcbclipinterior} + \node[anchor=center,opacity=1] + at (interior.center) {% + \includegraphics[% + height=\tcb@height, + width=\tcb@width, + ]{\useKV[Cards]{ImageAr}}};% + \end{tcbclipinterior}% + }{}% + },% + colback=white +} +\makeatother \makeatletter %https://tex.stackexchange.com/questions/347434/clip-background-image-inside-tcolorbox @@ -27706,7 +28737,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V height=\tcb@height, width=\tcb@width, ]{\useKV[Cards]{ImageAv}}};% - \end{tcbclipinterior},% + \end{tcbclipinterior}% }{}% },% overlay unbroken and first={% @@ -27775,7 +28806,8 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V \newlength{\margeh}% \newlength{\margev}% -\NewEnviron{Trame}{% +% \NewEnviron{Trame}{% +\NewDocumentEnvironment{Trame}{+b}{% \begin{tikzpicture}[remember picture,overlay] % quadrillages horizontal et vertical \coordinate[yshift=-\margev] (A) at (current page.north west);% @@ -27796,11 +28828,11 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V \coordinate[xshift=\largeurcards] (D2) at (D1);% \coordinate[xshift=\largeurcards] (C3) at (C2);% \coordinate[xshift=\largeurcards] (D3) at (D2);% - \draw (A) -- (B);% - \draw (A1) -- (B1);% - \draw (A2) -- (B2);% - \draw (A3) -- (B3);% - \draw (A4) -- (B4);% + \draw (A)--(B);% + \draw (A1)--(B1);% + \draw (A2)--(B2);% + \draw (A3)--(B3);% + \draw (A4)--(B4);% \draw (C)--(D);% \draw (C1)--(D1);% \draw (C2)--(D2);% @@ -27815,7 +28847,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte7) at (Carte4);% \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte8) at (Carte5);% \coordinate[xshift=0mm,yshift=-\hauteurcards] (Carte9) at (Carte6);% - \BODY% + #1% \end{tikzpicture}% }% @@ -27825,11 +28857,12 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V Trivial=false,Symboles={\faInfinity,\faSignal,\faProjectDiagram,\faHiking,\faRuler,\faLockOpen} }% -\newcommand\Cartes[2][]{% +\NewDocumentCommand\Cartes{o +m}{%[2][]{% \useKVdefault[Cards]% \setKV[Cards]{#1}% \setsepchar[*]{§*/}% \readlist*\ListeCards{#2}% + \setsepchar{,}% \ifboolKV[Cards]{Landscape}{% \setlength{\hauteurcarte}{\fpeval{\useKV[Cards]{Largeur}-\useKV[Cards]{Marge}}mm}% \setlength{\largeurcarte}{\fpeval{\useKV[Cards]{Hauteur}-\useKV[Cards]{Marge}}mm}% @@ -27856,17 +28889,17 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V \ifboolKV[Cards]{Trame}{% \clearpage% \thispagestyle{empty}% - \begin{Trame} + \begin{Trame}% \multido{\i=1+1}{9}{% \node[] at (Carte\i) {% \begin{MyboxTrivial}% \begin{center} - \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[9,m]}[hvlines] + \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[9,m]}[hvlines]% \xintFor* ##1 in{\xintSeq{1}{6}}\do{% \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[\i,\fpeval{1+2*(##1-1)}]\\ }% - \end{NiceTabular} - \end{center} + \end{NiceTabular}% + \end{center}% \end{MyboxTrivial}% };% }% @@ -27874,43 +28907,43 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V \ifboolKV[Cards]{AffichageSolution}{% \clearpage% \thispagestyle{empty}% - \begin{Trame} + \begin{Trame}% \multido{\i=1+1}{3}{% \node at (Carte\i) {% \begin{MyboxTrivial}% - \begin{center} - \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines] + \begin{center}% + \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines]% \xintFor* ##1 in{\xintSeq{1}{6}}\do{% \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[\fpeval{4-\i},\fpeval{2*##1}]\\ }% - \end{NiceTabular} - \end{center} + \end{NiceTabular}% + \end{center}% \end{MyboxTrivial}% };% }% \multido{\i=4+1}{3}{% \node at (Carte\i) {% \begin{MyboxTrivial}% - \begin{center} - \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines] + \begin{center}% + \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines]% \xintFor* ##1 in{\xintSeq{1}{6}}\do{% \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[\fpeval{10-\i},\fpeval{2*##1}]\\ }% - \end{NiceTabular} - \end{center} + \end{NiceTabular}% + \end{center}% \end{MyboxTrivial}% };% }% \multido{\i=7+1}{3}{% \node at (Carte\i) {% - \begin{MyboxTrivial} - \begin{center} - \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines] + \begin{MyboxTrivial}% + \begin{center}% + \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines]% \xintFor* ##1 in{\xintSeq{1}{6}}\do{% \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[\fpeval{16-\i},\fpeval{2*##1}]\\ }% - \end{NiceTabular} - \end{center} + \end{NiceTabular}% + \end{center}% \end{MyboxTrivial}% };% }% @@ -27919,23 +28952,23 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V }{}% }{% \begin{MyboxTrivial}% - \begin{center} - \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines] + \begin{center}% + \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines]% \xintFor* ##1 in{\xintSeq{1}{6}}\do{% \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[1,\fpeval{1+2*(##1-1)}]\\ }% - \end{NiceTabular} - \end{center} + \end{NiceTabular}% + \end{center}% \end{MyboxTrivial}% \ifboolKV[Cards]{AffichageSolution}{% \begin{MyboxTrivial}% - \begin{center} - \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines] + \begin{center}% + \begin{NiceTabular}[width=0.9\largeurcarte]{X[1,m]X[10,m]}[hvlines]% \xintFor* ##1 in{\xintSeq{1}{6}}\do{% \rule{0pt}{0.12\hauteurcards}\Block{1-1}{\ListeSymbolesTrivial[##1]}&\ListeCards[1,\fpeval{2*##1}]\\ }% - \end{NiceTabular} - \end{center} + \end{NiceTabular}% + \end{center}% \end{MyboxTrivial}% }{}% }% @@ -27945,7 +28978,7 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V \ifboolKV[Cards]{Trame}{% \clearpage% \thispagestyle{empty}% - \begin{Trame} + \begin{Trame}% \multido{\i=1+1}{9}{% \node at (Carte\i) {% \begin{MyboxJQ}{\ListeCards[\i,1]}{\ListeCards[\i,2]}% @@ -27955,10 +28988,34 @@ label.lft(LATEX("\noexpand\footnotesize\noexpand\SI{\noexpand\fpeval{"&decimal(V }% \end{Trame}% \clearpage% + \ifboolKV[Cards]{AffichageSolution}{% + \thispagestyle{empty}% + \begin{Trame} + \multido{\i=1+1}{3}{% + \node at (Carte\i) {% + \begin{MyboxJQAr}% + \end{MyboxJQAr}% + };% + }% + \multido{\i=4+1}{3}{% + \node at (Carte\i) {% + \begin{MyboxJQAr}% + \end{MyboxJQAr}% + };% + }% + \multido{\i=7+1}{3}{% + \node at (Carte\i) {% + \begin{MyboxJQAr}% + \end{MyboxJQAr}% + };% + }% + \end{Trame}% + \clearpage% + }{}% }{% - \begin{MyboxJQ}{\ListeCards[1,1]}{\ListeCards[1,2]}% + \begin{MyboxJQAr}% %% - \end{MyboxJQ}% + \end{MyboxJQAr}% }% }{% \ifboolKV[Cards]{Loop}{% -- cgit v1.2.3