Pythontex et caractères spéciaux

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
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.
PacoG
Utilisateur débutant
Utilisateur débutant
Messages : 5
Inscription : lundi 11 septembre 2023, 14:17
Statut actuel : Enseignant

Pythontex et caractères spéciaux

Message non lu par PacoG »

Bonjour.

Je souhaiterai produire un exercice dont l'énoncé serait :
"On considère la formule (***). Exprimer les variables du membre de droite droite en fonction des autres."
Je souhaiterai de plus que (***) soit remplacé par une formule.
(dans un 2eme temps je souhaiterai que cette formule soit choisie aléatoirement dans une liste de formules)
Voici le code latex que j'utilise:

Code : Tout sélectionner

\begin{pycode}
chaine = 'P=m\times g'
\end{pycode}

On considère la formule $\py{latex(chaine)}$. Exprimer les variables du membre de droite droite en fonction des autres.

J'obtiens le rendu suivant:
On considère la formule P = mimesg . Exprimer les variables du membre de droite droite en fonction des autres.
Il y a donc un problème entre \frac et la fonction latex() de python. Plus précisément avec le \ qui indique les caractère spéciaux dans les string de python.

Quelqu' un a une piste ?
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1143
Inscription : jeudi 25 novembre 2010, 22:10

Re: Pythontex et caractère spéciaux

Message non lu par marco56 »

Bonjour,
Un ECM serait bien.
PacoG
Utilisateur débutant
Utilisateur débutant
Messages : 5
Inscription : lundi 11 septembre 2023, 14:17
Statut actuel : Enseignant

Re: Pythontex et caractère spéciaux

Message non lu par PacoG »

Désolé, voici un ECM

Code : Tout sélectionner

\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{pythontex}

\begin{document}
 
\begin{pycode}
from sympy import *
chaine = 'P=m\times g'
\end{pycode}

On considère la formule $\py{latex(chaine)}$. Exprimer les variables du membre de droite droite en fonction des autres.

\end{document}
cpierquet
Utilisateur confirmé
Utilisateur confirmé
Messages : 36
Inscription : dimanche 29 novembre 2020, 21:29
Statut actuel : Enseignant

Re: Pythontex et caractère spéciaux

Message non lu par cpierquet »

Hormis si Python est obligatoirement à utiliser, au quel cas je n'ai pas de réponse, je pense qu'on peut faire sans, en passant par (par exemple) randomlist :

Code : Tout sélectionner

\documentclass[margin=5mm]{standalone}
\usepackage{amsmath}
\usepackage{randomlist}

\begin{document}

\NewList{ListeEquations}
\InsertLastItem{ListeEquations}{$P=U\times I$}
\InsertLastItem{ListeEquations}{$P=m\times g$}
\InsertLastItem{ListeEquations}{$E=m\times c^2$}
\InsertLastItem{ListeEquations}{$a^2+b^2=c^2$}

On considère la formule \ExtractRandomItem{ListeEquations}{MonTest}\MonTest. Exprimer les variables du membre de droite droite en fonction des autres.

\end{document}
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1143
Inscription : jeudi 25 novembre 2010, 22:10

Re: Pythontex et caractère spéciaux

Message non lu par marco56 »

Désolé, pas d'idée.
pg
Modérateur spécialisé
Modérateur spécialisé
Messages : 2621
Inscription : vendredi 15 juin 2007, 00:31

Re: Pythontex et caractère spéciaux

Message non lu par pg »

Essayer d'écrire :

Code : Tout sélectionner

chaine = r'P=m\times g'
Cela devrait permettre d'éviter que Python ne pense que \t est une tabulation
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1143
Inscription : jeudi 25 novembre 2010, 22:10

Re: Pythontex et caractère spéciaux

Message non lu par marco56 »

pg a écrit : mardi 05 novembre 2024, 09:00 Essayer d'écrire :

Code : Tout sélectionner

chaine = r'P=m\times g'
Cela devrait permettre d'éviter que Python ne pense que \t est une tabulation
Non, cela ne fonctionne pas.
pg
Modérateur spécialisé
Modérateur spécialisé
Messages : 2621
Inscription : vendredi 15 juin 2007, 00:31

Re: Pythontex et caractère spéciaux

Message non lu par pg »

Si, ça marche à condition d'enlever le "latex(...)" qui essaie de convertir le résultat en code LaTeX alors qu'il l'est déjà :
pythontex_antislash_t.jpg
pythontex_antislash_t.jpg (4.81 Kio) Consulté 17151 fois

Code : Tout sélectionner

\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{pythontex}

\begin{document}
 
\begin{pycode}
from sympy import *
chaine = r'P = m \times g'
\end{pycode}

On considère la formule $\py{chaine}$. Exprimer les variables du membre de droite en fonction des autres.

\end{document}
cpierquet
Utilisateur confirmé
Utilisateur confirmé
Messages : 36
Inscription : dimanche 29 novembre 2020, 21:29
Statut actuel : Enseignant

Re: Pythontex et caractère spéciaux

Message non lu par cpierquet »

Avec ce code, et effectivement une chaîne déclarée comme brute avec r, et une compilation adaptée ça semble fonctionner :

Code : Tout sélectionner

\documentclass[12pt,a4paper]{article}
\usepackage{amsmath}
\usepackage{pythontex}

\begin{document}

\begin{pycode}
from sympy import *
chaine = r"P=m\times g"
\end{pycode}

On considère la formule $\py{chaine}$. Exprimer les variables du membre de droite droite en fonction des autres.

\end{document}
image_2024-11-05_203107444.png
Edit : désolé pour le doublon, j'ai posté sans avoir vu la réponse de pg. ^^
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1143
Inscription : jeudi 25 novembre 2010, 22:10

Re: Pythontex et caractère spéciaux

Message non lu par marco56 »

pg a écrit : mardi 05 novembre 2024, 20:25 Si, ça marche à condition d'enlever le "latex(...)" qui essaie de convertir le résultat en code LaTeX alors qu'il l'est déjà :
Ah oui ! Bien vu.
PacoG
Utilisateur débutant
Utilisateur débutant
Messages : 5
Inscription : lundi 11 septembre 2023, 14:17
Statut actuel : Enseignant

Re: Pythontex et caractères spéciaux

Message non lu par PacoG »

Merci à vous tous.

En piochant dans vos réponses, j'ai pu faire ça qui fonctionne bien:

Code : Tout sélectionner

\begin{pycode}
from random import choice
L_exp_et_var = [[r'P=m\times g' , r'm', r'g'],
                [r'E =\frac12 m \times v^2', r'm', r'v'],
                [r'v =\frac{d}{t}', r'd', r't'],
                [r'c =\frac{m}{v}', r'm', r'v'],
                [r'\rho =\frac{m}{V}', r'm', r'V'],
                [r'Q = m\times L', r'm', r'L'],
                [r'U = R\times I', r'R', r'I']
                ]


L_exo = choice(L_exp_et_var)
chaine = L_exo[0]
chaineVAR = r''
for ch in L_exo[1:-1]:
    chaineVAR += r'$' + ch + r'$'
chaineVAR += r' et ' + r'$' + L_exo[-1] +r'$'
\end{pycode}

On considère la formule $\py{chaine}$. Exprimer les variables \py{chaineVAR} du membre de droite droite en fonction des autres.
La solution avec les randomlist marche bien aussi mais comme j'essaie de limiter les imports de package, j'essaie de tout faire avec pythontex.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2303
Inscription : samedi 29 décembre 2007, 00:58

Re: Pythontex et caractères spéciaux

Message non lu par projetmbc »

Bonsoir.

Passer via sympy simplifierait la saisie côté Python.