PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : listings nur einzelne Zeilen eines Quelltextes darstellen?



MalteRoe
22-06-2006, 12:46
Hallo Leute,
ich bin beim package listings auf folgendes Problem gestoßen.
Ich habe einen ellenlangen Quelltext in Java den ich in meine Diplomarbeit nur auszugsweise einbinden will.
Gibt es eine Möglichkeit z.B. die Zeilen 100-200 einer Java Datei einzubinden?
Mein Umgebung bzw. Deinifition sieht wie folgt aus:

Das im Preface:
\IncludePackage{listings}
\lstset{language=Java, breaklines=true, backgroundcolor=\color{white}, basicstyle=\scriptsize, commentstyle=\color{blue}}
\lstset{linewidth=\textwidth, showstringspaces=false}
\lstset{numbers=left, stepnumber=5, numbersep=5pt}
\lstset{frame=trBL}

Das Einbinden des listings mache ich wie folgt:
\lstinputlisting[caption=OREWorklet-Klasse,label=lst3:java]{sourcen/OREWorklet.java}

Welchen Parameter muss ich adden wenn ich von der Klasse OREWorklet nur die Zeilen mit den Nummern: 117-166 einbinden will.

Danke schonmal
Gruß
Malte:confused: :rolleyes:

PS: ich hatte vergessen, dass ich natürlich dann auch die Zeilennummerierungen beibehalten will, ich will also nicht den Java-Code einfach ausschneiden und einfügen sondern
ihn als
116 java -Codierung
..




166
haben
Danke schonmal

countbela666
22-06-2006, 12:55
Moin Malte,

Abschnitt 4.4 "The printed range" auf Seite 25 der Dokumentation (http://tug.ctan.org/tex-archive/macros/latex/contrib/listings/listings-1.3.pdf) zum listings-Paket klingt vielversprechend, oder?

Grüße,
Marcel

MalteRoe
22-06-2006, 14:32
Hallo,
danke erstmal das mit den Zeilenangaben hat geklappt.
nun noch zwei kleine Probleme:
ich hätte gerne die Beschriftung unten wie bei Abbildungen: ist das möglich?
und ich würde das listing gerne so formatieren dass die Zeilennummerierung nicht in den Rand ragt meine Preface defs sind die folgenden:
\lstset{language=Java, breaklines=true, backgroundcolor=\color{white}, basicstyle=\scriptsize, commentstyle=\color{blue}}
\lstset{linewidth=\textwidth, showstringspaces=false}
\lstset{numbers=left, numberstyle=\tiny, stepnumber=5, numbersep=10pt}
\lstset{frame=single}
mein Includierung die folgende:
\lstinputlisting[caption=run()-Methode der OREWorklet-Klasse,label=lst3:java, firstline=118, lastline=166]{sourcen/OREWorklet.java}



Vielleicht kann mir ja jemand helfen wie ich das ganze zwar seitenbreit bekomme aber halt auch die Zeilennummern innerhalb der Ränder und nicht in den Rand ragend.

Danke schonmal
Gruß Malte

Waxolunist
22-06-2006, 14:53
ad captions:

Ich hab mir dazu ein eigenes sty-File geschrieben, in dem ich das \def\MakeCaption von srcreprort neu definiert habe.

Sieht bei mir nun so aus:


\def\lst@MakeCaption#1{%
\lst@ifdisplaystyle
\ifx #1t%
\ifx\lst@@caption\@empty\expandafter\lst@HRefStepC ounter \else
\expandafter\refstepcounter
\fi {lstlisting}%
\ifx\lst@label\@empty\else \label{\lst@label}\fi
\let\lst@arg\lst@intname \lst@ReplaceIn\lst@arg\lst@filenamerpl
\global\let\lst@name\lst@arg \global\let\lstname\lst@name
\lst@ifnolol\else
\ifx\lst@@caption\@empty
\ifx\lst@caption\@empty
\ifx\lst@intname\@empty \else \def\lst@temp{ }%
\ifx\lst@intname\lst@temp \else
\addcontentsline{lol}{lstlisting}\lst@name
\fi\fi
\fi
\else
\addcontentsline{lol}{lstlisting}%
{\protect\numberline{Listing~\thelstlisting :}\hspace{10mm}{\ignorespaces \lst@@caption}}%
\fi
\fi
\fi
\ifx\lst@caption\@empty\else
\lst@IfSubstring #1\lst@captionpos
{\begingroup \let\@@vskip\vskip
\def\vskip{\afterassignment\lst@vskip \@tempskipa}%
\def\lst@vskip{\nobreak\@@vskip\@tempskipa\nobreak }%
\par\@parboxrestore\normalsize\normalfont % \noindent (AS)
\ifx #1t\allowbreak \fi
\ifx\lst@title\@empty
\lst@makecaption\fnum@lstlisting{\lst@caption} % (AS)
\else
\lst@maketitle\lst@title % (AS)
\fi
\ifx #1b\allowbreak \fi
\endgroup}{}%
\fi
\fi
}

Vielleicht funktionierts ohne dass du dazu etwas verändern musst. Ich hab wie man sieht, dass damals nicht kommentiert, und jetzt kenn ich mich auch nicht mehr recht damit aus. Aber ich verwends in jedem Dokument hier in der Firma.

Was die Zeilennummern anbelangt, so fällt mir keine Lösung ein. Vielleicht solltest du das Listing innerhalb einer Box machen, welche die Textbreite hat.

mfg, Christian

Caveman
22-06-2006, 16:38
Zu der Zeilennummerierung:

Rücke doch Deinen Code einfach etwas ein.
Ich habe es so gemacht:

xleftmargin=48pt,xrightmargin=48pt
48pt sind vielleicht etwas viel.
Wenn die Nummern \tiny sind, sollten ca. 20pt auf der Seite, wo die Zeilennummern sind, reichen.


Die Caption kannst Du mit
captionpos=b nach unten setzen.

MalteRoe
22-06-2006, 20:59
Dankeschön hat beides geklappt...
Gruß aus Freiburg
Malte