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 ?
Appel en Lua
Modérateur : xcasadmin
Appel en Lua
Dernière modification par cdeval le ven. mai 16, 2014 9:42 pm, modifié 1 fois.
Re: Appel en Lua
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) :
2) Écrire un document tex utilisant ce fichier :
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]) :
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
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}
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]) :
Re: Appel en Lua
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
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
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