summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/proflycee/tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-03-09 03:04:53 +0000
committerNorbert Preining <norbert@preining.info>2024-03-09 03:04:53 +0000
commitbb1788335b7c394ee980b7b6f12b81f5223bbd63 (patch)
tree1c53bbe5ff2a09f7864c9f758ed934b014aa58f5 /macros/latex/contrib/proflycee/tex
parent0eba0875b1bcc4a022360ed72a29a81e041cd467 (diff)
CTAN sync 202403090304
Diffstat (limited to 'macros/latex/contrib/proflycee/tex')
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty10
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex80
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-espace.tex284
-rw-r--r--macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex135
4 files changed, 482 insertions, 27 deletions
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 0c71456d5d..05945a83b1 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,10 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2024/02/23 3.02c Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2024/03/07 3.02f Aide pour l'utilisation de LaTeX en lycee]
+% 3.02f Ajout de petits schémas type pour la géométrie dans l'espace + conformité avec piton
+% 3.02e Présentation python dans la style 'thonny' + amélioration dans la gestion du gobble avec piton
+% 3.02d Retenues pour les soustractions dans les opérations posées
% 3.02c Ajout d'une commande pour le calcul d'une congruence (+petite pos / +petite nég) + ligne tkz-convex + Opérations posées
% 3.02b Amélioration du code pour les arbres de probas (tks M. Degrange pour les suggestions)
% 3.02a Ajout des [ecritures] proba conditionnelle, norme, valeur absolue et IF/IC
@@ -152,6 +155,11 @@
\input{proflycee-tools-piton.tex}
}%
{}%
+ \IfSubStr{#1}{espace}%
+ {%
+ \input{proflycee-tools-espace.tex}
+ }%
+ {}%
\IfSubStr{#1}{minted}%
{%
\if@build
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex
index 1d8b4f2826..eccfd35733 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-arithm.tex
@@ -1269,7 +1269,8 @@
Offset=6pt,%
AffEgal=true,%
LimiteCapac=0,%
- CouleurRetenue=red
+ CouleurRetenue=red,%
+ AffRetenues=true
}
\NewDocumentCommand\IntCalcMaxWidth{ m }{%
@@ -1279,20 +1280,22 @@
\StrChar{#1}{##1}[\tmpchar]%
\settowidth{\charwd}{\tmpchar}%
\setlength{\widestcharwd}{\maxof{\widestcharwd}{\charwd}}%
+
+
}%
}
-\NewDocumentCommand\IntCreateBoxNumbers{ m }{%
+\NewDocumentCommand\IntCreateBoxNumbers{ O{c} m }{%
\IfStrEqCase{\PoseOpeBase}{%
{dec}{\IntCalcMaxWidth{0123456789}}%
{bin}{\IntCalcMaxWidth{01}}%
{hex}{\IntCalcMaxWidth{0123456789ABCDEF}}%
}%
\addtolength{\widestcharwd}{\PoseOpeOffset/2}%
- \StrLen{#1}[\tmplennumber]%
+ \StrLen{#2}[\tmplennumber]%
\xintFor* ##1 in {\xintSeq{1}{\tmplennumber}}\do{%
- \StrChar{#1}{##1}[\tmpchiff]%
- \makebox[\the\widestcharwd][c]{\tmpchiff}%
+ \StrChar{#2}{##1}[\tmpchiff]%
+ \makebox[\the\widestcharwd][#1]{\tmpchiff}%
}%
}
@@ -1347,7 +1350,7 @@
\xintifboolexpr{\PoseOpeLimit > 0 }{\StrRight{\rescalcbin}{\PoseOpeLimit}[\rescalcbin]}{}%
%\ensuremath{\begin{array}{@{\,}r@{\hspace{\PoseOpeOffset}}r@{\,}}
\ensuremath{\begin{NiceArray}[#3]{@{\,}r@{\hspace{\PoseOpeOffset}}r@{\,}}
- \RowStyle[cell-space-limits=0pt]{} & \IntCreateBoxNumbersRetenue{\ListeRetenues} \\[-0.5\heightercharht]
+ \ifboolKV[poseoperation]{AffRetenues}{\RowStyle[cell-space-limits=0pt]{} & \IntCreateBoxNumbersRetenue{\ListeRetenues} \\[-0.5\heightercharht]}{}
\RowStyle[nb-rows=*,cell-space-limits=1pt]{} & \IntCreateBoxNumbers{#1} \\
+ & \IntCreateBoxNumbers{#2} \\
\hline
@@ -1362,8 +1365,72 @@
{bin}{\xdef\rescalcbin{\xintDecToBin{\xinteval{\xintBinToDec{#1}-\xintBinToDec{#2}}}}}%
{hex}{\xdef\rescalcbin{\xintDecToHex{\xinteval{\xintHexToDec{#1}-\xintHexToDec{#2}}}}}%
}%
+ %bourrage de zéros pour les retenues
+ \StrLen{#1}[\lenA]\StrLen{#2}[\lenB]%
+ \xdef\BwithZeros{#2}%
+ \xintifboolexpr{ \lenA > \lenB }%
+ {%
+ \xintFor* ##1 in {\xintSeq{1}{\xinteval{\lenA-\lenB}}}\do{\xdef\BwithZeros{0\BwithZeros}}%
+ }%
+ {}%
+ %suite
\xintifboolexpr{\PoseOpeLimit > 0 }{\StrRight{\rescalcbin}{\PoseOpeLimit}[\rescalcbin]}{}%
%\ensuremath{\begin{array}{@{\,}r@{\hspace{\PoseOpeOffset}}r@{\,}}
+ \ifboolKV[poseoperation]{AffRetenues}{%
+ \ensuremath{\begin{NiceArray}[#3]{@{\,}r@{\hspace{\PoseOpeOffset/2}}r@{\,}}
+ \RowStyle[nb-rows=*,cell-space-limits=1pt]{}
+ & \IfStrEqCase{\PoseOpeBase}{%
+ {dec}{\IntCalcMaxWidth{0123456789}}%
+ {bin}{\IntCalcMaxWidth{01}}%
+ {hex}{\IntCalcMaxWidth{0123456789ABCDEF}}%
+ }%
+ \addtolength{\widestcharwd}{\PoseOpeOffset/2}%
+ \StrLen{#1}[\tmplennumber]%
+ \xintFor* ##1 in {\xintSeq{1}{\tmplennumber}}\do{%
+ \xdef\tmplenctr{\inteval{\tmplennumber-##1+1}}%
+ \StrChar{#1}{##1}[\tmpchiff]%
+ \StrRight{#1}{\tmplenctr}[\tmpA]%
+ \StrRight{\BwithZeros}{\tmplenctr}[\tmpB]%
+ \IfStrEqCase{\PoseOpeBase}{%
+ {dec}{\xdef\rescalctmp{\xinteval{\tmpA-\tmpB}}}%
+ {bin}{\xdef\rescalctmp{\xinteval{\xintBinToDec{\tmpA}-\xintBinToDec{\tmpB}}}}%
+ {hex}{\xdef\rescalctmp{\xinteval{\xintHexToDec{\tmpA}-\xintHexToDec{\tmpB}}}}%
+ }%
+ \xintifboolexpr{ \rescalctmp >= 0 }%
+ {\makebox[\the\widestcharwd][r]{\tmpchiff}}%
+ %{\makebox[\the\widestcharwd][r]{${}_{\textcolor{\PoseOpeColReten}{\scalebox{0.5}[0.5]{\text{1}}}}$\kern-0.1em\tmpchiff}}%
+ {\makebox[\the\widestcharwd][r]{\raisebox{-0.5\height}{\textcolor{\PoseOpeColReten}{\scalebox{0.5}[0.5]{\text{1}}}}\kern-0.1em\tmpchiff}}%
+ } \\
+ - & \IfStrEqCase{\PoseOpeBase}{%
+ {dec}{\IntCalcMaxWidth{0123456789}}%
+ {bin}{\IntCalcMaxWidth{01}}%
+ {hex}{\IntCalcMaxWidth{0123456789ABCDEF}}%
+ }%
+ \addtolength{\widestcharwd}{\PoseOpeOffset/2}%
+ \StrLen{#1}[\tmplennumber]%
+ \StrChar{#2}{\lenB}[\tmplastB]%
+ \xintFor* ##1 in {\xintSeq{1}{\xinteval{\tmplennumber-1}}}\do{%
+ \xdef\tmplenctr{\inteval{\tmplennumber-##1}}%
+ \StrChar{\BwithZeros}{##1}[\tmpchiff]%
+ \StrRight{#1}{\tmplenctr}[\tmpA]%
+ \StrRight{\BwithZeros}{\tmplenctr}[\tmpB]%
+ \IfStrEqCase{\PoseOpeBase}{%
+ {dec}{\xdef\rescalctmp{\xinteval{\tmpA-\tmpB}}}%
+ {bin}{\xdef\rescalctmp{\xinteval{\xintBinToDec{\tmpA}-\xintBinToDec{\tmpB}}}}%
+ {hex}{\xdef\rescalctmp{\xinteval{\xintHexToDec{\tmpA}-\xintHexToDec{\tmpB}}}}%
+ }%
+ \xintifboolexpr{ \rescalctmp >= 0 }%
+ {\makebox[\the\widestcharwd][r]{\xintifboolexpr{ ##1 <= \lenA-\lenB }{}{\tmpchiff}}}%
+ %{\makebox[\the\widestcharwd][r]{${}_{\textcolor{\PoseOpeColReten}{\scalebox{0.5}[0.5]{\text{1}}}}$\xintifboolexpr{ ##1 <= \lenA-\lenB }{}{\kern-0.1em\tmpchiff}}}%
+ {\makebox[\the\widestcharwd][r]{\raisebox{-0.5\height}{\textcolor{\PoseOpeColReten}{\scalebox{0.5}[0.5]{\text{1}}}}\xintifboolexpr{ ##1 <= \lenA-\lenB }{\kern0.25em}{\kern-0.1em\tmpchiff}}}%
+ }\makebox[\the\widestcharwd][r]{\tmplastB} \\
+
+ %\IntCreateBoxNumbers{#2} \\
+ \hline
+ \ifboolKV[poseoperation]{AffEgal}{=}{} &\IntCreateBoxNumbers[r]{\rescalcbin} \\
+ \end{NiceArray}}%
+ }%
+ {%
\ensuremath{\begin{NiceArray}[#3]{@{\,}r@{\hspace{\PoseOpeOffset}}r@{\,}}
\RowStyle[nb-rows=*,cell-space-limits=1pt]{}
& \IntCreateBoxNumbers{#1} \\
@@ -1371,6 +1438,7 @@
\hline
\ifboolKV[poseoperation]{AffEgal}{=}{} & \IntCreateBoxNumbers{\rescalcbin} \\
\end{NiceArray}}%
+ }%
%\end{array}}%
}
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-espace.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-espace.tex
new file mode 100644
index 0000000000..a8b48af2f6
--- /dev/null
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-espace.tex
@@ -0,0 +1,284 @@
+% proflycee-tools-espace.tex
+% Copyright 2024 Cédric Pierquet
+% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+
+\RequirePackage{iftex}
+
+\ifluatex
+ \RequirePackage{luamplib}%
+ \mplibtextextlabel{enable}%
+ \everymplib{input PfLEspace; beginfig(1);}%
+ \everyendmplib{endfig;}%
+\else%
+ \RequirePackage[shellescape]{gmp}%inclusion de figures metapost "à la volée"%
+ \gmpoptions{everymp={prologues:=3; input PfLEspace;}}%
+\fi%
+
+\defKV[posrelatesp]{Echelle=\def\scaleminischemspace{#1}}
+\setKVdefault[posrelatesp]{Echelle=1}
+
+\NewDocumentCommand\SchemaEspace{ s O{} m }{%
+ \restoreKV[posrelatesp]%
+ \setKV[posrelatesp]{#2}%
+ \ifluatex
+ \IfBooleanTF{#1}%
+ {\def\tmplabelespace##1{\mathscr{##1}}}%
+ {\def\tmplabelespace##1{\mathcal{##1}}}%
+ \mplibforcehmode%
+ \IfStrEqCase{#3}{%
+ {plan}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplansimple ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mplibcode}
+ }%
+ {interplans}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repinterplan ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.rt(btex $\tmplabelespace{Q}$ etex scaled echelle, z9);
+ \end{mplibcode}
+ }%
+ {plan3points}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplantroispoints ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mplibcode}
+ }%
+ {plandroitessecantes}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplandeuxdroites ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mplibcode}
+ }%
+ {plandroitepoint}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplandroite ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mplibcode}
+ }%
+ {plandroitespara}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplandtespara ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mplibcode}
+ }%
+ {droitesnoncopla}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ droitesnoncoplan ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mplibcode}
+ }%
+ {incidence}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repincidence ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z4+(0.1u,0u));
+ \end{mplibcode}
+ }%
+ {droiteparaplans}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repdroiteparaplans ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0u,0.025u));
+ label.lft(btex $\tmplabelespace{Q}$ etex scaled echelle, z6+(0u,0.5u));
+ \end{mplibcode}
+ }%
+ {toit}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ reptoit ;
+ \end{mplibcode}
+ }%
+ {planspara}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplanspara ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z10+(0.1u,0u));
+ \end{mplibcode}
+ }%
+ {droiteplanpara}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repdteplanpara ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mplibcode}
+ }%
+ {droitesortho}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repdtesortho ;
+ \end{mplibcode}
+ }%
+ {droiteorthoplan}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repdroiteorthoplan ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mplibcode}
+ }%
+ {plansparadroiteortho}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplansparadroiteortho ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z10+(0.1u,0u));
+ \end{mplibcode}
+ }%
+ {plansparadroitesortho}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repdrtoitesorthoplanspara ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z10+(0.1u,0u));
+ \end{mplibcode}
+ }%
+ {plansperp}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplansperp ;
+ label.urt(btex $\tmplabelespace{P}$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.rt(btex $\tmplabelespace{Q}$ etex scaled echelle, z9);
+ \end{mplibcode}
+ }%
+ {plansperpplan}{%
+ \begin{mplibcode}
+ u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;
+ repplansperpplan ;
+ label.urt(btex $\tmplabelespace{Q}$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.bot(btex $\tmplabelespace{P}$ etex scaled echelle, z11+(0.2u,0.6u));
+ label.bot(btex $\tmplabelespace{P}'$ etex scaled echelle, z12+(-0.2u,0.8u));
+ \end{mplibcode}
+ }%
+ }%
+ \else
+ \IfStrEqCase{#3}{%
+ {plan}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplansimple ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mpost}
+ }%
+ {interplans}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repinterplan ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.rt(btex $Q$ etex scaled echelle, z9);
+ \end{mpost}
+ }%
+ {plan3points}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplantroispoints ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mpost}
+ }%
+ {plandroitessecantes}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplandeuxdroites ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mpost}
+ }%
+ {plandroitepoint}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplandroite ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mpost}
+ }%
+ {plandroitespara}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplandtespara ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mpost}
+ }%
+ {droitesnoncopla}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ droitesnoncoplan ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mpost}
+ }%
+ {incidence}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repincidence ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.urt(btex $Q$ etex scaled echelle, z4+(0.1u,0u));
+ \end{mpost}
+ }%
+ {droiteparaplans}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repdroiteparaplans ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0u,0.025u));
+ label.lft(btex $Q$ etex scaled echelle, z6+(0u,0.5u));
+ \end{mpost}
+ }%
+ {toit}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ reptoit ;
+ \end{mpost}
+ }%
+ {planspara}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplanspara ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u));
+ \end{mpost}
+ }%
+ {droiteplanpara}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repdteplanpara ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mpost}
+ }%
+ {droitesortho}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repdtesortho ;
+ \end{mpost}
+ }%
+ {droiteorthoplan}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repdroiteorthoplan ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ \end{mpost}
+ }%
+ {plansparadroiteortho}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplansparadroiteortho ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u));
+ \end{mpost}
+ }%
+ {plansparadroitesortho}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repdrtoitesorthoplanspara ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.urt(btex $Q$ etex scaled echelle, z10+(0.1u,0u));
+ \end{mpost}
+ }%
+ {plansperp}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplansperp ;
+ label.urt(btex $P$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.rt(btex $Q$ etex scaled echelle, z9);
+ \end{mpost}
+ }%
+ {plansperpplan}{%
+ \begin{mpost}[mpsettings={u=\scaleminischemspace*1cm;echelle=\scaleminischemspace;}]
+ repplansperpplan ;
+ label.urt(btex $Q$ etex scaled echelle, z0+(0.1u,0.025u));
+ label.bot(btex $P$ etex scaled echelle, z11+(0.2u,0.6u));
+ label.bot(btex $P'$ etex scaled echelle, z12+(-0.2u,0.8u));
+ \end{mpost}
+ }%
+ }%
+ \fi
+}
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
index f0011170eb..d325b88e74 100644
--- a/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
+++ b/macros/latex/contrib/proflycee/tex/proflycee-tools-piton.tex
@@ -2,6 +2,7 @@
% Copyright 2023-2024 Cédric Pierquet
% Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+%3.02e Thonny via piton + modification clé gobble ?
%3.01f PseudoCode via piton (?)
%3.01e Correction du comportement de la console repl piton/pyluatex
%2.7.6 Correction du comportement de la console, avec une meilleure gestion de la largeur ^^ (merci à ablasz ;-))
@@ -24,14 +25,15 @@
Style=\def\CODPITstyle{#1},%
Titre=\def\CODPITtitre{#1},%
EspacementV=\def\CODPITespV{#1},%
- CouleurNombres=\def\CODPITcolnb{#1}
+ CouleurNombres=\def\CODPITcolnb{#1},%
+ Gobble=\def\CODPITgobble{#1}
}
\setKVdefault[envpiton]{%
Largeur=\linewidth,%
Alignement=center,%
Lignes=true,%
- Gobble=true,%
+ Gobble={tabs},%
TaillePolice=\footnotesize,%
Filigrane=false,%
Style=Classique,%
@@ -87,14 +89,15 @@
TaillePolice=\def\CODPITPCfonte{#1},%
Style=\def\CODPITPCstyle{#1},%
Titre=\def\CODPITPCtitre{#1},%
- EspacementV=\def\CODPITPCespV{#1}
+ EspacementV=\def\CODPITPCespV{#1},%
+ Gobble=\def\CODPITPCgobble{#1}
}
\setKVdefault[envpcpiton]{%
Largeur=\linewidth,%
Alignement=center,%
Lignes=true,%
- Gobble=true,%
+ Gobble={tabs},%
TaillePolice=\footnotesize,%
Filigrane=false,%
Style=Classique,%
@@ -158,12 +161,23 @@
%------les styles piton
\SetPitonStyle{ Number = \color{\CODPITcolnb} }
\ifboolKV[envpiton]{Lignes}%si lignes=true
- {\PitonOptions{left-margin=0.75em,all-line-numbers,line-numbers={#3}}}%left-margin=auto,
- {}%
- \ifboolKV[envpiton]{Gobble}%si gobble=true
- {\PitonOptions{tabs-auto-gobble}}%
+ {\PitonOptions{left-margin=0.75em,line-numbers={skip-empty-lines=false,label-empty-lines=true,#3}}}%left-margin=auto,
{}%
- \PitonOptions{break-lines,indent-broken-lines}%,numbers-sep=0.65em}%language=Python}
+ %\ifboolKV[envpiton]{Gobble}%si gobble=true
+ % {\PitonOptions{}}%
+ % {}%
+ %--gestion du gobble
+ \IfStrEqCase{\CODPITgobble}{%
+ {auto}{\PitonOptions{auto-gobble}}%
+ {env}{\PitonOptions{env-gobble}}%
+ {tabs}{\PitonOptions{tabs-auto-gobble}}%
+ {tabs-auto}{\PitonOptions{tabs-auto-gobble,auto-gobble}}%
+ {auto-tabs}{\PitonOptions{auto-gobble,tabs-auto-gobble}}%
+ {all}{\PitonOptions{auto-gobble,tabs-auto-gobble,env-gobble}}%
+ }
+ \IfInteger{\CODPITgobble}{\PitonOptions{gobble=\CODPITgobble}}{}%
+ %--fin gestion du gobble
+ \PitonOptions{break-lines,indent-broken-lines,continuation-symbol={}}%,numbers-sep=0.65em}%language=Python}
%------les styles tcbox
\IfEq{\CODPITstyle}{Moderne}%style Moderne (défaut)
{%
@@ -213,7 +227,7 @@
\useKVdefault[envpcpiton]%
\setKV[envpcpiton]{#1}% on paramètres les nouvelles clés et on les simplifie
%------les styles piton
- \PitonOptions{break-lines,indent-broken-lines,language=minimal}%,numbers-sep=0.65em}%
+ \PitonOptions{break-lines,indent-broken-lines,language=minimal,continuation-symbol={}}%,numbers-sep=0.65em}%
\SetPitonStyle{ Number = }
\ifboolKV[envpcpiton]{Couleurs}%
{%
@@ -247,9 +261,20 @@
\ifboolKV[envpcpiton]{Lignes}%si lignes=true
{\PitonOptions{left-margin=0.75em,all-line-numbers,line-numbers={#3}}}%left-margin=auto,
{}%
- \ifboolKV[envpcpiton]{Gobble}%si gobble=true
- {\PitonOptions{tabs-auto-gobble}}%
- {}%
+ %\ifboolKV[envpcpiton]{Gobble}%si gobble=true
+ % {\PitonOptions{auto-gobble}}%
+ % {}%
+ %--gestion du gobble
+ \IfStrEqCase{\CODPITPCgobble}{%
+ {auto}{\PitonOptions{auto-gobble}}%
+ {env}{\PitonOptions{env-gobble}}%
+ {tabs}{\PitonOptions{tabs-auto-gobble}}%
+ {tabs-auto}{\PitonOptions{tabs-auto-gobble,auto-gobble}}%
+ {auto-tabs}{\PitonOptions{auto-gobble,tabs-auto-gobble}}%
+ {all}{\PitonOptions{auto-gobble,tabs-auto-gobble,env-gobble}}%
+ }
+ \IfInteger{\CODPITPCgobble}{\PitonOptions{gobble=\CODPITPCgobble}}{}%
+ %--fin gestion du gobble
%------les styles tcbox
\IfEq{\CODPITPCstyle}{Moderne}%style Moderne (défaut)
{%
@@ -295,7 +320,7 @@
%======CONSOLE PYLUATEX (package à charger manuellement !!)
\tcbset{consolepylua/.style={%base de la boîte
enhanced,colback=white,colframe=CouleurVertForet,sharp corners,boxrule=1pt,%
- top=1.5mm,bottom=1.5mm,left=2mm,right=2mm,fontupper=\footnotesize,%
+ top=1.5mm,bottom=1.5mm,left=2mm,right=3mm,fontupper=\footnotesize,%
before skip=0.5\baselineskip,after skip=0.5\baselineskip,%
}
}
@@ -335,7 +360,7 @@
{
\restoreKV[consolepyluatex]% revenir au valeurs par défaut
\setKV[consolepyluatex]{#2}% lit les arguments optionnels
- \PitonOptions{width={\ConsPyluaLarg-4mm},break-lines,end-of-broken-line={},continuation-symbol={},#1}
+ \PitonOptions{width={\ConsPyluaLarg-5mm},break-lines,end-of-broken-line={},continuation-symbol={},#1}
\PyLTVerbatimEnv
\ifboolKV[consolepyluatex]{Logo}
{%
@@ -346,16 +371,86 @@
}%
% {\tcbset{consolepyluatexlogo,width=\ConsPyluaLarg,\ConsPyluaAlign,#3}}
% {\tcbset{consolepyluatex,width=\ConsPyluaLarg,\ConsPyluaAlign,#3}}
- \begin{pythonrepl}%
+ \begin{pythonrepl}%
}
{
\end{pythonrepl}%
\directlua{
- tex.print("\\begin{Piton}")
- tex.print(pyluatex.get_last_output())
- tex.print("\\end{Piton}")
+ tex.print("\\begin{Piton}")
+ tex.print(pyluatex.get_last_output())
+ tex.print("\\end{Piton}"
+ )
+ }%
+ \end{tcolorbox}%
+}
+
+%====PITONTHONNY
+\newlength{\LargeurNumbersThonny}
+
+\defKV[pitonthonny]{%
+ NomFichier=\def\thonnypitonfilename{#1},%
+ NomConsole=\def\thonnypitonshellname{#1},%
+ IntroConsole=\def\thonnypitonintroconsole{#1},%
+ Gobble=\def\thonnypitongobble{#1}
+}
+
+\setKVdefault[pitonthonny]{%
+ NomFichier=script.py,%
+ NomConsole=console,%
+ IntroConsole={Python 3.11.6 /usr/bin/python},%
+ Gobble={tabs}
+}
+
+\NewPitonEnvironment{PitonThonnyEditor}{ D<>{} O{} m }%
+{%
+ \restoreKV[pitonthonny]%
+ \setKV[pitonthonny]{#1}%
+ \settowidth{\LargeurNumbersThonny}{\footnotesize\texttt{00}}%
+ \PitonOptions{left-margin=\LargeurNumbersThonny+1mm,line-numbers={skip-empty-lines=false,label-empty-lines=true},break-lines,indent-broken-lines,continuation-symbol={}}%
+ %--gestion du gobble
+ \IfStrEqCase{\thonnypitongobble}{%
+ {auto}{\PitonOptions{auto-gobble}}%
+ {env}{\PitonOptions{env-gobble}}%
+ {tabs}{\PitonOptions{tabs-auto-gobble}}%
+ {tabs-auto}{\PitonOptions{tabs-auto-gobble,auto-gobble}}%
+ {auto-tabs}{\PitonOptions{auto-gobble,tabs-auto-gobble}}%
+ {all}{\PitonOptions{auto-gobble,tabs-auto-gobble,env-gobble}}%
+ }
+ \IfInteger{\thonnypitongobble}{\PitonOptions{gobble=\thonnypitongobble}}{}%
+ %--fin gestion du gobble
+ \tcbset{tcbthonnypiton/.style={title=\vphantom{pf}\thonnypitonfilename\:\textcolor{gray}{×}},before skip=0.33\baselineskip,after skip=0.33\baselineskip}%
+ %\noindent%
+ \tcolorbox[sharp corners=all,enhanced,size=small,width=#3,colframe=gray,colback=lightgray!5,tcbthonnypiton,fonttitle=\scriptsize\sffamily,coltitle=black,
+ attach boxed title to top left={yshift*=-0.4pt},fontupper=\footnotesize,bottom=-0.25mm,#2,boxed title style={size=tight,colback=lightgray!15,sharp corners=all,boxrule=0.4pt,boxsep=2pt},boxrule=0.4pt,overlay={\begin{tcbclipinterior}\fill[draw=none,gray!25] ([shift={(0.4pt,0.4pt)}]frame.south west) rectangle ([shift={(\LargeurNumbersThonny+1mm+0.8pt,-0.4pt)}]frame.north west) ;\end{tcbclipinterior}}]%
+}%
+{%
+ \endtcolorbox%
+}%
+
+\NewDocumentEnvironment{PitonThonnyConsole}{ D<>{} O{} m }%
+{
+ \restoreKV[pitonthonny]%
+ \setKV[pitonthonny]{#1}%
+ \PyLTVerbatimEnv%
+ \tcbset{tcbthonnypitonconsole/.style={title=\vphantom{pf}\thonnypitonshellname\:\textcolor{gray}{×}},before skip=0.33\baselineskip,after skip=0.33\baselineskip}%
+ \noindent%
+ \PitonOptions{width={#3-5mm},break-lines,end-of-broken-line={},continuation-symbol={}}%
+ \tcolorbox[sharp corners=all,enhanced,size=small,width=#3,colframe=gray,colback=white,tcbthonnypitonconsole,fonttitle=\scriptsize\sffamily,coltitle=black,
+ attach boxed title to top left={yshift*=-0.4pt},fontupper=\footnotesize,bottom=-0.25mm,#2,boxed title style={size=tight,colback=lightgray!15,sharp corners=all,boxrule=0.4pt,boxsep=2pt},boxrule=0.4pt,top=1mm]%
+ \textcolor{gray}{\texttt{\thonnypitonintroconsole}}
+ \begin{pythonrepl}
+}
+{
+ \end{pythonrepl}
+ \directlua
+ {
+ tex.print("\\begin{Piton}")
+ tex.print(pyluatex.get_last_output())
+ tex.print("\\end{Piton}")
+ tex.print("")
}%
- \end{tcolorbox}
+ \ignorespacesafterend%
+ \endtcolorbox%
}
\fi