PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Referenz durcheinander bei Listings



el-bastardo
13-11-2007, 11:16
hallo leute,

ich hab da ein problem mit dem anzeigen der referenznummerierung bei listings. schreibe grade meine dipl arbeit und benutze listings für meine quellcodes. nun hab ich folgendes problem.
ich lege ein listing wie folgt an:

\begin{lstlisting}[caption={\selectlanguage{ngerman}
Einsatz des kXML-Parser\label{lst:Einsatz-des-kXML-Parser}},breaklines=true,float=htp,language=Java,s howstringspaces=false]
...
\end{lstlisting}

nun mache ich wie folgt normal bei abbildungen und tabellen eine referenz auf dieses listing mit:

\ref{lst:Einsatz-des-kXML-Parser}

beim betrachten des ergebnisses fällt mir nun auf das bei der referenznummerierung des listings die nummer "43" steht. laut meiner listingtabelle sollte es allerdings nummer "8" sein. beim durchforsten meines dokumentes stellte ich nun fest das dies bei allen listings der fall ist ... ein totales durcheinander.
im anschluss habe ich dann geprüft ob ein ähnliches problem bei abbildungen und tabellen vorliegt. dies ist jedoch nicht er fall ... dort funktioniert alles einwandfrei.

kennt jemand diese problem oder hat ein ähnliches und wie kann dem abgeholfen werden.

über eine schnelle hilfe würde ich mich sehr freuen denn die zeit drängt ein wenig ... möchte nicht die nummern manuell hinschreiben weil schließlich gibt es ja dafür die referenzen.

gruss und vielen dank schonmal

sommerfee
13-11-2007, 12:22
\begin{lstlisting}[caption={\selectlanguage{ngerman}
Einsatz des kXML-Parser\label{lst:Einsatz-des-kXML-Parser}}

Beim listings Paket ist die Notation eine andere:



\begin{lstlisting}[caption={....},label=lst:Einsatz-des-kXML-Parser]...


(Siehe auch Dokumentation zum listings-Paket.)

Gruß,
Axel

el-bastardo
13-11-2007, 12:47
hey danke für die schnelle antwort ... verstehe war nicht ganz warum latex bei der anderen schreibeweise nicht meckert.

jetzt sieht die ganze sache aber schon viel besser aus und das durcheinander ist behoben.

vielen vielen dank

sommerfee
13-11-2007, 13:01
verstehe war nicht ganz warum latex bei der anderen schreibeweise nicht meckert.

LaTeX meckert nicht, weil \label nichts anderes tut, als den Inhalt eines internen Kommandos (\@currentlabel) in die AUX-Datei zu schreiben, völlig egal, was gerade im internen Kommando steht, da kann auch "Käsekuchen" drinstehen und dann bekommt man bei einem dazugehörigen \ref eben "Käsekuchen" geliefert. (Und Befehle wie \section, \caption, ... setzen dieses interne Kommando auf einen referenzierbaren Wert.)

Ob das nun im Kontext des Dokumentes sinnvoll ist oder nicht - wie soll LaTeX dies abchecken? Ich persönlich halte deswegen auch die Idee des \label-Kommandos für weniger gelungen, weil man eben manchmal damit Käse(kuchen) referenziert, und dies oft nicht bemerkt, weil man beim Korrekturlesen eben nicht immer alle Referenzen überprüft, solange die auch nur halbwegs sinnvoll aussehen. Sinnvoller fände ich persönlich z.B. eine Syntax der Art
\section(Label)[TOC Eintrag]{Titel}

Und gerade im Zusammenhang mit \caption ist \label eine Fehlkonstruktion - manchmal ist es egal, ob man das \label in die \caption setzt oder dahinter, manchmal muß es in die \caption, manchmal darf es nicht in die \caption, ..., es gibt sogar Fälle, vor es auch vor die \caption kann (und trotzdem die korrekte Referenz erzeugt), alles je nach Umgebung (figure, table, longtable, wrapfigure, ...) und geladenen Paketen.

Daher fände ich es schön, wenn deine Konstruktion mit dem listings-Paket trotzdem korrekt funktionieren würde, und es wäre auch sicherlich möglich, das listings-Paket dahingehend anzupassen, daß auch bei einem \label in dem caption-Text eine korrekte Referenz herauskommt. Vielleicht schlägst du es mal dem Maintainer des listings-Paketes vor? Seine E-Mail steht ja in der Anleitung.

Liebe Grüße,
Axel