Accentuation dans les commentaires avec lstlisting utf8

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.
Euler39
Utilisateur débutant
Utilisateur débutant
Messages : 1
Inscription : vendredi 11 septembre 2020, 10:19
Statut actuel : Enseignant

Accentuation dans les commentaires avec lstlisting utf8

Message par Euler39 »

Bonjour,
Après des heures de recherches vaines sur différents forum je me résous à poser la question ici.
J'enseigne en NSI et j'essaie d'inclure du code python à mes documents en respectant le plus possible la couleur utilisée par défaut par Edupython.
Problème : l'accentuation ne passe plus dans les commentaires dès que j'active l'option literate=*..... pour la coloration des chiffres et des symboles.

Voici le code minimum :

Code : Tout sélectionner

\documentclass[a4paper, 11pt]{article}
\usepackage[utf8]{inputenc} % encodage d'entrée 
\usepackage[T1]{fontenc}    % encodage pour la sortie
\usepackage{xcolor}
\usepackage{listingsutf8}

\definecolor{Chaine}{rgb}{0.45,0.45,0.}
\definecolor{motCle}{rgb}{0.,0.,0.5}
\definecolor{Commentaire}{rgb}{0.,0.5,0.22745}
\definecolor{Parentheses}{rgb}{0.5,0.,0.}
\definecolor{Chiffre}{rgb}{0.,0.5,0.5}

\lstset{
inputencoding=utf8/latin1,
commentstyle=\color{Commentaire},
extendedchars=true,
keywordstyle=\color{motCle},
language=Python,
literate=
{²}{{\textsuperscript{2}}}1
{?}{{\textsuperscript{4}}}1
{?}{{\textsuperscript{6}}}1
{?}{{\textsuperscript{8}}}1
{€}{{\euro{}}}1
{é}{{\'e}}1
{è}{{\`{e}}}1
{ê}{{\^{e}}}1
{ë}{{\¨{e}}}1
{É}{{\'{E}}}1
{Ê}{{\^{E}}}1
{û}{{\^{u}}}1
{ù}{{\`{u}}}1
{â}{{\^{a}}}1
{à}{{\`{a}}}1
{Â}{{\^{A}}}1
{ç}{{\c{c}}}1
{Ç}{{\c{C}}}1
{ô}{{\^{o}}}1
{Ô}{{\^{O}}}1
{î}{{\^{i}}}1
{Î}{{\^{I}}}1,
literate=
*{0}{{\textcolor{Chiffre}0}}1
{1}{{\textcolor{Chiffre}1}}1
{2}{{\textcolor{Chiffre}2}}1
{3}{{\textcolor{Chiffre}3}}1
{4}{{\textcolor{Chiffre}4}}1
{5}{{\textcolor{Chiffre}5}}1
{6}{{\textcolor{Chiffre}6}}1
{7}{{\textcolor{Chiffre}7}}1
{8}{{\textcolor{Chiffre}8}}1
{9}{{\textcolor{Chiffre}9}}1
{.}{{\textcolor{Chiffre}.}}1
{[}{{\textcolor{Parentheses}[}}1
{]}{{\textcolor{Parentheses}]}}1
{)}{{\textcolor{Parentheses})}}1
{(}{{\textcolor{Parentheses}(}}1
{+}{{\textcolor{Parentheses}+}}1
{-}{{\textcolor{Parentheses}-}}1
{*}{{\textcolor{Parentheses}*}}1
{/}{{\textcolor{Parentheses}/}}1
{:}{{\textcolor{Parentheses}:}}1
{!}{{\textcolor{Parentheses}!}}1
{,}{{\textcolor{Parentheses},}}1
{;}{{\textcolor{Parentheses};}}1
{<}{{\textcolor{Parentheses}<}}1
{>}{{\textcolor{Parentheses}>}}1
{=}{{\textcolor{Parentheses}=}}1
{@}{{\textcolor{Parentheses}@}}1
{|}{{\textcolor{Parentheses}|}}1
{`}{{\textcolor{Parentheses}`}}1
{\^}{{\textcolor{Parentheses}{\^}}}1
{\%}{{\textcolor{Parentheses}{\%}}}1,
showspaces=false,
showstringspaces=false,
showtabs=false,
stringstyle=\color{Chaine},
}

\begin{document}
\begin{lstlisting}
def somme_carre(n):
	# "n doit être un entier" 
    resultat = 0
    for i in range (n):
        resultat = resultat + i * i
    return resultat
\end{lstlisting}
\end{document}
Précision : je compile en pdflatex.

Merci pour vos lumières.

evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1459
Inscription : vendredi 19 décembre 2008, 19:13
Localisation : Bordeaux

Re: Accentuation dans les commentaires avec lstlisting utf8

Message par evariste_G »

Bonjour.

J'ai écrit un article il y a peu sur ce problème : https://www.mathweb.fr/euclide/2020/07/ ... s-en-utf8/.
Peut-être cela vous aidera-t-il.

EDIT : je n'avais pas compris le problème... L'article n'aidera peut-être pas au final...
Mathématiques, LaTeX et Python : https://www.mathweb.fr
Cours particuliers par webcam : https://cours-maths-webcam.fr

evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1459
Inscription : vendredi 19 décembre 2008, 19:13
Localisation : Bordeaux

Re: Accentuation dans les commentaires avec lstlisting utf8

Message par evariste_G »

OK ! J'ai compris le problème : vous avez dû faire un copier-collé d'un endroit donné... Et le "ê" a été mal encodé.

Réponse : effacer le "ê" et le taper à la main.
Mathématiques, LaTeX et Python : https://www.mathweb.fr
Cours particuliers par webcam : https://cours-maths-webcam.fr

pg
Modérateur
Modérateur
Messages : 2601
Inscription : vendredi 15 juin 2007, 00:31

Re: Accentuation dans les commentaires avec lstlisting utf8

Message par pg »

Euler39 a écrit :
vendredi 11 septembre 2020, 10:34
Problème : l'accentuation ne passe plus dans les commentaires dès que j'active l'option literate=*..... pour la coloration des chiffres et des symboles.
Il n'est pas possible d'utiliser deux literate (le second écrase les données du premier). Il faut donc les fusionner (tout mettre dans le même), mais alors on perd l'option d'avoir une partie avec * et sans ; voir néanmoins How to apply the star (*) to only a few of the literates in listings environment?.

evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1459
Inscription : vendredi 19 décembre 2008, 19:13
Localisation : Bordeaux

Re: Accentuation dans les commentaires avec lstlisting utf8

Message par evariste_G »

Oh, j'avais même pas vu qu'il y en avait deux... C'est pour ça que le "ê" n'était pas "reconnus"...
Mathématiques, LaTeX et Python : https://www.mathweb.fr
Cours particuliers par webcam : https://cours-maths-webcam.fr