texlive[67087] Master/texmf-dist: sympycalc (12may23)

commits+karl at tug.org commits+karl at tug.org
Fri May 12 22:35:19 CEST 2023


Revision: 67087
          http://tug.org/svn/texlive?view=revision&revision=67087
Author:   karl
Date:     2023-05-12 22:35:18 +0200 (Fri, 12 May 2023)
Log Message:
-----------
sympycalc (12may23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/lualatex/sympycalc/README.md
    trunk/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.pdf
    trunk/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.tex
    trunk/Master/texmf-dist/tex/lualatex/sympycalc/SympyCalc.sty

Modified: trunk/Master/texmf-dist/doc/lualatex/sympycalc/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/sympycalc/README.md	2023-05-12 20:35:07 UTC (rev 67086)
+++ trunk/Master/texmf-dist/doc/lualatex/sympycalc/README.md	2023-05-12 20:35:18 UTC (rev 67087)
@@ -1,7 +1,8 @@
-SympyCalc is a package to work with Sympy with TeX printing.
+SympyCalc is a package to work with Sympy (Python) with TeX printing.
 -----------------------------------------------------------------------------
 SympyCalc un package pour travailler avec le module Sympy et sa sortie LaTeX.
 -----------------------------------------------------------------------------
 Author : Cédric Pierquet
 email : cpierquet at outlook.fr
-Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
\ No newline at end of file
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+Note : SymPy is a Python library for symbolic math (sympy.org).
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.tex	2023-05-12 20:35:07 UTC (rev 67086)
+++ trunk/Master/texmf-dist/doc/lualatex/sympycalc/SympyCalc-doc.tex	2023-05-12 20:35:18 UTC (rev 67087)
@@ -3,8 +3,8 @@
 % arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
 
 \documentclass[french,a4paper,11pt]{article}
-\def\SCversion{0.1.0}
-\def\SCdate{5 mai 2023}
+\def\SCversion{0.1.1}
+\def\SCdate{8 mai 2023}
 \usepackage[executable=python.exe]{pyluatex}
 \usepackage[svgnames]{xcolor}
 \usepackage{siunitx}
@@ -68,13 +68,13 @@
 		commentstyle={\itshape\color{violet}},
 		keywordstyle={\bfseries\color{DodgerBlue}},%
 		classoffset=0,%
-		keywords={frac,dfrac,int,sqrt},%
+		keywords={frac,dfrac,int,sqrt,mathcal},%
 		keywordstyle={\bfseries\color{DodgerBlue}},%
 		classoffset=1,%
-		morekeywords={sympycalc,dsympycalc,sympydev,dsympydev,sympyfact,dsympyfact,sympyderiv,dsympyderiv,sympyprim,dsympyprim,sympyintegr,dsympyintegr,sympylim,dsympylim,sympyfexpo,dsympyfexpo,sympyresol,dsympyresol,sympyresolC,dsympyresolC},%
+		morekeywords={sympycalc,dsympycalc,sympydev,dsympydev,sympyfact,dsympyfact,sympyderiv,dsympyderiv,sympyprim,dsympyprim,sympyintegr,dsympyintegr,sympylim,dsympylim,sympyfexpo,dsympyfexpo,sympyresol,dsympyresol,sympyresolC,dsympyresolC,sympynbderiv,dsympynbderiv,sympyimage,dsympyimage,pythonq},%
 		keywordstyle={\bfseries\color{purple}},%
 		classoffset=2,%
-		morekeywords={solve},%
+		morekeywords={solve,radsimp,cancel},%
 		keywordstyle={\bfseries\color{ForestGreen}},%
 		classoffset=3,%
 		morekeywords={NoSimplif,Simplif},%
@@ -148,6 +148,18 @@
 \end{tabular}
 \end{center}
 
+\begin{center}
+	\begin{minipage}{0.5\linewidth}
+		\begin{tcolorbox}[colframe=DarkBlue!50,colback=DarkBlue!5]
+			\begin{center}
+				\textsf{SymPy} est un module \textsf{Python} qui permet de faire du calcul symbolique.
+				
+				\texttt{\url{https://www.sympy.org/}}
+			\end{center}
+		\end{tcolorbox}
+	\end{minipage}
+\end{center}
+
 \vspace{0.25cm}
 
 {$\blacktriangleright$~~Compilation en \hologo{LuaLaTeX}, avec un accès \textsf{--shell-escape}, en \textit{partenariat} avec \textsf{pyluatex}.}
@@ -319,7 +331,7 @@
 	\item \texttt{\textbackslash \textcolor{purple}{sympy...}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{romain} ;
 	\item \texttt{\textbackslash \textcolor{purple}{dsympy...}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{romain}, et affichage en \texttt{\textbackslash displaystyle} ;
 	\item \texttt{\textbackslash \textcolor{purple}{sympy...*}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{italique} ;
-	\item \texttt{\textbackslash \textcolor{purple}{dsympy...*}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{romain}, et affichage en \texttt{\textbackslash displaystyle}.
+	\item \texttt{\textbackslash \textcolor{purple}{dsympy...*}} : commande qui simplifie (par défaut), avec règles typographiques \texttt{[fr]} \textsf{italique}, et affichage en \texttt{\textbackslash displaystyle}.
 \end{itemize}
 
 Dans certains cas la \textit{simplification} ne propose pas une sortie \textit{classique}, et il est possible d'empêcher la simplification grâce à l'argument optionnel \texttt{<\textcolor{OliveDrab}{NoSimplif}>}.
@@ -337,9 +349,11 @@
 \dsympycalc(*)<NoSimplif>{commande sympy}
 
 %commandes spécifiques, sortie standard, détaillées plus loin
+\sympyimage(*)<NoSimplif>{fonction sympy}[variable]{point}
 \sympydev(*)<NoSimplif>{expr sympy}[variable]
 \sympyfact(*)<NoSimplif>{expr sympy}
 \sympyderiv(*)<NoSimplif>{expr sympy}[variable]
+\sympynbderiv(*)<NoSimplif>{expr sympy}[variable]{point}[côté]
 \sympyprim(*)<NoSimplif>{expr sympy}[variable]
 \sympyintegr(*)<NoSimplif>{expr sympy}[variable]{borne inf}{borne sup}
 \sympylim(*)<NoSimplif>{expr sympy}[variable]{point}[côté]
@@ -349,8 +363,10 @@
 
 %commandes spécifiques, sortie displaystyle, détaillées plus loin
 \dsympydev(*)<NoSimplif>{expr sympy}[variable]
+\dsympyimage(*)<NoSimplif>{fonction sympy}[variable]{point}
 \dsympyfact(*)<NoSimplif>{expr sympy}
 \dsympyderiv(*)<NoSimplif>{expr sympy}[variable]
+\dsympynbderiv(*)<NoSimplif>{expr sympy}[variable]{point}[côté]
 \dsympyprim(*)<NoSimplif>{expr sympy}[variable]
 \dsympyintegr(*)<NoSimplif>{expr sympy}[variable]{borne inf}{borne sup}
 \dsympylim(*)<NoSimplif>{expr sympy}[variable]{point}[côté]
@@ -371,8 +387,6 @@
 Un petit \textit{guide} pour \textsf{sympy} est disponible à : \url{https://hashdork.com/fr/sympy-library-guide/}.
 \end{tipblock}
 
-\newpage
-
 \section{Limitations}
 
 \begin{warningblock}
@@ -460,6 +474,45 @@
 
 \section{Quelques commandes spécifiques}
 
+\subsection{Images}
+
+\begin{cautionblock}
+\cmaj{0.1.1} La commande pour calculer une image via \textsf{sympy} est \texttt{\textbackslash \textcolor{purple}{sympyimage}} ou \texttt{\textbackslash \textcolor{purple}{dsympyimage}}.
+
+Il vaut mieux vérifier si le résultat formaté est conforme aux attentes, et sinon utiliser la commande générique.
+\end{cautionblock}
+
+\begin{bloctext}[listing only]
+%commandes pour cacluler une image
+\sympyimage(*)<NoSimplif>{fonction sympy}[variable]{point}
+\dsympyimage(*)<NoSimplif>{fonction sympy}[variable]{point}
+\end{bloctext}
+
+\begin{tipblock}
+Concernant son fonctionnement :
+
+\begin{itemize}
+	\item la version \Cle{*} permet de ne pas formater le \texttt{e} et le \texttt{i} en \textsf{romain} ;
+	\item le premier argument, optionnel et pouvant valoir \texttt{<\textcolor{OliveDrab}{NoSimplif}>} permet d'\textit{annuler} la simplification (attention au comportement de la \textit{simplification} par \textsf{sympy}\ldots)
+	\item le deuxième argument, obligatoire et entre \texttt{\{...\}} est quant à lui la fonction, en langage \textsf{sympy} à passer en \textsf{python} ;
+	\item les derniers arguments, optionnel entre \texttt{[...]} et obligatoire et entre \texttt{\{...\}} correspondent à la variable et le point.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{bloctext}
+$f(x)=\dfrac{2+\e^x}{3+4\e^{2x}}$ avec $a=5$ : $f(5)=\dsympyimage{(2+exp(x))/(3+4*exp(2*x))}{5}$
+\end{bloctext}
+
+\begin{bloctext}
+$g(t)=\sqrt{1+\ln(t)}$ avec $a=13$ : $g(13)=\sympyimage{sqrt(1+log(t))}[t]{13}$
+\end{bloctext}
+
+\begin{bloctext}
+$h(x)=2x^2+2,5x+7$ en $a=\sqrt{2}$ : 
+$h\left(\sqrt{2}\right)=\dsympyimage{2*x**2+5/2*x+7}{sqrt(2)}$
+\end{bloctext}
+
 \subsection{Développement}
 
 \begin{cautionblock}
@@ -599,15 +652,62 @@
 Les solutions de $10\,\e^{4x+5}=2$ sont $\mathcal{S}=\dsympyresol{10*exp(4*x+5)=2}$
 \end{bloctext}
 
-\subsection{Dérivation}
+\subsection{Dérivation locale}
 
 \begin{cautionblock}
-La commande pour dériver, grâce à \textsf{sympy} est \texttt{\textbackslash \textcolor{purple}{sympyderiv}} ou \texttt{\textbackslash \textcolor{purple}{dsympyderv}}.
+\cmaj{0.1.1} La commande pour dériver localement, grâce à \textsf{sympy} est \texttt{\textbackslash \textcolor{purple}{sympynbderiv}} ou \texttt{\textbackslash \textcolor{purple}{dsympynbderiv}}.
 
 Il vaut mieux vérifier si le résultat formaté est conforme aux attentes, et sinon utiliser la commande générique.
 \end{cautionblock}
 
 \begin{bloctext}[listing only]
+%commandes pour dériver localement
+\sympynbderiv(*)<NoSimplif>{expression sympy}[variable]{point}[côté]
+\dsympynbderiv(*)<NoSimplif>{expression sympy}[variable]{point}[côté]
+\end{bloctext}
+
+\begin{tipblock}
+Concernant son fonctionnement :
+
+\begin{itemize}
+	\item la version \Cle{*} permet de ne pas formater le \texttt{e} et le \texttt{i} en \textsf{romain} ;
+	\item le premier argument, optionnel et pouvant valoir \texttt{<\textcolor{OliveDrab}{NoSimplif}>} permet d'\textit{annuler} la simplification (attention au comportement de la \textit{simplification} par \textsf{sympy}\ldots)
+	\item le deuxième argument, obligatoire et entre \texttt{\{...\}} est quant à lui l'expression en langage \textsf{sympy} à passer en \textsf{python} ;
+	\item le troisième argument, optionnel et entre \texttt{[...]} est la variable ;
+	\item les derniers arguments, obligatoire et entre \texttt{\{...\}} et optionnel entre \texttt{[...]} correspondent à la valeur (et la position \texttt{[g]} ou \texttt{[d]}) en laquelle on souhaite travailler.
+\end{itemize}
+\vspace*{-\baselineskip}\leavevmode
+\end{tipblock}
+
+\begin{bloctext}
+Si $f(x)=(x+3)\,\e^{2x}$, alors on peut montrer que $f'(2) = \sympynbderiv{(x+3)*exp(2*x)}{2}$
+\end{bloctext}
+
+\begin{bloctext}
+Le nombre dérivé de la fonction $x \mapsto \sqrt{x}$ en $a=2$ vaut 
+$\lim\limits_{x \to 2} \frac{\sqrt{x}-\sqrt{2}}{x-2} = \sympynbderiv{sqrt(x)}{2}$.
+
+Le nombre dérivé de la fonction $x \mapsto \sqrt{x}$ en $a=2$ vaut 
+$\lim\limits_{x \to 2} \dfrac{\sqrt{x}-\sqrt{2}}{x-2} = \dsympynbderiv{sqrt(x)}{2}$.
+\end{bloctext}
+
+\begin{bloctext}
+Le nombre dérivé de $\varphi(x) = 1+\dfrac{1}{(x+2)^2}$ en $a=-5$ vaut 
+$\lim\limits_{x \to -3} \frac{\varphi(x)-\varphi(-5)}{x-(-5)} = \sympynbderiv{1+1/(x+2)**2}{-5}$.
+
+Le nombre dérivé de $\varphi(x) = 1+\dfrac{1}{(x+2)^2}$ en $a=-5$ vaut 
+$\lim\limits_{x \to -3} \dfrac{\varphi(x)-\varphi(-5)}{x-(-5)} = \dsympynbderiv{1+1/(x+2)**2}{-5}$.
+\end{bloctext}
+
+\subsection{Dérivation globale}
+
+\begin{cautionblock}
+La commande pour dériver, grâce à \textsf{sympy} est \texttt{\textbackslash \textcolor{purple}{sympyderiv}} ou \texttt{\textbackslash \textcolor{purple}{dsympyderiv}}.
+
+Il vaut mieux vérifier si le résultat formaté est conforme aux attentes, et sinon utiliser la commande générique.
+\end{cautionblock}
+
+\begin{bloctext}[listing only]
 %commandes pour dériver
 \sympyderiv(*)<NoSimplif>{expression sympy}[variable]
 \dsympyderiv(*)<NoSimplif>{expression sympy}[variable]
@@ -771,43 +871,43 @@
 \section{Évolutions}
 
 \begin{tipblock}
-L'utilisateur du package pourra utiliser ses propres fonctions ou commandes \textsf{sympy}, qui pourront être déclarés grâce à l'environnement \texttt{python}.
+L'utilisateur du package pourra utiliser ses propres fonctions ou commandes \textsf{sympy}, qui pourront être déclarés grâce à l'environnement \texttt{pythonq}.
 \end{tipblock}
 
 \begin{bloctext}[listing only]
-\begin{python}
-def tangente(expr,var,a) :
-	f = lambdify(x, expr)
-	deriveef = diff(expr,x)
-	derf = lambdify(x, deriveef)
-	pente = simplify(derf(a))
-	ordonnee = simplify(f(a))
-	tgte = simplify(pente*(x-a) + ordonnee)
+\begin{pythonq}
+def tangente_exacte(expr,var,a) :
+	fdea = expr.subs(var,a)
+	fprimedea = limit((expr-fdea)/(var-a),var,a)
+	tgte = expand(fprimedea*(x-a) + fdea)
 	return tgte
 	
-\end{python}
+\end{pythonq}
 \end{bloctext}
 
-\begin{python}
-def tangente(expr,var,a) :
-	f = lambdify(x, expr)
-	deriveef = diff(expr,x)
-	derf = lambdify(x, deriveef)
-	pente = simplify(derf(a))
-	ordonnee = simplify(f(a))
-	tgte = simplify(pente*(x-a) + ordonnee)
+\begin{pythonq}
+def tangente_exacte(expr,var,a) :
+	fdea = expr.subs(var,a)
+	fprimedea = limit((expr-fdea)/(var-a),var,a)
+	tgte = expand(fprimedea*(x-a) + fdea)
 	return tgte
-	
-\end{python}
 
+\end{pythonq}
+
 \begin{bloctext}
-La tangente à la courbe de la fonction $f(x)=\e^{2x}+3$ en $a=1$ a pour équation (appochée) :
+La tangente à la courbe de la fonction $f(x)=\e^{2x}+3$ en $a=1$ a pour équation :\\
+$y = \sympycalc{tangente_exacte(exp(2*x)+3,x,1)}$.
+\end{bloctext}
 
-$y \approx \sympycalc{tangente(exp(2*x)+3,x,1)}$.
+\begin{bloctext}
+La tangente à la courbe de la fonction $g(t)=\ln(x+3)$ en $a=4$ a pour équation :\\
+$y = \dsympycalc{tangente_exacte(log(t+3),t,4)}$.
 \end{bloctext}
 
 \section{Historique}
 
+\verb|v0.1.1|~:~~~~Commandes pour les nombres dérivés + images.
+
 \verb|v0.1.0|~:~~~~Version initiale.
 
 

Modified: trunk/Master/texmf-dist/tex/lualatex/sympycalc/SympyCalc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/lualatex/sympycalc/SympyCalc.sty	2023-05-12 20:35:07 UTC (rev 67086)
+++ trunk/Master/texmf-dist/tex/lualatex/sympycalc/SympyCalc.sty	2023-05-12 20:35:18 UTC (rev 67087)
@@ -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_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,6 +78,38 @@
 	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'
@@ -80,9 +116,14 @@
 	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 @@
 		{\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 @@
 		{\displaystyle\sympyfact<#2>{#3}}%
 }
 
+%------Image
+
 %------Dériver
 \NewDocumentCommand\sympyderiv{ s D<>{Simplif} m O{x} }{%
 	\StrSubstitute{#3}{/}{*S.One/}[\argtmp]%
@@ -262,7 +334,7 @@
 %------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 @@
 		{\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]%



More information about the tex-live-commits mailing list.