J'utilise de deux façons le package listings pour formater un code : soit en créant un environnement spécifique (via \lstnewenvironment), soit en important directement le code depuis un fichier externe (via \lstinputlisting). Tout fonctionne bien... jusqu'à ce que je veuille utiliser la clé comment pour définir du commentaire dans le code : aucun problème avec l'environnement mais l'erreur suivante se produit avec l'importation :

Ouvrir dans l'éditeur Overleaf
! Paragraph ended before \lst@Delim@delim was complete.

Voici un ECM (qui a besoin d'un fichier TestPython.py contenant par exemple les deux lignes de code qui figure dans l'environnement envirtest de l'ECM) :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[a4paper]{geometry}
\usepackage{listings}

\lstnewenvironment{envirtest}{\lstset{comment=[l]{\#}}}{} %définition d'un environnement
\lstdefinestyle{styletest}{comment=[l]{\#}} %définition d'un style

\begin{document}

\begin{envirtest}
x = 1 #affectation de x
y = 3
\end{envirtest}

\lstinputlisting[comment=[l]{\#}]{TestPython.py}

\end{document}

À noter que l'erreur ne se produit plus si cette clé comment est définie dans un style, cf. en remplaçant la ligne d'importation de l'ECM ci-dessus par :

Ouvrir dans l'éditeur Overleaf
\lstinputlisting[style=styletest]{TestPython.py}

J'utilise TeX Live 2019 (non mise à jour depuis plusieurs mois). Avez-vous la même erreur ? Si oui, auriez-vous une explication ?

Posée 12 Avr '20, 18:32

Mathieu2L's gravatar image

Mathieu2L
316314
Taux d'acceptation : 75%

Modifiée 14 Avr '20, 11:31

Pathe's gravatar image

Pathe ♦♦
7.4k28196245

Même erreur avec comment=. En revanche, pas de problème avec morecomment= (du moins avec l'environnement).

(13 Avr '20, 12:55) denis ♦♦ denis's gravatar image

Ok, je vais faire remonter le bug. Mais, une remarque : la clé comment= ne provoque pas non plus d'erreur avec l'environnement chez toi, non ? Chez moi, comment= et morecomment= se comportent de façons identiques (erreur sur l'input et par d'erreur sur l'environnement).

(15 Avr '20, 18:32) Mathieu2L Mathieu2L's gravatar image
1

Désolé, je me suis emmêlé les pinceaux : comme chez toi, que ce soit avec comment= ou avec morecomment= : pas d'erreur avec l'environnement, erreur avec \input. Merci de nous donner des nouvelles du rapport de bug.

(15 Avr '20, 22:42) denis ♦♦ denis's gravatar image

Ok. Le signalement est parti. Par contre, @Pathe, peut-être serait-il préférable de laisser \lstinputlisting dans le titre du fil ? C'est vraiment sa conjonction avec (more)comment qui provoque l'erreur.

(16 Avr '20, 23:24) Mathieu2L Mathieu2L's gravatar image

Traduction de la réponse de l'auteur/mainteneur du package (qui, pris par la préparation de cours numériques, était débordé ces derniers temps et s'excuse du délai).

Le problème est que comment est défini comme un argument optionnel de \lstinputlisting et que cet argument optionnel contient un autre argument optionnel. Il faut mettre le second entre accolades et c'est bon.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{listings}

\lstdefinestyle{styletest}{comment=[l]{\#}}
\lstnewenvironment{envirtest}{\lstset{comment=[l]{\#}}}{}

\begin{document}

\begin{envirtest}
x = 1 #affectation de x
y = 3
\end{envirtest}

\lstinputlisting[comment={[l]{\#}}]{TestPython.py}

\lstinputlisting[style=styletest]{TestPython.py}
\end{document}
Lien permanent

Publiée 17 Mai '20, 19:00

Mathieu2L's gravatar image

Mathieu2L
316314
Taux d'acceptation : 75%

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.