Caractères spéciaux et pythontex

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 membres 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.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

[Résolu] Caractères spéciaux et pythontex

Message non lu par zariski63 »

Hello chers amis !
Je sollicite de votre part un coup de main...
Le code suivant me cause des migraines rapport à des caractères spéciaux.
Le code python donne un résultat correct sous idle mais pas lors du passage sous Latex via pythontex qui n'accepte pas les accents et encore moins des caractères au delà de 127.
Je vous remercie d'avance.

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

%<---------------  Code python + résultat  ------------------------------------------->%
\usepackage{pythontex}

\makeatletter
 \newenvironment{pycoderic}[1]%
 {\xdef\d@tn@me{#1}%
  \xdef\r@ncmd{python #1.py > #1.plog}%
  \typeout{Writing file #1}%
  \VerbatimOut{#1.py}%
 }
 {\endVerbatimOut%
 \toks0{\immediate\write18}%
 \expandafter\toks\expandafter1\expandafter{\r@ncmd}%
 \edef\d@r@ncmd{\the\toks0{\the\toks1}}\d@r@ncmd%
 \textbf{INPUT}\par
 \input{\d@tn@me.py}\par\bigskip
 \textbf{OUTPUT}\par
 \input{\d@tn@me.plog}%
 }
\makeatother
%<---------------  Code python + résultat  ------------------------------------------->%

\begin{document}

\begin{pycoderic}{listing1}

print('Un trèfle')

print('\u2665')
\end{pycoderic}


\end{document}

un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 913
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: pythontex

Message non lu par un bon petit »

Mon dieu que c'est compliqué, des \toks, des \xdef (mais pourquoi donc ???), des \expandafter, des commandes privées :lol: .
En plus, ça n'a pas grand chose à voir avec pythontex je trouve, mais plutôt avec le package fancyvrb.

Ce code fonctionne parfaitement chez moi, compilé avec xelatex (mais avec lualatex, ça devrait aller aussi, pas vérifié).

Code : Tout sélectionner

\documentclass{article}
\usepackage{fancyvrb}
\newenvironment{pycoderic}[1]{%
	\def\runcommand{%
		\immediate\write18 {python3 #1.py > #1.plog}\relax
		\textbf{ENTRÉE}\par
		\VerbatimInput{#1.py}\bigbreak
		\textbf{SORTIE}\par
		\VerbatimInput{#1.plog}%
	}%
	\VerbatimOut{#1.py}%
	}{%
	\endVerbatimOut
	\runcommand}
\makeatother
\begin{document}
\begin{pycoderic}{listing1}
print('Un trèfle')

print('\u20AC')
\end{pycoderic}
\end{document}
Screenshot_20211212_221142.png
Screenshot_20211212_221142.png (14.73 Kio) Consulté 339 fois
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: pythontex

Message non lu par zariski63 »

Pas le temps de vérifier mais je suis certain du résultat.
Grand merci !
Juste en passant, content d avoir engendré de l'hilarité chez vous. :lol:
Bonne soirée UBP.
EC
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Zut pas de sortie chez moi ... :?
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Voici le log :

Code : Tout sélectionner

\openout3 = `listing1.py'.

runsystem(python3 listing1.py > listing1.plog)...disabled (restricted).

! FancyVerb Error:
  No verbatim file listing1.plog
.
\FV@Error ...ncyVerb Error:^^J\space \space #1^^J}
                                                  
l.27 \end{pycoderic}
                    
? 
[1

] (./essais3.aux) )
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 913
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Caractères spéciaux et pythontex

Message non lu par un bon petit »

merci pour le log, mais il faut aussi le lire, c'est expliqué pourquoi ça échoue :

Code : Tout sélectionner

...disabled (restricted).
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Je l'ai lu mais j'ignore comment rectifier la chose... peut-être ajouter une directive avant compilation... mais laquelle ?
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 913
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Caractères spéciaux et pythontex

Message non lu par un bon petit »

Permettre le \write18.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Je vais donc regarder de ce côté mais c est pas gagné. Merci.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Bon ben j'ai pas trouvé mais le "è" passe en écrivant \'{e}...

Cependant à la base je voulais sortir plutôt un truc de ce style :

Code : Tout sélectionner

\begin{pycoderic}{listing1}
from random import *
valeurs=['1','7','8','9','10','V','D','R']
couleurs=['\u2665','\u2666','\u2663','\u2660']
jeu=[v+' '+c for v in valeurs for c in couleurs]
print('jeu={}'.format(jeu))

print(' ',end='\n')

main=sample(jeu,5)
print('Main = ',main)
\end{pycoderic}
'\u2665', '\u2666', '\u2663', '\u2660' sont les codes de "coeur", "pique", "trèfle", "carreau".
Mais autant le code seul fonctionne bien sous IDLE, autant je pense mon problème insoluble à moins que quelqu'un soit vraiment très fort pour m'apporter une solution ...
resultat.jpg
MB
Administrateur
Administrateur
Messages : 7649
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Caractères spéciaux et pythontex

Message non lu par MB »

zariski63 a écrit : lundi 13 décembre 2021, 13:13 Je l'ai lu mais j'ignore comment rectifier la chose... peut-être ajouter une directive avant compilation... mais laquelle ?
Ajouter l'option --shell-escape à la commande de compilation ?
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Chez moi j'ai ça :

Code : Tout sélectionner

--shell-escape -synctex=1 -interaction=nonstopmode
MB
Administrateur
Administrateur
Messages : 7649
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Caractères spéciaux et pythontex

Message non lu par MB »

Quel moteur est utilisé pour la compilation ?
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

J'utilise lualatex.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1058
Inscription : jeudi 25 novembre 2010, 22:10

Re: Caractères spéciaux et pythontex

Message non lu par marco56 »

Chez moi, erreur avec la compilation suivante qui fonctionne habituellement :

Code : Tout sélectionner

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex | python3 /home/q103-07/texmf/tex/latex/pythontex/scripts/pythontex/pythontex3.py %.tex | pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex | evince %.pdf

Code : Tout sélectionner

LaTeX Font Info:    ... okay on input line 19.
\openout3 = `listing1.py'.

runsystem(python3 listing1.py > listing1.plog)...executed.

! FancyVerb Error:
  Empty verbatim environment
.
\FV@Error ... {FancyVerb Error:
\space \space #1
}
                                                  
l.24 \end{pycoderic}
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 913
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Caractères spéciaux et pythontex

Message non lu par un bon petit »

Ce code compile parfaitement en lualatex et donne (me semble-t-il) le résultat attendu :

Code : Tout sélectionner

\documentclass{article}
\usepackage{fontspec,libertine,fancyvrb,shellesc}
\newenvironment{pycoderic}[1]{%
	\def\runcommand{%
		\immediate\write18 {python3 #1.py > #1.plog}%
		\textbf{ENTRÉE}\par
		\VerbatimInput{#1.py}\bigbreak
		\textbf{SORTIE}\par
		\VerbatimInput{#1.plog}%
	}%
	\VerbatimOut{#1.py}%
	}{%
	\endVerbatimOut
	\runcommand}
\makeatother
\begin{document}
\begin{pycoderic}{listing1}
from random import *
valeurs=['1','7','8','9','10','V','D','R']
couleurs=['\u2665','\u2666','\u2663','\u2660']
jeu=[v+' '+c for v in valeurs for c in couleurs]
print('jeu={}'.format(jeu))

print(' ',end='\n')

main=sample(jeu,5)
print('Main = ',main)
\end{pycoderic}
\end{document}
Screenshot_20211214_204640.png
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Trop tard pour vérifier...
En fait je vois quelques packages qui permettent très certainement d'obtenir le bon résultat tel que shellesc dont j'ignorais l existence...
Merci beaucoup.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Toujours pas de sortie chez moi malgré à priori les bonnes directives de compilation...
C'est terrible tout de même. :?
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1058
Inscription : jeudi 25 novembre 2010, 22:10

Re: Caractères spéciaux et pythontex

Message non lu par marco56 »

Chez moi, ok avec lualatex, mais pas avec pdflatex.
zariski63
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 482
Inscription : jeudi 14 octobre 2010, 09:20
Statut actuel : Enseignant
Localisation : Clermont-Ferrand

Re: Caractères spéciaux et pythontex

Message non lu par zariski63 »

Punaise mais c'est dingo ça !
A moins que mes directives soient mal écrites (un espace, un tiret mal mis, ou plusieurs tirets en trop...) je ne vois pas où est le problème.
Je suis sous WinEdt qui, je trouve, est un excellent edi pourtant.
C'est le passage de l'encodage du fichier ".plog "qui pose problème lorsqu'il y a des caractères spéciaux...
Bref c'est décourageant