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, 13:50

insan's gravatar image

insan
514
Taux d'acceptation : 0%

Modifiée 07 Jul, 20:20

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.

Mots-clés de la question :

×19
×11
×6
×4

Question posée : 07 Jul, 13:50

Question vue : 81 fois

Dernière mise à jour : 07 Jul, 20:20