J'utilise LuaLatex et CMathLuaLatex pour rédiger des devoirs "variables" à l'attention de mes élèves. Je dois donc faire des calculs pour chaque copie.
J'ai observé un problème dans la gestion des signes : j'affiche en sortie d'un normal( ... ) ceci par exemple : x² - - 2x + -2 , ce qui n'est pas terrible comme présentation. Je n'ai pas de problème avec les mêmes instructions et avec la même bibliothèque Giac mais attaquée cette fois par l'interface XCAS.
Christophe Devalland s'est penché sur la question et a identifié une différence de comportement entre latex(Resultat) (qui n'a pas ce problème) alors que fprint(Sortie,latex(Resultat)) l'a. Pour lui, ce serait un problème interne à giac lié à la fonction fprint.
Est-ce soluble ?
P.S. exemple de code générant les -- et +- :
Code : Tout sélectionner
\documentclass[french]{article}
\usepackage{luacode}% pour LuaLaTex
\begin{document}
%%%%%%%%%%%% CmathLuaTeX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\directlua{dofile('/home/administrateur/Projets-QCM/Transversal/CmathLuaTeX.lua')}
\newcommand\Cmath[1]{\luadirect{tex.print(Cmath2LaTeX('\detokenize{#1}'))}}
\newcommand\XcasOld[1]{$\Cmath{xcas(#1)}$}
\newcommand\Xcas[1]{$\luaexec{tex.print(Cmath2LaTeX('xcas('..#1..')'))}$}% fournir la commande à l'intérieur de xcas entre quotes
\Xcas{'restart'}
\luaexec{%
xaA=-4
xbA=3
aA=-0.2;bA=-(aA)*(xaA+xbA);cA=aA*xaA*xbA % attention à -aA
}% end \luaexec
\begin{enumerate}
\item $\luadirect{str='xcas(factor(x^2-('..xaA..')))';tex.print(Cmath2LaTeX(str))}$%OK
\item \Xcas{'normal(-2*(x-('..xaA..'))*(x-('..xbA..')))'} % manuel, long, délicat et peu lisible
\item \Xcas{string.format('normal(\%s*(x-(\%s))*(x-(\%s)))',-2,xaA,xbA)} % avec string.format ; avec les variables de l'espace lua
\item \Xcas{string.format('normal(\%s*x^2+\%s*x+\%s)',aA,bA,cA)}
\item \Xcas{string.format('factor(\%s*x^2+\%s*x+\%s)',aA,bA,cA)}
\item \Xcas{string.format('canonical_form(\%s*x^2+\%s*x+\%s)',aA,bA,cA)}
\item \Xcas{string.format('f(x):=\%s * x^2+\%s * x+\%s',aA,bA,cA)}\Xcas{'f(x)'}
\item \Xcas{'normal(f(x))'}
\end{enumerate}
\end{document}