Archiv verlassen und diese Seite im Standarddesign anzeigen : Nummerierung von Listings
Biff1109
05-09-2007, 18:43
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):
\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
\thelstlisting undefined
ist.
Wenn ich aber im Dokumentbereich
\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
Kannst du mal ein Minimalbeispiel posten, das den Fehler reproduziert?
MfG Bischi
Biff1109
06-09-2007, 11:24
hi bischi,
im Prinzip habe ich das schon im ersten Post angegeben, hab aber jetzt noch ein richtiges Beispiel erstellt.
\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:
\thelstlisting undefined
sommerfee
06-09-2007, 11:35
\thelstlisting wird wohl erst bei \begin{document} definiert, warum auch immer.
Abhilfe sollte schaffen, entweder
\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:
\makeatletter
\AtBeginDocument{%
\renewcommand*{\thelstlisting}{\arabic{section} - \arabic{lstlisting}}%
\@addtoreset{lstlisting}{section}}
\makeatother
Gruß,
Axel
Biff1109
06-09-2007, 11:39
so ... habs jetzt mal unter Linux getestet und siehe da es funktioniert :eek:
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?
Biff1109
06-09-2007, 11:43
vielen dank @sommerfee
hat hiermit funktioniert:
\makeatletter
\AtBeginDocument{%
\renewcommand*{\thelstlisting}{\arabic{section} - \arabic{lstlisting}}%
\@addtoreset{lstlisting}{section}}
\makeatother
echt klasse
Danke
sommerfee
17-09-2007, 15:32
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.