2010-10-10 11 views
3

Comment créer deux environnements de listage ayant chacun son propre compteur?Listes LaTeX: différents compteurs pour différents environnements de listing

Si j'utilise par exemple

\lstnewenvironment{algorithm}[2]{ 
    \renewcommand\lstlistingname{Algorithm} 
    \lstset{ ... } 
} {} 

\lstnewenvironment{program}[2]{ 
    \renewcommand\lstlistingname{Program} 
    \lstset{ ... } 
} {} 

Et puis

\begin{algorithm}{Algorithm caption}{alg-label} 
... 
\end{algorithm} 

\begin{program}{Program caption}{prg-label} 
... 
\end{program} 

Ensuite, ils partageront le compteur, soit il en résultera par exemple dans

Algorithm 1.1 
    ... 
Program 1.2 
    ... 

Je voudrais que le compter pour être indépendant pour différents environnements d'inscription. J'utilise aussi le paquet caption pour créer une jolie légende. J'ai déjà essayé beaucoup de choses mais aucune vraiment réussi. La seule façon que j'ai trouvé qui indique comment changer l'extension du compteur/fichier est via ie \ DeclareCaptionType [fileext = alg] {algorithme} mais le problème est que cette commande définit déjà un nouvel environnement donc je ne sais pas comment utiliser avec un nouvel environnement de listes et le paquet de légende. J'utilise par exemple les paramètres suivants:

\DeclareCaptionFont{white}{\color{white}} 
\DeclareCaptionFormat{listing}{\colorbox[cmyk]{0.43, 0.35, 0.35,0.01}{\parbox{\textwidth}{\hspace{15pt}#1#2#3}}} 
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white, singlelinecheck=false, margin=0pt, font={bf,footnotesize}} 
+0

Vous pourriez avoir plus de chance de poser votre question sur http://tex.stackexchange.com/ – Seamus

+0

Bonne idée, je ne savais pas celui-ci, Merci! – fraktalek

Répondre

1
\newcounter{algorithm} 
\newcounter{program} 

\makeatletter 
\lstnewenvironment{algorithm}[2]{ 
    \renewcommand\lstlistingname{Algorithm} 
    \let\[email protected]=\[email protected] 
    \let\thelstlisting=\thealgorithm 
    \lstset{caption=#1} 
} {} 

\lstnewenvironment{program}[2]{ 
    \renewcommand\lstlistingname{Program} 
    \let\[email protected]=\[email protected] 
    \let\thelstlisting=\theprogram 
    \lstset{caption=#1} 
} {} 
\makeatother 
Questions connexes