Da ich heute eine Weile um die Lösung kämpfen musste, möchte ich sie hier mal vorstellen: Mein eigenes Environment für Code-Schnipsel „codeex“ (Code-Example) in Latex-Dokumenten.
\renewcommand*\lstlistingname{Code-Beispiel}
\lstnewenvironment{codeex}[2]
{\lstset{caption=#2,label=#1}}
{}
Wichtig ist es hier, \lstnewenvironment
statt \newenvironment
zu nutzen.
Die erste Zeile definiert einen Counter, der bei jedem Chapter wieder auf 0 gesetzt wird. Dem Environment übergibt man ein Label und eine Überschrift. Vor den Code wird dann eine Zeile der Form [Kapitelnummer].[Beispielnummer im Kapitel] [Überschrift] gesetzt.
Änderung vom 07.03.2012: Die aktualisierte Variante nutzt die normale Nummerierung von Listings, die ebenfalls dem Schema Kapitel.Listing folgt. Ist dies nicht der Fall, so muss ist die Option numberbychapter
auf true
gesetzt werden.
Die Lösung basiert auf dem Paket Listings, das man noch so konfigurieren muss, wie man es braucht.
Anwendung
\begin{codeex}{twitter01}{Twitter-Anmeldung}
// code here...
\end{codeex}%$
Diesen kann man dann auch referenzieren (hier mittels vref):
Das Beispiel \vref{twitter01}\ verdeutlicht...
Das Ergebnis
So kann das ganze dann aussehen:
Ist dir da ein Fehler unterlaufen? Im Beispiel referenzierst du auf 2.2.1 und nicht auf 2.1 …
Ansonsten: Cool!
Du hast recht, vref nimmt als Label die aktuelle Sektion, in der sich das label befindet. Im Beispiel also 2.2.1. Hatte bei mir immer nur zufällig geklappt.
Da muss man sich noch was überlegen, ggf. ein eigenes vref schreiben oder so. Liefere ich nach.