Sur une TeX Live 2019 installée « à la vanille », voici un code :

Ouvrir dans l'éditeur Overleaf
\documentclass[french]{article}
\usepackage{ifxetex}
\ifxetex
  \usepackage{fontspec}
\else
  \usepackage{lmodern}
\fi
%
\usepackage{babel}
\usepackage{listings}
%
\begin{document}%,showstringspaces=true]
\begin{lstlisting}[language=Python,showstringspaces=true,basicstyle=\ttfamily]
# un commentaire
i = 1
while i <= 5:
  print(i)
  i = i + 1
print('Fini !')
\end{lstlisting}
\end{document}

Si on compile avec pdfLaTeX, le stringspaces devant le « ! » de « Fini ! » apparaît bien.

Si on compile avec XeLaTeX, il disparaît...

Comment faire pour qu'il ne disparaisse pas lors de la compilation avec XeLaTeX ?

PS : sur une TeX Live 2015 /dev/Debian, il ne disparaît pas...

Posée 05 Nov '19, 00:03

christophe-poulain's gravatar image

christophe-poulain
8661527
Taux d'acceptation : 37%

Modifiée 05 Nov '19, 07:34

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

What is a stringspace ? 😉

(05 Nov '19, 07:35) Pathe ♦♦ Pathe's gravatar image

@samcarter : que ne signalez-vous ce crosspost également sur le site anglophone auquel vous faites référence plus haut ? Je l'aurais bien fait, mais je n'ai pas suffisamment contribué sur ce site pour que cela me soit autorisé.

(05 Nov '19, 07:41) Pathe ♦♦ Pathe's gravatar image

@Pathe Je ne participe plus sur tex.se

(05 Nov '19, 11:16) samcarter samcarter's gravatar image
1

@samcarter : moi pareil, car je n'ai guère envie d'apporter de travailler gratuitement pour une entreprise commerciale. J'en profite pour rappeler à qui veut l'entendre que TeXnique est un site non lucratif, animé par des bénévoles et bénéficiant du support des groupes d'utilisateurs GUTenberg (francophone) et DANTE.

(05 Nov '19, 23:01) Pathe ♦♦ Pathe's gravatar image

Voici une solution :

Ouvrir dans l'éditeur Overleaf
% !TeX TS-program = xelatex

\documentclass[french]{article}
\usepackage{ifxetex}
\ifxetex
  \usepackage{fontspec}
\else
  \usepackage{lmodern}
\fi
%
\usepackage{babel}
\usepackage{listings}

\makeatletter
\def\lst@visiblespace{\lst@ttfamily{\textvisiblespace}}
\makeatother
%
\begin{document}%,showstringspaces=true]
\begin{lstlisting}[language=Python,showstringspaces=true,basicstyle=\ttfamily]
# un commentaire
i = 1
while i <= 5:
  print(i)
  i = i + 1
print('Fini !')
\end{lstlisting}
\end{document}

On obtient ceci :

alt text

Lien permanent

Publiée 05 Nov '19, 01:31

samcarter's gravatar image

samcarter
8.2k2817
Taux d'acceptation : 57%

Modifiée 05 Nov '19, 07:36

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

Merci sam. Je testerai dans la journée. Mais pourquoi cette différence entre TL2015 et TL2019 ?

(05 Nov '19, 08:37) christophe-poulain christophe-poulain's gravatar image

@christophe-poulain Il y a eu des changements dans fontspec

(05 Nov '19, 11:14) samcarter samcarter's gravatar image

merci samcarter !

(05 Nov '19, 14:54) christophe-poulain christophe-poulain's gravatar image
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.