Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Nummerierung von Listings

  1. #1
    Biff1109
    Gast

    Question Nummerierung von Listings

    Hi,

    ich möchte meine Listings mit Kapitelnummer - ListingNr durchnummerieren.
    Hab jetzt in einem Forum gelesen, dass es so gehen sollte (wie ich es ähnlich auch schon mit table und figure getan habe):
    Code:
    \usepackage{listings}
    \lstset{language=Java, numbers=left}
    \renewcommand*{\thelstlisting}{\arabic{section} - \arabic{lstlisting}}
    \makeatletter \@addtoreset{lstlisting}{section} \makeatother
    Ich bekomme aber beim ausführen einen Fehler, dass
    Code:
    \thelstlisting undefined
    ist.

    Wenn ich aber im Dokumentbereich
    Code:
    \begin{document}
    \thelstlisting
    \end{document}
    schreibe, kennt er es und führt es richtig aus.

    Hat jemand eine Idee, was falsch ist?

    schöne Grüße

    p.s. verwende TeXnicCenter und MikTeX

  2. #2
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Kannst du mal ein Minimalbeispiel posten, das den Fehler reproduziert?

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  3. #3
    Biff1109
    Gast
    hi bischi,

    im Prinzip habe ich das schon im ersten Post angegeben, hab aber jetzt noch ein richtiges Beispiel erstellt.

    Code:
    \documentclass[pdftex]{scrartcl}
    \usepackage{ngerman}
    \usepackage{geometry}
    \usepackage[latin1]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{listings}
    
    \geometry{a4paper}
    \lstset{language=Java}
    \renewcommand*{\thelstlisting}{\arabic{section} - \arabic{lstlisting}}
    \makeatletter \@addtoreset{lstlisting}{section} \makeatother
    
    \begin{document}
    	\lstlistoflistings
    	
    	\section{Test}
    		\begin{lstlisting}[caption=Beispielcode]
    			public static void main(String[] args)
    			{
    				// Do something ...
    			}
    		\end{lstlisting}
    		Listing: \thelstlisting
    			
    		\begin{lstlisting}[caption=Beispielcode2]
    			public static void main(String[] args)
    			{
    				// Do something ...
    			}
    		\end{lstlisting}
    		Listing: \thelstlisting
    	
    	\section{Test2}
    		\begin{lstlisting}[caption=Beispielcode]
    			public static void main(String[] args)
    			{
    				// Do something ...
    			}
    		\end{lstlisting}
    		Listing: \thelstlisting
    		
    	\section{Test3}
    		\begin{lstlisting}[caption=Beispielcode]
    			public static void main(String[] args)
    			{
    				// Do something ...
    			}
    		\end{lstlisting}
    		Listing: \thelstlisting
    		
    \end{document}
    Beim Erstellen, kommt nun wieder in Zeile 10 der Fehler:
    Code:
    \thelstlisting undefined

  4. #4
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    \thelstlisting wird wohl erst bei \begin{document} definiert, warum auch immer.

    Abhilfe sollte schaffen, entweder
    Code:
    \renewcommand*{\thelstlisting}{\arabic{section} - \arabic{lstlisting}}
    \makeatletter \@addtoreset{lstlisting}{section} \makeatother
    nach \begin{document} zu platzieren oder das ganze an der Stelle stehen zu lassen, wo es steht, es aber mit \AtBeginDocument zu klammern:
    Code:
    \makeatletter
    \AtBeginDocument{%
      \renewcommand*{\thelstlisting}{\arabic{section} - \arabic{lstlisting}}%
      \@addtoreset{lstlisting}{section}}
    \makeatother
    Gruß,
    Axel

  5. #5
    Biff1109
    Gast
    so ... habs jetzt mal unter Linux getestet und siehe da es funktioniert

    Ich denke, dass bei mir das listing package falsch ist oder zu alt oder keine Ahnung.

    Wo bekomme ich denn ein aktuelles package her.
    Wenn ich MikTex updaten will, kommt immer ein Fehler
    Kann ich das irgendwie manuell machen?

  6. #6
    Biff1109
    Gast

    [gelöst]

    vielen dank @sommerfee

    hat hiermit funktioniert:

    Code:
    \makeatletter
    \AtBeginDocument{%
      \renewcommand*{\thelstlisting}{\arabic{section} - \arabic{lstlisting}}%
      \@addtoreset{lstlisting}{section}}
    \makeatother
    echt klasse
    Danke

  7. #7
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von Biff1109 Beitrag anzeigen
    Ich denke, dass bei mir das listing package falsch ist oder zu alt oder keine Ahnung.
    Neee, zu neu. Das wurde mal intern geändert, damit man auch nach dem Einbinden des listings-Paketes mit \lstset{numberbychapter=true} die Nummerierung nach \chapter-Unterteilung einstellen kann. (Ein "numberbysection" gibt es leider nicht, könnte man ja mal als VV beim Maintainer abkippen.)

    Gruß,
    Axel

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •