Tableau de valeurs dans Pythontex

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

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.
fred_maths
Utilisateur confirmé
Utilisateur confirmé
Messages : 49
Inscription : vendredi 02 janvier 2015, 21:57

[Résolu] Tableau de valeurs dans Pythontex

Message par fred_maths »

Bonjour à tous,
j'utilise depuis peu le package pythontex disponible dans la texlive 2015.
mon idée est de générer "des tableau de valeurs de fonction" automatiquement.
le code suivant

Code : Tout sélectionner

\documentclass[french,12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}
\usepackage{pythontex}

\begin{document}
\begin{pycode}
import math
def f(x):
	b= math.log(x)
	c= round(b,5)
	return c
	
lo, hi = 1, 20
print(r"\begin{tabular}{c|c}")
print(r"$x$ & $f(x)$ \\ \hline ")
for m in range(lo, hi + 1):
    print(r"%d & %d \\ " % (m,f(m)))
print(r"\end{tabular}")
\end{pycode}

\end{document}
fonctionne mais je souhaiterai que mon tableau soit horizontal
et non pas vertical :
quelqu'un aurait une idée pour faire les modifs necessaires ...
Merci de m'avoir lu
CDT
FRED
distribution : TEXLIVE2015
sous ubuntu 14.04
Editeur : Texstudio
Dernière modification par fred_maths le mardi 28 juillet 2015, 11:30, modifié 1 fois.
PC 1 :Ubuntu 14.04 LTSw 8 + Texlive 2017+emacs 24 avec auctex 11.90 + texstudio v 2.9.4
ou
PC 2 : Windows 8 + Texlve 2016 + texstudio v 2.9.4

rebouxo
Modérateur global
Modérateur global
Messages : 6962
Inscription : mercredi 15 février 2006, 13:18
Localisation : le havre

Re: Tableau de valeurs dans Pythontex

Message par rebouxo »

Ben au lieu de faire un tableau de deux colonnes, tu fais un tableau de 20 colonnes et de deux lignes ?

Code : Tout sélectionner

    \documentclass[french,12pt]{article}

    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage[a4paper]{geometry}
    \usepackage{babel}
    \usepackage{pythontex}

    \begin{document}
    \begin{pycode}
    import math
    def f(x):
       b= math.log(x)
       c= round(b,5)
       return c
       
    lo, hi = 1, 20
    print(r"\begin{tabular}{|*{hi}{>{$}c<{$}|}")
    ligneH=""
    ligneB=""
    for m in range(lo, hi + 1):
        ligneH=str(m)+"&"
        ligneB=str(f(m))+"&"
    print(r"ligneB"+\\)
    print(r"ligneH"+\\)
    print(r"\end{tabular}")
    \end{pycode}

    \end{document}
Je te laisse fignoler le code. Faut que j'aille petit déjeuner ;-)
A line is a point that went for a walk. Paul Klee.
Par solidarité, pas de MP.

fred_maths
Utilisateur confirmé
Utilisateur confirmé
Messages : 49
Inscription : vendredi 02 janvier 2015, 21:57

Re: Tableau de valeurs dans Pythontex

Message par fred_maths »

Merci pour le code cela m'aide beaucoup
car je débute en LaTex et il faut que je pige
toutes les lignes :shock:

j'ai modifié Mon code ainsi ...

Code : Tout sélectionner

\documentclass[french,12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}
\usepackage{array, multirow, tabularx}
\usepackage{pythontex}

\begin{document}
\begin{pycode}
import math
def f(x):
   b= math.log(x)
   c= round(b,3)
   return c
lo, hi = 1, 10
k=hi+1
print(r"\begin{tabular}{|*{k}{c|}")
print(r"\hline")
print(r"$x$")
ligneH=""
ligneB=""
for m in range(lo, hi + 1):
    ligneH=str(m)
    print("&"+ligneH)
print(r"\\")
print(r"\hline")
print(r"$f(x)$")
for m in range(lo, hi + 1):  
    ligneB=str(f(m))
    print("&"+ligneB)
print(r"\\")
print(r"\hline")
print(r"\end{tabular}")
\end{pycode}

\end{document}
le code plante à la troisième compilation
l'erreur indique runaway argument et
plein de ligne d'erreurs file ended scanning while use of \@@array
c 'est bizarre car lors que j'exporte a la main le code python généré
et que je le compile sur latex cela marche impec !

auriez vous une idée d'où cela vient ?
bonne soirée a tous
PC 1 :Ubuntu 14.04 LTSw 8 + Texlive 2017+emacs 24 avec auctex 11.90 + texstudio v 2.9.4
ou
PC 2 : Windows 8 + Texlve 2016 + texstudio v 2.9.4

rebouxo
Modérateur global
Modérateur global
Messages : 6962
Inscription : mercredi 15 février 2006, 13:18
Localisation : le havre

Re: Tableau de valeurs dans Pythontex

Message par rebouxo »

Le problème de mon code c'est qu'il y a un & de trop. puisque j'écris ligneH+"&" à chaque fois. Il faut donc, virer le dernier &, avec un test dans la partie python.
Je ne suis pas sur que cette ligne :

Code : Tout sélectionner

print(r"\begin{tabular}{|*{k}{c|}")
produise bien ce que tu veux. J'ai peur que le k ne soit pas évaluer.
Je ferais plutôt quelque chose comme cela

Code : Tout sélectionner

debTab="\begin{tabular}{|*{"+str(k)+"}{c|}"
print(r debTab)
Je ne suis pas très familier de pythontex, donc, il faudrait voir ce que fait le print. En particulier que veux dire le r au début (raw ?)

Olivier
A line is a point that went for a walk. Paul Klee.
Par solidarité, pas de MP.

fred_maths
Utilisateur confirmé
Utilisateur confirmé
Messages : 49
Inscription : vendredi 02 janvier 2015, 21:57

Re: Tableau de valeurs dans Pythontex

Message par fred_maths »

hello olivier,

en effet le dernier & est génant :wink: dans ton code

Cependant tu es dans le vrai c'est exactement la ligne

Code : Tout sélectionner

print(r"\begin{tabular}{|*{k}{c|}")
qui ne fonctionne pas dans le mien
le k n'est pas reconnu comme un nombre dans LaTeX
j'ai donc utilisé ton "astuce"

Code : Tout sélectionner

debTab=r"\begin{tabular}{|*{"+str(k)+"}{c|}}"
print(debTab)
et cela fonctionne impec !
voici le code complet

Code : Tout sélectionner

\documentclass[french,12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}
\usepackage{pythontex}
\usepackage{array, multirow,tabularx}
 
\begin{document}
\begin{pycode}
import math
def f(x):
   b= math.log(x)
   c= round(b,3)
   return c
lo, hi = 1, 10
k=(hi+1)
debTab=r"\begin{tabular}{|*{"+str(k)+"}{c|}}"
print(debTab)
print(r"\hline")
print(r"$x$")
ligneH=""
ligneB=""
for m in range(lo, hi + 1):
    ligneH="&"+str(m)
    print(ligneH)
print(r"\\")
print(r"\hline")
print(r"$f(x)$")
for m in range(lo, hi + 1):  
    ligneB="&"+str(f(m))
    print(ligneB)
print(r"\\")
print(r"\hline")
print(r"\end{tabular}")
\end{pycode}

\end{document}
si cela intérèsse un membre du forum
merci pour ton aide Olivier !
a + FRED
PC 1 :Ubuntu 14.04 LTSw 8 + Texlive 2017+emacs 24 avec auctex 11.90 + texstudio v 2.9.4
ou
PC 2 : Windows 8 + Texlve 2016 + texstudio v 2.9.4

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par marco56 »

J'arrive un peu après la bataille mais comme fait-on pour compiler ce fichier ?
J'ai tenté pas mal de choses, sans succès (avec pythontex.py %.tex, shell-escape, ...)
Autant, j'ai des choses qui marchent avec le package "python.sty", autant, avec "pythontex", rien ne se passe : page vierge ou erreurs.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par gigiair »

Il faut lire la doc

Code : Tout sélectionner

texdoc pythontex
ou pour les pressés qui ne lisent jamais une doc :

Code : Tout sélectionner

texdoc pythontex_quickstart.pdf
Supposons que le document se nomme ecm.tex. La suite de commandes suivante fait le truc chez moi (TL2015/Debian Stretch):

Code : Tout sélectionner

 latex ecm
/usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py ecm.pytxcode 
latex ecm
Il faut lancer le script python pythontex.py. Comme il n'est pas dans le PATH, je le lance avec son chemin complet.
C'est un peu lourdingue, on peut scripter, ça dépend du système.
JJR.
LaTeXien migrateur.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par marco56 »

Merci gigiair,
J'avais regardé la doc mais cela ne m'aide pas trop :
j'ai toujours une page vierge en compilant avec latex.

En console, j'ai :

Code : Tout sélectionner

/usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py code-python.pytxcode 
This is PythonTeX 0.14
* PythonTeX error
    The version of the PythonTeX scripts does not match the last code
    saved by the document--run LaTeX to create an updated version.
Sinon, j'imaginais dans texmaker ou texstudio une commande avec un shell-escape de façon à avoir une commande utilisateur.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par gigiair »

marco56 a écrit :Merci gigiair,
J'avais regardé la doc mais cela ne m'aide pas trop :
j'ai toujours une page vierge en compilant avec latex.

En console, j'ai :

Code : Tout sélectionner

/usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py code-python.pytxcode 
This is PythonTeX 0.14
* PythonTeX error
    The version of the PythonTeX scripts does not match the last code
    saved by the document--run LaTeX to create an updated version.
Peut-être y a-t-il un bogue dans code-python.tex ? Il vaudrait mieux tester avec un source dont on est sûr, celui qui est fourni ci-dessus et que j'ai testé.
marco56 a écrit : Sinon, j'imaginais dans texmaker ou texstudio une commande avec un shell-escape de façon à avoir une commande utilisateur.
Apparemment, ça ne se peut pas, sinon pourquoi les auteurs du package n'auraient pas inclus cette possibilité dans leur code ? J'ai essayé, le fichier à compiler par pythontex.py n'est créé qu'une fois la compilation par pdflatex terminée, ce qui exclut d'appeler une compilation en cours de processus (c'est ce que j'ai observé, je n'ai pas analysé le code de pythonlatex.sty, je n'en suis pas capable)
Pour se simplifier la tâche, le mieux est sans doute d'utiliser le script latexmk, c'est ce qui est recommandé. Emacs-AUCTeX peut le faire, les autres éditeurs, je ne sais pas.
JJR.
LaTeXien migrateur.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par marco56 »

Merci pour ta réponse, gigiair,
J'ai fait le test avec le code ci-dessus :

Code : Tout sélectionner

\documentclass[french,12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[a4paper]{geometry}
\usepackage{babel}
\usepackage{pythontex}
\usepackage{array, multirow,tabularx}
 
\begin{document}

\begin{pycode}
import math
def f(x):
   b= math.log(x)
   c= round(b,3)
   return c
lo, hi = 1, 10
k=(hi+1)
debTab=r"\begin{tabular}{|*{"+str(k)+"}{c|}}"
print(debTab)
print(r"\hline")
print(r"$x$")
ligneH=""
ligneB=""
for m in range(lo, hi + 1):
    ligneH="&"+str(m)
    print(ligneH)
print(r"\\")
print(r"\hline")
print(r"$f(x)$")
for m in range(lo, hi + 1): 
    ligneB="&"+str(f(m))
    print(ligneB)
print(r"\\")
print(r"\hline")
print(r"\end{tabular}")
\end{pycode}

\end{document}
J'ai le message suivant en console :

Code : Tout sélectionner

/usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py code-python.pytxcode
This is PythonTeX 0.14
* PythonTeX error
    The version of the PythonTeX scripts does not match the last code
    saved by the document--run LaTeX to create an updated version.
Tant pis, je continue avec python qui fonctionne bien chez moi.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par gigiair »

Je ne sais quoi dire, chez moi, (TeXLive2015/Debian stretch) ça marche nickel.
Peut-être mettre à jour ou revoir ton installation.
L'appel de pythontex.py --version me retourne PythonTeX 0.14
Un \listfiles dans le fichier tex me renvoie :
pythontex.sty 2014/07/17 Version\unhbox \voidb@x \penalty \@M \ 0.14

Un oubli :

Code : Tout sélectionner

python --version
Python 2.7.10
JJR.
LaTeXien migrateur.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par marco56 »

Je travaille avec une TeXLive 2014.
Les différences chez moi sont :

pythontex.sty 2013/08/26 Version\unhbox \voidb@x \penalty \@M \ 0.12

et le fait que je travaille avec python 2.7.9 (ce qui est d'ailleurs étonnant car j'imaginais que la version par défaut était la 3).

Je me tâte pour installer TeXLive2015 : la dernière fois que j'ai changé de version, je n'ai pas fait les choses proprement et j'ai dû formater mon disque dur...

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par gigiair »

A priori, il n'y a aucun rapport entre le formatage d'un disque dur et l'installation de TL2015. Sous Debian Stretch, ça s'est fait automatiquement il y a peu de temps avec une mise à jour du système.
JJR.
LaTeXien migrateur.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par marco56 »

J'ai utilisé cette méthode là pour installer texlive et j'avoue ne pas savoir comment la supprimer pour installer la suivante.
http://www.xm1math.net/doculatex/instal ... buntu.html

kojak
Modérateur global
Modérateur global
Messages : 10380
Inscription : samedi 18 novembre 2006, 19:50

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par kojak »

Bonjour,
marco56 a écrit : et le fait que je travaille avec python 2.7.9 (ce qui est d'ailleurs étonnant car j'imaginais que la version par défaut était la 3).
Et avec

Code : Tout sélectionner

python3 --version
ça donne quoi ?
Pas d'aide par MP.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par gigiair »

marco56 a écrit :J'ai utilisé cette méthode là pour installer texlive et j'avoue ne pas savoir comment la supprimer pour installer la suivante.
http://www.xm1math.net/doculatex/instal ... buntu.html
La désinstallation de TL se fait simplement en mode gui. Il y a un item du menu pour ça.
Pourquoi ne pas utiliser la méthode officielle ?
https://www.tug.org/texlive/doc/texlive ... ve-fr.html
JJR.
LaTeXien migrateur.

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par marco56 »

Pour kojak : version 3.4.3

Pour gigiair : c'est quoi le mode gui ?
La dernière fois, j'ai tout fait planter en désinstallant et je suis moyennement chaud.
Pour la réinstallation, oui, je ferai la méthode officielle la prochaine fois.

[edit] Dans synaptic, j'ai texlive qui apparaît.
Par contre, dans la logithèque, c'est comme si ce n'était pas installé.

fred_maths
Utilisateur confirmé
Utilisateur confirmé
Messages : 49
Inscription : vendredi 02 janvier 2015, 21:57

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par fred_maths »

hello,
désolé de ma réponse tardive :)
mode GUI signifie avec l'interface graphique, c du vocable de geek :D
le message d'erreur de marco

Code : Tout sélectionner

    /usr/share/texlive/texmf-dist/scripts/pythontex/pythontex.py code-python.pytxcode
    This is PythonTeX 0.14
    * PythonTeX error
        The version of the PythonTeX scripts does not match the last code
        saved by the document--run LaTeX to create an updated version.
est probablement du a une version préalablement installé du package pythontex.(ptet 0.12)
J'ai déja eu ce soucis et je l'ai résolu en désinstallant pythontex
avec ses dépendances (voir doc de pythontex) et en le réinstallant en version 0.14.
(ou à un problème avec python ?)
faire attention a ce qu'il n'y ai pas une version "parasite" dans un texmf "local"
(j'avais posé la question sur "texstackexchange", il y a peu !
http://tex.stackexchange.com/questions/ ... t-work-why)
Après cela devrait marcher sans problème ... :wink:

Pour compiler le fichier exemple.tex avec pythontex
il faut trois compilations soit en mode console:
>>pdflatex exemple.tex
>>pythontex exemple.tex
>>pdflatex exemple.tex (encore une fois !)

voilà en espérant aider :D
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
PC 1 :Ubuntu 14.04 LTSw 8 + Texlive 2017+emacs 24 avec auctex 11.90 + texstudio v 2.9.4
ou
PC 2 : Windows 8 + Texlve 2016 + texstudio v 2.9.4

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

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par marco56 »

Merci fred_maths : cela fonctionne. Aucune modification de ma config, simplement un souci avec pythontex avec lequel je traitais comme suit :

Code : Tout sélectionner

pythontex.py code-python.pytxcode
C'était une erreur.
Je fais quelques essais et je reviens sur le fofo.

fred_maths
Utilisateur confirmé
Utilisateur confirmé
Messages : 49
Inscription : vendredi 02 janvier 2015, 21:57

Re: [Résolu] Tableau de valeurs dans Pythontex

Message par fred_maths »

ok bien content que cela fonctionne ... :)
il ne te reste plus qu'à peaufiner le code en python
pour régler le pas par exemple (j'y travaille d'ailleurs :wink: )
et LaTeX traitera les tableaux de valeurs avec python !
PC 1 :Ubuntu 14.04 LTSw 8 + Texlive 2017+emacs 24 avec auctex 11.90 + texstudio v 2.9.4
ou
PC 2 : Windows 8 + Texlve 2016 + texstudio v 2.9.4