Anzeige:
Ergebnis 1 bis 6 von 6

Thema: listings nur einzelne Zeilen eines Quelltextes darstellen?

  1. #1
    Registrierter Benutzer
    Registriert seit
    28.05.2006
    Beiträge
    29

    listings nur einzelne Zeilen eines Quelltextes darstellen?

    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

    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
    Geändert von MalteRoe (22-06-2006 um 11:51 Uhr)

  2. #2
    Registrierter Benutzer Avatar von countbela666
    Registriert seit
    15.04.2005
    Ort
    Berlin
    Beiträge
    2.317
    Moin Malte,

    Abschnitt 4.4 "The printed range" auf Seite 25 der Dokumentation zum listings-Paket klingt vielversprechend, oder?

    Grüße,
    Marcel

    Listen to me children of the night, beyond the doors of darkness you will find
    a thousand worlds for you to see here, take my hand and follow me...

  3. #3
    Registrierter Benutzer
    Registriert seit
    28.05.2006
    Beiträge
    29

    Listing so formatieren dass die Zeilennummern nicht in den Rand des Dokumentes ragen.

    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

  4. #4
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    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:

    Code:
    \def\lst@MakeCaption#1{%
      \lst@ifdisplaystyle
        \ifx #1t%
            \ifx\lst@@caption\@empty\expandafter\lst@HRefStepCounter \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

  5. #5
    Registrierter Benutzer Avatar von Caveman
    Registriert seit
    03.11.2005
    Ort
    Geilsheim
    Beiträge
    308
    Zu der Zeilennummerierung:

    Rücke doch Deinen Code einfach etwas ein.
    Ich habe es so gemacht:
    Code:
    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
    Code:
    captionpos=b
    nach unten setzen.
    Geändert von Caveman (22-06-2006 um 15:42 Uhr)
    Programmiere (wenn es denn mal wieder vorkommt) in C, C++, Java, Perl
    Bin kein Student (Elektrotechnik) mehr und habe die Seiten gewechselt von der Software weg hin zur Hardware

  6. #6
    Registrierter Benutzer
    Registriert seit
    28.05.2006
    Beiträge
    29
    Dankeschön hat beides geklappt...
    Gruß aus Freiburg
    Malte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •