Je souhaiterais créer un environnement Python avec le package listings (tout en ayant la possibilité d'en créer d'autres avec d'autres langages) et pouvoir référencer ce langage en faisant appel aux commandes \caption et \label. Voici le code que j'ai pu avoir sur le net :

\documentclass[a4paper]{article}
\usepackage{listings}
\usepackage[margin=1cm]{geometry}
\setlength{\parindent}{0pt}

\usepackage{caption}
\captionsetup[prog]{
    font={bf,footnotesize},
    margin=0pt,
    skip=0pt
}
\makeatletter
\newcounter{prog}
\lstnewenvironment{prog}[1][]
    {
    \noindent\minipage{0.3\linewidth}
            \def\lstlistingname{Programme}
            \def\lstlistingautorefname{Programme}
            \let\c@lstlisting=\c@prog
            \let\thelstlisting=\theprog
            \clearcaptionsetup{lstlisting}
            \lstset{#1,
                            language=Python,
                            basicstyle=\ttfamily,
                            numberstyle=\tiny,
                            framexleftmargin=5mm,
                            xleftmargin=5mm,
                            frame=single,
                            captionpos=bc
                         }
                     \captionsetup{options=prog}
    }
 {\endminipage}
\makeatother

\begin{document}

Cas1 - avec compteur et légende :

\begin{prog}[caption=MaLegende]
s=0
for i in range(1,10):
  s=s+i
print(s)
\end{prog}

\label{MonLabel}

Cas2 - sans légende ni compteur :

\begin{prog}[]
s=0
for i in range(1,10):
  s=s+i
print(s)
\end{prog}

Cas3 - avec compteur et sans légende :

\begin{prog}[caption=~] %ce test n'a pas donné ce que je souhaitais !
s=0
for i in range(1,10):
  s=s+i
print(s)
\end{prog}

Le programme ~\ref{MonLabel} se trouve à la page~\pageref{MonLabel}.

\end{document}

Plus précisément, je voudrais :

1- que le nom défini "Programme" et les commandes \caption et \label se réfèrent au style défini "prog". Cela me permet plus tard de définir d'autres langages.

2- ne pas afficher les : dans le Cas3 (le cas où la légende n'existe pas).

Posée 07 Jul '21, 13:50

insan's gravatar image

insan
5127
Taux d'acceptation : 0%

Modifiée 07 Jul '21, 20:20

1

Avant de pouvoir donner une éventuelle réponse, il faut décider ce qui se passe dans lstlistoflistings pour un programme numéroté mais sans légende. Doit-il y apparaître (juste son numéro) ou non (et dans ce cas il y aura un trou dans la numérotation) ?

(06 Aoû '21, 08:46) Paul Gaborit Paul%20Gaborit's gravatar image

Je souhaiterais, pour le cas 3, afficher "programme n" dans lstlistoflistings avec "n" le numéro du programme en question.

(16 Aoû '21, 16:14) insan insan's gravatar image
Soyez le premier à répondre à cette question !
(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.