PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Listing im Anhang



iceman
05-04-2008, 06:03
Hallo,

weiß jemand wie ich den Listing counter auf 0 setzen kann, ich möchte, dass meine Listings im Anhang nicht fortlaufend nummeriert werden, sondern mit A1, A2, etc..

Zu Abbildungen habe ich etwas gefunden:




\setcounter{figure}{0}
\renewcommand{\thefigure}{B\arabic{figure}}



Das gleiche würde ich gerne auch bei Listings haben. Leider klappt es nicht.

Danke im Voraus
iceman

rais
05-04-2008, 13:04
Hallo und Herzlich Willkommen :)
der entsprechende Zähler des listing-Pakets heißt lstlisting -- zumindest bei v1.4.

Vielleicht wäre ja das chngcntr-Paket was für Dich?


\appendix
\counterwithin{lstlisting}{section}

theoretisch auch mit \numberwithin aus dem amsmath-Paket möglich (ungetestet).

MfG

Stefan_K
05-04-2008, 15:00
Hallo iceman,

willkommen im Forum!
Du findest noch einige Infos/ Erklärungen zur Frage in der UK TeX FAQ: Master and slave counters (http://www.tex.ac.uk/cgi-bin/texfaq2html?label=addtoreset).

Wenn Du die Nummerierung wirklich in der Form A1, A2 ... haben möchtest statt A.1, A.2, ... , dann sollte man die *-Form von \counterwhithin verwenden:
\counterwithin*{lstlisting}{section}
\renewcommand*\thelstlisting{\Alph{section}\arabic {lstlisting}}
Ggf. in beiden Zeilen section durch chapter ersetzen, falls Du Kapitel statt sections im Anhang verwendest.

Viele Grüße,

Stefan

rais
05-04-2008, 16:53
Moin Stefan,


Wenn Du die Nummerierung wirklich in der Form A1, A2 ... haben möchtest statt A.1, A.2, ... ,

Danke, den Punkt oder vielmehr Nichtpunkt hab ich glatt übersehen.:o


dann sollte man die *-Form von \counterwhithin verwenden:
\counterwithin*{lstlisting}{section}
\renewcommand*\thelstlisting{\Alph{section}\arabic {lstlisting}}

Warum? Die Sternform ist imho nur dann notwendig, wenn die Darstellung des entsprechenden Zählers unverändert bleiben soll.
BTW: statt \Alph{section} vllt \thesection? Dann wäre es zumindest egal, ob `section' gerade als \alph, \Alph, ... ausgegeben wird.


Ggf. in beiden Zeilen section durch chapter ersetzen, falls Du Kapitel statt sections im Anhang verwendest.

Bei Verwendung von Kapiteln sollten standardmäßig auch Listings kapitelweise nummeriert werden, ergo nutzt der OP eine kapitellose Klasse -- oder hat nicht genügend Informationen geliefert.

MfG

Stefan_K
05-04-2008, 17:11
Hallo Rainer
Warum? Die Sternform ist imho nur dann notwendig, wenn die Darstellung des entsprechenden Zählers unverändert bleiben soll.
Ja, sie ist nicht notwendig, weil der Zähler ja hinterher nochmal geändert wird, wenn man es in der obigen Reihenfolge schreibt. Ohne * wirds aber plötzlich von der Reihenfolge abhängig: schreibt man \renewcommand*\thefigure{...} vor \counterwithin, klappts nicht mehr. Daher finde ich die *-Forum sauberer bzw. sicherer, eine Abhängigkeit (und ein Makoaufruf) weniger.


BTW: statt \Alph{section} vllt \thesection? Dann wäre es zumindest egal, ob `section' gerade als \alph, \Alph, ... ausgegeben wird.
Ja, finde ich auch gut, da ist die gewünschte Darstellung ja bereits eingebaut.

Viele Grüße,

Stefan

rais
05-04-2008, 18:20
Hallo Stefan,

Ja, sie ist nicht notwendig, weil der Zähler ja hinterher nochmal geändert wird, wenn man es in der obigen Reihenfolge schreibt. Ohne * wirds aber plötzlich von der Reihenfolge abhängig: schreibt man \renewcommand*\thefigure{...} vor \counterwithin, klappts nicht mehr. Daher finde ich die *-Forum sauberer bzw. sicherer, eine Abhängigkeit (und ein Makoaufruf) weniger.

Ok, danke -- damit hast Du natürlich recht...
OTOH seh ich noch nicht ganz, warum ich mir über die Aufrufreihenfolge überhaupt (weitere) Gedanken machen sollte:

OP: ``wie kann ich...?''

Du: ``machst Du A, dann B...''

glaubst Du wirklich, der OP würde hier erst B und dann A versuchen?
Dann müsstest Du (oder wer auch gerade antwortet) diese Vertauschbarkeit in jeder Antwort berücksichtigen...

MfG

iceman
06-04-2008, 01:48
Danke für die guten Tipps, ich werds gleich mal ausprobieren.

Stefan_K
06-04-2008, 01:58
Hallo Rainer,

ist doch ok, es wird ja keine Probs geben. Ich habe nur begründet, weshalb ich sofort an \counterwithin* dachte. Man braucht die *-Form nicht verwenden. Meine Aufmerksamkeit liegt i.A. auch darauf, Nebenwirkungen zu vermeiden. \counterwithin hat eine Nebenwirkung, die in diesem Fall unerwünscht ist. Auch wenn die nächste Zeile repariert, empfehle ich doch lieber die bestehende *-Forme ohne potentiellen Fallstrick.
Sicher ist gut, mal darüber gesprochen zu haben, damit ein Leser weiß, dass \counterwithin komfortablerweise gleich die Zählerdarstellung anpasst und \counterwithin* das eben nicht tut. :)

Ich habe geschrieben, um ebenfalls willkommen zu heißen und etwas Information beizutragen. :)

Quellcode:
\newcommand{\counterwithin}{\@ifstar{\c@t@sinstar} {\c@t@sin}}
\newcommand{\c@t@sinstar}[2]{%
\@ifbothc@t@s{chngcntr}{#1}{#2}{\@addtoreset{#1}{# 2}}}
\newcommand{\c@t@sin}[2]{%
\@ifbothc@t@s{chngcntr}{#1}{#2}{\@addtoreset{#1}{# 2}%
\@namedef{the#1}{\@nameuse{the#2}.\arabic{#1}}}}

Viele Grüße,

Stefan