PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lstlistoflistings mit der option "name="



Tailor
16-07-2008, 14:24
Hallo,
ich hab mal wieder ein Problem mit listings. Ich habe einige Programmabschnitte die recht lang sind und dadurch den Lesefluss behindern wenn man sie an einem Stück lässt. Deswegen habe ich sie unterteilt und die Abschnitte die zum gleichen Programmstück gehören mit den gleichen Namen versehen.
Das schaut dann etwa so aus.

\begin{lstlisting}[name=beispiel,caption={beispiel (1)},label=beispiel1]
...code...
\end{lstlisting}

\begin{lstlisting}[name=beispiel,caption={beispiel (2)},label=beispiel2]
...code...
\end{lstlisting}

\begin{lstlisting}[name=beispiel,caption={beispiel (3)},label=beispiel3]
...code...
\end{lstlisting}

\begin{lstlisting}[name=anderercode,caption={anderer code},label=anderercode]
...code...
\end{lstlisting}

Das hat den Vorteil das die Zeilennummerierung automatisch richtig fortgeführt wird.
Mein Problem ist das im Listingsverzeichnis nur der erste teil aufgeführt wird also in diesem Beispiel stände da etwa

1.1 beispiel (1)......Seitenzahl
1.4 anderer code ......Seitenzahl

Soll heissen listings zählt zwar richtig mit führt aber die anderen codes mit dem namen=beispiel nicht im verzeichnis auf. kennt das problem noch jemand? und wenn ja, weiss derjenige wie ich das umgehen kann? In der Beschreibung des Listings Paketes wird zwar die nutzung der option "name" beschrieben aber dieses phänomen wird nich beschrieben... :(

edico
16-07-2008, 21:20
Meinst Du es so:

\documentclass[paper=a5,pagesize,10pt]{scrartcl}
\typearea{9}
\usepackage{charter,beramono}

\usepackage{listings}% [savemem]
%%% Workaround_@_KOMA für \lstlistoflistings von Markus Kohm_@_dctt
\makeatletter% --> De-TeX-FAQ
\renewcommand*{\lstlistoflistings}{%
\begingroup
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\lol@heading
\setlength{\parskip}{\z@}%
\setlength{\parindent}{\z@}%
\setlength{\parfillskip}{\z@ \@plus 1fil}%
\@starttoc{lol}%
\if@restonecol\twocolumn\fi
\endgroup
}

\lstset{%
basicstyle=\ttfamily\small,
keywordstyle=\bfseries,
numbers=left,
stepnumber=1,
numbersep=5pt,
numberstyle=\tiny,
breaklines=true,
breakautoindent=true,
postbreak=\space,
tabsize=2,
showspaces=false,
showstringspaces=false,
extendedchars=true,
backgroundcolor=\color{lbcolor}}% Farbe auf den definierten Wert

\usepackage{xcolor}
\definecolor{lbcolor}{rgb}{0.95,0.95,0.95}

\usepackage[colorlinks]{hyperref}

\begin{document}

%---------------------------------------------------------------
\renewcommand{\lstlistlistingname}{Verzeichnis der Listings}
\lstlistoflistings %<<< requires the Workaround_@_KOMA
%---------------------------------------------------------------

\vfill
\section{Continued Listings}

%---------------------------------------------------------------
\lstset{language=c++}
\lstset{commentstyle=\textit}
\begin{lstlisting}[frame=tb]{somecode}
for(i = 0; i < 10; i++)
{
// increment the pointer
*p++ = i;
}
\end{lstlisting}
%---------------------------------------------------------------

\newpage
and later...
%---------------------------------------------------------------
\begin{lstlisting}[frame=tb]{somecode}
for( i = 0; i < 10; i++ )
{
for( j = 0; j < 10; j++ )
{
}
}
\end{lstlisting}
%---------------------------------------------------------------


\section{Packetized Listings}

%---------------------------------------------------------------
\lstset{language=c++}
\lstset{commentstyle=\textit}
\begin{lstlisting}[frame=tb]{samecode}
for(i = 0; i < 10; i++)
{
// increment the pointer
*p++ = i;
}
for( i = 0; i < 10; i++ )
{
for( j = 0; j < 10; j++ )
{
}
}
\end{lstlisting}
%---------------------------------------------------------------

\end{document}

edico

P.S.
Ich kompiliere so:
*File List*
scrartcl.cls 2006/07/30 v2.95b KOMA-Script document class (article)
scrkbase.sty 2006/07/30 v2.95b KOMA-Script package (basics and keyval use)
scrlfile.sty 2006/03/28 v2.95 KOMA-Script package (loading files)
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
size10.clo 2005/09/16 v1.4f Standard LaTeX file (size option)
typearea.sty 2006/07/30 v2.95b KOMA-Script package (type area)
charter.sty 2005/04/12 PSNFSS-v9.2a (P.Dyballa)
beramono.sty 2004/01/31 (WaS)
listings.sty 2004/10/17 1.3b (Carsten Heinz)
lstpatch.sty 2004/10/17 1.3b (Carsten Heinz)
lstmisc.sty 2004/09/07 1.3 (Carsten Heinz)
listings.cfg 2004/09/05 1.3 listings configuration
xcolor.sty 2005/12/21 v2.09 LaTeX color extensions (UK)
color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
pdftex.def 2007/01/08 v0.04d Graphics/color for pdfTeX
hyperref.sty 2007/02/07 v6.75r Hypertext links for LaTeX
pd1enc.def 2007/02/07 v6.75r Hyperref: PDFDocEncoding definition (HO)
hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
kvoptions.sty 2006/08/22 v2.4 Connects package keyval with LaTeX options (HO
)
url.sty 2005/06/27 ver 3.2 Verb mode for urls, etc.
hpdftex.def 2007/02/07 v6.75r Hyperref driver for pdfTeX
ot1bch.fd 2004/10/18 font definitions for OT1/bch.
supp-pdf.tex
nameref.sty 2006/12/27 v2.28 Cross-referencing by name of section
refcount.sty 2006/02/20 v3.0 Data extraction from references (HO)
test.out
test.out
lstlang1.sty 2004/09/05 1.3 listings language file
lstlang1.sty 2004/09/05 1.3 listings language file
lstmisc.sty 2004/09/07 1.3 (Carsten Heinz)
***********

Tailor
17-07-2008, 11:37
:confused: wie bitte?

ok ich habs als Minibeispiel da... guck rein dann verstehst du was ich meine.

\documentclass[a4paper,11pt,oneside,ngerman,color]{book}
\usepackage[a4paper,left=3.5cm,right=2.5cm,bottom=3.5cm,top=3c m]{geometry}
\usepackage[ngerman]{babel}
\usepackage[pdftex]{graphicx,color}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings}
\lstdefinelanguage{4dskript}{
morekeywords={for,if,var,diShape,GuiDestroy,GuiReg ister,GuiCreate,PDir,SetKnoten,Knoten,SetLadestell en,SetBeladepuffer,SetQueues,Beladepuffer,Ladestel len,Queues,And,Case,WhichisTrue,Connect,CreateAtom ,ExcelRead,ExcelTxRead,ExcelSheet,Inc,SetAtt,SetCh annels,SetLoc,SetSize,SetTable,:=,+,-,>,<,AtomByName,Att,Last,First,xSize,ySize,zLoc,ptv,vt p,xLoc,Repeat,DestroyAtom},
sensitive=false,}
\lstset{%
language=4dskript, % Sprache des Quellcodes ist 4dskript
captionpos=b,
numbers=left, % Zelennummern links
stepnumber=1, % Jede Zeile nummerieren.
numbersep=5pt, % 5pt Abstand zum Quellcode
numberstyle=\tiny, % Zeichengrösse 'tiny' für die Nummern.
numberblanklines=false,
breaklines=true, % Zeilen umbrechen wenn notwendig.
breakautoindent=true, % Nach dem Zeilenumbruch Zeile einrücken.
tabsize=2, % Tabulatorgrösse 2
basicstyle=\footnotesize, % Nichtproportionale Schrift, klein für den Quellcode
showspaces=false, % Leerzeichen nicht anzeigen.
extendedchars=true, % Alle Zeichen vom Latin1 Zeichensatz anzeigen.
backgroundcolor=\color[gray]{0.8}} % Hintergrundfarbe des Quellcodes setzen.
\usepackage{bibgerm}
\usepackage[margin=0pt,font=small,labelfont=bf]{caption}
% Keine einzelnen Zeilen beim Anfang eines Abschnitts (Schusterjungen)
\clubpenalty = 10000
% Keine einzelnen Zeilen am Ende eines Abschnitts (Hurenkinder)
\widowpenalty = 10000 \displaywidowpenalty = 10000

\begin{document}
\chapter{Einleitung}
\begin{lstlisting}[name=beispiel,caption={beispiel (1)},label=beispiel1]
...code...
\end{lstlisting}

\begin{lstlisting}[name=beispiel,caption={beispiel (2)},label=beispiel2]
...code...
\end{lstlisting}

\begin{lstlisting}[name=beispiel,caption={beispiel (3)},label=beispiel3]
...code...
\end{lstlisting}

\begin{lstlisting}[name=anderercode,caption={anderer code},label=anderercode]
...code...
\end{lstlisting}

\appendix
\chapter{Verzeichnisse}
\lstlistoflistings
\addcontentsline{toc}{chapter}{Listingsverzeichnis }
\end{document}

edico
17-07-2008, 12:43
Ich hatte Dich schon verstanden und deswegen ein Beispiel gepostet, wo das 'Problem' nicht auftaucht.
Wenn Du caption und label angibst, kannst Du zunächst mal nicht anderes erwarten, als dass der counter weiterzählt. Willst Du das nicht, könntetst Du stattdessen title als option benutzen:

...
\begin{lstlisting}[caption=Samecode(A),label=Samecode]{Samecode}
...code...
\end{lstlisting}

and later...
\begin{lstlisting}[title=Samecode(B)]{Samecode}
...code...
\end{lstlisting}

and later ...
\begin{lstlisting}[title=Samecode(C)]{Samecode}
...code...
\end{lstlisting}

and much later ...
\begin{lstlisting}[caption=Somecode,label=Somecode]{Somecode}
...code...
\end{lstlisting}
...

Vielleicht liest ja Axel mit, dann sollte er sich mal dazu äussern, ob eine Lösung für listings vorhanden.

edico