import re
# slide = ""
# while 1:
#     try:
#         slide += input()
#     except:
#         break
        
slide = r'''
<s>
    <cha>Fonction exponentielle</cha>
    <os>
        <o>Existence et unicité</o>
        <o>Propriétés algébriques</o>
        <o>Notation puissance</o>
        <o>Fonction exponentielle</o>
    </os>
</s>

<s>
    <par>1. Fonction exponentielle</par>
</s>

<s>
    <ti>1.1 Méthode d'Euler</ti>
    <t>
        Soit $f$ une fonction dérivable sur $\mathbb{R}$ et vérifiant $f(0)=1$ et $f'(x)=f(x)$ pour tout réel $x$.<br>
        En observant, d'après la définition du <e>nombre dérivé</e>, que :
        $$\lim_{h \to 0} \frac{f(x+h) - f(x)}{h} = f'(x)= f(x) $$
        Suppsosons pour simplifier que $h>0$, cela revient à considérer :
        $$f(x+h) -f(x) \approx f(x) \cdot h \Rightarrow f(x) \approx f(x) + f(x) \cdot h = f(x) \cdot(1+h)$$
        On obtient successivement (avec $x=0$ puis $x=h$) :
        $$f(h) \approx f(0) \cdot 1+h = 1 + h \qquad \qquad f(2h)=f(h+h) \approx f(h) \cdot (1 + h) = (1+h)^2$$
        En généralisant cette idée, on trouve :
        $$f(nh) \approx (1+h)^n$$
        Soit une suite de points de coordonnées $(nh, (1+h)^n)$ puis en remplaçant $h$ par $-h$, les points $(-nh, (1-h)^n)$.<br>
        En rejoignant ces points, on obtient une <e>approximation</e> de la solution de notre problème.
    </t>
</s>

<s>
    <ti>1.1 Existence et unicité</ti>
    <d>
        <t>
            <n>Il <e>existe</e> une <e>unique</e> fonction $f$</n><n>dérivable sur $\mathbb{R}$</n><n> telle que $f(0)=1$ et :</n>
            <n>
            $$
            f^{\prime}=f 
            $$
            </n>
            <n>Cette fonction est appelée fonction </n><n><e>exponentielle</e></n><n> et est notée $\exp$.</n><br>
            <n>Ainsi, pour tout réel $x$,</n> :
            <ul>
                <li>
                    <t><n>$\exp (0)=1$</n></t>
                </li>
                <li>
                    <t>
                        $\exp^{\prime}(x)=\exp (x)$
                    </t>
                </li>
            </ul>
        </t>
    </d>
    <rq/>
    <t>
        L'existence de la fonction exponentielle est admise, mais peut être conjecturée à l'aide de la méthode d'Euler.
    </t>
</s>
<s>
    <ti>1.2 Non nullité</ti>
    <p>
        <t>
            Pour tout réel $x$, on a :
            $$\exp (x) \times \exp (-x)=1$$
            En conséquence, pour tout réel $x, \exp (x) \neq 0$.
        </t>
    </p>
</s>

<s>
    <pr/>
    <t>
        On définit la fonction $h$ pour tout réel $x$ par $h(x)=\exp (x) \times \exp (-x)$.<br>
        La fonction exponentielle étant dérivable sur $\mathbb{R}, h$ est aussi dérivable sur $\mathbb{R}$, et pour tout réel $x$, on a :
        $$
        h^{\prime}(x)=\exp ^{\prime}(x) \times \exp (-x)+\exp (x) \times\left(-\exp ^{\prime}(-x)\right)
        $$

        Or par définition de la fonction exponentielle, $\exp ^{\prime}=\exp$.<br>
        Donc $h^{\prime}(x)=\exp (x) \times \exp (-x)-\exp (x) \times \exp (-x)$, soit $h^{\prime}(x)=0$ sur $\mathbb{R}$.<br>
        La fonction $h$ est donc constante sur $\mathbb{R}$.<br>
        Or $h(0)=\exp (0) \times \exp (0)=1 \times 1=1$, car $\exp (0)=1$ par définition.<br>
        Ainsi, pour tout réel $x, h(x)=1$, c'est-à-dire $\exp (x) \times \exp (-x)=1$.<br>
        De plus, s'il existait un réel $x$ tel que $\exp (x)=0$, on aurait $h(x)=0$, ce qui est impossible. On en déduit que pour tout réel $x, \exp (x) \neq 0$.
    </t>
</s>

<s>
    <par>2. Propriétés algébriques</par>
</s>

<s>
    <p>
        <t>
            Pour tous réels $x$ et $y$ et pour tout entier relatif $n$, on a :
            <ul>
                <li>
                    <t> $\exp (-x)=\frac{1}{\exp (x)}$</t>
                </li>
                <li>
                    <t>$\exp (x+y)=\exp (x) \times \exp (y)$</t>
                </li>
                <li>
                    <t>
                        $\exp (x-y)=\frac{\exp (x)}{\exp (y)}$
                    </t>
                </li>
                <li>
                    <t>
                        $\exp (n x)=(\exp (x))^n$
                    </t>
                </li>
            </ul>
        </t>
    </p>
</s>

<s>
    <pr/>
    <t>
        Démonstration de $\exp (x+y)=\exp (x) \times \exp (y)$.<br>
        Soit $y$ un réel. On définit la fonction $h$ sur $\mathbb{R}$ par $h(x)=\exp (x+y) \times \exp (-x)$.<br>
        Pour tout réel $x$, on a :
        $$
        h^{\prime}(x)=1 \times \exp (x+y) \times \exp (-x)+\exp (x+y) \times(-1) \times \exp (-x)=0
        $$

        La fonction $h$ est donc constante sur $\mathbb{R}$. Or $h(0)=\exp (y)$.
        Ainsi pour tout réel $x, h(x)=\exp (y)$.<br>
        On en déduit que, pour tout réel $x, \exp (x+y) \times \exp (-x)=\exp (y)$.<br>
        C'est-à-dire $\exp (x+y)=\frac{1}{\exp (-x)} \times \exp (y)$.
        Or $\exp (-\boldsymbol{x})=\frac{1}{\exp (\boldsymbol{x})}$ d'après (1). <br>
        D'où : $\exp (x+y)=\exp (x) \exp (y)$.
    </t>
</s>

<s>
    <ex/>
    <ul>
        <li>
            <t>
                Montrons l'égalité :
                $$\frac{1-\exp(-x)}{1+\exp(-x)}=\frac{\exp(x)-1}{\exp(x)+1}$$
                En effet, en <e>multipliant</e> numérateur et dénominateur par $\textcolor{blue}{\exp(x)}$, on a :
                $$\frac{(1-\exp(-x))\textcolor{blue}{\exp(x)}}{1+\exp(-x)\textcolor{blue}{\exp(x)}}=\frac{\textcolor{blue}{\exp(x)}-\textcolor{blue}{\exp(x)}\exp(x)}{\textcolor{blue}{\exp(x)}+\textcolor{blue}{\exp(x)}\exp(x)}=\frac{\exp(x)-1}{\exp(x)+1}$$
            </t>
        </li>
        <li>
            <t>
                Développer et réduire : $A=(\exp(x) +\exp(-x))^2-(\exp(x)-\exp(-x))^2$ :
                $$A= \exp(2x) +2 \textcolor{blue}{\exp(x)\exp(-x)}+ \exp(-2x)-(\exp(2x) -2 \textcolor{blue}{\exp(x)\exp(-x)}+ \exp(-2x))=2-(-2)=4 $$
            </t>
        </li>
    </ul>

</s>

<s>
    <par>2. Notation puissance</par>
</s>

<s>
    <ti>2.1 Définition du nombre $e$</ti>
    <d>
        <t>
            L'image de $1$ par la fonction exponentielle est notée $e$. Ainsi :            
            $$\exp (1)=e$$
        </t>
    </d>
    <rq/>
    <t>
        Les propriétés algébriques vues précédemment permettent d'écrire que, pour tout entier relatif $n$, on a :
        $$\exp (n)=\exp (1 \times n)=(\exp (1))^n=e^n$$
        D'autre part, la fonction exponentielle possède les mêmes propriétés algébriques que les fonctions <e>puissances</e>.<br>
        Par exemple, pour tous entiers $n$ et $m$ :
        $$
        e^{n+m}=e^n \times e^m
        $$ 
    </t>
    <rq/>
    <t>
        Par convention, on décide de noter pour tout réel $x: \exp (x)=e^x$.
    </t>
</s>

<s>
    <p>
        <t>
            Avec la notation ci-dessus, on a pour tous réels $x$ et $y$ et pour tout entier relatif $n$ :
            <ul>
                <li>
                    <t>$e^{-x}=\frac{1}{e^x}$</t>
                </li>
                <li>
                    <t>$e^{x+y}=e^x \times e^y$</t>
                </li>
                <li>
                    <t>$e^{x-y}=\frac{e^x}{e^y}$</t>
                </li>
                <li>
                    <t>$e^{n x}=\left(e^x\right)^n$</t>
                </li>
            </ul>
        </t>
    </p>
</s>


<s>
    <ti>2.3 Lien avec les suites géométriques</ti>
    <p>
        <t>
            Pour tout réel $a$, la suite ( $e^{n a}$ ) est une suite géométrique.
        </t>
    </p>
    <pr/>
    <t>
        Soit $a$ un réel, on définit la suite  $(u_n)$ par $u_n=e^{n a}$.<br>
        Pour tout entier naturel $n$
        $$u_{n+1}=e^{(n+1) a}=e^{n a+a}=e^{n a} \times e^a=u_n \times e^a$$
        On en déduit que la suite ( $u_n$ ) est une suite <e>géométrique</e> de raison $e^a$ et de premier terme $u_0=e^0=1$.
    </t>
</s>

<s>
    <ex/>
    <t>
        La population en millions d'hvabitants du Royaume-Uni peut être modélisé entre 2004 et 2018 par l'expression suivante :
        $$f(t)=59,77 e^{0,0074 t}$
        où $t$ désigne le nombre d'années écoulées depuis janvier 2004.<br>
        Déterminons le taux d'augmentation annuel et mensuel à 0,01 % près:
        <ol>
            <li>
                <t>
                    Pour le taux annuel, calculons :
                    $$\frac{f(t+1)}{f(t)}=\frac{59,77 e^{0,0074 (t+1)}}{59,77 e^{0,0074 t}}=\frac{59,77 e^{0,0074 t} e^{0,0074}}{59,77 e^{0,0074 t}}=e^{0,0074}\approx 1,00742$$
                    Ce qui correspond à une augmentation de 0,74 %.
                </t>
            </li>
            <li>
                <t>
                    Pour le taux mensuel, calculons :
                    $$\frac{f(t+\frac{1}{12})}{f(t)}=\frac{59,77 e^{0,0074 (t+\frac{1}{12})}}{59,77 e^{0,0074 t}}=\frac{59,77 e^{0,0074 t} e^{0,0074 \times \frac{1}{12}}}{59,77 e^{0,0074 t}}=e^{0,0074}\approx 1,00742$$
                    Soit une augmentation de 0,6 %.
                </t>
            </li>
        </ol>
    </t>
</s>

<s>
    <ex/>
    <t>
        En musique, le rapport d'octave est 2, les fréquences sont données par :
        <table>
        <thead>
        <tr>
        <th><strong>Note</strong></th>
        <th>do</th>
        <th>do♯</th>
        <th>ré</th>
        <th>mi♭</th>
        <th>mi</th>
        <th>fa</th>
        <th>fa♯</th>
        <th>sol</th>
        <th>sol♯</th>
        <th>la</th>
        <th>si♭</th>
        <th>si</th>
        <th>do</th>
        </tr>
        </thead>
        <tbody><tr>
        <td><strong>Fréquence</strong></td>
        <td>264</td>
        <td>275</td>
        <td>297</td>
        <td>317</td>
        <td>330</td>
        <td>352</td>
        <td>371</td>
        <td>396</td>
        <td>412</td>
        <td>440</td>
        <td>475</td>
        <td>495</td>
        <td>528</td>
        </tr>
        </tbody></table>
        Retrouvons la fréquence du <e>la</e>, en supposoant que la fréquence d'un note dans l'octave est donnée par :
        $$f(x)=264 e^{a x}$$
        où $a$ est un réel à déterminer.
        Observons que :
        $$\frac{f(x+12)}{f(x)} =2$$
        Ainsi :
        $$\frac{264 e^{a(x+12)}}{264 e^{ax}} = 2 \Rightarrow e^{12 a} = 2  $$ 
        A l'aide de la calculatrice, on voit que l'unique antécédent de 2 par la fonction exponentielle est environ $x \approx 0,693$.
        Cela montre que $12a=x$ puis $a= \frac{x}{12} \approx 0,05777$.
        La fréquence du <e>la</e> est donc :
        $$f(9)=264 e^{0,05777 \times 9} \approx 440$$
    </t>
</s>


<s>
    <par>3. Etude de la fonction exponentielle</par>
</s>

<s>
    <ti>3.1 Signe et sens de variation</ti>
    <p>
        <t>
            La fonction exponentielle est strictement positive sur $\mathbb{R}$.
            Ainsi pour tout réel $x$, on a $e^x>0$.
        </t>
    </p>

    <pr/>
    <t>
        Pour tout réel $x$, on peut écrire $e^x=e^{2 \times \frac{x}{2}}=\left(e^{\frac{x}{2}}\right)^2$.<br>
        Le carré $\mathrm{d}^{\prime}$ un nombre réel étant toujours positif, on en déduit que pour tout réel $x, e^x \geqslant 0$.<br>
        De plus, on sait que pour tout réel $x, e^x \neq 0$. On a donc $e^x>0$. 
    </t>
</s>

<s>
    <ti>3.2 Stricte croissance</ti>
    <p>
        <t>
            La fonction exponentielle est <e>strictement croissante</e> sur $\mathbb{R}$.
        </t>
    </p>

    <pr/>
    <t>
        Par définition, on sait que pour tout réel $x$:
        $$\exp'(x)=\exp (x)$$
        Or, la fonction exponentielle est strictement positive sur $\mathbb{R}$.<br>
        Ainsi la fonction exponentielle est strictement croissante sur $\mathbb{R}$.
    </t>
</s>

<s>
    <rq/>
    <t>
        Ce résultat permet de résoudre des équations et des inéquations.<br>
        Pour tous réels $a$ et $b$ :
    </t>
    <ul>
        <li>
            <t>$e^a=e^b \Leftrightarrow a=b$</t>
        </li>
        <li>
            <t>$e^a < e^b \Leftrightarrow a < b$</t>
        </li>
    </ul>
</s>

<s>
    <ti>3.2 Représentation graphique</ti>
    <p>
        <t>
            Allure de la représentation graphique
        </t>
    </p>
    <rq/>
    <ul>
        <li>
            <t>La courbe $\mathscr{C}_{\text {exp }}$ passe par les points de coordonnées $(0 ; 1)$ et $( 1 ; e )$.</t>
        </li>
        <li>
            <t>La courbe $\mathscr{C}_{\text {exp }}$ est entièrement située au-dessus de l'axe des abscisses et ne le coupe jamais.</t>
        </li>
    </ul>

</s>
<s>
    <ti>3.3 Dérivée de la fonction $x \mapsto \exp (a x+b)$</ti>
    <p>
        <t>
            Soient $a$ et $b$ deux réels.
            La fonction $f$ définie sur $\mathbb{R}$ par $f(x)=e^{a x+b}$ est dérivable sur $\mathbb{R}$.<br>
            De plus, pour tout réel $x$:
            $$f^{\prime}(x)=a \times e^{a x+b}$$
        </t>
    </p>
    <pr/>
    <t>
        Comme $f(x)=\exp (a x+b)$, d'après les formules qui permettent de dériver $g(x+b)$, la fonction $f$ est dérivable sur $\mathbb{R}$ et, pour tout réel $x, f^{\prime}(x)=a \times \exp ^{\prime}(a x+b)=a \times \exp (a x+b)$.
    </t>
</s>

<s>
    <ex/>
    <t>
        Etude de la fonction définie sur $\mathbb{R}$ par :
        $$f(x)=e^{2x}-2x$$
        On observe que $f$ est dérivable sur $\mathbb{R}$ et vérifie :
        $$f'(x)=2e^{2x} -2 = 2(e^{2x} - 1) \geq 0 \iff e^{2x} \geq 1 \iff 2x \geq 0 \iff x \geq 0$$
        Ainsi, la fonction $f$ est croissante sur $[0;+\infty[$ et décroissante sur $]-\infty;0]$.
        Elle admet un minimum en $x=0$ qui vaut $f(0)=e^0-0=1$
    </t>
</s>

'''

def make_code(code_str):
    lines = code_str.split('\n')
    n = len(lines)
    sep = '|'.join(f"1-{i}" if i> 1 else "1" for i in range(1, n + 1))
    return f'<div class="text-2xl text-left font-bold mb-8 mt-8">Implémentation Python</div>\n<pre><code data-line-numbers="{sep}" class="language-python">{code_str}</code></pre>'

def make_text(txt):
    txt = re.sub(r"(<e>(?:.|\s)+?<\/e>)", lambda x: f'<span class="emph">{x.group(1)[3:-4]}</span>', txt)
    txt = re.sub(r"(<n>(?:.|\s)+?<\/n>)", lambda x: f'<span class="fragment fade-in">{x.group(1)[3:-4]}</span>', txt)
    return txt
        
def to_fragments(txt):
    return re.sub(r"(<t>(?:.|\s)+?<\/t>)", lambda x: f'<div class="text-left">{make_text(x.group(1)[3:-4])}</div>', txt)
    
def make_objs(t):
    return re.sub(r"(<o>(?:.|\s)+?<\/o>)", lambda x: f'<li class="flex items-center fragment fade-right"><span class="w-6 h-6 rounded bg-blue-500 text-white mr-3 flex items-center justify-center">✓</span><div>{x.group(0)[3:-4]}</div></li>', t)

def make_title(t):
    t = re.sub(r"(<cha>(?:.|\s)+?<\/cha>)", lambda x: f'<div class ="border-[#A5D7FB] border-t-2 border-b-0 border-l-0 border-r-0 mb-24"></div><div class="font-extrabold text-black text-6xl mb-32 fragment fade-up">{x.group(0)[5:-6]}</div>\n', t)  
    fmt = '''<div class="display block bg-blue-50 border p-8 mt-12 border-blue-200 border-t-2 border-b-2 border-r-0 border-l-0 h-40 mx-auto fragment fade-up">
<div class="text-xl flex justify-center text-center items-center -mt-14 px-20 mx-64 py-2 rounded-xl bg-blue-500 text-white font-bold">Objectifs du chapitre</div>
<ul class="ml-24 text-lg font-semibold mt-12 pt-8 list-inside list-none space-y-1 columns-2">'''
    t = re.sub(r"(<os>(?:.|\s)+?<\/os>)", lambda x: f'''{fmt}{make_objs(x.group(0)[4:-5])}</ul>\n</div>''', t)
    return f'<section>{t}<div class="mt-24 flex items-center justify-center"><img width="300" src="/images/ornament1.svg" alt="ornament-down"></div></section>'

    
def make_section(section):
    # proofs, remarks and examples
    section = section.replace("<pr/>", '<div class="text-left text-orange-500 font-bold mb-2 fragment fade-in">Preuve</div>')
    section = section.replace("<rq/>", '<div class="text-left text-orange-500 font-bold mb-2 fragment fade-in">Remarque</div>')
    section = section.replace("<ex/>", '<div class="text-left text-green-500 font-bold mb-2 fragment fade-in">Exemple</div>')
    section = section.replace("<li>", '<li class="fragment fade-in">')
    # paragraphs
    section = re.sub(r"(<par>(?:.|\s)+?<\/par>)", lambda x: f'<div class="text-5xl font-black text-sky-600">{x.group(1)[5:-6]}</div>', section)
    # title
    section = re.sub(r"(<ti>(?:.|\s)+?<\/ti>)", lambda x: f'<div class="text-3xl text-left font-bold text-sky-600 mb-4  fragment fade-in">{x.group(1)[4:-5]}</div>', section)
    # defs
    section = re.sub(r"(<d>(?:.|\s)+?<\/d>)", lambda x: f'<div class="relative border rounded-xl p-8 mt-12 mb-6 w-full bg-green-50 border-green-300 shadow-md text-left fragment fade-up"><div class="absolute -top-5 left-4 px-3 py-3 text-white bg-green-600 font-bold">Définition</div>{to_fragments(x.group(1)[3:-4])}</div>', section)
    # props
    section = re.sub(r"(<p>(?:.|\s)+?<\/p>)", lambda x: f'<div class="relative border rounded-xl p-8 mt-12 mb-6 w-full bg-blue-50 border-blue-300 shadow-md text-left fragment fade-up"><div class="absolute -top-5 left-4 px-3 py-3 text-white bg-blue-600 font-bold">Proposition</div>{to_fragments(x.group(1)[3:-4])}</div>', section)
    # theos
    section = re.sub(r"(<the>(?:.|\s)+?<\/the>)", lambda x: f'<div class="relative border rounded-xl p-8 mt-12 mb-6 w-full bg-red-50 border-red-300 shadow-md text-left fragment fade-up"><div class="absolute -top-5 left-4 px-3 py-3 text-white bg-red-600 font-bold">Théorème</div>{to_fragments(x.group(1)[5:-6])}</div>', section)
    # simple txts
    section = to_fragments(section)
    # python snippet
    section = re.sub(r"(<py>(?:.|\s)+?<\/py>)", lambda x: make_code(x.group(0)[4:-5].strip()), section)
    return section

def make_slide(slide):
    title, *sections = re.findall(r"(?<=<s>)(?:.|\s)+?(?=<\/s>)", slide)
    slides = '\n\n'.join(f"<section>{make_section(section)}</section>" for section in sections)
    return f"{make_title(title)}\n\n{slides}"

html = make_slide(slide)
print(html)

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: