summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/profcollege/latex/PfCBarresCalculs.tex
blob: 12b5077025173b6537e961c2f50904489113e9b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
%%%
% Barres de calculs
%%%
\setKVdefault[SuiteBarre]{Litteral=false,Perso=false,Decimaux=false}

\NewDocumentCommand\BarresCalculs{o m m}{%
  \useKVdefault[SuiteBarre]%
  \setKV[SuiteBarre]{#1}%
  \xdef\PfCListeCalculsBarre{}%
  \xdef\PfCListeResultatsBarre{}%
  \ignoreemptyitems%
  \ifboolKV[SuiteBarre]{Perso}{%
    \setsepchar[*]{,*§}%
    \readlist*\PfCListeBarresCalculs{#2}%
    \foreachitem\compteur\in\PfCListeBarresCalculs{%
      \StrChar{#3}{\compteurcnt}[\PfCLettreB]%
      \StrSubstitute[0]{\PfCLettreB}{*}{Départ}[\PfCLettreC]%
      \xdef\PfCListeResultatsBarre{\PfCListeResultatsBarre \PfCLettreC,}%
    }%
    \setsepchar{,}%
    \readlist*\PfCListeResultats{\PfCListeResultatsBarre}%
    \begin{NiceTabular}{ccc}[hvlines]
      \xintFor* ##1 in{\xintSeq{1}{\PfCListeResultatslen}}\do{%
        \xintifForFirst{\Block{2-1}{}}{\Block{2-1}{\ifboolKV[SuiteBarre]{Decimaux}{%
              \num{\fpeval{\PfCListeBarresCalculs[\fpeval{##1-1},1]}}%
              }{%
                \begin{CAS}
              c = \PfCListeBarresCalculs[\fpeval{##1-1},1]
            \end{CAS}$\print{c:autosimplify()}$}%
        }}&\Block{2-1}{\PfCListeResultats[##1]}&\Block{2-1}{$\PfCListeBarresCalculs[##1,2]$}\\
        &&\\
      }%
    \end{NiceTabular}
  }{%
    \setsepchar{,}%\ignoreemptyitems%
    \readlist*\PfCListeBarresCalculs{#2}%
    \ifboolKV[SuiteBarre]{Litteral}{%
      \foreachitem\compteur\in\PfCListeBarresCalculs{%
        \StrChar{#3}{\compteurcnt}[\PfCLettreB]%
        \StrSubstitute[0]{\PfCLettreB}{*}{Départ}[\PfCLettreC]%
        \xdef\PfCListeResultatsBarre{\PfCListeResultatsBarre \PfCLettreC,}%
      }%
      \setsepchar[*]{,*/}%
      \readlist*\PfCListeResultats{\PfCListeResultatsBarre}%
      \setsepchar{,}%
      \readlist*\PfCListeCalculs{#2}%
      \begin{NiceTabular}{ccc}[hvlines]
        \xintFor* ##1 in{\xintSeq{1}{\PfCListeResultatslen}}\do{%
          \xintifForFirst{\Block{2-1}{}}{\Block{2-1}{$\print{c:expand():topolynomial()}$}}&\Block{2-1}{\PfCListeResultats[##1,1]}&\Block{2-1}{\begin{CAS}
              vars('x')
              c = \PfCListeCalculs[##1]
            \end{CAS}$\print{c}$}\\
          &&\\
        }%
      \end{NiceTabular}
    }{%
      \foreachitem\compteur\in\PfCListeBarresCalculs{%
        \StrChar{#3}{\compteurcnt}[\PfCLettreB]%
        \StrSubstitute[0]{\PfCLettreB}{*}{Départ}[\PfCLettreC]%
        \xdef\PfCListeResultatsBarre{\PfCListeResultatsBarre \num{\fpeval{\compteur}}/\PfCLettreC,}%
        \StrSubstitute[0]{\compteur}{*}{\times}[\PfCListeResultatEtapeA]%
        \StrSubstitute[0]{\PfCListeResultatEtapeA}{/}{\div}[\PfCListeResultatEtapeB]%
        \StrSubstitute[0]{\PfCListeResultatEtapeB}{(}{\left(}[\PfCListeResultatEtapeC]%
          \StrSubstitute[0]{\PfCListeResultatEtapeC}{)}{\right)}[\PfCListeResultatEtapeD]%
        \xdef\PfCListeCalculsBarre{\PfCListeCalculsBarre $\PfCListeResultatEtapeD$,}%
      }%
      \setsepchar[*]{,*/}%
      \readlist*\PfCListeResultats{\PfCListeResultatsBarre}%
      \setsepchar{,}%
      \readlist*\PfCListeCalculs{\PfCListeCalculsBarre}%
      \begin{NiceTabular}{ccc}[hvlines]
        \xintFor* ##1 in{\xintSeq{1}{\PfCListeResultatslen}}\do{%
          \xintifForFirst{\Block{2-1}{}}{\Block{2-1}{\PfCListeResultats[\fpeval{##1-1},1]}}&\Block{2-1}{\PfCListeResultats[##1,2]}&\Block{2-1}{\PfCListeCalculs[##1]}\\
          &&\\
        }%
      \end{NiceTabular}
    }%
  }%
  \reademptyitems%
}%