texlive[71295] Master/texmf-dist: profcollege (18may24)
commits+karl at tug.org
commits+karl at tug.org
Sat May 18 22:13:57 CEST 2024
Revision: 71295
https://tug.org/svn/texlive?view=revision&revision=71295
Author: karl
Date: 2024-05-18 22:13:57 +0200 (Sat, 18 May 2024)
Log Message:
-----------
profcollege (18may24)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdf
trunk/Master/texmf-dist/doc/latex/profcollege/profcollege-doc.zip
trunk/Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex
trunk/Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex
trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty
Removed Paths:
-------------
trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollegeT.sty
Modified: trunk/Master/texmf-dist/doc/latex/profcollege/ProfCollege-doc.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/profcollege/profcollege-doc.zip
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex 2024-05-18 20:13:34 UTC (rev 71294)
+++ trunk/Master/texmf-dist/tex/latex/profcollege/PfCPatronPaves.tex 2024-05-18 20:13:57 UTC (rev 71295)
@@ -30,6 +30,149 @@
}%
}%
+\setsepchar{,}\ignoreemptyitems
+\readlist*\ListePatronsCube{%
+ {ooxo,xxxx,ooxo},%
+ {oxoo,xxxx,xooo},%
+ {ooxo,xxxx,oxoo},%
+ {ooox,xxxx,xooo},%
+ {ooox,xxxx,oxoo},%
+ {xxxoo,ooxxx},%
+ {xxoo,oxxo,ooxx},%
+ {xxoo,oxxx,ooox},%
+ {xxoo,oxxx,ooxo},%
+ {ooox,xxxx,ooox},%
+ {ooxo,xxxo,ooxx}%
+}%
+\readlist*\ListePatronsCubeCouleurs{%
+ {LightSteelBlue,Crimson,Yellow,Crimson,Yellow,LightSteelBlue},%
+ {LightSteelBlue,Crimson,Yellow,Crimson,Yellow,LightSteelBlue},%
+ {LightSteelBlue,Crimson,Yellow,Crimson,Yellow,LightSteelBlue},%
+ {LightSteelBlue,Crimson,Yellow,Crimson,Yellow,LightSteelBlue},%
+ {LightSteelBlue,Crimson,Yellow,Crimson,Yellow,LightSteelBlue},%
+ {LightSteelBlue,Crimson,LightSteelBlue,Yellow,Crimson,Yellow},%
+ {LightSteelBlue,Crimson,Yellow,LightSteelBlue,Crimson,Yellow},%
+ {LightSteelBlue,Crimson,Yellow,LightSteelBlue,Yellow,Crimson},%
+ {LightSteelBlue,Crimson,Yellow,LightSteelBlue,Yellow,Crimson},%
+ {LightSteelBlue,Crimson,Yellow,Crimson,Yellow,LightSteelBlue},%
+ {LightSteelBlue,Crimson,Yellow,Crimson,LightSteelBlue,Yellow}%
+}%
+
+\readlist*\ListePatronsPave{%
+ {hlpl,lopo,hopo,lopo},%
+ {hlpo,loph,hopo,lopo},%
+ {hlpo,lopo,hopl,lopo},%
+ {hlpo,lopo,hopo,loph},%
+ {hopo,lhph,hopo,lopo},%
+ {hopo,lhpo,hopl,lopo},%
+ {hopo,lhpo,hopo,lopl},%
+ {hopo,lopo,hlpl,lopo},%
+ {hopo,lopo,hlpo,loph},%
+ {hopo,lopo,hopo,lhph},%10
+ {plhl,loho,poho,loho},%
+ {plho,loho,pohl,loho},%
+ {plho,loho,pohl,loho},%
+ {plho,loho,poho,lohp},%
+ {poho,lphp,poho,loho},%
+ {poho,lpho,pohl,loho},%
+ {poho,lpho,poho,lohp},%
+ {poho,loho,plhl,loho},%
+ {poho,loho,plho,lohp},%
+ {poho,loho,poho,lphp},%
+ {phlh,holo,polo,holo},%
+ {phlo,holp,polo,holo},%
+ {phlo,holo,polh,holo},%
+ {phlo,holo,polo,holp},%
+ {polo,hplp,polo,holo},%
+ {polo,hplo,polh,holo},%
+ {polo,hplo,polo,holp},%
+ {polo,holo,phlh,holo},%
+ {polo,holo,phlo,holp},%
+ {polo,holo,polo,hplp},%
+ {hlpo,lopo,hopl,pool},%
+ {hopo,lhpo,hopl,pool},%
+ {hopo,lopo,hlph,pool},%
+ {lhpo,hopo,loph,pooh},%
+ {lopo,hlpo,loph,pooh},%
+ {lopo,hopo,lhoh,pooh},%
+ {plho,loho,pohl,hool},%
+ {poho,lpho,pohl,hool},%
+ {poho,loho,plhl,hool},%
+ {lpho,poho,lohp,hoop},%
+ {loho,plho,lohp,hoop},%
+ {loho,poho,lphp,hoop},%
+ {phlo,holo,polh,looh},%
+ {polo,hplo,polh,looh},%
+ {polo,holo,phlh,looh},%
+ {hplo,polo,holp,loop},%
+ {holo,phlo,holp,loop},%
+ {holo,polo,hplp,loop},%
+ {hpo,lpo,hpl,pol,hol},%
+ {lpo,hpo,lph,poh,loh},%
+ {pho,plo,phl,hol,pol},%
+ {hpoo,lpho,pohl,hool},%
+ {lpoo,hplo,polh,looh},%
+ {phoo,lhpo,hopl,pool}
+}
+
+\readlist*\ListePatronsPaveCouleurs{%
+ {Orange,Crimson,Orange,LightGreen,Crimson,LightGreen},
+ {Orange,Crimson,LightGreen,Orange,Crimson,LightGreen},
+ {Orange,Crimson,LightGreen,Crimson,Orange,LightGreen},
+ {Orange,Crimson,LightGreen,Crimson,LightGreen,Orange},
+ {Crimson,Orange,LightGreen,Orange,Crimson,LightGreen},
+ {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen},
+ {Crimson,Orange,LightGreen,Crimson,LightGreen,Orange},
+ {Crimson,LightGreen,Orange,Crimson,Orange,LightGreen},
+ {Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},
+ {Crimson,LightGreen,Crimson,Orange,LightGreen,Orange},%10
+ {LightGreen,Crimson,LightGreen,Orange,Crimson,Orange},%
+ {LightGreen,Crimson,Orange,LightGreen,Crimson,Orange},%
+ {LightGreen,Crimson,Orange,Crimson,LightGreen,Orange},%
+ {LightGreen,Crimson,Orange,Crimson,Orange,LightGreen},%
+ {Crimson,LightGreen,Orange,LightGreen,Crimson,Orange},%
+ {Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},%
+ {Crimson,LightGreen,Orange,Crimson,Orange,LightGreen},%
+ {Crimson,Orange,LightGreen,Crimson,LightGreen,Orange},%
+ {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen},%
+ {Crimson,Orange,Crimson,LightGreen,Orange,LightGreen},%20
+ {Crimson,LightGreen,Crimson,Orange,LightGreen,Orange},%
+ {Crimson,LightGreen,Orange,LightGreen,Crimson,Orange},%
+ {Crimson,LightGreen,Orange,LightGreen,Crimson,Orange},%
+ {Crimson,LightGreen,Orange,LightGreen,Orange,Crimson},%
+ {LightGreen,Crimson,Orange,Crimson,LightGreen,Orange},%
+ {LightGreen,Crimson,Orange,LightGreen,Crimson,Orange},%
+ {LightGreen,Crimson,Orange,LightGreen,Orange,Crimson},%
+ {LightGreen,Orange,Crimson,LightGreen,Crimson,Orange},%
+ {LightGreen,Orange,Crimson,LightGreen,Orange,Crimson},%
+ {LightGreen,Orange,LightGreen,Crimson,Orange,Crimson},%30
+ {Orange,Crimson,LightGreen,Crimson,Orange,LightGreen},%
+ {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen},%
+ {Crimson,LightGreen,Orange,Crimson,Orange,LightGreen},%
+ {Orange,LightGreen,Crimson,LightGreen,Orange,Crimson},%
+ {LightGreen,Orange,Crimson,LightGreen,Orange,Crimson},%
+ {LightGreen,Crimson,Orange,LightGreen,Orange,Crimson},%
+ {LightGreen,Crimson,Orange,Crimson,LightGreen,Orange},%
+ {Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},%
+ {Crimson,Orange,LightGreen,Crimson,LightGreen,Orange},%
+ {LightGreen,Orange,Crimson,Orange,LightGreen,Crimson},%40
+ {Orange,LightGreen,Crimson,Orange,LightGreen,Crimson},%
+ {Orange,Crimson,LightGreen,Orange,LightGreen,Crimson},%
+ {Crimson,LightGreen,Orange,LightGreen,Crimson,Orange},%
+ {LightGreen,Crimson,Orange,LightGreen,Crimson,Orange},%
+ {LightGreen,Orange,Crimson,LightGreen,Crimson,Orange},%
+ {Crimson,Orange,LightGreen,Orange,Crimson,LightGreen},%
+ {Orange,Crimson,LightGreen,Orange,Crimson,LightGreen},%
+ {Orange,LightGreen,Crimson,Orange,Crimson,LightGreen},%
+ {Crimson,LightGreen,Crimson,Orange,LightGreen,Orange},%
+ {LightGreen,Crimson,LightGreen,Orange,Crimson,Orange},%50
+ {Crimson,Orange,Crimson,LightGreen,Orange,LightGreen},%
+ {Crimson,LightGreen,Orange,Crimson,LightGreen,Orange},%
+ {LightGreen,Crimson,Orange,LightGreen,Crimson,Orange},%
+ {Crimson,Orange,LightGreen,Crimson,Orange,LightGreen}%
+}%
+\reademptyitems
+
\def\MPPatronCubeCode{%
Arete=\useKV[ClesPatron]{Arete};
%
Modified: trunk/Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex 2024-05-18 20:13:34 UTC (rev 71294)
+++ trunk/Master/texmf-dist/tex/latex/profcollege/PfCVueCubes.tex 2024-05-18 20:13:57 UTC (rev 71295)
@@ -1,30 +1,105 @@
%%%
% Vue Cubes
%%%
-\setKVdefault[VueCubes]{Solution=false,Hauteur=5,Profondeur=4,Largeur=3,Angle=60,Nom=Ex1,Trou=false,Echelle=0.25,CouleurCube=LightSteelBlue,CouleurFleche=LightGray,Face=false,Creation=false,Grilles=false,Seul=false}
+\setKVdefault[VueCubes]{Solution=false,Hauteur=5,Profondeur=4,Largeur=3,Angle=60,Nom=Ex1,Trou=false,Echelle=0.25,CouleurCube=LightSteelBlue,CouleurFleche=LightGray,Face=false,Creation=false,Grilles=false,Seul=false,Perso=false,EclateX=0,EclateZ=0,EclateY=0}
\newtoks\toklisteVueCube%
\def\UpdatetoksVueCube#1\nil{\addtotok\toklisteVueCube{#1,}}%
+\def\UpdatetoksEmpilementPerso#1\nil{\addtotok\toklisteVueCube{"#1",}}%
\NewDocumentCommand\VueCubes{o m}{%
\useKVdefault[VueCubes]%
- \setKV[VueCubes]{#1}
- \ifboolKV[VueCubes]{Solution}{%
- \BuildVueCubesSolution%
+ \setKV[VueCubes]{#1}%
+ \toklisteVueCube{}%
+ \ifboolKV[VueCubes]{Perso}{%
+ \setsepchar[*]{,*/}\ignoreemptyitems%
+ \readlist*\ListeCouches{#2}%
+ \reademptyitems%
+ \foreachitem\compteur\in\ListeCouches{%
+ \foreachitem\compteurdeux\in\ListeCouches[\compteurcnt]{%
+ \expandafter\UpdatetoksEmpilementPerso\compteurdeux\nil%
+ }%
+ }%
+ \BuildMPEmpilementPerso{\the\toklisteVueCube}{\ListeCoucheslen}{\listlen\ListeCouches[1]}%
}{%
- \ifboolKV[VueCubes]{Creation}{%Le nombre de données doit être compatible avec le "volume du pavé droit"
- \ignoreemptyitems%
- \readlist*\PfCListeHauteursCubes{#2}%
- \reademptyitems%
- \toklisteVueCube{}%
- \foreachitem\compteur\in\PfCListeHauteursCubes{\expandafter\UpdatetoksVueCube\compteur\nil}%
- \BuildVueCubes{\useKV[VueCubes]{Angle}}{\the\toklisteVueCube}%
+ \ifboolKV[VueCubes]{Solution}{%
+ \BuildVueCubesSolution%
}{%
- \BuildVueCubes{\useKV[VueCubes]{Angle}}{}%
+ \ifboolKV[VueCubes]{Creation}{%Le nombre de données doit être compatible avec le "volume du pavé droit"
+ \ignoreemptyitems%
+ \readlist*\PfCListeHauteursCubes{#2}%
+ \reademptyitems%
+ \foreachitem\compteur\in\PfCListeHauteursCubes{\expandafter\UpdatetoksVueCube\compteur\nil}%
+ \BuildVueCubes{\useKV[VueCubes]{Angle}}{\the\toklisteVueCube}%
+ }{%
+ \BuildVueCubes{\useKV[VueCubes]{Angle}}{}%
+ }%
}%
}%
}%
+\NewDocumentCommand{\BuildMPEmpilementPerso}{mmm}{%
+ \ifluatex
+ \mplibforcehmode
+ \begin{mplibcode}
+ nbcouches=#2;
+ nblignes:=#3;
+
+ input PfCSolid;
+
+ intensite:=1.5;
+
+ Ferme[0]:=false;
+ outcolor:=\useKV[VueCubes]{CouleurCube};%
+ incolor:=white;
+ nb:=1;subh:=1;
+ creux:=true;
+
+ Phi := \useKV[VueCubes]{Angle};
+ Echelle:=\useKV[VueCubes]{Echelle};
+ EclateX:=\useKV[VueCubes]{EclateX};
+ EclateY:=\useKV[VueCubes]{EclateY};
+ EclateZ:=\useKV[VueCubes]{EclateZ};
+
+ string LesSymboles[];
+ string LesLignes[][];
+
+ TotalObj:=0;
+
+ vardef CreationSolide(text t)=
+ n:=0;
+ for p_=t:
+ n:=n+1;
+ LesSymboles[n]=p_;
+ endfor;
+ for l=nbcouches downto 1:
+ for k=nblignes downto 1:
+ LesLignes[l][k]=LesSymboles[(nbcouches-l)*nblignes+(nblignes-k+1)];
+ endfor;
+ endfor;
+ for l=nbcouches downto 1:
+ for k=nblignes downto 1:
+ for m=0 upto (length(LesLignes[l][k])-1):
+ if (substring((m,m+1)) of LesLignes[l][k])="x":
+ TotalObj:=incr TotalObj;
+ TR:=(Echelle*(nblignes-k)+Echelle*(nblignes-k)*EclateX,Echelle*(m+m*EclateY),Echelle*l-Echelle*(nbcouches-l)*EclateZ);
+ ObjetDeplacement[TotalObj](0);
+ fi;
+ endfor;
+ endfor;
+ endfor;
+ enddef;
+
+ Initialisation(2500,Phi,20,50);
+ Objetcube0("a="&decimal(Echelle));
+
+ CreationSolide(#1);
+ nbobj:=TotalObj;
+ DessineFusion;
+ \end{mplibcode}
+ \fi
+}
+
\NewDocumentCommand\BuildVueCubes{m m}{%
\ifluatex
\mplibforcehmode
Modified: trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty 2024-05-18 20:13:34 UTC (rev 71294)
+++ trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollege.sty 2024-05-18 20:13:57 UTC (rev 71295)
@@ -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{2024/04/26}%
+\def\filedate{2024/05/18}%
\let\PfCfiledate\filedate%
-\def\fileversion{0.99-A-d}%
+\def\fileversion{0.99-A-f}%
\let\PfCfileversion\fileversion%
\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]%
@@ -165,18 +165,6 @@
\def\bla{}%JCC :) Pour les tests sur arguments vides
-%% Colorer en mode mathématique. \color ne gère pas les espaces propres au mode mathématique. Donc besoin de changer
-% https://tex.stackexchange.com/questions/21598/how-to-color-math-symbols
-%\makeatletter%
-%\def\mathcolor#1#{\@mathcolor{#1}}%
-%\def\@mathcolor#1#2#3{%
-% \protect\leavevmode%
-% \begingroup%
-% \color#1{#2}#3%
-% \endgroup%
-%}%
-%\makeatother%
-
% Pb ProfCollege<->Chinois soulev\'e par Denis
% Solution by egreg :)
\newcommand\getstrut[1]{%
@@ -326,20 +314,11 @@
\IfNoValueTF{#1}{\Dotfill}{\makebox[#1]{\Dotfill}}%
}%
-%\NewDocumentCommand\Lignespointilles{m}{%
-% \xintifboolexpr{\fpeval{#1}>1}{%
-% \xintFor* ##1 in {\xintSeq {1}{\fpeval{#1}}}\do{%
-% \pointilles\par%
-% }%
-% }{}%
-%}%
-
\NewDocumentCommand\PfCNbLignesRestantes{}{%
\edef\measurepage{\dimexpr\pagegoal-\pagetotal\relax}%
- \xintifboolexpr{\fpeval{\the\measurepage}>\fpeval{\the\textheight}}{
-% Toto
- \edef\measurepage{\dimexpr\textheight\relax}
- }{}
+ \xintifboolexpr{\fpeval{\the\measurepage}>\fpeval{\the\textheight}}{%
+ \edef\measurepage{\dimexpr\textheight\relax}%
+ }{}%
\xdef\PfCResteLignes{\fpeval{trunc((\the\measurepage)/(\baselineskip),0)}}%
}%
@@ -509,16 +488,76 @@
\day=\the\PfCrappeljour\relax%
}
-\newcommand\MelangeLettres[2]{%
+\NewDocumentCommand\MelangeLettres{smm}{%
% #2 Nombre d'éléments à conserver
+ % #3 Nom de la commande qui reçoit la liste.
\setsepchar{,}\ignoreemptyitems%
\readlist*\ListeInter{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}%
\xdef\faa{}% Liste construite
\xdef\fii{}% Liste détruite
- \xintFor* ##1 in {\xintSeq{1}{#1}}\do{%
+ \IfBooleanTF{#1}{%
+ \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
+ \xintifboolexpr{\ListeInterlen>1}{%
+ \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
+ \xdef\faa{\faa\ListeInter[\Alea],}%
+ \xdef\fii{}%
+ \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
+ \xintifboolexpr{##2 == \Alea}{%
+ }{%
+ \xdef\fii{\fii \ListeInter[##2],}%
+ }%
+ }%
+ }{%
+ \xdef\faa{\faa\ListeInter[1]}%
+ }%
+ \readlist*\ListeInter{\fii}%
+ }%
+ }{%
+ \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
+ \xintifboolexpr{\ListeInterlen>1}{%
+ \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
+ \xdef\faa{\faa\ListeInter[\Alea]}%
+ \xdef\fii{}%
+ \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
+ \xintifboolexpr{##2 == \Alea}{%
+ }{%
+ \xdef\fii{\fii \ListeInter[##2],}%
+ }%
+ }%
+ }{%
+ \xdef\faa{\faa\ListeInter[1]}%
+ }%
+ \readlist*\ListeInter{\fii}%
+ }%
+ }%
+ \xdef#3{\faa}%
+}%
+
+\NewDocumentCommand\MelangeListe{smm}{%
+ \IfBooleanTF{#1}{%
+ %Si on cherche un seul élément, on peut l'utiliser directement
+ \MelangeListeOne{#2}{#3}%
+ }{%
+ \MelangeListeNoOne{#2}{#3}%
+ }%
+}
+
+\NewDocumentCommand\MelangeListeOne{mm}{%
+ % #1 Liste à mélanger
+ % #2 Nombre d'éléments à conserver
+ \setsepchar{,}\ignoreemptyitems%
+ \readlist*\ListeInter{#1}%
+ \xdef\faa{}% Liste construite
+ \xdef\fii{}% Liste détruite
+ % on crée les #2 premieres solutions.
+ \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
\xintifboolexpr{\ListeInterlen>1}{%
\xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
- \xdef\faa{\faa\ListeInter[\Alea]}%
+ \ifnum\fpeval{##1}=1\relax
+ \xdef\faa{\ListeInter[\Alea]}%
+ \else
+ \xdef\faa{\faa,\ListeInter[\Alea]}%
+ \fi
\xdef\fii{}%
\xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
\xintifboolexpr{##2 == \Alea}{%
@@ -527,14 +566,14 @@
}%
}%
}{%
- \xdef\faa{\faa\ListeInter[1]}%
+ \xdef\faa{\faa,\ListeInter[1]}%
}%
\readlist*\ListeInter{\fii}%
}%
- \xdef#2{\faa}%
+ \reademptyitems%
}%
-\newcommand\MelangeListe[2]{%
+\NewDocumentCommand\MelangeListeNoOne{mm}{%
% #1 Liste à mélanger
% #2 Nombre d'éléments à conserver
\setsepchar{,}\ignoreemptyitems%
@@ -787,6 +826,8 @@
\def\PfCSymbolTimes{\times}%
\def\PfCSymbolDiv{\div}%
+\input{PfCVisualisationMulDeci}
+\input{PfCArbreChiffre}
\input{PfCAssemblagesSolides}
\input{PfCTicketCaisse}
\input{PfCRecyclage}
Deleted: trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollegeT.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollegeT.sty 2024-05-18 20:13:34 UTC (rev 71294)
+++ trunk/Master/texmf-dist/tex/latex/profcollege/ProfCollegeT.sty 2024-05-18 20:13:57 UTC (rev 71295)
@@ -1,974 +0,0 @@
-% Author : Christophe Poulain
-% licence : Released under the LaTeX Project Public License v1.3c
-% or later, see http://www.latex-project.org/lppl.txtf
-\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2024/05/15}%
-\let\PfCfiledate\filedate%
-\def\fileversion{0.99-A-e}%
-\let\PfCfileversion\fileversion%
-\ProvidesPackage{ProfCollege}[\filedate\space v\fileversion\space Aide pour utiliser LaTeX au college]%
-
-\RequirePackage{verbatim}%
-
-\RequirePackage{mathtools}%
-
-\newif\if at shellescape \@shellescapetrue%
-\newif\if at amssymb \@amssymbtrue%
-%
-\newif\if at Euro \@Eurotrue
-\newif\if at CFA \@CFAfalse
-\newif\if at CFP \@CFPfalse
-\newif\if at CHF \@CHFfalse
-\newif\if at US \@USfalse
-\newif\if at UK \@UKfalse
-
-\DeclareOption{CFA}{\@Eurofalse\@CFAtrue}%
-\DeclareOption{CFP}{\@Eurofalse\@CFPtrue}%
-\DeclareOption{CHF}{\@Eurofalse\@CHFtrue}%
-\DeclareOption{UK}{\@Eurofalse\@UKtrue}%
-\DeclareOption{US}{\@Eurofalse\@UStrue}%
-%
-\DeclareOption{nonshellescape}{\@shellescapefalse}%
-\DeclareOption{nonamssymb}{\@amssymbfalse}%
-\ProcessOptions\relax%
-
-\if at amssymb%
-\RequirePackage{amssymb}%
-\fi%
-
-% mathématiques
-\RequirePackage{siunitx}%
-\sisetup{%
- 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,%
- quantity-product={~}%
-}%
-\DeclareSIUnit{\kmh}{\km\per\hour}%
-\newcommand\speed[1]{\SI{#1}{\kmh}}%
-\newcommand\Speed[1]{\SI[per-mode=symbol]{#1}{\kmh}}%
-
-\DeclareSIUnit{\are}{a}%
-\DeclareSIUnit{\annee}{an}%
-\DeclareSIUnit{\mois}{mois}%
-\DeclareSIUnit{\jour}{j}%
-\DeclareSIUnit{\quintal}{q}%
-\DeclareSIUnit{\octet}{o}%
-\DeclareSIUnit{\fahrenheit}{\text{\textdegree}F}%
-\DeclareSIUnit{\EuRo}{€}%
-\DeclareSIUnit{\Dollar}{\$}%
-\DeclareSIUnit{\LivreSterling}{£}%
-\DeclareSIUnit{\PfCCFA}{F.C.F.A.}%
-\DeclareSIUnit{\PfCCFP}{F.C.F.P.}%
-\DeclareSIUnit{\PfCCHF}{CHF}%
-
-%
-\if at CFA%
- \DeclareSIUnit{\DeviseDefaut}{F.C.F.A.}%
-\fi%
-\if at CFP%
- \DeclareSIUnit{\DeviseDefaut}{F.C.F.P.}%
-\fi%
-\if at CHF%
- \DeclareSIUnit{\DeviseDefaut}{CHF}%
-\fi%
-\if at Euro%
- \DeclareSIUnit{\DeviseDefaut}{€}%
-\fi%
-\if at US%
- \DeclareSIUnit{\DeviseDefaut}{\Dollar}%
-\fi%
-\if at UK%
- \DeclareSIUnit{\DeviseDefaut}{\LivreSterling}%
-\fi%
-
-
-\RequirePackage[table,svgnames]{xcolor}%Gestion des couleurs
-%\PassOptionsToPackage{table,svgnames}{xcolor}
-\RequirePackage{xstring}%Gestion de chaines de caractères
-\RequirePackage{simplekv}%Gestion de paramètres sous forme de clés
-\RequirePackage{ifthen}%
-\RequirePackage{modulus}%Pour certains calculs arithmétiques.
-\RequirePackage{xinttools}%Pour la création dynamique d'un tableau
-
-\RequirePackage{iftex}%
-
-\ifluatex%
-\RequirePackage{luacas}%
-\RequirePackage{luamplib}%
-\mplibtextextlabel{enable}%à partir de la v2.25 de mplibcode
-\everymplib{input PfCSvgnames; input PfCConstantes; input PfCGeometrie; input PfCAfficheur; beginfig(1);}%
-\everyendmplib{endfig;}%
-\else%
-\if at shellescape%
-\RequirePackage[shellescape,latex]{gmp}%inclusion de figures metapost "à la volée"%
-\else%
-%
-\RequirePackage[latex]{gmp}%inclusion de figures metapost "à la volée"%
-\fi%
-\gmpoptions{everymp={prologues:=3; input PfCLaTeX; input PfCSvgnames; input PfCConstantes; input PfCGeometrie; input PfCAfficheur;}}%
-\usempxclass{article}%
-\usempxpackage{ProfCollege}%
-\usempxpackage[utf8]{inputenc}%
-\usempxpackage[T1]{fontenc}%
-\usempxpackage{fourier}%
-\usempxpackage[french]{babel}%
-\usempxpackage{pifont}%
-\fi%
-
-\RequirePackage{xintexpr}%
-\RequirePackage{listofitems}%
-\RequirePackage{datatool}%
-\RequirePackage{multido}%
-
-\RequirePackage{xlop}%
-
-\RequirePackage{tcolorbox}%
-\tcbuselibrary{breakable,external,fitting,hooks,magazine,poster,raster,skins,theorems,listings,listingsutf8}
-
-\RequirePackage{tikz}%
-% 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,backgrounds}%
-
-%\RequirePackage{suffix}%pour la commande étoilée
-
-\RequirePackage{multicol}%
-
-\RequirePackage{hhline}%
-
-\RequirePackage{stackengine}%
-\RequirePackage[thicklines]{cancel}%
-
-\RequirePackage{fontawesome5}%
-\RequirePackage{pifont}%Pour la commande \Autonomie
-\RequirePackage{nicematrix}%
-\NiceMatrixOptions{allow-duplicate-names}%
-
-\let\myoldmulticolumn\multicolumn%
-\AtBeginEnvironment{tabular}{\let\multicolumn\myoldmulticolumn}%
-
-%\RequirePackage{multirow}%
-\RequirePackage{longtable}
-
-\RequirePackage{fmtcount}%
-\FCloadlang{french}%
-
-% https://stackoverflow.com/questions/3391103/how-to-make-the-grayed-round-box-using-tiks
-%\RequirePackage{environ}%
-
-%%%%% Quelques besoins particuliers
-
-\def\bla{}%JCC :) Pour les tests sur arguments vides
-
-% Pb ProfCollege<->Chinois soulev\'e par Denis
-% Solution by egreg :)
-\newcommand\getstrut[1]{%
- \the\expandafter#1\expanded{\strutbox}%
-}%
-
-% Colorer uniquement la barre de soulignement
-% https://tex.stackexchange.com/questions/9466/color-underline-a-formula/153884
-\def\mathunderline#1#2{\color{#1}\underline{{\color{black}#2}}\color{black}}%
-
-% Ecrire des lignes d'équations
-\catcode`\@=11%
-\def\Eqalign#1{\null\,\vcenter{\openup\jot\m at th\ialign{%
- \strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil%
- &&\quad\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$%
- \hfil\crcr #1\crcr}}\,}%
-\catcode`\@=12%
-
-%%%
-% Commandes "utiles"
-%%%
-\NewDocumentCommand\NumMA{m}{%
- \xintifboolexpr{#1<0}{%
- (\num{#1})%
- }{%
- \num{#1}%
- }%
-}%
-
-\NewDocumentCommand\NumS{m}{%
- \xintifboolexpr{#1==0}{}{\xintifboolexpr{#1>0}{+\num{#1}}{\num{#1}}}
-}%
-
-\newcounter{Marque}
-
-\NewDocumentCommand\AffichageTab{O{x}mmm}{%
- \ifnum#2=0\relax%
- \ifnum#3=0\relax%
- \ifnum#4=0\relax%
- \else%
- #4%
- \fi%
- \else%
- #3*#1%
- \ifnum#4=0\relax%
- \else%
- \ifnum#4<0\relax%
- #4%
- \else%
- +#4%
- \fi%
- \fi%
- \fi%
- \else%
- #2*#1*#1%
- \ifnum#3=0\relax%
- \ifnum#4=0\relax%
- \else%
- \ifnum#4<0%
- #4%
- \else%
- +#4%
- \fi%
- \fi%
- \else%
- \ifnum#3<0%
- #3*#1%
- \else%
- +#3*#1%
- \fi%
- \ifnum#4=0\relax%
- \else%
- \ifnum#4<0%
- #4%
- \else%
- +#4%
- \fi%
- \fi%
- \fi%
- \fi%
-}%
-%encadrer avec des "sommets arrondis"
-%\newsavebox{\logobox}%
-
-\newcommand\Logo[2]{%
-\setbox1=\hbox{\includegraphics[scale=#2]{#1}}%
-\begin{tikzpicture}%
-\clip[rounded corners=5mm] (0,0) rectangle (\wd1,\ht1);%
-\node[xshift=0.5\wd1, yshift=0.5\ht1, inner xsep=0pt, inner ysep=0pt] (box) {%
-\includegraphics[scale=#2]{#1}%
-};%
-\end{tikzpicture}%
-}%
-
-\newcommand\LogoTW[2]{%
-\setbox1=\hbox{\includegraphics[scale=#2]{#1}}%
-\begin{tikzpicture}%
- \clip (0,0) circle (4mm);%
- \draw (0,0) circle (4mm);%
- \node[xshift=0mm, yshift=0mm, inner xsep=0pt, inner ysep=0pt] (0,0) {%
- \includegraphics[scale=#2]{#1}%
- };%
-\end{tikzpicture}%
-}%
-
-\makeatletter
-\def\Suspensionfill{%
-\leavevmode
-\cleaders \hb at xt@\LongBoitePoint{\ldotp}\hfill
-\kern\z@}
-\makeatother
-
-\newlength{\LongBoitePoint}
-
-\NewDocumentCommand\PointsSuspension{m}{%
- \setbox2=\hbox{\ldotp}%
- \setlength{\LongBoitePoint}{\wd2}%
- \ifx\bla#1\bla%
- \Suspensionfill%
- \else%
- \setbox1=\hbox{#1}%
- \StrLen{#1}[\LongueurPoints]%
- \ifmmode%
- \mathinner{%
- \xintFor* ##1 in {\xintSeq{1}{\LongueurPoints}}\do{%
- \ldotp%
- }%
- }%
- \else%
- \xintFor* ##1 in {\xintSeq{1}{\fpeval{round(\wd1/\wd2)}}}\do{%
- \ldotp%
- }%
- \fi%
- \fi%
-}%
-
-\makeatletter%
-\NewDocumentCommand\Dotfill{}{%
-\leavevmode%
-\cleaders\hb at xt@.44em{\hss\xleaders\hrule width0.33em\hss}\hfill%
-\kern\z@}%
-
-\NewDocumentCommand\PfCdotover{}{\leavevmode\cleaders\hb at xt@ .22em{\hss $\cdot$\hss}\hfill\kern\z@}%
-\makeatother%
-
-\NewDocumentCommand\pointilles{o}{%
- \IfNoValueTF{#1}{\Dotfill}{\makebox[#1]{\Dotfill}}%
-}%
-
-\NewDocumentCommand\PfCNbLignesRestantes{}{%
- \edef\measurepage{\dimexpr\pagegoal-\pagetotal\relax}%
- \xintifboolexpr{\fpeval{\the\measurepage}>\fpeval{\the\textheight}}{%
- \edef\measurepage{\dimexpr\textheight\relax}%
- }{}%
- \xdef\PfCResteLignes{\fpeval{trunc((\the\measurepage)/(\baselineskip),0)}}%
-}%
-
-\NewDocumentCommand\PfCLignesFinales{}{%
- \PfCNbLignesRestantes%
- \xintFor* ##1 in {\xintSeq {1}{\PfCResteLignes}}\do{%
- \pointilles\par%
- }%
-}%
-
-\NewDocumentCommand\Lignespointilles{m}{%
- \ifx\bla#1\bla%
- \par\PfCLignesFinales%
- \else%
- \xintifboolexpr{\fpeval{#1}>1}{%
- \xintFor* ##1 in {\xintSeq {1}{#1}}\do{%
- \pointilles\par%
- }%
- }{}%
- \fi
-}%
-
-%https://tex.stackexchange.com/questions/128991/frac-or-inference-rule-with-dotted-line
-\newcommand\PfCfrac[2]{%
-\ooalign{$\genfrac{}{}{0pt}{0}{#1}{#2}$\cr\PfCdotover\cr}%
-}%
-
-\NewDocumentCommand\MultiCol{O{}+m+m}{%
- \setsepchar[*]{/}%
- \readlist*\ListeNombreCol{#2}%
- \setsepchar[*]{§}%
- \readlist*\ListeContenuCol{#3}%
- \xintFor* ##1 in {\xintSeq{1}{\ListeNombreCollen}}\do{%
- \itemtomacro\ListeContenuCol[##1]\PfMTexte
- \begin{minipage}[#1]{\ListeNombreCol[##1]\linewidth}%
- \PfMTexte
- \end{minipage}%
- \xintifboolexpr{##1<\ListeNombreCollen}{\hfill\vrule width \columnseprule\hfill}{}%
- }%
-}%
-
-\newcount\PfCrappeljour%
-
-\newcommand\Demain{%
- \PfCrappeljour=\day\relax%
- \advance\day by 1\relax%
- \ifnum\month=1\relax%
- \ifnum\day>31\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=2\relax%
- \ifnum\day>28\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=3\relax%
- \ifnum\day>31\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=4\relax%
- \ifnum\day>30\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=5\relax%
- \ifnum\day>31\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=6\relax%
- \ifnum\day>30\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=7\relax%
- \ifnum\day>31\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=8\relax%
- \ifnum\day>31\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=9\relax%
- \ifnum\day>30\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=10\relax%
- \ifnum\day>31\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=11\relax%
- \ifnum\day>30\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \ifnum\month=12\relax%
- \ifnum\day>31\relax%
- \day=\numexpr1\relax%
- \advance\month by 1\relax%
- \today\relax%
- \advance\month by -1\relax%
- \else%
- \today\relax%
- \fi%
- \fi%
- \day=\the\PfCrappeljour\relax%
-}
-
-\NewDocumentCommand\MelangeLettres{smm}{%
- % #2 Nombre d'éléments à conserver
- % #3 Nom de la commande qui reçoit la liste.
- \setsepchar{,}\ignoreemptyitems%
- \readlist*\ListeInter{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}%
- \xdef\faa{}% Liste construite
- \xdef\fii{}% Liste détruite
- \IfBooleanTF{#1}{%
- \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
- \xintifboolexpr{\ListeInterlen>1}{%
- \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
- \xdef\faa{\faa\ListeInter[\Alea],}%
- \xdef\fii{}%
- \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
- \xintifboolexpr{##2 == \Alea}{%
- }{%
- \xdef\fii{\fii \ListeInter[##2],}%
- }%
- }%
- }{%
- \xdef\faa{\faa\ListeInter[1]}%
- }%
- \readlist*\ListeInter{\fii}%
- }%
- }{%
- \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
- \xintifboolexpr{\ListeInterlen>1}{%
- \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
- \xdef\faa{\faa\ListeInter[\Alea]}%
- \xdef\fii{}%
- \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
- \xintifboolexpr{##2 == \Alea}{%
- }{%
- \xdef\fii{\fii \ListeInter[##2],}%
- }%
- }%
- }{%
- \xdef\faa{\faa\ListeInter[1]}%
- }%
- \readlist*\ListeInter{\fii}%
- }%
- }%
- \xdef#3{\faa}%
-}%
-
-\NewDocumentCommand\MelangeListe{smm}{%
- \IfBooleanTF{#1}{%
- %Si on cherche un seul élément, on peut l'utiliser directement
- \MelangeListeOne{#2}{#3}%
- }{%
- \MelangeListeNoOne{#2}{#3}%
- }%
-}
-
-\NewDocumentCommand\MelangeListeOne{mm}{%
- % #1 Liste à mélanger
- % #2 Nombre d'éléments à conserver
- \setsepchar{,}\ignoreemptyitems%
- \readlist*\ListeInter{#1}%
- \xdef\faa{}% Liste construite
- \xdef\fii{}% Liste détruite
- % on crée les #2 premieres solutions.
- \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
- \xintifboolexpr{\ListeInterlen>1}{%
- \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
- \ifnum\fpeval{##1}=1\relax
- \xdef\faa{\ListeInter[\Alea]}%
- \else
- \xdef\faa{\faa,\ListeInter[\Alea]}%
- \fi
- \xdef\fii{}%
- \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
- \xintifboolexpr{##2 == \Alea}{%
- }{%
- \xdef\fii{\fii \ListeInter[##2],}%
- }%
- }%
- }{%
- \xdef\faa{\faa,\ListeInter[1]}%
- }%
- \readlist*\ListeInter{\fii}%
- }%
- \reademptyitems%
-}%
-
-\NewDocumentCommand\MelangeListeNoOne{mm}{%
- % #1 Liste à mélanger
- % #2 Nombre d'éléments à conserver
- \setsepchar{,}\ignoreemptyitems%
- \readlist*\ListeInter{#1}%
- \xdef\faa{}% Liste construite
- \xdef\fii{}% Liste détruite
- % on crée les #2 premieres solutions.
- \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
- \xintifboolexpr{\ListeInterlen>1}{%
- \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
- \xdef\faa{\faa \ListeInter[\Alea],}%
- \xdef\fii{}%
- \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
- \xintifboolexpr{##2 == \Alea}{%
- }{%
- \xdef\fii{\fii \ListeInter[##2],}%
- }%
- }%
- }{%
- \xdef\faa{\faa \ListeInter[1]}%
- }%
- \readlist*\ListeInter{\fii}%
- }%
- \reademptyitems%
-}%
-
-\newcommand\MelangeListeNewTwo[2]{%
- % #1 Liste à mélanger
- % #2 Nombre d'éléments à conserver
- \setsepchar{,}\ignoreemptyitems%
- \readlist*\ListeInter{#1}%
-% \xdef\faa{}% Liste construite
- \xdef\fii{}% Liste détruite
- % on crée les #2 premieres solutions.
- \xintFor* ##1 in {\xintSeq{1}{#2}}\do{%
- \xintifboolexpr{\ListeInterlen>1}{%
- \xdef\Alea{\fpeval{randint(\ListeInterlen)}}%
- \ifnum\fpeval{##1}=1\relax
- \xdef\faa{\ListeInter[\Alea]}%
- \else
- \xdef\faa{\faa,\ListeInter[\Alea]}%
- \fi
- \xdef\fii{}%
- \xintFor* ##2 in {\xintSeq{1}{\ListeInterlen}}\do{%
- \xintifboolexpr{##2 == \Alea}{%
- }{%
- \xdef\fii{\fii \ListeInter[##2],}%
- }%
- }%
- }{%
- \xdef\faa{\faa \ListeInter[1]}%
- }%
- \readlist*\ListeInter{\fii}%
- }%
- \reademptyitems%
-}%
-
-%%%
-% Smiley
-%%% https://tex.stackexchange.com/questions/3695/smileys-in-latex/227226
-\tikzset{face/.style={shape=circle,minimum size=4ex,shading=radial,outer sep=0pt, inner color=white!50!yellow,outer color= yellow!70!orange}}
-
-\newcommand\emoticon[2][]{%
-\scalebox{.5}{\begin{tikzpicture}
-\node[face,#1,draw,thick] (emoticon) {};
-%% The eyes are fixed.
-\draw[fill=white] (-1ex,0ex) ..controls (-0.5ex,0.2ex)and(0.5ex,0.2ex)..(1ex,0.0ex) ..controls ( 1.5ex,1.5ex)and( 0.2ex,1.7ex)..(0ex,0.4ex) ..controls (-0.2ex,1.7ex)and(-1.5ex,1.5ex)..(-1ex,0ex)--cycle;
-#2%
-\end{tikzpicture}}%
-}
-
-\newcommand\pupils{
-%% standard pupils
-\fill[shift={(0.5ex,0.5ex)},rotate=80] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate=100] (0,0) ellipse (0.3ex and 0.15ex);}
-
-\def\RKsmallsmile{%
-\emoticon{%
-\pupils
-%% mouth
-\draw[thick] (-0.5ex,-1ex)..controls (-0.25ex,-1.25ex)and(0.25ex,-1.25ex)..(0.5ex,-1ex);
-}%\emoticon
-}
-
-\def\RKsmile{%
-\emoticon{%
-\pupils
-\draw[thick] (-1ex,-1ex)..controls (-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
-}%\emoticon
-}
-
-\def\RKbigsmile{%
-\emoticon{%
-\pupils
-%% mouth
-\draw[thick] (-1.5ex,-0.5ex)..controls (-0.7ex,-1.7ex)and(0.7ex,-1.7ex)..(1.5ex,-0.5ex);
-}%\emoticon
-}
-
-\def\RKsad{%
-\emoticon{%
-%% pupils
-\fill[shift={( 0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
-%% mouth
-\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-0.5ex)and(0.5ex,-0.5ex)..(1ex,-1ex);
-}%\emoticon
-}
-
-\def\RKneutral{%
-\emoticon{%
-%% pupils
-\fill[shift={( 0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
-%% mouth
-\draw[thick] (-0.5ex,-1ex)--(0.5ex,-1ex);
-}%\emoticon
-}
-
-\def\RKconfused{%
-\emoticon{%
-\pupils
-%% mouth
-\draw[thick] (-1ex,-0.75ex)--(1ex,-1.25ex);
-}%\emoticon
-}
-
-\def\RKsexy{%
-\emoticon{%
-\pupils
-%% mouth
-\draw[very thick,red,line cap=round] (-1ex,-1ex)..controls (-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
-%% eyelashes
-\draw (0.60ex,1.20ex)--(0.60ex,1.60ex)
- (0.85ex,1.25ex)--(0.95ex,1.45ex)
- (1.00ex,1.00ex)--(1.20ex,1.10ex)
- (0.35ex,1.15ex)--(0.25ex,1.35ex)
- (-0.60ex,1.20ex)--(-0.60ex,1.60ex)
- (-0.85ex,1.25ex)--(-0.95ex,1.45ex)
- (-1.00ex,1.00ex)--(-1.20ex,1.10ex)
- (-0.35ex,1.15ex)--(-0.25ex,1.35ex);
-}%\emoticon
-}
-
-\def\RKangry{%
-\emoticon{%
-%% pupils
-\fill[shift={( 0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate=90] (0,0) ellipse (0.3ex and 0.15ex);
-%% mouth
-\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-0.5ex)and(0.5ex,-0.5ex)..(1ex,-1ex);
-%% eyebrows
-\draw[thick] (0.2ex,1.15ex)--(0.5ex,1.6ex)(-0.2ex,1.15ex)--(-0.5ex,1.6ex);
-}%\emoticon
-}
-
-\def\RKlookup{%
-\emoticon{%
-%% pupils
-\fill[shift={( 0.5ex,1.05ex)},rotate= 80] (0,0) ellipse (0.2ex and 0.2ex);
-\fill[shift={(-0.5ex,1.05ex)},rotate=100] (0,0) ellipse (0.2ex and 0.2ex);
-%% mouth
-\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
-}%\emoticon
-}
-
-\def\RKlookdown{%
-\emoticon{%
-%% pupils
-\fill[shift={( 0.5ex,0.3ex)},rotate= 80] (0,0) ellipse (0.2ex and 0.2ex);
-\fill[shift={(-0.5ex,0.3ex)},rotate=100] (0,0) ellipse (0.2ex and 0.2ex);
-%% mouth
-\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
-}%\emoticon
-}
-
-\def\RKlookleft{%
-\emoticon{%
-%% pupils
-\fill[shift={( 0.25ex,0.5ex)},rotate=100] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.95ex,0.5ex)},rotate=100] (0,0) ellipse (0.3ex and 0.15ex);
-%% mouth
-\draw[thick] (-1ex,-1ex)..controls(-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
-}%\emoticon
-}
-
-\def\RKlookright{%
-\emoticon{%
-%% pupils
-\fill[shift={( 0.95ex,0.5ex)},rotate=80] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.25ex,0.5ex)},rotate=80] (0,0) ellipse (0.3ex and 0.15ex);
-%% mouth
-\draw[thick] (-1.0ex,-1ex)..controls(-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
-}%\emoticon
-}
-
-\def\RKblush{%
-\emoticon{%
-\pupils
-%% mouth
-\draw[thick] (-0.5ex,-1ex)..controls (-0.25ex,-1.25ex)and(0.25ex,-1.25ex)..(0.5ex,-1ex);
-%% blush
-\shade[shading=radial,inner color=white!50!red,outer color= yellow!80!orange] ( 1ex,-0.5ex) circle (0.4ex);
-\shade[shading=radial,inner color=white!50!red,outer color= yellow!80!orange] (-1ex,-0.5ex) circle (0.4ex);
-}%\emoticon
-}
-
-\def\RKalmostcrying{%
-\emoticon{%
-%% pupils
-\fill[shift={( 0.5ex,0.5ex)},rotate=105] (0,0) ellipse (0.3ex and 0.15ex);
-\fill[shift={(-0.5ex,0.5ex)},rotate= 75] (0,0) ellipse (0.3ex and 0.15ex);
-%% mouth
-\draw[thick] (-1ex,-1ex)..controls
-(-0.5ex,-0.8ex)and(0.5ex,-0.8ex)..(1ex,-1ex);
-}%\emoticon
-}
-
-\def\RKmartian{%
-\emoticon[inner color=white!50!green,outer color=green!70!red]{%
-\pupils
-%% mouth
-\draw[thick] (-1ex,-1ex)..controls
-(-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
-}%\emoticon
-}
-
-\def\RKdevilish{%
-\raisebox{-0.6ex}[0ex][0ex]{%
-\emoticon[inner color=white!50!red,outer color= red!70!red!90!black]{%
-\pupils
-%% mouth
-\draw[thick,line cap=round] (-1ex,-1ex)..controls (-0.5ex,-1.5ex)and(0.5ex,-1.5ex)..(1ex,-1ex);
-%% tail
-\draw[line width=0.45ex,-stealth,black] (emoticon.330)--++(330:0.01ex)..controls (3ex,-3ex)and(3.5ex,1ex)..(4.25ex,-3ex);
-\draw[line width=0.27ex,-stealth,red!90!black] (emoticon.330)--++(330:0.01ex)..controls (3ex,-3ex)and(3.5ex,1ex)..(4.22ex,-2.8ex);
-%% horns
-\draw[fill] (emoticon.80)..controls ( 0.6ex,2.4ex)..( 1ex,2.5ex)..controls ( 0.8ex,2.3ex)..(emoticon.70);
-\draw[fill] (emoticon.100)..controls (-0.6ex,2.4ex)..(-1ex,2.5ex)..controls (-0.8ex,2.3ex)..(emoticon.110);
-\draw[thick] (0,0) circle (2ex);
-}%\emoticon
-}%\raisebox
-}%
-
-\setsepchar[*]{,*/}\ignoreemptyitems
-\readlist*\ListeMateriaux{aluminium/'/2.7,chêne/e~/0.69,bouleau/e~/0.65,sapin/e~/0.45,polystyrène/e~/1.04,porcelaine/la/2.5,acier/'/7.85,cuivre/e~/8.92,fer/e~/7.86,or/'/19.3,argent/'/10.5,bronze/e~/8.4,plomb/e~/11.35,marbre/e~/2.75,laiton/e~/7.3,titane/e~/4.5,PVC/e~/1.38}
-\setsepchar{,}\reademptyitems
-
-%Internationalisation
-\def\PfCSymbolTimes{\times}%
-\def\PfCSymbolDiv{\div}%
-
-\input{PfCVisualisationMulDeci}
-\input{PfCArbreChiffre}
-\input{PfCAssemblagesSolides}
-\input{PfCTicketCaisse}
-\input{PfCRecyclage}
-\input{PfCDontCountDots}
-\input{PfCConversion}
-\input{PfCCritere}
-\input{PfCLego}
-\input{PfCJeton}
-\input{PfCDessinAlgo}
-\input{PfCBonbon}
-\input{PfCPattern}
-\input{PfCNumerationsAnciennes}
-\input{PfCSerpent}
-\input{PfCFractionNombre}
-\input{PfCAllumettes}
-\input{PfCFractionAireCarre.tex}
-\input{PfCMulJal}
-\input{PfCCibleQOp}
-\input{PfCFubuki}
-\input{PfCMulJap}
-\input{PfCCryptarithme}
-\input{PfCDefiCalc}
-\input{PfCMulArt}
-\input{PfCGrimuku}
-\input{PfCHorloge}
-\input{PfCCible}
-\input{PfCMulPiecesPuzzle}
-\input{PfCPyraVoca}
-\input{PfCAutomatismes}
-\input{PfCNumberHive}
-\input{PfCPatronPaves}
-\input{PfCEratosthene}
-\input{PfCDobble}
-\input{PfCPavage}
-\input{PfCNonogramme}
-\input{PfCJeuRangement}
-\input{PfCTrio}
-\input{PfCCalculsFractions}
-\input{PfCDecDeci}
-\input{PfCKakurasu}
-\input{PfCMidpoint}
-\input{PfCGrades}
-\input{PfCSquaro}
-\input{PfCGaram}
-\input{PfCFutoshiki}
-\input{PfCRondeInfernale}
-\input{PfCHiddenMessage}
-\input{PfCPuzzleSommePyramide}
-\input{PfCCalisson}
-\input{PfCTectonic}
-\input{PfCEnigmeAire}
-\input{PfCBarresCalculs}
-\input{PfCSolides}
-\input{PfCVueCubes}
-\input{PfCRLE}
-\input{PfCEngrenagesBase}
-\input{PfCTortueBase}
-\input{PfCCompteBon}
-\input{PfCNombreAstral}
-\input{PfCMentalo}
-\input{PfCCalculsCroises}
-\input{PfCShikaku}
-\input{PfCKakuro}
-\input{PfCKenKen}
-\input{PfCPixelArt}
-\input{PfCYohaku}
-\input{PfCRose}
-\input{PfCPuissanceQuatre}
-\input{PfCBillard}
-\input{PfCRepresenterEntier}
-\input{PfCCAN}
-\input{PfCFrise}
-\input{PfCGeometrie}
-\input{PfCEnquete}
-\input{PfCModeleBarre}
-\input{PfCFicheMemo}
-\input{PfCOperationsTrou}
-\input{PfCCartographie}
-\input{PfCReseauxSociaux}
-\input{PfCBonSortie}
-\input{PfCEcritureLettres}
-\input{PfCDecompFracDeci}
-\input{PfCPyramideCalculs}
-\input{PfCTablesOperations}
-\input{PfCDefiTables}
-\input{PfCRangementNombres}
-\input{PfCMotsCodes}
-\input{PfCLabyrintheJeu}
-\input{PfCTriominos}
-\input{PfCLabyrintheNombre}
-\input{PfCMotsCroises}
-\input{PfCMotsEmpiles}
-\input{PfCColorilude}
-\input{PfCMosaique}
-\input{PfCQuiSuisJe}
-\input{PfCDessinGradue}
-\input{PfCAutonomie}
-\input{PfCCalculatrice}
-\input{PfCQuestionsFlash}
-\input{PfCRapido}
-\input{PfCRepresenterFraction}
-\input{PfCQuestionsRelier}
-\input{PfCEcrireunQCM}
-\input{PfCSommeAngles}
-\input{PfCPythagore}
-\input{PfCDistributivite}
-\input{PfCFactorisation}
-\input{PfCDecomposerNombrePremier}
-\input{PfCSimplifierFraction}
-\input{PfCThales}
-\input{PfCTrigonometrie}
-\input{PfCStatistiques}
-\input{PfCDiagrammeRadar}
-\input{PfCBarreNiveaux}
-\input{PfCResoudreEquation}
-\input{PfCPropor}
-\input{PfCPourcentage}
-\input{PfCDessinerRatio}
-\input{PfCCartesMentales}
-\input{PfCProprietesDroites}
-\input{PfCFonctionAffine}
-\input{PfCNotionFonction}
-\input{PfCRepresentationGraphique}
-\input{PfCRappelsFormules}
-\input{PfCProbabilites}
-\input{PfCReperage}
-
-%%%
-% Puissances
-%%%
-\newcommand\Puissances[2]{%
- \ensuremath{%
- \xintifboolexpr{#2==0}{1}{\xintifboolexpr{#2>0}{\xdef\TotalP{\fpeval{#2-1}}#1\xintFor* ##1 in{\xintSeq{1}{\TotalP}}\do{\times#1}}{\xdef\TotalP{\fpeval{-#2-1}}\frac{1}{#1\xintFor* ##1 in{\xintSeq{1}{\TotalP}}\do{\times#1}}}}%
- }%
-}%
-
-\input{PfCEcritureUnites}
-\input{PfCTableauxUnites}
-\input{PfCCartesJeux}
-\input{PfCRepresenterTableur}
-\input{PfCDomino}
-\input{PfCProgrammeCalcul}
-\input{PfCPapiers}
-\input{PfCScratch}
\ No newline at end of file
More information about the tex-live-commits
mailing list.