Pythontex vs lua

Tout ce qui concerne les logiciels mathématiques (Matlab, Maxima, Scilab, R, ...) ou les calculatrices scientifiques.
[forum modéré par les modérateurs globaux du site]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 383
Inscription : jeudi 14 octobre 2010, 09:20

Pythontex vs lua

Message par zariski63 »

Bonjour !
je souhaiterais connaitre le point de vue des uns et des autres concernant l'utilisation ou pas de "pythontex" ou de "lua".
Si j'ai bien compris, le premier nécessite d'avoir "python" sur sa machine et de compiler par "-shell-escape" alors que "lua" est déjà installé et ne depend pas d'installation tierce …
Voilà voilà…
Bonne journée !

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2582
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: pythontex vs lua

Message par gigiair »

LUA comme Python sont des langages informatique « généralistes » alors que TeX est un langage informatique extrêmement spécialisé. Pourquoi n'a-t-on pas conçu un langage unique, capable de produire des documents écrits de haute qualité et de composer et d'exécuter rapidement toute sorte d'algorithme informatique ? Peut-être qu'un jour ça se fera, mais pour l'instant on en est réduit à essayer de faire collaborer ces deux outils.

Il y a deux façons d'envisager une collaboration:
  • Soit exécuter les algorithmes en LUA ou en Python et leur demander de produire une sortie codée en LaTeX prête à être insérée dans un document;
  • Soit embarquer dans un document LaTeX du code LUA ou Python exécuté pendant la compilation pour et insérer les résultats dans le document LaTeX
C'est cette deuxième solution qui a prévalu dans pythontex ou dans LuaLaTeX.
Pour ma part, je préfère largement la première façon de faire qui est bien plus modulaire et bien plus facile à débugger en cas de problème. Le code LaTeX produit par le langage généraliste peut être retouché « à la main » et peut être réutilisé dans d'autres documents. Les erreurs sont plus facilement détectables car mise en évidence de manière isolées.

Si l'intégration s'effectue sans problème à un moment donné, qu'en sera-t-il quelques années plus tard quand les deux logiciels auront évolué sans tenir compte l'un de l'autre ?

Pour faire bref, je ne suis pas partisan du code Python ou Lua embarqué dans un document LaTeX, c'est une source d'em..bètements
JJR.
LaTeXien migrateur.

zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 383
Inscription : jeudi 14 octobre 2010, 09:20

Re: pythontex vs lua

Message par zariski63 »

Je vous remercie de m'avoir répondu, c'est sympa.
J'ai découvert depuis peu Pythontex et j'avoue que chez moi ça fonctionne assez bien…
Par contre je ne sais pas comment on fait pour élaborer du latex par Python …
Un bout de code ou une démo m'intéresse vivement.

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2582
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: pythontex vs lua

Message par gigiair »

Je ne suis pas un utilisateur de Python, il faut lire des tutoriels.
Personnellement j'utilise Emacs-Lisp comme langage d'extension, il y a tout ce dont on peut avoir besoin, y compris une calculatrice symbolique, un tableur etc... L'inconvénient est que la prise en main n'est pas immédiate, comme tous les logiciels puissants. Je suis d'ailleurs très loin de tout maîtriser.
JJR.
LaTeXien migrateur.

evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1467
Inscription : vendredi 19 décembre 2008, 19:13
Statut actuel : Enseignant
Localisation : Bordeaux

Re: pythontex vs lua

Message par evariste_G »

zariski63 a écrit :
vendredi 08 mai 2020, 19:32
Je vous remercie de m'avoir répondu, c'est sympa.
J'ai découvert depuis peu Pythontex et j'avoue que chez moi ça fonctionne assez bien…
Par contre je ne sais pas comment on fait pour élaborer du latex par Python …
Un bout de code ou une démo m'intéresse vivement.
Bonjour. Il y a quelques articles qui parlent de ça sur mon site. Notamment le dernier : "Créer une arborescence avec Python et LATEX", et d'une manière général, sur la page de recherche, on pourra trouver d'autres articles qui parlent de LaTeX et Python mélangés. Si ça peut en intéresser quelques uns...

PythonTeX, j'en parle mais je ne l'utilise pas beaucoup car les codes Python que je fais sont trop complexes, mais pour des "petits" codes, ça passe mais il faut bien configurer l'éditeur et quelques fois, c'est pas simple. Je préfère générer le code LaTeX via Python quand il s'agit de scripts plus complexes (comme la création d'une arborescence), mais ce n'est qu'une préférence personnelle. Je pense que ça dépend de tout un chacun et de son niveau en Python.
Mathématiques, LaTeX et Python : https://www.mathweb.fr

zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 383
Inscription : jeudi 14 octobre 2010, 09:20

Re: pythontex vs lua

Message par zariski63 »

C'est grace à votre site justement que j'ai découvert pythontex !
Votre travail est remarquable, bravo !

marco56
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 884
Inscription : jeudi 25 novembre 2010, 22:10

Re: pythontex vs lua

Message par marco56 »

Un truc comme cela ?

Code : Tout sélectionner

import os, sys
 
text1="""Post traitement du raccordement de l'Hélice \n
Ceci est la section \n
Information sur le traitement des paliers"""
text2="""Bon voici du blabla: \n encore un peu, et la aussi.
    Prend t'il les saut de lignes en compte \n
    On continue histoire de vois ce qui ce passe 
    au bout de la ligne."""
 
 
numcapteur = 25
 
entete = [("Paliers trouvés","Moyenne [V]","Ecart-type [mV]","Nb de valeurs/palier")]
donneestraitees = [('0', '0.0153', '0.0441', '110'), ('1', '0.2565', '0.7945', '126'), ('2', '0.4967', '0.8953', '135'), ('3', '0.9578', '1.7179', '133'), ('4', '1.4443', '3.599', '131'), ('3', '0.9573', '3.014', '134'), ('2', '0.4996', '0.9662', '133'), ('1', '0.2615', '0.4546', '137'), ('0', '0.0071', '5.7935', '139')]
data_float=[]
for donnees in donneestraitees:
    data = [float(el) for el in donnees]
    data_float.append(data)
# print(data_float)
t=[0,1,2,3]
import matplotlib.pyplot as plt
for i in range(len(data_float)):
    plt.plot(t, data_float[i])
plt.show()
plt.savefig("data.eps",dpi=200)
 
 
debut_fichier1 = \
    """
    \\documentclass[10pt]{article}
    \\usepackage{morewrites}
    \\usepackage{etex}
    """
codage_linux = \
    """
    \\usepackage[utf8]{inputenc} % \\usepackage[latin1]{inputenc}
    """
codage_win = \
    """
    \\usepackage[latin1]{inputenc} %\\usepackage[utf8]{inputenc}
    """
debut_fichier2 = \
    """
    \\usepackage{textcomp}
    \\usepackage[francais]{babel}
    \\usepackage [T1]{fontenc}
    \\usepackage{emerald}
    \\usepackage{multicol}
    \\usepackage{tabularx}
    \\usepackage{eurosym}
    \\usepackage{longtable}        
    \\usepackage{enumerate}    
    \\usepackage[table]{xcolor}
    \\usepackage{colortbl}
    \\usepackage{lscape}
    \\usepackage[a4paper]{geometry}
    \\geometry{lmargin=1cm,rmargin=1cm,tmargin=1.1cm,bmargin=1.1cm}
    \\usepackage{array,multirow,makecell}
    \\usepackage{arydshln}
    \\pagestyle{empty}
    
    \\definecolor{pourpre}{rgb}{0.5,0,0.5}%
    \\definecolor{brun}{rgb}{0.8,0.4,0.3}%
    \\definecolor{orange}{rgb}{1,0.6,0.3}%
    \\definecolor{rose}{rgb}{1,0.08,0.58}%
    \\definecolor{magenta}{rgb}{1,0,0.5}%
    \\definecolor{brunfonce}{RGB}{84,31,0}
    \\definecolor{violet}{rgb}{0.57,0,0.8}
    \\definecolor{vert}{rgb}{0.1,0.6,0}
    
    \\newcolumntype{R}[1]{>{\\raggedright}m{#1}}
    \\newcolumntype{S}[1]{>{ \\color{blue} \\raggedright}m{#1}}
    \\newcolumntype{C}[1]{>{\\centering}m{#1}}
    \\newcolumntype{L}[1]{>{\\raggedleft}m{#1}}
    \\newcolumntype{D}[1]{>{\\bfseries \\raggedleft % \\cellcolor{yellow!10}
    } m{#1}}
    \\rowcolors{1}{blue!10}{yellow!10}
    
    \\setlength{\\doublerulesep}{0pt}
    \\newcommand{\\myhline}{\\hline\\hline\\hline}
    
    
    \\begin{document}
    \\begin{center}
    \\fbox{\\textbf{Coucou, nous sommes le \\today }}
    \\end{center}
    \\vspace{2mm}
    """
fin_fichier = \
    """
    \\end{document}
    """
 
debut_tableau_1 = \
    """
    \\begin{center}
    \\arrayrulecolor{red!50}{
    \\begin{tabular}{|L{3cm}|C{3cm}|S{2cm}|C{2cm}|}
    \\myhline
    Mes 1 & Mes 2 & Mes 3 & Mes 4
    \\tabularnewline
    \\myhline
    """
 
fin_tableau = \
    """
    \hline
    \\end{tabular}
    }
    \\end{center}
    """
############################ tableau ######################
 
if sys.platform == "win32":
    mon_fichier1 = open('tab1.tex', 'w',encoding='latin1')
else:
    mon_fichier1 = open('tab1.tex', 'w',encoding='utf8')
 
mon_fichier1 = open('tab1.tex', 'w',encoding='utf8')
 
nb_col=4
 
for ligne in data_float:
    cpt=0
#        print(ligne)
    for el in ligne:
        if cpt < nb_col-1:
            mon_fichier1.write(str(el))
            mon_fichier1.write(" & ")
        else:
            mon_fichier1.write(str(el))
            mon_fichier1.write(" \\tabularnewline ")
        cpt+=1
    mon_fichier1.write("\n\\hdashline \n")
mon_fichier1.close()
 
####################### ecriture du tex ######################
fichier1 = "toto"
output_file = open("%s.tex" % fichier1,'w',encoding='utf8')
output_file.write(debut_fichier1)
if sys.platform == "win32":
    output_file.write(codage_win)
else:
    output_file.write(codage_linux)
output_file.write(debut_fichier2)
output_file.write("\n")
output_file.write("numcapteur")
output_file.write("\n")
output_file.write("{\\large \\textbf{%s}}" % numcapteur)
output_file.write("\n")
output_file.write(text1)
output_file.write("\n")
output_file.write(debut_tableau_1)
output_file.write('\\input{tab1.tex}')
output_file.write(fin_tableau)
output_file.write("\n")
output_file.write("\n")
output_file.write(text2)
output_file.write("\n")
output_file.write("\n")
output_file.write("\\begin{center}")
output_file.write("\\includegraphics{data}")
output_file.write("\\end{center}")
output_file.write("\n")
output_file.write("\n")
output_file.write(fin_fichier)
output_file.close()
 
#######################################################
 ############### Compilation tex #######################
#######################################################
os.system("latex %s.tex" % fichier1) 
os.system("dvips -o %s.ps %s.dvi" % (fichier1,fichier1))
os.system("ps2pdf %s.ps" % fichier1)
########################################################
####### Suppression des fichiers auxiliaires ###########
########################################################
 
from glob import glob
 
for sup_aux in glob ('*.aux'):
   os.remove (sup_aux)
 
for sup_dvi in glob ('*.dvi'):
   os.remove (sup_dvi)
 
for sup_log in glob ('*.log'):
   os.remove (sup_log)
 
for sup_ps in glob ('*.ps'):
   os.remove (sup_ps)
 
for sup_mw in glob ('*.mw'):
   os.remove (sup_mw)
 
try:
    if sys.platform == "linux": # win32 ou linux
        os.system("evince %s" % fichier1+".pdf") # sous linux
    elif sys.platform == "win32":
        os.startfile(fichier1+".pdf") # sous windows
except:
    pass

projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1916
Inscription : samedi 29 décembre 2007, 00:58

Re: Pythontex vs lua

Message par projetmbc »

Un point qui ne semble pas avoir été abordé est le fait que Lua de LuaTeX peut "parler" TeX ce qui permet une vraie interaction de bas niveau comme par exemple l'analyse d'un argument token par token. Un gros plus.