Page 4 sur 5

Re: [luatex] Projet cmathluatex

MessagePosté: Dimanche 20 Décembre 2015, 17:29
par aldus
Conformément à la documentation de LuaLatex, j'ai fait les substitutions suivantes :

Code: Tout sélectionner
%\usepackage{ucs}
%\usepackage[utf8x]{inputenc}
\usepackage{fontspec}% pour LuaLaTex
%\usepackage[french]{babel}
\usepackage{polyglossia}% pour LuaLaTex
\usepackage{luacode}% pour LuaLaTex
\usepackage{luatextra}% pour LuaLaTex


Après avoir restauré tmpDir à sa place, j'ai lancé les commandes en mode terminal, et çà marche !
J'ai réessayé avec
Code: Tout sélectionner
tex.print('xcas(1+2) : '..Cmath2LaTeX('xcas(1+2)'))
dans un \luaexec{ ... }, et là je n'ai rien. Plus précisément, il y a eu création de giac.in mais pas de nouveaux giac.sav noi de giac.out.
J'ai réessayé en effaçant les giac.* . Il se plaint à la ligne 1183 de ne pouvoir ouvrir '/tmp/giac.out' "(No such file or directory)". Les giac.sav et giac.out n'ont pas été générés.
J'ai réessayé en laissant les vieux fichiers giac. sav et giac.out (générés en mode terminal) et là il m'affiche "3" !
J'ai réessayé avec
Code: Tout sélectionner
tex.print('xcas(3+2) : '..Cmath2LaTeX('xcas(3+2)'))
et évidemment, il m'affiche 3, puisque giac.out n'a pas été mis à jour !

Il me semble donc que c'est au niveau du lancement de giac à partir de (Lua)Latex que le bât blesse.

Re: [luatex] Projet cmathluatex

MessagePosté: Lundi 21 Décembre 2015, 13:52
par chris
Si le giac.in est créé (par luatex) et que les deux autres ne le sont pas, c'est que giac n'arrive pas à créer ces fichiers. Mais pourquoi Luatex y arriverait et pas giac ?
Sur mon ordi, je n'ai pas ce problème. Le texte ci-dessous compile sans problème et donne ce qu'il faut :
Code: Tout sélectionner
\documentclass[a4paper,10pt]{article}
\usepackage{fontspec}
\usepackage{CmathLuaTeX}
\usepackage{luacode}% pour LuaLaTex
\begin{document}
\luaexec{tex.print('xcas(1+2) : '..Cmath2LaTeX('xcas(1+2)'))}
\end{document}

Peut-être que la commande
Code: Tout sélectionner
os.execute(commande)

n'est pas exécutée. C'est celle qui lance giac.
As-tu bien mis -shell-escape dans ton instruction de compilation ?

Re: [luatex] Projet cmathluatex

MessagePosté: Lundi 21 Décembre 2015, 18:59
par aldus
J'ai cherché ce qui avait changé et qui pouvait expliquer que ce qui avait bien marché ne marchait plus.

J'ai pensé aux mises à jour mais j'avais oublié que TeXMaker avait planté et perdu des préférences. J'avais remis LuaLatex en compilation rapide mais je n'avais pas vérifié les préférences. Il manquait effectivement " -shell-escape" !

Dommage qu'il n'y ait pas eu d'alerte de la part de TeXMaker pour indiquer qu'une demande d'exécution externe avait été demandée et n'avait pas été exécutée, ou une erreur de Lua pour indiquer la non exécution.

Merci beaucoup de l'aide !

Re: [luatex] Projet cmathluatex

MessagePosté: Lundi 21 Décembre 2015, 19:14
par aldus
Je ne voudrais pas abuser, mais j'ai deux autres sujets :
- le premier : je voudrais envoyer une succession de commandes Xcas/Giac plutôt que de faire à chaque fois un envoi, dans une démarche d'amélioration des performances. En effet, je crée des copies distinctes et je peux me retrouver avec pas mal de commandes Giac envoyée avec un coût en temps élmevé. J'ai essayé diverses ponctuations (; , :) pour cumuler diverses commandes successives, mais çà n'a pas marché. Peut-être est-ce intrinsèque au mode de récupération à partir de giac.out ? ou au contraire, CMathLuaLatex sait-il créer/récupérer à partir de giac.out une table ?
- le second, très bête mais gênant : lua ne semble pas savoir gérer -(-2 ) = 2, ni Giac (ce qui parait curieux). Ainsi j'affiche des trinômes sous la forme x² - - 2x + -2, par exemple en sortie d'une fonction "normal( ... )", ce qui n'est pas terrible pour les élèves. Y a-t-il un moyen de mieux gérer cela ?

Re: [luatex] Projet cmathluatex

MessagePosté: Lundi 21 Décembre 2015, 22:03
par chris
aldus a écrit:Je ne voudrais pas abuser, mais j'ai deux autres sujets :
- le premier : je voudrais envoyer une succession de commandes Xcas/Giac plutôt que de faire à chaque fois un envoi, dans une démarche d'amélioration des performances. En effet, je crée des copies distinctes et je peux me retrouver avec pas mal de commandes Giac envoyée avec un coût en temps élmevé. J'ai essayé diverses ponctuations (; , :) pour cumuler diverses commandes successives, mais çà n'a pas marché. Peut-être est-ce intrinsèque au mode de récupération à partir de giac.out ? ou au contraire, CMathLuaLatex sait-il créer/récupérer à partir de giac.out une table ?

J'y ai pensé. Techniquement ce doit être possible puisque Asymptote le fait en numérotant les fichiers pdf créés. Mais je n'ai pas approfondi la question et je ne sais pas faire. Toute aide sera la bienvenue.
Je contourne facilement ce problème avec TeXworks et ma macro Ctrl+F9 qui appelle Cmathluatex.lua depuis TeXworks et donc fait l'appel à giac pour toute fonction xcas(). J'en parle dans ma doc au paragraphe des tableaux (https://github.com/cdevalland/cmathluatex/wiki). La traduction se fait directement dans le code source et il n'y a plus d'appel à giac à la compilation. Si texmaker sait appeler un script externe en lua et récupérer le retour, il sera facile de créer l'équivalent de mon Ctrl+F9.
aldus a écrit:- le second, très bête mais gênant : lua ne semble pas savoir gérer -(-2 ) = 2, ni Giac (ce qui parait curieux). Ainsi j'affiche des trinômes sous la forme x² - - 2x + -2, par exemple en sortie d'une fonction "normal( ... )", ce qui n'est pas terrible pour les élèves. Y a-t-il un moyen de mieux gérer cela ?

Donne moi une instruction qui pose problème, je verrai ce qui se passe.

Re: [luatex] Projet cmathluatex

MessagePosté: Jeudi 24 Décembre 2015, 05:19
par aldus
Concernant le point 2, la gestion des "-".

Voici un code qui montre le problème que je rencontre :

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}


Le premier aspect, est l'incapacité apparemment de lua de gérer -aA avec un aA négatif ! Pour gérer cela, j'écris "-(aA)". Pas très élégant ni pratique.
Deuxième aspect : il apparaît avec Xcas des "+ -" pas très heureux. Ils n'apparaissent pas quand je demande la même opération directement sous l'interface Xcas.

Re: [luatex] Projet cmathluatex

MessagePosté: Jeudi 24 Décembre 2015, 12:07
par aldus
Concernant le premier point, à savoir l'envoi groupé d'une succession de commandes pour optimiser les performances :
- j'imagine que l'on pourrait faire un programme Giac qui organiserait les données dans le fichier giac.out, dans un format aisément lisible par lua. On pourrait même imaginer un format adapté à Giac genre les listes ou les matrices que lua sait lire sans problème (j'ai déjà fait ce genre d'aller-retour entre les deux formats.
- plus radical, je me demande si on ne pourrait pas utiliser le côté "glue language" revendiqué par lua pour attaquer directement la bibliothèque Giac écrite en C . J'ai essayé de trouver des informations sur Giac, la bibliothèque en C mais à chaque fois je tombe sur des explications sur son interface Xcas. Il y a surement une forte proximité et peut-être y a-t-il quelque part un moyen de trouver les procédures de Giac à partir de celles de Xcas ? Je pense qu'on serait alors au meilleur de la performance possible.

Re: [luatex] Projet cmathluatex

MessagePosté: Dimanche 10 Janvier 2016, 21:49
par chris
Bonsoir,
Le premier aspect, est l'incapacité apparemment de lua de gérer -aA avec un aA négatif ! Pour gérer cela, j'écris "-(aA)". Pas très élégant ni pratique.

Je compile sans problème sans les parenthèses (This is LuaTeX, Version beta-0.80.0 (TeX Live 2015) (rev 5238) )
Deuxième aspect : il apparaît avec Xcas des "+ -" pas très heureux. Ils n'apparaissent pas quand je demande la même opération directement sous l'interface Xcas.

Effectivement, latex(Resultat) n'a pas ce problème alors que fprint(Sortie,latex(Resultat)) l'a. C'est un problème interne à giac lié à la fonction fprint. Cela nécessite un petit signalement sur le forum Xcas.

En ce qui concerne la gestion des variables, pourquoi ne pas tout gérer avec giac ? L'exemple suivant fonctionne bien et c'est très lisible :
Code: Tout sélectionner
\Xcas{'xaA:=-4;xbA:=3;aA:=-0.2;bA:=-aA*(xaA+xbA);cA:=aA*xaA*xbA'}
\Xcas{'normal(aA*x^2+bA*x+cA)'}


Concernant le premier point, à savoir l'envoi groupé d'une succession de commandes pour optimiser les performances :
- j'imagine que l'on pourrait faire un programme Giac qui organiserait les données dans le fichier giac.out, dans un format aisément lisible par lua. On pourrait même imaginer un format adapté à Giac genre les listes ou les matrices que lua sait lire sans problème (j'ai déjà fait ce genre d'aller-retour entre les deux formats.

Cela ne résoudrait pas la multitude d'appels à giac à chaque fois. C'est cet appel qui prend du temps. Il faudrait que ce soit LuaTeX qui sache parcourir le document à la recherche de toutes les commandes xcas et n'appel giac qu'une seule fois. Je ne sais pas faire cela.
- plus radical, je me demande si on ne pourrait pas utiliser le côté "glue language" revendiqué par lua pour attaquer directement la bibliothèque Giac écrite en C . J'ai essayé de trouver des informations sur Giac, la bibliothèque en C mais à chaque fois je tombe sur des explications sur son interface Xcas. Il y a surement une forte proximité et peut-être y a-t-il quelque part un moyen de trouver les procédures de Giac à partir de celles de Xcas ? Je pense qu'on serait alors au meilleur de la performance possible.

XCAS=Giac+interface graphique.
Je sais attaquer giac en C++ (cf mon programme CmathOOoCAS) et j'ai déjà réfléchi à cette option (car c'est quand même un comble de faire communiquer deux programmes via des fichiers textes) mais je n'ai encore rien trouvé. Et puis il faudra trouver une solution pour chaque plateforme (win,linux,Mac...) puisque c'est du compilé. Par exemple pour OpenOffice, j'ai dû compiler Giac avec Visual C++ afin de le faire communiquer avec le tableur sous windows. Alors que Xcas windows tourne sous cygwin (donc moins vite que CmathOOoCAS !).
Je continue d'y réfléchir toutefois.

Re: [luatex] Projet cmathluatex

MessagePosté: Lundi 25 Janvier 2016, 08:52
par aldus
J"ai posté la question concernant la différence observée entre latex(Resultat) et fprint(Sortie,latex(Resultat)).

Bonne journée.

Re: [luatex] Projet cmathluatex

MessagePosté: Mardi 26 Janvier 2016, 21:04
par aldus
J'ai "réussi" à créer le problème en Xcas:
Code: Tout sélectionner
factor(-.2*x^2-(-.2)*x+2.4)
-0.2*(x+-4.000000000000)*(x+3.0)


Pourquoi écrire --0.2 ? C'est l'effet du remplacement d'une variable dans ... -.2*x^2-lua_variable*x+2.4 avec lua_variable=-.2.
Il semblerait que --2 dont tout le monde sait que cela fait +3 ou 3 ne soit pas géré. Il semble même que --2 crée une erreur sous Xcas.

Re: [luatex] Projet cmathluatex

MessagePosté: Mardi 26 Janvier 2016, 21:40
par chris
aldus a écrit:J'ai "réussi" à créer le problème en Xcas:
Pourquoi écrire --0.2 ? C'est l'effet du remplacement d'une variable dans ... -.2*x^2-lua_variable*x+2.4 avec lua_variable=-.2.
Il semblerait que --2 dont tout le monde sait que cela fait +3 ou 3 ne soit pas géré. Il semble même que --2 crée une erreur sous Xcas.


Est-ce bien le --0.2 qui pose problème ? Quand j'écris
Code: Tout sélectionner
factor(-0.2*x^2+0.2*x+2.4)

je récupère exactement le même résultat dans XCAS.

Re: [luatex] Projet cmathluatex

MessagePosté: Mercredi 27 Janvier 2016, 01:08
par aldus
Sur la version Xcas pour Linux, si j'ai "- - x" :
Code: Tout sélectionner
factor(x^2--x-1)
:1: syntax error, unexpected T_SYMBOL line 1 col 13 at x
Syntaxe en mode compatible xcas
Erreur grammaticale ligne 1 à x&+&

Re: [luatex] Projet cmathluatex

MessagePosté: Vendredi 25 Mars 2016, 20:54
par aldus
Bonsoir,

Le problème des "+-" a été exposé sur le forum de Xcas et Giac, et B. Parisse a trouvé une première solution au niveau de l'interface puis une deuxième au niveau de la bibliothèque Giac, si j'ai bien compris. Cette dernière a eu l'effet escompté sur luaLatex : les séquences qui créaient des "+-" ne le font plus.

Le problème est donc réglé :)

Merci.

Re: [luatex] Projet cmathluatex

MessagePosté: Vendredi 25 Mars 2016, 22:44
par chris
Impec ! Bernard vient à bout de tous les problèmes.

Re: [luatex] Projet cmathluatex

MessagePosté: Mercredi 04 Mai 2016, 08:02
par aldus
Bonjour !

Quand on utilise des variable dans Xcas/Giac, après
Code: Tout sélectionner
temp:=sin(pi/4)
par exemple, la variable temp est disponible partout dans les bouts de code Xcas.

Par quel mécanisme peut-on créer une variable lua qui récupère cette variable Xcas ? Il me semble avoir réussi à le faire mais j'ai perdu la méthode depuis ...

Re: [luatex] Projet cmathluatex

MessagePosté: Mercredi 04 Mai 2016, 08:15
par aldus
J'ai retrouvé. Sous votre contrôle :
Code: Tout sélectionner
\luaexec{luatemp=Cmath2LaTeX('xcas(temp)')}
fait le boulot ! (avec temp variable Xcas, luatemp variable lua).

Re: [luatex] Projet cmathluatex

MessagePosté: Dimanche 12 Juin 2016, 19:15
par chris
aldus a écrit:J'ai retrouvé. Sous votre contrôle :
Code: Tout sélectionner
\luaexec{luatemp=Cmath2LaTeX('xcas(temp)')}
fait le boulot ! (avec temp variable Xcas, luatemp variable lua).

je vous conseille de mettre Cmath2LaTeX('xcas(evalf(temp))') sinon vous récupérez du code latex, par exemple \frac{1}{2}. Lua risque de ne pas apprécier en tant que valeur numérique !

Re: [luatex] Projet cmathluatex

MessagePosté: Lundi 13 Juin 2016, 07:21
par aldus
Précision importante en effet !

Re: [luatex] Projet cmathluatex

MessagePosté: Jeudi 08 Mars 2018, 19:16
par aldus
Bonsoir,

Suite à un mauvais update d'Ubuntu 16.04LTS à 17.10, j'ai été obligé de réinstaller tout l'environnement (grrrr !!).
Tout semble bien fonctionner maintenant sauf que j'ai à nouveau l'erreur : "cannot open file '/tmp/giac.out' (No such file or directory)."
Evidemment, j'ai bien vérifié la présence du shell-escape : j'ai dans TexMaker la configuration pour LuaLatex : "lualatex -interaction=nonstopmode %.tex -shell-escape".

Auriez-vous une idée du problème ?

(j'utilise la version de fin 2015 de CmathLuaTeX.lua et .sty ; j'ai voulu mettre ces fichiers à jour à partir de GitHub mais le fichier .lua par exemple est un fichier HTML).

Re: [luatex] Projet cmathluatex

MessagePosté: Jeudi 08 Mars 2018, 20:55
par kojak
Bonsoir

ce ne serait pas plutôt

lualatex -shell-escape -interaction=nonstopmode %.tex : attention à l'ordre non ?

Pour enregistrer les fichiers de Christophe depuis GitHub : clic droit enregistrer sous