diff options
Diffstat (limited to 'macros/luatex/latex/sympycalc/tex/SympyCalc.sty')
-rw-r--r-- | macros/luatex/latex/sympycalc/tex/SympyCalc.sty | 110 |
1 files changed, 108 insertions, 2 deletions
diff --git a/macros/luatex/latex/sympycalc/tex/SympyCalc.sty b/macros/luatex/latex/sympycalc/tex/SympyCalc.sty index 736da2c084..ec7da67390 100644 --- a/macros/luatex/latex/sympycalc/tex/SympyCalc.sty +++ b/macros/luatex/latex/sympycalc/tex/SympyCalc.sty @@ -2,7 +2,8 @@ % licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{SympyCalc}[2023/05/05 v0.1.0 Sympy commands with TeX printing] +\ProvidesPackage{SympyCalc}[2023/05/08 v0.1.1 Sympy commands with TeX printing] +% 0.1.1 Ajout du nombre dérivé + calcul image % 0.1 Version initiale %------Packages utiles @@ -10,10 +11,12 @@ %------Scripts python \begin{python} +#initialisations from sympy import * init_printing() x, y, z, t = symbols('x y z t') +#commandes génériques def latex_fr(expr) : return latex(expr,imaginary_unit='ri',ln_notation=True,decimal_separator='comma').replace("e^","\\text{e}^") @@ -26,6 +29,7 @@ def latex_fr_simpl(expr) : def latex_frit_simpl(expr) : return latex(simplify(expr),ln_notation=True,decimal_separator='comma') +#commandes de résolutions def latex_fr_resol(expr,var) : if '=' in expr : expr = expr.replace('=','-(') + ')' @@ -74,15 +78,52 @@ def latex_frit_resolC(expr,var) : res = res.replace("]","\\}") return res +#commandes de nombres dérivés +def latex_fr_nbderiv(expr,var,pta,pos) : + tmpf = Lambda(var,expr) + res = (tmpf(var)-tmpf(pta))/(var-pta) + res = limit(res,var,pta,pos) + res = latex(res,ln_notation=True,decimal_separator='comma') + res = res.replace("e^","\\text{e}^") + return res + +def latex_frit_nbderiv(expr,var,pta,pos) : + tmpf = Lambda(var,expr) + res = (tmpf(var)-tmpf(pta))/(var-pta) + res = limit(res,var,pta,pos) + res = latex(res,ln_notation=True,decimal_separator='comma') + return res + +def latex_fr_nbderiv_simpl(expr,var,pta,pos) : + tmpf = Lambda(var,expr) + res = (tmpf(var)-tmpf(pta))/(var-pta) + res = simplify(limit(res,var,pta,pos)) + res = latex(res,ln_notation=True,decimal_separator='comma') + res = res.replace("e^","\\text{e}^") + return res + +def latex_frit_nbderiv_simpl(expr,var,pta,pos) : + tmpf = Lambda(var,expr) + res = (tmpf(var)-tmpf(pta))/(var-pta) + res = simplify(limit(res,var,pta,pos)) + res = latex(res,ln_notation=True,decimal_separator='comma') + return res + +#Patch pour +oo def patch_oo(res) : if res == '\\infty' : return '+\\infty' else : return res +#Commande de forme exponentielle def forme_expo(z) : return abs(z)*exp(I*arg(z)) +#Commande de calcul d'image +def imagefct(expr,var,pta) : + return expr.subs(var,pta) + \end{python} %------Commandes de base @@ -114,6 +155,35 @@ def forme_expo(z) : {\displaystyle\sympycalc<#2>{#3}}% } +%------Image +\NewDocumentCommand\sympyimage{ s D<>{Simplif} m O{x} m }{% + \StrSubstitute{#3}{/}{*S.One/}[\argtmp]% + \IfBooleanTF{#1}%*=frit, no*=fr + {% + \IfStrEq{#2}{Simplif}% + {% + \py{latex_frit_simpl(imagefct(\argtmp,#4,#5))}% + }% + {% + \py{latex_frit(imagefct(\argtmp,#4,#5))}% + }% + }% + {% + \IfStrEq{#2}{Simplif}% + {% + \py{latex_fr_simpl(imagefct(\argtmp,#4,#5))}% + }% + {% + \py{latex_fr(imagefct(\argtmp,#4,#5))}% + }% + }% +} +\NewDocumentCommand\dsympyimage{ s D<>{Simplif} m O{x} m }{% + \IfBooleanTF{#1}% + {\displaystyle\sympyimage*<#2>{#3}[#4]{#5}}% + {\displaystyle\sympyimage<#2>{#3}[#4]{#5}}% +} + %------Développer \NewDocumentCommand\sympydev{ s D<>{Simplif} m O{x} }{% \StrSubstitute{#3}{/}{*S.One/}[\argtmp]% @@ -172,6 +242,8 @@ def forme_expo(z) : {\displaystyle\sympyfact<#2>{#3}}% } +%------Image + %------Dériver \NewDocumentCommand\sympyderiv{ s D<>{Simplif} m O{x} }{% \StrSubstitute{#3}{/}{*S.One/}[\argtmp]% @@ -262,7 +334,7 @@ def forme_expo(z) : %------Limite \NewDocumentCommand\sympylim{ s D<>{Simplif} m O{x} m O{} }{% \StrSubstitute{#3}{/}{*S.One/}[\argtmp]% - \def\poslim{} + \def\poslim{'+-'} \IfStrEq{#6}{g}% {\def\poslim{'-'}}{} \IfStrEq{#6}{d}% @@ -293,6 +365,40 @@ def forme_expo(z) : {\displaystyle\sympylim<#2>{#3}[#4]{#5}[#6]}% } +%------Nb deriv +\NewDocumentCommand\sympynbderiv{ s D<>{Simplif} m O{x} m O{} }{% + \StrSubstitute{#3}{/}{*S.One/}[\argtmp]% + \def\poslim{'+-'} + \IfStrEq{#6}{g}% + {\def\poslim{'-'}}{} + \IfStrEq{#6}{d}% + {\def\poslim{'+'}}{} + \IfBooleanTF{#1}%*=frit, no*=fr + {% + \IfStrEq{#2}{Simplif}% + {% + \py{patch_oo(latex_fr_nbderiv_simpl(\argtmp,#4,#5,\poslim))}% + }% + {% + \py{patch_oo(latex_frit_nbderiv_simpl(\argtmp,#4,#5,\poslim))}% + }% + }% + {% + \IfStrEq{#2}{Simplif}% + {% + \py{patch_oo(latex_fr_nbderiv(\argtmp,#4,#5,\poslim))}% + }% + {% + \py{patch_oo(latex_frit_nbderiv(\argtmp,#4,#5,\poslim))}% + }% + }% +} +\NewDocumentCommand\dsympynbderiv{ s D<>{Simplif} m O{x} m O{} }{% + \IfBooleanTF{#1}% + {\displaystyle\sympynbderiv*<#2>{#3}[#4]{#5}[#6]}% + {\displaystyle\sympynbderiv<#2>{#3}[#4]{#5}[#6]}% +} + %------FormeExpo \NewDocumentCommand\sympyfexpo{ s D<>{NoSimplif} m }{% %\StrSubstitute{#3}{/}{*S.One/}[\argtmp]% |