diff options
author | Norbert Preining <norbert@preining.info> | 2023-03-24 03:01:34 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-03-24 03:01:34 +0000 |
commit | 85fda71ebb01e4a5b0ce50edf3dda43f45ebb55a (patch) | |
tree | 8f1fa267e50afbbab02f04483ac3577a698c7916 /macros/latex/contrib/profcollege/latex/PfCDecompFracDeci.tex | |
parent | 46b6c321a2ff14698b756600bffb54d5d5fc3772 (diff) |
CTAN sync 202303240301
Diffstat (limited to 'macros/latex/contrib/profcollege/latex/PfCDecompFracDeci.tex')
-rw-r--r-- | macros/latex/contrib/profcollege/latex/PfCDecompFracDeci.tex | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/macros/latex/contrib/profcollege/latex/PfCDecompFracDeci.tex b/macros/latex/contrib/profcollege/latex/PfCDecompFracDeci.tex new file mode 100644 index 0000000000..b045c64f63 --- /dev/null +++ b/macros/latex/contrib/profcollege/latex/PfCDecompFracDeci.tex @@ -0,0 +1,59 @@ +%%% +% D\'ecomposition de fractions d\'ecimales +%%% +\setKVdefault[ClesFracDeci]{Complete=false,SansZero=false,Remediation=false,Longueur=1cm} +\newlength{\PfCLongueurP}% + +\newcommand\FractionDecimale[2][]{% + \useKVdefault[ClesFracDeci]% + \setKV[ClesFracDeci]{#1}% + \setlength{\PfCLongueurP}{\useKV[ClesFracDeci]{Longueur}}% + \setsepchar[*]{/}% + \readlist*\ListeFractionDecimale{#2}% + \xdef\FractionDeciNum{\ListeFractionDecimale[1]}% + \xdef\FractionDeciDeno{\ListeFractionDecimale[2]}% + \xdef\PartieEntiereFractionDeci{\fpeval{floor(\FractionDeciNum/\FractionDeciDeno)}}% + \xdef\PartieDecimaleFractionDeci{\fpeval{\FractionDeciNum-floor(\FractionDeciNum/\FractionDeciDeno)*\FractionDeciDeno}}% + \StrLen{\PartieDecimaleFractionDeci}[\LongueurPartieDecimale]% + \StrLen{\fpeval{\FractionDeciDeno}}[\LongueurFracDeciDeno]% + \StrLen{\fpeval{\FractionDeciNum}}[\LongueurFracDeciNum]% + \xintifboolexpr{\PartieEntiereFractionDeci == 0}{\xdef\LongueurPartieEntiere{0}}{\StrLen{\PartieEntiereFractionDeci}[\LongueurPartieEntiere]}% + \xintifboolexpr{\PartieEntiereFractionDeci == \fpeval{\FractionDeciNum/\FractionDeciDeno}}{% + \ensuremath{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}}% + }{% + \ifboolKV[ClesFracDeci]{SansZero}{% + \ensuremath{% + \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}+}% + \xintFor* ##1 in {\xintSeq{1}{\LongueurPartieDecimale}}\do{% + \StrMid{\PartieDecimaleFractionDeci}{##1}{##1}[\ChiffrePartieDecimale]% + \xintifForFirst{}{\xintifboolexpr{\ChiffrePartieDecimale == 0}{}{+}}\xintifboolexpr{\ChiffrePartieDecimale == 0}{}{\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**(\LongueurFracDeciDeno-1-\LongueurPartieDecimale+##1)}}}}% + }% + }% + }{% + \ifboolKV[ClesFracDeci]{Complete}{% + \xintifboolexpr{\FractionDeciNum>\FractionDeciDeno}{% + \ensuremath{% + % on affiche la partie entière. + \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}+}% + \StrGobbleLeft{\FractionDeciNum}{\fpeval{\LongueurPartieEntiere}}[\DecompositionFracDeciComplete]% + % on affiche la partie décimale. + \xintFor* ##1 in {\xintSeq{1}{\fpeval{\LongueurFracDeciNum-\LongueurPartieEntiere}}}\do{% + \xintifForFirst{}{+}\StrMid{\DecompositionFracDeciComplete}{##1}{##1}[\ChiffrePartieDecimale]\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**##1}}}% + }% + }% + }{% + \ensuremath{% + \xintFor* ##1 in {\xintSeq{1}{\LongueurPartieDecimale}}\do{% + \StrMid{\PartieDecimaleFractionDeci}{##1}{##1}[\ChiffrePartieDecimale]% + \xintifForFirst{}{+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\ChiffrePartieDecimale}}}{\num{\fpeval{10**(\LongueurFracDeciDeno-1-\LongueurPartieDecimale+##1)}}}% + }% + }% + }% + }{% + \ensuremath{% + \xintifboolexpr{\PartieEntiereFractionDeci == 0}{}{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieEntiereFractionDeci}}+}\frac{\ifboolKV[ClesFracDeci]{Remediation}{\pointilles[\PfCLongueurP]}{\num{\PartieDecimaleFractionDeci}}}{\num{\FractionDeciDeno}}% + }% + }% + }% + }% +}%
\ No newline at end of file |