Problème de compilation latex et python
Bonjour à tous
Je vous expose mon problème.
Je souhaiterais intégrer du python dans un document tex. Pour ce faire, j'utilise le package "Pythontex".
Je précise que je suis sous windows 7 et que j'utilise comme éditeur Texmaker.
J'ai Python (version 3.4 ) qui est bien installé sur mon pc.
Ci-dessous, vous trouverez le fichier Tex
Lorsque je compile mon document, j'ai bien un pdf qui sort mais avec des ?? comme résultat au lieu de 2 par exemple pour la première instruction.
La question est pourquoi Python ne s’exécute pas ?
Aurais-je oublié de préciser quelque chose ?
Je vous remercie pour l'aide apportée.
Je vous expose mon problème.
Je souhaiterais intégrer du python dans un document tex. Pour ce faire, j'utilise le package "Pythontex".
Je précise que je suis sous windows 7 et que j'utilise comme éditeur Texmaker.
J'ai Python (version 3.4 ) qui est bien installé sur mon pc.
Ci-dessous, vous trouverez le fichier Tex
Lorsque je compile mon document, j'ai bien un pdf qui sort mais avec des ?? comme résultat au lieu de 2 par exemple pour la première instruction.
La question est pourquoi Python ne s’exécute pas ?
Aurais-je oublié de préciser quelque chose ?
Je vous remercie pour l'aide apportée.
\documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[french]{babel} \usepackage[T1]{fontenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{pythontex} % \usepackage[output-decimal-marker={,}]{siunitx} \mathcode`\.="013B \begin{document} \section{Pour s'échauffer :} $1+1 = $ \py{1+1} \section{Aller on essaye !} \noindent Respect des priorités : $1 + 2 \times 10 = $ \py{1+2*10} \\ Et les fractions ? $\frac{1}{3} + \frac{1}{2} \approx \py{1/3+1/2}$ \\ Et les racines carrées ? \begin{pycode} from math import sqrt \end{pycode} % $$\sqrt{2} \approx \py{ sqrt(2) } $$ % % Avec pycode il est possible de définir des variables utilisables dans tout le document % comme avec des variables globales \begin{pycode} a=2 b=5 \end{pycode} % Les variables : si $a=2$ et $b=5$ alors $a \times b = $ \py{a*b} \section{Un peu plus loin ...}\noindent La division euclidienne de $3551$ par $7$ : le quotient est $\py{3551//7}$ et le reste est $\py{3551%7}$ \\ Vérification : $507 \times 7 + 2 = \py{507 * 7 + 2}$ \end{document}
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il faut exécuter le code Python (via pythontex) à part puis relancer LaTeX pour récupérer et incorporer les résultats (cela remplace donc les ??).
Si, sous Debian unstable, je fais : Sans '--interpreter python:python3', la deuxième commande compilerait le code avec Python 2.x, pas bon (1/3 = 0, etc.). À la place de 'pythontex --interpreter python:python3 docu', on pourrait aussi lancer J'ai corrigé plusieurs choses dans votre document, voir ci-dessous :
- le \mathcode a l'air très louche ; je l'ai supprimé ;
- ne pas utiliser de double-dollars avec LaTeX ;
- ne surtout pas mettre les résultats des calculs hors des expressions mathématiques, ils en font partie ici !
Bon : Mauvais : Code complet :ça fonctionne , super ! (:P)
Merci Brian.
Grâce à vos indications, j'ai enfin réussi à compiler mon premier document avec du python.
Pour ce faire, on m'a conseillé de passer par le terminal et de lancer la ligne de commande suivante :
pdflatex doc.tex
pythontex doc
pdflatex .tex.
Le problème est que lorsque je compile un nouveau document, les ?? réapparaissent. Je me dis que je ne vais pas passer à chaque fois par le terminal (de texmaker).
J'ai configuré texmaker et je compile avec la commande suivante pdflatex :
pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex| python C:\texlive\2020\texmf-dist\scripts\pythontex\pythontex.py %.tex|pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex
Pouvez-vous me dire ce que je dois faire svp pour que cela fonctionne sans passer par le terminal ?
Je vous remercie pour vos aides.
[En typographie, on ne met jamais d'espace avant un point ou une virgule, mais toujours après. AD]
Ça marcherait peut-être mieux avec « ; » au lieu de « | », mais ce n'est a priori pas une très bonne solution. Il faudrait quelqu'un qui s'y connaît en TeXMaker, ce que je ne suis pas. Peut-être une piste serait-elle d'utiliser, pour lancer PythonTeX, la même infrastructure que pour compiler une bibliographie (où bibtex ou biber doit être exécuté entre deux commandes (pdf)latex, de la même façon).
lanceur Python pour Windows a été activé lors de l'installation de Python.