4
2

J'aimerais insérer du code source d'un programme dans une fichier LaTeX (en particulier du code Python). Quels sont les meilleurs packages et les meilleurs usages que vous recommanderiez en 2020 ?

  • Listing ?
  • minted ?
  • autre package ?

Quels sont les points forts et les inconvénients de ces différents packages ?

Pourriez-vous donner un exemple avec chacun des packages que vous évoquerez en utilisant le code source suivant :

Ouvrir dans l'éditeur Overleaf
# Test python
var = 100
if var == 200:
   print "1 - Got a true expression value"
   print var
elif var == 150:
   print "2 - Got a true expression value"
   print var
else:
   print "4 - Got a false expression value"
   print var

print "Good bye!"

Posée 05 Mai '20, 16:04

idefix's gravatar image

idefix
95594051
Taux d'acceptation : 14%

Modifiée 05 Mai '20, 18:35

Pathe's gravatar image

Pathe ♦♦
7.5k42203251

Si vous êtes satisfait avec le résultat, listings est plus facile à utiliser. minted est plus puissant mais il peut être compliqué ....

(05 Mai '20, 16:45) samcarter samcarter's gravatar image

Est-il nécessaire de charger le package xcolor pour utiliser minted ? Je vois des exemples qui chargent les deux, mais si minted utilise Pygment, pourquoi xcolor serait nécessaire ?

(06 Mai '20, 16:01) idefix idefix's gravatar image

@idfix xcolor n'est pas nécessaire, minted charge ça.

(06 Mai '20, 18:42) samcarter samcarter's gravatar image

@samcarter Cela signifie-t-il qu'on peut utiliser les commandes du package xcolor si on ne charge que le package minted (et pas xcolor) parce que minted fait lui-même \usepackage{xcolor} ?

(09 Mai '20, 22:14) idefix idefix's gravatar image

@idefix : je pense que oui. C'est facile à tester.

(10 Mai '20, 01:37) Pathe ♦♦ Pathe's gravatar image
2

@idefix Oui, minted fait \RequirePackage{xcolor}.

(10 Mai '20, 13:23) samcarter samcarter's gravatar image
2

« meilleurs », ça ne veut pas dire grand chose sans contexte.

Le sujet a été traité un peu partout depuis toujours, une recherche minimale est nécessaire.

En option : quels sont les points forts et les inconvénients de ces différents packages ? Pourriez-vous donner un exemple avec chacun des packages que vous évoquerez en utilisant le code source proposé ?

Alors oui, mais dit ainsi, c'est payant. :)

(10 Mai '20, 21:00) polymorphisme polymorphisme's gravatar image
Affichage de 5 parmi 7 Afficher 2 commentaire(s) en plus

Le package minted offre plus de souplesse que listings mais ce dernier est plus simple à mettre en œuvre (pas de nécessité de recourir à une compilation avec -shell-escape) et est déjà extrêmement puissant. Voici un exemple avec un code Python différent de celui demandé qui met en évidence davantage de fonctionnalités (plus de détails sur listings par exemple ici).

Ouvrir dans l'éditeur Overleaf
\begin{filecontents*}{facto.py}
# Calcul de la factorielle en langage Python
def factorielle(x):
    if x < 2:
        return 1
    else:
        return x * factorielle(x-1)
str(5) + "! = " + str(factorielle(5))
\end{filecontents*}

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{listings}

\lstset{%
  language=Python,
  basicstyle   = \ttfamily,
  keywordstyle =    \color{magenta},
  keywordstyle = [2]\color{orange},
  commentstyle =    \color{gray}\itshape,
  stringstyle  =    \color{cyan},
  numbers      = left,
  frame        = single,
  framesep     = 2pt,
  aboveskip    = 1ex
}

\begin{document}
\lstinputlisting{facto.py}
\end{document}
Lien permanent

Publiée 05 Mai '20, 16:54

denis's gravatar image

denis ♦♦
7.3k1510
Taux d'acceptation : 53%

Modifiée 06 Mai '20, 19:56

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.