Page 1 sur 1

Appel en Lua

Publié : ven. mai 16, 2014 7:03 pm
par cdeval
Bonsoir Bernard,
Je regarde ce qui est faisable via LuaLaTeX pour appeler giac.
Il existe la fonction os.execute qui me permet d'appeler giac sans problème avec une commande derrière.
N'y a-t-il pas d'autre façon de récupérer la réponse que de passer par un fichier, comme le fait professor.sty ?

Re: Appel en Lua

Publié : ven. mai 16, 2014 9:41 pm
par cdeval
Un premier jet qui fonctionne pour appeler une commande Giac en LuaTeX :
1) Mettre ce code dans un fichier (pour moi il s'appelle CmathLuaTeX.lua) :

Code : Tout sélectionner

function Giac(formule)
prg="Sortie:=fopen(\"giac.out\");Resultat:=cat(latex("..formule.."));fprint(Sortie,Unquoted,Resultat);fclose(Sortie);"
os.execute("giac ".. "'"..prg.."'")
io.input("giac.out")
t=io.read("*all")
tex.print(t)
end
2) Écrire un document tex utilisant ce fichier :

Code : Tout sélectionner

\directlua{dofile('CmathLuaTeX.lua')}
\newcommand\Giac[1]{\directlua{Giac('#1')}}
\begin{document}
Giac dans \LuaTeX :

evalf(pi,30) : $\Giac{evalf(pi,30)}$
\end{document}
3) Compiler avec LuaLaTeX
4) Résultat (tiens, il manque des chiffres ! [edit : j'avais oublié de compiler avec -shell-escape. Je récupérais un giac.out d'un précédent appel. C'est Ok avec -shell-escape]) :
Sélection_007.jpeg
Sélection_007.jpeg (10.87 Kio) Consulté 5530 fois

Re: Appel en Lua

Publié : lun. mai 19, 2014 9:16 am
par parisse
Je ne sais pas si on peut capturer la sortie (stdout) directement, mais de toutes facons ca ne doit rien changer du point de vue efficacite, puisqu'on travaille avec des chaines de toutes facons. Il faudrait pouvoir linker la lib dynamique dans lua pour etre plus efficace.

Re: Appel en Lua

Publié : lun. mai 19, 2014 10:05 am
par cdeval
j'ai essayé sans trop approfondir de capturer stdout sans succès.
J'avais aussi regardé pour appeler la librairie giac via lua mais c'est très technique.
Comme j'arrive à faire ce que je veux en passant par des fichiers en entrée et en sortie je vais m'en satisfaire.
Merci