diff options
author | Karl Berry <karl@freefriends.org> | 2024-03-08 23:19:35 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-03-08 23:19:35 +0000 |
commit | 38e56e6181d9aa8e9e9acf83dcf17425bdd043d8 (patch) | |
tree | e02f7d122183ce189458c5b826211add3bb49b4e /Master/texmf-dist/tex/latex | |
parent | c1335dbababbef4762f903cf3751bc085e40e789 (diff) |
proflycee (9mar24)
git-svn-id: svn://tug.org/texlive/trunk@70510 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
4 files changed, 482 insertions, 27 deletions
diff --git a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty b/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty index 0c71456d5d8..05945a83b16 100644 --- a/Master/texmf-dist/tex/latex/proflycee/ProfLycee.sty +++ b/Master/texmf-dist/tex/latex/proflycee/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/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex index 1d8b4f28264..eccfd35733b 100644 --- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-arithm.tex +++ b/Master/texmf-dist/tex/latex/proflycee/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/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-espace.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-espace.tex new file mode 100644 index 00000000000..a8b48af2f65 --- /dev/null +++ b/Master/texmf-dist/tex/latex/proflycee/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/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex b/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex index f0011170eb2..d325b88e744 100644 --- a/Master/texmf-dist/tex/latex/proflycee/proflycee-tools-piton.tex +++ b/Master/texmf-dist/tex/latex/proflycee/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 |